Skip to content

yoshakami/WaccaCircle

Repository files navigation

WaccaCircle

LilyConsole Extension using vJoy
link : https://github.com/yellowberryHN/LilyConsole

Usage

You need to download vJoy and configure a controller (don't forget to set up buttons number. by default it's 8, setting 128 is best, also keep all axes enabled).
download: https://sourceforge.net/projects/vjoystick/
source: https://github.com/shauleiz/vJoy
this app also uses autohotkey v2 to send keystrokes, if you wanna get out of task manager or send keystrokes to spice2x, you'll need to manually set waccacircle.exe to launch as admin in compatibility mode.
download: https://www.autohotkey.com/

You need to configure the joystick#1 through vJoyConf.exe before launching WaccaCircle.

once you're all set, the launcher starts and can be controlled with the Wacca Circle.

how to add a game

The launcher automatically scans for { ".bat", ".exe", ".vbs", ".ahk", ".lnk" }, if there is an image with the same name and one of these extensions { ".bmp", ".png", ".jpg", ".jpeg", ".gif", ".ico", ".tif", ".tiff" }
then it will add the game to the list. everything is added in the ascii order. an entry will then be added to the json. you need to manually edit the json through a text editor before launching the exe. If you're too lazy to add entries after launching your file, just start the exe then close it and it'll update the json.
make backups of your json before launching the exe, because it'll rewrite it completely if there was syntax errors in it (missing games or useless new entries are fine)

lnk

if you wanna make a .lnk file to a start.bat, the beginning of your file should be like below.
The second line will kill all instances of WaccaCircle since they collectivize the touch panels and prevent wacca from starting.
if you wanna automatically launch WaccaCircleStartup when you're done playing Wacca, you need to launch WaccaStartupBackgroundLauncher.exe on startup.
To do that, type Win+R then shell:startup and paste a shortcut of WaccaStartupBackgroundLauncher.exe in that folder. There's no way to stop mercury other than 'restart to apply closing time' on the test menu, plugging a keyboard, a rubber ducky, or using remote desktop.

@echo off
wmic process where "name like '%WaccaCircle%'" call terminate

faq

Q: What happens if I press two directions at the same time on the joystick axes?
A: it will average all pressed directions on the same axis, thus reaching a spot on the joystick that wouldn't be possible by touching the circle with only one hand

Q: Will it do the average too if I press more than two directions at the same time on the joystick axes?
A: Yes

Q: Does it Spam Stick Directions if I keep pressing ?
A: Nope, if you don't move your hand and keep pressing, it will still use the last stick position without sending a new one

Q: Does it Spam buttons if I keep the panel pressed?
A: Nope, it will only release the button once you stop pressing (or move your hand out of bounds)

Q: What happens if I press two buttons at the same time?
A: it presses two buttons at the same time.

Q: Can I press buttons and move the axes at the same time?
A: Yes

Q: Unhandled Exception: System.IO.IOException: The port 'COM4' does not exist.<br>
   at System.IO.Ports.InternalResources.WinIOError(Int32 errorCode, String str)<br>
   at System.IO.Ports.SerialStream..ctor(String portName, Int32 baudRate, Parity parity, Int32 dataBits, StopBits stopBits, Int32 readTimeout, Int32 writeTimeout, Handshake handshake, Boolean dtrEnable, Boolean rtsEnable, Boolean discardNull, Byte parityReplace)<br>
   at System.IO.Ports.SerialPort.Open()<br>
   at LilyConsole.TouchManager.Initialize() in C:\C#\LilyConsole\TouchController.cs:line 199<br>
   at WaccaKeyBind.Program.TouchCombinedTest()<br>
   at WaccaKeyBind.Program.Main(String[] args)<br>
A: This tool is not for you. It is meant to work on Wacca, not on your weird computer without COM ports.

Q: DLL Error
A: you need to paste all the dll files in the same folder as the .exe,
which means that if you're compiling, you need to paste all dll files in the bin folder.

Q: How do I add WaccaStartupBackgroundLauncher to windows startup?
A: copy WaccaStartupBackgroundLauncher.exe, press Win+R then type shell:startup and press enter, then paste shortcut (do not paste the exe, you definitely want a lnk there)

Q: What are each app for?
A: Read below

Dolphin

