To4st - Game Mods (New Poll | Latest Game: Xenotake | Latest Demo: Monster Girl Quest Paradox)

I tested it with my OSR2+ and gotta say it was amazing! Thank you for making this!

The only issues I’ve noticed is that sometimes the strokes aren’t synced to the animation, primarily occurs after stage 3. The thrusts were slow on-screen but the device is on a much faster loop. It seems to me like the game has changed the playback speed for that animation during that playthrough. When I played the same animation in the gallery it was much faster and the device is in sync.

Aside from that I didn’t notice any issues and the multi-axis scripts were really well executed! A complaint specific to my device is that it has inverted roll due to model of servos, and that becomes noticeable in the 2nd scene. I couldn’t fix this through @Khrull’s firmware configurations, neither does EDI has an option to invert it. I had to work around it by manually editing all .roll scripts so they work in the right direction for my OSR2.

Thanks. Happy to hear you liked it.

Is that the battles after the boob job one? Does that one also have out of sync scripts? I probably missed the fact that the speeds change. Most of my testing was in the gallery. I’ll go back and add the scripts for the other speeds.

I recently had to buy new servos for my SR6 and they inverted everything for me as well. Most of the inversion was correctable by just flipping the pins. Basically making the firmware think my right servos were on the left and vice-versa.
This still had my roll inverted though. Which I fixed by negating the values in the firmware.

Tempest firmware
  if (OSR2_MODE) {
    // Calculate arm angles
    // Linear scale inputs to servo appropriate numbers
    int stroke,roll,pitch;
    stroke = map(xLin,0,9999,-350,350);
    roll   = map(yRot,0,9999,-180,180);
    pitch  = map(zRot,0,9999,-350,350);
    ledcWrite(LowerLeftServo_PWM, map(LowerLeftServo_ZERO + stroke + roll,0,MainServo_Int,0,65535));
    ledcWrite(LowerRightServo_PWM, map(LowerRightServo_ZERO - stroke + roll,0,MainServo_Int,0,65535));
    ledcWrite(LeftPitchServo_PWM, map(LeftPitchServo_ZERO - pitch,0,PitchServo_Int,0,65535));
    // Unused servo pins.
    ledcWrite(UpperLeftServo_PWM, map(UpperLeftServo_ZERO,0,MainServo_Int,0,65535));
    ledcWrite(RightPitchServo_PWM, map(RightPitchServo_ZERO,0,PitchServo_Int,0,65535));
    ledcWrite(UpperRightServo_PWM, map(UpperRightServo_ZERO,0,MainServo_Int,0,65535));
  }
  
  // SR6 Kinematics
  else {
    // Calculate arm angles
    int roll,pitch,fwd,thrust,side;
    int out1,out2,out3,out4,out5,out6;
    roll = -map(yRot,0,9999,-3000,3000);
    pitch = map(zRot,0,9999,-2500,2500);
    fwd = map(yLin,0,9999,-3000,3000);
    thrust = map(xLin,0,9999,-6000,6000);
    side = map(zLin,0,9999,-3000,3000);
    // Main arms
    out1 = SetMainServo(16248 - fwd, 1500 + thrust + roll); // Lower left servo
    out2 = SetMainServo(16248 - fwd, 1500 - thrust - roll); // Upper left servo
    out5 = SetMainServo(16248 - fwd, 1500 - thrust + roll); // Upper right servo
    out6 = SetMainServo(16248 - fwd, 1500 + thrust - roll); // Lower right servo
    // Pitchers
    out3 = SetPitchServo(16248 - fwd, 4500 - thrust,  side - 1.5*roll, -pitch);
    out4 = SetPitchServo(16248 - fwd, 4500 - thrust, -side + 1.5*roll, -pitch);
    // Set Servos
    ledcWrite(LowerLeftServo_PWM, map(LowerLeftServo_ZERO - out1,0,MainServo_Int,0,65535));
    ledcWrite(UpperLeftServo_PWM, map(UpperLeftServo_ZERO + out2,0,MainServo_Int,0,65535));
    ledcWrite(LeftPitchServo_PWM, map(constrain(LeftPitchServo_ZERO - out3,LeftPitchServo_ZERO-600,LeftPitchServo_ZERO+1000),0,PitchServo_Int,0,65535));
    ledcWrite(RightPitchServo_PWM, map(constrain(RightPitchServo_ZERO + out4,RightPitchServo_ZERO-1000,RightPitchServo_ZERO+600),0,PitchServo_Int,0,65535));
    ledcWrite(UpperRightServo_PWM, map(UpperRightServo_ZERO - out5,0,MainServo_Int,0,65535));
    ledcWrite(LowerRightServo_PWM, map(LowerRightServo_ZERO + out6,0,MainServo_Int,0,65535));
  }

