- C 98.6%
- Shell 1.2%
- M4 0.1%
| .github/workflows | ||
| assets | ||
| editor | ||
| helpers | ||
| .gitignore | ||
| chrysalis | ||
| configure.ac | ||
| controls.c | ||
| controls.h | ||
| editor.h | ||
| LICENSE | ||
| main.c | ||
| main.h | ||
| Makefile.am | ||
| menu.c | ||
| menu.h | ||
| README.md | ||
| TODO.md | ||
| yuiedit.rc | ||
yuiedit!
incredibly portable & simple osu editor written in C using sdl 1.2 & cairo
background
for those of you who are interested in the why of yuiedit, feel free to read~ this project, and my subsequent obsession with Vine Linux started as a result of 有機酸 (uki3)'s error EP, which i really liked being a big vocaloid fan ^_^ the album artwork features an obscure linux distro running in Virtual PC 2007 - Vine Linux 4.2 (Lynch Bages). i became obsessed with the idea of mapping something from this album within this version of Vine Linux, because that's the only way i can do a proper tribute to it :p
after much messing around with upgrading the ancient toolchain in this version, upgrading the kernel with some success, and various other attempts to somehow shoehorn a modern enough version of wine to run osu!stable... i decided to bite the bullet. instead of fighting with Vine Linux, i'll instead embrace it and create my own osu! editor old enough and portable enough to run in this ancient 2007 distro - and for anyone else, to run in whatever fuckass environment they may please. all you need is an operating system made within the last 25 years.
usage
yuiedit! is mostly keyboard nagivated - i personally like keyboard nagivation better, and it's easier to implement ^-^ most nagivation is rather intuitive, just use the arrow keys or mouse wheel to move around menus and enter, space, or left click to select an option. the menu feels quite smooth to navigate once you get used to it~
the actual editor part is also quite intiutive coming from osu!stable at least, lots of your usual shortcuts and navigation options are here.
useful keyboard shortcuts:
ctrl + s to save a map (any osu mapper knows this one very well!!)
ctrl + e to export your map as an osz or .osu file alone
ctrl + , / ctrl + . to rotate by 90 degrees
ctrl + g to reverse a slider
ctrl + h / ctrl + j to flip horizontally / vertically about the centre
ctrl + arrow keys to nudge an object by 1 pixel in any direction
ctrl + shift + r / ctrl + shift + s to open a rotate/scale menu respectively
additionally, there is currently no way to create a new map inside of yuiedit! itself. again, could come in later versions~
info
on launch, yuiedit! automatically will create a maps/ folder if none is present. the only way to add maps is through adding them to this folder, it doesn't support drag and drop into the editor itself >_< this only supports osu!std maps, so don't expect to be mapping mania on this or anything :p
bit technical, but it only supports v14 and v128 (lazer) osu files - which is everything from ~2015 onward. the full featureset can be seen below, for your viewing pleasure:
| feature | support |
|---|---|
| set/diff selection | ✔️ |
| reading/writing .osu files | ✔️ |
| extracting/compressing .osz files | ✔️ |
| straight, bezier, perfect and catmull sliders | ✔️ |
| .ogg/.mp3 audio | ✔️ |
| .png/.jpeg backgrounds | ✔️ |
| reading maps with colourhax | ✔️ |
| colourhax creation | ❌ |
| lazer (v128) map support | ✔️ |
| old (<v14) map support | ❌ |
| hitsound playback/editing | ❌ |
| storyboard/video playback | ❌ |
| storyboard editing | ❌ |
| map testing | ❌ |
dependencies/compilation
for anyone downloading a binary of yuiedit!, there's zero dependencies to worry about on all platforms! however, if you are planning on contributing or making your own compiled build, chrysalis is what you want. chrysalis is a bash script that will automatically determine your platform and download (or compile, depending on the platform) all of the dependencies you need. this makes compilation smooth and seamless, no matter which esotetic platform you may be running. but what is it installing? everything that yuiedit relies on, and what it does, can be seen below.
- sdl 1.2 | cross platform window and input handling
- cairo | 2d rendering engine
- freetype | lightweight font rendering
- portaudio | cross platform audio playback
- mpg123 | reading
.mp3files - libvorbis | reading
.ogg(vorbis) files - secret rabbit code | resampling audio files
- libjpeg-turbo | parsing .jpeg images
- heliotrope | my own zlib wrapper!! reads and creates .osz files~
additionally, heliotrope is included within yuiedit itself - no need to get it as an external dependency.
windows
windows is the only platform that is (without msys2 or a mingw setup) unable to run chrysalis. as such, if you are on a platform that is not easily able to use the latest version of msys2 (<= windows 10), i'd recommend downloading the gtk bundle that supports down to windows 2000 for cairo, and run ./chrysalis to download all other dependencies
anything with gcc 3 or newer should be able to compile just fine, provided you have all libraries installed as mentioned above. grab a release tarball, run ./configure then make in the main directory - and you should be good! you can also run ./configure --enable-debug to have the proper debug symbols if you'd like to contribute and make development easier for yourself! have fun o/
