tatatat0
Smash Journeyman
- Joined
- Jan 28, 2015
- Messages
- 412
Not sure if this has already been discovered but I thought I'd throw some notes down on SDI.
2 floating point numbers used for h_pos and y_pos respectively
44 = 42300000
12 = 41400000
Section A:
Format:
number1x number2y = number3 (number4)
number1 is the x_stick position
number2 is the y_stick position
number3 is the h_position_change / x_stick_change
number4 is number3 on the current row - number3 on the previous row
Think of number3's as a list with number4's being the difference of each value in the list
========
255x 128y = 0.061856
255x 129y = 0.061082 (0.000773) or (0.000774)
255x 130y = 0.061082
255x 131y = 0.061082
255x 132y = 0.061082
255x 133y = 0.061082
255x 134y = 0.061082
255x 140y = 0.061082
255x 150y = 0.060309 (0.000773)
150x 255y = 0.060309 (0.000773)
=== End of section A ===
150x 255y = (5.85)
(129x 255y) = (5.925000) // ROUNDED unlike H position
(255x 129y) = (5.924999)
5.925
Section B
Format:
(number1 , number2) = number3, number4
number1 = x_stick_value
number2 = y_stick_value
number3 = h_position_change
number4 = y_position_change
//(number4 is not not in parentheses if number3 isn't)
//number4 is left void if y_stick_value is 128
//symbol in between number1 and 2 doesn't matter, I was attempting to represent it as a function and scrapped it
=======
notepad : (192 - 128) = 4.799999 (
(193 - 128) = 4.875000 (0.075)
(194 - 128) = 4.950001
(195 - 128) = 5.025002
(195 + 195y) = (4.200001, 4.200001) 5.0250002 - 4.200001 = 0.825001
(195x + 199y) = (4.049999, 4.350000) (0.0604477, 0.630435)
(195x + 200y) = (4.049999, 4.350000) (0.0604477,)
(196x + 200y) = (4.050003, 4.350000)
(196x + 201y) = (4.049999, 4.350000)
(196 + 201y) = (4.0500003, 4.349998)
(196 + 201) = (4.049999, 4.350000) (probably this one)
(196, + 202) = (4.050003, 4.350000)
=== End of section B ===
SDI FORMULA
x_stick_change = x_stick_value - 128 (difference from neutral position)
y_stick_change = y_stick_value - 128 (difference from neutral position)
if (x > magic_deadzone) {
h_pos_y_deduction = (y_stick_change * 0.000773) //y_stick_change is rounded to some nearest unknown number frequently
h_pos = (0.07500 * x_stick_change) - (h_pos_y_deduction)
v_pos_x_deduction = (x_stick_change * 0.000773) //4 significant figures. rounded to nearest thousandth. Still has y_stick_change rounded to an unknown number frequently. More info on that at the bottom
y_pos = (0.07500 * y_stick_change) - (h_pos_y_deduction)
}
On rounding stick changes:
So sometimes the deduction value is not changed even when the respective stick position changes (see SECTION A tests)
the magic number 0.000773 was acquired by several tests at SECTION A with different y pos's with the same x pos and gathering the h pos change
the (h_pos divided by x_stick_change) can be represented as a table of values
Using the method of common differences you can
find the difference of each value and compare them to reveal it to be a linear equation
How I did it:
I looked at and set the (H/V player1 position values) to rounded numbers up to and during the frame I had player 2 hit me using frame advance and dolphin debug. I inputted various x and y stick positions and recorded the horizontal and vertical position changes with many times and recorded the results.
For any chance of this being a false pattern:
This was done on FD at
H-position: 44.0
V-position: 12.0
44 = 42300000
12 = 41400000
Section A:
Format:
number1x number2y = number3 (number4)
number1 is the x_stick position
number2 is the y_stick position
number3 is the h_position_change / x_stick_change
number4 is number3 on the current row - number3 on the previous row
Think of number3's as a list with number4's being the difference of each value in the list
========
255x 128y = 0.061856
255x 129y = 0.061082 (0.000773) or (0.000774)
255x 130y = 0.061082
255x 131y = 0.061082
255x 132y = 0.061082
255x 133y = 0.061082
255x 134y = 0.061082
255x 140y = 0.061082
255x 150y = 0.060309 (0.000773)
150x 255y = 0.060309 (0.000773)
=== End of section A ===
150x 255y = (5.85)
(129x 255y) = (5.925000) // ROUNDED unlike H position
(255x 129y) = (5.924999)
5.925
Section B
Format:
(number1 , number2) = number3, number4
number1 = x_stick_value
number2 = y_stick_value
number3 = h_position_change
number4 = y_position_change
//(number4 is not not in parentheses if number3 isn't)
//number4 is left void if y_stick_value is 128
//symbol in between number1 and 2 doesn't matter, I was attempting to represent it as a function and scrapped it
=======
notepad : (192 - 128) = 4.799999 (
(193 - 128) = 4.875000 (0.075)
(194 - 128) = 4.950001
(195 - 128) = 5.025002
(195 + 195y) = (4.200001, 4.200001) 5.0250002 - 4.200001 = 0.825001
(195x + 199y) = (4.049999, 4.350000) (0.0604477, 0.630435)
(195x + 200y) = (4.049999, 4.350000) (0.0604477,)
(196x + 200y) = (4.050003, 4.350000)
(196x + 201y) = (4.049999, 4.350000)
(196 + 201y) = (4.0500003, 4.349998)
(196 + 201) = (4.049999, 4.350000) (probably this one)
(196, + 202) = (4.050003, 4.350000)
=== End of section B ===
SDI FORMULA
x_stick_change = x_stick_value - 128 (difference from neutral position)
y_stick_change = y_stick_value - 128 (difference from neutral position)
if (x > magic_deadzone) {
h_pos_y_deduction = (y_stick_change * 0.000773) //y_stick_change is rounded to some nearest unknown number frequently
h_pos = (0.07500 * x_stick_change) - (h_pos_y_deduction)
v_pos_x_deduction = (x_stick_change * 0.000773) //4 significant figures. rounded to nearest thousandth. Still has y_stick_change rounded to an unknown number frequently. More info on that at the bottom
y_pos = (0.07500 * y_stick_change) - (h_pos_y_deduction)
}
On rounding stick changes:
So sometimes the deduction value is not changed even when the respective stick position changes (see SECTION A tests)
the magic number 0.000773 was acquired by several tests at SECTION A with different y pos's with the same x pos and gathering the h pos change
the (h_pos divided by x_stick_change) can be represented as a table of values
Using the method of common differences you can
find the difference of each value and compare them to reveal it to be a linear equation
How I did it:
I looked at and set the (H/V player1 position values) to rounded numbers up to and during the frame I had player 2 hit me using frame advance and dolphin debug. I inputted various x and y stick positions and recorded the horizontal and vertical position changes with many times and recorded the results.
For any chance of this being a false pattern:
This was done on FD at
H-position: 44.0
V-position: 12.0
Last edited: