IllGames: Aicomi - SR6 BepinEx Plugin (WIP)

Hi everyone,

after the development of the BepinEx Plugins for Honey Select 2 and Koikatsu Sunshine (based on the previous development from hs2_robotics for Honey Select 2: GitHub - hs2robotics/HS2_SexRobotController: Honey Select 2 Sex Robot Controller Plugin · GitHub), next in line is Aicomi. Aicomi is developed by IllGames, which to me seems more like an updated version of Koikatsu, but with some Honey Select mechanics mixed into it. So down the rabbit hole I went…

I thought Koikatsu Sunshine was a nightmare to develop, but IllCpp was a quite different beast. Also, .NET6.0 was pretty gruesome, with the Serial Port Library now being external. Fun fact: It claimed to be running under Linux - even when ran in Windows - that was a fun run trying to figure out what went wrong there. The answer? You need to define that the Library being built is supposed to run in Windows and/or Linux.

Luckily, I could still re-use most of the original codebase, which saved some time (if needing to remove all the code and then put it back step by step to figure out which line broke again counts as saving time). Jokes aside, even if it was horrid, I do think I’ve learned something doing it.

Plugin Development status

Unlike my previous Plugins, this is still in development and anything but ready for fun-time. I finished the v1.0 yesterday, and ended up creating a v1.1 today. However, this is still in a Pre-Release state, and therefore I won’t upload the Plugin here for the time being.

The main reason being I don’t feel it’s stable enough to say “Download and enjoy”. In its current form, it’s more like: “Here’s a Demo, it kinda works for some animations”. That’s why I for now I’ll only add a link to my Github repository, but I’ll update this thread once new updates are published.

A word of warning

If you do decide to download the Plugin and try it, please make sure to do a test run first to see how it moves and acts. Especially if you adjust the multipliers. Personally, I’d recommend waiting, as for now I just wanted to share the details and let you know a Plugin is being developed.

Link to the repository:

Release notes

v1.0: Release notes
  • BepinEx Plugin with Configuration menu
  • Serial connection for SR6 (will most likely work for OSR+ devices too).
    • Works in Linux too
  • Buttons in the Config menu
  • Option to write unknown animations to file (no need to search the log for them hidden positions)
  • Option to read animations from file (if you’ve unlocked animations currently not present in the plugin, and the position is supported, you don’t need to wait for Plugin implementation)
  • Plugin works in Main game and Free-H
  • Two multipliers for L0, enabling the possibility to switch between fast and slow mode
  • Separate button in the Scene GUI to switch between the multiplier
  • Keyboard shortcuts to (dis)connect serial device, increasing/decreasing multiplier (currently only the first one) and switching L0 limiter
  • The positions I’ve currently unlocked is included in the Plugin (including some taken from the translation files)
v1.0: Known issues

Movement for most, if not all of the animations are currently really bad (for some, it doesn’t move at all). The reason for this, at least as far as I can observe visually, is that for some animations, the penis doesn’t penetrate properly (the tip remains outside the mouth/vagina in some poses).
This in turn results in erroneous calculations, as the Penis base, the tip and balls are used to calculate the distance of the movement.

What I’m planning for later versions is to potentially implement a check which checks the three Axis’s and potentially takes a set value to “correct” the wrong/missing values. As an example, for those animations where the SR6 moves somewhat decently, the X/Y has a diff of 0.11 - 0.20 from base to tip. Compared to those where it doesn’t move at all, where the difference is 0.01 - 0.04.

Increasing the L0 multiplier might work for some animations, but I definitely do not recommend it. The speed at the end makes it move too fast, which is why I advice against it.

v1.1: Release notes

Added a check comparing the known penis length against the the currently measured length (distance between Penis base and tip). If the difference between the two is so large that the difference is higher than the current length, the X-Axis value is replaced.

v1.1: Known issues
  • Not all animations uses the X-Axis, for some, the Y-Axis is being used ((currently only checked and verified it’s the case for the “Sideways position”).
  • For some animations, the movement is really jerky or “hammering” (fast up, fast down).
    Improving and fixing these will be the focus for the coming versions.

Screenshots

Configuration Settings for Plugin

Settings menu buttons

Changing the multiplier speed (currently only for the first multiplier)

In-Scene Button to switch between the two L0 multipliers

Additional notes

What is not supported?
  • Fondling and Lesbian animations are not included, these are not planned.
  • Bluetooth/Wi-Fi connection is not supported, will also not be implemented (serial only).
  • Studio is not supported nor have I planned to implement this.
  • VR is currently not supported, but it is planned.
    • The last time I checked, the current AC_HF Patch was incompatible with the latest IllGames patch.
Can I use this in Linux?

Short answer: Yes, using Steam + Proton.

To ensure the translations are loaded, add the following to Launch options:
WINEDLLOVERRIDES="winhttp=n,b" %command%

Steam menuGamesAdd Non-steam Game to my library<addYourGame>.
After adding: PropertiesCompatibilitySteam Proton (I recommend 10 or 11).

The COM Port can be a tad more tricky, as per default it usually sets my SR6 to be mapped to COM33. Further complicating things is that sometimes it switches between /dev/ttyUSB0 and /dev/ttyUSB1 if the cable is temporarily removed. I have therefore added a udev rule to map my SR6, which in turn I’ve used to map the COM Port in Steam.

Create UDEV RULE

Get the device info:

lsusb | grep -i uart
Bus 003 Device 005: ID 10c4:ea60 Silicon Labs CP210x UART Bridge

udevadm info --attribute-walk /dev/bus/usb/003/005 > /tmp/sr6.txt

cat /tmp/sr6.txt |less
    KERNEL=="3-1"
    SUBSYSTEM=="usb"
    DRIVER=="usb"
    ...
    ATTR{idProduct}=="ea60"
    ATTR{idVendor}=="10c4"
    ATTR{ltm_capable}=="no"
    ATTR{manufacturer}=="Silicon Labs"
    ATTR{product}=="CP2102 USB to UART Bridge Controller"
    ATTR{serial}=="0001"
    ...

Create a rule:

sudo vim /usr/lib/udev/rules.d/60-sr6.rules && sudo udevadm control --reload-rules

Content of /usr/lib/udev/rules.d/60-sr6.rules:

# deviceID 10c4:ea60
# SYMLINK: /dev/sr6USB
# Kernel adjusted, see:
# https://askubuntu.com/questions/1021547/writing-udev-rule-for-usb-device
KERNEL=="ttyUSB*" SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="sr6USB", ATTRS{serial}=="0001", ATTRS{product}=="CP2102 USB to UART Bridge Controller"

Trigger rule (optional, will cause a slight lag for the next 5-10 seconds):

sudo udevadm trigger

Verify rule was executed successfully:

ll /dev/sr6USB
lrwxrwxrwx 1 root root 7 20. Dez 09:35 /dev/sr6USB -> ttyUSB0

Then, you need to find the identifier for the game you previously added.

cd $HOME/.local/share/Steam/steamapps/compatdata/

Find the folder containing the game (mine is without spaces)

grep -ri 'aicomi' -m1

As an example, let’s say my ID for Aicomi is ‘123’:

steamID=123
vim $HOME/.local/share/Steam/steamapps/compatdata/$steamID/pfx/system.reg

Search for the following line:

[Software\\Wine\\Ports]

Below this line (or below the content, if any), add the following:

[Software\\Wine\\Ports]
"com1"="/dev/sr6USB"
"com33"="/dev/sr6USB"
4 Likes

Can I use this in Linux?
Short answer: Yes, using Steam + Proton.

That’s how you get head.

1 Like