protonscr

SEGA Rally Revo

protonopen appid 4790Game compatibility - Unofficial.NET
ValveSoftware/Proton#9767 · opened 2026-05-09 by matte-schwartz · updated 2026-05-09 · 0 comments · github · game page · search this game
Mmatte-schwartz 2026-05-09 github

Compatibility Report

  • Name of the game with compatibility issues: SEGA Rally Revo
  • Steam AppID of the game: 4790

System Information

I confirm:

  • [X] that I haven't found an existing compatibility report for this game.
  • [X] that I have checked whether there are updates for my system available.

Symptoms

After entering the game and starting a new race, there is an occasional 5-6 second freeze in gameplay on certain devices with batteries. Both my Legion Go S and Legion Go 2 exhibit these freezes, while my Steam Deck OLED does not.

The game repeatedly calls two functions once you enter into gameplay:

3644.200:01d4:01d8:trace:powermgnt:GetSystemPowerStatus (00726C60)
3644.208:01d4:01d8:fixme:powrprof:ReadGlobalPwrPolicy (00E9E820) stub!
3644.300:01d4:01d8:trace:powermgnt:GetSystemPowerStatus (00726C60)
3644.308:01d4:01d8:fixme:powrprof:ReadGlobalPwrPolicy (00E9E820) stub!
3644.410:01d4:01d8:trace:powermgnt:GetSystemPowerStatus (00726C60)
3644.416:01d4:01d8:fixme:powrprof:ReadGlobalPwrPolicy (00E9E820) stub!
3644.508:01d4:01d8:trace:powermgnt:GetSystemPowerStatus (00726C60)
3644.517:01d4:01d8:fixme:powrprof:ReadGlobalPwrPolicy (00E9E820) stub!
3644.616:01d4:01d8:trace:powermgnt:GetSystemPowerStatus (00726C60)
3644.617:01d4:01d8:fixme:powrprof:ReadGlobalPwrPolicy (00E9E820) stub!

Wine's implementation of this seems to have the game query /sys/class/power_supply every ~100ms or so. On Lenovo devices, these repeated calls can eventually lead to a call getting blocked for 5-6 seconds. When this read on the power information gets blocked, the game appears to freeze until that call is able to be unblocked. This can be reproduced with a python script that basically does the same exact thing that wine does:

deck@legion-go-s ~/Downloads> python repro-wine-battery-poll.py 
Targets:
  /sys/class/power_supply/ACAD  type=Mains  attrs=online
  /sys/class/power_supply/BAT0  type=Battery  attrs=status,voltage_now,charge_full,charge_now,current_now
Polling at 10.0 Hz for 300s; slow-iter threshold = 200 ms

  [16:40:18] iter    136 read took   5435 ms
  [16:41:41] iter    908 read took   5524 ms

Done. 951 iterations in 105.8s (effective 9.0 Hz, target 10.0 Hz)
  slow iterations (>200 ms): 2
  worst single read: 5524 ms
  longest tick-to-tick gap: 99 ms

This blocked call appears to be caused by some sort of EC BIOS bug, which has been reported to Lenovo. However, the game shows no signs of freezing at all on Windows, which you would expect for an EC issue like this. It was theorized that Windows might be caching this power information and then games just call the cached copy, but I'm not sure the best way to prove this beyond what I already did (running the same game on Windows).

Since Windows powers through without any issues on the same hardware, it seems worth investigating further on the Proton side even if Lenovo fixes the EC issue.

steam-4790.log
repro-wine-battery-poll.py

Reproduction

  1. Launch Sega Rally Revo on a Legion Go S while the battery level is below 100%
  2. Start a race on any map
  3. Before the race starts while it shows you cutscenes from around the racetrack, just wait on this screen

Eventually, you should see the game appear to freeze up while audio continues to play.

Proton versions