Skip to content

Instantly share code, notes, and snippets.

@ceski-1
Last active July 9, 2024 23:23
Show Gist options
  • Save ceski-1/61630b169d845453ca209f25a6093e4b to your computer and use it in GitHub Desktop.
Save ceski-1/61630b169d845453ca209f25a6093e4b to your computer and use it in GitHub Desktop.
Mouse Sensitivity Conversion

Mouse Sensitivity Conversion

Mouse acceleration must be disabled in each source port.

Vanilla/Chocolate/Crispy/Eternity Engine to Woof!

woof = vanilla = chocolate = crispy = eternity

DSDA-Doom to Woof!

woof_turn   = (mouse_sensitivity_horiz + dsda_fine_sensitivity / 100) * 5 / 4 - 5
woof_look   = mouse_sensitivity_mlook * 5 / 4 - 5
woof_strafe = (mouse_sensitivity_horiz + dsda_fine_sensitivity / 100) * 5 / movement_mousestrafedivisor - 5
woof_move   = mouse_sensitivity_vert * 5 / 4 - 5

GZDoom to Woof!

// GZDoom mouse strafing and vertical movement have unknown behavior.

woof_turn = m_sensitivity_x * m_yaw * 20 - 5
woof_look = m_sensitivity_y * m_pitch * 20 - 5

Odamex to Woof!

// Odamex mouse strafing and vertical movement vary by framerate due to rounding error.

woof_turn = mouse_sensitivity * m_yaw * 40 - 5
woof_look = mouse_sensitivity * m_pitch * 20 - 5

Equivalent Sensitivities

The config values listed below produce equivalent sensitivities across each source port. The results are similar to Chocolate Doom's default settings.

Woof!

# woof.cfg
mouse_sensitivity            15
mouse_sensitivity_y          15
mouse_sensitivity_strafe     15
mouse_sensitivity_y_look     15
mouse_acceleration           0

Vanilla Doom

# default.cfg
mouse_sensitivity             15

# dosbox-staging.conf
[mouse]
mouse_sensitivity    = 100
mouse_raw_input      = true
dos_mouse_driver     = true
dos_mouse_immediate  = true

Chocolate Doom

# default.cfg
mouse_sensitivity             15

# chocolate-doom.cfg
mouse_acceleration            1.000000

Crispy Doom

# Free look is non-linear due to simplified pitch calculations.

# default.cfg
mouse_sensitivity             15
mouse_sensitivity_x2          15
mouse_sensitivity_y           15

# crispy-doom.cfg
mouse_acceleration            1.000000

Eternity Engine

# eternity.cfg
mouse_sensitivity_horiz   15.0000
mouse_sensitivity_vert    15.0000 (or 5.00000 for proper free look)
mouse_accel                   0
vanilla_sensitivity           1

DSDA-Doom

# dsda-doom.cfg
mouse_sensitivity_horiz         16
dsda_fine_sensitivity           0
mouse_sensitivity_vert          16
dsda_mouse_acceleration         0
mouse_sensitivity_mlook         16
movement_mousestrafedivisor     4

GZDoom

# Mouse strafing and vertical movement have unknown behavior.

# gzdoom.ini
[GlobalSettings]
m_sensitivity_x=1
m_sensitivity_y=1
m_yaw=1
m_pitch=1
m_side=0
m_forward=0

Odamex

# Mouse strafing and vertical movement vary by framerate due to rounding error.

# odamex.cfg
set "mouse_sensitivity" "0.5"
set "m_yaw" "1"
set "m_pitch" "2"
set "m_side" "2"
set "m_forward" "4"
set "mouse_type" "1"

Scaling Factors

Simplified scaling factors with mouse acceleration disabled.

Woof!

turn   = (mouse_sensitivity + 5) * 8 / 10
look   = (mouse_sensitivity_y_look + 5) * 8 / 10
strafe = (mouse_sensitivity_strafe + 5) * 2 / 10
move   = (mouse_sensitivity_y + 5) / 10

Vanilla/Chocolate Doom

turn   = (mouse_sensitivity + 5) * 8 / 10
look   = N/A
strafe = (mouse_sensitivity + 5) * 2 / 10
move   = (mouse_sensitivity + 5) / 10

Crispy Doom

// Free look is non-linear due to simplified pitch calculations.

turn   = (mouse_sensitivity + 5) * 8 / 10
look   = (mouse_sensitivity_y + 5) / 10
strafe = (mouse_sensitivity_x2 + 5) * 2 / 10
move   = (mouse_sensitivity_y + 5) / 10

Eternity Engine

turn   = (mouse_sensitivity_horiz + 5) * 8 / 10
look   = (mouse_sensitivity_vert + 5) * 16 / 10
strafe = (mouse_sensitivity_horiz + 5) * 2 / 10
move   = (mouse_sensitivity_vert + 5) / 10

DSDA-Doom

turn   = mouse_sensitivity_horiz + dsda_fine_sensitivity / 100
look   = mouse_sensitivity_mlook
strafe = (mouse_sensitivity_horiz + dsda_fine_sensitivity / 100) / movement_mousestrafedivisor
move   = mouse_sensitivity_vert / 8

GZDoom

// Mouse strafing and vertical movement have unknown behavior.

turn   = m_sensitivity_x * m_yaw * 16
look   = m_sensitivity_y * m_pitch * 16
strafe = m_sensitivity_x * m_side * ???
move   = m_sensitivity_y * m_forward * ???

Odamex

// Mouse strafing and vertical movement vary by framerate due to rounding error.

turn   = mouse_sensitivity * m_yaw * 32
look   = mouse_sensitivity * m_pitch * 16
strafe = mouse_sensitivity * m_side * 4
move   = mouse_sensitivity * m_forward
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment