Shrinking T1 Script?

Titan One general support. Questions, firmware update, feature request.

Shrinking T1 Script?

Postby VvV » Wed Aug 21, 2019 7:43 am

This script reached the maximum bytecode length. I feel like there are some things in here that are unnecessarily long and maybe can be shortened?
Code: Select all
// GPC Online Library
// ps4ufc_combo_short_cut.gpc
int active = FALSE;
unmap PS4_SHARE;
main {
        // Mapped to SHARE
    if(get_val(PS4_SHARE)) {
        combo_run(SwiftClinch);
    }
 
        // Mapped to LEFT
    if(get_val(PS4_LEFT)) {
        combo_run(JabLegkKick);
    }
 
        // Mapped to TOUCH
    if(get_val(PS4_TOUCH)) {
        combo_run(Str8PunchKick);
    }
 
    // Mapped to Down
    if(get_val(PS4_DOWN)) {
        combo_run(Str8Uppercut);
 
        // Mapped to R3
    if(get_val(PS4_R3)) {
        combo_run(BodyStr8Elbow);
    }
        // Mapped to RIGHT
    if(get_val(PS4_RIGHT)) {
        combo_run(Str8Uppercut2);
    }
 
}
 
}
 
 
combo Str8Uppercut {
    set_val(PS4_TRIANGLE, 100);
    wait(80);
    set_val(PS4_LX, -38);
    set_val(PS4_TRIANGLE, 100);
    wait(60);
    set_val(PS4_LX, -56);
    set_val(PS4_TRIANGLE, 0);
    wait(30);
    set_val(PS4_LX, -91);
    wait(10);
    set_val(PS4_LX, -100);
    wait(70);
    set_val(PS4_LX, -100);
    set_val(PS4_SQUARE, 100);
    wait(30);
    set_val(PS4_LX, 0);
    set_val(PS4_SQUARE, 100);
    wait(10);
    set_val(PS4_LX, 38);
    set_val(PS4_SQUARE, 100);
    wait(10);
    set_val(PS4_LX, 0);
    set_val(PS4_SQUARE, 100);
    wait(40);
    set_val(PS4_SQUARE, 0);
}
 
combo SwiftClinch {
    set_val(PS4_L1, 100);
    wait(120);
    set_val(PS4_L1, 100);
    set_val(PS4_LX, 49);
    set_val(PS4_LY, 63);
    wait(70);
    set_val(PS4_L1, 100);
    set_val(PS4_LX, 61);
    set_val(PS4_LY, 84);
    wait(50);
    set_val(PS4_L1, 100);
    set_val(PS4_LX, 49);
    set_val(PS4_LY, 53);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_LX, 0);
    set_val(PS4_LY, 0);
    wait(60);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -31);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -55);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -76);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -97);
    wait(90);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -41);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, 0);
    wait(100);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -39);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -67);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -100);
    wait(100);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -34);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, 0);
    wait(70);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -56);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -92);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -100);
    wait(90);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -72);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, 0);
    wait(80);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -38);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -74);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -100);
    wait(110);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -44);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, 0);
    wait(320);
    set_val(PS4_L1, 0);
}
 
 
 
combo Str8Uppercut2 {
    set_val(PS4_TRIANGLE, 100);
    wait(90);
    set_val(PS4_LX, 44);
    set_val(PS4_TRIANGLE, 100);
    wait(10);
    set_val(PS4_LX, 73);
    set_val(PS4_TRIANGLE, 100);
    wait(10);
    set_val(PS4_LX, 100);
    set_val(PS4_TRIANGLE, 100);
    wait(30);
    set_val(PS4_LX, 100);
    set_val(PS4_TRIANGLE, 0);
    wait(80);
    set_val(PS4_LX, 100);
    set_val(PS4_SQUARE, 100);
    wait(130);
    set_val(PS4_LX, 79);
    set_val(PS4_SQUARE, 100);
    wait(10);
    set_val(PS4_LX, -34);
    set_val(PS4_SQUARE, 0);
    wait(20);
    set_val(PS4_LX, 0);
}
combo BodyStr8Elbow {
    set_val(PS4_L2, 100);
    wait(60);
    set_val(PS4_L2, 100);
    set_val(PS4_TRIANGLE, 100);
    wait(180);
    set_val(PS4_L2, 100);
    set_val(PS4_TRIANGLE, 0);
    wait(70);
    set_val(PS4_L2, 0);
    wait(110);
    set_val(PS4_L1, 100);
    wait(40);
    set_val(PS4_L1, 100);
    set_val(PS4_SQUARE, 100);
    wait(140);
    set_val(PS4_L1, 100);
    set_val(PS4_SQUARE, 0);
    wait(330);
    set_val(PS4_L1, 0);
}
combo Str8PunchKick {
    set_val(PS4_TRIANGLE, 100);
    wait(180);
    set_val(PS4_TRIANGLE, 0);
    wait(110);
    set_val(PS4_CROSS, 100);
    wait(140);
    set_val(PS4_CROSS, 0);
}
 
