Skip to content

Releases: conner-mcvay/fh2-mods

FH2 Wheel Tools - spacers, tire profile, camber, ride height and more

Choose a tag to compare

@conner-mcvay conner-mcvay released this 19 Oct 03:39

fh2wheels for Forza Horizon 2 (PC)

More wheel, tire and suspension options in the garage of Forza Horizon 2 on PC (Azimuth), for every car, imported ones included. They're real upgrades: they show up in Upgrades > Tires & Rims beside the game's own, preview live on the car, are bought and installed like any other part, and are saved with the car.

This package contains no game files. The installer builds its database changes on your own game's files and installs them with backups.

What you get

Under Upgrades > Tires & Rims:

Option Range
Front / Rear Wheel Offset Stock, -20 to +50 mm a side in 5 mm steps, then +75, +100 and +150 mm (way past the fender)
Front / Rear Tire Profile aspect ratio -30 to +35 points on the same rim: a 255/40 with +10 becomes a 255/50
Rear Rim Style a different rim on the rear axle (needs an aftermarket front rim); Stock puts the front rims back on
Rim sizes 13" to 24", front and rear, besides the car's own sizes (smaller ones lighter, larger ones heavier)
Tire widths 185 to 395 mm in 10 mm steps, front and rear, besides the car's own widths
Tire compound drag and rally tires for every car

Under Tuning, on cars with adjustable springs: ride height 10 cm lower and 40 cm higher than the game allows, camber -15 to +15 degrees.

The offset and profile categories use the wheel camera, so the car stays in view while you pick.

What you need

Forza Horizon 2 version 1.0.0.64 (Anthem_1.0.0.64_x64__8wekyb3d8bbwe), running on Azimuth 0.9.10
FH2 Extra Options the build for Azimuth 0.9.10: winmm.dll (with FH2_ExtraOptions.ini) beside azimuth.exe. It's what makes the game load the changed database (from Mount\mediapc); the installer turns on its [Files] EnableMediaOverrides=1 setting if it's off.
Windows 10 or 11, with the built-in Windows PowerShell 5.1 (nothing to install). sqlite3.exe is downloaded from sqlite.org on first use (hash-checked) unless it's on your PATH.

Install

  1. Close the game.
  2. Extract this zip anywhere and keep the folders together.
  3. Double-click Install-Fh2wheels.cmd and enter your Azimuth folder (the one with azimuth.exe). The game folder is read from Azimuth's settings.
  4. Start the game; the new options are in Upgrades > Tires & Rims.

Imported cars (e.g. with the FM5 car importer): the rim sizes, tire widths and drag/rally tires are made from each car's own options when you install. For cars you import later, run Install-Fh2wheels.cmd again afterwards. Wheel offsets, tire profiles and rear rims work on every car either way.

Updating: extract the new version and run its Install-Fh2wheels.cmd. It replaces the old one.

Uninstall

Close the game and double-click Uninstall-Fh2wheels.cmd. It restores the game database from the backup and takes fh2wheels.dll out of Azimuth.

The installer's backups are kept in <game folder>\mod-backups\fh2wheels-<date>. Mods that went in after fh2wheels (for example cars imported afterwards) have to come out first, newest first, before the database backup can be restored; the uninstaller says so when that's the case.

Cars that had fh2wheels parts fitted keep the saved part, which does nothing without the mod. Refit stock in the garage before uninstalling if you plan to share a save.

How it works

  • fh2wheels.dll goes into Azimuth's data\bin as azimuth-tls.dll; the DLL that was there is renamed fh2wheels-next.dll, and fh2wheels loads it, so Extra Options and Azimuth keep working. It applies the offsets and profiles when a car is built, shows the rear rims, lets the game sell the new parts, and supplies the menus' text. Settings: data\bin\fh2wheels.ini; log: data\bin\fh2wheels.log.
  • The game database (Mount\mediapc\stripped\gamedbRC.slt): the new categories and options, each car's rim sizes, tire widths and drag/rally tires, and the ride height ranges. The camber range is in Mount\mediapc\physics\PhysicsSettings.ini.

Both halves are needed: without the DLL, the offset and profile options do nothing and their text is blank.

The rear rim is kept in the car's save (in the garage's unused tire brand field). The game has no slot for offsets or profiles, so they borrow four part slots ordinary cars don't use (restrictor plate, motor parts, quad turbo and electric motor); the DLL keeps the game from treating them as engine parts.

With fh2net

