Jump to content

I Bought a Soviet Era Gaming Mouse

JordB

Hey all, I've attached the code for you guys to tear apart!

 

Remember that our goal was 'somewhat playable' Doom, not 'viable commercial project', so don't go using this to control your homebrewed space shuttle or anything silly.

PicoMouse_final.ino

Link to comment
Share on other sites

Link to post
Share on other sites

On 9/9/2023 at 11:00 AM, nineclicks said:

Could the Pico code be posted for posterity? Maybe someday it could be useful to someone.

here you are!

Link to comment
Share on other sites

Link to post
Share on other sites

7 minutes ago, JordB said:

Hey all, I've attached the code for you guys to tear apart!

 

Remember that our goal was 'somewhat playable' Doom, not 'viable commercial project', so don't go using this to control your homebrewed space shuttle or anything silly.

PicoMouse_final.ino 2.93 kB · 0 downloads

Hey I wrote this code. Just putting it out there that we know  polling is the wrong way to read button inputs here, it added a bunch of latency and the Pico has interrupts for this exact purpose. This was done as we originally used an esp32 as the microcontroller due to not having a chip with native usb host on hand. The Bluetooth mouse library and the interrupts combined caused kernel panics which I solved by doing the wrong thing and using polling. This is then translated into this code. 

TLDR: If you are going to use this code to headshot people in cs:go please change it to interrupts you will have a much better time 🙂

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, JordB said:

Hey all, I've attached the code for you guys to tear apart!

 

Remember that our goal was 'somewhat playable' Doom, not 'viable commercial project', so don't go using this to control your homebrewed space shuttle or anything silly.

PicoMouse_final.ino 2.93 kB · 2 downloads

I shall use this to play DCS and recreate flying a jet using a mouse from the 1960's. 😄

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, ArielWolle said:

Hey I wrote this code. Just putting it out there that we know  polling is the wrong way to read button inputs here, it added a bunch of latency and the Pico has interrupts for this exact purpose. This was done as we originally used an esp32 as the microcontroller due to not having a chip with native usb host on hand. The Bluetooth mouse library and the interrupts combined caused kernel panics which I solved by doing the wrong thing and using polling. This is then translated into this code. 

TLDR: If you are going to use this code to headshot people in cs:go please change it to interrupts you will have a much better time 🙂

Hey Ariel,
Excellent job on the project, particularly given its age predating both of us. I'm curious: could Linear Interpolation been utilized to minimize the jumpiness and ensure smoother transitions, while also increasing the travel in conclusion increasing the DPI with smooth movement?

I'm looking forward to seeing more of your contributions to videos and similar projects in the future.
 

Link to comment
Share on other sites

Link to post
Share on other sites

4 minutes ago, YEETMAN said:

Hey Ariel,
Excellent job on the project, particularly given its age predating both of us. I'm curious: could Linear Interpolation been utilized to minimize the jumpiness and ensure smoother transitions, while also increasing the travel in conclusion increasing the DPI with smooth movement?

I'm looking forward to seeing more of your contributions to videos and similar projects in the future.
 

Yes and no, linear interpolation needs points in front and behind it. ie INTER-polation not extrapolation. That doesn't mean your idea is wrong, if you know the max frequency of the signal you are going to get ie the max acceleration in this case. As long as your sampling rate is high enough you should be able to guess some intermediate values based on the rate of change of a previous set of points. How this would work or how this would feel idk, but definitely a cool idea. Some grad student has definitely written a paper on this lol.

I was on a student team where we used an algorithm similar to this no clue how that would feel with a device that you physically interact with.

Link to comment
Share on other sites

Link to post
Share on other sites

14 minutes ago, ArielWolle said:

Yes and no, linear interpolation needs points in front and behind it. ie INTER-polation not extrapolation. That doesn't mean your idea is wrong, if you know the max frequency of the signal you are going to get ie the max acceleration in this case. As long as your sampling rate is high enough you should be able to guess some intermediate values based on the rate of change of a previous set of points. How this would work or how this would feel idk, but definitely a cool idea. Some grad student has definitely written a paper on this lol.

I was on a student team where we used an algorithm similar to this no clue how that would feel with a device that you physically interact with.

Surely some ambitious grad student has scribbled down a thesis on this by now, right? If not, I'm totally game to make academic history—well, kind of. Although not sure how interesting turning a Soviet-era mouse into the ultimate gaming peripheral via interpolation magic would be haha. Only problem is, I signed up for innovation, not calculus!

In theory, we possess the two endpoints, but interpolating the in-between frames for the added movement might cause the mouse cursor to jump inconsistently. By utilizing the starting position combined with the added extra movement to hit expected DPI, a smoother trajectory might be achieved. I'm actually intrigued to try this out – perhaps using a basic mouse from a discount store but imitating values to mimic the behavior of the soviet era gaming mouse.
 

As for the tactile experience, I'd anticipate a delay when making rapid mouse movements. I imagine the system would be busy interpolating the in-between frames, so any sudden direction changes might momentarily decelerate this process. Additionally, artificially increasing the DPI during these swift movements might be a good approach, aligning the performance with the expected DPI level for smoother tracking yet this adds further extensive logic and more possibilities of it not working at all.

