diff --git a/.gitattributes b/.gitattributes index eef19e09b..e6f3c2789 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,6 @@ +build.zig.zon.nix linguist-generated=true +build.zig.zon.txt linguist-generated=true +build.zig.zon2json-lock linguist-generated=true vendor/** linguist-vendored website/** linguist-documentation pkg/breakpad/vendor/** linguist-vendored diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index 3339ee71c..ec55f2dff 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -50,5 +50,5 @@ jobs: name: ghostty authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}" useDaemon: false # sometimes fails on short jobs - - name: Check Zig cache hash - run: nix develop -c ./nix/build-support/check-zig-cache-hash.sh + - name: Check Zig cache + run: nix develop -c ./nix/build-support/check-zig-cache.sh diff --git a/.github/workflows/release-pr.yml b/.github/workflows/release-pr.yml index e647c9720..ced497997 100644 --- a/.github/workflows/release-pr.yml +++ b/.github/workflows/release-pr.yml @@ -68,7 +68,7 @@ jobs: # Setup Sparkle - name: Setup Sparkle env: - SPARKLE_VERSION: 2.6.3 + SPARKLE_VERSION: 2.6.4 run: | mkdir -p .action/sparkle cd .action/sparkle diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml index 0767152f5..1789576a8 100644 --- a/.github/workflows/release-tag.yml +++ b/.github/workflows/release-tag.yml @@ -136,7 +136,7 @@ jobs: - name: Setup Sparkle env: - SPARKLE_VERSION: 2.6.3 + SPARKLE_VERSION: 2.6.4 run: | mkdir -p .action/sparkle cd .action/sparkle @@ -298,7 +298,7 @@ jobs: - name: Setup Sparkle env: - SPARKLE_VERSION: 2.6.3 + SPARKLE_VERSION: 2.6.4 run: | mkdir -p .action/sparkle cd .action/sparkle diff --git a/.github/workflows/release-tip.yml b/.github/workflows/release-tip.yml index e239dda4f..a031f3ad1 100644 --- a/.github/workflows/release-tip.yml +++ b/.github/workflows/release-tip.yml @@ -164,7 +164,7 @@ jobs: # Setup Sparkle - name: Setup Sparkle env: - SPARKLE_VERSION: 2.6.3 + SPARKLE_VERSION: 2.6.4 run: | mkdir -p .action/sparkle cd .action/sparkle diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0f32162a9..e64b2c4d8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,6 +14,7 @@ jobs: - build-bench - build-linux-libghostty - build-nix + - build-snap - build-macos - build-macos-matrix - build-windows @@ -25,6 +26,7 @@ jobs: - alejandra - typos - test-pkg-linux + - test-debian-12 steps: - id: status name: Determine status @@ -202,10 +204,14 @@ jobs: - name: XCode Select run: sudo xcode-select -s /Applications/Xcode_16.0.app + - name: get the Zig deps + id: deps + run: nix build -L .#deps && echo "deps=$(readlink ./result)" >> $GITHUB_OUTPUT + # GhosttyKit is the framework that is built from Zig for our native # Mac app to access. - name: Build GhosttyKit - run: nix develop -c zig build + run: nix develop -c zig build --system ${{ steps.deps.outputs.deps }} # The native app is built with native XCode tooling. This also does # codesigning. IMPORTANT: this must NOT run in a Nix environment. @@ -238,35 +244,65 @@ jobs: - name: XCode Select run: sudo xcode-select -s /Applications/Xcode_16.0.app + - name: get the Zig deps + id: deps + run: nix build -L .#deps && echo "deps=$(readlink ./result)" >> $GITHUB_OUTPUT + - name: Test All run: | # OpenGL - nix develop -c zig build test -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=freetype - nix develop -c zig build test -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=coretext - nix develop -c zig build test -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=coretext_freetype - nix develop -c zig build test -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=coretext_harfbuzz - nix develop -c zig build test -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=coretext_noshape + nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=freetype + nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=coretext + nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=coretext_freetype + nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=coretext_harfbuzz + nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=coretext_noshape # Metal - nix develop -c zig build test -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=freetype - nix develop -c zig build test -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=coretext - nix develop -c zig build test -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=coretext_freetype - nix develop -c zig build test -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=coretext_harfbuzz - nix develop -c zig build test -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=coretext_noshape + nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=freetype + nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=coretext + nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=coretext_freetype + nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=coretext_harfbuzz + nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=coretext_noshape - name: Build All run: | - nix develop -c zig build -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=freetype - nix develop -c zig build -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=coretext - nix develop -c zig build -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=coretext_freetype - nix develop -c zig build -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=coretext_harfbuzz - nix develop -c zig build -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=coretext_noshape + nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=freetype + nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=coretext + nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=coretext_freetype + nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=coretext_harfbuzz + nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=opengl -Dfont-backend=coretext_noshape - nix develop -c zig build -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=freetype - nix develop -c zig build -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=coretext - nix develop -c zig build -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=coretext_freetype - nix develop -c zig build -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=coretext_harfbuzz - nix develop -c zig build -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=coretext_noshape + nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=freetype + nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=coretext + nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=coretext_freetype + nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=coretext_harfbuzz + nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Dapp-runtime=glfw -Drenderer=metal -Dfont-backend=coretext_noshape + + build-snap: + strategy: + fail-fast: false + matrix: + os: + [namespace-profile-ghostty-snap, namespace-profile-ghostty-snap-arm64] + runs-on: ${{ matrix.os }} + needs: test + env: + ZIG_LOCAL_CACHE_DIR: /zig/local-cache + ZIG_GLOBAL_CACHE_DIR: /zig/global-cache + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + fetch-tags: true + - name: Setup Cache + uses: namespacelabs/nscloud-cache-action@v1.2.0 + with: + path: | + /nix + /zig + - run: sudo apt install -y udev + - run: sudo systemctl start systemd-udevd + - uses: snapcore/action-build@v1 build-windows: runs-on: windows-2022 @@ -366,7 +402,7 @@ jobs: run: nix develop -c zig build -Dapp-runtime=none test - name: Test GTK Build - run: nix develop -c zig build -Dapp-runtime=gtk -Dgtk-adwaita=true -Demit-docs + run: nix develop -c zig build -Dapp-runtime=gtk -Demit-docs - name: Test GLFW Build run: nix develop -c zig build -Dapp-runtime=glfw @@ -379,10 +415,9 @@ jobs: strategy: fail-fast: false matrix: - adwaita: ["true", "false"] x11: ["true", "false"] wayland: ["true", "false"] - name: GTK adwaita=${{ matrix.adwaita }} x11=${{ matrix.x11 }} wayland=${{ matrix.wayland }} + name: GTK x11=${{ matrix.x11 }} wayland=${{ matrix.wayland }} runs-on: namespace-profile-ghostty-sm needs: test env: @@ -413,7 +448,6 @@ jobs: nix develop -c \ zig build \ -Dapp-runtime=gtk \ - -Dgtk-adwaita=${{ matrix.adwaita }} \ -Dgtk-x11=${{ matrix.x11 }} \ -Dgtk-wayland=${{ matrix.wayland }} @@ -471,8 +505,12 @@ jobs: - name: XCode Select run: sudo xcode-select -s /Applications/Xcode_16.0.app + - name: get the Zig deps + id: deps + run: nix build -L .#deps && echo "deps=$(readlink ./result)" >> $GITHUB_OUTPUT + - name: test - run: nix develop -c zig build test + run: nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} prettier: if: github.repository == 'ghostty-org/ghostty' @@ -589,3 +627,26 @@ jobs: - name: Test ${{ matrix.pkg }} Build run: | nix develop -c sh -c "cd pkg/${{ matrix.pkg }} ; zig build test" + + test-debian-12: + name: Test build on Debian 12 + runs-on: namespace-profile-ghostty-sm + needs: test + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install and configure Namespace CLI + uses: namespacelabs/nscloud-setup@v0 + + - name: Configure Namespace powered Buildx + uses: namespacelabs/nscloud-setup-buildx-action@v0 + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: . + file: src/build/docker/debian/Dockerfile + build-args: | + DISTRO_VERSION=12 + ZIG_VERSION=0.13.0 diff --git a/.github/workflows/update-colorschemes.yml b/.github/workflows/update-colorschemes.yml index 569ef6765..98d6aa096 100644 --- a/.github/workflows/update-colorschemes.yml +++ b/.github/workflows/update-colorschemes.yml @@ -48,14 +48,14 @@ jobs: run: | # Only proceed if build.zig.zon has changed if ! git diff --exit-code build.zig.zon; then - nix develop -c ./nix/build-support/check-zig-cache-hash.sh --update - nix develop -c ./nix/build-support/check-zig-cache-hash.sh + nix develop -c ./nix/build-support/check-zig-cache.sh --update + nix develop -c ./nix/build-support/check-zig-cache.sh fi # Verify the build still works. We choose an arbitrary build type # as a canary instead of testing all build types. - name: Test Build - run: nix develop -c zig build -Dapp-runtime=gtk -Dgtk-adwaita=true + run: nix build .#ghostty - name: Create pull request uses: peter-evans/create-pull-request@v7 @@ -66,7 +66,9 @@ jobs: commit-message: "deps: Update iTerm2 color schemes" add-paths: | build.zig.zon - nix/zigCacheHash.nix + build.zig.zon2json-lock + build.zig.zon.nix + build.zig.zon.txt body: | Upstream revision: https://github.com/mbadolato/iTerm2-Color-Schemes/tree/${{ steps.zig_fetch.outputs.upstream_rev }} labels: dependencies diff --git a/PACKAGING.md b/PACKAGING.md index 82c7c5673..6a4c01b6f 100644 --- a/PACKAGING.md +++ b/PACKAGING.md @@ -23,13 +23,6 @@ https://release.files.ghostty.org/VERSION/ghostty-VERSION.tar.gz https://release.files.ghostty.org/VERSION/ghostty-VERSION.tar.gz.minisig ``` -> [!NOTE] -> -> **Version 1.0.0 the filename is `ghostty-source.tar.gz`.** Future -> versions will use the `ghostty-VERSION.tar.gz` format since it is more -> typical for source tarballs. But for version 1.0.0, the filename is -> `ghostty-source.tar.gz`. - Signature files are signed with [minisign](https://jedisct1.github.io/minisign/) using the following public key: @@ -88,6 +81,13 @@ for system packages which separate a build and install step, since the install step can then be done with a `mv` or `cp` command (from `/tmp/ghostty` to wherever the package manager expects it). +> [!NOTE] +> +> **Version 1.1.1 and 1.1.2 are missing `fetch-zig-cache.sh`.** This was +> an oversight on the release process. You can use the script from version +> 1.1.0 to fetch the Zig cache for these versions. Future versions will +> restore the script. + ### Build Options Ghostty uses the Zig build system. You can see all available build options by diff --git a/build.zig.zon b/build.zig.zon index a5abdc586..cc617cf51 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -1,32 +1,39 @@ .{ .name = "ghostty", - .version = "1.1.1", + .version = "1.1.3", .paths = .{""}, .dependencies = .{ // Zig libs + .libxev = .{ - .url = "https://github.com/mitchellh/libxev/archive/31eed4e337fed7b0149319e5cdbb62b848c24fbd.tar.gz", + // mitchellh/libxev + .url = "https://deps.files.ghostty.org/libxev-1220ebf88622c4d502dc59e71347e4d28c47e033f11b59aff774ae5787565c40999c.tar.gz", .hash = "1220ebf88622c4d502dc59e71347e4d28c47e033f11b59aff774ae5787565c40999c", }, .mach_glfw = .{ - .url = "https://github.com/mitchellh/mach-glfw/archive/37c2995f31abcf7e8378fba68ddcf4a3faa02de0.tar.gz", + // mitchellh/mach-glfw + .url = "https://deps.files.ghostty.org/mach_glfw-12206ed982e709e565d536ce930701a8c07edfd2cfdce428683f3f2a601d37696a62.tar.gz", .hash = "12206ed982e709e565d536ce930701a8c07edfd2cfdce428683f3f2a601d37696a62", .lazy = true, }, .vaxis = .{ - .url = "git+https://github.com/rockorager/libvaxis/?ref=main#6d729a2dc3b934818dffe06d2ba3ce02841ed74b", - .hash = "12200df4ebeaed45de26cb2c9f3b6f3746d8013b604e035dae658f86f586c8c91d2f", + // rockorager/libvaxis + .url = "git+https://github.com/rockorager/libvaxis#2237a7059eae99e9f132dd5acd1555e49d6c7d93", + .hash = "1220f5aec880d4f430cc1597ede88f1530da69e39a4986080e976b0c7b919c2ebfeb", }, .z2d = .{ - .url = "git+https://github.com/vancluever/z2d?ref=v0.4.0#4638bb02a9dc41cc2fb811f092811f6a951c752a", + // vancluever/z2d + .url = "https://deps.files.ghostty.org/z2d-12201f0d542e7541cf492a001d4d0d0155c92f58212fbcb0d224e95edeba06b5416a.tar.gz", .hash = "12201f0d542e7541cf492a001d4d0d0155c92f58212fbcb0d224e95edeba06b5416a", }, .zig_objc = .{ - .url = "https://github.com/mitchellh/zig-objc/archive/9b8ba849b0f58fe207ecd6ab7c147af55b17556e.tar.gz", + // mitchellh/zig-objc + .url = "https://deps.files.ghostty.org/zig_objc-1220e17e64ef0ef561b3e4b9f3a96a2494285f2ec31c097721bf8c8677ec4415c634.tar.gz", .hash = "1220e17e64ef0ef561b3e4b9f3a96a2494285f2ec31c097721bf8c8677ec4415c634", }, .zig_js = .{ - .url = "https://github.com/mitchellh/zig-js/archive/d0b8b0a57c52fbc89f9d9fecba75ca29da7dd7d1.tar.gz", + // mitchellh/zig-js + .url = "https://deps.files.ghostty.org/zig_js-12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc.tar.gz", .hash = "12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc", }, .ziglyph = .{ @@ -34,13 +41,20 @@ .hash = "12207831bce7d4abce57b5a98e8f3635811cfefd160bca022eb91fe905d36a02cf25", }, .zig_wayland = .{ - .url = "https://codeberg.org/ifreund/zig-wayland/archive/fbfe3b4ac0b472a27b1f1a67405436c58cbee12d.tar.gz", + // codeberg ifreund/zig-wayland + .url = "https://deps.files.ghostty.org/zig-wayland-fbfe3b4ac0b472a27b1f1a67405436c58cbee12d.tar.gz", .hash = "12209ca054cb1919fa276e328967f10b253f7537c4136eb48f3332b0f7cf661cad38", }, .zf = .{ - .url = "git+https://github.com/natecraddock/zf/?ref=main#ed99ca18b02dda052e20ba467e90b623c04690dd", + // natecraddock/zf + .url = "https://deps.files.ghostty.org/zf-1220edc3b8d8bedbb50555947987e5e8e2f93871ca3c8e8d4cc8f1377c15b5dd35e8.tar.gz", .hash = "1220edc3b8d8bedbb50555947987e5e8e2f93871ca3c8e8d4cc8f1377c15b5dd35e8", }, + .gobject = .{ + // ianprime0509/zig-gobject + .url = "https://deps.files.ghostty.org/gobject-12208d70ee791d7ef7e16e1c3c9c1127b57f1ed066a24f87d57fc9f730c5dc394b9d.tar.zst", + .hash = "12208d70ee791d7ef7e16e1c3c9c1127b57f1ed066a24f87d57fc9f730c5dc394b9d", + }, // C libs .cimgui = .{ .path = "./pkg/cimgui" }, @@ -72,15 +86,15 @@ .hash = "12201a57c6ce0001aa034fa80fba3e1cd2253c560a45748f4f4dd21ff23b491cddef", }, .plasma_wayland_protocols = .{ - .url = "git+https://github.com/KDE/plasma-wayland-protocols?ref=main#db525e8f9da548cffa2ac77618dd0fbe7f511b86", + .url = "https://deps.files.ghostty.org/plasma_wayland_protocols-12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566.tar.gz", .hash = "12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566", }, // Other .apple_sdk = .{ .path = "./pkg/apple-sdk" }, .iterm2_themes = .{ - .url = "https://github.com/mbadolato/iTerm2-Color-Schemes/archive/db227d159adc265818f2e898da0f70ef8d7b580e.tar.gz", - .hash = "12203d2647e5daf36a9c85b969e03f422540786ce9ea624eb4c26d204fe1f46218f3", + .url = "https://github.com/mbadolato/iTerm2-Color-Schemes/archive/efb1bb1843500a751eb30afa58fe48a6bec8952c.tar.gz", + .hash = "1220a1dbe41bc69aacf75026a7158812198ea265fb9cac64dcb91cd31f3b1b8c1f92", }, }, } diff --git a/build.zig.zon.nix b/build.zig.zon.nix new file mode 100644 index 000000000..e1eecdd3e --- /dev/null +++ b/build.zig.zon.nix @@ -0,0 +1,390 @@ +# generated by zon2nix (https://github.com/Cloudef/zig2nix) +{ + lib, + linkFarm, + fetchurl, + fetchgit, + runCommandLocal, + zig, + name ? "zig-packages", +}: +with builtins; +with lib; let + unpackZigArtifact = { + name, + artifact, + }: + runCommandLocal name + { + nativeBuildInputs = [zig]; + } + '' + hash="$(zig fetch --global-cache-dir "$TMPDIR" ${artifact})" + mv "$TMPDIR/p/$hash" "$out" + chmod 755 "$out" + ''; + + fetchZig = { + name, + url, + hash, + }: let + artifact = fetchurl {inherit url hash;}; + in + unpackZigArtifact {inherit name artifact;}; + + fetchGitZig = { + name, + url, + hash, + }: let + parts = splitString "#" url; + url_base = elemAt parts 0; + url_without_query = elemAt (splitString "?" url_base) 0; + rev_base = elemAt parts 1; + rev = + if match "^[a-fA-F0-9]{40}$" rev_base != null + then rev_base + else "refs/heads/${rev_base}"; + in + fetchgit { + inherit name rev hash; + url = url_without_query; + deepClone = false; + }; + + fetchZigArtifact = { + name, + url, + hash, + }: let + parts = splitString "://" url; + proto = elemAt parts 0; + path = elemAt parts 1; + fetcher = { + "git+http" = fetchGitZig { + inherit name hash; + url = "http://${path}"; + }; + "git+https" = fetchGitZig { + inherit name hash; + url = "https://${path}"; + }; + http = fetchZig { + inherit name hash; + url = "http://${path}"; + }; + https = fetchZig { + inherit name hash; + url = "https://${path}"; + }; + }; + in + fetcher.${proto}; +in + linkFarm name [ + { + name = "1220ebf88622c4d502dc59e71347e4d28c47e033f11b59aff774ae5787565c40999c"; + path = fetchZigArtifact { + name = "libxev"; + url = "https://deps.files.ghostty.org/libxev-1220ebf88622c4d502dc59e71347e4d28c47e033f11b59aff774ae5787565c40999c.tar.gz"; + hash = "sha256-VHP90NTytIZ8UZsYRKOOxN490/I6yv6ec40sP8y5MJ8="; + }; + } + { + name = "12206ed982e709e565d536ce930701a8c07edfd2cfdce428683f3f2a601d37696a62"; + path = fetchZigArtifact { + name = "mach_glfw"; + url = "https://deps.files.ghostty.org/mach_glfw-12206ed982e709e565d536ce930701a8c07edfd2cfdce428683f3f2a601d37696a62.tar.gz"; + hash = "sha256-HhXIvWUS8/CHWY4VXPG2ZEo+we8XOn3o5rYJCQ1n8Nk="; + }; + } + { + name = "1220736fa4ba211162c7a0e46cc8fe04d95921927688bff64ab5da7420d098a7272d"; + path = fetchZigArtifact { + name = "glfw"; + url = "https://github.com/mitchellh/glfw/archive/b552c6ec47326b94015feddb36058ea567b87159.tar.gz"; + hash = "sha256-IeBVAOQmtyFqVxzuXPek1onuPwIamcOyYtxqKpPEQjU="; + }; + } + { + name = "12202adbfecdad671d585c9a5bfcbd5cdf821726779430047742ce1bf94ad67d19cb"; + path = fetchZigArtifact { + name = "xcode_frameworks"; + url = "https://github.com/mitchellh/xcode-frameworks/archive/69801c154c39d7ae6129ea1ba8fe1afe00585fc8.tar.gz"; + hash = "sha256-mP/I2coL57UJm/3+4Q8sPAgQwk8V4zM+S4VBBTrX2To="; + }; + } + { + name = "122004bfd4c519dadfb8e6281a42fc34fd1aa15aea654ea8a492839046f9894fa2cf"; + path = fetchZigArtifact { + name = "vulkan_headers"; + url = "https://github.com/mitchellh/vulkan-headers/archive/04c8a0389d5a0236a96312988017cd4ce27d8041.tar.gz"; + hash = "sha256-K+zrRudgHFukOM6En1StRYRMNYkeRk+qHTXvrXaG+FU="; + }; + } + { + name = "1220b3164434d2ec9db146a40bf3a30f490590d68fa8529776a3138074f0da2c11ca"; + path = fetchZigArtifact { + name = "wayland_headers"; + url = "https://github.com/mitchellh/wayland-headers/archive/5f991515a29f994d87b908115a2ab0b899474bd1.tar.gz"; + hash = "sha256-uFilLZinKkZt6RdVTV3lUmJpzpswDdFva22FvwU/XQI="; + }; + } + { + name = "122089c326186c84aa2fd034b16abc38f3ebf4862d9ae106dc1847ac44f557b36465"; + path = fetchZigArtifact { + name = "x11_headers"; + url = "https://github.com/mitchellh/x11-headers/archive/2ffbd62d82ff73ec929dd8de802bc95effa0ef88.tar.gz"; + hash = "sha256-EhV2bmTY/OMYN1wEul35gD0hQgS/Al262jO3pVr0O+c="; + }; + } + { + name = "1220f5aec880d4f430cc1597ede88f1530da69e39a4986080e976b0c7b919c2ebfeb"; + path = fetchZigArtifact { + name = "vaxis"; + url = "git+https://github.com/rockorager/libvaxis#2237a7059eae99e9f132dd5acd1555e49d6c7d93"; + hash = "sha256-ZzLNJOsXzyBhkdUhbET30RoU2T9xKYsBUQz2NAjK/G8="; + }; + } + { + name = "1220dd654ef941fc76fd96f9ec6adadf83f69b9887a0d3f4ee5ac0a1a3e11be35cf5"; + path = fetchZigArtifact { + name = "zigimg"; + url = "git+https://github.com/zigimg/zigimg#3a667bdb3d7f0955a5a51c8468eac83210c1439e"; + hash = "sha256-oLf3YH3yeg4ikVO/GahMCDRMTU31AHkfSnF4rt7xTKo="; + }; + } + { + name = "122055beff332830a391e9895c044d33b15ea21063779557024b46169fb1984c6e40"; + path = fetchZigArtifact { + name = "zg"; + url = "https://codeberg.org/atman/zg/archive/v0.13.2.tar.gz"; + hash = "sha256-2x9hT7bYq9KJYWLVOf21a+QvTG/F7HWT+YK15IMRzNY="; + }; + } + { + name = "12201f0d542e7541cf492a001d4d0d0155c92f58212fbcb0d224e95edeba06b5416a"; + path = fetchZigArtifact { + name = "z2d"; + url = "https://deps.files.ghostty.org/z2d-12201f0d542e7541cf492a001d4d0d0155c92f58212fbcb0d224e95edeba06b5416a.tar.gz"; + hash = "sha256-P0UJ54RO/vVyDa+UkBl+QEOjzoMMEFSOTexQP/uBXfc="; + }; + } + { + name = "1220e17e64ef0ef561b3e4b9f3a96a2494285f2ec31c097721bf8c8677ec4415c634"; + path = fetchZigArtifact { + name = "zig_objc"; + url = "https://deps.files.ghostty.org/zig_objc-1220e17e64ef0ef561b3e4b9f3a96a2494285f2ec31c097721bf8c8677ec4415c634.tar.gz"; + hash = "sha256-H+HIbh2T23uzrsg9/1/vl9Ir1HCAa2pzeTx6zktJH9Q="; + }; + } + { + name = "12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc"; + path = fetchZigArtifact { + name = "zig_js"; + url = "https://deps.files.ghostty.org/zig_js-12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc.tar.gz"; + hash = "sha256-fyNeCVbC9UAaKJY6JhAZlT0A479M/AKYMPIWEZbDWD0="; + }; + } + { + name = "12207831bce7d4abce57b5a98e8f3635811cfefd160bca022eb91fe905d36a02cf25"; + path = fetchZigArtifact { + name = "ziglyph"; + url = "https://deps.files.ghostty.org/ziglyph-b89d43d1e3fb01b6074bc1f7fc980324b04d26a5.tar.gz"; + hash = "sha256-cse98+Ft8QUjX+P88yyYfaxJOJGQ9M7Ymw7jFxDz89k="; + }; + } + { + name = "12209ca054cb1919fa276e328967f10b253f7537c4136eb48f3332b0f7cf661cad38"; + path = fetchZigArtifact { + name = "zig_wayland"; + url = "https://deps.files.ghostty.org/zig-wayland-fbfe3b4ac0b472a27b1f1a67405436c58cbee12d.tar.gz"; + hash = "sha256-RtAystqK/GRYIquTK1KfD7rRSCrfuzAvCD1Z9DE1ldc="; + }; + } + { + name = "1220edc3b8d8bedbb50555947987e5e8e2f93871ca3c8e8d4cc8f1377c15b5dd35e8"; + path = fetchZigArtifact { + name = "zf"; + url = "https://deps.files.ghostty.org/zf-1220edc3b8d8bedbb50555947987e5e8e2f93871ca3c8e8d4cc8f1377c15b5dd35e8.tar.gz"; + hash = "sha256-/oLryY3VQfjbtQi+UP+n6FJTVA/YxIetjO+6Ovrh6/E="; + }; + } + { + name = "1220c72c1697dd9008461ead702997a15d8a1c5810247f02e7983b9f74c6c6e4c087"; + path = fetchZigArtifact { + name = "vaxis"; + url = "git+https://github.com/rockorager/libvaxis/?ref=main#dc0a228a5544988d4a920cfb40be9cd28db41423"; + hash = "sha256-QWN4jOrA91KlbqmeEHHJ4HTnCC9nmfxt8DHUXJpAzLI="; + }; + } + { + name = "12208d70ee791d7ef7e16e1c3c9c1127b57f1ed066a24f87d57fc9f730c5dc394b9d"; + path = fetchZigArtifact { + name = "gobject"; + url = "https://deps.files.ghostty.org/gobject-12208d70ee791d7ef7e16e1c3c9c1127b57f1ed066a24f87d57fc9f730c5dc394b9d.tar.zst"; + hash = "sha256-UU97kNv/bZzQPKz1djhEDLapLguvfBpFfWVb6FthtcI="; + }; + } + { + name = "12202cdac858abc52413a6c6711d5026d2d3c8e13f95ca2c327eade0736298bb021f"; + path = fetchZigArtifact { + name = "wayland"; + url = "https://deps.files.ghostty.org/wayland-9cb3d7aa9dc995ffafdbdef7ab86a949d0fb0e7d.tar.gz"; + hash = "sha256-6kGR1o5DdnflHzqs3ieCmBAUTpMdOXoyfcYDXiw5xQ0="; + }; + } + { + name = "12201a57c6ce0001aa034fa80fba3e1cd2253c560a45748f4f4dd21ff23b491cddef"; + path = fetchZigArtifact { + name = "wayland_protocols"; + url = "https://deps.files.ghostty.org/wayland-protocols-258d8f88f2c8c25a830c6316f87d23ce1a0f12d9.tar.gz"; + hash = "sha256-XO3K3egbdeYPI+XoO13SuOtO+5+Peb16NH0UiusFMPg="; + }; + } + { + name = "12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566"; + path = fetchZigArtifact { + name = "plasma_wayland_protocols"; + url = "https://deps.files.ghostty.org/plasma_wayland_protocols-12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566.tar.gz"; + hash = "sha256-XFi6IUrNjmvKNCbcCLAixGqN2Zeymhs+KLrfccIN9EE="; + }; + } + { + name = "1220a1dbe41bc69aacf75026a7158812198ea265fb9cac64dcb91cd31f3b1b8c1f92"; + path = fetchZigArtifact { + name = "iterm2_themes"; + url = "https://github.com/mbadolato/iTerm2-Color-Schemes/archive/efb1bb1843500a751eb30afa58fe48a6bec8952c.tar.gz"; + hash = "sha256-ZdVc1mmLwF45PZiqL/j/l7MO2O6hZ11lqIToGFdHiEU="; + }; + } + { + name = "1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402"; + path = fetchZigArtifact { + name = "imgui"; + url = "https://deps.files.ghostty.org/imgui-1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402.tar.gz"; + hash = "sha256-oF/QHgTPEat4Hig4fGIdLkIPHmBEyOJ6JeYD6pnveGA="; + }; + } + { + name = "1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d"; + path = fetchZigArtifact { + name = "freetype"; + url = "https://deps.files.ghostty.org/freetype-1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d.tar.gz"; + hash = "sha256-QnIB9dUVFnDQXB9bRb713aHy592XHvVPD+qqf/0quQw="; + }; + } + { + name = "1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66"; + path = fetchZigArtifact { + name = "libpng"; + url = "https://deps.files.ghostty.org/libpng-1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66.tar.gz"; + hash = "sha256-/syVtGzwXo4/yKQUdQ4LparQDYnp/fF16U/wQcrxoDo="; + }; + } + { + name = "1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb"; + path = fetchZigArtifact { + name = "zlib"; + url = "https://deps.files.ghostty.org/zlib-1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb.tar.gz"; + hash = "sha256-F+iIY/NgBnKrSRgvIXKBtvxNPHYr3jYZNeQ2qVIU0Fw="; + }; + } + { + name = "12201149afb3326c56c05bb0a577f54f76ac20deece63aa2f5cd6ff31a4fa4fcb3b7"; + path = fetchZigArtifact { + name = "fontconfig"; + url = "https://deps.files.ghostty.org/fontconfig-2.14.2.tar.gz"; + hash = "sha256-O6LdkhWHGKzsXKrxpxYEO1qgVcJ7CB2RSvPMtA3OilU="; + }; + } + { + name = "122032442d95c3b428ae8e526017fad881e7dc78eab4d558e9a58a80bfbd65a64f7d"; + path = fetchZigArtifact { + name = "libxml2"; + url = "https://github.com/GNOME/libxml2/archive/refs/tags/v2.11.5.tar.gz"; + hash = "sha256-bCgFni4+60K1tLFkieORamNGwQladP7jvGXNxdiaYhU="; + }; + } + { + name = "1220b8588f106c996af10249bfa092c6fb2f35fbacb1505ef477a0b04a7dd1063122"; + path = fetchZigArtifact { + name = "harfbuzz"; + url = "https://deps.files.ghostty.org/harfbuzz-1220b8588f106c996af10249bfa092c6fb2f35fbacb1505ef477a0b04a7dd1063122.tar.gz"; + hash = "sha256-nxygiYE7BZRK0c6MfgGCEwJtNdybq0gKIeuHaDg5ZVY="; + }; + } + { + name = "12205c83b8311a24b1d5ae6d21640df04f4b0726e314337c043cde1432758cbe165b"; + path = fetchZigArtifact { + name = "highway"; + url = "https://deps.files.ghostty.org/highway-12205c83b8311a24b1d5ae6d21640df04f4b0726e314337c043cde1432758cbe165b.tar.gz"; + hash = "sha256-NUqLRTm1iOcLmOxwhEJz4/J0EwLEw3e8xOgbPRhm98k="; + }; + } + { + name = "1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb"; + path = fetchZigArtifact { + name = "oniguruma"; + url = "https://deps.files.ghostty.org/oniguruma-1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb.tar.gz"; + hash = "sha256-ABqhIC54RI9MC/GkjHblVodrNvFtks4yB+zP1h2Z8qA="; + }; + } + { + name = "1220446be831adcca918167647c06c7b825849fa3fba5f22da394667974537a9c77e"; + path = fetchZigArtifact { + name = "sentry"; + url = "https://deps.files.ghostty.org/sentry-1220446be831adcca918167647c06c7b825849fa3fba5f22da394667974537a9c77e.tar.gz"; + hash = "sha256-KsZJfMjWGo0xCT5HrduMmyxFsWsHBbszSoNbZCPDGN8="; + }; + } + { + name = "12207fd37bb8251919c112dcdd8f616a491857b34a451f7e4486490077206dc2a1ea"; + path = fetchZigArtifact { + name = "breakpad"; + url = "https://github.com/getsentry/breakpad/archive/b99f444ba5f6b98cac261cbb391d8766b34a5918.tar.gz"; + hash = "sha256-bMqYlD0amQdmzvYQd8Ca/1k4Bj/heh7+EijlQSttatk="; + }; + } + { + name = "1220d4d18426ca72fc2b7e56ce47273149815501d0d2395c2a98c726b31ba931e641"; + path = fetchZigArtifact { + name = "utfcpp"; + url = "https://deps.files.ghostty.org/utfcpp-1220d4d18426ca72fc2b7e56ce47273149815501d0d2395c2a98c726b31ba931e641.tar.gz"; + hash = "sha256-/8ZooxDndgfTk/PBizJxXyI9oerExNbgV5oR345rWc8="; + }; + } + { + name = "122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd"; + path = fetchZigArtifact { + name = "wuffs"; + url = "https://deps.files.ghostty.org/wuffs-122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd.tar.gz"; + hash = "sha256-nkzSCr6W5sTG7enDBXEIhgEm574uLD41UVR2wlC+HBM="; + }; + } + { + name = "12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806"; + path = fetchZigArtifact { + name = "pixels"; + url = "https://deps.files.ghostty.org/pixels-12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806.tar.gz"; + hash = "sha256-Veg7FtCRCCUCvxSb9FfzH0IJLFmCZQ4/+657SIcb8Ro="; + }; + } + { + name = "12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1"; + path = fetchZigArtifact { + name = "glslang"; + url = "https://deps.files.ghostty.org/glslang-12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1.tar.gz"; + hash = "sha256-FKLtu1Ccs+UamlPj9eQ12/WXFgS0uDPmPmB26MCpl7U="; + }; + } + { + name = "1220fb3b5586e8be67bc3feb34cbe749cf42a60d628d2953632c2f8141302748c8da"; + path = fetchZigArtifact { + name = "spirv_cross"; + url = "https://deps.files.ghostty.org/spirv_cross-1220fb3b5586e8be67bc3feb34cbe749cf42a60d628d2953632c2f8141302748c8da.tar.gz"; + hash = "sha256-tStvz8Ref6abHwahNiwVVHNETizAmZVVaxVsU7pmV+M="; + }; + } + ] diff --git a/build.zig.zon.txt b/build.zig.zon.txt new file mode 100644 index 000000000..5eb530d76 --- /dev/null +++ b/build.zig.zon.txt @@ -0,0 +1,38 @@ +git+https://github.com/rockorager/libvaxis#2237a7059eae99e9f132dd5acd1555e49d6c7d93 +git+https://github.com/rockorager/libvaxis/?ref=main#dc0a228a5544988d4a920cfb40be9cd28db41423 +git+https://github.com/zigimg/zigimg#3a667bdb3d7f0955a5a51c8468eac83210c1439e +https://codeberg.org/atman/zg/archive/v0.13.2.tar.gz +https://deps.files.ghostty.org/fontconfig-2.14.2.tar.gz +https://deps.files.ghostty.org/freetype-1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d.tar.gz +https://deps.files.ghostty.org/glslang-12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1.tar.gz +https://deps.files.ghostty.org/gobject-12208d70ee791d7ef7e16e1c3c9c1127b57f1ed066a24f87d57fc9f730c5dc394b9d.tar.zst +https://deps.files.ghostty.org/harfbuzz-1220b8588f106c996af10249bfa092c6fb2f35fbacb1505ef477a0b04a7dd1063122.tar.gz +https://deps.files.ghostty.org/highway-12205c83b8311a24b1d5ae6d21640df04f4b0726e314337c043cde1432758cbe165b.tar.gz +https://deps.files.ghostty.org/imgui-1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402.tar.gz +https://deps.files.ghostty.org/libpng-1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66.tar.gz +https://deps.files.ghostty.org/libxev-1220ebf88622c4d502dc59e71347e4d28c47e033f11b59aff774ae5787565c40999c.tar.gz +https://deps.files.ghostty.org/mach_glfw-12206ed982e709e565d536ce930701a8c07edfd2cfdce428683f3f2a601d37696a62.tar.gz +https://deps.files.ghostty.org/oniguruma-1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb.tar.gz +https://deps.files.ghostty.org/pixels-12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806.tar.gz +https://deps.files.ghostty.org/plasma_wayland_protocols-12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566.tar.gz +https://deps.files.ghostty.org/sentry-1220446be831adcca918167647c06c7b825849fa3fba5f22da394667974537a9c77e.tar.gz +https://deps.files.ghostty.org/spirv_cross-1220fb3b5586e8be67bc3feb34cbe749cf42a60d628d2953632c2f8141302748c8da.tar.gz +https://deps.files.ghostty.org/utfcpp-1220d4d18426ca72fc2b7e56ce47273149815501d0d2395c2a98c726b31ba931e641.tar.gz +https://deps.files.ghostty.org/wayland-9cb3d7aa9dc995ffafdbdef7ab86a949d0fb0e7d.tar.gz +https://deps.files.ghostty.org/wayland-protocols-258d8f88f2c8c25a830c6316f87d23ce1a0f12d9.tar.gz +https://deps.files.ghostty.org/wuffs-122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd.tar.gz +https://deps.files.ghostty.org/z2d-12201f0d542e7541cf492a001d4d0d0155c92f58212fbcb0d224e95edeba06b5416a.tar.gz +https://deps.files.ghostty.org/zf-1220edc3b8d8bedbb50555947987e5e8e2f93871ca3c8e8d4cc8f1377c15b5dd35e8.tar.gz +https://deps.files.ghostty.org/zig_js-12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc.tar.gz +https://deps.files.ghostty.org/ziglyph-b89d43d1e3fb01b6074bc1f7fc980324b04d26a5.tar.gz +https://deps.files.ghostty.org/zig_objc-1220e17e64ef0ef561b3e4b9f3a96a2494285f2ec31c097721bf8c8677ec4415c634.tar.gz +https://deps.files.ghostty.org/zig-wayland-fbfe3b4ac0b472a27b1f1a67405436c58cbee12d.tar.gz +https://deps.files.ghostty.org/zlib-1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb.tar.gz +https://github.com/getsentry/breakpad/archive/b99f444ba5f6b98cac261cbb391d8766b34a5918.tar.gz +https://github.com/GNOME/libxml2/archive/refs/tags/v2.11.5.tar.gz +https://github.com/mbadolato/iTerm2-Color-Schemes/archive/efb1bb1843500a751eb30afa58fe48a6bec8952c.tar.gz +https://github.com/mitchellh/glfw/archive/b552c6ec47326b94015feddb36058ea567b87159.tar.gz +https://github.com/mitchellh/vulkan-headers/archive/04c8a0389d5a0236a96312988017cd4ce27d8041.tar.gz +https://github.com/mitchellh/wayland-headers/archive/5f991515a29f994d87b908115a2ab0b899474bd1.tar.gz +https://github.com/mitchellh/x11-headers/archive/2ffbd62d82ff73ec929dd8de802bc95effa0ef88.tar.gz +https://github.com/mitchellh/xcode-frameworks/archive/69801c154c39d7ae6129ea1ba8fe1afe00585fc8.tar.gz diff --git a/build.zig.zon2json-lock b/build.zig.zon2json-lock new file mode 100644 index 000000000..348a69193 --- /dev/null +++ b/build.zig.zon2json-lock @@ -0,0 +1,192 @@ +{ + "1220ebf88622c4d502dc59e71347e4d28c47e033f11b59aff774ae5787565c40999c": { + "name": "libxev", + "url": "https://deps.files.ghostty.org/libxev-1220ebf88622c4d502dc59e71347e4d28c47e033f11b59aff774ae5787565c40999c.tar.gz", + "hash": "sha256-VHP90NTytIZ8UZsYRKOOxN490/I6yv6ec40sP8y5MJ8=" + }, + "12206ed982e709e565d536ce930701a8c07edfd2cfdce428683f3f2a601d37696a62": { + "name": "mach_glfw", + "url": "https://deps.files.ghostty.org/mach_glfw-12206ed982e709e565d536ce930701a8c07edfd2cfdce428683f3f2a601d37696a62.tar.gz", + "hash": "sha256-HhXIvWUS8/CHWY4VXPG2ZEo+we8XOn3o5rYJCQ1n8Nk=" + }, + "1220736fa4ba211162c7a0e46cc8fe04d95921927688bff64ab5da7420d098a7272d": { + "name": "glfw", + "url": "https://github.com/mitchellh/glfw/archive/b552c6ec47326b94015feddb36058ea567b87159.tar.gz", + "hash": "sha256-IeBVAOQmtyFqVxzuXPek1onuPwIamcOyYtxqKpPEQjU=" + }, + "12202adbfecdad671d585c9a5bfcbd5cdf821726779430047742ce1bf94ad67d19cb": { + "name": "xcode_frameworks", + "url": "https://github.com/mitchellh/xcode-frameworks/archive/69801c154c39d7ae6129ea1ba8fe1afe00585fc8.tar.gz", + "hash": "sha256-mP/I2coL57UJm/3+4Q8sPAgQwk8V4zM+S4VBBTrX2To=" + }, + "122004bfd4c519dadfb8e6281a42fc34fd1aa15aea654ea8a492839046f9894fa2cf": { + "name": "vulkan_headers", + "url": "https://github.com/mitchellh/vulkan-headers/archive/04c8a0389d5a0236a96312988017cd4ce27d8041.tar.gz", + "hash": "sha256-K+zrRudgHFukOM6En1StRYRMNYkeRk+qHTXvrXaG+FU=" + }, + "1220b3164434d2ec9db146a40bf3a30f490590d68fa8529776a3138074f0da2c11ca": { + "name": "wayland_headers", + "url": "https://github.com/mitchellh/wayland-headers/archive/5f991515a29f994d87b908115a2ab0b899474bd1.tar.gz", + "hash": "sha256-uFilLZinKkZt6RdVTV3lUmJpzpswDdFva22FvwU/XQI=" + }, + "122089c326186c84aa2fd034b16abc38f3ebf4862d9ae106dc1847ac44f557b36465": { + "name": "x11_headers", + "url": "https://github.com/mitchellh/x11-headers/archive/2ffbd62d82ff73ec929dd8de802bc95effa0ef88.tar.gz", + "hash": "sha256-EhV2bmTY/OMYN1wEul35gD0hQgS/Al262jO3pVr0O+c=" + }, + "1220f5aec880d4f430cc1597ede88f1530da69e39a4986080e976b0c7b919c2ebfeb": { + "name": "vaxis", + "url": "git+https://github.com/rockorager/libvaxis#2237a7059eae99e9f132dd5acd1555e49d6c7d93", + "hash": "sha256-ZzLNJOsXzyBhkdUhbET30RoU2T9xKYsBUQz2NAjK/G8=" + }, + "1220dd654ef941fc76fd96f9ec6adadf83f69b9887a0d3f4ee5ac0a1a3e11be35cf5": { + "name": "zigimg", + "url": "git+https://github.com/zigimg/zigimg#3a667bdb3d7f0955a5a51c8468eac83210c1439e", + "hash": "sha256-oLf3YH3yeg4ikVO/GahMCDRMTU31AHkfSnF4rt7xTKo=" + }, + "122055beff332830a391e9895c044d33b15ea21063779557024b46169fb1984c6e40": { + "name": "zg", + "url": "https://codeberg.org/atman/zg/archive/v0.13.2.tar.gz", + "hash": "sha256-2x9hT7bYq9KJYWLVOf21a+QvTG/F7HWT+YK15IMRzNY=" + }, + "12201f0d542e7541cf492a001d4d0d0155c92f58212fbcb0d224e95edeba06b5416a": { + "name": "z2d", + "url": "https://deps.files.ghostty.org/z2d-12201f0d542e7541cf492a001d4d0d0155c92f58212fbcb0d224e95edeba06b5416a.tar.gz", + "hash": "sha256-P0UJ54RO/vVyDa+UkBl+QEOjzoMMEFSOTexQP/uBXfc=" + }, + "1220e17e64ef0ef561b3e4b9f3a96a2494285f2ec31c097721bf8c8677ec4415c634": { + "name": "zig_objc", + "url": "https://deps.files.ghostty.org/zig_objc-1220e17e64ef0ef561b3e4b9f3a96a2494285f2ec31c097721bf8c8677ec4415c634.tar.gz", + "hash": "sha256-H+HIbh2T23uzrsg9/1/vl9Ir1HCAa2pzeTx6zktJH9Q=" + }, + "12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc": { + "name": "zig_js", + "url": "https://deps.files.ghostty.org/zig_js-12205a66d423259567764fa0fc60c82be35365c21aeb76c5a7dc99698401f4f6fefc.tar.gz", + "hash": "sha256-fyNeCVbC9UAaKJY6JhAZlT0A479M/AKYMPIWEZbDWD0=" + }, + "12207831bce7d4abce57b5a98e8f3635811cfefd160bca022eb91fe905d36a02cf25": { + "name": "ziglyph", + "url": "https://deps.files.ghostty.org/ziglyph-b89d43d1e3fb01b6074bc1f7fc980324b04d26a5.tar.gz", + "hash": "sha256-cse98+Ft8QUjX+P88yyYfaxJOJGQ9M7Ymw7jFxDz89k=" + }, + "12209ca054cb1919fa276e328967f10b253f7537c4136eb48f3332b0f7cf661cad38": { + "name": "zig_wayland", + "url": "https://deps.files.ghostty.org/zig-wayland-fbfe3b4ac0b472a27b1f1a67405436c58cbee12d.tar.gz", + "hash": "sha256-RtAystqK/GRYIquTK1KfD7rRSCrfuzAvCD1Z9DE1ldc=" + }, + "1220edc3b8d8bedbb50555947987e5e8e2f93871ca3c8e8d4cc8f1377c15b5dd35e8": { + "name": "zf", + "url": "https://deps.files.ghostty.org/zf-1220edc3b8d8bedbb50555947987e5e8e2f93871ca3c8e8d4cc8f1377c15b5dd35e8.tar.gz", + "hash": "sha256-/oLryY3VQfjbtQi+UP+n6FJTVA/YxIetjO+6Ovrh6/E=" + }, + "1220c72c1697dd9008461ead702997a15d8a1c5810247f02e7983b9f74c6c6e4c087": { + "name": "vaxis", + "url": "git+https://github.com/rockorager/libvaxis/?ref=main#dc0a228a5544988d4a920cfb40be9cd28db41423", + "hash": "sha256-QWN4jOrA91KlbqmeEHHJ4HTnCC9nmfxt8DHUXJpAzLI=" + }, + "12208d70ee791d7ef7e16e1c3c9c1127b57f1ed066a24f87d57fc9f730c5dc394b9d": { + "name": "gobject", + "url": "https://deps.files.ghostty.org/gobject-12208d70ee791d7ef7e16e1c3c9c1127b57f1ed066a24f87d57fc9f730c5dc394b9d.tar.zst", + "hash": "sha256-UU97kNv/bZzQPKz1djhEDLapLguvfBpFfWVb6FthtcI=" + }, + "12202cdac858abc52413a6c6711d5026d2d3c8e13f95ca2c327eade0736298bb021f": { + "name": "wayland", + "url": "https://deps.files.ghostty.org/wayland-9cb3d7aa9dc995ffafdbdef7ab86a949d0fb0e7d.tar.gz", + "hash": "sha256-6kGR1o5DdnflHzqs3ieCmBAUTpMdOXoyfcYDXiw5xQ0=" + }, + "12201a57c6ce0001aa034fa80fba3e1cd2253c560a45748f4f4dd21ff23b491cddef": { + "name": "wayland_protocols", + "url": "https://deps.files.ghostty.org/wayland-protocols-258d8f88f2c8c25a830c6316f87d23ce1a0f12d9.tar.gz", + "hash": "sha256-XO3K3egbdeYPI+XoO13SuOtO+5+Peb16NH0UiusFMPg=" + }, + "12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566": { + "name": "plasma_wayland_protocols", + "url": "https://deps.files.ghostty.org/plasma_wayland_protocols-12207e0851c12acdeee0991e893e0132fc87bb763969a585dc16ecca33e88334c566.tar.gz", + "hash": "sha256-XFi6IUrNjmvKNCbcCLAixGqN2Zeymhs+KLrfccIN9EE=" + }, + "1220a1dbe41bc69aacf75026a7158812198ea265fb9cac64dcb91cd31f3b1b8c1f92": { + "name": "iterm2_themes", + "url": "https://github.com/mbadolato/iTerm2-Color-Schemes/archive/efb1bb1843500a751eb30afa58fe48a6bec8952c.tar.gz", + "hash": "sha256-ZdVc1mmLwF45PZiqL/j/l7MO2O6hZ11lqIToGFdHiEU=" + }, + "1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402": { + "name": "imgui", + "url": "https://deps.files.ghostty.org/imgui-1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402.tar.gz", + "hash": "sha256-oF/QHgTPEat4Hig4fGIdLkIPHmBEyOJ6JeYD6pnveGA=" + }, + "1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d": { + "name": "freetype", + "url": "https://deps.files.ghostty.org/freetype-1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d.tar.gz", + "hash": "sha256-QnIB9dUVFnDQXB9bRb713aHy592XHvVPD+qqf/0quQw=" + }, + "1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66": { + "name": "libpng", + "url": "https://deps.files.ghostty.org/libpng-1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66.tar.gz", + "hash": "sha256-/syVtGzwXo4/yKQUdQ4LparQDYnp/fF16U/wQcrxoDo=" + }, + "1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb": { + "name": "zlib", + "url": "https://deps.files.ghostty.org/zlib-1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb.tar.gz", + "hash": "sha256-F+iIY/NgBnKrSRgvIXKBtvxNPHYr3jYZNeQ2qVIU0Fw=" + }, + "12201149afb3326c56c05bb0a577f54f76ac20deece63aa2f5cd6ff31a4fa4fcb3b7": { + "name": "fontconfig", + "url": "https://deps.files.ghostty.org/fontconfig-2.14.2.tar.gz", + "hash": "sha256-O6LdkhWHGKzsXKrxpxYEO1qgVcJ7CB2RSvPMtA3OilU=" + }, + "122032442d95c3b428ae8e526017fad881e7dc78eab4d558e9a58a80bfbd65a64f7d": { + "name": "libxml2", + "url": "https://github.com/GNOME/libxml2/archive/refs/tags/v2.11.5.tar.gz", + "hash": "sha256-bCgFni4+60K1tLFkieORamNGwQladP7jvGXNxdiaYhU=" + }, + "1220b8588f106c996af10249bfa092c6fb2f35fbacb1505ef477a0b04a7dd1063122": { + "name": "harfbuzz", + "url": "https://deps.files.ghostty.org/harfbuzz-1220b8588f106c996af10249bfa092c6fb2f35fbacb1505ef477a0b04a7dd1063122.tar.gz", + "hash": "sha256-nxygiYE7BZRK0c6MfgGCEwJtNdybq0gKIeuHaDg5ZVY=" + }, + "12205c83b8311a24b1d5ae6d21640df04f4b0726e314337c043cde1432758cbe165b": { + "name": "highway", + "url": "https://deps.files.ghostty.org/highway-12205c83b8311a24b1d5ae6d21640df04f4b0726e314337c043cde1432758cbe165b.tar.gz", + "hash": "sha256-NUqLRTm1iOcLmOxwhEJz4/J0EwLEw3e8xOgbPRhm98k=" + }, + "1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb": { + "name": "oniguruma", + "url": "https://deps.files.ghostty.org/oniguruma-1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb.tar.gz", + "hash": "sha256-ABqhIC54RI9MC/GkjHblVodrNvFtks4yB+zP1h2Z8qA=" + }, + "1220446be831adcca918167647c06c7b825849fa3fba5f22da394667974537a9c77e": { + "name": "sentry", + "url": "https://deps.files.ghostty.org/sentry-1220446be831adcca918167647c06c7b825849fa3fba5f22da394667974537a9c77e.tar.gz", + "hash": "sha256-KsZJfMjWGo0xCT5HrduMmyxFsWsHBbszSoNbZCPDGN8=" + }, + "12207fd37bb8251919c112dcdd8f616a491857b34a451f7e4486490077206dc2a1ea": { + "name": "breakpad", + "url": "https://github.com/getsentry/breakpad/archive/b99f444ba5f6b98cac261cbb391d8766b34a5918.tar.gz", + "hash": "sha256-bMqYlD0amQdmzvYQd8Ca/1k4Bj/heh7+EijlQSttatk=" + }, + "1220d4d18426ca72fc2b7e56ce47273149815501d0d2395c2a98c726b31ba931e641": { + "name": "utfcpp", + "url": "https://deps.files.ghostty.org/utfcpp-1220d4d18426ca72fc2b7e56ce47273149815501d0d2395c2a98c726b31ba931e641.tar.gz", + "hash": "sha256-/8ZooxDndgfTk/PBizJxXyI9oerExNbgV5oR345rWc8=" + }, + "122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd": { + "name": "wuffs", + "url": "https://deps.files.ghostty.org/wuffs-122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd.tar.gz", + "hash": "sha256-nkzSCr6W5sTG7enDBXEIhgEm574uLD41UVR2wlC+HBM=" + }, + "12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806": { + "name": "pixels", + "url": "https://deps.files.ghostty.org/pixels-12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806.tar.gz", + "hash": "sha256-Veg7FtCRCCUCvxSb9FfzH0IJLFmCZQ4/+657SIcb8Ro=" + }, + "12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1": { + "name": "glslang", + "url": "https://deps.files.ghostty.org/glslang-12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1.tar.gz", + "hash": "sha256-FKLtu1Ccs+UamlPj9eQ12/WXFgS0uDPmPmB26MCpl7U=" + }, + "1220fb3b5586e8be67bc3feb34cbe749cf42a60d628d2953632c2f8141302748c8da": { + "name": "spirv_cross", + "url": "https://deps.files.ghostty.org/spirv_cross-1220fb3b5586e8be67bc3feb34cbe749cf42a60d628d2953632c2f8141302748c8da.tar.gz", + "hash": "sha256-tStvz8Ref6abHwahNiwVVHNETizAmZVVaxVsU7pmV+M=" + } +} diff --git a/flake.lock b/flake.lock index bf678156b..7905635b3 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "type": "github" }, "original": { @@ -21,11 +21,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -36,11 +36,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1733423277, - "narHash": "sha256-TxabjxEgkNbCGFRHgM/b9yZWlBj60gUOUnRT/wbVQR8=", + "lastModified": 1738255539, + "narHash": "sha256-hP2eOqhIO/OILW+3moNWO4GtdJFYCqAe9yJZgvlCoDQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "e36963a147267afc055f7cf65225958633e536bf", + "rev": "c3511a3b53b482aa7547c9d1626fd7310c1de1c5", "type": "github" }, "original": { @@ -52,11 +52,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1733229606, - "narHash": "sha256-FLYY5M0rpa5C2QAE3CKLYAM6TwbKicdRK6qNrSHlNrE=", + "lastModified": 1738136902, + "narHash": "sha256-pUvLijVGARw4u793APze3j6mU1Zwdtz7hGkGGkD87qw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "566e53c2ad750c84f6d31f9ccb9d00f823165550", + "rev": "9a5db3142ce450045840cc8d832b13b8a2018e0c", "type": "github" }, "original": { @@ -69,9 +69,11 @@ "root": { "inputs": { "flake-compat": "flake-compat", + "flake-utils": "flake-utils", "nixpkgs-stable": "nixpkgs-stable", "nixpkgs-unstable": "nixpkgs-unstable", - "zig": "zig" + "zig": "zig", + "zig2nix": "zig2nix" } }, "systems": { @@ -92,17 +94,19 @@ "zig": { "inputs": { "flake-compat": [], - "flake-utils": "flake-utils", + "flake-utils": [ + "flake-utils" + ], "nixpkgs": [ "nixpkgs-stable" ] }, "locked": { - "lastModified": 1717848532, - "narHash": "sha256-d+xIUvSTreHl8pAmU1fnmkfDTGQYCn2Rb/zOwByxS2M=", + "lastModified": 1738239110, + "narHash": "sha256-Y5i9mQ++dyIQr+zEPNy+KIbc5wjPmfllBrag3cHZgcE=", "owner": "mitchellh", "repo": "zig-overlay", - "rev": "02fc5cc555fc14fda40c42d7c3250efa43812b43", + "rev": "1a8fb6f3a04724519436355564b95fce5e272504", "type": "github" }, "original": { @@ -110,6 +114,30 @@ "repo": "zig-overlay", "type": "github" } + }, + "zig2nix": { + "inputs": { + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs-stable" + ] + }, + "locked": { + "lastModified": 1738263917, + "narHash": "sha256-j/3fwe2pEOquHabP/puljOKwAZFjIE9gXZqA91sC48M=", + "owner": "jcollie", + "repo": "zig2nix", + "rev": "c311d8e77a6ee0d995f40a6e10a89a3a4ab04f9a", + "type": "github" + }, + "original": { + "owner": "jcollie", + "ref": "c311d8e77a6ee0d995f40a6e10a89a3a4ab04f9a", + "repo": "zig2nix", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 3256c7c15..df0eeb759 100644 --- a/flake.nix +++ b/flake.nix @@ -8,6 +8,7 @@ # glibc versions used by our dependencies from Nix are compatible with the # system glibc that the user is building for. nixpkgs-stable.url = "github:nixos/nixpkgs/release-24.11"; + flake-utils.url = "github:numtide/flake-utils"; # Used for shell.nix flake-compat = { @@ -19,9 +20,18 @@ url = "github:mitchellh/zig-overlay"; inputs = { nixpkgs.follows = "nixpkgs-stable"; + flake-utils.follows = "flake-utils"; flake-compat.follows = ""; }; }; + + zig2nix = { + url = "github:jcollie/zig2nix?ref=c311d8e77a6ee0d995f40a6e10a89a3a4ab04f9a"; + inputs = { + nixpkgs.follows = "nixpkgs-stable"; + flake-utils.follows = "flake-utils"; + }; + }; }; outputs = { @@ -29,6 +39,7 @@ nixpkgs-unstable, nixpkgs-stable, zig, + zig2nix, ... }: builtins.foldl' nixpkgs-stable.lib.recursiveUpdate {} ( @@ -40,6 +51,7 @@ devShell.${system} = pkgs-stable.callPackage ./nix/devShell.nix { zig = zig.packages.${system}."0.13.0"; wraptest = pkgs-stable.callPackage ./nix/wraptest.nix {}; + zig2nix = zig2nix; }; packages.${system} = let @@ -49,6 +61,7 @@ revision = self.shortRev or self.dirtyShortRev or "dirty"; }; in rec { + deps = pkgs-stable.callPackage ./build.zig.zon.nix {}; ghostty-debug = pkgs-stable.callPackage ./nix/package.nix (mkArgs "Debug"); ghostty-releasesafe = pkgs-stable.callPackage ./nix/package.nix (mkArgs "ReleaseSafe"); ghostty-releasefast = pkgs-stable.callPackage ./nix/package.nix (mkArgs "ReleaseFast"); diff --git a/include/ghostty.h b/include/ghostty.h index 246fb9ed3..86de4266d 100644 --- a/include/ghostty.h +++ b/include/ghostty.h @@ -412,6 +412,7 @@ typedef enum { GHOSTTY_FULLSCREEN_NATIVE, GHOSTTY_FULLSCREEN_NON_NATIVE, GHOSTTY_FULLSCREEN_NON_NATIVE_VISIBLE_MENU, + GHOSTTY_FULLSCREEN_NON_NATIVE_PADDED_NOTCH, } ghostty_action_fullscreen_e; // apprt.action.SecureInput @@ -585,6 +586,7 @@ typedef enum { GHOSTTY_ACTION_RENDER_INSPECTOR, GHOSTTY_ACTION_DESKTOP_NOTIFICATION, GHOSTTY_ACTION_SET_TITLE, + GHOSTTY_ACTION_PROMPT_TITLE, GHOSTTY_ACTION_PWD, GHOSTTY_ACTION_MOUSE_SHAPE, GHOSTTY_ACTION_MOUSE_VISIBILITY, @@ -644,7 +646,7 @@ typedef void (*ghostty_runtime_write_clipboard_cb)(void*, ghostty_clipboard_e, bool); typedef void (*ghostty_runtime_close_surface_cb)(void*, bool); -typedef void (*ghostty_runtime_action_cb)(ghostty_app_t, +typedef bool (*ghostty_runtime_action_cb)(ghostty_app_t, ghostty_target_s, ghostty_action_s); diff --git a/macos/Assets.xcassets/Alternate Icons/BlueprintImage.imageset/Contents.json b/macos/Assets.xcassets/Alternate Icons/BlueprintImage.imageset/Contents.json new file mode 100644 index 000000000..1c1b9b47e --- /dev/null +++ b/macos/Assets.xcassets/Alternate Icons/BlueprintImage.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "macOS-AppIcon-1024px.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/macos/Assets.xcassets/Alternate Icons/BlueprintImage.imageset/macOS-AppIcon-1024px.png b/macos/Assets.xcassets/Alternate Icons/BlueprintImage.imageset/macOS-AppIcon-1024px.png new file mode 100644 index 000000000..ffba7d94d Binary files /dev/null and b/macos/Assets.xcassets/Alternate Icons/BlueprintImage.imageset/macOS-AppIcon-1024px.png differ diff --git a/macos/Assets.xcassets/Alternate Icons/ChalkboardImage.imageset/Contents.json b/macos/Assets.xcassets/Alternate Icons/ChalkboardImage.imageset/Contents.json new file mode 100644 index 000000000..1c1b9b47e --- /dev/null +++ b/macos/Assets.xcassets/Alternate Icons/ChalkboardImage.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "macOS-AppIcon-1024px.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/macos/Assets.xcassets/Alternate Icons/ChalkboardImage.imageset/macOS-AppIcon-1024px.png b/macos/Assets.xcassets/Alternate Icons/ChalkboardImage.imageset/macOS-AppIcon-1024px.png new file mode 100644 index 000000000..eeedb7203 Binary files /dev/null and b/macos/Assets.xcassets/Alternate Icons/ChalkboardImage.imageset/macOS-AppIcon-1024px.png differ diff --git a/macos/Assets.xcassets/Alternate Icons/Contents.json b/macos/Assets.xcassets/Alternate Icons/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/macos/Assets.xcassets/Alternate Icons/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/macos/Assets.xcassets/Alternate Icons/GlassImage.imageset/Contents.json b/macos/Assets.xcassets/Alternate Icons/GlassImage.imageset/Contents.json new file mode 100644 index 000000000..1c1b9b47e --- /dev/null +++ b/macos/Assets.xcassets/Alternate Icons/GlassImage.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "macOS-AppIcon-1024px.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/macos/Assets.xcassets/Alternate Icons/GlassImage.imageset/macOS-AppIcon-1024px.png b/macos/Assets.xcassets/Alternate Icons/GlassImage.imageset/macOS-AppIcon-1024px.png new file mode 100644 index 000000000..99d704e27 Binary files /dev/null and b/macos/Assets.xcassets/Alternate Icons/GlassImage.imageset/macOS-AppIcon-1024px.png differ diff --git a/macos/Assets.xcassets/Alternate Icons/HolographicImage.imageset/Contents.json b/macos/Assets.xcassets/Alternate Icons/HolographicImage.imageset/Contents.json new file mode 100644 index 000000000..1c1b9b47e --- /dev/null +++ b/macos/Assets.xcassets/Alternate Icons/HolographicImage.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "macOS-AppIcon-1024px.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/macos/Assets.xcassets/Alternate Icons/HolographicImage.imageset/macOS-AppIcon-1024px.png b/macos/Assets.xcassets/Alternate Icons/HolographicImage.imageset/macOS-AppIcon-1024px.png new file mode 100644 index 000000000..b31c9e973 Binary files /dev/null and b/macos/Assets.xcassets/Alternate Icons/HolographicImage.imageset/macOS-AppIcon-1024px.png differ diff --git a/macos/Assets.xcassets/Alternate Icons/MicrochipImage.imageset/Contents.json b/macos/Assets.xcassets/Alternate Icons/MicrochipImage.imageset/Contents.json new file mode 100644 index 000000000..1c1b9b47e --- /dev/null +++ b/macos/Assets.xcassets/Alternate Icons/MicrochipImage.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "macOS-AppIcon-1024px.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/macos/Assets.xcassets/Alternate Icons/MicrochipImage.imageset/macOS-AppIcon-1024px.png b/macos/Assets.xcassets/Alternate Icons/MicrochipImage.imageset/macOS-AppIcon-1024px.png new file mode 100644 index 000000000..add488d36 Binary files /dev/null and b/macos/Assets.xcassets/Alternate Icons/MicrochipImage.imageset/macOS-AppIcon-1024px.png differ diff --git a/macos/Assets.xcassets/Alternate Icons/PaperImage.imageset/Contents.json b/macos/Assets.xcassets/Alternate Icons/PaperImage.imageset/Contents.json new file mode 100644 index 000000000..1c1b9b47e --- /dev/null +++ b/macos/Assets.xcassets/Alternate Icons/PaperImage.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "macOS-AppIcon-1024px.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/macos/Assets.xcassets/Alternate Icons/PaperImage.imageset/macOS-AppIcon-1024px.png b/macos/Assets.xcassets/Alternate Icons/PaperImage.imageset/macOS-AppIcon-1024px.png new file mode 100644 index 000000000..fad8dc70b Binary files /dev/null and b/macos/Assets.xcassets/Alternate Icons/PaperImage.imageset/macOS-AppIcon-1024px.png differ diff --git a/macos/Assets.xcassets/Alternate Icons/RetroImage.imageset/Contents.json b/macos/Assets.xcassets/Alternate Icons/RetroImage.imageset/Contents.json new file mode 100644 index 000000000..1c1b9b47e --- /dev/null +++ b/macos/Assets.xcassets/Alternate Icons/RetroImage.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "macOS-AppIcon-1024px.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/macos/Assets.xcassets/Alternate Icons/RetroImage.imageset/macOS-AppIcon-1024px.png b/macos/Assets.xcassets/Alternate Icons/RetroImage.imageset/macOS-AppIcon-1024px.png new file mode 100644 index 000000000..02619e860 Binary files /dev/null and b/macos/Assets.xcassets/Alternate Icons/RetroImage.imageset/macOS-AppIcon-1024px.png differ diff --git a/macos/Assets.xcassets/Alternate Icons/XrayImage.imageset/Contents.json b/macos/Assets.xcassets/Alternate Icons/XrayImage.imageset/Contents.json new file mode 100644 index 000000000..1c1b9b47e --- /dev/null +++ b/macos/Assets.xcassets/Alternate Icons/XrayImage.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "macOS-AppIcon-1024px.png", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/macos/Assets.xcassets/Alternate Icons/XrayImage.imageset/macOS-AppIcon-1024px.png b/macos/Assets.xcassets/Alternate Icons/XrayImage.imageset/macOS-AppIcon-1024px.png new file mode 100644 index 000000000..9e74a967c Binary files /dev/null and b/macos/Assets.xcassets/Alternate Icons/XrayImage.imageset/macOS-AppIcon-1024px.png differ diff --git a/macos/Ghostty.xcodeproj/project.pbxproj b/macos/Ghostty.xcodeproj/project.pbxproj index 02c8258cb..0c68da534 100644 --- a/macos/Ghostty.xcodeproj/project.pbxproj +++ b/macos/Ghostty.xcodeproj/project.pbxproj @@ -72,6 +72,7 @@ A5A2A3CA2D4445E30033CF96 /* Dock.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5A2A3C92D4445E20033CF96 /* Dock.swift */; }; A5A2A3CC2D444ABB0033CF96 /* NSApplication+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5A2A3CB2D444AB80033CF96 /* NSApplication+Extension.swift */; }; A5A6F72A2CC41B8900B232A5 /* Xcode.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5A6F7292CC41B8700B232A5 /* Xcode.swift */; }; + A5AEB1652D5BE7D000513529 /* LastWindowPosition.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5AEB1642D5BE7BF00513529 /* LastWindowPosition.swift */; }; A5B30539299BEAAB0047F10C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A5B30538299BEAAB0047F10C /* Assets.xcassets */; }; A5CA378C2D2A4DEB00931030 /* KeyboardLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5CA378B2D2A4DE800931030 /* KeyboardLayout.swift */; }; A5CA378E2D31D6C300931030 /* Weak.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5CA378D2D31D6C100931030 /* Weak.swift */; }; @@ -168,6 +169,7 @@ A5A2A3C92D4445E20033CF96 /* Dock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Dock.swift; sourceTree = ""; }; A5A2A3CB2D444AB80033CF96 /* NSApplication+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSApplication+Extension.swift"; sourceTree = ""; }; A5A6F7292CC41B8700B232A5 /* Xcode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Xcode.swift; sourceTree = ""; }; + A5AEB1642D5BE7BF00513529 /* LastWindowPosition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LastWindowPosition.swift; sourceTree = ""; }; A5B30531299BEAAA0047F10C /* Ghostty.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Ghostty.app; sourceTree = BUILT_PRODUCTS_DIR; }; A5B30538299BEAAB0047F10C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; A5B3053D299BEAAB0047F10C /* Ghostty.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Ghostty.entitlements; sourceTree = ""; }; @@ -270,6 +272,7 @@ A534263D2A7DCBB000EBB7A2 /* Helpers */ = { isa = PBXGroup; children = ( + A5AEB1642D5BE7BF00513529 /* LastWindowPosition.swift */, A5A6F7292CC41B8700B232A5 /* Xcode.swift */, A5CEAFFE29C2410700646FDA /* Backport.swift */, A5333E1B2B5A1CE3008AEFF7 /* CrossKit.swift */, @@ -623,6 +626,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + A5AEB1652D5BE7D000513529 /* LastWindowPosition.swift in Sources */, A59630A42AF059BB00D64628 /* Ghostty.SplitNode.swift in Sources */, A514C8D62B54A16400493A16 /* Ghostty.Config.swift in Sources */, A54B0CEB2D0CFB4C00CBEFF8 /* NSImage+Extension.swift in Sources */, diff --git a/macos/Sources/App/macOS/AppDelegate.swift b/macos/Sources/App/macOS/AppDelegate.swift index c719d3ce7..7caa04659 100644 --- a/macos/Sources/App/macOS/AppDelegate.swift +++ b/macos/Sources/App/macOS/AppDelegate.swift @@ -28,7 +28,9 @@ class AppDelegate: NSObject, @IBOutlet private var menuNewWindow: NSMenuItem? @IBOutlet private var menuNewTab: NSMenuItem? @IBOutlet private var menuSplitRight: NSMenuItem? + @IBOutlet private var menuSplitLeft: NSMenuItem? @IBOutlet private var menuSplitDown: NSMenuItem? + @IBOutlet private var menuSplitUp: NSMenuItem? @IBOutlet private var menuClose: NSMenuItem? @IBOutlet private var menuCloseTab: NSMenuItem? @IBOutlet private var menuCloseWindow: NSMenuItem? @@ -41,6 +43,7 @@ class AppDelegate: NSObject, @IBOutlet private var menuToggleVisibility: NSMenuItem? @IBOutlet private var menuToggleFullScreen: NSMenuItem? + @IBOutlet private var menuBringAllToFront: NSMenuItem? @IBOutlet private var menuZoomSplit: NSMenuItem? @IBOutlet private var menuPreviousSplit: NSMenuItem? @IBOutlet private var menuNextSplit: NSMenuItem? @@ -52,6 +55,7 @@ class AppDelegate: NSObject, @IBOutlet private var menuIncreaseFontSize: NSMenuItem? @IBOutlet private var menuDecreaseFontSize: NSMenuItem? @IBOutlet private var menuResetFontSize: NSMenuItem? + @IBOutlet private var menuChangeTitle: NSMenuItem? @IBOutlet private var menuQuickTerminal: NSMenuItem? @IBOutlet private var menuTerminalInspector: NSMenuItem? @@ -93,7 +97,7 @@ class AppDelegate: NSObject, } /// Tracks the windows that we hid for toggleVisibility. - private var hiddenWindows: [Weak] = [] + private var hiddenState: ToggleVisibilityState? = nil /// The observer for the app appearance. private var appearanceObserver: NSKeyValueObservation? = nil @@ -217,8 +221,8 @@ class AppDelegate: NSObject, } func applicationDidBecomeActive(_ notification: Notification) { - // If we're back then clear the hidden windows - self.hiddenWindows = [] + // If we're back manually then clear the hidden state because macOS handles it. + self.hiddenState = nil // First launch stuff if (!applicationHasBecomeActive) { @@ -245,7 +249,13 @@ class AppDelegate: NSObject, // This probably isn't fully safe. The isEmpty check above is aspirational, it doesn't // quite work with SwiftUI because windows are retained on close. So instead we check // if there are any that are visible. I'm guessing this breaks under certain scenarios. - if (windows.allSatisfy { !$0.isVisible }) { return .terminateNow } + // + // NOTE(mitchellh): I don't think we need this check at all anymore. I'm keeping it + // here because I don't want to remove it in a patch release cycle but we should + // target removing it soon. + if (self.quickController == nil && windows.allSatisfy { !$0.isVisible }) { + return .terminateNow + } // If the user is shutting down, restarting, or logging out, we don't confirm quit. why: if let event = NSAppleEventManager.shared().currentAppleEvent { @@ -355,7 +365,9 @@ class AppDelegate: NSObject, syncMenuShortcut(config, action: "close_window", menuItem: self.menuCloseWindow) syncMenuShortcut(config, action: "close_all_windows", menuItem: self.menuCloseAllWindows) syncMenuShortcut(config, action: "new_split:right", menuItem: self.menuSplitRight) + syncMenuShortcut(config, action: "new_split:left", menuItem: self.menuSplitLeft) syncMenuShortcut(config, action: "new_split:down", menuItem: self.menuSplitDown) + syncMenuShortcut(config, action: "new_split:up", menuItem: self.menuSplitUp) syncMenuShortcut(config, action: "copy_to_clipboard", menuItem: self.menuCopy) syncMenuShortcut(config, action: "paste_from_clipboard", menuItem: self.menuPaste) @@ -378,6 +390,7 @@ class AppDelegate: NSObject, syncMenuShortcut(config, action: "increase_font_size:1", menuItem: self.menuIncreaseFontSize) syncMenuShortcut(config, action: "decrease_font_size:1", menuItem: self.menuDecreaseFontSize) syncMenuShortcut(config, action: "reset_font_size", menuItem: self.menuResetFontSize) + syncMenuShortcut(config, action: "change_title_prompt", menuItem: self.menuChangeTitle) syncMenuShortcut(config, action: "toggle_quick_terminal", menuItem: self.menuQuickTerminal) syncMenuShortcut(config, action: "toggle_visibility", menuItem: self.menuToggleVisibility) syncMenuShortcut(config, action: "inspector:toggle", menuItem: self.menuTerminalInspector) @@ -431,7 +444,7 @@ class AppDelegate: NSObject, // If we have a main window then we don't process any of the keys // because we let it capture and propagate. guard NSApp.mainWindow == nil else { return event } - + // If this event as-is would result in a key binding then we send it. if let app = ghostty.app, ghostty_app_key_is_binding( @@ -447,26 +460,26 @@ class AppDelegate: NSObject, return nil } } - + // If this event would be handled by our menu then we do nothing. if let mainMenu = NSApp.mainMenu, mainMenu.performKeyEquivalent(with: event) { return nil } - + // If we reach this point then we try to process the key event // through the Ghostty key mechanism. - + // Ghostty must be loaded guard let ghostty = self.ghostty.app else { return event } - + // Build our event input and call ghostty if (ghostty_app_key(ghostty, event.ghosttyKeyEvent(GHOSTTY_ACTION_PRESS))) { // The key was used so we want to stop it from going to our Mac app Ghostty.logger.debug("local key event handled event=\(event)") return nil } - + return event } @@ -524,6 +537,15 @@ class AppDelegate: NSObject, // AppKit mutex on the appearance. DispatchQueue.main.async { self.syncAppearance(config: config) } + // Decide whether to hide/unhide app from dock and app switcher + switch (config.macosHidden) { + case .never: + NSApp.setActivationPolicy(.regular) + + case .always: + NSApp.setActivationPolicy(.accessory) + } + // If we have configuration errors, we need to show them. let c = ConfigurationErrorsController.sharedInstance c.errors = config.errors @@ -557,6 +579,30 @@ class AppDelegate: NSObject, self.appIcon = nil break + case .blueprint: + self.appIcon = NSImage(named: "BlueprintImage")! + + case .chalkboard: + self.appIcon = NSImage(named: "ChalkboardImage")! + + case .glass: + self.appIcon = NSImage(named: "GlassImage")! + + case .holographic: + self.appIcon = NSImage(named: "HolographicImage")! + + case .microchip: + self.appIcon = NSImage(named: "MicrochipImage")! + + case .paper: + self.appIcon = NSImage(named: "PaperImage")! + + case .retro: + self.appIcon = NSImage(named: "RetroImage")! + + case .xray: + self.appIcon = NSImage(named: "XrayImage")! + case .customStyle: guard let ghostColor = config.macosIconGhostColor else { break } guard let screenColors = config.macosIconScreenColor else { break } @@ -709,21 +755,15 @@ class AppDelegate: NSObject, /// Toggles visibility of all Ghosty Terminal windows. When hidden, activates Ghostty as the frontmost application @IBAction func toggleVisibility(_ sender: Any) { - // Toggle visibility doesn't do anything if the focused window is native - // fullscreen. - guard let keyWindow = NSApp.keyWindow, - !keyWindow.styleMask.contains(.fullScreen) else { return } - // If we have focus, then we hide all windows. if NSApp.isActive { - // We need to keep track of the windows that were visible because we only - // want to bring back these windows if we remove the toggle. - // - // We also ignore fullscreen windows because they don't hide anyways. - self.hiddenWindows = NSApp.windows.filter { - $0.isVisible && - !$0.styleMask.contains(.fullScreen) - }.map { Weak($0) } + // Toggle visibility doesn't do anything if the focused window is native + // fullscreen. This is only relevant if Ghostty is active. + guard let keyWindow = NSApp.keyWindow, + !keyWindow.styleMask.contains(.fullScreen) else { return } + + // Keep track of our hidden state to restore properly + self.hiddenState = .init() NSApp.hide(nil) return } @@ -734,8 +774,16 @@ class AppDelegate: NSObject, // Bring all windows to the front. Note: we don't use NSApp.unhide because // that will unhide ALL hidden windows. We want to only bring forward the // ones that we hid. - self.hiddenWindows.forEach { $0.value?.orderFrontRegardless() } - self.hiddenWindows = [] + hiddenState?.restore() + hiddenState = nil + } + + @IBAction func bringAllToFront(_ sender: Any) { + if !NSApp.isActive { + NSApp.activate(ignoringOtherApps: true) + } + + NSApplication.shared.arrangeInFront(sender) } private struct DerivedConfig { @@ -755,4 +803,33 @@ class AppDelegate: NSObject, self.quickTerminalPosition = config.quickTerminalPosition } } + + private struct ToggleVisibilityState { + let hiddenWindows: [Weak] + let keyWindow: Weak? + + init() { + // We need to know the key window so that we can bring focus back to the + // right window if it was hidden. + self.keyWindow = if let keyWindow = NSApp.keyWindow { + .init(keyWindow) + } else { + nil + } + + // We need to keep track of the windows that were visible because we only + // want to bring back these windows if we remove the toggle. + // + // We also ignore fullscreen windows because they don't hide anyways. + self.hiddenWindows = NSApp.windows.filter { + $0.isVisible && + !$0.styleMask.contains(.fullScreen) + }.map { Weak($0) } + } + + func restore() { + hiddenWindows.forEach { $0.value?.orderFrontRegardless() } + keyWindow?.value?.makeKey() + } + } } diff --git a/macos/Sources/App/macOS/MainMenu.xib b/macos/Sources/App/macOS/MainMenu.xib index 4a01d5c62..8ad57c4a5 100644 --- a/macos/Sources/App/macOS/MainMenu.xib +++ b/macos/Sources/App/macOS/MainMenu.xib @@ -14,6 +14,8 @@ + + @@ -45,8 +47,10 @@ - + + + @@ -143,10 +147,22 @@ + + + + + + - + + + + + + + @@ -232,6 +248,13 @@ + + + + + + + @@ -270,12 +293,6 @@ - - - - - - @@ -370,6 +387,13 @@ + + + + + + + diff --git a/macos/Sources/Features/Terminal/BaseTerminalController.swift b/macos/Sources/Features/Terminal/BaseTerminalController.swift index bace20f05..edf3662b9 100644 --- a/macos/Sources/Features/Terminal/BaseTerminalController.swift +++ b/macos/Sources/Features/Terminal/BaseTerminalController.swift @@ -521,11 +521,21 @@ class BaseTerminalController: NSWindowController, ghostty.split(surface: surface, direction: GHOSTTY_SPLIT_DIRECTION_RIGHT) } + @IBAction func splitLeft(_ sender: Any) { + guard let surface = focusedSurface?.surface else { return } + ghostty.split(surface: surface, direction: GHOSTTY_SPLIT_DIRECTION_LEFT) + } + @IBAction func splitDown(_ sender: Any) { guard let surface = focusedSurface?.surface else { return } ghostty.split(surface: surface, direction: GHOSTTY_SPLIT_DIRECTION_DOWN) } + @IBAction func splitUp(_ sender: Any) { + guard let surface = focusedSurface?.surface else { return } + ghostty.split(surface: surface, direction: GHOSTTY_SPLIT_DIRECTION_UP) + } + @IBAction func splitZoom(_ sender: Any) { guard let surface = focusedSurface?.surface else { return } ghostty.splitToggleZoom(surface: surface) diff --git a/macos/Sources/Features/Terminal/TerminalController.swift b/macos/Sources/Features/Terminal/TerminalController.swift index f24261b9b..8118103d6 100644 --- a/macos/Sources/Features/Terminal/TerminalController.swift +++ b/macos/Sources/Features/Terminal/TerminalController.swift @@ -283,9 +283,12 @@ class TerminalController: BaseTerminalController { private func setInitialWindowPosition(x: Int16?, y: Int16?, windowDecorations: Bool) { guard let window else { return } - // If we don't have both an X and Y we center. + // If we don't have an X/Y then we try to use the previously saved window pos. guard let x, let y else { - window.center() + if (!LastWindowPosition.shared.restore(window)) { + window.center() + } + return } @@ -490,6 +493,20 @@ class TerminalController: BaseTerminalController { override func windowDidMove(_ notification: Notification) { super.windowDidMove(notification) self.fixTabBar() + + // Whenever we move save our last position for the next start. + if let window { + LastWindowPosition.shared.save(window) + } + } + + func windowDidBecomeMain(_ notification: Notification) { + // Whenever we get focused, use that as our last window position for + // restart. This differs from Terminal.app but matches iTerm2 behavior + // and I think its sensible. + if let window { + LastWindowPosition.shared.save(window) + } } // Called when the window will be encoded. We handle the data encoding here in the @@ -692,13 +709,21 @@ class TerminalController: BaseTerminalController { // If our index is the same we do nothing guard finalIndex != selectedIndex else { return } - // Get our parent - let parent = tabbedWindows[finalIndex] + // Get our target window + let targetWindow = tabbedWindows[finalIndex] - // Move our current selected window to the proper index + // Begin a group of window operations to minimize visual updates + NSAnimationContext.beginGrouping() + NSAnimationContext.current.duration = 0 + + // Remove and re-add the window in the correct position tabGroup.removeWindow(selectedWindow) - parent.addTabbedWindow(selectedWindow, ordered: action.amount < 0 ? .below : .above) - selectedWindow.makeKeyAndOrderFront(nil) + targetWindow.addTabbedWindow(selectedWindow, ordered: action.amount < 0 ? .below : .above) + + // Ensure our window remains selected + selectedWindow.makeKey() + + NSAnimationContext.endGrouping() } @objc private func onGotoTab(notification: SwiftUI.Notification) { diff --git a/macos/Sources/Features/Terminal/TerminalManager.swift b/macos/Sources/Features/Terminal/TerminalManager.swift index 42e35b90e..2db29aec9 100644 --- a/macos/Sources/Features/Terminal/TerminalManager.swift +++ b/macos/Sources/Features/Terminal/TerminalManager.swift @@ -86,7 +86,7 @@ class TerminalManager { // fullscreen for the logic later in this method. c.toggleFullscreen(mode: .native) - case .nonNative, .nonNativeVisibleMenu: + case .nonNative, .nonNativeVisibleMenu, .nonNativePaddedNotch: // If we're non-native then we have to do it on a later loop // so that the content view is setup. DispatchQueue.main.async { diff --git a/macos/Sources/Features/Terminal/TerminalToolbar.swift b/macos/Sources/Features/Terminal/TerminalToolbar.swift index 87cb6ce4f..aa4ca31cd 100644 --- a/macos/Sources/Features/Terminal/TerminalToolbar.swift +++ b/macos/Sources/Features/Terminal/TerminalToolbar.swift @@ -95,6 +95,23 @@ fileprivate class CenteredDynamicLabel: NSTextField { setContentHuggingPriority(.defaultLow, for: .horizontal) setContentCompressionResistancePriority(.defaultHigh, for: .horizontal) } + + // Vertically center the text + override func draw(_ dirtyRect: NSRect) { + guard let attributedString = self.attributedStringValue.mutableCopy() as? NSMutableAttributedString else { + super.draw(dirtyRect) + return + } + + let textSize = attributedString.size() + + let yOffset = (self.bounds.height - textSize.height) / 2 - 1 // -1 to center it better + + let centeredRect = NSRect(x: self.bounds.origin.x, y: self.bounds.origin.y + yOffset, + width: self.bounds.width, height: textSize.height) + + attributedString.draw(in: centeredRect) + } } extension NSToolbarItem.Identifier { diff --git a/macos/Sources/Ghostty/FullscreenMode+Extension.swift b/macos/Sources/Ghostty/FullscreenMode+Extension.swift index fffd8e84b..0c0bba908 100644 --- a/macos/Sources/Ghostty/FullscreenMode+Extension.swift +++ b/macos/Sources/Ghostty/FullscreenMode+Extension.swift @@ -13,6 +13,9 @@ extension FullscreenMode { case GHOSTTY_FULLSCREEN_NON_NATIVE_VISIBLE_MENU: .nonNativeVisibleMenu + case GHOSTTY_FULLSCREEN_NON_NATIVE_PADDED_NOTCH: + .nonNativePaddedNotch + default: nil } diff --git a/macos/Sources/Ghostty/Ghostty.App.swift b/macos/Sources/Ghostty/Ghostty.App.swift index 43c0f245a..ba249e3d1 100644 --- a/macos/Sources/Ghostty/Ghostty.App.swift +++ b/macos/Sources/Ghostty/Ghostty.App.swift @@ -257,7 +257,7 @@ extension Ghostty { // MARK: Ghostty Callbacks (iOS) static func wakeup(_ userdata: UnsafeMutableRawPointer?) {} - static func action(_ app: ghostty_app_t, target: ghostty_target_s, action: ghostty_action_s) {} + static func action(_ app: ghostty_app_t, target: ghostty_target_s, action: ghostty_action_s) -> Bool { return false } static func readClipboard( _ userdata: UnsafeMutableRawPointer?, location: ghostty_clipboard_e, @@ -423,7 +423,7 @@ extension Ghostty { // MARK: Actions (macOS) - static func action(_ app: ghostty_app_t, target: ghostty_target_s, action: ghostty_action_s) { + static func action(_ app: ghostty_app_t, target: ghostty_target_s, action: ghostty_action_s) -> Bool { // Make sure it a target we understand so all our action handlers can assert switch (target.tag) { case GHOSTTY_TARGET_APP, GHOSTTY_TARGET_SURFACE: @@ -431,7 +431,7 @@ extension Ghostty { default: Ghostty.logger.warning("unknown action target=\(target.tag.rawValue)") - return + return false } // Action dispatch @@ -455,13 +455,13 @@ extension Ghostty { toggleFullscreen(app, target: target, mode: action.action.toggle_fullscreen) case GHOSTTY_ACTION_MOVE_TAB: - moveTab(app, target: target, move: action.action.move_tab) + return moveTab(app, target: target, move: action.action.move_tab) case GHOSTTY_ACTION_GOTO_TAB: - gotoTab(app, target: target, tab: action.action.goto_tab) + return gotoTab(app, target: target, tab: action.action.goto_tab) case GHOSTTY_ACTION_GOTO_SPLIT: - gotoSplit(app, target: target, direction: action.action.goto_split) + return gotoSplit(app, target: target, direction: action.action.goto_split) case GHOSTTY_ACTION_RESIZE_SPLIT: resizeSplit(app, target: target, resize: action.action.resize_split) @@ -484,6 +484,9 @@ extension Ghostty { case GHOSTTY_ACTION_SET_TITLE: setTitle(app, target: target, v: action.action.set_title) + case GHOSTTY_ACTION_PROMPT_TITLE: + return promptTitle(app, target: target) + case GHOSTTY_ACTION_PWD: pwdChanged(app, target: target, v: action.action.pwd) @@ -541,10 +544,15 @@ extension Ghostty { fallthrough case GHOSTTY_ACTION_QUIT_TIMER: Ghostty.logger.info("known but unimplemented action action=\(action.tag.rawValue)") - + return false default: Ghostty.logger.warning("unknown action action=\(action.tag.rawValue)") + return false } + + // If we reached here then we assume performed since all unknown actions + // are captured in the switch and return false. + return true } private static func quit(_ app: ghostty_app_t) { @@ -716,15 +724,19 @@ extension Ghostty { private static func moveTab( _ app: ghostty_app_t, target: ghostty_target_s, - move: ghostty_action_move_tab_s) { + move: ghostty_action_move_tab_s) -> Bool { switch (target.tag) { case GHOSTTY_TARGET_APP: Ghostty.logger.warning("move tab does nothing with an app target") - return + return false case GHOSTTY_TARGET_SURFACE: - guard let surface = target.target.surface else { return } - guard let surfaceView = self.surfaceView(from: surface) else { return } + guard let surface = target.target.surface else { return false } + guard let surfaceView = self.surfaceView(from: surface) else { return false } + + // See gotoTab for notes on this check. + guard (surfaceView.window?.tabGroup?.windows.count ?? 0) > 1 else { return false } + NotificationCenter.default.post( name: .ghosttyMoveTab, object: surfaceView, @@ -736,20 +748,27 @@ extension Ghostty { default: assertionFailure() } + + return true } private static func gotoTab( _ app: ghostty_app_t, target: ghostty_target_s, - tab: ghostty_action_goto_tab_e) { + tab: ghostty_action_goto_tab_e) -> Bool { switch (target.tag) { case GHOSTTY_TARGET_APP: Ghostty.logger.warning("goto tab does nothing with an app target") - return + return false case GHOSTTY_TARGET_SURFACE: - guard let surface = target.target.surface else { return } - guard let surfaceView = self.surfaceView(from: surface) else { return } + guard let surface = target.target.surface else { return false } + guard let surfaceView = self.surfaceView(from: surface) else { return false } + + // Similar to goto_split (see comment there) about our performability, + // we should make this more accurate later. + guard (surfaceView.window?.tabGroup?.windows.count ?? 0) > 1 else { return false } + NotificationCenter.default.post( name: Notification.ghosttyGotoTab, object: surfaceView, @@ -761,20 +780,31 @@ extension Ghostty { default: assertionFailure() } + + return true } private static func gotoSplit( _ app: ghostty_app_t, target: ghostty_target_s, - direction: ghostty_action_goto_split_e) { + direction: ghostty_action_goto_split_e) -> Bool { switch (target.tag) { case GHOSTTY_TARGET_APP: Ghostty.logger.warning("goto split does nothing with an app target") - return + return false case GHOSTTY_TARGET_SURFACE: - guard let surface = target.target.surface else { return } - guard let surfaceView = self.surfaceView(from: surface) else { return } + guard let surface = target.target.surface else { return false } + guard let surfaceView = self.surfaceView(from: surface) else { return false } + guard let controller = surfaceView.window?.windowController as? BaseTerminalController else { return false } + + // For now, we return false if the window has no splits and we return + // true if the window has ANY splits. This isn't strictly correct because + // we should only be returning true if we actually performed the action, + // but this handles the most common case of caring about goto_split performability + // which is the no-split case. + guard controller.surfaceTree?.isSplit ?? false else { return false } + NotificationCenter.default.post( name: Notification.ghosttyFocusSplit, object: surfaceView, @@ -786,6 +816,8 @@ extension Ghostty { default: assertionFailure() } + + return true } private static func resizeSplit( @@ -978,6 +1010,26 @@ extension Ghostty { } } + private static func promptTitle( + _ app: ghostty_app_t, + target: ghostty_target_s) -> Bool { + switch (target.tag) { + case GHOSTTY_TARGET_APP: + Ghostty.logger.warning("set title prompt does nothing with an app target") + return false + + case GHOSTTY_TARGET_SURFACE: + guard let surface = target.target.surface else { return false } + guard let surfaceView = self.surfaceView(from: surface) else { return false } + surfaceView.promptTitle() + + default: + assertionFailure() + } + + return true + } + private static func pwdChanged( _ app: ghostty_app_t, target: ghostty_target_s, diff --git a/macos/Sources/Ghostty/Ghostty.Config.swift b/macos/Sources/Ghostty/Ghostty.Config.swift index 9c8042c63..ec23632f7 100644 --- a/macos/Sources/Ghostty/Ghostty.Config.swift +++ b/macos/Sources/Ghostty/Ghostty.Config.swift @@ -216,6 +216,8 @@ extension Ghostty { .nonNative case "visible-menu": .nonNativeVisibleMenu + case "padded-notch": + .nonNativePaddedNotch default: defaultValue } @@ -300,6 +302,16 @@ extension Ghostty { return buffer.map { .init(ghostty: $0) } } + var macosHidden: MacHidden { + guard let config = self.config else { return .never } + var v: UnsafePointer? = nil + let key = "macos-hidden" + guard ghostty_config_get(config, &v, key, UInt(key.count)) else { return .never } + guard let ptr = v else { return .never } + let str = String(cString: ptr) + return MacHidden(rawValue: str) ?? .never + } + var focusFollowsMouse : Bool { guard let config = self.config else { return false } var v = false; @@ -514,6 +526,11 @@ extension Ghostty.Config { case download } + enum MacHidden : String { + case never + case always + } + enum ResizeOverlay : String { case always case never diff --git a/macos/Sources/Ghostty/Ghostty.SplitNode.swift b/macos/Sources/Ghostty/Ghostty.SplitNode.swift index 899825d37..95c019b1f 100644 --- a/macos/Sources/Ghostty/Ghostty.SplitNode.swift +++ b/macos/Sources/Ghostty/Ghostty.SplitNode.swift @@ -38,6 +38,15 @@ extension Ghostty { } } + /// Returns true if the tree is split. + var isSplit: Bool { + return if case .leaf = self { + false + } else { + true + } + } + func topLeft() -> SurfaceView { switch (self) { case .leaf(let leaf): @@ -120,14 +129,7 @@ extension Ghostty { /// Returns true if the split tree contains the given view. func contains(view: SurfaceView) -> Bool { - switch (self) { - case .leaf(let leaf): - return leaf.surface == view - - case .split(let container): - return container.topLeft.contains(view: view) || - container.bottomRight.contains(view: view) - } + return leaf(for: view) != nil } /// Find a surface view by UUID. @@ -164,6 +166,22 @@ extension Ghostty { } } + /// Return the node for the given view if its in the tree. + func leaf(for view: SurfaceView) -> Leaf? { + switch (self) { + case .leaf(let leaf): + if leaf.surface == view { + return leaf + } else { + return nil + } + + case .split(let container): + return container.topLeft.leaf(for: view) ?? + container.bottomRight.leaf(for: view) + } + } + // MARK: - Sequence func makeIterator() -> IndexingIterator<[Leaf]> { diff --git a/macos/Sources/Ghostty/Package.swift b/macos/Sources/Ghostty/Package.swift index 71fac4a99..18ef3f3a7 100644 --- a/macos/Sources/Ghostty/Package.swift +++ b/macos/Sources/Ghostty/Package.swift @@ -198,6 +198,14 @@ extension Ghostty { /// macos-icon enum MacOSIcon: String { case official + case blueprint + case chalkboard + case glass + case holographic + case microchip + case paper + case retro + case xray case customStyle = "custom-style" } diff --git a/macos/Sources/Ghostty/SurfaceView_AppKit.swift b/macos/Sources/Ghostty/SurfaceView_AppKit.swift index f5cb93580..e4c9072f3 100644 --- a/macos/Sources/Ghostty/SurfaceView_AppKit.swift +++ b/macos/Sources/Ghostty/SurfaceView_AppKit.swift @@ -124,6 +124,11 @@ extension Ghostty { // A timer to fallback to ghost emoji if no title is set within the grace period private var titleFallbackTimer: Timer? + // This is the title from the terminal. This is nil if we're currently using + // the terminal title as the main title property. If the title is set manually + // by the user, this is set to the prior value (which may be empty, but non-nil). + private var titleFromTerminal: String? + /// Event monitor (see individual events for why) private var eventMonitor: Any? = nil @@ -380,6 +385,45 @@ extension Ghostty { NSCursor.setHiddenUntilMouseMoves(!visible) } + /// Set the title by prompting the user. + func promptTitle() { + // Create an alert dialog + let alert = NSAlert() + alert.messageText = "Change Terminal Title" + alert.informativeText = "Leave blank to restore the default." + alert.alertStyle = .informational + + // Add a text field to the alert + let textField = NSTextField(frame: NSRect(x: 0, y: 0, width: 250, height: 24)) + textField.stringValue = title + alert.accessoryView = textField + + // Add buttons + alert.addButton(withTitle: "OK") + alert.addButton(withTitle: "Cancel") + + let response = alert.runModal() + + // Check if the user clicked "OK" + if response == .alertFirstButtonReturn { + // Get the input text + let newTitle = textField.stringValue + + if newTitle.isEmpty { + // Empty means that user wants the title to be set automatically + // We also need to reload the config for the "title" property to be + // used again by this tab. + let prevTitle = titleFromTerminal ?? "👻" + titleFromTerminal = nil + setTitle(prevTitle) + } else { + // Set the title and prevent it from being changed automatically + titleFromTerminal = title + title = newTitle + } + } + } + func setTitle(_ title: String) { // This fixes an issue where very quick changes to the title could // cause an unpleasant flickering. We set a timer so that we can @@ -390,6 +434,11 @@ extension Ghostty { withTimeInterval: 0.075, repeats: false ) { [weak self] _ in + // Set the title if it wasn't manually set. + guard self?.titleFromTerminal == nil else { + self?.titleFromTerminal = title + return + } self?.title = title } } @@ -849,28 +898,8 @@ extension Ghostty { var handled: Bool = false if let list = keyTextAccumulator, list.count > 0 { handled = true - - // This is a hack. libghostty on macOS treats ctrl input as not having - // text because some keyboard layouts generate bogus characters for - // ctrl+key. libghostty can't tell this is from an IM keyboard giving - // us direct values. So, we just remove control. - var modifierFlags = event.modifierFlags - modifierFlags.remove(.control) - if let keyTextEvent = NSEvent.keyEvent( - with: .keyDown, - location: event.locationInWindow, - modifierFlags: modifierFlags, - timestamp: event.timestamp, - windowNumber: event.windowNumber, - context: nil, - characters: event.characters ?? "", - charactersIgnoringModifiers: event.charactersIgnoringModifiers ?? "", - isARepeat: event.isARepeat, - keyCode: event.keyCode - ) { - for text in list { - _ = keyAction(action, event: keyTextEvent, text: text) - } + for text in list { + _ = keyAction(action, event: event, text: text) } } @@ -1132,11 +1161,15 @@ extension Ghostty { menu.addItem(.separator()) menu.addItem(withTitle: "Split Right", action: #selector(splitRight(_:)), keyEquivalent: "") + menu.addItem(withTitle: "Split Left", action: #selector(splitLeft(_:)), keyEquivalent: "") menu.addItem(withTitle: "Split Down", action: #selector(splitDown(_:)), keyEquivalent: "") + menu.addItem(withTitle: "Split Up", action: #selector(splitUp(_:)), keyEquivalent: "") menu.addItem(.separator()) menu.addItem(withTitle: "Reset Terminal", action: #selector(resetTerminal(_:)), keyEquivalent: "") menu.addItem(withTitle: "Toggle Terminal Inspector", action: #selector(toggleTerminalInspector(_:)), keyEquivalent: "") + menu.addItem(.separator()) + menu.addItem(withTitle: "Change Title...", action: #selector(changeTitle(_:)), keyEquivalent: "") return menu } @@ -1189,11 +1222,21 @@ extension Ghostty { ghostty_surface_split(surface, GHOSTTY_SPLIT_DIRECTION_RIGHT) } + @IBAction func splitLeft(_ sender: Any) { + guard let surface = self.surface else { return } + ghostty_surface_split(surface, GHOSTTY_SPLIT_DIRECTION_LEFT) + } + @IBAction func splitDown(_ sender: Any) { guard let surface = self.surface else { return } ghostty_surface_split(surface, GHOSTTY_SPLIT_DIRECTION_DOWN) } + @IBAction func splitUp(_ sender: Any) { + guard let surface = self.surface else { return } + ghostty_surface_split(surface, GHOSTTY_SPLIT_DIRECTION_UP) + } + @objc func resetTerminal(_ sender: Any) { guard let surface = self.surface else { return } let action = "reset" @@ -1209,6 +1252,10 @@ extension Ghostty { AppDelegate.logger.warning("action failed action=\(action)") } } + + @IBAction func changeTitle(_ sender: Any) { + promptTitle() + } /// Show a user notification and associate it with this surface func showUserNotification(title: String, body: String) { diff --git a/macos/Sources/Helpers/Fullscreen.swift b/macos/Sources/Helpers/Fullscreen.swift index 320eca013..59865fc9e 100644 --- a/macos/Sources/Helpers/Fullscreen.swift +++ b/macos/Sources/Helpers/Fullscreen.swift @@ -6,6 +6,7 @@ enum FullscreenMode { case native case nonNative case nonNativeVisibleMenu + case nonNativePaddedNotch /// Initializes the fullscreen style implementation for the mode. This will not toggle any /// fullscreen properties. This may fail if the window isn't configured properly for a given @@ -20,6 +21,9 @@ enum FullscreenMode { case .nonNativeVisibleMenu: return NonNativeFullscreenVisibleMenu(window) + + case .nonNativePaddedNotch: + return NonNativeFullscreenPaddedNotch(window) } } } @@ -141,6 +145,7 @@ class NonNativeFullscreen: FullscreenBase, FullscreenStyle { struct Properties { var hideMenu: Bool = true + var paddedNotch: Bool = false } private var savedState: SavedState? @@ -278,6 +283,9 @@ class NonNativeFullscreen: FullscreenBase, FullscreenStyle { // put an #available check, but it was in a bug fix release so I think // if a bug is reported to Ghostty we can just advise the user to // update. + } else if (properties.paddedNotch) { + // We are hiding the menu, we may need to avoid the notch. + frame.size.height -= screen.safeAreaInsets.top } return frame @@ -349,3 +357,7 @@ class NonNativeFullscreen: FullscreenBase, FullscreenStyle { class NonNativeFullscreenVisibleMenu: NonNativeFullscreen { override var properties: Properties { Properties(hideMenu: false) } } + +class NonNativeFullscreenPaddedNotch: NonNativeFullscreen { + override var properties: Properties { Properties(paddedNotch: true) } +} diff --git a/macos/Sources/Helpers/LastWindowPosition.swift b/macos/Sources/Helpers/LastWindowPosition.swift new file mode 100644 index 000000000..a0dfa90dd --- /dev/null +++ b/macos/Sources/Helpers/LastWindowPosition.swift @@ -0,0 +1,34 @@ +import Cocoa + +/// Manages the persistence and restoration of window positions across app launches. +class LastWindowPosition { + static let shared = LastWindowPosition() + + private let positionKey = "NSWindowLastPosition" + + func save(_ window: NSWindow) { + let origin = window.frame.origin + let point = [origin.x, origin.y] + UserDefaults.standard.set(point, forKey: positionKey) + } + + func restore(_ window: NSWindow) -> Bool { + guard let points = UserDefaults.standard.array(forKey: positionKey) as? [Double], + points.count == 2 else { return false } + + let lastPosition = CGPoint(x: points[0], y: points[1]) + + guard let screen = window.screen ?? NSScreen.main else { return false } + let visibleFrame = screen.visibleFrame + + var newFrame = window.frame + newFrame.origin = lastPosition + if !visibleFrame.contains(newFrame.origin) { + newFrame.origin.x = max(visibleFrame.minX, min(visibleFrame.maxX - newFrame.width, newFrame.origin.x)) + newFrame.origin.y = max(visibleFrame.minY, min(visibleFrame.maxY - newFrame.height, newFrame.origin.y)) + } + + window.setFrame(newFrame, display: true) + return true + } +} diff --git a/nix/build-support/check-zig-cache-hash.sh b/nix/build-support/check-zig-cache-hash.sh deleted file mode 100755 index 49ea29ffb..000000000 --- a/nix/build-support/check-zig-cache-hash.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env bash - -# Nothing in this script should fail. -set -e - -CACHE_HASH_FILE="$(realpath "$(dirname "$0")/../zigCacheHash.nix")" - -help() { - echo "" - echo "To fix, please (manually) re-run the script from the repository root," - echo "commit, and push the update:" - echo "" - echo " ./nix/build-support/check-zig-cache-hash.sh --update" - echo " git add nix/zigCacheHash.nix" - echo " git commit -m \"nix: update Zig cache hash\"" - echo " git push" - echo "" -} - -if [ -f "${CACHE_HASH_FILE}" ]; then - OLD_CACHE_HASH="$(nix eval --raw --file "${CACHE_HASH_FILE}")" -elif [ "$1" != "--update" ]; then - echo -e "\nERROR: Zig cache hash file missing." - help - exit 1 -fi - -ZIG_GLOBAL_CACHE_DIR="$(mktemp --directory --suffix nix-zig-cache)" -export ZIG_GLOBAL_CACHE_DIR - -# This is not 100% necessary in CI but is helpful when running locally to keep -# a local workstation clean. -trap 'rm -rf "${ZIG_GLOBAL_CACHE_DIR}"' EXIT - -# Run Zig and download the cache to the temporary directory. - -sh ./nix/build-support/fetch-zig-cache.sh - -# Now, calculate the hash. -ZIG_CACHE_HASH="sha256-$(nix-hash --type sha256 --to-base64 "$(nix-hash --type sha256 "${ZIG_GLOBAL_CACHE_DIR}")")" - -if [ "${OLD_CACHE_HASH}" == "${ZIG_CACHE_HASH}" ]; then - echo -e "\nOK: Zig cache store hash unchanged." - exit 0 -elif [ "$1" != "--update" ]; then - echo -e "\nERROR: The Zig cache store hash has updated." - echo "" - echo " * Old hash: ${OLD_CACHE_HASH}" - echo " * New hash: ${ZIG_CACHE_HASH}" - help - exit 1 -else - echo -e "\nNew Zig cache store hash: ${ZIG_CACHE_HASH}" -fi - -# Write out the cache file -cat > "${CACHE_HASH_FILE}" < "$WORK_DIR/build.zig.zon.nix" +alejandra --quiet "$WORK_DIR/build.zig.zon.nix" + +NEW_HASH=$(sha512sum "$WORK_DIR/build.zig.zon.nix" | awk '{print $1}') + +if [ "${OLD_HASH}" == "${NEW_HASH}" ]; then + echo -e "\nOK: build.zig.zon.nix unchanged." + exit 0 +elif [ "$1" != "--update" ]; then + echo -e "\nERROR: build.zig.zon.nix needs to be updated." + echo "" + echo " * Old hash: ${OLD_HASH}" + echo " * New hash: ${NEW_HASH}" + help + exit 1 +else + jq -r '.[] .url' "$BUILD_ZIG_ZON_LOCK" | sort > "$BUILD_ZIG_ZON_TXT" + mv "$WORK_DIR/build.zig.zon.nix" "$BUILD_ZIG_ZON_NIX" + echo -e "\nOK: build.zig.zon.nix updated." + exit 0 +fi + diff --git a/nix/build-support/fetch-zig-cache.sh b/nix/build-support/fetch-zig-cache.sh index 56b94e35d..8ff00cad0 100755 --- a/nix/build-support/fetch-zig-cache.sh +++ b/nix/build-support/fetch-zig-cache.sh @@ -1,32 +1,13 @@ #!/bin/sh -set -e - -# Because Zig does not fetch recursive dependencies when you run `zig build -# --fetch` (see https://github.com/ziglang/zig/issues/20976) we need to do some -# extra work to fetch everything that we actually need to build without Internet -# access (such as when building a Nix package). +# NOTE THIS IS A TEMPORARY SCRIPT TO SUPPORT PACKAGE MAINTAINERS. # -# An example of this happening: +# A future Zig version will hopefully fix the issue where +# `zig build --fetch` doesn't fetch transitive dependencies[1]. When that +# is resolved, we won't need any special machinery for the general use case +# at all and packagers can just use `zig build --fetch`. # -# error: builder for '/nix/store/cx8qcwrhjmjxik2547fw99v5j6np5san-ghostty-0.1.0.drv' failed with exit code 1; -# la/build/tmp.xgHOheUF7V/p/12208cfdda4d5fdbc81b0c44b82e4d6dba2d4a86bff644a153e026fdfc80f8469133/build.zig.zon:7:20: error: unable to discover remote git server capabilities: TemporaryNameServerFailure -# > .url = "git+https://github.com/zigimg/zigimg#3a667bdb3d7f0955a5a51c8468eac83210c1439e", -# > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# > /build/tmp.xgHOheUF7V/p/12208cfdda4d5fdbc81b0c44b82e4d6dba2d4a86bff644a153e026fdfc80f8469133/build.zig.zon:16:20: error: unable to discover remote git server capabilities: TemporaryNameServerFailure -# > .url = "git+https://github.com/mitchellh/libxev#f6a672a78436d8efee1aa847a43a900ad773618b", -# > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# > -# For full logs, run 'nix log /nix/store/cx8qcwrhjmjxik2547fw99v5j6np5san-ghostty-0.1.0.drv'. -# -# To update this script, add any failing URLs with a line like this: -# -# zig fetch -# -# Periodically old URLs may need to be cleaned out. -# -# Hopefully when the Zig issue is fixed this script can be eliminated in favor -# of a plain `zig build --fetch`. +# [1]: https://github.com/ziglang/zig/issues/20976 if [ -z ${ZIG_GLOBAL_CACHE_DIR+x} ] then @@ -34,6 +15,13 @@ then exit 1 fi -zig build --fetch -zig fetch git+https://github.com/zigimg/zigimg#3a667bdb3d7f0955a5a51c8468eac83210c1439e -zig fetch git+https://github.com/mitchellh/libxev#f6a672a78436d8efee1aa847a43a900ad773618b +# Go through each line of our build.zig.zon.txt and fetch it. +SCRIPT_PATH="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)" +ZON_TXT_FILE="$SCRIPT_PATH/../../build.zig.zon.txt" +while IFS= read -r url; do + echo "Fetching: $url" + zig fetch "$url" >/dev/null 2>&1 || { + echo "Failed to fetch: $url" >&2 + exit 1 + } +done < "$ZON_TXT_FILE" diff --git a/nix/build-support/update-mirror.sh b/nix/build-support/update-mirror.sh new file mode 100755 index 000000000..35fd841e2 --- /dev/null +++ b/nix/build-support/update-mirror.sh @@ -0,0 +1,30 @@ +#!/bin/sh +# +# This script generates a directory that can be uploaded to blob +# storage to mirror our dependencies. The dependencies are unmodified +# so their checksum and content hashes will match. + +set -e # Exit immediately if a command exits with a non-zero status + +SCRIPT_PATH="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)" +INPUT_FILE="$SCRIPT_PATH/../../build.zig.zon2json-lock" +OUTPUT_DIR="blob" + +# Ensure the output directory exists +mkdir -p "$OUTPUT_DIR" + +# Use jq to iterate over the JSON and download files +jq -r 'to_entries[] | "\(.key) \(.value.name) \(.value.url)"' "$INPUT_FILE" | while read -r key name url; do + # Skip URLs that don't start with http(s). They aren't necessary for + # our mirror. + if ! echo "$url" | grep -Eq "^https?://"; then + continue + fi + + # Extract the file extension from the URL + extension=$(echo "$url" | grep -oE '\.[a-z0-9]+(\.[a-z0-9]+)?$') + + filename="${name}-${key}${extension}" + echo "$url -> $filename" + curl -L -o "$OUTPUT_DIR/$filename" "$url" +done diff --git a/nix/devShell.nix b/nix/devShell.nix index c52afb6c0..66f259656 100644 --- a/nix/devShell.nix +++ b/nix/devShell.nix @@ -14,6 +14,7 @@ python3, qemu, scdoc, + snapcraft, valgrind, #, vulkan-loader # unused vttest, @@ -30,7 +31,9 @@ glib, glslang, gtk4, + gobject-introspection, libadwaita, + blueprint-compiler, adwaita-icon-theme, hicolor-icon-theme, harfbuzz, @@ -47,6 +50,7 @@ simdutf, zlib, alejandra, + jq, minisign, pandoc, hyperfine, @@ -54,6 +58,8 @@ wayland, wayland-scanner, wayland-protocols, + zig2nix, + system, }: let # See package.nix. Keep in sync. rpathLibs = @@ -83,6 +89,7 @@ libadwaita gtk4 glib + gobject-introspection wayland ]; in @@ -92,6 +99,7 @@ in packages = [ # For builds + jq llvmPackages_latest.llvm minisign ncurses @@ -100,6 +108,7 @@ in scdoc zig zip + zig2nix.packages.${system}.zon2nix # For web and wasm stuff nodejs @@ -129,6 +138,7 @@ in qemu gdb + snapcraft valgrind wraptest @@ -154,9 +164,11 @@ in libXrandr # Only needed for GTK builds + blueprint-compiler libadwaita gtk4 glib + gobject-introspection wayland wayland-scanner wayland-protocols diff --git a/nix/package.nix b/nix/package.nix index ceb6a7688..45f189cf5 100644 --- a/nix/package.nix +++ b/nix/package.nix @@ -2,6 +2,7 @@ lib, stdenv, bzip2, + callPackage, expat, fontconfig, freetype, @@ -12,7 +13,9 @@ libGL, glib, gtk4, + gobject-introspection, libadwaita, + blueprint-compiler, wrapGAppsHook4, gsettings-desktop-schemas, git, @@ -42,80 +45,34 @@ zig_hook = zig_0_13.hook.overrideAttrs { zig_default_flags = "-Dcpu=baseline -Doptimize=${optimize} --color off"; }; - - # We limit source like this to try and reduce the amount of rebuilds as possible - # thus we only provide the source that is needed for the build - # - # NOTE: as of the current moment only linux files are provided, - # since darwin support is not finished - src = lib.fileset.toSource { - root = ../.; - fileset = lib.fileset.intersection (lib.fileset.fromSource (lib.sources.cleanSource ../.)) ( - lib.fileset.unions [ - ../dist/linux - ../images - ../include - ../pkg - ../src - ../vendor - ../build.zig - ../build.zig.zon - ./build-support/fetch-zig-cache.sh - ] - ); - }; - - # This hash is the computation of the zigCache fixed-output derivation. This - # allows us to use remote package dependencies without breaking the sandbox. - # - # This will need updating whenever dependencies get updated (e.g. changes are - # made to zig.build.zon). If you see that the main build is trying to reach - # out to the internet and failing, this is likely the cause. Change this - # value back to lib.fakeHash, and re-run. The build failure should emit the - # updated hash, which of course, should be validated before updating here. - # - # (It's also possible that you might see a hash mismatch - without the - # network errors - if you don't have a previous instance of the cache - # derivation in your store already. If so, just update the value as above.) - zigCacheHash = import ./zigCacheHash.nix; - - zigCache = stdenv.mkDerivation { - inherit src; - name = "ghostty-cache"; - nativeBuildInputs = [ - git - zig_hook - ]; - - dontConfigure = true; - dontUseZigBuild = true; - dontUseZigInstall = true; - dontFixup = true; - - buildPhase = '' - runHook preBuild - - sh ./nix/build-support/fetch-zig-cache.sh - - runHook postBuild - ''; - - installPhase = '' - runHook preInstall - - cp -r --reflink=auto $ZIG_GLOBAL_CACHE_DIR $out - - runHook postInstall - ''; - - outputHashMode = "recursive"; - outputHash = zigCacheHash; - }; in stdenv.mkDerivation (finalAttrs: { pname = "ghostty"; - version = "1.1.1"; - inherit src; + version = "1.1.3"; + + # We limit source like this to try and reduce the amount of rebuilds as possible + # thus we only provide the source that is needed for the build + # + # NOTE: as of the current moment only linux files are provided, + # since darwin support is not finished + src = lib.fileset.toSource { + root = ../.; + fileset = lib.fileset.intersection (lib.fileset.fromSource (lib.sources.cleanSource ../.)) ( + lib.fileset.unions [ + ../dist/linux + ../images + ../include + ../pkg + ../src + ../vendor + ../build.zig + ../build.zig.zon + ../build.zig.zon.nix + ] + ); + }; + + deps = callPackage ../build.zig.zon.nix {name = "ghostty-cache-${finalAttrs.version}";}; nativeBuildInputs = [ @@ -124,7 +81,9 @@ in pandoc pkg-config zig_hook + gobject-introspection wrapGAppsHook4 + blueprint-compiler ] ++ lib.optionals enableWayland [ wayland-scanner @@ -164,7 +123,7 @@ in zigBuildFlags = [ "--system" - "${zigCache}/p" + "${finalAttrs.deps}" "-Dversion-string=${finalAttrs.version}-${revision}-nix" "-Dgtk-x11=${lib.boolToString enableX11}" "-Dgtk-wayland=${lib.boolToString enableWayland}" diff --git a/nix/zigCacheHash.nix b/nix/zigCacheHash.nix index 975605049..12f855e5f 100644 --- a/nix/zigCacheHash.nix +++ b/nix/zigCacheHash.nix @@ -1,3 +1,3 @@ # This file is auto-generated! check build-support/check-zig-cache-hash.sh for # more details. -"sha256-I7uuv0MkaW3gWAw6NHci+II42OfM7NdtKh2Npw2pTis=" +"sha256-S8kS+gO17dl9LJGKL1+kgDUre+vPTmdTvXzgc585Fl8=" diff --git a/pkg/cimgui/build.zig.zon b/pkg/cimgui/build.zig.zon index 2f2c9cfa0..d5d90b132 100644 --- a/pkg/cimgui/build.zig.zon +++ b/pkg/cimgui/build.zig.zon @@ -6,7 +6,8 @@ // This should be kept in sync with the submodule in the cimgui source // code in ./vendor/ to be safe that they're compatible. .imgui = .{ - .url = "https://github.com/ocornut/imgui/archive/e391fe2e66eb1c96b1624ae8444dc64c23146ef4.tar.gz", + // ocornut/imgui + .url = "https://deps.files.ghostty.org/imgui-1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402.tar.gz", .hash = "1220bc6b9daceaf7c8c60f3c3998058045ba0c5c5f48ae255ff97776d9cd8bfc6402", }, diff --git a/pkg/freetype/build.zig.zon b/pkg/freetype/build.zig.zon index 5c6538fd5..581666dd9 100644 --- a/pkg/freetype/build.zig.zon +++ b/pkg/freetype/build.zig.zon @@ -3,8 +3,9 @@ .version = "2.13.2", .paths = .{""}, .dependencies = .{ + // freetype/freetype .freetype = .{ - .url = "https://github.com/freetype/freetype/archive/refs/tags/VER-2-13-2.tar.gz", + .url = "https://deps.files.ghostty.org/freetype-1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d.tar.gz", .hash = "1220b81f6ecfb3fd222f76cf9106fecfa6554ab07ec7fdc4124b9bb063ae2adf969d", }, diff --git a/pkg/glslang/build.zig.zon b/pkg/glslang/build.zig.zon index f80552d4f..091276502 100644 --- a/pkg/glslang/build.zig.zon +++ b/pkg/glslang/build.zig.zon @@ -3,8 +3,9 @@ .version = "14.2.0", .paths = .{""}, .dependencies = .{ + // KhronosGroup/glslang .glslang = .{ - .url = "https://github.com/KhronosGroup/glslang/archive/refs/tags/14.2.0.tar.gz", + .url = "https://deps.files.ghostty.org/glslang-12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1.tar.gz", .hash = "12201278a1a05c0ce0b6eb6026c65cd3e9247aa041b1c260324bf29cee559dd23ba1", }, diff --git a/pkg/harfbuzz/build.zig.zon b/pkg/harfbuzz/build.zig.zon index dc036f09d..41f2b4e4f 100644 --- a/pkg/harfbuzz/build.zig.zon +++ b/pkg/harfbuzz/build.zig.zon @@ -3,8 +3,9 @@ .version = "8.4.0", .paths = .{""}, .dependencies = .{ + // harfbuzz/harfbuzz .harfbuzz = .{ - .url = "https://github.com/harfbuzz/harfbuzz/archive/refs/tags/8.4.0.tar.gz", + .url = "https://deps.files.ghostty.org/harfbuzz-1220b8588f106c996af10249bfa092c6fb2f35fbacb1505ef477a0b04a7dd1063122.tar.gz", .hash = "1220b8588f106c996af10249bfa092c6fb2f35fbacb1505ef477a0b04a7dd1063122", }, diff --git a/pkg/highway/build.zig.zon b/pkg/highway/build.zig.zon index c8bc405f8..da631f93d 100644 --- a/pkg/highway/build.zig.zon +++ b/pkg/highway/build.zig.zon @@ -3,8 +3,9 @@ .version = "1.1.0", .paths = .{""}, .dependencies = .{ + // google/highway .highway = .{ - .url = "https://github.com/google/highway/archive/refs/tags/1.1.0.tar.gz", + .url = "https://deps.files.ghostty.org/highway-12205c83b8311a24b1d5ae6d21640df04f4b0726e314337c043cde1432758cbe165b.tar.gz", .hash = "12205c83b8311a24b1d5ae6d21640df04f4b0726e314337c043cde1432758cbe165b", }, diff --git a/pkg/libpng/build.zig.zon b/pkg/libpng/build.zig.zon index dc9bd3712..be37d8c09 100644 --- a/pkg/libpng/build.zig.zon +++ b/pkg/libpng/build.zig.zon @@ -3,8 +3,9 @@ .version = "1.6.43", .paths = .{""}, .dependencies = .{ + // glennrp/libpng .libpng = .{ - .url = "https://github.com/glennrp/libpng/archive/refs/tags/v1.6.43.tar.gz", + .url = "https://deps.files.ghostty.org/libpng-1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66.tar.gz", .hash = "1220aa013f0c83da3fb64ea6d327f9173fa008d10e28bc9349eac3463457723b1c66", }, diff --git a/pkg/oniguruma/build.zig.zon b/pkg/oniguruma/build.zig.zon index 2120f77ae..b1ba96dc8 100644 --- a/pkg/oniguruma/build.zig.zon +++ b/pkg/oniguruma/build.zig.zon @@ -3,8 +3,9 @@ .version = "6.9.9", .paths = .{""}, .dependencies = .{ + // kkos/oniguruma .oniguruma = .{ - .url = "https://github.com/kkos/oniguruma/archive/refs/tags/v6.9.9.tar.gz", + .url = "https://deps.files.ghostty.org/oniguruma-1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb.tar.gz", .hash = "1220c15e72eadd0d9085a8af134904d9a0f5dfcbed5f606ad60edc60ebeccd9706bb", }, diff --git a/pkg/sentry/build.zig.zon b/pkg/sentry/build.zig.zon index 385cd69d8..8d1162cb4 100644 --- a/pkg/sentry/build.zig.zon +++ b/pkg/sentry/build.zig.zon @@ -3,8 +3,9 @@ .version = "0.7.8", .paths = .{""}, .dependencies = .{ + // getsentry/sentry-native .sentry = .{ - .url = "https://github.com/getsentry/sentry-native/archive/refs/tags/0.7.8.tar.gz", + .url = "https://deps.files.ghostty.org/sentry-1220446be831adcca918167647c06c7b825849fa3fba5f22da394667974537a9c77e.tar.gz", .hash = "1220446be831adcca918167647c06c7b825849fa3fba5f22da394667974537a9c77e", }, diff --git a/pkg/spirv-cross/build.zig.zon b/pkg/spirv-cross/build.zig.zon index 39fcac529..dedf5e964 100644 --- a/pkg/spirv-cross/build.zig.zon +++ b/pkg/spirv-cross/build.zig.zon @@ -3,8 +3,9 @@ .version = "13.1.1", .paths = .{""}, .dependencies = .{ + // KhronosGroup/SPIRV-Cross .spirv_cross = .{ - .url = "https://github.com/KhronosGroup/SPIRV-Cross/archive/476f384eb7d9e48613c45179e502a15ab95b6b49.tar.gz", + .url = "https://deps.files.ghostty.org/spirv_cross-1220fb3b5586e8be67bc3feb34cbe749cf42a60d628d2953632c2f8141302748c8da.tar.gz", .hash = "1220fb3b5586e8be67bc3feb34cbe749cf42a60d628d2953632c2f8141302748c8da", }, diff --git a/pkg/utfcpp/build.zig.zon b/pkg/utfcpp/build.zig.zon index e56d77f19..795a02749 100644 --- a/pkg/utfcpp/build.zig.zon +++ b/pkg/utfcpp/build.zig.zon @@ -3,8 +3,9 @@ .version = "4.0.5", .paths = .{""}, .dependencies = .{ + // nemtrif/utfcpp .utfcpp = .{ - .url = "https://github.com/nemtrif/utfcpp/archive/refs/tags/v4.0.5.tar.gz", + .url = "https://deps.files.ghostty.org/utfcpp-1220d4d18426ca72fc2b7e56ce47273149815501d0d2395c2a98c726b31ba931e641.tar.gz", .hash = "1220d4d18426ca72fc2b7e56ce47273149815501d0d2395c2a98c726b31ba931e641", }, diff --git a/pkg/wuffs/build.zig.zon b/pkg/wuffs/build.zig.zon index d84d6957e..caa28f1c6 100644 --- a/pkg/wuffs/build.zig.zon +++ b/pkg/wuffs/build.zig.zon @@ -2,13 +2,15 @@ .name = "wuffs", .version = "0.0.0", .dependencies = .{ + // google/wuffs .wuffs = .{ - .url = "https://github.com/google/wuffs/archive/refs/tags/v0.4.0-alpha.9.tar.gz", + .url = "https://deps.files.ghostty.org/wuffs-122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd.tar.gz", .hash = "122037b39d577ec2db3fd7b2130e7b69ef6cc1807d68607a7c232c958315d381b5cd", }, + // make-github-pseudonymous-again/pixels .pixels = .{ - .url = "git+https://github.com/make-github-pseudonymous-again/pixels?ref=main#d843c2714d32e15b48b8d7eeb480295af537f877", + .url = "https://deps.files.ghostty.org/pixels-12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806.tar.gz", .hash = "12207ff340169c7d40c570b4b6a97db614fe47e0d83b5801a932dcd44917424c8806", }, diff --git a/pkg/zlib/build.zig.zon b/pkg/zlib/build.zig.zon index 94aa184de..43176352a 100644 --- a/pkg/zlib/build.zig.zon +++ b/pkg/zlib/build.zig.zon @@ -3,8 +3,9 @@ .version = "1.3.1", .paths = .{""}, .dependencies = .{ + // madler/zlib .zlib = .{ - .url = "https://github.com/madler/zlib/archive/refs/tags/v1.3.1.tar.gz", + .url = "https://deps.files.ghostty.org/zlib-1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb.tar.gz", .hash = "1220fed0c74e1019b3ee29edae2051788b080cd96e90d56836eea857b0b966742efb", }, diff --git a/snap/local/launcher b/snap/local/launcher new file mode 100755 index 000000000..d9050f43b --- /dev/null +++ b/snap/local/launcher @@ -0,0 +1,51 @@ +#!/bin/sh +set -e + +# Set these to reasonable defaults if not already set +if [ -z "$XDG_CONFIG_HOME" ]; then + export XDG_CONFIG_HOME="$SNAP_REAL_HOME/.config" +fi + +if [ -z "$XDG_CACHE_HOME" ]; then + export XDG_CACHE_HOME="$SNAP_REAL_HOME/.cache" +fi + +if [ -z "$XDG_DATA_HOME" ]; then + export XDG_DATA_HOME="$SNAP_REAL_HOME/.local/share" +fi + +export HOME="$SNAP_REAL_HOME" + +if [ "$SNAP_ARCH" = "amd64" ]; then + ARCH="x86_64-linux-gnu" +elif [ "$SNAP_ARCH" = "arm64" ]; then + ARCH="aarch64-linux-gnu" +else + ARCH="$SNAP_ARCH-linux-gnu" +fi + +export LD_LIBRARY_PATH=${SNAP}/usr/lib/${ARCH}:${SNAP}/usr/lib/${ARCH}/vdpau:${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:} +export LIBGL_DRIVERS_PATH=${LIBGL_DRIVERS_PATH:+$LIBGL_DRIVERS_PATH:}${SNAP}/usr/lib/${ARCH}/dri/ +export LIBVA_DRIVERS_PATH=${LIBVA_DRIVERS_PATH:+$LIBVA_DRIVERS_PATH:}${SNAP}/usr/lib/${ARCH}/dri/ +export __EGL_VENDOR_LIBRARY_DIRS=${__EGL_VENDOR_LIBRARY_DIRS:+$__EGL_VENDOR_LIBRARY_DIRS:}${SNAP}/usr/share/glvnd/egl_vendor.d +export __EGL_EXTERNAL_PLATFORM_CONFIG_DIRS=${__EGL_EXTERNAL_PLATFORM_CONFIG_DIRS:+$__EGL_EXTERNAL_PLATFORM_CONFIG_DIRS:}${SNAP}/usr/share/egl/egl_external_platform.d +export DRIRC_CONFIGDIR=${SNAP}/usr/share/drirc.d +export VK_LAYER_PATH=${VK_LAYER_PATH:+$VK_LAYER_PATH:}${SNAP}/usr/share/vulkan/implicit_layer.d/:${SNAP}/usr/share/vulkan/explicit_layer.d/ +export XDG_DATA_DIRS=${XDG_DATA_DIRS:+$XDG_DATA_DIRS:}${SNAP}/usr/share +export XLOCALEDIR="${SNAP}/usr/share/X11/locale" +export GDK_PIXBUF_MODULEDIR="$SNAP/usr/lib/$ARCH/gdk-pixbuf-2.0/2.10.0/loaders" +export GTK_PATH="$SNAP/usr/lib/$ARCH/gtk-4.0" + +if [ "${__NV_PRIME_RENDER_OFFLOAD:-}" != 1 ]; then + # Prevent picking VA-API (Intel/AMD) over NVIDIA VDPAU + # https://download.nvidia.com/XFree86/Linux-x86_64/510.54/README/primerenderoffload.html#configureapplications + export LIBVA_DRIVERS_PATH +fi + +# Unset all SNAP specific environment variables to keep them from leaking +# into other snaps that might get executed from within the shell +for var in $(printenv | grep SNAP_ | cut -d= -f1); do + unset $var +done + +exec "$@" diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml new file mode 100644 index 000000000..9ef2f5cc4 --- /dev/null +++ b/snap/snapcraft.yaml @@ -0,0 +1,139 @@ +name: ghostty +base: core24 +summary: A terminal emulator +description: | + Ghostty is a fast, feature-rich, and cross-platform terminal emulator that + uses platform-native UI and GPU acceleration. +grade: stable +confinement: classic +contact: https://github.com/ghostty-org/ghostty/discussions +issues: https://github.com/ghostty-org/ghostty/issues +website: https://ghostty.org +license: MIT +icon: images/icons/icon_512.png +adopt-info: ghostty + +platforms: + amd64: + arm64: + +apps: + ghostty: + command: bin/ghostty + command-chain: [bin/launcher] + completer: share/bash-completion/completions/ghostty.bash + desktop: share/applications/com.mitchellh.ghostty.desktop + #refresh-mode: ignore-running # Store rejects this, needs fix in review-tools + environment: + PATH: /snap/ghostty/current/bin:/snap/ghostty/current/usr/bin:$PATH + LC_ALL: C.UTF-8 + GHOSTTY_RESOURCES_DIR: /snap/ghostty/current/share/ghostty + +parts: + launcher: + plugin: dump + source: snap/local + source-type: local + organize: + launcher: bin/ + + zig: + plugin: nil + build-packages: + - curl + override-pull: | + set -ex + case "$CRAFT_ARCH_BUILD_FOR" in + amd64) arch=x86_64 ;; + arm64) arch=aarch64 ;; + *) arch="" ;; + esac + + rm -rf $CRAFT_PART_SRC/* + + if [[ -n $arch ]]; then + curl -LO --retry-connrefused --retry 10 https://ziglang.org/download/0.13.0/zig-linux-$arch-0.13.0.tar.xz + else + echo "Unsupported arch" + exit 1 + fi + + tar xf zig-lin*xz + rm -f *xz + mv zig-linux*/* . + prime: + - -* + + ghostty: + source: . + after: [zig] + plugin: nil + build-attributes: [enable-patchelf] + build-packages: + - libgtk-4-dev + - libadwaita-1-dev + - git + - patchelf + override-build: | + craftctl set version=$(git describe --abbrev=8) + $CRAFT_PART_SRC/../../zig/src/zig build -Dpatch-rpath=\$ORIGIN/../usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:/snap/core24/current/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR -Doptimize=ReleaseFast + cp -rp zig-out/* $CRAFT_PART_INSTALL/ + sed -i 's|Icon=com.mitchellh.ghostty|Icon=/snap/ghostty/current/share/icons/hicolor/512x512/apps/com.mitchellh.ghostty.png|g' $CRAFT_PART_INSTALL/share/applications/com.mitchellh.ghostty.desktop + + libs: + plugin: nil + build-attributes: [enable-patchelf] + stage-packages: + - libadwaita-1-0 + - libglib2.0-0t64 + - libgtk-4-1 + - libgtk-4-media-gstreamer + - ibus-gtk4 + - libpciaccess0 + - libtinfo6 + - libedit2 + - libelf1t64 + - libsensors5 + - libllvm17 + - libunistring5 + - librsvg2-2 + - on amd64: + [ + i965-va-driver, + libdrm-intel1, + libdrm-nouveau2, + libdrm-amdgpu1, + libdrm-radeon1, + ] + stage: + # The libraries in dri need no-patchelf, so they come from the mesa-unpatched part + - -usr/lib/*/dri + + mesa: + plugin: nil + build-attributes: [enable-patchelf] + stage-packages: + - libglu1-mesa + - libgl1-mesa-dri + - libegl-mesa0 + - libegl1 + - libglx-mesa0 + - mesa-libgallium + stage: + # The libraries in dri need no-patchelf, so they come from the mesa-unpatched part + - usr/lib/*/*.so* + - usr/lib/*/dri/libdril_dri.so + - -usr/lib/*/libgallium*so + - -usr/lib/*/dri + + mesa-gl1-dri: + plugin: nil + stage-packages: + - libgl1-mesa-dri + build-attributes: [no-patchelf] + stage: + # Only the libraries in dri need to not be patched, the rest come from the mesa part + # Otherwise snapcraft may strip the build ID and cause the driver to crash + - usr/lib/*/libgallium*so + - -usr/lib/*/dri/libdril_dri.so + - usr/lib/*/dri diff --git a/src/App.zig b/src/App.zig index a6b54db23..15859d115 100644 --- a/src/App.zig +++ b/src/App.zig @@ -161,7 +161,7 @@ pub fn updateConfig(self: *App, rt_app: *apprt.App, config: *const Config) !void const applied: *const configpkg.Config = if (applied_) |*c| c else config; // Notify the apprt that the app has changed configuration. - try rt_app.performAction( + _ = try rt_app.performAction( .app, .config_change, .{ .config = applied }, @@ -180,7 +180,7 @@ pub fn addSurface( // Since we have non-zero surfaces, we can cancel the quit timer. // It is up to the apprt if there is a quit timer at all and if it // should be canceled. - rt_surface.app.performAction( + _ = rt_surface.app.performAction( .app, .quit_timer, .stop, @@ -214,7 +214,7 @@ pub fn deleteSurface(self: *App, rt_surface: *apprt.Surface) void { // If we have no surfaces, we can start the quit timer. It is up to the // apprt to determine if this is necessary. - if (self.surfaces.items.len == 0) rt_surface.app.performAction( + if (self.surfaces.items.len == 0) _ = rt_surface.app.performAction( .app, .quit_timer, .start, @@ -294,7 +294,7 @@ pub fn newWindow(self: *App, rt_app: *apprt.App, msg: Message.NewWindow) !void { break :target .app; }; - try rt_app.performAction( + _ = try rt_app.performAction( target, .new_window, {}, @@ -419,7 +419,7 @@ pub fn colorSchemeEvent( // Request our configuration be reloaded because the new scheme may // impact the colors of the app. - try rt_app.performAction( + _ = try rt_app.performAction( .app, .reload_config, .{ .soft = true }, @@ -437,13 +437,13 @@ pub fn performAction( switch (action) { .unbind => unreachable, .ignore => {}, - .quit => try rt_app.performAction(.app, .quit, {}), - .new_window => try self.newWindow(rt_app, .{ .parent = null }), - .open_config => try rt_app.performAction(.app, .open_config, {}), - .reload_config => try rt_app.performAction(.app, .reload_config, .{}), - .close_all_windows => try rt_app.performAction(.app, .close_all_windows, {}), - .toggle_quick_terminal => try rt_app.performAction(.app, .toggle_quick_terminal, {}), - .toggle_visibility => try rt_app.performAction(.app, .toggle_visibility, {}), + .quit => _ = try rt_app.performAction(.app, .quit, {}), + .new_window => _ = try self.newWindow(rt_app, .{ .parent = null }), + .open_config => _ = try rt_app.performAction(.app, .open_config, {}), + .reload_config => _ = try rt_app.performAction(.app, .reload_config, .{}), + .close_all_windows => _ = try rt_app.performAction(.app, .close_all_windows, {}), + .toggle_quick_terminal => _ = try rt_app.performAction(.app, .toggle_quick_terminal, {}), + .toggle_visibility => _ = try rt_app.performAction(.app, .toggle_visibility, {}), } } diff --git a/src/Surface.zig b/src/Surface.zig index d9a985aa7..98c344927 100644 --- a/src/Surface.zig +++ b/src/Surface.zig @@ -519,9 +519,19 @@ pub fn init( // This separate block ({}) is important because our errdefers must // be scoped here to be valid. { + var env = rt_surface.defaultTermioEnv() catch |err| env: { + // If an error occurs, we don't want to block surface startup. + log.warn("error getting env map for surface err={}", .{err}); + break :env internal_os.getEnvMap(alloc) catch + std.process.EnvMap.init(alloc); + }; + errdefer env.deinit(); + // Initialize our IO backend var io_exec = try termio.Exec.init(alloc, .{ .command = command, + .env = env, + .env_override = config.env, .shell_integration = config.@"shell-integration", .shell_integration_features = config.@"shell-integration-features", .working_directory = config.@"working-directory", @@ -561,7 +571,7 @@ pub fn init( errdefer self.io.deinit(); // Report initial cell size on surface creation - try rt_app.performAction( + _ = try rt_app.performAction( .{ .surface = self }, .cell_size, .{ .width = size.cell.width, .height = size.cell.height }, @@ -573,7 +583,7 @@ pub fn init( const min_window_width_cells: u32 = 10; const min_window_height_cells: u32 = 4; - try rt_app.performAction( + _ = try rt_app.performAction( .{ .surface = self }, .size_limit, .{ @@ -637,7 +647,7 @@ pub fn init( size.padding.top + size.padding.bottom; - rt_app.performAction( + _ = rt_app.performAction( .{ .surface = self }, .initial_size, .{ .width = final_width, .height = final_height }, @@ -649,7 +659,7 @@ pub fn init( } if (config.title) |title| { - try rt_app.performAction( + _ = try rt_app.performAction( .{ .surface = self }, .set_title, .{ .title = title }, @@ -670,7 +680,7 @@ pub fn init( break :xdg; }; defer alloc.free(title); - try rt_app.performAction( + _ = try rt_app.performAction( .{ .surface = self }, .set_title, .{ .title = title }, @@ -823,7 +833,7 @@ pub fn handleMessage(self: *Surface, msg: Message) !void { // We know that our title should end in 0. const slice = std.mem.sliceTo(@as([*:0]const u8, @ptrCast(v)), 0); log.debug("changing title \"{s}\"", .{slice}); - try self.rt_app.performAction( + _ = try self.rt_app.performAction( .{ .surface = self }, .set_title, .{ .title = slice }, @@ -859,7 +869,7 @@ pub fn handleMessage(self: *Surface, msg: Message) !void { .color_change => |change| { // Notify our apprt, but don't send a mode 2031 DSR report // because VT sequences were used to change the color. - try self.rt_app.performAction( + _ = try self.rt_app.performAction( .{ .surface = self }, .color_change, .{ @@ -878,7 +888,7 @@ pub fn handleMessage(self: *Surface, msg: Message) !void { .set_mouse_shape => |shape| { log.debug("changing mouse shape: {}", .{shape}); - try self.rt_app.performAction( + _ = try self.rt_app.performAction( .{ .surface = self }, .mouse_shape, shape, @@ -910,7 +920,7 @@ pub fn handleMessage(self: *Surface, msg: Message) !void { const str = try self.alloc.dupeZ(u8, w.slice()); defer self.alloc.free(str); - try self.rt_app.performAction( + _ = try self.rt_app.performAction( .{ .surface = self }, .pwd, .{ .pwd = str }, @@ -961,7 +971,7 @@ fn passwordInput(self: *Surface, v: bool) !void { } // Notify our apprt so it can do whatever it wants. - self.rt_app.performAction( + _ = self.rt_app.performAction( .{ .surface = self }, .secure_input, if (v) .on else .off, @@ -1050,7 +1060,7 @@ fn mouseRefreshLinks( self.renderer_state.mouse.point = pos_vp; self.mouse.over_link = true; self.renderer_state.terminal.screen.dirty.hyperlink_hover = true; - try self.rt_app.performAction( + _ = try self.rt_app.performAction( .{ .surface = self }, .mouse_shape, .pointer, @@ -1063,7 +1073,7 @@ fn mouseRefreshLinks( .trim = false, }); defer self.alloc.free(str); - try self.rt_app.performAction( + _ = try self.rt_app.performAction( .{ .surface = self }, .mouse_over_link, .{ .url = str }, @@ -1077,7 +1087,7 @@ fn mouseRefreshLinks( log.warn("failed to get URI for OSC8 hyperlink", .{}); break :link; }; - try self.rt_app.performAction( + _ = try self.rt_app.performAction( .{ .surface = self }, .mouse_over_link, .{ .url = uri }, @@ -1087,12 +1097,12 @@ fn mouseRefreshLinks( try self.queueRender(); } else if (over_link) { - try self.rt_app.performAction( + _ = try self.rt_app.performAction( .{ .surface = self }, .mouse_shape, self.io.terminal.mouse_shape, ); - try self.rt_app.performAction( + _ = try self.rt_app.performAction( .{ .surface = self }, .mouse_over_link, .{ .url = "" }, @@ -1104,7 +1114,7 @@ fn mouseRefreshLinks( /// Called when our renderer health state changes. fn updateRendererHealth(self: *Surface, health: renderer.Health) void { log.warn("renderer health status change status={}", .{health}); - self.rt_app.performAction( + _ = self.rt_app.performAction( .{ .surface = self }, .renderer_health, health, @@ -1116,7 +1126,7 @@ fn updateRendererHealth(self: *Surface, health: renderer.Health) void { /// This should be called anytime `config_conditional_state` changes /// so that the apprt can reload the configuration. fn notifyConfigConditionalState(self: *Surface) void { - self.rt_app.performAction( + _ = self.rt_app.performAction( .{ .surface = self }, .reload_config, .{ .soft = true }, @@ -1196,14 +1206,14 @@ pub fn updateConfig( // If we have a title set then we update our window to have the // newly configured title. - if (config.title) |title| try self.rt_app.performAction( + if (config.title) |title| _ = try self.rt_app.performAction( .{ .surface = self }, .set_title, .{ .title = title }, ); // Notify the window - try self.rt_app.performAction( + _ = try self.rt_app.performAction( .{ .surface = self }, .config_change, .{ .config = config }, @@ -1470,7 +1480,7 @@ fn setCellSize(self: *Surface, size: renderer.CellSize) !void { self.io.queueMessage(.{ .resize = self.size }, .unlocked); // Notify the window - try self.rt_app.performAction( + _ = try self.rt_app.performAction( .{ .surface = self }, .cell_size, .{ .width = size.width, .height = size.height }, @@ -1766,12 +1776,12 @@ pub fn keyCallback( }; } else if (self.io.terminal.flags.mouse_event != .none and !self.mouse.mods.shift) { // If we have mouse reports on and we don't have shift pressed, we reset state - try self.rt_app.performAction( + _ = try self.rt_app.performAction( .{ .surface = self }, .mouse_shape, self.io.terminal.mouse_shape, ); - try self.rt_app.performAction( + _ = try self.rt_app.performAction( .{ .surface = self }, .mouse_over_link, .{ .url = "" }, @@ -1789,7 +1799,7 @@ pub fn keyCallback( .mods = self.mouse.mods, .over_link = self.mouse.over_link, .hidden = self.mouse.hidden, - }).keyToMouseShape()) |shape| try self.rt_app.performAction( + }).keyToMouseShape()) |shape| _ = try self.rt_app.performAction( .{ .surface = self }, .mouse_shape, shape, @@ -1914,7 +1924,7 @@ fn maybeHandleBinding( } // Start or continue our key sequence - self.rt_app.performAction( + _ = self.rt_app.performAction( .{ .surface = self }, .key_sequence, .{ .trigger = entry.key_ptr.* }, @@ -2023,7 +2033,7 @@ fn endKeySequence( mem: KeySequenceMemory, ) void { // Notify apprt key sequence ended - self.rt_app.performAction( + _ = self.rt_app.performAction( .{ .surface = self }, .key_sequence, .end, @@ -3359,12 +3369,12 @@ pub fn cursorPosCallback( self.mouse.link_point = null; if (self.mouse.over_link) { self.mouse.over_link = false; - try self.rt_app.performAction( + _ = try self.rt_app.performAction( .{ .surface = self }, .mouse_shape, self.io.terminal.mouse_shape, ); - try self.rt_app.performAction( + _ = try self.rt_app.performAction( .{ .surface = self }, .mouse_over_link, .{ .url = "" }, @@ -3790,7 +3800,7 @@ fn scrollToBottom(self: *Surface) !void { fn hideMouse(self: *Surface) void { if (self.mouse.hidden) return; self.mouse.hidden = true; - self.rt_app.performAction( + _ = self.rt_app.performAction( .{ .surface = self }, .mouse_visibility, .hidden, @@ -3802,7 +3812,7 @@ fn hideMouse(self: *Surface) void { fn showMouse(self: *Surface) void { if (!self.mouse.hidden) return; self.mouse.hidden = false; - self.rt_app.performAction( + _ = self.rt_app.performAction( .{ .surface = self }, .mouse_visibility, .visible, @@ -4015,6 +4025,12 @@ pub fn performBindingAction(self: *Surface, action: input.Binding.Action) !bool try self.setFontSize(size); }, + .prompt_surface_title => return try self.rt_app.performAction( + .{ .surface = self }, + .prompt_title, + {}, + ), + .clear_screen => { // This is a duplicate of some of the logic in termio.clearScreen // but we need to do this here so we can know the answer before @@ -4093,13 +4109,13 @@ pub fn performBindingAction(self: *Surface, action: input.Binding.Action) !bool v, ), - .new_tab => try self.rt_app.performAction( + .new_tab => return try self.rt_app.performAction( .{ .surface = self }, .new_tab, {}, ), - .close_tab => try self.rt_app.performAction( + .close_tab => return try self.rt_app.performAction( .{ .surface = self }, .close_tab, {}, @@ -4109,7 +4125,7 @@ pub fn performBindingAction(self: *Surface, action: input.Binding.Action) !bool .next_tab, .last_tab, .goto_tab, - => |v, tag| try self.rt_app.performAction( + => |v, tag| return try self.rt_app.performAction( .{ .surface = self }, .goto_tab, switch (tag) { @@ -4121,13 +4137,13 @@ pub fn performBindingAction(self: *Surface, action: input.Binding.Action) !bool }, ), - .move_tab => |position| try self.rt_app.performAction( + .move_tab => |position| return try self.rt_app.performAction( .{ .surface = self }, .move_tab, .{ .amount = position }, ), - .new_split => |direction| try self.rt_app.performAction( + .new_split => |direction| return try self.rt_app.performAction( .{ .surface = self }, .new_split, switch (direction) { @@ -4142,7 +4158,7 @@ pub fn performBindingAction(self: *Surface, action: input.Binding.Action) !bool }, ), - .goto_split => |direction| try self.rt_app.performAction( + .goto_split => |direction| return try self.rt_app.performAction( .{ .surface = self }, .goto_split, switch (direction) { @@ -4153,7 +4169,7 @@ pub fn performBindingAction(self: *Surface, action: input.Binding.Action) !bool }, ), - .resize_split => |value| try self.rt_app.performAction( + .resize_split => |value| return try self.rt_app.performAction( .{ .surface = self }, .resize_split, .{ @@ -4167,47 +4183,48 @@ pub fn performBindingAction(self: *Surface, action: input.Binding.Action) !bool }, ), - .equalize_splits => try self.rt_app.performAction( + .equalize_splits => return try self.rt_app.performAction( .{ .surface = self }, .equalize_splits, {}, ), - .toggle_split_zoom => try self.rt_app.performAction( + .toggle_split_zoom => return try self.rt_app.performAction( .{ .surface = self }, .toggle_split_zoom, {}, ), - .toggle_maximize => try self.rt_app.performAction( + .toggle_maximize => return try self.rt_app.performAction( .{ .surface = self }, .toggle_maximize, {}, ), - .toggle_fullscreen => try self.rt_app.performAction( + .toggle_fullscreen => return try self.rt_app.performAction( .{ .surface = self }, .toggle_fullscreen, switch (self.config.macos_non_native_fullscreen) { .false => .native, .true => .macos_non_native, .@"visible-menu" => .macos_non_native_visible_menu, + .@"padded-notch" => .macos_non_native_padded_notch, }, ), - .toggle_window_decorations => try self.rt_app.performAction( + .toggle_window_decorations => return try self.rt_app.performAction( .{ .surface = self }, .toggle_window_decorations, {}, ), - .toggle_tab_overview => try self.rt_app.performAction( + .toggle_tab_overview => return try self.rt_app.performAction( .{ .surface = self }, .toggle_tab_overview, {}, ), - .toggle_secure_input => try self.rt_app.performAction( + .toggle_secure_input => return try self.rt_app.performAction( .{ .surface = self }, .secure_input, .toggle, @@ -4221,7 +4238,7 @@ pub fn performBindingAction(self: *Surface, action: input.Binding.Action) !bool } }, - .inspector => |mode| try self.rt_app.performAction( + .inspector => |mode| return try self.rt_app.performAction( .{ .surface = self }, .inspector, switch (mode) { @@ -4668,7 +4685,7 @@ fn showDesktopNotification(self: *Surface, title: [:0]const u8, body: [:0]const self.app.last_notification_time = now; self.app.last_notification_digest = new_digest; - try self.rt_app.performAction( + _ = try self.rt_app.performAction( .{ .surface = self }, .desktop_notification, .{ @@ -4688,7 +4705,7 @@ fn crashThreadState(self: *Surface) crash.sentry.ThreadState { /// Tell the surface to present itself to the user. This may involve raising the /// window and switching tabs. fn presentSurface(self: *Surface) !void { - try self.rt_app.performAction( + _ = try self.rt_app.performAction( .{ .surface = self }, .present_terminal, {}, diff --git a/src/apprt/action.zig b/src/apprt/action.zig index fe2039e52..20b86707e 100644 --- a/src/apprt/action.zig +++ b/src/apprt/action.zig @@ -158,9 +158,13 @@ pub const Action = union(Key) { /// Show a desktop notification. desktop_notification: DesktopNotification, - /// Set the title of the target. + /// Set the title of the target to the requested value. set_title: SetTitle, + /// Set the title of the target to a prompted value. It is up to + /// the apprt to prompt. + prompt_title, + /// The current working directory has changed for the target terminal. pwd: Pwd, @@ -254,6 +258,7 @@ pub const Action = union(Key) { render_inspector, desktop_notification, set_title, + prompt_title, pwd, mouse_shape, mouse_visibility, @@ -385,6 +390,7 @@ pub const Fullscreen = enum(c_int) { /// window. This is much faster to enter and exit than the native mode. macos_non_native, macos_non_native_visible_menu, + macos_non_native_padded_notch, }; pub const SecureInput = enum(c_int) { diff --git a/src/apprt/embedded.zig b/src/apprt/embedded.zig index 358e9f291..18674bc38 100644 --- a/src/apprt/embedded.zig +++ b/src/apprt/embedded.zig @@ -12,6 +12,7 @@ const objc = @import("objc"); const apprt = @import("../apprt.zig"); const font = @import("../font/main.zig"); const input = @import("../input.zig"); +const internal_os = @import("../os/main.zig"); const renderer = @import("../renderer.zig"); const terminal = @import("../terminal/main.zig"); const CoreApp = @import("../App.zig"); @@ -45,7 +46,7 @@ pub const App = struct { wakeup: *const fn (AppUD) callconv(.C) void, /// Callback called to handle an action. - action: *const fn (*App, apprt.Target.C, apprt.Action.C) callconv(.C) void, + action: *const fn (*App, apprt.Target.C, apprt.Action.C) callconv(.C) bool, /// Read the clipboard value. The return value must be preserved /// by the host until the next call. If there is no valid clipboard @@ -181,14 +182,9 @@ pub const App = struct { if (strip) translate_mods.alt = false; } - // On macOS we strip ctrl because UCKeyTranslate - // converts to the masked values (i.e. ctrl+c becomes 3) - // and we don't want that behavior. - // - // We also strip super because its not used for translation - // on macos and it results in a bad translation. + // We strip super on macOS because its not used for translation + // it results in a bad translation. if (comptime builtin.target.isDarwin()) { - translate_mods.ctrl = false; translate_mods.super = false; } @@ -228,6 +224,7 @@ pub const App = struct { const result: input.Keymap.Translation = if (event_text) |text| .{ .text = text, .composing = event.composing, + .mods = translate_mods, } else try self.keymap.translate( &buf, switch (target) { @@ -272,16 +269,12 @@ pub const App = struct { // then we clear the text. We handle non-printables in the // key encoder manual (such as tab, ctrl+c, etc.) if (result.text.len == 1 and result.text[0] < 0x20) { - break :translate .{ .composing = false, .text = "" }; + break :translate .{}; } } break :translate result; - } else .{ .composing = false, .text = "" }; - - // UCKeyTranslate always consumes all mods, so if we have any output - // then we've consumed our translate mods. - const consumed_mods: input.Mods = if (result.text.len > 0) translate_mods else .{}; + } else .{}; // We need to always do a translation with no modifiers at all in // order to get the "unshifted_codepoint" for the key event. @@ -353,7 +346,7 @@ pub const App = struct { .key = key, .physical_key = physical_key, .mods = mods, - .consumed_mods = consumed_mods, + .consumed_mods = result.mods, .composing = result.composing, .utf8 = result.text, .unshifted_codepoint = unshifted_codepoint, @@ -477,13 +470,14 @@ pub const App = struct { surface.queueInspectorRender(); } - /// Perform a given action. + /// Perform a given action. Returns `true` if the action was able to be + /// performed, `false` otherwise. pub fn performAction( self: *App, target: apprt.Target, comptime action: apprt.Action.Key, value: apprt.Action.Value(action), - ) !void { + ) !bool { // Special case certain actions before they are sent to the // embedded apprt. self.performPreAction(target, action, value); @@ -493,7 +487,7 @@ pub const App = struct { action, value, }); - self.opts.action( + return self.opts.action( self, target.cval(), @unionInit(apprt.Action, @tagName(action), value).cval(), @@ -1005,7 +999,7 @@ pub const Surface = struct { } fn queueInspectorRender(self: *Surface) void { - self.app.performAction( + _ = self.app.performAction( .{ .surface = &self.core_surface }, .render_inspector, {}, @@ -1026,6 +1020,30 @@ pub const Surface = struct { }; } + pub fn defaultTermioEnv(self: *const Surface) !std.process.EnvMap { + const alloc = self.app.core_app.alloc; + var env = try internal_os.getEnvMap(alloc); + errdefer env.deinit(); + + if (comptime builtin.target.isDarwin()) { + if (env.get("__XCODE_BUILT_PRODUCTS_DIR_PATHS") != null) { + env.remove("__XCODE_BUILT_PRODUCTS_DIR_PATHS"); + env.remove("__XPC_DYLD_LIBRARY_PATH"); + env.remove("DYLD_FRAMEWORK_PATH"); + env.remove("DYLD_INSERT_LIBRARIES"); + env.remove("DYLD_LIBRARY_PATH"); + env.remove("LD_LIBRARY_PATH"); + env.remove("SECURITYSESSIONID"); + env.remove("XPC_SERVICE_NAME"); + } + + // Remove this so that running `ghostty` within Ghostty works. + env.remove("GHOSTTY_MAC_APP"); + } + + return env; + } + /// The cursor position from the host directly is in screen coordinates but /// all our interface works in pixels. fn cursorPosToPixels(self: *const Surface, pos: apprt.CursorPos) !apprt.CursorPos { @@ -1432,7 +1450,7 @@ pub const CAPI = struct { /// Open the configuration. export fn ghostty_app_open_config(v: *App) void { - v.performAction(.app, .open_config, {}) catch |err| { + _ = v.performAction(.app, .open_config, {}) catch |err| { log.err("error reloading config err={}", .{err}); return; }; @@ -1775,7 +1793,7 @@ pub const CAPI = struct { /// Request that the surface split in the given direction. export fn ghostty_surface_split(ptr: *Surface, direction: apprt.action.SplitDirection) void { - ptr.app.performAction( + _ = ptr.app.performAction( .{ .surface = &ptr.core_surface }, .new_split, direction, @@ -1790,7 +1808,7 @@ pub const CAPI = struct { ptr: *Surface, direction: apprt.action.GotoSplit, ) void { - ptr.app.performAction( + _ = ptr.app.performAction( .{ .surface = &ptr.core_surface }, .goto_split, direction, @@ -1809,7 +1827,7 @@ pub const CAPI = struct { direction: apprt.action.ResizeSplit.Direction, amount: u16, ) void { - ptr.app.performAction( + _ = ptr.app.performAction( .{ .surface = &ptr.core_surface }, .resize_split, .{ .direction = direction, .amount = amount }, @@ -1821,7 +1839,7 @@ pub const CAPI = struct { /// Equalize the size of all splits in the current window. export fn ghostty_surface_split_equalize(ptr: *Surface) void { - ptr.app.performAction( + _ = ptr.app.performAction( .{ .surface = &ptr.core_surface }, .equalize_splits, {}, diff --git a/src/apprt/glfw.zig b/src/apprt/glfw.zig index 686a70ddb..531269ee1 100644 --- a/src/apprt/glfw.zig +++ b/src/apprt/glfw.zig @@ -147,13 +147,14 @@ pub const App = struct { glfw.postEmptyEvent(); } - /// Perform a given action. + /// Perform a given action. Returns `true` if the action was able to be + /// performed, `false` otherwise. pub fn performAction( self: *App, target: apprt.Target, comptime action: apprt.Action.Key, value: apprt.Action.Value(action), - ) !void { + ) !bool { switch (action) { .quit => self.quit = true, @@ -238,8 +239,14 @@ pub const App = struct { .pwd, .config_change, .toggle_maximize, - => log.info("unimplemented action={}", .{action}), + .prompt_title, + => { + log.info("unimplemented action={}", .{action}); + return false; + }, } + + return true; } /// Reload the configuration. This should return the new configuration. @@ -874,6 +881,10 @@ pub const Surface = struct { }; } + pub fn defaultTermioEnv(self: *Surface) !std.process.EnvMap { + return try internal_os.getEnvMap(self.app.app.alloc); + } + fn sizeCallback(window: glfw.Window, width: i32, height: i32) void { _ = width; _ = height; diff --git a/src/apprt/gtk/App.zig b/src/apprt/gtk/App.zig index ed27f8394..227c36ec4 100644 --- a/src/apprt/gtk/App.zig +++ b/src/apprt/gtk/App.zig @@ -25,7 +25,6 @@ const Config = configpkg.Config; const CoreApp = @import("../../App.zig"); const CoreSurface = @import("../../Surface.zig"); -const adwaita = @import("adwaita.zig"); const cgroup = @import("cgroup.zig"); const Surface = @import("Surface.zig"); const Window = @import("Window.zig"); @@ -109,6 +108,14 @@ pub fn init(core_app: *CoreApp, opts: Options) !App { c.gtk_get_micro_version(), }); + // log the adwaita version + log.info("libadwaita version build={s} runtime={}.{}.{}", .{ + c.ADW_VERSION_S, + c.adw_get_major_version(), + c.adw_get_minor_version(), + c.adw_get_micro_version(), + }); + // Load our configuration var config = try Config.load(core_app.alloc); errdefer config.deinit(); @@ -236,7 +243,8 @@ pub fn init(core_app: *CoreApp, opts: Options) !App { } } - c.gtk_init(); + c.adw_init(); + const display: *c.GdkDisplay = c.gdk_display_get_default() orelse { // I'm unsure of any scenario where this happens. Because we don't // want to litter null checks everywhere, we just exit here. @@ -244,16 +252,6 @@ pub fn init(core_app: *CoreApp, opts: Options) !App { std.posix.exit(1); }; - // If we're using libadwaita, log the version - if (adwaita.enabled(&config)) { - log.info("libadwaita version build={s} runtime={}.{}.{}", .{ - c.ADW_VERSION_S, - c.adw_get_major_version(), - c.adw_get_minor_version(), - c.adw_get_micro_version(), - }); - } - // The "none" cursor is used for hiding the cursor const cursor_none = c.gdk_cursor_new_from_name("none", null); errdefer if (cursor_none) |cursor| c.g_object_unref(cursor); @@ -288,103 +286,38 @@ pub fn init(core_app: *CoreApp, opts: Options) !App { }; // Create our GTK Application which encapsulates our process. - const app: *c.GtkApplication = app: { - log.debug("creating GTK application id={s} single-instance={} adwaita={}", .{ - app_id, - single_instance, - adwaita, - }); + log.debug("creating GTK application id={s} single-instance={}", .{ + app_id, + single_instance, + }); - // If not libadwaita, create a standard GTK application. - if ((comptime !adwaita.versionAtLeast(0, 0, 0)) or - !adwaita.enabled(&config)) - { - { - const provider = c.gtk_css_provider_new(); - defer c.g_object_unref(provider); - switch (config.@"window-theme") { - .system, .light => {}, - .dark => { - const settings = c.gtk_settings_get_default(); - c.g_object_set(@ptrCast(@alignCast(settings)), "gtk-application-prefer-dark-theme", true, @as([*c]const u8, null)); + // Using an AdwApplication lets us use Adwaita widgets and access things + // such as the color scheme. + const adw_app = @as(?*c.AdwApplication, @ptrCast(c.adw_application_new( + app_id.ptr, + app_flags, + ))) orelse return error.GtkInitFailed; + errdefer c.g_object_unref(adw_app); - c.gtk_css_provider_load_from_resource( - provider, - "/com/mitchellh/ghostty/style-dark.css", - ); - c.gtk_style_context_add_provider_for_display( - display, - @ptrCast(provider), - c.GTK_STYLE_PROVIDER_PRIORITY_APPLICATION + 2, - ); - }, - .auto, .ghostty => { - const lum = config.background.toTerminalRGB().perceivedLuminance(); - if (lum <= 0.5) { - const settings = c.gtk_settings_get_default(); - c.g_object_set(@ptrCast(@alignCast(settings)), "gtk-application-prefer-dark-theme", true, @as([*c]const u8, null)); - - c.gtk_css_provider_load_from_resource( - provider, - "/com/mitchellh/ghostty/style-dark.css", - ); - c.gtk_style_context_add_provider_for_display( - display, - @ptrCast(provider), - c.GTK_STYLE_PROVIDER_PRIORITY_APPLICATION + 2, - ); - } - }, - } - } - - { - const provider = c.gtk_css_provider_new(); - defer c.g_object_unref(provider); - - c.gtk_css_provider_load_from_resource(provider, "/com/mitchellh/ghostty/style.css"); - c.gtk_style_context_add_provider_for_display( - display, - @ptrCast(provider), - c.GTK_STYLE_PROVIDER_PRIORITY_APPLICATION + 1, - ); - } - - break :app @as(?*c.GtkApplication, @ptrCast(c.gtk_application_new( - app_id.ptr, - app_flags, - ))) orelse return error.GtkInitFailed; - } - - // Use libadwaita if requested. Using an AdwApplication lets us use - // Adwaita widgets and access things such as the color scheme. - const adw_app = @as(?*c.AdwApplication, @ptrCast(c.adw_application_new( - app_id.ptr, - app_flags, - ))) orelse return error.GtkInitFailed; - - const style_manager = c.adw_application_get_style_manager(adw_app); - c.adw_style_manager_set_color_scheme( - style_manager, - switch (config.@"window-theme") { - .auto, .ghostty => auto: { - const lum = config.background.toTerminalRGB().perceivedLuminance(); - break :auto if (lum > 0.5) - c.ADW_COLOR_SCHEME_PREFER_LIGHT - else - c.ADW_COLOR_SCHEME_PREFER_DARK; - }, - - .system => c.ADW_COLOR_SCHEME_PREFER_LIGHT, - .dark => c.ADW_COLOR_SCHEME_FORCE_DARK, - .light => c.ADW_COLOR_SCHEME_FORCE_LIGHT, + const style_manager = c.adw_application_get_style_manager(adw_app); + c.adw_style_manager_set_color_scheme( + style_manager, + switch (config.@"window-theme") { + .auto, .ghostty => auto: { + const lum = config.background.toTerminalRGB().perceivedLuminance(); + break :auto if (lum > 0.5) + c.ADW_COLOR_SCHEME_PREFER_LIGHT + else + c.ADW_COLOR_SCHEME_PREFER_DARK; }, - ); + .system => c.ADW_COLOR_SCHEME_PREFER_LIGHT, + .dark => c.ADW_COLOR_SCHEME_FORCE_DARK, + .light => c.ADW_COLOR_SCHEME_FORCE_LIGHT, + }, + ); - break :app @ptrCast(adw_app); - }; - errdefer c.g_object_unref(app); - const gapp = @as(*c.GApplication, @ptrCast(app)); + const app: *c.GtkApplication = @ptrCast(adw_app); + const gapp: *c.GApplication = @ptrCast(app); // force the resource path to a known value so that it doesn't depend on // the app id and load in compiled resources @@ -507,13 +440,14 @@ pub fn terminate(self: *App) void { self.config.deinit(); } -/// Perform a given action. +/// Perform a given action. Returns `true` if the action was able to be +/// performed, `false` otherwise. pub fn performAction( self: *App, target: apprt.Target, comptime action: apprt.Action.Key, value: apprt.Action.Value(action), -) !void { +) !bool { switch (action) { .quit => self.quit(), .new_window => _ = try self.newWindow(switch (target) { @@ -525,12 +459,12 @@ pub fn performAction( .new_tab => try self.newTab(target), .close_tab => try self.closeTab(target), - .goto_tab => self.gotoTab(target, value), + .goto_tab => return self.gotoTab(target, value), .move_tab => self.moveTab(target, value), .new_split => try self.newSplit(target, value), .resize_split => self.resizeSplit(target, value), .equalize_splits => self.equalizeSplits(target), - .goto_split => self.gotoSplit(target, value), + .goto_split => return self.gotoSplit(target, value), .open_config => try configpkg.edit.open(self.core_app.alloc), .config_change => self.configChange(target, value.config), .reload_config => try self.reloadConfig(target, value), @@ -559,8 +493,16 @@ pub fn performAction( .render_inspector, .renderer_health, .color_change, - => log.warn("unimplemented action={}", .{action}), + .prompt_title, + => { + log.warn("unimplemented action={}", .{action}); + return false; + }, } + + // We can assume it was handled because all unknown/unimplemented actions + // are caught above. + return true; } fn newTab(_: *App, target: apprt.Target) !void { @@ -597,24 +539,24 @@ fn closeTab(_: *App, target: apprt.Target) !void { } } -fn gotoTab(_: *App, target: apprt.Target, tab: apprt.action.GotoTab) void { +fn gotoTab(_: *App, target: apprt.Target, tab: apprt.action.GotoTab) bool { switch (target) { - .app => {}, + .app => return false, .surface => |v| { const window = v.rt_surface.container.window() orelse { log.info( "gotoTab invalid for container={s}", .{@tagName(v.rt_surface.container)}, ); - return; + return false; }; - switch (tab) { + return switch (tab) { .previous => window.gotoPreviousTab(v.rt_surface), .next => window.gotoNextTab(v.rt_surface), .last => window.gotoLastTab(), else => window.gotoTab(@intCast(@intFromEnum(tab))), - } + }; }, } } @@ -668,18 +610,22 @@ fn gotoSplit( _: *const App, target: apprt.Target, direction: apprt.action.GotoSplit, -) void { +) bool { switch (target) { - .app => {}, + .app => return false, .surface => |v| { - const s = v.rt_surface.container.split() orelse return; + const s = v.rt_surface.container.split() orelse return false; const map = s.directionMap(switch (v.rt_surface.container) { .split_tl => .top_left, .split_br => .bottom_right, .none, .tab_ => unreachable, }); - const surface_ = map.get(direction) orelse return; - if (surface_) |surface| surface.grabFocus(); + const surface_ = map.get(direction) orelse return false; + if (surface_) |surface| { + surface.grabFocus(); + return true; + } + return false; }, } } @@ -967,11 +913,9 @@ fn configChange( // App changes needs to show a toast that our configuration // has reloaded. - if (adwaita.enabled(&self.config)) { - if (self.core_app.focusedSurface()) |core_surface| { - const surface = core_surface.rt_surface; - if (surface.container.window()) |window| window.onConfigReloaded(); - } + if (self.core_app.focusedSurface()) |core_surface| { + const surface = core_surface.rt_surface; + if (surface.container.window()) |window| window.onConfigReloaded(); } }, } diff --git a/src/apprt/gtk/Builder.zig b/src/apprt/gtk/Builder.zig new file mode 100644 index 000000000..ffacd3adf --- /dev/null +++ b/src/apprt/gtk/Builder.zig @@ -0,0 +1,72 @@ +/// Wrapper around GTK's builder APIs that perform some comptime checks. +const Builder = @This(); + +const std = @import("std"); + +const gtk = @import("gtk"); +const gobject = @import("gobject"); + +resource_name: [:0]const u8, +builder: ?*gtk.Builder, + +pub fn init(comptime name: []const u8, comptime kind: enum { blp, ui }) Builder { + comptime { + switch (kind) { + .blp => { + // Use @embedFile to make sure that the file exists at compile + // time. Zig _should_ discard the data so that it doesn't end + // up in the final executable. At runtime we will load the data + // from a GResource. + _ = @embedFile("ui/" ++ name ++ ".blp"); + + // Check to make sure that our file is listed as a + // `blueprint_file` in `gresource.zig`. If it isn't Ghostty + // could crash at runtime when we try and load a nonexistent + // GResource. + const gresource = @import("gresource.zig"); + for (gresource.blueprint_files) |blueprint_file| { + if (std.mem.eql(u8, blueprint_file, name)) break; + } else @compileError("missing blueprint file '" ++ name ++ "' in gresource.zig"); + }, + .ui => { + // Use @embedFile to make sure that the file exists at compile + // time. Zig _should_ discard the data so that it doesn't end + // up in the final executable. At runtime we will load the data + // from a GResource. + _ = @embedFile("ui/" ++ name ++ ".ui"); + + // Check to make sure that our file is listed as a `ui_file` in + // `gresource.zig`. If it isn't Ghostty could crash at runtime + // when we try and load a nonexistent GResource. + const gresource = @import("gresource.zig"); + for (gresource.ui_files) |ui_file| { + if (std.mem.eql(u8, ui_file, name)) break; + } else @compileError("missing ui file '" ++ name ++ "' in gresource.zig"); + }, + } + } + + return .{ + .resource_name = "/com/mitchellh/ghostty/ui/" ++ name ++ ".ui", + .builder = null, + }; +} + +pub fn setWidgetClassTemplate(self: *const Builder, class: *gtk.WidgetClass) void { + class.setTemplateFromResource(self.resource_name); +} + +pub fn getObject(self: *Builder, name: [:0]const u8) ?*gobject.Object { + const builder = builder: { + if (self.builder) |builder| break :builder builder; + const builder = gtk.Builder.newFromResource(self.resource_name); + self.builder = builder; + break :builder builder; + }; + + return builder.getObject(name); +} + +pub fn deinit(self: *const Builder) void { + if (self.builder) |builder| builder.unref(); +} diff --git a/src/apprt/gtk/Split.zig b/src/apprt/gtk/Split.zig index 2d428acb2..8ddadfd13 100644 --- a/src/apprt/gtk/Split.zig +++ b/src/apprt/gtk/Split.zig @@ -313,11 +313,7 @@ pub fn directionMap(self: *const Split, from: Side) DirectionMap { if (self.directionPrevious(from)) |prev| { result.put(.previous, prev.surface); if (!prev.wrapped) { - // This behavior matches the behavior of macOS at the time of writing - // this. There is an open issue (#524) to make this depend on the - // actual physical location of the current split. result.put(.up, prev.surface); - result.put(.left, prev.surface); } } @@ -325,13 +321,57 @@ pub fn directionMap(self: *const Split, from: Side) DirectionMap { result.put(.next, next.surface); if (!next.wrapped) { result.put(.down, next.surface); - result.put(.right, next.surface); } } + if (self.directionLeft(from)) |left| { + result.put(.left, left); + } + + if (self.directionRight(from)) |right| { + result.put(.right, right); + } + return result; } +fn directionLeft(self: *const Split, from: Side) ?*Surface { + switch (from) { + .bottom_right => { + switch (self.orientation) { + .horizontal => return self.top_left.deepestSurface(.bottom_right), + .vertical => return directionLeft( + self.container.split() orelse return null, + .bottom_right, + ), + } + }, + .top_left => return directionLeft( + self.container.split() orelse return null, + .bottom_right, + ), + } +} + +fn directionRight(self: *const Split, from: Side) ?*Surface { + switch (from) { + .top_left => { + switch (self.orientation) { + .horizontal => return self.bottom_right.deepestSurface(.top_left), + .vertical => return directionRight( + self.container.split() orelse return null, + .top_left, + ), + } + }, + .bottom_right => return directionRight( + self.container.split() orelse return null, + .top_left, + ), + } +} + + fn directionPrevious(self: *const Split, from: Side) ?struct { surface: *Surface, wrapped: bool, diff --git a/src/apprt/gtk/Surface.zig b/src/apprt/gtk/Surface.zig index b34ca9aa3..9a8c4513d 100644 --- a/src/apprt/gtk/Surface.zig +++ b/src/apprt/gtk/Surface.zig @@ -1270,10 +1270,12 @@ fn showContextMenu(self: *Surface, x: f32, y: f32) void { return; }; + // Convert surface coordinate into coordinate space of the + // context menu's parent var point: c.graphene_point_t = .{ .x = x, .y = y }; if (c.gtk_widget_compute_point( self.primaryWidget(), - @ptrCast(window.window), + c.gtk_widget_get_parent(@ptrCast(window.context_menu)), &c.GRAPHENE_POINT_INIT(point.x, point.y), @ptrCast(&point), ) == 0) { @@ -2124,7 +2126,7 @@ pub fn present(self: *Surface) void { if (self.container.window()) |window| { if (self.container.tab()) |tab| { if (window.notebook.getTabPosition(tab)) |position| - window.notebook.gotoNthTab(position); + _ = window.notebook.gotoNthTab(position); } c.gtk_window_present(window.window); } @@ -2252,6 +2254,41 @@ fn doPaste(self: *Surface, data: [:0]const u8) void { }; } +pub fn defaultTermioEnv(self: *Surface) !std.process.EnvMap { + const alloc = self.app.core_app.alloc; + var env = try internal_os.getEnvMap(alloc); + errdefer env.deinit(); + + // Don't leak these GTK environment variables to child processes. + env.remove("GDK_DEBUG"); + env.remove("GDK_DISABLE"); + env.remove("GSK_RENDERER"); + + // Unset environment varies set by snaps if we're running in a snap. + // This allows Ghostty to further launch additional snaps. + if (env.get("SNAP")) |_| { + env.remove("SNAP"); + env.remove("DRIRC_CONFIGDIR"); + env.remove("__EGL_EXTERNAL_PLATFORM_CONFIG_DIRS"); + env.remove("__EGL_VENDOR_LIBRARY_DIRS"); + env.remove("LD_LIBRARY_PATH"); + env.remove("LIBGL_DRIVERS_PATH"); + env.remove("LIBVA_DRIVERS_PATH"); + env.remove("VK_LAYER_PATH"); + env.remove("XLOCALEDIR"); + env.remove("GDK_PIXBUF_MODULEDIR"); + env.remove("GTK_PATH"); + } + + if (self.container.window()) |window| { + // On some window protocols we might want to add specific + // environment variables to subprocesses, such as WINDOWID on X11. + try window.winproto.addSubprocessEnv(&env); + } + + return env; +} + /// Check a GValue to see what's type its wrapping. This is equivalent to GTK's /// `G_VALUE_HOLDS` macro but Zig's C translator does not like it. fn g_value_holds(value_: ?*c.GValue, g_type: c.GType) bool { diff --git a/src/apprt/gtk/TabView.zig b/src/apprt/gtk/TabView.zig new file mode 100644 index 000000000..156fd0b93 --- /dev/null +++ b/src/apprt/gtk/TabView.zig @@ -0,0 +1,275 @@ +/// An abstraction over the Adwaita tab view to manage all the terminal tabs in +/// a window. +const TabView = @This(); + +const std = @import("std"); + +const gtk = @import("gtk"); +const adw = @import("adw"); +const gobject = @import("gobject"); + +const Window = @import("Window.zig"); +const Tab = @import("Tab.zig"); +const adwaita = @import("adwaita.zig"); + +const log = std.log.scoped(.gtk); + +/// our window +window: *Window, + +/// the tab view +tab_view: *adw.TabView, + +/// Set to true so that the adw close-page handler knows we're forcing +/// and to allow a close to happen with no confirm. This is a bit of a hack +/// because we currently use GTK alerts to confirm tab close and they +/// don't carry with them the ADW state that we are confirming or not. +/// Long term we should move to ADW alerts so we can know if we are +/// confirming or not. +forcing_close: bool = false, + +pub fn init(self: *TabView, window: *Window) void { + self.* = .{ + .window = window, + .tab_view = adw.TabView.new(), + }; + self.tab_view.as(gtk.Widget).addCssClass("notebook"); + + if (adwaita.versionAtLeast(1, 2, 0)) { + // Adwaita enables all of the shortcuts by default. + // We want to manage keybindings ourselves. + self.tab_view.removeShortcuts(.{ + .alt_digits = true, + .alt_zero = true, + .control_end = true, + .control_home = true, + .control_page_down = true, + .control_page_up = true, + .control_shift_end = true, + .control_shift_home = true, + .control_shift_page_down = true, + .control_shift_page_up = true, + .control_shift_tab = true, + .control_tab = true, + }); + } + + _ = adw.TabView.signals.page_attached.connect( + self.tab_view, + *TabView, + adwPageAttached, + self, + .{}, + ); + _ = adw.TabView.signals.close_page.connect( + self.tab_view, + *TabView, + adwClosePage, + self, + .{}, + ); + _ = adw.TabView.signals.create_window.connect( + self.tab_view, + *TabView, + adwTabViewCreateWindow, + self, + .{}, + ); + _ = gobject.Object.signals.notify.connect( + self.tab_view, + *TabView, + adwSelectPage, + self, + .{ + .detail = "selected-page", + }, + ); +} + +pub fn asWidget(self: *TabView) *gtk.Widget { + return self.tab_view.as(gtk.Widget); +} + +pub fn nPages(self: *TabView) c_int { + return self.tab_view.getNPages(); +} + +/// Returns the index of the currently selected page. +/// Returns null if the notebook has no pages. +fn currentPage(self: *TabView) ?c_int { + const page = self.tab_view.getSelectedPage() orelse return null; + return self.tab_view.getPagePosition(page); +} + +/// Returns the currently selected tab or null if there are none. +pub fn currentTab(self: *TabView) ?*Tab { + const page = self.tab_view.getSelectedPage() orelse return null; + const child = page.getChild().as(gobject.Object); + return @ptrCast(@alignCast(child.getData(Tab.GHOSTTY_TAB) orelse return null)); +} + +pub fn gotoNthTab(self: *TabView, position: c_int) bool { + const page_to_select = self.tab_view.getNthPage(position); + self.tab_view.setSelectedPage(page_to_select); + return true; +} + +pub fn getTabPosition(self: *TabView, tab: *Tab) ?c_int { + const page = self.tab_view.getPage(@ptrCast(tab.box)); + return self.tab_view.getPagePosition(page); +} + +pub fn gotoPreviousTab(self: *TabView, tab: *Tab) bool { + const page_idx = self.getTabPosition(tab) orelse return false; + + // The next index is the previous or we wrap around. + const next_idx = if (page_idx > 0) page_idx - 1 else next_idx: { + const max = self.nPages(); + break :next_idx max -| 1; + }; + + // Do nothing if we have one tab + if (next_idx == page_idx) return false; + + return self.gotoNthTab(next_idx); +} + +pub fn gotoNextTab(self: *TabView, tab: *Tab) bool { + const page_idx = self.getTabPosition(tab) orelse return false; + + const max = self.nPages() -| 1; + const next_idx = if (page_idx < max) page_idx + 1 else 0; + if (next_idx == page_idx) return false; + + return self.gotoNthTab(next_idx); +} + +pub fn moveTab(self: *TabView, tab: *Tab, position: c_int) void { + const page_idx = self.getTabPosition(tab) orelse return; + + const max = self.nPages() -| 1; + var new_position: c_int = page_idx + position; + + if (new_position < 0) { + new_position = max + new_position + 1; + } else if (new_position > max) { + new_position = new_position - max - 1; + } + + if (new_position == page_idx) return; + self.reorderPage(tab, new_position); +} + +pub fn reorderPage(self: *TabView, tab: *Tab, position: c_int) void { + const page = self.tab_view.getPage(@ptrCast(tab.box)); + _ = self.tab_view.reorderPage(page, position); +} + +pub fn setTabLabel(self: *TabView, tab: *Tab, title: [:0]const u8) void { + const page = self.tab_view.getPage(@ptrCast(tab.box)); + page.setTitle(title.ptr); +} + +pub fn setTabTooltip(self: *TabView, tab: *Tab, tooltip: [:0]const u8) void { + const page = self.tab_view.getPage(@ptrCast(tab.box)); + page.setTooltip(tooltip.ptr); +} + +fn newTabInsertPosition(self: *TabView, tab: *Tab) c_int { + const numPages = self.nPages(); + return switch (tab.window.app.config.@"window-new-tab-position") { + .current => if (self.currentPage()) |page| page + 1 else numPages, + .end => numPages, + }; +} + +/// Adds a new tab with the given title to the notebook. +pub fn addTab(self: *TabView, tab: *Tab, title: [:0]const u8) void { + const position = self.newTabInsertPosition(tab); + const box_widget: *gtk.Widget = @ptrCast(tab.box); + const page = self.tab_view.insert(box_widget, position); + self.setTabLabel(tab, title); + self.tab_view.setSelectedPage(page); +} + +pub fn closeTab(self: *TabView, tab: *Tab) void { + // Save a pointer to the GTK window in case we need it later. It may be + // impossible to access later due to how resources are cleaned up. + const window: *gtk.Window = @ptrCast(@alignCast(self.window.window)); + + // closeTab always expects to close unconditionally so we mark this + // as true so that the close_page call below doesn't request + // confirmation. + self.forcing_close = true; + const n = self.nPages(); + defer { + // self becomes invalid if we close the last page because we close + // the whole window + if (n > 1) self.forcing_close = false; + } + + const page = self.tab_view.getPage(@ptrCast(tab.box)); + self.tab_view.closePage(page); + + // If we have no more tabs we close the window + if (self.nPages() == 0) { + // libadw versions <= 1.3.x leak the final page view + // which causes our surface to not properly cleanup. We + // unref to force the cleanup. This will trigger a critical + // warning from GTK, but I don't know any other workaround. + // Note: I'm not actually sure if 1.4.0 contains the fix, + // I just know that 1.3.x is broken and 1.5.1 is fixed. + // If we know that 1.4.0 is fixed, we can change this. + if (!adwaita.versionAtLeast(1, 4, 0)) { + const box: *gtk.Box = @ptrCast(@alignCast(tab.box)); + box.as(gobject.Object).unref(); + } + + window.destroy(); + } +} + +pub fn createWindow(currentWindow: *Window) !*Window { + const alloc = currentWindow.app.core_app.alloc; + const app = currentWindow.app; + + // Create a new window + return Window.create(alloc, app); +} + +fn adwPageAttached(_: *adw.TabView, page: *adw.TabPage, _: c_int, self: *TabView) callconv(.C) void { + const child = page.getChild().as(gobject.Object); + const tab: *Tab = @ptrCast(@alignCast(child.getData(Tab.GHOSTTY_TAB) orelse return)); + tab.window = self.window; + + self.window.focusCurrentTab(); +} + +fn adwClosePage( + _: *adw.TabView, + page: *adw.TabPage, + self: *TabView, +) callconv(.C) c_int { + const child = page.getChild().as(gobject.Object); + const tab: *Tab = @ptrCast(@alignCast(child.getData(Tab.GHOSTTY_TAB) orelse return 0)); + self.tab_view.closePageFinish(page, @intFromBool(self.forcing_close)); + if (!self.forcing_close) tab.closeWithConfirmation(); + return 1; +} + +fn adwTabViewCreateWindow( + _: *adw.TabView, + self: *TabView, +) callconv(.C) ?*adw.TabView { + const window = createWindow(self.window) catch |err| { + log.warn("error creating new window error={}", .{err}); + return null; + }; + return window.notebook.tab_view; +} + +fn adwSelectPage(_: *adw.TabView, _: *gobject.ParamSpec, self: *TabView) callconv(.C) void { + const page = self.tab_view.getSelectedPage() orelse return; + const title = page.getTitle(); + self.window.setTitle(std.mem.span(title)); +} diff --git a/src/apprt/gtk/Window.zig b/src/apprt/gtk/Window.zig index bb49165b9..0fd1e7429 100644 --- a/src/apprt/gtk/Window.zig +++ b/src/apprt/gtk/Window.zig @@ -22,8 +22,8 @@ const Tab = @import("Tab.zig"); const c = @import("c.zig").c; const adwaita = @import("adwaita.zig"); const gtk_key = @import("key.zig"); -const Notebook = @import("notebook.zig").Notebook; -const HeaderBar = @import("headerbar.zig").HeaderBar; +const TabView = @import("TabView.zig"); +const HeaderBar = @import("headerbar.zig"); const version = @import("version.zig"); const winproto = @import("winproto.zig"); @@ -34,9 +34,7 @@ app: *App, /// Our window window: *c.GtkWindow, -/// The header bar for the window. This is possibly null since it can be -/// disabled using gtk-titlebar. This is either an AdwHeaderBar or -/// GtkHeaderBar depending on if adw is enabled and linked. +/// The header bar for the window. headerbar: HeaderBar, /// The tab overview for the window. This is possibly null since there is no @@ -44,14 +42,12 @@ headerbar: HeaderBar, tab_overview: ?*c.GtkWidget, /// The notebook (tab grouping) for this window. -/// can be either c.GtkNotebook or c.AdwTabView. -notebook: Notebook, +notebook: TabView, context_menu: *c.GtkWidget, -/// The libadwaita widget for receiving toast send requests. If libadwaita is -/// not used, this is null and unused. -toast_overlay: ?*c.GtkWidget, +/// The libadwaita widget for receiving toast send requests. +toast_overlay: *c.GtkWidget, /// See adwTabOverviewOpen for why we have this. adw_tab_overview_focus_timer: ?c.guint = null, @@ -87,49 +83,39 @@ pub fn init(self: *Window, app: *App) !void { }; // Create the window - const window: *c.GtkWidget = window: { - if ((comptime adwaita.versionAtLeast(0, 0, 0)) and adwaita.enabled(&self.app.config)) { - const window = c.adw_application_window_new(app.app); - c.gtk_widget_add_css_class(@ptrCast(window), "adw"); - break :window window; - } else { - const window = c.gtk_application_window_new(app.app); - c.gtk_widget_add_css_class(@ptrCast(window), "gtk"); - break :window window; - } - }; - errdefer c.gtk_window_destroy(@ptrCast(window)); + const gtk_widget = c.adw_application_window_new(app.app); + errdefer c.gtk_window_destroy(@ptrCast(gtk_widget)); - const gtk_window: *c.GtkWindow = @ptrCast(window); - self.window = gtk_window; - c.gtk_window_set_title(gtk_window, "Ghostty"); - c.gtk_window_set_default_size(gtk_window, 1000, 600); - c.gtk_widget_add_css_class(@ptrCast(gtk_window), "window"); - c.gtk_widget_add_css_class(@ptrCast(gtk_window), "terminal-window"); + self.window = @ptrCast(@alignCast(gtk_widget)); + + c.gtk_window_set_title(self.window, "Ghostty"); + c.gtk_window_set_default_size(self.window, 1000, 600); + c.gtk_widget_add_css_class(gtk_widget, "window"); + c.gtk_widget_add_css_class(gtk_widget, "terminal-window"); // GTK4 grabs F10 input by default to focus the menubar icon. We want // to disable this so that terminal programs can capture F10 (such as htop) - c.gtk_window_set_handle_menubar_accel(gtk_window, 0); + c.gtk_window_set_handle_menubar_accel(self.window, 0); - c.gtk_window_set_icon_name(gtk_window, build_config.bundle_id); + c.gtk_window_set_icon_name(self.window, build_config.bundle_id); // Apply class to color headerbar if window-theme is set to `ghostty` and // GTK version is before 4.16. The conditional is because above 4.16 // we use GTK CSS color variables. if (!version.atLeast(4, 16, 0) and app.config.@"window-theme" == .ghostty) { - c.gtk_widget_add_css_class(@ptrCast(gtk_window), "window-theme-ghostty"); + c.gtk_widget_add_css_class(gtk_widget, "window-theme-ghostty"); } // Create our box which will hold our widgets in the main content area. const box = c.gtk_box_new(c.GTK_ORIENTATION_VERTICAL, 0); // Setup our notebook - self.notebook.init(); + self.notebook.init(self); // If we are using Adwaita, then we can support the tab overview. - self.tab_overview = if ((comptime adwaita.versionAtLeast(1, 4, 0)) and adwaita.enabled(&self.app.config) and adwaita.versionAtLeast(1, 4, 0)) overview: { + self.tab_overview = if (adwaita.versionAtLeast(1, 4, 0)) overview: { const tab_overview = c.adw_tab_overview_new(); - c.adw_tab_overview_set_view(@ptrCast(tab_overview), self.notebook.adw.tab_view); + c.adw_tab_overview_set_view(@ptrCast(tab_overview), @ptrCast(@alignCast(self.notebook.tab_view))); c.adw_tab_overview_set_enable_new_tab(@ptrCast(tab_overview), 1); _ = c.g_signal_connect_data( tab_overview, @@ -166,10 +152,9 @@ pub fn init(self: *Window, app: *App) !void { // If we're using an AdwWindow then we can support the tab overview. if (self.tab_overview) |tab_overview| { - if (comptime !adwaita.versionAtLeast(1, 4, 0)) unreachable; - assert(self.app.config.@"gtk-adwaita" and adwaita.versionAtLeast(1, 4, 0)); + if (!adwaita.versionAtLeast(1, 4, 0)) unreachable; const btn = switch (app.config.@"gtk-tabs-location") { - .top, .bottom, .left, .right => btn: { + .top, .bottom => btn: { const btn = c.gtk_toggle_button_new(); c.gtk_widget_set_tooltip_text(btn, "View Open Tabs"); c.gtk_button_set_icon_name(@ptrCast(btn), "view-grid-symbolic"); @@ -186,7 +171,7 @@ pub fn init(self: *Window, app: *App) !void { .hidden => btn: { const btn = c.adw_tab_button_new(); - c.adw_tab_button_set_view(@ptrCast(btn), self.notebook.adw.tab_view); + c.adw_tab_button_set_view(@ptrCast(btn), @ptrCast(@alignCast(self.notebook.tab_view))); c.gtk_actionable_set_action_name(@ptrCast(btn), "overview.open"); break :btn btn; }, @@ -203,13 +188,13 @@ pub fn init(self: *Window, app: *App) !void { self.headerbar.packStart(btn); } - _ = c.g_signal_connect_data(gtk_window, "notify::decorated", c.G_CALLBACK(>kWindowNotifyDecorated), self, null, c.G_CONNECT_DEFAULT); - _ = c.g_signal_connect_data(gtk_window, "notify::maximized", c.G_CALLBACK(>kWindowNotifyMaximized), self, null, c.G_CONNECT_DEFAULT); - _ = c.g_signal_connect_data(gtk_window, "notify::fullscreened", c.G_CALLBACK(>kWindowNotifyFullscreened), self, null, c.G_CONNECT_DEFAULT); + _ = c.g_signal_connect_data(self.window, "notify::decorated", c.G_CALLBACK(>kWindowNotifyDecorated), self, null, c.G_CONNECT_DEFAULT); + _ = c.g_signal_connect_data(self.window, "notify::maximized", c.G_CALLBACK(>kWindowNotifyMaximized), self, null, c.G_CONNECT_DEFAULT); + _ = c.g_signal_connect_data(self.window, "notify::fullscreened", c.G_CALLBACK(>kWindowNotifyFullscreened), self, null, c.G_CONNECT_DEFAULT); // If Adwaita is enabled and is older than 1.4.0 we don't have the tab overview and so we // need to stick the headerbar into the content box. - if (!adwaita.versionAtLeast(1, 4, 0) and adwaita.enabled(&self.app.config)) { + if (!adwaita.versionAtLeast(1, 4, 0)) { c.gtk_box_append(@ptrCast(box), self.headerbar.asWidget()); } @@ -218,10 +203,7 @@ pub fn init(self: *Window, app: *App) !void { if (comptime std.debug.runtime_safety) { const warning_box = c.gtk_box_new(c.GTK_ORIENTATION_VERTICAL, 0); const warning_text = "⚠️ You're running a debug build of Ghostty! Performance will be degraded."; - if ((comptime adwaita.versionAtLeast(1, 3, 0)) and - adwaita.enabled(&app.config) and - adwaita.versionAtLeast(1, 3, 0)) - { + if (adwaita.versionAtLeast(1, 3, 0)) { const banner = c.adw_banner_new(warning_text); c.adw_banner_set_revealed(@ptrCast(banner), 1); c.gtk_box_append(@ptrCast(warning_box), @ptrCast(banner)); @@ -231,30 +213,23 @@ pub fn init(self: *Window, app: *App) !void { c.gtk_widget_set_margin_bottom(warning, 10); c.gtk_box_append(@ptrCast(warning_box), warning); } - c.gtk_widget_add_css_class(@ptrCast(gtk_window), "devel"); + c.gtk_widget_add_css_class(gtk_widget, "devel"); c.gtk_widget_add_css_class(@ptrCast(warning_box), "background"); c.gtk_box_append(@ptrCast(box), warning_box); } // Setup our toast overlay if we have one - self.toast_overlay = if (adwaita.enabled(&self.app.config)) toast: { - const toast_overlay = c.adw_toast_overlay_new(); - c.adw_toast_overlay_set_child( - @ptrCast(toast_overlay), - @ptrCast(@alignCast(self.notebook.asWidget())), - ); - c.gtk_box_append(@ptrCast(box), toast_overlay); - break :toast toast_overlay; - } else toast: { - c.gtk_box_append(@ptrCast(box), self.notebook.asWidget()); - break :toast null; - }; + self.toast_overlay = c.adw_toast_overlay_new(); + c.adw_toast_overlay_set_child( + @ptrCast(self.toast_overlay), + @ptrCast(@alignCast(self.notebook.asWidget())), + ); + c.gtk_box_append(@ptrCast(box), self.toast_overlay); // If we have a tab overview then we can set it on our notebook. if (self.tab_overview) |tab_overview| { - if (comptime !adwaita.versionAtLeast(1, 3, 0)) unreachable; - assert(self.notebook == .adw); - c.adw_tab_overview_set_view(@ptrCast(tab_overview), self.notebook.adw.tab_view); + if (!adwaita.versionAtLeast(1, 4, 0)) unreachable; + c.adw_tab_overview_set_view(@ptrCast(tab_overview), @ptrCast(@alignCast(self.notebook.tab_view))); } self.context_menu = c.gtk_popover_menu_new_from_model(@ptrCast(@alignCast(self.app.context_menu))); @@ -273,40 +248,39 @@ pub fn init(self: *Window, app: *App) !void { // focused (i.e. when the libadw tab overview is shown). const ec_key_press = c.gtk_event_controller_key_new(); errdefer c.g_object_unref(ec_key_press); - c.gtk_widget_add_controller(window, ec_key_press); + c.gtk_widget_add_controller(gtk_widget, ec_key_press); // All of our events _ = c.g_signal_connect_data(self.context_menu, "closed", c.G_CALLBACK(>kRefocusTerm), self, null, c.G_CONNECT_DEFAULT); - _ = c.g_signal_connect_data(window, "realize", c.G_CALLBACK(>kRealize), self, null, c.G_CONNECT_DEFAULT); - _ = c.g_signal_connect_data(window, "close-request", c.G_CALLBACK(>kCloseRequest), self, null, c.G_CONNECT_DEFAULT); - _ = c.g_signal_connect_data(window, "destroy", c.G_CALLBACK(>kDestroy), self, null, c.G_CONNECT_DEFAULT); + _ = c.g_signal_connect_data(self.window, "realize", c.G_CALLBACK(>kRealize), self, null, c.G_CONNECT_DEFAULT); + _ = c.g_signal_connect_data(self.window, "close-request", c.G_CALLBACK(>kCloseRequest), self, null, c.G_CONNECT_DEFAULT); + _ = c.g_signal_connect_data(self.window, "destroy", c.G_CALLBACK(>kDestroy), self, null, c.G_CONNECT_DEFAULT); _ = c.g_signal_connect_data(ec_key_press, "key-pressed", c.G_CALLBACK(>kKeyPressed), self, null, c.G_CONNECT_DEFAULT); // Our actions for the menu initActions(self); - if ((comptime adwaita.versionAtLeast(1, 4, 0)) and adwaita.versionAtLeast(1, 4, 0) and adwaita.enabled(&self.app.config)) { + if (adwaita.versionAtLeast(1, 4, 0)) { const toolbar_view: *c.AdwToolbarView = @ptrCast(c.adw_toolbar_view_new()); c.adw_toolbar_view_add_top_bar(toolbar_view, self.headerbar.asWidget()); if (self.app.config.@"gtk-tabs-location" != .hidden) { const tab_bar = c.adw_tab_bar_new(); - c.adw_tab_bar_set_view(tab_bar, self.notebook.adw.tab_view); + c.adw_tab_bar_set_view(tab_bar, @ptrCast(@alignCast(self.notebook.tab_view))); if (!app.config.@"gtk-wide-tabs") c.adw_tab_bar_set_expand_tabs(tab_bar, 0); const tab_bar_widget: *c.GtkWidget = @ptrCast(@alignCast(tab_bar)); switch (self.app.config.@"gtk-tabs-location") { - // left and right are not supported in libadwaita. - .top, .left, .right => c.adw_toolbar_view_add_top_bar(toolbar_view, tab_bar_widget), + .top => c.adw_toolbar_view_add_top_bar(toolbar_view, tab_bar_widget), .bottom => c.adw_toolbar_view_add_bottom_bar(toolbar_view, tab_bar_widget), .hidden => unreachable, } } c.adw_toolbar_view_set_content(toolbar_view, box); - const toolbar_style: c.AdwToolbarStyle = switch (self.app.config.@"adw-toolbar-style") { + const toolbar_style: c.AdwToolbarStyle = switch (self.app.config.@"gtk-toolbar-style") { .flat => c.ADW_TOOLBAR_FLAT, .raised => c.ADW_TOOLBAR_RAISED, .@"raised-border" => c.ADW_TOOLBAR_RAISED_BORDER, @@ -320,51 +294,34 @@ pub fn init(self: *Window, app: *App) !void { @ptrCast(@alignCast(toolbar_view)), ); c.adw_application_window_set_content( - @ptrCast(gtk_window), + @ptrCast(gtk_widget), @ptrCast(@alignCast(self.tab_overview)), ); } else tab_bar: { - switch (self.notebook) { - .adw => |*adw| if (comptime adwaita.versionAtLeast(0, 0, 0)) { - if (app.config.@"gtk-tabs-location" == .hidden) break :tab_bar; - // In earlier adwaita versions, we need to add the tabbar manually since we do not use - // an AdwToolbarView. - const tab_bar: *c.AdwTabBar = c.adw_tab_bar_new().?; - c.gtk_widget_add_css_class(@ptrCast(@alignCast(tab_bar)), "inline"); - switch (app.config.@"gtk-tabs-location") { - .top, - .left, - .right, - => c.gtk_box_insert_child_after(@ptrCast(box), @ptrCast(@alignCast(tab_bar)), @ptrCast(@alignCast(self.headerbar.asWidget()))), - - .bottom => c.gtk_box_append( - @ptrCast(box), - @ptrCast(@alignCast(tab_bar)), - ), - .hidden => unreachable, - } - c.adw_tab_bar_set_view(tab_bar, adw.tab_view); - - if (!app.config.@"gtk-wide-tabs") c.adw_tab_bar_set_expand_tabs(tab_bar, 0); - }, - - .gtk => {}, + if (app.config.@"gtk-tabs-location" == .hidden) break :tab_bar; + // In earlier adwaita versions, we need to add the tabbar manually since we do not use + // an AdwToolbarView. + const tab_bar: *c.AdwTabBar = c.adw_tab_bar_new().?; + c.gtk_widget_add_css_class(@ptrCast(@alignCast(tab_bar)), "inline"); + switch (app.config.@"gtk-tabs-location") { + .top => c.gtk_box_insert_child_after( + @ptrCast(box), + @ptrCast(@alignCast(tab_bar)), + @ptrCast(@alignCast(self.headerbar.asWidget())), + ), + .bottom => c.gtk_box_append( + @ptrCast(box), + @ptrCast(@alignCast(tab_bar)), + ), + .hidden => unreachable, } + c.adw_tab_bar_set_view(tab_bar, @ptrCast(@alignCast(self.notebook.tab_view))); - // The box is our main child - if (!adwaita.versionAtLeast(1, 4, 0) and adwaita.enabled(&self.app.config)) { - c.adw_application_window_set_content( - @ptrCast(gtk_window), - box, - ); - } else { - c.gtk_window_set_titlebar(gtk_window, self.headerbar.asWidget()); - c.gtk_window_set_child(gtk_window, box); - } + if (!app.config.@"gtk-wide-tabs") c.adw_tab_bar_set_expand_tabs(tab_bar, 0); } // Show the window - c.gtk_widget_show(window); + c.gtk_widget_show(gtk_widget); } pub fn updateConfig( @@ -407,19 +364,16 @@ pub fn syncAppearance(self: *Window, config: *const configpkg.Config) !void { // Disable the title buttons (close, maximize, minimize, ...) // *inside* the tab overview if CSDs are disabled. // We do spare the search button, though. - if ((comptime adwaita.versionAtLeast(1, 4, 0)) and - adwaita.enabled(&self.app.config)) - { - if (self.tab_overview) |tab_overview| { - c.adw_tab_overview_set_show_start_title_buttons( - @ptrCast(tab_overview), - @intFromBool(csd_enabled), - ); - c.adw_tab_overview_set_show_end_title_buttons( - @ptrCast(tab_overview), - @intFromBool(csd_enabled), - ); - } + if (self.tab_overview) |tab_overview| { + if (!adwaita.versionAtLeast(1, 4, 0)) unreachable; + c.adw_tab_overview_set_show_start_title_buttons( + @ptrCast(tab_overview), + @intFromBool(csd_enabled), + ); + c.adw_tab_overview_set_show_end_title_buttons( + @ptrCast(tab_overview), + @intFromBool(csd_enabled), + ); } } @@ -506,23 +460,25 @@ pub fn closeTab(self: *Window, tab: *Tab) void { } /// Go to the previous tab for a surface. -pub fn gotoPreviousTab(self: *Window, surface: *Surface) void { +pub fn gotoPreviousTab(self: *Window, surface: *Surface) bool { const tab = surface.container.tab() orelse { log.info("surface is not attached to a tab bar, cannot navigate", .{}); - return; + return false; }; - self.notebook.gotoPreviousTab(tab); + if (!self.notebook.gotoPreviousTab(tab)) return false; self.focusCurrentTab(); + return true; } /// Go to the next tab for a surface. -pub fn gotoNextTab(self: *Window, surface: *Surface) void { +pub fn gotoNextTab(self: *Window, surface: *Surface) bool { const tab = surface.container.tab() orelse { log.info("surface is not attached to a tab bar, cannot navigate", .{}); - return; + return false; }; - self.notebook.gotoNextTab(tab); + if (!self.notebook.gotoNextTab(tab)) return false; self.focusCurrentTab(); + return true; } /// Move the current tab for a surface. @@ -535,25 +491,26 @@ pub fn moveTab(self: *Window, surface: *Surface, position: c_int) void { } /// Go to the last tab for a surface. -pub fn gotoLastTab(self: *Window) void { +pub fn gotoLastTab(self: *Window) bool { const max = self.notebook.nPages(); - self.gotoTab(@intCast(max)); + return self.gotoTab(@intCast(max)); } /// Go to the specific tab index. -pub fn gotoTab(self: *Window, n: usize) void { - if (n == 0) return; +pub fn gotoTab(self: *Window, n: usize) bool { + if (n == 0) return false; const max = self.notebook.nPages(); - if (max == 0) return; - const page_idx = std.math.cast(c_int, n - 1) orelse return; - self.notebook.gotoNthTab(@min(page_idx, max - 1)); + if (max == 0) return false; + const page_idx = std.math.cast(c_int, n - 1) orelse return false; + if (!self.notebook.gotoNthTab(@min(page_idx, max - 1))) return false; self.focusCurrentTab(); + return true; } /// Toggle tab overview (if present) pub fn toggleTabOverview(self: *Window) void { if (self.tab_overview) |tab_overview_widget| { - if (comptime !adwaita.versionAtLeast(1, 4, 0)) unreachable; + if (!adwaita.versionAtLeast(1, 4, 0)) unreachable; const tab_overview: *c.AdwTabOverview = @ptrCast(@alignCast(tab_overview_widget)); c.adw_tab_overview_set_open(tab_overview, 1 - c.adw_tab_overview_get_open(tab_overview)); } @@ -600,11 +557,9 @@ pub fn onConfigReloaded(self: *Window) void { } pub fn sendToast(self: *Window, title: [:0]const u8) void { - if (comptime !adwaita.versionAtLeast(0, 0, 0)) return; - const toast_overlay = self.toast_overlay orelse return; const toast = c.adw_toast_new(title); c.adw_toast_set_timeout(toast, 3); - c.adw_toast_overlay_add_toast(@ptrCast(toast_overlay), toast); + c.adw_toast_overlay_add_toast(@ptrCast(self.toast_overlay), toast); } fn gtkRealize(v: *c.GtkWindow, ud: ?*anyopaque) callconv(.C) bool { @@ -707,13 +662,13 @@ fn gtkTabNewClick(_: *c.GtkButton, ud: ?*anyopaque) callconv(.C) void { /// Create a new tab from the AdwTabOverview. We can't copy gtkTabNewClick /// because we need to return an AdwTabPage from this function. fn gtkNewTabFromOverview(_: *c.GtkWidget, ud: ?*anyopaque) callconv(.C) ?*c.AdwTabPage { + if (!adwaita.versionAtLeast(1, 4, 0)) unreachable; const self: *Window = userdataSelf(ud.?); - assert((comptime adwaita.versionAtLeast(1, 4, 0)) and adwaita.versionAtLeast(1, 4, 0) and adwaita.enabled(&self.app.config)); const alloc = self.app.core_app.alloc; const surface = self.actionSurface(); const tab = Tab.create(alloc, self, surface) catch return null; - return c.adw_tab_view_get_page(self.notebook.adw.tab_view, @ptrCast(@alignCast(tab.box))); + return c.adw_tab_view_get_page(@ptrCast(@alignCast(self.notebook.tab_view)), @ptrCast(@alignCast(tab.box))); } fn adwTabOverviewOpen( @@ -860,7 +815,7 @@ fn gtkKeyPressed( // // If someone can confidently show or explain that this is not // necessary, please remove this check. - if (comptime adwaita.versionAtLeast(1, 4, 0)) { + if (adwaita.versionAtLeast(1, 4, 0)) { if (self.tab_overview) |tab_overview_widget| { const tab_overview: *c.AdwTabOverview = @ptrCast(@alignCast(tab_overview_widget)); if (c.adw_tab_overview_get_open(tab_overview) == 0) return 0; @@ -888,10 +843,7 @@ fn gtkActionAbout( const icon = "com.mitchellh.ghostty"; const website = "https://ghostty.org"; - if ((comptime adwaita.versionAtLeast(1, 5, 0)) and - adwaita.versionAtLeast(1, 5, 0) and - adwaita.enabled(&self.app.config)) - { + if (adwaita.versionAtLeast(1, 5, 0)) { c.adw_show_about_dialog( @ptrCast(self.window), "application-name", diff --git a/src/apprt/gtk/adwaita.zig b/src/apprt/gtk/adwaita.zig index 075055586..885627fa4 100644 --- a/src/apprt/gtk/adwaita.zig +++ b/src/apprt/gtk/adwaita.zig @@ -1,20 +1,5 @@ const std = @import("std"); const c = @import("c.zig").c; -const build_options = @import("build_options"); -const Config = @import("../../config.zig").Config; - -/// Returns true if Ghostty is configured to build with libadwaita and -/// the configuration has enabled adwaita. -/// -/// For a comptime version of this function, use `versionAtLeast` in -/// a comptime context with all the version numbers set to 0. -/// -/// This must be `inline` so that the comptime check noops conditional -/// paths that are not enabled. -pub inline fn enabled(config: *const Config) bool { - return build_options.adwaita and - config.@"gtk-adwaita"; -} /// Verifies that the running libadwaita version is at least the given /// version. This will return false if Ghostty is configured to @@ -33,8 +18,6 @@ pub inline fn versionAtLeast( comptime minor: u16, comptime micro: u16, ) bool { - if (comptime !build_options.adwaita) return false; - // If our header has lower versions than the given version, // we can return false immediately. This prevents us from // compiling against unknown symbols and makes runtime checks diff --git a/src/apprt/gtk/builder_check.zig b/src/apprt/gtk/builder_check.zig new file mode 100644 index 000000000..015c6310d --- /dev/null +++ b/src/apprt/gtk/builder_check.zig @@ -0,0 +1,32 @@ +const std = @import("std"); +const build_options = @import("build_options"); + +const gtk = @import("gtk"); +const adw = @import("adw"); + +pub fn main() !void { + var gpa = std.heap.GeneralPurposeAllocator(.{}){}; + const alloc = gpa.allocator(); + + const filename = filename: { + var it = try std.process.argsWithAllocator(alloc); + defer it.deinit(); + + _ = it.next() orelse return error.NoFilename; + break :filename try alloc.dupeZ(u8, it.next() orelse return error.NoFilename); + }; + defer alloc.free(filename); + + const data = try std.fs.cwd().readFileAllocOptions(alloc, filename, std.math.maxInt(u16), null, 1, 0); + defer alloc.free(data); + + if (gtk.initCheck() == 0) { + std.debug.print("{s}: skipping builder check because we can't connect to display!\n", .{filename}); + return; + } + + adw.init(); + + const builder = gtk.Builder.newFromString(data.ptr, @intCast(data.len)); + defer builder.unref(); +} diff --git a/src/apprt/gtk/c.zig b/src/apprt/gtk/c.zig index 4dc8ea57f..c42c35d46 100644 --- a/src/apprt/gtk/c.zig +++ b/src/apprt/gtk/c.zig @@ -3,9 +3,7 @@ const build_options = @import("build_options"); /// Imported C API directly from header files pub const c = @cImport({ @cInclude("gtk/gtk.h"); - if (build_options.adwaita) { - @cInclude("libadwaita-1/adwaita.h"); - } + @cInclude("adwaita.h"); if (build_options.x11) { // Add in X11-specific GDK backend which we use for specific things diff --git a/src/apprt/gtk/gresource.zig b/src/apprt/gtk/gresource.zig index 327680993..050605b00 100644 --- a/src/apprt/gtk/gresource.zig +++ b/src/apprt/gtk/gresource.zig @@ -53,29 +53,33 @@ const icons = [_]struct { }, }; -pub const gresource_xml = comptimeGenerateGResourceXML(); +pub const ui_files = [_][]const u8{}; +pub const blueprint_files = [_][]const u8{}; -fn comptimeGenerateGResourceXML() []const u8 { - comptime { - @setEvalBranchQuota(13000); - var counter = std.io.countingWriter(std.io.null_writer); - try writeGResourceXML(&counter.writer()); +pub fn main() !void { + var gpa = std.heap.GeneralPurposeAllocator(.{}){}; + const alloc = gpa.allocator(); - var buf: [counter.bytes_written]u8 = undefined; - var stream = std.io.fixedBufferStream(&buf); - try writeGResourceXML(stream.writer()); - const final = buf; - return final[0..stream.getWritten().len]; + var extra_ui_files = std.ArrayList([]const u8).init(alloc); + defer { + for (extra_ui_files.items) |item| alloc.free(item); + extra_ui_files.deinit(); } -} -fn writeGResourceXML(writer: anytype) !void { + var it = try std.process.argsWithAllocator(alloc); + defer it.deinit(); + + while (it.next()) |filename| { + if (std.mem.eql(u8, std.fs.path.extension(filename), ".ui")) { + try extra_ui_files.append(try alloc.dupe(u8, filename)); + } + } + + const writer = std.io.getStdOut().writer(); + try writer.writeAll( \\ \\ - \\ - ); - try writer.writeAll( \\ \\ ); @@ -87,9 +91,6 @@ fn writeGResourceXML(writer: anytype) !void { } try writer.writeAll( \\ - \\ - ); - try writer.writeAll( \\ \\ ); @@ -99,6 +100,23 @@ fn writeGResourceXML(writer: anytype) !void { .{ icon.alias, icon.source }, ); } + try writer.writeAll( + \\ + \\ + \\ + ); + for (ui_files) |ui_file| { + try writer.print( + " src/apprt/gtk/ui/{0s}.ui\n", + .{ui_file}, + ); + } + for (extra_ui_files.items) |ui_file| { + try writer.print( + " {s}\n", + .{ std.fs.path.basename(ui_file), ui_file }, + ); + } try writer.writeAll( \\ \\ @@ -107,12 +125,24 @@ fn writeGResourceXML(writer: anytype) !void { } pub const dependencies = deps: { - var deps: [css_files.len + icons.len][]const u8 = undefined; - for (css_files, 0..) |css_file, i| { - deps[i] = std.fmt.comptimePrint("src/apprt/gtk/{s}", .{css_file}); + const total = css_files.len + icons.len + ui_files.len + blueprint_files.len; + var deps: [total][]const u8 = undefined; + var index: usize = 0; + for (css_files) |css_file| { + deps[index] = std.fmt.comptimePrint("src/apprt/gtk/{s}", .{css_file}); + index += 1; } - for (icons, css_files.len..) |icon, i| { - deps[i] = std.fmt.comptimePrint("images/icons/icon_{s}.png", .{icon.source}); + for (icons) |icon| { + deps[index] = std.fmt.comptimePrint("images/icons/icon_{s}.png", .{icon.source}); + index += 1; + } + for (ui_files) |ui_file| { + deps[index] = std.fmt.comptimePrint("src/apprt/gtk/ui/{s}.ui", .{ui_file}); + index += 1; + } + for (blueprint_files) |blueprint_file| { + deps[index] = std.fmt.comptimePrint("src/apprt/gtk/ui/{s}.blp", .{blueprint_file}); + index += 1; } break :deps deps; }; diff --git a/src/apprt/gtk/headerbar.zig b/src/apprt/gtk/headerbar.zig index 0f7f15bf8..8f4c58fc4 100644 --- a/src/apprt/gtk/headerbar.zig +++ b/src/apprt/gtk/headerbar.zig @@ -1,58 +1,59 @@ +const HeaderBar = @This(); + const std = @import("std"); const c = @import("c.zig").c; const Window = @import("Window.zig"); -const adwaita = @import("adwaita.zig"); -const HeaderBarAdw = @import("headerbar_adw.zig"); -const HeaderBarGtk = @import("headerbar_gtk.zig"); +/// the Adwaita headerbar widget +headerbar: *c.AdwHeaderBar, -pub const HeaderBar = union(enum) { - adw: HeaderBarAdw, - gtk: HeaderBarGtk, +/// the Adwaita window title widget +title: *c.AdwWindowTitle, - pub fn init(self: *HeaderBar) void { - const window: *Window = @fieldParentPtr("headerbar", self); - if ((comptime adwaita.versionAtLeast(1, 4, 0)) and adwaita.enabled(&window.app.config)) { - HeaderBarAdw.init(self); - } else { - HeaderBarGtk.init(self); - } - } +pub fn init(self: *HeaderBar) void { + const window: *Window = @fieldParentPtr("headerbar", self); + self.* = .{ + .headerbar = @ptrCast(@alignCast(c.adw_header_bar_new())), + .title = @ptrCast(@alignCast(c.adw_window_title_new( + c.gtk_window_get_title(window.window) orelse "Ghostty", + null, + ))), + }; + c.adw_header_bar_set_title_widget( + self.headerbar, + @ptrCast(@alignCast(self.title)), + ); +} - pub fn setVisible(self: HeaderBar, visible: bool) void { - switch (self) { - inline else => |v| v.setVisible(visible), - } - } +pub fn setVisible(self: *const HeaderBar, visible: bool) void { + c.gtk_widget_set_visible(self.asWidget(), @intFromBool(visible)); +} - pub fn asWidget(self: HeaderBar) *c.GtkWidget { - return switch (self) { - inline else => |v| v.asWidget(), - }; - } +pub fn asWidget(self: *const HeaderBar) *c.GtkWidget { + return @ptrCast(@alignCast(self.headerbar)); +} - pub fn packEnd(self: HeaderBar, widget: *c.GtkWidget) void { - switch (self) { - inline else => |v| v.packEnd(widget), - } - } +pub fn packEnd(self: *const HeaderBar, widget: *c.GtkWidget) void { + c.adw_header_bar_pack_end( + @ptrCast(@alignCast(self.headerbar)), + widget, + ); +} - pub fn packStart(self: HeaderBar, widget: *c.GtkWidget) void { - switch (self) { - inline else => |v| v.packStart(widget), - } - } +pub fn packStart(self: *const HeaderBar, widget: *c.GtkWidget) void { + c.adw_header_bar_pack_start( + @ptrCast(@alignCast(self.headerbar)), + widget, + ); +} - pub fn setTitle(self: HeaderBar, title: [:0]const u8) void { - switch (self) { - inline else => |v| v.setTitle(title), - } - } +pub fn setTitle(self: *const HeaderBar, title: [:0]const u8) void { + const window: *const Window = @fieldParentPtr("headerbar", self); + c.gtk_window_set_title(window.window, title); + c.adw_window_title_set_title(self.title, title); +} - pub fn setSubtitle(self: HeaderBar, subtitle: [:0]const u8) void { - switch (self) { - inline else => |v| v.setSubtitle(subtitle), - } - } -}; +pub fn setSubtitle(self: *const HeaderBar, subtitle: [:0]const u8) void { + c.adw_window_title_set_subtitle(self.title, subtitle); +} diff --git a/src/apprt/gtk/headerbar_adw.zig b/src/apprt/gtk/headerbar_adw.zig deleted file mode 100644 index 1ae23e6d9..000000000 --- a/src/apprt/gtk/headerbar_adw.zig +++ /dev/null @@ -1,78 +0,0 @@ -const HeaderBarAdw = @This(); - -const std = @import("std"); -const c = @import("c.zig").c; - -const Window = @import("Window.zig"); -const adwaita = @import("adwaita.zig"); - -const HeaderBar = @import("headerbar.zig").HeaderBar; - -const AdwHeaderBar = if (adwaita.versionAtLeast(0, 0, 0)) c.AdwHeaderBar else anyopaque; -const AdwWindowTitle = if (adwaita.versionAtLeast(0, 0, 0)) c.AdwWindowTitle else anyopaque; - -/// the window that this headerbar is attached to -window: *Window, -/// the Adwaita headerbar widget -headerbar: *AdwHeaderBar, -/// the Adwaita window title widget -title: *AdwWindowTitle, - -pub fn init(headerbar: *HeaderBar) void { - if (!adwaita.versionAtLeast(0, 0, 0)) return; - - const window: *Window = @fieldParentPtr("headerbar", headerbar); - headerbar.* = .{ - .adw = .{ - .window = window, - .headerbar = @ptrCast(@alignCast(c.adw_header_bar_new())), - .title = @ptrCast(@alignCast(c.adw_window_title_new( - c.gtk_window_get_title(window.window) orelse "Ghostty", - null, - ))), - }, - }; - c.adw_header_bar_set_title_widget( - headerbar.adw.headerbar, - @ptrCast(@alignCast(headerbar.adw.title)), - ); -} - -pub fn setVisible(self: HeaderBarAdw, visible: bool) void { - c.gtk_widget_set_visible(self.asWidget(), @intFromBool(visible)); -} - -pub fn asWidget(self: HeaderBarAdw) *c.GtkWidget { - return @ptrCast(@alignCast(self.headerbar)); -} - -pub fn packEnd(self: HeaderBarAdw, widget: *c.GtkWidget) void { - if (comptime adwaita.versionAtLeast(0, 0, 0)) { - c.adw_header_bar_pack_end( - @ptrCast(@alignCast(self.headerbar)), - widget, - ); - } -} - -pub fn packStart(self: HeaderBarAdw, widget: *c.GtkWidget) void { - if (comptime adwaita.versionAtLeast(0, 0, 0)) { - c.adw_header_bar_pack_start( - @ptrCast(@alignCast(self.headerbar)), - widget, - ); - } -} - -pub fn setTitle(self: HeaderBarAdw, title: [:0]const u8) void { - c.gtk_window_set_title(self.window.window, title); - if (comptime adwaita.versionAtLeast(0, 0, 0)) { - c.adw_window_title_set_title(self.title, title); - } -} - -pub fn setSubtitle(self: HeaderBarAdw, subtitle: [:0]const u8) void { - if (comptime adwaita.versionAtLeast(0, 0, 0)) { - c.adw_window_title_set_subtitle(self.title, subtitle); - } -} diff --git a/src/apprt/gtk/headerbar_gtk.zig b/src/apprt/gtk/headerbar_gtk.zig deleted file mode 100644 index 63ba8b389..000000000 --- a/src/apprt/gtk/headerbar_gtk.zig +++ /dev/null @@ -1,52 +0,0 @@ -const HeaderBarGtk = @This(); - -const std = @import("std"); -const c = @import("c.zig").c; - -const Window = @import("Window.zig"); -const adwaita = @import("adwaita.zig"); - -const HeaderBar = @import("headerbar.zig").HeaderBar; - -/// the window that this headarbar is attached to -window: *Window, -/// the GTK headerbar widget -headerbar: *c.GtkHeaderBar, - -pub fn init(headerbar: *HeaderBar) void { - const window: *Window = @fieldParentPtr("headerbar", headerbar); - headerbar.* = .{ - .gtk = .{ - .window = window, - .headerbar = @ptrCast(c.gtk_header_bar_new()), - }, - }; -} - -pub fn setVisible(self: HeaderBarGtk, visible: bool) void { - c.gtk_widget_set_visible(self.asWidget(), @intFromBool(visible)); -} - -pub fn asWidget(self: HeaderBarGtk) *c.GtkWidget { - return @ptrCast(@alignCast(self.headerbar)); -} - -pub fn packEnd(self: HeaderBarGtk, widget: *c.GtkWidget) void { - c.gtk_header_bar_pack_end( - @ptrCast(@alignCast(self.headerbar)), - widget, - ); -} - -pub fn packStart(self: HeaderBarGtk, widget: *c.GtkWidget) void { - c.gtk_header_bar_pack_start( - @ptrCast(@alignCast(self.headerbar)), - widget, - ); -} - -pub fn setTitle(self: HeaderBarGtk, title: [:0]const u8) void { - c.gtk_window_set_title(self.window.window, title); -} - -pub fn setSubtitle(_: HeaderBarGtk, _: [:0]const u8) void {} diff --git a/src/apprt/gtk/notebook.zig b/src/apprt/gtk/notebook.zig deleted file mode 100644 index 4676c2529..000000000 --- a/src/apprt/gtk/notebook.zig +++ /dev/null @@ -1,169 +0,0 @@ -const std = @import("std"); -const assert = std.debug.assert; -const c = @import("c.zig").c; - -const Window = @import("Window.zig"); -const Tab = @import("Tab.zig"); -const NotebookAdw = @import("notebook_adw.zig").NotebookAdw; -const NotebookGtk = @import("notebook_gtk.zig").NotebookGtk; -const adwaita = @import("adwaita.zig"); - -const log = std.log.scoped(.gtk); - -const AdwTabView = if (adwaita.versionAtLeast(0, 0, 0)) c.AdwTabView else anyopaque; - -/// An abstraction over the GTK notebook and Adwaita tab view to manage -/// all the terminal tabs in a window. -/// An abstraction over the GTK notebook and Adwaita tab view to manage -/// all the terminal tabs in a window. -pub const Notebook = union(enum) { - adw: NotebookAdw, - gtk: NotebookGtk, - - pub fn init(self: *Notebook) void { - const window: *Window = @fieldParentPtr("notebook", self); - const app = window.app; - if (adwaita.enabled(&app.config)) return NotebookAdw.init(self); - - return NotebookGtk.init(self); - } - - pub fn asWidget(self: *Notebook) *c.GtkWidget { - return switch (self.*) { - .adw => |*adw| adw.asWidget(), - .gtk => |*gtk| gtk.asWidget(), - }; - } - - pub fn nPages(self: *Notebook) c_int { - return switch (self.*) { - .adw => |*adw| adw.nPages(), - .gtk => |*gtk| gtk.nPages(), - }; - } - - /// Returns the index of the currently selected page. - /// Returns null if the notebook has no pages. - fn currentPage(self: *Notebook) ?c_int { - return switch (self.*) { - .adw => |*adw| adw.currentPage(), - .gtk => |*gtk| gtk.currentPage(), - }; - } - - /// Returns the currently selected tab or null if there are none. - pub fn currentTab(self: *Notebook) ?*Tab { - return switch (self.*) { - .adw => |*adw| adw.currentTab(), - .gtk => |*gtk| gtk.currentTab(), - }; - } - - pub fn gotoNthTab(self: *Notebook, position: c_int) void { - switch (self.*) { - .adw => |*adw| adw.gotoNthTab(position), - .gtk => |*gtk| gtk.gotoNthTab(position), - } - } - - pub fn getTabPosition(self: *Notebook, tab: *Tab) ?c_int { - return switch (self.*) { - .adw => |*adw| adw.getTabPosition(tab), - .gtk => |*gtk| gtk.getTabPosition(tab), - }; - } - - pub fn gotoPreviousTab(self: *Notebook, tab: *Tab) void { - const page_idx = self.getTabPosition(tab) orelse return; - - // The next index is the previous or we wrap around. - const next_idx = if (page_idx > 0) page_idx - 1 else next_idx: { - const max = self.nPages(); - break :next_idx max -| 1; - }; - - // Do nothing if we have one tab - if (next_idx == page_idx) return; - - self.gotoNthTab(next_idx); - } - - pub fn gotoNextTab(self: *Notebook, tab: *Tab) void { - const page_idx = self.getTabPosition(tab) orelse return; - - const max = self.nPages() -| 1; - const next_idx = if (page_idx < max) page_idx + 1 else 0; - if (next_idx == page_idx) return; - - self.gotoNthTab(next_idx); - } - - pub fn moveTab(self: *Notebook, tab: *Tab, position: c_int) void { - const page_idx = self.getTabPosition(tab) orelse return; - - const max = self.nPages() -| 1; - var new_position: c_int = page_idx + position; - - if (new_position < 0) { - new_position = max + new_position + 1; - } else if (new_position > max) { - new_position = new_position - max - 1; - } - - if (new_position == page_idx) return; - self.reorderPage(tab, new_position); - } - - pub fn reorderPage(self: *Notebook, tab: *Tab, position: c_int) void { - switch (self.*) { - .adw => |*adw| adw.reorderPage(tab, position), - .gtk => |*gtk| gtk.reorderPage(tab, position), - } - } - - pub fn setTabLabel(self: *Notebook, tab: *Tab, title: [:0]const u8) void { - switch (self.*) { - .adw => |*adw| adw.setTabLabel(tab, title), - .gtk => |*gtk| gtk.setTabLabel(tab, title), - } - } - - pub fn setTabTooltip(self: *Notebook, tab: *Tab, tooltip: [:0]const u8) void { - switch (self.*) { - .adw => |*adw| adw.setTabTooltip(tab, tooltip), - .gtk => |*gtk| gtk.setTabTooltip(tab, tooltip), - } - } - - fn newTabInsertPosition(self: *Notebook, tab: *Tab) c_int { - const numPages = self.nPages(); - return switch (tab.window.app.config.@"window-new-tab-position") { - .current => if (self.currentPage()) |page| page + 1 else numPages, - .end => numPages, - }; - } - - /// Adds a new tab with the given title to the notebook. - pub fn addTab(self: *Notebook, tab: *Tab, title: [:0]const u8) void { - const position = self.newTabInsertPosition(tab); - switch (self.*) { - .adw => |*adw| adw.addTab(tab, position, title), - .gtk => |*gtk| gtk.addTab(tab, position, title), - } - } - - pub fn closeTab(self: *Notebook, tab: *Tab) void { - switch (self.*) { - .adw => |*adw| adw.closeTab(tab), - .gtk => |*gtk| gtk.closeTab(tab), - } - } -}; - -pub fn createWindow(currentWindow: *Window) !*Window { - const alloc = currentWindow.app.core_app.alloc; - const app = currentWindow.app; - - // Create a new window - return Window.create(alloc, app); -} diff --git a/src/apprt/gtk/notebook_adw.zig b/src/apprt/gtk/notebook_adw.zig deleted file mode 100644 index 790b3aa35..000000000 --- a/src/apprt/gtk/notebook_adw.zig +++ /dev/null @@ -1,209 +0,0 @@ -const std = @import("std"); -const assert = std.debug.assert; -const c = @import("c.zig").c; - -const Window = @import("Window.zig"); -const Tab = @import("Tab.zig"); -const Notebook = @import("notebook.zig").Notebook; -const createWindow = @import("notebook.zig").createWindow; -const adwaita = @import("adwaita.zig"); - -const log = std.log.scoped(.gtk); - -const AdwTabView = if (adwaita.versionAtLeast(0, 0, 0)) c.AdwTabView else anyopaque; -const AdwTabPage = if (adwaita.versionAtLeast(0, 0, 0)) c.AdwTabPage else anyopaque; - -pub const NotebookAdw = struct { - /// the tab view - tab_view: *AdwTabView, - - /// Set to true so that the adw close-page handler knows we're forcing - /// and to allow a close to happen with no confirm. This is a bit of a hack - /// because we currently use GTK alerts to confirm tab close and they - /// don't carry with them the ADW state that we are confirming or not. - /// Long term we should move to ADW alerts so we can know if we are - /// confirming or not. - forcing_close: bool = false, - - pub fn init(notebook: *Notebook) void { - const window: *Window = @fieldParentPtr("notebook", notebook); - const app = window.app; - assert(adwaita.enabled(&app.config)); - - const tab_view: *c.AdwTabView = c.adw_tab_view_new().?; - c.gtk_widget_add_css_class(@ptrCast(@alignCast(tab_view)), "notebook"); - - if (comptime adwaita.versionAtLeast(1, 2, 0) and adwaita.versionAtLeast(1, 2, 0)) { - // Adwaita enables all of the shortcuts by default. - // We want to manage keybindings ourselves. - c.adw_tab_view_remove_shortcuts(tab_view, c.ADW_TAB_VIEW_SHORTCUT_ALL_SHORTCUTS); - } - - notebook.* = .{ - .adw = .{ - .tab_view = tab_view, - }, - }; - - _ = c.g_signal_connect_data(tab_view, "page-attached", c.G_CALLBACK(&adwPageAttached), window, null, c.G_CONNECT_DEFAULT); - _ = c.g_signal_connect_data(tab_view, "close-page", c.G_CALLBACK(&adwClosePage), window, null, c.G_CONNECT_DEFAULT); - _ = c.g_signal_connect_data(tab_view, "create-window", c.G_CALLBACK(&adwTabViewCreateWindow), window, null, c.G_CONNECT_DEFAULT); - _ = c.g_signal_connect_data(tab_view, "notify::selected-page", c.G_CALLBACK(&adwSelectPage), window, null, c.G_CONNECT_DEFAULT); - } - - pub fn asWidget(self: *NotebookAdw) *c.GtkWidget { - return @ptrCast(@alignCast(self.tab_view)); - } - - pub fn nPages(self: *NotebookAdw) c_int { - if (comptime adwaita.versionAtLeast(0, 0, 0)) - return c.adw_tab_view_get_n_pages(self.tab_view) - else - unreachable; - } - - /// Returns the index of the currently selected page. - /// Returns null if the notebook has no pages. - pub fn currentPage(self: *NotebookAdw) ?c_int { - if (comptime !adwaita.versionAtLeast(0, 0, 0)) unreachable; - const page = c.adw_tab_view_get_selected_page(self.tab_view) orelse return null; - return c.adw_tab_view_get_page_position(self.tab_view, page); - } - - /// Returns the currently selected tab or null if there are none. - pub fn currentTab(self: *NotebookAdw) ?*Tab { - if (comptime !adwaita.versionAtLeast(0, 0, 0)) unreachable; - const page = c.adw_tab_view_get_selected_page(self.tab_view) orelse return null; - const child = c.adw_tab_page_get_child(page); - return @ptrCast(@alignCast( - c.g_object_get_data(@ptrCast(child), Tab.GHOSTTY_TAB) orelse return null, - )); - } - - pub fn gotoNthTab(self: *NotebookAdw, position: c_int) void { - if (comptime !adwaita.versionAtLeast(0, 0, 0)) unreachable; - const page_to_select = c.adw_tab_view_get_nth_page(self.tab_view, position); - c.adw_tab_view_set_selected_page(self.tab_view, page_to_select); - } - - pub fn getTabPosition(self: *NotebookAdw, tab: *Tab) ?c_int { - if (comptime !adwaita.versionAtLeast(0, 0, 0)) unreachable; - const page = c.adw_tab_view_get_page(self.tab_view, @ptrCast(tab.box)) orelse return null; - return c.adw_tab_view_get_page_position(self.tab_view, page); - } - - pub fn reorderPage(self: *NotebookAdw, tab: *Tab, position: c_int) void { - if (comptime !adwaita.versionAtLeast(0, 0, 0)) unreachable; - const page = c.adw_tab_view_get_page(self.tab_view, @ptrCast(tab.box)); - _ = c.adw_tab_view_reorder_page(self.tab_view, page, position); - } - - pub fn setTabLabel(self: *NotebookAdw, tab: *Tab, title: [:0]const u8) void { - if (comptime !adwaita.versionAtLeast(0, 0, 0)) unreachable; - const page = c.adw_tab_view_get_page(self.tab_view, @ptrCast(tab.box)); - c.adw_tab_page_set_title(page, title.ptr); - } - - pub fn setTabTooltip(self: *NotebookAdw, tab: *Tab, tooltip: [:0]const u8) void { - if (comptime !adwaita.versionAtLeast(0, 0, 0)) unreachable; - const page = c.adw_tab_view_get_page(self.tab_view, @ptrCast(tab.box)); - c.adw_tab_page_set_tooltip(page, tooltip.ptr); - } - - pub fn addTab(self: *NotebookAdw, tab: *Tab, position: c_int, title: [:0]const u8) void { - if (comptime !adwaita.versionAtLeast(0, 0, 0)) unreachable; - const box_widget: *c.GtkWidget = @ptrCast(tab.box); - const page = c.adw_tab_view_insert(self.tab_view, box_widget, position); - c.adw_tab_page_set_title(page, title.ptr); - c.adw_tab_view_set_selected_page(self.tab_view, page); - } - - pub fn closeTab(self: *NotebookAdw, tab: *Tab) void { - if (comptime !adwaita.versionAtLeast(0, 0, 0)) unreachable; - - // closeTab always expects to close unconditionally so we mark this - // as true so that the close_page call below doesn't request - // confirmation. - self.forcing_close = true; - const n = self.nPages(); - defer { - // self becomes invalid if we close the last page because we close - // the whole window - if (n > 1) self.forcing_close = false; - } - - const page = c.adw_tab_view_get_page(self.tab_view, @ptrCast(tab.box)) orelse return; - c.adw_tab_view_close_page(self.tab_view, page); - - // If we have no more tabs we close the window - if (self.nPages() == 0) { - const window = tab.window.window; - - // libadw versions <= 1.3.x leak the final page view - // which causes our surface to not properly cleanup. We - // unref to force the cleanup. This will trigger a critical - // warning from GTK, but I don't know any other workaround. - // Note: I'm not actually sure if 1.4.0 contains the fix, - // I just know that 1.3.x is broken and 1.5.1 is fixed. - // If we know that 1.4.0 is fixed, we can change this. - if (!adwaita.versionAtLeast(1, 4, 0)) { - c.g_object_unref(tab.box); - } - - // `self` will become invalid after this call because it will have - // been freed up as part of the process of closing the window. - c.gtk_window_destroy(window); - } - } -}; - -fn adwPageAttached(_: *AdwTabView, page: *c.AdwTabPage, _: c_int, ud: ?*anyopaque) callconv(.C) void { - const window: *Window = @ptrCast(@alignCast(ud.?)); - - const child = c.adw_tab_page_get_child(page); - const tab: *Tab = @ptrCast(@alignCast(c.g_object_get_data(@ptrCast(child), Tab.GHOSTTY_TAB) orelse return)); - tab.window = window; - - window.focusCurrentTab(); -} - -fn adwClosePage( - _: *AdwTabView, - page: *c.AdwTabPage, - ud: ?*anyopaque, -) callconv(.C) c.gboolean { - const child = c.adw_tab_page_get_child(page); - const tab: *Tab = @ptrCast(@alignCast(c.g_object_get_data( - @ptrCast(child), - Tab.GHOSTTY_TAB, - ) orelse return 0)); - - const window: *Window = @ptrCast(@alignCast(ud.?)); - const notebook = window.notebook.adw; - c.adw_tab_view_close_page_finish( - notebook.tab_view, - page, - @intFromBool(notebook.forcing_close), - ); - if (!notebook.forcing_close) tab.closeWithConfirmation(); - return 1; -} - -fn adwTabViewCreateWindow( - _: *AdwTabView, - ud: ?*anyopaque, -) callconv(.C) ?*AdwTabView { - const currentWindow: *Window = @ptrCast(@alignCast(ud.?)); - const window = createWindow(currentWindow) catch |err| { - log.warn("error creating new window error={}", .{err}); - return null; - }; - return window.notebook.adw.tab_view; -} - -fn adwSelectPage(_: *c.GObject, _: *c.GParamSpec, ud: ?*anyopaque) void { - const window: *Window = @ptrCast(@alignCast(ud.?)); - const page = c.adw_tab_view_get_selected_page(window.notebook.adw.tab_view) orelse return; - const title = c.adw_tab_page_get_title(page); - window.setTitle(std.mem.span(title)); -} diff --git a/src/apprt/gtk/notebook_gtk.zig b/src/apprt/gtk/notebook_gtk.zig deleted file mode 100644 index 5f145dc84..000000000 --- a/src/apprt/gtk/notebook_gtk.zig +++ /dev/null @@ -1,304 +0,0 @@ -const std = @import("std"); -const assert = std.debug.assert; -const c = @import("c.zig").c; - -const Window = @import("Window.zig"); -const Tab = @import("Tab.zig"); -const Notebook = @import("notebook.zig").Notebook; -const createWindow = @import("notebook.zig").createWindow; - -const log = std.log.scoped(.gtk); - -/// An abstraction over the GTK notebook and Adwaita tab view to manage -/// all the terminal tabs in a window. -pub const NotebookGtk = struct { - notebook: *c.GtkNotebook, - - pub fn init(notebook: *Notebook) void { - const window: *Window = @fieldParentPtr("notebook", notebook); - const app = window.app; - - // Create a notebook to hold our tabs. - const notebook_widget: *c.GtkWidget = c.gtk_notebook_new(); - c.gtk_widget_add_css_class(notebook_widget, "notebook"); - - const gtk_notebook: *c.GtkNotebook = @ptrCast(notebook_widget); - const notebook_tab_pos: c_uint = switch (app.config.@"gtk-tabs-location") { - .top, .hidden => c.GTK_POS_TOP, - .bottom => c.GTK_POS_BOTTOM, - .left => c.GTK_POS_LEFT, - .right => c.GTK_POS_RIGHT, - }; - c.gtk_notebook_set_tab_pos(gtk_notebook, notebook_tab_pos); - c.gtk_notebook_set_scrollable(gtk_notebook, 1); - c.gtk_notebook_set_show_tabs(gtk_notebook, 0); - c.gtk_notebook_set_show_border(gtk_notebook, 0); - - // This enables all Ghostty terminal tabs to be exchanged across windows. - c.gtk_notebook_set_group_name(gtk_notebook, "ghostty-terminal-tabs"); - - // This is important so the notebook expands to fit available space. - // Otherwise, it will be zero/zero in the box below. - c.gtk_widget_set_vexpand(notebook_widget, 1); - c.gtk_widget_set_hexpand(notebook_widget, 1); - - // Remove the background from the stack widget - const stack = c.gtk_widget_get_last_child(notebook_widget); - c.gtk_widget_add_css_class(stack, "transparent"); - - notebook.* = .{ - .gtk = .{ - .notebook = gtk_notebook, - }, - }; - - // All of our events - _ = c.g_signal_connect_data(gtk_notebook, "page-added", c.G_CALLBACK(>kPageAdded), window, null, c.G_CONNECT_DEFAULT); - _ = c.g_signal_connect_data(gtk_notebook, "page-removed", c.G_CALLBACK(>kPageRemoved), window, null, c.G_CONNECT_DEFAULT); - _ = c.g_signal_connect_data(gtk_notebook, "switch-page", c.G_CALLBACK(>kSwitchPage), window, null, c.G_CONNECT_DEFAULT); - _ = c.g_signal_connect_data(gtk_notebook, "create-window", c.G_CALLBACK(>kNotebookCreateWindow), window, null, c.G_CONNECT_DEFAULT); - } - - /// return the underlying widget as a generic GtkWidget - pub fn asWidget(self: *NotebookGtk) *c.GtkWidget { - return @ptrCast(@alignCast(self.notebook)); - } - - /// returns the number of pages in the notebook - pub fn nPages(self: *NotebookGtk) c_int { - return c.gtk_notebook_get_n_pages(self.notebook); - } - - /// Returns the index of the currently selected page. - /// Returns null if the notebook has no pages. - pub fn currentPage(self: *NotebookGtk) ?c_int { - const current = c.gtk_notebook_get_current_page(self.notebook); - return if (current == -1) null else current; - } - - /// Returns the currently selected tab or null if there are none. - pub fn currentTab(self: *NotebookGtk) ?*Tab { - log.warn("currentTab", .{}); - const page = self.currentPage() orelse return null; - const child = c.gtk_notebook_get_nth_page(self.notebook, page); - return @ptrCast(@alignCast( - c.g_object_get_data(@ptrCast(child), Tab.GHOSTTY_TAB) orelse return null, - )); - } - - /// focus the nth tab - pub fn gotoNthTab(self: *NotebookGtk, position: c_int) void { - c.gtk_notebook_set_current_page(self.notebook, position); - } - - /// get the position of the current tab - pub fn getTabPosition(self: *NotebookGtk, tab: *Tab) ?c_int { - const page = c.gtk_notebook_get_page(self.notebook, @ptrCast(tab.box)) orelse return null; - return getNotebookPageIndex(page); - } - - pub fn reorderPage(self: *NotebookGtk, tab: *Tab, position: c_int) void { - c.gtk_notebook_reorder_child(self.notebook, @ptrCast(tab.box), position); - } - - pub fn setTabLabel(_: *NotebookGtk, tab: *Tab, title: [:0]const u8) void { - c.gtk_label_set_text(tab.label_text, title.ptr); - } - - pub fn setTabTooltip(_: *NotebookGtk, tab: *Tab, tooltip: [:0]const u8) void { - c.gtk_widget_set_tooltip_text(@ptrCast(@alignCast(tab.label_text)), tooltip.ptr); - } - - /// Adds a new tab with the given title to the notebook. - pub fn addTab(self: *NotebookGtk, tab: *Tab, position: c_int, title: [:0]const u8) void { - const box_widget: *c.GtkWidget = @ptrCast(tab.box); - - // Build the tab label - const label_box_widget = c.gtk_box_new(c.GTK_ORIENTATION_HORIZONTAL, 0); - const label_box = @as(*c.GtkBox, @ptrCast(label_box_widget)); - const label_text_widget = c.gtk_label_new(title.ptr); - const label_text: *c.GtkLabel = @ptrCast(label_text_widget); - c.gtk_box_append(label_box, label_text_widget); - tab.label_text = label_text; - - const window = tab.window; - if (window.app.config.@"gtk-wide-tabs") { - c.gtk_widget_set_hexpand(label_box_widget, 1); - c.gtk_widget_set_halign(label_box_widget, c.GTK_ALIGN_FILL); - c.gtk_widget_set_hexpand(label_text_widget, 1); - c.gtk_widget_set_halign(label_text_widget, c.GTK_ALIGN_FILL); - - // This ensures that tabs are always equal width. If they're too - // long, they'll be truncated with an ellipsis. - c.gtk_label_set_max_width_chars(label_text, 1); - c.gtk_label_set_ellipsize(label_text, c.PANGO_ELLIPSIZE_END); - - // We need to set a minimum width so that at a certain point - // the notebook will have an arrow button rather than shrinking tabs - // to an unreadably small size. - c.gtk_widget_set_size_request(label_text_widget, 100, 1); - } - - // Build the close button for the tab - const label_close_widget = c.gtk_button_new_from_icon_name("window-close-symbolic"); - const label_close: *c.GtkButton = @ptrCast(label_close_widget); - c.gtk_button_set_has_frame(label_close, 0); - c.gtk_box_append(label_box, label_close_widget); - - const page_idx = c.gtk_notebook_insert_page( - self.notebook, - box_widget, - label_box_widget, - position, - ); - - // Clicks - const gesture_tab_click = c.gtk_gesture_click_new(); - c.gtk_gesture_single_set_button(@ptrCast(gesture_tab_click), 0); - c.gtk_widget_add_controller(label_box_widget, @ptrCast(gesture_tab_click)); - - _ = c.g_signal_connect_data(label_close, "clicked", c.G_CALLBACK(>kTabCloseClick), tab, null, c.G_CONNECT_DEFAULT); - _ = c.g_signal_connect_data(gesture_tab_click, "pressed", c.G_CALLBACK(>kTabClick), tab, null, c.G_CONNECT_DEFAULT); - - // Tab settings - c.gtk_notebook_set_tab_reorderable(self.notebook, box_widget, 1); - c.gtk_notebook_set_tab_detachable(self.notebook, box_widget, 1); - - if (self.nPages() > 1) { - c.gtk_notebook_set_show_tabs(self.notebook, 1); - } - - // Switch to the new tab - c.gtk_notebook_set_current_page(self.notebook, page_idx); - } - - pub fn closeTab(self: *NotebookGtk, tab: *Tab) void { - const page = c.gtk_notebook_get_page(self.notebook, @ptrCast(tab.box)) orelse return; - - // Find page and tab which we're closing - const page_idx = getNotebookPageIndex(page); - - // Remove the page. This will destroy the GTK widgets in the page which - // will trigger Tab cleanup. The `tab` variable is therefore unusable past that point. - c.gtk_notebook_remove_page(self.notebook, page_idx); - - const remaining = self.nPages(); - switch (remaining) { - // If we have no more tabs we close the window - 0 => c.gtk_window_destroy(tab.window.window), - - // If we have one more tab we hide the tab bar - 1 => c.gtk_notebook_set_show_tabs(self.notebook, 0), - - else => {}, - } - - // If we have remaining tabs, we need to make sure we grab focus. - if (remaining > 0) - (self.currentTab() orelse return).window.focusCurrentTab(); - } -}; - -fn getNotebookPageIndex(page: *c.GtkNotebookPage) c_int { - var value: c.GValue = std.mem.zeroes(c.GValue); - defer c.g_value_unset(&value); - _ = c.g_value_init(&value, c.G_TYPE_INT); - c.g_object_get_property( - @ptrCast(@alignCast(page)), - "position", - &value, - ); - - return c.g_value_get_int(&value); -} - -fn gtkPageAdded( - notebook: *c.GtkNotebook, - _: *c.GtkWidget, - page_idx: c.guint, - ud: ?*anyopaque, -) callconv(.C) void { - const self: *Window = @ptrCast(@alignCast(ud.?)); - - // The added page can come from another window with drag and drop, thus we migrate the tab - // window to be self. - const page = c.gtk_notebook_get_nth_page(notebook, @intCast(page_idx)); - const tab: *Tab = @ptrCast(@alignCast( - c.g_object_get_data(@ptrCast(page), Tab.GHOSTTY_TAB) orelse return, - )); - tab.window = self; - - // Whenever a new page is added, we always grab focus of the - // currently selected page. This was added specifically so that when - // we drag a tab out to create a new window ("create-window" event) - // we grab focus in the new window. Without this, the terminal didn't - // have focus. - self.focusCurrentTab(); -} - -fn gtkPageRemoved( - _: *c.GtkNotebook, - _: *c.GtkWidget, - _: c.guint, - ud: ?*anyopaque, -) callconv(.C) void { - log.warn("gtkPageRemoved", .{}); - const window: *Window = @ptrCast(@alignCast(ud.?)); - - // Hide the tab bar if we only have one tab after removal - const remaining = c.gtk_notebook_get_n_pages(window.notebook.gtk.notebook); - - if (remaining == 1) { - c.gtk_notebook_set_show_tabs(window.notebook.gtk.notebook, 0); - } -} - -fn gtkSwitchPage(_: *c.GtkNotebook, page: *c.GtkWidget, _: usize, ud: ?*anyopaque) callconv(.C) void { - const window: *Window = @ptrCast(@alignCast(ud.?)); - const self = &window.notebook.gtk; - const gtk_label_box = @as(*c.GtkWidget, @ptrCast(c.gtk_notebook_get_tab_label(self.notebook, page))); - const gtk_label = @as(*c.GtkLabel, @ptrCast(c.gtk_widget_get_first_child(gtk_label_box))); - const label_text = c.gtk_label_get_text(gtk_label); - window.setTitle(std.mem.span(label_text)); -} - -fn gtkNotebookCreateWindow( - _: *c.GtkNotebook, - page: *c.GtkWidget, - ud: ?*anyopaque, -) callconv(.C) ?*c.GtkNotebook { - // The tab for the page is stored in the widget data. - const tab: *Tab = @ptrCast(@alignCast( - c.g_object_get_data(@ptrCast(page), Tab.GHOSTTY_TAB) orelse return null, - )); - - const currentWindow: *Window = @ptrCast(@alignCast(ud.?)); - const newWindow = createWindow(currentWindow) catch |err| { - log.warn("error creating new window error={}", .{err}); - return null; - }; - - // And add it to the new window. - tab.window = newWindow; - - return newWindow.notebook.gtk.notebook; -} - -fn gtkTabCloseClick(_: *c.GtkButton, ud: ?*anyopaque) callconv(.C) void { - const tab: *Tab = @ptrCast(@alignCast(ud)); - tab.closeWithConfirmation(); -} - -fn gtkTabClick( - gesture: *c.GtkGestureClick, - _: c.gint, - _: c.gdouble, - _: c.gdouble, - ud: ?*anyopaque, -) callconv(.C) void { - const self: *Tab = @ptrCast(@alignCast(ud)); - const gtk_button = c.gtk_gesture_single_get_current_button(@ptrCast(gesture)); - if (gtk_button == c.GDK_BUTTON_MIDDLE) { - self.closeWithConfirmation(); - } -} diff --git a/src/apprt/gtk/winproto.zig b/src/apprt/gtk/winproto.zig index e6020f49e..c752ee692 100644 --- a/src/apprt/gtk/winproto.zig +++ b/src/apprt/gtk/winproto.zig @@ -131,4 +131,10 @@ pub const Window = union(Protocol) { inline else => |v| v.clientSideDecorationEnabled(), }; } + + pub fn addSubprocessEnv(self: *Window, env: *std.process.EnvMap) !void { + switch (self.*) { + inline else => |*v| try v.addSubprocessEnv(env), + } + } }; diff --git a/src/apprt/gtk/winproto/noop.zig b/src/apprt/gtk/winproto/noop.zig index 38703aecb..cb1c0e9eb 100644 --- a/src/apprt/gtk/winproto/noop.zig +++ b/src/apprt/gtk/winproto/noop.zig @@ -61,4 +61,6 @@ pub const Window = struct { _ = self; return true; } + + pub fn addSubprocessEnv(_: *Window, _: *std.process.EnvMap) !void {} }; diff --git a/src/apprt/gtk/winproto/wayland.zig b/src/apprt/gtk/winproto/wayland.zig index 3e239eb29..f2ef17d73 100644 --- a/src/apprt/gtk/winproto/wayland.zig +++ b/src/apprt/gtk/winproto/wayland.zig @@ -262,6 +262,11 @@ pub const Window = struct { }; } + pub fn addSubprocessEnv(self: *Window, env: *std.process.EnvMap) !void { + _ = self; + _ = env; + } + /// Update the blur state of the window. fn syncBlur(self: *Window) !void { const manager = self.app_context.kde_blur_manager orelse return; diff --git a/src/apprt/gtk/winproto/x11.zig b/src/apprt/gtk/winproto/x11.zig index c58df6dea..6b60b0edf 100644 --- a/src/apprt/gtk/winproto/x11.zig +++ b/src/apprt/gtk/winproto/x11.zig @@ -314,6 +314,13 @@ pub const Window = struct { ); } + pub fn addSubprocessEnv(self: *Window, env: *std.process.EnvMap) !void { + var buf: [64]u8 = undefined; + const window_id = try std.fmt.bufPrint(&buf, "{}", .{self.window}); + + try env.put("WINDOWID", window_id); + } + fn getWindowProperty( self: *Window, comptime T: type, diff --git a/src/build/Config.zig b/src/build/Config.zig index 0ff0fc914..f7bf96d36 100644 --- a/src/build/Config.zig +++ b/src/build/Config.zig @@ -19,7 +19,7 @@ const GitVersion = @import("GitVersion.zig"); /// TODO: When Zig 0.14 is released, derive this from build.zig.zon directly. /// Until then this MUST match build.zig.zon and should always be the /// _next_ version to release. -const app_version: std.SemanticVersion = .{ .major = 1, .minor = 1, .patch = 1 }; +const app_version: std.SemanticVersion = .{ .major = 1, .minor = 1, .patch = 3 }; /// Standard build configuration options. optimize: std.builtin.OptimizeMode, @@ -32,7 +32,6 @@ renderer: renderer.Impl = .opengl, font_backend: font.Backend = .freetype, /// Feature flags -adwaita: bool = false, x11: bool = false, wayland: bool = false, sentry: bool = true, @@ -132,12 +131,6 @@ pub fn init(b: *std.Build) !Config { //--------------------------------------------------------------- // Feature Flags - config.adwaita = b.option( - bool, - "gtk-adwaita", - "Enables the use of Adwaita when using the GTK rendering backend.", - ) orelse true; - config.flatpak = b.option( bool, "flatpak", @@ -397,7 +390,6 @@ pub fn addOptions(self: *const Config, step: *std.Build.Step.Options) !void { // We need to break these down individual because addOption doesn't // support all types. step.addOption(bool, "flatpak", self.flatpak); - step.addOption(bool, "adwaita", self.adwaita); step.addOption(bool, "x11", self.x11); step.addOption(bool, "wayland", self.wayland); step.addOption(bool, "sentry", self.sentry); @@ -442,7 +434,6 @@ pub fn fromOptions() Config { .version = options.app_version, .flatpak = options.flatpak, - .adwaita = options.adwaita, .app_runtime = std.meta.stringToEnum(apprt.Runtime, @tagName(options.app_runtime)).?, .font_backend = std.meta.stringToEnum(font.Backend, @tagName(options.font_backend)).?, .renderer = std.meta.stringToEnum(renderer.Impl, @tagName(options.renderer)).?, diff --git a/src/build/GhosttyFrameData.zig b/src/build/GhosttyFrameData.zig new file mode 100644 index 000000000..7c22115b3 --- /dev/null +++ b/src/build/GhosttyFrameData.zig @@ -0,0 +1,37 @@ +//! GhosttyFrameData generates a compressed file and zig module which contains (and exposes) the +//! Ghostty animation frames for use in `ghostty +boo` +const GhosttyFrameData = @This(); + +const std = @import("std"); +const Config = @import("Config.zig"); +const SharedDeps = @import("SharedDeps.zig"); + +/// The exe. +exe: *std.Build.Step.Compile, + +/// The output path for the compressed framedata zig file +output: std.Build.LazyPath, + +pub fn init(b: *std.Build) !GhosttyFrameData { + const exe = b.addExecutable(.{ + .name = "framegen", + .root_source_file = b.path("src/build/framegen/main.zig"), + .target = b.host, + }); + + const run = b.addRunArtifact(exe); + + _ = run.addOutputFileArg("framedata.compressed"); + return .{ + .exe = exe, + .output = run.captureStdOut(), + }; +} + +/// Add the "framedata" import. +pub fn addImport(self: *const GhosttyFrameData, step: *std.Build.Step.Compile) void { + self.output.addStepDependencies(&step.step); + step.root_module.addAnonymousImport("framedata", .{ + .root_source_file = self.output, + }); +} diff --git a/src/build/SharedDeps.zig b/src/build/SharedDeps.zig index 64068658d..a90fc330a 100644 --- a/src/build/SharedDeps.zig +++ b/src/build/SharedDeps.zig @@ -6,6 +6,7 @@ const Config = @import("Config.zig"); const HelpStrings = @import("HelpStrings.zig"); const MetallibStep = @import("MetallibStep.zig"); const UnicodeTables = @import("UnicodeTables.zig"); +const GhosttyFrameData = @import("GhosttyFrameData.zig"); config: *const Config, @@ -13,6 +14,7 @@ options: *std.Build.Step.Options, help_strings: HelpStrings, metallib: ?*MetallibStep, unicode_tables: UnicodeTables, +framedata: GhosttyFrameData, /// Used to keep track of a list of file sources. pub const LazyPathList = std.ArrayList(std.Build.LazyPath); @@ -22,6 +24,7 @@ pub fn init(b: *std.Build, cfg: *const Config) !SharedDeps { .config = cfg, .help_strings = try HelpStrings.init(b, cfg), .unicode_tables = try UnicodeTables.init(b), + .framedata = try GhosttyFrameData.init(b), // Setup by retarget .options = undefined, @@ -430,9 +433,30 @@ pub fn add( }, .gtk => { + const gobject = b.dependency("gobject", .{ + .target = target, + .optimize = optimize, + }); + const gobject_imports = .{ + .{ "gobject", "gobject2" }, + .{ "gio", "gio2" }, + .{ "glib", "glib2" }, + .{ "gtk", "gtk4" }, + .{ "gdk", "gdk4" }, + }; + inline for (gobject_imports) |import| { + const name, const module = import; + step.root_module.addImport(name, gobject.module(module)); + } + step.linkSystemLibrary2("gtk4", dynamic_link_opts); - if (self.config.adwaita) step.linkSystemLibrary2("libadwaita-1", dynamic_link_opts); - if (self.config.x11) step.linkSystemLibrary2("X11", dynamic_link_opts); + step.linkSystemLibrary2("libadwaita-1", dynamic_link_opts); + step.root_module.addImport("adw", gobject.module("adw1")); + + if (self.config.x11) { + step.linkSystemLibrary2("X11", dynamic_link_opts); + step.root_module.addImport("gdk_x11", gobject.module("gdkx114")); + } if (self.config.wayland) { const scanner = Scanner.create(b.dependency("zig_wayland", .{}), .{ @@ -460,14 +484,54 @@ pub fn add( scanner.generate("org_kde_kwin_server_decoration_manager", 1); step.root_module.addImport("wayland", wayland); + step.root_module.addImport("gdk_wayland", gobject.module("gdkwayland4")); step.linkSystemLibrary2("wayland-client", dynamic_link_opts); } { const gresource = @import("../apprt/gtk/gresource.zig"); - const wf = b.addWriteFiles(); - const gresource_xml = wf.add("gresource.xml", gresource.gresource_xml); + const gresource_xml = gresource_xml: { + const generate_gresource_xml = b.addExecutable(.{ + .name = "generate_gresource_xml", + .root_source_file = b.path("src/apprt/gtk/gresource.zig"), + .target = b.host, + }); + + const generate = b.addRunArtifact(generate_gresource_xml); + + for (gresource.blueprint_files) |blueprint_file| { + const blueprint_compiler = b.addSystemCommand(&.{ + "blueprint-compiler", + "compile", + "--output", + }); + const ui_file = blueprint_compiler.addOutputFileArg(b.fmt("{s}.ui", .{blueprint_file})); + blueprint_compiler.addFileArg(b.path(b.fmt("src/apprt/gtk/ui/{s}.blp", .{blueprint_file}))); + generate.addFileArg(ui_file); + } + + break :gresource_xml generate.captureStdOut(); + }; + + { + const gtk_builder_check = b.addExecutable(.{ + .name = "gtk_builder_check", + .root_source_file = b.path("src/apprt/gtk/builder_check.zig"), + .target = b.host, + }); + gtk_builder_check.root_module.addOptions("build_options", self.options); + gtk_builder_check.root_module.addImport("gtk", gobject.module("gtk4")); + gtk_builder_check.root_module.addImport("adw", gobject.module("adw1")); + + for (gresource.dependencies) |pathname| { + const extension = std.fs.path.extension(pathname); + if (!std.mem.eql(u8, extension, ".ui")) continue; + const check = b.addRunArtifact(gtk_builder_check); + check.addFileArg(b.path(pathname)); + step.step.dependOn(&check.step); + } + } const generate_resources_c = b.addSystemCommand(&.{ "glib-compile-resources", @@ -499,6 +563,7 @@ pub fn add( self.help_strings.addImport(step); self.unicode_tables.addImport(step); + self.framedata.addImport(step); return static_libs; } diff --git a/src/build/docker/debian/Dockerfile b/src/build/docker/debian/Dockerfile new file mode 100644 index 000000000..61e9e75c1 --- /dev/null +++ b/src/build/docker/debian/Dockerfile @@ -0,0 +1,49 @@ +ARG DISTRO_VERSION="12" +FROM docker.io/library/debian:${DISTRO_VERSION} + +# Install Dependencies +RUN DEBIAN_FRONTEND="noninteractive" apt-get -qq update && \ + apt-get -qq -y --no-install-recommends install \ + # Build Tools + build-essential \ + libbz2-dev \ + libonig-dev \ + lintian \ + lsb-release \ + pandoc \ + wget \ + # Ghostty Dependencies + libadwaita-1-dev \ + libgtk-4-dev && \ + # Clean up for better caching + rm -rf /var/lib/apt/lists/* + +# work around the fact that Debian 12 doesn't ship a pkg-config file for bzip2 +RUN . /etc/os-release; if [ $VERSION_ID -le 12 ]; then ln -s libbz2.so /usr/lib/$(gcc -dumpmachine)/libbzip2.so; fi + +# Install zig +# https://ziglang.org/download/ +ARG ZIG_VERSION="0.13.0" +RUN wget -q "https://ziglang.org/download/$ZIG_VERSION/zig-linux-$(uname -m)-$ZIG_VERSION.tar.xz" && \ + tar -xf "zig-linux-$(uname -m)-$ZIG_VERSION.tar.xz" -C /opt && \ + rm zig-linux-* && \ + ln -s "/opt/zig-linux-$(uname -m)-$ZIG_VERSION/zig" /usr/local/bin/zig + +WORKDIR /src + +COPY ./dist/linux /src/dist/linux +COPY ./images /src/images +COPY ./include /src/include +COPY ./pkg /src/pkg +COPY ./nix /src/nix +COPY ./vendor /src/vendor +COPY ./build.zig /src/build.zig +COPY ./build.zig.zon /src/build.zig.zon +COPY ./build.zig.zon.txt /src/build.zig.zon.txt + +RUN ZIG_GLOBAL_CACHE_DIR=/zig/global-cache ./nix/build-support/fetch-zig-cache.sh + +COPY ./src /src/src + +RUN zig build -Doptimize=Debug -Dcpu=baseline -Dapp-runtime=gtk --system /zig/global-cache/p + diff --git a/src/build/framegen/frames/frame_001.txt b/src/build/framegen/frames/frame_001.txt new file mode 100644 index 000000000..416e87931 --- /dev/null +++ b/src/build/framegen/frames/frame_001.txt @@ -0,0 +1,41 @@ + + + +++==*%%%%%%%%%%%%*==+++ + ++****++ ++****++ + ++**++ ++**++ + xx**+= o+*%$@@@@@@$%*+o =+**xx + xx**oo ·=$@@@@@@@$$$$$$$$@@@@@@@$=· oo**xx + xx** x$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$x **xx + ox** ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· **xo + ==+~ ~@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@~ ~+== + x+++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ +++x + == ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· == + ox++ ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ++xo + +++~ @$$$$$@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + == $$$$$@@%%%%%%$$$$$$$@@@@@$$$@@@@@@@@@@@@@@@@@@@@$$$$$$ == + == @$$$$* $$$$% =$$$$$@ == + == ·$$$$@ x@$@ @$$$$$· == + == ·@$$$$% ·$$$$% *$$$$$@· == + == ·@$$$$@@$%%$$$$$$@@@@@@@@$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==x· $@@$$$$$$$$$@@@@@@@@@@$$$$$$$$@@@@@@@@@@$$$$$$$$$@@$ ·+== + ++++ =@@@@@@@@@* x$@@@@@@@@$x *@@@@@@@@@= ++++ + xx==++ ++==oo + ++===+ ++%%+o o+%%++ +===++ + ++=====%+=++++*=*========***++++***========*=*++++=+%=====++ + xx++==******====++ ++==********==++ ++====******==++xx + ++++ ++++ ++++ + diff --git a/src/build/framegen/frames/frame_002.txt b/src/build/framegen/frames/frame_002.txt new file mode 100644 index 000000000..e74134e3e --- /dev/null +++ b/src/build/framegen/frames/frame_002.txt @@ -0,0 +1,41 @@ + + ++++++++++++ + ++==*%%%**=++++++=**%%%*==++ + ++**=* *=**++ + x+**+= =+**+x + ++== o=%@@@@@@@@@@@@@@@@%=o ==++ + ===+ +$@@@@@$$$$$$$$$$$$$$$$@@@@@$+ +=== + ++=+ =@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@= +=++ + ++== $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ ==++ + ** $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ ** + +++o +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ o+++ + == %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% == + xx++ %@$$$$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xx + ==+· x@$$$@@%=*%$$@@@@@@@@@@@$$$$$@@@@@@@@@@@@@@@@@@$$$$$@x ·+== + == @$$$$% ~$@$$$@= x@$$$$$@ == + == $$$$@* %$$@· @$$$$$ == + == ·@$$$@* $$$$+ $$$$$@· == + == ·@$$$$$~ ~ox+=%@@$$$@@*==============*$@$$$$$@· == + == ·@$$$$$@@@@@@@@@@@@@@@@@$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == $@$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@$ == + ==+o +@@@$$$$$$$@@@$***%@@@@$$$$$$@@@@%***$@@@$$$$$$$@@@+ o+== + ++== ·=$@@@@@$*~ +%@@@@@@%+ ~*$@@@@@$=· ==++ + ===+ +=== + ++====x+ *=**== ==**=* +x====++ + ++=====**%******=========**%****%**=========******%**=====++ + ++++========++xx ++++========++++ xx++========++++ + + diff --git a/src/build/framegen/frames/frame_003.txt b/src/build/framegen/frames/frame_003.txt new file mode 100644 index 000000000..6da88ffbf --- /dev/null +++ b/src/build/framegen/frames/frame_003.txt @@ -0,0 +1,41 @@ + + ++====****====++ + ==***%==xo ox==%***== + ===*++ ++*=== + ++**x+ ·oxx++xxo· +x**++ + ===+ o=$@@@@@@@@@@@@@@@@@@$=o +=== + **+x o%@@@@$$$$$$$$$$$$$$$$$$$$@@@@%o x+** + ==+o ~$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$~ o+== + ++++ +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ++++ + ox== o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ==xo + ==+~ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ~+== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + +++x @$$$$@+ ·+*$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ==+ *@$$$@ o=%@@@@$$$$@@@@@@@@@@@@@@@@@@@@$$$$@* +== + == @$$$$$o %$$$$$ *$$$$$@ == + == $$$$$$@@=· @$$@ @$$$$$ == + == ·@$$$$$x %$$$$% =$$$$$@· == + == ·@$$$$@ ·x*$@@@$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$@x o=%@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == %@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@% == + ==+x ~$@@@@$$$$@@@@%+xx=$@@@@$$$$@@@@$=xx+*@@@@$$$$@@@@$~ x+== + ++== x*$@@@$*x ·=%$@@$%=· x*$@@@$*x ==++ + ==== =+== + x+====+= x+*===+= ======+x =+====xx + ++====*%%%%***====++====*%*%%*%*====++=====**%%%%*====++ + xx++++====++++ ++++====++++ ++++====++++xx + + diff --git a/src/build/framegen/frames/frame_004.txt b/src/build/framegen/frames/frame_004.txt new file mode 100644 index 000000000..5ad3a8112 --- /dev/null +++ b/src/build/framegen/frames/frame_004.txt @@ -0,0 +1,41 @@ + + ++==************==++ + ++***%=*x~ ~x*=%***++ + ++**+= ==**++ + ==== ~x=*%%%%%%*=x~ ==== + xx**++ o*$@@@@@@@@@@@@@@@@@@@@$*o ++**xo + oo**o~ *@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@* ~o**oo + **o· =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ·o** + ==+x %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% x+== + xx== *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ==xx + ==x· @@$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ·x== + xx== @$$$@% x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xx + +++o @$$$@* ~=@@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$@ o+++ + == %$$$$$% +$@@$$$$@@%**************%@@$$$$$% == + == @$$$$$@@%+ $$$$$+ ~@$$$$@ == + == $$$$$$$@@@@= *@$$@· @$$$$$ == + == ~@$$$$$@= %@$$$$@+ o$$$$$$@~ == + == ·@$$$$@= ~*@@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@@$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@+ == + ==++ *@@@@@@@@@@@%x ~=@@@@@@@@@@@@=~ x%@@@@@@@@@@@* ++== + x+==x· o=***=x ~+****+~ x=***=o ·x==xx + ====xo xx x+ ox==== + ======+x =+=*====++ ++====*=+= x+====== + ++==***%********++++==************==++++********%***==++ + ++++++++++ +x++++++++xx ++++++++++ + + diff --git a/src/build/framegen/frames/frame_005.txt b/src/build/framegen/frames/frame_005.txt new file mode 100644 index 000000000..e93b295d5 --- /dev/null +++ b/src/build/framegen/frames/frame_005.txt @@ -0,0 +1,41 @@ + + +==*****%%%%*****==+ + ++***%=+ +=%***++ + ++**+= =+**++ + **== ·x=*%$$$$$$%*=x· ==** + xx**xx x%@@@@@@@@@$$$$@@@@@@@@@%x xx**xx + xx** ~%@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@%~ **xx + **o· %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@% ·o** + ==+o $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ o+== + ++++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% +++x + == @@$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + xx== @$$$$o o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xx + +++o @$$$@% o*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$@ o+++ + == $$$$$$$o o*@$$$$$@@=+++++++++++++++$@$$$$$$ == + == @$$$$$$@@$=· $$$$@x @$$$$@ == + == $$$$$$$@@@$= $$$$@~ @$$$$$ == + == ·@$$$$$@* x@@$$$$@*~ ~=@$$$$$@· == + == ·@$$$$@% x%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@%$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@~ == + ++++ +@@@@@@@@@@@*~ x$@@@@@@@@@@$x ·*@@@@@@@@@@@+ ++++ + xx==+~ x+=+x· o+==+o ·x+=+x ~+==xo + ++==+x == == x+==++ + ++====++ ox=+==**==+= =+=***==+*+x ++====++ + x+==**********==++++++************++++++==**********==++ + ++++++xx xx++++xx ++++++++ + + diff --git a/src/build/framegen/frames/frame_006.txt b/src/build/framegen/frames/frame_006.txt new file mode 100644 index 000000000..f9ad60520 --- /dev/null +++ b/src/build/framegen/frames/frame_006.txt @@ -0,0 +1,41 @@ + + +++==*%%*%%%%%%*%%*===++ + ++**=*++ ++*=**++ + ++**=+ +=**++ + xx**+= ~+*%$$@@@@$$%*+~ =+**+x + xx**ox +$@@@@@@@@$$$$$$@@@@@@@@$+ xo**xx + x+** x$@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@$x **+x + oo** ·$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$· **oo + ==+~ ·@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@· ~+== + ++++ %@$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++++ + == @@$$@$%$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ox++ ~@$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ++xo + +++~ @$$$@% +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$@ ~+++ + == $$$$$$@% =@$$$$$@%xooooooooooooooo*@$$$$$$ == + == @$$$$$$@@@$+ $$$$@o @$$$$@ == + == ·$$$$$$$@@@%+ $$$$@o @$$$$$· == + == ·@$$$$$$* =@@$$$$@$xoooooooooooooox*@$$$$$@· == + == ·@$$$$@% +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@%$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· @@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·x== + ++++ ~%@@@@@@@@@$x ·*@@@@@@@@@@*· x$@@@@@@@@@%~ ++++ + xx==+x ooo· ~oo~ ·oo~ x+==xo + x+==++ +%% %%+o ++==+x + ++=*==+*xx ++*=**==**+*++ ++*+**==**=*++o~ xx*+==**++ + ++==********=+xx ++==********==++ xx++********==++ + + + diff --git a/src/build/framegen/frames/frame_007.txt b/src/build/framegen/frames/frame_007.txt new file mode 100644 index 000000000..782560082 --- /dev/null +++ b/src/build/framegen/frames/frame_007.txt @@ -0,0 +1,41 @@ + + ++++=**%**%%%%**%**=++++ + ==****++ ++*=**== + ++**=+ +=**++ + x+**+= ~+*%$$$@@$$$%*+~ =+**+x + ++**ox +$@@@@@@@@$$$$$$@@@@@@@@$+ xo**++ + x+** x$@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@$x **+x + xx** $@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$ **xx + ==+~ ·@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@· ~+== + x+++ %@$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% +++x + == @@$$@$%%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + xx++ ~@$$$$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ +++x + +++~ @$$$@$ +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$@ ~+++ + == $$$$$$@%· =@$$$$$@%xooooooooooooooo*@$$$$$$ == + == @$$$$$$@@@$=· $$$$@o @$$$$@ == + == ·$$$$$$$@@@$+ $$$$@o @$$$$$· == + == ·@$$$$$$% =@$$$$$@$+xxxxxxxxxxxxxxx%@$$$$$@· == + == ·@$$$$@% +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ x%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@%$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· @@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·+== + ++++ ·%@@@@@@@@@%o =$@@@@@@@@$= ~%@@@@@@@@@%· ++++ + ==+x ··· ·· ·· x+== + ++=*++ ++%% %*++ ++*=++ + ++==**=*++ooxx+=*=**==**=*=+xxxx+=%=**==**=*=+xxxx++*=**==+x + +++=******==++xx ++++********++++ xx++==******++++ + + + diff --git a/src/build/framegen/frames/frame_008.txt b/src/build/framegen/frames/frame_008.txt new file mode 100644 index 000000000..3e4706fdd --- /dev/null +++ b/src/build/framegen/frames/frame_008.txt @@ -0,0 +1,41 @@ + + ++++==**%%%%%%%%**==++++ + +=***%== ==%***=+ + ++**+= =+**++ + x+**=+ ·o+*%$$$$$$%*+o· +=**+x + x+**xx x%@@@@@@@@@$$$$@@@@@@@@@%x xx**+x + x+**~ ~%@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@%~ ~**+x + ox**o· %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@% ·o**xo + ==+o $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ o+== + x+++ %@$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% +++x + ==x @@$$@@%$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ x== + x++= @$$$$ x%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ =+xx + +++o @$$$@% +$@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$@ o+++ + == $$$$$$@% ·*@$$$$$@$+xxxxxxxxxxxxxxx%@$$$$$% == + == @$$$$$$@@@%+ $$$$@o @$$$$@ == + == $$$$$$$@@@$*· $$$$@~ @$$$$$ == + == ·@$$$$$@%· +@$$$$$@%x~~~~~~~~~~~~~~o*@$$$$$@· == + == ·@$$$$$$ x%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@$*%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==x· $@@$$$$$$$$$@@@@@@@@@@$$$$$$$$@@@@@@@@@@$$$$$$$$$@@$ ·+== + +++= =@@@@@@@@@*· x%@@@@@@@@%x *@@@@@@@@@* =+++ + ==++ +=== + xx=*=+ ++%%+x x+%%++ +=**xx + ++**=*=+++++==*=**++**=%==++++==%=**++**=***+++++=*=**++ + xx++==**==++++ ++========++ ++++======++xx + + + diff --git a/src/build/framegen/frames/frame_009.txt b/src/build/framegen/frames/frame_009.txt new file mode 100644 index 000000000..00e5a6170 --- /dev/null +++ b/src/build/framegen/frames/frame_009.txt @@ -0,0 +1,41 @@ + + ++++==***%%%%%%***==++++ + +=****=*o~ ~o*=%***=+ + ++**=* *=**++ + x+**== ~x=*%%%%%%*=x~ ==**+x + ++**++ o*$@@@@@@@@@@@@@@@@@@@@$*o ++**++ + x+**o~ *@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@* ~o**+x + xx**o· =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ·o**xx + ==+o %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% o+== + x+++ *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* +++x + ==x· @@$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ·x== + x+== @$$$$~ ·*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==+x + +++o @$$$@% ~*@@@@$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$@ o+++ + == %$$$$$$+ o%@$$$$$@@=++++++++++++++=$@$$$$$% == + == @$$$$$$@@$*~ $$$$@x @$$$$@ == + == $$$$$$$$@@@%~ $$$$@~ @$$$$$ == + == ~@$$$$$@$~ x@$$$$$@*~ ·+@$$$$$@~ == + == ·@$$$$$$ o*@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@$**@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· %@@$$$$$$$$$@@@@$$@@@@$$$$$$$$@@@@$$@@@@$$$$$$$$$@@$ ·+== + x+== =$@@@@@@@@* o%@@@@@@@@%o *$@@@@@@@$= ==+x + ==++ ++== + ===+ +=%%++ ++%%== +=== + ++**=%==++++****==++**=***++++***=**++==****++++==%***++ + ++======++++ +++======++x ++++=====+++ + + + diff --git a/src/build/framegen/frames/frame_010.txt b/src/build/framegen/frames/frame_010.txt new file mode 100644 index 000000000..bdfaa69d9 --- /dev/null +++ b/src/build/framegen/frames/frame_010.txt @@ -0,0 +1,41 @@ + + xx++==************==++xx + ++***%*%++ ++%*%***++ + ++**=*+x x+*=**++ + xx====x ·ox+====+xo· x====xx + x+**++ x%@@@@@@@@@@@@@@@@@@@@%x ++**++ + xx**+o +$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$+ o+**xx + oo**+~ x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$x ~+**oo + ==++ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++== + ++== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==++ + ==+· $@$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + ox== @@$$@* ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xx + +++x @$$$$$ ·=@@@@$$$$$$$$$$@@@@@@@@@@@@@@@$$$$$$@ x+++ + == *$$$$$$ ~*@@$$$$$@@$%%%%%%%%%%%%%%$@@$$$$$* == + == @$$$$$$@@*· $$$$$= o$$$$$@ == + == $$$$$$$$@@@@x $$$$@ @$$$$$ == + == ~@$$$$$@@+ %$$$$$@x ~$$$$$$@~ == + == ·@$$$$$$ +$@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@*x+%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$· == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· %@@@$$$$$$$$@@@@$$@@@@$$$$$$$$@@@@$$$@@@$$$$$$$$@@@% ~+== + xx== +$@@@@@@@$= ~%@@@@@@@@%~ =$@@@@@@@$+ ==xx + ===+ +=== + ==== ==%%++ ++%%== ==== + ++**=***++==%***==++***%**++++**%***++==***%==++**%=**++ + ++++==++++ x+++====+++x ++++==+++x + + + diff --git a/src/build/framegen/frames/frame_011.txt b/src/build/framegen/frames/frame_011.txt new file mode 100644 index 000000000..e3170d533 --- /dev/null +++ b/src/build/framegen/frames/frame_011.txt @@ -0,0 +1,41 @@ + + ++++==********==++++ + ++*****%**+x x+**%*****++ + ++**=*++ ++*=**++ + ====++ ~ooxxoo~ ++==== + xx**++ ~+%@@@@@@@@@@@@@@@@@@%+~ ++**xx + ++**++ ~*@@@@@$$$$$$$$$$$$$$$$$$@@@@@*~ ++**+x + ==+x ·%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%· x+== + ==++ x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x ++== + xx== ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ ==xx + ==+~ %@$$$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ~+== + xx== @@$$@$o +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xx + +++x $$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ x+++ + ==+ =@$$$$$ +$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$@= +== + == @$$$$$$@%o x$$$$$% =$$$$$@ == + == $$$$$$$$@@@@= $@$$@ @$$$$$ == + == ~@$$$$$@@*~ +$$$$$% *$$$$$@~ == + == ·@$$$$$$ ·*@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@x·~=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$· == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$@@ == + ==+· %@@@$$$$$$$$@@@$$$@@@@$$$$$$$$@@@@$$$@@@$$$$$$$$@@@% ~+== + xx== +$@@@@@@@$= ~*@@@@@@@@*~ =$@@@@@@@$+ ==xx + ===+ +=== + ====o ==%%++ ++%%=+ ==== + ++**=***=+==%***++++==***%====%***==++++***%====***=**++ + xx++++++++ ++====++ ++++++++xx + + + diff --git a/src/build/framegen/frames/frame_012.txt b/src/build/framegen/frames/frame_012.txt new file mode 100644 index 000000000..90a65ed52 --- /dev/null +++ b/src/build/framegen/frames/frame_012.txt @@ -0,0 +1,41 @@ + + ++++++========++++++ + ++==***%*%**==++++==**%*%***==++ + ++==**=*xo ox*=**==++ + ++**+= =+**++ + xx==*= ·+*$@@@@@@@@@@@@@@$*+· =*==xx + xx===+ o%@@@@@$$$$$$$$$$$$$$$$@@@@@%o +===xx + ==++ x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$x +=== + ++=+ %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% +=++ + xx== %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ==xx + ==+x x@@$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x x+== + xx== %@$$$@%**$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ==xx + ++++ %@$$$$ =@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++++ + ==+· o@$$$$$ ·=@@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$@o ·+== + == @$$$$$@$~ ~$@$$$$@+ x@$$$$$@ == + == $$$$$$$$@@@%o $$$$@· @$$$$$ == + == ·@$$$$$$@@%x $$$$$+ ~$$$$$@· == + == ·@$$$$$$~ +$@$$$$$@@%***************@@$$$$$@· == + == ·@$$$$@% +$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$$= x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$· == + == @@$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$@@ == + ==+~ %@@@$$$$$$$$@@@$$$@@@@$$$$$$$$@@@@$$$@@@@$$$$$$$@@@% ~+== + x+== +%@@@@@@@$+ ~*@@@@@@@@*~ +$@@@@@@@%+ ==+x + ++=+ +=++ + ++==o ==%%++ ++%%== o==++ + ++***%**====%***++++==***%====%***==++++***%====**%***++ + ++++++++ ++++++++ x+++++++ + + + diff --git a/src/build/framegen/frames/frame_013.txt b/src/build/framegen/frames/frame_013.txt new file mode 100644 index 000000000..b2b6a980c --- /dev/null +++ b/src/build/framegen/frames/frame_013.txt @@ -0,0 +1,41 @@ + + ++++++++====++++++++ + ++++*******%********%*******++++ + +x==**=*=+ +=*=**==xx + ++**== ==**++ + ====++ ·x*%@@@@@@@@@@@@%*x· ++==== + ===+ +$@@@@@@$$$$$$$$$$$$@@@@@@$+ +=== + ===+ ·%@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@%· +=== + ++== +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ==++ + xx==o· =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ·o==xo + ==++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++== + ox== +@$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + ++++ =@$$$$~ ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ++++ + ==+· ·@$$$$$ ~*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$@· ·+== + == @$$$$$$+ ~*@$$$$$@$+xxxxxxxxxxxxxx+%@$$$$$@ == + == @$$$$$$@@@*o $$$$@x @$$$$@ == + == ·@$$$$$$@@@$= $$$$@~ @$$$$@· == + == ·@$$$$$@* +@$$$$$@%o~~~~~~~~~~~~~~o*@$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$· == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$@@ == + ==+· %@@@$$$$$$$$@@@$$$@@@@$$$$$$$$@@@@$$$@@@$$$$$$$$@@@% ~+== + xx== +$@@@@@@@$= ~%@@@@@@@@%~ =$@@@@@@@$+ ==xx + ++=+ +=++ + ++==o ==%%++ ++%%== o==++ + ++***%**====%***++++==***%====%***==++++***%====**%***++ + ++++++++ ++++++++ ++++++++ + + + diff --git a/src/build/framegen/frames/frame_014.txt b/src/build/framegen/frames/frame_014.txt new file mode 100644 index 000000000..96194979c --- /dev/null +++ b/src/build/framegen/frames/frame_014.txt @@ -0,0 +1,41 @@ + + xx++++++++++++xx + ++==*****%*%%%%%%*%*****==++ + ++*****%=+ +=%*****++ + ++====+* *+====++ + ++==+= ·x+*%%$$$$%%*+x· =+==++ + ====xx x%@@@@@@@@@$$$$@@@@@@@@@%x xx==== + ++==o~ ~%@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@%~ ~~==+= + ++==o· *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ·o==++ + xx==+o $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ o+==xx + ++++ %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ++++ + ox==x @@$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ x==xo + ++++ @$$$@$x ·+$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++++ + ==+o @$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+== + == $$$$$$$ =$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$$ == + == @$$$$$$@%o x$$$$$% *$$$$$@ == + == $$$$$$$$@@@@+ $$$$@ @$$$$$ == + == ·@$$$$$$@%o x$$$$$% *$$$$$@· == + == ·@$$$$$$ =$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@$x ·+$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$· == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· %@@$$$$$$$$$@@@@$$@@@@$$$$$$$$@@@@$$@@@@$$$$$$$$$@@% ·+== + xx== +$@@@@@@@$= o%@@@@@@@@%o =$@@@@@@@$+ ==xx + ++=+ +=++ + ++== ==%%++ ++%%== ==++ + x+=*=***++==%***++xx==*%**====**%*==xx++***%==++***=*=+x + ++++++++ ++++++++ ++++++++ + + + diff --git a/src/build/framegen/frames/frame_015.txt b/src/build/framegen/frames/frame_015.txt new file mode 100644 index 000000000..33cf5ec65 --- /dev/null +++ b/src/build/framegen/frames/frame_015.txt @@ -0,0 +1,41 @@ + + ++++++++++++ + xx++==****************==++xx + ++==**=***++o o++***=**==++ + x+=====*+x x+*=====+x + ++====ox ·ox++==++xo· xo====++ + ++==++ x*$@@@@@@@@@@@@@@@@@@$*x ++==++ + ++==+x x$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$x x+==++ + ++==+o x@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@x o+==++ + ===+ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= +=== + ++== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==++ + ==+· $@$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + ++== @@$$$@$**@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==++ + +++x @$$$$$ ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == *$$$$@$ ~*@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$* == + == @$$$$$@$~ o$$$$$$@= x@$$$$$@ == + == $$$$$$$$@@@%~ $$$$@· @$$$$$ == + == ~@$$$$$$@@$x $$$$$+ ·@$$$$@~ == + == ·@$$$$$$o x$@$$$$$@@*==============*$@$$$$$@· == + == ·@$$$$@% x%@@@@$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$$+ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· $@@$$$$$$$$$@@@@$@@@@@$$$$$$$$@@@@@$@@@@$$$$$$$$$@@$ ·+== + xx== =$@@@@@@@@* o%@@@@@@@@%o *@@@@@@@@$= ==xo + ++=+ +=++ + ++== ==%%++ ++%%== ==++ + x+**=%==++++%***=+x+==*%**++++**%*==+++=***%++++=*%=**+x + ++++++++ ++++++++ ++++++++ + + + diff --git a/src/build/framegen/frames/frame_016.txt b/src/build/framegen/frames/frame_016.txt new file mode 100644 index 000000000..50eea7832 --- /dev/null +++ b/src/build/framegen/frames/frame_016.txt @@ -0,0 +1,41 @@ + + xxxx + ++++==************==++++ + xx++==****%%=*++++++++*=%*****==++xx + ++=====*+~ ~+*=====++ + ++====+= =+====++ + ++===+ ·+*$@@@@@@@@@@@@@@$*+· +===++ + ++===+ o%@@@@@$$$$$$$$$$$$$$$$@@@@@%o +===++ + xx===+ x@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@x +===xx + ==++ %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ++== + ++== %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ==++ + ==+x x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x x+== + xx== %@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ==++ + ++++ %@$$$$* ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++++ + ==x· o@$$$$$ ~*@@@@$$$$$$$$$$@@@@@@@@@@@@@@$$$$$$$@o ·x== + == @$$$$$$ ~*@@$$$$$@@$%%%%%%%%%%%%%%$@@$$$$$@ == + == $$$$$$$@@= $$$$$* x$$$$$$ == + == ·@$$$$$$$@@@@x $$$$@ @$$$$@· == + == ·@$$$$$@@+ *$$$$$$o ·$$$$$$@· == + == ·@$$$$$$ x$@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@*x+%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· @@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·+== + xx== *@@@@@@@@@%~ +$@@@@@@@@$+ ~%@@@@@@@@@* ==xx + ===+ +=== + ===+ ++%% %%++ +=== + ++***%++++++**%*=+++===*==++x+==*===++++*%**++x+++%***++ + x+++====++ ++==++++ ++====+++x + + + diff --git a/src/build/framegen/frames/frame_017.txt b/src/build/framegen/frames/frame_017.txt new file mode 100644 index 000000000..e05674a72 --- /dev/null +++ b/src/build/framegen/frames/frame_017.txt @@ -0,0 +1,41 @@ + + + ++++++============++++++ + ++==**==*%*%********%*%*==**==++ + ++=====*== ==*=====++ + ++======+x x+======+x + ++====++ o=%$@@@@@@@@@@$%=o ++====++ + ++==== x%@@@@@@$$$$$$$$$$$$@@@@@@%x ====+x + xx===+ *@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@* +===xx + ==== +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ==== + x+==x· +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ·x==++ + ==++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++== + xx== x@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ==xo + ++++ +@$$$@@=ox%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ++++ + ==+~ @$$$$$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+== + == $$$$$$$ x%@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$$ == + == @$$$$$@@+ *$$$$$$~ %$$$$$@ == + == ·@$$$$$$$@@@@+ $@$$@ @$$$$@· == + == ·@$$$$$$@$= ~$$$$$* x$$$$$@· == + == ·@$$$$$$ o%@@$$$$$@@@$$$$$$$$$$$$$$$@@$$$$$@· == + == ·@$$$$$$ o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@% ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· @@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·+== + ++++ ~%@@@@@@@@@%o =@@@@@@@@@@= o%@@@@@@@@@%~ ++xx + ==+x ~~~ ·~~· ~~· x+== + ==++ x+%% %%++ +=== + ++**=%++ooox==*===++**=%++xoox++%=**++===*==xooo++%=**++ + ++++==++++ ++++====++++ ++++==++++ + + + diff --git a/src/build/framegen/frames/frame_018.txt b/src/build/framegen/frames/frame_018.txt new file mode 100644 index 000000000..5e92ec0e0 --- /dev/null +++ b/src/build/framegen/frames/frame_018.txt @@ -0,0 +1,41 @@ + + + ++++++++++++++++++++ + xx++==****=**%%%%%%**=****==+++x + x+++====*%==o~ ~o==%*====+++x + ++====+= =+====++ + ====++ o+=*%%%%%%*=+o ++==== + ====xx o*$@@@@@@@@@@@@@@@@@@@@$*o xx==== + ====o· ·*@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@*· ·o==== + ++==o· *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ·o==++ + xx==+o $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ o+==xx + ==++ *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ++== + xx==x· @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ·x==xo + ++++ @$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++++ + ==+o @$$$$$~ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+== + == %$$$$@% ·*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$% == + == @$$$$$$= ~*@$$$$$@$+xxxxxxxxxxxxxxx%@$$$$$@ == + == $$$$$$$@@@*o $$$$@o @$$$$$ == + == ·@$$$$$$@@@$+ $$$$@~ @$$$$@· == + == ·@$$$$$@* +@$$$$$@%o~~~~~~~~~~~~~~o*@$$$$$@· == + == ·@$$$$@% +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ +%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ·@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@· x== + ++++ x$@@@@@@@@@@= o%@@@@@@@@@@%o =@@@@@@@@@@$x ++++ + ==+o ox++o ~x++x~ o++xo o+== + **+x ** ** x+** + ++**+=o~ ++*+**==**+*xo ox*+**++**+*++ ~o=+**++ + ++==****++++ ++==****==++ ++++=***==++ + + + diff --git a/src/build/framegen/frames/frame_019.txt b/src/build/framegen/frames/frame_019.txt new file mode 100644 index 000000000..f528dc876 --- /dev/null +++ b/src/build/framegen/frames/frame_019.txt @@ -0,0 +1,41 @@ + + + ++++++++++++++++ + ++++==****************==++++ + ++===****%++~~ ~~++%****===++ + ++=====*+x x+*=====++ + ++====xx ·ox+====+xo· xx====++ + ====++ x%$@@@@@@@@@@@@@@@@@@$%x ++==== + ++==+o x$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$x o+==++ + ++==+o x$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$x o+==++ + ox==++ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++==xo + +++= x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x =+++ + ox==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+==xo + ++== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==++ + ==+x @$$$$@= +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+== + == *$$$$$$ =$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$* == + == @$$$$$$· =@@$$$$$@@%**************%@@$$$$$@ == + == $$$$$$$@@*o $$$$$= ~@$$$$$ == + == ~@$$$$$$$@@@@o $$$$@ @$$$$@~ == + == ·@$$$$$@$o ·%$$$$$@+ o$$$$$$@· == + == ·@$$$$$$ =$@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@%==$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == o@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@o == + ++++ =@@@@@@@@@@@%o +$@@@@@@@@@@$+ o%@@@@@@@@@@@= ++++ + **x~ ~+===+o x====x o+===+~ ~+** + **xx ++ ++ xx** + ==**++ ~o*+**==**+= =+**==**+*o~ ++==== + +==*****=+++ ++=******=++ +++==****==+ + + + diff --git a/src/build/framegen/frames/frame_020.txt b/src/build/framegen/frames/frame_020.txt new file mode 100644 index 000000000..02720e639 --- /dev/null +++ b/src/build/framegen/frames/frame_020.txt @@ -0,0 +1,41 @@ + + + ++++++++ + ++++==************==++++ + ++++****=***=+xo~~~~ox+=%**=****++++ + xx++===*+= =+*===++xx + ++====++ ·~~~~· ++====++ + ++===+ x*$@@@@@@@@@@@@@@@@$*x +===++ + ++==++ =@@@@@$$$$$$$$$$$$$$$$$$@@@@@= ++==++ + x+===+ *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ++==+x + ==++ ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ ++== + ++== @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==++ + ==+o *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* o+== + ++== $@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ==++ + +++x $@$$$@$o x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ x+++ + ==x· +@$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·x== + == @$$$$$$ +$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$@@%x x$$$$$% =$$$$$$ == + == ~@$$$$$$$@@@@= $@$$@ @$$$$@· == + == ·@$$$$$@@*~ +$$$$$% *$$$$$@· == + == ·@$$$$$$ ·=@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ ·=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@x·~=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@* == + +++x $@@@@$$$@@@@@*x~o+%@@@@@$$@@@@@%+o~o=$@@@@$$@@@@@$ x+++ + **o ~=%$$$%=o +*$$$$*+ o=%$$$%=~ o** + xx**o~ ~~**xx + xx**+* ++=***=*+x x+*=****++ *+**xx + ++==*%%%%%**== x+++*%%%%%%*+++x ++**%%%%%*==++ + + + diff --git a/src/build/framegen/frames/frame_021.txt b/src/build/framegen/frames/frame_021.txt new file mode 100644 index 000000000..e7305fbc6 --- /dev/null +++ b/src/build/framegen/frames/frame_021.txt @@ -0,0 +1,41 @@ + + + + ++++====********====++++ + ++==**=**%**++++++++**%**=**==++ + ++=*=*=* ~ *=*===++ + ++====+= =+====+x + ++===+ ~+%$@@@@@@@@@@@@@@$%+· +===+x + ++==++ x$@@@@@$$$$$$$$$$$$$$$$@@@@@%x +===+x + xx==++ +@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@+ +===xo + ==++ $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ++== + ++== $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ==++ + ==+o +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x x+== + xx== %@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xx + ++++ %@$$$@@+~o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++++ + ==x· +@$$$$% ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ·+== + == @$$$$$$ ~*@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$@@*· =$$$$$$ %$$$$$$ == + == ~@$$$$$$$@@@@+ $$$$@ @$$$$@ == + == ~@$$$$$@@%x o$$$$$* =$$$$$@ == + == ~@$$$$$$ +$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == ~@$$$$@% x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~@$$$$$@$~ x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == %@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@% == + +++o o@@@@$$$$$@@@@%*+=*$@@@$$$$$$@@@@*=+=%@@@@$$$$$@@@@o o+++ + o ** +%@@@@@%= o*$@@@@$*o +%@@@@@%+ ** + ++** **++ + x+**+= x****== ==**=*xo =+**++ + ++**%%%%%%%*==++ ++==%%%%%%%*==++ x+==*%%%%%%%**=+ + + + diff --git a/src/build/framegen/frames/frame_022.txt b/src/build/framegen/frames/frame_022.txt new file mode 100644 index 000000000..943c44325 --- /dev/null +++ b/src/build/framegen/frames/frame_022.txt @@ -0,0 +1,41 @@ + + + + ++++++========++++++ + ++==*****%*%********%%%*****+++x + ++==***%++ ++*=**==+x + ==**+= *+**++ + ox====oo o=%$@@@@@@@@@@@@$%+~ xx==== + xx===+ ~*@@@@@@$$$$$$$$$$$$$@@@@@@$+ ==== + ===+ x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ++== + ==++ %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ==++ + ++== %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ·x==xx + ==+o +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++++ + xx== %@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ==xo + +++x $@$$$@@*+=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ++xx + ==x =@$$$$% +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + == @$$$$@* +$@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$% == + == o$$$$$$@$o ·$$$$$$$o o$$$$$$@ == + == +@$$$$$$$@@@@o @$$$@ @$$$$$ == + == =@$$$$$$@@=· ~@$$$@+ +@$$$$@ == + == +@$$$$$$ ~*@@$$$$$@@$%%%%%%%%%%%%%%$@@$$$$$@ == + == +@$$$$@* ~*@@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@ == + == +@$$$$$@= ·*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + == @@$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$@@ == + ==+· %@@@$$$$$$$$@@@$$$@@@@$$$$$$$$@@@@$$$@@@$$$$$$$$@@@% ~+== + xx== +$@@@@@@@$= ~*@@@@@@@@*~ +$@@@@@@@$+ ==xx + ++=+ +=++ + ++**oo ==%%=+ ++%%== oo=*++ + x+==*%=*===**=**++++++*%**====**%*++++++******==*=%*==+x + ++++++ x+++++++ ++++++ + + diff --git a/src/build/framegen/frames/frame_023.txt b/src/build/framegen/frames/frame_023.txt new file mode 100644 index 000000000..673dd9482 --- /dev/null +++ b/src/build/framegen/frames/frame_023.txt @@ -0,0 +1,41 @@ + + + + x+++++++==++++++++ + ++++*******%%%**%%%*%*%****=++ + xx==**=*++ ==****++ + ++**+= ++*=**++ + xx====oo ~+*$$@@@@@@@@@@$%=o +x*=++ + x+===+ ·=@@@@@@@$$$$$$$$$$$$@@@@@@%o ~==== + ===+ o$@@@$$$$$$$$$$$$$$$$$$$$$$$$$@@@@= ==++ + ==++ %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ ==++ + ++== %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ ~+== + ==+o +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++++ + xx== $@$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ·x== + +++x @@$$$@@%=*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xx + == %@$$$$* ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == @$$$$@= o*@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$+ ·+== + ox== =$$$$$$@%· o@$$$$$@o +@$$$$$$ == + ox++ %@$$$$$$$@@@%· @$$$@ @$$$$@ == + ox++ %@$$$$$@@@*~ ~@$$$@~ +@$$$$@ == + ox++ %@$$$$$$ ·=@@$$$$$@@***************%@@$$$$$@ == + ox++ %@$$$$@+ =$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@ == + ox++ %@$$$$$$x =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox++ %@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox++ *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x @@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@$ ·+== + ++++ ·*@@@@@@@@@%o +@@@@@@@@@@= ~%@@@@@@@@@* ==+x + ===x ·~· ~~ ·~· ++== + ==++ x+%% %%+x ++== + ++**=*++xoox==*===++===%==xoox==%=**+++=*%=*+xox++*=**++ + +++++==+++ +++==+++ ++====++++ + + diff --git a/src/build/framegen/frames/frame_024.txt b/src/build/framegen/frames/frame_024.txt new file mode 100644 index 000000000..2339b7811 --- /dev/null +++ b/src/build/framegen/frames/frame_024.txt @@ -0,0 +1,41 @@ + + + + x+++++++++++++ + ++==***%%%%%%%%%%*%*****+++x + ++***%== o+*=****++ + ++**=* ++====+x + ====xx x=%$@@@@@@@@@$%=x ++**++ + ===+ =$@@@@@@@$$$$$$$$$@@@@@@@$+ xx*=++ + ==++ o$@@@$$$$$$$$$$$$$$$$$$$$$$$$$@@@%~ ~o==++ + ===+ %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ~x==xo + ++== $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ++== + ==+~ *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==+x + x+++ @@$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% o+== + ==+~ @$$$$@@%%$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ==xo + == @$$$$$= +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++++ + ox== x@$$$$@~ +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$@ o+++ + xx++ $$$$$$$@= =@$$$$$@x ~*@$$$$$= ·+== + ++++ @$$$$$$$@@@@+ @$$$@ x@$$$@% x== + ++++ @$$$$$$@@@*x o@$$$$ =@$$$@% == + ++++ @$$$$$$% =@@$$$$$@$===============*@@$$$$@% == + xx++ @$$$$$@~ +$@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@$ == + xx++ @$$$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + xx++ @$$$$$$@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox++ *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == =@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@ ·+== + +++x *@@@@@@@@@@@%o +$@@@@@@@@@@@=· ~*@@@@@@@@@@@= +++x + **x· ~+=**+o x=**=x· ~+=*=+~ ~+== + oo**xx ++ ++ o+** + ==**++ =+**==**+= ++**==**==x· ++==== + +==*%%**===+ ++=***%%*=++ ++===*%%*==+ + + diff --git a/src/build/framegen/frames/frame_025.txt b/src/build/framegen/frames/frame_025.txt new file mode 100644 index 000000000..9667d9db3 --- /dev/null +++ b/src/build/framegen/frames/frame_025.txt @@ -0,0 +1,41 @@ + + + + xx++++++++++ + ++==*****%%$%%%%%%%*****++xx + ++*****= x+%***==++ + ++**=* ==**== + ====xx o=%$$@@@@@@@$%*+o ==**xx + ===+ +$@@@@@@@$$$$$$$$$@@@@@@@%x x+**+x + ==++ o$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@* o+**xx + ===+ %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ o+== + ++== $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= +=++ + ==x· %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· ==xx + ++++ @@$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= x+++ + ==+· @$$$$@@$%$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ** + == @$$$$$= =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x =+xx + xx++ *$$$$$@· =@@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$@ x+++ + ++++ @$$$$$$@x ·*@$$$$$@+· o%@$$$$$~ ~+++ + xx+x $$$$$$$$@@@$x ·@$$$$ +@$$$@= ·+++ + xx+x @$$$$$$@@@%x o@$$$$ *@$$$@= ·+== + xxxx @$$$$$$$ +$@$$$$$@%+++++++++++++++=@@$$$$@= ·+== + +++x @$$$$$@· +$@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@= ·+== + +++x @$$$$$$% x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + ++++ @$$$$$$@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% x== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% x== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox++ %$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + ox== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == $@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@x x== + +++o ~$@@@@$$$@@@@@*x~o+*@@@@@$$$@@@@%+o~o=$@@@@$$$@@@@% ++++ + ** ~+%$$$$*o x*$$$$%+· ~=%$$$%+~ ·o** + x+**~~ ~o**xx + x+**==o~ ++*=**=*++ oo==****++ =+**xx + ++==*%%%%%%*==xx xx==*%%%%%%*==++ +=*%%%%%%*==++ + + diff --git a/src/build/framegen/frames/frame_026.txt b/src/build/framegen/frames/frame_026.txt new file mode 100644 index 000000000..555811488 --- /dev/null +++ b/src/build/framegen/frames/frame_026.txt @@ -0,0 +1,41 @@ + + + + ++++++++ + ++++****%%%%%%%%%%%***==++ + ++**=*=* ++*=**++ + ++**=*x *=**++ + ++**xx o+*%$$@@@@@$$%=x· +=== + ===+ +$@@@@@@@$$$$$$$$@@@@@@@@*o ++**xx + ===+ x$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@= o+** + ===+ %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$o x=== + ++== ·@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ++++ + =*o· %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ** + ++++ @@$$$$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ++++ + ==x· ~@$$$$@@$%$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + ox== @$$$$$* ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xx + xx++ $$$$$$@· ·=@@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$ ++++ + +++x @$$$$$$$x ~*@$$$$$@+~~~~~~~~~~~~~~~o$@$$$$@ o+++ + +++o $$$$$$$$@@@%o ·@$$$$ +@$$$@~ ~+++ + +++o @$$$$$$$@@$+ ~@$$$$ =@$$$@o ~+++ + +++o @$$$$$$$· +$@$$$$$@*+xxxxxxxxxxxxxx=@@$$$$@o ~+++ + +++o @$$$$$@~ x%@@@@$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@o ~+++ + +++o @$$$$$$% o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+++ + +++x @$$$$$$@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+++ + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+++ + xx+x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+== + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% x== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + ox++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + ox++ %$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == @@$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$@@@$$$$$$$$$$$$$$@* == + ==x· *@@@$$$$$$$@@@@%**%@@@@$$$$$$$@@@$%**$@@@$$$$$$$@@@x x+++ + xx== =$@@@@@@$+ o%@@@@@@@*· =$@@@@@$=· *= + ++== ==++ + ++**++ ==%%== ++%%** +x**++ + ++***%%%%%%***++ ++***%*%%%%***=+ x+==*%*%%%%***=+ + xxxx xxxx xx + diff --git a/src/build/framegen/frames/frame_027.txt b/src/build/framegen/frames/frame_027.txt new file mode 100644 index 000000000..d0b208088 --- /dev/null +++ b/src/build/framegen/frames/frame_027.txt @@ -0,0 +1,41 @@ + + + + +++x + xx++=***%%%%%%%%%%****++++ + ++***%=* ==%***++ + ++**=*x =+**++ + ++**xx o+*%$$@@@@$$$%=x· =*== + ===+ +$@@@@@@@@$$$$$$$@@@@@@@@*~ ++** + ==++ x$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@+ x+*= + ===+ ·%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ ++== + ++== ~@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@~ ==++ + ** $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ o*= + ++++ ~@@$$$$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· ++++ + == o@$$$$@@$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ·x== + ox== @$$$$$% =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == o + xx++ $$$$$$@o ·=@@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$ ++xx + +++o @$$$$$$$x ~*@$$$$$@=~~~~~~~~~~~~~~~o$@$$$$@ x+++ + +++~ ~@$$$$$$$@@@%o @$$$@ x@$$$$ o+++ + +++~ ~@$$$$$$$@@$=· @$$$@ +@$$$@ o+++ + +++~ ·@$$$$$$$~ x%@$$$$$@%+xxxxxxxxxxxxxx+$@$$$$@· ~+++ + +++~ ·@$$$$$@x o%@@@@$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@~ ~+++ + +++o @$$$$$$$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++o @$$$$$$@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+++ + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+++ + xx+x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+++ + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + ox++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + ox++ %$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% == + ==x $@@@$$$$$$$$@@@@$$@@@@$$$$$$$$$@@@@$$@@@@$$$$$$$@@@= o+++ + x+== o%@@@@@@@@%o =@@@@@@@@$+ o%@@@@@@@$x ==xx + ++=+ +=++ + ++**++ ++%%*= %%%= x~=*++ + x+++*%*%====%*%*==xx++**=%*===***===++++***%**==*=%*==xx + ++++++++ xx++=+++ ++=+++ + diff --git a/src/build/framegen/frames/frame_028.txt b/src/build/framegen/frames/frame_028.txt new file mode 100644 index 000000000..aec5d18e8 --- /dev/null +++ b/src/build/framegen/frames/frame_028.txt @@ -0,0 +1,41 @@ + + + + + ++=***%%%%%%%%%%****++++ + ++***%=* · ==****++ + ++**=*x *=**+x + ++**xo o+*%$$@@@@$$%%=x ===+ + ===+ ·=$@@@@@@@@$$$$$$$@@@@@@@@=~ ++== + ==+x x$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ x+== + ==++ ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· +=++ + ++== o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@· ==+x + ** $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ·x== + ++++ o@$$$$$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++x+ + == +@$$$$@@@$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ·+== + ox== @$$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ++++ @$$$$$@= +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$% ++xx + +++o $$$$$$$@= =@$$$$$@*o~~~~~~~~~~~~~~o*@$$$$@ x+++ + +++~ x@$$$$$$$@@@$x @$$$@ @$$$$ o+++ + +++~ x@$$$$$$$@@$*~ @$$$@ ~@$$$@ o+++ + +++~ o@$$$$$$$x o*@$$$$$@%+xxxxxxxxxxxxxx+%@$$$$@ o+++ + +++~ o@$$$$$@* ~*@@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$@ o+++ + +++~ ~@$$$$$$$· ·*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ ·@$$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ~+++ + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+++ + xx+x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+== + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + ox++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + == o@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$@@$ ~+++ + ++=+ +@@@@@@@@@@*~ ~%@@@@@@@@@$x +@@@@@@@@@* ==xo + ==+o ~~~ ·~~ ~~ +=== + ==== **++ =**= +=== + ++===*=+o~··++*=**++++*%=*x~··x+*=**++++**=*+x··++*=**++ + ++======++ +=++====++ ++======++ + diff --git a/src/build/framegen/frames/frame_029.txt b/src/build/framegen/frames/frame_029.txt new file mode 100644 index 000000000..a57630273 --- /dev/null +++ b/src/build/framegen/frames/frame_029.txt @@ -0,0 +1,41 @@ + + + + + ++=**%%%%%%%%%%%%*==+++x + ++==*%=* · ==****=+ + ++**=* *=**++ + ++**xo o=*%$$@@@@@$$%=x ==++ + ===+ ·=$@@@@@@@$$$$$$$$@@@@@@@@=~ ++== + ==+x +$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ ++== + ===+ ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· +=++ + ++=+ o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@· ==++ + ** @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ·x== + ++++ x@$$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++xx + == +@$$$$$@@$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ·x== + ox== ~@$$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ++++ @$$$$$$$ +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$* ++xx + +++~ $$$$$$$@* +@$$$$$@%o~~~~~~~~~~~~~~~=@$$$$@ ++++ + +++· x@$$$$$$$@@@$= $$$$@o @$$$$ x+++ + +++· x@$$$$$$$@@@*o $$$$@x @$$$@ x+++ + +++· x@$$$$$$$= ~*@$$$$$@$+xxxxxxxxxxxxxx+%@$$$$@ o+++ + +++~ x@$$$$$@$ ·*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$@ o+++ + +++~ o@$$$$$$$x =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ ~@$$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+++ + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+++ + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + ox++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + ~x== x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + =* +@@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@ ·+++ + ++++ =@@@@@@@@@@@+ o$@@@@@@@@@@*~ =@@@@@@@@@$o =++x + **x~ ox+xo ~x++x· oxx~ x+== + **+= ==++ ++== ++** + ==**=*+x ·o*+**++===*++ =+*===++**+*~· ·o==**++ + ++++****==++ ++==**=+++ ++==**==++ + diff --git a/src/build/framegen/frames/frame_030.txt b/src/build/framegen/frames/frame_030.txt new file mode 100644 index 000000000..7a9f0d7b9 --- /dev/null +++ b/src/build/framegen/frames/frame_030.txt @@ -0,0 +1,41 @@ + + + + + ++=**%%%%%%%%%%*%*===+xx + ++===*== +=%***++ + x+**=* =+**+x + ++*= ·x=%$$@@@@@@$$%=x· ==++ + ==++ ~*@@@@@@@@$$$$$$$$@@@@@@@@*~ ++== + ==+x +@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@+ x+== + ===x o$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· +=++ + ++++ x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@· ==xx + ** @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ·x== + ++++ +@$$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++xx + == =@$$$$$@@$%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ·x== + ox== o@$$$$$$x ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx+x @$$$$$$@ ~*@@@@$$$$$$$@@@@@@@@@@@@@@@@@$$$$$* ++xx + +++~ ~$$$$$$$$$~ o$@$$$$@$x···············x@@$$$@ ++xx + +++· +@$$$$$$$$@@@%o +@$$@% %$$$$ x+++ + +++· +@$$$$$$$@@@%x =@$$$% %$$$@ x+++ + +++· +@$$$$$$$% =@@$$$$@@*+++++++++++++++*@@$$$@ x+++ + +++· x@$$$$$$@ =$@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$@ o+++ + +++~ x@$$$$$$$* +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ o@$$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ~+++ + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+++ + ++xx @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% +== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + ox== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$@@ ·x== + +++x ~=@@@@@@@@@@@$x ·x$@@@@@@@@@@@=~ ~*@@@@@@@@@@+ ++++ + **o· ~+***=x x=***+~ ~+**+~ ~+== + xx**x+ +o ++ xx** + ++**=*x· o+=+**===*++ ·x=+**====++ ++==== + +++==*%%*===++ ++===*%%**=+=+ +==***==++ + diff --git a/src/build/framegen/frames/frame_031.txt b/src/build/framegen/frames/frame_031.txt new file mode 100644 index 000000000..f7615a100 --- /dev/null +++ b/src/build/framegen/frames/frame_031.txt @@ -0,0 +1,41 @@ + + + + + ++=**%*%%%$$%%%*%*==++++ + ++***%++ ++%***++ + x+**=* =+**++ + ++== ~+*%$@@@@@@@@$%*+~ ==++ + =*++ o*@@@@@@@$$$$$$$$$$@@@@@@@*o ++== + **+x =@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@= x+== + ==+x x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ +=++ + ++++ +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ ==+x + ** @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ·x== + +++x =@$$$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++xx + == *@$$$$$@@$%$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ·+== + ox== x@$$$$$$= +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + +++x @$$$$$$@~ +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$* ++xx + +++~ ~$$$$$$$$@+ =@$$$$$@+ ~%@$$$@ ++xx + +++· +@$$$$$$$$@@@$+ @$$$@ x@$$$ x+++ + +++· +@$$$$$$$@@@%x o@$$$@ =@$$@ x+++ + +++· +@$$$$$$$$ +$@$$$$$@%=++++++++++++++*@@$$$@ x+++ + +++· +@$$$$$$@o +$@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$@ x+++ + +++· x@$$$$$$$$ x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ o@$$$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ~+++ + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+++ + ++xx @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% x== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + ox== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == %@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$@@ ·+== + +++o o=@@@@@@@@@@@@*o· ~+$@@@@@@@@@@@$+~ o*@@@@@@@@@@* ++xx + **o ~=%%%%=o x*%%%*+ o=%%*x ~+** + x+**x+ x~ xx ox**xo + ==**== ==****=*+o =+****==++ x+==== + ++==*%%%%**=++ ++==**%%%*===+ ++=*%%**==++ + diff --git a/src/build/framegen/frames/frame_032.txt b/src/build/framegen/frames/frame_032.txt new file mode 100644 index 000000000..0f9edba55 --- /dev/null +++ b/src/build/framegen/frames/frame_032.txt @@ -0,0 +1,41 @@ + + + + ++ + xx++=*%%%%%%%%%%%%%***==++ + ++***%++ o+****++ + ++**=* =+**++ + ==== o=%$@@@@@@@@@@$%=x +=== + **++ x%@@@@@@@$$$$$$$$$$$@@@@@@%x ++** + **+o *@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@* o+** + ==+o +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o x=++ + ++=+ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==+x + ** ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + +++x *@$$$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· ++++ + == %@$$$$$$@$**$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· ·x== + ox+= +@$$$$$$$ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + +++x @$$$$$$$$ ·=@@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$* ++xx + +++~ o$$$$$$$$$$o ~$@$$$$@= o@$$$@ ++++ + +++· +@$$$$$$$$$@@@$o %@$$@o @$$$ x+++ + +++· +@$$$$$$$$@@%+ $$$$$= @$$@ x+++ + +++· +@$$$$$$$$x x%@@$$$$@@%==============*$@$$$@ x+++ + +++· +@$$$$$$$$ x%@@@@$$$$$$$$@@@@@@@@@@@@@@@@$$$$$@ x+++ + +++· x@$$$$$$$$* o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ o@$$$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ~+++ + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+++ + ++xx @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% +== + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + ox== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == $@@@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$@@~ ·x== + +++o ·o=@@@@@@$@@@@@@=o~o+%@@@@@@@@@@@@%x~~o=@@@@@@@@@@% ++xx + ** ~=%$$$%=~ x*$$$%*x o=%$%+· ·x** + ++**~o ~o**xx + ++****=* ++==**=*+x xx*=****++ =+**xx + ++==*%%%%%**++ ++++*%%%%%%*+++x ++**%%%*==++ + diff --git a/src/build/framegen/frames/frame_033.txt b/src/build/framegen/frames/frame_033.txt new file mode 100644 index 000000000..6155425b4 --- /dev/null +++ b/src/build/framegen/frames/frame_033.txt @@ -0,0 +1,41 @@ + + + + ++++++ + ++==*%%%%%%*****%%%*%**=++ + +=***%+o · *=**=+ + ++**+= ++**++ + ==++ ·x*$$@@@@@@@@@@@$%+~ +=== + **+x +$@@@@@@$$$$$$$$$$$$@@@@@@@= x+** + **+o ·%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%· ~x** + ==+o =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ x+== + ++=+ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ++++ + =* ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ** + +++x *@$$$$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ++++ + == *@$$$$$$@@*=%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + ox== x@$$$$$$$x o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ++++ @$$$$$$$@· o%@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$ ++xx + +++~ ·$$$$$$$$$@* x@$$$$$%· =@$$@ xx++ + +++~ x@$$$$$$$$$@@@@* @$$$$ +@$$ o+++ + +++~ x@$$$$$$$$@@$+ =@$$$$ %$$@ o+++ + +++~ o@$$$$$$$$* o%@@$$$$$@@%**************$@@$$@ o+++ + +++~ o@$$$$$$$@· o%@@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$@ o+++ + +++~ ~@$$$$$$$$$o ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ ·@$$$$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ~+++ + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+++ + xx+x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+== + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + ox== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == $@@@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@@@@@$$$$$$$$$$@@o +== + +++o ~o=$@@@@$$$@@@@@%+oo+%@@@@@$$$@@@@@=xoo=$@@@@@@@@@$ ++++ + o ** ·=%$$$$%+ x*$$$$%=~ ~=%$%=~ ·o** + x+**·~ ·~**+x + ++****==x ox*=***=+x ==****+= =+**++ + ++==*%%%%%%*==++ ==*%%%%%%*==++ ++**%%%*==++ + diff --git a/src/build/framegen/frames/frame_034.txt b/src/build/framegen/frames/frame_034.txt new file mode 100644 index 000000000..690b7d83d --- /dev/null +++ b/src/build/framegen/frames/frame_034.txt @@ -0,0 +1,41 @@ + + + + +++++++++++ + ++=**%%%**==++==**%*%***++ + +=**=* =+*===+x + ++**++ xx==== + ==== o=%$@@@@@@@@@@@@@$%+~ ++**xo + **+x ·=@@@@@@$$$$$$$$$$$$$$$@@@@@$x ~**+x + **+o ~%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@= **xx + ==+o =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ ·x** + ++=+ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ x+++ + ** ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + ++++ +@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ o+++ + == +@$$$$$$$@%xo=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + == @$$$$$$$@ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ++xx + ++++ $$$$$$$$$@ ·=@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$@ x+++ + ++xx @$$$$$$$$$@%~ o$$$$$$+ +$$$~ ~+++ + +++x @$$$$$$$$$$@@@@% o@$$@% *@@+ ·+++ + +++x @$$$$$$$$$@@*~ %$$$$$ $$@+ ·+++ + +++x @$$$$$$$$@x ·=@@@$$$$$@@$$$$$$$$$$$$$$$@@$$@+ ·+++ + +++x @$$$$$$$$@ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+++ + +++x @$$$$$$$$$@x =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+++ + xxxx @$$$$$$$$$$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+== + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·x== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox+= *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + ox== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == $@@@@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$@+ == + +++o ox+*@@@@@$$$@@@@@*+xx=$@@@@$$$$@@@@$=xx+%@@@@@@@@@$ ++++ + ox** x%$$@$$*x ~=%$@@$%=· x%$$*o ** + ++** **xx + xx*****=xx ==****+= ++****+= =+**+x + xx++***%%%%**=++ ++**%%%%%%**++ ++=**%%*==++ + diff --git a/src/build/framegen/frames/frame_035.txt b/src/build/framegen/frames/frame_035.txt new file mode 100644 index 000000000..32f4209a7 --- /dev/null +++ b/src/build/framegen/frames/frame_035.txt @@ -0,0 +1,41 @@ + + + + ++++++++++++++ + ++=**%*%==xxxxxx++**%*%*==++ + +=**=* ~+*=**++ + ++**++ ==**xx + ===+ +%$@@@@@@@@@@@@@@@$%+ ox**++ + **+x ~*@@@@@$$$$$$$$$$$$$$$$$@@@@@*~ ==++ + **x~ o$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%~ ==++ + ==+x =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ **xx + ++=+ +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ~+== + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ +++x + ++++ o@$$$$$$$$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ·x== + ==+· ~@$$$$$$$$@+ ·+$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xo + == @$$$$$$$$$ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++++ + ox== =$$$$$$$$$$ =$@@$$$$$@@@@@@@@@@@@@@@@@@@@$@~ ~+++ + xx++ @$$$$$$$$$$@%o x$$$$$$ =$@* ·+== + xx++ @$$$$$$$$$$$@@@@= %@$$@~ @@$ == + xx++ @$$$$$$$$$$@%x o$$$$$% +$@$ == + xx++ @$$$$$$$$$$ +$@@$$$$$@@@@@@@@@@@@@@@@@@@@$@$ == + xx++ @$$$$$$$$$$ +%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + xx++ @$$$$$$$$$$@x x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + xx++ @$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== =$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + == x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == $@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@@@@@$$$$$$$$$$@= == + +++o oxx=$@@@@$$$$@@@@$=xx+%@@@@$$$$@@@@@*+xx*@@@@@@@@@@· x+++ + o ** ~=$$@@$%=· +%$@@@$*x ~*$$*x ** + ++** **+x + xx******++ =+****+= +x==**== =+**++ + +=**%%%%%%**++ ++***%%%%***+++x ++==*%%**=++ + diff --git a/src/build/framegen/frames/frame_036.txt b/src/build/framegen/frames/frame_036.txt new file mode 100644 index 000000000..9545578f3 --- /dev/null +++ b/src/build/framegen/frames/frame_036.txt @@ -0,0 +1,41 @@ + + + + ++++==****==++++ + x==***%==oo x+==%***=+ + xx===*++ ++**== + ++**x+ ·oxx++xxo· ++**++ + **++ o*$@@@@@@@@@@@@@@@@@@$=~ +=== + **+x o%@@@@@$$$$$$$$$$$$$$$$$$@@@@@%~ x+== + =*+o o$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%· x+== + ++=+ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o +=++ + xx== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· *=o~ + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* o+++ + ox== @@$$$$$$$$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + +++o @$$$$$$$$$$~ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == %$$$$$$$$$@ =$@@@$$$$$$$$$$@@@@@@@@@@@@@@$$$@x ·+== + == @$$$$$$$$$$o =@@@$$$$@@@$$$$$$$$$$$$$$$@@$@ == + == o$$$$$$$$$$$@@*~ %$$$$$ $$ == + == x@$$$$$$$$$$$@@@@* +@$$@* %@ == + == x@$$$$$$$$$$@*· +@$$$$@= =$@ == + == x@$$$$$$$$$@ ~*@@@$$$$$$@@@@@@@@@@@@@@@@@@@$@ == + == x@$$$$$$$$$@ ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@$$$$$$$$$$@%xx*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == %@@@@@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@@@@@$$$$$$$$$@% == + +++o ~+x+*@@@@@$$$$@@@@%=xx=$@@@@$$$$@@@@@*xx+*@@@@@@@@@o x+++ + ** o*$@@@$%+ =%$@@$$*o x*$%x ** + x+** **+x + xx******+= x=***==x ==**==++ =+**++ + ++==*%%%%*%*==xx ++==*%*%%%%*==++ ++**%**=++ + diff --git a/src/build/framegen/frames/frame_037.txt b/src/build/framegen/frames/frame_037.txt new file mode 100644 index 000000000..1e29736ef --- /dev/null +++ b/src/build/framegen/frames/frame_037.txt @@ -0,0 +1,41 @@ + + + + ++++=***%%%%***=++++ + ++==*%*%+x x+**%*==++ + x+**=*+o *=**++ + ++**x ~x==*****=+o· *=== + **++ +%@@@@@@@@@@@@@@@@@@@@$=~ ++**xx + **+x x$@@@@$$$$$$$$$$$$$$$$$$$$@@@@@* ~o**xx + ==+o o$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ·x** + ++=+ +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ o+== + xx== o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ++++ + +++o %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + == $@$$$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ++xx + ++++ $@$$$$$$$$$* o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ·+++ + +++· o@$$$$$$$$$@ o%@@@@$$$$$$$$@@@@@@@@@@@@@@@@$$@ == + == $$$$$$$$$$$$+ x%@@$$$$@@%*=============*$@$· == + == @$$$$$$$$$$$@@$+ %$$$$% $= ==xx + == @$$$$$$$$$$$$@@@$x =@$$@= $* ==xo + == @$$$$$$$$$$$@x %@$$$$@*· ~$@= ==xo + == @$$$$$$$$$$@ =$@@@$$$$$$@@@@@@@@@@@@@@@@@@@@= ==xo + == @$$$$$$$$$$@ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$@$**$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == *@@@@@@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@@@@@@$$$$$$$$@% == + +++x ~=xx+%@@@@$$$$@@@@@*+xx*@@@@@$$$$@@@@%=xx+%@@@@@@@@o o+++ + ** +%$@@$$*o o*$$@@$%+ +%%x ** + x+** **++ + ++**==****xo ==****++ =+****+= =+**++ + ++ x+==*%*%%%%*==++ ==**%%%%%%**=+ +=**%***++ + diff --git a/src/build/framegen/frames/frame_038.txt b/src/build/framegen/frames/frame_038.txt new file mode 100644 index 000000000..01d7bdf81 --- /dev/null +++ b/src/build/framegen/frames/frame_038.txt @@ -0,0 +1,41 @@ + + + + x+++==*%%%%%%%%%%%%*==++ + ++***%++ ox**%*==+x + x+**+= x+*=== + ==== ·x=*%$@@@@@$$%*+~ x+**++ + **++ o*@@@@@@@@$$$$$$$@@@@@@@@%+ ==++ + **+o =@@@@$$$$$$$$$$$$$$$$$$$$$$$@@@@%o +=++ + ==+x o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* +=++ + ++++ x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ ==+x + ** @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ·x== + ++++ x@$$$$$$$$$$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ +++x + == +@$$$$$$$$$@@@$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ·+== + ox== @$$$$$$$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ++++ @$$$$$$$$$$@= =$@@@$$$$$$$@@@@@@@@@@@@@@@@@@% ++xx + +++o $$$$$$$$$$$$@= =@$$$$$@*o~~~~~~~~~~~~~~o%@ x+xx + +++~ o@$$$$$$$$$$$$@@@%x @$$$@ ~ o+++ + +++~ x@$$$$$$$$$$$$@@$*~ @$$$@ x o+++ + +++· x@$$$$$$$$$$$$o o%@$$$$$@%xxxxxxxxxxxxxxx+$@ o+++ + +++· x@$$$$$$$$$$@+ o*@@@@$$$$$$$@@@@@@@@@@@@@@@@@@$ o+++ + +++· +@$$$$$$$$$$$$ ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + +++· +@$$$$$$$$$$$@@@$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + +++· =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + +++· =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ xxxx + ==+· *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ==x %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++++ + == %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++++ + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$* ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == x@@@@@@@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@@@@@@$$$$$$$@$ == + ++++ *+oox*@@@@@$$$@@@@@*xox=$@@@@$$$@@@@@%+oo+%@@@@@@@x o+++ + **o· x%$$@$%*o ~=%$$$$%+ +*x **xo + xx**~· **++ + xx**+=****+= ++****== x+******xo =+**+x + ++ +=***%%%%%**== ++==*%*%%%%*==+x x+==***=++ + diff --git a/src/build/framegen/frames/frame_039.txt b/src/build/framegen/frames/frame_039.txt new file mode 100644 index 000000000..cea0cf6e2 --- /dev/null +++ b/src/build/framegen/frames/frame_039.txt @@ -0,0 +1,41 @@ + + + ++++++ + +++=**%$%%******%%$%%*=+++ + ++***%+o x+%=**++ + ++**+= ==**++ + ===+ ·x*%$@@@@@@@@@@$%*x ==== + **+x +$@@@@@@$$$$$$$$$$$$@@@@@@$+ ++** + ==+o *@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@%~ ~+** + ++=+ o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ~+== + xx== o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ++++ + ==x· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xo + xx++ @@$$$$$$$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% o+++ + ==x· @$$$$$$$$$$@@%=*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + == @$$$$$$$$$$$$ ·=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$* ++xx + ox== +$$$$$$$$$$$@% ·*@@@@$$$$$$@@@@@@@@@@@@@@@@@@ o+++ + xx++ $$$$$$$$$$$$$@$o ~$$$$$$@+ x= ·+== + xx++ @$$$$$$$$$$$$$$@@@$o $$$$@ x== + xx++ @$$$$$$$$$$$$$@@%o $$$$$+ · x== + xx++ @$$$$$$$$$$$$$ =@@$$$$$@@%**************%@$ x== + ++++ @$$$$$$$$$$$@% +$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$* ·x== + +++x @$$$$$$$$$$$$$+ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + ++xx @$$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+== + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+++ + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ~+++ + +++~ ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++~ o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++· +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ==+· *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ xx++ + ==x %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + ==+· ~@@@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@@@@@@$$$$$$@$ == + ++++ %*xoox%@@@@@$$@@@@@$+oox=@@@@@$$$@@@@@*xoo+%@@@@@@x ~+== + **+· +%$$$$%+ o=%$$$%=o +o **xo + xx**o~ **++ + xx**+=****==+o ~x==**==++ ==****++ =+**+x + ++xx x+==*%%%%%%*==++ x+++**%%%%%*==++ ++****++ + diff --git a/src/build/framegen/frames/frame_040.txt b/src/build/framegen/frames/frame_040.txt new file mode 100644 index 000000000..e8bfe577f --- /dev/null +++ b/src/build/framegen/frames/frame_040.txt @@ -0,0 +1,41 @@ + + + ++++======++++ + +=***%=*++++xx++++**%*%*==+x + xx==**++ o+****++ + ++**x+ · *=** + ===+ ·+*$@@@@@@@@@@@@@@@$*+· xx**++ + **+x ·*@@@@@$$$$$$$$$$$$$$$$$@@@@@%o =*++ + ==+x %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@x +=++ + ++=+ o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ==++ + ox=* @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ** + +++o =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ x+++ + == $@$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% == + ++++ %@$$$$$$$$$$$@$o ~=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + ==x· o@$$$$$$$$$$$@* ·*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$+ ·+== + == @$$$$$$$$$$$$$% ~*@@@$$$$$@@@@@@@@@@@@@@@@@@ == + == $$$$$$$$$$$$$$@@*~ =$$$$$* == + == @$$$$$$$$$$$$$$$@@@@x @$$$@ == + == @$$$$$$$$$$$$$@@*~ =$$$$$* == + == @$$$$$$$$$$$$$* ~=@@@$$$$$@@@@@@@@@@@@@@@@@@o == + == ·@$$$$$$$$$$$$@= ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$· == + == ~@$$$$$$$$$$$$$@%~ ~=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·x== + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+++ + +++~ ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· ~+++ + +++· +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ==+· *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ x+++ + ==x %$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + +++~ @@$@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@$$$$$@@ == x + ++++ =@*o··~+@@@@@@@@@@@@$+~·~x%@@@@@@@@@@@@*o··o=@@@@@x ~+== + ==x~ ~=%%$%*+ x*%$%%=~ · **xx + x+**x~ oo **++ + x+**+===****+= *=****==xo ++==**==++ =+**++ + ++++ ++****%%%***++ ++==**%%%***+++x ++==**++ + diff --git a/src/build/framegen/frames/frame_041.txt b/src/build/framegen/frames/frame_041.txt new file mode 100644 index 000000000..aa4c74898 --- /dev/null +++ b/src/build/framegen/frames/frame_041.txt @@ -0,0 +1,41 @@ + + + x+++==******===+++ + ++==****++xo ·~++**%***++ + ++****+x ==%*++ + ++*=ox ~ox+++xx~ ++**++ + **++ o*$@@@@@@@@@@@@@@@@@@%=~ ==== + =*+x o%@@@@$$$$$$$$$$$$$$$$$$$@@@@@%o x+** + ==+x ·%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$o ~+** + ++=+ ~@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* x+== + ** $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= +=++ + ++++ x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ** + == +@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ++++ + xx== o@$$$$$$$$$$$$$% ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@o ·+== + +++x @$$$$$$$$$$$$$$ ·=@@@@$$$$$$$$$$@@@@@@@@@@@@$@ == + +++· +$$$$$$$$$$$$$$$· ~*@@$$$$$@@@%%%%%%%%%%%%%%= ==xo + == %@$$$$$$$$$$$$$$@@=~ $$$$$% ++xx + == $$$$$$$$$$$$$$$$$@@@@= *@$$@x ++xx + == $$$$$$$$$$$$$$$$@= =@$$$$$x ++xx + == $$$$$$$$$$$$$$$$ o%@@@$$$$$$@@@@@@@@@@@@@@@@@ ++xx + == @$$$$$$$$$$$$$$$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$@*x+%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + xx+x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++· x$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ o+++ + ==+· =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++++ + +++o @@$$@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@$$$$@@ ==xo + xx== x@@+~ ·x$@@@@@@@@@@@*o o*@@@@@@@@@@@$+~ ·+$@@$o ~+== + ==+o +*%%*=o o=*%%*x *=+x + ox**+o ++ x+ o~**++ + xx**===+****==+= ++*=****+= o+*=****==++*=**++ + ++++xx x+==********==+x ++********==++ ++==++ + diff --git a/src/build/framegen/frames/frame_042.txt b/src/build/framegen/frames/frame_042.txt new file mode 100644 index 000000000..96715cf2b --- /dev/null +++ b/src/build/framegen/frames/frame_042.txt @@ -0,0 +1,41 @@ + + + xx===***%%%%%%%%***=++ + ++**=%=+ ·o==%*==++ + ++**+= *=**++ + ==== o+=*%$$$$%*=+o =+** + **++ ~=$@@@@@@@@@@@@@@@@@@@@@%+ o**++ + ==+x +$@@@$$$$$$$$$$$$$$$$$$$$$$@@@@$+ ==++ + ++++ ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ==++ + xx== $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* *=xo + ==+· %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ·x== + xx== @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++++ + +++~ @$$$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + == @$$$$$$$$$$$$$$$= =$@@@$$$$$$$$$$$$$$$$$$$$$$$$@ ==xo + ox== x@$$$$$$$$$$$$$$@ =$@@@$$$$$$$$@@@@@@@@@@@@@@ ++x+ + xx++ $$$$$$$$$$$$$$$$$* =@@$$$$@@*+++++++++++++ ~+++ + ++++ @$$$$$$$$$$$$$$$$@@@*x *@$$$% ·+== + +++x @$$$$$$$$$$$$$$$$$@@@*o =@$$$* ·+== + ++xx @$$$$$$$$$$$$$$$$$~ o$@$$$$@$x············· ·+== + xx+x @$$$$$$$$$$$$$$$@ o*@@@@$$$$$$$@@@@@@@@@@@@@@* ·+++ + +++x @$$$$$$$$$$$$$$$$~ o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$+ ·+++ + +++o @$$$$$$$$$$$$$$$$@@%%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+++ + +++o ·@$$$$$$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++~ o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++· =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+xx + == %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++++ + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + ox== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% == + +++o $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$+ ·+++ + +++~ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ++++ *@@$$@@@@@@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@@@@@@$@@@ ==xx + ox== %@@=~ x$@@@@@@@@@@%x ~*@@@@@@@@@@@=· x$$~ ~+== + ==++ o+==x~ ~x+=+o *=xx + ox**++ == == == xo**++ + xx==**+=*=****==+= ·x*=******+=x~ *=******+===**++ + x++=++ ++==********++xx xx++********++++ ++++ + diff --git a/src/build/framegen/frames/frame_043.txt b/src/build/framegen/frames/frame_043.txt new file mode 100644 index 000000000..849ab3794 --- /dev/null +++ b/src/build/framegen/frames/frame_043.txt @@ -0,0 +1,41 @@ + + + ++==***%*%%%%%%%%%**=+++ + ++**=*+x o+**%*== + ++**+= x+**=+ + ===+ o+*%$@@@@@@@$%=+~ ++**+x + =*=x o*@@@@@@@$$$$$$$$$@@@@@@@%+ +=++ + ==+x +@@@@$$$$$$$$$$$$$$$$$$$$$$$@@@@$x x+== + ++=+ $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$o x+== + xx== $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ +=++ + ==+~ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o *=xo + ox== $@$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ~+== + +++x $@$$$$$$$$$$$$$$@@@%$@@@$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==x =@$$$$$$$$$$$$$$$% +$@@@@$$$$$$$$$$$$$$$$$$$$$$$ ++++ + == @$$$$$$$$$$$$$$$@= +$@@@$$$$$$$@@@@@@@@@@@@@= ·x== + == o$$$$$$$$$$$$$$$$$@= =@$$$$$@*~···········~ == + ox== =@$$$$$$$$$$$$$$$$$@@@$+ @$$$@ == + ox== *@$$$$$$$$$$$$$$$$$@@$=~ @$$$@· == + ox== *@$$$$$$$$$$$$$$$$$o o%@$$$$$@$+xxxxxxxxxxx+ == + ox++ %@$$$$$$$$$$$$$$$@= o%@@@@$$$$$$$@@@@@@@@@@@@@@ == + xx++ %@$$$$$$$$$$$$$$$$$ o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx++ $@$$$$$$$$$$$$$$$$@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% x== + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+++ + +++~ ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· ~+++ + +++· =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + ox== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx+x $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$% ·x== + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + ++++ o@@$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@@@@@@@@$ ==xx + xx== =@@@+ =@@@@@@@@@@%o x$@@@@@@@@@@+ ·= ~x== + ===+ ~xxo ·oxo· ·o**xx + ===+ =*=+ +=*= x+== xx**++ + ==**=**=**==**=*+= ·o=+*=****===*x~ +=*=**==***=**++ + ++++++++ ++==******==++ ++==******==++ x+++ + diff --git a/src/build/framegen/frames/frame_044.txt b/src/build/framegen/frames/frame_044.txt new file mode 100644 index 000000000..5ebc901a3 --- /dev/null +++ b/src/build/framegen/frames/frame_044.txt @@ -0,0 +1,41 @@ + + xx++++++ + ++***%*%*%****%%%%$%**== + x+==**+= x+%%%*++ + ++**x+ =***++ + ===+ ~+%$@@@@@@@@@@@@$*+· *=== + ===+ +$@@@@@$$$$$$$$$$$$$@@@@@@$=· xx**xx + ===+ =@@@@$$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ **+x + ++== %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$o **xo + ** %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ·x** + ++++ ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ ++++ + == x@$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$@* == + xx== ~@$$$$$$$$$$$$$$$$$@$=+%@@@@$$$$$$$$$$$$$$$$$$$$$$@$ x+++ + +++x @$$$$$$$$$$$$$$$$$@ x%@@@@$$$$$$$$$$$$$$$$$$$$* == + ==+· +$$$$$$$$$$$$$$$$$$@ x%@@@$$$$$$@@@@@@@@@@@@ == + == $$$$$$$$$$$$$$$$$$$$@= =@$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$@@@@= +@$$@* ++xx + == @$$$$$$$$$$$$$$$$$$$@@%x %$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$x +$@@$$$$@@$%%%%%%%%%%* ++xx + == @$$$$$$$$$$$$$$$$$$@ x$@@@@$$$$$$$$$@@@@@@@@@@% ++xo + == @$$$$$$$$$$$$$$$$$$$% +%@@@@$$$$$$$$$$$$$$$$$$$$$$$= ==xo + == @$$$$$$$$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + x+== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + +++o ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + ==+· *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++++ + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + ox== +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ++++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ~+++ + xx+= $@@$$$@@@@@@@@@@$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@@@@@@% ++xx + ox==x· ·%@@@%o ~%@@@@@@@@$+ =@@@@@@@@@*~ o+== + +++= ~x**xo + ====~o **== =*** +=%%x+++**++ + ++**===*%=**====**=*++++==*=**====**=*==++++%**=**==**==++ + ++++==++++ ++++****==++++ x+++==***=+++x xx + diff --git a/src/build/framegen/frames/frame_045.txt b/src/build/framegen/frames/frame_045.txt new file mode 100644 index 000000000..5ad22dd68 --- /dev/null +++ b/src/build/framegen/frames/frame_045.txt @@ -0,0 +1,41 @@ + + xx++++++++xx + x+==***%****======%%%%%%==++ + xx=**=++ **%*++ + ++**xx x+%*++ + ===+ x*$@@@@@@@@@@@@@@$*+· ++**+x + ===+ =$@@@@@$$$$$$$$$$$$$$$@@@@@$+ **++ + ++=+ =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@%~ ==++ + x+== %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ==++ + ==x· *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ **xo + x+++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ·+== + ==+· @$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$@@ ++xx + == @$$$$$$$$$$$$$$$$$$$@=ox*@@@@$$$$$$$$$$$$$$$$$$$$$@ ·+== + xx++ %$$$$$$$$$$$$$$$$$$$$ o*@@@@$$$$$$$$$$$$$$$$$$@ == + +++o @$$$$$$$$$$$$$$$$$$$$ o%@@@$$$$$$@@@@@@@@@@@ ++++ + +++· x$$$$$$$$$$$$$$$$$$$$$@= =@$$$$$o ++++ + +++· =@$$$$$$$$$$$$$$$$$$$$$@@@@= %@$$@o x+++ + +++· =@$$$$$$$$$$$$$$$$$$$$@$= $$$$$% x+++ + ==+· =@$$$$$$$$$$$$$$$$$$$$ o%@@$$$$$@@@$$$$$$$$$ xx++ + ==+· *@$$$$$$$$$$$$$$$$$$@$ o*@@@@$$$$$$$$$$$$$$$$$$@ x+++ + ==x %@$$$$$$$$$$$$$$$$$$$$% o*@@@@$$$$$$$$$$$$$$$$$$$$$$$ ++++ + == $@$$$$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + == +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + +++~ ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + ==x %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++++ + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* =+xo + == ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$· == + xx++ %$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ *@$$$$$$$$$$$@@$$$$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$$@@@@@ ~+== + ++== *@@@$$$@@@@$%%@@@@$$$$$$$$@@@@%%$@@@$$$$$$$$@@@@$%$* =+xx + ==+~ +$@@@%o ~*@@@@@@@$= +$@@@@@@@*o o+== + ++==o x+*=xx + ====x+ ++%%== ox***= ****+=**++ + ++**=*=****=**++==**=%****%*%***++==**=*=***%%%***======+x + ++++++++ ++++======++ x+++======++++ + diff --git a/src/build/framegen/frames/frame_046.txt b/src/build/framegen/frames/frame_046.txt new file mode 100644 index 000000000..be7984158 --- /dev/null +++ b/src/build/framegen/frames/frame_046.txt @@ -0,0 +1,41 @@ + + ++++====++++xx + x+==***%=*=+xooox+==%%%*%*== + xx**==+x x+%*==+x + ++**ox ···· %=== + ===+ ·+%@@@@@@@@@@@@@@@@$%+· x**++ + ==++ *@@@@@$$$$$$$$$$$$$$$$$@@@@@%+ +=== + ++=+ =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@* ++== + ox== *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ x+== + ==+~ x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* +=++ + ox== %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x *= + +++o $@$$$$$$$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$$$$$$$$@% o+++ + == %@$$$$$$$$$$$$$$$$$$$$@$o ·=$@@@$$$$$$$$$$$$$$$$$$@$ == + == @$$$$$$$$$$$$$$$$$$$$@% =$@@@$$$$$$$$$$$$$$$$% ++x+ + x+++ %$$$$$$$$$$$$$$$$$$$$$$$ =$@@$$$$$@@@@@@@@@ o+++ + xx++ @$$$$$$$$$$$$$$$$$$$$$$@@%o x$$$$$% ·+++ + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$@@@@+ $$$$@ ·x== + ++++ @$$$$$$$$$$$$$$$$$$$$$$@@%o x$$$$$% ·x== + +++x @$$$$$$$$$$$$$$$$$$$$$$$ =$@@$$$$$@@@@@@@@@% ·+== + xx+x @$$$$$$$$$$$$$$$$$$$$$@% =@@@@$$$$$$$$$$$$$$$$$= ·+== + +++x @$$$$$$$$$$$$$$$$$$$$$$@$o ~=$@@@$$$$$$$$$$$$$$$$$$$$@+ ·+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++~ x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + ==+· *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·x== + +++~ o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ox++ + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$= ==xo + ox== x$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx== @$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@@@ ·+== + ox== @@@@$$$@@@@@*+x+*@@@@$$$$$@@@@%=+x=$@@@@$$$$@@@@@*x ==++ + ==++ x%$@@$=o x%$@@@$%x ~=$@@@@$=~ ++== + ++==+o x+==+x + ++==++ ++****++ ++*=*=++ x*=**==xx + ++==*****%%%%***++++*****%%%%**=**++++==***%*%%*****==++ + ++++++++++ xx++++++++++xx ++++++++++++ + diff --git a/src/build/framegen/frames/frame_047.txt b/src/build/framegen/frames/frame_047.txt new file mode 100644 index 000000000..8dfb79787 --- /dev/null +++ b/src/build/framegen/frames/frame_047.txt @@ -0,0 +1,41 @@ + + ++++========++++ + ++==**=*==+x~····~x+**%%%%*=+x + ++**==xx ·x%*%*++ + ++==~o ~~ooo~· *=**+x + ===+ ~=$@@@@@@@@@@@@@@@@@$*x *==+ + ===+ *@@@@@$$$$$$$$$$$$$$$$$$@@@@@*· ++** + ++=+ +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$o ox** + ox== =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@% ~+*= + ==+o ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ x+++ + ox== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ==+x + ++++ *@$$$$$$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$@@ ·+== + ==x· x@$$$$$$$$$$$$$$$$$$$$$$$%~ x%@@@@$$$$$$$$$$$$$$$$@ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$ x%@@@@$$$$$$$$$$$$$@ x+++ + o == x$$$$$$$$$$$$$$$$$$$$$$$$$ x%@@$$$$$@@@$$$$= ·+== + ox++ %@$$$$$$$$$$$$$$$$$$$$$$$$@$+ ·$$$$$% == + ox++ $@$$$$$$$$$$$$$$$$$$$$$$$$$@@@@= %@$$@o == + ox++ $@$$$$$$$$$$$$$$$$$$$$$$$$@*~ +@$$$$$~ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$ ~*@@@$$$$$$@@@@@@@ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$ ~*@@@@$$$$$$$$$$$$$$$$ == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$@+~o=@@@@$$$$$$$$$$$$$$$$$$@$ == + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$@* ·+== + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+++ + +++~ ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++· =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+xx + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + o == +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + x+++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o ~+++ + ==x· *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ +++x + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$% ++xo + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== @@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$@@$ ~+== + ox== +$@@@@@@@@@@@%+~ o*@@@@@@@@@@@@=o ~+$@@@@@@@@@@%· ==++ + ==++ ~+*%%%=x x=%%%*+~ ~+*%%=x +=== + ++==++ xo xx +===xx + ++====++ ======++ox =+**====++ =+====+x + ++++=***********==++++==**=**%******++++==**=*********++ + ++++++++++ ++++++++++ ++++++++++ + diff --git a/src/build/framegen/frames/frame_048.txt b/src/build/framegen/frames/frame_048.txt new file mode 100644 index 000000000..74a3df818 --- /dev/null +++ b/src/build/framegen/frames/frame_048.txt @@ -0,0 +1,41 @@ + + ++======**====++ + ++****=*++o~ ·~++%*$%**++ + x+**+= **%*++ + ==== ~oxxxxxo~ ++**++ + ===+ o*$@@@@@@@@@@@@@@@@@@%=~ ==== + ===+ *@@@@$$$$$$$$$$$$$$$$$$$@@@@@%x xx**xo + ++== +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@= **xx + ** =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x ** + +++x @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ·+== + =* x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++++ + ++++ x@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$$$@+ ** + +++~ @$$$$$$$$$$$$$$$$$$$$$$$$$$$x +$@@@@$$$$$$$$$$$$@= ++xx + == $$$$$$$$$$$$$$$$$$$$$$$$$$$@· x$@@@@$$$$$$$$$@~ ·+++ + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$* x$@@$$$$$@@$$ == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$x +$$$$$o == + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$o @$$$@ == + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$@$o ·$$$$$$% == + == x@$$$$$$$$$$$$$$$$$$$$$$$$$$@x =$@@@$$$$$@@@@ == + xx== +@$$$$$$$$$$$$$$$$$$$$$$$$$$@x =$@@@$$$$$$$$$$$$$ == + xx== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$@$+x=$@@@$$$$$$$$$$$$$$$$@ == + xx++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$@ == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + ++xx @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + ==+· *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o == + xx++ %$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + +x+x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + +++· +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ox== *@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$@@% ~+== + ==+~ +@@@@@@@@@@%x ~%@@@@@@@@@@= =@@@@@$+ ==++ + ==== ~ooo ·ooo~ +=== + xx==++·~+==+ +=** o+** xo==== + ++==========+= ~ ~x==*=======+=xo ++%=======+=++==*===== + x+++++++==**********==++++====********==++++++==****==++ + ++++++++ xx+++++xxx ++ + diff --git a/src/build/framegen/frames/frame_049.txt b/src/build/framegen/frames/frame_049.txt new file mode 100644 index 000000000..a8e97f28d --- /dev/null +++ b/src/build/framegen/frames/frame_049.txt @@ -0,0 +1,41 @@ + + ++====*****=**=+++ + ++***%==++ ··x+**$%**++ + ++**+= =*%*++ + ==== ·ox+++++xo· x+**++ + ===+ x*@@@@@@@@@@@@@@@@@@@$=o *+== + ===+ ·*@@@@$$$$$$$$$$$$$$$$$$$$@@@@$= xx**xx + ++== +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@% **+x + ** +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ **xo + ++++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ·x** + ** o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ++++ + xx++ ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@* == + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$% +$@@@$$$$$$$$$$@% +++x + == %$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ +$@@@@$$$$$$@+ ·+== + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$x +$@@$$$$$@ == + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@%o %$$$$$ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@* o@$$@% == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@=· +@$$$$@* == + == ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o%@@@$$$$$$@~ == + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o*@@@@$$$$$$$$$$ == + o == +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@%++*@@@@$$$$$$$$$$$$$@ == + x+== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$$$@ == + xx++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% == + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+++ + +++· +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +++x + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$+ == o + ox== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$% ·x== + +++~ x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + == ~@@@@@@@@@@$$$$$$$$$@@@@@@@@@@$$$$$$$$@@@@@@@@@@$@@@+ o+== + ==+x o =@@@@@@@@@*· o$@@@@@@@@$x *@*~ ==xx + +++=x· ==+= + oo====xo x+%%+x %%=+ %*%* ++==== + ++============+==*++++*=%*=======*+=++++==**=========*%=*=++ + ++==++xx++====******==++ ++====******==++xx++====++++ + ++++ ++++ + diff --git a/src/build/framegen/frames/frame_050.txt b/src/build/framegen/frames/frame_050.txt new file mode 100644 index 000000000..3151bf440 --- /dev/null +++ b/src/build/framegen/frames/frame_050.txt @@ -0,0 +1,41 @@ + + ++===*******===+++ + ++****=*+x o+**%**=++ + ++**++ +=$*== + ==== ~o++===++o~ o+%*++ + ==++ x%@@@@@@@@@@@@@@@@@@@$*x =+** + ===+ ~%@@@@$$$$$$$$$$$$$$$$$$$$@@@@$= o**+x + ++== =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%· **xx + ** =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= **xo + ++++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ·o** + == x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o x+++ + xx++ o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$@% *= + +++~ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$* +$@@@$$$$$@$ +++x + == %$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ +$@@@$$@= ·x== + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ +$@$@ == + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@%o $$· == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@+ *@o == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ *@@~ == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +$@@@$@· == + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +$@@@@$$$$@ == + == +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@%+=$@@@@$$$$$$$$@ == + ox== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$@ == + xx++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% == + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+++ + +++· +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +++x + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$+ ==xo + ox== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$% x== + +++~ o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @@$$$$$$$$$@@@@$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@@@@@@% == + ==x· $@@@$@@@@$***%@@@$$$$$$$@@@@%***@@@@$$$$$$@@@@$***%· x+== + ==++ +$@%+ =$@@@@@$*o x%@@@@@@%+ ·x==xx + +++++x xx==++ + ==+=++ ==**=+ +=%**= x+***==+==++ + =======*%**==========*****%**==========*******%**=======++ + ++++====++ ++++========++xx xx++========++++ + + diff --git a/src/build/framegen/frames/frame_051.txt b/src/build/framegen/frames/frame_051.txt new file mode 100644 index 000000000..bdf577d22 --- /dev/null +++ b/src/build/framegen/frames/frame_051.txt @@ -0,0 +1,41 @@ + + x++===*******===+++ + ++**=*==+x o+**%**=++ + ++**+= ==%*++ + ===+ ~x+=====+x~ x=**++ + **+x +%@@@@@@@@@@@@@@@@@@@$*x =+== + ===x o$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$= ox**xx + ++=+ %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* **xx + oo== %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ** + ==+o o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ·+== + == *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++++ + ++++ *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@@@$$$$@+ == + ==x· ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·=@@@@$@= ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·=@@@~ ~+++ + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ·* == + == +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@*~ == + ox== +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$x == + ox== +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$o == + ox== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% =$@ == + ox== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$% =@@@@$$ == + ox++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@*+=$@@@$$$$$@ == + ox++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$$$$$$$$$$ == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% == + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+++ + +++~ o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + ==x %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++++ + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$% +++x + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + xx++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$= ·+++ + +++· =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xx + == $@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@= ** + ==+· =@@@@$$$$@@@@@*+xx=$@@@@$$$$@@@@%=xx+%@@@@$$$$@@@@* ++++ + ==++ +%$@@@%=o o*$@@@$*+ +%$@@$*+ o+==xo + ++++++ ++==++ + ====*=x+ ++**==++ x+*===++ x+====++ + ++=====***%%***=**+++======*%%%*****==++====*%*%%**=**==++ + ++++====++++xx +++++===++++++ ++++++==++++++ + + diff --git a/src/build/framegen/frames/frame_052.txt b/src/build/framegen/frames/frame_052.txt new file mode 100644 index 000000000..22bc6aea2 --- /dev/null +++ b/src/build/framegen/frames/frame_052.txt @@ -0,0 +1,41 @@ + + ++++===*******===+++ + +=***%==x~ o+**$%*=++ + +=**++ **%*++ + x+**++ ·ox+====+xo~ ==**+x + xx**xo o*@@@@@@@@@@@@@@@@@@@@%=~ ==++ + xx**x· *@@@@$$$$$$$$$$$$$$$$$$$$@@@@@%o ++*= + ==+o x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$x o+** + ++++ x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ~+== + ** $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ++++ + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ == + ==+· @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@@ o+++ + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$· x == + ox++ *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$* x+++ + +++x $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$=· ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@*· ·+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@*· ·+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ~+++ + +++~ ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@=+*@@~ o+++ + +++· x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$$ o+++ + ==+· *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + o == +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+++ + +++· +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ x+++ + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == $@$$$@@@@@@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$@@@ ·x== + ==+· x@@@*o o%@@@@@@@@@@@%x· ~=@@@@@@@@@@@@=~ x%@$~ ==++ + ==++ x=***=o o+***=+· ++== + x+===+ ++ ox ~x +===xx + ++====x+==*====+++ ++*=====++ x+*=*===++*+====xx + ++==****++++==************++++++=*******%***==++++==**++ + ++ ++++++++++xx ++++++++++++ + + diff --git a/src/build/framegen/frames/frame_053.txt b/src/build/framegen/frames/frame_053.txt new file mode 100644 index 000000000..a49bc03a1 --- /dev/null +++ b/src/build/framegen/frames/frame_053.txt @@ -0,0 +1,41 @@ + + ++++==*********==+xx + x+==**=*+=o~ ··++%*%%*=++ + ==**++ %***++ + x+**++ ~o++====+x~ *+** x + ++** +%@@@@@@@@@@@@@@@@@@@@*x **++ + ++=* o%@@@@$$$$$$$$$$$$$$$$$$$$@@@@$= +=++ + ox**o %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* +=++ + ==+o %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x +=++ + xx== =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ==xx + ==+~ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·x== + == $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + xx++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ·+== + +++~ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* == + ==x· *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ==xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$o ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$% ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ++++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% x== + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ~+++ + +++· =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+xx + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$+ == o + == ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ox== $@$$$$$$$$$@@@@@@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@@@% ~+== + ==x· o$@@@@@@@$+ +@@@@@@@@@@@%o o%@@@@@@@@@@$+ ==xx + ==++ ·x+o ·x+=+x· o+==+o +=== + xx===+ == ++ o+=++=== + ++====+=xo ~x*===**==+=xo ++****==+=+x ++*=**==== + xx++=*********++++++=***********++++++==**********==++xx + ++xx++ xx++++xx xx++++++ + + diff --git a/src/build/framegen/frames/frame_054.txt b/src/build/framegen/frames/frame_054.txt new file mode 100644 index 000000000..ffc240ee7 --- /dev/null +++ b/src/build/framegen/frames/frame_054.txt @@ -0,0 +1,41 @@ + + ++====******====++ + x+==**=*++o· ~x==%*%*== + ++**=*+x ++%=== + ++**xx ~x++==++o~ o+**++ + ===+ o*$@@@@@@@@@@@@@@@@@@@*x =+** + ===+ ·*@@@@$$$$$$$$$$$$$$$$$$$$@@@@$= oo**xx + ++=+ *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* **xx + xx== %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o ·~** + ==+~ +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ o+== + xx== $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ==xx + +++o @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ·x== + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +++x + ++++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+== + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·x== + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·x== + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + ++xx @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+== + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++~ o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++· =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ==x %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + xx== +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·x== + xx== @@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$@@@~ ++++ + ox==x =@@@@@@@@@@%~ ~%@@@@@@@@@$+ =@@@@%~ ·x== + ==++ ~oo~ ·ooo· ==++ + xx===+ %% %% **=+ +x==++ + ox====**====+*+x ++*=**===*=*++ xx**==**=*==+=+=*=**++ + ++xx ++==********==++ ++==********==++ ++++****++xx + + + diff --git a/src/build/framegen/frames/frame_055.txt b/src/build/framegen/frames/frame_055.txt new file mode 100644 index 000000000..f233e3ef0 --- /dev/null +++ b/src/build/framegen/frames/frame_055.txt @@ -0,0 +1,41 @@ + + ++=====*****====++ + ++***%=*=+o· x+**%%**=+ + ++**+* ==**=+ + ==== ·~ox+++xo~ ++**++ + xx**++ +%@@@@@@@@@@@@@@@@@@@%+· =*== + ox**xo +$@@@@$$$$$$$$$$$$$$$$$$$@@@@@*~ ++*= + =*+o o$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$~ x+== + ++++ +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ++++ + ox== ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xx + +++o =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ·x== + == %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· ++xx + +x++ =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ·+== + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==+ *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$x ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + +x++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% x== + +++x $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$+ ·+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ x+++ + ++++ ·@@$$@@@@@@@@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@@% ==++ + xx== x$$= ~%@@@@@@@@@%~ =@@@@@@@@@$+ o= o+== + ==++ ·· ·· ·x==xx + ox===+ %*+x %%=+ **** ++**++ + x==**=**=**==**+*++xxxx++%***==**=*=*xxoo++%=***=======**++ + xx++++xx xx++********++xx ++==******==++ ++++ + + + diff --git a/src/build/framegen/frames/frame_056.txt b/src/build/framegen/frames/frame_056.txt new file mode 100644 index 000000000..60a529915 --- /dev/null +++ b/src/build/framegen/frames/frame_056.txt @@ -0,0 +1,41 @@ + + ++++====**====++++ + ++***%=*==o~ · o+*=%%%*==++ + ++**== x+%***++ + ++**++ ~ooooo~· **== + ++**o o=$@@@@@@@@@@@@@@@@@@*x ++**++ + ++== o%@@@@$$$$$$$$$$$$$$$$$$$@@@@@= **++ + ++== ~$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* **++ + ox=* +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o ·o** + ==+o ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ x+== + xx== %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xx + ==+o @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ~+== + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx== +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++xx + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + +++o $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$· ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++~ ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++~ ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++· +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++· =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ==+· *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ==+ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ==xo + +++x =@@$$$$$$$@@@@@@@@@$$$$$$$$$@@@@@@@@@@$$$$$$$$@@@@@$~ == + xx== +$@@@@@$+ =@@@@@@@@@*· o%@@@@@@@@$+ ++++ + ===+ x+== + ===+ **%% ++%%+x x+%%=+**xx + ++**+*++++*=**====**=*=+++++***=**++**=*==++++==%=**++=+ + xx++=====+xx xx++======++++ ++========++ + + + diff --git a/src/build/framegen/frames/frame_057.txt b/src/build/framegen/frames/frame_057.txt new file mode 100644 index 000000000..ce6e787a8 --- /dev/null +++ b/src/build/framegen/frames/frame_057.txt @@ -0,0 +1,41 @@ + + xx+++===========++xx + ++++***%=*==xx~~~~ox==******+++x + xx==**== ++**==xx + ++**++ ·~~~~· ++**++ + ==== x*$@@@@@@@@@@@@@@@@@*+ ==*= + ===+ =$@@@@$$$$$$$$$$$$$$$$$$@@@@@*· ++** + ===+ =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%· x+== + ++=+ $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x +=++ + xx== $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ ==xx + +++x +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ·+== + == %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xx + xx++ *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + ==+· ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$% == + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ == + =* @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$x == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==+~ %@@@$$$$$$$$@@@@$$@@@@$$$$$$$$$@@@@$$@@@@$$$$$$$$@@$ ·x== + ++== o%@@@@@@@@%o *@@@@@@@@$= x%@@@@@@@$= ++++ + ===+ +=== + ====xx ++%%=+ %%== +=== + ++**=*==++++=**=**++=*****++++==%=**++==***%++++==%***++ + ++=======+++ ++++=====+++ xx++++==++++ + + + diff --git a/src/build/framegen/frames/frame_058.txt b/src/build/framegen/frames/frame_058.txt new file mode 100644 index 000000000..76dd6000d --- /dev/null +++ b/src/build/framegen/frames/frame_058.txt @@ -0,0 +1,41 @@ + + xx++++++====++++++ + ++==**%%*%**==++++==**%*****++ + ++***%== x+*=**++ + ==**++ ==**++ + xx**++ x*$@@@@@@@@@@@@@@@%=o x+**++ + ++**xx ~*@@@@@$$$$$$$$$$$$$$$$@@@@@$+ ~==++ + xx**o~ x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@= ==++ + =*+~ *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ ·x*=xx + ++++ %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ x+== + x+== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ==xx + +++x %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% x+++ + == %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% == + xx++ x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ==xx + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++++ + +++o $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ x+++ + +++~ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ %$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· ~+++ + +++o ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ~+++ + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+++ + xx+x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+++ + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% x== + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= == + == $$$$@@@@$$$$$$$$@@@$$$@@@@$$$$$$$$@@@@$$$@@@$$$$@@@+ x+++ + ++++ +$@@@@@@@$= ~%@@@@@@@@%~ =$@@@%o ==+x + ==++ +=++ + ===+=*%% ==%%++ ++%%*= x~==== + ++++++**=%**++==%***==++==*%**++++**%***++==***%***=**++ + x+++==++++ ++++++==+++x +++++x + + + diff --git a/src/build/framegen/frames/frame_059.txt b/src/build/framegen/frames/frame_059.txt new file mode 100644 index 000000000..c2adc0c02 --- /dev/null +++ b/src/build/framegen/frames/frame_059.txt @@ -0,0 +1,41 @@ + + xx++++++++++++++++ + ++==***%%%************%***==++ + ++***%== =+****++ + xx====++ ++====xx + ++**++ x=%@@@@@@@@@@@@@$%+o +=**xx + ++**oo o%@@@@@@$$$$$$$$$$$$$$@@@@@$= x+*=+x + ++== +@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* x+==xx + x+== ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o ++== + ==+~ ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==+x + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ~+== + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==+x + ++++ ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$* == + == @@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == $%%%$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + ==x %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++++ + ==+· =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + +++~ x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++o ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$+ ·+++ + xx++ *@$$$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$$$$$$$$$@ ~+++ + == x@@@$$$@@@@$$$$$$$$@@@$$$@@@@$$$$$$$$@@@@$$$@@@@$@@@· ++++ + ++++ +$@@@@@@@$= ~*@@@@@@@@%~ +$@%~ == + ==+x ==++ + ===+o ==%%+o ==%%++ ++%%== xo=*++ + ++**++++***%**====%***==++==***%====**%***++++**%%%***++ + ++++==++ ++++++++++ ++xx + + + diff --git a/src/build/framegen/frames/frame_060.txt b/src/build/framegen/frames/frame_060.txt new file mode 100644 index 000000000..f28078a15 --- /dev/null +++ b/src/build/framegen/frames/frame_060.txt @@ -0,0 +1,41 @@ + + ++++++++++++++ + ++++****%%%%%%%%%%%%%*****++xx + ++***%**+x +=*=**==+x + x+**=*++ ==**++ + ++**+= ·x=%$@@@@@@@@@$%=o xx==== + ==== o*@@@@@@@$$$$$$$$$$$@@@@@@%x ==== + ==*= =@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@= ==++ + ++== +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ ==++ + ox== =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ o+== + ==+o x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* =+++ + x+== %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ~+== + ==+o @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xx + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$% ++++ + xx== x@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + xx++ ~%@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$= ·+== + ++++ x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% == + xx++ =$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + xx++ ============*@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + xx++ @@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ++++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ +++x + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + ==+· *$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ x+xx + +++x @@$$$$$$@@$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$$$@@$$$$$$@ x+xx + ox== =@@@@@@$$@@@@$$$$$$$$@@@@$$$@@@@$$$$$$$$@@@$$$@@@@@$ ==xo + +++x ~*· =$@@@@@@@%x o%@@@@@@@@* = ·x== + **+o ==++ + ==+= ++%$=* %%** **%% xo**++ + ++****==++++***%====***=**++++***%**==**%=**++++****==xx + ++++++++ ++++++++ + + + diff --git a/src/build/framegen/frames/frame_061.txt b/src/build/framegen/frames/frame_061.txt new file mode 100644 index 000000000..c33681cc0 --- /dev/null +++ b/src/build/framegen/frames/frame_061.txt @@ -0,0 +1,41 @@ + + ++++++++++++++ + ++++*****%*%%%%%%*%%****==++ + ++=****%++ x+*===**++ + x+==**=* =+====++ + ++**+= ~x=*%$$@@@$$%=+~ ++==++ + ====oo =%@@@@@@@@$$$$$$@@@@@@@@%+ ox==++ + ==*= +$@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@%· ·x==++ + ++== x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ o+==xx + x+== *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= +=== + ==+~ +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xx + ++++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ++++ + ==+· @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ == + ox== @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xx + xx++ %@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++++ + ++xx *ooooooooooooooo=@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++o $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ~+++ + +++o %$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ~+++ + +++o =ooooooooooooooo=@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ~+++ + +++o @@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+++ + +++x $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+++ + xx+x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+== + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xx + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + +++o @@$$$$$$$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$$$$@@ ++++ + ox== *@@@$@@@$$$@@@@$$$$$$$$@@@@$$@@@@@$$$$$$$@@@@$$$@@@$ ==xo + ==+x o%$= ~%@@@@@@@@%~ =$@@@@@@@$+ ·+== + **+o ==xx + ==+= ++%%=+ ++%**= %%*% oo**++ + ++***%**++xx+=***%====*=**==++++***%====***=**++++**==+x + ++++++++ ++++++ + + + diff --git a/src/build/framegen/frames/frame_062.txt b/src/build/framegen/frames/frame_062.txt new file mode 100644 index 000000000..b8e23ebe0 --- /dev/null +++ b/src/build/framegen/frames/frame_062.txt @@ -0,0 +1,41 @@ + + xx++++++++ + xx++==*******%%*******==++++ + ++==**=***++ · ++==*=**==++ + ++==**=%+o ox=+====++ + ++**== ~ox+====++o· xo+===++ + ++==++ ·+%@@@@@@@@@@@@@@@@@@@@*x +===++ + ====~ *@@@@@$$$$$$$$$$$$$$$$$$$$@@@@%~ ++==++ + ++== *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ++==xo + ++==o· o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ ==++ + ==+x ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ·x==xx + ++== %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++++ + ==+~ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ·x== + ox== @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xo + ++++ *$$$$@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$* ++++ + +++x @$$@@%**************%@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + +++~ ·$$$* ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ o+++ + +++~ ~@$@~ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ ~@$$@+ ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· ~+++ + +++o @$$$@@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+++ + xx+x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+++ + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + ox++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + +++~ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + ox== %@@@$$$@@@@$$@@@@$$$$$$$$@@@@$$@@@@@$$$$$$$$@@@@$$@$ ==xo + ==+o x%@@@%~ ·*@@@@@@@@$+ x%@@@@@@@@*· ·+== + **xo ==xx + ==+= ++%%*= %%** **%%+o**++ + ++***%*=%*==++++***%==++***=**++++***%==++==%***++x++++x + ++ ++++++++ ++++++ + + + diff --git a/src/build/framegen/frames/frame_063.txt b/src/build/framegen/frames/frame_063.txt new file mode 100644 index 000000000..e3eb943d4 --- /dev/null +++ b/src/build/framegen/frames/frame_063.txt @@ -0,0 +1,41 @@ + + xxxxxxxx + ++++==**************==++++ + ++++*****%==++xx oo++==%*==**==++ + ++**=*== ++======xx + ++===*++ ~oooo~ ++====++ + ++==+= ~+%@@@@@@@@@@@@@@@@@$*x +===++ + ++==xx o%@@@@@$$$$$$$$$$$$$$$$$$@@@@$+ +===++ + ++==o~ x@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ +=== + xx==+~ %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ==++ + ==++ %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ~+==xo + ++== +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + ==+o %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ~+== + == %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xo + xx++ x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$* ++xx + ++++ @$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + +++o +$$$$$= *$$$$$$$$$$$$$$$$$$$$$$$$$$$$ o+++ + +++o @$$$@ @$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++o %$$$$$% ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++o @$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ~+++ + +++o $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+++ + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+++ + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% x== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + ox++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xx + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + +++~ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++xx + xx== %@@@$$$$$@@@@$@@@@@$$$$$$$$@@@@$@@@@@$$$$$$$$$@@@@$$ ==xo + ==+o +$@@@@$+ +$@@@@@@@@%~ ~%@@@@@@@@$+ ·x== + **+o ==xx + **++ +=%%+o ++%%== *%=+=*++ + ++***%==****++++==*%**++++*=**==++++***%++++==*=**++++xx + ++++ ++++++++ ++++++++ + + + diff --git a/src/build/framegen/frames/frame_064.txt b/src/build/framegen/frames/frame_064.txt new file mode 100644 index 000000000..9fd11f4cb --- /dev/null +++ b/src/build/framegen/frames/frame_064.txt @@ -0,0 +1,41 @@ + + + xx++++==********====++++ + ++==****%%****++++==**%**=====++++ + ++==***%++ x+*+====++ + xx====== =+====++ + ++====x+ o=%$@@@@@@@@@@@@$%=o xo====++ + ++===+ ~*$@@@@@$$$$$$$$$$$$$$@@@@@$= +===++ + x+==++ x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@% ==== + ===+ %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x ==++ + ++== $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ ~+==xx + ox==x· %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++++ + ++++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ·+== + ==+· @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xx + ox== @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$% ++++ + xx++ +@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + xx++ +@$$$$@= *@$$$$$$$$$$$$$$$$$$$$$$$$= ·+== + ++++ x@$$@* %@$$$$$$$$$$$$$$$$$$$$$$@% ·x== + xx++ %$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$@% x== + xx++ +$@@$$$$$@@$$$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$@% x== + xx++ @@$$$$$$$$$$@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + ==+· %$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ x+++ + +++o @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ xxxx + ox== %@@$$$$$$$$@@@@@@@@@$$$$$$$$$@@@@@@@@@@$$$$$$$$$@@@@ ++xx + ==+o =$@@@@@@@* *@@@@@@@@@%o x%@@@@@@@@@= ** + **x~ ==++ + **+= +=%% %%=x *+**++ + ++***%++++*=**==++===%==++x+==*=**++++*%**++++++*=**++++ + ++++==++ ++====++ ++++==++++ + + + diff --git a/src/build/framegen/frames/frame_065.txt b/src/build/framegen/frames/frame_065.txt new file mode 100644 index 000000000..b1ee24c5b --- /dev/null +++ b/src/build/framegen/frames/frame_065.txt @@ -0,0 +1,41 @@ + + + xx++++==========++++xx + ++++==**=*%%%%******%*%*======++++ + ++==**=**%+o ++*=====++ + ++===*+= ======++ + ====++ ·x=%$@@@@@@@@@$%=x +x====++ + x+====oo ·=$@@@@@@@$$$$$$$$$@@@@@@@%+ +===++ + ==== +@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@* +===xx + ++== ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x ==== + ++==x· o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ·+==+x + ==++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++== + ox== +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· ==xo + ++++ =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· ++++ + ==+· x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+== + == +%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$* x== + == =@$$$$$@+ ~*@$$$$$$$$$$$$$$$$$$$$$$@ == + == @$$$@ o@$$$$$$$$$$$$$$$$$$$$$$ == + == ~@$$$@ +$$$$$$$$$$$$$$$$$$$$$$@ == + == +$@$$$$$@$=++++++++++++++*@@$$$$$$$$$$$$$$$$$$$$$$@ == + == $@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xx + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + ==x %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + +++· =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + +++~ o$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ o+++ + +x+x @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + ox== %@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@o ++++ + +++o =@@@@@@@@@$x =@@@@@@@@@@* o%@@@@@@@@@%o *= + **x· ~~ ~~· ·~~ +=++ + **++ **** +=%% ~==++ + ++**=*+xoo++*+**++++**=*+x~~ox=+**==++**=*++ooox++*=**++ + ++======++ ++====++++ ++++====++ + + + diff --git a/src/build/framegen/frames/frame_066.txt b/src/build/framegen/frames/frame_066.txt new file mode 100644 index 000000000..8b97f549e --- /dev/null +++ b/src/build/framegen/frames/frame_066.txt @@ -0,0 +1,41 @@ + + + ++++++++++++++++++ + ++++==*******%%%%***==**====++ + ++=====**%++ x+****====++ + ++====+=++ +x======+x + ++====++ ~x=**%%%%**=+~ +x====++ + ++===+ o*$@@@@@@@@@@@@@@@@@@@@$*o +===++ + ++==++ ·*@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@* +===+x + xx===+ *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ++== + ==++ $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ==++ + ++==o %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ~+==xo + ==++ ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ==++ + ox== x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ o+== + ++== o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ==xo + +++x o*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$@o ==xx + +++~ o%@$$$$$@@=++++++++++++++=$@$$$$$$$$$$$$$$$$$$$$$ ++++ + +++· $$$$@+ @$$$$$$$$$$$$$$$$$$$@ ++++ + ==+· $$$$@~ @$$$$$$$$$$$$$$$$$$$@ x+++ + ==+· x@@$$$$@*~ ·+@$$$$$$$$$$$$$$$$$$$$@ xx++ + ==+· o%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$@ x+xx + +++· x@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + +++· =$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + +++· x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ~+++ + +++o @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+++ + xx+x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+++ + ++++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$% == + xx++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% == + == *@@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$@@$ o+++ + +++x =@@@@@@@@@@@+ o%@@@@@@@@@@%~ ·=@@@@@@@@@%· ==xx + **x· ox++o ~x++x~ o+x~ x+== + **++ ==+x x+=+ ++== + ++**=%++ ·o=+**++===*++ ++*===+=**==o· ~x*+**++ + x++==**===++ +++=***=+++x ++=***==++ + + + diff --git a/src/build/framegen/frames/frame_067.txt b/src/build/framegen/frames/frame_067.txt new file mode 100644 index 000000000..f8d68716d --- /dev/null +++ b/src/build/framegen/frames/frame_067.txt @@ -0,0 +1,41 @@ + + + ++++++++++++++xx + ++====****************==++++ + ++++=====*=*+x ~o==***=====++ + ++====== ++=+====+x + xx====+= ~x+=====+o~ ++====++ + xx====ox o*$@@@@@@@@@@@@@@@@@@@%+· +===++ + ox==== o%@@@@@$$$$$$$$$$$$$$$$$$$@@@@@= +===++ + ==== ·%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= +===xo + ++==o x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ==++ + ==+x ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ·x==xo + ++== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++++ + ==+o $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ·+== + ox== @@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==++ + xx+= ·*@@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$$$ ++++ + xx++ ~*@@$$$$$@@%%%%%%%%%%%%%%%%@@$$$$$$$$$$$$$$$$$$@ o+++ + +++x ~@$$$@x +$$$$$$$$$$$$$$$$$$$x ·+++ + +++x @$$$@ @$$$$$$$$$$$$$$$$$@+ ·+++ + +++x ~$$$$$$@o x@$$$$$$$$$$$$$$$$$$@+ ·+++ + +++x =@@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$$$@+ ·+++ + +++x =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+++ + xx+x @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+++ + +++x $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+== + +++x @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* x== + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + xx++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + ox++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + ox== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@@@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$@@ ·+== + +++x ~*@@@@@@@@@@@%o +$@@@@@@@@@@$+ o*@@@@@@@@@+ ++xx + **o· ~+===+o x====x ~+=+· o+== + x+**x++x ++ ++ x+** + ++==*=++ ~o*+**==**+= ++**==**+*x~ ++**=+ + ++=****===++ ++=******=++ +++==**==+ + + + diff --git a/src/build/framegen/frames/frame_068.txt b/src/build/framegen/frames/frame_068.txt new file mode 100644 index 000000000..829d8f6a3 --- /dev/null +++ b/src/build/framegen/frames/frame_068.txt @@ -0,0 +1,41 @@ + + + ++++xx++ + ++++====************==++++ + ++==**===%**++xo~~~~xx+=%*%****=+++x + ++======+= *=*===++ + ++====++ ·~~~· =+====xx + ++==++ ·+%$@@@@@@@@@@@@@@@@$=o +===++ + ++==+x o*@@@@@$$$$$$$$$$$$$$$$$@@@@@$x +===+x + ++==+o ~$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@+ +===xo + ox==+x =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ++== + ++++ +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ·o==+x + xx==x· @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++== + ++++ @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ==xo + ==+· @@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ++x+ + == x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + xx== +$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$= ·+== + xx++ ~$$$$$$ +$$$$$$$$$$$$$$$$$$ == + ++++ @* *@$$@o @$$$$$$$$$$$$$$$$@ == + ++++ x$$$$$$· =$$$$$$$$$$$$$$$$$@ == + ++++ =$@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$@ == + ++++ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ++++ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ %$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + xx++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox++ *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ox== =$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + == x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == %@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@@@@@@$$$$$$$$@@+ == + +++o oo+%@@@@@$$@@@@@%+o~o=$@@@@$$$@@@@@*x~o+%@@@@@@@@% ++++ + ** x*%$$$*+ ~=%$$$%=o +*%=~ ·o** + xx**· ·o**++ + xx******+= =+****=* ++=***=*+x =+**xx + ++==%%%%%%==++ ++==*%%%%%**=+ x+==*%%*==++ + + + diff --git a/src/build/framegen/frames/frame_069.txt b/src/build/framegen/frames/frame_069.txt new file mode 100644 index 000000000..2868c56cd --- /dev/null +++ b/src/build/framegen/frames/frame_069.txt @@ -0,0 +1,41 @@ + + + + ++++==**********====++++ + xx++==****%%**++++++++**%**=**==++ + ++**=*=* ~x*=====++ + xx====+= ++====++ + ++===+ ~=%$@@@@@@@@@@@@@@$%+· o=*==++ + x+==++ +$@@@@@$$$$$$$$$$$$$$$$@@@@@%o +===xx + ox===+ =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$x +===xx + ==++ ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ++== + ++== @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ==xx + ==+~ *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ ++== + ++== $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + ==+x $@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ++++ + == +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+== + == +$@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$$ == + == ~$$$$$$+ x$$$$$$$$$$$$$$$$@ == + == %@%· ~@$$@% =@$$$$$$$$$$$$$$$ == + == %$$$$$~ $$$$$$$$$$$$$$$$@ == + == ~*@@@$$$$$@@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$@ == + == ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == $@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@@@@@$$$$$$$$$@% == + +++o x*+=*@@@@$$$$$$@@@$*=+=%@@@@$$$$$@@@@%=+=*@@@@$@@@@o x+++ + ~o** o*$@@@@$*o +%@@@@@%+ x*$%+ ** + ++** **++ + ++**==**== ==****xo =+****++ ++**++ + +x ++==%%%%%%%*==++ x+==*%%%%%%%**=+ +=*%%%**=+ + + + diff --git a/src/build/framegen/frames/frame_070.txt b/src/build/framegen/frames/frame_070.txt new file mode 100644 index 000000000..67de5408d --- /dev/null +++ b/src/build/framegen/frames/frame_070.txt @@ -0,0 +1,41 @@ + + + + ++++++========++++++ + ++==*****%%%********%*%*****==++ + ++==**=*++ ++*=**==++ + ++**+= =+**++ + xx====ox ~+%$@@@@@@@@@@@@$%=~ xo====xx + xx===+ ·=@@@@@@$$$$$$$$$$$$$$@@@@@@=· +===++ + ===+ ~%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%~ +=== + ++== =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ==++ + ++==o =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ==+x + ==++ ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ x+== + xx== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + ++++ ~$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++++ + ==+· x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ·+== + == x%@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$@ == + == *@$$$$@+ ·%$$$$$$$$$$$$$$$ == + == ·@@@+ %@$$@x $$$$$$$$$$$$$$@~ == + == ·*o $$$$$* ·$$$$$$$$$$$$$$@~ == + == =@@$$$$$@@$%%%%%%%%%%%%%%%@@$$$$$$$$$$$$$$@~ == + == =$@@@$$$$$$$$$$@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$$@~ == + == +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == ~@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$@@$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$$$@@$$$$$$$$$@@ == + ==+~ %@@$$@@@@$$$$$$$$@@@@$$$@@@@$$$$$$$$@@@@$$@@@@$$@@@% ·+== + xx== =@@@@@@@@%x x%@@@@@@@@= *@@$+ ==xx + ++=+ +=++ + ++==x+**%* **%%+x +=%%=+ oo==++ + ++==++x+**=%=*==**%***++x+==*%*%====****+++++=*****===++ + ++++++ ++++++++ ++ + + diff --git a/src/build/framegen/frames/frame_071.txt b/src/build/framegen/frames/frame_071.txt new file mode 100644 index 000000000..42ed54523 --- /dev/null +++ b/src/build/framegen/frames/frame_071.txt @@ -0,0 +1,41 @@ + + + + +++++++===+++++++x + xx++*****%*%*%%%*%%*%*******++xx + xx++***%== +=*=**==++ + ++**+=+x *=**++ + ====x+ x=%$@@@@@@@@@@$%*x· xx==== + ==== x%@@@@@@$$$$$$$$$$$$@@@@@@$+ +=== + ==== *@@@@$$$$$$$$$$$$$$$$$$$$$$$$$@@@%~ +=== + ++== x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ==++ + xx==x· x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ==+x + ++++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o x+== + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xx + xx++ %$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++++ + +++o =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·x== + == =$@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$@ == + == x ·%@$$$$@= o$$$$$$$$$$$$$$$~ == + == @@@$x %@$$@x $$$$$$$$$$$$$@+ == + == @%x $$$$$* $$$$$$$$$$$$$@+ == + =* +$@@$$$$@@%***************@@$$$$$$$$$$$$$@+ == + =* x%@@@@$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$$$$$$$$$@+ == + == x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· $@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@@@@@@@$$$@@@ ·x== + xx== =@@@@@@@@@@= o%@@@@@@@@@%~ =@@@%· ++xx + ==++ ·· ·~· x+== + ==++ x+%% %%+x **=+ +=== + ++**==++===%==xoox==%===++==*%==+xoo++*=**+++=**=**=**++ + +++==+++ +++===++++ ++++ + + diff --git a/src/build/framegen/frames/frame_072.txt b/src/build/framegen/frames/frame_072.txt new file mode 100644 index 000000000..95a4a2af4 --- /dev/null +++ b/src/build/framegen/frames/frame_072.txt @@ -0,0 +1,41 @@ + + + + +++++++++++++x + ++==*****%*%%%%%%%%*****==++ + ++***%=*x~ *=*=**++ + x+**==++ xx=+**++ + ++**++ ~+*%$@@@@@@@@$$%=o +x**=+ + ++==oo ~*@@@@@@@$$$$$$$$$$@@@@@@@%x =*== + ++== +$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@* +=== + x+==o $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ==++ + ==+o @@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ==xx + ++++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o x+== + ==x· @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xx + xx== $%$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% x+++ + +++x =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= == + ==+· =$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$@ == + == @x ·*@$$$$@$o o$@$$$$$$$$$$$$x ==xo + == $@@@$x o@$$$$ *@$$$$$$$$$$@* ==xo + == @@@*o =@$$$$ %$$$$$$$$$$$@* ==xo + == % ·=@@$$$$@@%===============*@@$$$$$$$$$$$@* ==xo + == ·=$@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$$$$$$$$@* ==xo + == % =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x ~@@@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@@@@@@$$$$@@+ == + x+++ =%o +$@@@@@@@@@@@+· o*@@@@@@@@@@@*o ·+$@@@* ++++ + =*+~ x=**=x· o+=*=+o ·x** + **+x x+ +x ++ ox**xo + ====*===**+*+x x+*=**===*++ *+**==**++++*=== + +x xx===*%%*===++ x +==*%%*=*=++ ++=+ x + + diff --git a/src/build/framegen/frames/frame_073.txt b/src/build/framegen/frames/frame_073.txt new file mode 100644 index 000000000..d2d6c6d72 --- /dev/null +++ b/src/build/framegen/frames/frame_073.txt @@ -0,0 +1,41 @@ + + + + x+++++++++++ + ++++****%%%%%%%%$%%%****++++ + ++****=*+x *=*=**++ + xx==**++ ++*=**++ + ++**++ x=%$$@@@@@@@$%*+~ ++**++ + ++**oo =$@@@@@@@$$$$$$$$$@@@@@@@%x =*== + ++==o· o$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@* +=== + x+=*o· %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ==++ + ==+x $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ==xx + ++== *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o x+== + ==+· @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ==xx + xx== @%%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ x+++ + ++++ o ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* == + ==x· x o*@@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$@ == + == $$~ o$@$$$$@$o ·x@$$$$$$$$$$$$= ==xx + == @$@@@*~ *@$$@= $$$$$$$$$$$@% ++xx + == @@@@*o %$$$$* $$$$$$$$$$$@% ++xo + == @= ~*@@$$$$@@*+++++++++++++++%@$$$$$$$$$$$@% ++xx + == @ ·*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$$$$$$$@% ++xx + == @+ ·=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$+ == o + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + == +@@$$@@@@@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$@% == + ++++ %@$=o~o=$@@@@$$$@@@@@*x~~x*@@@@@$$$@@@@$+o~o=$@@@$~ x+++ + **o· ~+%$$$%*o x*$$$$%+· · ** + x+**o~ ~**+x + xx**+==+****== ++*=**=*x+ oo==****++ =+**+x + ++=+ ++==*%%%%%%*== xx+=*%%%%%%**=++ ++==++ + + diff --git a/src/build/framegen/frames/frame_074.txt b/src/build/framegen/frames/frame_074.txt new file mode 100644 index 000000000..bb794eea4 --- /dev/null +++ b/src/build/framegen/frames/frame_074.txt @@ -0,0 +1,41 @@ + + + + xx+++++x + ++==***%*%%%%%%%%%****+++x + x+==***%++ ~x%*****++ + ++**++ ++*=**xx + xx**++ o+*%$$@@@@@$$%*x~ +x**++ + x+**xx +$@@@@@@@@$$$$$$$@@@@@@@@%x =*++ + x+**o~ ~%@@@@$$$$$$$$$$$$$$$$$$$$$$$@@@@* +=++ + o **+~ *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ==++ + ==+x %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ==xx + x+== +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o o+== + ==+~ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ==xo + ox== @@%$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ x+++ + ++++ $o o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* == + +++~ ·@ o%@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$$$$$$@ == + == %$$· x$@$$$$@$x~~~~~~~~~~~~~~~+@$$$$$$$$$$$* =+xo + == @$$@@@*~ *@$$@* $$$$$$$$$$$$ ++xx + == @$@@@*x *$$$$* $$$$$$$$$$$$ ++xo + == @$* =@@$$$$@@=xxxxxxxxxxxxxx+*@$$$$$$$$$$@$ ++xx + == @@ =$@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$$$$$$@$ ++xx + == @$+ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xo + == @$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* =+xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$+ == + == %@$$$$$@@@$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$@@@$$$$$@@ == + +++o +@@@@$**%$@@@$$$$$$$@@@@%**%@@@@$$$$$$$@@@$**%@@@@@* ~+== + ox** ~ ~*@@@@@@@%o +$@@@@@@$= oo ==xx + ++== ==++ + ++**o+ ++%%** ++%%**xx **%%++ +x**++ + +=**++ ++***%*%%%%*%*++ xx==*%*%%%%*%*==++ +=**=+ + xx ++ + diff --git a/src/build/framegen/frames/frame_075.txt b/src/build/framegen/frames/frame_075.txt new file mode 100644 index 000000000..497f7840c --- /dev/null +++ b/src/build/framegen/frames/frame_075.txt @@ -0,0 +1,41 @@ + + + + x+++ + ++==***%%%%%%%%%%***==++ + ++**=*++ ~x%*%*==+x + ++**== ++*===+x + xx**== ~+*%$$@@@@@$$%=x· ++**++ + xx**+x x%@@@@@@@@$$$$$$$@@@@@@@@%o ==++ + xx**x~ ·*@@@@$$$$$$$$$$$$$$$$$$$$$$$@@@@* +*++ + **x~ =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ==++ + ==++ *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* *=xx + xx== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x o+== + ==+~ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ==xo + == @@$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ x+++ + ++++ %$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% == + +++~ @* +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$$$$@ == + ==+ *$@= =@$$$$$@*o~~~~~~~~~~~~~~o*@$$$$$$$$$$* +++x + == $$$@@@$+ @$$$@ @$$$$$$$$$$ ++xx + == @$$@@$*~ @$$$@ ~@$$$$$$$$$$ ++xx + == @$$x o%@$$$$$@%+xxxxxxxxxxxxxx+$@$$$$$$$$$$$ ++xx + == @@= ~*@@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$$$$$$ ++xx + == @$$ ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$+ ==xo + == $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + +++~ *@@@@@@$$@@@@$$$$$$$$@@@@@$@@@@$$$$$$$$$@@@@$$@@@@@$ ·x== + oo== x* ·*@@@@@@@@$x +$@@@@@@@@= ~+ ==+x + ++=+ +=++ + ++==o **** =*%%x ++%$++ ==++ + x+==****+x++***%**==**%***++++==**=*====%***=+xx++**==xx + ++++++ +++++++x + diff --git a/src/build/framegen/frames/frame_076.txt b/src/build/framegen/frames/frame_076.txt new file mode 100644 index 000000000..517a5a5b3 --- /dev/null +++ b/src/build/framegen/frames/frame_076.txt @@ -0,0 +1,41 @@ + + + + + ++==***%%%%%%%%*%***==++ + +=****++ o+*=%*==xx + ++**+= ++*=== + **+= ~+*%$$@@@@@$$%=x~ ++**++ + xx**+x x%@@@@@@@@$$$$$$$@@@@@@@@%x ==++ + ox**x~ *@@@@$$$$$$$$$$$$$$$$$$$$$$$@@@@* =*++ + =*+~ =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ==++ + ++++ *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* *=oo + xx== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x o+== + =++o %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ==xo + == $@@$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ o+++ + xx++ *@% =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + +++o @$o ·=@@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$$$@· == + ==+· *$$$x ~*@$$$$$@=~~~~~~~~~~~~~~~o%@$$$$$$$$$% ++xx + == $$$$@@@%o @$$$@ x@$$$$$$$$@ ++xx + == $$$$@@$=· @$$$@ +@$$$$$$$$@ ++xx + == $$$$~ x%@$$$$$@*+xxxxxxxxxxxxxx+$@$$$$$$$$$@ ++xx + == $$@o o%@@@@$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$$$$$$@ ++xx + == $$$% o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == @$$@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==+· $@@$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@@@@@@@@@· == + x+== ·%@$x =@@@@@@@@@@= o$@@@@@@@@@$o =o ++xx + ===+ ·~~· ~o~ x+== + ===+ ++%% %%+x **=+ ++== + ++**=**===++**=*=+~·~o+=%=**++===*==o~··x+%=**++++****++ + ++ x++=====++xx ++======++ + diff --git a/src/build/framegen/frames/frame_077.txt b/src/build/framegen/frames/frame_077.txt new file mode 100644 index 000000000..4ead3508d --- /dev/null +++ b/src/build/framegen/frames/frame_077.txt @@ -0,0 +1,41 @@ + + + + + +++==**%%%%%%%%*%%**=+++ + ++****++ ·x**%*==xx + ++**+= +x*=== + ==+= ~+*%$$@@@@@$$%*+~ +x**++ + xx**+x x%@@@@@@@@$$$$$$$@@@@@@@@%x ==++ + **x~ *@@@@$$$$$$$$$$$$$$$$$$$$$$$@@@@* +*++ + ==+~ =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ==++ + ++++ *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* **oo + xx== o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ o+== + +++o %@$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ==xo + == $@@@$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ o+++ + ++++ *@$~ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + +++o @$@ x%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$$$@~ == + ==+· =$$$% x@@$$$$@$x~~~~~~~~~~~~~~~=@$$$$$$$$$% ++xo + == $@$$@@@$=· %$$$@+ @$$$$$$$$@ ++xx + == $@$$@@@*o %$$$@= $$$$$$$$$@ ++xx + == $@$$= ·=@@$$$$@@=xxxxxxxxxxxxxx+*@$$$$$$$$$@ ++xx + == $$$$ =$@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$$$$$@ ++xx + == $$$$x =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == $$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==+· @@$$$@@@@@@@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@@@x == + x+++ x$@@%o +@@@@@@@@@@@+ o%@@@@@@@@@@%o =+ ++++ + ==+x ox+xo ~x++x· ~+** + **++ == ==++ ++== ++** + ++**==*=**==**=*++ ·o*+**++===*++ ++*===++****=+ + ++++ ++++****==++ +==***==++ + diff --git a/src/build/framegen/frames/frame_078.txt b/src/build/framegen/frames/frame_078.txt new file mode 100644 index 000000000..4a7f7ab72 --- /dev/null +++ b/src/build/framegen/frames/frame_078.txt @@ -0,0 +1,41 @@ + + + + + +++===*%*%%%%%%%%%%*=+=+ + ++**=*++ ·o**%*==xx + ++**+= +x*=== + ==== o+*%$@@@@@@@$%*+o +x**++ + xx**+x +%@@@@@@@$$$$$$$$$@@@@@@@%x ==++ + **x~ ·%@@@@$$$$$$$$$$$$$$$$$$$$$$$@@@@%~ +=++ + =*+~ =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ==++ + ++++ *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% **oo + ox== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ~+== + +++o %@$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ==xo + == $@$@$%$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ o+++ + xx++ *@$% +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + +++o @$@= +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$$@o ==xo + ==+· =$$$@= =@$$$$$@=~··············~*@$$$$$$$$$ ++xo + == %@$$$@@@$+ @$$$@ ·@$$$$$$$@ ++xx + == $@$$$@@$= @$$$@ o@$$$$$$$@ ++xx + == $@$$$~ x%@$$$$$@$+++++++++++++++=$@$$$$$$$$@ ++xx + == $@$@+ o%@@@@$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$$$$$@ ++xx + == $$$$$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == $$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + ==x· ~@@$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@@@@@@@@= == + xx++ =@@@@$x ·x$@@@@@@@@@@@=~ o*@@@@@@@@@@@%x ·+* x+++ + **x~ x=***+~ ~+***=o ·o** + **+x o++ ++ ++ oo**xo + ====++x+*===**==+o ·x*=**====++ =+**==*===== + ++=+++ ++===*%%*==+++ ++==*%%**=++ xx + diff --git a/src/build/framegen/frames/frame_079.txt b/src/build/framegen/frames/frame_079.txt new file mode 100644 index 000000000..98c847b44 --- /dev/null +++ b/src/build/framegen/frames/frame_079.txt @@ -0,0 +1,41 @@ + + + + + ++==**%%%%%%%%%%$%%**=++ + ++****+o ==%*==xx + ++**+= ox*=== + =*== o=%$$@@@@@@@$$%=o xx**++ + xx**+x +$@@@@@@@$$$$$$$$$@@@@@@@$+ =*++ + **o~ ~%@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@%o +=++ + **x~ *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ==++ + ++=+ *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% **xx + xx== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ~+== + +++o %@$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + == $@$@@%%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + xx++ *@$@· ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ == + +++o @$$@ ~*@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$$@o ==xo + ==+· =$$$$$~ o$@$$$$@%~ x@$$$$$$$$$ ++xx + == %@$$$$@@@%o %@$$@+ $$$$$$$$@ ++xx + == $@$$$@@$=~ %$$$@* $$$$$$$$@ ++++ + == $@$$$= o*@@$$$$@@*++++++++++++++=%@$$$$$$$$@ ++xx + == $@$$$ ~*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$$$$@ ++xx + == $@$$$+ ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == $$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* =+xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + == o@@$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@@@* == + ++++ *@@@@@*x· ~x%@@@@@@@@@@@$+~ o=@@@@@@@@@@@@*o· ~+* x+++ + **x· o x*%%%*+· ~=%%%%=o ·o** + ox**xo oo xx xx oo**xx + ===*+x *+****=*+x =+****==++ ++==*****=== + ++====++ ++==**%%%**=++ ++=**%%%*==+x ++ + diff --git a/src/build/framegen/frames/frame_080.txt b/src/build/framegen/frames/frame_080.txt new file mode 100644 index 000000000..b8e4d0139 --- /dev/null +++ b/src/build/framegen/frames/frame_080.txt @@ -0,0 +1,41 @@ + + + + ++ + +==**%*%%$%%%%%%%%%*==++ + +=**=*x· +=%***++ + ++**++ *=**+x + **++ ~+*$$@@@@@@@@@$$*+~ ox**++ + xx**oo ~=@@@@@@@$$$$$$$$$$$@@@@@@@=~ +=++ + xx**o· x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$@@@$x +==+ + **x· %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ++++ + +++x %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ ==xx + xx== =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ·+== + =++~ $@$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xx + == @@$@@%*%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + xx++ %$$$= o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + +++o @$$@x x%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$@x ==xo + ==+· =$$$$@* +@$$$$$@o =@$$$$$$$$ ++xx + == %@$$$$@@@@* @$$$@ o@$$$$$$@ ++xx + == $@$$$@@@*~ o@$$$@ =$$$$$$$@ ++++ + == $@$$$% ·=@@$$$$$@$*==============%@@$$$$$$$@ ++xx + == $@$$@~ ·=$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$$$@ ++xx + == $@$$$$~ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == $$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* =+xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == +@@$$$$$$@@@@@@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@@@@@@@% == + ++++ %@@@@@@*x~~x*@@@@@@$@@@@@$+o~o+$@@@@@$@@@@@@*x~~x*~ o+++ + **o· ·+x o*%$$$%+· ·+%$$$%*o ** + xx**o~ ~**++ + xx**+= x+=****=++ ~x==****+= =+****==**++ + ++==**==xx xx==**%%%%%*==++ ++**%%%%%*==++ ++ + diff --git a/src/build/framegen/frames/frame_081.txt b/src/build/framegen/frames/frame_081.txt new file mode 100644 index 000000000..aed9c8aaa --- /dev/null +++ b/src/build/framegen/frames/frame_081.txt @@ -0,0 +1,41 @@ + + + + ++++++++ + ++==*%*%%%****%%$%%%**++xx + xx==**=* ++%***++ + ++**++ ==**++ + xx**++ o=%$@@@@@@@@@@@$%=o ==++ + xx**oo o%@@@@@@$$$$$$$$$$$$$@@@@@@%o +=== + x+** +@@@@$$$$$$$$$$$$$$$$$$$$$$$$$@@@@+ ++== + **o· $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· +=++ + +++x $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@· ==xx + xx== *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ·x== + ==+~ @@$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + == @$$@@%==$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + xx++ %$$$$ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + +++~ @$$@% =@@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$$x ==xo + ==x· *$$$$@$o ~$$$$$$@x o@$$$$$$$$ ++xx + == %@$$$$$@@@$o $$$$@ @$$$$$$@ ++xx + == $@$$$$@@*~ $$$$@+ o@$$$$$$@ ++++ + == $@$$$$ ·=@@$$$$$@@%**************%@@$$$$$$$@ ++xx + == $@$$@% =$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$$$@ ++xx + == $@$$$$+ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == $$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == +@@$$$$$$$@@@@@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@@@@@@$ == + ++++ $@@@@@@$=xox=@@@@@$$$@@@@@*xoo+%@@@@@$$$@@@@$=oox*o o+++ + **x· ~==· ~=%$$$$*x +%$$$$%=· ** + x+**~· **+x + xx**+= ==****++ ==****+= =+****==**++ + ++==**==++ ++**%%%%%*==++ +=***%%%%%**++ ++ + diff --git a/src/build/framegen/frames/frame_082.txt b/src/build/framegen/frames/frame_082.txt new file mode 100644 index 000000000..ba491c1f5 --- /dev/null +++ b/src/build/framegen/frames/frame_082.txt @@ -0,0 +1,41 @@ + + + + xx++++++++++ + ++==***%%%*=++++==**%*%*==++ + ++**=*++ · *=**++ + ===* ==**++ + ++**x+ o=%$@@@@@@@@@@@@@$%=~ ==== + ++** +$@@@@@$$$$$$$$$$$$$$$@@@@@$+ ++*= + xx** *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* x+== + o ** o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x ++++ + ==+o ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==+x + x+== %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·x== + ==x· @@$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == @$$$@%xo=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ·+== + ++++ $$$$@ ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + +++~ ·@$$$@ ·=@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$$$+ ==xo + ==+· *$$$$$@*~ x$$$$$$+ =$$$$$$$$ ++xx + == $@$$$$$@@@@* +@$$@* %@$$$$$@ ++xx + == $@$$$$@@=· %$$$$$ ·$$$$$$$@ ++xx + == $@$$$$~ ~*@@@$$$$$@@$$$$$$$$$$$$$$$@@$$$$$$$@ ++xx + == $@$$$@ ·*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == $$$$$$$o ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == $$$$$$$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == =@$$$$$$$$@@@@@@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@@@@@@$ == + +++x $@@@@@@@%+xx=%@@@@$$$$@@@@@*xox*@@@@@$$$$@@@@%+xx=x o+++ + ** o*%+ +%$@@$%=~ o*$$@@$%+ ** o + x+**~ **+x + xx**+= =+****++ ++****== x+****==**++ + ++==*%**++ ++**%%%%$%**=+ ++==*%%%%*%*==++ ++ + diff --git a/src/build/framegen/frames/frame_083.txt b/src/build/framegen/frames/frame_083.txt new file mode 100644 index 000000000..d730b375f --- /dev/null +++ b/src/build/framegen/frames/frame_083.txt @@ -0,0 +1,41 @@ + + + + ++++++++++=++x + ++==*%*%**++xxxxxx==%*%**=++ + +=**=*+~ *=**=+ + x+**== ++**++ + ++**xo ·+%$@@@@@@@@@@@@@@@$%x ==== + ++*= ~*@@@@@$$$$$$$$$$$$$$$$$@@@@@*~ x+** + ++== ~$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%~ ~+** + xx** +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= x+== + ==x· x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ +=++ + x+++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ** + ==x· @$$$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ++++ + ox== @$$$@*~ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· ·+== + xx++ @$$$@~ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + +++~ o$$$$$x x%@@@$$$$$@@@@@@@@@@@@@@@@@@@$$$$$$$= ==xo + ==x %@$$$$@$+ %$$$$$+ ~$$$$$$$$ ++xx + == $@$$$$$$@@@$~ @$$@$ +@$$$$$@ ++xx + == $@$$$$@@= %$$$$$x ·$$$$$$$@ ++xx + == $@$$$@x o*@@@$$$$$@@@@@@@@@@@@@@@@@@@$$$$$$$@ ++xx + == $$$$$@ o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == $$$$$$@=· ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == $$$$$$$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == =@$$$$$$$$$@@@@@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$ == + +++x ·$@@@@@@@$=xx+%@@@@@$$$@@@@@%+xx=$@@@@$$$$@@@@$=xx=x o+++ + ** o*%=~ x%$@@@$%x ~=%$@@$%=~ **xo + ++** **++ + x+**+= =+****== xx****== ==**==**+x + ++=**%**=+ ++***%%%%*%*++xx ++==*%%%%*%*==++ xx + diff --git a/src/build/framegen/frames/frame_084.txt b/src/build/framegen/frames/frame_084.txt new file mode 100644 index 000000000..1fd3352b9 --- /dev/null +++ b/src/build/framegen/frames/frame_084.txt @@ -0,0 +1,41 @@ + + + + ++++===***==++++ + +=***%**+x~· oo==%%%*++++ + +=**== x+*=**++ + ++**++ ~ox+++xo~ ===+ + ++== +%@@@@@@@@@@@@@@@@@@$%x ++**xx + ===+ =@@@@@$$$$$$$$$$$$$$$$$$$@@@@@+ oo**xx + ++=+ =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ·o** + x+== $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ~+== + ** %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% +=++ + ++++ ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ ** + == x@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ++++ + ox== ~@$$$@= o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·x== + +++x @$$$@+ o%@@@@$$$$$$$$$$@@@@@@@@@@@@@@$$$$$$$$@ == + +++· +$$$$$% x%@@$$$$$@@$$$$$$$$$$$$$$$$@@$$$$$$= ==xo + == $@$$$$@@$+ x@$$$$x =$$$$$$$ ++xx + == $$$$$$$$@@@$o @$$$@ @$$$$$@ ++xx + == $$$$$$@$x ·$$$$$$$· o$$$$$$$@ ++xx + == $$$$$@= +$@@@$$$$$@@@@@@@@@@@@@@@@@@@$$$$$$$@ ++xx + == $$$$$$= +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == @$$$$$@@=x+$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++xx + == @$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* =+xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == =@$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@@@@@$ == + +++x ·@@@@@@@@@%+xx=$@@@@$$$$@@@@$=xx+%@@@@$$$$$@@@@%+x+o o+++ + ** o*$%x ~=%$@@$%=~ +%$@@@$%x **xo + ++** **++ + ++**+= xx****** ==****xo ==******+x + ++***%%*++xx ++==*%%%%*%**=++ ++==*%*%%%%***++ + diff --git a/src/build/framegen/frames/frame_085.txt b/src/build/framegen/frames/frame_085.txt new file mode 100644 index 000000000..4e074e65b --- /dev/null +++ b/src/build/framegen/frames/frame_085.txt @@ -0,0 +1,41 @@ + + + + ++++****%%%%***=++++ + ++==***%+x ox**%*==++ + xx===*+x *=**++ + ++**x+ ~x+=*****=+o· ==*= + ===+ x%$@@@@@@@@@@@@@@@@@@@$*o +x**+x + ==+x o%@@@@$$$$$$$$$$$$$$$$$$$$$@@@@%~ **xx + ===+ ·%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@% **xx + ++++ o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@~ ·x** + ** @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + +++x +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x *= + =* *@$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++++ + xx++ +@$$$$x +$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ == + +++o @$$$@* +$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@ == + ==+· =$$$$$$· +$@$$$$$@@*==============*@@$$$$$$= ==xo + == $@$$$$$@@*x $$$$@x o@$$$$@$ ++xx + == $$$$$$$$@@@%~ $$$$@ @$$$$$$ ++xx + == @$$$$$@%· o$$$$$$@+ +@$$$$$$$ ++xx + == @$$$$@* ~*@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$$ ++xx + == @$$$$$% ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$@@%*%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == =@$$$$$$$$$@@@@@@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@@@@@$ == + +++x ·$@@@@@@@@$=xx+%@@@@$$$$@@@@@*+xx*@@@@@$$$$@@@@%=xxo o+++ + ** o*$%+ +%$@@$$*o o*$$@@$%+ ** o + ++** **++ + x+**+= ~x=*****xo ==***=++ =+******+x + ++==*%%*==xx x+==*%*%%%%*==++ ==**%$%%%%**=+ + diff --git a/src/build/framegen/frames/frame_086.txt b/src/build/framegen/frames/frame_086.txt new file mode 100644 index 000000000..d1ca5713f --- /dev/null +++ b/src/build/framegen/frames/frame_086.txt @@ -0,0 +1,41 @@ + + + + x+++==*%%$%%%%%%%**===++ + +=****++ ox****== + ++**+= ++**++ + ==== ~+*%$$@@@@@$%*=x· ++**+x + xx**xx +%@@@@@@@@$$$$$$$@@@@@@@@*o **++ + ox**o~ ~%@@@@$$$$$$$$$$$$$$$$$$$$$$$@@@@= ==++ + **+~ *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ==xx + ++=x %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ** + xx== +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o x+++ + ==+~ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* == + == @@$$$@@$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ x+++ + +x++ $$$$$$ x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* == + +++~ ·@$$$@$ +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@ == + == %$$$$$@* +@@$$$$@%x~~~~~~~~~~~~~~o=@$$$$$$= ==+x + == @$$$$$$@@@$+ $$$$@o @$$$$@$ ++xx + == @$$$$$$@@@*o $$$$@x @$$$$@$ ++xx + == @$$$$$@= ~*@$$$$$@$+xxxxxxxxxxxxxxx%@$$$$$@$ ++xx + == @$$$$@$ ·=@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@$ ++xx + == @$$$$$$~ ·=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++++ + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xx + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$+ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + == =@$$$$$$$$$$@@@@@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@@@@% == + +++x $@@@@@@@@@=xox=@@@@@$$$@@@@@%+oo+%@@@@@$$$@@@@$=xo~ o+++ + ** o*$%=~ o*%$$$$%x +%$$$$%=~ ** o + ++**~ **+x + x+**+= *=***=++ =+****+= =+******++ + ++==*%%*==++ ==**%%%%%***++ ++***%%%%%**++ + diff --git a/src/build/framegen/frames/frame_087.txt b/src/build/framegen/frames/frame_087.txt new file mode 100644 index 000000000..cfec2a698 --- /dev/null +++ b/src/build/framegen/frames/frame_087.txt @@ -0,0 +1,41 @@ + + + ++++ + ++=**%*%*%******%%%*==++ + xx==*%== +=*=**++ + ++*=x+ ==**xx + xx**++ o=%$@@@@@@@@@@@%*+~ xx**++ + ++**~ o%@@@@@@$$$$$$$$$$$$@@@@@@$=· =*++ + x+** =@@@@$$$$$$$$$$$$$$$$$$$$$$$$$@@@$o +=++ + ** ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ==++ + ==+~ ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ** + x+== %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ o+== + ==x· @@$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ==xo + ox== @$$$$@$=*$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ x+++ + +++x @$$$$$ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% == + ==+· +$$$$$$ =$@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@ == + == $$$$$$$$o ·%@$$$$@= o$$$$$$$= ==xo + == @$$$$$$$@@@$o $@$$@o @$$$$@% ++xx + == @$$$$$$@@%x $$$$$= @$$$$@% ++xx + == @$$$$$$~ +$@$$$$$@@%**************%@@$$$$$@% ++xx + == @$$$$$$ +$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@% ++xo + == @$$$$$$= x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ == + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == =@@$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@@@@% == + +++x $@@@@@@@@@*xoo+$@@@@@$$@@@@@%+oox*@@@@@$$$@@@@@=xo· o+++ + **o· ~=%%=o +%$$$$%+ o*%$$$%=~ ** o + x+**~· ~**+x + ++**+= ==****++ =+****+= ++******++ + ++==*%%**=++ ++***%%%%***++ ++***%%%%%**++ + diff --git a/src/build/framegen/frames/frame_088.txt b/src/build/framegen/frames/frame_088.txt new file mode 100644 index 000000000..237b9c931 --- /dev/null +++ b/src/build/framegen/frames/frame_088.txt @@ -0,0 +1,41 @@ + + + ++++====++++++ + ++==*%**==++++++++==**%*==++ + ++**=* ==**++ + ++**+= · ++**++ + ++== ~=%@@@@@@@@@@@@@@@@$*x ==== + ++=+ x$@@@@@$$$$$$$$$$$$$$$$@@@@@$= ++== + ++=+ +@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* x+== + x+== %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o +=++ + ** %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ ==xo + ++++ o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ·+== + =* =@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xx + xx++ +@$$$$@x ·+$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + +++~ @$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$% == + == $$$$$$$ =$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == @$$$$$$@%o x$$$$$$ =$$$$$$+ == o + == $$$$$$$$@@@@= %@$$@~ @$$$$@= ==xx + == @$$$$$$@%o o$$$$$$ =$$$$$@= ==xo + == @$$$$$$ +$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@= ==xo + == @$$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$@x +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@@$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@* == + ++++ %@@@@@@@@@*o··o=@@@@@@@@@@@@%x~·~x%@@@@@@@@@@@@=o~ x+++ + **x· +*%=o ~=%%$%*x x*%$%%=~ ·o** + x+**o~ o oo**++ + ++**+=xo =+****== *+****==+x ++==****++ + ++==******++ ++****%%%***++ ++==**%%%***==+x + diff --git a/src/build/framegen/frames/frame_089.txt b/src/build/framegen/frames/frame_089.txt new file mode 100644 index 000000000..b3622446f --- /dev/null +++ b/src/build/framegen/frames/frame_089.txt @@ -0,0 +1,41 @@ + + + ++++==****==++++ + ==***%==++ ox==%***== x + ==**++ ++*===xx + ++**++ ·oxx++xxo~ +x**=+ + ===+ ~=$@@@@@@@@@@@@@@@@@@$*o ++** + ==+x ~%@@@@@$$$$$$$$$$$$$$$$$$$@@@@$x x+** + ==+x ·%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$o o+== + ++=+ o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= +=++ + ox=* ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xo + +++o *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + == $@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xx + x+++ $@$$$@% ~=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + ==+· x@$$$$$ ~*@@@@$$$$$$$$$$@@@@@@@@@@@@@@@$$$$$$$$ == + == @$$$$$$ ~*@@$$$$$@@$%%%%%%%%%%%%%%$@@$$$$$@ == + == $$$$$$$@@=· $$$$$* o$$$$$$o == + == @$$$$$$$@@@@+ $$$$@· @$$$$@x == + =* @$$$$$$@+ *@$$$$$o %$$$$$@x == + =* @$$$$$$ x%@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@x == + == @$$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$@*x+%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + == $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$o == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@@$$$$$$$$$@@@@@@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@+ == + ++++ *@@@@@@@@@=o ·x%@@@@@@@@@@@%x· ~=@@@@@@@@@@@@=~ ++++ + **x· o=*+~ x=%%%=x ~+*%%*+~ ·x** + x+**xo xo ++ ++oo**+x + ++**=*xx *=****==+x *+****==++ ++==****++ + ++==******++ ++==********++xx ++==********==++ + diff --git a/src/build/framegen/frames/frame_090.txt b/src/build/framegen/frames/frame_090.txt new file mode 100644 index 000000000..e781e1e31 --- /dev/null +++ b/src/build/framegen/frames/frame_090.txt @@ -0,0 +1,41 @@ + + + +++=**%%%%%%%%**=+++ + ++***%==o· ·x==%***++ + ++**+* *+**++ + ==== o+=*%$$$$%*=+o ==== + xx**xx o*@@@@@@@@@@@@@@@@@@@@@@*x xx**+x + xx**o~ ·%@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@%~ ~o**xx + **x· *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ·o** + ==+o %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ o+== + xx== *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ++++ + ==x· @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + xx== @$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ =++x + ++xo @$$$$$o ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + == %$$$$@$ ~*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$$+ ~*@$$$$$@$=+++++++++++++++%@$$$$$@ == + == $$$$$$$@@@=~ $$$$$x @$$$$$~ == + == @$$$$$$@@@@= $$$$@~ @$$$$@~ == + == @$$$$$@% +@$$$$$@%~··············~=@$$$$$@~ == + == @$$$$@$ x%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@~ == + == @$$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == @$$$$$$@@%%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == @$$$$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~@@$$$$$$$$$@@@@@@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@@@o == + ++++ +@@@@@@@@@+· +$@@@@@@@@@@%o ~*@@@@@@@@@@@+ ++++ + **+~ x+o o+=+x~ ~x+=+o ~x** + xx**+x == == ++++**+x + xx**==+= x+==*****=+* ~x*=******=*x~ =+==**==xx + ++==******++ ++==********+++x xx++********==+x + diff --git a/src/build/framegen/frames/frame_091.txt b/src/build/framegen/frames/frame_091.txt new file mode 100644 index 000000000..425fbf020 --- /dev/null +++ b/src/build/framegen/frames/frame_091.txt @@ -0,0 +1,41 @@ + + + ++==**%%*%%%%%%*%%**==++ + ==***%xx xx%***== + ++**++ ++**++ + ++**++ x=*$$@@@@@@$$*=x ++**+x + ++**~o ~*$@@@@@@@$$$$$$$$@@@@@@@$*~ oo**++ + ++** +$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ **++ + xx** ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ **xx + ==+~ ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ ~+== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@$$$$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + x+++ o@$$$$@@%$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o +++x + +++~ @$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + == $$$$$$$ x$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@* +@$$$$$@%o··············~=@$$$$$@ == + == $$$$$$$@@@$= $$$$@~ @$$$$$· == + == ·@$$$$$$@@$*o $$$$@x @$$$$@~ == + == ·@$$$$$$+ ~*@$$$$$@$=xxxxxxxxxxxxxx+%@$$$$$@~ == + == ·@$$$$$$ ~*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@~ == + == ·@$$$$$$o ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· @@$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@@@ x== + ++++ o$@@@@@@@@+ ~*@@@@@@@@@@*~ +@@@@@@@@@@$x ++++ + ==+o ·o~ ~oo~ ~oxo· o+== + xx**+x == == ==++**+x + x+==**+*x~ ++*=**==**+*+x x+*=**==**=*++ ~x*=****==xx + x+++****==++ ++++********++++ ++==******=++x + diff --git a/src/build/framegen/frames/frame_092.txt b/src/build/framegen/frames/frame_092.txt new file mode 100644 index 000000000..040799032 --- /dev/null +++ b/src/build/framegen/frames/frame_092.txt @@ -0,0 +1,41 @@ + + xx++++xx + ===*%%%%*%****%*%%%%*=== + ++**=%++ ++%=**++ + ===* **== + x+**+x ~+*$@@@@@@@@@@@@$*+~ x+**+x + ++== =$@@@@@$$$$$$$$$$$$$$@@@@@$= ==++ + ++*= ~%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%~ =*++ + x+== =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ==+x + =*o =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= o*= + ++++ ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· ++++ + == =@$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= == + x+++ =@$$$$@$**@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ++xx + +++· ·@$$$$$ ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· ·+++ + == @$$$$@$ ~*@@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@ == + == $$$$$$@%~ ~$$$$$$@= x@$$$$$$ == + == ·@$$$$$$$@@@%~ $$$$@· @$$$$@· == + == ·@$$$$$$@@%x $$$$$+ ·@$$$$@· == + == ·@$$$$$$~ +$@$$$$$@@%***************$@$$$$$@· == + == ·@$$$$@% x$@@@@$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$@= +$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· $@@$$$$$$$@@@@@@@@@@$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@@$ ·+== + ++++ =@@@@@@@%o ~%@@@@@@@@@+ +@@@@@@@@@%~ ++++ + ===+ +=== + x+=*=+ ++%%++ %%=+ =*====xx + ==**=*==++*=*=**==**=*=*++++=**=**===*=**%++++==%***==++xx + ++++==**==++ ++==****==++++ ++++****==++++ + diff --git a/src/build/framegen/frames/frame_093.txt b/src/build/framegen/frames/frame_093.txt new file mode 100644 index 000000000..06e4f4dbe --- /dev/null +++ b/src/build/framegen/frames/frame_093.txt @@ -0,0 +1,41 @@ + + xx++++++++xx + x+==*%*%*%========%*%*%*==+x + ++**=*+x x+*=**++ + xx**=* ==**xx + ++**o x*$@@@@@@@@@@@@@@$*x o**++ + ++=+ o*@@@@@$$$$$$$$$$$$$$$$@@@@@*o +=++ + ++=+ x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$x +=++ + x+== *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ==+x + ** %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ** + +++x x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x x+++ + =* *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* *= + ++++ *@$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++++ + ==+· o@$$$$@* o*@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ·+== + == @$$$$@* =$@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@ == + == $$$$$$% o*@@$$$$@@*++==========++=$@$$$$$$ == + == ·@$$$$$@@$+· $$$$$x $$$$$@· == + == ·@$$$$$$@@@*o %$$$@~ @$$$$@· == + == ·@$$$$$$~ o$@$$$$@*~ ·+@$$$$$@· == + == ·@$$$$@= +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$o o*@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$· == + == @@$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$$@@@$$$$$$$$$$$$$$$$@@ *= + ==+~ *@@@$$$$$$@@@@%%$@@@@$$$$$$$@@@@$%%@@@@$$$$$$$$@@@@* ~+== + ++== o%@@@@@@= x$@@@@@@@%x ~*@@@@@@@@= ==++ + ===+ +=== + ox====o+ ++%%== x+%%** *=====xo + ++**=**%***=*=**++==***%****%**=**++==**=*=***%**=**==++ + x+++====++++ ++++======++xx ++++======++++ + diff --git a/src/build/framegen/frames/frame_094.txt b/src/build/framegen/frames/frame_094.txt new file mode 100644 index 000000000..bd9522ac3 --- /dev/null +++ b/src/build/framegen/frames/frame_094.txt @@ -0,0 +1,41 @@ + + xx++++====++++xx + ++==*%**==++oooo++==**%*==++ + ++**=* *=**++ + ++**+= ···· =+**++ + ++== x=$@@@@@@@@@@@@@@@@$=x ==++ + ==++ =$@@@@$$$$$$$$$$$$$$$$$$@@@@$= ++== + ===+ *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* +=== + ++=+ ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· +=++ + ox** $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ** o + +++o =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= o+++ + == $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + ==+· +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+== + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == $$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$ == + == ·@$$$$@= ·*@$$$$@x =@$$$$@· == + == ·@$$$@ ~@$$@ @$$$@· == + == ·@$$$$x +$$$@ x$$$$@· == + == ·@$$$$@@*==============*@@$$$$@$=++++==========*@@$$$$@· == + == ·@$$$$$$@@@@@@@@@@@@@@@@$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == %@$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@@% == + ==+o ~@@@@$$$$@@@@*+x+*@@@@$$$$$@@@@%=xx=$@@@@$$$$@@@@@*~ o+== + xx== x*$@@$*o o*$@@@@%+ ·=%@@@@$*o ==xx + ==== ~·++== + ====+= =+*==*++ ++****++ ++=*==== + ++*****%**%***==++++**=***%%%*****++++***%%%%%***=**++++ + ++++++++++ ++++++++++++ ++++++++++++ + diff --git a/src/build/framegen/frames/frame_095.txt b/src/build/framegen/frames/frame_095.txt new file mode 100644 index 000000000..b566afe9c --- /dev/null +++ b/src/build/framegen/frames/frame_095.txt @@ -0,0 +1,41 @@ + + ++============++ + ++**%%=*++o~····~o++*=%%**++ + +=**== ==**=+ + ++**++ ·~~oo~~· ++**++ + ===+ +%@@@@@@@@@@@@@@@@@@%+ +=== + ===+ ·*@@@@@$$$$$$$$$$$$$$$$$$@@@@@*· ++== + ===x %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@% x=== + ++=+ o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o +=++ + xx== @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + ==+~ *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ~+== + == $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + +++x $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ x+++ + ==x· =@$$$$@@@@@@@@@$$$$$$$$$$$$$$$@@@@@@@@@$$$$$$$$$$$$$@= ·x== + == @$$$$$% +%@@@@@$$$$$$$$$$% ·+%@@@@@$$$$$$$$$@ == + == $$$$$@o +%@@@$$$$$$@ +%@@@$$$$$$$ == + == ·@$$$$$$~ o$$$$$$$$ o$$$$$$@· == + == ·@$$$$$$@@@%~ x@$$$$$@@@@*· +@$$$$@· == + == ·@$$$$$@+ $$$$$$$$x $$$$$$@· == + == ·@$$$$@o ·+$@@@$$$$$@ ~+$@@@$$$$$@· == + == ·@$$$$$* ~=$@@@@@$$$$$$$$$= ~=$@@@@@$$$$$$$$@· == + == ·@$$$$$@@$%$@@@@@$$$$$$$$$$$$$$@@$%$@@@@$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@$$$$$$$$$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@@$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@+ == + ==+x %@@@@@@@@@@%x· ·x*@@@@@@@@@@@@=~ ~+$@@@@@@@@@@@%x x+== + ++==o· x*%%=x o=%%%*+~ ~+*%%%=x ·x==++ + ====oo ox xo==== + ====+=+x ++======+= ======+= ~ ++*===== + ++==*******=**==++++************==++++==*****%******++++ + ++++++++++ +++++++++x ++++++++++ + diff --git a/src/build/framegen/frames/frame_096.txt b/src/build/framegen/frames/frame_096.txt new file mode 100644 index 000000000..aff846aa1 --- /dev/null +++ b/src/build/framegen/frames/frame_096.txt @@ -0,0 +1,41 @@ + + ++====****====++ + +=***%==+o o+==%***=+ + ===*++ ++*=== + ++**x+ ·ooxxxxoo· +x**++ + ===+ o=$@@@@@@@@@@@@@@@@@@$=o +=== + **++ o%@@@@$$$$$$$$$$$$$$$$$$$$@@@@%o ++** + ==+x ~$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$~ x+== + ++++ +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ++++ + ox== ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ ==xo + ==+~ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ~+== + ox== @@$$$$$@@$$$$$$$$$$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$@@ ==xo + +++x @$$$$$@@%%@@@@$$$$$$$$$$$$$$$@@$%%@@@@$$$$$$$$$$$$$@ x+++ + ==+ =@$$$$$ x%@@@@$$$$$$$$$$$$ x$@@@$$$$$$$$$$@= +== + == @$$$$@$ +$@@@$$$$$$$@% +$@@@$$$$$$$@ == + == $$$$$$@% =@$$$$$$$@* *@$$$$$$$ == + == ·@$$$$$$@@@$= $$$$$$$$@@@$+ $$$$$$@· == + == ·@$$$$$$@@@$+ $$$$$$$$@@@$+ $$$$$$@· == + == ·@$$$$$@% =@$$$$$$$@* *@$$$$$$@· == + == ·@$$$$$% +$@@@$$$$$$$@% +$@@@$$$$$$$@· == + == ·@$$$$$$ x%@@@$$$$$$$$$$$$$ x%@@@$$$$$$$$$$$@· == + == ·@$$$$$$@$%%@@@@$$$$$$$$$$$$$$$@@$%%@@@@$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$@@$$$$$$$$$$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· @@@$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@@ ·x== + ++++ o$@@@@@@@@$+ ·*@@@@@@@@@@*· x$@@@@@@@@@$x ++++ + xx==+x ·oo~ ~oo~ ~ooo~ o+==+x + ++==+x ===+ +=** x++==++ + ++====+=+x x+*+*=====+===o~ ~o=+*+=====*==+x ++*=====++ + ++++==********==++++==**********==++++++=*********==++++ + ++++++ xxxx++xxxx ++++++++ + diff --git a/src/build/framegen/frames/frame_097.txt b/src/build/framegen/frames/frame_097.txt new file mode 100644 index 000000000..316e49293 --- /dev/null +++ b/src/build/framegen/frames/frame_097.txt @@ -0,0 +1,41 @@ + + ++====****====++ + xx+=***%==x~ ~x==%***=+xx + x+===*++ ++*===+x + ++**+x ~ox++++xo~ x+**++ + ==++ x*$@@@@@@@@@@@@@@@@@@$*x ++== + **+x x%@@@@$$$$$$$$$$$$$$$$$$$$@@@@%x x+** + ==+o o$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$o o+== + ++++ +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ++++ + xx== o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ==xx + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + x+== @@$$$$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@@ ==+x + +++x @$$$$@@=xx%@@@@$$$$$$$$$$$$$$@@=x+%@@@$$$$$$$$$$$$$@ x+++ + ==x *$$$$$$ x$@@@$$$$$$$$$$$% +$@@@$$$$$$$$$$* x== + == @$$$$$$ =$@@@$$$$$$$% =$@@@$$$$$$@ == + == $$$$$$@@+ ~$$$$$$$$@@+ ~$$$$$$$$ == + == ~@$$$$$$$@@@@+ $$$$$$$$$@@@@+ $$$$$$@~ == + == ·@$$$$$$@@$+ $$$$$$$$@@$+ $$$$$$@· == + == ·@$$$$$$x +$@$$$$$$$$o =$@$$$$$$@· == + == ·@$$$$@$ x$@@@$$$$$$$$@% x$@@@$$$$$$$$@· == + == ·@$$$$$$o ~*@@@@$$$$$$$$$$$$$~ o%@@@@$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==x· $@@$$$$$$$$@@@@@@@@@@$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@$ ·x== + ++++ =@@@@@@@@*~ o%@@@@@@@@$+ =@@@@@@@@@*· ++++ + ox==++ ++==xx + ++===+ **%* =*%% +++===++ + ++=====%+=++==*==========*==++==***========%+=++++*=*+====++ + xx++==******==++xxx+++==******==+++x+x++==******====++ + xx++xx xx++xx xx++++ + diff --git a/src/build/framegen/frames/frame_098.txt b/src/build/framegen/frames/frame_098.txt new file mode 100644 index 000000000..7eb1d4acf --- /dev/null +++ b/src/build/framegen/frames/frame_098.txt @@ -0,0 +1,41 @@ + + xx++==********==++xx + x+==*%**=+~· ·~+=**%*==+x + x+=*=*+x x+*=*=+x + ++**xo ·ox+====+xo· ox**++ + **++ x*@@@@@@@@@@@@@@@@@@@@*x ++** + **+o x$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$x x+** + ==+o x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$x o+== + ++++ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++++ + xx== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xx + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + ox== @@$$$$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@@ ==xo + +++x @$$$$@@+·~=@@@@$$$$$$$$$$$$$$@@x·~=@@@@$$$$$$$$$$$$@ x+++ + == *$$$$$$ ·=@@@@$$$$$$$$$@% ~*@@@@$$$$$$$$$* == + == @$$$$$$ ~*@@@$$$$$$$% ~*@@@$$$$$$@ == + == $$$$$$$@*~ =$$$$$$$@@*· =$$$$$$$ == + == ~@$$$$$$$@@@@+ $$$$$$$$$@@@@+ $$$$$$@~ == + == ·@$$$$$$@$x o$$$$$$$@@$x x$$$$$$@· == + == ·@$$$$$$ +$@@$$$$$$$$ +$@@$$$$$$@· == + == ·@$$$$@$ x$@@@@$$$$$$$$@% x$@@@@$$$$$$$$@· == + == ·@$$$$$@$~ x%@@@@$$$$$$$$$$$$$@%· x%@@@@$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == $@$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@$ == + ==+o +@@@$$$$$$@@@@%**%@@@@$$$$$$@@@@$***%@@@@$$$$$$@@@@+ o+== + ++== ·=$@@@@@%x o*@@@@@@$= =$@@@@@@*x ==++ + ===+ +=== + ++====x+ x+****+x ****++ =+====++ + ++=====**%****%==========********==========**%****%*======++ + ++++======++++ ++++========++ ++++========++xx + + diff --git a/src/build/framegen/frames/frame_099.txt b/src/build/framegen/frames/frame_099.txt new file mode 100644 index 000000000..624e9eea2 --- /dev/null +++ b/src/build/framegen/frames/frame_099.txt @@ -0,0 +1,41 @@ + + +++===********===+++ + ++==*%**++~· ·~++**%*==+x + xx**=%+x x+%=**xx + ++*=x ~ox+====+xo~ x=*++ + **++ x%@@@@@@@@@@@@@@@@@@@@%x ++** + **+o +$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$+ o+** + =*+o x$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$x ~+*= + ++++ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++++ + xx== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xo + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + ox== @$$$$@@@@@@$$$$$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$$@ ==xo + +++x @$$$$@$o +$@@@$$$$$$$$$$$$$$@$o +$@@@$$$$$$$$$$$$@ x+++ + == *$$$$$$ +$@@@$$$$$$$$$@% +$@@@$$$$$$$$$* == + == @$$$$$$ +$@@$$$$$$$$ =$@@$$$$$$@ == + == $$$$$$$@%o x$$$$$$$@@%o +$$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$$$$$$@@@@x $$$$$$@· == + == ·@$$$$$$@*~ +$$$$$$$@@*~ =$$$$$$@· == + == ·@$$$$$$ ·=$@@$$$$$$$% ~*@@@$$$$$$@· == + == ·@$$$$$$ =@@@@$$$$$$$$$@% ·=@@@@$$$$$$$$$@· == + == ·@$$$$$@@x·~=$@@@$$$$$$$$$$$$$$@$x·~=@@@@$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@@% == + ==+x ~$@@@@$$$@@@@$=xx+%@@@@$$$$@@@@@*+xx=$@@@@$$$$@@@@%~ x+== + ++== o*$@@$%=· +*$@@@$*x ~=%@@@$%+ ==++ + ==== ~·++== + xx====+= ++**=*+= x+====+= x=+====xx + ++====*%%%***=====++====%%%%%**=====++====*%*%%*%*====++ + xx++++===+++++ xx++++====++++ xx++++====++++ + + diff --git a/src/build/framegen/frames/frame_100.txt b/src/build/framegen/frames/frame_100.txt new file mode 100644 index 000000000..c66e0879c --- /dev/null +++ b/src/build/framegen/frames/frame_100.txt @@ -0,0 +1,41 @@ + + +++===********===+++ + ++==*%**++~· ·~++**%*==+x + xx**=%+x x+%=**xx + ++*=x ~ox+====+xo~ x==++ + **++ +%@@@@@@@@@@@@@@@@@@@@%+ ++** + **+o +$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$+ o+** + ==+~ x$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$x ~+*= + ++++ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++++ + xx== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xo + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + ox== @$$$$@@@@@@$$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$$@ ==xo + +++x @$$$$$%· o*@@@@$$$$$$$$$$$$$@% o%@@@@$$$$$$$$$$$@ x+++ + == *$$$$@$ o%@@@@$$$$$$$$@% x%@@@@$$$$$$$$* == + == @$$$$$$ x%@@$$$$$$$$ x%@@$$$$$$@ == + == $$$$$$$@$+ ~$$$$$$$@@$x o$$$$$$$ == + == ~@$$$$$$$@@@@+ $$$$$$$$$@@@@x $$$$$$@~ == + == ·@$$$$$@@= *$$$$$$$@@+ *$$$$$$@· == + == ·@$$$$$$ o%@@@$$$$$$$% o%@@@$$$$$$@· == + == ·@$$$$$$ o*@@@@$$$$$$$$$$% o%@@@@$$$$$$$$$@· == + == ·@$$$$$@@=ox*@@@@$$$$$$$$$$$$$$@@=ox*@@@@$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@+ == + ==++ *@@@@@@@@@@@=~ x%@@@@@@@@@@@%x ~=@@@@@@@@@@@@= ++== + xx==x· o=***+~ x=***=x ~+****+~ ·x==++ + ====xo +o xx xx==== + ======+x o=+=====*+x =+=*====++ ++====== + ++==***%******==++++==***%********++++==************==++ + ++++++++++ ++++++++++ ++++++++++++ + + diff --git a/src/build/framegen/frames/frame_101.txt b/src/build/framegen/frames/frame_101.txt new file mode 100644 index 000000000..63dc3de2c --- /dev/null +++ b/src/build/framegen/frames/frame_101.txt @@ -0,0 +1,41 @@ + + xx+===********===+xx + ++==*%**++~· ·~++**%*==+x + xx**=*+x x+*=**xx + ++*=xo ·ox+====+xo· ox=*++ + **++ x%@@@@@@@@@@@@@@@@@@@@%x ++** + **+o +$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$+ o+** + =*+o x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$x o+*= + ++++ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++++ + xx== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xo + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@@ ==xo + +++x @$$$$$% ~*@@@@$$$$$$$$$$$$$@* o*@@@@$$$$$$$$$$$@ x+++ + == *$$$$@% o*@@@@$$$$$$$$@% o%@@@@$$$$$$$$* == + == @$$$$$$ o%@@$$$$$$$$ o%@@$$$$$$@ == + == $$$$$$$@$+ ·$$$$$$$$@$+ ~$$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$$$$$$@@@@x $$$$$$@· == + == ·@$$$$$@@+ *$$$$$$$@@+ %$$$$$$@· == + == ·@$$$$$$ x%@@@$$$$$$$% x%@@@$$$$$$@· == + == ·@$$$$$$ o%@@@@$$$$$$$$$$% x%@@@@$$$$$$$$$@· == + == ·@$$$$$@@=xx%@@@@$$$$$$$$$$$$$$@@=x+%@@@@$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@o == + ++++ +@@@@@@@@@@$+ ·=@@@@@@@@@@@*~ o%@@@@@@@@@@$x ++++ + ox==+~ x+=+o x+=+x· o+==+o ~+==+x + ++==+x ++ == ++==++ + ++====++ x+*+==**==++ ox=+==***=+* =+==**++ + ++==**********==++xx++**********==++++++************++++ + ++++++xx ++++++xx xx++++xx + + diff --git a/src/build/framegen/frames/frame_102.txt b/src/build/framegen/frames/frame_102.txt new file mode 100644 index 000000000..a53995bec --- /dev/null +++ b/src/build/framegen/frames/frame_102.txt @@ -0,0 +1,41 @@ + + xx+===********===+xx + +++=****+=o· ·o==****=++x + x+=*=*+x x+*=*=+x + ++**+x ~x++==++x~ x+**++ + **++ x*@@@@@@@@@@@@@@@@@@@@*x ++** + **xx x%@@@@$$$$$$$$$$$$$$$$$$$$@@@@%x xx** + ==+o o$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$o o+== + ++++ +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ++++ + xx== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xx + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@@ ==xo + +++x @$$$$@% ~*@@@@$$$$$$$$$$$$$@* ~*@@@@$$$$$$$$$$$@ x+++ + == *$$$$@$ ~*@@@@$$$$$$$$@% o*@@@@$$$$$$$$* == + == @$$$$$$ o%@@$$$$$$$$ o%@@$$$$$$@ == + == $$$$$$$@$=· ·$$$$$$$$@$+ ~$$$$$$$ == + == ~@$$$$$$$@@@@+ $$$$$$$$$@@@@x $$$$$$@~ == + == ·@$$$$$@@+ *$$$$$$$@@+ %$$$$$$@· == + == ·@$$$$$$ x%@@@$$$$$$$% x$@@@$$$$$$@· == + == ·@$$$$$$ x%@@@@$$$$$$$$$$% x%@@@@$$$$$$$$$@· == + == ·@$$$$$@@=x+%@@@@$$$$$$$$$$$$$$@@=x+%@@@@$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· @@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@ ·x== + ++++ ~%@@@@@@@@@%~ o%@@@@@@@@@$+ =@@@@@@@@@@%~ ++++ + ox==+x oo~ ~oo· ~oo~ x+==xo + x+==++ ++** %% ++==++ + ++=*==+*xx ~x++*=**=*===*+x ++*=**==**+*++ x+*===*=++ + ++==********++xx ++==********==++ ++==********==++ + + + diff --git a/src/build/framegen/frames/frame_103.txt b/src/build/framegen/frames/frame_103.txt new file mode 100644 index 000000000..04ce9a005 --- /dev/null +++ b/src/build/framegen/frames/frame_103.txt @@ -0,0 +1,41 @@ + + x++====******====++x + ++==***%==xo ox==%***==+x + xx=*=*++ ++*=*=xx + ++**++ ~ox++++xo~ ++**++ + **++ o*$@@@@@@@@@@@@@@@@@@$*o ++** + **+x o%@@@@$$$$$$$$$$$$$$$$$$$$@@@@%o x+** + ==+o ~$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$~ o+== + ++++ +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ++++ + xx== o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ==xo + ==+~ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ~+== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@@ ==xo + +++x @$$$$$% ~*@@@@$$$$$$$$$$$$$@* o*@@@@$$$$$$$$$$$@ x+++ + ==+ *@$$$@% o*@@@@$$$$$$$$@% o%@@@@$$$$$$$@* x== + == @$$$$$$ o%@@$$$$$$$$ o%@@$$$$$$@ == + == $$$$$$$@$= ·$$$$$$$$@$+ ~$$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$$$$$$@@@@x $$$$$$@· == + == ·@$$$$$@@+ *$$$$$$$@@+ %$$$$$$@· == + == ·@$$$$$$ x%@@@$$$$$$$% x$@@@$$$$$$@· == + == ·@$$$$$$ o%@@@@$$$$$$$$$$% x%@@@@$$$$$$$$$@· == + == ·@$$$$$@@=xx%@@@@$$$$$$$$$$$$$$@@=x+%@@@@$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==+· @@@$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@@@@@@@@$$$$$$$$$@@@ ·+== + ++++ %@@@@@@@@@*· *@@@@@@@@@$x x$@@@@@@@@@* ++++ + ==+x ·· ·· ·· x+== + x+==++ +=%% +%*+ ++==++ + xx==**=*++xxxx*=*=**==**=*++xxxx+=*=**==**=*=+xxxx++*+**==++ + ++++******==++ xx++*******=++++ ++++=*******++++ + + + diff --git a/src/build/framegen/frames/frame_104.txt b/src/build/framegen/frames/frame_104.txt new file mode 100644 index 000000000..6447b659b --- /dev/null +++ b/src/build/framegen/frames/frame_104.txt @@ -0,0 +1,41 @@ + + xx++=====**=====++xx + ++++***%**++~· ·~++**%***+++x + xx==*%=+ +=%*==xx + ++**++ ~~oooo~~ ++**++ + ==== ·+%@@@@@@@@@@@@@@@@@@%+· ==== + **+x ~*@@@@@$$$$$$$$$$$$$$$$$$@@@@@*~ x+** + ==+x ·%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%· x+== + ++=+ x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x +=++ + xx== ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· ==xo + ==+~ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ~+== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@@ ==xo + +++x $$$$$@%· o%@@@@$$$$$$$$$$$$$@%· x%@@@@$$$$$$$$$$$$ x+++ + ==+· =@$$$@$ x%@@@@$$$$$$$$@% x%@@@@$$$$$$$@= ·+== + == @$$$$$$ x%@@$$$$$$$$ x$@@$$$$$$@ == + == $$$$$$$@$+ ~$$$$$$$@@$x o$$$$$$$ == + == ~@$$$$$$$@@@@+ $$$$$$$$$@@@@x $$$$$$@~ == + == ·@$$$$$$@= =$$$$$$$@@= *$$$$$$@· == + == ·@$$$$$$ o%@@@$$$$$$$% o%@@@$$$$$$@· == + == ·@$$$$$$ o*@@@@$$$$$$$$$$% o*@@@@$$$$$$$$$@· == + == ·@$$$$$@@=oo*@@@@$$$$$$$$$$$$$$@@+ox*@@@@$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· $@@$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@@@@@@@@$$$$$$$$$@@$ ·x== + +++= =@@@@@@@@@= +$@@@@@@@@%o ~%@@@@@@@@$= ++++ + ==++ +=== + xx=*=+ =*%% ++%%++ +=**+x + ++**=*=+++++******++**=%*=++++==*=**++**=*==++++++*=**++ + xx++======++++ ++======++++ ++++==**==++xx + + + diff --git a/src/build/framegen/frames/frame_105.txt b/src/build/framegen/frames/frame_105.txt new file mode 100644 index 000000000..3a119586e --- /dev/null +++ b/src/build/framegen/frames/frame_105.txt @@ -0,0 +1,41 @@ + + xx++============++xx + ++++**%%**==xo~~~~ox==**%%**+++x + xx==**== ==**==xx + ++**+= ·~~~~· =+**++ + ===+ x*$@@@@@@@@@@@@@@@@$*x +=== + **++ =@@@@@$$$$$$$$$$$$$$$$$$@@@@@= ++** + ==++ *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ++== + ++=+ ~@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@~ +=++ + xx== @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xx + ==+o *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* o+== + ox== $@$$$@@@@@@$$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@$ ==xo + ++++ $@$$$@$o +$@@@$$$$$$$$$$$$$$@$~ +$@@@$$$$$$$$$$$@$ x+++ + ==+· +@$$$$$ +$@@@@$$$$$$$$@% +$@@@$$$$$$$$@+ ·+== + == @$$$$$$ +$@@$$$$$$$$ +$@@$$$$$$@ == + == $$$$$$$@%o x$$$$$$$@@%o x$$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$$$$$$@@@@x $$$$$$@· == + == ·@$$$$$$@*~ +$$$$$$$@@*~ =$$$$$$@· == + == ·@$$$$$$ ·*@@@$$$$$$$% ~*@@@$$$$$$@· == + == ·@$$$$$$ ·=@@@@$$$$$$$$$@% ~*@@@@$$$$$$$$$@· == + == ·@$$$$$@@+·~=@@@@$$$$$$$$$$$$$$@$x·~=@@@@$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· %@@$$$$$$$$$@@@@$@@@@@$$$$$$$$@@@@$$@@@@$$$$$$$$$@@$ ·+== + ++== =$@@@@@@@$= x%@@@@@@@@%~ *@@@@@@@@$+ ==+x + ==++ ++== + ===+ ==*%+x ++%%=+ +=== + ++**=%==++++*=**==++**=*==++++***=**++******++++==%=**++ + ++======++++ ++======++++ ++++======++ + + + diff --git a/src/build/framegen/frames/frame_106.txt b/src/build/framegen/frames/frame_106.txt new file mode 100644 index 000000000..d472c438f --- /dev/null +++ b/src/build/framegen/frames/frame_106.txt @@ -0,0 +1,41 @@ + + ++++++====++++++ + xx+=***%%%**==++++==**%%%***=+xx + ox==**=*x ox*=**==xo + ++**+= =+**++ + ==== ~+%$@@@@@@@@@@@@@@$%+~ ==== + ===+ x%@@@@@$$$$$$$$$$$$$$$$@@@@@%x +=== + ===+ +@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@+ +=== + ++=+ %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% +=++ + ox== %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ==xx + ==+x x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x x+== + xx== %@$$$$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@% ==xo + ++++ %@$$$@@+~o=@@@@$$$$$$$$$$$$$$@@+~o*@@@@$$$$$$$$$$$@% ++++ + ==+· x@$$$$$ ~*@@@@$$$$$$$$$$% o*@@@@$$$$$$$$@x ·+== + == @$$$$$$ ~*@@@$$$$$$$% o%@@@$$$$$$@ == + == $$$$$$$@=· =$$$$$$$@@= *$$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$$$$$$@@@@x $$$$$$@· == + == ·@$$$$$$@$x o$$$$$$$@@$x x$$$$$$@· == + == ·@$$$$$$ x$@@$$$$$$$$ +$@@$$$$$$@· == + == ·@$$$$@$ x%@@@@$$$$$$$$@% x$@@@@$$$$$$$$@· == + == ·@$$$$$@$~ x%@@@@$$$$$$$$$$$$$@%· x%@@@@$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· %@@@$$$$$$$$@@@$$$@@@@$$$$$$$$@@@@$$$@@@$$$$$$$$@@@% ·+== + x+== +$@@@@@@@$+ o%@@@@@@@@*~ =$@@@@@@@$+ ==xx + ===+ +=== + ==== ==%%++ ++%%== ==== + ++**=***++==%***==++***%**++++*=%**=++==***%==++**%=**++ + x+++==++++ x+++++==++xx ++++++++++ + + + diff --git a/src/build/framegen/frames/frame_107.txt b/src/build/framegen/frames/frame_107.txt new file mode 100644 index 000000000..0d5034d4f --- /dev/null +++ b/src/build/framegen/frames/frame_107.txt @@ -0,0 +1,41 @@ + + ++++++++++++++++ + ++*****%*%=******=%*%*****++ + ++**=*+x x+*=**++ x + ++**+= =+**++ + ====ox o=%@@@@@@@@@@@@@@%=o xo==== + ===+ ~*@@@@@@$$$$$$$$$$$$$$@@@@@@*~ +=== + ===+ o$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$o +=== + ++== *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ==++ + ox== *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ==xo + ==+x o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o x+== + ox== =@$$$$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@= ==xo + ++++ *@$$$@@*x+%@@@@$$$$$$$$$$$$$$@@*x+%@@@@$$$$$$$$$$$@* ++++ + ==x· ~@$$$$$ x%@@@@$$$$$$$$$$% x$@@@@$$$$$$$$@~ ·x== + == @$$$$$$ x$@@@$$$$$$$% +$@@@$$$$$$@ == + == $$$$$$@@+ %@$$$$$$@@x %$$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$$$$$$@@@@x @$$$$$@· == + == ·@$$$$$$@$=· $$$$$$$$@$=· ~$$$$$$@· == + == ·@$$$$$$ ~*@@$$$$$$$$ o%@@$$$$$$@· == + == ·@$$$$@% ~*@@@@$$$$$$$$@% ~*@@@@$$$$$$$$@· == + == ·@$$$$$@* ·=@@@@$$$$$$$$$$$$$@* ~*@@@@$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$@@ == + ==+~ %@@@$$$$$$$@@@@$$$@@@@$$$$$$$$@@@@$$$@@@$$$$$$$$@@@% ·+== + xx== x%@@@@@@@$+ ~%@@@@@@@@*~ =$@@@@@@@$+ ==xx + ===+ +=== + ====x ==%%++ ++%%== ==== + ++***%**====%***++++==*%**====%***==++++***%==+=***=**++ + xx++++++++ ++==++++ ++++++++xx + + + diff --git a/src/build/framegen/frames/frame_108.txt b/src/build/framegen/frames/frame_108.txt new file mode 100644 index 000000000..0b07a3b32 --- /dev/null +++ b/src/build/framegen/frames/frame_108.txt @@ -0,0 +1,41 @@ + + xx++++++++++++xx + ++==***%*%*%%%%%%*%*%***==++ + ++**=*== ==*=**++ + ++**=*++ ++*=**++ + ++**++ ~+*%@@@@@@@@@@%*+~ ++**++ + ==== o*@@@@@@@$$$$$$$$$$@@@@@@@*o ==== + ==== =@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@= ==== + ++== x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x ==++ + xx==x· x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ·x==xx + ++++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++++ + ox== o@$$$$$@@$$$$$$$$$$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$@o ==xo + ++++ x@$$$$@$%%@@@@$$$$$$$$$$$$$$$$@$%%@@@@$$$$$$$$$$$$@x ++++ + ==+~ @$$$$$ o%@@@@$$$$$$$$$$$$ o%@@@@$$$$$$$$$@ ~+== + == $$$$$@$ o%@@@$$$$$$$@% x%@@@$$$$$$$$ == + == @$$$$$@% x@$$$$$$$@* x@$$$$$$@ == + == ·@$$$$$$$@@@*· $$$$$$$$@@@@* $$$$$$@· == + == ·@$$$$$$@@$+· $$$$$$$$@@$+ $$$$$$@· == + == ·@$$$$$$x o%@$$$$$$$$o x$@$$$$$$@· == + == ·@$$$$@% o%@@@@$$$$$$$@% x%@@@@$$$$$$$@· == + == ·@$$$$$$x o*@@@@$$$$$$$$$$$$$o o%@@@@$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$@@ == + ==+~ %@@@$$$$$$$@@@@$$$@@@@$$$$$$$$@@@@$$$@@@$$$$$$$$@@@% ·+== + ox== x%@@@@@@@$+ ~*@@@@@@@@*~ =$@@@@@@@$+ ==+x + ++=+ +=++ + ++==ox ==%%++ ++%%== o==++ + x+***%**====%***++++==***%====%***==++++***%====**%***++ + +++++++x ++++++++ ++++++++ + + + diff --git a/src/build/framegen/frames/frame_109.txt b/src/build/framegen/frames/frame_109.txt new file mode 100644 index 000000000..c187dd596 --- /dev/null +++ b/src/build/framegen/frames/frame_109.txt @@ -0,0 +1,41 @@ + + xx++++++++++++xx + ++==****%%*%%%%%%*%%****==++ + ++****=*++ ++*=****++ + ++=*==+= =+====++ + ++**++ ~+=%$$@@@@$$%=+~ ++**++ + ++==oo +%@@@@@@@@$$$$$$@@@@@@@@%+ oo==++ + ++== o$@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@$o ==++ + ++==~ %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@% ~==++ + ox==+~ $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ ~+==xo + ++++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++++ + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ++++ ~@$$$$@@@@@@@$$$$$$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$$@~ ++++ + ==+~ @$$$$$~ =@@@@$$$$$$$$$$$$$· ·=@@@@$$$$$$$$$$@ ~+== + == $$$$$@% ·=$@@@$$$$$$$@% ·*@@@@$$$$$$$$ == + == @$$$$$$= ·*@$$$$$$$$+ ~*@$$$$$$@ == + == $$$$$$$@@@*x $$$$$$$$@@@*o $$$$$$$ == + == ·@$$$$$$@@@$+ $$$$$$$$@@@%x $$$$$$@· == + == ·@$$$$$@* =@$$$$$$$@= =@$$$$$$@· == + == ·@$$$$@$ +$@@@$$$$$$$@% +$@@@$$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$$$$$$$$ +$@@@$$$$$$$$$$$@· == + == ·@$$$$$$@@$$@@@@$$$$$$$$$$$$$$$$@@$$@@@$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$@$$$$$$$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$@@ == + ==+~ %@@@$$$$$$$$@@@$$$@@@@$$$$$$$$@@@@$$$@@@$$$$$$$$@@@% ·+== + xx== +%@@@@@@@$= ~%@@@@@@@@%~ =$@@@@@@@$+ ==xx + ++=+ +=++ + ++==ox ==%%++ ++%%== o==++ + x+***%**====%***++++==***%====%***==++++***%====**%***++ + ++++++++ ++++++++ ++++++++ + + + diff --git a/src/build/framegen/frames/frame_110.txt b/src/build/framegen/frames/frame_110.txt new file mode 100644 index 000000000..0ecf74c83 --- /dev/null +++ b/src/build/framegen/frames/frame_110.txt @@ -0,0 +1,41 @@ + + ++++++++++++ + ++++==******%%%*******==++++ + ++==**=***++ ++******==++ + ++==**=*+o o+*=**==++ + ++====x ·o++====++o· x====++ + ++==++ +%@@@@@@@@@@@@@@@@@@@@%+ ++==++ + ++==xo +$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$+ ox==++ + ++==+~ x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x ~+==++ + ==+x =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= x+== + ++== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==++ + ==x· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·x== + ++== @$$$$@@@@@@$$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$$@ ==++ + +++x @$$$$$* ·=@@@@$$$$$$$$$$$$$$= ~=@@@@$$$$$$$$$$$@ x+++ + == *$$$$@$ ·*@@@@$$$$$$$$@% ~*@@@@$$$$$$$$* == + == @$$$$$$ ~*@@$$$$$$$$ ~*@@$$$$$$@ == + == $$$$$$$@@=~ $$$$$$$$@@=· ·$$$$$$$ == + == ~@$$$$$$$@@@@x $$$$$$$$$@@@@o $$$$$$@~ == + == ·@$$$$$@@x %$$$$$$$@@x %$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$$% +$@@@$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$$$$$$% +$@@@$$$$$$$$$$@· == + == ·@$$$$$@@*++%@@@@$$$$$$$$$$$$$$@@*+=%@@@@$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· %@@@$$$$$$$$@@@@$$@@@@$$$$$$$$@@@@$$@@@@$$$$$$$$$@@$ ·+== + xx== +$@@@@@@@$= o%@@@@@@@@%o =$@@@@@@@$= ==xx + ++=+ +=++ + ++== ==%%++ ++%%== ==++ + x+===***++==%***++x+==*%**====**%*==xx++***%==++***=**++ + ++++++++ ++++++++ ++++++++ + + + diff --git a/src/build/framegen/frames/frame_111.txt b/src/build/framegen/frames/frame_111.txt new file mode 100644 index 000000000..f9eafa6a4 --- /dev/null +++ b/src/build/framegen/frames/frame_111.txt @@ -0,0 +1,41 @@ + + ++xxxx++ + xx++==****************==++xx + x+==**==*%=*++oo oo++==%*==**==++ + x+++**=*+= =+*=**+++x + ++====++ ~oooo~ ++====++ + ++===+ +%@@@@@@@@@@@@@@@@@@%+ +===++ + ++==+x ·*@@@@@$$$$$$$$$$$$$$$$$$@@@@@*· x+==++ + x+==+x %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@% x+==+x + ==++ o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o +=== + ++== ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· ==++ + ==+~ *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ~+== + ++== $@$$$$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@$ ==++ + +++x $$$$$@@x ·+$@@@$$$$$$$$$$$$$$@$o ~=@@@@$$$$$$$$$$$$$ x+++ + ==x· =@$$$$$ =$@@@$$$$$$$$$@% =$@@@$$$$$$$$@= ·+== + == @$$$$$$ =$@@$$$$$$$% ·=@@@$$$$$$@ == + == $$$$$$$@%o +$$$$$$$@@*~ +$$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$$$$$$@@@@+ $$$$$$@· == + == ·@$$$$$$@%o x$$$$$$$@@%~ +$$$$$$@· == + == ·@$$$$$$ =@@@$$$$$$$$ ·=@@@$$$$$$@· == + == ·@$$$$$$ =$@@@$$$$$$$$$$% =$@@@$$$$$$$$$@· == + == ·@$$$$$@$x ·+$@@@$$$$$$$$$$$$$$@$o ·=$@@@$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@@$$$$$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· $@@$$$$$$$$$@@@@$@@@@@$$$$$$$$@@@@@$@@@@$$$$$$$$$@@$ ·+== + xx== =$@@@@@@@@* o%@@@@@@@@%o *@@@@@@@@$= ==xx + ++=+ +=++ + ++== ==%%++ ++%%== ==++ + x+**=%*=++++%***=+++==*%**++++**%*==+++=***%++++==%=**++ + ++++++++ ++++++++ ++++++++ + + + diff --git a/src/build/framegen/frames/frame_112.txt b/src/build/framegen/frames/frame_112.txt new file mode 100644 index 000000000..75ce50d77 --- /dev/null +++ b/src/build/framegen/frames/frame_112.txt @@ -0,0 +1,41 @@ + + + xx++====********====++xx + ++==**=**%****++++****%**=**==++ + ++=====*+x ++*=====++ + ++====== ======++ + ++====xx o=%$@@@@@@@@@@@@$%=o xx====++ + ++===+ ·*$@@@@@$$$$$$$$$$$$$$@@@@@$*· +===++ + xx===+ o$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$o +===xx + ==++ *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ++== + ++== *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ==++ + ==+x ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ x+== + xx== =@$$$$$@@$$$$$$$$$$$$$$$$$$$$$@@@$$$$$$$$$$$$$$$@= ==xx + ++++ *@$$$$@$*%@@@@$$$$$$$$$$$$$$$@@$*%@@@@$$$$$$$$$$$$@* ++++ + ==+· ~@$$$$$ ~*@@@@$$$$$$$$$$$$ ~*@@@@$$$$$$$$$@~ ·+== + == @$$$$$$ ~*@@@$$$$$$$@% o*@@@$$$$$$$@ == + == $$$$$$@%~ o$$$$$$$$@%· x$$$$$$$$ == + == ·@$$$$$$$@@@%~ $$$$$$$$$@@@%· $$$$$$@· == + == ·@$$$$$$@@%+ $$$$$$$$@@%x $$$$$$@· == + == ·@$$$$$$o x$@$$$$$$$$~ +$@$$$$$$@· == + == ·@$$$$$$ x%@@@@$$$$$$$@% +$@@@$$$$$$$$@· == + == ·@$$$$$$+ x%@@@@$$$$$$$$$$$$$x x%@@@@$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· $@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·x== + xx== *@@@@@@@@@%~ +$@@@@@@@@$+ ~%@@@@@@@@@* ==xx + ==++ ++== + ===+ ++%% %%++ +=== + ++**=%+++x++**%*=+++===*==++++==*===++++*%**++++++****++ + ++++====++ ++====++ ++====++++ + + + diff --git a/src/build/framegen/frames/frame_113.txt b/src/build/framegen/frames/frame_113.txt new file mode 100644 index 000000000..ee9846d6f --- /dev/null +++ b/src/build/framegen/frames/frame_113.txt @@ -0,0 +1,41 @@ + + + xx++++============++++xx + ++====**=**%%%****%%%**=**====++ + ++====**=*o~ ~o*=**====++ + ======++ ++====== + x+====++ ~+*%$@@@@@@@@$%*+~ ++====++ + xx==== o%@@@@@@@$$$$$$$$$$@@@@@@@%o ====xx + ==== =@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@= ==== + =+== o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o ==++ + x+==x· x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ·x==+x + ==++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++== + xx== o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ==xx + ++++ x@$$$$@@@@@@@$$$$$$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$$@x ++++ + ==+~ @$$$$$o ·*@@@@$$$$$$$$$$$$$~ ~*@@@@$$$$$$$$$$@ ~+== + == $$$$$@% ~*@@@@$$$$$$$@* ~*@@@@$$$$$$$$ == + == @$$$$$$+ ~*@$$$$$$$$x o*@$$$$$$@ == + == ·@$$$$$$@@@*o $$$$$$$$@@$*~ @$$$$$@· == + == ·@$$$$$$@@@$+ $$$$$$$$@@@$+ @$$$$$@· == + == ·@$$$$$@* +@$$$$$$$@* =@$$$$$$@· == + == ·@$$$$@% +$@@@$$$$$$$@% +$@@@$$$$$$$@· == + == ·@$$$$$$ x%@@@@$$$$$$$$$$$$ +$@@@$$$$$$$$$$$@· == + == ·@$$$$$$@@$$@@@@$$$$$$$$$$$$$$$$@@$$@@@@$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$@$$$$$$$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· @@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·x== + xx++ ·%@@@@@@@@@%o =@@@@@@@@@@= o%@@@@@@@@@%~ ++++ + ==+x ·~~ ·~~· ~~~ x+== + ==++ x+%% %%++ +=== + ++**=%++ooox==*===++**=%++xoox++%=**++===*==xooo++%=**++ + ++++==++++ x+++====++xx ++++====++ + + + diff --git a/src/build/framegen/frames/frame_114.txt b/src/build/framegen/frames/frame_114.txt new file mode 100644 index 000000000..396d5a292 --- /dev/null +++ b/src/build/framegen/frames/frame_114.txt @@ -0,0 +1,41 @@ + + + xx++++++++++++++++++ + ++++==****=***%%%%***=****==++++ + ++++=====%==o~ ~o==%=====++++ + ++====+= =+====++ + ====++ ~x=**%%%%**=x~ +===== + ====++ o*$@@@@@@@@@@@@@@@@@@@@$*o ++==== + ====o~ ·*@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@*· ~o==== + ++==x· =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ·x==++ + xx==+o %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% o+==xx + =+++ *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* +++= + xx==x· @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ·x==xo + ++++ @$$$$@@@@@@$$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$$@ ++++ + ==+o @$$$$@$~ x%@@@@$$$$$$$$$$$$$@%· x%@@@@$$$$$$$$$$$@ o+== + == %$$$$$$ x%@@@@$$$$$$$$@% x%@@@@$$$$$$$$% == + == @$$$$$$ x%@@$$$$$$$$ +$@@$$$$$$@ == + == $$$$$$$@%+ o$$$$$$$@@%x x$$$$$$$ == + == ·@$$$$$$$@@@@+ $@$$$$$$$@@@@+ $$$$$$@~ == + == ·@$$$$$@@=· =$$$$$$$@@= *$$$$$$@· == + == ·@$$$$$$ ~*@@@$$$$$$$% o*@@@$$$$$$@· == + == ·@$$$$$$ ~*@@@@$$$$$$$$$$% ~*@@@@$$$$$$$$$@· == + == ·@$$$$$@@+~o*@@@@$$$$$$$$$$$$$$@@+~o*@@@@$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x ·@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@~ == + x+++ x$@@@@@@@@@@= o%@@@@@@@@@@%o =@@@@@@@@@@$x +=++ + ==+o ox++o ~x++x~ o++xo o+== + **+x ** ** x+** + ++**==o~ ++*+**++**+*xo ox*+**++**=*++ ~o=+**=+ + ++==***=++++ ++==****==++ x+++****==++ + + + diff --git a/src/build/framegen/frames/frame_115.txt b/src/build/framegen/frames/frame_115.txt new file mode 100644 index 000000000..f5d198a48 --- /dev/null +++ b/src/build/framegen/frames/frame_115.txt @@ -0,0 +1,41 @@ + + + ++++++++++++++++ + ++++==****************==++++ + ++===****%++~~ ~~++%****===++ + ++=====*+x x+*=====++ + ++====xx ·ox+====+xo· xx====++ + ====++ x%$@@@@@@@@@@@@@@@@@@$%x ++==== + ++==+x x$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$x x+==++ + ++==+o x$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$x o+==++ + ox==++ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++==xo + +++= x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x =+++ + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+==xo + ++== @@$$$$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@@ ==++ + ==+x @$$$$$@*x+%@@@@$$$$$$$$$$$$$$@@*x+%@@@@$$$$$$$$$$$$@ x+== + == *$$$$$$ x%@@@@$$$$$$$$$$% x%@@@@$$$$$$$$$* == + == @$$$$$$ x%@@@$$$$$$@% +$@@@$$$$$$@ == + == $$$$$$@@+ *$$$$$$$@@x %$$$$$$$ == + == ~@$$$$$$$@@@@x $$$$$$$$$@@@@x $$$$$$@~ == + == ·@$$$$$$@@=· $$$$$$$$@$= ~$$$$$$@· == + == ·@$$$$$$ ~*@@$$$$$$$$ o*@@$$$$$$@· == + == ·@$$$$@$ ~*@@@@$$$$$$$$@% ~*@@@@$$$$$$$$@· == + == ·@$$$$$@* ~*@@@@$$$$$$$$$$$$$@* ~*@@@@$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == o@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@x == + ++++ =@@@@@@@@@@@%o +$@@@@@@@@@@$+ o%@@@@@@@@@@@* ++++ + **x~ ~+===+o x====x o+=*=+~ ~+** + **+x ++ ++ x+** + ==**++ ~o*+**=***+= =+**==**+*o~ ++==== + +==****==+++ ++=******=++ ++===*%**==+ + + + diff --git a/src/build/framegen/frames/frame_116.txt b/src/build/framegen/frames/frame_116.txt new file mode 100644 index 000000000..0d845be93 --- /dev/null +++ b/src/build/framegen/frames/frame_116.txt @@ -0,0 +1,41 @@ + + + ++++++++ + ++++==************==++++ + ++++****=**%=+xo~~~~ox+=***=****++++ + xx++===*== =+*===++xx + ++====++ ·~~~~· ++====++ + ++===+ x*$@@@@@@@@@@@@@@@@$*x +===++ + ++==++ =@@@@@$$$$$$$$$$$$$$$$$$@@@@@= ++==++ + x+===+ *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* +===+x + ==++ ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ ++== + ++== @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==++ + ==+o *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* o+== + ++== $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ==++ + +++x $@$$$$@@@@@@@$$$$$$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$$@$ x+++ + ==x· +@$$$$$x o%@@@@$$$$$$$$$$$$$o x%@@@@$$$$$$$$$$@+ ·x== + == @$$$$@% o%@@@@$$$$$$$@* x%@@@@$$$$$$$@ == + == $$$$$$$o o%@$$$$$$$$~ x%@$$$$$$$ == + == ·@$$$$$$@@$+ $$$$$$$$@@%+ $$$$$$@· == + == ·@$$$$$$@@@@* $$$$$$$$@@@$* $$$$$$@· == + == ·@$$$$$@* x@$$$$$$$@* x@$$$$$$@· == + == ·@$$$$@% o%@@@$$$$$$$@* x%@@@$$$$$$$@· == + == ·@$$$$$$ o%@@@@$$$$$$$$$$$$ x%@@@@$$$$$$$$$$@· == + == ·@$$$$$$@@%$@@@@$$$$$$$$$$$$$$$$@@%$@@@@$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$@@$$$$$$$$$$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == =@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@* == + +++x $@@@@@$$@@@@@*x~o+%@@@@@$$@@@@@%+o~o=$@@@@$$$@@@@$· x+++ + **~· ~=%$$$%=o +*$$$$*+ o=%$$$%=~ ** + xx**o~ ~·**xx + ox**+* ++****=*+x x+*=****++ *+**xx + ++==*%%%%%**== x++=*%%%%%%*=++x ++**%%%%%*==++ + + + diff --git a/src/build/framegen/frames/frame_117.txt b/src/build/framegen/frames/frame_117.txt new file mode 100644 index 000000000..591cfaea9 --- /dev/null +++ b/src/build/framegen/frames/frame_117.txt @@ -0,0 +1,41 @@ + + + + ++++====********====++++ + ++==**=**%**++++++++**%**=**==++ + ++=*=*=* *=*=*=++ + x+====+= =+====+x + ++===+ ·+%$@@@@@@@@@@@@@@$%+· +===++ + x+==++ x%@@@@@$$$$$$$$$$$$$$$$@@@@@%x ++==+x + ox==++ +@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@+ ++==xx + ==++ %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ++== + ++== $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ ==++ + ==+x +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ x+== + ++== %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ==++ + ++++ %@$$$$$@@@$$$$$$$$$$$$$$$$$$$$$@@@$$$$$$$$$$$$$$$$@% ++++ + ==+· x@$$$$@@%=*@@@@@$$$$$$$$$$$$$$@@%**@@@@$$$$$$$$$$$$$@x ·+== + == @$$$$$% +$@@@@$$$$$$$$$$% +$@@@@$$$$$$$$$@ == + == $$$$$@* o*@@@$$$$$$@+ o*@@@$$$$$$$ == + == ·@$$$$$@%· x$$$$$$$@* x$$$$$$@· == + == ·@$$$$$$@@@@* *@$$$$$$@@@@= %@$$$$@· == + == ·@$$$$$@$o ~$$$$$$$@%~ o$$$$$$@· == + == ·@$$$$@* ·=$@@$$$$$$@= ·=$@@$$$$$$@· == + == ·@$$$$$% o%@@@@@$$$$$$$$$* x%@@@@$$$$$$$$$@· == + == ·@$$$$$@@*+=$@@@@$$$$$$$$$$$$$$@@*+=$@@@@$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@$$$$$$$$$$$$$$$$$$$$$@@@$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == %@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@% == + +++o o@@@@$$$$$@@@@%*+=*$@@@$$$$$$@@@$*=+=%@@@@$$$$$@@@@x o+++ + ** +%@@@@@%+ o*$@@@@$*o +%@@@@@%+ **xo + x+** **++ + x+**++ ox****== ==****xo =+**++ + +=**%%%%%%%*==++ ++==*%%%%%%*==++ x+==*%%%%%%%**++ + + + diff --git a/src/build/framegen/frames/frame_118.txt b/src/build/framegen/frames/frame_118.txt new file mode 100644 index 000000000..436dfbe12 --- /dev/null +++ b/src/build/framegen/frames/frame_118.txt @@ -0,0 +1,41 @@ + + + + x+++++========++++++ + ++==*****%%%********%%%*****==++ + ++==**=*=+ ++*=**==++ + ++**+= =+**++ + xx====ox ~=%$@@@@@@@@@@@@$%=~ xo====xx + x+===+ ·=@@@@@@$$$$$$$$$$$$$$@@@@@@=· +===+x + ===+ ~%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%~ +=== + ++== =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ==++ + x+== =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ==+x + ==+x ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ x+== + xx== =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xx + ++++ =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ++++ + ==+· ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ·+== + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == $$$$$$@@@@@@@@@@@@@@@@@$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$$ == + == ·@$$$$@$+xxxxxxxxxxxxxx=$@$$$@$+xxxxxxxxxxxxxx+%@$$$$$@· == + == ·@$$$@o x$$$x @$$$$@· == + == ·@$$$@~ o@$@~ @$$$$@· == + == ·@$$$$@%o··············o%@$$$@%o··············~*@$$$$$@· == + == ·@$$$$$@@@@@@@@@@@@@@@@@@$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$@@ == + ==+~ %@@@$$$$$$$$@@@$$$@@@@$$$$$$$$@@@@$$$@@@$$$$$$$$@@@% ·+== + xx== +$@@@@@@@$+ ~*@@@@@@@@*~ +$@@@@@@@$+ ==xx + ++=+ +=++ + ++**oo ==$%++ ++%%== oo==++ + x+==*%**====****++++++*%**====**%*++++++**=*====*=%*==++ + ++++++ ++++++++ ++++++ + + diff --git a/src/build/framegen/frames/frame_119.txt b/src/build/framegen/frames/frame_119.txt new file mode 100644 index 000000000..a334097c4 --- /dev/null +++ b/src/build/framegen/frames/frame_119.txt @@ -0,0 +1,41 @@ + + + + ++++++====++++++ + xx++*******%*%%**%%*%*******++xx + xx+=****== ==****=+xx + ++**+*x x*+**++ + ====x+ x*%$@@@@@@@@@@$%*x +x==== + ==== +$@@@@@@$$$$$$$$$$$$@@@@@@$+ ==== + ==++ *@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@* ++== + ++== +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ==++ + xx==x· +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ·o==xx + ==++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++== + ox== +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + ++++ +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ++++ + ==+· @$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$$$@ ·+== + == @$$$$$$$@@@@$%==**$@@@@$$$$$$$$@@@@@%*==*%@@@@$$$$$$$@ == + == @$$$$$@@= =@@$$$$$@%o o$@$$$$$@ == + == ·@$$$$@* + *$$$$@ xo o@$$$$@· == + == ·@$$$$* ·x * $$$@ * = =@$$$@· == + == ·@$$$@x @ * x $$$$ x+ % * +@$$$@· == + == ·@$$$$$ + *$$$@ x o@$$$$@· == + == ·@$$$$@$ ·· o+=$@@$$$$@x ~ ·++%@@$$$$$@· == + == ·@$$$$$$@@= =@@@$$$$$$$@@*o @@@$$$$$$$@· == + == ·@$$$$$$$$@@@@@@@@@@@$$$$$$$$$$$$@@@@@@@@@@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· $@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·x== + xx== *@@@@@@@@@%o =@@@@@@@@@@= o%@@@@@@@@@%· +++x + ==++ ·~· ~~ ·~· x+== + ==++ x+%% %%+x ++== + ++**=*++xox+==%*==++===%==xoox==%===++==*%==+xoo++*=**++ + +++++===++ +++==+++ +++===++++ + + diff --git a/src/build/framegen/frames/frame_120.txt b/src/build/framegen/frames/frame_120.txt new file mode 100644 index 000000000..8bd15cf1d --- /dev/null +++ b/src/build/framegen/frames/frame_120.txt @@ -0,0 +1,41 @@ + + + + x++++++++++++++x + ++==*****%%%%%%%%%%*****==++ + ++**=*=* *=*=**++ + xx**=*++ ++*=**++ + ++**x+ ~+*$$@@@@@@@@$$*+~ +x**++ + ==== o%@@@@@@@$$$$$$$$$$@@@@@@@%o ==== + ++== =@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@= ==++ + ++== o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o ==++ + ox==x· x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ·x==xo + ++++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++++ + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + ++++ x@$$$$$$$$@@@@@@@@@$$$$$$$$$$$$$$@@@@@@@@@@$$$$$$$@x ++++ + ==+~ @$$$$$$@@@*x· ·x*$@@$$$$$$$$@@@%=~ o=%@@@$$$$$@ ~+== + == $$$$$$@@+ x@@$$$$$@* $@$$$$$$ == + == @$$$$@% ~~o=$x $$$$$@ ·~~x%= +@$$$$@ == + == ·@$$$$$ % = @$$@ =· %$$$$@· == + == ·@$$$@x @ o *x $$$$ ~+ x @ o@$$$@· == + == ·@$$$@+ $ x · @$$$ ·+ + ~ *$$$$@· == + == ·@$$$$$ * $$$$@~ x· +@$$$$@· == + == ·@$$$$$$ ·o%*xxx=$@$$$$$@~ ~=%+ox+%@@$$$$$@· == + == ·@$$$$$$@= x@@@$$$$$$$@$· @@@$$$$$$$@· == + == ·@$$$$$$$@@@$=x~··~x%$$$$$$$$$$$@@@$*+o··~o*$$$$$$$$$$@· == + == ·@$$$$$$$$$$@@@@@@@@@$$$$$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == o@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@x == + ++++ =@@@@@@@@@@@*o ·+$@@@@@@@@@@$+· o*@@@@@@@@@@@* ++++ + **+~ ~+=*=+o ·x=**=x· o+=*=+~ ·+** + **xx ++ ++ o+**xx + ====++ *=**==**+= =+**==**+= ++==== + +==**%*==+++ ++=******=++ +++=**%%*=== + + diff --git a/src/build/framegen/frames/frame_121.txt b/src/build/framegen/frames/frame_121.txt new file mode 100644 index 000000000..ad287b628 --- /dev/null +++ b/src/build/framegen/frames/frame_121.txt @@ -0,0 +1,41 @@ + + + + ++++++++++++ + ++++****%%%%%%%%%%%%****++++ + ++***%*%x~ ~x%*%***++ + x+**==++ ++==**++ + ++**++ ·x*%$$@@@@@@$$%*x· ++**++ + ++==~ o*@@@@@@@@$$$$$$$$@@@@@@@@*o ~==++ + ++== =@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@= ==++ + ++== ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ ==++ + ==x· o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ·x== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + x+++ o@$$$$$$$@@@@@@@@@@@$$$$$$$$$$$$@@@@@@@@@@@$$$$$$$@o ++xx + ==x~ @$$$$$$@@%x o*@@$$$$$$$$@@$=~ ~=$@@$$$$$@ ~x== + == $$$$$$@$· $@$$$$$@+ *@$$$$$$ == + == @$$$$@* ·~·~x$o %$$$$@ o··o%= ~@$$$$@ == + == ·@$$$$$ * = @$$@ % o *@$$$@· == + == ·@$$$@x @ * *+ $$$$ oo * @ o@$$$@· == + == ·@$$$@+ % @$$$ * %$$$$@· == + == ·@$$$$@ + @$$$@x ~o *@$$$$@· == + == ·@$$$$$@ ·x==x=*%@@$$$$$@x o+=x+=%$@@$$$$$@· == + == ·@$$$$$$@%· x@@$$$$$$$$@@x @@$$$$$$$$@· == + == ·@$$$$$$$@@@@%=++++*$$$$$$$$$$$$$@@@$*=+++=%$$$$$$$$$$@· == + == ·@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == =@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@* == + +++x $@@@@$$$@@@@@=x~o+%@@@@@$$@@@@@%+o~x=@@@@@$$$@@@@$ x+++ + **~· ~=%$$$%=o x*$$$$*x o=%$$$%=~ ** + xx**o~ ~~**xx + xx**+= ++******+x x+******++ *+**xx + ++==*%%%%%%*=+ xx==*%%%%%%*=+xx +=*%%%%%%*==++ + + diff --git a/src/build/framegen/frames/frame_122.txt b/src/build/framegen/frames/frame_122.txt new file mode 100644 index 000000000..538806586 --- /dev/null +++ b/src/build/framegen/frames/frame_122.txt @@ -0,0 +1,41 @@ + + + + x++++++x + ++==***%%%%%%%%%%***==++ + x+==**=*+o o+*=**==+x + ==**++ ++**== + ++**++ x=%$$@@@@@@$$%=x ++**++ + ++**oo ~=@@@@@@@@$$$$$$$$@@@@@@@@=~ oo**++ + ++== +$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ ==++ + ++=* ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ *=++ + ==x~ o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o ~+== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ == + ++++ o@$$$$$$$@@@@@@@@@@@$$$$$$$$$$$$@@@@@@@@@@@$$$$$$$@o +++x + ++x~ @$$$$$$@@%x o*@@$$$$$$$$@@$=· ·=$@@$$$$$@ ~x++ + == $$$$$$@$ $@$$$$$@x =@$$$$$$ == + == @$$$$@= ~· o%~ *$$$$$ ~ ·*+ @$$$$@ == + == ·@$$$$% = * @$$@ $ + =@$$$@· == + == ·@$$$@o @ ~$ *+ $$$$ xo @ @ x@$$$@· == + == ·@$$$@= = @$$@ % $$$$$@· == + == ·@$$$$@ ~· x@$$$@= x · $@$$$$@· == + == ·@$$$$$@x *@@@@$$$$$@% o$@@@$$$$$$@· == + == ·@$$$$$$@@= x@$$$$$$$$$@@%o @$$$$$$$$$@· == + == ·@$$$$$$$$@@@@@$$$$@@$$$$$$$$$$$$@@@@@@$$$@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$$$$$$$@@$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$· == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == $@$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@@ == + +++o =@@@$$$$$$$@@@@%**$@@@@$$$$$$@@@@$**%@@@@$$$$$$$@@@= ~+++ + ox== ~*@@@@@@@*o +$@@@@@@$+ o*@@@@@@@*~ ==xo + ++== ==++ + ++**++ =*%%== ==%%*= +x**++ + +=***%%%%*%=**+x ++***%%%%%%***++ x+**=%*%%%%***=+ + xxxx xxxx xxxx + diff --git a/src/build/framegen/frames/frame_123.txt b/src/build/framegen/frames/frame_123.txt new file mode 100644 index 000000000..db5c78f45 --- /dev/null +++ b/src/build/framegen/frames/frame_123.txt @@ -0,0 +1,41 @@ + + + + ++++ + ++==***%*%%%%%%*%***==++ + xx==***%+x x+%***==xx + ==**++ ++**== + ++**++ o=*%$$@@@@$$%*=o ++**++ + ++**oo ·=$@@@@@@@$$$$$$$$@@@@@@@$=· oo**++ + ++== +$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ ==++ + x+=* ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· *=xx + ==+~ ~@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@~ ~+== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ == + xx++ ~@$$$$$$$@@@@@@@@@@@$$$$$$$$$$$$@@@@@@@@@@@@$$$$$$@o ++xx + +++~ @$$$$$@@@*o ~*@@@$$$$$$$@@%x +%@@$$$$$@ ~+++ + == $$$$$$@% %@$$$$@@o +@$$$$$$ == + == @$$$$@+ o ~*~ =@$$$$ ·~ =+ @$$$$@ == + == ·$$$$$% ·= * @$$@ $ + =@$$$$· == + == ·@$$$@o @ ~@ *x $$$$ x~ @ @ x@$$$@· == + == ·@$$$@* +~ ·@$$@ % $$$$$@· == + == ·@$$$$@ ~ · =@$$$$* x o ~@@$$$$@· == + == ·@$$$$$@+ *@@@@$$$$$@$ ~@@@@$$$$$$@· == + == ·@$$$$$$@@%o +$$$$$$$$$$@@$+ $$$$$$$$$$@· == + == ·@$$$$$$$$@@@@@@@@@@@$$$$$$$$$$$$$@@@@@@@@@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+~ %@@$$$$$$$$$@@@@$$@@@@$$$$$$$$@@@@$$@@@@$$$$$$$$$@@% ·+== + xx== +$@@@@@@@@= o%@@@@@@@@%o =@@@@@@@@$+ ==+x + ++=+ +=++ + ++*=o +=%$++ ++$%=+ o==++ + x+==**=*===*%***++xx++*%*%====%*%*++xx++***%*===***===xx + ++++++xx ++++++++ xx++++++ + diff --git a/src/build/framegen/frames/frame_124.txt b/src/build/framegen/frames/frame_124.txt new file mode 100644 index 000000000..d7a2e4e1a --- /dev/null +++ b/src/build/framegen/frames/frame_124.txt @@ -0,0 +1,41 @@ + + + + + ++++***%%$%%%%$%%***++++ + ++***%+x x+%***++ + ++**++ ++**++ + x+**++ o=*%$$@@@@$$%*=o ++**+x + ++**oo ·=$@@@@@@@$$$$$$$$@@@@@@@$=· oo**++ + ++** +$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ **++ + x+** ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· **xx + ==+~ ~@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@~ ~+== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ == + xx++ ~@$$$$$$$@@@@@@@@@@@@$$$$$$$$$$$@@@@@@@@@@@@$$$$$$@~ ++xx + +++~ @$$$$$@@$= +$@@$$$$$$$@@*o o*@@$$$$$@ ~+++ + == $$$$$$@* *@$$$$@@· x@$$$$$$ == + == @$$$$@o o = +@$$$% o· xx @$$$$@ == + == ·$$$$$% ~+ * @$$@ $ * +@$$$$· == + == ·@$$$@o @ o@ *x $$$$ x~ @ @ x@$$$@· == + == ·@$$$@* xo o@$$@ $ $$$$$@· == + == ·@$$$$@~ ~ ~o *@$$$$% o + x@$$$$$@· == + == ·@$$$$$@= *@@@@$$$$$@$ ~@@@@$$$$$$@· == + == ·@$$$$$$@@$x +$$$$$$$$$$$@@=· $$$$$$$$$$@· == + == ·@$$$$$$$$@@@@@@@@@@@$$$$$$$$$$$$$@@@@@@@@@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· @@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·+== + x+++ ~%@@@@@@@@@$x =@@@@@@@@@@= x$@@@@@@@@@%~ ++++ + ===x ~~~ ·~~· ~~~ x+== + ===+ x+%% %%+x +=== + ++**=%+x··~o==*===++***%=+~··~+=%***++===*==o~··x+%=**++ + ++=====+++ xx++=====+xx +=======++ + diff --git a/src/build/framegen/frames/frame_125.txt b/src/build/framegen/frames/frame_125.txt new file mode 100644 index 000000000..4a14a3f48 --- /dev/null +++ b/src/build/framegen/frames/frame_125.txt @@ -0,0 +1,41 @@ + + + + + ++==***%%%%%%%%%%***==++ + +=***%+o o+%***=+ + +=**++ ++**=+ + xx**++ o=%%$$@@@@$$%%=o ++**xx + x+**oo ~=$@@@@@@@$$$$$$$$@@@@@@@$=~ oo**+x + ++** +$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ **++ + xx** ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· **xx + ==+~ ~@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@~ ~+== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ == + xx++ o@$$$$$$@@@@@@@@@@@@@$$$$$$$$$$$@@@@@@@@@@@@$$$$$$@o ++xx + +++~ @$$$$$@@$+ x%@@$$$$$$$@@*· ~*@@$$$$$@ ~+++ + == $$$$$$@* *@$$$$@$ ~@$$$$$$ == + == @$$$$@o o + x@$$$% x o~ @$$$$@ == + == ·$$$$@* ox * $$$@ $ * +@$$$$· == + == ·@$$$@o @ o@ *o $$$$ x~ @ @ x@$$$@· == + == ·@$$$@* ox o@$$@ $ $$$$$@· == + == ·@$$$$@o ~ ox %@$$$$% ~ = +@$$$$$@· == + == ·@$$$$$@* =@@@@$$$$$@@· ·@@@@$$$$$$@· == + == ·@$$$$$$@@$+ +$$$$$$$$$$$@@*o $$$$$$$$$$@· == + == ·@$$$$$$$$$@@@@@@@@@@$$$$$$$$$$$$$@@@@@@@@@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x ·@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@~ == + ++++ x@@@@@@@@@@@= o%@@@@@@@@@@%o =@@@@@@@@@@@x ++xx + ==+o ~x+xo ·x++x· ox+xo o+== + **++ == =* x+** + +=**==o· ++*=**==**=*+o o+*=**==**=*+x ·o=+**=+ + ++==****++++ ++==****==++ ++++****==++ + diff --git a/src/build/framegen/frames/frame_126.txt b/src/build/framegen/frames/frame_126.txt new file mode 100644 index 000000000..4ed857cd9 --- /dev/null +++ b/src/build/framegen/frames/frame_126.txt @@ -0,0 +1,41 @@ + + + + + ++==**%%%%%%%%%%%%**==++ + +=***%+o o+%***=+ + +=**++ ++**=+ + xx**++ ·x=%$$@@@@@@$$%=x· ++**xx + x+**~ ~*@@@@@@@@$$$$$$$$@@@@@@@@*~ ~**+x + ++** +@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@+ **++ + xx** ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ **xx + ==x· o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ·x== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + xx++ o@$$$$$$@@@@@@@@@@@@@$$$$$$$$$$$@@@@@@@@@@@@$$$$$$@o ++xx + ++x~ @$$$$$@@%o ~*@@$$$$$$@@$+ =@@$$$$$@ ~x++ + == $$$$$$@= =@$$$$@$ @$$$$$$ == + == @$$$$@· o o o@$$$* x @$$$$@ == + == ·@$$$@* xo * $$$@ % % +@$$$@· == + == ·@$$$@o @ o@ =o $$$$ x~ @ @ +@$$$@· == + == ·@$$$$% ·+ x@$$@ $ @$$$$@· == + == ·@$$$$@x ~ x+ ~$@$$$$$ ·* =@$$$$$@· == + == ·@$$$$$@% =@@@@$$$$$@@o @@@@$$$$$$@· == + == ·@$$$$$$@@@*~ =$$$$$$$$$$$@@%x ·$$$$$$$$$$@· == + == ·@$$$$$$$$$@@@@@@@@@@$$$$$$$$$$$$$@@@@@@@@@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@x == + ++++ =@@@@@@@@@@@%o ~+@@@@@@@@@@@@+~ o%@@@@@@@@@@@* ++++ + **x~ ~+***=o ·x=**=x· o=***+o ·x** + **+x ++ ++ ox**oo + ====++ *=**==**+= =+**==**=* ++==== + ++=**%%**=++ ++=**%%**=++ ++=**%%*==++xx + diff --git a/src/build/framegen/frames/frame_127.txt b/src/build/framegen/frames/frame_127.txt new file mode 100644 index 000000000..a6d93b3ea --- /dev/null +++ b/src/build/framegen/frames/frame_127.txt @@ -0,0 +1,41 @@ + + + + + +++=*%%%%%%%%%%%%%%*=+++ + +=*%=*x· ·x*=%*=+ + ++**++ ++**++ + x+**++ ~+*%$@@@@@@@@$%*+~ ++**+x + ++** o*@@@@@@@$$$$$$$$$$@@@@@@@*o **++ + xx** =@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@= **xx + xx** o$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$o **xx + =*x· o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ·x*= + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + =* o@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + xx++ x@$$$$$$@@@@@@@@@@@@@$$$$$$$$$$@@@@@@@@@@@@@$$$$$$@x ++xx + +++~ @$$$$$@@*~ *@@$$$$$$@@$x x$@$$$$$@ ~+++ + == $$$$$$@+ +@$$$$@% @$$$$$$ == + == @$$$$@ ·~ ~ ~@$$@* + $$$$$@ == + == ·@$$$@= +~ * $$$@ % $ x@$$$@· == + == ·@$$$@o @ o@ =~ $$$$ xo @ $ +@$$$@· == + == ·@$$$$% + +@$$@ % @$$$$@· == + == ·@$$$$@+ += o$@$$$$$ ~%~ ·*@$$$$$@· == + == ·@$$$$$@$ =@@@$$$$$$$@x @@@@$$$$$$@· == + == ·@$$$$$$$@@%x =$$$$$$$$$$$@@$+· ~$$$$$$$$$$@· == + == ·@$$$$$$$$$@@@@@@@@@@$$$$$$$$$$$$$@@@@@@@@@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@+ == + ++++ *@@@@@@@@@@@$+~ ·o*@@@@@@@@@@@@*o ~+$@@@@@@@@@@@% ++++ + **x· x*%%%*+ o=%%%%=o +*%%%*x ·o** + ox**xo xx xx ~o**xx + ===*+x *+****==++ ++==****+* o+*=** + ++==**%%%**=++ ++=*%%%%*=++ ++==*%%%%*==++ + diff --git a/src/build/framegen/frames/frame_128.txt b/src/build/framegen/frames/frame_128.txt new file mode 100644 index 000000000..7efbabf4e --- /dev/null +++ b/src/build/framegen/frames/frame_128.txt @@ -0,0 +1,41 @@ + + + + ++++ + ++=**%*%%%%%%%%%%*%**=++ + x+==*%=* *=%*==+x + ===*++ ++*=== + x+**++ o=%$@@@@@@@@@@$%=o ++**+x + ++** x%@@@@@@$$$$$$$$$$$$@@@@@@%x **++ + ++== *@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@* ==++ + x+** x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x **+x + **x· +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ·x** + ++++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++++ + =* x@$$$$$$$$$$@@@$$$$$$$$$$$$$$$$$$$$@@@@$$$$$$$$$@x *= + xx++ +@$$$$$$@@@@$$$$$@@@@$$$$$$$$$$@@@@@$$$$@@@@@$$$$$@+ ++xx + +++~ @$$$$$@@= +@@$$$$$$@@%~ ~%@$$$$$@ ~+++ + == @$$$$$@o ~~ o@$$$$@* ~~ $@$$$$@ == + == @$$$$@ o~ ·@$$@= x $$$$$@ == + == ·@$$$@= * *~ $$$@ % @ x@$$$@· == + == ·@$$$@o @ ~@ + $$$$ xo @ % =@$$$@· == + == ·@$$$$% * =@$$@ % @$$$$@· == + == ·@$$$$@= **· +@@$$$$@ o%o o%@$$$$$@· == + == ·@$$$$$@@~ =@@@$$$$$$$@+ @@@@$$$$$$@· == + == ·@$$$$$$$@@$+~ *$$$$$$$$$$$@@@*o x$$$$$$$$$$@· == + == ·@$$$$$$$$$@@@@@@@@@@$$$$$$$$$$$$$$@@@@@@@@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == =@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@* == + +++x $@@@@@$@@@@@@=o~o+%@@@@@@@@@@@@%xo~o=@@@@@@$@@@@@$ x+++ + **o· ~=%$$$%=~ x*$$$$*x ~=%$$$%=~ ** + x+**o~ ~~**xx + xx**+= ++****=*+x xx*=****++ ==**+x + ++==*%%%%%**=+ ++++*%%%%%%*++++ ==**%%%%%*==++ + diff --git a/src/build/framegen/frames/frame_129.txt b/src/build/framegen/frames/frame_129.txt new file mode 100644 index 000000000..837a8bd57 --- /dev/null +++ b/src/build/framegen/frames/frame_129.txt @@ -0,0 +1,41 @@ + + + + x++++++x + +==**%%%%%****%%%%%**==+ + ++===*+= =+*===++ + ===* *=== + x+**x+ ·+*$@@@@@@@@@@@@$*+· +x**++ + ++== +$@@@@@@$$$$$$$$$$$$@@@@@@$+ =*++ + ++== ·%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%· =*++ + ++== =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ==++ + **o· =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ·o** + ++++ ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· ++++ + =* +@$$$$$$$$$@@@@@$$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$@+ *= + x+++ =@$$$$$$@@@@$%%%$$@@@$$$$$$$$$$@@@@$%%%%$@@@@$$$$$@= +++x + +++· ·@$$$$$@$x o$@$$$$$$@@* *@@$$$$@· ·+++ + == @$$$$$@· ~xx ·@$$$$@= ·ox~ $@$$$$@ == + == @$$$$@ +· ~ @$$@+ x $$$$$@ == + == ·@$$$@+ * *~ $$$@ * @ x@$$$@· == + == ·@$$$@x @ ·$ x @$$$ ox $ = =@$$$@· == + == ·@$$$$$ * *$$$@ * ~@$$$$@· == + == ·@$$$$@* ·*%~ ~*@@$$$$@ +%x· +$@$$$$$@· == + == ·@$$$$$@@x +@@@$$$$$$$@* @@@$$$$$$$@· == + == ·@$$$$$$$@@@*x· ~*$$$$$$$$$$$@@@%+~ +$$$$$$$$$$@· == + == ·@$$$$$$$$$$@@@@@@@@@$$$$$$$$$$$$$$@@@@@@@@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@* == + +++x ·$@@@@$$$@@@@@*xoo+$@@@@@$$@@@@@$+oox*@@@@@$$$@@@@@~ x+++ + ** ~=%$$$$*o +%$$$$%+ o*$$$$%*o ** + xx**~~ **++ + ++**+= ++==**==x~ ~x==**==++ =+**+x + ++==*%%%%%%*== x+==*%%%%%%*==+x ==**%%%%%*==++ + diff --git a/src/build/framegen/frames/frame_130.txt b/src/build/framegen/frames/frame_130.txt new file mode 100644 index 000000000..cf834c5fd --- /dev/null +++ b/src/build/framegen/frames/frame_130.txt @@ -0,0 +1,41 @@ + + + + ++++++++++++ + ++++***%%%==++++==%%%***++++ + ++**=*+o o+*=**++ + x+**== ==**+x + ++** x*$@@@@@@@@@@@@@@$*x **++ + ++*+ o%@@@@@@$$$$$$$$$$$$$$@@@@@@%o +*++ + ++=+ x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$x +=++ + ++== %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ==++ + ** %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ** + +++x x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x x+++ + == *@$$$$$$$$@@@@@@@$$$$$$$$$$$$$$$$@@@@@@@@$$$$$$$@* == + xx++ *@$$$$$@@@@$*+++=%@@@@$$$$$$$$$@@@$*=++=%$@@@$$$$$@* ++xx + ==+· o@$$$$$@%· %@$$$$$$@@x +@@$$$$@o ·+== + == @$$$$$@ ·o+=o @$$$$@x ~x=x *@$$$$@ == + == $$$$$@ * x @$$@o oo %$$$$$ == + == ·@$$$@+ $ *x $$$$ = @ o@$$$@· == + == ·@$$$@x @ * ~ @$$$ ~+ * x *@$$$@· == + == ·@$$$$$ * $$$$@ + x@$$$$@· == + == ·@$$$$@$ o**xoo+%@@$$$$@· ~=%+oox*@@$$$$$@· == + == ·@$$$$$@@= x@@@$$$$$$$@$~ @@@$$$$$$$@· == + == ·@$$$$$$$@@@$=xo~~o+%$$$$$$$$$$$@@@@*+o~~ox*$$$$$$$$$$@· == + == ·@$$$$$$$$$$@@@@@@@@@$$$$$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@% == + +++x ~@@@@@$$$@@@@@%+xx=$@@@@$$$$@@@@$=xo+*@@@@@$$$@@@@@o x+++ + ** o*$$@$$%x ·=%$@@$%=· x%$@@$$*x ** + x+** **+x + xx**+= xx****== ==****xx =+**++ + ++==*%%%%***++xx ++==*%*%%*%*==++ xx++*%*%%%%*==++ + diff --git a/src/build/framegen/frames/frame_131.txt b/src/build/framegen/frames/frame_131.txt new file mode 100644 index 000000000..9b79db387 --- /dev/null +++ b/src/build/framegen/frames/frame_131.txt @@ -0,0 +1,41 @@ + + + + ++++++++++++ + ++==*%*%==++xxxx++==%*%*==++ + ++**=* *=**++ + ++**+= =+**++ + ++== o=%@@@@@@@@@@@@@@@@%=o ==++ + ===+ +$@@@@@$$$$$$$$$$$$$$$$@@@@@$+ +=== + ++=+ =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= +=++ + ++=+ $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ +=++ + ** $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ ** + +++o =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= o+++ + == $@$$$$$$$@@@@@@@@@$$$$$$$$$$$$$$$@@@@@@@@$$$$$$$@$ == + x+++ %@$$$$$@@@$*xo~ox=$@@@$$$$$$$$@@@@%+o~ox+%@@@$$$$$@% ++++ + ==+· x@$$$$@@* =@$$$$$$@$~ o@@$$$$@x ·+== + == @$$$$$$ ·o+%o $$$$$@~ ·~x*+ =@$$$$@ == + == $$$$$$ * + @$$@· +~ %$$$$$ == + == ·@$$$@x @ ~ *x $$$$ ~+ o @ o@$$$@· == + == ·@$$$@+ $ x @$$$ ·= x · *@$$$@· == + == ·@$$$$$ = $$$$@~ o~ =@$$$$@· == + == ·@$$$$$$ o==o++*$@$$$$$@o ~+*xx+=%@@$$$$$@· == + == ·@$$$$$$@%· x@@$$$$$$$$@@o @@@$$$$$$$@· == + == ·@$$$$$$$@@@@%=+xx+*$$$$$$$$$$$$$@@@$*+xx+=%$$$$$$$$$$@· == + == ·@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@% == + +++x ~@@@@@$$$$@@@@%+xx=$@@@@$$$$@@@@$=xx+%@@@@$$$$@@@@@o x+++ + ** x*$$@@$%x ~=%$@@$%=~ x%$@@@$%x ** + x+** **+x + ++**+= xx****== ==****xx =+**++ + ++==*%%%%*%*=+++ ++==*%*%%*%*==++ x++=***%%%%**=++ + diff --git a/src/build/framegen/frames/frame_132.txt b/src/build/framegen/frames/frame_132.txt new file mode 100644 index 000000000..fbcdcfb5c --- /dev/null +++ b/src/build/framegen/frames/frame_132.txt @@ -0,0 +1,41 @@ + + + + ++++===***==++++ + ==***%==xo ox==%***== + ===*++ ++*=== + ++**++ ·oxx++xxo· ++**++ + ===+ o=$@@@@@@@@@@@@@@@@@@$=o +=== + **++ o%@@@@@$$$$$$$$$$$$$$$$$$@@@@@%o ++** + ==+x ~$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$~ x+== + ++=+ x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x ++++ + xx== o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ==xx + ==x~ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ~x== + ox== @@$$$$$$$@@@@@@@@@@$$$$$$$$$$$$$@@@@@@@@@@$$$$$$@@ ==xo + +++x @$$$$$$@@$*o ~=$@@$$$$$$$$@@@%x ·x%@@@$$$$$@ x+++ + ==x =$$$$$@@o ~@@$$$$$@* %@$$$$$= +== + == @$$$$@* ·~~+%o %$$$$@ ··~x%= o@$$$$@ == + == $$$$$$ * = @$$@ % ~ *@$$$$ == + == ~@$$$@x @ * *+ $$$$ oo * @ o@$$$@~ == + == ·@$$$@= * @$$$ * %$$$$@· == + == ·@$$$$@ x ~@$$$@+ x %@$$$$@· == + == ·@$$$$$@~ oo·=%$@@$$$$$@= ~o·x%$@@@$$$$$@· == + == ·@$$$$$$@@+ x@$$$$$$$$$@@*· @@$$$$$$$$@· == + == ·@$$$$$$$$@@@@$%%%%@@$$$$$$$$$$$$@@@@@$%%%$@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == %@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@% == + +++x ~@@@@@$$$$@@@@%+xx=$@@@@$$$$@@@@$=xx+%@@@@$$$$@@@@@o o+++ + ** x*$@@@$%x ~=%$@@$%=~ x%$@@@$%x ** + x+** **+x + ++**+= x+****== ==****+x =+**++ + ++==*%%%%*%*==++ ++==*%*%%%%*==++ xx==*%*%%%%**=++ + diff --git a/src/build/framegen/frames/frame_133.txt b/src/build/framegen/frames/frame_133.txt new file mode 100644 index 000000000..8aee11d54 --- /dev/null +++ b/src/build/framegen/frames/frame_133.txt @@ -0,0 +1,41 @@ + + + + ++++==**%%%%***=++++ + ++==*%**+x x+**%*==++ + ++**=* *=**++ + ==== ox=******=xo ==== + **++ ·=$@@@@@@@@@@@@@@@@@@@@$=· ++** + **+o =@@@@@$$$$$$$$$$$$$$$$$$$$@@@@@= o+** + **+~ +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ~x** + +++x *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* x+++ + xx== +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ==xx + ==x· @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ·x== + ox== @$$$$$$$@@@@@@@@@@@$$$$$$$$$$$$@@@@@@@@@@@@$$$$$$@ ==xo + +++o @$$$$$@@@%x o*@@@$$$$$$$@@$+· ·=$@@$$$$$@ o+++ + == %$$$$$@$ $@$$$$$@x =@$$$$$% == + == @$$$$@+ ~~ ~%~ *@$$$$ ~ ·== @$$$$@ == + == $$$$$% = * @$$@ % + =@$$$$ == + == ~@$$$@o @ ~@ *x $$$$ xo @ @ x@$$$@~ == + == ·@$$$@= =· @$$@ % $$$$$@· == + == ·@$$$$@ ·~ +@$$$$= o ~ $@$$$$@· == + == ·@$$$$$@x *@@@@$$$$$@% o@@@@$$$$$$@· == + == ·@$$$$$$@@*~ +@$$$$$$$$$@@$x @$$$$$$$$$@· == + == ·@$$$$$$$$@@@@@@@@@@@$$$$$$$$$$$$@@@@@@@@@@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@% == + +++x ~@@@@@$$$@@@@@%+xx=$@@@@$$$$@@@@$=xx+%@@@@$$$$@@@@@o x+++ + ** o*$$@@$%x ·=%$@@$%=· x%$@@$$*x ** + x+** **+x + ++**+= xx****== ==****xx =+**++ + ++==*%%%%*%*=+xx ++==*%%%%%%*==++ xx+=*%*%%%%**=++ + diff --git a/src/build/framegen/frames/frame_134.txt b/src/build/framegen/frames/frame_134.txt new file mode 100644 index 000000000..778a14e19 --- /dev/null +++ b/src/build/framegen/frames/frame_134.txt @@ -0,0 +1,41 @@ + + + + ++++=**%%%%%%%%%%**=++++ + +=***%+x x+%***=+ + ++**+= =+**++ + ox**+= o=*%$@@@@@@$%*=o ++**xo + ++**oo ·=$@@@@@@@$$$$$$$$@@@@@@@$=· oo**+x + x+** x$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$x **+x + ox** ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· **xo + ==+~ ~@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@~ ~+== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· == + xx++ ~@$$$$$$@@@@@@@@@@@@@$$$$$$$$$$$@@@@@@@@@@@@$$$$$$@~ ++xx + +++~ @$$$$$@@$x o%@@$$$$$$$@$= =@@$$$$$@ ~+++ + == $$$$$$@= =@$$$$@$ ~@$$$$$$ == + == @$$$$@~ o x x@$$@% x ~· @$$$$@ == + == ·$$$$@* xo * $$$@ $ % +@$$$$· == + == ·@$$$@o @ o@ =o $$$$ x~ @· @ +@$$$@· == + == ·@$$$@% ~x x@$$@ $ @$$$$@· == + == ·@$$$$@x · xx ·%@$$$$% ~ = =@$$$$$@· == + == ·@$$$$$@% *@@@@$$$$$@@~ @@@@$$$$$$@· == + == ·@$$$$$$@@$=· +$$$$$$$$$$$@@%o $$$$$$$$$$@· == + == ·@$$$$$$$$$@@@@@@@@@@$$$$$$$$$$$$$@@@@@@@@@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@* == + +++x ·$@@@@$$$@@@@@*xox=$@@@@$$$$@@@@$=oox*@@@@@$$$@@@@@~ x+++ + ** o*%$$$$*x ·+%$$$$%+· x*$$$$$*o ** + x+**~ **+x + xx**+= +x*=**== ==**==x+ =+**+x + ++==*%*%%%**++xx ++==*%%%%%%*==++ xx++**%%%*%*==++ + diff --git a/src/build/framegen/frames/frame_135.txt b/src/build/framegen/frames/frame_135.txt new file mode 100644 index 000000000..2b1bed79b --- /dev/null +++ b/src/build/framegen/frames/frame_135.txt @@ -0,0 +1,41 @@ + + + ++++ + ++==*%%%*%****%*%%%*==++ + x+==*%== ==%*==+x + ===*xo ox*=== + ++**x+ x*%$@@@@@@@@@@$%*x +x**++ + ++*= +$@@@@@@$$$$$$$$$$$$@@@@@@$+ =*++ + x+== *@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@* ==+x + xx== +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ==xx + **o· +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ·o** + ++++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++++ + =* +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ *= + xx++ +@$$$$$$@@@@@@$@@@@@@$$$$$$$$$$@@@@@@$$@@@@@@$$$$$@+ ++xx + +++~ @$$$$$@@= +@@$$$$$$@@%o o$@$$$$$@ ~+++ + == @$$$$$@o ~ o@$$$$@% ·· $$$$$$@ == + == @$$$$@ oo ~@$$@= x $$$$$@ == + == ·@$$$@= = *· $$$@ % $ x@$$$@· == + == ·@$$$@o @ ~@ +· $$$$ xo @ % +@$$$@· == + == ·@$$$$% = =@$$@ % @$$$$@· == + == ·@$$$$@= **· x@@$$$$$ o%o ~%@$$$$$@· == + == ·@$$$$$@$· =@@@$$$$$$$@+ @@@@$$$$$$@· == + == ·@$$$$$$$@@$+ *$$$$$$$$$$$@@$=~ o$$$$$$$$$$@· == + == ·@$$$$$$$$$@@@@@@@@@@$$$$$$$$$$$$$$@@@@@@@@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@* == + +++x $@@@@@$$@@@@@*xoo+%@@@@@$$@@@@@%+o~x=@@@@@$$@@@@@$· x+++ + **o ~=%$$$%*o +%$$$$%+ o*%$$$%=~ ** + x+**~~ ~**+x + ++**== ++==**==xo o+==**==++ =+**++ + ++==*%%%%%**++xx ++==*%%%%%%*==++ xx++**%%%%%**=++ + diff --git a/src/build/framegen/frames/frame_136.txt b/src/build/framegen/frames/frame_136.txt new file mode 100644 index 000000000..66c8c4040 --- /dev/null +++ b/src/build/framegen/frames/frame_136.txt @@ -0,0 +1,41 @@ + + + x ++++====++++ + ++==*%*%==++++++++==%*%*==++ + ++**=* *=**++ + x+**+= ·· =+**+x + ++== o=%@@@@@@@@@@@@@@@@%=o ==++ + ===+ +$@@@@@$$$$$$$$$$$$$$$$@@@@@$+ +=== + ++++ =@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@= ++++ + ++=+ $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ +=++ + ** $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ** + +++o =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= o+++ + == $@$$$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$@$ == + ++++ $@$$$$$@@@@$*=+=*$@@@@$$$$$$$$$@@@@%=+==%@@@@$$$$$@$ ++++ + ==+· +@$$$$$@$~ ·%@$$$$$$@@x +@@$$$$@x ·+== + == @$$$$$@ ~x=~ @$$$$@x ·o=x *@$$$$@ == + == $$$$$@ = x @$$@o ~x $$$$$$ == + == ·@$$$@+ % *o $$$$ = @ o@$$$@· == + == ·@$$$@x @ * o @$$$ ~x * x *@$$$@· == + == ·@$$$$$ * %$$$@ = x@$$$$@· == + == ·@$$$$@% o**oo~+%@@$$$$@ ·+%xo~x=@@$$$$$@· == + == ·@$$$$$@@= +@@@$$$$$$$@% @@@$$$$$$$@· == + == ·@$$$$$$$@@@$=o~··~x%$$$$$$$$$$$@@@$*x~··~o*$$$$$$$$$$@· == + == ·@$$$$$$$$$$@@@@@@@@@$$$$$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@= == + ++++ %@@@@@@@@@@@$+o·~x*@@@@@@@@@@@@*o··~+$@@@@@@@@@@@% x+++ + **x· +*%%%*+· o=%%%%=o ·+%%$%*+ ·o** + x+**o~ oo oo oo**+x + ++**+=+~ =+******+x x+******+= ~x==**++ + ++==**%%%***++xx ++==***%%***==++ xx++***%%%**==++ + diff --git a/src/build/framegen/frames/frame_137.txt b/src/build/framegen/frames/frame_137.txt new file mode 100644 index 000000000..de5f454c6 --- /dev/null +++ b/src/build/framegen/frames/frame_137.txt @@ -0,0 +1,41 @@ + + + ++++==****==++++ + ==***%==xo ox==%***== + ===*++ ++*=== + ++**x+ ·oxx++xxo· +x**++ + ===+ o*$@@@@@@@@@@@@@@@@@@$*o +=== + **++ o%@@@@@$$$$$$$$$$$$$$$$$$@@@@@%o ++** + ==+o ~$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$~ o+== + ++++ +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ++++ + ox== o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ==xo + ==+~ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ~+== + ox== @@$$$$$$$@@@@@@@@@$$$$$$$$$$$$$$$@@@@@@@@$$$$$$$@@ ==xo + +++x @$$$$$$@@@$*xooox=$@@@$$$$$$$$@@@@%+ooox+%@@@$$$$$$@ x+++ + ==x =$$$$$$@= =@$$$$$$@$~ o@@$$$$$* x== + == @$$$$@$ ·o+%o $$$$$@~ ox*+ =@$$$$@ == + == $$$$$$ * + @$$@· +· %$$$$$ == + == ~@$$$@x @ ~ *x $$$$ ~+ o @ o@$$$@~ == + == ·@$$$@+ $ o @$$$ ·= x · *$$$$@· == + == ·@$$$$$ = $$$$@~ o~ =@$$$$@· == + == ·@$$$$$$ ~==o++*$@$$$$$@o ·x*ox+=%@@$$$$$@· == + == ·@$$$$$$@% x@@$$$$$$$$@$o @@@$$$$$$$@· == + == ·@$$$$$$$@@@@%=+xx+*$$$$$$$$$$$$$@@@$*+xx+=%$$$$$$$$$$@· == + == ·@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@+ == + ++++ *@@@@@@@@@@@%x· ~=@@@@@@@@@@@@=~ x%@@@@@@@@@@@* ++++ + **x· o=*%%=x ~+*%%*+~ x=%%*=x ·x** + x+**xo ++ ++ ox**+x + x+**=*xx *+****==++ ++==****+* x+==**+x + ++==********++xx ++==********==++ xx++********==++ + diff --git a/src/build/framegen/frames/frame_138.txt b/src/build/framegen/frames/frame_138.txt new file mode 100644 index 000000000..284028b3b --- /dev/null +++ b/src/build/framegen/frames/frame_138.txt @@ -0,0 +1,41 @@ + + + +++=**%%%%%%%%**=+++ + ++***%==o· ·o==%***++ + ++**+* *+**++ + ==== o+=*%$$$$%*=+o ==== + x+**xx x*@@@@@@@@@@@@@@@@@@@@@@*x xx**xx + xx**~~ ~%@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@%~ ~~**xx + **x· *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ·x** + ==+o %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% o+== + xx== *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ==xx + ==x· @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ·x== + xx== @$$$$$$$$@@@@@@@@@$$$$$$$$$$$$$$@@@@@@@@@@$$$$$$$@ ==xx + +++o @$$$$$$@@@*x· ·o=$@@$$$$$$$$@@@%+~ ~+%@@@$$$$$@ o+++ + == %$$$$$@@x o@@$$$$$@* %@$$$$$% == + == @$$$$@% ·~o+%x %$$$$@ ~~x%* x@$$$$@ == + == $$$$$$ % = @$$@ * ~ *@$$$$ == + == ·@$$$@x @ * *+ $$$$ ox * @ o@$$$@· == + == ·@$$$@+ % @$$@ * %$$$$@· == + == ·@$$$$@ + ·@$$$@x o %@$$$$@· == + == ·@$$$$$@ ~xx~=%$@@$$$$$@= ox~x*%@@@$$$$$@· == + == ·@$$$$$$@$x x@@$$$$$$$$@@= @@$$$$$$$$@· == + == ·@$$$$$$$$@@@@$%**%$@$$$$$$$$$$$$@@@@$%**%$@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@o == + ++++ +@@@@@@@@@@@=~ x$@@@@@@@@@@$x ·=@@@@@@@@@@@+ ++++ + **+~ o+=+x· o+==+o ·x+=+x ~x** + xx**+x == == x+**+x + xx**==+= ~+*=******+* *+******=*x~ =+==**xx + ++==********++ x+++********+++x ++********==++ + diff --git a/src/build/framegen/frames/frame_139.txt b/src/build/framegen/frames/frame_139.txt new file mode 100644 index 000000000..c4537217d --- /dev/null +++ b/src/build/framegen/frames/frame_139.txt @@ -0,0 +1,41 @@ + + + ++==**%%*%%%%%%*%%**==++ + ==***%xx xx%***== + ++**++ ++**++ + xx**++ x=*$$@@@@@@$$*=x ++**+x + ++**~o ~*$@@@@@@@$$$$$$$$@@@@@@@$*~ oo**++ + ++** +$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ **++ + xx** ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ **xo + ==+~ ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ ~+== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + x+++ o@$$$$$$$$@@@@@@@@@@$$$$$$$$$$$$$@@@@@@@@@@$$$$$$$@o +++x + +++~ @$$$$$$@@$=o ~+$@@$$$$$$$$@@@%x· ·x%@@@$$$$$@ ~+++ + == $$$$$$@@o ~@@$$$$$@= %@$$$$$$ == + == @$$$$@* ~~~x%x %$$$$@ ·~~o%= o@$$$$@ == + == ·$$$$$$ * = @$$@ * o *@$$$$· == + == ·@$$$@x @ % *+ $$$$ oo % @ o@$$$@· == + == ·@$$$@= * @$$@ * %$$$$@· == + == ·@$$$$@ x ~@$$$@+ o %@$$$$@· == + == ·@$$$$$@~ ~o~~=%$@@$$$$$@* oo~x%$@@@$$$$$@· == + == ·@$$$$$$@@+ x@$$$$$$$$$@@*· @@$$$$$$$$@· == + == ·@$$$$$$$$@@@@$$%%$$@$$$$$$$$$$$$@@@@@$%%%$@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==+· @@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@ x== + ++=+ o$@@@@@@@@@@+ ~*@@@@@@@@@@*~ +@@@@@@@@@@$x ++++ + ==+x ·oxo~ ~oo~ ~oxo· o+*= + x+**+x =* == ++**xx + x+==**+*+o ++*=**==**=*+x x+*=**==**=*++ ~+*=**==xx + ++++******==++ ++++********++++ ++==******++++ + diff --git a/src/build/framegen/frames/frame_140.txt b/src/build/framegen/frames/frame_140.txt new file mode 100644 index 000000000..be700a44a --- /dev/null +++ b/src/build/framegen/frames/frame_140.txt @@ -0,0 +1,41 @@ + + xx++++xx + ===*%%%%*%****%*%%%%*=== + ++**=%++ ++%=**++ + ===* *=== + x+**+x ~+*$@@@@@@@@@@@@$*+~ x+**+x + ++== =$@@@@@$$$$$$$$$$$$$$@@@@@$= ==++ + ++*= ~%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%~ =*++ + x+== =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ==+x + =*o =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= o*= + ++++ ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· ++++ + == =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= == + x+++ =@$$$$$$$$@@@@@@@@@$$$$$$$$$$$$$$@@@@@@@@@@$$$$$$$@= ++xx + +++· ·@$$$$$$@@@%+~ ~x*@@@$$$$$$$$@@@$=o· ~o=$@@@$$$$$@· ·+++ + == @$$$$$@@x x@@$$$$$@% $@$$$$$@ == + == $$$$$@% ~o=%x $$$$$@ ~~x%= x@$$$$$ == + == ·@$$$$$ * = @$$@ * · *$$$$@· == + == ·@$$$@x @ = *+ $$$$ ox * @ o@$$$@· == + == ·@$$$@+ % @$$@ * %$$$$@· == + == ·@$$$$@ + ·@$$$@x o %@$$$$@· == + == ·@$$$$$@ ~xo~=%$@@$$$$$@= ox~x*%@@@$$$$$@· == + == ·@$$$$$$@$x x@@$$$$$$$$@@* @@$$$$$$$$@· == + == ·@$$$$$$$$@@@@$%%%%$@$$$$$$$$$$$$@@@@$$%%%$@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==x· $@@$$$$$$$$$@@@@@@@@@@$$$$$$$$@@@@@@@@@@$$$$$$$$$@@$ ·+== + ++++ =@@@@@@@@@*· x$@@@@@@@@$x *@@@@@@@@@= ++++ + ==++ +=== + xx=*=+ ++%%xx xx%%++ +===xx + ==**=*==++++*=*=**==**=%=*++++*=%=**==**=*=*++++==*=**==xx + ++++==****==++ ++==****==++ ++==****==++++ + diff --git a/src/build/framegen/frames/frame_141.txt b/src/build/framegen/frames/frame_141.txt new file mode 100644 index 000000000..f5780d60f --- /dev/null +++ b/src/build/framegen/frames/frame_141.txt @@ -0,0 +1,41 @@ + + xx++++++++xx + x++=*%*%*%========%*%*%*=++x + ++**=*+x x+*=**++ + xx**=* *=**xx + ++**o x*$@@@@@@@@@@@@@@$*x o**++ + ++=+ o*@@@@@$$$$$$$$$$$$$$$$@@@@@*o +=++ + ++=+ x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$x +=++ + x+== *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ==+x + ** %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ** + +++x x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x x+++ + =* *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* *= + ++++ *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++++ + ==+· o@$$$$$$$@@@@@@@@@@@@@$$$$$$$$$$@@@@@@@@@@@@@$$$$$$$@o ·+== + == @$$$$$$@@%~ ~*@@$$$$$$@@$+ +$@$$$$$$@ == + == $$$$$$@o o@$$$$@* $@$$$$$ == + == ·@$$$$@ x @$$@+ o $$$$$@· == + == ·@$$$@+ % %o $$$$ = @ x@$$$@· == + == ·@$$$@+ $ o @$$$ ·= o *$$$$@· == + == ·@$$$$@ x $$$$@x ~ *@$$$$@· == + == ·@$$$$$@~ · +%$@@$$$$$@= ~%%@@@$$$$$@· == + == ·@$$$$$$@@*· +@@$$$$$$$$@@%o @@$$$$$$$$@· == + == ·@$$$$$$$$@@@@@@@@@@@$$$$$$$$$$$$@@@@@@@@@@@$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$· == + == @@$$$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$@@ == + ==+~ *@@@$$$$$$$@@@@$%%@@@@$$$$$$$$@@@@%%$@@@@$$$$$$$@@@* ~+== + ++== o%@@@@@@@$x ·*@@@@@@@@*· x$@@@@@@@%x ==++ + ===+ +=== + ox====o+ ==%%++ ++%%== xo====+x + ++**=**%****%***==++**=*=******=*=**++==***%****%**=**++ + x++++=====++++ ++++====++++ ++++======+++x + diff --git a/src/build/framegen/frames/frame_142.txt b/src/build/framegen/frames/frame_142.txt new file mode 100644 index 000000000..1051e2b80 --- /dev/null +++ b/src/build/framegen/frames/frame_142.txt @@ -0,0 +1,41 @@ + + xx++++====++++xx + ++==*%**==++oooo++==**%*==++ + ++**=* *=**=+ + ++**+= ···· =+**++ + ++== x=$@@@@@@@@@@@@@@@@$=x ==++ + ==++ =$@@@@$$$$$$$$$$$$$$$$$$@@@@$= ++== + ===+ *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* +=== + ++=+ ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· +=++ + o ** $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ** o + +++o =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= o+++ + == $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + ==+· +@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+== + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == $$$$$$@@@@@@@@@@@@@@@@@@$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == ·@$$$$@= ·*@$$$@= +@$$$$$@· == + == ·@$$$@ ~@$@· @$$$$@· == + == ·@$$$$x +$$$+ @$$$$@· == + == ·@$$$$@@*==============*@@$$$@@*===============$@$$$$$@· == + == ·@$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == %@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@% == + ==+x ~@@@@$$$$$@@@@%+x+=$@@@@$$$$@@@@$=+x+%@@@@$$$$$@@@@o o+== + xx== x*$@@@$%x ~=$@@@@$=~ x%$@@@$*x ==xx + ==== ==== + ====+= xx*=**== ==**=*xx =+==== + ++*****%*%%*****==++==***%*%%*%***==++==*****%%%%*****++ + ++++++++++++ x++++++++++x ++++++++++++ + diff --git a/src/build/framegen/frames/frame_143.txt b/src/build/framegen/frames/frame_143.txt new file mode 100644 index 000000000..a5cb02dd2 --- /dev/null +++ b/src/build/framegen/frames/frame_143.txt @@ -0,0 +1,41 @@ + + ++============++ + ++**%%=*++o~····~o++*=%%**++ + +=**== ==**=+ + ++**++ ·~~oo~~· ++**++ + ===+ +%@@@@@@@@@@@@@@@@@@%+ +=== + ==++ ·*@@@@@$$$$$$$$$$$$$$$$$$@@@@@*· ++== + ===x %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@% x=== + ++=+ o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o +=++ + ox== @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xx + ==+~ *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ~+== + == $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + +++x $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ x+++ + ==x· =@$$$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·x== + == @$$$$$@$**%$@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == $$$$$@ o+*%@@@@$$$$@@@@@@@@@@@@@@@@@@@@$$$$$$ == + == ·@$$$$@ *$$$$% *$$$$$@· == + == ·@$$$$$@ @$$@ @$$$$@· == + == ·@$$$$@ =$$$$% =$$$$$@· == + == ·@$$$$@ ~x=%@@@@$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$@$==%$@@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@= == + ==++ *@@@@@@@@@@@$+~ o*@@@@@@@@@@@@*o ·+$@@@@@@@@@@@% x+== + ++==x· x=%%%*x o=*%%*=o x*%%%*x ·x==++ + ====oo xx xx ~o==== + ====+=++ =+*==*==++ ++=====*+= xx=+==== + ++==**=*********++++==***%****%***==++++************==++ + ++++++++++xx ++++++++++++ x ++++++++++ + diff --git a/src/build/framegen/frames/frame_144.txt b/src/build/framegen/frames/frame_144.txt new file mode 100644 index 000000000..b0f7b896b --- /dev/null +++ b/src/build/framegen/frames/frame_144.txt @@ -0,0 +1,41 @@ + + ++====****====++ + +=***%==+o ox==%***=+ + ===*++ ++*=== + ++**x+ ·ooxxxxoo· +x**++ + ===+ o=$@@@@@@@@@@@@@@@@@@$=o +=== + **++ o%@@@@$$$$$$$$$$$$$$$$$$$$@@@@%o ++** + ==+x ~$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$~ x+== + ++++ +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ++++ + ox== ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ ==xo + ==+~ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ~+== + ox== @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + +++x @$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ==+ =@$$$$@= o*@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= +== + == @$$$$@+ x%@@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@ == + == $$$$$$% =@@$$$$@$+oooooooooooooox%@$$$$$$ == + == ·@$$$$$@@$=~ *@$$$o @$$$$@· == + == ·@$$$$$@@$*x *$$$@o @$$$$@· == + == ·@$$$$$% +@@$$$$@%x~~~~~~~~~~~~~~o*@$$$$$@· == + == ·@$$$$@+ o*@@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$@= ~=$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· @@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@ x== + ++++ o$@@@@@@@@@$+ ·*@@@@@@@@@@*· +$@@@@@@@@@$o ++++ + x+==+x ·ooo~ ~oo~ ~ooo· o+==+x + ++==++ +** **+ x+==++ + ++====+=+x ++*========*+x x+*========*++ x+======++ + ++++==********==++++++==********==++++++==********====++ + ++++++++ ++++++++ ++++++++ + diff --git a/src/build/framegen/frames/frame_145.txt b/src/build/framegen/frames/frame_145.txt new file mode 100644 index 000000000..f096e8c69 --- /dev/null +++ b/src/build/framegen/frames/frame_145.txt @@ -0,0 +1,41 @@ + + ++====****====++ + xx+=***%==x~ ~x==%***=+xx + x+===*++ ++*===+x + ++**+x ~ox++++xo~ x+**++ + ==++ x*$@@@@@@@@@@@@@@@@@@$*x ++== + **+x x%@@@@$$$$$$$$$$$$$$$$$$$$@@@@%x x+** + ==+o o$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$o o+== + ++++ +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ++++ + xx== o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ==xx + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + x+== @@$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==+x + +++x @$$$$@@$*%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ==x *$$$$$% ~=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$* x== + == @$$$$@* =$@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@ == + == $$$$$$@%· %@$$$$@x ~$$$$$$$ == + == ~@$$$$$$$@@@%~ %$$$@ @$$$$@~ == + == ·@$$$$$@@$+ $$$$$= o$$$$$@· == + == ·@$$$$$$ =$@$$$$$@@$%%%%%%%%%%%%%%%@@$$$$$@· == + == ·@$$$$@* ~*@@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$@* o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· $@@$$$$$$$$$@@@@@@@@@@$$$$$$$$@@@@@@@@@@$$$$$$$$$@@$ ·x== + ++++ =@@@@@@@@@* x$@@@@@@@@$x *@@@@@@@@@= ++++ + oo==++ ++==xx + ++===+ ++%%+o o+%%++ +===++ + ++=====%+=++++*=*========***++++***========*=*++++=+%=====++ + xx++==******====++ ++==********==++ ++====******==++xx + ++++ ++++ ++++ + diff --git a/src/build/framegen/frames/frame_146.txt b/src/build/framegen/frames/frame_146.txt new file mode 100644 index 000000000..423d3e734 --- /dev/null +++ b/src/build/framegen/frames/frame_146.txt @@ -0,0 +1,41 @@ + + xx++==********===+xx + ++==*%**=+~· ·~+=**%*==++ + x+=*=*+x x+*=*=+x + ++**xo ·ox+====+xo· ox**++ + **++ x*@@@@@@@@@@@@@@@@@@@@*x ++** + **+o x$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$x x+** + ==+o x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$x o+== + ++++ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++++ + xx== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xx + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + +++x @$$$$@* ·*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == *$$$$@% o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$* == + == @$$$$$$ o%@@$$$$$@@@$$$$$$$$$$$$$$$@@$$$$$@ == + == $$$$$$$@@=· ~$$$$$* +$$$$$$ == + == ~@$$$$$$$@@@@* $$$$@ @$$$$@~ == + == ·@$$$$$$@*~ =$$$$$$· %$$$$$@· == + == ·@$$$$$$ ~*@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@$x ·=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == $@$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@$ == + ==+o +@@@$$$$$$$@@@$***%@@@@$$$$$$@@@@%***$@@@$$$$$$$@@@+ o+== + ++== =$@@@@@$*~ +%@@@@@@%+ ~*$@@@@@$=· ==++ + ===+ +=== + ++====x+ *=**== ==**=* +x====++ + ++=====**%******=========**%****%**=========******%**=====++ + ++++========++xx ++++========++++ xx++========++++ + + diff --git a/src/build/framegen/frames/frame_147.txt b/src/build/framegen/frames/frame_147.txt new file mode 100644 index 000000000..baf0b2890 --- /dev/null +++ b/src/build/framegen/frames/frame_147.txt @@ -0,0 +1,41 @@ + + ++++==********===+++ + ++==*%**++~· ·~++**%*==++ + xx**=%+x x+%=**xx + ++*=x ~ox+====+xo~ x=*++ + **++ x%@@@@@@@@@@@@@@@@@@@@%x ++** + **+o +$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$+ o+** + =*+o x$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$x o+*= + ++++ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++++ + ox== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xo + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + ox== @$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xo + +++x @$$$$$x x%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == *$$$$@% +$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$* == + == @$$$$$$o =$@$$$$$@@$%%%%%%%%%%%%%%%@@$$$$$@ == + == $$$$$$$@@$x $$$$$= o$$$$$$ == + == ·@$$$$$$$@@@@= $$$$@ @$$$$@· == + == ·@$$$$$$@= %$$$$$@x ~$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@=oo*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@% == + ==+x ~$@@@@$$$$@@@@%+xx=$@@@@$$$$@@@@$=xx+*@@@@$$$$@@@@@~ x+== + ++== o*$@@@$*x ·=%$@@$%=· x*$@@@$*x ==++ + ==== =+== + xx====+= x+*===+= =+====+x =+====xx + ++====*%%%%**=====++====*%*%%*%*====++=====**%%%%*====++ + xx++++====++++ ++++====++++ ++++====++++x+ + + diff --git a/src/build/framegen/frames/frame_148.txt b/src/build/framegen/frames/frame_148.txt new file mode 100644 index 000000000..a36374d76 --- /dev/null +++ b/src/build/framegen/frames/frame_148.txt @@ -0,0 +1,41 @@ + + ++++==********===+++ + ++==*%**++~· ·~++**%*==++ + xx**=%+x x+%=**xx + ++*=x ~ox+====+xo~ x==++ + **++ +%@@@@@@@@@@@@@@@@@@@@%+ ++** + **+o +$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$+ o+** + ==+~ x$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$x ~+*= + ++++ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++++ + ox== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xo + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + ox== @$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xo + +++x @$$$$$x x%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == *$$$$@% x$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$* == + == @$$$$$$o =$@$$$$$@@%%%%%%%%%%%%%%%%@@$$$$$@ == + == $$$$$$$@@$x $$$$$= ~$$$$$$ == + == ~@$$$$$$$@@@@+ $$$$@ @$$$$@~ == + == ·@$$$$$@@+ ·$$$$$$@+ o$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@=xx%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@+ == + ==++ *@@@@@@@@@@@%x ~=@@@@@@@@@@@@=~ x%@@@@@@@@@@@% ++== + xx==x· o=***=x ~+****+~ x=***=x ·x==++ + ====xo xx x+ ox==== + ======+x =+=*====++ ++====*=+= x+*===== + ++==***%********++++==************==++++********%***==++ + ++++++++++ +x++++++++x+ ++++++++++ + + diff --git a/src/build/framegen/frames/frame_149.txt b/src/build/framegen/frames/frame_149.txt new file mode 100644 index 000000000..eaf1e09a4 --- /dev/null +++ b/src/build/framegen/frames/frame_149.txt @@ -0,0 +1,41 @@ + + xx++==********===+xx + ++==*%**++~· ·~++**%*==++ + xx**=*+x x+*=**xx + ++*=xo ·ox+====+xo· ox=*++ + **++ x%@@@@@@@@@@@@@@@@@@@@%x ++** + **+o +$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$+ o+** + =*+o x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$x o+*= + ++++ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++++ + ox== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xo + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + +++x @$$$$@= +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == *$$$$@% +$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$* == + == @$$$$$$· =$@$$$$$@@$%%%%%%%%%%%%%%%@@$$$$$@ == + == $$$$$$$@@*o $$$$$= ~$$$$$$ == + == ·@$$$$$$$@@@$x $$$$@ @$$$$@· == + == ·@$$$$$@@x ·%$$$$$@+ o$$$$$$@· == + == ·@$$$$$$ =$@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@%+=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@o == + ++++ +@@@@@@@@@@@*~ x$@@@@@@@@@@$x ·*@@@@@@@@@@@= ++++ + ox==+o x+=+x· o+==+o ·x+=+x· ~+==+x + ++==+x == == xx==++ + ++====++ ox*+==**==+= =+=***==+*xo ++====++ + ++==**********==++++++************++++++==**********==++ + ++++++++ xx++++xx ++++++++ + + diff --git a/src/build/framegen/frames/frame_150.txt b/src/build/framegen/frames/frame_150.txt new file mode 100644 index 000000000..9f440069e --- /dev/null +++ b/src/build/framegen/frames/frame_150.txt @@ -0,0 +1,41 @@ + + xx++==********===+xx + +++=****==o· ·o==****=+++ + x+=*=*+x x+*=*=+x + ++**+x ~x++==++x~ xx**++ + **++ x*@@@@@@@@@@@@@@@@@@@@*x ++** + **xx x%@@@@$$$$$$$$$$$$$$$$$$$$@@@@%x x+** + ==+o o$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$o o+== + ++++ +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ++++ + ox== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xx + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + +++x @$$$$@* =@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ==x *$$$$@% ·=@@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$* == + == @$$$$$$ ·*@@$$$$$@@$%%%%%%%%%%%%%%%@@$$$$$@ == + == $$$$$$$@@*~ $$$$$= o$$$$$$ == + == ~@$$$$$$$@@@@+ $$$$@ @$$$$@~ == + == ·@$$$$$@@x %$$$$$@x ~$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ +$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@*+=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· @@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·x== + ++++ ~%@@@@@@@@@$x ·*@@@@@@@@@@*· x$@@@@@@@@@%o ++++ + ox==+x ~oo· ~oo~ ·ooo o+==xo + ++==++ +%% %%+o ++==++ + ++=*===*xx ~o++*=**==**+*++ ++*+**==**=*++ ~ xx*===*=++ + ++==********++xx ++==********==++ xx++********==++ + + + diff --git a/src/build/framegen/frames/frame_151.txt b/src/build/framegen/frames/frame_151.txt new file mode 100644 index 000000000..540e3e13c --- /dev/null +++ b/src/build/framegen/frames/frame_151.txt @@ -0,0 +1,41 @@ + + x+++===******====++x + ++==***%=*xo ox==%***==++ + xx=*=*++ ++*=*=xx + ++**++ ~ox++++xo~ ++**++ + **++ o*$@@@@@@@@@@@@@@@@@@$*o ++** + **+x o%@@@@$$$$$$$$$$$$$$$$$$$$@@@@%o x+** + ==+o ~$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$~ o+== + ++=+ +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ++++ + ox== o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ==xo + ==+~ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ~+== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + +++x @$$$$@* ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ==+ *@$$$@% ~*@@@@$$$$$$$$$$@@@@@@@@@@@@@@@$$$$$$@* +== + == @$$$$$$ ~*@@$$$$$@@$%%%%%%%%%%%%%%$@@$$$$$@ == + == $$$$$$$@$=· $$$$$* x$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@~ == + == ·@$$$$$@@+ %@$$$$$o ·$$$$$$@· == + == ·@$$$$$$ x$@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@*x+%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==+· @@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·+== + ++++ %@@@@@@@@@%o =$@@@@@@@@$= ~%@@@@@@@@@%· ++++ + ==+x ·· ·· ··· x+== + x+==++ ++%% %*++ ++*=xx + xx==**=*++xxxx+=*=**==**=*=+xxxx+=%=**==**=*=+xxoo++*=**==xx + ++++******==++xx ++++********++++ xx++==******=+++ + + + diff --git a/src/build/framegen/frames/frame_152.txt b/src/build/framegen/frames/frame_152.txt new file mode 100644 index 000000000..34e342244 --- /dev/null +++ b/src/build/framegen/frames/frame_152.txt @@ -0,0 +1,41 @@ + + xx++=====**=====++xx + +++=***%**++~· ·~++**%***++++ + xx==*%=+ +=%*==xx + ++**++ ~~oooo~~ ++**++ + ==== ·+%@@@@@@@@@@@@@@@@@@%+· ==== + **+x ~*@@@@@$$$$$$$$$$$$$$$$$$@@@@@*~ x+** + ==+x ·%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%· x+== + ++=+ x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x +=++ + ox== ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· ==xo + ==+~ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ~+== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + +++x $$$$$$%· o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ x+++ + ==+· =@$$$@$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+== + == @$$$$$$ x%@@$$$$$@@@$$$$$$$$$$$$$$$@@$$$$$@ == + == $$$$$$$@$+ ~$$$$$* +$$$$$$ == + == ~@$$$$$$$@@@@+ $$$$@ @$$$$@~ == + == ·@$$$$$$@= *$$$$$$· %$$$$$@· == + == ·@$$$$$$ o%@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@=ox*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· $@@$$$$$$$$$@@@@@@@@@@$$$$$$$$@@@@@@@@@@$$$$$$$$$@@$ ·+== + +++= =$@@@@@@@@* x%@@@@@@@@%x *@@@@@@@@@* ++++ + ==++ +=== + xx=*=+ ++%%+x x+%%=+ +=**+x + ++**=*=+++++=**=**++**=%==++++==%=**++**=**=+++++=*=**++ + xx++======++++ ++========++ ++++==**==++xx + + + diff --git a/src/build/framegen/frames/frame_153.txt b/src/build/framegen/frames/frame_153.txt new file mode 100644 index 000000000..b81afbddb --- /dev/null +++ b/src/build/framegen/frames/frame_153.txt @@ -0,0 +1,41 @@ + + xx++============++xx + ++++**%%=*==xo~~~~ox==**%%**++++ + xx==**== ==**==xx + ++**+= ·~~~~· =+**++ + ===+ x*$@@@@@@@@@@@@@@@@$*x +=== + **++ =@@@@@$$$$$$$$$$$$$$$$$$@@@@@= ++** + ==++ *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* +=== + ++=+ ~@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@~ +=++ + xx== @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + ==+o *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* o+== + ox== $@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ==xo + +++x $@$$$@$o x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ x+++ + ==+· +@$$$$$ +$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+== + == @$$$$$$ +$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$$@%x o$$$$$% =$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$$@*~ +$$$$$$ *$$$$$@· == + == ·@$$$$$$ ·*@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@+·~=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· %@@$$$$$$$$$@@@@$$@@@@$$$$$$$$@@@@$$@@@@$$$$$$$$$@@$ ·+== + x+== +$@@@@@@@$* o%@@@@@@@@%o *$@@@@@@@$= ==++ + ==++ ++== + ==== ==%%++ ++%%== +=== + ++**=%==++++****==++**=***++++***=**++==****++++==%=**++ + +++=====++++ +++======++x ++++=====+++ + + + diff --git a/src/build/framegen/frames/frame_154.txt b/src/build/framegen/frames/frame_154.txt new file mode 100644 index 000000000..7f4c1c11d --- /dev/null +++ b/src/build/framegen/frames/frame_154.txt @@ -0,0 +1,41 @@ + + ++++++====++++++ + xx+=***%%%**==++++==**%%%***=+xx + ox==**=*xo ox*=**==xo + ++**+= =+**++ + ==== ~+%$@@@@@@@@@@@@@@$%+~ ==== + ===+ x%@@@@@$$$$$$$$$$$$$$$$@@@@@%x +=== + ===+ +@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@+ +=== + ++=+ %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% +=++ + ox== %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ==xo + ==+x x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x x+== + ox== %@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ==xo + ++++ %@$$$@@+~o=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++++ + ==+· x@$$$$$ ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+== + == @$$$$$$ ~*@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$$@=· =$$$$$$ %$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$$@$x o$$$$$% +$$$$$@· == + == ·@$$$$$$ x$@@$$$$$@@@$$$$$$$$$$$$$$@@@$$$$$@· == + == ·@$$$$@$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@$~ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+~ %@@@$$$$$$$$@@@@$$@@@@$$$$$$$$@@@@$$$@@@$$$$$$$$@@@% ·+== + ++== +$@@@@@@@$= ~%@@@@@@@@%~ =$@@@@@@@$+ ==xx + ===+ +=== + ==== ==%%++ ++%%== ==== + ++**=***++==%***==++***%**++++**%***++==***%==++**%=**++ + x+++==++++ x+++====+++x ++++++++++ + + + diff --git a/src/build/framegen/frames/frame_155.txt b/src/build/framegen/frames/frame_155.txt new file mode 100644 index 000000000..0a9d3d097 --- /dev/null +++ b/src/build/framegen/frames/frame_155.txt @@ -0,0 +1,41 @@ + + ++++++++++++++++ + ++*****%*%=******=%*%*****++ + x ++**=*++ x+*=**++ x + ++**+= =+**++ + ====ox o=%@@@@@@@@@@@@@@%=o xo==== + ===+ ~*@@@@@@$$$$$$$$$$$$$$@@@@@@*~ +=== + ===+ o$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$o +=== + ++== *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ==++ + ox== *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ==xo + ==+x o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o x+== + ox== =@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + ++++ *@$$$@@*x+%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++++ + ==x· ~@$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ·x== + == @$$$$$$ x$@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$@@+ %@$$$$$o ·$$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$$@$=· $$$$$* x$$$$$@· == + == ·@$$$$$$ ~*@@$$$$$@@$%%%%%%%%%%%%%%$@@$$$$$@· == + == ·@$$$$@% ~*@@@@$$$$$$$$$$@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$@* ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$@@ == + ==+~ %@@@$$$$$$$$@@@$$$@@@@$$$$$$$$@@@@$$$@@@$$$$$$$$@@@% ·+== + xx== x%@@@@@@@$= ~*@@@@@@@@*~ =$@@@@@@@$+ ==xx + ===+ +=== + ====o ==%%++ ++%%== ==== + ++***%**====%***++++==***%====%***==++++***%==+=***=**++ + xx++++++++ ++====++ ++++++++xx + + + diff --git a/src/build/framegen/frames/frame_156.txt b/src/build/framegen/frames/frame_156.txt new file mode 100644 index 000000000..d1c6743b8 --- /dev/null +++ b/src/build/framegen/frames/frame_156.txt @@ -0,0 +1,41 @@ + + xx++++++++++++xx + ++==***%*%*%%%%%%*%*%***==++ + ++**=*== ==*=**++ + ++**=*++ ++*=**++ + ++**++ ~+*%@@@@@@@@@@%*+~ ++**++ + ==== o*@@@@@@@$$$$$$$$$$@@@@@@@*o ==== + ==== =@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@= ==== + ++== x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x ==++ + xx==x· x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ·x==xx + ++++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++++ + ox== o@$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ==xo + ++++ x@$$$$@$*%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ++++ + ==+~ @$$$$$ o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+== + == $$$$$@$ o%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@%· x$$$$$$@*· +@$$$$$@ == + == ·@$$$$$$$@@@*· $$$$@~ @$$$$@· == + == ·@$$$$$$@@$+ $$$$$x @$$$$@· == + == ·@$$$$$$o x%@$$$$$@@*===============$@$$$$$@· == + == ·@$$$$@% o%@@@@$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$$x o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$@@ == + ==+~ *@@@$$$$$$$@@@@$$$@@@@$$$$$$$$@@@@$$$@@@@$$$$$$$@@@% ·+== + ox== x%@@@@@@@$+ ~*@@@@@@@@*~ +$@@@@@@@$+ ==+x + ++=+ +=++ + ++==ox ==%%++ ++%%== o==++ + x+***%**====%***++++==***%====%***==++++***%====**%***++ + +++++++x ++++++++ ++++++++ + + + diff --git a/src/build/framegen/frames/frame_157.txt b/src/build/framegen/frames/frame_157.txt new file mode 100644 index 000000000..03caabe0e --- /dev/null +++ b/src/build/framegen/frames/frame_157.txt @@ -0,0 +1,41 @@ + + xx++++++++++++xx + ++==****%%*%%%%%%*%%****==++ + ++****=*++ ++*=****++ + ++=*==+= =+====++ + ++**++ ~+=%$$@@@@$$%=+~ ++**++ + ++==oo +%@@@@@@@@$$$$$$@@@@@@@@%+ oo==++ + ++== o$@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@$o ==++ + ++==~ %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@% ~==++ + ox==+~ $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ ~+==xo + ++++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++++ + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ++++ ~@$$$$@@$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ++x+ + ==+~ @$$$$$· +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+== + == $$$$$@$ =$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$$= *@$$$$$@$xoooooooooooooox*@$$$$$@ == + == $$$$$$$@@@%x $$$$$o @$$$$$ == + == ·@$$$$$$@@@%x $$$$@o @$$$$@· == + == ·@$$$$$@= =@$$$$$@$xooooooooooooooo*@$$$$$@· == + == ·@$$$$@$ +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$@@ == + ==+~ %@@@$$$$$$$$@@@$$$@@@@$$$$$$$$@@@@$$$@@@$$$$$$$$@@@% ·+== + xx== +%@@@@@@@$= ~%@@@@@@@@%~ =$@@@@@@@$+ ==xx + ++=+ +=++ + ++*=oo ==%%++ ++%%== ==++ + x+***%**====%***++++==***%====%***==++++***%====**%***++ + ++++++++ ++++++++ ++++++++ + + + diff --git a/src/build/framegen/frames/frame_158.txt b/src/build/framegen/frames/frame_158.txt new file mode 100644 index 000000000..b35f4a8c0 --- /dev/null +++ b/src/build/framegen/frames/frame_158.txt @@ -0,0 +1,41 @@ + + ++++++++++++ + ++++==******%%%%******==++++ + ++==**=***++ ++******==++ + ++==**=*+o o+*=**==++ + ++====x ·o++====++o· x====++ + ++==++ +%@@@@@@@@@@@@@@@@@@@@%+ ++==++ + ++==xo +$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$+ ox==++ + ++==+~ x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x ~+==++ + ==+x =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= x+== + ++== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==++ + ==x· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·x== + ++== @$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==++ + +++x @$$$$$= +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + == *$$$$@% =$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$* == + == @$$$$$$· =$@$$$$$@@%**************%@@$$$$$@ == + == $$$$$$$@@*o $$$$$= ~$$$$$$ == + == ~@$$$$$$$@@@$x $$$$@ @$$$$@~ == + == ·@$$$$$@$o ·$$$$$$@+ o$$$$$$@· == + == ·@$$$$$$ =@@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@%==$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· %@@@$$$$$$$$@@@@$$@@@@$$$$$$$$@@@@$$@@@@$$$$$$$$$@@$ ·+== + xx== +$@@@@@@@$= o%@@@@@@@@%o =$@@@@@@@$= ==xx + ++=+ +=++ + ++== ==%%++ ++%%== ==++ + x+=*=***++==%***++xx==*%**====**%*==xx++***%==++***=**+x + ++++++++ ++++++++ ++++++++ + + + diff --git a/src/build/framegen/frames/frame_159.txt b/src/build/framegen/frames/frame_159.txt new file mode 100644 index 000000000..88548ed34 --- /dev/null +++ b/src/build/framegen/frames/frame_159.txt @@ -0,0 +1,41 @@ + + ++xxxx++ + xx++==****************==++xx + ++==**==*%=*++oo oo++*=%*==**==++ + xx++**=*+= =+*=*=++xx + ++====++ ~oooo~ ++====++ + ++===+ +%@@@@@@@@@@@@@@@@@@%+ +===++ + ++==+x ·*@@@@@$$$$$$$$$$$$$$$$$$@@@@@*· x+==++ + x+==+x %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@% x+==++ + ===+ o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o +=== + ++== ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· ==++ + ==+~ *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ~+== + ++== $@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ==++ + +++x $$$$$@$~ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ x+++ + ==+· =@$$$@$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·x== + == @$$$$$$ x%@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$$@$x o$$$$$* +$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$$@*· =$$$$$$· %$$$$$@· == + == ·@$$$$$$ ~*@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@+~o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· $@@$$$$$$$$$@@@@$@@@@@$$$$$$$$@@@@@$@@@@$$$$$$$$$@@$ ·+== + xx== =$@@@@@@@@* o%@@@@@@@@%o *@@@@@@@@$= ==+x + ++=+ +=++ + ++== ==%%++ ++%%== ==++ + x+**=%*=++++%***++x+==*%**++++**%*==++++***%++++==%=**++ + ++++++++ ++++++++ ++++++++ + + + diff --git a/src/build/framegen/frames/frame_160.txt b/src/build/framegen/frames/frame_160.txt new file mode 100644 index 000000000..2e212c62a --- /dev/null +++ b/src/build/framegen/frames/frame_160.txt @@ -0,0 +1,41 @@ + + + xx++====********====++xx + ++==**=**%****++++****%**=**==++ + ++=====*+x ++%=====++ + ++====== ======++ + ++====xx o=%$@@@@@@@@@@@@$%=o xx====++ + ++===+ ·*$@@@@@$$$$$$$$$$$$$$@@@@@$*· +===++ + xx===+ o$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$o +===xx + ==++ *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ++== + ++== *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ==++ + ==+x ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ x+== + xx== =@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xx + ++++ *@$$$$@*x+%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++++ + ==+· ~@$$$$$ x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ·+== + == @$$$$$$ +$@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$@@+ %$$$$$@x ·$$$$$$$ == + == ·@$$$$$$$@@@@x $$$$@ @$$$$@· == + == ·@$$$$$$@@*· $$$$$= x$$$$$@· == + == ·@$$$$$$ ~*@@$$$$$@@$$$$$$$$$$$$$$%$@@$$$$$@· == + == ·@$$$$$% ~=@@@@$$$$$$$$$$@@@@@@@@@@@@@@$$$$$$$$@· == + == ·@$$$$$@* ·*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==+· $@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·+== + xx== *@@@@@@@@@%~ +$@@@@@@@@$+ ~%@@@@@@@@@* ==xx + ===+ +=== + ===+ ++%% %%++ +=== + ++**=%+++x++**%*=+++===*==+xx+==*===+++=*%**++++++****++ + ++++====++ ++++==++ ++====+++x + + + diff --git a/src/build/framegen/frames/frame_161.txt b/src/build/framegen/frames/frame_161.txt new file mode 100644 index 000000000..d96fee855 --- /dev/null +++ b/src/build/framegen/frames/frame_161.txt @@ -0,0 +1,41 @@ + + + xx++++============++++xx + ++====**=**%%%****%%%**=**====++ + ++====**=*o~ ~o*=**====++ + ======++ ++====== + x+====++ ~+*%$@@@@@@@@$%*+~ ++====++ + xx==== o%@@@@@@@$$$$$$$$$$@@@@@@@%o ====xx + ==== =@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@= ==== + =+== o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o ==++ + x+==x· x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ·x==+x + ==++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++== + xx== o@$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ==xx + ++++ x@$$$$@@%%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ++++ + ==+~ @$$$$$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+== + == $$$$$@$ o%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@% x@$$$$$@*· +@$$$$$@ == + == ·@$$$$$$@@@@*· $$$$@~ @$$$$@· == + == ·@$$$$$$@@$+ $$$$$+ @$$$$@· == + == ·@$$$$$$x x%@$$$$$@@*++++++++++++++=$@$$$$$@· == + == ·@$$$$$$ o%@@@@$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$$x o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==+· @@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·x== + xx++ ·%@@@@@@@@@%o =@@@@@@@@@@= o%@@@@@@@@@%~ ++++ + ==+x ·~~ ·~~· ~~~ x+== + ==++ x+%% %%++ ++== + ++**=%++ooox==*===++**=%++xoox++%=**++===*==xooo++%=**++ + ++++==++++ x+++====+++x ++++====++ + + + diff --git a/src/build/framegen/frames/frame_162.txt b/src/build/framegen/frames/frame_162.txt new file mode 100644 index 000000000..1bac9f41a --- /dev/null +++ b/src/build/framegen/frames/frame_162.txt @@ -0,0 +1,41 @@ + + + ++++++++++++++++++++ + ++++==****=***%%%%***=****==++++ + ++++=====%==o~ ~o==%=====++++ + ++====+= =+====++ + =====+ ~x=**%%%%**=x~ +===== + ====++ o*$@@@@@@@@@@@@@@@@@@@@$*o ++==== + ====o~ ·*@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@*· ~o==== + ++==x· =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ·x==++ + xx==+o %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% o+==xx + =+++ *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* +++= + ox==x· @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ·x==xo + ++++ @$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++++ + ==+o @$$$$$x o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+== + == %$$$$@% o*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$% == + == @$$$$$$x o%@$$$$$@@=++++++++++++++=$@$$$$$@ == + == $$$$$$$@@$=· $$$$@x @$$$$$ == + == ·@$$$$$$@@@@*· $$$$@~ @$$$$@· == + == ·@$$$$$@% x@$$$$$@*~ ·+@$$$$$@· == + == ·@$$$$@% x%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@$%%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x ·@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@~ == + x+++ x$@@@@@@@@@@= o%@@@@@@@@@@%o =@@@@@@@@@@$x ++++ + ==+o ox++o ~x++x~ o++xo o+== + **+x ** ** x+** + ++**==o~ ++*+**++**+*xo ox*+**++**=*++ ~o=+**++ + ++==****++++ ++==****==++ x+++=***==++ + + + diff --git a/src/build/framegen/frames/frame_163.txt b/src/build/framegen/frames/frame_163.txt new file mode 100644 index 000000000..e2828f817 --- /dev/null +++ b/src/build/framegen/frames/frame_163.txt @@ -0,0 +1,41 @@ + + + ++++++++++++++++ + ++++==****************==++++ + ++===****%++~~ ~~++%***====++ + ++=====*+x x+*=====++ + ++====xx ·ox+====+xo· xx====++ + ====++ x%$@@@@@@@@@@@@@@@@@@$%x ++==== + ++==+x x$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$x x+==++ + ++==+o x$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$x o+==++ + ox==++ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++==xo + +++= x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x =+++ + o ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+==xo + ++== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==++ + ==+x @$$$$@= =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+== + == *$$$$$$ =$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$* == + == @$$$$$$ ·=@@$$$$$@@$%%%%%%%%%%%%%%%@@$$$$$@ == + == $$$$$$$@@*~ $$$$$= o@$$$$$ == + == ~@$$$$$$$@@@@x $$$$@ @$$$$@~ == + == ·@$$$$$@$x %$$$$$@x o$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@%+=$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == o@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@x == + ++++ =@@@@@@@@@@@%o +$@@@@@@@@@@$+ o%@@@@@@@@@@@* ++++ + **x~ ~+===+o x====x o+=*=+~ ~+** + **+x ++ ++ x+** + ==**++ ~o*+**==**+= =+**==**+*o~ ++==== + +==****===++ ++=******=++ +++==****==+ + + + diff --git a/src/build/framegen/frames/frame_164.txt b/src/build/framegen/frames/frame_164.txt new file mode 100644 index 000000000..93246f70b --- /dev/null +++ b/src/build/framegen/frames/frame_164.txt @@ -0,0 +1,41 @@ + + + ++++++++ + ++++==************==++++ + ++++****=**%=+xo~~~~ox+=%**=****++++ + xx++===*== =+*===++xx + ++====++ ·~~~~· ++====++ + ++===+ x*$@@@@@@@@@@@@@@@@$*x +===++ + ++==++ =@@@@@$$$$$$$$$$$$$$$$$$@@@@@= ++==++ + x+===+ *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* +===+x + ==++ ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ ++== + ++== @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==++ + ==+o *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* o+== + ++== $@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ==++ + +++x $@$$$@$o x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ x+++ + ==x· +@$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·x== + == @$$$$$$ +$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$@@%x x$$$$$% =$$$$$$ == + == ·@$$$$$$$@@@@= $@$$@ @$$$$@· == + == ·@$$$$$@@*~ +$$$$$% *$$$$$@· == + == ·@$$$$$$ ·=@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ ·=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@x·~=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == =@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@* == + +++x $@@@@@$$@@@@@*x~o+%@@@@@$$@@@@@%+o~o=$@@@@$$$@@@@$· x+++ + **~· ~=%$$$%=o +*$$$$*+ o=%$$$%=~ ** + xx**o~ ~·**xx + ox**+* ++****=*+x x+*=****++ *+**xx + ++==*%%%%%**== x++=*%%%%%%*=++x ==**%%%%%*==++ + + + diff --git a/src/build/framegen/frames/frame_165.txt b/src/build/framegen/frames/frame_165.txt new file mode 100644 index 000000000..35acb5251 --- /dev/null +++ b/src/build/framegen/frames/frame_165.txt @@ -0,0 +1,41 @@ + + + + x+++====********====++++ + ++==**=**%**++++++++**%**=**==++ + ++=*=*=* *=*=*=++ + x+====+= =+====+x + ++===+ ·+%$@@@@@@@@@@@@@@$%+· +===++ + x+==++ x%@@@@@$$$$$$$$$$$$$$$$@@@@@%x ++==+x + xx==++ +@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@+ ++==xx + ==++ %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ++== + ++== $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ ==++ + ==+x +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ x+== + ++== %@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ==++ + ++++ %@$$$@@+~o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++++ + ==+· x@$$$$$ ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+== + == @$$$$$$ ~*@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$@@*· =$$$$$$· *$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$$@%x o$$$$$* =$$$$$@· == + == ·@$$$$$$ +$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@$~ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == %@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@% == + +++o o@@@@$$$$$@@@@%*+=*$@@@$$$$$$@@@$*=+=%@@@@$$$$$@@@@x o+++ + ** +%@@@@@%+ o*$@@@@$*o +%@@@@@%+ **xo + x+** **++ + x+**+= ox****== ==****xo =+**++ + ++**%%%%%%%*==+x ++==*%%%%%%%==++ ++==*%%%%%%%**=+ + + + diff --git a/src/build/framegen/frames/frame_166.txt b/src/build/framegen/frames/frame_166.txt new file mode 100644 index 000000000..1cb8aec8c --- /dev/null +++ b/src/build/framegen/frames/frame_166.txt @@ -0,0 +1,41 @@ + + + + ++++++========++++++ + ++==*****%%%********%%%*****==++ + ++==**=*=+ ++*=**==++ + ++**+= =+**++ + xx====ox ~=%$@@@@@@@@@@@@$%=~ xo====xx + x+===+ ·=@@@@@@$$$$$$$$$$$$$$@@@@@@=· +===+x + ===+ ~%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%~ +=== + ++== =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ==++ + x+== =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ==+x + ==+x ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ x+== + xx== =@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xx + ++++ =@$$$$@*++$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ++++ + ==+· ~@$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ·+== + == @$$$$$$ +$@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$@@x %$$$$$@x ~$$$$$$$ == + == ·@$$$$$$$@@@@x $$$$@ @$$$$@· == + == ·@$$$$$$@@=~ $$$$$= o@$$$$@· == + == ·@$$$$$$ ~=@@$$$$$@@$%%%%%%%%%%%%%%$@@$$$$$@· == + == ·@$$$$$$ ·*@@@@$$$$$$$$$$@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$@* ·=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$@@ == + ==+~ %@@@$$$$$$$$@@@$$$@@@@$$$$$$$$@@@@$$$@@@$$$$$$$$@@@% ·+== + xx== +$@@@@@@@$+ ~*@@@@@@@@*~ +$@@@@@@@$+ ==xx + ++=+ +=++ + ++**oo ==$%++ ++$$== oo==++ + x+==*%=*====****++++++*%**====**%*++++++**=*====*=%*==+x + ++++++ ++++++++ ++++++ + + diff --git a/src/build/framegen/frames/frame_167.txt b/src/build/framegen/frames/frame_167.txt new file mode 100644 index 000000000..f61e8743c --- /dev/null +++ b/src/build/framegen/frames/frame_167.txt @@ -0,0 +1,41 @@ + + + + x ++++++===+++++++ x + xx++*******%*%%*%%%*%*******++xx + xx+=****== ==****=+xx + ++**+*x x*+**++ + ====x+ x*%$@@@@@@@@@@$%*x +x==== + ==== +$@@@@@@$$$$$$$$$$$$@@@@@@$+ ==== + ==++ *@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@* ++== + ++== +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ==++ + x+==o· +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ·x==xx + ==++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++== + ox== +@$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + ++++ +@$$$$@%=*$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ++++ + ==+· @$$$$$ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ·+== + == @$$$$@$ ·=@@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@ == + == @$$$$$@$o ~$$$$$$@+ o@$$$$$@ == + == ·@$$$$$$$@@@$o $$$$@ @$$$$@· == + == ·@$$$$$$@@*x $$$$@= ~@$$$$@· == + == ·@$$$$$$~ +$@$$$$$@@%***************@@$$$$$@· == + == ·@$$$$@$ +$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$$= +$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· $@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·x== + xx== *@@@@@@@@@%o =@@@@@@@@@@= o%@@@@@@@@@%· +++x + ==++ ·~· ~~ ·~· x+== + ==++ x+%% %%+x ++== + ++**=*++xox+==%*==++===%==xoox==%===++==*%==+xoo++*=**++ + +++++===++ +++==+++ +++===++++ + + diff --git a/src/build/framegen/frames/frame_168.txt b/src/build/framegen/frames/frame_168.txt new file mode 100644 index 000000000..c37a57b0e --- /dev/null +++ b/src/build/framegen/frames/frame_168.txt @@ -0,0 +1,41 @@ + + + + xx+++++++++++++x + ++==*****%%%%%%%%%%*****==++ + ++**=*=* *=*=**++ + ++**=*++ ++*=**++ + ++**x+ ~+*$$@@@@@@@@$$*+~ +x**++ + ==== o%@@@@@@@$$$$$$$$$$@@@@@@@%o ==== + ++== =@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@= ==++ + ++== o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o ==++ + ox==x· x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ·x==xo + ++++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++++ + == o@$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + ++++ x@$$$$@$%%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ++++ + ==+~ @$$$$$ o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+== + == $$$$$$$ o*@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@%· o@$$$$$@*· +@$$$$$@ == + == ·@$$$$$$$@@@*~ $$$$@~ @$$$$@· == + == ·@$$$$$$@@$= $$$$@+ @$$$$@· == + == ·@$$$$$$x x%@$$$$$@@*===============$@$$$$$@· == + == ·@$$$$@% o%@@@@$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$$x o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == o@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@x == + ++++ =@@@@@@@@@@@*o ·+$@@@@@@@@@@$+· o*@@@@@@@@@@@* ++++ + **+~ ~+=*=+o ·x=**=x· o+=*=+~ ·+** + **xx ++ ++ o+**xx + ====++ *=**==**+= =+**==**=* ++==== + +==**%*==+++ ++=******=++ ++=***%%*==+ + + diff --git a/src/build/framegen/frames/frame_169.txt b/src/build/framegen/frames/frame_169.txt new file mode 100644 index 000000000..39e0d9023 --- /dev/null +++ b/src/build/framegen/frames/frame_169.txt @@ -0,0 +1,41 @@ + + + + ++++++++++++ + ++++****%%%%%%%%%%%%****++++ + ++***%*%x~ ~x%*%***++ + ++**==++ ++==**++ + ++**++ ·x*%$$@@@@@@$$%*x· ++**++ + ++==~ o*@@@@@@@@$$$$$$$$@@@@@@@@*o ~==++ + ++== =@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@= ==++ + ++== ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ ==++ + ==x· o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ·x== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == o@$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + x+++ o@$$$$@$%%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o +++x + ==x~ @$$$$$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~x== + == $$$$$$% x%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@% x@$$$$$@*~ ·=@$$$$$@ == + == ·@$$$$$$@@@@=· $$$$@~ @$$$$@· == + == ·@$$$$$$@@$=~ $$$$@x @$$$$@· == + == ·@$$$$$$x o%@$$$$$@@=+++++++++++++++$@$$$$$@· == + == ·@$$$$@% o*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$o ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == =@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@* == + +++x $@@@@$$$@@@@@=x~o+%@@@@@$$@@@@@%+o~x=@@@@@$$$@@@@$ x+++ + **~· ~=%$$$%=o x*$$$$*x o=%$$$%=~ ** + xx**o~ ~~**+x + x+**+= ++******+x x+*=****++ *+**+x + ++==*%%%%%%*== xx==*%%%%%%*==xx ==*%%%%%%*==++ + + diff --git a/src/build/framegen/frames/frame_170.txt b/src/build/framegen/frames/frame_170.txt new file mode 100644 index 000000000..cd5c33eb0 --- /dev/null +++ b/src/build/framegen/frames/frame_170.txt @@ -0,0 +1,41 @@ + + + + +x++++x+ + ++==***%%%%%%%%%%***==++ + x+==**=*+o o+*=**==+x + ==**++ ++**== + ++**++ x=%$$@@@@@@$$%=x ++**++ + ++**oo ~=@@@@@@@@$$$$$$$$@@@@@@@@=~ oo**++ + ++== +$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ ==++ + ++=* ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ *=++ + ==x~ o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o ~x== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@@$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ == + x+++ o@$$$$@@%$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o +++x + ++x~ @$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~x++ + == $$$$$$% +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@* +@$$$$$@%o~~~~~~~~~~~~~~~=@$$$$$@ == + == ·@$$$$$$@@@$= $$$$@~ @$$$$@· == + == ·@$$$$$$@@@*~ $$$$@x @$$$$@· == + == ·@$$$$$$+ ~*@$$$$$@$+xxxxxxxxxxxxxx+%@$$$$$@· == + == ·@$$$$@% ~*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$o ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$· == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == $@$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@@ == + +++o =@@@$$$$$$$@@@@%**$@@@@$$$$$$@@@@$**%@@@@$$$$$$$@@@= ~+++ + xx== ~*@@@@@@@*o +$@@@@@@$+ o*@@@@@@@*~ ==xo + ++== ==++ + ++**++ =*%%== ==%%*= +x**++ + +=**%%%%%*%=**+x ++***%%%%%%***++ ++**=%*%%%%***=+ + xxxx xxxx xxxx + diff --git a/src/build/framegen/frames/frame_171.txt b/src/build/framegen/frames/frame_171.txt new file mode 100644 index 000000000..fdaa337ab --- /dev/null +++ b/src/build/framegen/frames/frame_171.txt @@ -0,0 +1,41 @@ + + + + ++++ + ++==***%*%%%%%%*%***==++ + xx==***%+x x+%***==+x + ==**++ ++**== + ++**++ o=*%$$@@@@$$%*=o ++**++ + ++**oo ·=$@@@@@@@$$$$$$$$@@@@@@@$=· oo**++ + ++== +$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ ==++ + xx=* ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· *=+x + ==+~ ~@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@~ ~+== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@@$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ == + xx++ o@$$$$@@$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ++xx + +++~ @$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + == $$$$$$% +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@* +@$$$$$@%o~~~~~~~~~~~~~~~=@$$$$$@ == + == ·$$$$$$$@@@$+ $$$$@~ @$$$$$· == + == ·@$$$$$$@@@*o $$$$@o @$$$$@· == + == ·@$$$$$$+ ~*@$$$$$@$+xxxxxxxxxxxxxx+%@$$$$$@· == + == ·@$$$$@% ·*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$~ ·=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+~ %@@$$$$$$$$$@@@@$$@@@@$$$$$$$$@@@@$$@@@@$$$$$$$$$@@% ·+== + xx== +$@@@@@@@@= o%@@@@@@@@%o =@@@@@@@@$+ ==+x + ++=+ +=++ + ++==o +=%$++ ++$%=+ o==++ + x+==**=*===*%***++xx++*%*%====%*%*++xx++***%*===***===++ + ++++++xx ++++++++ xx+==+++ + diff --git a/src/build/framegen/frames/frame_172.txt b/src/build/framegen/frames/frame_172.txt new file mode 100644 index 000000000..99d6bf35c --- /dev/null +++ b/src/build/framegen/frames/frame_172.txt @@ -0,0 +1,41 @@ + + + + + ++++***%%$%%%%$%%***++++ + ++***%+x x+%***++ + ++**++ ++**++ + x+**++ o=*%$$@@@@$$%*=o ++**+x + ++**oo ·=$@@@@@@@$$$$$$$$@@@@@@@$=· oo**++ + ++** +$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ **++ + xx** ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· **xx + ==+~ ~@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@~ ~+== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@@$$$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ == + xx++ ~@$$$$@@$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ++xx + +++~ @$$$$$ +%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + == $$$$$$% +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@* +@$$$$$@%o~~~~~~~~~~~~~~~=@$$$$$@ == + == ·$$$$$$$@@@$+ $$$$@~ @$$$$$· == + == ·@$$$$$$@@@*o $$$$@o @$$$$@· == + == ·@$$$$$@+ ~*@$$$$$@$+xxxxxxxxxxxxxx+%@$$$$$@· == + == ·@$$$$@% ·*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$~ ·=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· @@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·x== + ++++ ~%@@@@@@@@@$x =@@@@@@@@@@= x$@@@@@@@@@%~ ++++ + ===x ~~~ ·~~· ~~~ x+== + ===+ x+%% %%+x +=== + ++**=%+x··~o==*===++***%=+o~·~+=%***++===*==o~··x+%=**++ + +++====+++ xx++====++xx ++======++ + diff --git a/src/build/framegen/frames/frame_173.txt b/src/build/framegen/frames/frame_173.txt new file mode 100644 index 000000000..3c8dff4a2 --- /dev/null +++ b/src/build/framegen/frames/frame_173.txt @@ -0,0 +1,41 @@ + + + + + ++==***%%%%%%%%%%***==++ + +=***%+o o+%***=+ + +=**++ ++**=+ + xx**++ o=%%$$@@@@$$%%=o ++**xx + x+**oo ~=$@@@@@@@$$$$$$$$@@@@@@@$=~ oo**+x + xx** +$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ **xx + xx** ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· **xx + ==+~ ~@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@~ ~+== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@@$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ == + xx++ o@$$$$@@$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ++xx + +++~ @$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + == $$$$$$% +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@* +@$$$$$@%o~~~~~~~~~~~~~~~=@$$$$$@ == + == ·$$$$$$$@@@$+ $$$$@~ @$$$$$· == + == ·@$$$$$$@@@*o $$$$@x @$$$$@· == + == ·@$$$$$$+ ~*@$$$$$@$+xxxxxxxxxxxxxx+%@$$$$$@· == + == ·@$$$$@% ~*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$o ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x ·@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@~ == + ++++ x@@@@@@@@@@@= o%@@@@@@@@@@%o =@@@@@@@@@@@x ++xx + ==+o ~x+xo ·x++x· ox+xo o+== + **++ == =* x+** + +=**==o· ++*=**==**=*+o o+*=**==**=*+x ·o*+**=+ + ++==****++++ ++==****==++ ++++****==++ + diff --git a/src/build/framegen/frames/frame_174.txt b/src/build/framegen/frames/frame_174.txt new file mode 100644 index 000000000..bd1a0a093 --- /dev/null +++ b/src/build/framegen/frames/frame_174.txt @@ -0,0 +1,41 @@ + + + + + ++==**%%%%%%%%%%%%**==++ + +=***%+o o+****=+ + +=**++ ++**=+ + xx**++ ·x=%$$@@@@@@$$%=x· ++**xx + x+**~ ~*@@@@@@@@$$$$$$$$@@@@@@@@*~ ~**+x + ++** +@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@+ **++ + xx** ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ **xx + ==x· o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ·x== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + xx++ o@$$$$@@%$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ++xx + ++x~ @$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~x++ + == $$$$$$% x%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@% +@$$$$$@*~··············~=@$$$$$@ == + == ·@$$$$$$@@@$=· $$$$@~ @$$$$@· == + == ·@$$$$$$@@$=~ $$$$@x @$$$$@· == + == ·@$$$$$$+ o*@$$$$$@$=+++++++++++++++%@$$$$$@· == + == ·@$$$$@% ~*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$o ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@x == + ++++ =@@@@@@@@@@@%o ~+@@@@@@@@@@@@+~ o%@@@@@@@@@@@* ++++ + **x~ ~+***=o ·x=**=x· o=***+o ·x** + **+x ++ ++ ox**xx + ====++ *=**==**+= =+**==**=* ++==== + ++=**%%**=++ ++=**%%**=++ ++=**%%*==++xx + diff --git a/src/build/framegen/frames/frame_175.txt b/src/build/framegen/frames/frame_175.txt new file mode 100644 index 000000000..1765bcfbe --- /dev/null +++ b/src/build/framegen/frames/frame_175.txt @@ -0,0 +1,41 @@ + + + + + +++=*%%%%%%%%%%%%%%*=+++ + +=*%=*x· ·x*=%*=+ + ++**++ ++**++ + x+**++ ~+*%$@@@@@@@@$%*+~ ++**+x + ++** o*@@@@@@@$$$$$$$$$$@@@@@@@*o **++ + xx** =@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@= **xx + xx** o$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$o **xx + =*x· o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ·x*= + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + =* o@$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o *= + xx++ x@$$$$@$%%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ++xx + +++~ @$$$$$ o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + == $$$$$$$ x%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@% x@$$$$$@*~ ·+@$$$$$@ == + == ·@$$$$$$@@@@*~ $$$$@~ @$$$$@· == + == ·@$$$$$$@@$=· $$$$@x @$$$$@· == + == ·@$$$$$$x o%@$$$$$@@=++++++++++++++=$@$$$$$@· == + == ·@$$$$@% o%@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$x o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@+ == + ++++ *@@@@@@@@@@@$+~ ·o*@@@@@@@@@@@@*o ~+$@@@@@@@@@@@% ++++ + **x· x*%%%*+ o=%%%%=o +*%%%*x ·o** + xx**xo xx xx ~x**xx + ===*+x *+****==++ ++==****+* o+*=** + ++==**%%%**=++ ++=*%%%%*=++ ++==*%%%%*==++ + diff --git a/src/build/framegen/frames/frame_176.txt b/src/build/framegen/frames/frame_176.txt new file mode 100644 index 000000000..5dbc4d248 --- /dev/null +++ b/src/build/framegen/frames/frame_176.txt @@ -0,0 +1,41 @@ + + + + ++++ + ++=**%*%%%%%%%%%%*%**=++ + x+==*%=* *=%*==+x + ===*++ ++*=== + x+**++ o=%$@@@@@@@@@@$%=o ++**+x + ++** x%@@@@@@$$$$$$$$$$$$@@@@@@%x **++ + ++== *@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@* ==++ + x+=* x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x **+x + **x· +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ·x** + ++++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++++ + =* x@$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x *= + xx++ +@$$$$@$**$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ++xx + +++~ @$$$$$ ·*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + == @$$$$@$ ~*@@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@ == + == @$$$$$@$~ o$$$$$$@= x@$$$$$@ == + == ·@$$$$$$$@@@%o $$$$@· @$$$$@· == + == ·@$$$$$$@@%x $$$$@+ ·@$$$$@· == + == ·@$$$$$$~ +$@$$$$$@@*==============*@@$$$$$@· == + == ·@$$$$@% x%@@@@$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$$+ x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == =@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@* == + +++x $@@@@@$@@@@@@=o~o+%@@@@@@@@@@@@%xo~o=@@@@@@$@@@@@$ x+++ + **o· ~=%$$$%=~ x*$$$$*x ~=%$$$%=~ ** + x+**o~ ~~**xx + xx**+= ++=***=*+x x+*=***=++ ==**xx + ++==*%%%%%**== ++++*%%%%%%*++++ ==**%%%%%*==++ + diff --git a/src/build/framegen/frames/frame_177.txt b/src/build/framegen/frames/frame_177.txt new file mode 100644 index 000000000..828afeb63 --- /dev/null +++ b/src/build/framegen/frames/frame_177.txt @@ -0,0 +1,41 @@ + + + + x++++++x + +===*%%%%%****%%%%%*===+ + ++===*+= =+*===++ + ===* *=== + x+**x+ ·+*$@@@@@@@@@@@@$*+· xx**++ + ++*= +$@@@@@@$$$$$$$$$$$$@@@@@@$+ =*++ + ++== ·%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%· =*++ + ++== =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ==++ + **o· =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ·o** + ++++ ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· ++++ + =* +@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ *= + x+++ =@$$$$@%==$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= +++x + +++· ·@$$$$$ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· ·+++ + == @$$$$@$ =$@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@ == + == @$$$$$@$o ·%$$$$$@+ o$$$$$$@ == + == ·@$$$$$$$@@@$o $$$$@ @$$$$@· == + == ·@$$$$$$@@*o $$$$$= o@$$$$@· == + == ·@$$$$$$· =@@$$$$$@@%**************%@@$$$$$@· == + == ·@$$$$$$ =$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$$= +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@* == + +++x ·$@@@@$$$@@@@@*xoo+$@@@@@$$@@@@@$+oox*@@@@@$$$@@@@@~ x+++ + ** ~=%$$$$*o +%$$$$%+ o*$$$$%*o ** + xx**~~ **++ + ++**+= ++==**==x~ ~x==**==++ =+**+x + ++==*%%%%%%*== x+==*%%%%%%*==++ ==**%%%%%*==++ + diff --git a/src/build/framegen/frames/frame_178.txt b/src/build/framegen/frames/frame_178.txt new file mode 100644 index 000000000..30b75b9a6 --- /dev/null +++ b/src/build/framegen/frames/frame_178.txt @@ -0,0 +1,41 @@ + + + + ++++++++++++ + ++++***%%%==++++==%%%***++++ + ++**=*+o o+*=**++ + x+**== ==**+x + ++** x*$@@@@@@@@@@@@@@$*x **++ + ++*+ o%@@@@@@$$$$$$$$$$$$$$@@@@@@%o +*++ + ++=+ x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$x +=++ + ++== %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ==++ + ** %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ** + +++x x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x x+++ + == *@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* == + xx++ *@$$$$@=ox*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++xx + ==+· o@$$$$$ o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ·+== + == @$$$$$$ o%@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$@@= *$$$$$$~ %$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$$@$+ ~$$$$$* +@$$$$@· == + == ·@$$$$$$ x%@@$$$$$@@@$$$$$$$$$$$$$$@@@$$$$$@· == + == ·@$$$$@$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@%· o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@% == + +++x ~@@@@@$$$@@@@@%+xx=$@@@@$$$$@@@@$=xo+*@@@@@$$$@@@@@o x+++ + ** o*$$@$$%x ·=%$@@$%=· x%$@@$$*x ** + x+** **+x + xx**+= xx****== ==***=xx =+**++ + ++==*%%%%***++xx ++==*%*%%*%*==++ xx++*%*$%%%*==++ + diff --git a/src/build/framegen/frames/frame_179.txt b/src/build/framegen/frames/frame_179.txt new file mode 100644 index 000000000..157ef6e50 --- /dev/null +++ b/src/build/framegen/frames/frame_179.txt @@ -0,0 +1,41 @@ + + + + ++++++++++++ + ++==*%*%==++xxxx++==%*%*==++ + ++**=* *=**++ + ++**+= =+**++ + ++== o=%@@@@@@@@@@@@@@@@%=o ==++ + ===+ +$@@@@@$$$$$$$$$$$$$$$$@@@@@$+ +=== + ++=+ =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= +=++ + ++=+ $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ +=++ + ** $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ ** + +++o =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= o+++ + == $@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + x+++ %@$$$@@x ·=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% +++x + ==+· x@$$$$$ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+== + == @$$$$$$ ·=@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$@@*~ +$$$$$% *$$$$$$ == + == ·@$$$$$$$@@@@= $@$$@ @$$$$@· == + == ·@$$$$$$@%o x$$$$$% =$$$$$@· == + == ·@$$$$$$ +$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@$o +$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@% == + +++x ~@@@@@$$$$@@@@%+xx=$@@@@$$$$@@@@$=xx+%@@@@$$$$@@@@@o x+++ + ** x*$$@@$%x ~=%$@@$%=~ x%$@@@$%x ** + x+** **+x + ++**+= xx****== ==****xx =+**++ + ++==*%%%%*%*=+++ ++==*%*%%*%*==++ +++=*%*%%%%**=++ + diff --git a/src/build/framegen/frames/frame_180.txt b/src/build/framegen/frames/frame_180.txt new file mode 100644 index 000000000..01fa033f2 --- /dev/null +++ b/src/build/framegen/frames/frame_180.txt @@ -0,0 +1,41 @@ + + + + ++++===***==++++ + ==***%==xo ox==%***== + ===*++ ++*=== + ++**++ ·oxx++xxo· ++**++ + ===+ o=$@@@@@@@@@@@@@@@@@@$=o +=== + **++ o%@@@@@$$$$$$$$$$$$$$$$$$@@@@@%o ++** + ==+x ~$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$~ x+== + ++++ x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x ++++ + xx== o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ==xx + ==x~ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ~x== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + +++x @$$$$@% ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ==x =$$$$@$ ~*@@@@$$$$$$$$$$@@@@@@@@@@@@@@$$$$$$$$= x== + == @$$$$$$ o*@@$$$$$@@@$$$$$$$$$$$$$$$@@$$$$$@ == + == $$$$$$$@$= ·$$$$$* x@$$$$$ == + == ~@$$$$$$$@@@@x $$$$@ @$$$$@· == + == ·@$$$$$@@+ *$$$$$$o %$$$$$@· == + == ·@$$$$$$ x%@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@*x+%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == %@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@% == + +++x ~@@@@@$$$$@@@@%+xx=$@@@@$$$$@@@@$=xx+%@@@@$$$$@@@@@o o+++ + ** x*$@@@$%x ~=%$@@$%=~ x%$@@@$%x ** + x+** **++ + x+**+= x+****== ==****xx =+**++ + ++***%%%%*%*==++ ++==*%*%%*%*==++ x+==*%*%%%%**=++ + diff --git a/src/build/framegen/frames/frame_181.txt b/src/build/framegen/frames/frame_181.txt new file mode 100644 index 000000000..ea015b628 --- /dev/null +++ b/src/build/framegen/frames/frame_181.txt @@ -0,0 +1,41 @@ + + + + ++++=***%%%%**==++++ + ++==*%**+x x+**%*==++ + ++**=* *=**++ + ==== ox=******=xo ==== + **++ ·=$@@@@@@@@@@@@@@@@@@@@$=· ++** + **+o =@@@@@$$$$$$$$$$$$$$$$$$$$@@@@@= o+** + **x~ +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ~x** + +++x *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* x+++ + xx== +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ==xx + ==x· @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ·x== + ox== @$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xo + +++o @$$$$$+ x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + == %$$$$@$ +%@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$% == + == @$$$$$$~ +$@$$$$$@@%==============*@@$$$$$@ == + == $$$$$$$@@%x $$$$@+ ·@$$$$$ == + == ~@$$$$$$$@@@%o $$$$@· @$$$$@~ == + == ·@$$$$$@$~ o$$$$$$@= x@$$$$$@· == + == ·@$$$$@$ ~*@@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ ·*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@$**$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@% == + +++x ~@@@@@$$$@@@@@%+xx=$@@@@$$$$@@@@$=xx+%@@@@$$$$@@@@@o x+++ + ** o*$$@@$%x ·=%$@@$%=· x%$@@$$*x ** + x+** **+x + ++**+= xx****== ==****xx =+**++ + ++==*%%%%*%*=+xx ++==*%%%%%%*==++ xx++*%*%%%%**=++ + diff --git a/src/build/framegen/frames/frame_182.txt b/src/build/framegen/frames/frame_182.txt new file mode 100644 index 000000000..3545521c6 --- /dev/null +++ b/src/build/framegen/frames/frame_182.txt @@ -0,0 +1,41 @@ + + + + ++++=**%%%%%%%%%%**=++++ + +=***%+x x+%***=+ + ++**+= =+**++ + ox**+= o=*%$@@@@@@$%*=o =+**xo + ++**oo ·=$@@@@@@@$$$$$$$$@@@@@@@$=· oo**++ + x+** x$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$x **+x + ox** ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· **xo + ==+~ ~@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@~ ~+== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· == + xx++ ~@$$$$@@$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ++xx + +++~ @$$$$$ x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + == $$$$$@% +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@* +@$$$$$@%x~~~~~~~~~~~~~~o*@$$$$$@ == + == ·$$$$$$$@@@$+ $$$$@~ @$$$$$· == + == ·@$$$$$$@@@*o $$$$@x @$$$$@· == + == ·@$$$$$@+ ~*@$$$$$@$+xxxxxxxxxxxxxxx%@$$$$$@· == + == ·@$$$$@% ·=@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$~ ·=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@* == + +++x ·$@@@@$$$@@@@@*xox=$@@@@$$$$@@@@$=oox*@@@@@$$$@@@@@~ x+++ + ** o*%$$$$*x ·+%$$$$%+· x*$$$$$*o ** + x+**~ **+x + x+**+= +x*=**==x ==**==x+ =+**++ + ++==*%*%%%**++xx ++==*%%%%%%*==++ xx++**%%%*%*==++ + diff --git a/src/build/framegen/frames/frame_183.txt b/src/build/framegen/frames/frame_183.txt new file mode 100644 index 000000000..5368c629a --- /dev/null +++ b/src/build/framegen/frames/frame_183.txt @@ -0,0 +1,41 @@ + + + ++++ + ++==*%%%*%****%*%%%*==++ + x+==*%== ==%*==+x + ===*xo ox*=== + ++**x+ x*%$@@@@@@@@@@$%*x +x**++ + ++*= +$@@@@@@$$$$$$$$$$$$@@@@@@$+ =*++ + ++== *@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@* ==+x + xx== +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ==xx + **o· +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ·o** + ++++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++++ + ** +@$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ *= + xx++ +@$$$$@%=*$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ++xx + +++~ @$$$$$ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ·+++ + == @$$$$$$ ·=@@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@ == + == @$$$$$@$o ~$$$$$$@+ x@$$$$$@ == + == ·@$$$$$$$@@@$o $$$$@· @$$$$@· == + == ·@$$$$$$@@%o $$$$$+ ~@$$$$@· == + == ·@$$$$$$~ +$@$$$$$@@%**************%@@$$$$$@· == + == ·@$$$$@$ +$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$@= +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@* == + +++x $@@@@@$$@@@@@*xoo+%@@@@@$$@@@@@%+o~x=@@@@@$$@@@@@$· x+++ + **o ~=%$$$%*o +%$$$$%+ o*%$$$%=~ ** + x+**~~ ~**+x + x+**== ++==**==+o ox==**==++ =+**++ + ++==*%%%%%**++xx ++==*%%%%%%*==++ x+++**%%%%%**=++ + diff --git a/src/build/framegen/frames/frame_184.txt b/src/build/framegen/frames/frame_184.txt new file mode 100644 index 000000000..f92a332be --- /dev/null +++ b/src/build/framegen/frames/frame_184.txt @@ -0,0 +1,41 @@ + + + x ++++====++++ + ++==*%*%==++++++++==%*%*==++ + ++**=* *=**++ + x+**+= ·· =+**+x + ++== o=%@@@@@@@@@@@@@@@@%=o ==++ + ===+ +$@@@@@$$$$$$$$$$$$$$$$@@@@@$+ +=== + ++++ =@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@= ++++ + ++=+ $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ +=++ + ** $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ** + +++o =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= o+++ + == $@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + ++++ $@$$$@@x ·+$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + ==+· +@$$$$$ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+== + == @$$$$$$ =$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$$@*o +$$$$$% *$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$$@%o x$$$$$% =$$$$$@· == + == ·@$$$$$$ =@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@$o +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@= == + ++++ %@@@@@@@@@@@$+o·~x*@@@@@@@@@@@@*o··~+$@@@@@@@@@@@% x+++ + **x· +*%%%*+· o=%%%%=o ·+%%$%*+ ·o** + x+**o~ oo oo oo**++ + x+**+=+~ =+******+x x+******+= ~x=+**++ + ++==**%%%***++xx ++==***%%***==++ xx++***%%%**==++ + diff --git a/src/build/framegen/frames/frame_185.txt b/src/build/framegen/frames/frame_185.txt new file mode 100644 index 000000000..66aaba24c --- /dev/null +++ b/src/build/framegen/frames/frame_185.txt @@ -0,0 +1,41 @@ + + + ++++==****==++++ + ==***%==xo ox==%***== + ===*++ ++*=== + ++**x+ ·oxx++xxo· +x**++ + ===+ o*$@@@@@@@@@@@@@@@@@@$*o +=== + **++ o%@@@@@$$$$$$$$$$$$$$$$$$@@@@@%o x+** + ==+o ~$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$~ o+== + ++++ +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ++++ + ox== o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ==xo + ==+~ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ~+== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + +++x @$$$$@* ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ==x *$$$$$$ ~*@@@@$$$$$$$$$$@@@@@@@@@@@@@@$$$$$$$$* x== + == @$$$$$$ ~*@@$$$$$@@$%%%%%%%%%%%%%%$@@$$$$$@ == + == $$$$$$$@@= ·$$$$$* x$$$$$$ == + == ~@$$$$$$$@@@@x $$$$@ @$$$$@~ == + == ·@$$$$$@@+ *$$$$$$o ·$$$$$$@· == + == ·@$$$$$$ x$@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@*x+%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@+ == + ++++ *@@@@@@@@@@@%x· ~=@@@@@@@@@@@@=~ x%@@@@@@@@@@@* ++++ + **x· o=*%%=x ~+*%%*+~ x=%%%=x ·x** + x+**xo ++ ++ ox**+x + x+**=*xx *+****=*++ ++==****+* x+==**++ + ++==********++xx ++==********==++ xx++********==++ + diff --git a/src/build/framegen/frames/frame_186.txt b/src/build/framegen/frames/frame_186.txt new file mode 100644 index 000000000..d49b01d10 --- /dev/null +++ b/src/build/framegen/frames/frame_186.txt @@ -0,0 +1,41 @@ + + + +++=**%%%%%%%%**=+++ + ++***%==o· ·o==%***++ + ++**+* *+**++ + ==== o+=*%$$$$%*=+o ==== + x+**xx x*@@@@@@@@@@@@@@@@@@@@@@*x xx**+x + xx**~~ ~%@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@%~ ~~**xx + **x· *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ·o** + ==+o %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% o+== + xx== *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ==xx + ==x· @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ·x== + xx== @$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xx + +++o @$$$$$o ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + == %$$$$@% ~*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$% == + == @$$$$$$+ o*@$$$$$@$=+++++++++++++++%@$$$$$@ == + == $$$$$$$@@@=~ $$$$$x @$$$$$ == + == ·@$$$$$$@@@@= $$$$@~ @$$$$@· == + == ·@$$$$$@% +@$$$$$@%~··············~=@$$$$$@· == + == ·@$$$$@% x%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@%%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@o == + ++++ +@@@@@@@@@@@=~ x$@@@@@@@@@@$x ·=@@@@@@@@@@@+ ++++ + **+~ o+=+x· o+==+o ·x+=+x ~x** + xx**+x == == x+**+x + xx**==+= ~x*=******+* *+******=*x~ =+==**xx + ++==********++ x+++********+++x ++********==++ + diff --git a/src/build/framegen/frames/frame_187.txt b/src/build/framegen/frames/frame_187.txt new file mode 100644 index 000000000..a3fe2f9cb --- /dev/null +++ b/src/build/framegen/frames/frame_187.txt @@ -0,0 +1,41 @@ + + + ++==**%%*%%%%%%*%%**==++ + ==***%xx xx%***== + ++**++ ++**++ + xx**++ x=*$$@@@@@@$$*=x ++**+x + ++**~o ~*$@@@@@@@$$$$$$$$@@@@@@@$*~ oo**++ + ++** +$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ **++ + xx** ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ **xx + ==+~ ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ ~+== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@$$$$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + x+++ o@$$$$@@%$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o +++x + +++~ @$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + == $$$$$$$ x$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@* +@$$$$$@%o··············~=@$$$$$@ == + == ·$$$$$$$@@@$= $$$$@~ @$$$$$· == + == ·@$$$$$$@@$*o $$$$@x @$$$$@· == + == ·@$$$$$$+ ~*@$$$$$@$=xxxxxxxxxxxxxx+%@$$$$$@· == + == ·@$$$$$$ ~*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$o ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==+· @@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@ x== + ++=+ o$@@@@@@@@@@+ ~*@@@@@@@@@@*~ +@@@@@@@@@@$x ++++ + ==+x ·oxo~ ~oo~ ~oxo· o+*= + x+**+x =* *= ++**xx + x+==**+*+o ++*=**==**=*+x x+*=**==**=*++ ~+*=**==xx + ++++******==++ ++++********++++ ++==******++++ + diff --git a/src/build/framegen/frames/frame_188.txt b/src/build/framegen/frames/frame_188.txt new file mode 100644 index 000000000..383a1143f --- /dev/null +++ b/src/build/framegen/frames/frame_188.txt @@ -0,0 +1,41 @@ + + xx++++xx + ===*%%%%*%****%*%%%%*=== + ++**=%++ ++%=*=++ + ==** **== + x+**+x ~+*$@@@@@@@@@@@@$*+~ x+**+x + ++== =$@@@@@$$$$$$$$$$$$$$@@@@@$= ==++ + ++*= ~%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%~ =*++ + x+== =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ==+x + **o =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= o*= + ++++ ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· ++++ + == =@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= == + x+++ =@$$$$@%+=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ++xx + +++· ·@$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· ·+++ + == @$$$$$$ +$@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@ == + == $$$$$$@@x %$$$$$@x ~$$$$$$$ == + == ·@$$$$$$$@@@$x $$$$@ @$$$$@· == + == ·@$$$$$$@@*~ $$$$$= o$$$$$@· == + == ·@$$$$$$ =$@$$$$$@@$%%%%%%%%%%%%%%%@@$$$$$@· == + == ·@$$$$@% =@@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$@* =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==x· $@@$$$$$$$$$@@@@@@@@@@$$$$$$$$@@@@@@@@@@$$$$$$$$$@@$ ·+== + ++++ =@@@@@@@@@*· x$@@@@@@@@$x *@@@@@@@@@= ++++ + ==++ +=== + xx=*=+ ++%%xx xx%%++ +===xx + ==**=*==++++*=*=**==**=%=*++++*=%***==**=*=*++++==*=**==xx + ++++==****==++ ++==****==++ ++==****==++++ + diff --git a/src/build/framegen/frames/frame_189.txt b/src/build/framegen/frames/frame_189.txt new file mode 100644 index 000000000..6fedc5596 --- /dev/null +++ b/src/build/framegen/frames/frame_189.txt @@ -0,0 +1,41 @@ + + xx++++++++xx + x+==*%*%*%========%*%*%*=++x + ++**=*+x x+*=**++ + xx**=* ==**xx + ++**o x*$@@@@@@@@@@@@@@$*x o**++ + ++=+ o*@@@@@$$$$$$$$$$$$$$$$@@@@@*o +=++ + ++=+ x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$x +=++ + x+== *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ==+x + ** %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ** + +++x x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x x+++ + =* *@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* *= + ++++ *@$$$@@=ox*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++++ + ==+· o@$$$$$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ·+== + == @$$$$$$ o%@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$@@= *$$$$$$~ %$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$$@$+ ~$$$$$* +$$$$$@· == + == ·@$$$$$$ o%@@$$$$$@@@$$$$$$$$$$$$$$$@@$$$$$@· == + == ·@$$$$@$ o%@@@@$$$$$$$$$$@$$$$$$$$$$$$@$$$$$$$$@· == + == ·@$$$$$$% o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$· == + == @@$$$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$@@ == + ==+~ *@@@$$$$$$$@@@@$%%@@@@$$$$$$$$@@@@%%$@@@@$$$$$$$@@@* ~+== + ++== o%@@@@@@@$x ·*@@@@@@@@*· x$@@@@@@@%x ==++ + ===+ +=== + ox====o+ ==%%++ ++%%== +o====+x + ++**=**%****%***==++**=*=******=*=**++==***%****%*****++ + xx+++=====++++ ++++====++++ ++++======+++x + diff --git a/src/build/framegen/frames/frame_190.txt b/src/build/framegen/frames/frame_190.txt new file mode 100644 index 000000000..95209a1f3 --- /dev/null +++ b/src/build/framegen/frames/frame_190.txt @@ -0,0 +1,41 @@ + + xx++++====++++xx + ++==*%**==++oooo++==**%*==++ + ++**=* *=**++ + ++**+= ···· =+**++ + ++== x=$@@@@@@@@@@@@@@@@$=x ==++ + ==++ =$@@@@$$$$$$$$$$$$$$$$$$@@@@$= ++== + ===+ *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* +=== + ++=+ ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· +=++ + ox** $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ **xo + +++o =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= o+++ + == $@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + ++++ $@$$$@$x +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + ==+· +@$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+== + == @$$$$$$ =$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$$@%o x$$$$$% =$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$$@%o +$$$$$% *$$$$$@· == + == ·@$$$$$$ =$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ =@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@$x ·+$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == %@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@% == + ==+x ~@@@@$$$$$@@@@%+x+=$@@@@$$$$@@@@$=+x+%@@@@$$$$$@@@@o o+== + xx== x*$@@@$%x ~=$@@@@$=~ x%$@@@$*x ==xx + ==== ==== + ====+= xx*=**== ==**=*xx =+==== + ++*****%*%%*****==++==***%*%%*%***==++==*****%%%%*****++ + ++++++++++++ x++++++++++x ++++++++++++ + diff --git a/src/build/framegen/frames/frame_191.txt b/src/build/framegen/frames/frame_191.txt new file mode 100644 index 000000000..7da0266e4 --- /dev/null +++ b/src/build/framegen/frames/frame_191.txt @@ -0,0 +1,41 @@ + + ++====****====++ + ==**%%=*++oo····~o++*=%%**++ + +=**== ==**=+ + ++**++ ·~~oo~~· ++**++ + ===+ +%@@@@@@@@@@@@@@@@@@%+ +=== + ===+ ·*@@@@@$$$$$$$$$$$$$$$$$$@@@@@*· ++== + ===x %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@% x=== + ++=+ o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o +=++ + xx== @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xx + ==+~ *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ~+== + == $@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + +++x $$$$$@$~ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ x+++ + ==x· =@$$$@$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·x== + == @$$$$$$ x$@@$$$$$@@@$$$$$$$$$$$$$$@@@$$$$$@ == + == $$$$$$$@$x o$$$$$% +$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$$@=· =$$$$$$ %$$$$$@· == + == ·@$$$$$$ ~*@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@+~o=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@= == + ==++ *@@@@@@@@@@@$+~ o*@@@@@@@@@@@@*o ·+$@@@@@@@@@@@% x+== + ++==x· x=%%%*x o=*%%*=o x*%%%*x ·x==++ + ====oo xx xx ~o==== + ====+=++ =+*==*==++ ++=====*+= ox=+==== + ++==**=*********++++==***%****%***==++++*********=**==++ + ++++++++++xx ++++++++++++ xx++++++++++ + diff --git a/src/build/framegen/frames/frame_192.txt b/src/build/framegen/frames/frame_192.txt new file mode 100644 index 000000000..f03d9280b --- /dev/null +++ b/src/build/framegen/frames/frame_192.txt @@ -0,0 +1,41 @@ + + ++====****====++ + +=***%==+o o+==%***=+ + ===*++ ++*=== + ++**x+ ·ooxxxxoo· ++**++ + ===+ o=$@@@@@@@@@@@@@@@@@@$=o +=== + **++ o%@@@@$$$$$$$$$$$$$$$$$$$$@@@@%o x+** + ==+x ~$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$~ x+== + ++++ +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ++++ + ox== ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ ==xo + ==+~ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ~x== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + +++x @$$$$@% ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ==+ =@$$$@$ ~*@@@@$$$$$$$$$$@@@@@@@@@@@@@@$$$$$$$@= +== + == @$$$$$$ o%@@$$$$$@@$$$$$$$$$$$$$$$$@@$$$$$@ == + == $$$$$$$@$=· ·$$$$$* x$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$@@+ *$$$$$$o $$$$$$@· == + == ·@$$$$$$ x%@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@=x+%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· @@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@ x== + ++++ o$@@@@@@@@@$+ ·*@@@@@@@@@@*· +$@@@@@@@@@$o ++++ + x+==+x ·ooo~ ~oo~ ~ooo· o+==+x + ++==++ +** **+ x+==++ + ++====+=+x ++*========*+x x+*========*++ x+======++ + ++++==********==++++++==********==++++++==********====++ + ++++++++ ++++++++ ++++++++ + diff --git a/src/build/framegen/frames/frame_193.txt b/src/build/framegen/frames/frame_193.txt new file mode 100644 index 000000000..eea662aca --- /dev/null +++ b/src/build/framegen/frames/frame_193.txt @@ -0,0 +1,41 @@ + + ++====****====++ + x++=***%==x~ ~x==%***=+xx + x+===*++ ++*===+x + ++**+x ~ox++++xo~ x+**++ + ==++ x*$@@@@@@@@@@@@@@@@@@$*x ++== + **+x x%@@@@$$$$$$$$$$$$$$$$$$$$@@@@%x x+** + ==+o o$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$o o+== + ++++ +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ++++ + xx== o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ==xx + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + x+== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + +++x @$$$$@* =@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ==x *$$$$@% ~=@@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$* x== + == @$$$$$$ ~*@@$$$$$@@$%%%%%%%%%%%%%%$@@$$$$$@ == + == $$$$$$$@@=~ $$$$$= o$$$$$$ == + == ~@$$$$$$$@@@@+ $$$$@ @$$$$@~ == + == ·@$$$$$@@x %@$$$$$x ~$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@*++%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· $@@$$$$$$$$$@@@@@@@@@@$$$$$$$$@@@@@@@@@@$$$$$$$$$@@$ ·x== + ++++ =@@@@@@@@@* x$@@@@@@@@$x *@@@@@@@@@= ++++ + ox==++ ++==xx + ++===+ ++%%+o o+%%++ +===++ + ++=====%+=++++*=*========***++++***========*=*++++=+%=====++ + xx++==******====++ ++==********==++ ++====******==++xx + ++++ ++++ ++++xx + diff --git a/src/build/framegen/frames/frame_194.txt b/src/build/framegen/frames/frame_194.txt new file mode 100644 index 000000000..1d1213448 --- /dev/null +++ b/src/build/framegen/frames/frame_194.txt @@ -0,0 +1,41 @@ + + xx++==********===+xx + x+==*%**=+~· ·~+=**%*==++ + x+=*=*+x x+*=*=+x + ++**xo ·ox+====+xo· ox**++ + **++ x*@@@@@@@@@@@@@@@@@@@@*x ++** + **+x x$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$x o+** + ==+o x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$x o+== + ++++ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++++ + xx== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xx + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + +++x @$$$$@* =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == *$$$$@% =@@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$* == + == @$$$$$$ =$@$$$$$@@$%%%%%%%%%%%%%%%@@$$$$$@ == + == $$$$$$$@@*~ $$$$$= o$$$$$$ == + == ~@$$$$$$$@@@$x $$$$@ @$$$$@~ == + == ·@$$$$$@@x %$$$$$@x ~$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@%+=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == $@$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@$ == + ==+o +@@@$$$$$$$@@@$***%@@@@$$$$$$@@@@%***$@@@$$$$$$$@@@+ o+== + ++== =$@@@@@$*~ +%@@@@@@%+ ~*$@@@@@$=· ==++ + ===+ +=== + ++====x+ *=**== =+**=* +x====+x + ++=====**%*****==========**%****%**=========******%**=====+x + ++++========++xx ++++========++++ xx++========++++ + + diff --git a/src/build/framegen/frames/frame_195.txt b/src/build/framegen/frames/frame_195.txt new file mode 100644 index 000000000..7f66e3146 --- /dev/null +++ b/src/build/framegen/frames/frame_195.txt @@ -0,0 +1,41 @@ + + ++++==********===+++ + x+==*%**++~· ·~+=**%*==++ + xx**=%+x x+%=**xx + ++*=x ~ox+====+xo~ ox=*++ + **++ x%@@@@@@@@@@@@@@@@@@@@%x ++** + **+o +$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$+ o+** + =*+o x$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$x o+*= + ++++ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++++ + ox== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xo + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + ox== @$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xo + +++x @$$$$@= +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == *$$$$@% +@@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$* == + == @$$$$$$· =$@$$$$$@@%%%%%%%%%%%%%%%%@@$$$$$@ == + == $$$$$$$@@*o $$$$$= ~$$$$$$ == + == ·@$$$$$$$@@@$x $$$$@ @$$$$@· == + == ·@$$$$$@@o ·%$$$$$@+ o$$$$$$@· == + == ·@$$$$$$ =$@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@%==$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@% == + ==+x ~$@@@@$$$$@@@@%+xx=$@@@@$$$$@@@@$=xx+*@@@@$$$$@@@@@~ x+== + ++== o*$@@@$*x ·=%$@@$%=· x*$@@@$*x ==++ + ==== =+== + xx====+= x+*===== ======+x =+====xx + ++====*%%%%**=====++====*%*%%*%*====++=====**%%%%*====++ + xx++++====++++ ++++====++++ ++++====++++x+ + + diff --git a/src/build/framegen/frames/frame_196.txt b/src/build/framegen/frames/frame_196.txt new file mode 100644 index 000000000..9f6a2941d --- /dev/null +++ b/src/build/framegen/frames/frame_196.txt @@ -0,0 +1,41 @@ + + ++++==********===+++ + x+==*%**++~· ·~++**%*==++ + xx**=%+x x+%=**xx + ++==x ~ox+====+xo~ x==++ + **++ +%@@@@@@@@@@@@@@@@@@@@%+ ++** + **+o +$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$+ o+** + ==+~ x$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$x ~+*= + ++++ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++++ + ox== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xo + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + ox== @$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xo + +++x @$$$$@= +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == *$$$$@% +$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$* == + == @$$$$$$· =$@$$$$$@@%%%%%%%%%%%%%%%%@@$$$$$@ == + == $$$$$$$@@*o $$$$$= ~$$$$$$ == + == ~@$$$$$$$@@@$x $$$$@ @$$$$@~ == + == ·@$$$$$@@o ·$$$$$$@+ o$$$$$$@· == + == ·@$$$$$$ =$@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@%==$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@+ == + ==++ *@@@@@@@@@@@%x ~=@@@@@@@@@@@@=~ x%@@@@@@@@@@@% ++== + xx==+· o=***=x ~+****+~ x=***=x ·x==++ + ====xo xx x+ ox==== + ======+x =+=*====++ ++====*=+= x+*===== + ++==***%********++++==************==++++********%***==++ + ++++++++++ +x++++++++x+ ++++++++++ + + diff --git a/src/build/framegen/frames/frame_197.txt b/src/build/framegen/frames/frame_197.txt new file mode 100644 index 000000000..d7b48f2c1 --- /dev/null +++ b/src/build/framegen/frames/frame_197.txt @@ -0,0 +1,41 @@ + + x+++==********===+xx + x+==*%**++~· ·~++**%*==++ + xx**=*+x x+*=**xx + ++**xo ·ox+====+xo· ox=*++ + **++ x%@@@@@@@@@@@@@@@@@@@@%x ++** + **+o +$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$+ o+** + =*+o x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$x o+*= + ++++ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++++ + ox== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xo + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + +++x @$$$$@* +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == *$$$$@% =@@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$* == + == @$$$$$$· =$@$$$$$@@$%%%%%%%%%%%%%%%@@$$$$$@ == + == $$$$$$$@@*o $$$$$= ~$$$$$$ == + == ·@$$$$$$$@@@$x $$$$@ @$$$$@· == + == ·@$$$$$@@o ·%$$$$$@+ o$$$$$$@· == + == ·@$$$$$$ =$@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@%+=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@o == + ++++ +@@@@@@@@@@@*~ x$@@@@@@@@@@$x ·*@@@@@@@@@@@= ++++ + ox==+o x+=+x· o+==+o ·x+=+x· ~+==+x + ++==+x == == xx==++ + ++====++ ox*+==**==+= =+=***==+*xo ++====++ + ++==**********==++++++************++++++==**********==++ + ++++++++ xx++++xx ++++++++ + + diff --git a/src/build/framegen/frames/frame_198.txt b/src/build/framegen/frames/frame_198.txt new file mode 100644 index 000000000..4195da5e9 --- /dev/null +++ b/src/build/framegen/frames/frame_198.txt @@ -0,0 +1,41 @@ + + xx++==********===+xx + x++=****==x· ·x==****=+++ + x+=*=*+x x+*=*=+x + ++**+x ~x++==++x~ x+**++ + **++ x*@@@@@@@@@@@@@@@@@@@@*x ++** + **+x x%@@@@$$$$$$$$$$$$$$$$$$$$@@@@%x xx** + ==+o o$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$o o+== + ++++ +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ++++ + xx== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==xx + ==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + +++x @$$$$@* =@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == *$$$$@% ·=@@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$* x== + == @$$$$$$ ·*@@$$$$$@@$%%%%%%%%%%%%%%%@@$$$$$@ == + == $$$$$$$@@*~ $$$$$= o$$$$$$ == + == ~@$$$$$$$@@@@+ $$$$@ @$$$$@~ == + == ·@$$$$$@@x %$$$$$@x ~$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ +$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@*+=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· @@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·x== + ++++ ~%@@@@@@@@@$x ·*@@@@@@@@@@*· x$@@@@@@@@@%o ++++ + ox==+x ~oo· ~oo~ ·ooo x+==xo + ++==++ +%% %%+o ++==++ + ++=*===*xx ~ ++*=**==**+*++ ++*=**==**=*++ ~ xx*===*=++ + ++==********++xx ++==********==++ xx++********==++ + + + diff --git a/src/build/framegen/frames/frame_199.txt b/src/build/framegen/frames/frame_199.txt new file mode 100644 index 000000000..d926eed9a --- /dev/null +++ b/src/build/framegen/frames/frame_199.txt @@ -0,0 +1,41 @@ + + x+++===******====++x + x+==***%=*xo ox==%***==++ + xx=*=*++ ++*=*=xx + ++**++ ~ox++++xo~ ++**++ + **++ o*$@@@@@@@@@@@@@@@@@@$*o ++** + **+x o%@@@@$$$$$$$$$$$$$$$$$$$$@@@@%o x+** + ==+o ~$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$~ o+== + ++++ +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ++++ + ox== o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ==xo + ==+~ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ~+== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + +++x @$$$$@* ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ==+ *@$$$@% ~*@@@@$$$$$$$$$$@@@@@@@@@@@@@@@$$$$$$@* x== + == @$$$$$$ ~*@@$$$$$@@$%%%%%%%%%%%%%%$@@$$$$$@ == + == $$$$$$$@$=· $$$$$* x$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$@@+ %@$$$$$o ·$$$$$$@· == + == ·@$$$$$$ x$@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@*x+%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==+· @@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·+== + ++++ %@@@@@@@@@%o =$@@@@@@@@$= ~%@@@@@@@@@%· ++++ + ==+x ·· ·· ··· x+== + x+==++ ++%% %*++ ++*=xx + xx==**=*++xxxx+=*=**==**=%=+xxxx+=*=**==**=*=+xxoo++*=**==xx + ++++******==++xx ++++********++++ xx++==******==++ + + + diff --git a/src/build/framegen/frames/frame_200.txt b/src/build/framegen/frames/frame_200.txt new file mode 100644 index 000000000..86ebca6d1 --- /dev/null +++ b/src/build/framegen/frames/frame_200.txt @@ -0,0 +1,41 @@ + + xx++=====**=====++xx + +++=***%**++~· ·~++**%***++++ + xx==*%=+ +=%*==xx + ++**++ ~~oooo~~ ++**++ + ==== ·+%@@@@@@@@@@@@@@@@@@%+· ==== + **+x ~*@@@@@$$$$$$$$$$$$$$$$$$@@@@@*~ x+** + ==+x ·%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%· x+== + ++=+ x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x +=++ + ox== ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· ==xo + ==+~ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ~+== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + +++x $$$$$@%· o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ x+++ + ==+· =@$$$@$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+== + == @$$$$$$ x%@@$$$$$@@@$$$$$$$$$$$$$$$@@$$$$$@ == + == $$$$$$$@$+ ~$$$$$* +$$$$$$ == + == ~@$$$$$$$@@@@+ $$$$@ @$$$$@~ == + == ·@$$$$$$@= *$$$$$$· %$$$$$@· == + == ·@$$$$$$ o%@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@=ox*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· $@@$$$$$$$$$@@@@@@@@@@$$$$$$$$@@@@@@@@@@$$$$$$$$$@@$ ·+== + +++= =$@@@@@@@@* x%@@@@@@@@%x *@@@@@@@@@* ++++ + ==++ +=== + xx=*=+ ++%%+x x+%%++ +=**+x + ++**=*=+++++=**=**++**=%==++++==%=**++**=**=+++++=*=**++ + xx++======++++ ++========++ ++++==**==++xx + + + diff --git a/src/build/framegen/frames/frame_201.txt b/src/build/framegen/frames/frame_201.txt new file mode 100644 index 000000000..65a82d3bc --- /dev/null +++ b/src/build/framegen/frames/frame_201.txt @@ -0,0 +1,41 @@ + + xx++============++xx + ++++**%%**==xo~~~~ox==**%%**++++ + xx==**== ==**==xx + ++**+= ·~~~~· =+**++ + ===+ x*$@@@@@@@@@@@@@@@@$*x +=== + **++ =@@@@@$$$$$$$$$$$$$$$$$$@@@@@= ++** + ==++ *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ++== + ++=+ ~@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@~ +=++ + xx== @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + ==+o *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* o+== + ox== $@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ==xo + +++x $@$$$@$o x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ x+++ + ==+· +@$$$$$ +$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+== + == @$$$$$$ +$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$$@%x o$$$$$% =$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$$@*~ +$$$$$$ *$$$$$@· == + == ·@$$$$$$ ·*@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@+·~=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· %@@$$$$$$$$$@@@@$$@@@@$$$$$$$$@@@@$$@@@@$$$$$$$$$@@$ ·+== + x+== +$@@@@@@@$* o%@@@@@@@@%o *$@@@@@@@$= ==++ + ==++ ++== + ===+ ==%%++ ++%%== +=== + ++**=%==++++****==++**=***++++***=**++==****++++==%***++ + ++======++++ x++======+++ ++++======++ + + + diff --git a/src/build/framegen/frames/frame_202.txt b/src/build/framegen/frames/frame_202.txt new file mode 100644 index 000000000..d0f7f0f48 --- /dev/null +++ b/src/build/framegen/frames/frame_202.txt @@ -0,0 +1,41 @@ + + ++++++====++++++ + xx+=***%%%**==++++==**%%%***=+xx + ox==**=*x ox*=**==xo + ++**+= =+**++ + ==== ~+%$@@@@@@@@@@@@@@$%+~ ==== + ===+ x%@@@@@$$$$$$$$$$$$$$$$@@@@@%x +=== + ===+ +@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@+ +=== + ++=+ %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% +=++ + ox== %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ==xo + ==+x x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x x+== + ox== %@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ==xo + ++++ %@$$$@@+~o=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++++ + ==+· x@$$$$$ ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+== + == @$$$$$$ ~*@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$$@=· =$$$$$$ %$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$$@$x o$$$$$% +$$$$$@· == + == ·@$$$$$$ x$@@$$$$$@@@$$$$$$$$$$$$$$@@@$$$$$@· == + == ·@$$$$@$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@$~ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+~ %@@@$$$$$$$$@@@@$$@@@@$$$$$$$$@@@@$$$@@@$$$$$$$$@@@% ·+== + ++== +$@@@@@@@$= ~%@@@@@@@@%~ =$@@@@@@@$+ ==xx + ===+ +=== + ==== ==%%++ ++%%+= ==== + ++**=***++==%***==++***%**++++**%***++==***%==++**%=**++ + x+++==++++ x+++====+++x ++++++++++ + + + diff --git a/src/build/framegen/frames/frame_203.txt b/src/build/framegen/frames/frame_203.txt new file mode 100644 index 000000000..d3e837345 --- /dev/null +++ b/src/build/framegen/frames/frame_203.txt @@ -0,0 +1,41 @@ + + ++++++++++++++++ + ++*****%*%=******=%*%*****++ + ++**=*++ x+*=**++ x + ++**+= =+**++ + ====ox o=%@@@@@@@@@@@@@@%=o xo==== + ===+ ~*@@@@@@$$$$$$$$$$$$$$@@@@@@*~ +=== + ===+ o$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$o +=== + ++== *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ==++ + ox== *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ==xo + ==+x o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o x+== + ox== =@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xo + ++++ *@$$$@@*x+%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++++ + ==x· ~@$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ·x== + == @$$$$$$ x$@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$@@+ %@$$$$$o ·$$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$$@$=· $$$$$* x$$$$$@· == + == ·@$$$$$$ ~*@@$$$$$@@$%%%%%%%%%%%%%%$@@$$$$$@· == + == ·@$$$$@% ~*@@@@$$$$$$$$$$@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$@* ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$@@ == + ==+~ %@@@$$$$$$$$@@@$$$@@@@$$$$$$$$@@@@$$$@@@$$$$$$$$@@@% ·+== + xx== x%@@@@@@@$= ~*@@@@@@@@*~ =$@@@@@@@$+ ==xx + ===+ +=== + ====o ==%%++ ++%%== ==== + ++***%**====%***++++==***%====%***==++++***%====***=**++ + xx++++++++ ++====++ ++++=+++xx + + + diff --git a/src/build/framegen/frames/frame_204.txt b/src/build/framegen/frames/frame_204.txt new file mode 100644 index 000000000..4333a6acd --- /dev/null +++ b/src/build/framegen/frames/frame_204.txt @@ -0,0 +1,41 @@ + + xx++++++++++++xx + ++==***%*%*%%%%%%*%*%***==++ + ++**=*== ==*=**++ + ++**=*++ ++*=**++ + ++**++ ~+*%@@@@@@@@@@%*+~ ++**++ + ==== o*@@@@@@@$$$$$$$$$$@@@@@@@*o ==== + ==== =@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@= ==== + ++== x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x ==++ + xx==x· x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ·x==xx + ++++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++++ + ox== o@$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ==xo + ++++ x@$$$$@$*%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ++++ + ==+~ @$$$$$ o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+== + == $$$$$@$ o%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@%· x$$$$$$@*· +@$$$$$@ == + == ·@$$$$$$$@@@*· $$$$@~ @$$$$@· == + == ·@$$$$$$@@$+ $$$$$x @$$$$@· == + == ·@$$$$$$o x%@$$$$$@@*===============$@$$$$$@· == + == ·@$$$$@% o%@@@@$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$$x o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$@@ == + ==+~ *@@@$$$$$$$@@@@$$$@@@@$$$$$$$$@@@@$$$@@@@$$$$$$$@@@% ·+== + xx== x%@@@@@@@$+ ~*@@@@@@@@*~ +$@@@@@@@$+ ==+x + ++=+ +=++ + ++==ox ==%%++ ++%%== o==++ + ++***%**====%***++++==***%====%***==++++***%====**%***++ + +++++++x ++++++++ ++++++++ + + + diff --git a/src/build/framegen/frames/frame_205.txt b/src/build/framegen/frames/frame_205.txt new file mode 100644 index 000000000..ce0f1cf9a --- /dev/null +++ b/src/build/framegen/frames/frame_205.txt @@ -0,0 +1,41 @@ + + xx++++++++++++xx + ++==****%%*%%%%%%*%%****==++ + ++****=*++ ++*=****++ + ++====+= =+====++ + ++**++ ~x=%$$@@@@$$%=+~ ++**++ + ++==oo +%@@@@@@@@$$$$$$@@@@@@@@%+ oo==++ + ++== o$@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@$o ==++ + ++==~ %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@% ~==++ + ox==+~ $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ ~+==xo + ++++ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++++ + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ++++ ~@$$$$@@$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ++xx + ==+~ @$$$$$· +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+== + == $$$$$@$ =$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$$= *@$$$$$@$xoooooooooooooox*@$$$$$@ == + == $$$$$$$@@@%x $$$$$o @$$$$$ == + == ·@$$$$$$@@@%x $$$$@o @$$$$@· == + == ·@$$$$$@= =@$$$$$@$xooooooooooooooo*@$$$$$@· == + == ·@$$$$@$ +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$· +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$@@ == + ==+~ %@@@$$$$$$$$@@@$$$@@@@$$$$$$$$@@@@$$$@@@$$$$$$$$@@@% ·+== + xx== +%@@@@@@@$= ~%@@@@@@@@%~ =$@@@@@@@$+ ==xo + ++=+ +=++ + ++*=ox ==%%++ ++%%== o==++ + x+***%**====%***++++==***%====%***==++++***%====**%***++ + ++++++++ ++++++++ ++++++++ + + + diff --git a/src/build/framegen/frames/frame_206.txt b/src/build/framegen/frames/frame_206.txt new file mode 100644 index 000000000..6c1c344c2 --- /dev/null +++ b/src/build/framegen/frames/frame_206.txt @@ -0,0 +1,41 @@ + + ++++++++++++ + ++++==*******%%*******==++++ + ++==**=***++ ++***=**==++ + ++==**=*+o o+*=**==++ + ++====x ·o++====++o· ====++ + ++==++ +%@@@@@@@@@@@@@@@@@@@@%+ ++==++ + ++==xo +$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$+ ox==++ + ++==+~ x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x ~+==++ + ==+x =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= x=== + ++== x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ==++ + ==x· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·x== + ++== @$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==++ + +++x @$$$$$= +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + == *$$$$@% =$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$* == + == @$$$$$$· =$@$$$$$@@%**************%@@$$$$$@ == + == $$$$$$$@@*o $$$$$= ~$$$$$$ == + == ~@$$$$$$$@@@$x $$$$@ @$$$$@~ == + == ·@$$$$$@$o ·$$$$$$@+ o$$$$$$@· == + == ·@$$$$$$ =@@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@%==$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· %@@@$$$$$$$$@@@@$$@@@@$$$$$$$$@@@@$$@@@@$$$$$$$$$@@$ ·+== + xx== +$@@@@@@@$= o%@@@@@@@@%o =$@@@@@@@$= ==xx + ++=+ +=++ + ++== ==%%++ ++%%== ==++ + x+=*=***++==%***++xx==*%**====**%*==xx++***%==++***=**+x + ++++++++ ++++++++ ++++++++ + + + diff --git a/src/build/framegen/frames/frame_207.txt b/src/build/framegen/frames/frame_207.txt new file mode 100644 index 000000000..167764b96 --- /dev/null +++ b/src/build/framegen/frames/frame_207.txt @@ -0,0 +1,41 @@ + + ++xxxx++ + xx++==****************==++xx + x+==**==*%=*++oo oo++*=%*==**==++ + xx++**=*+= =+*=**++xx + ++====++ ~oooo~ ++====++ + ++===+ +%@@@@@@@@@@@@@@@@@@%+ +===++ + ++==+x ·*@@@@@$$$$$$$$$$$$$$$$$$@@@@@*· x+==++ + x+==+x %@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@% x+==+x + ==++ o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o +=== + ++== ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· ==++ + ==+~ *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ~+== + ++== $@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ==++ + +++x $$$$$@$~ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ x+++ + ==x· =@$$$@$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ·+== + == @$$$$$$ x%@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$$@$x o$$$$$* +$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$$@*· =$$$$$$· %$$$$$@· == + == ·@$$$$$$ ~*@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@+~o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· $@@$$$$$$$$$@@@@$@@@@@$$$$$$$$@@@@@$@@@@$$$$$$$$$@@$ ·+== + xx== =$@@@@@@@@* o%@@@@@@@@%o *@@@@@@@@$= ==+x + ++=+ +=++ + ++== ==%%++ ++%%== ==++ + x+**=%*=++++%***++++==*%**++++**%*==++++***%++++==%=**++ + ++++++++ ++++++++ ++++++++ + + + diff --git a/src/build/framegen/frames/frame_208.txt b/src/build/framegen/frames/frame_208.txt new file mode 100644 index 000000000..3d3c0e0e6 --- /dev/null +++ b/src/build/framegen/frames/frame_208.txt @@ -0,0 +1,41 @@ + + + xx++====********====++xx + ++==**=**%****++++****%**=**==++ + ++=====%+x x+*=====++ + ++====== ======++ + ++====xx o=%$@@@@@@@@@@@@$%=o xx====++ + ++===+ ·*$@@@@@$$$$$$$$$$$$$$@@@@@$*· +===++ + xx===+ o$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$o +===xo + ==++ *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ++== + ++== *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ==++ + ==+x ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ x+== + xx== =@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xx + ++++ *@$$$$@*x+%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++++ + ==+· ~@$$$$$ x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ·+== + == @$$$$$$ +$@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$@@+ %$$$$$@x ·$$$$$$$ == + == ·@$$$$$$$@@@@x $@$$@ @$$$$@· == + == ·@$$$$$$@@*· $$$$$= x$$$$$@· == + == ·@$$$$$$ ~*@@$$$$$@@$$$$$$$$$$$$$$%$@@$$$$$@· == + == ·@$$$$$% ~=@@@@$$$$$$$$$$@@@@@@@@@@@@@@$$$$$$$$@· == + == ·@$$$$$@* ·*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· $@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·+== + xx== *@@@@@@@@@%~ +$@@@@@@@@$+ ~%@@@@@@@@@* ==xx + ===+ ++== + ===+ ++%% $$++ +=== + ++**=%+++x++****=+++===*==++x+==*===+++=*%**++++++****++ + ++++====++ ++====++ ++====+++x + + + diff --git a/src/build/framegen/frames/frame_209.txt b/src/build/framegen/frames/frame_209.txt new file mode 100644 index 000000000..ad5268110 --- /dev/null +++ b/src/build/framegen/frames/frame_209.txt @@ -0,0 +1,41 @@ + + + xx++++============++++xx + ++====**=**%%%****%%%**=**====++ + ++====**=*o~ ~o*=**====++ + ======++ ++====== + x+====++ ~+*%$@@@@@@@@$%*+~ ++====++ + xx==== o%@@@@@@@$$$$$$$$$$@@@@@@@%o ====xx + ==== =@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@= ==== + =+== o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o ==++ + x+==x· x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ·x==+x + ==++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++== + xx== o@$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ==xx + ++++ x@$$$$@@%%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ++++ + ==+~ @$$$$$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+== + == $$$$$@$ o%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@% x@$$$$$@*· +@$$$$$@ == + == ·@$$$$$$@@@@*· $$$$@~ @$$$$@· == + == ·@$$$$$$@@$+ $$$$$+ @$$$$@· == + == ·@$$$$$$x x%@$$$$$@@*++++++++++++++=$@$$$$$@· == + == ·@$$$$$$ o%@@@@$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$$x o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· @@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·x== + xx++ ·%@@@@@@@@@%o =@@@@@@@@@@= o%@@@@@@@@@%~ ++++ + ==+x ·~~ ·~~· ~~~ x+== + ==++ x+%% %%++ +=== + ++**=%++ooox==*===++**=%++xoox++%=**++===*==xooo++%=**++ + ++++==++++ ++++====+++x ++++==++++ + + + diff --git a/src/build/framegen/frames/frame_210.txt b/src/build/framegen/frames/frame_210.txt new file mode 100644 index 000000000..d2748c704 --- /dev/null +++ b/src/build/framegen/frames/frame_210.txt @@ -0,0 +1,41 @@ + + + xx++++++++++++++++++ + ++++==****=***%%%%***=****==++++ + ++++=====%==o~ ~o==%=====++++ + ++====+= =+====++ + =====+ ~x=**%%%%**=x~ +===== + ====++ o*$@@@@@@@@@@@@@@@@@@@@$*o ++==== + ====o~ ·*@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@*· ~o==== + ++==x· =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ·x==++ + xx==+o %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% o+==xx + =+++ *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* +++= + ox==x· @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ·x==xo + ++++ @$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ++++ + ==+o @$$$$$x o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+== + == %$$$$@% o*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$% == + == @$$$$$$x x%@$$$$$@@=++++++++++++++=$@$$$$$@ == + == $$$$$$$@@$=· $$$$@x @$$$$$ == + == ·@$$$$$$@@@@*· $$$$@~ @$$$$@~ == + == ·@$$$$$@% x@$$$$$@*~ ·+@$$$$$@· == + == ·@$$$$@% x%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@$%%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x ·@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@~ == + x+++ x$@@@@@@@@@@= o%@@@@@@@@@@%o =@@@@@@@@@@$x ++++ + ==+o ox++o ~x++x~ o++xo o+== + **+x ** ** x+** + ++**==o~ ++*+**++**+*xo ox*=**++**=*++ ~o=+**=+ + ++==***=++++ ++==****==++ x+++=***==++ + + + diff --git a/src/build/framegen/frames/frame_211.txt b/src/build/framegen/frames/frame_211.txt new file mode 100644 index 000000000..cb7316752 --- /dev/null +++ b/src/build/framegen/frames/frame_211.txt @@ -0,0 +1,41 @@ + + + ++++++++++++++++ + ++++==****************==++++ + ++===****%++~~ ~~++%***====++ + ++=====*+x x+*=====++ + ++====xx ·ox+====+xo· xx====++ + ====++ x%$@@@@@@@@@@@@@@@@@@$%x ++==== + ++==+x x$@@@@$$$$$$$$$$$$$$$$$$$$@@@@$x x+==++ + ++==+o x$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$x o+==++ + ox==++ =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ++==xo + +++= x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x =+++ + ox==+· $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ·+==xo + ++== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==++ + ==+x @$$$$@= =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+== + == *$$$$$$ =$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$* == + == @$$$$$$ ·=@@$$$$$@@$%%%%%%%%%%%%%%%@@$$$$$@ == + == $$$$$$$@@*~ $$$$$= o@$$$$$ == + == ~@$$$$$$$@@@@x $$$$@ @$$$$@~ == + == ·@$$$$$@$x %$$$$$@x o$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@%+=$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == o@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@x == + ++++ =@@@@@@@@@@@%o +$@@@@@@@@@@$+ o%@@@@@@@@@@@* ++++ + **+~ ~+===+o x====x o+=*=+~ ~+** + **+x ++ ++ xx** + ==**++ ~o*+**==**+= =+**==**=*o~ ++==== + +==****==+++ ++=******=++ ++==*****==+ + + + diff --git a/src/build/framegen/frames/frame_212.txt b/src/build/framegen/frames/frame_212.txt new file mode 100644 index 000000000..c082df71b --- /dev/null +++ b/src/build/framegen/frames/frame_212.txt @@ -0,0 +1,41 @@ + + + ++++++++ + ++++==************==++++ + ++++****=***=+xo~~~~ox+=%**=****++++ + xx++===*== =+*===++xx + ++====++ ·~~~~· ++====++ + ++===+ x*$@@@@@@@@@@@@@@@@$*x +===++ + ++==++ =@@@@@$$$$$$$$$$$$$$$$$$@@@@@= ++==++ + x+===+ *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* +===xx + ==++ ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ ++== + ++== @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==++ + ==+o *@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* o+== + ++== $@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ==++ + +++x $@$$$@$o x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ x+++ + ==x· +@$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·x== + == @$$$$$$ +$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$@@%x x$$$$$% =$$$$$$ == + == ·@$$$$$$$@@@@= $@$$@ @$$$$@· == + == ·@$$$$$@@*~ +$$$$$% *$$$$$@· == + == ·@$$$$$$ ·=@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ ·=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@x·~=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == =@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@* == + +++x $@@@@@$$@@@@@*x~o+%@@@@@$$@@@@@%+o~o=$@@@@$$$@@@@$· x+++ + **~· ~=%$$$%=o +*$$$$*+ o=%$$$%=~ ** + xx**o~ ~·**xx + xx**+* ++****=*+x x+*=****++ *+**xx + ++==*%%%%%**== x++=*%%%%%%*++++ ==**%%%%%*==++ + + + diff --git a/src/build/framegen/frames/frame_213.txt b/src/build/framegen/frames/frame_213.txt new file mode 100644 index 000000000..61e121870 --- /dev/null +++ b/src/build/framegen/frames/frame_213.txt @@ -0,0 +1,41 @@ + + + + x+++====********====++++ + ++==**=**%**++++++++**%**=**==++ + ++=*=*=* *=*=*=++ + x+====+= =+====++ + ++===+ ·+%$@@@@@@@@@@@@@@$%+· +===++ + x+==++ x%@@@@@$$$$$$$$$$$$$$$$@@@@@%x ++==+x + xx==++ +@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@+ ++==xx + ==++ %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ++== + ++== $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ ==++ + ==+x +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ x+== + ++== %@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ==++ + ++++ %@$$$@@+~o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++++ + ==+· x@$$$$$ ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+== + == @$$$$$$ ~*@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$@@*· =$$$$$$· *$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$$@%x o$$$$$* =$$$$$@· == + == ·@$$$$$$ +$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@$~ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == %@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@$ == + +++o o@@@@$$$$$@@@@%*+=*$@@@$$$$$$@@@$*=+=%@@@@$$$$$@@@@x o+++ + ** +%@@@@@%+ o*$@@@@$*o +%@@@@@%+ **xo + x+** **++ + x+**++ ox****== ==****xo =+**++ + +=**%%%%%%%*==+x ++==*%%%%%%%==++ x+==*%%%%%%%**=+ + + + diff --git a/src/build/framegen/frames/frame_214.txt b/src/build/framegen/frames/frame_214.txt new file mode 100644 index 000000000..7eb9facaa --- /dev/null +++ b/src/build/framegen/frames/frame_214.txt @@ -0,0 +1,41 @@ + + + + ++++++========++++++ + ++==*****%%%********%%%*****==++ + ++==**=*=+ ++*=**==++ + ++**+= =+**++ + xx====ox ~=%$@@@@@@@@@@@@$%=~ xo====xx + x+===+ ·=@@@@@@$$$$$$$$$$$$$$@@@@@@=· +===+x + ===+ ~%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%~ +=== + ++== =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ==++ + x+== =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ==+x + ==+x ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ x+== + xx== =@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ==xx + ++++ =@$$$$@*++$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= ++++ + ==+· ~@$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ·+== + == @$$$$$$ +$@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$@@x %$$$$$@x ~$$$$$$$ == + == ·@$$$$$$$@@@@x $$$$@ @$$$$@· == + == ·@$$$$$$@@=~ $$$$$= o@$$$$@· == + == ·@$$$$$$ ~=@@$$$$$@@$%%%%%%%%%%%%%%$@@$$$$$@· == + == ·@$$$$$$ ·*@@@@$$$$$$$$$$@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$@* ·=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$@$$$$$$$$$$$$$$$$$@@$$$$$$$$$$$$$$$@@ == + ==+~ %@@@$$$$$$$$@@@$$$@@@@$$$$$$$$@@@@$$$@@@$$$$$$$$@@@% ·+== + xx== +$@@@@@@@$+ ~*@@@@@@@@*~ +$@@@@@@@$+ ==xx + ++=+ +=++ + ++**oo ==%%++ ++$$== oo==++ + x+==*%*%====****++++++*%**====**%*++++++**=*====*=%*==++ + ++++++ ++++++++ ++++++ + + diff --git a/src/build/framegen/frames/frame_215.txt b/src/build/framegen/frames/frame_215.txt new file mode 100644 index 000000000..5ca0d40ad --- /dev/null +++ b/src/build/framegen/frames/frame_215.txt @@ -0,0 +1,41 @@ + + + + x ++++++====++++++ x + xx++*******%*%%**%%*%*******++xx + xx+=****== ==****=+xx + ++**+*x x*+**++ + ====x+ x*%$@@@@@@@@@@$%*x +x==== + ==== +$@@@@@@$$$$$$$$$$$$@@@@@@$+ ==== + ==++ *@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@* ++== + ++== +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ==++ + xx==x· +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ·x==xx + ==++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++== + xx== +@$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ==xo + ++++ +@$$$$@%=*$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ++++ + ==+· @$$$$$ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ·+== + == @$$$$@$ ·=@@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@ == + == @$$$$$@$o ~$$$$$$@+ o@$$$$$@ == + == ·@$$$$$$$@@@$o $$$$@ @$$$$@· == + == ·@$$$$$$@@*x $$$$@= ~@$$$$@· == + == ·@$$$$$$~ +$@$$$$$@@%***************@@$$$$$@· == + == ·@$$$$@$ +$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$$= +$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· $@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·x== + xx== *@@@@@@@@@%o =@@@@@@@@@@= o%@@@@@@@@@%· +++x + ==++ ·~· ~~ ·~· x+== + ==++ x+%% %%+x ++== + ++**=*++xox+==%*==++===%==xoox==%===++==*%==+xoo++*=**++ + +++++===++ +++==+++ +++===++++ + + diff --git a/src/build/framegen/frames/frame_216.txt b/src/build/framegen/frames/frame_216.txt new file mode 100644 index 000000000..0b06bcd29 --- /dev/null +++ b/src/build/framegen/frames/frame_216.txt @@ -0,0 +1,41 @@ + + + + x+++++++++++++xx + ++==*****%%%%%%%%%%*****==++ + ++**=*=* *=*=**++ + ++**=*++ ++*=**++ + ++**x+ ~+*$$@@@@@@@@$$*+~ +x**++ + ==== o%@@@@@@@$$$$$$$$$$@@@@@@@%o ==== + ++== =@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@= ==++ + ++== o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o ==++ + ox==x· x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x ·x==xo + ++++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++++ + == o@$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + ++++ x@$$$$@$%%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ++++ + ==+~ @$$$$$ o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+== + == $$$$$$$ o*@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@%· o@$$$$$@*· +@$$$$$@ == + == ·@$$$$$$$@@@*~ $$$$@~ @$$$$@· == + == ·@$$$$$$@@$= $$$$@+ @$$$$@· == + == ·@$$$$$$x x%@$$$$$@@*===============$@$$$$$@· == + == ·@$$$$@% o%@@@@$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$$x o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == o@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@x == + ++++ =@@@@@@@@@@@*o ·+$@@@@@@@@@@$+· o*@@@@@@@@@@@* ++++ + **+~ ~+=*=+o ·x=**=x· o+=*=+~ ·+** + **xx ++ ++ o+**xx + ====++ *=**==**+= =+**==**+= ++==== + +==**%*=*=++ ++=******=++ +++=**%%*=== + + diff --git a/src/build/framegen/frames/frame_217.txt b/src/build/framegen/frames/frame_217.txt new file mode 100644 index 000000000..3b406fd58 --- /dev/null +++ b/src/build/framegen/frames/frame_217.txt @@ -0,0 +1,41 @@ + + + + ++++++++++++ + ++++****%%%%%%%%%%%%****++++ + ++***%*%x~ ~x%*%***++ + ++**==++ ++==**++ + ++**++ ·x*%$$@@@@@@$$%*x· ++**++ + ++==~ o*@@@@@@@@$$$$$$$$@@@@@@@@*o ~==++ + ++== =@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@= ==++ + ++== ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ ==++ + ==x· o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ·x== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == o@$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o == + ++++ o@$$$$@$%%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o +++x + ==x~ @$$$$$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~x== + == $$$$$$% x%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@% x@$$$$$@*~ ·=@$$$$$@ == + == ·@$$$$$$@@@@=· $$$$@~ @$$$$@· == + == ·@$$$$$$@@$=~ $$$$@x @$$$$@· == + == ·@$$$$$$x o%@$$$$$@@=+++++++++++++++$@$$$$$@· == + == ·@$$$$@% o*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$o ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == =@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@* == + +++x $@@@@$$$@@@@@=x~o+%@@@@@$$@@@@@%+o~x=@@@@@$$$@@@@$ x+++ + **~· ~=%$$$%=o x*$$$$*x o=%$$$%=~ ** + xx**o~ ~~**xx + x+**+= ++******+x x+*=****++ *+**+x + ++==*%%%%%%*== xx==*%%%%%%*==xx ==*%%%%%%*==++ + + diff --git a/src/build/framegen/frames/frame_218.txt b/src/build/framegen/frames/frame_218.txt new file mode 100644 index 000000000..7c43145a8 --- /dev/null +++ b/src/build/framegen/frames/frame_218.txt @@ -0,0 +1,41 @@ + + + + +x++++++ + ++==***%%%%%%%%%%***==++ + x+==**=*+o o+*=**==+x + ==**++ ++**== + ++**++ x=%$$@@@@@@$$%=x ++**++ + ++**oo ~=@@@@@@@@$$$$$$$$@@@@@@@@=~ oo**++ + ++== +$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ ==++ + ++=* ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ *=++ + ==+~ o@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@o ~x== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@@$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ == + ++++ o@$$$$@@%$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o +++x + ++x~ @$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~x++ + == $$$$$$% +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@* +@$$$$$@%o~~~~~~~~~~~~~~~=@$$$$$@ == + == ·@$$$$$$@@@$= $$$$@~ @$$$$@· == + == ·@$$$$$$@@@*~ $$$$@x @$$$$@· == + == ·@$$$$$$+ ~*@$$$$$@$+xxxxxxxxxxxxxx+%@$$$$$@· == + == ·@$$$$@% ~*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$o ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$· == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == $@$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@@@@$$$$$$$$$$$$$$@@ == + +++o =@@@$$$$$$$@@@@%**$@@@@$$$$$$@@@@$**%@@@@$$$$$$$@@@= ~+++ + ox== ~*@@@@@@@*o +$@@@@@@$+ o*@@@@@@@*~ ==xo + ++== ==++ + ++**++ =*%%== ==%%*= +x**++ + +=**%%%%%*%=**+x ++***%%%%%%***++ x+**=%*%%%%***=+ + xxxx xxxx xxxx + diff --git a/src/build/framegen/frames/frame_219.txt b/src/build/framegen/frames/frame_219.txt new file mode 100644 index 000000000..427ca641f --- /dev/null +++ b/src/build/framegen/frames/frame_219.txt @@ -0,0 +1,41 @@ + + + + ++++ + ++==***%*%%%%%%*%***==++ + xx==***%+x x+%***==xx + ==**++ ++**== + ++**++ o=*%$$@@@@$$%*=o ++**++ + ++**oo ·=$@@@@@@@$$$$$$$$@@@@@@@$=· oo**++ + ++== +$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ ==++ + x+=* ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· *=xx + ==+~ ~@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@~ ~+== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@@$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ == + xx++ ~@$$$$@@$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ++xx + +++~ @$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + == $$$$$$% +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@* +@$$$$$@%o~~~~~~~~~~~~~~~=@$$$$$@ == + == ·$$$$$$$@@@$+ $$$$@~ @$$$$$· == + == ·@$$$$$$@@@*o $$$$@o @$$$$@· == + == ·@$$$$$$+ ~*@$$$$$@$+xxxxxxxxxxxxxx+%@$$$$$@· == + == ·@$$$$@% ·*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$~ ·=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ == + ==+· %@@$$$$$$$$$@@@@$$@@@@$$$$$$$$@@@@$$@@@@$$$$$$$$$@@% ·+== + xx== +$@@@@@@@@= o%@@@@@@@@%o =@@@@@@@@$+ ==+x + ++=+ +=++ + ++*=o +=%$++ ++$%=+ o==++ + xx==**=*===*%***++xx++*%*%====%*%*++xx++***%*===***===++ + ++++++xx ++++++++ xx++==++ + diff --git a/src/build/framegen/frames/frame_220.txt b/src/build/framegen/frames/frame_220.txt new file mode 100644 index 000000000..bf319ce3d --- /dev/null +++ b/src/build/framegen/frames/frame_220.txt @@ -0,0 +1,41 @@ + + + + + ++++***%%$%%%%$%%***++++ + ++***%+x x+%***++ + ++**++ ++**++ + x+**++ o=*%$$@@@@$$%*=o ++**+x + ++**oo ·=$@@@@@@@$$$$$$$$@@@@@@@$=· oo**++ + ++** +$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ **++ + xx** ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· **xx + ==+~ ~@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@~ ~+== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@@$$$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ == + xx++ ~@$$$$@@$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ++xx + +++~ @$$$$$ +%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + == $$$$$$% +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@* +@$$$$$@%o~~~~~~~~~~~~~~~=@$$$$$@ == + == ·$$$$$$$@@@$+ $$$$@~ @$$$$$· == + == ·@$$$$$$@@@*o $$$$@o @$$$$@· == + == ·@$$$$$@+ ~*@$$$$$@$+xxxxxxxxxxxxxx+%@$$$$$@· == + == ·@$$$$@% ·*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$~ ·=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· @@@$$$$$$$$$@@@@@@@@@$$$$$$$$$$@@@@@@@@@$$$$$$$$$@@@ ·x== + x+++ ~%@@@@@@@@@$x =@@@@@@@@@@= x$@@@@@@@@@%~ +++x + ===x ~~~ ·~~· ~~~ x+== + ===+ x+%% %%+x +=== + ++**=%+x··~o==*===++***%=+o~~o+=%***++===*==o~··x+%=**++ + ++=====+++ xx++====++xx +=======++ + diff --git a/src/build/framegen/frames/frame_221.txt b/src/build/framegen/frames/frame_221.txt new file mode 100644 index 000000000..8d7db5aa0 --- /dev/null +++ b/src/build/framegen/frames/frame_221.txt @@ -0,0 +1,41 @@ + + + + + ++==***%%%%%%%%%%***==++ + +=***%+o o+%***=+ + +=**++ ++**=+ + xx**++ o=%%$$@@@@$$%%=o ++**xx + x+**oo ~=$@@@@@@@$$$$$$$$@@@@@@@$=~ oo**+x + ++** +$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ **xx + xx** ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· **xx + ==+~ ~@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@~ ~+== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@@$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ == + xx++ o@$$$$@@$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ++xx + +++~ @$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + == $$$$$$% +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@* +@$$$$$@%o~~~~~~~~~~~~~~~=@$$$$$@ == + == ·$$$$$$$@@@$+ $$$$@~ @$$$$$· == + == ·@$$$$$$@@@*o $$$$@x @$$$$@· == + == ·@$$$$$$+ ~*@$$$$$@$+xxxxxxxxxxxxxx+%@$$$$$@· == + == ·@$$$$@% ~*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$o ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x ·@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@~ == + ++++ x@@@@@@@@@@@= o%@@@@@@@@@@%o =@@@@@@@@@@@x ++xx + ==+o ~x+xo ·x++x· ox+xo o+== + **++ == =* x+** + +=**==o· ++*=**==**=*+o o+*=**==**=*+x ·o==**=+ + ++==****++++ ++==****==++ ++++****==++ + diff --git a/src/build/framegen/frames/frame_222.txt b/src/build/framegen/frames/frame_222.txt new file mode 100644 index 000000000..7551522ed --- /dev/null +++ b/src/build/framegen/frames/frame_222.txt @@ -0,0 +1,41 @@ + + + + + ++==**%%%%%%%%%%%%**==++ + +=***%+o o+****=+ + +=**++ ++**=+ + xx**++ ·x=%$$@@@@@@$$%=x· ++**xx + x+**~ ~*@@@@@@@@$$$$$$$$@@@@@@@@*~ ~**+x + ++** +@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@+ **++ + xx** ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ **xx + ==x· o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ·x== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + xx++ o@$$$$@@%$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ++xx + ++x~ @$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~x++ + == $$$$$$% x%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@% +@$$$$$@*~··············~=@$$$$$@ == + == ·@$$$$$$@@@$=· $$$$@~ @$$$$@· == + == ·@$$$$$$@@$=~ $$$$@x @$$$$@· == + == ·@$$$$$$+ o*@$$$$$@$=+++++++++++++++%@$$$$$@· == + == ·@$$$$@% ~*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$o ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@x == + ++++ =@@@@@@@@@@@%o ~+@@@@@@@@@@@@+~ o%@@@@@@@@@@@* ++++ + **+~ ~+***=o ·x=**=x· o=***+o ·x** + **+x ++ ++ ox**xx + ====++ *=**==**+= =+**==**=* ++==== + ++=**%%**=++ ++=**%%**=++ ++=**%%%==++xx + diff --git a/src/build/framegen/frames/frame_223.txt b/src/build/framegen/frames/frame_223.txt new file mode 100644 index 000000000..7ba0c6816 --- /dev/null +++ b/src/build/framegen/frames/frame_223.txt @@ -0,0 +1,41 @@ + + + + + +++=*%%%%%%%%%%%%%%*=+++ + +=*%=*x· ·x*=%*=+ + ++**++ ++**++ + x+**++ ~+*%$@@@@@@@@$%*+~ ++**+x + ++** o*@@@@@@@$$$$$$$$$$@@@@@@@*o **++ + xx** =@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@= **xx + xx** o$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$o **xx + =*x· o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ·x*= + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + =* o@$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o *= + xx++ x@$$$$@$%%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ++xx + +++~ @$$$$$ o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + == $$$$$$$ x%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@% x@$$$$$@*~ ·+@$$$$$@ == + == ·@$$$$$$@@@@*· $$$$@~ @$$$$@· == + == ·@$$$$$$@@$=· $$$$@x @$$$$@· == + == ·@$$$$$$x o%@$$$$$@@=++++++++++++++=$@$$$$$@· == + == ·@$$$$@% o%@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$x o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@+ == + ++++ *@@@@@@@@@@@$+~ ·o*@@@@@@@@@@@@*o ~+$@@@@@@@@@@@% ++++ + **x· x*%%%*+ o=%%%%=o +*%%%*x ·o** + ox**xo xx xx ~o**xx + ===*+x *+****==++ ++==****+* o+*=== + ++==**%%%**=++ ++=**%%%*=++ ++=**%%%%*==++ + diff --git a/src/build/framegen/frames/frame_224.txt b/src/build/framegen/frames/frame_224.txt new file mode 100644 index 000000000..814ec8673 --- /dev/null +++ b/src/build/framegen/frames/frame_224.txt @@ -0,0 +1,41 @@ + + + + ++++ + ++=**%*%%%%%%%%%%*%**=++ + x+==*%=* *=%*==+x + ===*++ ++*=== + x+**++ o=%$@@@@@@@@@@$%=o ++**+x + ++** x%@@@@@@$$$$$$$$$$$$@@@@@@%x **++ + ++== *@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@* ==++ + x+=* x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x **+x + **x· +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ·x** + ++++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++++ + =* x@$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x *= + xx++ +@$$$$@$**$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ +++x + +++~ @$$$$$ ·*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + == @$$$$@$ ~*@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@ == + == @$$$$$@$~ o$$$$$$@= x@$$$$$@ == + == ·@$$$$$$$@@@%o $$$$@· @$$$$@· == + == ·@$$$$$$@@%x $$$$@+ ·@$$$$@· == + == ·@$$$$$$~ +$@$$$$$@@*==============*@@$$$$$@· == + == ·@$$$$@% x%@@@@$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$$+ x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == =@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@* == + +++x $@@@@@$@@@@@@=o~o+%@@@@@@@@@@@@%xo~o=@@@@@@$@@@@@$ x+++ + **o· ~=%$$$%=~ x*$$$$*x ~=%$$$%=~ ** + x+**o~ ~~**xx + xx**+= ++=***=*+x xx*=***=++ ==**+x + ++==*%%%%%**== ++++*%%%%%%*++++ ==**%%%%%*==++ + diff --git a/src/build/framegen/frames/frame_225.txt b/src/build/framegen/frames/frame_225.txt new file mode 100644 index 000000000..5c5011150 --- /dev/null +++ b/src/build/framegen/frames/frame_225.txt @@ -0,0 +1,41 @@ + + + + x++++++x + +===*%%%%%****%%%%%*===+ + ++===*+= =+*===+x + ===* *=== + ++**xx ·+*$@@@@@@@@@@@@$*+· xx**++ + ++== +$@@@@@@$$$$$$$$$$$$@@@@@@$+ ==++ + ++== ·%@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@%· ==++ + x+== =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= ==++ + **o· =@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@= ·o** + ++++ ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· ++++ + =* +@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ *= + x+++ =@$$$$@%==$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= +++x + +++· ·@$$$$$ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· ·+++ + == @$$$$@$ =$@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@ == + == @$$$$$@$o ·%$$$$$@+ o$$$$$$@ == + == ·@$$$$$$$@@@$o $$$$@ @$$$$@· == + == ·@$$$$$$@@*o $$$$$= o@$$$$@· == + == ·@$$$$$$· =@@$$$$$@@%**************%@@$$$$$@· == + == ·@$$$$$$ =$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$$= +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@* == + +++x ·$@@@@$$$@@@@@*xoo+$@@@@@$$@@@@@$+oox*@@@@@$$$@@@@@~ x+++ + ** ~=%$$$$*o +%$$$$%+ o*$$$$%*o ** + xx**~~ **++ + ++**+= ++==**==x~ ~x==**==++ =+**+x + ++==*%%%%%%*== x+==*%%%%%%*==+x ==*%%%%%%*==++ + diff --git a/src/build/framegen/frames/frame_226.txt b/src/build/framegen/frames/frame_226.txt new file mode 100644 index 000000000..d27b63313 --- /dev/null +++ b/src/build/framegen/frames/frame_226.txt @@ -0,0 +1,41 @@ + + + + ++++++++++++ + ++++***%%%==++++==%%%***++++ + ++**=*+o o+*=**++ + x+**== ==**+x + ++** x*$@@@@@@@@@@@@@@$*x **++ + ++*+ o%@@@@@@$$$$$$$$$$$$$$@@@@@@%o +*++ + ++=+ x$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$x +=++ + ++== %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ==++ + ** %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% ** + +++x x@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@x x+++ + == *@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* == + xx++ *@$$$$@=ox*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@* ++xx + ==+· o@$$$$$ o*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o ·+== + == @$$$$$$ o%@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$@@= *$$$$$$~ %$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$$@$+ ~$$$$$* +@$$$$@· == + == ·@$$$$$$ x%@@$$$$$@@@$$$$$$$$$$$$$$@@@$$$$$@· == + == ·@$$$$@$ o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@%· o%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@% == + +++x ~@@@@@$$$@@@@@%+xx=$@@@@$$$$@@@@$=xo+*@@@@@$$$@@@@@o x+++ + ** o*$$@$$%x ·=%$@@$%=· x%$@@$$*x ** + x+** **+x + xx**+= xx****== ==****xx =+**++ + ++==*%%%%***++xx ++==*%*%%*%*==++ xx++*%*%%%%*==++ + diff --git a/src/build/framegen/frames/frame_227.txt b/src/build/framegen/frames/frame_227.txt new file mode 100644 index 000000000..c94758b19 --- /dev/null +++ b/src/build/framegen/frames/frame_227.txt @@ -0,0 +1,41 @@ + + + + ++++++++++++ + ++==*%*%==++xxxx++==%*%*==++ + ++**=* *=**++ + ++**+= =+**++ + ++== o=%@@@@@@@@@@@@@@@@%=o ==++ + ===+ +$@@@@@$$$$$$$$$$$$$$$$@@@@@$+ +=== + ++=+ =@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@= +=++ + ++=+ $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ +=++ + ** $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ ** + +++o =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= o+++ + == $@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + ++++ %@$$$@@x ·=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ++++ + ==+· x@$$$$$ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@x ·+== + == @$$$$$$ ·=@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$@@*~ +$$$$$% *$$$$$$ == + == ·@$$$$$$$@@@@= $@$$@ @$$$$@· == + == ·@$$$$$$@%o x$$$$$% =$$$$$@· == + == ·@$$$$$$ +$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@$o +$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@% == + +++x ~@@@@@$$$$@@@@%+xx=$@@@@$$$$@@@@$=xx+%@@@@$$$$@@@@@o x+++ + ** x*$$@@$%x ~=%$@@$%=~ x%$@@@$%x ** + x+** **++ + ++**+= xx****== ==****+x =+**++ + ++==*%%%%*%*=+++ ++==*%*%%*%*==++ +++=*%*%%%%**=++ + diff --git a/src/build/framegen/frames/frame_228.txt b/src/build/framegen/frames/frame_228.txt new file mode 100644 index 000000000..dafe70199 --- /dev/null +++ b/src/build/framegen/frames/frame_228.txt @@ -0,0 +1,41 @@ + + + + ++++===***==++++ + ==***%==xo ox==%***== + ===*++ ++*=== + ++**++ ·oxx++xxo· ++**++ + ===+ o=$@@@@@@@@@@@@@@@@@@$=o +=== + **++ o%@@@@@$$$$$$$$$$$$$$$$$$@@@@@%o ++** + ==+x ~$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$~ o+== + ++=+ x@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@x +=++ + xx== o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ==xx + ==x~ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ~x== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + +++x @$$$$@% ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ==x =$$$$@$ ~*@@@@$$$$$$$$$$@@@@@@@@@@@@@@$$$$$$$$= x== + == @$$$$$$ o*@@$$$$$@@@$$$$$$$$$$$$$$$@@$$$$$@ == + == $$$$$$$@$= ·$$$$$* x@$$$$$ == + == ·@$$$$$$$@@@@x $$$$@ @$$$$@~ == + == ·@$$$$$@@+ *$$$$$$o %$$$$$@· == + == ·@$$$$$$ x%@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@*x+%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == %@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@% == + +++x ~@@@@@$$$$@@@@%+xx=$@@@@$$$$@@@@$=xx+%@@@@$$$$@@@@@o o+++ + ** x*$@@@$%x ~=%$@@$%=~ x%$@@@$%x ** + x+** **++ + ++**+= x+****== ==****+x =+**xx + ++==*%%%%*%*==++ ++==*%*%%%%*==++ ++==*%*%%%%**=++ + diff --git a/src/build/framegen/frames/frame_229.txt b/src/build/framegen/frames/frame_229.txt new file mode 100644 index 000000000..a7e73094a --- /dev/null +++ b/src/build/framegen/frames/frame_229.txt @@ -0,0 +1,41 @@ + + + + ++++==**%%%%***=++++ + ++==*%=*+x x+**%*==++ + ++**=* *=**++ + ==== ox=******=xo ==== + **++ ·=$@@@@@@@@@@@@@@@@@@@@$=· ++** + **+o =@@@@@$$$$$$$$$$$$$$$$$$$$@@@@@= o+** + **x~ +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ~x** + +++x *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* x+++ + xx== +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ==xx + ==x· @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ·x== + ox== @$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xo + +++o @$$$$$+ x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + == %$$$$@$ +%@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$% == + == @$$$$$$~ +$@$$$$$@@%==============*@@$$$$$@ == + == $$$$$$$@@%x $$$$@+ ·@$$$$$ == + == ~@$$$$$$$@@@%o $$$$@· @$$$$@~ == + == ·@$$$$$@$~ o$$$$$$@= x@$$$$$@· == + == ·@$$$$@$ ~*@@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ ·*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@$**$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$$@@@@@$$$$$$$$$$$$$@% == + +++x ~@@@@@$$$@@@@@%+xx=$@@@@$$$$@@@@$=xx+%@@@@$$$$@@@@@o x+++ + ** o*$$@@$%x ·=%$@@$%=· x%$@@$$*x ** + x+** **+x + ++**+= xx****== ==****xx =+**+x + ++==*%%%%*%*=+xx ++==*%%%%%%*==++ xx++*%*%%%%***++ + diff --git a/src/build/framegen/frames/frame_230.txt b/src/build/framegen/frames/frame_230.txt new file mode 100644 index 000000000..b27d48bcc --- /dev/null +++ b/src/build/framegen/frames/frame_230.txt @@ -0,0 +1,41 @@ + + + + ++++=**%%%%%%%%%%**=++++ + +=***%+x x+%***=+ + ++**+= =+**++ + ox**+= o=*%$@@@@@@$%*=o =+**xo + x+**oo ·=$@@@@@@@$$$$$$$$@@@@@@@$=· oo**+x + x+** x$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$x **+x + ox** ·$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$· **xo + ==+~ ~@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@~ ~+== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ·@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@· == + xx++ ~@$$$$@@$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ ++xx + +++~ @$$$$$ x$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + == $$$$$@% +$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@* +@$$$$$@%x~~~~~~~~~~~~~~o*@$$$$$@ == + == ·$$$$$$$@@@$+ $$$$@~ @$$$$$· == + == ·@$$$$$$@@@*o $$$$@x @$$$$@· == + == ·@$$$$$@+ ~*@$$$$$@$+xxxxxxxxxxxxxxx%@$$$$$@· == + == ·@$$$$@% ·=@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$~ ·=$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@* == + +++x ·$@@@@$$$@@@@@*xox=$@@@@$$$$@@@@$=oox*@@@@@$$$@@@@@~ x+++ + ** o*%$$$$*x ·+%$$$$%+· x*$$$$$*o ** + x+**~ **+x + x+**+= +x*=**==x ==**==x+ =+**+x + ++==*%*%%%**++xx ++==*%%%%%%*==++ xx++**%%%*%*==++ + diff --git a/src/build/framegen/frames/frame_231.txt b/src/build/framegen/frames/frame_231.txt new file mode 100644 index 000000000..7280be71b --- /dev/null +++ b/src/build/framegen/frames/frame_231.txt @@ -0,0 +1,41 @@ + + + ++++ + ++==*%%%*%****%*%%%*==++ + x+==*%== ==%*==+x + ===*xo ox*=== + ++**x+ x*%$@@@@@@@@@@$%*x +x**++ + ++*= +$@@@@@@$$$$$$$$$$$$@@@@@@$+ =*++ + ++== *@@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@@* ==+x + xx== +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ==xx + **o· +@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@+ ·o** + ++++ @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ++++ + ** +@$$$$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ *= + xx++ +@$$$$@%=*$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ++xx + +++~ @$$$$$ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + == @$$$$$$ ·=@@@@$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@ == + == @$$$$$@$o ~$$$$$$@+ x@$$$$$@ == + == ·@$$$$$$$@@@$o $$$$@· @$$$$@· == + == ·@$$$$$$@@%o $$$$$+ ~@$$$$@· == + == ·@$$$$$$~ +$@$$$$$@@%**************%@@$$$$$@· == + == ·@$$$$@$ +$@@@$$$$$$$$$@@@@@@@@@@@@@@@@$$$$$$$@· == + == ·@$$$$$@= +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == *@$$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$$@* == + +++x $@@@@@$$@@@@@*xoo+%@@@@@$$@@@@@%+o~x=@@@@@$$@@@@@$· x+++ + **o ~=%$$$%*o +%$$$$%+ o*%$$$%=~ ** + x+**~~ ~**+x + ++**== ++==***=xo o+==**==++ =+**++ + ++==*%%%%%**++xx ++==*%%%%%%*==++ xx++**%%%%%**=++ + diff --git a/src/build/framegen/frames/frame_232.txt b/src/build/framegen/frames/frame_232.txt new file mode 100644 index 000000000..9ae60cdee --- /dev/null +++ b/src/build/framegen/frames/frame_232.txt @@ -0,0 +1,41 @@ + + + ++++====++++ + ++==*%*%==++++++++==%*%*==++ + ++**=* *=**++ + x+**+= ·· =+**+x + ++== o=%@@@@@@@@@@@@@@@@%=o ==++ + ===+ +$@@@@@$$$$$$$$$$$$$$$$@@@@@$+ +=== + ++++ =@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$@@@@= ++++ + ++=+ $@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$ +=++ + ** $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ** + +++o =@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@= o+++ + == $@$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ == + ++++ $@$$$@@x ·+$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + ==+· +@$$$$$ =$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@+ ·+== + == @$$$$$$ =$@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@ == + == $$$$$$$@*o +$$$$$% *$$$$$$ == + == ·@$$$$$$$@@@@+ $$$$@ @$$$$@· == + == ·@$$$$$$@%o x$$$$$% =$$$$$@· == + == ·@$$$$$$ =@@@$$$$$@@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@$o +$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == +@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@@@@@$$$$$$$$$$$$@@= == + ++++ %@@@@@@@@@@@$+o·~x*@@@@@@@@@@@@*o··~+$@@@@@@@@@@@% x+++ + **x· +*%%%*+· o=%%%%=o ·+%%$%*+ ·o** + x+**o~ oo oo oo**+x + ++**+=+~ =+******+x x+******+= ~x=+**++ + ++==**%%%***++xx ++==***%%***==++ xx++***%%%**==++ + diff --git a/src/build/framegen/frames/frame_233.txt b/src/build/framegen/frames/frame_233.txt new file mode 100644 index 000000000..5d6e28d05 --- /dev/null +++ b/src/build/framegen/frames/frame_233.txt @@ -0,0 +1,41 @@ + + + ++++==****==++++ + ==***%==xo ox==%***== + ===*++ ++*=== + ++**x+ ·oxx++xxo· +x**++ + ===+ o*$@@@@@@@@@@@@@@@@@@$*o +=== + **+x o%@@@@@$$$$$$$$$$$$$$$$$$@@@@@%o x+** + ==+o ~$@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@$~ o+== + ++++ +@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@+ ++++ + ox== o@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@o ==xo + ==+~ %@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@% ~+== + ox== @@$$$@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ==xo + +++x @$$$$@* ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ x+++ + ==x *$$$$$$ ~*@@@@$$$$$$$$$$@@@@@@@@@@@@@@$$$$$$$$* x== + == @$$$$$$ ~*@@$$$$$@@$%%%%%%%%%%%%%%$@@$$$$$@ == + == $$$$$$$@@= ·$$$$$* x$$$$$$ == + == ~@$$$$$$$@@@@x $$$$@ @$$$$@~ == + == ·@$$$$$@@+ *$$$$$$o ·$$$$$$@· == + == ·@$$$$$$ x$@@@$$$$$$@@@@@@@@@@@@@@@@@@@$$$$$@· == + == ·@$$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$@@*x+%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == x@@$$$$$$$$$$$@@@@@@@$$$$$$$$$$$$@@@@@@@$$$$$$$$$$$@@+ == + ++++ *@@@@@@@@@@@%x· ~=@@@@@@@@@@@@=~ x%@@@@@@@@@@@* ++++ + **x· o=*%%=x ~+*%%*+~ x=%%*=x ·x** + x+**xo ++ ++ ox**+x + x+**=*xx *+****==++ ++==****=* x+==**+x + ++==********++xx ++==********==++ xx++********==++ + diff --git a/src/build/framegen/frames/frame_234.txt b/src/build/framegen/frames/frame_234.txt new file mode 100644 index 000000000..b4e624e01 --- /dev/null +++ b/src/build/framegen/frames/frame_234.txt @@ -0,0 +1,41 @@ + + + +++=**%%%%%%%%**=+++ + ++***%==o· ·o==%***++ + ++**+* *+**++ + ==== o+=*%$$$$%*=+o ==== + x+**xx x*@@@@@@@@@@@@@@@@@@@@@@*x xx**+x + xx**~~ ~%@@@@$$$$$$$$$$$$$$$$$$$$$$@@@@%~ ~~**xx + **o· *@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@@* ·x** + ==+o %@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@% o+== + xx== *@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@* ==xx + ==x· @@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@ ·x== + xx== @$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ==xx + +++o @$$$$$o ~*@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ o+++ + == %$$$$@% ~*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$% == + == @$$$$$$+ o*@$$$$$@$=+++++++++++++++%@$$$$$@ == + == $$$$$$$@@@=~ $$$$$x @$$$$$ == + == ·@$$$$$$@@@@= $$$$@~ @$$$$@· == + == ·@$$$$$@% +@$$$$$@%~··············~=@$$$$$@· == + == ·@$$$$@% x%@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@%%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + == ~@@$$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@o == + ++++ +@@@@@@@@@@@=~ x$@@@@@@@@@@$x ·=@@@@@@@@@@@+ ++++ + **+~ o+=+x· o+==+o ·x+=+x ~x** + xx**+x == == x+**+x + xx**==+= ~x*=******+* *+******=*x~ =+==**xx + ++==********++ x+++********+++x ++********==++ + diff --git a/src/build/framegen/frames/frame_235.txt b/src/build/framegen/frames/frame_235.txt new file mode 100644 index 000000000..7a3721924 --- /dev/null +++ b/src/build/framegen/frames/frame_235.txt @@ -0,0 +1,41 @@ + + + ++==**%%*%%%%%%*%%**==++ + ==***%xx xx%***== + ++**++ ++**++ + x+**++ x=*$$@@@@@@$$*=x ++**+x + ++**~o ~*$@@@@@@@$$$$$$$$@@@@@@@$*~ oo**++ + ++** +$@@@$$$$$$$$$$$$$$$$$$$$$$$$@@@$+ **++ + xx** ~$@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@$~ **xx + ==+~ ~@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@@~ ~+== + ++++ $@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@$ ++++ + == ~@$$$$$@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@~ == + x+++ o@$$$$@@%$@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@o +++x + +++~ @$$$$$ x%@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ ~+++ + == $$$$$$$ x$@@@$$$$$$$@@@@@@@@@@@@@@@@@@$$$$$$$ == + == @$$$$$@* +@$$$$$@%o··············~=@$$$$$@ == + == ·$$$$$$$@@@$= $$$$@~ @$$$$$· == + == ·@$$$$$$@@$*o $$$$@x @$$$$@· == + == ·@$$$$$$+ ~*@$$$$$@$=xxxxxxxxxxxxxx+%@$$$$$@· == + == ·@$$$$$$ ~*@@@@$$$$$$$$@@@@@@@@@@@@@@@@@$$$$$$@· == + == ·@$$$$$$o ·=@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$@@@@@@@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ·@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@· == + == ~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$~ == + == @$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@ == + ==x· @@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$@@@@@@@@$$$$$$$$$$$@@ x== + ++++ o$@@@@@@@@@@+ ~*@@@@@@@@@@*~ +@@@@@@@@@@$x ++++ + ==+x ·oxo~ ~oo~ ~oxo· o+*= + x+**+x =* *= ++**xx + x+==**+*+o ++*=**==**=*+x x+*=**==**=*++ ~+*=**==xx + ++++******==++ ++++********++++ ++==******+++x + diff --git a/src/build/framegen/main.zig b/src/build/framegen/main.zig new file mode 100644 index 000000000..1be33eb11 --- /dev/null +++ b/src/build/framegen/main.zig @@ -0,0 +1,271 @@ +const std = @import("std"); +const fs = std.fs; + +/// Generates a compressed file of all the ghostty frames +pub fn main() !void { + var gpa = std.heap.GeneralPurposeAllocator(.{}){}; + + var arg_iter = try std.process.argsWithAllocator(gpa.allocator()); + // Skip the exe name + _ = arg_iter.skip(); + + const output_path = arg_iter.next() orelse return error.MissingOutputPath; + + const out_dir_path = fs.path.dirname(output_path) orelse return error.InvalidOutputPath; + const out_dir = try fs.cwd().openDir(out_dir_path, .{}); + + const compressed_file = try out_dir.createFile(fs.path.basename(output_path), .{}); + + // Join the frames with a null byte. We'll split on this later + const all_frames = try std.mem.join(gpa.allocator(), "\x01", &frames); + var fbs = std.io.fixedBufferStream(all_frames); + + const reader = fbs.reader(); + try std.compress.flate.compress(reader, compressed_file.writer(), .{}); + + const stdout = std.io.getStdOut().writer(); + + try stdout.print( + \\//! This file is auto-generated. Do not edit. + \\ + \\pub const compressed = @embedFile("{s}"); + , .{output_path}); +} + +const frames = [_][]const u8{ + @embedFile("frames/frame_001.txt"), + @embedFile("frames/frame_002.txt"), + @embedFile("frames/frame_003.txt"), + @embedFile("frames/frame_004.txt"), + @embedFile("frames/frame_005.txt"), + @embedFile("frames/frame_006.txt"), + @embedFile("frames/frame_007.txt"), + @embedFile("frames/frame_008.txt"), + @embedFile("frames/frame_009.txt"), + @embedFile("frames/frame_010.txt"), + @embedFile("frames/frame_011.txt"), + @embedFile("frames/frame_012.txt"), + @embedFile("frames/frame_013.txt"), + @embedFile("frames/frame_014.txt"), + @embedFile("frames/frame_015.txt"), + @embedFile("frames/frame_016.txt"), + @embedFile("frames/frame_017.txt"), + @embedFile("frames/frame_018.txt"), + @embedFile("frames/frame_019.txt"), + @embedFile("frames/frame_020.txt"), + @embedFile("frames/frame_021.txt"), + @embedFile("frames/frame_022.txt"), + @embedFile("frames/frame_023.txt"), + @embedFile("frames/frame_024.txt"), + @embedFile("frames/frame_025.txt"), + @embedFile("frames/frame_026.txt"), + @embedFile("frames/frame_027.txt"), + @embedFile("frames/frame_028.txt"), + @embedFile("frames/frame_029.txt"), + @embedFile("frames/frame_030.txt"), + @embedFile("frames/frame_031.txt"), + @embedFile("frames/frame_032.txt"), + @embedFile("frames/frame_033.txt"), + @embedFile("frames/frame_034.txt"), + @embedFile("frames/frame_035.txt"), + @embedFile("frames/frame_036.txt"), + @embedFile("frames/frame_037.txt"), + @embedFile("frames/frame_038.txt"), + @embedFile("frames/frame_039.txt"), + @embedFile("frames/frame_040.txt"), + @embedFile("frames/frame_041.txt"), + @embedFile("frames/frame_042.txt"), + @embedFile("frames/frame_043.txt"), + @embedFile("frames/frame_044.txt"), + @embedFile("frames/frame_045.txt"), + @embedFile("frames/frame_046.txt"), + @embedFile("frames/frame_047.txt"), + @embedFile("frames/frame_048.txt"), + @embedFile("frames/frame_049.txt"), + @embedFile("frames/frame_050.txt"), + @embedFile("frames/frame_051.txt"), + @embedFile("frames/frame_052.txt"), + @embedFile("frames/frame_053.txt"), + @embedFile("frames/frame_054.txt"), + @embedFile("frames/frame_055.txt"), + @embedFile("frames/frame_056.txt"), + @embedFile("frames/frame_057.txt"), + @embedFile("frames/frame_058.txt"), + @embedFile("frames/frame_059.txt"), + @embedFile("frames/frame_060.txt"), + @embedFile("frames/frame_061.txt"), + @embedFile("frames/frame_062.txt"), + @embedFile("frames/frame_063.txt"), + @embedFile("frames/frame_064.txt"), + @embedFile("frames/frame_065.txt"), + @embedFile("frames/frame_066.txt"), + @embedFile("frames/frame_067.txt"), + @embedFile("frames/frame_068.txt"), + @embedFile("frames/frame_069.txt"), + @embedFile("frames/frame_070.txt"), + @embedFile("frames/frame_071.txt"), + @embedFile("frames/frame_072.txt"), + @embedFile("frames/frame_073.txt"), + @embedFile("frames/frame_074.txt"), + @embedFile("frames/frame_075.txt"), + @embedFile("frames/frame_076.txt"), + @embedFile("frames/frame_077.txt"), + @embedFile("frames/frame_078.txt"), + @embedFile("frames/frame_079.txt"), + @embedFile("frames/frame_080.txt"), + @embedFile("frames/frame_081.txt"), + @embedFile("frames/frame_082.txt"), + @embedFile("frames/frame_083.txt"), + @embedFile("frames/frame_084.txt"), + @embedFile("frames/frame_085.txt"), + @embedFile("frames/frame_086.txt"), + @embedFile("frames/frame_087.txt"), + @embedFile("frames/frame_088.txt"), + @embedFile("frames/frame_089.txt"), + @embedFile("frames/frame_090.txt"), + @embedFile("frames/frame_091.txt"), + @embedFile("frames/frame_092.txt"), + @embedFile("frames/frame_093.txt"), + @embedFile("frames/frame_094.txt"), + @embedFile("frames/frame_095.txt"), + @embedFile("frames/frame_096.txt"), + @embedFile("frames/frame_097.txt"), + @embedFile("frames/frame_098.txt"), + @embedFile("frames/frame_099.txt"), + @embedFile("frames/frame_100.txt"), + @embedFile("frames/frame_101.txt"), + @embedFile("frames/frame_102.txt"), + @embedFile("frames/frame_103.txt"), + @embedFile("frames/frame_104.txt"), + @embedFile("frames/frame_105.txt"), + @embedFile("frames/frame_106.txt"), + @embedFile("frames/frame_107.txt"), + @embedFile("frames/frame_108.txt"), + @embedFile("frames/frame_109.txt"), + @embedFile("frames/frame_110.txt"), + @embedFile("frames/frame_111.txt"), + @embedFile("frames/frame_112.txt"), + @embedFile("frames/frame_113.txt"), + @embedFile("frames/frame_114.txt"), + @embedFile("frames/frame_115.txt"), + @embedFile("frames/frame_116.txt"), + @embedFile("frames/frame_117.txt"), + @embedFile("frames/frame_118.txt"), + @embedFile("frames/frame_119.txt"), + @embedFile("frames/frame_120.txt"), + @embedFile("frames/frame_121.txt"), + @embedFile("frames/frame_122.txt"), + @embedFile("frames/frame_123.txt"), + @embedFile("frames/frame_124.txt"), + @embedFile("frames/frame_125.txt"), + @embedFile("frames/frame_126.txt"), + @embedFile("frames/frame_127.txt"), + @embedFile("frames/frame_128.txt"), + @embedFile("frames/frame_129.txt"), + @embedFile("frames/frame_130.txt"), + @embedFile("frames/frame_131.txt"), + @embedFile("frames/frame_132.txt"), + @embedFile("frames/frame_133.txt"), + @embedFile("frames/frame_134.txt"), + @embedFile("frames/frame_135.txt"), + @embedFile("frames/frame_136.txt"), + @embedFile("frames/frame_137.txt"), + @embedFile("frames/frame_138.txt"), + @embedFile("frames/frame_139.txt"), + @embedFile("frames/frame_140.txt"), + @embedFile("frames/frame_141.txt"), + @embedFile("frames/frame_142.txt"), + @embedFile("frames/frame_143.txt"), + @embedFile("frames/frame_144.txt"), + @embedFile("frames/frame_145.txt"), + @embedFile("frames/frame_146.txt"), + @embedFile("frames/frame_147.txt"), + @embedFile("frames/frame_148.txt"), + @embedFile("frames/frame_149.txt"), + @embedFile("frames/frame_150.txt"), + @embedFile("frames/frame_151.txt"), + @embedFile("frames/frame_152.txt"), + @embedFile("frames/frame_153.txt"), + @embedFile("frames/frame_154.txt"), + @embedFile("frames/frame_155.txt"), + @embedFile("frames/frame_156.txt"), + @embedFile("frames/frame_157.txt"), + @embedFile("frames/frame_158.txt"), + @embedFile("frames/frame_159.txt"), + @embedFile("frames/frame_160.txt"), + @embedFile("frames/frame_161.txt"), + @embedFile("frames/frame_162.txt"), + @embedFile("frames/frame_163.txt"), + @embedFile("frames/frame_164.txt"), + @embedFile("frames/frame_165.txt"), + @embedFile("frames/frame_166.txt"), + @embedFile("frames/frame_167.txt"), + @embedFile("frames/frame_168.txt"), + @embedFile("frames/frame_169.txt"), + @embedFile("frames/frame_170.txt"), + @embedFile("frames/frame_171.txt"), + @embedFile("frames/frame_172.txt"), + @embedFile("frames/frame_173.txt"), + @embedFile("frames/frame_174.txt"), + @embedFile("frames/frame_175.txt"), + @embedFile("frames/frame_176.txt"), + @embedFile("frames/frame_177.txt"), + @embedFile("frames/frame_178.txt"), + @embedFile("frames/frame_179.txt"), + @embedFile("frames/frame_180.txt"), + @embedFile("frames/frame_181.txt"), + @embedFile("frames/frame_182.txt"), + @embedFile("frames/frame_183.txt"), + @embedFile("frames/frame_184.txt"), + @embedFile("frames/frame_185.txt"), + @embedFile("frames/frame_186.txt"), + @embedFile("frames/frame_187.txt"), + @embedFile("frames/frame_188.txt"), + @embedFile("frames/frame_189.txt"), + @embedFile("frames/frame_190.txt"), + @embedFile("frames/frame_191.txt"), + @embedFile("frames/frame_192.txt"), + @embedFile("frames/frame_193.txt"), + @embedFile("frames/frame_194.txt"), + @embedFile("frames/frame_195.txt"), + @embedFile("frames/frame_196.txt"), + @embedFile("frames/frame_197.txt"), + @embedFile("frames/frame_198.txt"), + @embedFile("frames/frame_199.txt"), + @embedFile("frames/frame_200.txt"), + @embedFile("frames/frame_201.txt"), + @embedFile("frames/frame_202.txt"), + @embedFile("frames/frame_203.txt"), + @embedFile("frames/frame_204.txt"), + @embedFile("frames/frame_205.txt"), + @embedFile("frames/frame_206.txt"), + @embedFile("frames/frame_207.txt"), + @embedFile("frames/frame_208.txt"), + @embedFile("frames/frame_209.txt"), + @embedFile("frames/frame_210.txt"), + @embedFile("frames/frame_211.txt"), + @embedFile("frames/frame_212.txt"), + @embedFile("frames/frame_213.txt"), + @embedFile("frames/frame_214.txt"), + @embedFile("frames/frame_215.txt"), + @embedFile("frames/frame_216.txt"), + @embedFile("frames/frame_217.txt"), + @embedFile("frames/frame_218.txt"), + @embedFile("frames/frame_219.txt"), + @embedFile("frames/frame_220.txt"), + @embedFile("frames/frame_221.txt"), + @embedFile("frames/frame_222.txt"), + @embedFile("frames/frame_223.txt"), + @embedFile("frames/frame_224.txt"), + @embedFile("frames/frame_225.txt"), + @embedFile("frames/frame_226.txt"), + @embedFile("frames/frame_227.txt"), + @embedFile("frames/frame_228.txt"), + @embedFile("frames/frame_229.txt"), + @embedFile("frames/frame_230.txt"), + @embedFile("frames/frame_231.txt"), + @embedFile("frames/frame_232.txt"), + @embedFile("frames/frame_233.txt"), + @embedFile("frames/frame_234.txt"), + @embedFile("frames/frame_235.txt"), +}; diff --git a/src/build/main.zig b/src/build/main.zig index 291791917..a0e67543f 100644 --- a/src/build/main.zig +++ b/src/build/main.zig @@ -10,6 +10,7 @@ pub const GitVersion = @import("GitVersion.zig"); pub const GhosttyBench = @import("GhosttyBench.zig"); pub const GhosttyDocs = @import("GhosttyDocs.zig"); pub const GhosttyExe = @import("GhosttyExe.zig"); +pub const GhosttyFrameData = @import("GhosttyFrameData.zig"); pub const GhosttyLib = @import("GhosttyLib.zig"); pub const GhosttyResources = @import("GhosttyResources.zig"); pub const GhosttyXCFramework = @import("GhosttyXCFramework.zig"); diff --git a/src/build/webgen/main_actions.zig b/src/build/webgen/main_actions.zig index f4dffbc13..5002a5bac 100644 --- a/src/build/webgen/main_actions.zig +++ b/src/build/webgen/main_actions.zig @@ -1,58 +1,8 @@ const std = @import("std"); const help_strings = @import("help_strings"); -const KeybindAction = @import("../../input/Binding.zig").Action; +const helpgen_actions = @import("../../input/helpgen_actions.zig"); pub fn main() !void { const output = std.io.getStdOut().writer(); - try genKeybindActions(output); -} - -pub fn genKeybindActions(writer: anytype) !void { - // Write the header - try writer.writeAll( - \\--- - \\title: Keybinding Action Reference - \\description: Reference of all Ghostty keybinding actions. - \\editOnGithubLink: https://github.com/ghostty-org/ghostty/edit/main/src/input/Binding.zig - \\--- - \\ - \\This is a reference of all Ghostty keybinding actions. - \\ - \\ - ); - - @setEvalBranchQuota(5_000); - - var buffer = std.ArrayList(u8).init(std.heap.page_allocator); - defer buffer.deinit(); - - const fields = @typeInfo(KeybindAction).Union.fields; - inline for (fields) |field| { - if (field.name[0] == '_') continue; - - // Write previously stored doc comment below all related actions - if (@hasDecl(help_strings.KeybindAction, field.name)) { - try writer.writeAll(buffer.items); - try writer.writeAll("\n"); - - buffer.clearRetainingCapacity(); - } - - // Write the field name. - try writer.writeAll("## `"); - try writer.writeAll(field.name); - try writer.writeAll("`\n"); - - if (@hasDecl(help_strings.KeybindAction, field.name)) { - var iter = std.mem.splitScalar( - u8, - @field(help_strings.KeybindAction, field.name), - '\n', - ); - while (iter.next()) |s| { - try buffer.appendSlice(s); - try buffer.appendSlice("\n"); - } - } - } + try helpgen_actions.generate(output, .markdown, true, std.heap.page_allocator); } diff --git a/src/cli/action.zig b/src/cli/action.zig index 693d509fc..f3da2e2ef 100644 --- a/src/cli/action.zig +++ b/src/cli/action.zig @@ -13,6 +13,7 @@ const show_config = @import("show_config.zig"); const validate_config = @import("validate_config.zig"); const crash_report = @import("crash_report.zig"); const show_face = @import("show_face.zig"); +const boo = @import("boo.zig"); /// Special commands that can be invoked via CLI flags. These are all /// invoked by using `+` as a CLI flag. The only exception is @@ -51,6 +52,9 @@ pub const Action = enum { // List, (eventually) view, and (eventually) send crash reports. @"crash-report", + // Boo! + boo, + pub const Error = error{ /// Multiple actions were detected. You can specify at most one /// action on the CLI otherwise the behavior desired is ambiguous. @@ -151,6 +155,7 @@ pub const Action = enum { .@"validate-config" => try validate_config.run(alloc), .@"crash-report" => try crash_report.run(alloc), .@"show-face" => try show_face.run(alloc), + .boo => try boo.run(alloc), }; } @@ -186,6 +191,7 @@ pub const Action = enum { .@"validate-config" => validate_config.Options, .@"crash-report" => crash_report.Options, .@"show-face" => show_face.Options, + .boo => boo.Options, }; } } diff --git a/src/cli/args.zig b/src/cli/args.zig index 166b2daf5..7385e6a3e 100644 --- a/src/cli/args.zig +++ b/src/cli/args.zig @@ -8,6 +8,8 @@ const internal_os = @import("../os/main.zig"); const Diagnostic = diags.Diagnostic; const DiagnosticList = diags.DiagnosticList; +const log = std.log.scoped(.cli); + // TODO: // - Only `--long=value` format is accepted. Do we want to allow // `--long value`? Not currently allowed. @@ -1258,9 +1260,11 @@ pub fn LineIterator(comptime ReaderType: type) type { const buf = buf: { while (true) { // Read the full line - var entry = self.r.readUntilDelimiterOrEof(self.entry[2..], '\n') catch { - // TODO: handle errors - unreachable; + var entry = self.r.readUntilDelimiterOrEof(self.entry[2..], '\n') catch |err| switch (err) { + inline else => |e| { + log.warn("cannot read from \"{s}\": {}", .{ self.filepath, e }); + return null; + }, } orelse return null; // Increment our line counter diff --git a/src/cli/boo.zig b/src/cli/boo.zig new file mode 100644 index 000000000..7ecbf79fb --- /dev/null +++ b/src/cli/boo.zig @@ -0,0 +1,234 @@ +const std = @import("std"); +const builtin = @import("builtin"); +const args = @import("args.zig"); +const Action = @import("action.zig").Action; +const Allocator = std.mem.Allocator; +const help_strings = @import("help_strings"); +const vaxis = @import("vaxis"); + +const framedata = @import("framedata"); + +const vxfw = vaxis.vxfw; + +pub const Options = struct { + pub fn deinit(self: Options) void { + _ = self; + } + + /// Enables `-h` and `--help` to work. + pub fn help(self: Options) !void { + _ = self; + return Action.help_error; + } +}; + +const Boo = struct { + frame: u8, + framerate: u32, // 30 fps + // We know the size of this at compile time, but we heap allocate the slice to prevent the + // binary from increasing too much in size + buffer: [frame_width * frame_height]vaxis.Cell = undefined, + + ghostty_style: vaxis.Style, + outline_style: vaxis.Style, + + // Width of a single frame + const frame_width = 100; + // Height of a single frame + const frame_height = 41; + + fn widget(self: *Boo) vxfw.Widget { + return .{ + .userdata = self, + .eventHandler = Boo.typeErasedEventHandler, + .drawFn = Boo.typeErasedDrawFn, + }; + } + + fn typeErasedEventHandler(ptr: *anyopaque, ctx: *vxfw.EventContext, event: vxfw.Event) anyerror!void { + const self: *Boo = @ptrCast(@alignCast(ptr)); + switch (event) { + .init, + .tick, + => { + self.updateFrame(); + ctx.redraw = true; + return ctx.tick(self.framerate, self.widget()); + }, + .key_press => |key| { + if (key.matches('c', .{ .ctrl = true }) or + key.matches(vaxis.Key.escape, .{})) + { + ctx.quit = true; + return; + } + }, + else => {}, + } + } + + fn typeErasedDrawFn(ptr: *anyopaque, ctx: vxfw.DrawContext) Allocator.Error!vxfw.Surface { + const self: *Boo = @ptrCast(@alignCast(ptr)); + const max = ctx.max.size(); + + // Warn for screen size + if (max.width < frame_width or max.height < frame_height) { + const text: vxfw.Text = .{ .text = "Screen must be at least 100w x 41h" }; + const center: vxfw.Center = .{ .child = text.widget() }; + return center.draw(ctx); + } + + // Calculate x and y offsets to center the animation frame + const offset_y = (max.height - frame_height) / 2; + const offset_x = (max.width - frame_width) / 2; + + // Create the animation surface + const child: vxfw.Surface = .{ + .size = .{ .width = @intCast(frame_width), .height = @intCast(frame_height) }, + .widget = self.widget(), + .buffer = &self.buffer, + .children = &.{}, + }; + + // Allocate a slice of child surfaces + var children = try ctx.arena.alloc(vxfw.SubSurface, 1); + children[0] = .{ + .origin = .{ .row = @intCast(offset_y), .col = @intCast(offset_x) }, + .surface = child, + }; + + return .{ + .size = max, + .widget = self.widget(), + .buffer = &.{}, + .children = children, + }; + } + + /// Updates our internal buffer with the current frame, then advances the frame index + fn updateFrame(self: *Boo) void { + const frame = frames[self.frame]; + // A frame is characters with html spans. When we encounter a span, we use the outline style + // until the span ends. That is, when we find a '<', we parse until '>'. Then we use the + // outline styule until the next '<', and skip until the next '>' + + const State = enum { + normal, + span, + in_tag, + in_closing_tag, + }; + + var cell_idx: usize = 0; + + var line_iter = std.mem.splitScalar(u8, frame, '\n'); + while (line_iter.next()) |line| { + var state: State = .normal; + var style = self.ghostty_style; + var cp_iter: std.unicode.Utf8Iterator = .{ .bytes = line, .i = 0 }; + while (cp_iter.nextCodepointSlice()) |char| { + switch (state) { + .normal => if (std.mem.eql(u8, "<", char)) { + state = .in_tag; + // We will be entering a span + style = self.outline_style; + continue; + }, + .span => if (std.mem.eql(u8, "<", char)) { + state = .in_tag; + style = self.ghostty_style; + continue; + }, + .in_tag => { + // If we encounter a '/', we are a closing tag + // If we parse all the way to a '>' we are an opening tag: we are now in a span + if (std.mem.eql(u8, "/", char)) + state = .in_closing_tag + else if (std.mem.eql(u8, ">", char)) + state = .span; + continue; + }, + .in_closing_tag => { + // If we are closing a tag, we will enter the normal state + if (std.mem.eql(u8, ">", char)) state = .normal; + continue; + }, + } + self.buffer[cell_idx] = .{ + .char = .{ + .grapheme = char, + .width = 1, + }, + .style = style, + }; + cell_idx += 1; + } + } + std.debug.assert(cell_idx == self.buffer.len); + + // Lastly, update the frame index + self.frame += 1; + if (self.frame == frames.len) self.frame = 0; + } +}; + +/// The `boo` command is used to display the animation from the Ghostty website in the terminal +pub fn run(gpa: Allocator) !u8 { + // Disable on non-desktop systems. + switch (builtin.os.tag) { + .windows, .macos, .linux => {}, + else => return 1, + } + + var opts: Options = .{}; + defer opts.deinit(); + + { + var iter = try args.argsIterator(gpa); + defer iter.deinit(); + try args.parse(Options, gpa, &opts, &iter); + } + + try decompressFrames(gpa); + defer { + gpa.free(frames); + gpa.free(decompressed_data); + } + + var app = try vxfw.App.init(gpa); + defer app.deinit(); + + var boo: Boo = undefined; + boo.frame = 0; + boo.framerate = 1000 / 30; + boo.ghostty_style = .{}; + boo.outline_style = .{ .fg = .{ .index = 4 } }; + @memset(&boo.buffer, .{}); + + try app.run(boo.widget(), .{}); + + return 0; +} + +/// We store a global ref to the decompressed data. All of our frames reference into this data +var decompressed_data: []const u8 = undefined; + +/// Heap allocated list of frames. The underlying frame data references decompressed_data +var frames: []const []const u8 = undefined; + +/// Decompress the frames into a slice of individual frames +fn decompressFrames(gpa: Allocator) !void { + var fbs = std.io.fixedBufferStream(framedata.compressed); + var list = std.ArrayList(u8).init(gpa); + + try std.compress.flate.decompress(fbs.reader(), list.writer()); + decompressed_data = try list.toOwnedSlice(); + + var frame_list = try std.ArrayList([]const u8).initCapacity(gpa, 235); + + var frame_iter = std.mem.splitScalar(u8, decompressed_data, '\x01'); + while (frame_iter.next()) |frame| { + try frame_list.append(frame); + } + frames = try frame_list.toOwnedSlice(); +} diff --git a/src/cli/list_actions.zig b/src/cli/list_actions.zig index 6f67a92d2..1d17873cc 100644 --- a/src/cli/list_actions.zig +++ b/src/cli/list_actions.zig @@ -2,7 +2,7 @@ const std = @import("std"); const args = @import("args.zig"); const Action = @import("action.zig").Action; const Allocator = std.mem.Allocator; -const help_strings = @import("help_strings"); +const helpgen_actions = @import("../input/helpgen_actions.zig"); pub const Options = struct { /// If `true`, print out documentation about the action associated with the @@ -38,19 +38,7 @@ pub fn run(alloc: Allocator) !u8 { } const stdout = std.io.getStdOut().writer(); - const info = @typeInfo(help_strings.KeybindAction); - inline for (info.Struct.decls) |field| { - try stdout.print("{s}", .{field.name}); - if (opts.docs) { - try stdout.print(":\n", .{}); - var iter = std.mem.splitScalar(u8, std.mem.trimRight(u8, @field(help_strings.KeybindAction, field.name), &std.ascii.whitespace), '\n'); - while (iter.next()) |line| { - try stdout.print(" {s}\n", .{line}); - } - } else { - try stdout.print("\n", .{}); - } - } + try helpgen_actions.generate(stdout, .plaintext, opts.docs, std.heap.page_allocator); return 0; } diff --git a/src/cli/list_themes.zig b/src/cli/list_themes.zig index f7ee10ce6..8ebac4487 100644 --- a/src/cli/list_themes.zig +++ b/src/cli/list_themes.zig @@ -192,6 +192,7 @@ const Preview = struct { normal, help, search, + save, }, color_scheme: vaxis.Color.Scheme, text_input: vaxis.widgets.TextInput, @@ -377,6 +378,8 @@ const Preview = struct { self.mode = .help; if (key.matches('/', .{})) self.mode = .search; + if (key.matchesAny(&.{ vaxis.Key.enter, vaxis.Key.kp_enter }, .{})) + self.mode = .save; if (key.matchesAny(&.{ 'x', '/' }, .{ .ctrl = true })) { self.text_input.buf.clearRetainingCapacity(); try self.updateFiltered(); @@ -431,6 +434,12 @@ const Preview = struct { try self.text_input.update(.{ .key_press = key }); try self.updateFiltered(); }, + .save => { + if (key.matches('q', .{})) + self.should_quit = true; + if (key.matchesAny(&.{ vaxis.Key.escape, vaxis.Key.enter, vaxis.Key.kp_enter }, .{})) + self.mode = .normal; + }, } }, .color_scheme => |color_scheme| self.color_scheme = color_scheme, @@ -674,7 +683,7 @@ const Preview = struct { .{ .keys = "End", .help = "Go to the end of the list." }, .{ .keys = "/", .help = "Start search." }, .{ .keys = "^X, ^/", .help = "Clear search." }, - .{ .keys = "⏎", .help = "Close search window." }, + .{ .keys = "⏎", .help = "Save theme or close search window." }, }; for (key_help, 0..) |help, captured_i| { @@ -725,6 +734,51 @@ const Preview = struct { child.fill(.{ .style = self.ui_standard() }); self.text_input.drawWithStyle(child, self.ui_standard()); }, + .save => { + const theme = self.themes[self.filtered.items[self.current]]; + + const width = 90; + const height = 12; + const child = win.child( + .{ + .x_off = win.width / 2 -| width / 2, + .y_off = win.height / 2 -| height / 2, + .width = width, + .height = height, + .border = .{ + .where = .all, + .style = self.ui_standard(), + }, + }, + ); + + child.fill(.{ .style = self.ui_standard() }); + + const save_instructions = [_][]const u8{ + "To apply this theme, add the following line to your Ghostty configuration:", + "", + try std.fmt.allocPrint(alloc, "theme = {s}", .{theme.theme}), + "", + "Save the configuration file and then reload it to apply the new theme.", + "For more details on configuration and themes, visit the Ghostty documentation:", + "", + "https://ghostty.org/docs/config/reference", + }; + + for (save_instructions, 0..) |instruction, captured_i| { + const i: u16 = @intCast(captured_i); + _ = child.printSegment( + .{ + .text = instruction, + .style = self.ui_standard(), + }, + .{ + .row_offset = i + 1, + .col_offset = 2, + }, + ); + } + }, } } diff --git a/src/cli/version.zig b/src/cli/version.zig index 4a6af242c..f6d2ea9df 100644 --- a/src/cli/version.zig +++ b/src/cli/version.zig @@ -51,19 +51,15 @@ pub fn run(alloc: Allocator) !u8 { gtk.gtk_get_minor_version(), gtk.gtk_get_micro_version(), }); - if (comptime build_options.adwaita) { - try stdout.print(" - libadwaita : enabled\n", .{}); - try stdout.print(" build : {s}\n", .{ - gtk.ADW_VERSION_S, - }); - try stdout.print(" runtime : {}.{}.{}\n", .{ - gtk.adw_get_major_version(), - gtk.adw_get_minor_version(), - gtk.adw_get_micro_version(), - }); - } else { - try stdout.print(" - libadwaita : disabled\n", .{}); - } + try stdout.print(" - libadwaita : enabled\n", .{}); + try stdout.print(" build : {s}\n", .{ + gtk.ADW_VERSION_S, + }); + try stdout.print(" runtime : {}.{}.{}\n", .{ + gtk.adw_get_major_version(), + gtk.adw_get_minor_version(), + gtk.adw_get_micro_version(), + }); if (comptime build_options.x11) { try stdout.print(" - libX11 : enabled\n", .{}); } else { diff --git a/src/config.zig b/src/config.zig index 75dbaae02..a8ffe2ec7 100644 --- a/src/config.zig +++ b/src/config.zig @@ -27,6 +27,7 @@ pub const OptionAsAlt = Config.OptionAsAlt; pub const RepeatableCodepointMap = Config.RepeatableCodepointMap; pub const RepeatableFontVariation = Config.RepeatableFontVariation; pub const RepeatableString = Config.RepeatableString; +pub const RepeatableStringMap = @import("config/RepeatableStringMap.zig"); pub const RepeatablePath = Config.RepeatablePath; pub const ShellIntegrationFeatures = Config.ShellIntegrationFeatures; pub const WindowPaddingColor = Config.WindowPaddingColor; diff --git a/src/config/Config.zig b/src/config/Config.zig index 3010b87d1..11cebb351 100644 --- a/src/config/Config.zig +++ b/src/config/Config.zig @@ -34,6 +34,7 @@ const KeyValue = @import("key.zig").Value; const ErrorList = @import("ErrorList.zig"); const MetricModifier = fontpkg.Metrics.Modifier; const help_strings = @import("help_strings"); +const RepeatableStringMap = @import("RepeatableStringMap.zig"); const log = std.log.scoped(.config); @@ -49,6 +50,7 @@ pub const renamed = std.StaticStringMap([]const u8).initComptime(&.{ // one field be used for both platforms (macOS retained the ability // to set a radius). .{ "background-blur-radius", "background-blur" }, + .{ "adw-toolbar-style", "gtk-toolbar-style" }, }); /// The font families to use. @@ -735,6 +737,42 @@ command: ?[]const u8 = null, /// @"initial-command": ?[]const u8 = null, +/// Extra environment variables to pass to commands launched in a terminal +/// surface. The format is `env=KEY=VALUE`. +/// +/// `env = foo=bar` +/// `env = bar=baz` +/// +/// Setting `env` to an empty string will reset the entire map to default +/// (empty). +/// +/// `env =` +/// +/// Setting a key to an empty string will remove that particular key and +/// corresponding value from the map. +/// +/// `env = foo=bar` +/// `env = foo=` +/// +/// will result in `foo` not being passed to the launched commands. +/// +/// Setting a key multiple times will overwrite previous entries. +/// +/// `env = foo=bar` +/// `env = foo=baz` +/// +/// will result in `foo=baz` being passed to the launched commands. +/// +/// These environment variables will override any existing environment +/// variables set by Ghostty. For example, if you set `GHOSTTY_RESOURCES_DIR` +/// then the value you set here will override the value Ghostty typically +/// automatically injects. +/// +/// These environment variables _will not_ be passed to commands run by Ghostty +/// for other purposes, like `open` or `xdg-open` used to open URLs in your +/// browser. +env: RepeatableStringMap = .{}, + /// If true, keep the terminal open after the command exits. Normally, the /// terminal window closes when the running command (such as a shell) exits. /// With this true, the terminal window will stay open until any keypress is @@ -1199,7 +1237,7 @@ keybind: Keybinds = .{}, /// * `working-directory` - Set the subtitle to the working directory of the /// surface. /// -/// This feature is only supported on GTK with Adwaita enabled. +/// This feature is only supported on GTK. @"window-subtitle": WindowSubtitle = .false, /// The theme to use for the windows. Valid values: @@ -1212,8 +1250,7 @@ keybind: Keybinds = .{}, /// * `light` - Use the light theme regardless of system theme. /// * `dark` - Use the dark theme regardless of system theme. /// * `ghostty` - Use the background and foreground colors specified in the -/// Ghostty configuration. This is only supported on Linux builds with -/// Adwaita and `gtk-adwaita` enabled. +/// Ghostty configuration. This is only supported on Linux builds. /// /// On macOS, if `macos-titlebar-style` is "tabs", the window theme will be /// automatically set based on the luminosity of the terminal background color. @@ -1779,9 +1816,9 @@ keybind: Keybinds = .{}, /// Control the in-app notifications that Ghostty shows. /// -/// On Linux (GTK) with Adwaita, in-app notifications show up as toasts. Toasts -/// appear overlaid on top of the terminal window. They are used to show -/// information that is not critical but may be important. +/// On Linux (GTK), in-app notifications show up as toasts. Toasts appear +/// overlaid on top of the terminal window. They are used to show information +/// that is not critical but may be important. /// /// Possible notifications are: /// @@ -1799,7 +1836,7 @@ keybind: Keybinds = .{}, /// A value of "false" will disable all notifications. A value of "true" will /// enable all notifications. /// -/// This configuration only applies to GTK with Adwaita enabled. +/// This configuration only applies to GTK. @"app-notifications": AppNotifications = .{}, /// If anything other than false, fullscreen mode on macOS will not use the @@ -1819,9 +1856,14 @@ keybind: Keybinds = .{}, /// /// Allowable values are: /// -/// * `visible-menu` - Use non-native macOS fullscreen, keep the menu bar visible /// * `true` - Use non-native macOS fullscreen, hide the menu bar /// * `false` - Use native macOS fullscreen +/// * `visible-menu` - Use non-native macOS fullscreen, keep the menu bar +/// visible +/// * `padded-notch` - Use non-native macOS fullscreen, hide the menu bar, +/// but ensure the window is not obscured by the notch on applicable +/// devices. The area around the notch will remain transparent currently, +/// but in the future we may fill it with the window background color. /// /// Changing this option at runtime works, but will only apply to the next /// time the window is made fullscreen. If a window is already fullscreen, @@ -1932,6 +1974,26 @@ keybind: Keybinds = .{}, /// find false more visually appealing. @"macos-window-shadow": bool = true, +/// If true, the macOS icon in the dock and app switcher will be hidden. This is +/// mainly intended for those primarily using the quick-terminal mode. +/// +/// Note that setting this to true means that keyboard layout changes +/// will no longer be automatic. +/// +/// Control whether macOS app is excluded from the dock and app switcher, +/// a "hidden" state. This is mainly intended for those primarily using +/// quick-terminal mode, but is a general configuration for any use +/// case. +/// +/// Available values: +/// +/// * `never` - The macOS app is never hidden. +/// * `always` - The macOS app is always hidden. +/// +/// Note: When the macOS application is hidden, keyboard layout changes +/// will no longer be automatic. This is a limitation of macOS. +@"macos-hidden": MacHidden = .never, + /// If true, Ghostty on macOS will automatically enable the "Secure Input" /// feature when it detects that a password prompt is being displayed. /// @@ -1972,6 +2034,9 @@ keybind: Keybinds = .{}, /// Valid values: /// /// * `official` - Use the official Ghostty icon. +/// * `blueprint`, `chalkboard`, `microchip`, `glass`, `holographic`, +/// `paper`, `retro`, `xray` - Official variants of the Ghostty icon +/// hand-created by artists (no AI). /// * `custom-style` - Use the official Ghostty icon but with custom /// styles applied to various layers. The custom styles must be /// specified using the additional `macos-icon`-prefixed configurations. @@ -2121,26 +2186,20 @@ keybind: Keybinds = .{}, @"gtk-titlebar": bool = true, /// Determines the side of the screen that the GTK tab bar will stick to. -/// Top, bottom, left, right, and hidden are supported. The default is top. +/// Top, bottom, and hidden are supported. The default is top. /// -/// If this option has value `left` or `right` when using Adwaita, it falls -/// back to `top`. `hidden`, meaning that tabs don't exist, is not supported -/// without using Adwaita, falling back to `top`. -/// -/// When `hidden` is set and Adwaita is enabled, a tab button displaying the -/// number of tabs will appear in the title bar. It has the ability to open a -/// tab overview for displaying tabs. Alternatively, you can use the -/// `toggle_tab_overview` action in a keybind if your window doesn't have a -/// title bar, or you can switch tabs with keybinds. +/// When `hidden` is set, a tab button displaying the number of tabs will appear +/// in the title bar. It has the ability to open a tab overview for displaying +/// tabs. Alternatively, you can use the `toggle_tab_overview` action in a +/// keybind if your window doesn't have a title bar, or you can switch tabs +/// with keybinds. @"gtk-tabs-location": GtkTabsLocation = .top, /// If this is `true`, the titlebar will be hidden when the window is maximized, /// and shown when the titlebar is unmaximized. GTK only. @"gtk-titlebar-hide-when-maximized": bool = false, -/// Determines the appearance of the top and bottom bars when using the -/// Adwaita tab bar. This requires `gtk-adwaita` to be enabled (it is -/// by default). +/// Determines the appearance of the top and bottom bars tab bar. /// /// Valid values are: /// @@ -2150,7 +2209,7 @@ keybind: Keybinds = .{}, /// more subtle border. /// /// Changing this value at runtime will only affect new windows. -@"adw-toolbar-style": AdwToolbarStyle = .raised, +@"gtk-toolbar-style": GtkToolbarStyle = .raised, /// If `true` (default), then the Ghostty GTK tabs will be "wide." Wide tabs /// are the new typical Gnome style where tabs fill their available space. @@ -2158,20 +2217,6 @@ keybind: Keybinds = .{}, /// which is the old style. @"gtk-wide-tabs": bool = true, -/// If `true` (default), Ghostty will enable Adwaita theme support. This -/// will make `window-theme` work properly and will also allow Ghostty to -/// properly respond to system theme changes, light/dark mode changing, etc. -/// This requires a GTK4 desktop with a GTK4 theme. -/// -/// If you are running GTK3 or have a GTK3 theme, you may have to set this -/// to false to get your theme picked up properly. Having this set to true -/// with GTK3 should not cause any problems, but it may not work exactly as -/// expected. -/// -/// This configuration only has an effect if Ghostty was built with -/// Adwaita support. -@"gtk-adwaita": bool = true, - /// Custom CSS files to be loaded. /// /// This configuration can be repeated multiple times to load multiple files. @@ -2577,7 +2622,7 @@ pub fn default(alloc_gpa: Allocator) Allocator.Error!Config { ); try result.keybind.set.put( alloc, - .{ .key = .{ .translated = .equal }, .mods = .{ .super = true, .ctrl = true, .shift = true } }, + .{ .key = .{ .translated = .plus }, .mods = .{ .super = true, .ctrl = true, .shift = true } }, .{ .equalize_splits = {} }, ); @@ -4092,6 +4137,7 @@ pub const NonNativeFullscreen = enum(c_int) { false, true, @"visible-menu", + @"padded-notch", }; /// Valid values for macos-option-as-alt. @@ -5712,6 +5758,12 @@ pub const MacTitlebarProxyIcon = enum { hidden, }; +/// See macos-hidden +pub const MacHidden = enum { + never, + always, +}; + /// See macos-icon /// /// Note: future versions of Ghostty can support a custom icon with @@ -5719,6 +5771,14 @@ pub const MacTitlebarProxyIcon = enum { /// format at all. pub const MacAppIcon = enum { official, + blueprint, + chalkboard, + microchip, + glass, + holographic, + paper, + retro, + xray, @"custom-style", }; @@ -5741,13 +5801,11 @@ pub const GtkSingleInstance = enum { pub const GtkTabsLocation = enum { top, bottom, - left, - right, hidden, }; -/// See adw-toolbar-style -pub const AdwToolbarStyle = enum { +/// See gtk-toolbar-style +pub const GtkToolbarStyle = enum { flat, raised, @"raised-border", diff --git a/src/config/RepeatableStringMap.zig b/src/config/RepeatableStringMap.zig new file mode 100644 index 000000000..6f143e95d --- /dev/null +++ b/src/config/RepeatableStringMap.zig @@ -0,0 +1,198 @@ +/// RepeatableStringMap is a key/value that can be repeated to accumulate a +/// string map. This isn't called "StringMap" because I find that sometimes +/// leads to confusion that it _accepts_ a map such as JSON dict. +const RepeatableStringMap = @This(); +const std = @import("std"); +const Allocator = std.mem.Allocator; + +const formatterpkg = @import("formatter.zig"); + +const Map = std.ArrayHashMapUnmanaged( + [:0]const u8, + [:0]const u8, + std.array_hash_map.StringContext, + true, +); + +// Allocator for the list is the arena for the parent config. +map: Map = .{}, + +pub fn parseCLI( + self: *RepeatableStringMap, + alloc: Allocator, + input: ?[]const u8, +) !void { + const value = input orelse return error.ValueRequired; + + // Empty value resets the list. We don't need to free our values because + // the allocator used is always an arena. + if (value.len == 0) { + self.map.clearRetainingCapacity(); + return; + } + + const index = std.mem.indexOfScalar( + u8, + value, + '=', + ) orelse return error.ValueRequired; + + const key = std.mem.trim(u8, value[0..index], &std.ascii.whitespace); + const val = std.mem.trim(u8, value[index + 1 ..], &std.ascii.whitespace); + + const key_copy = try alloc.dupeZ(u8, key); + errdefer alloc.free(key_copy); + + // Empty value removes the key from the map. + if (val.len == 0) { + _ = self.map.orderedRemove(key_copy); + alloc.free(key_copy); + return; + } + + const val_copy = try alloc.dupeZ(u8, val); + errdefer alloc.free(val_copy); + + try self.map.put(alloc, key_copy, val_copy); +} + +/// Deep copy of the struct. Required by Config. +pub fn clone( + self: *const RepeatableStringMap, + alloc: Allocator, +) Allocator.Error!RepeatableStringMap { + var map: Map = .{}; + try map.ensureTotalCapacity(alloc, self.map.count()); + + errdefer { + var it = map.iterator(); + while (it.next()) |entry| { + alloc.free(entry.key_ptr.*); + alloc.free(entry.value_ptr.*); + } + map.deinit(alloc); + } + + var it = self.map.iterator(); + while (it.next()) |entry| { + const key = try alloc.dupeZ(u8, entry.key_ptr.*); + const value = try alloc.dupeZ(u8, entry.value_ptr.*); + map.putAssumeCapacity(key, value); + } + + return .{ .map = map }; +} + +/// The number of items in the map +pub fn count(self: RepeatableStringMap) usize { + return self.map.count(); +} + +/// Iterator over the entries in the map. +pub fn iterator(self: RepeatableStringMap) Map.Iterator { + return self.map.iterator(); +} + +/// Compare if two of our value are requal. Required by Config. +pub fn equal(self: RepeatableStringMap, other: RepeatableStringMap) bool { + if (self.map.count() != other.map.count()) return false; + var it = self.map.iterator(); + while (it.next()) |entry| { + const value = other.map.get(entry.key_ptr.*) orelse return false; + if (!std.mem.eql(u8, entry.value_ptr.*, value)) return false; + } else return true; +} + +/// Used by formatter +pub fn formatEntry(self: RepeatableStringMap, formatter: anytype) !void { + // If no items, we want to render an empty field. + if (self.map.count() == 0) { + try formatter.formatEntry(void, {}); + return; + } + + var it = self.map.iterator(); + while (it.next()) |entry| { + var buf: [256]u8 = undefined; + const value = std.fmt.bufPrint(&buf, "{s}={s}", .{ entry.key_ptr.*, entry.value_ptr.* }) catch |err| switch (err) { + error.NoSpaceLeft => return error.OutOfMemory, + }; + try formatter.formatEntry([]const u8, value); + } +} + +test "RepeatableStringMap: parseCLI" { + const testing = std.testing; + var arena = std.heap.ArenaAllocator.init(testing.allocator); + defer arena.deinit(); + const alloc = arena.allocator(); + + var map: RepeatableStringMap = .{}; + + try testing.expectError(error.ValueRequired, map.parseCLI(alloc, "A")); + + try map.parseCLI(alloc, "A=B"); + try map.parseCLI(alloc, "B=C"); + try testing.expectEqual(@as(usize, 2), map.count()); + + try map.parseCLI(alloc, ""); + try testing.expectEqual(@as(usize, 0), map.count()); + + try map.parseCLI(alloc, "A=B"); + try testing.expectEqual(@as(usize, 1), map.count()); + try map.parseCLI(alloc, "A=C"); + try testing.expectEqual(@as(usize, 1), map.count()); +} + +test "RepeatableStringMap: formatConfig empty" { + const testing = std.testing; + var buf = std.ArrayList(u8).init(testing.allocator); + defer buf.deinit(); + + var list: RepeatableStringMap = .{}; + try list.formatEntry(formatterpkg.entryFormatter("a", buf.writer())); + try std.testing.expectEqualSlices(u8, "a = \n", buf.items); +} + +test "RepeatableStringMap: formatConfig single item" { + const testing = std.testing; + + var arena = std.heap.ArenaAllocator.init(testing.allocator); + defer arena.deinit(); + const alloc = arena.allocator(); + + { + var buf = std.ArrayList(u8).init(testing.allocator); + defer buf.deinit(); + var map: RepeatableStringMap = .{}; + try map.parseCLI(alloc, "A=B"); + try map.formatEntry(formatterpkg.entryFormatter("a", buf.writer())); + try std.testing.expectEqualSlices(u8, "a = A=B\n", buf.items); + } + { + var buf = std.ArrayList(u8).init(testing.allocator); + defer buf.deinit(); + var map: RepeatableStringMap = .{}; + try map.parseCLI(alloc, " A = B "); + try map.formatEntry(formatterpkg.entryFormatter("a", buf.writer())); + try std.testing.expectEqualSlices(u8, "a = A=B\n", buf.items); + } +} + +test "RepeatableStringMap: formatConfig multiple items" { + const testing = std.testing; + + var arena = std.heap.ArenaAllocator.init(testing.allocator); + defer arena.deinit(); + const alloc = arena.allocator(); + + { + var buf = std.ArrayList(u8).init(testing.allocator); + defer buf.deinit(); + var list: RepeatableStringMap = .{}; + try list.parseCLI(alloc, "A=B"); + try list.parseCLI(alloc, "B = C"); + try list.formatEntry(formatterpkg.entryFormatter("a", buf.writer())); + try std.testing.expectEqualSlices(u8, "a = A=B\na = B=C\n", buf.items); + } +} diff --git a/src/config/theme.zig b/src/config/theme.zig index b851ec3d4..2d206e1f6 100644 --- a/src/config/theme.zig +++ b/src/config/theme.zig @@ -104,6 +104,10 @@ pub const LocationIterator = struct { /// Due to the way allocations are handled, an Arena allocator (or another /// similar allocator implementation) should be used. It may not be safe to /// free the returned allocations. +/// +/// This will never return anything other than a handle to a regular file. If +/// the theme resolves to something other than a regular file a diagnostic entry +/// will be added to the list and null will be returned. pub fn open( arena_alloc: Allocator, theme: []const u8, @@ -119,6 +123,29 @@ pub fn open( theme, diags, ) orelse return null; + const stat = file.stat() catch |err| { + try diags.append(arena_alloc, .{ + .message = try std.fmt.allocPrintZ( + arena_alloc, + "not reading theme from \"{s}\": {}", + .{ theme, err }, + ), + }); + return null; + }; + switch (stat.kind) { + .file => {}, + else => { + try diags.append(arena_alloc, .{ + .message = try std.fmt.allocPrintZ( + arena_alloc, + "not reading theme from \"{s}\": it is a {s}", + .{ theme, @tagName(stat.kind) }, + ), + }); + return null; + }, + } return .{ .path = theme, .file = file }; } @@ -140,9 +167,34 @@ pub fn open( const cwd = std.fs.cwd(); while (try it.next()) |loc| { const path = try std.fs.path.join(arena_alloc, &.{ loc.dir, theme }); - if (cwd.openFile(path, .{})) |file| return .{ - .path = path, - .file = file, + if (cwd.openFile(path, .{})) |file| { + const stat = file.stat() catch |err| { + try diags.append(arena_alloc, .{ + .message = try std.fmt.allocPrintZ( + arena_alloc, + "not reading theme from \"{s}\": {}", + .{ theme, err }, + ), + }); + return null; + }; + switch (stat.kind) { + .file => {}, + else => { + try diags.append(arena_alloc, .{ + .message = try std.fmt.allocPrintZ( + arena_alloc, + "not reading theme from \"{s}\": it is a {s}", + .{ theme, @tagName(stat.kind) }, + ), + }); + return null; + }, + } + return .{ + .path = path, + .file = file, + }; } else |err| switch (err) { // Not an error, just continue to the next location. error.FileNotFound => {}, diff --git a/src/font/sprite/Box.zig b/src/font/sprite/Box.zig index ba7caa26a..2cd3d929b 100644 --- a/src/font/sprite/Box.zig +++ b/src/font/sprite/Box.zig @@ -184,6 +184,10 @@ const SmoothMosaic = packed struct(u10) { } }; +// Octant range, inclusive +const octant_min = 0x1cd00; +const octant_max = 0x1cde5; + // Utility names for common fractions const one_eighth: f64 = 0.125; const one_quarter: f64 = 0.25; @@ -581,6 +585,8 @@ fn draw(self: Box, alloc: Allocator, canvas: *font.sprite.Canvas, cp: u32) !void 0x1fb00...0x1fb3b => self.draw_sextant(canvas, cp), + octant_min...octant_max => self.draw_octant(canvas, cp), + // '🬼' 0x1fb3c => try self.draw_smooth_mosaic(canvas, SmoothMosaic.from( \\... @@ -2484,6 +2490,65 @@ fn draw_sextant(self: Box, canvas: *font.sprite.Canvas, cp: u32) void { if (sex.br) self.rect(canvas, x_halfs[1], y_thirds[1], self.metrics.cell_width, self.metrics.cell_height); } +fn draw_octant(self: Box, canvas: *font.sprite.Canvas, cp: u32) void { + assert(cp >= octant_min and cp <= octant_max); + + // Octant representation. We use the funny numeric string keys + // so its easier to parse the actual name used in the Symbols for + // Legacy Computing spec. + const Octant = packed struct(u8) { + @"1": bool = false, + @"2": bool = false, + @"3": bool = false, + @"4": bool = false, + @"5": bool = false, + @"6": bool = false, + @"7": bool = false, + @"8": bool = false, + }; + + // Parse the octant data. This is all done at comptime so this is + // static data that is embedded in the binary. + const octants_len = octant_max - octant_min + 1; + const octants: [octants_len]Octant = comptime octants: { + @setEvalBranchQuota(10_000); + + var result: [octants_len]Octant = .{.{}} ** octants_len; + var i: usize = 0; + + const data = @embedFile("octants.txt"); + var it = std.mem.splitScalar(u8, data, '\n'); + while (it.next()) |line| { + // Skip comments + if (line.len == 0 or line[0] == '#') continue; + + const current = &result[i]; + i += 1; + + // Octants are in the format "BLOCK OCTANT-1235". The numbers + // at the end are keys into our packed struct. Since we're + // at comptime we can metaprogram it all. + const idx = std.mem.indexOfScalar(u8, line, '-').?; + for (line[idx + 1 ..]) |c| @field(current, &.{c}) = true; + } + + assert(i == octants_len); + break :octants result; + }; + + const x_halfs = self.xHalfs(); + const y_quads = self.yQuads(); + const oct = octants[cp - octant_min]; + if (oct.@"1") self.rect(canvas, 0, 0, x_halfs[0], y_quads[0]); + if (oct.@"2") self.rect(canvas, x_halfs[1], 0, self.metrics.cell_width, y_quads[0]); + if (oct.@"3") self.rect(canvas, 0, y_quads[0], x_halfs[0], y_quads[1]); + if (oct.@"4") self.rect(canvas, x_halfs[1], y_quads[0], self.metrics.cell_width, y_quads[1]); + if (oct.@"5") self.rect(canvas, 0, y_quads[1], x_halfs[0], y_quads[2]); + if (oct.@"6") self.rect(canvas, x_halfs[1], y_quads[1], self.metrics.cell_width, y_quads[2]); + if (oct.@"7") self.rect(canvas, 0, y_quads[2], x_halfs[0], self.metrics.cell_height); + if (oct.@"8") self.rect(canvas, x_halfs[1], y_quads[2], self.metrics.cell_width, self.metrics.cell_height); +} + fn xHalfs(self: Box) [2]u32 { return .{ @as(u32, @intFromFloat(@round(@as(f64, @floatFromInt(self.metrics.cell_width)) / 2))), @@ -2500,6 +2565,21 @@ fn yThirds(self: Box) [2]u32 { }; } +// assume octants might be striped across multiple rows of cells. to maximize +// distance between excess pixellines, we want (1) an arbitrary region (there +// will be a pattern of 1'-3-1'-3-1'-3 no matter what), (2) discontiguous +// regions (0 and 2 or 1 and 3), and (3) an arbitrary three regions (there will +// be a pattern of 3-1-3-1-3-1 no matter what). +fn yQuads(self: Box) [3]u32 { + return switch (@mod(self.metrics.cell_height, 4)) { + 0 => .{ self.metrics.cell_height / 4, 2 * self.metrics.cell_height / 4, 3 * self.metrics.cell_height / 4 }, + 1 => .{ self.metrics.cell_height / 4, 2 * self.metrics.cell_height / 4 + 1, 3 * self.metrics.cell_height / 4 }, + 2 => .{ self.metrics.cell_height / 4 + 1, 2 * self.metrics.cell_height / 4, 3 * self.metrics.cell_height / 4 + 1 }, + 3 => .{ self.metrics.cell_height / 4 + 1, 2 * self.metrics.cell_height / 4 + 1, 3 * self.metrics.cell_height / 4 }, + else => unreachable, + }; +} + fn draw_smooth_mosaic( self: Box, canvas: *font.sprite.Canvas, @@ -3064,7 +3144,7 @@ fn testRenderAll(self: Box, alloc: Allocator, atlas: *font.Atlas) !void { ); } - // Symbols for Legacy Computing Supplement. + // Symbols for Legacy Computing Supplement: Quadrants // 𜰡 𜰢 𜰣 𜰤 𜰥 𜰦 𜰧 𜰨 𜰩 𜰪 𜰫 𜰬 𜰭 𜰮 𜰯 cp = 0x1cc21; while (cp <= 0x1cc2f) : (cp += 1) { @@ -3077,6 +3157,19 @@ fn testRenderAll(self: Box, alloc: Allocator, atlas: *font.Atlas) !void { else => {}, } } + + // Symbols for Legacy Computing Supplement: Octants + cp = 0x1CD00; + while (cp <= 0x1CDE5) : (cp += 1) { + switch (cp) { + 0x1CD00...0x1CDE5 => _ = try self.renderGlyph( + alloc, + atlas, + cp, + ), + else => {}, + } + } } test "render all sprites" { diff --git a/src/font/sprite/Face.zig b/src/font/sprite/Face.zig index cebf44429..f15423ada 100644 --- a/src/font/sprite/Face.zig +++ b/src/font/sprite/Face.zig @@ -236,6 +236,8 @@ const Kind = enum { // (Geometric Shapes) // 🯠 🯡 🯢 🯣 🯤 🯥 🯦 🯧 🯨 🯩 🯪 🯫 🯬 🯭 🯮 🯯 0x1FBCE...0x1FBEF, + // (Octants) + 0x1CD00...0x1CDE5, => .box, // Branch drawing character set, used for drawing git-like diff --git a/src/font/sprite/octants.txt b/src/font/sprite/octants.txt new file mode 100644 index 000000000..db79aa2c6 --- /dev/null +++ b/src/font/sprite/octants.txt @@ -0,0 +1,234 @@ +# This is the list of all the octants for the Symbols for Legacy +# Computing block. It is used at comptime to generate the lookup +# table for drawing them since we weren't able to discern a +# mathematical pattern for them. +BLOCK OCTANT-3 +BLOCK OCTANT-23 +BLOCK OCTANT-123 +BLOCK OCTANT-4 +BLOCK OCTANT-14 +BLOCK OCTANT-124 +BLOCK OCTANT-34 +BLOCK OCTANT-134 +BLOCK OCTANT-234 +BLOCK OCTANT-5 +BLOCK OCTANT-15 +BLOCK OCTANT-25 +BLOCK OCTANT-125 +BLOCK OCTANT-135 +BLOCK OCTANT-235 +BLOCK OCTANT-1235 +BLOCK OCTANT-45 +BLOCK OCTANT-145 +BLOCK OCTANT-245 +BLOCK OCTANT-1245 +BLOCK OCTANT-345 +BLOCK OCTANT-1345 +BLOCK OCTANT-2345 +BLOCK OCTANT-12345 +BLOCK OCTANT-6 +BLOCK OCTANT-16 +BLOCK OCTANT-26 +BLOCK OCTANT-126 +BLOCK OCTANT-36 +BLOCK OCTANT-136 +BLOCK OCTANT-236 +BLOCK OCTANT-1236 +BLOCK OCTANT-146 +BLOCK OCTANT-246 +BLOCK OCTANT-1246 +BLOCK OCTANT-346 +BLOCK OCTANT-1346 +BLOCK OCTANT-2346 +BLOCK OCTANT-12346 +BLOCK OCTANT-56 +BLOCK OCTANT-156 +BLOCK OCTANT-256 +BLOCK OCTANT-1256 +BLOCK OCTANT-356 +BLOCK OCTANT-1356 +BLOCK OCTANT-2356 +BLOCK OCTANT-12356 +BLOCK OCTANT-456 +BLOCK OCTANT-1456 +BLOCK OCTANT-2456 +BLOCK OCTANT-12456 +BLOCK OCTANT-3456 +BLOCK OCTANT-13456 +BLOCK OCTANT-23456 +BLOCK OCTANT-17 +BLOCK OCTANT-27 +BLOCK OCTANT-127 +BLOCK OCTANT-37 +BLOCK OCTANT-137 +BLOCK OCTANT-237 +BLOCK OCTANT-1237 +BLOCK OCTANT-47 +BLOCK OCTANT-147 +BLOCK OCTANT-247 +BLOCK OCTANT-1247 +BLOCK OCTANT-347 +BLOCK OCTANT-1347 +BLOCK OCTANT-2347 +BLOCK OCTANT-12347 +BLOCK OCTANT-157 +BLOCK OCTANT-257 +BLOCK OCTANT-1257 +BLOCK OCTANT-357 +BLOCK OCTANT-2357 +BLOCK OCTANT-12357 +BLOCK OCTANT-457 +BLOCK OCTANT-1457 +BLOCK OCTANT-12457 +BLOCK OCTANT-3457 +BLOCK OCTANT-13457 +BLOCK OCTANT-23457 +BLOCK OCTANT-67 +BLOCK OCTANT-167 +BLOCK OCTANT-267 +BLOCK OCTANT-1267 +BLOCK OCTANT-367 +BLOCK OCTANT-1367 +BLOCK OCTANT-2367 +BLOCK OCTANT-12367 +BLOCK OCTANT-467 +BLOCK OCTANT-1467 +BLOCK OCTANT-2467 +BLOCK OCTANT-12467 +BLOCK OCTANT-3467 +BLOCK OCTANT-13467 +BLOCK OCTANT-23467 +BLOCK OCTANT-123467 +BLOCK OCTANT-567 +BLOCK OCTANT-1567 +BLOCK OCTANT-2567 +BLOCK OCTANT-12567 +BLOCK OCTANT-3567 +BLOCK OCTANT-13567 +BLOCK OCTANT-23567 +BLOCK OCTANT-123567 +BLOCK OCTANT-4567 +BLOCK OCTANT-14567 +BLOCK OCTANT-24567 +BLOCK OCTANT-124567 +BLOCK OCTANT-34567 +BLOCK OCTANT-134567 +BLOCK OCTANT-234567 +BLOCK OCTANT-1234567 +BLOCK OCTANT-18 +BLOCK OCTANT-28 +BLOCK OCTANT-128 +BLOCK OCTANT-38 +BLOCK OCTANT-138 +BLOCK OCTANT-238 +BLOCK OCTANT-1238 +BLOCK OCTANT-48 +BLOCK OCTANT-148 +BLOCK OCTANT-248 +BLOCK OCTANT-1248 +BLOCK OCTANT-348 +BLOCK OCTANT-1348 +BLOCK OCTANT-2348 +BLOCK OCTANT-12348 +BLOCK OCTANT-58 +BLOCK OCTANT-158 +BLOCK OCTANT-258 +BLOCK OCTANT-1258 +BLOCK OCTANT-358 +BLOCK OCTANT-1358 +BLOCK OCTANT-2358 +BLOCK OCTANT-12358 +BLOCK OCTANT-458 +BLOCK OCTANT-1458 +BLOCK OCTANT-2458 +BLOCK OCTANT-12458 +BLOCK OCTANT-3458 +BLOCK OCTANT-13458 +BLOCK OCTANT-23458 +BLOCK OCTANT-123458 +BLOCK OCTANT-168 +BLOCK OCTANT-268 +BLOCK OCTANT-1268 +BLOCK OCTANT-368 +BLOCK OCTANT-2368 +BLOCK OCTANT-12368 +BLOCK OCTANT-468 +BLOCK OCTANT-1468 +BLOCK OCTANT-12468 +BLOCK OCTANT-3468 +BLOCK OCTANT-13468 +BLOCK OCTANT-23468 +BLOCK OCTANT-568 +BLOCK OCTANT-1568 +BLOCK OCTANT-2568 +BLOCK OCTANT-12568 +BLOCK OCTANT-3568 +BLOCK OCTANT-13568 +BLOCK OCTANT-23568 +BLOCK OCTANT-123568 +BLOCK OCTANT-4568 +BLOCK OCTANT-14568 +BLOCK OCTANT-24568 +BLOCK OCTANT-124568 +BLOCK OCTANT-34568 +BLOCK OCTANT-134568 +BLOCK OCTANT-234568 +BLOCK OCTANT-1234568 +BLOCK OCTANT-178 +BLOCK OCTANT-278 +BLOCK OCTANT-1278 +BLOCK OCTANT-378 +BLOCK OCTANT-1378 +BLOCK OCTANT-2378 +BLOCK OCTANT-12378 +BLOCK OCTANT-478 +BLOCK OCTANT-1478 +BLOCK OCTANT-2478 +BLOCK OCTANT-12478 +BLOCK OCTANT-3478 +BLOCK OCTANT-13478 +BLOCK OCTANT-23478 +BLOCK OCTANT-123478 +BLOCK OCTANT-578 +BLOCK OCTANT-1578 +BLOCK OCTANT-2578 +BLOCK OCTANT-12578 +BLOCK OCTANT-3578 +BLOCK OCTANT-13578 +BLOCK OCTANT-23578 +BLOCK OCTANT-123578 +BLOCK OCTANT-4578 +BLOCK OCTANT-14578 +BLOCK OCTANT-24578 +BLOCK OCTANT-124578 +BLOCK OCTANT-34578 +BLOCK OCTANT-134578 +BLOCK OCTANT-234578 +BLOCK OCTANT-1234578 +BLOCK OCTANT-678 +BLOCK OCTANT-1678 +BLOCK OCTANT-2678 +BLOCK OCTANT-12678 +BLOCK OCTANT-3678 +BLOCK OCTANT-13678 +BLOCK OCTANT-23678 +BLOCK OCTANT-123678 +BLOCK OCTANT-4678 +BLOCK OCTANT-14678 +BLOCK OCTANT-24678 +BLOCK OCTANT-124678 +BLOCK OCTANT-34678 +BLOCK OCTANT-134678 +BLOCK OCTANT-234678 +BLOCK OCTANT-1234678 +BLOCK OCTANT-15678 +BLOCK OCTANT-25678 +BLOCK OCTANT-125678 +BLOCK OCTANT-35678 +BLOCK OCTANT-235678 +BLOCK OCTANT-1235678 +BLOCK OCTANT-45678 +BLOCK OCTANT-145678 +BLOCK OCTANT-1245678 +BLOCK OCTANT-1345678 +BLOCK OCTANT-2345678 diff --git a/src/font/sprite/testdata/Box.ppm b/src/font/sprite/testdata/Box.ppm index 36519a1e9..0feb3ebe4 100644 Binary files a/src/font/sprite/testdata/Box.ppm and b/src/font/sprite/testdata/Box.ppm differ diff --git a/src/input/Binding.zig b/src/input/Binding.zig index 90ea436af..f91967293 100644 --- a/src/input/Binding.zig +++ b/src/input/Binding.zig @@ -236,9 +236,9 @@ pub const Action = union(enum) { /// Send an `ESC` sequence. esc: []const u8, - // Send the given text. Uses Zig string literal syntax. This is currently - // not validated. If the text is invalid (i.e. contains an invalid escape - // sequence), the error will currently only show up in logs. + /// Send the given text. Uses Zig string literal syntax. This is currently + /// not validated. If the text is invalid (i.e. contains an invalid escape + /// sequence), the error will currently only show up in logs. text: []const u8, /// Send data to the pty depending on whether cursor key mode is enabled @@ -348,6 +348,10 @@ pub const Action = union(enum) { /// This only works with libadwaita enabled currently. toggle_tab_overview: void, + /// Change the title of the current focused surface via a prompt. + /// This only works on macOS currently. + prompt_surface_title: void, + /// Create a new split in the given direction. /// /// Arguments: @@ -748,6 +752,7 @@ pub const Action = union(enum) { .increase_font_size, .decrease_font_size, .reset_font_size, + .prompt_surface_title, .clear_screen, .select_all, .scroll_to_top, diff --git a/src/input/KeymapDarwin.zig b/src/input/KeymapDarwin.zig index 3d81b0f4b..154f648a6 100644 --- a/src/input/KeymapDarwin.zig +++ b/src/input/KeymapDarwin.zig @@ -50,10 +50,13 @@ pub const State = struct { pub const Translation = struct { /// The translation result. If this is a dead key state, then this will /// be pre-edit text that can be displayed but will ultimately be replaced. - text: []const u8, + text: []const u8 = "", /// Whether the text is still composing, i.e. this is a dead key state. - composing: bool, + composing: bool = false, + + /// The mods that were consumed to produce this translation + mods: Mods = .{}, }; pub fn init() !Keymap { @@ -122,8 +125,18 @@ pub fn translate( out: []u8, state: *State, code: u16, - mods: Mods, + input_mods: Mods, ) !Translation { + // On macOS we strip ctrl because UCKeyTranslate + // converts to the masked values (i.e. ctrl+c becomes 3) + // and we don't want that behavior in Ghostty ever. This makes + // this file not a general-purpose keymap implementation. + const mods: Mods = mods: { + var v = input_mods; + v.ctrl = false; + break :mods v; + }; + // Get the keycode for the space key, using comptime. const code_space: u16 = comptime space: for (codes) |entry| { if (std.mem.eql(u8, entry.code, "Space")) @@ -183,7 +196,11 @@ pub fn translate( // Convert the utf16 to utf8 const len = try std.unicode.utf16leToUtf8(out, char[0..char_count]); - return .{ .text = out[0..len], .composing = composing }; + return .{ + .text = out[0..len], + .composing = composing, + .mods = mods, + }; } /// Map to the modifiers format used by the UCKeyTranslate function. diff --git a/src/input/KeymapNoop.zig b/src/input/KeymapNoop.zig index 414c52954..b6a9d57b9 100644 --- a/src/input/KeymapNoop.zig +++ b/src/input/KeymapNoop.zig @@ -6,8 +6,9 @@ const Mods = @import("key.zig").Mods; pub const State = struct {}; pub const Translation = struct { - text: []const u8, - composing: bool, + text: []const u8 = "", + composing: bool = false, + mods: Mods = .{}, }; pub fn init() !KeymapNoop { diff --git a/src/input/helpgen_actions.zig b/src/input/helpgen_actions.zig new file mode 100644 index 000000000..58305455b --- /dev/null +++ b/src/input/helpgen_actions.zig @@ -0,0 +1,113 @@ +//! This module is a help generator for keybind actions documentation. +//! It can generate documentation in different formats (plaintext for CLI, +//! markdown for website) while maintaining consistent content. + +const std = @import("std"); +const KeybindAction = @import("Binding.zig").Action; +const help_strings = @import("help_strings"); + +/// Format options for generating keybind actions documentation +pub const Format = enum { + /// Plain text output with indentation + plaintext, + /// Markdown formatted output + markdown, + + fn formatFieldName(self: Format, writer: anytype, field_name: []const u8) !void { + switch (self) { + .plaintext => { + try writer.writeAll(field_name); + try writer.writeAll(":\n"); + }, + .markdown => { + try writer.writeAll("## `"); + try writer.writeAll(field_name); + try writer.writeAll("`\n"); + }, + } + } + + fn formatDocLine(self: Format, writer: anytype, line: []const u8) !void { + switch (self) { + .plaintext => { + try writer.appendSlice(" "); + try writer.appendSlice(line); + try writer.appendSlice("\n"); + }, + .markdown => { + try writer.appendSlice(line); + try writer.appendSlice("\n"); + }, + } + } + + fn header(self: Format) ?[]const u8 { + return switch (self) { + .plaintext => null, + .markdown => + \\--- + \\title: Keybinding Action Reference + \\description: Reference of all Ghostty keybinding actions. + \\editOnGithubLink: https://github.com/ghostty-org/ghostty/edit/main/src/input/Binding.zig + \\--- + \\ + \\This is a reference of all Ghostty keybinding actions. + \\ + \\ + , + }; + } +}; + +/// Generate keybind actions documentation with the specified format +pub fn generate( + writer: anytype, + format: Format, + show_docs: bool, + page_allocator: std.mem.Allocator, +) !void { + if (format.header()) |header| { + try writer.writeAll(header); + } + + var buffer = std.ArrayList(u8).init(page_allocator); + defer buffer.deinit(); + + const fields = @typeInfo(KeybindAction).Union.fields; + inline for (fields) |field| { + if (field.name[0] == '_') continue; + + // Write previously stored doc comment below all related actions + if (show_docs and @hasDecl(help_strings.KeybindAction, field.name)) { + try writer.writeAll(buffer.items); + try writer.writeAll("\n"); + + buffer.clearRetainingCapacity(); + } + + if (show_docs) { + try format.formatFieldName(writer, field.name); + } else { + try writer.writeAll(field.name); + try writer.writeAll("\n"); + } + + if (show_docs and @hasDecl(help_strings.KeybindAction, field.name)) { + var iter = std.mem.splitScalar( + u8, + @field(help_strings.KeybindAction, field.name), + '\n', + ); + while (iter.next()) |s| { + // If it is the last line and empty, then skip it. + if (iter.peek() == null and s.len == 0) continue; + try format.formatDocLine(&buffer, s); + } + } + } + + // Write any remaining buffered documentation + if (buffer.items.len > 0) { + try writer.writeAll(buffer.items); + } +} diff --git a/src/inspector/Inspector.zig b/src/inspector/Inspector.zig index 54d49b088..1824f5ead 100644 --- a/src/inspector/Inspector.zig +++ b/src/inspector/Inspector.zig @@ -53,6 +53,22 @@ key_events: inspector.key.EventRing, vt_events: inspector.termio.VTEventRing, vt_stream: inspector.termio.Stream, +/// The currently selected event sequence number for keyboard navigation +selected_event_seq: ?u32 = null, + +/// Flag indicating whether we need to scroll to the selected item +need_scroll_to_selected: bool = false, + +/// Flag indicating whether the selection was made by keyboard +is_keyboard_selection: bool = false, + +/// Enum representing keyboard navigation actions +const KeyAction = enum { + down, + none, + up, +}; + const CellInspect = union(enum) { /// Idle, no cell inspection is requested idle: void, @@ -1014,6 +1030,24 @@ fn renderKeyboardWindow(self: *Inspector) void { } // table } +/// Helper function to check keyboard state and determine navigation action. +fn getKeyAction(self: *Inspector) KeyAction { + _ = self; + const keys = .{ + .{ .key = cimgui.c.ImGuiKey_J, .action = KeyAction.down }, + .{ .key = cimgui.c.ImGuiKey_DownArrow, .action = KeyAction.down }, + .{ .key = cimgui.c.ImGuiKey_K, .action = KeyAction.up }, + .{ .key = cimgui.c.ImGuiKey_UpArrow, .action = KeyAction.up }, + }; + + inline for (keys) |k| { + if (cimgui.c.igIsKeyPressed_Bool(k.key, false)) { + return k.action; + } + } + return .none; +} + fn renderTermioWindow(self: *Inspector) void { // Start our window. If we're collapsed we do nothing. defer cimgui.c.igEnd(); @@ -1090,6 +1124,60 @@ fn renderTermioWindow(self: *Inspector) void { 0, ); + // Handle keyboard navigation when window is focused + if (cimgui.c.igIsWindowFocused(cimgui.c.ImGuiFocusedFlags_RootAndChildWindows)) { + const key_pressed = self.getKeyAction(); + + switch (key_pressed) { + .none => {}, + .up, .down => { + // If no event is selected, select the first/last event based on direction + if (self.selected_event_seq == null) { + if (!self.vt_events.empty()) { + var it = self.vt_events.iterator(if (key_pressed == .up) .forward else .reverse); + if (it.next()) |ev| { + self.selected_event_seq = @as(u32, @intCast(ev.seq)); + } + } + } else { + // Find next/previous event based on current selection + var it = self.vt_events.iterator(.reverse); + switch (key_pressed) { + .down => { + var found = false; + while (it.next()) |ev| { + if (found) { + self.selected_event_seq = @as(u32, @intCast(ev.seq)); + break; + } + if (ev.seq == self.selected_event_seq.?) { + found = true; + } + } + }, + .up => { + var prev_ev: ?*const inspector.termio.VTEvent = null; + while (it.next()) |ev| { + if (ev.seq == self.selected_event_seq.?) { + if (prev_ev) |prev| { + self.selected_event_seq = @as(u32, @intCast(prev.seq)); + break; + } + } + prev_ev = ev; + } + }, + .none => unreachable, + } + } + + // Mark that we need to scroll to the newly selected item + self.need_scroll_to_selected = true; + self.is_keyboard_selection = true; + }, + } + } + var it = self.vt_events.iterator(.reverse); while (it.next()) |ev| { // Need to push an ID so that our selectable is unique. @@ -1098,12 +1186,32 @@ fn renderTermioWindow(self: *Inspector) void { cimgui.c.igTableNextRow(cimgui.c.ImGuiTableRowFlags_None, 0); _ = cimgui.c.igTableNextColumn(); - _ = cimgui.c.igSelectable_BoolPtr( + + // Store the previous selection state to detect changes + const was_selected = ev.imgui_selected; + + // Update selection state based on keyboard navigation + if (self.selected_event_seq) |seq| { + ev.imgui_selected = (@as(u32, @intCast(ev.seq)) == seq); + } + + // Handle selectable widget + if (cimgui.c.igSelectable_BoolPtr( "##select", &ev.imgui_selected, cimgui.c.ImGuiSelectableFlags_SpanAllColumns, .{ .x = 0, .y = 0 }, - ); + )) { + // If selection state changed, update keyboard navigation state + if (ev.imgui_selected != was_selected) { + self.selected_event_seq = if (ev.imgui_selected) + @as(u32, @intCast(ev.seq)) + else + null; + self.is_keyboard_selection = false; + } + } + cimgui.c.igSameLine(0, 0); cimgui.c.igText("%d", ev.seq); _ = cimgui.c.igTableNextColumn(); @@ -1159,6 +1267,12 @@ fn renderTermioWindow(self: *Inspector) void { cimgui.c.igText("%s", entry.value_ptr.ptr); } } + + // If this is the selected event and scrolling is needed, scroll to it + if (self.need_scroll_to_selected and self.is_keyboard_selection) { + cimgui.c.igSetScrollHereY(0.5); + self.need_scroll_to_selected = false; + } } } } // table diff --git a/src/os/env.zig b/src/os/env.zig index fe2be20de..1916053b3 100644 --- a/src/os/env.zig +++ b/src/os/env.zig @@ -2,9 +2,18 @@ const std = @import("std"); const builtin = @import("builtin"); const Allocator = std.mem.Allocator; const posix = std.posix; +const isFlatpak = @import("flatpak.zig").isFlatpak; pub const Error = Allocator.Error; +/// Get the environment map. +pub fn getEnvMap(alloc: Allocator) !std.process.EnvMap { + return if (isFlatpak()) + std.process.EnvMap.init(alloc) + else + try std.process.getEnvMap(alloc); +} + /// Append a value to an environment variable such as PATH. /// The returned value is always allocated so it must be freed. pub fn appendEnv( diff --git a/src/os/main.zig b/src/os/main.zig index df6f894f5..cb9355931 100644 --- a/src/os/main.zig +++ b/src/os/main.zig @@ -26,6 +26,7 @@ pub const shell = @import("shell.zig"); // Functions and types pub const CFReleaseThread = @import("cf_release_thread.zig"); pub const TempDir = @import("TempDir.zig"); +pub const getEnvMap = env.getEnvMap; pub const appendEnv = env.appendEnv; pub const appendEnvAlways = env.appendEnvAlways; pub const prependEnv = env.prependEnv; diff --git a/src/renderer/shaders/cell.metal b/src/renderer/shaders/cell.metal index 5f161c6b7..e24ddcb1e 100644 --- a/src/renderer/shaders/cell.metal +++ b/src/renderer/shaders/cell.metal @@ -487,13 +487,6 @@ vertex CellTextVertexOut cell_text_vertex( ); } - // Don't bother rendering if the bg and fg colors are identical, just return - // the same point which will be culled because it makes the quad zero sized. - // However, we should still render if this is the cursor position - if (all(out.color == out.bg_color) && !is_cursor_pos) { - out.position = float4(0.0); - } - return out; } diff --git a/src/terminal/Screen.zig b/src/terminal/Screen.zig index a838e0e10..273e1aebe 100644 --- a/src/terminal/Screen.zig +++ b/src/terminal/Screen.zig @@ -278,12 +278,9 @@ pub fn reset(self: *Screen) void { .page_cell = cursor_rac.cell, }; - // Clear kitty graphics - self.kitty_images.delete( - self.alloc, - undefined, // All image deletion doesn't need the terminal - .{ .all = true }, - ); + // Reset kitty graphics storage + self.kitty_images.deinit(self.alloc, self); + self.kitty_images = .{ .dirty = true }; // Reset our basic state self.saved_cursor = null; @@ -474,26 +471,42 @@ pub fn adjustCapacity( const new_node = try self.pages.adjustCapacity(node, adjustment); const new_page: *Page = &new_node.data; - // All additions below have unreachable catches because when - // we adjust cap we should have enough memory to fit the - // existing data. - - // Re-add the style + // Re-add the style, if the page somehow doesn't have enough + // memory to add it, we emit a warning and gracefully degrade + // to the default style for the cursor. if (self.cursor.style_id != 0) { self.cursor.style_id = new_page.styles.add( new_page.memory, self.cursor.style, - ) catch unreachable; + ) catch |err| id: { + // TODO: Should we increase the capacity further in this case? + log.warn( + "(Screen.adjustCapacity) Failed to add cursor style back to page, err={}", + .{err}, + ); + + // Reset the cursor style. + self.cursor.style = .{}; + break :id style.default_id; + }; } - // Re-add the hyperlink + // Re-add the hyperlink, if the page somehow doesn't have enough + // memory to add it, we emit a warning and gracefully degrade to + // no hyperlink. if (self.cursor.hyperlink) |link| { // So we don't attempt to free any memory in the replaced page. self.cursor.hyperlink_id = 0; self.cursor.hyperlink = null; // Re-add - self.startHyperlinkOnce(link.*) catch unreachable; + self.startHyperlinkOnce(link.*) catch |err| { + // TODO: Should we increase the capacity further in this case? + log.warn( + "(Screen.adjustCapacity) Failed to add cursor hyperlink back to page, err={}", + .{err}, + ); + }; // Remove our old link link.deinit(self.alloc); @@ -1003,8 +1016,9 @@ pub fn cursorCopy(self: *Screen, other: Cursor, opts: struct { /// Always use this to write to cursor.page_pin.*. /// /// This specifically handles the case when the new pin is on a different -/// page than the old AND we have a style set. In that case, we must release -/// our old style and upsert our new style since styles are stored per-page. +/// page than the old AND we have a style or hyperlink set. In that case, +/// we must release our old one and insert the new one, since styles are +/// stored per-page. fn cursorChangePin(self: *Screen, new: Pin) void { // Moving the cursor affects text run splitting (ligatures) so // we must mark the old and new page dirty. We do this as long @@ -1576,6 +1590,18 @@ fn resizeInternal( self.cursor.hyperlink = null; } + // We need to insert a tracked pin for our saved cursor so we can + // modify its X/Y for reflow. + const saved_cursor_pin: ?*Pin = saved_cursor: { + const sc = self.saved_cursor orelse break :saved_cursor null; + const pin = self.pages.pin(.{ .active = .{ + .x = sc.x, + .y = sc.y, + } }) orelse break :saved_cursor null; + break :saved_cursor try self.pages.trackPin(pin); + }; + defer if (saved_cursor_pin) |p| self.pages.untrackPin(p); + // Perform the resize operation. try self.pages.resize(.{ .rows = rows, @@ -1595,6 +1621,36 @@ fn resizeInternal( // state is correct. self.cursorReload(); + // If we reflowed a saved cursor, update it. + if (saved_cursor_pin) |p| { + // This should never fail because a non-null saved_cursor_pin + // implies a non-null saved_cursor. + const sc = &self.saved_cursor.?; + if (self.pages.pointFromPin(.active, p.*)) |pt| { + sc.x = @intCast(pt.active.x); + sc.y = @intCast(pt.active.y); + + // If we had pending wrap set and we're no longer at the end of + // the line, we unset the pending wrap and move the cursor to + // reflect the correct next position. + if (sc.pending_wrap and sc.x != cols - 1) { + sc.pending_wrap = false; + sc.x += 1; + } + } else { + // I think this can happen if the screen is resized to be + // less rows or less cols and our saved cursor moves outside + // the active area. In this case, there isn't anything really + // reasonable we can do so we just move the cursor to the + // top-left. It may be reasonable to also move the cursor to + // match the primary cursor. Any behavior is fine since this is + // totally unspecified. + sc.x = 0; + sc.y = 0; + sc.pending_wrap = false; + } + } + // Fix up our hyperlink if we had one. if (hyperlink_) |link| { self.startHyperlink(link.uri, switch (link.id) { @@ -1986,9 +2042,40 @@ pub fn cursorSetHyperlink(self: *Screen) !void { } else |err| switch (err) { // hyperlink_map is out of space, realloc the page to be larger error.HyperlinkMapOutOfMemory => { + const uri_size = if (self.cursor.hyperlink) |link| link.uri.len else 0; + + var string_bytes = page.capacity.string_bytes; + + // Attempt to allocate the space that would be required to + // insert a new copy of the cursor hyperlink uri in to the + // string alloc, since right now adjustCapacity always just + // adds an extra copy even if one already exists in the page. + // If this alloc fails then we know we also need to grow our + // string bytes. + // + // FIXME: This SUCKS + if (page.string_alloc.alloc( + u8, + page.memory, + uri_size, + )) |slice| { + // We don't bother freeing because we're + // about to free the entire page anyway. + _ = &slice; + } else |_| { + // We didn't have enough room, let's just double our + // string bytes until there's definitely enough room + // for our uri. + const before = string_bytes; + while (string_bytes - before < uri_size) string_bytes *= 2; + } + _ = try self.adjustCapacity( self.cursor.page_pin.node, - .{ .hyperlink_bytes = page.capacity.hyperlink_bytes * 2 }, + .{ + .hyperlink_bytes = page.capacity.hyperlink_bytes * 2, + .string_bytes = string_bytes, + }, ); // Retry @@ -2882,6 +2969,9 @@ pub fn testWriteString(self: *Screen, text: []const u8) !void { .protected = self.cursor.protected, }; + // If we have a hyperlink, add it to the cell. + if (self.cursor.hyperlink_id > 0) try self.cursorSetHyperlink(); + // If we have a ref-counted style, increase. if (self.cursor.style_id != style.default_id) { const page = self.cursor.page_pin.node.data; @@ -2900,6 +2990,9 @@ pub fn testWriteString(self: *Screen, text: []const u8) !void { .protected = self.cursor.protected, }; + // If we have a hyperlink, add it to the cell. + if (self.cursor.hyperlink_id > 0) try self.cursorSetHyperlink(); + self.cursor.page_row.wrap = true; try self.cursorDownOrScroll(); self.cursorHorizontalAbsolute(0); @@ -2915,6 +3008,9 @@ pub fn testWriteString(self: *Screen, text: []const u8) !void { .protected = self.cursor.protected, }; + // If we have a hyperlink, add it to the cell. + if (self.cursor.hyperlink_id > 0) try self.cursorSetHyperlink(); + // Write our tail self.cursorRight(1); self.cursor.page_cell.* = .{ @@ -2924,6 +3020,9 @@ pub fn testWriteString(self: *Screen, text: []const u8) !void { .protected = self.cursor.protected, }; + // If we have a hyperlink, add it to the cell. + if (self.cursor.hyperlink_id > 0) try self.cursorSetHyperlink(); + // If we have a ref-counted style, increase twice. if (self.cursor.style_id != style.default_id) { const page = self.cursor.page_pin.node.data; @@ -8725,6 +8824,40 @@ test "Screen: hyperlink cursor state on resize" { } } +test "Screen: cursorSetHyperlink OOM + URI too large for string alloc" { + const testing = std.testing; + const alloc = testing.allocator; + + var s = try init(alloc, 80, 24, 0); + defer s.deinit(); + + // Start a hyperlink with a URI that just barely fits in the string alloc. + // This will ensure that additional string alloc space is needed for the + // redundant copy of the URI when the page is re-alloced. + const uri = "a" ** (pagepkg.std_capacity.string_bytes - 8); + try s.startHyperlink(uri, null); + + // Figure out how many cells should can have hyperlinks in this page, + // and write twice that number, to guarantee the capacity needs to be + // increased at some point. + const base_capacity = s.cursor.page_pin.node.data.hyperlinkCapacity(); + const base_string_bytes = s.cursor.page_pin.node.data.capacity.string_bytes; + for (0..base_capacity * 2) |_| { + try s.cursorSetHyperlink(); + if (s.cursor.x >= s.pages.cols - 1) { + try s.cursorDownOrScroll(); + s.cursorHorizontalAbsolute(0); + } else { + s.cursorRight(1); + } + } + + // Make sure the capacity really did increase. + try testing.expect(base_capacity < s.cursor.page_pin.node.data.hyperlinkCapacity()); + // And that our string_bytes increased as well. + try testing.expect(base_string_bytes < s.cursor.page_pin.node.data.capacity.string_bytes); +} + test "Screen: adjustCapacity cursor style ref count" { const testing = std.testing; const alloc = testing.allocator; @@ -8759,6 +8892,102 @@ test "Screen: adjustCapacity cursor style ref count" { } } +test "Screen: adjustCapacity cursor hyperlink exceeds string alloc size" { + const testing = std.testing; + const alloc = testing.allocator; + + var s = try init(alloc, 80, 24, 0); + defer s.deinit(); + + // Start a hyperlink with a URI that just barely fits in the string alloc. + // This will ensure that the redundant copy added in `adjustCapacity` won't + // fit in the available string alloc space. + const uri = "a" ** (pagepkg.std_capacity.string_bytes - 8); + try s.startHyperlink(uri, null); + + // Write some characters with this so that the URI + // is copied to the new page when adjusting capacity. + try s.testWriteString("Hello"); + + // Adjust the capacity, right now this will cause a redundant copy of + // the URI to be added to the string alloc, but since there isn't room + // for this this will clear the cursor hyperlink. + _ = try s.adjustCapacity(s.cursor.page_pin.node, .{}); + + // The cursor hyperlink should have been cleared by the `adjustCapacity` + // call, because there isn't enough room to add the redundant URI string. + // + // This behavior will change, causing this test to fail, if any of these + // changes are made: + // + // - The string alloc is changed to intern strings. + // + // - The adjustCapacity function is changed to ensure the new + // capacity will fit the redundant copy of the hyperlink uri. + // + // - The cursor managed memory handling is reworked so that it + // doesn't reside in the pages anymore and doesn't need this + // accounting. + // + // In such a case, adjust this test accordingly. + try testing.expectEqual(null, s.cursor.hyperlink); + try testing.expectEqual(0, s.cursor.hyperlink_id); +} + +test "Screen: adjustCapacity cursor style exceeds style set capacity" { + const testing = std.testing; + const alloc = testing.allocator; + + var s = try init(alloc, 80, 24, 1000); + defer s.deinit(); + + const page = &s.cursor.page_pin.node.data; + + // We add unique styles to the page until no more will fit. + fill: for (0..255) |bg| { + for (0..255) |fg| { + const st: style.Style = .{ + .bg_color = .{ .palette = @intCast(bg) }, + .fg_color = .{ .palette = @intCast(fg) }, + }; + + s.cursor.style = st; + + // Try to insert the new style, if it doesn't fit then + // we succeeded in filling the style set, so we break. + s.cursor.style_id = page.styles.add( + page.memory, + s.cursor.style, + ) catch break :fill; + + try s.testWriteString("a"); + } + } + + // Adjust the capacity, this should cause the style set to reach the + // same state it was in to begin with, since it will clone the page + // in the same order as the styles were added to begin with, meaning + // the cursor style will not be able to be added to the set, which + // should, right now, result in the cursor style being cleared. + _ = try s.adjustCapacity(s.cursor.page_pin.node, .{}); + + // The cursor style should have been cleared by the `adjustCapacity`. + // + // This behavior will change, causing this test to fail, if either + // of these changes are made: + // + // - The adjustCapacity function is changed to ensure the + // new capacity will definitely fit the cursor style. + // + // - The cursor managed memory handling is reworked so that it + // doesn't reside in the pages anymore and doesn't need this + // accounting. + // + // In such a case, adjust this test accordingly. + try testing.expect(s.cursor.style.default()); + try testing.expectEqual(style.default_id, s.cursor.style_id); +} + test "Screen UTF8 cell map with newlines" { const testing = std.testing; const alloc = testing.allocator; diff --git a/src/terminal/Terminal.zig b/src/terminal/Terminal.zig index 65476108d..bec0a24a2 100644 --- a/src/terminal/Terminal.zig +++ b/src/terminal/Terminal.zig @@ -10708,6 +10708,87 @@ test "Terminal: resize with high unique style per cell with wrapping" { try t.resize(alloc, 60, 30); } +test "Terminal: resize with reflow and saved cursor" { + const alloc = testing.allocator; + var t = try init(alloc, .{ .cols = 2, .rows = 3 }); + defer t.deinit(alloc); + try t.printString("1A2B"); + t.setCursorPos(2, 2); + { + const list_cell = t.screen.pages.getCell(.{ .active = .{ + .x = t.screen.cursor.x, + .y = t.screen.cursor.y, + } }).?; + const cell = list_cell.cell; + try testing.expectEqual(@as(u32, 'B'), cell.content.codepoint); + } + + { + const str = try t.plainString(testing.allocator); + defer testing.allocator.free(str); + try testing.expectEqualStrings("1A\n2B", str); + } + + t.saveCursor(); + try t.resize(alloc, 5, 3); + try t.restoreCursor(); + + { + const str = try t.plainString(testing.allocator); + defer testing.allocator.free(str); + try testing.expectEqualStrings("1A2B", str); + } + + // Verify our cursor is still in the same place + { + const list_cell = t.screen.pages.getCell(.{ .active = .{ + .x = t.screen.cursor.x, + .y = t.screen.cursor.y, + } }).?; + const cell = list_cell.cell; + try testing.expectEqual(@as(u32, 'B'), cell.content.codepoint); + } +} + +test "Terminal: resize with reflow and saved cursor pending wrap" { + const alloc = testing.allocator; + var t = try init(alloc, .{ .cols = 2, .rows = 3 }); + defer t.deinit(alloc); + try t.printString("1A2B"); + { + const list_cell = t.screen.pages.getCell(.{ .active = .{ + .x = t.screen.cursor.x, + .y = t.screen.cursor.y, + } }).?; + const cell = list_cell.cell; + try testing.expectEqual(@as(u32, 'B'), cell.content.codepoint); + } + + { + const str = try t.plainString(testing.allocator); + defer testing.allocator.free(str); + try testing.expectEqualStrings("1A\n2B", str); + } + + t.saveCursor(); + try t.resize(alloc, 5, 3); + try t.restoreCursor(); + + { + const str = try t.plainString(testing.allocator); + defer testing.allocator.free(str); + try testing.expectEqualStrings("1A2B", str); + } + + // Pending wrap should be reset + try t.print('X'); + { + const str = try t.plainString(testing.allocator); + defer testing.allocator.free(str); + try testing.expectEqualStrings("1A2BX", str); + } +} + test "Terminal: DECCOLM without DEC mode 40" { const alloc = testing.allocator; var t = try init(alloc, .{ .rows = 5, .cols = 5 }); diff --git a/src/terminal/hyperlink.zig b/src/terminal/hyperlink.zig index 1ab3c5ea7..bb9e78ca6 100644 --- a/src/terminal/hyperlink.zig +++ b/src/terminal/hyperlink.zig @@ -194,14 +194,24 @@ pub const Set = RefCountedSet( Id, size.CellCountInt, struct { + /// The page which holds the strings for items in this set. page: ?*Page = null, + /// The page which holds the strings for items + /// looked up with, e.g., `add` or `lookup`, + /// if different from the destination page. + src_page: ?*const Page = null, + pub fn hash(self: *const @This(), link: PageEntry) u64 { - return link.hash(self.page.?.memory); + return link.hash((self.src_page orelse self.page.?).memory); } pub fn eql(self: *const @This(), a: PageEntry, b: PageEntry) bool { - return a.eql(self.page.?.memory, &b, self.page.?.memory); + return a.eql( + (self.src_page orelse self.page.?).memory, + &b, + self.page.?.memory, + ); } pub fn deleted(self: *const @This(), link: PageEntry) void { diff --git a/src/terminal/osc.zig b/src/terminal/osc.zig index 10ba5b5e7..faf376d13 100644 --- a/src/terminal/osc.zig +++ b/src/terminal/osc.zig @@ -272,6 +272,9 @@ pub const Parser = struct { // Maximum length of a single OSC command. This is the full OSC command // sequence length (excluding ESC ]). This is arbitrary, I couldn't find // any definitive resource on how long this should be. + // + // NOTE: This does mean certain OSC sequences such as OSC 8 (hyperlinks) + // won't work if their parameters are larger than fit in the buffer. const MAX_BUF = 2048; pub const State = enum { @@ -425,9 +428,23 @@ pub const Parser = struct { /// Consume the next character c and advance the parser state. pub fn next(self: *Parser, c: u8) void { - // If our buffer is full then we're invalid. + // If our buffer is full then we're invalid, so we set our state + // accordingly and indicate the sequence is incomplete so that we + // don't accidentally issue a command when ending. if (self.buf_idx >= self.buf.len) { + if (self.state != .invalid) { + log.warn( + "OSC sequence too long (> {d}), ignoring. state={}", + .{ self.buf.len, self.state }, + ); + } + self.state = .invalid; + + // We have to do this here because it will never reach the + // switch statement below, since our buf_idx will always be + // too high after this. + self.complete = false; return; } @@ -1643,10 +1660,11 @@ test "OSC: longer than buffer" { var p: Parser = .{}; - const input = "a" ** (Parser.MAX_BUF + 2); + const input = "0;" ++ "a" ** (Parser.MAX_BUF + 2); for (input) |ch| p.next(ch); try testing.expect(p.end(null) == null); + try testing.expect(p.complete == false); } test "OSC: report default foreground color" { diff --git a/src/terminal/page.zig b/src/terminal/page.zig index ae14b8c01..30f6658aa 100644 --- a/src/terminal/page.zig +++ b/src/terminal/page.zig @@ -821,11 +821,7 @@ pub const Page = struct { if (self.hyperlink_set.lookupContext( self.memory, other_link.*, - - // `lookupContext` uses the context for hashing, and - // that doesn't write to the page, so this constCast - // is completely safe. - .{ .page = @constCast(other) }, + .{ .page = self, .src_page = @constCast(other) }, )) |i| { self.hyperlink_set.use(self.memory, i); break :dst_id i; diff --git a/src/terminal/ref_counted_set.zig b/src/terminal/ref_counted_set.zig index 1a58a4e5b..b674295dc 100644 --- a/src/terminal/ref_counted_set.zig +++ b/src/terminal/ref_counted_set.zig @@ -38,8 +38,14 @@ const fastmem = @import("../fastmem.zig"); /// /// `Context` /// A type containing methods to define behaviors. +/// /// - `fn hash(*Context, T) u64` - Return a hash for an item. +/// /// - `fn eql(*Context, T, T) bool` - Check two items for equality. +/// The first of the two items passed in is guaranteed to be from +/// a value passed in to an `add` or `lookup` function, the second +/// is guaranteed to be a value already resident in the set. +/// /// - `fn deleted(*Context, T) void` - [OPTIONAL] Deletion callback. /// If present, called whenever an item is finally deleted. /// Useful if the item has memory that needs to be freed. diff --git a/src/termio/Exec.zig b/src/termio/Exec.zig index 4428b16e1..5a2d2a507 100644 --- a/src/termio/Exec.zig +++ b/src/termio/Exec.zig @@ -682,6 +682,8 @@ pub const ThreadData = struct { pub const Config = struct { command: ?[]const u8 = null, + env: EnvMap, + env_override: configpkg.RepeatableStringMap = .{}, shell_integration: configpkg.Config.ShellIntegration = .detect, shell_integration_features: configpkg.Config.ShellIntegrationFeatures = .{}, working_directory: ?[]const u8 = null, @@ -703,7 +705,7 @@ const Subprocess = struct { arena: std.heap.ArenaAllocator, cwd: ?[]const u8, - env: EnvMap, + env: ?EnvMap, args: [][]const u8, grid_size: renderer.GridSize, screen_size: renderer.ScreenSize, @@ -721,19 +723,9 @@ const Subprocess = struct { errdefer arena.deinit(); const alloc = arena.allocator(); - // Set our env vars. For Flatpak builds running in Flatpak we don't - // inherit our environment because the login shell on the host side - // will get it. - var env = env: { - if (comptime build_config.flatpak) { - if (internal_os.isFlatpak()) { - break :env std.process.EnvMap.init(alloc); - } - } - - break :env try std.process.getEnvMap(alloc); - }; - errdefer env.deinit(); + // Get our env. If a default env isn't provided by the caller + // then we get it ourselves. + var env = cfg.env; // If we have a resources dir then set our env var if (cfg.resources_dir) |dir| { @@ -847,35 +839,11 @@ const Subprocess = struct { try env.put("TERM_PROGRAM", "ghostty"); try env.put("TERM_PROGRAM_VERSION", build_config.version_string); - // When embedding in macOS and running via XCode, XCode injects - // a bunch of things that break our shell process. We remove those. - if (comptime builtin.target.isDarwin() and build_config.artifact == .lib) { - if (env.get("__XCODE_BUILT_PRODUCTS_DIR_PATHS") != null) { - env.remove("__XCODE_BUILT_PRODUCTS_DIR_PATHS"); - env.remove("__XPC_DYLD_LIBRARY_PATH"); - env.remove("DYLD_FRAMEWORK_PATH"); - env.remove("DYLD_INSERT_LIBRARIES"); - env.remove("DYLD_LIBRARY_PATH"); - env.remove("LD_LIBRARY_PATH"); - env.remove("SECURITYSESSIONID"); - env.remove("XPC_SERVICE_NAME"); - } - - // Remove this so that running `ghostty` within Ghostty works. - env.remove("GHOSTTY_MAC_APP"); - } - // VTE_VERSION is set by gnome-terminal and other VTE-based terminals. // We don't want our child processes to think we're running under VTE. + // This is not apprt-specific, so we do it here. env.remove("VTE_VERSION"); - // Don't leak these GTK environment variables to child processes. - if (comptime build_config.app_runtime == .gtk) { - env.remove("GDK_DEBUG"); - env.remove("GDK_DISABLE"); - env.remove("GSK_RENDERER"); - } - // Setup our shell integration, if we can. const integrated_shell: ?shell_integration.Shell, const shell_command: []const u8 = shell: { const default_shell_command = cfg.command orelse switch (builtin.os.tag) { @@ -922,6 +890,15 @@ const Subprocess = struct { log.warn("shell could not be detected, no automatic shell integration will be injected", .{}); } + // Add the environment variables that override any others. + { + var it = cfg.env_override.iterator(); + while (it.next()) |entry| try env.put( + entry.key_ptr.*, + entry.value_ptr.*, + ); + } + // Build our args list const args = args: { const cap = 9; // the most we'll ever use @@ -1086,6 +1063,7 @@ const Subprocess = struct { pub fn deinit(self: *Subprocess) void { self.stop(); if (self.pty) |*pty| pty.deinit(); + if (self.env) |*env| env.deinit(); self.arena.deinit(); self.* = undefined; } @@ -1168,7 +1146,7 @@ const Subprocess = struct { var cmd: Command = .{ .path = self.args[0], .args = self.args, - .env = &self.env, + .env = if (self.env) |*env| env else null, .cwd = cwd, .stdin = if (builtin.os.tag == .windows) null else .{ .handle = pty.slave }, .stdout = if (builtin.os.tag == .windows) null else .{ .handle = pty.slave }, @@ -1202,6 +1180,12 @@ const Subprocess = struct { _ = posix.close(pty.slave); } + // Successful start we can clear out some memory. + if (self.env) |*env| { + env.deinit(); + self.env = null; + } + self.command = cmd; return switch (builtin.os.tag) { .windows => .{ diff --git a/src/termio/Termio.zig b/src/termio/Termio.zig index ab61ae4ca..8a2e6cc7a 100644 --- a/src/termio/Termio.zig +++ b/src/termio/Termio.zig @@ -220,7 +220,7 @@ pub fn init(self: *Termio, alloc: Allocator, opts: termio.Options) !void { .renderer_mailbox = opts.renderer_mailbox, .surface_mailbox = opts.surface_mailbox, .size = opts.size, - .backend = opts.backend, + .backend = backend, .mailbox = opts.mailbox, .terminal_stream = .{ .handler = handler, diff --git a/src/termio/stream_handler.zig b/src/termio/stream_handler.zig index 849e5c107..e9bb353fb 100644 --- a/src/termio/stream_handler.zig +++ b/src/termio/stream_handler.zig @@ -1418,11 +1418,13 @@ pub const StreamHandler = struct { var buf = std.ArrayList(u8).init(self.alloc); defer buf.deinit(); const writer = buf.writer(); - try writer.writeAll("\x1b]21"); for (request.list.items) |item| { switch (item) { .query => |key| { + // If the writer buffer is empty, we need to write our prefix + if (buf.items.len == 0) try writer.writeAll("\x1b]21"); + const color: terminal.color.RGB = switch (key) { .palette => |palette| self.terminal.color_palette.colors[palette], .special => |special| switch (special) { @@ -1517,14 +1519,16 @@ pub const StreamHandler = struct { } } - try writer.writeAll(request.terminator.string()); - - self.messageWriter(.{ - .write_alloc = .{ - .alloc = self.alloc, - .data = try buf.toOwnedSlice(), - }, - }); + // If we had any writes to our buffer, we queue them now + if (buf.items.len > 0) { + try writer.writeAll(request.terminator.string()); + self.messageWriter(.{ + .write_alloc = .{ + .alloc = self.alloc, + .data = try buf.toOwnedSlice(), + }, + }); + } // Note: we don't have to do a queueRender here because every // processed stream will queue a render once it is done processing diff --git a/typos.toml b/typos.toml index 87b41336b..d449e3ffa 100644 --- a/typos.toml +++ b/typos.toml @@ -43,6 +43,7 @@ Strat = "Strat" grey = "gray" greyscale = "grayscale" DECID = "DECID" +flate = "flate" [type.swift.extend-words] inout = "inout"