combo JabLegkKick {
    set_val(PS4_SQUARE, 100);
    wait(190);
    set_val(PS4_SQUARE, 0);
    wait(90);
    set_val(PS4_CIRCLE, 100);
    wait(180);
    set_val(PS4_CIRCLE, 0);
}
 
 
combo LeftUpRightDown {
    set_val(PS4_RX, -39);
    wait(40);
    set_val(PS4_RX, -63);
    wait(20);
    set_val(PS4_RX, -60);
    set_val(PS4_RY, -38);
    wait(20);
    set_val(PS4_RX, -39);
    set_val(PS4_RY, -67);
    wait(10);
    set_val(PS4_RX, 0);
    set_val(PS4_RY, -76);
    wait(40);
    set_val(PS4_RX, 30);
    set_val(PS4_RY, -79);
    wait(10);
    set_val(PS4_RX, 60);
    set_val(PS4_RY, -76);
    wait(30);
    set_val(PS4_RX, 80);
    set_val(PS4_RY, -45);
    wait(10);
    set_val(PS4_RX, 77);
    set_val(PS4_RY, 0);
    wait(20);
    set_val(PS4_RX, 45);
    wait(20);
    set_val(PS4_RX, 0);
    set_val(PS4_RY, 35);
    wait(30);
    set_val(PS4_RX, -32);
    set_val(PS4_RY, 41);
    wait(20);
    set_val(PS4_RX, -60);
    set_val(PS4_RY, 33);
    wait(10);
    set_val(PS4_RX, -77);
    set_val(PS4_RY, 0);
    wait(50);
    set_val(PS4_RX, -96);
    set_val(PS4_RY, -37);
    wait(20);
    set_val(PS4_RX, -70);
    set_val(PS4_RY, -57);
    wait(10);
    set_val(PS4_RX, -38);
    set_val(PS4_RY, -77);
    wait(10);
    set_val(PS4_RX, 0);
    set_val(PS4_RY, -81);
    wait(20);
    set_val(PS4_RX, 43);
    set_val(PS4_RY, -77);
    wait(10);
    set_val(PS4_RX, 65);
    set_val(PS4_RY, -67);
    wait(30);
    set_val(PS4_RX, 81);
    set_val(PS4_RY, -38);
    wait(10);
    set_val(PS4_RX, 80);
    set_val(PS4_RY, 0);
    wait(40);
    set_val(PS4_RX, 46);
    set_val(PS4_RY, 39);
    wait(20);
    set_val(PS4_RX, 0);
    set_val(PS4_RY, 46);
    wait(20);
    set_val(PS4_RX, -30);
    set_val(PS4_RY, 40);
    wait(20);
    set_val(PS4_RX, -70);
    set_val(PS4_RY, 0);
    wait(20);
    set_val(PS4_RX, -100);
    wait(20);
    set_val(PS4_RX, -100);
    set_val(PS4_RY, -30);
    wait(20);
    set_val(PS4_RX, -94);
    set_val(PS4_RY, -57);
    wait(20);
    set_val(PS4_RX, -52);
    set_val(PS4_RY, -85);
    wait(20);
    set_val(PS4_RX, 0);
    set_val(PS4_RY, -93);
    wait(20);
    set_val(PS4_RY, -70);
    wait(30);
    set_val(PS4_RY, -38);
    wait(10);
    set_val(PS4_RY, 0);
}
function color(c1, c2, c3, c4)
{
    set_led(LED_1, c1);
    set_led(LED_2, c2);
    set_led(LED_3, c3);
    set_led(LED_4, c4);
}



These are the 2 longest combos that I feel can be shorter. They were both made with combo magik.


