Skip to content

OpenTTD port for Switch

This is my Switch port of OpenTTD, a re-implementation of Transport Tycoon Deluxe.

Port by @rsn8887, based on the Vita port by @angguss. I made some control enhancements and I also enabled sound on the Vita port, too (pull request to @angguss made).


Thanks to the many developers who worked on this game.

Thanks to @angguss for his excellent Vita port, on which this Switch port is based.

Thanks to my supporters on Patreon: Andyways, CountDuckula, Greg Gibson, Jesse Harlin, Duncan Harris, Özgür Karter, Matthew Machnee, Mored1984, Ibrahim Fazel Poor, and RadicalR.


  • Download (see assets below), and unzip and copy the contents over to the /switch/ folder on your sd card, so that you have a folder /switch/openttd with many folders and files inside.

  • Use you favorite homebrew launcher to start the game. It comes with everything you need to start playing right away.

  • Note: This game takes quite long to load (~15 seconds). But it is worth the wait!

  • The public domain graphics and sound sets from are included.

  • If you want the choice to also use the original dos game graphics and sounds, copy over the files


from an original TTD game to /switch/openttd/baseset/.

  • To install the original music, copy over all files
gm/ (xx are numbers)

from the folder gm from the original windows version of the game to /switch/openttd/gm/.

You then get the choice to select original dos graphics, sounds, and music when you go to the game settings dialog.


  • Left analog stick = mouse pointer control
  • D-Pad or right analog stick = scrolling the map.
  • A/right trigger = left mouse click
  • B/left trigger = right mouse click
  • Y = zoom-in
  • X = zoom-out
  • Hold ZL = speed up analog joystick mouse
  • Hold ZR = slow down analog joystick mouse, useful to precisely position the pointer
  • Minus = switch button mappings between two presets: ZL/ZR = slow/fast mouse and Y/X = zoom, or ZL/ZR = zoom and Y/X = slow/fast mouse
  • Double click A / double click right trigger over a text field = bring up on-screen keyboard
  • The touch screen is used for indirect mouse input, like on a laptop touchpad. Move a single finger to move the mouse pointer. Use short tap for left click. Hold a single finger while tapping a second finger for right click. Drag with two fingers to drag and drop.

Current Limitations

  • No network support



git clone
cd libtimidity/src/
make -f Makefile.switch
cp libtimidity.a $DEVKITPRO/portlibs/switch/lib/
cp timidity.h $DEVKITPRO/portlibs/switch/include/
cp ../libtimidity.pc $DEVKITPRO/portlibs/lib/pkgconfig/

Download and extract, then

cd lzo-2.10
./configure CFLAGS='-fPIC' CXXFLAGS='-fPIC' --host aarch64-none-elf --prefix $DEVKITPRO/portlibs/switch/ --disable-shared --enable-static
make clean
make -j12
make install

Download and extract xz-5.2.4.tar.gz from , then

cd xz-5.2.4
./configure CFLAGS='-fPIC' CXXFLAGS='-fPIC' --enable-threads=no --host aarch64-none-elf --prefix $DEVKITPRO/portlibs/switch/ --disable-shared --enable-static
cd src/liblzma
make clean
make -j12
make install

Then configure and build OpenTTD from my switch branch:

git clone
git checkout switch
PKG_CONFIG_PATH=$DEVKITPRO/portlibs/switch/lib/pkgconfig ./configure --os=SWITCH --host aarch64-none-elf --enable-static --prefix=/opt/devkitpro --with-sdl="pkg-config sdl2" --without-fontconfig --disable-strip --without-threads --with-libtimidity --enable-debug=0
make -j12
cd os/switch
git clean -f
cmake ./ -DCMAKE_BUILD_TYPE=Release
make can be found in cmake/



  • re-compile with 9.0.0 support


  • fix right click drag scrolling


  • re-compile with libnx v2.2.0 to fix potential crashes with firmware 8.0.x


  • bundle with working AI compatibility script files (fixes AI crashing)
  • bundle with pre-installed AI opponents and support library scripts


  • compile with lzma and lzo2 compression libraries to allow loading old compressed savegames/scenarios
  • hold ZR / ZL for slow / fast mouse to make it easier to position the pointer with the left stick
  • correctly display free disk space in load/save dialogs
  • press minus to switch button mappings between two presets: ZL/ZR = slow/fast mouse, Y/X = zoom, or ZL/ZR = zoom, Y/X = slow/fast mouse


  • music is now working
  • improve smoothness of mouse pointer motion
  • reduce analog joystick deadzone for better mouse pointer control
  • update graphics and sound files to latest freeware versions from
  • enable cursor key map scrolling on USB keyboard
  • enabled mouse wheel zoom


  • initial Switch release based on latest nightly
Assets 4
You can’t perform that action at this time.