Link to comment
Share on other sites

Link to post
Share on other sites

4 hours ago, YEETMAN said:

Surely some ambitious grad student has scribbled down a thesis on this by now, right? If not, I'm totally game to make academic history—well, kind of. Although not sure how interesting turning a Soviet-era mouse into the ultimate gaming peripheral via interpolation magic would be haha. Only problem is, I signed up for innovation, not calculus!

In theory, we possess the two endpoints, but interpolating the in-between frames for the added movement might cause the mouse cursor to jump inconsistently. By utilizing the starting position combined with the added extra movement to hit expected DPI, a smoother trajectory might be achieved. I'm actually intrigued to try this out – perhaps using a basic mouse from a discount store but imitating values to mimic the behavior of the soviet era gaming mouse.
 

As for the tactile experience, I'd anticipate a delay when making rapid mouse movements. I imagine the system would be busy interpolating the in-between frames, so any sudden direction changes might momentarily decelerate this process. Additionally, artificially increasing the DPI during these swift movements might be a good approach, aligning the performance with the expected DPI level for smoother tracking yet this adds further extensive logic and more possibilities of it not working at all.

Oh i see what you are saying now, each reset signal make it jump 10 pixels but one pixel at a time, yah that could totally have been done actually super easily,

Link to comment
Share on other sites

Link to post
Share on other sites

5 hours ago, ArielWolle said:

Oh i see what you are saying now, each reset signal make it jump 10 pixels but one pixel at a time, yah that could totally have been done actually super easily,

Yeah, and in theory increasing the DPI of the mouse as well for a smoother experience using the mouse. Well I guess we found a solution to that problem haha.

Anyways,
Nice meeting you Ariel I'm looking forward to seeing more of your contributions to videos and similar projects in the future and brainstorming with you over the forums 🙂.

Link to comment
Share on other sites

Link to post
Share on other sites

On 9/12/2023 at 4:06 PM, gudvinr said:

It doesn't matter.

If one already knows all the details, your explanation brings no value. If it's someone who doesn't know anything about embedded stuff, they couldn't care less either. It's entertaining piece of content and not some "build your own mouse guide".

Get out and read what is going on.

These inaccuracies in the videos and in the press fuel the misconceptions that are already circulating.

 

Just one of the thread I scrolled through this morning:

Arduino bad, STM32 good because Arduino doesn't have FPU.

comment on that: STM32 is bad. Look at the Raspberry Pi 4 with it's fast quad core and low price.

 

People never go out of business.

Link to comment
Share on other sites

Link to post
Share on other sites

On 9/11/2023 at 1:42 PM, Spotty said:

Thread cleaned.

Keep discussion related to the video, not your opinions on the Soviet Union, Communism, or whatever else.

  • No political content, regardless of your views.

So you're okay promoting fascists, got it. Goodbye, LTT, no more income from my YT Premium for you.

Link to comment
Share on other sites

Link to post
Share on other sites

9 minutes ago, imax9000 said:

So you're okay promoting fascists, got it. Goodbye, LTT, no more income from my YT Premium for you.

Bro chill, it's just some old foreign tech

Link to comment
Share on other sites

Link to post
Share on other sites

22 hours ago, imax9000 said:

So you're okay promoting fascists, got it. Goodbye, LTT, no more income from my YT Premium for you.

Dude the Soviet does not even exist anymore 🤣🤣🤣

Link to comment
Share on other sites

Link to post
Share on other sites

23 hours ago, imax9000 said:

So you're okay promoting fascists, got it. Goodbye, LTT, no more income from my YT Premium for you.

 

The forum rules aren't really suited to handling situations where LTT content has more-or-less explicitly political aspects. Same thing happened with the "leftist PC." 

Corps aren't your friends. "Bottleneck calculators" are BS. Only suckers buy based on brand. It's your PC, do what makes you happy.  If your build meets your needs, you don't need anyone else to "rate" it for you. And talking about being part of a "master race" is cringe. Watch this space for further truths people need to hear.

 

Ryzen 7 5800X3D | ASRock X570 PG Velocita | PowerColor Red Devil RX 6900 XT | 4x8GB Crucial Ballistix 3600mt/s CL16

Link to comment
Share on other sites

Link to post
Share on other sites

On 9/23/2023 at 8:01 PM, Middcore said:

 

The forum rules aren't really suited to handling situations where LTT content has more-or-less explicitly political aspects. Same thing happened with the "leftist PC." 

There isn't even anything explicitly political about that video. Maybe, just maybe, the hammer and sickle on the big screen in the background of the video, but nothing else (that symbol is explicitly Soviet btw, very hard to mistake for anything else, and therefore does not constitute much of anything other than thematic aesthetics).

By that logic, the Zhaoxin video from 3 years back, or the Moore Threads GPU video, are also infused with politics since they feature... the Chinese flag 😱

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×