Code: Select all
combo SwiftClinch {
    set_val(PS4_L1, 100);
    wait(120);
    set_val(PS4_L1, 100);
    set_val(PS4_LX, 49);
    set_val(PS4_LY, 63);
    wait(70);
    set_val(PS4_L1, 100);
    set_val(PS4_LX, 61);
    set_val(PS4_LY, 84);
    wait(50);
    set_val(PS4_L1, 100);
    set_val(PS4_LX, 49);
    set_val(PS4_LY, 53);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_LX, 0);
    set_val(PS4_LY, 0);
    wait(60);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -31);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -55);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -76);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -97);
    wait(90);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -41);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, 0);
    wait(100);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -39);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -67);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -100);
    wait(100);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -34);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, 0);
    wait(70);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -56);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -92);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -100);
    wait(90);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -72);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, 0);
    wait(80);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -38);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -74);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -100);
    wait(110);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, -44);
    wait(10);
    set_val(PS4_L1, 100);
    set_val(PS4_RX, 0);
    wait(320);
    set_val(PS4_L1, 0);
}
 
combo FakeTakeDown {
    set_val(PS4_L2, 100);
    wait(10);
    set_val(PS4_R2, 100);
    set_val(PS4_L2, 100);
    wait(10);
    set_val(PS4_R1, 100);
    set_val(PS4_R2, 100);
    set_val(PS4_L2, 100);
    wait(50);
    set_val(PS4_R1, 100);
    set_val(PS4_R2, 100);
    set_val(PS4_L2, 100);
    set_val(PS4_RX, 41);
    wait(10);
    set_val(PS4_R1, 100);
    set_val(PS4_R2, 100);
    set_val(PS4_L2, 100);
    set_val(PS4_RX, 93);
    set_val(PS4_RY, 38);
    wait(100);
    set_val(PS4_R1, 100);
    set_val(PS4_R2, 100);
    set_val(PS4_L2, 100);
    set_val(PS4_RX, -56);
    set_val(PS4_RY, 0);
    wait(10);
    set_val(PS4_R1, 100);
    set_val(PS4_R2, 100);
    set_val(PS4_L2, 100);
    set_val(PS4_RX, 0);
    wait(20);
    set_val(PS4_R1, 0);
    set_val(PS4_R2, 100);
    set_val(PS4_L2, 0);
    wait(30);
    set_val(PS4_R2, 0);
}
User avatar
VvV
First Sergeant
First Sergeant
 
Posts: 60
Joined: Mon Jun 18, 2018 12:04 pm

Re: Shrinking T1 Script?

Postby Scachi » Wed Aug 21, 2019 8:25 am

It looks like there are a lot of stick movements in the combos
PS4_LX, PS4_LY, PS4_RX, PS4_RY

I don't know the game so I can't tell if they are really required.
Can't you use dpad for the movements too/ to trigger the combos ?
If you can then record the combos using dpad instead of the sticks again and the combos should get shorter.

If a combo requires one button to be held down all the time you can use set_val in the main section for that button as long as the combo runs to save some space. Here it is for the SwiftClinch
Code: Select all
 
// GPC Online Library
// ps4ufc_combo_short_cut.gpc
int active = FALSE;
unmap PS4_SHARE;
main {
        // Mapped to SHARE
    if(get_val(PS4_SHARE)) {
        combo_run(SwiftClinch);
    }
    // the swiftclinch seems to hold down L1 all the time
    // so do it in main while the combo is running to remove all set_val(PS4_L1,100) line from the combo
    if (combo_running(SwiftClinch)) set_val(PS4_L1, 100);
}
 
combo SwiftClinch {
    wait(120);
    set_val(PS4_LX, 49);
    set_val(PS4_LY, 63);
    wait(70);
    set_val(PS4_LX, 61);
    set_val(PS4_LY, 84);
    wait(50);
    set_val(PS4_LX, 49);
    set_val(PS4_LY, 53);
    wait(10);
    set_val(PS4_LX, 0);
    set_val(PS4_LY, 0);
    wait(60);
    set_val(PS4_RX, -31);
    wait(10);
    set_val(PS4_RX, -55);
    wait(10);
    set_val(PS4_RX, -76);
    wait(10);
    set_val(PS4_RX, -97);
    wait(90);
    set_val(PS4_RX, -41);
    wait(10);
    set_val(PS4_RX, 0);
    wait(100);
    set_val(PS4_RX, -39);
    wait(10);
    set_val(PS4_RX, -67);
    wait(10);
    set_val(PS4_RX, -100);
    wait(100);
    set_val(PS4_RX, -34);
    wait(10);
    set_val(PS4_RX, 0);
    wait(70);
    set_val(PS4_RX, -56);
    wait(10);
    set_val(PS4_RX, -92);
    wait(10);
    set_val(PS4_RX, -100);
    wait(90);
    set_val(PS4_RX, -72);
    wait(10);
    set_val(PS4_RX, 0);
    wait(80);
    set_val(PS4_RX, -38);
    wait(10);
    set_val(PS4_RX, -74);
    wait(10);
    set_val(PS4_RX, -100);
    wait(110);
    set_val(PS4_RX, -44);
    wait(10);
    set_val(PS4_RX, 0);
    wait(320);
}
 


