├── .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 | 
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 |
--------------------------------------------------------------------------------