My initial thought is ur gear ratio is incorrect. For the other issue, I suspect ur gyro is rotated vs what u consider the front and you’ll need to just offset the angle.
What are you considering ‘wrong’ for x and y. Understand that the FRC coordinate system is x+ away from the driver station and y + to the left. Most people expect x+ to be away from the driver station and y+ to be to the right, but the FRC Coordinates are x and y as viewed from the right side of the field not from the driver station perspective.
Make sure X+ is forwards, and Y+ is left as viewing from the driver station. This makes Z+ up and is the standard right hand coordinate axis system assumed.
So, what that means is you should check that the “drive” function of your swerve goes forwards when given a +x value and left when given a +y value. Then make sure your swerve drive kinematics is defined with the module locations in the same coordinate system.
Module positions FL, FR, BL, BR would be the following (assuming center of robot is 0,0)
FL (+,+)
FR (+,-)
BL (-,+)
BR (-,-)
Also, just a heads up because joystick input can get confusing, XboxController analog sticks give their values in a different coordinate axis, we usually fix this by changing those before they are fed into the drivetrain’s “drive” function.
IE on XboxController getLeftY() is actually negative X and getLeftX() is actually negative Y in field coordinates.