Some more options to reduce the size more:
  1. Use the right sticks nearest to zero and -100 values only, remove all set_val(PS4_RX,somevalue) that are just values between them, keep the wait only.
    Code: Select all
    combo SwiftClinch {
        wait(120);
        set_val(PS4_LX, 49);
        set_val(PS4_LY, 63);
        wait(70);
        set_val(PS4_LX, 61);
        set_val(PS4_LY, 84);
        wait(50);
        set_val(PS4_LX, 49);
        set_val(PS4_LY, 53);
        wait(10);
        set_val(PS4_LX, 0);
        set_val(PS4_LY, 0);
        set_val(PS4_RX, 0);
        wait(60);
        wait(10);
        wait(10);
        wait(10);
        set_val(PS4_RX, -100);
        wait(90);
        wait(10);
        set_val(PS4_RX, 0);
        wait(100);
        wait(10);
        wait(10);
        set_val(PS4_RX, -100);
        wait(100);
        wait(10);
        set_val(PS4_RX, 0);
        wait(70);
        wait(10);
        wait(10);
        set_val(PS4_RX, -100);
        wait(90);
        wait(10);
        set_val(PS4_RX, 0);
        wait(80);
        wait(10);
        wait(10);
        set_val(PS4_RX, -100);
        wait(110);
        wait(10);
        set_val(PS4_RX, 0);
        wait(320);
    }
     
  2. Now sum the wait time for all the multiple wait;wait; only lines
    Code: Select all
    combo SwiftClinch {
        wait(120);
        set_val(PS4_LX, 49);
        set_val(PS4_LY, 63);
        wait(70);
        set_val(PS4_LX, 61);
        set_val(PS4_LY, 84);
        wait(50);
        set_val(PS4_LX, 49);
        set_val(PS4_LY, 53);
        wait(10);
        set_val(PS4_LX, 0);
        set_val(PS4_LY, 0);
        set_val(PS4_RX, 0);
        wait(90);
        set_val(PS4_RX, -100);
        wait(100);
        set_val(PS4_RX, 0);
        wait(120);
        set_val(PS4_RX, -100);
        wait(110);
        set_val(PS4_RX, 0);
        wait(90);
        set_val(PS4_RX, -100);
        wait(100);
        set_val(PS4_RX, 0);
        wait(100);
        set_val(PS4_RX, -100);
        wait(120);
        set_val(PS4_RX, 0);
        wait(320);
    }

Doing the same steps for your other recorded combo should be possible too.
User avatar
Scachi
Brigadier General
Brigadier General
 
Posts: 2240
Joined: Wed May 11, 2016 6:25 am
Location: Germany

Re: Shrinking T1 Script?

Postby VvV » Wed Aug 21, 2019 10:04 am

Summing up the wait times and removing the extra PS4_RX's did the trick for me thanks for this :joia:

Scachi wrote:It looks like there are a lot of stick movements in the combos
PS4_LX, PS4_LY, PS4_RX, PS4_RY

I don't know the game so I can't tell if they are really required.
Can't you use dpad for the movements too/ to trigger the combos ?
If you can then record the combos using dpad instead of the sticks again and the combos should get shorter.

If a combo requires one button to be held down all the time you can use set_val in the main section for that button as long as the combo runs to save some space. Here it is for the SwiftClinch
Code: Select all
 
// GPC Online Library
// ps4ufc_combo_short_cut.gpc
int active = FALSE;
unmap PS4_SHARE;
main {
        // Mapped to SHARE
    if(get_val(PS4_SHARE)) {
        combo_run(SwiftClinch);
    }
    // the swiftclinch seems to hold down L1 all the time
    // so do it in main while the combo is running to remove all set_val(PS4_L1,100) line from the combo
    if (combo_running(SwiftClinch)) set_val(PS4_L1, 100);
}
 
