Is the macro controller frame-perfect?

Porcupine

New Member
I am new and currently wondering if the Viking360 Macro Controller is for me. What I need is a programmable controller than can execute macros with frame-perfect precision. I only play games that for whatever reason are not too popular with the masses. I play many of them at a fairly masterful level of skill, but I still wish to utilize macros to seek out abilities no one else has ever seen before, as well as to simply test the games for frame-data knowledge and such.

In order to do this, the controller needs to be able to perform its macros without even the slightest error. Every input must match up within an exact specified 1/60 second interval. Or more precisely, maybe 1/59.94 second interval. There should be no "drift" in inputs, such as some inputs occasionally shifting into the next frame, because this will disrupt the most difficult strict-timing techniques.

Reading up on the Timeline Editor, it appears to be configured by default in 1/100 second intervals, but by setting the Speed Multiplier to 0.6 (or 6.0) this would become a perfect 1/60 second interval. Does the Macro Controller actually work that way, and output frame-perfect signals when programmed as such?

I am also looking into other products such as the CronusMAX/TitanOne device. That device's software appears to define time in increments of 1 ms, though I haven't tried it so I'm not sure. Time increments of 1 millisecond would be no good in many cases for frame-perfect precision because 1/60 of a second is 16.66667 milliseconds.

Thus far I have only used or fought against various official turbo controllers in various games. None of these controllers seem to perform their turbo inputs with frame-perfect precision. Therefore, in a contest of mashing a random player wins, sometimes by a wide margin. In an attempt to perform simple, but frame-precise combos (early trials in Street Fighter 4, etc) turbo controllers succeed half the time and fail half the time. This is still good enough to get the trials done, but may not be good enough to use in a real fight.

If the Viking360 Macro Controller is not frame-perfect, if possible could someone explain why, and by how much it is not? For example, how frequent are the errors, how do they manifest themselves, and what causes them? Is it the Timeline Editor software, or the modchop's inherent timing abilities, etc?
 
Last edited:

bonefisher

Well-Known Member
Oh my! You talking about a perfect connection with the internet. Where did you come from? To answer this short you can make the perfect macro on the Viking 360 macro controller and dial in on your frame rate. Now depending on your connection lag and all your response time with all your other equipment is the factor. Also the internet fluctuates all the time like waves. Check your connection different times of the day with a speed test to see what I mean.... Now if your looking for the only way that you mite achieve your task. Your looking at the #1 controller for 360 or One consoles. I have not seen anything better!
 

odingalt

Well-Known Member
Staff member
This is a fascinating question. I will try to explain how the Viking360 macro controller functions and we can generate some more dialog on this.

The macro controller's CPU has 5 hardware timer interrupts. It has a 12MHz external crystal but I believe the CPU is clocking at either 8MHz or 16MHz (can't remember at the moment and too lazy to go look it up). Depending on how you set up your macro and the "speed multiplier" (more on that below), the CPU will set up it's hardware timer interrupt to occur at regular intervals. So essentially if you set the Macro controller's "frame" to be 1 millisecond, it is using a hardware timer interrupt to stop what it's doing down in a few clock cycles (microseconds) and plays that button press.

When you go into the Windows editing software, there is a "speed multiplier" setting that can be adjusted from 0.10 to 10.00 out to the hundredths place. The default value is 1.00. So, when timeline multiplier is set to 1.00, each "hash mark" in the timeline editor is worth 0.01 seconds (10 milliseconds). The timeline multiplier can be increased to 10.00, which makes each hash mark worth 0.001 seconds (1 millisecond). You could set the timeline multiplier to 8.33, which would make each hash mark worth 0.00833, or 8.33 milliseconds.