fh2wheels and fh2net both sit in the azimuth-tls.dll chain and work together, installed in either order: fh2net always ends up in front (fh2wheels goes behind it when it's already there), and each can be updated or uninstalled on its own.

Known limits

  • A rear rim shows only with an aftermarket front rim: with the stock rims, the car draws its own wheels on all four corners.
  • The game doesn't draw rims larger than 24", so the sizes stop there. Cars that come with larger rims keep them.
  • Very wide tires and big offsets go through the bodywork; that's the point for some builds.

fm5-importer

Choose a tag to compare

@conner-mcvay conner-mcvay released this 14 Oct 19:56

FM5 Car Importer for Forza Horizon 2 (PC)

Brings cars from Forza Motorsport 5 into Forza Horizon 2 running on PC through Azimuth. Pick the cars, answer a few questions, and they show up in the Autoshow: buyable, drivable, upgradable and paintable, with an engine sound, night lights and their wheels added to the wheel shop.

This package contains no game files. Everything is read from your own FM5 and FH2 installs and converted on your machine.

What you need

Forza Horizon 2 version 1.0.0.64 (Anthem_1.0.0.64_x64__8wekyb3d8bbwe), running on Azimuth 0.9.10 (0.9.9 also works)
FH2 Extra Options the build for your Azimuth: for 0.9.10, winmm.dll (with FH2_ExtraOptions.ini) beside azimuth.exe; for 0.9.9, 0.2.74 or later in data\bin. The importer turns on its [Files] EnableMediaOverrides=1 setting.
Forza Motorsport 5 version 1.0.0.20 (Forza_1.0.0.20_x64__8wekyb3d8bbwe), any folder (it isn't run, only read)
Windows 10 or 11, with the built-in Windows PowerShell 5.1
Internet once, to download sqlite3.exe from sqlite.org (checked against its known hash)
Disk about 20-80 MB per imported car, plus backups

Quick start

  1. Extract this zip anywhere (for example C:\FH2-Mods\fm5-car-importer). Keep the folders together.
  2. Close Azimuth / the game.
  3. Double-click Import-Fm5Cars.cmd.
  4. Answer the questions (see below). Enter accepts the suggested answer.
  5. Start the game through azimuth.exe. Your cars are in the Autoshow.

The first run asks where Azimuth, FH2 and FM5 are and remembers them. If Azimuth already knows your FH2 folder, that's suggested.

The questions, per car

Question What to answer
FM5 car to add Type part of the name (transam, corvette 2002, mustang 1995) and pick a number from the matches. Only cars FH2 doesn't already have are offered. Add as many as you like; press Enter on an empty line when done.
Data donor An FH2 car of the same kind (era, body style, drivetrain). It supplies the bits of car data FH2 has and FM5 doesn't. A same-make, nearest-year car is suggested.
Sound donor An FH2 car whose engine sound the import uses (FM5's own engine sounds don't play in FH2). Pick a car with a similar engine: a V8 for a V8.
Autoshow group Where the car is listed (Retro Muscle, Modern Muscle, Super GT, ...). Enter keeps the data donor's group. It also decides which wheel-shop category the car's wheels go in.
Light donor An FH2 car with similar lamps whose night lights are fitted to the import (FM5 has no night, so its cars come without lighting data). Use a car with pop-up headlights for a pop-up car. Type none to skip.
Use whiter headlights? Asked when the light donor has warm, orange-ish halogen headlights. Yes gives a whiter halogen.

Then it shows the plan, asks to proceed, converts the cars (about a minute each) and installs them.

What it installs, and how to undo it

Each run is installed as a layer on top of whatever is already in your game, with its own backup folder in <FH2 folder>\mod-backups\:

  • fm5-cars-<date-time> - the cars of that run (their car list is in cars.json)
  • fm5-cars-lights-<date-time> - their night lights, if you picked light donors

To undo a layer, run the Uninstall.ps1 inside its backup folder (right-click > Run with PowerShell, or see the guide). Undo layers newest first: the uninstaller refuses to touch files that a later layer changed.

Imports stack: run the importer again any time to add more cars; the cars you already imported stay.

Same cars on another PC

  1. On the PC with the cars: Import-Fm5Cars.cmd -ExportList cars.json writes every imported car with all its choices (donors, sound, group, lights).
  2. Copy cars.json to the other PC, next to Import-Fm5Cars.cmd there.
  3. On the other PC: Import-Fm5Cars.cmd -FromList cars.json imports them with the same choices. It needs its own FM5 and FH2. Cars that PC already has are skipped, so it's safe to run again.

Run these from a command prompt in the importer folder.

Known bugs

  1. Dirt mapping needs work: dirt and grime don't build up on imported cars the way they do on FH2's own.
  2. Lights may be slightly buggy: night lights are transplanted from the light donor and fitted to the car, so glows can sit a little off, some lens glass glows warmer than it should, and some cars' pop-up headlights don't rise (see the guide for the fix that worked for the 2002 Trans Am).
  3. Car names need work: imported cars show a blank name in menus (FH2 has no text for them).
  4. Autoshow thumbnails don't work, but the car's thumbnail does show in your garage.

Good to know

  • The importer writes only to <FH2 folder>\Mount\mediapc, which Extra Options loads over the game's own media: the game database, car and wheel archives and zipmanifest.xml go there. The game's Mount\media, hash.manifest and azimuth.exe are never touched. Deleting Mount\mediapc removes every import at once.
  • Upgrading from 1.x (Azimuth 0.9.7, which patched hash.manifest and azimuth.exe): undo your 1.x layers first with their Uninstall.ps1 (newest first), or restore the game folder from a clean copy, then re-import with 2.0. See the guide.
  • Extra Options also unlocks DLC cars and adds stock rims for FH2's own cars, so the old dlc-unlock and stock-wheel-swap mods aren't needed. The importer still adds imported cars' wheels itself (Extra Options' rims cover FH2's own cars only).
  • Engine sounds are borrowed from the sound donor.
  • Keep this folder: you need it to add more cars later. Your settings are remembered in %LOCALAPPDATA%\fh2-mods\import-fm5-cars.json.

License

MIT (see LICENSE). Forza Horizon 2 and Forza Motorsport 5 are not included and belong to their owners; you need your own copies.

The full walkthrough, advanced options (tuning lights, adding wheels for older imports, command-line use) and troubleshooting are in GUIDE.md.

FH2 PC online play (dedicated servers, private lobbies)

Choose a tag to compare

@conner-mcvay conner-mcvay released this 15 Oct 21:14

fh2net: online free roam for Forza Horizon 2 (PC)

Experimental. fh2net lets FH2 on Azimuth join online free roam with other players through a server you run yourself (on a LAN, or over the internet with port forwarding). Microsoft's and Turn 10's services are long gone; nothing here contacts them.

No Turn 10 or Microsoft code is used. fh2net and the server are written from scratch, and the package contains no game files. The server reads the game's message formats at runtime from your own copy of FH2.

Single player keeps working with fh2net installed: with the server running, events pay XP and CR and drivatars race as usual. Without it, the game starts offline.

Used fh2net 0.1.0 or 0.1.1? Their server zeroed your save's XP and CR payouts (even offline). Close the game and run Repair-Fh2Save.ps1 once (right-click > Run with PowerShell). It adds a fixed save revision and keeps the old ones.

What you need

Every player FH2 1.0.0.64 on Azimuth 0.9.10 (0.9.9 and 0.9.7 also work) with FH2 Extra Options installed (the build for your Azimuth)
The server PC (one player, or any PC) Python 3 with pefile (py -3 -m pip install pefile) and a copy of FH2 1.0.0.64 (the server reads message formats from the game's exe; nothing of the game is shipped)

How it works

  • fh2net.dll becomes Azimuth's data\bin\azimuth-tls.dll; the DLL that was there becomes azimuth-tls-next.dll, and fh2net loads it. On Azimuth 0.9.10 that is Azimuth's own (Extra Options is winmm.dll beside azimuth.exe and loads separately); on 0.9.9 it is Extra Options. Either way both keep working. It replaces Azimuth's offline stubs: the game sees an Xbox Live connection, its web requests go to your server, and its game traffic (UDP) goes to your server's relay.
  • fh2srv.py is the server. On TCP 8090 it answers the game's web calls (sign-in, Xbox Live session directory, profiles, liveries). On UDP 5101 it relays game traffic between consoles: each console simulates its own car and the relay forwards it to the others, as Turn 10's servers did.

Setup

1. The server

On the server PC (it can be one of the players' PCs):

py -3 -m pip install pefile
py -3 -I server\fh2srv.py --host 0.0.0.0 --game "C:\Games\Anthem_1.0.0.64_x64__8wekyb3d8bbwe"

Leave it running. Let it through Windows Firewall (PowerShell as administrator):

New-NetFirewallRule -DisplayName fh2srv-http -Direction Inbound -Protocol TCP -LocalPort 8090 -Action Allow
New-NetFirewallRule -DisplayName fh2srv-game -Direction Inbound -Protocol UDP -LocalPort 5101 -Action Allow

Over the internet, forward TCP 8090 and UDP 5101 on the server's router to the server PC, and give players its public IP. Liveries players upload are kept in server\data\.

2. Every player

  1. Close the game.

  2. Run Install-Fh2net.ps1 (right-click > Run with PowerShell, or powershell -ExecutionPolicy Bypass -File Install-Fh2net.ps1 -AzimuthRoot <Azimuth folder>). It copies fh2net.ini into Azimuth's data\bin the first time.

  3. Edit <Azimuth folder>\data\bin\fh2net.ini:

    Setting Value
    [http] Server http://<server IP>:8090 (http://127.0.0.1:8090 on the server PC itself)
    [net] ServerAddress <server IP> (::1 on the server PC itself)
    [xbl] Xuid a number unique to this player, e.g. 2533274790395904 for the first, ...905 for the second, ...906 for the third
    [net] LocalAddress unique per player too: ZmgybmV0LWxvY2FsLWRldmljZS0x, ...ZS0y, ...ZS0z
    [xbl] Gamertag your name in the session (empty: Azimuth's player name)
  4. Your save follows the Xuid. Azimuth keeps it in <Azimuth folder>\data\titles\1A96545B\saves\player-1\User_<Xuid in hex> (moving to a new Azimuth version, copy the whole saves folder to the same place under the new data folder). With the default Xuid (2533274790395904 = User_9000000000000) nothing changes. With another one, copy your User_9000000000000 folder to the new name first (...905 = User_9000000000001, ...906 = User_9000000000002), or the game starts a new save.

3. Playing

  1. Start the server, then the game through Azimuth. The game signs in to your server while it loads (the server's window shows the requests). If fh2net can't reach the server when the game starts, it stays out of the way and the game starts offline, as with Azimuth alone (fh2net.log says so). Restart the game once the server is up to play online.
  2. In free roam, open the pause menu and start online free roam. When it says "freeroam session found", press Select (View) to join.
  3. Other players do the same and join the same session. Players appear in the session list and each other's world.

Known problems

  • If the server stops while you play, the game may hang on its next request to the server. Restart the game.
  • No AI traffic online, and the weather isn't shared (each player keeps their own).
  • Races, Road Trips, car meets and other online events aren't supported yet; only free roam driving.
  • Liveries: other players see your design only after you save it in the paint shop while online (that uploads it to the server). Designs saved offline aren't sent.
  • Leaving and rejoining is handled; if a session gets stuck, restart the game (the server doesn't need restarting).

Files

README.md, LICENSE
fh2net.dll            the Azimuth DLL
fh2net.ini            settings template (installed into data\bin the first time)
Install-Fh2net.ps1    install / -Uninstall
Repair-Fh2Save.ps1    restores XP and CR payouts in saves zeroed by 0.1.0/0.1.1's server
server\               fh2srv.py (run this), relay.py, nerd.py, xls.py
extras\               controller scripts for testing ([input] Script=): idle (fakes a connected controller), drive (joins and drives in circles)

Troubleshooting: fh2net logs to <Azimuth folder>\data\bin\fh2net.log; the server records every request in server\captures\.

Credits

  • Azimuth by Almost There Games, which runs Forza Horizon 2 on PC. fh2net is a plug-in for it and wouldn't exist without it.
  • FH2 Extra Options by RokkuDayo, which fh2net loads alongside itself.

FH2 Audio Tools

Choose a tag to compare

Car Sound Tuner for Forza Horizon 2 (PC)

Sliders for any car's sound in Forza Horizon 2 on PC (Azimuth): make an idle lope louder, brighten a dull exhaust, take the boom out of a muscle car, turn up a supercharger whine or a blow-off valve. Pick a car, move the sliders, press Apply, start the game.

This package contains no game files. It reads your own game's sound files and writes changed copies next to them; the originals are never touched.

What you need

Forza Horizon 2 version 1.0.0.64 (Anthem_1.0.0.64_x64__8wekyb3d8bbwe), running on Azimuth 0.9.10 (0.9.9 also works)
FH2 Extra Options the build for your Azimuth: for 0.9.10, winmm.dll (with FH2_ExtraOptions.ini) beside azimuth.exe; for 0.9.9, 0.2.74 or later in data\bin. It's what makes the game load the changed sounds (from Mount\mediapc); the tuner offers to turn on its [Files] EnableMediaOverrides=1 setting when it's off.
Windows 10 or 11, with the built-in Windows PowerShell 5.1 (nothing to install)

Quick start

  1. Extract this zip anywhere and keep the folders together.
  2. Double-click Tune-CarSound.cmd. The first time, pick your Azimuth folder (the one with azimuth.exe); the game folder is read from Azimuth's settings (if it can't be, you're asked for that too). It's remembered; Folders... changes it. The window's title shows the game folder it's tuning.
  3. Type part of a car's name (mustang, dart, camaro 69) and pick it from the list.
  4. Move the sliders, close the game, press Apply.
  5. Start the game and drive that car.

Revert goes back to what's applied, Reset to stock puts every slider at 0 (then Apply). Tuned cars have a * in the list.

The sliders

Every slider adds to the car's own sound (0 = stock), in dB for volumes: +6 dB is about twice as loud, +24 is the most. Hover a slider's name for what it does. A greyed-out slider means that car doesn't have that sound.

Tab Slider What it changes
Exhaust / Engine / Intake Volume every layer of that sound, all RPM
Idle the layer recorded at the lowest RPM (the idle), on top of Volume
Highs the high band of its EQ: brighter, more crackle (shows the resulting EQ; at most +10 dB)
Lows the low band of its EQ: less or more boom
Grit the drive of its saturator: more rasp
Turbo & other Turbo the turbo sounds (single and twin turbos sound the same in FH2)
Boost whistle the spool whistle and air that rise with boost
Supercharger (DSC / CSC) positive-displacement and centrifugal supercharger whine
Blow-off valve the dump valve on lift-off
Backfires backfire pops
Low-frequency layer the separate sub-bass layer some cars have; lower it if a car sounds boomy

The turbo, supercharger and blow-off sounds only play when the car has that part fitted (upgrade it in the game). An engine swap brings its engine's sound, tuning included.

Tips

  • Too much distorts. One layer much past +20 dB clips, and so do several boosted layers that play together (e.g. Idle on exhaust, engine and intake at once). If it crackles in the wrong way, back off a few dB. To make one sound stand out more, lowering the others (or the game's music / effects volume) works better than pushing it.
  • Boomy? Low-frequency layer down (-10 to -20) and Lows down.
  • Dull exhaust? Exhaust Highs up (+6 to +12), a little Grit.
  • A tune we liked on the 1968 Dodge Dart: Exhaust Idle +10, Highs +12, Grit +4; Engine Idle +9; Intake Idle +9; Low-frequency layer -20.

What it changes, and how to undo it

Each car's sound is a file in your game folder, Mount\media\audio\fmodanthem\durango\PG_<car>.bank. Apply builds that car's file from the game's own each time and writes it to Mount\mediapc\audio\fmodanthem\durango\, which Extra Options makes the game read first. Your settings are kept in car-sound.json in that folder.

  • One car back to stock: Reset to stock, Apply.
  • Everything back to stock: delete the PG_*.bank files and car-sound.json in Mount\mediapc\audio\fmodanthem\durango (or run Set-BoostVolume.cmd -Remove).
  • Sound files another mod put in that folder are never overwritten.

Close the game before applying: the tuner refuses while it's running.

Known limits

  • Off-throttle burble has no slider: its volume follows an RPM curve in every car, which the tuner doesn't edit yet.
  • A handful of cars have no separate Highs / Lows / Grit for the intake or engine (their sliders are greyed out). 96 of 351 cars have a low-frequency layer.
  • Imported FM5 cars (from the FM5 Car Importer) use the sound of the FH2 car they borrowed it from: tune that car.
  • The window scales to your main display's resolution when it opens.

Command line

Set-BoostVolume.cmd does the turbo / supercharger / blow-off settings from a command prompt, for one car or many (-Car mustang, -Car all), and -Remove puts every tuned car back to stock:

Set-BoostVolume.cmd -Car FOR_MustangGT500_13 -DSC 12
Set-BoostVolume.cmd -List -Car mustang
Set-BoostVolume.cmd -Remove

powershell -ExecutionPolicy Bypass -File tools\audio\Show-CarSound.ps1 -Car dart lists everything a car's sound is made of (every RPM layer with its sample and volume).

Files

Tune-CarSound.cmd          the tuner window
Set-BoostVolume.cmd        command-line turbo / supercharger / blow-off volume
tools\audio\               the scripts (FmodBank.cs reads and changes the sound files)
README.md, CHANGELOG.md, LICENSE, VERSION.txt

cockpit-fov

Choose a tag to compare

@conner-mcvay conner-mcvay released this 12 Oct 22:21

Changes cockpit FOV from 48 to 70 with tools to support custom edits.