TEMU v0.2.0 - TCode device emulator


Download

release

Prerequisites

About

TCode device emulator that is basically just a simple wrapper around osr-emu by soritesparadox packaged as standalone application.
Can be controlled by any existing software that sends TCode over UDP on port 7777.

It is very bare-bones, depending on user feedback and usage I might update it further.
Currently windows only but its possible to make builds for Linux/MacOS.

If you are interested you can also find my other OSR/VaM/TCode projects on my github profile.
If you like what I’m doing, please consider supporting me on my Patreon :slight_smile:
https://www.patreon.com/yoooi

Keybinds:

  • C - change background color (black, white, transparent)
  • B - change border color
  • M - change model (OSR2, SR6, SSR1)
  • T - toggle always on top
  • ESC - close application

Changelog

v0.2.0

  • Add separate background and border color shortcuts
  • Add always on top shortcut
5 Likes

First thought was that it’s an ideal OFS visualizer. Existing visualizers are pretty good, but there’s no way to mistake how the device will move if it’s being emulated like this. Pitch axis especially is much easier to understand with this.
I haven’t scripted using it that way yet, but it looks good when playing back scripts with OFS. I don’t think it will replace classic visualizers, but it will let you check certain things without setting up a device.

Two improvements I would want:

  1. Border for transparent mode
  2. Configurable port/path (or OFS toggle)

I had trouble moving the window in transparent mode, and kept moving the stroker within the window instead. Switching the background color every time I moved it gave me a bit of a headache trying to figure out the best spot to put it.

It’s possible to link from TEMU to MFP to OFS, but can you make the connection configurable so you can connect direct from TEMU to OFS? OFS communicates on the port of your choice, but at localhost:<port>/ofs.

And one last item that isn’t as important: a way to lock the window on top. I just use PowerToys for this, but it wouldn’t hurt to have natively for people who don’t use that.

I made it so you can’t move the window in transparent mode, since you cant tell where is the edge of the window. But with a border it would make sense.

OFS does not use UDP it uses websockets. It also does not send TCode, it sends funscripts, so this would have to implement full funscript playback, which is probably out of scope.
I think using it with script players lets you see how the script actually behaves.

Added to todo.

1 Like

UPDATE (for other noobs like myself): got it working by changing ip to this:

Looks really sharp. Forgive my newbiness, is this correct? I cannot seem to get it to connect.

1 Like

set it to localhost:7777

Ah I was unaware of the details. Makes sense.
And I agree, running it through your player of choice is going to give the best information.

Added in 0.2.0.

check my fork btw
https://www.npmjs.com/package/@eroscripts/osr-emu

I should release one too I suppose :thinking:

Like, I have one at https://nw-player.dimava.ru/#/kizuna/sse but it’s not a standalone app
(and the one on web is quite dated I should reupload)

Now lemme actually check what have you cooked

TCode over UDP on port 7777

I see, I had to use com0com the serial pipe
Aaand I cannot test id because my stuff doesn’t support UDP TCode (yet?)

Do you have a list of changes in the fork?

too much read commit log

Okay not so much and commit log doesn’t explain well

I have switched to Typescript, added Dx and other commands, added front camera preset,
Okay I dunno, not much

Regarding linking with OFS, I seem to have found a solution - using MultiFunPlayer as a Funscript to TCode translator.

Configure MultiFunPlayer with OFS as a source (click OFS after clicking ‘+’ button in MFP) and output to be TEMU via a UDP port - add UDP output in MFP (by clicking the ‘+’ in MFP source), configure with endpoint as 127.0.0.1:7777.

For best results, I’ve configured OFS source with 100 ms interval and delay (in MFP).

1 Like

is there a way to save the config in terms of window size, transparency, border, device type? like a command line or a config file?
Thanks for this wonderful tool

1 Like

Currently there is no config, but I’ll add it to todo.

Thank you for putting this together.
I’ve been using the emulator quite a while now and had a few small suggestions:

• Displaying the keybinds somewhere in the UI. I know them well by now, but it would make things much easier for new users starting out.

• A position reset shortcut (e.g. [R]) to restore the default device position.

• Improving the window border visibility/size when enabled. I often found myself trying to move the window but missing the border and accidentally spinning the device instead.

• Supporting additional communication methods alongside UDP would also be great.

1 Like

Good idea but I think it would require adding persistent settings so that you can hide them permanently. Settings are needed anyways.

Also good idea.

I’m assuming you mean the window drag region at the top? Could make it change color on hover.

Which ones do you have in mind? UDP is used by most/all TCode apps, don’t know what else could be used.

1 Like

Yeah that would be great.

I was mainly thinking Serial (COM), since a lot of setups still use that for T-Code and it should make it possible to hook the emulator up via virtual COM ports. That could also help with testing stuff coming from Intiface.

I mostly use the emulator to showcase and test game integrations, so having more input methods would make it easier to simulate different real-world setups without needing actual hardware.