├── .gitignore ├── .goreleaser.yaml ├── Dockerfile ├── Makefile ├── README.md ├── assets └── csf-root │ ├── credits.mp3 │ ├── data │ ├── authors_credits │ ├── circle │ │ ├── bg │ │ ├── bg_small │ │ ├── bg_small2 │ │ ├── kick │ │ ├── ride │ │ └── shot │ ├── face │ ├── face_alt │ ├── op │ │ ├── info1 │ │ ├── info2 │ │ ├── info3 │ │ ├── info4 │ │ └── zeros │ ├── sabi │ │ ├── box │ │ ├── human_stand │ │ ├── human_walk │ │ ├── kick │ │ ├── ride │ │ └── shot │ ├── sabi2 │ │ ├── box │ │ ├── box_flipped │ │ ├── human │ │ ├── human_flipped │ │ ├── kick │ │ ├── none │ │ ├── ride │ │ └── shot │ └── semicircle │ │ ├── 1 │ │ ├── 2 │ │ └── 3 │ ├── meta.yaml │ └── scores │ ├── circle │ ├── bg.part │ └── content.part │ ├── credits.part │ ├── face.part │ ├── lycles.part │ ├── lycles_mask.part │ ├── op.part │ ├── sabi │ ├── box.part │ ├── box_content.part │ └── human.part │ ├── sabi2 │ ├── box.part │ ├── box_content.part │ └── human.part │ └── semicircle.part ├── config └── config.go ├── csf ├── csf.go ├── model.go └── parser.go ├── docs ├── csf_spec.ja.md └── csf_spec.zh_CN.md ├── go.mod ├── go.sum ├── main.go ├── routines ├── DisplayScreen.go └── PlayAudio.go └── scripts └── setfont.sh /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by https://www.toptal.com/developers/gitignore/api/linux,windows,macos,go 2 | # Edit at https://www.toptal.com/developers/gitignore?templates=linux,windows,macos,go 3 | 4 | ### Go ### 5 | # Binaries for programs and plugins 6 | *.exe 7 | *.exe~ 8 | *.dll 9 | *.so 10 | *.dylib 11 | 12 | # Test binary, built with `go test -c` 13 | *.test 14 | 15 | # Output of the go coverage tool, specifically when used with LiteIDE 16 | *.out 17 | 18 | # Dependency directories (remove the comment below to include it) 19 | # vendor/ 20 | 21 | ### Go Patch ### 22 | /vendor/ 23 | /Godeps/ 24 | 25 | ### Linux ### 26 | *~ 27 | 28 | # temporary files which can be created if a process still has a handle open of a deleted file 29 | .fuse_hidden* 30 | 31 | # KDE directory preferences 32 | .directory 33 | 34 | # Linux trash folder which might appear on any partition or disk 35 | .Trash-* 36 | 37 | # .nfs files are created when an open file is removed but is still being accessed 38 | .nfs* 39 | 40 | ### macOS ### 41 | # General 42 | .DS_Store 43 | .AppleDouble 44 | .LSOverride 45 | 46 | # Icon must end with two \r 47 | Icon 48 | 49 | # Thumbnails 50 | ._* 51 | 52 | # Files that might appear in the root of a volume 53 | .DocumentRevisions-V100 54 | .fseventsd 55 | .Spotlight-V100 56 | .TemporaryItems 57 | .Trashes 58 | .VolumeIcon.icns 59 | .com.apple.timemachine.donotpresent 60 | 61 | # Directories potentially created on remote AFP share 62 | .AppleDB 63 | .AppleDesktop 64 | Network Trash Folder 65 | Temporary Items 66 | .apdisk 67 | 68 | ### Windows ### 69 | # Windows thumbnail cache files 70 | Thumbs.db 71 | Thumbs.db:encryptable 72 | ehthumbs.db 73 | ehthumbs_vista.db 74 | 75 | # Dump file 76 | *.stackdump 77 | 78 | # Folder config file 79 | [Dd]esktop.ini 80 | 81 | # Recycle Bin used on file shares 82 | $RECYCLE.BIN/ 83 | 84 | # Windows Installer files 85 | *.cab 86 | *.msi 87 | *.msix 88 | *.msm 89 | *.msp 90 | 91 | # Windows shortcuts 92 | *.lnk 93 | 94 | # End of https://www.toptal.com/developers/gitignore/api/linux,windows,macos,go 95 | 96 | # custom 97 | dist/ 98 | -------------------------------------------------------------------------------- /.goreleaser.yaml: -------------------------------------------------------------------------------- 1 | project_name: frums-credits-cli 2 | builds: 3 | - id: linux 4 | goos: 5 | - linux 6 | goarch: 7 | - amd64 8 | main: . 9 | ldflags: -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}} 10 | env: 11 | - CGO_ENABLED=1 12 | - id: windows 13 | goos: 14 | - windows 15 | goarch: 16 | - amd64 17 | main: . 18 | ldflags: -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}} 19 | env: 20 | - CGO_ENABLED=1 21 | - CXX=x86_64-w64-mingw32-g++ 22 | - CC=x86_64-w64-mingw32-gcc 23 | # TODO: darwin cross build 24 | #- id: darwin 25 | # goos: 26 | # - darwin 27 | # goarch: 28 | # - amd64 29 | # env: 30 | # - CGO_ENABLED=1 31 | # - SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk 32 | # - CMAKE_OSX_DEPLOYMENT_TARGET=10.14 33 | # - PKG_CONFIG_SYSROOT_DIR=/sysroot/macos/amd64 34 | # - PKG_CONFIG_PATH=/sysroot/macos/amd64/usr/local/lib/pkgconfig 35 | # - CC=o64-clang 36 | # - CXX=o64-clang++ 37 | # - CGO_CFLAGS=-ferror-limit=0 38 | # - CGO_CXXFLAGS=-ferror-limit=0 39 | # flags: 40 | # - -mod=readonly 41 | # ldflags: 42 | # - -s -w -X main.version={{.Version}} 43 | snapshot: 44 | name_template: SNAPSHOT-{{ .Commit }} 45 | checksum: 46 | name_template: "{{ .ProjectName }}_{{ .Version }}_checksums.txt" 47 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM troian/golang-cross:v1.16.3 2 | 3 | RUN apt update && apt install -y libasound2-dev 4 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | GO = go 2 | BINNAME = credits 3 | BIN_DIR = dist/ 4 | REPONAME = frums-credits-cli 5 | 6 | NATIVE_BIN=$(BIN_DIR)$(BINNAME) 7 | native: tidy $(NATIVE_BIN) 8 | tidy: 9 | $(GO) mod tidy 10 | $(NATIVE_BIN): $(shell find . -type f -name '*.go') 11 | $(GO) build -o $(NATIVE_BIN) -v 12 | 13 | build-image: 14 | docker build -t frums-credits-cli-build . 15 | cross: build-image 16 | docker run --rm --privileged \ 17 | -v $(CURDIR):/$(REPONAME) \ 18 | -w /$(REPONAME) \ 19 | frums-credits-cli-build --snapshot --skip-publish --rm-dist 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # frums-credits-cli-nosound 2 | 3 | ![image](https://user-images.githubusercontent.com/18525488/115956294-fd372a00-a536-11eb-8722-897f84f4c543.png) 4 | 5 | [Credits / Frums BGA (Back Ground Animation)](https://www.youtube.com/watch?v=EOTAWLaDa58) on Linux tty 6 | 7 | ## Quick Demo 8 | 9 | Download [latest binary](https://github.com/sititou70/frums-credits-cli-nosound/releases) and execute. 10 | 11 | note: You probably need to set the `RUNEWIDTH_EASTASIAN` environment variable to `0`. 12 | Linux example: `RUNEWIDTH_EASTASIAN=0 ./frums-credits-cli` 13 | 14 | ### Options 15 | 16 | ``` 17 | $ ./credits -h 18 | Usage of ./credits: 19 | -s int 20 | time to skip play (sec) 21 | -v print extra information 22 | ``` 23 | 24 | ## Requirements 25 | 26 | - [Go (1.16.3~)](https://golang.org/doc/install) 27 | - [hajimehoshi/oto's requirements](https://github.com/hajimehoshi/oto#prerequisite) 28 | - On Ubuntu or Debian: `apt install libasound2-dev` 29 | - (optional): [FullCyrSlav-TerminusBoldVGA16](https://www.zap.org.au/projects/console-fonts-distributed/psftx-ubuntu-20.04/FullCyrSlav-TerminusBoldVGA16.psf) 30 | - I recommend using FullCyrSlav-TerminusBoldVGA16 with tty. 31 | - If you don't have `FullCyrAsia-TerminusBoldVGA16.psf` or` FullCyrAsia-TerminusBoldVGA16.psf.gz` in `/usr/ share/consolefonts/`, download and place the font. 32 | 33 | ## Usage 34 | 35 | - (optional): Replace sound file 36 | - `frums-credits-cli/credits-csf/credits.mp3` is a silent dummy file in consideration of copyright. 37 | - You can play music on the CLI by replacing this file with legally obtained music data and adjusting the offset in `frums-credits-cli/credits-csf/meta.yaml`. 38 | - (optional): Switch to tty and setfont 39 | - On linux, press Ctrl + Alt + F[2 ~ 6] and login 40 | - setfont 41 | - `cd /usr/share/consolefonts/` 42 | - `sudo setfont FullCyrAsia-TerminusBoldVGA16.psf.gz` or `sudo setfont FullCyrAsia-TerminusBoldVGA16.psf` 43 | - `cd` (to $HOME) 44 | - `git clone [this repo's url]` 45 | - `cd frume-credits-cli` 46 | - `make` 47 | - `RUNEWIDTH_EASTASIAN=0 ./dist/credits` 48 | 49 | ## CSF: Credits Score Format 50 | 51 | CSF is a format for text-based music videos like [Credits / Frums BGA](https://www.youtube.com/watch?v=EOTAWLaDa58). 52 | 53 | - [CSF specifications (Japanese)](./docs/csf_spec.ja.md) 54 | - [CSF specifications (Chinese)](./docs/csf_spec.zh_CN.md) 55 | 56 | ## Cross build on docker 57 | 58 | `make cross` 59 | 60 | ## Licence 61 | 62 | MIT 63 | -------------------------------------------------------------------------------- /assets/csf-root/credits.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sititou70/frums-credits-cli-nosound/b35895dd1b4f12dbfb9a23d79e26e7265c8b01ed/assets/csf-root/credits.mp3 -------------------------------------------------------------------------------- /assets/csf-root/data/authors_credits: -------------------------------------------------------------------------------- 1 | 2 | Credits 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Frums -------------------------------------------------------------------------------- /assets/csf-root/data/circle/bg: -------------------------------------------------------------------------------- 1 | ♪♪♫♫ 2 | ♪♪♪♪♪♪♫♫♫♫♫♫ 3 | ♪♪♪♪♪♪♪♪♫♫♫♫♫♫♫♫ 4 | ♪♪♪♪♪♪····♫♫♫♫♫♫ 5 | ♪♪♪♪♪♪········♫♫♫♫♫♫ 6 | ♫♫♫♫♫♫········♪♪♪♪♪♪ 7 | ♫♫♫♫♫♫····♪♪♪♪♪♪ 8 | ♫♫♫♫♫♫♫♫♪♪♪♪♪♪♪♪ 9 | ♫♫♫♫♫♫♪♪♪♪♪♪ 10 | ♫♫♪♪ -------------------------------------------------------------------------------- /assets/csf-root/data/circle/bg_small: -------------------------------------------------------------------------------- 1 | ♪♪♪♪♫♫♫♫ 2 | ♪♪♪♪♪♪♫♫♫♫♫♫ 3 | ♪♪♪♪♪♪♫♫♫♫♫♫ 4 | ♫♫♫♫♫♫♪♪♪♪♪♪ 5 | ♫♫♫♫♫♫♪♪♪♪♪♪ 6 | ♫♫♫♫♪♪♪♪ -------------------------------------------------------------------------------- /assets/csf-root/data/circle/bg_small2: -------------------------------------------------------------------------------- 1 | ♪♪♫♫ 2 | ♪♪♪♪♫♫♫♫ 3 | ♫♫♫♫♪♪♪♪ 4 | ♫♫♪♪ -------------------------------------------------------------------------------- /assets/csf-root/data/circle/kick: -------------------------------------------------------------------------------- 1 | ΩΩΩΩ 2 | ΩΩΩΩΩΩΩΩ 3 | ΩΩΩΩΩΩΩΩ 4 | ΩΩΩΩ -------------------------------------------------------------------------------- /assets/csf-root/data/circle/ride: -------------------------------------------------------------------------------- 1 | ≈≈≈≈ 2 | ≈≈≈≈≈≈≈≈ 3 | ≈≈≈≈≈≈≈≈ 4 | ≈≈≈≈ -------------------------------------------------------------------------------- /assets/csf-root/data/circle/shot: -------------------------------------------------------------------------------- 1 | ±±±± 2 | ±±±±±±±± 3 | ±±±±±±±± 4 | ±±±± -------------------------------------------------------------------------------- /assets/csf-root/data/face: -------------------------------------------------------------------------------- 1 | ☻ -------------------------------------------------------------------------------- /assets/csf-root/data/face_alt: -------------------------------------------------------------------------------- 1 | ☺ -------------------------------------------------------------------------------- /assets/csf-root/data/op/info1: -------------------------------------------------------------------------------- 1 | THE BMS OF FIGHTERS ULTIMATE 2 | 3 | Smith au Lait -------------------------------------------------------------------------------- /assets/csf-root/data/op/info2: -------------------------------------------------------------------------------- 1 | THE BMS OF FIGHTERS ULTIMATE 2 | 3 | Smith au Lait 4 | 5 | Music: Frums 6 | 7 | BGA: Frums -------------------------------------------------------------------------------- /assets/csf-root/data/op/info3: -------------------------------------------------------------------------------- 1 | THE BMS OF FIGHTERS ULTIMATE 2 | 3 | Smith au Lait 4 | 5 | Music: Frums 6 | 7 | BGA: Frums 8 | 9 | Genre: OTHER TIME 10 | 11 | BPM: 179 -------------------------------------------------------------------------------- /assets/csf-root/data/op/info4: -------------------------------------------------------------------------------- 1 | THE BMS OF FIGHTERS ULTIMATE 2 | 3 | Smith au Lait 4 | 5 | Music: Frums 6 | 7 | BGA: Frums 8 | 9 | Genre: OTHER TIME 10 | 11 | BPM: 179 12 | 13 | Credits -------------------------------------------------------------------------------- /assets/csf-root/data/op/zeros: -------------------------------------------------------------------------------- 1 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------------------------------------------------------------------------------- /assets/csf-root/data/sabi/box: -------------------------------------------------------------------------------- 1 | ╔════╗ 2 | ║····║ 3 | ║····║ 4 | ╟────╢ 5 | ║····║ 6 | ║····║ 7 | ╟────╢ 8 | ║····║ 9 | ║····║ 10 | ╚════╝ -------------------------------------------------------------------------------- /assets/csf-root/data/sabi/human_stand: -------------------------------------------------------------------------------- 1 | ♪♪ 2 | ♪♪♪♪ 3 | ♪♪ 4 | ♪♪♪♪ 5 | ♪♪♪♪♪♪ 6 | ♪♪♪♪♪♪ 7 | ♪♪♪♪♪♪ 8 | ♪♪♪♪ 9 | ♪♪♪♪ 10 | ♪♪ ♪♪ -------------------------------------------------------------------------------- /assets/csf-root/data/sabi/human_walk: -------------------------------------------------------------------------------- 1 | ♫♫ 2 | ♫♫♫♫ 3 | ♫♫ 4 | ♫♫♫♫ 5 | ♫♫♫♫♫♫ 6 | ♫♫ ♫♫♫♫ ♫ 7 | ♫♫♫♫ ♫ 8 | ♫♫ ♫♫ 9 | ♫♫ ♫♫ 10 | ♫♫ ♫♫ -------------------------------------------------------------------------------- /assets/csf-root/data/sabi/kick: -------------------------------------------------------------------------------- 1 | ΩΩΩΩ 2 | ΩΩΩΩ -------------------------------------------------------------------------------- /assets/csf-root/data/sabi/ride: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | ≈≈≈≈ 8 | ≈≈≈≈ -------------------------------------------------------------------------------- /assets/csf-root/data/sabi/shot: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ±±±± 5 | ±±±± -------------------------------------------------------------------------------- /assets/csf-root/data/sabi2/box: -------------------------------------------------------------------------------- 1 | ╔══════════╤═══════╗ 2 | ║ │ ║ 3 | ║ │ ║ 4 | ║ │ ║ 5 | ║ │ ║ 6 | ║ │ ║ 7 | ║ │ ║ 8 | ║ │ ║ 9 | ║ │ ║ 10 | ╚══════════╧═══════╝ -------------------------------------------------------------------------------- /assets/csf-root/data/sabi2/box_flipped: -------------------------------------------------------------------------------- 1 | ╔═══════╤══════════╗ 2 | ║ │ ║ 3 | ║ │ ║ 4 | ║ │ ║ 5 | ║ │ ║ 6 | ║ │ ║ 7 | ║ │ ║ 8 | ║ │ ║ 9 | ║ │ ║ 10 | ╚═══════╧══════════╝ -------------------------------------------------------------------------------- /assets/csf-root/data/sabi2/human: -------------------------------------------------------------------------------- 1 | ♪♪ 2 | ♪♪♪♪ 3 | ♪♪ 4 | ♪♪♪♪ ♪ 5 | ♪♪♪♪♪♪ 6 | ♪♪♪♪♪ 7 | ▀▀▀▀▀▀▀▀▀▀ -------------------------------------------------------------------------------- /assets/csf-root/data/sabi2/human_flipped: -------------------------------------------------------------------------------- 1 | ♫♫ 2 | ♫♫♫♫ 3 | ♫♫ 4 | ♫ ♫♫♫♫ 5 | ♫♫♫♫♫♫ 6 | ♫♫♫♫♫ 7 | ▀▀▀▀▀▀▀▀▀▀ -------------------------------------------------------------------------------- /assets/csf-root/data/sabi2/kick: -------------------------------------------------------------------------------- 1 | ··ΩΩΩ·· 2 | ·Ω···Ω· 3 | Ω·····Ω 4 | Ω·····Ω 5 | ·Ω···Ω· 6 | ·Ω···Ω· 7 | ΩΩ···ΩΩ 8 | K i c k -------------------------------------------------------------------------------- /assets/csf-root/data/sabi2/none: -------------------------------------------------------------------------------- 1 | ······· 2 | ······· 3 | ······· 4 | ······· 5 | ······· 6 | ······· 7 | ······· 8 | N o n e -------------------------------------------------------------------------------- /assets/csf-root/data/sabi2/ride: -------------------------------------------------------------------------------- 1 | ······· 2 | ·≈≈≈·≈≈ 3 | ≈≈·≈≈≈· 4 | ······· 5 | ·≈≈≈·≈≈ 6 | ≈≈·≈≈≈· 7 | ······· 8 | R i d e -------------------------------------------------------------------------------- /assets/csf-root/data/sabi2/shot: -------------------------------------------------------------------------------- 1 | ···±··· 2 | ···±··· 3 | ·±±±±±· 4 | ···±··· 5 | ···±··· 6 | ······· 7 | ·±±±±±· 8 | S h o t -------------------------------------------------------------------------------- /assets/csf-root/data/semicircle/1: -------------------------------------------------------------------------------- 1 | ░░ ░░ 2 | ░░ ░░ 3 | ░░ ░░ 4 | ░░ ░░ 5 | ░░ ░░ 6 | ░░ ░░ 7 | ░░ ░░ 8 | ░░ ░░ 9 | ░░ ░░ 10 | ░░ ░░ -------------------------------------------------------------------------------- /assets/csf-root/data/semicircle/2: -------------------------------------------------------------------------------- 1 | ▒▒ ▒▒ 2 | ▒▒ ▒▒ 3 | ▒▒ ▒▒ 4 | ▒▒ ▒▒ 5 | ▒▒ ▒▒ 6 | ▒▒ ▒▒ 7 | ▒▒ ▒▒ 8 | ▒▒ ▒▒ 9 | ▒▒ ▒▒ 10 | ▒▒ ▒▒ -------------------------------------------------------------------------------- /assets/csf-root/data/semicircle/3: -------------------------------------------------------------------------------- 1 | ▓▓ ▓▓ 2 | ▓▓ ▓▓ 3 | ▓▓ ▓▓ 4 | ▓▓ ▓▓ 5 | ▓▓ ▓▓ 6 | ▓▓ ▓▓ 7 | ▓▓ ▓▓ 8 | ▓▓ ▓▓ 9 | ▓▓ ▓▓ 10 | ▓▓ ▓▓ -------------------------------------------------------------------------------- /assets/csf-root/meta.yaml: -------------------------------------------------------------------------------- 1 | BPM: 179 2 | AudioFilePath: credits.mp3 3 | AudioOffsetSec: 1.341 4 | -------------------------------------------------------------------------------- /assets/csf-root/scores/circle/bg.part: -------------------------------------------------------------------------------- 1 | # ZINDEX 0 2 | 3 | // op 4 | --- 5 | --- 6 | --- 7 | --- 8 | --- 9 | --- 10 | --- 11 | --- 12 | // intro 13 | # MOVETO 6 3 14 | 15 | circle/bg 16 | --- 17 | circle/bg 18 | circle/bg 19 | circle/bg 20 | # FLIP vertical on 21 | circle/bg 22 | 23 | circle/bg 24 | circle/bg 25 | circle/bg 26 | circle/bg 27 | # FLIP vertical off 28 | --- 29 | circle/bg 30 | --- 31 | circle/bg 32 | circle/bg 33 | circle/bg 34 | # FLIP vertical on 35 | circle/bg 36 | 37 | circle/bg 38 | circle/bg 39 | circle/bg 40 | circle/bg 41 | # FLIP vertical off 42 | --- 43 | circle/bg 44 | --- 45 | circle/bg 46 | circle/bg 47 | circle/bg 48 | # FLIP vertical on 49 | circle/bg 50 | 51 | circle/bg 52 | circle/bg 53 | circle/bg 54 | circle/bg 55 | # FLIP vertical off 56 | --- 57 | circle/bg 58 | --- 59 | circle/bg 60 | circle/bg 61 | circle/bg 62 | # FLIP vertical on 63 | circle/bg 64 | 65 | circle/bg 66 | circle/bg 67 | circle/bg 68 | circle/bg 69 | # FLIP vertical off 70 | --- 71 | circle/bg 72 | --- 73 | circle/bg 74 | circle/bg 75 | circle/bg 76 | # FLIP vertical on 77 | circle/bg 78 | 79 | circle/bg 80 | circle/bg 81 | circle/bg 82 | circle/bg 83 | # FLIP vertical off 84 | --- 85 | circle/bg 86 | --- 87 | circle/bg 88 | circle/bg 89 | circle/bg 90 | # FLIP vertical on 91 | circle/bg 92 | 93 | circle/bg 94 | circle/bg 95 | circle/bg 96 | circle/bg 97 | # FLIP vertical off 98 | --- 99 | circle/bg 100 | --- 101 | circle/bg 102 | circle/bg 103 | circle/bg 104 | # FLIP vertical on 105 | circle/bg 106 | 107 | circle/bg 108 | circle/bg 109 | circle/bg 110 | circle/bg 111 | # FLIP vertical off 112 | --- 113 | circle/bg 114 | --- 115 | circle/bg 116 | circle/bg 117 | circle/bg 118 | # FLIP vertical on 119 | circle/bg 120 | 121 | circle/bg 122 | circle/bg 123 | circle/bg 124 | circle/bg 125 | # FLIP vertical off 126 | --- 127 | // A 128 | circle/bg 129 | --- 130 | circle/bg 131 | circle/bg 132 | circle/bg 133 | # FLIP vertical on 134 | circle/bg 135 | 136 | circle/bg 137 | circle/bg 138 | circle/bg 139 | circle/bg 140 | # FLIP vertical off 141 | --- 142 | circle/bg 143 | --- 144 | circle/bg 145 | circle/bg 146 | circle/bg 147 | # FLIP vertical on 148 | circle/bg 149 | 150 | circle/bg 151 | circle/bg 152 | circle/bg 153 | circle/bg 154 | # FLIP vertical off 155 | --- 156 | circle/bg 157 | --- 158 | circle/bg 159 | circle/bg 160 | circle/bg 161 | # FLIP vertical on 162 | circle/bg 163 | 164 | circle/bg 165 | circle/bg 166 | circle/bg 167 | circle/bg 168 | # FLIP vertical off 169 | --- 170 | circle/bg 171 | --- 172 | circle/bg 173 | circle/bg 174 | circle/bg 175 | # FLIP vertical on 176 | circle/bg 177 | 178 | circle/bg 179 | circle/bg 180 | circle/bg 181 | circle/bg 182 | # FLIP vertical off 183 | --- 184 | // A2 185 | circle/bg 186 | --- 187 | circle/bg 188 | circle/bg 189 | circle/bg 190 | # FLIP vertical on 191 | circle/bg 192 | 193 | circle/bg 194 | circle/bg 195 | circle/bg 196 | circle/bg 197 | # FLIP vertical off 198 | --- 199 | circle/bg 200 | --- 201 | circle/bg 202 | circle/bg 203 | circle/bg 204 | # FLIP vertical on 205 | circle/bg 206 | 207 | circle/bg 208 | circle/bg 209 | circle/bg 210 | circle/bg 211 | # FLIP vertical off 212 | --- 213 | circle/bg 214 | --- 215 | circle/bg 216 | circle/bg 217 | circle/bg 218 | # FLIP vertical on 219 | circle/bg 220 | 221 | circle/bg 222 | circle/bg 223 | circle/bg 224 | circle/bg 225 | # FLIP vertical off 226 | --- 227 | circle/bg 228 | --- 229 | circle/bg 230 | circle/bg 231 | circle/bg 232 | circle/bg 233 | circle/bg 234 | circle/bg 235 | circle/bg 236 | circle/bg 237 | 238 | circle/bg 239 | circle/bg 240 | circle/bg 241 | circle/bg 242 | circle/bg 243 | circle/bg 244 | circle/bg 245 | circle/bg 246 | 247 | circle/bg 248 | # MOVETO 10 5 249 | circle/bg_small 250 | # MOVETO 12 6 251 | circle/bg_small2 252 | # MOVETO 6 2 253 | "" 254 | "" 255 | "" 256 | "" 257 | "" 258 | 259 | "" 260 | "" 261 | "" 262 | "" 263 | "" 264 | "" 265 | "" 266 | "" 267 | --- 268 | // sabi 269 | --- 270 | --- 271 | --- 272 | --- 273 | --- 274 | --- 275 | --- 276 | --- 277 | // sabi2 278 | --- 279 | --- 280 | --- 281 | --- 282 | --- 283 | --- 284 | --- 285 | --- 286 | // outro 287 | # MOVETO 6 3 288 | 289 | circle/bg 290 | --- 291 | circle/bg 292 | circle/bg 293 | circle/bg 294 | # FLIP vertical on 295 | circle/bg 296 | 297 | circle/bg 298 | circle/bg 299 | circle/bg 300 | circle/bg 301 | # FLIP vertical off 302 | --- 303 | circle/bg 304 | --- 305 | circle/bg 306 | circle/bg 307 | circle/bg 308 | # FLIP vertical on 309 | circle/bg 310 | 311 | circle/bg 312 | circle/bg 313 | circle/bg 314 | circle/bg 315 | # FLIP vertical off 316 | --- 317 | circle/bg 318 | --- 319 | circle/bg 320 | circle/bg 321 | circle/bg 322 | # FLIP vertical on 323 | circle/bg 324 | 325 | circle/bg 326 | circle/bg 327 | circle/bg 328 | circle/bg 329 | # FLIP vertical off 330 | --- 331 | circle/bg 332 | --- 333 | circle/bg 334 | circle/bg 335 | circle/bg 336 | # FLIP vertical on 337 | circle/bg 338 | 339 | circle/bg 340 | circle/bg 341 | circle/bg 342 | circle/bg 343 | # FLIP vertical off 344 | --- 345 | circle/bg 346 | --- 347 | circle/bg 348 | circle/bg 349 | circle/bg 350 | # FLIP vertical on 351 | circle/bg 352 | 353 | circle/bg 354 | circle/bg 355 | circle/bg 356 | circle/bg 357 | # FLIP vertical off 358 | --- 359 | circle/bg 360 | --- 361 | circle/bg 362 | circle/bg 363 | circle/bg 364 | # FLIP vertical on 365 | circle/bg 366 | 367 | circle/bg 368 | circle/bg 369 | circle/bg 370 | circle/bg 371 | # FLIP vertical off 372 | --- 373 | circle/bg 374 | --- 375 | circle/bg 376 | circle/bg 377 | circle/bg 378 | # FLIP vertical on 379 | circle/bg 380 | 381 | circle/bg 382 | circle/bg 383 | circle/bg 384 | circle/bg 385 | # FLIP vertical off 386 | --- 387 | circle/bg 388 | --- 389 | circle/bg 390 | circle/bg 391 | circle/bg 392 | circle/bg 393 | circle/bg 394 | circle/bg 395 | circle/bg 396 | circle/bg 397 | 398 | circle/bg 399 | circle/bg 400 | circle/bg 401 | circle/bg 402 | circle/bg 403 | circle/bg 404 | circle/bg 405 | circle/bg 406 | 407 | circle/bg 408 | # MOVETO 10 5 409 | circle/bg_small 410 | # MOVETO 12 6 411 | circle/bg_small2 412 | # MOVETO 6 2 413 | "" 414 | "" 415 | "" 416 | "" 417 | "" 418 | 419 | "" 420 | "" 421 | "" 422 | "" 423 | "" 424 | "" 425 | "" 426 | "" 427 | -------------------------------------------------------------------------------- /assets/csf-root/scores/circle/content.part: -------------------------------------------------------------------------------- 1 | # ZINDEX 1 2 | # MOVETO 12 6 3 | 4 | // op 5 | --- 6 | --- 7 | --- 8 | --- 9 | --- 10 | --- 11 | --- 12 | --- 13 | // intro 14 | 15 | circle/kick 16 | "" 17 | circle/ride 18 | circle/kick 19 | "" 20 | circle/ride 21 | circle/kick 22 | "" 23 | --- 24 | circle/kick 25 | circle/kick 26 | circle/kick 27 | circle/kick 28 | "" 29 | "" 30 | "" 31 | "" 32 | circle/ride 33 | circle/ride 34 | circle/ride 35 | circle/ride 36 | circle/kick 37 | circle/kick 38 | circle/kick 39 | circle/kick 40 | 41 | circle/shot 42 | "" 43 | circle/shot 44 | "" 45 | circle/shot 46 | "" 47 | circle/shot 48 | "" 49 | circle/shot 50 | "" 51 | circle/shot 52 | "" 53 | circle/shot 54 | "" 55 | circle/shot 56 | "" 57 | circle/shot 58 | "" 59 | --- 60 | circle/kick 61 | "" 62 | circle/ride 63 | circle/kick 64 | "" 65 | circle/ride 66 | circle/kick 67 | "" 68 | --- 69 | circle/kick 70 | circle/kick 71 | circle/kick 72 | circle/kick 73 | "" 74 | "" 75 | "" 76 | "" 77 | circle/ride 78 | circle/ride 79 | circle/ride 80 | circle/ride 81 | circle/kick 82 | circle/kick 83 | circle/kick 84 | circle/kick 85 | 86 | circle/shot 87 | "" 88 | circle/shot 89 | "" 90 | circle/shot 91 | "" 92 | circle/shot 93 | "" 94 | circle/shot 95 | "" 96 | circle/shot 97 | "" 98 | circle/shot 99 | "" 100 | circle/shot 101 | "" 102 | circle/shot 103 | "" 104 | --- 105 | circle/kick 106 | "" 107 | circle/ride 108 | circle/kick 109 | "" 110 | circle/ride 111 | circle/kick 112 | "" 113 | --- 114 | circle/kick 115 | circle/kick 116 | circle/kick 117 | circle/kick 118 | "" 119 | "" 120 | "" 121 | "" 122 | circle/ride 123 | circle/ride 124 | circle/ride 125 | circle/ride 126 | circle/kick 127 | circle/kick 128 | circle/kick 129 | circle/kick 130 | 131 | circle/shot 132 | "" 133 | circle/shot 134 | "" 135 | circle/shot 136 | "" 137 | circle/shot 138 | "" 139 | circle/shot 140 | "" 141 | circle/shot 142 | "" 143 | circle/shot 144 | "" 145 | circle/shot 146 | "" 147 | circle/shot 148 | "" 149 | --- 150 | circle/kick 151 | "" 152 | circle/ride 153 | circle/kick 154 | "" 155 | circle/ride 156 | circle/kick 157 | "" 158 | --- 159 | circle/kick 160 | circle/kick 161 | circle/kick 162 | circle/kick 163 | "" 164 | "" 165 | "" 166 | "" 167 | circle/ride 168 | circle/ride 169 | circle/ride 170 | circle/ride 171 | circle/kick 172 | circle/kick 173 | circle/kick 174 | circle/kick 175 | 176 | circle/shot 177 | "" 178 | circle/shot 179 | "" 180 | circle/shot 181 | "" 182 | circle/shot 183 | "" 184 | circle/shot 185 | "" 186 | circle/shot 187 | "" 188 | circle/shot 189 | "" 190 | circle/shot 191 | "" 192 | circle/shot 193 | "" 194 | --- 195 | circle/kick 196 | "" 197 | circle/ride 198 | circle/kick 199 | "" 200 | circle/ride 201 | circle/kick 202 | "" 203 | --- 204 | circle/kick 205 | circle/kick 206 | circle/kick 207 | circle/kick 208 | "" 209 | "" 210 | "" 211 | "" 212 | circle/ride 213 | circle/ride 214 | circle/ride 215 | circle/ride 216 | circle/kick 217 | circle/kick 218 | circle/kick 219 | circle/kick 220 | 221 | circle/shot 222 | "" 223 | circle/shot 224 | "" 225 | circle/shot 226 | "" 227 | circle/shot 228 | "" 229 | circle/shot 230 | "" 231 | circle/shot 232 | "" 233 | circle/shot 234 | "" 235 | circle/shot 236 | "" 237 | circle/shot 238 | "" 239 | --- 240 | circle/kick 241 | "" 242 | circle/ride 243 | circle/kick 244 | "" 245 | circle/ride 246 | circle/kick 247 | "" 248 | --- 249 | circle/kick 250 | circle/kick 251 | circle/kick 252 | circle/kick 253 | "" 254 | "" 255 | "" 256 | "" 257 | circle/ride 258 | circle/ride 259 | circle/ride 260 | circle/ride 261 | circle/kick 262 | circle/kick 263 | circle/kick 264 | circle/kick 265 | 266 | circle/shot 267 | "" 268 | circle/shot 269 | "" 270 | circle/shot 271 | "" 272 | circle/shot 273 | "" 274 | circle/shot 275 | "" 276 | circle/shot 277 | "" 278 | circle/shot 279 | "" 280 | circle/shot 281 | "" 282 | circle/shot 283 | "" 284 | --- 285 | circle/kick 286 | "" 287 | circle/ride 288 | circle/kick 289 | "" 290 | circle/ride 291 | circle/kick 292 | "" 293 | --- 294 | circle/kick 295 | circle/kick 296 | circle/kick 297 | circle/kick 298 | "" 299 | "" 300 | "" 301 | "" 302 | circle/ride 303 | circle/ride 304 | circle/ride 305 | circle/ride 306 | circle/kick 307 | circle/kick 308 | circle/kick 309 | circle/kick 310 | 311 | circle/shot 312 | "" 313 | circle/shot 314 | "" 315 | circle/shot 316 | "" 317 | circle/shot 318 | "" 319 | circle/shot 320 | "" 321 | circle/shot 322 | "" 323 | circle/shot 324 | "" 325 | circle/shot 326 | "" 327 | circle/shot 328 | "" 329 | --- 330 | circle/kick 331 | "" 332 | circle/ride 333 | circle/kick 334 | "" 335 | circle/ride 336 | circle/kick 337 | "" 338 | --- 339 | circle/kick 340 | circle/kick 341 | circle/kick 342 | circle/kick 343 | "" 344 | "" 345 | "" 346 | "" 347 | circle/ride 348 | circle/ride 349 | circle/ride 350 | circle/ride 351 | circle/kick 352 | circle/kick 353 | circle/kick 354 | circle/kick 355 | 356 | circle/shot 357 | "" 358 | circle/shot 359 | "" 360 | circle/shot 361 | "" 362 | circle/shot 363 | "" 364 | circle/shot 365 | "" 366 | circle/shot 367 | "" 368 | circle/shot 369 | "" 370 | circle/shot 371 | "" 372 | circle/shot 373 | "" 374 | --- 375 | // A 376 | 377 | circle/kick 378 | "" 379 | circle/ride 380 | circle/kick 381 | circle/shot 382 | circle/ride 383 | circle/kick 384 | "" 385 | --- 386 | circle/kick 387 | "" 388 | circle/ride 389 | circle/kick 390 | circle/shot 391 | circle/ride 392 | circle/kick 393 | circle/shot 394 | --- 395 | circle/kick 396 | "" 397 | circle/ride 398 | circle/kick 399 | circle/shot 400 | circle/ride 401 | circle/kick 402 | "" 403 | --- 404 | circle/kick 405 | circle/kick 406 | circle/kick 407 | circle/kick 408 | "" 409 | "" 410 | "" 411 | "" 412 | circle/ride 413 | circle/ride 414 | circle/ride 415 | circle/ride 416 | circle/kick 417 | circle/kick 418 | circle/kick 419 | circle/kick 420 | 421 | circle/shot 422 | "" 423 | circle/shot 424 | "" 425 | circle/shot 426 | "" 427 | circle/shot 428 | "" 429 | circle/shot 430 | "" 431 | circle/shot 432 | "" 433 | circle/shot 434 | "" 435 | circle/shot 436 | "" 437 | circle/shot 438 | "" 439 | --- 440 | circle/kick 441 | "" 442 | circle/ride 443 | circle/kick 444 | circle/shot 445 | circle/ride 446 | circle/kick 447 | "" 448 | --- 449 | circle/kick 450 | circle/shot 451 | circle/ride 452 | circle/kick 453 | circle/shot 454 | circle/ride 455 | circle/kick 456 | "" 457 | --- 458 | circle/kick 459 | "" 460 | circle/ride 461 | circle/kick 462 | circle/shot 463 | circle/ride 464 | circle/kick 465 | "" 466 | --- 467 | circle/kick 468 | circle/kick 469 | circle/kick 470 | circle/kick 471 | "" 472 | "" 473 | "" 474 | "" 475 | circle/ride 476 | circle/ride 477 | circle/ride 478 | circle/ride 479 | circle/kick 480 | circle/kick 481 | circle/kick 482 | circle/kick 483 | 484 | circle/shot 485 | "" 486 | circle/shot 487 | "" 488 | circle/shot 489 | "" 490 | circle/shot 491 | "" 492 | circle/shot 493 | "" 494 | circle/shot 495 | "" 496 | circle/shot 497 | "" 498 | circle/shot 499 | "" 500 | circle/shot 501 | "" 502 | --- 503 | // A2 504 | 505 | circle/kick 506 | "" 507 | circle/ride 508 | circle/kick 509 | circle/shot 510 | circle/ride 511 | circle/kick 512 | "" 513 | --- 514 | circle/kick 515 | "" 516 | circle/ride 517 | circle/kick 518 | circle/shot 519 | circle/ride 520 | circle/kick 521 | circle/shot 522 | --- 523 | circle/kick 524 | "" 525 | circle/ride 526 | circle/kick 527 | circle/shot 528 | circle/ride 529 | circle/kick 530 | "" 531 | --- 532 | circle/kick 533 | circle/kick 534 | circle/kick 535 | circle/kick 536 | "" 537 | "" 538 | "" 539 | "" 540 | circle/ride 541 | circle/ride 542 | circle/ride 543 | circle/ride 544 | circle/kick 545 | circle/kick 546 | circle/kick 547 | circle/kick 548 | 549 | circle/shot 550 | "" 551 | circle/shot 552 | "" 553 | circle/shot 554 | "" 555 | circle/shot 556 | "" 557 | circle/shot 558 | "" 559 | circle/shot 560 | "" 561 | circle/shot 562 | "" 563 | circle/shot 564 | "" 565 | circle/shot 566 | "" 567 | --- 568 | circle/kick 569 | "" 570 | circle/ride 571 | circle/kick 572 | circle/shot 573 | circle/ride 574 | circle/kick 575 | "" 576 | --- 577 | circle/kick 578 | circle/shot 579 | circle/ride 580 | circle/kick 581 | circle/shot 582 | circle/ride 583 | circle/kick 584 | "" 585 | --- 586 | circle/kick 587 | "" 588 | circle/ride 589 | circle/kick 590 | circle/shot 591 | circle/ride 592 | circle/kick 593 | "" 594 | --- 595 | circle/kick 596 | "" 597 | circle/ride 598 | circle/kick 599 | 600 | "" 601 | "" 602 | "" 603 | "" 604 | --- 605 | // sabi 606 | --- 607 | --- 608 | --- 609 | --- 610 | --- 611 | --- 612 | --- 613 | --- 614 | // sabi2 615 | --- 616 | --- 617 | --- 618 | --- 619 | --- 620 | --- 621 | --- 622 | --- 623 | // outro 624 | 625 | circle/kick 626 | "" 627 | circle/ride 628 | circle/kick 629 | "" 630 | circle/ride 631 | circle/kick 632 | "" 633 | --- 634 | circle/kick 635 | circle/kick 636 | circle/kick 637 | circle/kick 638 | "" 639 | "" 640 | "" 641 | "" 642 | circle/ride 643 | circle/ride 644 | circle/ride 645 | circle/ride 646 | circle/kick 647 | circle/kick 648 | circle/kick 649 | circle/kick 650 | 651 | circle/shot 652 | "" 653 | circle/shot 654 | "" 655 | circle/shot 656 | "" 657 | circle/shot 658 | "" 659 | circle/shot 660 | "" 661 | circle/shot 662 | "" 663 | circle/shot 664 | "" 665 | circle/shot 666 | "" 667 | circle/shot 668 | "" 669 | --- 670 | circle/kick 671 | "" 672 | circle/ride 673 | circle/kick 674 | "" 675 | circle/ride 676 | circle/kick 677 | "" 678 | --- 679 | circle/kick 680 | circle/kick 681 | circle/kick 682 | circle/kick 683 | "" 684 | "" 685 | "" 686 | "" 687 | circle/ride 688 | circle/ride 689 | circle/ride 690 | circle/ride 691 | circle/kick 692 | circle/kick 693 | circle/kick 694 | circle/kick 695 | 696 | circle/shot 697 | "" 698 | circle/shot 699 | "" 700 | circle/shot 701 | "" 702 | circle/shot 703 | "" 704 | circle/shot 705 | "" 706 | circle/shot 707 | "" 708 | circle/shot 709 | "" 710 | circle/shot 711 | "" 712 | circle/shot 713 | "" 714 | --- 715 | circle/kick 716 | "" 717 | circle/ride 718 | circle/kick 719 | "" 720 | circle/ride 721 | circle/kick 722 | "" 723 | --- 724 | circle/kick 725 | circle/kick 726 | circle/kick 727 | circle/kick 728 | "" 729 | "" 730 | "" 731 | "" 732 | circle/ride 733 | circle/ride 734 | circle/ride 735 | circle/ride 736 | circle/kick 737 | circle/kick 738 | circle/kick 739 | circle/kick 740 | 741 | circle/shot 742 | "" 743 | circle/shot 744 | "" 745 | circle/shot 746 | "" 747 | circle/shot 748 | "" 749 | circle/shot 750 | "" 751 | circle/shot 752 | "" 753 | circle/shot 754 | "" 755 | circle/shot 756 | "" 757 | circle/shot 758 | "" 759 | --- 760 | circle/kick 761 | "" 762 | circle/ride 763 | circle/kick 764 | "" 765 | circle/ride 766 | circle/kick 767 | "" 768 | --- 769 | circle/kick 770 | circle/kick 771 | circle/kick 772 | circle/kick 773 | "" 774 | "" 775 | "" 776 | "" 777 | circle/ride 778 | circle/ride 779 | circle/ride 780 | circle/ride 781 | circle/kick 782 | circle/kick 783 | circle/kick 784 | circle/kick 785 | 786 | circle/shot 787 | "" 788 | circle/shot 789 | "" 790 | circle/shot 791 | "" 792 | circle/shot 793 | "" 794 | circle/shot 795 | "" 796 | circle/shot 797 | "" 798 | circle/shot 799 | "" 800 | circle/shot 801 | "" 802 | circle/shot 803 | "" 804 | --- 805 | circle/kick 806 | "" 807 | circle/ride 808 | circle/kick 809 | "" 810 | circle/ride 811 | circle/kick 812 | "" 813 | --- 814 | circle/kick 815 | circle/kick 816 | circle/kick 817 | circle/kick 818 | "" 819 | "" 820 | "" 821 | "" 822 | circle/ride 823 | circle/ride 824 | circle/ride 825 | circle/ride 826 | circle/kick 827 | circle/kick 828 | circle/kick 829 | circle/kick 830 | 831 | circle/shot 832 | "" 833 | circle/shot 834 | "" 835 | circle/shot 836 | "" 837 | circle/shot 838 | "" 839 | circle/shot 840 | "" 841 | circle/shot 842 | "" 843 | circle/shot 844 | "" 845 | circle/shot 846 | "" 847 | circle/shot 848 | "" 849 | --- 850 | circle/kick 851 | "" 852 | circle/ride 853 | circle/kick 854 | "" 855 | circle/ride 856 | circle/kick 857 | "" 858 | --- 859 | circle/kick 860 | circle/kick 861 | circle/kick 862 | circle/kick 863 | "" 864 | "" 865 | "" 866 | "" 867 | circle/ride 868 | circle/ride 869 | circle/ride 870 | circle/ride 871 | circle/kick 872 | circle/kick 873 | circle/kick 874 | circle/kick 875 | 876 | circle/shot 877 | "" 878 | circle/shot 879 | "" 880 | circle/shot 881 | "" 882 | circle/shot 883 | "" 884 | circle/shot 885 | "" 886 | circle/shot 887 | "" 888 | circle/shot 889 | "" 890 | circle/shot 891 | "" 892 | circle/shot 893 | "" 894 | --- 895 | circle/kick 896 | "" 897 | circle/ride 898 | circle/kick 899 | "" 900 | circle/ride 901 | circle/kick 902 | "" 903 | --- 904 | circle/kick 905 | circle/kick 906 | circle/kick 907 | circle/kick 908 | "" 909 | "" 910 | "" 911 | "" 912 | circle/ride 913 | circle/ride 914 | circle/ride 915 | circle/ride 916 | circle/kick 917 | circle/kick 918 | circle/kick 919 | circle/kick 920 | 921 | circle/shot 922 | "" 923 | circle/shot 924 | "" 925 | circle/shot 926 | "" 927 | circle/shot 928 | "" 929 | circle/shot 930 | "" 931 | circle/shot 932 | "" 933 | circle/shot 934 | "" 935 | circle/shot 936 | "" 937 | circle/shot 938 | "" 939 | --- 940 | circle/kick 941 | "" 942 | circle/ride 943 | circle/kick 944 | "" 945 | circle/ride 946 | circle/kick 947 | "" 948 | --- 949 | circle/kick 950 | "" 951 | circle/ride 952 | circle/kick 953 | 954 | "" 955 | "" 956 | "" 957 | "" 958 | -------------------------------------------------------------------------------- /assets/csf-root/scores/credits.part: -------------------------------------------------------------------------------- 1 | # ZINDEX -2 2 | 3 | --- 4 | --- 5 | --- 6 | --- 7 | --- 8 | --- 9 | --- 10 | --- 11 | authors_credits 12 | --- 13 | authors_credits 14 | --- 15 | authors_credits 16 | --- 17 | authors_credits 18 | --- 19 | authors_credits 20 | --- 21 | authors_credits 22 | --- 23 | authors_credits 24 | --- 25 | authors_credits 26 | --- 27 | authors_credits 28 | --- 29 | authors_credits 30 | --- 31 | authors_credits 32 | --- 33 | authors_credits 34 | --- 35 | authors_credits 36 | --- 37 | authors_credits 38 | --- 39 | authors_credits 40 | --- 41 | authors_credits 42 | --- 43 | authors_credits 44 | --- 45 | authors_credits 46 | --- 47 | authors_credits 48 | --- 49 | authors_credits 50 | --- 51 | authors_credits 52 | --- 53 | authors_credits 54 | --- 55 | authors_credits 56 | --- 57 | authors_credits 58 | --- 59 | authors_credits 60 | --- 61 | authors_credits 62 | --- 63 | authors_credits 64 | --- 65 | authors_credits 66 | --- 67 | authors_credits 68 | --- 69 | authors_credits 70 | --- 71 | authors_credits 72 | --- 73 | authors_credits 74 | --- 75 | authors_credits 76 | --- 77 | authors_credits 78 | --- 79 | authors_credits 80 | --- 81 | authors_credits 82 | --- 83 | authors_credits 84 | --- 85 | authors_credits 86 | --- 87 | authors_credits 88 | --- 89 | authors_credits 90 | --- 91 | authors_credits 92 | --- 93 | authors_credits 94 | --- 95 | authors_credits 96 | --- 97 | authors_credits 98 | --- 99 | authors_credits 100 | --- 101 | authors_credits 102 | --- 103 | authors_credits 104 | --- 105 | authors_credits 106 | --- 107 | authors_credits 108 | --- 109 | authors_credits 110 | --- 111 | authors_credits 112 | --- 113 | authors_credits 114 | --- 115 | authors_credits 116 | --- 117 | authors_credits 118 | --- 119 | authors_credits 120 | --- 121 | authors_credits 122 | --- 123 | authors_credits 124 | --- 125 | authors_credits 126 | --- 127 | authors_credits 128 | --- 129 | authors_credits 130 | --- 131 | authors_credits 132 | --- 133 | authors_credits 134 | --- 135 | authors_credits 136 | --- 137 | authors_credits 138 | authors_credits 139 | authors_credits 140 | "" -------------------------------------------------------------------------------- /assets/csf-root/scores/face.part: -------------------------------------------------------------------------------- 1 | # MOVETO 1 14 2 | // op 3 | --- 4 | --- 5 | --- 6 | --- 7 | --- 8 | --- 9 | --- 10 | --- 11 | --- 12 | --- 13 | --- 14 | --- 15 | --- 16 | --- 17 | --- 18 | --- 19 | --- 20 | --- 21 | --- 22 | --- 23 | --- 24 | --- 25 | --- 26 | "" 27 | "" 28 | "" 29 | "" 30 | "" 31 | "" 32 | "" 33 | "" 34 | 35 | "" 36 | "" 37 | "" 38 | "" 39 | "" 40 | "" 41 | "" 42 | "" 43 | 44 | face 45 | "" 46 | face 47 | "" 48 | face 49 | "" 50 | face 51 | "" 52 | 53 | face 54 | "" 55 | face 56 | "" 57 | face 58 | "" 59 | face 60 | "" 61 | --- 62 | // A 63 | 64 | face 65 | --- 66 | face 67 | --- 68 | face 69 | --- 70 | face 71 | --- 72 | face 73 | --- 74 | face 75 | --- 76 | face 77 | --- 78 | face 79 | --- 80 | // A2 81 | 82 | face 83 | --- 84 | face 85 | --- 86 | face 87 | --- 88 | face 89 | --- 90 | face 91 | --- 92 | face 93 | --- 94 | face 95 | --- 96 | face 97 | --- 98 | // sabi 99 | 100 | face_alt 101 | --- 102 | face_alt 103 | --- 104 | face_alt 105 | --- 106 | face_alt 107 | --- 108 | face_alt 109 | --- 110 | face_alt 111 | --- 112 | face_alt 113 | --- 114 | face_alt 115 | --- 116 | // sabi2 117 | 118 | face_alt 119 | --- 120 | face_alt 121 | --- 122 | face_alt 123 | --- 124 | face_alt 125 | --- 126 | face_alt 127 | --- 128 | face_alt 129 | --- 130 | face_alt 131 | --- 132 | face_alt 133 | --- 134 | // outro 135 | 136 | face_alt 137 | "" 138 | face_alt 139 | "" 140 | face_alt 141 | "" 142 | face_alt 143 | "" 144 | face_alt 145 | "" 146 | face_alt 147 | "" 148 | face_alt 149 | "" 150 | face_alt 151 | "" 152 | face_alt 153 | "" 154 | face_alt 155 | "" 156 | face_alt 157 | "" 158 | face_alt 159 | "" 160 | face_alt 161 | "" 162 | face_alt 163 | "" 164 | face_alt 165 | "" 166 | face_alt 167 | "" 168 | --- 169 | face_alt 170 | "" 171 | face_alt 172 | "" 173 | face_alt 174 | "" 175 | face_alt 176 | "" 177 | face_alt 178 | "" 179 | face_alt 180 | "" 181 | face_alt 182 | "" 183 | face_alt 184 | "" 185 | face_alt 186 | "" 187 | face_alt 188 | "" 189 | face_alt 190 | "" 191 | face_alt 192 | "" 193 | face_alt 194 | "" 195 | face_alt 196 | "" 197 | face_alt 198 | "" 199 | face_alt 200 | "" 201 | --- 202 | face_alt 203 | "" 204 | face_alt 205 | "" 206 | face_alt 207 | "" 208 | face_alt 209 | "" 210 | face_alt 211 | "" 212 | face_alt 213 | "" 214 | face_alt 215 | "" 216 | face_alt 217 | "" 218 | face_alt 219 | "" 220 | face_alt 221 | "" 222 | face_alt 223 | "" 224 | face_alt 225 | "" 226 | face_alt 227 | "" 228 | face_alt 229 | "" 230 | face_alt 231 | "" 232 | face_alt 233 | "" 234 | --- 235 | face_alt 236 | "" 237 | face_alt 238 | "" 239 | face_alt 240 | "" 241 | face_alt 242 | "" 243 | face_alt 244 | "" 245 | face_alt 246 | "" 247 | face_alt 248 | "" 249 | face_alt 250 | "" 251 | face_alt 252 | "" 253 | face_alt 254 | "" 255 | face_alt 256 | "" 257 | face_alt 258 | "" 259 | face_alt 260 | "" 261 | face_alt 262 | "" 263 | face_alt 264 | "" 265 | face_alt 266 | "" 267 | --- 268 | -------------------------------------------------------------------------------- /assets/csf-root/scores/lycles.part: -------------------------------------------------------------------------------- 1 | # MOVETO 3 14 2 | // op 3 | --- 4 | --- 5 | --- 6 | --- 7 | --- 8 | --- 9 | --- 10 | --- 11 | --- 12 | --- 13 | --- 14 | --- 15 | --- 16 | --- 17 | --- 18 | --- 19 | --- 20 | --- 21 | --- 22 | --- 23 | --- 24 | --- 25 | --- 26 | "" 27 | "" 28 | "" 29 | "" 30 | "" 31 | "" 32 | "" 33 | "" 34 | 35 | "" 36 | "" 37 | "" 38 | "" 39 | "" 40 | "" 41 | "" 42 | "" 43 | 44 | F 45 | "" 46 | F 47 | "" 48 | F 49 | "" 50 | F 51 | "" 52 | 53 | F 54 | "" 55 | F 56 | "" 57 | F 58 | "" 59 | F 60 | "" 61 | --- 62 | // A 63 | 64 | Fun 65 | Funding 66 | Funding for 67 | Funding for this 68 | 69 | pro 70 | program 71 | program was 72 | program was made 73 | --- 74 | po 75 | possi 76 | possible 77 | possible by 78 | 79 | possible by (x2) 80 | possible by (x3) 81 | possible by (x4) 82 | possible by (x5) 83 | --- 84 | Fun 85 | Fun 86 | Fun 87 | Fun 88 | Fun 89 | Fun 90 | possible by 91 | possible by 92 | possible by 93 | possible by (x2) 94 | possible by (x2) 95 | possible by (x2) 96 | 97 | possible by (x3) 98 | possible by (x3) 99 | possible by (x3) 100 | possible by (x4) 101 | possible by (x4) 102 | possible by (x4) 103 | Funding 104 | Funding 105 | Funding 106 | Funding 107 | Funding 108 | Funding 109 | 110 | possible by 111 | possible by 112 | possible by 113 | possible by↓ (x2) 114 | possible by↓ (x2) 115 | possible by↓ (x2) 116 | possible by↓↓ (x3) 117 | possible by↓↓ (x3) 118 | possible by↓↓ (x3) 119 | possible by↓↓↓ (x4) 120 | possible by↓↓↓ (x4) 121 | possible by↓↓↓ (x4) 122 | 123 | founding for 124 | founding for 125 | founding for 126 | founding for 127 | founding for 128 | founding for 129 | founding for this 130 | founding for thii 131 | founding for thiii 132 | founding for thiiii 133 | founding for thiiiii 134 | founding for thiiiiii 135 | --- 136 | pro 137 | pro 138 | program 139 | program 140 | pro 141 | pro 142 | program 143 | program 144 | 145 | pro 146 | pro (x2) 147 | pro (x3) 148 | pro (x4) 149 | prog 150 | progr 151 | progam 152 | progam 153 | --- 154 | Fun 155 | Fun 156 | Fun 157 | Funding 158 | Funding 159 | Funding 160 | Funding for 161 | Funding for 162 | Funding for 163 | possible by 164 | possible by 165 | possible by 166 | 167 | possible by (x2) 168 | possible by (x2) 169 | possible by (x2) 170 | program was made 171 | program was made 172 | program was made 173 | po 174 | po 175 | possi 176 | possi 177 | possible 178 | possible 179 | --- 180 | possible by 181 | view 182 | viewers 183 | viewers like 184 | 185 | viewers like you. 186 | viewers like you. 187 | viewers like 188 | viewers like you. 189 | --- 190 | viewers like you. 191 | viewers like 192 | viewers like you. 193 | viewers like you. 194 | 195 | viewers like 196 | viewers like you. 197 | viewers like you. 198 | viewers like 199 | --- 200 | viewers like you. 201 | viewers like you. 202 | viewers like you. 203 | viewers like you. 204 | viewers like 205 | viewers like 206 | viewers like you. 207 | viewers like you. 208 | 209 | viewers like you. 210 | viewers like you. 211 | viewers like 212 | viewers like 213 | viewers like you. 214 | viewers like you. 215 | Fu 216 | Fu (x2) 217 | --- 218 | // A2 219 | 220 | Fun 221 | Funding 222 | Funding for 223 | Funding for this 224 | 225 | pro 226 | program 227 | program was 228 | program was made 229 | --- 230 | po 231 | possi 232 | possible 233 | possible by 234 | 235 | possible by (x2) 236 | possible by (x3) 237 | possible by (x4) 238 | possible by (x5) 239 | --- 240 | Fun 241 | Fun 242 | Fun 243 | Fun 244 | Fun 245 | Fun 246 | possible by 247 | possible by 248 | possible by 249 | possible by (x2) 250 | possible by (x2) 251 | possible by (x2) 252 | 253 | possible by (x3) 254 | possible by (x3) 255 | possible by (x3) 256 | possible by (x4) 257 | possible by (x4) 258 | possible by (x4) 259 | Funding 260 | Funding 261 | Funding 262 | Funding 263 | Funding 264 | Funding 265 | 266 | possible by 267 | possible by 268 | possible by 269 | possible by↓ (x2) 270 | possible by↓ (x2) 271 | possible by↓ (x2) 272 | possible by↓↓ (x3) 273 | possible by↓↓ (x3) 274 | possible by↓↓ (x3) 275 | possible by↓↓↓ (x4) 276 | possible by↓↓↓ (x4) 277 | possible by↓↓↓ (x4) 278 | 279 | founding for 280 | founding for 281 | founding for 282 | founding for 283 | founding for 284 | founding for 285 | founding for this 286 | founding for thii 287 | founding for thiii 288 | founding for thiiii 289 | founding for thiiiii 290 | founding for thiiiiii 291 | --- 292 | pro 293 | pro 294 | program 295 | program 296 | pro 297 | pro 298 | program 299 | program 300 | 301 | pro 302 | pro (x2) 303 | pro (x3) 304 | pro (x4) 305 | prog 306 | progr 307 | progam 308 | progam 309 | --- 310 | Fun 311 | Fun 312 | Fun 313 | Funding 314 | Funding 315 | Funding 316 | Funding for 317 | Funding for 318 | Funding for 319 | possible by 320 | possible by 321 | possible by 322 | 323 | possible by (x2) 324 | possible by (x2) 325 | possible by (x2) 326 | program was made 327 | program was made 328 | program was made 329 | po 330 | po 331 | possi 332 | possi 333 | possible 334 | possible 335 | --- 336 | possible by 337 | view 338 | viewers 339 | viewers like 340 | 341 | viewers like you. 342 | viewers like you. 343 | viewers like 344 | viewers like you. 345 | --- 346 | viewers like you. 347 | viewers like 348 | viewers like you. 349 | viewers like you. 350 | 351 | viewers like 352 | viewers like you. 353 | viewers like you. 354 | viewers like 355 | --- 356 | viewers like you. 357 | viewers like you. 358 | viewers like 359 | viewers like you. 360 | 361 | viewers like you. 362 | viewers like you. 363 | Broad 364 | Broadcast 365 | --- 366 | // sabi 367 | 368 | Cor 369 | Cor 370 | Corpo 371 | Corpora 372 | Corpora 373 | Corporation 374 | Corporation 375 | Corporation 376 | 377 | Cor 378 | Cor 379 | Corpo 380 | Corpora 381 | Corpora 382 | Corporation 383 | Corporation 384 | Corporation 385 | --- 386 | Cor 387 | Cor 388 | Corpo 389 | Corpora 390 | Corpora 391 | Corporation 392 | Corporation 393 | Corporation 394 | 395 | Cor 396 | Cor 397 | Corpo 398 | Cor 399 | Cor 400 | Corpo 401 | Cor 402 | Cor (x2) 403 | --- 404 | Cor (x3) 405 | Cor (x3) 406 | Corpo 407 | Corpora 408 | Corpora 409 | Corporation 410 | Corporation 411 | Corporation 412 | 413 | Cor 414 | Cor 415 | Corpo 416 | Corpora 417 | Corpora 418 | Corporation 419 | Corporation 420 | Corporation 421 | --- 422 | Cor 423 | Cor 424 | Corpo 425 | Corpora 426 | Corpora 427 | Corporation 428 | Corporation 429 | Corporation 430 | 431 | Cor 432 | Corpo 433 | Corpo (x2) 434 | Cor 435 | Corpo 436 | Corpo (x2) 437 | Cor 438 | Corpo 439 | --- 440 | Cor 441 | Cor 442 | Corpo 443 | Corpora 444 | Corpora 445 | Corporation 446 | Cor 447 | Cor (x2) 448 | 449 | Cor (x3) 450 | Cor (x3) 451 | Corpo 452 | Corpora 453 | Corpora 454 | Corporation 455 | Cor 456 | Cor (x2) 457 | --- 458 | Cor (x3) 459 | Cor (x3) 460 | Corpo 461 | Corpora 462 | Corpora 463 | Corporation 464 | Cor 465 | Cor (x2) 466 | 467 | Cor↓ 468 | Cor↓ 469 | Corpo↓ 470 | Corpora↓ 471 | Corpora↓ 472 | Corporation↓ 473 | Cor↓ 474 | Cor↓ (x2) 475 | --- 476 | Cor 477 | Cor 478 | Corpo 479 | Corpora 480 | Corpora 481 | Corporation 482 | Cor 483 | Cor (x2) 484 | 485 | Cor (x3) 486 | Cor (x3) 487 | Corpo 488 | Corpora 489 | Corpora 490 | Corporation 491 | Cor 492 | Cor (x2) 493 | --- 494 | Cor (x3) 495 | Corpo 496 | Corpora 497 | Cor 498 | Corpo 499 | Corpora 500 | Cor 501 | Corpo 502 | 503 | Corpora 504 | Cor 505 | Corpo 506 | Corpora 507 | Corporat 508 | Corporati 509 | Corporatio 510 | Corporation 511 | --- 512 | // sabi2 513 | 514 | Cor 515 | Corpo 516 | Corpora 517 | Cor 518 | Corpo 519 | Cor 520 | Corpo 521 | Corpora 522 | 523 | Cor 524 | Corpo 525 | Corpora 526 | Cor 527 | Corpo 528 | Cor 529 | Corpo 530 | Corpora 531 | --- 532 | Cor 533 | Corpo 534 | Corpora 535 | Cor 536 | Corpo 537 | Cor 538 | Corpo 539 | Corpora 540 | 541 | Cor 542 | Corpo 543 | Cor 544 | Corpo 545 | Cor 546 | Corpo 547 | Cor 548 | Cor (x2) 549 | --- 550 | Cor (x3) 551 | Corpo 552 | Corpora 553 | Cor 554 | Corpo 555 | Cor 556 | Corpo 557 | Corpora 558 | 559 | Cor 560 | Corpo 561 | Corpora 562 | Cor 563 | Corpo 564 | Cor 565 | Corpo 566 | Corpora 567 | --- 568 | Cor 569 | Cor 570 | Corpo 571 | Corpo 572 | Corpora 573 | Corpora 574 | Cor 575 | Cor 576 | Corpo 577 | Corpo 578 | Cor 579 | Cor 580 | Corpo 581 | Corpo 582 | Corpora 583 | Corpora 584 | 585 | Cor 586 | Cor 587 | Corpo 588 | Corpo 589 | Cor 590 | Cor 591 | Corpo 592 | Corpo 593 | Corporat 594 | Corporati 595 | Corporatio 596 | Corporation 597 | Cor 598 | Cor 599 | Cor (x2) 600 | Cor (x2) 601 | --- 602 | Cor (x3) 603 | Corpo 604 | Corpora 605 | Cor 606 | Corpo 607 | Cor 608 | Corpo 609 | Corpora 610 | 611 | Cor 612 | Corpo 613 | Corpora 614 | Cor 615 | Corpo 616 | Cor 617 | Corpo 618 | Corpora 619 | --- 620 | Cor 621 | Corpo 622 | Corpora 623 | Cor 624 | Corpo 625 | Cor 626 | Corpo 627 | Corpora 628 | 629 | Cor 630 | Corpo 631 | Cor 632 | Corpo 633 | Cor 634 | Corpo 635 | Cor 636 | Cor (x2) 637 | --- 638 | Cor (x3) 639 | Corpo 640 | Corpora 641 | Cor 642 | Corpo 643 | Cor 644 | Corpo 645 | Corpora 646 | 647 | Cor 648 | Corpo 649 | Corpora 650 | Cor 651 | Corpo 652 | Cor 653 | Corpo 654 | Corpora 655 | --- 656 | Cor 657 | Cor 658 | Cor 659 | Corpo 660 | Corpo 661 | Corpo 662 | Corpora 663 | Corpora 664 | Corpora 665 | Cor 666 | Cor 667 | Cor 668 | Corpo 669 | Corpo 670 | Corpo 671 | Cor 672 | Cor 673 | Cor 674 | Corpo 675 | Corpo 676 | Corpo 677 | Corpora 678 | Corpora 679 | Corpora 680 | 681 | Cor 682 | Cor 683 | Cor 684 | Corpo 685 | Corpo 686 | Corpo 687 | Cor 688 | Cor 689 | Cor 690 | Corpo 691 | Corpo 692 | Corpo 693 | 694 | Corporat 695 | Corporatt 696 | Corporattt 697 | Corporatttt 698 | Corporattttt 699 | Corporatttttt 700 | Corporattttttt 701 | Corporatttttttt 702 | Corporattttttttt 703 | Corporatttttttttt 704 | Corporattttttttttt 705 | Corporatttttttttttt 706 | --- 707 | tion 708 | "" 709 | tion 710 | "" 711 | tion 712 | "" 713 | tion 714 | "" 715 | tion 716 | "" 717 | tion 718 | "" 719 | tion 720 | "" 721 | tion 722 | "" 723 | tion 724 | "" 725 | tion 726 | "" 727 | tion 728 | "" 729 | tion 730 | "" 731 | tion 732 | "" 733 | tion 734 | "" 735 | tion 736 | "" 737 | tion 738 | "" 739 | --- 740 | ion 741 | "" 742 | ion 743 | "" 744 | ion 745 | "" 746 | ion 747 | "" 748 | ion 749 | "" 750 | ion 751 | "" 752 | ion 753 | "" 754 | ion 755 | "" 756 | ion 757 | "" 758 | ion 759 | "" 760 | ion 761 | "" 762 | ion 763 | "" 764 | ion 765 | "" 766 | ion 767 | "" 768 | ion 769 | "" 770 | ion 771 | "" 772 | --- 773 | on 774 | "" 775 | on 776 | "" 777 | on 778 | "" 779 | on 780 | "" 781 | on 782 | "" 783 | on 784 | "" 785 | on 786 | "" 787 | on 788 | "" 789 | on 790 | "" 791 | on 792 | "" 793 | on 794 | "" 795 | on 796 | "" 797 | on 798 | "" 799 | on 800 | "" 801 | on 802 | "" 803 | on 804 | "" 805 | --- 806 | n 807 | "" 808 | n 809 | "" 810 | n 811 | "" 812 | n 813 | "" 814 | n 815 | "" 816 | n 817 | "" 818 | n 819 | "" 820 | n 821 | "" 822 | n 823 | "" 824 | n 825 | "" 826 | n 827 | "" 828 | n 829 | "" 830 | n 831 | "" 832 | n 833 | "" 834 | n 835 | "" 836 | n 837 | "" 838 | -------------------------------------------------------------------------------- /assets/csf-root/scores/lycles_mask.part: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | --- 4 | --- 5 | --- 6 | --- 7 | --- 8 | --- 9 | --- 10 | --- 11 | --- 12 | --- 13 | --- 14 | --- 15 | --- 16 | --- 17 | --- 18 | --- 19 | --- 20 | --- 21 | --- 22 | --- 23 | --- 24 | --- 25 | --- 26 | --- 27 | --- 28 | --- 29 | --- 30 | --- 31 | --- 32 | --- 33 | --- 34 | --- 35 | --- 36 | --- 37 | --- 38 | --- 39 | --- 40 | --- 41 | --- 42 | --- 43 | --- 44 | --- 45 | --- 46 | --- 47 | --- 48 | --- 49 | --- 50 | --- 51 | --- 52 | --- 53 | --- 54 | --- 55 | --- 56 | # MOVETO 2 14 57 | # ZINDEX 1 58 | "" 59 | "" 60 | "" 61 | "" 62 | "" 63 | "" 64 | "" 65 | "" 66 | "" 67 | "" 68 | "" 69 | "" 70 | "" 71 | "" 72 | "" 73 | "" 74 | "" 75 | "" 76 | "" 77 | "" 78 | "" 79 | "" 80 | "" 81 | "" 82 | "" 83 | "" 84 | "" 85 | "" 86 | "" 87 | "░" 88 | "░░" 89 | "░░░░░░░░" 90 | --- 91 | "▓▓▓▓▓▓▓▓" 92 | "▒▒▒▒▒▒▒▒" 93 | "░░░░░░░░" 94 | "▒▒▒▒▒▒▒▒" 95 | "▓▓▓▓▓▓▓▓" 96 | "▒▒▒▒▒▒▒▒" 97 | "░░░░░░░░" 98 | "▒▒▒▒▒▒▒▒" 99 | "▓▓▓▓▓▓▓▓" 100 | "▒▒▒▒▒▒▒▒" 101 | "░░░░░░░░" 102 | "▒▒▒▒▒▒▒▒" 103 | "▓▓▓▓▓▓▓▓" 104 | "▒▒▒▒▒▒▒▒" 105 | "░░░░░░░░" 106 | "▒▒▒▒▒▒▒▒" 107 | 108 | "▓▓▓▓▓▓▓" 109 | "▒▒▒▒▒▒▒" 110 | "░░░░░░░" 111 | "▒▒▒▒▒▒▒" 112 | "▓▓▓▓▓▓▓" 113 | "▒▒▒▒▒▒▒" 114 | "░░░░░░░" 115 | "▒▒▒▒▒▒▒" 116 | "▓▓▓▓▓▓▓" 117 | "▒▒▒▒▒▒▒" 118 | "░░░░░░░" 119 | "▒▒▒▒▒▒▒" 120 | "▓▓▓▓▓▓▓" 121 | "▒▒▒▒▒▒▒" 122 | "░░░░░░░" 123 | "▒▒▒▒▒▒▒" 124 | --- 125 | "▓▓▓▓▓▓" 126 | "▒▒▒▒▒▒" 127 | "░░░░░░" 128 | "▒▒▒▒▒▒" 129 | "▓▓▓▓▓▓" 130 | "▒▒▒▒▒▒" 131 | "░░░░░░" 132 | "▒▒▒▒▒▒" 133 | "▓▓▓▓▓▓" 134 | "▒▒▒▒▒▒" 135 | "░░░░░░" 136 | "▒▒▒▒▒▒" 137 | "▓▓▓▓▓▓" 138 | "▒▒▒▒▒▒" 139 | "░░░░░░" 140 | "▒▒▒▒▒▒" 141 | 142 | "▓▓▓▓▓" 143 | "▒▒▒▒▒" 144 | "░░░░░" 145 | "▒▒▒▒▒" 146 | "▓▓▓▓▓" 147 | "▒▒▒▒▒" 148 | "░░░░░" 149 | "▒▒▒▒▒" 150 | "▓▓▓▓▓" 151 | "▒▒▒▒▒" 152 | "░░░░░" 153 | "▒▒▒▒▒" 154 | "▓▓▓▓▓" 155 | "▒▒▒▒▒" 156 | "░░░░░" 157 | "▒▒▒▒▒" 158 | --- 159 | "▓▓▓▓" 160 | "▒▒▒▒" 161 | "░░░░" 162 | "▒▒▒▒" 163 | "▓▓▓▓" 164 | "▒▒▒▒" 165 | "░░░░" 166 | "▒▒▒▒" 167 | "▓▓▓▓" 168 | "▒▒▒▒" 169 | "░░░░" 170 | "▒▒▒▒" 171 | "▓▓▓▓" 172 | "▒▒▒▒" 173 | "░░░░" 174 | "▒▒▒▒" 175 | 176 | "▓▓▓" 177 | "▒▒▒" 178 | "░░░" 179 | "▒▒▒" 180 | "▓▓▓" 181 | "▒▒▒" 182 | "░░░" 183 | "▒▒▒" 184 | "▓▓▓" 185 | "▒▒▒" 186 | "░░░" 187 | "▒▒▒" 188 | "▓▓▓" 189 | "▒▒▒" 190 | "░░░" 191 | "▒▒▒" 192 | --- 193 | "▓▓" 194 | "▒▒" 195 | "░░" 196 | "▒▒" 197 | "▓▓" 198 | "▒▒" 199 | "░░" 200 | "▒▒" 201 | "▓▓" 202 | "▒▒" 203 | "░░" 204 | "▒▒" 205 | "▓▓" 206 | "▒▒" 207 | "░░" 208 | "▒▒" 209 | 210 | "▓" 211 | "▒" 212 | "░" 213 | "▒" 214 | "▓" 215 | "▒" 216 | "░" 217 | "▒" 218 | "▓" 219 | "▒" 220 | "░" 221 | "▒" 222 | "▓" 223 | "▒" 224 | "░" 225 | "▒" 226 | -------------------------------------------------------------------------------- /assets/csf-root/scores/op.part: -------------------------------------------------------------------------------- 1 | # MOVETO 1 1 2 | # FLIP vertical off 3 | op/info1 4 | --- 5 | op/info1 6 | op/info1 7 | op/info1 8 | op/info1 9 | op/info1 10 | op/info1 11 | op/info1 12 | op/info1 13 | op/info1 14 | op/info1 15 | op/info1 16 | op/info1 17 | op/info1 18 | op/info1 19 | op/info1 20 | op/info1 21 | 22 | op/info1 23 | op/info1 24 | op/info1 25 | op/info1 26 | op/info1 27 | op/info1 28 | op/info1 29 | op/info1 30 | 31 | # MOVETO 0 0 32 | # FLIP vertical off 33 | op/zeros 34 | op/zeros 35 | op/zeros 36 | op/zeros 37 | op/zeros 38 | # FLIP vertical on 39 | op/zeros 40 | op/zeros 41 | op/zeros 42 | op/zeros 43 | op/zeros 44 | 45 | # FLIP vertical off 46 | op/zeros 47 | op/zeros 48 | op/zeros 49 | op/zeros 50 | op/zeros 51 | # FLIP vertical on 52 | op/zeros 53 | op/zeros 54 | op/zeros 55 | op/zeros 56 | op/zeros 57 | 58 | # FLIP vertical off 59 | op/zeros 60 | op/zeros 61 | op/zeros 62 | op/zeros 63 | op/zeros 64 | # FLIP vertical on 65 | op/zeros 66 | op/zeros 67 | op/zeros 68 | op/zeros 69 | op/zeros 70 | 71 | # FLIP vertical off 72 | op/zeros 73 | op/zeros 74 | op/zeros 75 | op/zeros 76 | op/zeros 77 | # FLIP vertical on 78 | op/zeros 79 | op/zeros 80 | op/zeros 81 | op/zeros 82 | op/zeros 83 | --- 84 | # MOVETO 1 1 85 | # FLIP vertical off 86 | op/info2 87 | --- 88 | op/info2 89 | op/info2 90 | op/info2 91 | op/info2 92 | op/info2 93 | op/info2 94 | op/info2 95 | op/info2 96 | op/info2 97 | op/info2 98 | op/info2 99 | op/info2 100 | op/info2 101 | op/info2 102 | op/info2 103 | op/info2 104 | 105 | op/info2 106 | op/info2 107 | op/info2 108 | op/info2 109 | op/info2 110 | op/info2 111 | op/info2 112 | op/info2 113 | 114 | # MOVETO 0 0 115 | # FLIP vertical off 116 | op/zeros 117 | op/zeros 118 | op/zeros 119 | op/zeros 120 | op/zeros 121 | # FLIP vertical on 122 | op/zeros 123 | op/zeros 124 | op/zeros 125 | op/zeros 126 | op/zeros 127 | 128 | # FLIP vertical off 129 | op/zeros 130 | op/zeros 131 | op/zeros 132 | op/zeros 133 | op/zeros 134 | # FLIP vertical on 135 | op/zeros 136 | op/zeros 137 | op/zeros 138 | op/zeros 139 | op/zeros 140 | 141 | # FLIP vertical off 142 | op/zeros 143 | op/zeros 144 | op/zeros 145 | op/zeros 146 | op/zeros 147 | # FLIP vertical on 148 | op/zeros 149 | op/zeros 150 | op/zeros 151 | op/zeros 152 | op/zeros 153 | 154 | # FLIP vertical off 155 | op/zeros 156 | op/zeros 157 | op/zeros 158 | op/zeros 159 | op/zeros 160 | # FLIP vertical on 161 | op/zeros 162 | op/zeros 163 | op/zeros 164 | op/zeros 165 | op/zeros 166 | --- 167 | # MOVETO 1 1 168 | # FLIP vertical off 169 | op/info3 170 | --- 171 | op/info3 172 | op/info3 173 | op/info3 174 | op/info3 175 | op/info3 176 | op/info3 177 | op/info3 178 | op/info3 179 | op/info3 180 | op/info3 181 | op/info3 182 | op/info3 183 | op/info3 184 | op/info3 185 | op/info3 186 | op/info3 187 | 188 | op/info3 189 | op/info3 190 | op/info3 191 | op/info3 192 | op/info3 193 | op/info3 194 | op/info3 195 | op/info3 196 | 197 | # MOVETO 0 0 198 | # FLIP vertical off 199 | op/zeros 200 | op/zeros 201 | op/zeros 202 | op/zeros 203 | op/zeros 204 | # FLIP vertical on 205 | op/zeros 206 | op/zeros 207 | op/zeros 208 | op/zeros 209 | op/zeros 210 | 211 | # FLIP vertical off 212 | op/zeros 213 | op/zeros 214 | op/zeros 215 | op/zeros 216 | op/zeros 217 | # FLIP vertical on 218 | op/zeros 219 | op/zeros 220 | op/zeros 221 | op/zeros 222 | op/zeros 223 | 224 | # FLIP vertical off 225 | op/zeros 226 | op/zeros 227 | op/zeros 228 | op/zeros 229 | op/zeros 230 | # FLIP vertical on 231 | op/zeros 232 | op/zeros 233 | op/zeros 234 | op/zeros 235 | op/zeros 236 | 237 | # FLIP vertical off 238 | op/zeros 239 | op/zeros 240 | op/zeros 241 | op/zeros 242 | op/zeros 243 | # FLIP vertical on 244 | op/zeros 245 | op/zeros 246 | op/zeros 247 | op/zeros 248 | op/zeros 249 | --- 250 | # MOVETO 1 1 251 | # FLIP vertical off 252 | op/info4 253 | --- 254 | op/info4 255 | op/info4 256 | op/info4 257 | op/info4 258 | op/info4 259 | op/info4 260 | op/info4 261 | op/info4 262 | op/info4 263 | op/info4 264 | op/info4 265 | op/info4 266 | op/info4 267 | op/info4 268 | op/info4 269 | op/info4 270 | 271 | op/info4 272 | op/info4 273 | op/info4 274 | op/info4 275 | op/info4 276 | op/info4 277 | op/info4 278 | op/info4 279 | 280 | # MOVETO 0 0 281 | # FLIP vertical off 282 | op/zeros 283 | op/zeros 284 | op/zeros 285 | op/zeros 286 | op/zeros 287 | # FLIP vertical on 288 | op/zeros 289 | op/zeros 290 | op/zeros 291 | op/zeros 292 | op/zeros 293 | 294 | # FLIP vertical off 295 | op/zeros 296 | op/zeros 297 | op/zeros 298 | op/zeros 299 | op/zeros 300 | # FLIP vertical on 301 | op/zeros 302 | op/zeros 303 | op/zeros 304 | op/zeros 305 | op/zeros 306 | 307 | # FLIP vertical off 308 | op/zeros 309 | op/zeros 310 | op/zeros 311 | op/zeros 312 | op/zeros 313 | # FLIP vertical on 314 | op/zeros 315 | op/zeros 316 | op/zeros 317 | op/zeros 318 | op/zeros 319 | 320 | # FLIP vertical off 321 | op/zeros 322 | op/zeros 323 | op/zeros 324 | op/zeros 325 | op/zeros 326 | # FLIP vertical on 327 | op/zeros 328 | op/zeros 329 | op/zeros 330 | op/zeros 331 | op/zeros 332 | --- 333 | -------------------------------------------------------------------------------- /assets/csf-root/scores/sabi/box.part: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | --- 4 | --- 5 | --- 6 | --- 7 | --- 8 | --- 9 | --- 10 | --- 11 | --- 12 | --- 13 | --- 14 | --- 15 | --- 16 | --- 17 | --- 18 | --- 19 | --- 20 | --- 21 | --- 22 | --- 23 | --- 24 | --- 25 | --- 26 | --- 27 | --- 28 | --- 29 | --- 30 | --- 31 | --- 32 | --- 33 | --- 34 | --- 35 | --- 36 | --- 37 | --- 38 | --- 39 | --- 40 | --- 41 | # MOVETO 7 3 42 | sabi/box 43 | --- 44 | sabi/box 45 | --- 46 | sabi/box 47 | --- 48 | sabi/box 49 | --- 50 | sabi/box 51 | --- 52 | sabi/box 53 | --- 54 | sabi/box 55 | --- 56 | sabi/box 57 | sabi/box 58 | sabi/box 59 | "" 60 | --- 61 | -------------------------------------------------------------------------------- /assets/csf-root/scores/sabi/box_content.part: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | --- 4 | --- 5 | --- 6 | --- 7 | --- 8 | --- 9 | --- 10 | --- 11 | --- 12 | --- 13 | --- 14 | --- 15 | --- 16 | --- 17 | --- 18 | --- 19 | --- 20 | --- 21 | --- 22 | --- 23 | --- 24 | --- 25 | --- 26 | --- 27 | --- 28 | --- 29 | --- 30 | --- 31 | --- 32 | --- 33 | --- 34 | --- 35 | --- 36 | --- 37 | --- 38 | --- 39 | --- 40 | --- 41 | # MOVETO 8 4 42 | # ZINDEX 1 43 | // sabi 44 | sabi/kick 45 | sabi/kick 46 | "" 47 | "" 48 | sabi/ride 49 | sabi/ride 50 | sabi/kick 51 | sabi/kick 52 | "" 53 | "" 54 | sabi/kick 55 | sabi/kick 56 | "" 57 | "" 58 | sabi/ride 59 | sabi/ride 60 | sabi/shot 61 | sabi/shot 62 | "" 63 | "" 64 | sabi/ride 65 | sabi/ride 66 | sabi/kick 67 | sabi/kick 68 | "" 69 | "" 70 | sabi/kick 71 | sabi/kick 72 | "" 73 | "" 74 | sabi/ride 75 | sabi/ride 76 | --- 77 | sabi/kick 78 | sabi/kick 79 | "" 80 | "" 81 | sabi/ride 82 | sabi/ride 83 | sabi/kick 84 | sabi/kick 85 | "" 86 | "" 87 | sabi/kick 88 | sabi/kick 89 | "" 90 | "" 91 | sabi/ride 92 | sabi/ride 93 | sabi/shot 94 | sabi/shot 95 | "" 96 | "" 97 | sabi/ride 98 | sabi/ride 99 | sabi/kick 100 | sabi/kick 101 | "" 102 | "" 103 | sabi/kick 104 | sabi/kick 105 | sabi/shot 106 | "" 107 | sabi/shot 108 | "" 109 | --- 110 | sabi/kick 111 | sabi/kick 112 | "" 113 | "" 114 | sabi/ride 115 | sabi/ride 116 | sabi/kick 117 | sabi/kick 118 | "" 119 | "" 120 | sabi/kick 121 | sabi/kick 122 | "" 123 | "" 124 | sabi/ride 125 | sabi/ride 126 | sabi/shot 127 | sabi/shot 128 | "" 129 | "" 130 | sabi/ride 131 | sabi/ride 132 | sabi/kick 133 | sabi/kick 134 | "" 135 | "" 136 | sabi/kick 137 | sabi/kick 138 | "" 139 | "" 140 | sabi/ride 141 | sabi/ride 142 | --- 143 | sabi/kick 144 | sabi/kick 145 | "" 146 | "" 147 | sabi/ride 148 | sabi/ride 149 | sabi/kick 150 | sabi/kick 151 | "" 152 | "" 153 | sabi/kick 154 | sabi/kick 155 | "" 156 | "" 157 | sabi/ride 158 | sabi/ride 159 | sabi/shot 160 | sabi/shot 161 | "" 162 | "" 163 | sabi/ride 164 | sabi/ride 165 | sabi/kick 166 | sabi/kick 167 | "" 168 | "" 169 | sabi/kick 170 | sabi/kick 171 | sabi/shot 172 | "" 173 | sabi/shot 174 | "" 175 | --- 176 | sabi/kick 177 | sabi/kick 178 | "" 179 | "" 180 | sabi/ride 181 | sabi/ride 182 | sabi/kick 183 | sabi/kick 184 | "" 185 | "" 186 | sabi/kick 187 | sabi/kick 188 | "" 189 | "" 190 | sabi/ride 191 | sabi/ride 192 | sabi/shot 193 | sabi/shot 194 | "" 195 | "" 196 | sabi/ride 197 | sabi/ride 198 | sabi/kick 199 | sabi/kick 200 | "" 201 | "" 202 | sabi/kick 203 | sabi/kick 204 | "" 205 | "" 206 | sabi/ride 207 | sabi/ride 208 | --- 209 | sabi/kick 210 | sabi/kick 211 | "" 212 | "" 213 | sabi/ride 214 | sabi/ride 215 | sabi/kick 216 | sabi/kick 217 | "" 218 | "" 219 | sabi/kick 220 | sabi/kick 221 | "" 222 | "" 223 | sabi/ride 224 | sabi/ride 225 | sabi/shot 226 | sabi/shot 227 | "" 228 | "" 229 | sabi/ride 230 | sabi/ride 231 | sabi/kick 232 | sabi/kick 233 | "" 234 | "" 235 | sabi/kick 236 | sabi/kick 237 | sabi/shot 238 | "" 239 | sabi/shot 240 | "" 241 | --- 242 | sabi/kick 243 | sabi/kick 244 | "" 245 | "" 246 | sabi/ride 247 | sabi/ride 248 | sabi/kick 249 | sabi/kick 250 | "" 251 | "" 252 | sabi/kick 253 | sabi/kick 254 | "" 255 | "" 256 | sabi/ride 257 | sabi/ride 258 | sabi/shot 259 | sabi/shot 260 | "" 261 | "" 262 | sabi/ride 263 | sabi/ride 264 | sabi/kick 265 | sabi/kick 266 | "" 267 | "" 268 | sabi/kick 269 | sabi/kick 270 | "" 271 | "" 272 | sabi/ride 273 | sabi/ride 274 | --- 275 | sabi/kick 276 | sabi/kick 277 | "" 278 | "" 279 | sabi/ride 280 | sabi/ride 281 | sabi/kick 282 | sabi/kick 283 | "" 284 | "" 285 | sabi/kick 286 | sabi/kick 287 | "" 288 | "" 289 | sabi/ride 290 | sabi/ride 291 | sabi/shot 292 | sabi/shot 293 | "" 294 | "" 295 | sabi/ride 296 | sabi/ride 297 | sabi/kick 298 | sabi/kick 299 | "" 300 | "" 301 | "" 302 | "" 303 | "" 304 | "" 305 | "" 306 | "" 307 | -------------------------------------------------------------------------------- /assets/csf-root/scores/sabi/human.part: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | --- 4 | --- 5 | --- 6 | --- 7 | --- 8 | --- 9 | --- 10 | --- 11 | --- 12 | --- 13 | --- 14 | --- 15 | --- 16 | --- 17 | --- 18 | --- 19 | --- 20 | --- 21 | --- 22 | --- 23 | --- 24 | --- 25 | --- 26 | --- 27 | --- 28 | --- 29 | --- 30 | --- 31 | --- 32 | --- 33 | --- 34 | --- 35 | --- 36 | --- 37 | --- 38 | --- 39 | --- 40 | --- 41 | //sabi 42 | # MOVETO 19 3 43 | sabi/human_stand 44 | --- 45 | sabi/human_stand 46 | sabi/human_stand 47 | sabi/human_stand 48 | # MOVETO 16 3 49 | sabi/human_walk 50 | 51 | sabi/human_walk 52 | sabi/human_walk 53 | sabi/human_walk 54 | sabi/human_walk 55 | --- 56 | # MOVETO 19 3 57 | sabi/human_stand 58 | --- 59 | sabi/human_stand 60 | sabi/human_stand 61 | sabi/human_stand 62 | # MOVETO 16 3 63 | sabi/human_walk 64 | 65 | sabi/human_walk 66 | sabi/human_walk 67 | sabi/human_walk 68 | sabi/human_walk 69 | --- 70 | # MOVETO 19 3 71 | sabi/human_stand 72 | --- 73 | sabi/human_stand 74 | sabi/human_stand 75 | sabi/human_stand 76 | # MOVETO 16 3 77 | sabi/human_walk 78 | 79 | sabi/human_walk 80 | sabi/human_walk 81 | sabi/human_walk 82 | sabi/human_walk 83 | --- 84 | # MOVETO 19 3 85 | sabi/human_stand 86 | --- 87 | sabi/human_stand 88 | sabi/human_stand 89 | sabi/human_stand 90 | # MOVETO 16 3 91 | sabi/human_walk 92 | 93 | sabi/human_walk 94 | sabi/human_walk 95 | "" 96 | "" 97 | --- 98 | -------------------------------------------------------------------------------- /assets/csf-root/scores/sabi2/box.part: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | --- 4 | --- 5 | --- 6 | --- 7 | --- 8 | --- 9 | --- 10 | --- 11 | --- 12 | --- 13 | --- 14 | --- 15 | --- 16 | --- 17 | --- 18 | --- 19 | --- 20 | --- 21 | --- 22 | --- 23 | --- 24 | --- 25 | --- 26 | --- 27 | --- 28 | --- 29 | --- 30 | --- 31 | --- 32 | --- 33 | --- 34 | --- 35 | --- 36 | --- 37 | --- 38 | --- 39 | --- 40 | --- 41 | // sabi 42 | --- 43 | --- 44 | --- 45 | --- 46 | --- 47 | --- 48 | --- 49 | --- 50 | // sabi2 51 | 52 | # MOVETO 6 3 53 | sabi2/box 54 | --- 55 | sabi2/box 56 | sabi2/box 57 | sabi2/box 58 | sabi2/box_flipped 59 | sabi2/box_flipped 60 | sabi2/box_flipped 61 | sabi2/box_flipped 62 | sabi2/box_flipped 63 | --- 64 | sabi2/box 65 | --- 66 | sabi2/box 67 | sabi2/box 68 | sabi2/box 69 | sabi2/box_flipped 70 | sabi2/box_flipped 71 | sabi2/box_flipped 72 | sabi2/box_flipped 73 | sabi2/box_flipped 74 | --- 75 | sabi2/box 76 | --- 77 | sabi2/box 78 | sabi2/box 79 | sabi2/box 80 | sabi2/box_flipped 81 | sabi2/box_flipped 82 | sabi2/box_flipped 83 | sabi2/box_flipped 84 | sabi2/box_flipped 85 | --- 86 | sabi2/box 87 | --- 88 | sabi2/box 89 | sabi2/box 90 | sabi2/box 91 | sabi2/box_flipped 92 | sabi2/box_flipped 93 | sabi2/box_flipped 94 | "" 95 | "" 96 | -------------------------------------------------------------------------------- /assets/csf-root/scores/sabi2/box_content.part: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | --- 4 | --- 5 | --- 6 | --- 7 | --- 8 | --- 9 | --- 10 | --- 11 | --- 12 | --- 13 | --- 14 | --- 15 | --- 16 | --- 17 | --- 18 | --- 19 | --- 20 | --- 21 | --- 22 | --- 23 | --- 24 | --- 25 | --- 26 | --- 27 | --- 28 | --- 29 | --- 30 | --- 31 | --- 32 | --- 33 | --- 34 | --- 35 | --- 36 | --- 37 | --- 38 | --- 39 | --- 40 | --- 41 | // sabi 42 | --- 43 | --- 44 | --- 45 | --- 46 | --- 47 | --- 48 | --- 49 | --- 50 | # MOVETO 18 4 51 | # ZINDEX 1 52 | // sabi2 53 | sabi2/kick 54 | sabi2/kick 55 | sabi2/none 56 | sabi2/none 57 | sabi2/ride 58 | sabi2/ride 59 | sabi2/kick 60 | sabi2/kick 61 | sabi2/none 62 | sabi2/none 63 | sabi2/kick 64 | sabi2/kick 65 | sabi2/none 66 | sabi2/none 67 | sabi2/ride 68 | sabi2/ride 69 | sabi2/shot 70 | sabi2/shot 71 | sabi2/none 72 | sabi2/none 73 | sabi2/ride 74 | sabi2/ride 75 | sabi2/kick 76 | sabi2/kick 77 | sabi2/none 78 | sabi2/none 79 | sabi2/kick 80 | sabi2/kick 81 | sabi2/none 82 | sabi2/none 83 | sabi2/ride 84 | sabi2/ride 85 | --- 86 | sabi2/kick 87 | sabi2/kick 88 | sabi2/none 89 | sabi2/none 90 | sabi2/ride 91 | sabi2/ride 92 | sabi2/kick 93 | sabi2/kick 94 | sabi2/none 95 | sabi2/none 96 | sabi2/kick 97 | sabi2/kick 98 | # MOVETO 7 4 99 | sabi2/none 100 | sabi2/none 101 | sabi2/ride 102 | sabi2/ride 103 | sabi2/shot 104 | sabi2/shot 105 | sabi2/none 106 | sabi2/none 107 | sabi2/ride 108 | sabi2/ride 109 | sabi2/kick 110 | sabi2/kick 111 | sabi2/none 112 | sabi2/none 113 | sabi2/kick 114 | sabi2/kick 115 | sabi2/shot 116 | sabi2/none 117 | sabi2/shot 118 | sabi2/none 119 | --- 120 | # MOVETO 18 4 121 | sabi2/kick 122 | sabi2/kick 123 | sabi2/none 124 | sabi2/none 125 | sabi2/ride 126 | sabi2/ride 127 | sabi2/kick 128 | sabi2/kick 129 | sabi2/none 130 | sabi2/none 131 | sabi2/kick 132 | sabi2/kick 133 | sabi2/none 134 | sabi2/none 135 | sabi2/ride 136 | sabi2/ride 137 | sabi2/shot 138 | sabi2/shot 139 | sabi2/none 140 | sabi2/none 141 | sabi2/ride 142 | sabi2/ride 143 | sabi2/kick 144 | sabi2/kick 145 | sabi2/none 146 | sabi2/none 147 | sabi2/kick 148 | sabi2/kick 149 | sabi2/none 150 | sabi2/none 151 | sabi2/ride 152 | sabi2/ride 153 | --- 154 | sabi2/kick 155 | sabi2/kick 156 | sabi2/none 157 | sabi2/none 158 | sabi2/ride 159 | sabi2/ride 160 | sabi2/kick 161 | sabi2/kick 162 | sabi2/none 163 | sabi2/none 164 | sabi2/kick 165 | sabi2/kick 166 | # MOVETO 7 4 167 | sabi2/none 168 | sabi2/none 169 | sabi2/ride 170 | sabi2/ride 171 | sabi2/shot 172 | sabi2/shot 173 | sabi2/none 174 | sabi2/none 175 | sabi2/ride 176 | sabi2/ride 177 | sabi2/kick 178 | sabi2/kick 179 | sabi2/none 180 | sabi2/none 181 | sabi2/kick 182 | sabi2/kick 183 | sabi2/shot 184 | sabi2/none 185 | sabi2/shot 186 | sabi2/none 187 | --- 188 | # MOVETO 18 4 189 | sabi2/kick 190 | sabi2/kick 191 | sabi2/none 192 | sabi2/none 193 | sabi2/ride 194 | sabi2/ride 195 | sabi2/kick 196 | sabi2/kick 197 | sabi2/none 198 | sabi2/none 199 | sabi2/kick 200 | sabi2/kick 201 | sabi2/none 202 | sabi2/none 203 | sabi2/ride 204 | sabi2/ride 205 | sabi2/shot 206 | sabi2/shot 207 | sabi2/none 208 | sabi2/none 209 | sabi2/ride 210 | sabi2/ride 211 | sabi2/kick 212 | sabi2/kick 213 | sabi2/none 214 | sabi2/none 215 | sabi2/kick 216 | sabi2/kick 217 | sabi2/none 218 | sabi2/none 219 | sabi2/ride 220 | sabi2/ride 221 | --- 222 | sabi2/kick 223 | sabi2/kick 224 | sabi2/none 225 | sabi2/none 226 | sabi2/ride 227 | sabi2/ride 228 | sabi2/kick 229 | sabi2/kick 230 | sabi2/none 231 | sabi2/none 232 | sabi2/kick 233 | sabi2/kick 234 | # MOVETO 7 4 235 | sabi2/none 236 | sabi2/none 237 | sabi2/ride 238 | sabi2/ride 239 | sabi2/shot 240 | sabi2/shot 241 | sabi2/none 242 | sabi2/none 243 | sabi2/ride 244 | sabi2/ride 245 | sabi2/kick 246 | sabi2/kick 247 | sabi2/none 248 | sabi2/none 249 | sabi2/kick 250 | sabi2/kick 251 | sabi2/shot 252 | sabi2/none 253 | sabi2/shot 254 | sabi2/none 255 | --- 256 | # MOVETO 18 4 257 | sabi2/kick 258 | sabi2/kick 259 | sabi2/none 260 | sabi2/none 261 | sabi2/ride 262 | sabi2/ride 263 | sabi2/kick 264 | sabi2/kick 265 | sabi2/none 266 | sabi2/none 267 | sabi2/kick 268 | sabi2/kick 269 | sabi2/none 270 | sabi2/none 271 | sabi2/ride 272 | sabi2/ride 273 | sabi2/shot 274 | sabi2/shot 275 | sabi2/none 276 | sabi2/none 277 | sabi2/ride 278 | sabi2/ride 279 | sabi2/kick 280 | sabi2/kick 281 | sabi2/none 282 | sabi2/none 283 | sabi2/kick 284 | sabi2/kick 285 | sabi2/none 286 | sabi2/none 287 | sabi2/ride 288 | sabi2/ride 289 | --- 290 | sabi2/kick 291 | sabi2/kick 292 | sabi2/none 293 | sabi2/none 294 | sabi2/ride 295 | sabi2/ride 296 | sabi2/kick 297 | sabi2/kick 298 | sabi2/none 299 | sabi2/none 300 | sabi2/kick 301 | sabi2/kick 302 | # MOVETO 7 4 303 | sabi2/none 304 | sabi2/none 305 | sabi2/ride 306 | sabi2/ride 307 | sabi2/shot 308 | sabi2/shot 309 | sabi2/none 310 | sabi2/none 311 | sabi2/ride 312 | sabi2/ride 313 | sabi2/kick 314 | sabi2/kick 315 | "" 316 | "" 317 | "" 318 | "" 319 | "" 320 | "" 321 | "" 322 | "" 323 | -------------------------------------------------------------------------------- /assets/csf-root/scores/sabi2/human.part: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | --- 4 | --- 5 | --- 6 | --- 7 | --- 8 | --- 9 | --- 10 | --- 11 | --- 12 | --- 13 | --- 14 | --- 15 | --- 16 | --- 17 | --- 18 | --- 19 | --- 20 | --- 21 | --- 22 | --- 23 | --- 24 | --- 25 | --- 26 | --- 27 | --- 28 | --- 29 | --- 30 | --- 31 | --- 32 | --- 33 | --- 34 | --- 35 | --- 36 | --- 37 | --- 38 | --- 39 | --- 40 | --- 41 | // sabi 42 | --- 43 | --- 44 | --- 45 | --- 46 | --- 47 | --- 48 | --- 49 | --- 50 | // sabi2 51 | 52 | # MOVETO 7 5 53 | sabi2/human 54 | --- 55 | sabi2/human 56 | sabi2/human 57 | sabi2/human 58 | # MOVETO 15 5 59 | sabi2/human_flipped 60 | sabi2/human_flipped 61 | sabi2/human_flipped 62 | sabi2/human_flipped 63 | sabi2/human_flipped 64 | --- 65 | # MOVETO 7 5 66 | sabi2/human 67 | --- 68 | sabi2/human 69 | sabi2/human 70 | sabi2/human 71 | # MOVETO 15 5 72 | sabi2/human_flipped 73 | sabi2/human_flipped 74 | sabi2/human_flipped 75 | sabi2/human_flipped 76 | sabi2/human_flipped 77 | --- 78 | # MOVETO 7 5 79 | sabi2/human 80 | --- 81 | sabi2/human 82 | sabi2/human 83 | sabi2/human 84 | # MOVETO 15 5 85 | sabi2/human_flipped 86 | sabi2/human_flipped 87 | sabi2/human_flipped 88 | sabi2/human_flipped 89 | sabi2/human_flipped 90 | --- 91 | # MOVETO 7 5 92 | sabi2/human 93 | --- 94 | sabi2/human 95 | sabi2/human 96 | sabi2/human 97 | # MOVETO 15 5 98 | sabi2/human_flipped 99 | sabi2/human_flipped 100 | sabi2/human_flipped 101 | "" 102 | "" 103 | --- 104 | -------------------------------------------------------------------------------- /assets/csf-root/scores/semicircle.part: -------------------------------------------------------------------------------- 1 | # ZINDEX -1 2 | # MOVETO 2 3 3 | 4 | // op 5 | --- 6 | --- 7 | --- 8 | --- 9 | --- 10 | --- 11 | --- 12 | --- 13 | --- 14 | --- 15 | --- 16 | --- 17 | --- 18 | --- 19 | --- 20 | --- 21 | // intro 22 | 23 | semicircle/3 24 | semicircle/2 25 | semicircle/1 26 | semicircle/1 27 | semicircle/1 28 | semicircle/1 29 | semicircle/1 30 | semicircle/1 31 | semicircle/1 32 | semicircle/1 33 | semicircle/1 34 | semicircle/1 35 | semicircle/1 36 | semicircle/1 37 | semicircle/1 38 | semicircle/1 39 | 40 | semicircle/3 41 | semicircle/2 42 | semicircle/1 43 | semicircle/1 44 | semicircle/1 45 | semicircle/1 46 | semicircle/1 47 | semicircle/1 48 | semicircle/1 49 | semicircle/1 50 | semicircle/1 51 | semicircle/1 52 | semicircle/1 53 | semicircle/1 54 | semicircle/1 55 | semicircle/1 56 | --- 57 | semicircle/3 58 | semicircle/2 59 | semicircle/1 60 | semicircle/1 61 | semicircle/1 62 | semicircle/1 63 | semicircle/1 64 | semicircle/1 65 | semicircle/1 66 | semicircle/1 67 | semicircle/1 68 | semicircle/1 69 | semicircle/3 70 | semicircle/2 71 | semicircle/1 72 | semicircle/1 73 | 74 | semicircle/3 75 | semicircle/2 76 | semicircle/1 77 | semicircle/1 78 | semicircle/1 79 | semicircle/1 80 | semicircle/1 81 | semicircle/1 82 | semicircle/1 83 | semicircle/1 84 | semicircle/1 85 | semicircle/1 86 | semicircle/1 87 | semicircle/1 88 | semicircle/1 89 | semicircle/1 90 | --- 91 | semicircle/3 92 | semicircle/2 93 | semicircle/1 94 | semicircle/1 95 | semicircle/1 96 | semicircle/1 97 | semicircle/1 98 | semicircle/1 99 | semicircle/1 100 | semicircle/1 101 | semicircle/1 102 | semicircle/1 103 | semicircle/1 104 | semicircle/1 105 | semicircle/1 106 | semicircle/1 107 | 108 | semicircle/3 109 | semicircle/2 110 | semicircle/1 111 | semicircle/1 112 | semicircle/1 113 | semicircle/1 114 | semicircle/1 115 | semicircle/1 116 | semicircle/1 117 | semicircle/1 118 | semicircle/1 119 | semicircle/1 120 | semicircle/1 121 | semicircle/1 122 | semicircle/1 123 | semicircle/1 124 | --- 125 | semicircle/3 126 | semicircle/2 127 | semicircle/1 128 | semicircle/1 129 | semicircle/1 130 | semicircle/1 131 | semicircle/1 132 | semicircle/1 133 | semicircle/1 134 | semicircle/1 135 | semicircle/1 136 | semicircle/1 137 | semicircle/3 138 | semicircle/2 139 | semicircle/1 140 | semicircle/1 141 | 142 | semicircle/3 143 | semicircle/2 144 | semicircle/1 145 | semicircle/1 146 | semicircle/1 147 | semicircle/1 148 | semicircle/1 149 | semicircle/1 150 | semicircle/1 151 | semicircle/1 152 | semicircle/1 153 | semicircle/1 154 | semicircle/1 155 | semicircle/1 156 | semicircle/1 157 | semicircle/1 158 | --- 159 | semicircle/3 160 | semicircle/2 161 | semicircle/1 162 | semicircle/1 163 | semicircle/1 164 | semicircle/1 165 | semicircle/1 166 | semicircle/1 167 | semicircle/1 168 | semicircle/1 169 | semicircle/1 170 | semicircle/1 171 | semicircle/1 172 | semicircle/1 173 | semicircle/1 174 | semicircle/1 175 | 176 | semicircle/3 177 | semicircle/2 178 | semicircle/1 179 | semicircle/1 180 | semicircle/1 181 | semicircle/1 182 | semicircle/1 183 | semicircle/1 184 | semicircle/1 185 | semicircle/1 186 | semicircle/1 187 | semicircle/1 188 | semicircle/1 189 | semicircle/1 190 | semicircle/1 191 | semicircle/1 192 | --- 193 | semicircle/3 194 | semicircle/2 195 | semicircle/1 196 | semicircle/1 197 | semicircle/1 198 | semicircle/1 199 | semicircle/1 200 | semicircle/1 201 | semicircle/1 202 | semicircle/1 203 | semicircle/1 204 | semicircle/1 205 | semicircle/3 206 | semicircle/2 207 | semicircle/1 208 | semicircle/1 209 | 210 | semicircle/3 211 | semicircle/2 212 | semicircle/1 213 | semicircle/1 214 | semicircle/1 215 | semicircle/1 216 | semicircle/1 217 | semicircle/1 218 | semicircle/1 219 | semicircle/1 220 | semicircle/1 221 | semicircle/1 222 | semicircle/1 223 | semicircle/1 224 | semicircle/1 225 | semicircle/1 226 | --- 227 | semicircle/3 228 | semicircle/2 229 | semicircle/1 230 | semicircle/1 231 | semicircle/1 232 | semicircle/1 233 | semicircle/1 234 | semicircle/1 235 | semicircle/1 236 | semicircle/1 237 | semicircle/1 238 | semicircle/1 239 | semicircle/1 240 | semicircle/1 241 | semicircle/1 242 | semicircle/1 243 | 244 | semicircle/3 245 | semicircle/2 246 | semicircle/1 247 | semicircle/1 248 | semicircle/1 249 | semicircle/1 250 | semicircle/1 251 | semicircle/1 252 | semicircle/1 253 | semicircle/1 254 | semicircle/1 255 | semicircle/1 256 | semicircle/1 257 | semicircle/1 258 | semicircle/1 259 | semicircle/1 260 | --- 261 | semicircle/3 262 | semicircle/2 263 | semicircle/1 264 | semicircle/1 265 | semicircle/1 266 | semicircle/1 267 | semicircle/1 268 | semicircle/1 269 | semicircle/1 270 | semicircle/1 271 | semicircle/1 272 | semicircle/1 273 | semicircle/3 274 | semicircle/2 275 | semicircle/1 276 | semicircle/1 277 | 278 | semicircle/3 279 | semicircle/2 280 | semicircle/1 281 | semicircle/1 282 | semicircle/1 283 | semicircle/1 284 | semicircle/1 285 | semicircle/1 286 | semicircle/1 287 | semicircle/1 288 | semicircle/1 289 | semicircle/1 290 | semicircle/1 291 | semicircle/1 292 | semicircle/1 293 | semicircle/1 294 | --- 295 | // A 296 | 297 | semicircle/3 298 | semicircle/2 299 | semicircle/1 300 | semicircle/1 301 | semicircle/1 302 | semicircle/1 303 | semicircle/1 304 | semicircle/1 305 | semicircle/1 306 | semicircle/1 307 | semicircle/1 308 | semicircle/1 309 | semicircle/1 310 | semicircle/1 311 | semicircle/1 312 | semicircle/1 313 | 314 | semicircle/3 315 | semicircle/2 316 | semicircle/1 317 | semicircle/1 318 | semicircle/1 319 | semicircle/1 320 | semicircle/1 321 | semicircle/1 322 | semicircle/1 323 | semicircle/1 324 | semicircle/1 325 | semicircle/1 326 | semicircle/1 327 | semicircle/1 328 | semicircle/1 329 | semicircle/1 330 | --- 331 | semicircle/3 332 | semicircle/2 333 | semicircle/1 334 | semicircle/1 335 | semicircle/1 336 | semicircle/1 337 | semicircle/1 338 | semicircle/1 339 | semicircle/1 340 | semicircle/1 341 | semicircle/1 342 | semicircle/1 343 | semicircle/3 344 | semicircle/2 345 | semicircle/1 346 | semicircle/1 347 | 348 | semicircle/3 349 | semicircle/2 350 | semicircle/1 351 | semicircle/1 352 | semicircle/1 353 | semicircle/1 354 | semicircle/1 355 | semicircle/1 356 | semicircle/1 357 | semicircle/1 358 | semicircle/1 359 | semicircle/1 360 | semicircle/1 361 | semicircle/1 362 | semicircle/1 363 | semicircle/1 364 | --- 365 | semicircle/3 366 | semicircle/2 367 | semicircle/1 368 | semicircle/1 369 | semicircle/1 370 | semicircle/1 371 | semicircle/1 372 | semicircle/1 373 | semicircle/1 374 | semicircle/1 375 | semicircle/1 376 | semicircle/1 377 | semicircle/1 378 | semicircle/1 379 | semicircle/1 380 | semicircle/1 381 | 382 | semicircle/3 383 | semicircle/2 384 | semicircle/1 385 | semicircle/1 386 | semicircle/1 387 | semicircle/1 388 | semicircle/1 389 | semicircle/1 390 | semicircle/1 391 | semicircle/1 392 | semicircle/1 393 | semicircle/1 394 | semicircle/1 395 | semicircle/1 396 | semicircle/1 397 | semicircle/1 398 | --- 399 | semicircle/3 400 | semicircle/2 401 | semicircle/1 402 | semicircle/1 403 | semicircle/1 404 | semicircle/1 405 | semicircle/1 406 | semicircle/1 407 | semicircle/1 408 | semicircle/1 409 | semicircle/1 410 | semicircle/1 411 | semicircle/3 412 | semicircle/2 413 | semicircle/1 414 | semicircle/1 415 | 416 | semicircle/3 417 | semicircle/2 418 | semicircle/1 419 | semicircle/1 420 | semicircle/1 421 | semicircle/1 422 | semicircle/1 423 | semicircle/1 424 | semicircle/1 425 | semicircle/1 426 | semicircle/1 427 | semicircle/1 428 | semicircle/1 429 | semicircle/1 430 | semicircle/1 431 | semicircle/1 432 | --- 433 | semicircle/3 434 | semicircle/2 435 | semicircle/1 436 | semicircle/1 437 | semicircle/1 438 | semicircle/1 439 | semicircle/1 440 | semicircle/1 441 | semicircle/1 442 | semicircle/1 443 | semicircle/1 444 | semicircle/1 445 | semicircle/1 446 | semicircle/1 447 | semicircle/1 448 | semicircle/1 449 | 450 | semicircle/3 451 | semicircle/2 452 | semicircle/1 453 | semicircle/1 454 | semicircle/1 455 | semicircle/1 456 | semicircle/1 457 | semicircle/1 458 | semicircle/1 459 | semicircle/1 460 | semicircle/1 461 | semicircle/1 462 | semicircle/1 463 | semicircle/1 464 | semicircle/1 465 | semicircle/1 466 | --- 467 | semicircle/3 468 | semicircle/2 469 | semicircle/1 470 | semicircle/1 471 | semicircle/1 472 | semicircle/1 473 | semicircle/1 474 | semicircle/1 475 | semicircle/1 476 | semicircle/1 477 | semicircle/1 478 | semicircle/1 479 | semicircle/3 480 | semicircle/2 481 | semicircle/1 482 | semicircle/1 483 | 484 | semicircle/3 485 | semicircle/2 486 | semicircle/1 487 | semicircle/1 488 | semicircle/1 489 | semicircle/1 490 | semicircle/1 491 | semicircle/1 492 | semicircle/1 493 | semicircle/1 494 | semicircle/1 495 | semicircle/1 496 | semicircle/1 497 | semicircle/1 498 | semicircle/1 499 | semicircle/1 500 | --- 501 | semicircle/3 502 | semicircle/2 503 | semicircle/1 504 | semicircle/1 505 | semicircle/1 506 | semicircle/1 507 | semicircle/1 508 | semicircle/1 509 | semicircle/1 510 | semicircle/1 511 | semicircle/1 512 | semicircle/1 513 | semicircle/1 514 | semicircle/1 515 | semicircle/1 516 | semicircle/1 517 | 518 | semicircle/3 519 | semicircle/2 520 | semicircle/1 521 | semicircle/1 522 | semicircle/1 523 | semicircle/1 524 | semicircle/1 525 | semicircle/1 526 | semicircle/1 527 | semicircle/1 528 | semicircle/1 529 | semicircle/1 530 | semicircle/1 531 | semicircle/1 532 | semicircle/1 533 | semicircle/1 534 | --- 535 | semicircle/3 536 | semicircle/2 537 | semicircle/1 538 | semicircle/1 539 | semicircle/1 540 | semicircle/1 541 | semicircle/1 542 | semicircle/1 543 | semicircle/1 544 | semicircle/1 545 | semicircle/1 546 | semicircle/1 547 | semicircle/3 548 | semicircle/2 549 | semicircle/1 550 | semicircle/1 551 | 552 | semicircle/3 553 | semicircle/2 554 | semicircle/1 555 | semicircle/1 556 | semicircle/1 557 | semicircle/1 558 | semicircle/1 559 | semicircle/1 560 | semicircle/1 561 | semicircle/1 562 | semicircle/1 563 | semicircle/1 564 | semicircle/1 565 | semicircle/1 566 | semicircle/1 567 | semicircle/1 568 | --- 569 | // A2 570 | 571 | semicircle/3 572 | semicircle/2 573 | semicircle/1 574 | semicircle/1 575 | semicircle/1 576 | semicircle/1 577 | semicircle/1 578 | semicircle/1 579 | semicircle/1 580 | semicircle/1 581 | semicircle/1 582 | semicircle/1 583 | semicircle/1 584 | semicircle/1 585 | semicircle/1 586 | semicircle/1 587 | 588 | semicircle/3 589 | semicircle/2 590 | semicircle/1 591 | semicircle/1 592 | semicircle/1 593 | semicircle/1 594 | semicircle/1 595 | semicircle/1 596 | semicircle/1 597 | semicircle/1 598 | semicircle/1 599 | semicircle/1 600 | semicircle/1 601 | semicircle/1 602 | semicircle/1 603 | semicircle/1 604 | --- 605 | semicircle/3 606 | semicircle/2 607 | semicircle/1 608 | semicircle/1 609 | semicircle/1 610 | semicircle/1 611 | semicircle/1 612 | semicircle/1 613 | semicircle/1 614 | semicircle/1 615 | semicircle/1 616 | semicircle/1 617 | semicircle/3 618 | semicircle/2 619 | semicircle/1 620 | semicircle/1 621 | 622 | semicircle/3 623 | semicircle/2 624 | semicircle/1 625 | semicircle/1 626 | semicircle/1 627 | semicircle/1 628 | semicircle/1 629 | semicircle/1 630 | semicircle/1 631 | semicircle/1 632 | semicircle/1 633 | semicircle/1 634 | semicircle/1 635 | semicircle/1 636 | semicircle/1 637 | semicircle/1 638 | --- 639 | semicircle/3 640 | semicircle/2 641 | semicircle/1 642 | semicircle/1 643 | semicircle/1 644 | semicircle/1 645 | semicircle/1 646 | semicircle/1 647 | semicircle/1 648 | semicircle/1 649 | semicircle/1 650 | semicircle/1 651 | semicircle/1 652 | semicircle/1 653 | semicircle/1 654 | semicircle/1 655 | 656 | semicircle/3 657 | semicircle/2 658 | semicircle/1 659 | semicircle/1 660 | semicircle/1 661 | semicircle/1 662 | semicircle/1 663 | semicircle/1 664 | semicircle/1 665 | semicircle/1 666 | semicircle/1 667 | semicircle/1 668 | semicircle/1 669 | semicircle/1 670 | semicircle/1 671 | semicircle/1 672 | --- 673 | semicircle/3 674 | semicircle/2 675 | semicircle/1 676 | semicircle/1 677 | semicircle/1 678 | semicircle/1 679 | semicircle/1 680 | semicircle/1 681 | semicircle/1 682 | semicircle/1 683 | semicircle/1 684 | semicircle/1 685 | semicircle/3 686 | semicircle/2 687 | semicircle/1 688 | semicircle/1 689 | 690 | semicircle/3 691 | semicircle/2 692 | semicircle/1 693 | semicircle/1 694 | semicircle/1 695 | semicircle/1 696 | semicircle/1 697 | semicircle/1 698 | semicircle/1 699 | semicircle/1 700 | semicircle/1 701 | semicircle/1 702 | semicircle/1 703 | semicircle/1 704 | semicircle/1 705 | semicircle/1 706 | --- 707 | semicircle/3 708 | semicircle/2 709 | semicircle/1 710 | semicircle/1 711 | semicircle/1 712 | semicircle/1 713 | semicircle/1 714 | semicircle/1 715 | semicircle/1 716 | semicircle/1 717 | semicircle/1 718 | semicircle/1 719 | semicircle/1 720 | semicircle/1 721 | semicircle/1 722 | semicircle/1 723 | 724 | semicircle/3 725 | semicircle/2 726 | semicircle/1 727 | semicircle/1 728 | semicircle/1 729 | semicircle/1 730 | semicircle/1 731 | semicircle/1 732 | semicircle/1 733 | semicircle/1 734 | semicircle/1 735 | semicircle/1 736 | semicircle/1 737 | semicircle/1 738 | semicircle/1 739 | semicircle/1 740 | --- 741 | semicircle/3 742 | semicircle/2 743 | semicircle/1 744 | semicircle/1 745 | semicircle/1 746 | semicircle/1 747 | semicircle/1 748 | semicircle/1 749 | semicircle/1 750 | semicircle/1 751 | semicircle/1 752 | semicircle/1 753 | semicircle/3 754 | semicircle/2 755 | semicircle/1 756 | semicircle/1 757 | 758 | semicircle/3 759 | semicircle/2 760 | semicircle/1 761 | semicircle/1 762 | semicircle/1 763 | semicircle/1 764 | semicircle/1 765 | semicircle/1 766 | semicircle/1 767 | semicircle/1 768 | semicircle/1 769 | semicircle/1 770 | semicircle/1 771 | semicircle/1 772 | semicircle/1 773 | semicircle/1 774 | --- 775 | semicircle/3 776 | semicircle/2 777 | semicircle/1 778 | semicircle/1 779 | semicircle/1 780 | semicircle/1 781 | semicircle/1 782 | semicircle/1 783 | semicircle/1 784 | semicircle/1 785 | semicircle/1 786 | semicircle/1 787 | semicircle/1 788 | semicircle/1 789 | semicircle/1 790 | semicircle/1 791 | 792 | semicircle/3 793 | semicircle/2 794 | semicircle/1 795 | semicircle/1 796 | semicircle/1 797 | semicircle/1 798 | semicircle/1 799 | semicircle/1 800 | semicircle/1 801 | semicircle/1 802 | semicircle/1 803 | semicircle/1 804 | semicircle/1 805 | semicircle/1 806 | semicircle/1 807 | semicircle/1 808 | --- 809 | semicircle/3 810 | semicircle/2 811 | semicircle/1 812 | semicircle/1 813 | semicircle/1 814 | semicircle/1 815 | semicircle/1 816 | semicircle/1 817 | semicircle/1 818 | semicircle/1 819 | semicircle/1 820 | semicircle/1 821 | semicircle/1 822 | semicircle/1 823 | semicircle/1 824 | semicircle/1 825 | 826 | semicircle/3 827 | semicircle/2 828 | semicircle/1 829 | semicircle/1 830 | "" 831 | "" 832 | "" 833 | "" 834 | "" 835 | "" 836 | "" 837 | "" 838 | "" 839 | "" 840 | "" 841 | "" 842 | --- 843 | // sabi 844 | 845 | semicircle/3 846 | semicircle/2 847 | semicircle/1 848 | semicircle/1 849 | semicircle/1 850 | semicircle/1 851 | semicircle/1 852 | semicircle/1 853 | semicircle/1 854 | semicircle/1 855 | semicircle/1 856 | semicircle/1 857 | semicircle/1 858 | semicircle/1 859 | semicircle/1 860 | semicircle/1 861 | 862 | semicircle/3 863 | semicircle/2 864 | semicircle/1 865 | semicircle/1 866 | semicircle/1 867 | semicircle/1 868 | semicircle/1 869 | semicircle/1 870 | semicircle/1 871 | semicircle/1 872 | semicircle/1 873 | semicircle/1 874 | semicircle/1 875 | semicircle/1 876 | semicircle/1 877 | semicircle/1 878 | --- 879 | semicircle/3 880 | semicircle/2 881 | semicircle/1 882 | semicircle/1 883 | semicircle/1 884 | semicircle/1 885 | semicircle/1 886 | semicircle/1 887 | semicircle/1 888 | semicircle/1 889 | semicircle/1 890 | semicircle/1 891 | semicircle/3 892 | semicircle/2 893 | semicircle/1 894 | semicircle/1 895 | 896 | semicircle/3 897 | semicircle/2 898 | semicircle/1 899 | semicircle/1 900 | semicircle/1 901 | semicircle/1 902 | semicircle/1 903 | semicircle/1 904 | semicircle/1 905 | semicircle/1 906 | semicircle/1 907 | semicircle/1 908 | semicircle/1 909 | semicircle/1 910 | semicircle/1 911 | semicircle/1 912 | --- 913 | semicircle/3 914 | semicircle/2 915 | semicircle/1 916 | semicircle/1 917 | semicircle/1 918 | semicircle/1 919 | semicircle/1 920 | semicircle/1 921 | semicircle/1 922 | semicircle/1 923 | semicircle/1 924 | semicircle/1 925 | semicircle/1 926 | semicircle/1 927 | semicircle/1 928 | semicircle/1 929 | 930 | semicircle/3 931 | semicircle/2 932 | semicircle/1 933 | semicircle/1 934 | semicircle/1 935 | semicircle/1 936 | semicircle/1 937 | semicircle/1 938 | semicircle/1 939 | semicircle/1 940 | semicircle/1 941 | semicircle/1 942 | semicircle/1 943 | semicircle/1 944 | semicircle/1 945 | semicircle/1 946 | --- 947 | semicircle/3 948 | semicircle/2 949 | semicircle/1 950 | semicircle/1 951 | semicircle/1 952 | semicircle/1 953 | semicircle/1 954 | semicircle/1 955 | semicircle/1 956 | semicircle/1 957 | semicircle/1 958 | semicircle/1 959 | semicircle/3 960 | semicircle/2 961 | semicircle/1 962 | semicircle/1 963 | 964 | semicircle/3 965 | semicircle/2 966 | semicircle/1 967 | semicircle/1 968 | semicircle/1 969 | semicircle/1 970 | semicircle/1 971 | semicircle/1 972 | semicircle/1 973 | semicircle/1 974 | semicircle/1 975 | semicircle/1 976 | semicircle/1 977 | semicircle/1 978 | semicircle/1 979 | semicircle/1 980 | --- 981 | semicircle/3 982 | semicircle/2 983 | semicircle/1 984 | semicircle/1 985 | semicircle/1 986 | semicircle/1 987 | semicircle/1 988 | semicircle/1 989 | semicircle/1 990 | semicircle/1 991 | semicircle/1 992 | semicircle/1 993 | semicircle/1 994 | semicircle/1 995 | semicircle/1 996 | semicircle/1 997 | 998 | semicircle/3 999 | semicircle/2 1000 | semicircle/1 1001 | semicircle/1 1002 | semicircle/1 1003 | semicircle/1 1004 | semicircle/1 1005 | semicircle/1 1006 | semicircle/1 1007 | semicircle/1 1008 | semicircle/1 1009 | semicircle/1 1010 | semicircle/1 1011 | semicircle/1 1012 | semicircle/1 1013 | semicircle/1 1014 | --- 1015 | semicircle/3 1016 | semicircle/2 1017 | semicircle/1 1018 | semicircle/1 1019 | semicircle/1 1020 | semicircle/1 1021 | semicircle/1 1022 | semicircle/1 1023 | semicircle/1 1024 | semicircle/1 1025 | semicircle/1 1026 | semicircle/1 1027 | semicircle/3 1028 | semicircle/2 1029 | semicircle/1 1030 | semicircle/1 1031 | 1032 | semicircle/3 1033 | semicircle/2 1034 | semicircle/1 1035 | semicircle/1 1036 | semicircle/1 1037 | semicircle/1 1038 | semicircle/1 1039 | semicircle/1 1040 | semicircle/1 1041 | semicircle/1 1042 | semicircle/1 1043 | semicircle/1 1044 | semicircle/1 1045 | semicircle/1 1046 | semicircle/1 1047 | semicircle/1 1048 | --- 1049 | semicircle/3 1050 | semicircle/2 1051 | semicircle/1 1052 | semicircle/1 1053 | semicircle/1 1054 | semicircle/1 1055 | semicircle/1 1056 | semicircle/1 1057 | semicircle/1 1058 | semicircle/1 1059 | semicircle/1 1060 | semicircle/1 1061 | semicircle/1 1062 | semicircle/1 1063 | semicircle/1 1064 | semicircle/1 1065 | 1066 | semicircle/3 1067 | semicircle/2 1068 | semicircle/1 1069 | semicircle/1 1070 | semicircle/1 1071 | semicircle/1 1072 | semicircle/1 1073 | semicircle/1 1074 | semicircle/1 1075 | semicircle/1 1076 | semicircle/1 1077 | semicircle/1 1078 | semicircle/1 1079 | semicircle/1 1080 | semicircle/1 1081 | semicircle/1 1082 | --- 1083 | semicircle/3 1084 | semicircle/2 1085 | semicircle/1 1086 | semicircle/1 1087 | semicircle/1 1088 | semicircle/1 1089 | semicircle/1 1090 | semicircle/1 1091 | semicircle/1 1092 | semicircle/1 1093 | semicircle/1 1094 | semicircle/1 1095 | semicircle/3 1096 | semicircle/2 1097 | semicircle/1 1098 | semicircle/1 1099 | 1100 | semicircle/3 1101 | semicircle/2 1102 | semicircle/1 1103 | semicircle/1 1104 | semicircle/1 1105 | semicircle/1 1106 | semicircle/1 1107 | semicircle/1 1108 | "" 1109 | "" 1110 | "" 1111 | "" 1112 | "" 1113 | "" 1114 | "" 1115 | "" 1116 | --- 1117 | // sabi2 1118 | 1119 | semicircle/3 1120 | semicircle/2 1121 | semicircle/1 1122 | semicircle/1 1123 | semicircle/1 1124 | semicircle/1 1125 | semicircle/1 1126 | semicircle/1 1127 | semicircle/1 1128 | semicircle/1 1129 | semicircle/1 1130 | semicircle/1 1131 | semicircle/1 1132 | semicircle/1 1133 | semicircle/1 1134 | semicircle/1 1135 | 1136 | semicircle/3 1137 | semicircle/2 1138 | semicircle/1 1139 | semicircle/1 1140 | semicircle/1 1141 | semicircle/1 1142 | semicircle/1 1143 | semicircle/1 1144 | semicircle/1 1145 | semicircle/1 1146 | semicircle/1 1147 | semicircle/1 1148 | semicircle/1 1149 | semicircle/1 1150 | semicircle/1 1151 | semicircle/1 1152 | --- 1153 | semicircle/3 1154 | semicircle/2 1155 | semicircle/1 1156 | semicircle/1 1157 | semicircle/1 1158 | semicircle/1 1159 | semicircle/1 1160 | semicircle/1 1161 | semicircle/1 1162 | semicircle/1 1163 | semicircle/1 1164 | semicircle/1 1165 | semicircle/3 1166 | semicircle/2 1167 | semicircle/1 1168 | semicircle/1 1169 | 1170 | semicircle/3 1171 | semicircle/2 1172 | semicircle/1 1173 | semicircle/1 1174 | semicircle/1 1175 | semicircle/1 1176 | semicircle/1 1177 | semicircle/1 1178 | semicircle/1 1179 | semicircle/1 1180 | semicircle/1 1181 | semicircle/1 1182 | semicircle/1 1183 | semicircle/1 1184 | semicircle/1 1185 | semicircle/1 1186 | --- 1187 | semicircle/3 1188 | semicircle/2 1189 | semicircle/1 1190 | semicircle/1 1191 | semicircle/1 1192 | semicircle/1 1193 | semicircle/1 1194 | semicircle/1 1195 | semicircle/1 1196 | semicircle/1 1197 | semicircle/1 1198 | semicircle/1 1199 | semicircle/1 1200 | semicircle/1 1201 | semicircle/1 1202 | semicircle/1 1203 | 1204 | semicircle/3 1205 | semicircle/2 1206 | semicircle/1 1207 | semicircle/1 1208 | semicircle/1 1209 | semicircle/1 1210 | semicircle/1 1211 | semicircle/1 1212 | semicircle/1 1213 | semicircle/1 1214 | semicircle/1 1215 | semicircle/1 1216 | semicircle/1 1217 | semicircle/1 1218 | semicircle/1 1219 | semicircle/1 1220 | --- 1221 | semicircle/3 1222 | semicircle/2 1223 | semicircle/1 1224 | semicircle/1 1225 | semicircle/1 1226 | semicircle/1 1227 | semicircle/1 1228 | semicircle/1 1229 | semicircle/1 1230 | semicircle/1 1231 | semicircle/1 1232 | semicircle/1 1233 | semicircle/3 1234 | semicircle/2 1235 | semicircle/1 1236 | semicircle/1 1237 | 1238 | semicircle/3 1239 | semicircle/2 1240 | semicircle/1 1241 | semicircle/1 1242 | semicircle/1 1243 | semicircle/1 1244 | semicircle/1 1245 | semicircle/1 1246 | semicircle/1 1247 | semicircle/1 1248 | semicircle/1 1249 | semicircle/1 1250 | semicircle/1 1251 | semicircle/1 1252 | semicircle/1 1253 | semicircle/1 1254 | --- 1255 | semicircle/3 1256 | semicircle/2 1257 | semicircle/1 1258 | semicircle/1 1259 | semicircle/1 1260 | semicircle/1 1261 | semicircle/1 1262 | semicircle/1 1263 | semicircle/1 1264 | semicircle/1 1265 | semicircle/1 1266 | semicircle/1 1267 | semicircle/1 1268 | semicircle/1 1269 | semicircle/1 1270 | semicircle/1 1271 | 1272 | semicircle/3 1273 | semicircle/2 1274 | semicircle/1 1275 | semicircle/1 1276 | semicircle/1 1277 | semicircle/1 1278 | semicircle/1 1279 | semicircle/1 1280 | semicircle/1 1281 | semicircle/1 1282 | semicircle/1 1283 | semicircle/1 1284 | semicircle/1 1285 | semicircle/1 1286 | semicircle/1 1287 | semicircle/1 1288 | --- 1289 | semicircle/3 1290 | semicircle/2 1291 | semicircle/1 1292 | semicircle/1 1293 | semicircle/1 1294 | semicircle/1 1295 | semicircle/1 1296 | semicircle/1 1297 | semicircle/1 1298 | semicircle/1 1299 | semicircle/1 1300 | semicircle/1 1301 | semicircle/3 1302 | semicircle/2 1303 | semicircle/1 1304 | semicircle/1 1305 | 1306 | semicircle/3 1307 | semicircle/2 1308 | semicircle/1 1309 | semicircle/1 1310 | semicircle/1 1311 | semicircle/1 1312 | semicircle/1 1313 | semicircle/1 1314 | semicircle/1 1315 | semicircle/1 1316 | semicircle/1 1317 | semicircle/1 1318 | semicircle/1 1319 | semicircle/1 1320 | semicircle/1 1321 | semicircle/1 1322 | --- 1323 | semicircle/3 1324 | semicircle/2 1325 | semicircle/1 1326 | semicircle/1 1327 | semicircle/1 1328 | semicircle/1 1329 | semicircle/1 1330 | semicircle/1 1331 | semicircle/1 1332 | semicircle/1 1333 | semicircle/1 1334 | semicircle/1 1335 | semicircle/1 1336 | semicircle/1 1337 | semicircle/1 1338 | semicircle/1 1339 | 1340 | semicircle/3 1341 | semicircle/2 1342 | semicircle/1 1343 | semicircle/1 1344 | semicircle/1 1345 | semicircle/1 1346 | semicircle/1 1347 | semicircle/1 1348 | semicircle/1 1349 | semicircle/1 1350 | semicircle/1 1351 | semicircle/1 1352 | semicircle/1 1353 | semicircle/1 1354 | semicircle/1 1355 | semicircle/1 1356 | --- 1357 | semicircle/3 1358 | semicircle/2 1359 | semicircle/1 1360 | semicircle/1 1361 | semicircle/1 1362 | semicircle/1 1363 | semicircle/1 1364 | semicircle/1 1365 | semicircle/1 1366 | semicircle/1 1367 | semicircle/1 1368 | semicircle/1 1369 | semicircle/3 1370 | semicircle/2 1371 | semicircle/1 1372 | semicircle/1 1373 | 1374 | semicircle/3 1375 | semicircle/2 1376 | semicircle/1 1377 | semicircle/1 1378 | semicircle/1 1379 | semicircle/1 1380 | semicircle/1 1381 | semicircle/1 1382 | "" 1383 | "" 1384 | "" 1385 | "" 1386 | "" 1387 | "" 1388 | "" 1389 | "" 1390 | --- 1391 | // outro 1392 | 1393 | semicircle/3 1394 | semicircle/2 1395 | semicircle/1 1396 | semicircle/1 1397 | semicircle/1 1398 | semicircle/1 1399 | semicircle/1 1400 | semicircle/1 1401 | semicircle/1 1402 | semicircle/1 1403 | semicircle/1 1404 | semicircle/1 1405 | semicircle/1 1406 | semicircle/1 1407 | semicircle/1 1408 | semicircle/1 1409 | 1410 | semicircle/3 1411 | semicircle/2 1412 | semicircle/1 1413 | semicircle/1 1414 | semicircle/1 1415 | semicircle/1 1416 | semicircle/1 1417 | semicircle/1 1418 | semicircle/1 1419 | semicircle/1 1420 | semicircle/1 1421 | semicircle/1 1422 | semicircle/1 1423 | semicircle/1 1424 | semicircle/1 1425 | semicircle/1 1426 | --- 1427 | semicircle/3 1428 | semicircle/2 1429 | semicircle/1 1430 | semicircle/1 1431 | semicircle/1 1432 | semicircle/1 1433 | semicircle/1 1434 | semicircle/1 1435 | semicircle/1 1436 | semicircle/1 1437 | semicircle/1 1438 | semicircle/1 1439 | semicircle/3 1440 | semicircle/2 1441 | semicircle/1 1442 | semicircle/1 1443 | 1444 | semicircle/3 1445 | semicircle/2 1446 | semicircle/1 1447 | semicircle/1 1448 | semicircle/1 1449 | semicircle/1 1450 | semicircle/1 1451 | semicircle/1 1452 | semicircle/1 1453 | semicircle/1 1454 | semicircle/1 1455 | semicircle/1 1456 | semicircle/1 1457 | semicircle/1 1458 | semicircle/1 1459 | semicircle/1 1460 | --- 1461 | semicircle/3 1462 | semicircle/2 1463 | semicircle/1 1464 | semicircle/1 1465 | semicircle/1 1466 | semicircle/1 1467 | semicircle/1 1468 | semicircle/1 1469 | semicircle/1 1470 | semicircle/1 1471 | semicircle/1 1472 | semicircle/1 1473 | semicircle/1 1474 | semicircle/1 1475 | semicircle/1 1476 | semicircle/1 1477 | 1478 | semicircle/3 1479 | semicircle/2 1480 | semicircle/1 1481 | semicircle/1 1482 | semicircle/1 1483 | semicircle/1 1484 | semicircle/1 1485 | semicircle/1 1486 | semicircle/1 1487 | semicircle/1 1488 | semicircle/1 1489 | semicircle/1 1490 | semicircle/1 1491 | semicircle/1 1492 | semicircle/1 1493 | semicircle/1 1494 | --- 1495 | semicircle/3 1496 | semicircle/2 1497 | semicircle/1 1498 | semicircle/1 1499 | semicircle/1 1500 | semicircle/1 1501 | semicircle/1 1502 | semicircle/1 1503 | semicircle/1 1504 | semicircle/1 1505 | semicircle/1 1506 | semicircle/1 1507 | semicircle/3 1508 | semicircle/2 1509 | semicircle/1 1510 | semicircle/1 1511 | 1512 | semicircle/3 1513 | semicircle/2 1514 | semicircle/1 1515 | semicircle/1 1516 | semicircle/1 1517 | semicircle/1 1518 | semicircle/1 1519 | semicircle/1 1520 | semicircle/1 1521 | semicircle/1 1522 | semicircle/1 1523 | semicircle/1 1524 | semicircle/1 1525 | semicircle/1 1526 | semicircle/1 1527 | semicircle/1 1528 | --- 1529 | semicircle/3 1530 | semicircle/2 1531 | semicircle/1 1532 | semicircle/1 1533 | semicircle/1 1534 | semicircle/1 1535 | semicircle/1 1536 | semicircle/1 1537 | semicircle/1 1538 | semicircle/1 1539 | semicircle/1 1540 | semicircle/1 1541 | semicircle/1 1542 | semicircle/1 1543 | semicircle/1 1544 | semicircle/1 1545 | 1546 | semicircle/3 1547 | semicircle/2 1548 | semicircle/1 1549 | semicircle/1 1550 | semicircle/1 1551 | semicircle/1 1552 | semicircle/1 1553 | semicircle/1 1554 | semicircle/1 1555 | semicircle/1 1556 | semicircle/1 1557 | semicircle/1 1558 | semicircle/1 1559 | semicircle/1 1560 | semicircle/1 1561 | semicircle/1 1562 | --- 1563 | semicircle/3 1564 | semicircle/2 1565 | semicircle/1 1566 | semicircle/1 1567 | semicircle/1 1568 | semicircle/1 1569 | semicircle/1 1570 | semicircle/1 1571 | semicircle/1 1572 | semicircle/1 1573 | semicircle/1 1574 | semicircle/1 1575 | semicircle/3 1576 | semicircle/2 1577 | semicircle/1 1578 | semicircle/1 1579 | 1580 | semicircle/3 1581 | semicircle/2 1582 | semicircle/1 1583 | semicircle/1 1584 | semicircle/1 1585 | semicircle/1 1586 | semicircle/1 1587 | semicircle/1 1588 | semicircle/1 1589 | semicircle/1 1590 | semicircle/1 1591 | semicircle/1 1592 | semicircle/1 1593 | semicircle/1 1594 | semicircle/1 1595 | semicircle/1 1596 | --- 1597 | semicircle/3 1598 | semicircle/2 1599 | semicircle/1 1600 | semicircle/1 1601 | semicircle/1 1602 | semicircle/1 1603 | semicircle/1 1604 | semicircle/1 1605 | semicircle/1 1606 | semicircle/1 1607 | semicircle/1 1608 | semicircle/1 1609 | semicircle/1 1610 | semicircle/1 1611 | semicircle/1 1612 | semicircle/1 1613 | 1614 | semicircle/3 1615 | semicircle/2 1616 | semicircle/1 1617 | semicircle/1 1618 | semicircle/1 1619 | semicircle/1 1620 | semicircle/1 1621 | semicircle/1 1622 | semicircle/1 1623 | semicircle/1 1624 | semicircle/1 1625 | semicircle/1 1626 | semicircle/1 1627 | semicircle/1 1628 | semicircle/1 1629 | semicircle/1 1630 | --- 1631 | semicircle/3 1632 | semicircle/2 1633 | semicircle/1 1634 | semicircle/1 1635 | semicircle/1 1636 | semicircle/1 1637 | semicircle/1 1638 | semicircle/1 1639 | semicircle/1 1640 | semicircle/1 1641 | semicircle/1 1642 | semicircle/1 1643 | semicircle/3 1644 | semicircle/2 1645 | semicircle/1 1646 | semicircle/1 1647 | 1648 | semicircle/3 1649 | semicircle/2 1650 | semicircle/1 1651 | semicircle/1 1652 | semicircle/1 1653 | semicircle/1 1654 | semicircle/1 1655 | semicircle/1 1656 | semicircle/1 1657 | semicircle/1 1658 | semicircle/1 1659 | semicircle/1 1660 | semicircle/1 1661 | semicircle/1 1662 | semicircle/1 1663 | semicircle/1 1664 | --- 1665 | semicircle/3 1666 | semicircle/2 1667 | semicircle/1 1668 | semicircle/1 1669 | semicircle/1 1670 | semicircle/1 1671 | semicircle/1 1672 | semicircle/1 1673 | semicircle/1 1674 | semicircle/1 1675 | semicircle/1 1676 | semicircle/1 1677 | semicircle/1 1678 | semicircle/1 1679 | semicircle/1 1680 | semicircle/1 1681 | 1682 | semicircle/3 1683 | semicircle/2 1684 | semicircle/1 1685 | semicircle/1 1686 | semicircle/1 1687 | semicircle/1 1688 | semicircle/1 1689 | semicircle/1 1690 | semicircle/1 1691 | semicircle/1 1692 | semicircle/1 1693 | semicircle/1 1694 | semicircle/1 1695 | semicircle/1 1696 | semicircle/1 1697 | semicircle/1 1698 | --- 1699 | semicircle/3 1700 | semicircle/2 1701 | semicircle/1 1702 | semicircle/1 1703 | semicircle/1 1704 | semicircle/1 1705 | semicircle/1 1706 | semicircle/1 1707 | semicircle/1 1708 | semicircle/1 1709 | semicircle/1 1710 | semicircle/1 1711 | semicircle/3 1712 | semicircle/2 1713 | semicircle/1 1714 | semicircle/1 1715 | 1716 | semicircle/3 1717 | semicircle/2 1718 | semicircle/1 1719 | semicircle/1 1720 | semicircle/1 1721 | semicircle/1 1722 | semicircle/1 1723 | semicircle/1 1724 | semicircle/1 1725 | semicircle/1 1726 | semicircle/1 1727 | semicircle/1 1728 | semicircle/1 1729 | semicircle/1 1730 | semicircle/1 1731 | semicircle/1 1732 | --- 1733 | semicircle/3 1734 | semicircle/2 1735 | semicircle/1 1736 | semicircle/1 1737 | semicircle/1 1738 | semicircle/1 1739 | semicircle/1 1740 | semicircle/1 1741 | semicircle/1 1742 | semicircle/1 1743 | semicircle/1 1744 | semicircle/1 1745 | semicircle/1 1746 | semicircle/1 1747 | semicircle/1 1748 | semicircle/1 1749 | 1750 | semicircle/3 1751 | semicircle/2 1752 | semicircle/1 1753 | semicircle/1 1754 | semicircle/1 1755 | semicircle/1 1756 | semicircle/1 1757 | semicircle/1 1758 | semicircle/1 1759 | semicircle/1 1760 | semicircle/1 1761 | semicircle/1 1762 | semicircle/1 1763 | semicircle/1 1764 | semicircle/1 1765 | semicircle/1 1766 | --- 1767 | semicircle/3 1768 | semicircle/2 1769 | semicircle/1 1770 | semicircle/1 1771 | semicircle/1 1772 | semicircle/1 1773 | semicircle/1 1774 | semicircle/1 1775 | semicircle/1 1776 | semicircle/1 1777 | semicircle/1 1778 | semicircle/1 1779 | semicircle/3 1780 | semicircle/2 1781 | semicircle/1 1782 | semicircle/1 1783 | 1784 | semicircle/3 1785 | semicircle/2 1786 | semicircle/1 1787 | semicircle/1 1788 | semicircle/1 1789 | semicircle/1 1790 | semicircle/1 1791 | semicircle/1 1792 | semicircle/1 1793 | semicircle/1 1794 | semicircle/1 1795 | semicircle/1 1796 | semicircle/1 1797 | semicircle/1 1798 | semicircle/1 1799 | semicircle/1 1800 | --- 1801 | semicircle/3 1802 | semicircle/2 1803 | semicircle/1 1804 | semicircle/1 1805 | semicircle/1 1806 | semicircle/1 1807 | semicircle/1 1808 | semicircle/1 1809 | semicircle/1 1810 | semicircle/1 1811 | semicircle/1 1812 | semicircle/1 1813 | semicircle/1 1814 | semicircle/1 1815 | semicircle/1 1816 | semicircle/1 1817 | 1818 | semicircle/3 1819 | semicircle/2 1820 | semicircle/1 1821 | semicircle/1 1822 | semicircle/1 1823 | semicircle/1 1824 | semicircle/1 1825 | semicircle/1 1826 | semicircle/1 1827 | semicircle/1 1828 | semicircle/1 1829 | semicircle/1 1830 | semicircle/1 1831 | semicircle/1 1832 | semicircle/1 1833 | semicircle/1 1834 | --- 1835 | semicircle/3 1836 | semicircle/2 1837 | semicircle/1 1838 | semicircle/1 1839 | semicircle/1 1840 | semicircle/1 1841 | semicircle/1 1842 | semicircle/1 1843 | semicircle/1 1844 | semicircle/1 1845 | semicircle/1 1846 | semicircle/1 1847 | semicircle/3 1848 | semicircle/2 1849 | semicircle/1 1850 | semicircle/1 1851 | 1852 | semicircle/3 1853 | semicircle/2 1854 | semicircle/1 1855 | semicircle/1 1856 | semicircle/1 1857 | semicircle/1 1858 | semicircle/1 1859 | semicircle/1 1860 | semicircle/1 1861 | semicircle/1 1862 | semicircle/1 1863 | semicircle/1 1864 | semicircle/1 1865 | semicircle/1 1866 | semicircle/1 1867 | semicircle/1 1868 | --- 1869 | semicircle/3 1870 | semicircle/2 1871 | semicircle/1 1872 | semicircle/1 1873 | semicircle/1 1874 | semicircle/1 1875 | semicircle/1 1876 | semicircle/1 1877 | semicircle/1 1878 | semicircle/1 1879 | semicircle/1 1880 | semicircle/1 1881 | semicircle/1 1882 | semicircle/1 1883 | semicircle/1 1884 | semicircle/1 1885 | 1886 | semicircle/3 1887 | semicircle/2 1888 | semicircle/1 1889 | semicircle/1 1890 | semicircle/1 1891 | semicircle/1 1892 | semicircle/1 1893 | semicircle/1 1894 | semicircle/1 1895 | semicircle/1 1896 | semicircle/1 1897 | semicircle/1 1898 | semicircle/1 1899 | semicircle/1 1900 | semicircle/1 1901 | semicircle/1 1902 | --- 1903 | semicircle/3 1904 | semicircle/2 1905 | semicircle/1 1906 | semicircle/1 1907 | semicircle/1 1908 | semicircle/1 1909 | semicircle/1 1910 | semicircle/1 1911 | semicircle/1 1912 | semicircle/1 1913 | semicircle/1 1914 | semicircle/1 1915 | semicircle/3 1916 | semicircle/2 1917 | semicircle/1 1918 | semicircle/1 1919 | 1920 | semicircle/3 1921 | semicircle/2 1922 | semicircle/1 1923 | semicircle/1 1924 | "" 1925 | "" 1926 | "" 1927 | "" 1928 | "" 1929 | "" 1930 | "" 1931 | "" 1932 | "" 1933 | "" 1934 | "" 1935 | "" 1936 | -------------------------------------------------------------------------------- /config/config.go: -------------------------------------------------------------------------------- 1 | package config 2 | 3 | const ( 4 | FRAME_RATE = 1.0 / 60 5 | AUDIO_PLAY_BUFSIZE = 4096 6 | ) 7 | -------------------------------------------------------------------------------- /csf/csf.go: -------------------------------------------------------------------------------- 1 | package csf 2 | 3 | import ( 4 | "io/fs" 5 | "math" 6 | 7 | "github.com/gdamore/tcell" 8 | ) 9 | 10 | type CSF struct { 11 | Score Score 12 | } 13 | 14 | // main 15 | func NewCSF(rootFS fs.FS) CSF { 16 | var csf CSF 17 | csf.Score = parseScoreDir(rootFS) 18 | return csf 19 | } 20 | 21 | func (csf CSF) DrawFrame(screen tcell.Screen, musicPlayTimeSec float64) { 22 | var currentPlayedBars = musicPlayTimeSec / (60 / (float64)(csf.Score.Meta.BPM) * 4) 23 | for _, part := range csf.Score.Parts { 24 | var barIndex = int(currentPlayedBars) 25 | if len(part.Bars) <= barIndex { 26 | continue 27 | } 28 | 29 | var bar = part.Bars[barIndex] 30 | if len(bar.Items) == 0 { 31 | continue 32 | } 33 | 34 | var itemIndex = int((float64)(len(bar.Items)) * (currentPlayedBars - math.Floor(currentPlayedBars))) 35 | var item = bar.Items[itemIndex] 36 | SetContentToScreen(screen, item.Position.X, item.Position.Y, []rune(*item.Content)) 37 | } 38 | } 39 | 40 | // utils 41 | func SetContentToScreen(screen tcell.Screen, x int, y int, data []rune) { 42 | var dataLength = len(data) 43 | var currentPosition DisplayPosition = DisplayPosition{0, 0} 44 | for charIndex := 0; charIndex < dataLength; charIndex++ { 45 | if data[charIndex] == '\n' { 46 | currentPosition.Y++ 47 | currentPosition.X = 0 48 | continue 49 | } 50 | if data[charIndex] != ' ' { 51 | screen.SetContent(x+currentPosition.X, y+currentPosition.Y, data[charIndex], nil, tcell.StyleDefault) 52 | } 53 | currentPosition.X++ 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /csf/model.go: -------------------------------------------------------------------------------- 1 | package csf 2 | 3 | type DisplayPosition struct { 4 | X int 5 | Y int 6 | } 7 | 8 | type DisplayItem struct { 9 | Position DisplayPosition 10 | Content *string 11 | } 12 | 13 | type Bar struct { 14 | Items []DisplayItem 15 | } 16 | 17 | type Part struct { 18 | Bars []Bar 19 | Zindex int 20 | } 21 | 22 | type MetaInfo struct { 23 | BPM int `yaml:"BPM"` 24 | AudioFilePath string `yaml:"AudioFilePath"` 25 | AudioOffsetSec float64 `yaml:"AudioOffsetSec"` 26 | } 27 | 28 | type Score struct { 29 | Parts []Part 30 | Meta MetaInfo 31 | } 32 | -------------------------------------------------------------------------------- /csf/parser.go: -------------------------------------------------------------------------------- 1 | package csf 2 | 3 | import ( 4 | "fmt" 5 | "io/fs" 6 | "path/filepath" 7 | "sort" 8 | "strconv" 9 | "strings" 10 | 11 | "github.com/wesovilabs/koazee" 12 | yaml "gopkg.in/yaml.v2" 13 | ) 14 | 15 | type ContentsMap map[string]string 16 | 17 | // parsers 18 | func parseScoreDir(rootFS fs.FS) Score { 19 | //var rootDirPath = rootDir. 20 | var score Score 21 | 22 | // meta 23 | bytes, err := fs.ReadFile(rootFS, "meta.yaml") 24 | if err != nil { 25 | panic(err) 26 | } 27 | score.Meta = parseMetaInfo(bytes) 28 | 29 | // load data items 30 | contentsMap := make(ContentsMap) 31 | dataFilePaths := make([]string, 0) 32 | fs.WalkDir(rootFS, "data", func(path string, d fs.DirEntry, err error) error { 33 | dataFilePaths = append(dataFilePaths, path) 34 | return nil 35 | }) 36 | for _, path := range dataFilePaths { 37 | file, err := fs.Stat(rootFS, path) 38 | if err != nil { 39 | panic(err) 40 | } 41 | if file.IsDir() { 42 | continue 43 | } 44 | 45 | bytes, err := fs.ReadFile(rootFS, path) 46 | var key = strings.Replace(path, "data/", "", -1) 47 | contentsMap[key] = string(bytes) 48 | } 49 | 50 | // parse part file 51 | partFilePaths := make([]string, 0) 52 | fs.WalkDir(rootFS, "scores", func(path string, d fs.DirEntry, err error) error { 53 | if filepath.Ext(path) == ".part" { 54 | partFilePaths = append(partFilePaths, path) 55 | } 56 | return nil 57 | }) 58 | 59 | score.Parts = make([]Part, 0) 60 | for _, path := range partFilePaths { 61 | bytes, err := fs.ReadFile(rootFS, path) 62 | if err != nil { 63 | panic(err) 64 | } 65 | 66 | var part = parsePartFile(bytes, &contentsMap) 67 | score.Parts = append(score.Parts, part) 68 | } 69 | sort.Slice(score.Parts, func(i, j int) bool { 70 | return score.Parts[i].Zindex < score.Parts[j].Zindex 71 | }) 72 | 73 | return score 74 | } 75 | 76 | func parseMetaInfo(metaFileContent []byte) MetaInfo { 77 | var meta MetaInfo 78 | err := yaml.UnmarshalStrict(metaFileContent, &meta) 79 | if err != nil { 80 | panic(fmt.Sprint("invalid meta file: ", err)) 81 | } 82 | 83 | return meta 84 | } 85 | 86 | func parsePartFile(partFileContent []byte, contentsMap *ContentsMap) Part { 87 | var part Part = Part{Bars: make([]Bar, 0), Zindex: 0} 88 | var currentPosition DisplayPosition = DisplayPosition{X: 0, Y: 0} 89 | var flipMode = struct{ vertical bool }{false} 90 | 91 | var bars = strings.Split(string(partFileContent), "---") 92 | for _, barContent := range bars { 93 | part.Bars = append(part.Bars, Bar{Items: make([]DisplayItem, 0)}) 94 | var lines = strings.Split(barContent, "\n") 95 | for _, line := range lines { 96 | if len(line) == 0 { 97 | continue 98 | } 99 | 100 | // interpret line 101 | var contentKey string 102 | switch line[0] { 103 | case '"': 104 | contentKey = line[1 : len(line)-1] 105 | case '#': 106 | var args = strings.Split(line[2:], " ") 107 | switch args[0] { 108 | case "MOVETO": 109 | if len(args) < 3 { 110 | panic("partfile parse error: MOVETO: a few arguments") 111 | } 112 | x, errx := strconv.Atoi(args[1]) 113 | y, erry := strconv.Atoi(args[2]) 114 | if errx != nil || erry != nil { 115 | panic("partfile parse error: MOVETO: invalid syntax") 116 | } 117 | currentPosition.X = x 118 | currentPosition.Y = y 119 | case "ZINDEX": 120 | if len(args) < 2 { 121 | panic("partfile parse error: ZINDEX: a few arguments") 122 | } 123 | zIndex, err := strconv.Atoi(args[1]) 124 | if err != nil { 125 | panic("partfile parse error: ZINDEX: invalid syntax") 126 | } 127 | part.Zindex = zIndex 128 | case "FLIP": 129 | if len(args) < 3 { 130 | panic("partfile parse error: FLIP: a few arguments") 131 | } 132 | switch args[1] { 133 | case "vertical": 134 | flipMode.vertical = args[2] == "on" 135 | } 136 | } 137 | continue 138 | case '/': 139 | continue 140 | default: 141 | contentKey = line 142 | } 143 | 144 | // create DisplayItem 145 | //// create original content 146 | if _, hasContent := (*contentsMap)[contentKey]; !hasContent { 147 | (*contentsMap)[contentKey] = contentKey 148 | } 149 | //// create flipped content 150 | if flipMode.vertical { 151 | var originalContent = (*contentsMap)[contentKey] 152 | contentKey = contentKey + ":vertical-flipped" 153 | if _, hasContent := (*contentsMap)[contentKey]; !hasContent { 154 | (*contentsMap)[contentKey] = flipContentVertical(originalContent) 155 | } 156 | } 157 | 158 | //// create item 159 | var currentItems *[]DisplayItem = &part.Bars[len(part.Bars)-1].Items 160 | var content = (*contentsMap)[contentKey] 161 | *currentItems = append(*currentItems, DisplayItem{Position: currentPosition, Content: &content}) 162 | } 163 | } 164 | 165 | return part 166 | } 167 | 168 | // utils 169 | func flipContentVertical(content string) string { 170 | var lines = strings.Split(content, "\n") 171 | var flipedLines = koazee.StreamOf(lines). 172 | Map(func(x string) string { return reverseString(x) }).Out().Val().([]string) 173 | return strings.Join(flipedLines, "\n") 174 | } 175 | 176 | // from: https://kodify.net/go/reverse-string/ 177 | func reverseString(s string) string { 178 | runes := []rune(s) 179 | for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 { 180 | runes[i], runes[j] = runes[j], runes[i] 181 | } 182 | return string(runes) 183 | } 184 | -------------------------------------------------------------------------------- /docs/csf_spec.ja.md: -------------------------------------------------------------------------------- 1 | # CSF: Credits Score Format 2 | 3 | CSF は,[Credits / Frums の BGA]()のような,テキストベースのミュージックビデオを表現するためのフォーマットです.本ドキュメントだけでわからない部分は,[Credits / Frums BGA を CSF で表現した例](../static/csf-root)も参考にしてください. 4 | 5 | 1 つのミュージックビデオは,以下のようなディレクトリ構成で表されます. 6 | 7 | ``` 8 | csf_root_dir 9 | ├─ meta.yaml(楽曲のメタ情報を定義します) 10 | ├─ data/(画面に表示するテキストデータを配置します) 11 | └─ scores/(テキストデータを表示する位置やタイミングなどを配置します) 12 | ``` 13 | 14 | ## meta.yaml 15 | 16 | 曲のメタ情報を yaml 形式で定義します. 17 | 18 | ``` 19 | BPM: 179(曲のテンポ) 20 | AudioFilePath: credits.mp3(音声ファイルへの,meta.yamlからの相対パス) 21 | AudioOffsetSec: 1.341(音声と画面表示タイミングのオフセット.この例では,音声ファイルの1.341秒に,画面の1小節目が表示される) 22 | ``` 23 | 24 | ## data/ 25 | 26 | 画面に表示するテキストデータが書かれたファイルを`data/`内に配置します.ファイルは複数配置できます.`data/hoge/fuga_data`のようにサブディレクトリに配置しても構いません. 27 | 28 | ここで配置されたデータは`scores/`内の`.score`ファイルによって,特定のタイミングで画面に表示されます(後述). 29 | 30 | ## scores/ 31 | 32 | テキストデータの表示位置やタイミングなどを定義する`.score`ファイルを配置します.`.score`ファイルは複数配置できます.また,`scores/hoge/fuga.score`のようにサブディレクトリに配置しても構いません. 33 | 34 | ### `.score`ファイル 35 | 36 | `.score`ファイルは次のような形式です. 37 | 38 | ``` 39 | [DisplayCommand] | [Command] | [Comment] | [BlankLine] 40 | [DisplayCommand] | [Command] | [Comment] | [BlankLine] 41 | ... 42 | --- 43 | [DisplayCommand] | [Command] | [Comment] | [BlankLine] 44 | [DisplayCommand] | [Command] | [Comment] | [BlankLine] 45 | ... 46 | --- 47 | ... 48 | ``` 49 | 50 | `.score`ファイルは,複数の小節によって構成されます.`---`は小節線であり,小節の区切りを表します. 51 | 52 | 小節の各行には DisplayCommand,Command,Comment のいずれかを書きます. 53 | 54 | #### DisplayCommand 55 | 56 | 小節内に DisplayCommand が N 個あるとき,画面に文字を N 分音符の長さだけ表示します. 57 | 58 | DisplayCommand には,DataDisplayCommand と InlineDisplayCommand の 2 種類があります. 59 | 60 | DataDisplayCommand は,`data/`内に配置したテキストファイルを画面に表示します.例えば`data/hoge/fuga_data`を表示する場合は,`hoge/fuga_data`と書きます.ただし,ファイルが存在しない場合はパスがそのまま画面に表示されます. 61 | 62 | InlineDisplayCommand は,「`"`」で囲まれたテキストを画面に表示します.例えば,`"hoge"`と書くと`hoge`と画面に表示されます. 63 | 64 | ##### 例 65 | 66 | Credits / Frums の歌詞の冒頭部分における,8 分間隔の「Fun-ding-for-this-pro-gram-was-made」は次のように表せます. 67 | 68 | ``` 69 | --- 70 | Fun 71 | Funding 72 | Funding for 73 | Funding for this 74 | pro 75 | program 76 | program was 77 | program was made 78 | --- 79 | ``` 80 | 81 | ※各行に「`"`」がありませんが,これはテキストファイルが存在しない場合に,パスがそのまま表示されるのを利用しています. 82 | 83 | #### Command 84 | 85 | Command は`# `で始まり,テキストの表示位置や順序を即座に変更します(DisplayCommand の表示タイミングに影響しません).以下のコマンドが有効です. 86 | 87 | - `# MOVETO [x int] [y int]` 88 | - テキストの表示位置を画面の`y`行`x`文字目に変更します 89 | - 例:`# MOVETO 1 2`(以降,画面の 2 行 1 文字目に移動してテキストを表示します) 90 | - `# ZINDEX [i int]` 91 | - テキストの zIndex(表示順序)を`i`に変更します.画面上で複数の DisplayCommand が重なった場合,`i`が大きいものが優先して表示されます. 92 | - 例:`# ZINDEX 5`(以降のテキストの zIndex を 5 にします) 93 | - `# FLIP vertical (on | off)` 94 | - テキストの左右反転モードを有効・無効にします.左右反転モードは,デフォルトでは無効です. 95 | - 例:`# FLIP vertical on`(以降のテキストを左右反転させて表示します) 96 | 97 | #### Comment,BlankLine 98 | 99 | `/`から始まる行や空行は無視され,画面の表示に影響しません. 100 | -------------------------------------------------------------------------------- /docs/csf_spec.zh_CN.md: -------------------------------------------------------------------------------- 1 | # CSF: Credits Score Format 2 | 3 | CSF 是一个用于表示如同[Credits / Frums 的 BGA]()一样使用纯文本构成的 BGA 的格式。若阅读之后仍有不解之处,还请参阅[用 CSF 来表现 Credits / Frums BGA 的例子](../static/csf-root)。 4 | 5 | 一般的音乐视频的目录结构如下: 6 | 7 | ``` 8 | csf_root_dir 9 | ├─ meta.yaml # 定义歌曲的元数据 10 | ├─ data/ # 存放将在画面上显示的文本数据 11 | └─ scores/ # 用于设定文本数据表示的时间和位置等等 12 | ``` 13 | 14 | ## meta.yaml 15 | 16 | 使用 yaml 格式定义的歌曲元数据。 17 | 18 | ``` 19 | BPM: 179 # 每分钟拍数,即 BPM 20 | AudioFilePath: credits.mp3 # 音乐文件相对于 meta.yaml 的路径 21 | AudioOffsetSec: 1.341 # 音乐和画面的偏移。对于本例,当音乐播放到 1.341 秒时,才显示第一帧 22 | ``` 23 | 24 | ## data/ 25 | 26 | 用于存放记录了将要显示到画面上的文本数据的文件。 27 | 您可以配置多个文件,也可使用类似于 `data/hoge/fuga_data` 的目录结构。 28 | 文本将会根据`scores/`文件夹内的`.score`文件来决定显示的时机。 29 | 30 | ## scores/ 31 | 32 | 用于存放定义文本数据的显示位置和显示时机等,以`.score`为后缀名的文件。 33 | 您可以配置多个以`.score`为后缀的文件,也可使用类似于 `scores/hoge/fuga.score` 的目录结构。 34 | 35 | ### `.score`文件 36 | 37 | `.score`文件的格式如下: 38 | 39 | ``` 40 | [DisplayCommand] | [Command] | [Comment] | [BlankLine] 41 | [DisplayCommand] | [Command] | [Comment] | [BlankLine] 42 | ... 43 | --- 44 | [DisplayCommand] | [Command] | [Comment] | [BlankLine] 45 | [DisplayCommand] | [Command] | [Comment] | [BlankLine] 46 | ... 47 | --- 48 | ... 49 | ``` 50 | 51 | `.score`文件由多个小节构成;`---`作为小节线,用于分割不同的小节。 52 | 53 | 小节中的一行可以为 DisplayCommand,Command,Comment 之一。 54 | 55 | #### DisplayCommand 56 | 57 | 当小节内有 N 个 DisplayCommand 时,在画面上显示的文字将只持续 N 分音符的时长。 58 | 59 | DisplayCommand 分为 DataDisplayCommand 和 InlineDisplayCommand 两种。 60 | 61 | DataDisplayCommand 允许你在画面上显示`data/`文件夹内配置的文本文件的内容。例如需要显示`data/hoge/fuga_data`的时候,输入`hoge/fuga_data`就可以了。但是,如果文件不存在,则会直接显示这一行。 62 | 63 | InlineDisplayCommand 允许你显示使用 「`"`」 包括的文字。例如`"hoge"`会在画面上显示`hoge`。 64 | 65 | ##### 例子 66 | 67 | 在 Credits / Frums 歌词的开头有一个 8 分间隔的「Fun-ding-for-this-pro-gram-was-made」,以下是表示它的方法。 68 | 69 | ``` 70 | --- 71 | Fun 72 | Funding 73 | Funding for 74 | Funding for this 75 | pro 76 | program 77 | program was 78 | program was made 79 | --- 80 | ``` 81 | 82 | 注:虽然各行都没有「`"`」,但这其实是利用了当文件不存在时会将这行直接输出的特性,所以是没有问题的。 83 | 84 | #### Command 85 | 86 | 一个 Command 以 `# ` 开始,用于立刻变更文本的显示位置和显示优先级,且不影响 DisplayCommand 的时机。 87 | 以下是所有的有效命令: 88 | 89 | - `# MOVETO [x int] [y int]` 90 | - 将文本的显示位置移到`y`行`x`列。 91 | - 例子:`# MOVETO 1 2`(从这以后会从画面的2行1列的位置显示文本。) 92 | - `# ZINDEX [i int]` 93 | - 变更文本的 zIndex(显示优先级)到`i`。当画面上有多个 DisplayCommand 的显示重叠时,优先显示优先级更高的那一个。用于处理重叠关系。 94 | - 例子:`# ZINDEX 5`(从这以后显示的文本的 zIndex 将会为 5。) 95 | - `# FLIP vertical (on | off)` 96 | - 打开或关闭文本的左右反转模式。左右反转模式默认是关闭的。 97 | - 例子:`# FLIP vertical on`(从这以后显示的文字将会左右反转。) 98 | 99 | #### Comment,BlankLine 100 | 101 | 由`/`开始的一行或者空行都将被忽略,不会影响画面的显示。 102 | -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module github.com/sititou70/frums-credits-cli 2 | 3 | go 1.16 4 | 5 | require ( 6 | github.com/gdamore/tcell v1.4.0 7 | github.com/hajimehoshi/oto v0.7.1 8 | github.com/tosone/minimp3 v1.0.1 9 | github.com/wesovilabs/koazee v0.0.5 10 | gopkg.in/yaml.v2 v2.4.0 11 | ) 12 | -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- 1 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 2 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= 3 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 4 | github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko= 5 | github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= 6 | github.com/gdamore/tcell v1.4.0 h1:vUnHwJRvcPQa3tzi+0QI4U9JINXYJlOz9yiaiPQ2wMU= 7 | github.com/gdamore/tcell v1.4.0/go.mod h1:vxEiSDZdW3L+Uhjii9c3375IlDmR05bzxY404ZVSMo0= 8 | github.com/hajimehoshi/oto v0.7.1 h1:I7maFPz5MBCwiutOrz++DLdbr4rTzBsbBuV2VpgU9kk= 9 | github.com/hajimehoshi/oto v0.7.1/go.mod h1:wovJ8WWMfFKvP587mhHgot/MBr4DnNy9m6EepeVGnos= 10 | github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= 11 | github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= 12 | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= 13 | github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= 14 | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= 15 | github.com/lucasb-eyer/go-colorful v1.0.3 h1:QIbQXiugsb+q10B+MI+7DI1oQLdmnep86tWFlaaUAac= 16 | github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= 17 | github.com/mattn/go-runewidth v0.0.7 h1:Ei8KR0497xHyKJPAv59M1dkC+rOZCMBJ+t3fZ+twI54= 18 | github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= 19 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 20 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 21 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 22 | github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= 23 | github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= 24 | github.com/tosone/minimp3 v1.0.1 h1:5ajMIgZKlQqJdX3KJj/wb0o1oNef9S3fuLr9T5YwQqw= 25 | github.com/tosone/minimp3 v1.0.1/go.mod h1:WFso0UvZL1fPit45V6RQPKxbehLI4XZaJyLs2/TJHoU= 26 | github.com/wesovilabs/koazee v0.0.5 h1:p2AunsyLYFbPoh2jhSOaYq7DuCYD10vDe2dsJM0RTq8= 27 | github.com/wesovilabs/koazee v0.0.5/go.mod h1:pYhJpCWJQGXU5aVVD+LxutvCKLDSK8I7g5htWvaZlvw= 28 | golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8 h1:idBdZTd9UioThJp8KpM/rTSinK/ChZFBE43/WtIy8zg= 29 | golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= 30 | golang.org/x/image v0.0.0-20190227222117-0694c2d4d067 h1:KYGJGHOQy8oSi1fDlSpcZF0+juKwk/hEMv5SiwHogR0= 31 | golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= 32 | golang.org/x/mobile v0.0.0-20190415191353-3e0bab5405d6 h1:vyLBGJPIl9ZYbcQFM2USFmJBK6KI+t+z6jL0lbwjrnc= 33 | golang.org/x/mobile v0.0.0-20190415191353-3e0bab5405d6/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= 34 | golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 35 | golang.org/x/sys v0.0.0-20190429190828-d89cdac9e872/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 36 | golang.org/x/sys v0.0.0-20190626150813-e07cf5db2756 h1:9nuHUbU8dRnRRfj9KjWUVrJeoexdbeMjttk6Oh1rD10= 37 | golang.org/x/sys v0.0.0-20190626150813-e07cf5db2756/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 38 | golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= 39 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 40 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 41 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= 42 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 43 | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 44 | gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 45 | gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= 46 | gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= 47 | -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "embed" 5 | "flag" 6 | "io/fs" 7 | "sync" 8 | 9 | "github.com/sititou70/frums-credits-cli/csf" 10 | "github.com/sititou70/frums-credits-cli/routines" 11 | ) 12 | 13 | var ( 14 | skipSec = flag.Int("s", 0, "time to skip play (sec)") 15 | verboseMode = flag.Bool("v", false, "print extra information") 16 | ) 17 | 18 | //go:embed assets/csf-root 19 | var csfFS embed.FS 20 | var csfRootDirPath = "assets/csf-root" 21 | 22 | func main() { 23 | // parse options 24 | flag.Parse() 25 | 26 | // parse CSF(credits score format) 27 | csfRootFS, _ := fs.Sub(csfFS, csfRootDirPath) 28 | var csf = csf.NewCSF(csfRootFS) 29 | 30 | // launch routines 31 | var waitGroup sync.WaitGroup 32 | waitGroup.Add(2) 33 | go routines.PlayAudio(&waitGroup, csfRootFS, csf.Score.Meta.AudioFilePath, *skipSec) 34 | go routines.DisplayScreen(&waitGroup, &csf, *verboseMode) 35 | waitGroup.Wait() 36 | } 37 | -------------------------------------------------------------------------------- /routines/DisplayScreen.go: -------------------------------------------------------------------------------- 1 | package routines 2 | 3 | import ( 4 | "fmt" 5 | "log" 6 | "math" 7 | "os" 8 | "sync" 9 | "time" 10 | 11 | "github.com/gdamore/tcell" 12 | "github.com/sititou70/frums-credits-cli/config" 13 | CSF "github.com/sititou70/frums-credits-cli/csf" 14 | ) 15 | 16 | // routine main 17 | func DisplayScreen(waitGroup *sync.WaitGroup, csf *CSF.CSF, verbose bool) { 18 | // setup tcell screen 19 | var screen, err = tcell.NewScreen() 20 | if err != nil { 21 | log.Fatal(err) 22 | } 23 | if err = screen.Init(); err != nil { 24 | log.Fatal(err) 25 | } 26 | 27 | //// quit when press any key 28 | go func() { 29 | for { 30 | ev := screen.PollEvent() 31 | switch ev.(type) { 32 | case *tcell.EventKey: 33 | screen.Fini() 34 | os.Exit(0) 35 | } 36 | } 37 | }() 38 | 39 | // display loop 40 | frameRateMS := (time.Duration)(math.Floor(config.FRAME_RATE * 1000 * float64(time.Millisecond))) 41 | for now := range time.Tick(frameRateMS) { 42 | var playTime = now.Sub(PlayState.playStartTime) 43 | var musicPlayTimeSec = playTime.Seconds() - csf.Score.Meta.AudioOffsetSec 44 | 45 | if PlayState.playStarted && musicPlayTimeSec > 0 { 46 | screen.Clear() 47 | 48 | csf.DrawFrame(screen, musicPlayTimeSec) 49 | 50 | if verbose { 51 | var bars = musicPlayTimeSec / (60 / (float64)(csf.Score.Meta.BPM) * 4) 52 | var verboseInfo = fmt.Sprintf( 53 | "bar / beat: %d / %f\nplaytime: %s", 54 | int(bars)+1, (bars-math.Floor(bars))*4+1, 55 | playTime.String()) 56 | CSF.SetContentToScreen(screen, 0, 18, ([]rune)(verboseInfo)) 57 | } 58 | 59 | screen.Show() 60 | } 61 | 62 | if PlayState.playFinished { 63 | break 64 | } 65 | } 66 | 67 | // finish 68 | screen.Fini() 69 | waitGroup.Done() 70 | } 71 | -------------------------------------------------------------------------------- /routines/PlayAudio.go: -------------------------------------------------------------------------------- 1 | package routines 2 | 3 | import ( 4 | "io/fs" 5 | "log" 6 | "sync" 7 | "time" 8 | 9 | "github.com/hajimehoshi/oto" 10 | "github.com/sititou70/frums-credits-cli/config" 11 | "github.com/tosone/minimp3" 12 | ) 13 | 14 | var PlayState = struct { 15 | isPlaying bool 16 | playStarted bool 17 | playFinished bool 18 | playStartTime time.Time 19 | }{ 20 | isPlaying: false, 21 | playStarted: false, 22 | playFinished: false, 23 | } 24 | 25 | func PlayAudio(waitGroup *sync.WaitGroup, rootFS fs.FS, audioPath string, skipSec int) { 26 | var err error 27 | 28 | var file []byte 29 | if file, err = fs.ReadFile(rootFS, audioPath); err != nil { 30 | log.Fatal(err) 31 | } 32 | 33 | var dec *minimp3.Decoder 34 | var data []byte 35 | if dec, data, err = minimp3.DecodeFull(file); err != nil { 36 | log.Fatal(err) 37 | } 38 | 39 | var context *oto.Context 40 | if context, err = oto.NewContext(dec.SampleRate, dec.Channels, 2, config.AUDIO_PLAY_BUFSIZE); err != nil { 41 | log.Fatal(err) 42 | } 43 | 44 | PlayState.isPlaying = true 45 | PlayState.playStarted = true 46 | PlayState.playStartTime = time.Now().Add(time.Duration(-skipSec * int(time.Second))) 47 | 48 | var player = context.NewPlayer() 49 | var sampleParByte = 2 50 | var skipBufSizeByte = skipSec * dec.SampleRate * sampleParByte * dec.Channels 51 | player.Write(data[skipBufSizeByte:]) 52 | 53 | PlayState.isPlaying = false 54 | PlayState.playFinished = true 55 | 56 | <-time.After(time.Second) 57 | 58 | dec.Close() 59 | if err = player.Close(); err != nil { 60 | log.Fatal(err) 61 | } 62 | 63 | waitGroup.Done() 64 | } 65 | -------------------------------------------------------------------------------- /scripts/setfont.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | sudo setfont /usr/share/consolefonts/FullCyrAsia-TerminusBoldVGA16.psf.gz 4 | --------------------------------------------------------------------------------