Porcupine, without going farther (and confusing myself, to be honest it's been a little while since I dug into the macro controller source code), read the above paragraphs and let me know if it makes sense, and maybe try to determine if there exists a way to get what you need when we only go out to the hundredths place with our speed multiplier? I.e. is an interval of 8.33 milliseconds close enough? You could use two hash marks with a speed multiplier of 8.33 to achieve 16.66 ms of delay. But it's still not exactly 1/60 and I don't see how it's possible to get exactly 1/60th with the way the macro software is currently set up.
 

Porcupine

New Member
Thanks for the great responses, guys.

When timeline multiplier is set to 1.00, each "hash mark" in the timeline editor is worth 0.01 seconds. The timeline multiplier can be increased to 10.00, which makes each hash mark worth 0.001 seconds.


If I'm not mistaken, from your own words here it appears that the timeline multiplier divides each hash mark, not multiplies. So shouldn't setting this Speed Multiplier to 6.0 be what I want? That would make each hash mark worth 0.01/6 seconds, or .001666667 seconds, which is perfect for me. Assuming the Timeline Editor software and/or controller firmware works as it appears and divides precisely (I know this is not a safe assumption which is why I created this thread).

Based on your description of the macro controller CPU's operation, it seems like a good bet that my assumption would be correct, though. Just an aside, I am curious why 5 hardware timer interrupts are required, as opposed to one?

Anyway if my math is mixed up and I can only get 8.33 millisecond hashes, that would probably still be good enough for my purposes as the errors would be sufficiently rare. But 8 whole milliseconds would probably not be good enough, which is what worries me might be the case with the CronusMAX software.

You talking about a perfect connection with the internet.

We don't have to worry about that because for starters I will be trying all my macro ideas offline. I only require that they work offline.
 

WHITE 4ND N3RDY

ModdingBros Representative
Yes your math is correct. There are many ways to figure out specific timings. I try to keep it real simplistic.

We know that @ stock speed multiplier one hash mark = 10MS. So say u have your multiplier set @ 6.00 (like your math above) just use your Stock Multiplier figure 10 MS "@ one hash mark" divide that by your new speed multiplier, Ex, 6.00 (10MS/ 6.00 SM=1.66666667) Now we will divide this figure by 1 second which is 1000MS (1.66666667/1000MS=0.00166667) 0.0016667 is your adjust figure per hash mark with speed multiplier @ 6.00.

This formula works in every situation. Let's say I draw a line on my right trigger that's 30 hash marks long with the multiplier set @ 1,73. What would be my shots per second?

30 hash marks @ stock 1.00 SM =300 MS.
Now I'll take 300MS divide it by my multiplier 1.73 = 173.41040462. Now I'll divide this figure by 1 second converted to MS 1000. So 173.41040462/1000MS= 0.1734104 So now I know that my right trigger is being held down for .17 seconds ( I just round the third number after the decimal up or down)

I know it may seem complicated but as long as u count your hash marks @ stock multiplier 1.0 (10MS a hash mark) then divide it by the multiplier u have set in your timeline then divided that figure by 1 second "1000MS" you will have your adjusted figure. Hope this helps explain this process better for u.
 
Last edited:

odingalt

Well-Known Member
Staff member
Thanks for the great responses, guys.
When timeline multiplier is set to 1.00, each "hash mark" in the timeline editor is worth 0.01 seconds. The timeline multiplier can be increased to 10.00, which makes each hash mark worth 0.001 seconds.

If I'm not mistaken, from your own words here it appears that the timeline multiplier divides each hash mark, not multiplies. So shouldn't setting this Speed Multiplier to 6.0 be what I want? That would make each hash mark worth 0.01/6 seconds, or .001666667 seconds, which is perfect for me. Assuming the Timeline Editor software and/or controller firmware works as it appears and divides precisely (I know this is not a safe assumption which is why I created this thread).

I don't know how else to explain it other than to say: If you increase the speed multiplier, your macro will play back faster. If you decrease the speed multiplier, your macro will play slow. When you build a macro at speed multiplier of 1.0, and increase that speed multiplier to 10.0, then your macro will play back 10 times faster than you originall drew it on the screen. If you set the timeline multiplier to 0.10, the macro will play back 10 times slow.

Based on your description of the macro controller CPU's operation, it seems like a good bet that my assumption would be correct, though. Just an aside, I am curious why 5 hardware timer interrupts are required, as opposed to one?

The CPU that we chose for our modchip happen to have 5 hardware timer interrupts. So, rather than writing a software based RTOS to handle timing, we went ahead and created 5 "slots", one each for each of the hardware timer interrupts. The CPU keeps very accurate time this way and there is less processor overhead. Basically long story short the hardware happen to have 5 hardware timer interrupts and so we use them.

Anyway if my math is mixed up and I can only get 8.33 millisecond hashes, that would probably still be good enough for my purposes as the errors would be sufficiently rare. But 8 whole milliseconds would probably not be good enough, which is what worries me might be the case with the CronusMAX software.
 
Top