TenshiClinic_WhaleLink_EDI(AI-generated,osr6)

EDI Linkage Pack — WhaleLink for《天使の早漏治療クリニック》

A fan-made EDI linkage pack for the Japanese H-game
《天使の早漏治療クリニック》 (RPG Maker MZ, circle べあふるーつ).

It reads the game’s own H-scene signals and drives an OSR6 / SR6
(or any TCode device) in real time with hand-tuned 6-axis funscripts.
The official EDI v1.0.4 binary is already inside — no separate download needed.

The game itself is NOT included — get it on DLsite (RJ01644040):
dlsite.com/maniax/work/=/product_id/RJ01644040.html

Download (MEGA):

https://mega.nz/file/dU9GCK5K#-j1O2hwxMifez3Diyh299Up5PHFR4YTxNl9hpUZGt5Q

Full install guide (EN + CN) and a troubleshooting table are inside the archive.

EDI — Easy Device Integration is a separate third-party app by dimnogro (NoGRo).
Forum thread (EroScripts): Easy Device Integration for Games. EDI - Handy HPS (BLE) (08/2026)
Source / releases (GitHub): GitHub - NoGRo/Edi: Easy Device Integrator · GitHub
The unmodified official v1.0.4 binary is bundled with the author’s written permission.

The 6-axis funscript galleries in this pack were AI-generated.

15 Likes

seems great

1 Like

This game is pretty awesome, and the Scripts you have are really really nice! Unfortunately even after trying to use your troubleshooting guide, I cannot get the EDI to detect the game. I can run the scripts from the EDI and it detects my device, but The EDI seems to ignore the game entirely…

I’m not using a T-Code device, but an Oscillation stroker. The EDI can read and play the gallery no problem, it just doesn’t seem to detect the game

I love this game, so I’m really happy you modified it for me.
I tried it with the Handy 2 Pro, but the movements don’t sync up. Does it really not work well unless it’s a multi-axis controller?

Yep, that’s the missing step. In EDI:

Game & General → + Add Game → browse to the EDI folder in the pack → select EdiConfig.json → Save. (Name can be anything.)

Then restart Edi.exe — definitions only load at startup. The device should move after that.

If it still shows ignored not found, the name it sends has to match the list exactly — check osr prefix/casing.

Not 100% sure, but give it a try and let me know how it goes.

1 Like

I made absolutely sure it’s reading the correct EdiConfig, saved it, and Restarted the EDI. Then I launched the game, and my device still isn’t responding when the game is running, despite saying it’s properly connected and outputting the commands even through the EDI log.

I can manually select a script in the EDI then run it, and my device responds, just not when the game tells it to

Have you added the contents specified in plugins.js?

Ahh I think that’s what I missing. I tried copy pasting it at the end of the Plugin.js but when I launch the game I get this error:

Update: I managed to copy paste it in on at the end while removing two of the ('), so it no longer produces an error, but still doesn’t make my device move, Maybe I’m just too technically illiterate to understand this

Could you check whether any unnecessary content has been included? Does it look like the example below?
v1.0.0",“parameters”:{“AlphaThreshold”:“0”}},{“name”:“WhaleLinkEdi”…………“72”,“logLevel”:“2”}}
];

Here is what the end of the Plugin.js looks like currently, I haven’t noticed anything has changed, I apologize as im not familiar with javascript or even writing code. This is only instance of “AlphaThreshold” in the entire file

Ahhh, I missed the plugin step thats why it wasn’t working.

What I see in your pic is wrong. I uploaded my plugins.js if you want to use it.

Ah! This works! thank you very much, I guess I needed to format it correctly

Thanks for the screenshot — and sorry about this. It was our fault, not yours.

Nothing extra was bundled, by the way: that “AlphaThreshold” entry is the game’s own
MOG_TitleCommands_AlphaHit.js, not from our pack. Our pack adds exactly one entry, WhaleLinkEdi.

The real problem was the wording in our README: it said to register it “at the end of plugins.js”
(we meant the last entry inside the array), so it ended up after the closing ]; and the plugin
never loaded. I’ve rewritten that step and re-uploaded the package.

Thanks a lot for putting that together — stepping in to help another player like this is
exactly what makes this community good.

Thanks for trying it. It's not that you need a multi-axis controller — it's that the values
don't match.

Our scripts are written for a fast 6-axis device and demand peak speeds of roughly 450–1100 mm/s
(median ~625). The Handy 2 Pro tops out at 450 mm/s, so about 74% of the scripts ask for more
than it can deliver. It can't finish each stroke in time and falls behind — that's your "out of sync".

Thank you so much for this amazing tool.
I feel like the stroke width is a bit narrow. Is it possible to widen it by editing WhaleLinkEdi.js?
I modified holdIntensity and intensityBase, which seemed to widen it slightly and speed up the action, but it still feels a bit too narrow. If there are any other settings I can adjust to make it even wider, please let me know.

That 70 is a safety value I set deliberately, not something I overlooked.

Raising intensityBase won’t get you past it — the ceiling is baked into the scripts themselves, which are written to top out at 70%.

The only way to make it wider is to edit the L0 values in the script files.

I see. I have the stroke width limited to a safe range in my OSR settings, which is probably why it felt even narrower.
I’ll solve this by removing the limit on the device side when playing this game.
Thank you for letting me know!

So I played this a bit with my SR6. Most of the scripts seem to just be the same base script, varying in speed. But it never really matches the action on screen. Is this intentional?
Also, is it possible to have the device return to a home position in between scripts?

Thanks for testing it with the SR6 — both points are fair.

On the sync: yes, that’s by design. The scripts are generated per action type, triggered by in-game events, rather than recorded from the on-screen animation — so they follow the overall rhythm, but they don’t match the visuals frame by frame.

On the home position: noted. I’ll look into what’s feasible on my side and try to improve it in an update.

Appreciate you taking the time to report this.