be careful: dolphin only accepts up to 32 buttons in DInput (use SDL on newer versions, but these newer versions won't work on wacca because qt6 decided to stop working on windows OS not updated prior to 2020)
so there's no use to launching WaccaCircle96 if you intend to use it on dolphin.
download latest version of dolphin that works : https://dl.dolphin-emu.org/builds/0c/ca/dolphin-master-5.0-16793-x64.7z
mirror : https://web.archive.org/web/20230605023019/https://dl.dolphin-emu.org/builds/0c/ca/dolphin-master-5.0-16793-x64.7z

CemuWithMotion

Cemu runs on a solid 60FPS on Wacca. it supports Xinput and Dinput, but you can't map names by hand in a config file
that's why the joystick made for cemu has no overlap in controls. Here are the controls:
outer circle: left stick (X and Y)
inner circle: 12 buttons with special mapping some buttons unless you press the motion toggle
suggested controls for each button of the inner circle:
outer circle + hold 1: up blow mic, down show screen, left stick press, right stick press (buttons 13 to 16)
outer circle + hold 2: shake forward, backwards, left, and right
outer circle + hold 3: right stick (RX and RY)
4: ZR
5: R
6: A
7: L
8: ZL
outer circle + hold 9: D-pad (buttons 17 to 20)
outer circle + hold 10: tilt
11: toggle motion
12: B

if 11 is toggled: (tap again to turn off)
1: button 1
2: plus
3: Y
9: X
10: minus
11: turn off

Cemu

new controls (no toggle for 11): 2: Y
10: X
outer circle + hold 11: minus for left part, and plus for right part

DXinput

the exe made for CemuWithMotion uses DirectInput
this one uses Xinput with the same controls, and still keeps the code to feed the Direct Input vJoy device

Xinput

this exe is the same as Xinput but without DirectInput feeder. Thus, you don't need to install vJoy to run it

osu

I've made an exe file especially for sentakki, I also edited the ruleset to remove touch screen use, see https://github.com/yoshakami/osu-without-touch-screen/releases/tag/2024.718.0
the mappings are as such (if you didn't change controls):
top: up
bottom: down
2 rightest lanes: enter
2 toppest lanes: escape (maintain 2-sec during a song to escape from it)
if you wanna press up instead of escape, you just need to touch outside of the 2 lanes at the top.

press the outer right part twice to enter song selection
press the outer top part to nagivate upwards
press the outer bottom part to navigate downwards
press the outer right part again to start a song.
you can play it by tapping anywhere you want on the circle
after the play is finished, press the outer left part to go back to song selection
if you wanna quit the game, spam press the outer left part

spice

if you wanna bind controls with spicecfg, you'll see that whenever you click on bind, the ioboard takes over.
in order to fix this, you just need to unplug USB-1. (once you're done mapping, plug it back to play safe)

taiko

if your screen is not 120Hz (which is the case for wacca)
you will need NVIDIA Control Pannel ver 472.12 (or another, but 417.71 is too low and 565.90 is too high)
on the nvidia control pannel, do this with taiko.exe:

  • Max Frame Rate: 120FPS
  • Low Latency Mode: Ultra
  • Power Management Mode: Prefer maximum performance
  • Vertical Sync: Fast

on the file "config.toml", do this :
shared_audio = false
vsync = false
windowed = false

button id Description location on the circle
12 outer left outer left
13 outer right outer right
14 inner left outer bottom
15 inner right inner right

rpg

button id Description location on the circle
1 back inner left
2 enter inner right
4 open menu inner top
7 attacc inner bottom
13 up outer top
14 down outer bottom
15 left outer left
16 right outer right

WaccaCircleDesktop24

the following conditions needs to be met before launching this one:
you have 24 lnk on your desktop (named from 1 to 24),
you've set the screen resolution to 1080x1920 and the zoom to 100% (in display settings),
you've made the taskbar to be docked at the bottom, and always visible
when you right click on an empty space of the desktop, the options are set as follows
view > [check] show desktop icons
view > large icons
view > [uncheck] auto arrange icons
view > [uncheck] align icons to grid
sort by > item type

WaccaCircleDesktop32

same as above but you need to have 32 lnk files on your desktop

WaccaStartupBackgroundLauncher

this is the executable that you'd add to windows startup.
this headless executable will check if any WaccaCircle*.exe is launched on the system
if not, then it'll check if any Mercury*.exe is launched on the system
if not, then it'll launch WaccaCircleOsu.exe if you're running osu
if not, then it'll launch WaccaCircleSDVX.exe if you're running SDVX
if not, then it'll launch WaccaCircle32.exe if you're running Dolphin
if not, then it'll launch WaccaCircleStartup.exe (it knows where the file is because the exe knows its own folder path)
in order to completely control your wacca, you'd want to make lnk files to shutdown the system or launch apps

WaccaCircleStartup

this exe presses or releases keystrokes when you press or release one of the outer 2 layers. (25 to 28.ahk)
top part: sends Up Arrow
right part: sends Right Arrow
bottom part: sends Down Arrow
left part: sends Left Arrow

for the inner 2 layers, the circle is divided by 12 areas (which are mapped by their clockwise position. 1 is at 1 o'clock)
for each area, if [number].lnk exists on your desktop, then it launches that lnk (you can press or hold, it doesn't matter, it'll only launch once per touch)
for example, if I hold the outer left circle, 12d.lnk exists on my desktop, and I touch the inner top of the circle, then it will launch 12.lnk
else, here's the mapping of the key presses and releases.
(outer pannels)
arrow1: Up
arrow2: Right
arrow3: Down
arrow4: Left

hold left + touch inner circle: launch 1 to 12.lnk
hold right + touch inner circle: launch 13 to 24.lnk
hold up + touch inner circle: launch 25 to 32.lnk
remember that if a lnk file doesn't exist, it will launch two ahk files instead.

the release will contain the ahk files launching the keystrokes below.
example : Desktop/WaccaCircle/key1d.ahk when panel is pressed down, and key1u.ahk when panel is released up.
1: F1
2: Win
3: Ctrl
4: Del
5: Escape
6: F11 (located at the bottom of the inner circle)
7: Shift
8: Win + D
9: Alt
10: Tab
11: F4
12: Enter + switch to WaccaCircle32 if dolphin or spice is launched


(Osu! outer pannels) osu1: Up
osu2: Enter
osu3: Down
osu4: Esc
Dolphin: focuses the window.

WaccaCircle12

buttons 1 to 12 mapped clockwise (top is 12) for the whole circle
no axes

WaccaCircle24

axes

x-axis and y-axis for the whole circle
rx-axis and ry-axis for the outer circle (2 layers)
sl0-axis and sl1-axis for the inner circle (2 layers near the screen)

inner circle buttons

buttons 1 to 12 mapped clockwise (top is 12) for each inner 2 segment / inner circle

button 13: top-right quarter of the inner circle (the center of the quarter is the top-right aka pi/4)
button 14: bottom-right quarter of the inner circle
button 15: bottom-left quarter of the inner circle
button 16: top-left quarter of the inner circle

button 17: top quarter of the inner circle (the center of the quarter is the top aka pi/2)
button 18: right quarter of the inner circle
button 19: bottom quarter of the inner circle
button 20: left quarter of the inner circle

button 21: top half of the inner circle (the center of this segment is the top aka pi/2)
button 22: bottom half of the inner circle

button 23: left half of the inner circle (the center of this segment is the left aka pi)
button 24: right half of the inner circle

WaccaCircle32

see WaccaCircle24 for all the axes and buttons from 1 to 24

button 25: top quarter of the outer circle (the center of the quarter is the top aka pi/2)
button 26: right quarter of the outer circle
button 27: bottom quarter of the outer circle
button 28: left quarter of the outer circle

button 29: top half of the outer circle (the center of this segment is the top aka pi/2)
button 30: bottom half of the outer circle

button 31: left half of the outer circle (the center of this segment is the left aka pi)
button 32: right half of the outer circle

WaccaCircle96

see WaccaCircle24 for all the axes and buttons from 1 to 24

buttons 25 to 32 divide the inner circle by 8, mapped clockwise

buttons 33 to 44 mapped clockwise (top is 36) for each segment of the whole circle

whole circle buttons

button 45: top-right quarter of the whole circle (the center of the quarter is the top-right aka pi/4)
button 46: bottom-right quarter of the whole circle
button 47: bottom-left quarter of the whole circle
button 48: top-left quarter of the whole circle

button 49: top quarter of the whole circle (the center of the quarter is the top aka pi/2)
button 50: right quarter of the whole circle
button 51: bottom quarter of the whole circle
button 52: left quarter of the whole circle

button 53: top half of the whole circle (the center of this segment is the top aka pi/2)
button 54: bottom half of the whole circle

button 55: left half of the whole circle (the center of this segment is the left aka pi)
button 56: right half of the whole circle

buttons 57 to 64 divide the whole circle by 8, mapped clockwise

outer circle buttons

buttons 65 to 76 mapped clockwise (top is 60) for each segment of the outer circle

button 77: top-right quarter of the outer circle (the center of the quarter is the top-right aka pi/4)
button 78: bottom-right quarter of the outer circle
button 79: bottom-left quarter of the outer circle
button 80: top-left quarter of the outer circle

button 81: top quarter of the outer circle (the center of the quarter is the top aka pi/2)
button 82: right quarter of the outer circle
button 83: bottom quarter of the outer circle
button 84: left quarter of the outer circle

button 85: top half of the outer circle (the center of this segment is the top aka pi/2)
button 86: bottom half of the outer circle

button 87: left half of the outer circle (the center of this segment is the left aka pi)
button 88: right half of the outer circle

buttons 89 to 96 divide the inner circle by 8, mapped clockwise

compilation

the different folders are there because some files do not require the same dependencies to be compiled. they use less DLL, so the exe are optimized

install 22GB of Visual Studio C# compilers and install .NET Framework 4.5.2 library SDK, then open the .sln file with visual studio.
In solution explorer, right click the .cs file => exclude from project, then right click on WaccaCircle => add => existing item => select desired .cs file.
Then Choose Release and x64 from the dropdown menus and click start. once you did, WaccaCircle.exe will appear in the bin folder, feel free to rename it to whatever you want.
depending on your desired .cs file, you'd need to swap WaccaCircle.csproj with the correct one.

About

LilyConsole Extension

Resources

License

Stars

Watchers

Forks

Packages

No packages published