This is for Tempest’s firmware, but Khrull’s should have something similar. Under the SR6 specific code, you can see I placed a “-” next to the roll’s map function. I’m sure doing the same if you’re using an OSR2 might fix it for you.

I had a similar problem with the linear strokes (also on OSR2) not being synced, I believe also one of two things was going on: Either if a stroke was happening during when the animation looped, it would “cut” to the start and play as normal? OR maybe just stop until a full animation played and re-start on the next loop? I’m not certain exactly which if any was happening there, but something was definitely throwing things off at times and all of those I can believe would be related to a playback speed of 0.8 or 1.2 or whatever messing up the sync.

I had it happen during Allie’s (titjob) and Karin’s (insertion) encounter and possibly with Tina’s (handjob) as well, though I can’t remember exactly. I haven’t had time to unlock anything further yet so can’t confirm if the gallery fixes things for me as well sync-wise, but given Falafel’s description I’m pretty sure it will. I’d guess a similar solution too - anything with a speed change probably is what throws it off.

Still was definitely decent when it did line up, for sure.

I can’t seem to find any instance ingame where the animation speeds change.

What I think might be happening is that there might be times when the animations change very abruptly and Edi is being asked to play two scripts simultaneously.
This will spawn two separate threads on Edi to handle the requests in parallel, and whichever one finishes last will probably be the script that ends up being played.

Did you and @Falafel perhaps have the guard mechanic enabled that reduces the stroke length? I can see how a guard might cause this as it could cause frequent changes in the script that’s being played.

I did at first, but I disabled it in funscriptintegrationplugin.cfg and still seemed to run into the issue (was my first thought to try, to see if that script was interrupting the current one, as that definitely felt like what was going on in my case). Is that all I’d need to modify to change the setting?

Full disclosure, thinking about it I’m now not 100% certain I restarted EDI after changing the file (just restarted the game itself), so I’m not sure I ever did truly test it with Guard actually disabled

Updated the post with a demo mod for a Succubus game, Lost in the World of Succubi, that’s releasing soon. It was something I threw together quickly while working on Succubus Dungeon. Would appreciate any feedback from those who would like to try it out.


No restart from Edi would be required. Just the game. It’s just a switch to change what scripts the game asks Edi to play.

Seems I’ll need to investigate a bit further.

It happens primarily with Karin (missionary) and Ali’s stage (titfuck). I think there are also instances where this happened with footjob and handjob (like, after the 2nd playthrough), but I’m not very sure. Everything is in sync in the gallery and is significantly faster than in-game.

Yes I have guard enabled and I did encountered something similar to what @ARandomKid1 describes. It was as if the animation loop suddenly resets itself / cut to a different animation, and that happens when you guard. I didn’t care about it thinking was a bug with the game

That makes sense, but wouldn’t really consider it a bug. It is jumping/cutting to a different script whenever you guard.
With the demo mod I had it so that the guard script would be used whenever you hold in left-click. I changed it to sort of toggle for the full game mod. Now, when an attack is successfully guarded, it switches over to a guard script until the next time you fail to block an attack.

What’s probably happening is when a block is missed, the quick script change makes it so that the device jumps to where it should be for the full range stroke.
e.g., Given a full script has points 0 → 100 → 0 and the guard version has 25 → 75 → 25. If the guard was lost on the way down, say at 30 when it had only 5 left to travel, it would now try to go down to 0 within the short remaining time.