combo SwiftClinch {
    wait(120);
    set_val(PS4_LX, 49);
    set_val(PS4_LY, 63);
    wait(70);
    set_val(PS4_LX, 61);
    set_val(PS4_LY, 84);
    wait(50);
    set_val(PS4_LX, 49);
    set_val(PS4_LY, 53);
    wait(10);
    set_val(PS4_LX, 0);
    set_val(PS4_LY, 0);
    wait(60);
    set_val(PS4_RX, -31);
    wait(10);
    set_val(PS4_RX, -55);
    wait(10);
    set_val(PS4_RX, -76);
    wait(10);
    set_val(PS4_RX, -97);
    wait(90);
    set_val(PS4_RX, -41);
    wait(10);
    set_val(PS4_RX, 0);
    wait(100);
    set_val(PS4_RX, -39);
    wait(10);
    set_val(PS4_RX, -67);
    wait(10);
    set_val(PS4_RX, -100);
    wait(100);
    set_val(PS4_RX, -34);
    wait(10);
    set_val(PS4_RX, 0);
    wait(70);
    set_val(PS4_RX, -56);
    wait(10);
    set_val(PS4_RX, -92);
    wait(10);
    set_val(PS4_RX, -100);
    wait(90);
    set_val(PS4_RX, -72);
    wait(10);
    set_val(PS4_RX, 0);
    wait(80);
    set_val(PS4_RX, -38);
    wait(10);
    set_val(PS4_RX, -74);
    wait(10);
    set_val(PS4_RX, -100);
    wait(110);
    set_val(PS4_RX, -44);
    wait(10);
    set_val(PS4_RX, 0);
    wait(320);
}
 


Some more options to reduce the size more:
  1. Use the right sticks nearest to zero and -100 values only, remove all set_val(PS4_RX,somevalue) that are just values between them, keep the wait only.
    Code: Select all
    combo SwiftClinch {
        wait(120);
        set_val(PS4_LX, 49);
        set_val(PS4_LY, 63);
        wait(70);
        set_val(PS4_LX, 61);
        set_val(PS4_LY, 84);
        wait(50);
        set_val(PS4_LX, 49);
        set_val(PS4_LY, 53);
        wait(10);
        set_val(PS4_LX, 0);
        set_val(PS4_LY, 0);
        set_val(PS4_RX, 0);
        wait(60);
        wait(10);
        wait(10);
        wait(10);
        set_val(PS4_RX, -100);
        wait(90);
        wait(10);
        set_val(PS4_RX, 0);
        wait(100);
        wait(10);
        wait(10);
        set_val(PS4_RX, -100);
        wait(100);
        wait(10);
        set_val(PS4_RX, 0);
        wait(70);
        wait(10);
        wait(10);
        set_val(PS4_RX, -100);
        wait(90);
        wait(10);
        set_val(PS4_RX, 0);
        wait(80);
        wait(10);
        wait(10);
        set_val(PS4_RX, -100);
        wait(110);
        wait(10);
        set_val(PS4_RX, 0);
        wait(320);
    }
     
  2. Now sum the wait time for all the multiple wait;wait; only lines
    Code: Select all
    combo SwiftClinch {
        wait(120);
        set_val(PS4_LX, 49);
        set_val(PS4_LY, 63);
        wait(70);
        set_val(PS4_LX, 61);
        set_val(PS4_LY, 84);
        wait(50);
        set_val(PS4_LX, 49);
        set_val(PS4_LY, 53);
        wait(10);
        set_val(PS4_LX, 0);
        set_val(PS4_LY, 0);
        set_val(PS4_RX, 0);
        wait(90);
        set_val(PS4_RX, -100);
        wait(100);
        set_val(PS4_RX, 0);
        wait(120);
        set_val(PS4_RX, -100);
        wait(110);
        set_val(PS4_RX, 0);
        wait(90);
        set_val(PS4_RX, -100);
        wait(100);
        set_val(PS4_RX, 0);
        wait(100);
        set_val(PS4_RX, -100);
        wait(120);
        set_val(PS4_RX, 0);
        wait(320);
    }

Doing the same steps for your other recorded combo should be possible too.
User avatar
VvV
First Sergeant
First Sergeant
 
Posts: 60
Joined: Mon Jun 18, 2018 12:04 pm

Re: Shrinking T1 Script?

Postby Scachi » Wed Aug 21, 2019 10:36 am

:smile0517:
User avatar
Scachi
Brigadier General
Brigadier General
 
Posts: 2240
Joined: Wed May 11, 2016 6:25 am
Location: Germany


Return to Titan One Device

Who is online

Users browsing this forum: No registered users and 22 guests

cron