I can change the mod to only switch between guard/non-guard when an animation loops, but I’m not sure if that would worsen the experience. I’ll update the download as soon as I can fix these issues.

Oh, what I meant is that the visual of the game is jumping too. Like when I guard, the smooth animation loop suddenly gets cut off / jumped to another frame. Therefore I thought it must be the game’s issue than the mod. I’ll see if I can get a video of this.

Came back to say that I couldn’t reproduce the issues I’ve encountered yesterday. Through my last 2 runs the animation speed matches that of the gallery and there has not been any jumping / cutting off. Everything is in sync.

I suspect the de-sync was caused by frame rate inconsistencies. I can remember the game was a little sluggish yesterday. It might be caused by me dragging the game from one monitor to the other (from 4k 60hz to 2k 144hz).

I won’t say the switch between non-guard and guard script is that jarring. I also find it better to be punished immediately for a mistake than delay it for the next loop (sirogane’s Aria mod had that issue).

So in the end the mod seems to be in a perfect state for me.

Hi, I’ve played Lost in the World of Succubi, and it works fine.

But in the previous version of the same company, the device had a short stroke function when jumping or attacking. It was pretty good. If the full version comes out, can you add it?

1 Like

I do think the EDI program/script is technically doing exactly what it should: 1) Game calls to switch to a new script. 2) EDI says “Alright, I’ll start usin-” 3) Game calls to switch to a new script.

Assuming mine hasn’t also magically fixed itself by tomorrow (I didn’t notice any issues with it being slow/laggy game-wise), I’ll see if I can get a video of it somehow.

I’ll leave the guard as-is for now then.

I did notice, at least with Hanna(final boss), that the animation doesn’t play exactly the same as in the gallery when she uses hypnosis. The game constantly switches between the attack animation and then idle for 0.25 seconds and only then loops the attack. This does make it play back a bit slower.

I’ll go through the game again to take note of others that do the same and then add the necessary scripts.

Are you referring to the mod that was shared on this site of their previous game?

yes, super mamono sisters

Flatformer games don’t trigger scripts unless they get hit, so applying movement to jumps or attacks seems to make the game not boring.

2 Likes

Does anyone know of a way to get some machine translation going for “inma labyrinth ~Succubus Dungeon~ gaiden”?

It does have an English option if you go into the Settings (middle option). Seems machine translated itself with all the interesting dialogue that comes with that, but it’ll get you through the game.

inmasuclanguage

Ah, thank you, it indeed has english setting. It’s just not mentioned on the dlsite page.

I figured out my issue I think - I’m not sure why, but I had it in my head that EDI needed/used Intiface Central to connect to/run OSR/SR6 devices. This is not the case (anymore? never was? Isolated to some specific game mod that needed it I’ve forgotten about? Probably one of those, I don’t really follow it all super closely).

So I think what was happening in my case is my OSR was bouncing between EDI’s player connection and the Intiface connection I presumed was necessary, which of course had nothing on it to actually play, and for some reason didn’t handle constantly jumping around like that terribly well. Only reason I think it kind of worked was that the animation loops were short enough that it felt close before Intiface hijacked the connection and EDI’s player had to grab it back, which I interpreted as the script either changing or restarting. Filler script at least has been running with zero interruptions for a while now, far smoother than before.

EDIT: Yep, ran through the first battle and there’s a significant improvement. No desyncing whatsoever, and scripts are definitely improved when they’re not getting spliced up randomly every three to five seconds.

For some reason I can’t get EDI to connect to my OSR2+. I select the COM port from the dropdown, press reconnect and nothing happens. It doesn’t show up in the list.

I think it the same problem mentioned in this thread post #523 which to4st responded to on post #525. (Sorry, don’t know how to link the posts)

When I look in the logs, nothing is in there about an OSR or serial connection. I’m sure it’s the correct COM port. Other software functions without a problem. Connection through Intiface also works fine. Also just downloaded a new copy of EDI. Handy works fine with the game aswell.

Anyone else had this issue or might know a way to fix it?

That english is worse then machine translation
In one line it says “woman”, in next line it calls her “he”

They didn’t even bother using ChatGPT for it, nor a human translator