Skip to content

Fix low-res bitmaps overlap issue with High-Res HUD, as well as general high-res bitmap issues - #380

Merged
bnunu merged 5 commits into
OpenCommunityEdition:mainfrom
chestahh:opence-hud-fixes
Oct 16, 2026
Merged

bnunu merged 5 commits into
OpenCommunityEdition:mainfrom
chestahh:opence-hud-fixes

Conversation

@chestahh

@chestahh chestahh commented Oct 16, 2026 •

Copy link
Copy Markdown
  • Slight upscale to original Xbox vehicle/passenger labels, HUD warnings, reload dots and weapon icons.
  • Added high-res Xbox button glyphs, enlarged and centred within gameplay prompts. Toggleable between "Classic", "Gems" and "Menu Gems" underneath the High-Res HUD option when this is enabled.
  • Added groundwork for mapping different button glyphs to a High-Res HUD option, which is a good QOL fix whilst we're waiting on bringing in native controller detection. E.g. DualShock, Switch etc...
  • Fixed overlapping vehicle-health wrench outlines.
  • Cleaned up stray ammunition-counter pixels.
  • Fixed the flashlight meter overflowing its border.
  • Restored the diamond-shaped sniper reticle.

There's probably a cleaner way to do this, but part of the issue is that the HUD asset generator deliberately excludes sheets and gameplay messages/prompts bypass the high-res substitutions. I'm wholly open to suggestions/improvements

Upscale the original vehicle/passenger labels, warnings, reload dots and
messaging sheets without changing their glyph layout or sprite coordinates.
Use the existing Xbox controller redraws for A/B/X/Y/Black/White prompts;
other controller symbols retain the original Xbox art through upscaling.
Match the existing high-resolution vehicle meter contour to remove the
double wrench. Restore the rounded diamond sniper reticle, contain the
flashlight fill and assign discrete thresholds to whole ammunition bullets.

The HUD module owns interpolation and tag selection. A narrow texture-cache
hook is needed to obtain decoded original pixels and invalidate generated
textures with their source; the messaging hook selects the existing button
art. Both respect the High-Res HUD setting. MCC's separate draw/texture
paths remain intact. No MCC bitmap data is embedded; label interpolation
was retained at the user's request, with its limited sharpness acknowledged.

Validated Windows portable release build; 246 focused HUD tests; 15,360
real GPU ammunition checks; hidden Xbox HUD captures enabled/disabled;
Xbox/MCC/Xbox transitions at 30 and 120 FPS with no exceptions. Player health
and sniper zoom-label pixels outside the targeted regions are unchanged.
Android/web targets are unavailable in this Windows build configuration;
Custom Edition gameplay data is unavailable, so that path was inspected.
No simulation or network format changes; network version stays unchanged.

(cherry picked from commit 5398553)
Increase the existing Xbox faces from 20 to 26 HUD units, centre them on the text capital midpoint and compensate for the text renderer's following-run inset. Preserve their original artwork and split-screen scale. Checked the portable Windows OpenCE build and hidden 1280x720 gameplay captures; the Press X to prompt has balanced visible gaps. Retain the repository's rocket reticle unchanged at the user's request.
@GuvenHuso GuvenHuso self-assigned this Oct 16, 2026
…Edition#380)

Default high-resolution gameplay A/B/X/Y/Black/White buttons to plain Xbox faces made from the existing redraws. Retain the shaded faces as Gems and keep glyph geometry unchanged. Show Button Style below High-Res HUD only while enabled, following pending edits and closing the row gap when hidden. Recreate owned glyph placeholders on style changes and dispose them on map unload.

Validated the Windows release build, hidden menu captures with both styles and HUD off, isolated Xbox gameplay, and 268 focused production-code and menu checks including repeated visibility/focus and glyph lifecycle changes. Android and Web builds were attempted but their targets are unavailable in this Windows configuration.

(cherry picked from commit e8f36b8)
…munityEdition#380)

Use the supplied transparent A/B/X/Y artwork for Gems, fitted within the existing button bounds. Preserve the original menu redraws as Menu Gems and share their Black/White glyphs between both gem styles. Classic remains the default. Keep the source PNGs and deterministic asset conversion, and reserve enough placeholder entries for all styles across map changes.

Validated the Windows release build and 269 focused checks, including generated texture bounds, centering, repeatable output, all three native/MCC style transitions, disposal, and menu row spacing. Existing menu glyph PNGs remain unchanged.

(cherry picked from commit 5f66c51)
@chestahh
chestahh marked this pull request as draft October 16, 2026 19:03
@chestahh

Copy link
Copy Markdown
Author

need to fix transparency hngggg

…tyEdition#380)

Xbox button definitions override prompt text with full-opacity colors.
Honor that existing override for Classic, Gems and Menu Gems while
retaining text alpha for icons without it. Embedded artwork supplies RGB.

Validated original Xbox a10/Blood Gulch definitions, opaque asset
interiors, Windows portable release compilation, and production-function
checks for all three styles, full/partial alpha, fallback, and cleanup.
Android/Web targets were unavailable in the Windows configuration.
No MCC/fork code, tests, documentation, assets or workflow changes included.

(cherry picked from commit ce6cf74)
@bnunu
bnunu marked this pull request as ready for review October 16, 2026 19:24
@bnunu
bnunu merged commit 2c849ca into OpenCommunityEdition:main Oct 16, 2026
@chestahh
chestahh deleted the opence-hud-fixes branch October 16, 2026 20:24
hkmodd added a commit to hkmodd/OpenCE that referenced this pull request Oct 16, 2026
The one conflict was the generated Graphics screen, which gained HIGH-RES
HUD on main (OpenCommunityEdition#380) and HDR and HDR DISPLAY here. It was resolved by
writing the screens again with tools/port_settings.py: the generator
gives the merged file byte for byte. tools/test_web_build.py's menu test
passes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hkmodd added a commit to hkmodd/OpenCE that referenced this pull request Oct 16, 2026
…nCommunityEdition#376)

xgpu_texture_cache_begin_frame now also reads the high-res HUD's
settings (OpenCommunityEdition#378), drops an entry's upscaled sheet (OpenCommunityEdition#380) and forgets the
recent lookups. The test's fake world gains those members and functions,
with settings that never change. Its 3 cases and 4 negative controls
pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hkmodd added a commit to hkmodd/OpenCE that referenced this pull request Oct 16, 2026
…nCommunityEdition#376)

xgpu_texture_cache_begin_frame now also reads the high-res HUD's
settings (OpenCommunityEdition#378), drops an entry's upscaled sheet (OpenCommunityEdition#380) and forgets the
recent lookups. The test's fake world gains those members and functions,
with settings that never change. Its 3 cases and 4 negative controls
pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hkmodd added a commit to hkmodd/OpenCE that referenced this pull request Oct 17, 2026
…nCommunityEdition#376)

xgpu_texture_cache_begin_frame now also reads the high-res HUD's
settings (OpenCommunityEdition#378), drops an entry's upscaled sheet (OpenCommunityEdition#380) and forgets the
recent lookups. The test's fake world gains those members and functions,
with settings that never change. Its 3 cases and 4 negative controls
pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hkmodd added a commit to hkmodd/OpenCE that referenced this pull request Oct 17, 2026
…nCommunityEdition#376)

xgpu_texture_cache_begin_frame now also reads the high-res HUD's
settings (OpenCommunityEdition#378), drops an entry's upscaled sheet (OpenCommunityEdition#380) and forgets the
recent lookups. The test's fake world gains those members and functions,
with settings that never change. Its 3 cases and 4 negative controls
pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hkmodd added a commit to hkmodd/OpenCE that referenced this pull request Oct 18, 2026
…nCommunityEdition#376)

xgpu_texture_cache_begin_frame now also reads the high-res HUD's
settings (OpenCommunityEdition#378), drops an entry's upscaled sheet (OpenCommunityEdition#380) and forgets the
recent lookups. The test's fake world gains those members and functions,
with settings that never change. Its 3 cases and 4 negative controls
pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hkmodd added a commit to hkmodd/OpenCE that referenced this pull request Oct 19, 2026
…nCommunityEdition#376)

xgpu_texture_cache_begin_frame now also reads the high-res HUD's
settings (OpenCommunityEdition#378), drops an entry's upscaled sheet (OpenCommunityEdition#380) and forgets the
recent lookups. The test's fake world gains those members and functions,
with settings that never change. Its 3 cases and 4 negative controls
pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hkmodd added a commit to hkmodd/OpenCE that referenced this pull request Oct 19, 2026
…nCommunityEdition#376)

xgpu_texture_cache_begin_frame now also reads the high-res HUD's
settings (OpenCommunityEdition#378), drops an entry's upscaled sheet (OpenCommunityEdition#380) and forgets the
recent lookups. The test's fake world gains those members and functions,
with settings that never change. Its 3 cases and 4 negative controls
pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hkmodd added a commit to hkmodd/OpenCE that referenced this pull request Oct 19, 2026
…nCommunityEdition#376)

xgpu_texture_cache_begin_frame now also reads the high-res HUD's
settings (OpenCommunityEdition#378), drops an entry's upscaled sheet (OpenCommunityEdition#380) and forgets the
recent lookups. The test's fake world gains those members and functions,
with settings that never change. Its 3 cases and 4 negative controls
pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
FractumSeraph pushed a commit to FractumSeraph/OpenCE that referenced this pull request Oct 21, 2026
…etup

Game Setup and game type editor for hosted games
g0atbutt added a commit to OpenH1/OpenH1 that referenced this pull request Oct 22, 2026
The controller's buttons on the Android touch controls are now drawn as the
HUD draws them, in display.hud_button_style: A, B, X, Y, black and white
from the Classic, Gems (with Menu Gems' black and white, as the HUD has
it) or Menu Gems redraws in port/assets/buttons, and the triggers and
stick clicks from trigger_* and thumbstick_*. tools/touch_assets.py draws
them through tools/button_assets.py, larger than the HUD's textures and
cropped to the art. Kenney's Mobile Controls stay only where there is no
redraw: the move stick, the plates and icons of start, back and the
D-pad, and the toolbar. The function icons (Kenney's and OpenH1's own) are
gone. A button now shows the controller's button, not its function.

The game sends the style with the overlay's scene bits
(port/linux/src/touch_input.c), so a change in the menus redraws the
controls at once. A new setting, input.touch_captions (Android, off by
default), writes what each controller button does in the profile (Jump,
Melee) faintly under it.

AUTHORS.md credits saulob's redraws for the touch controls too, and
chestahh for the button styles, triggers and sticks (OpenCE OpenCommunityEdition#380), which
were not credited before.

Checked: ninja android; the APK built with Gradle (assembleDebug);
python tools/test_touch_layout.py; python tools/touch_assets.py --check;
previews drawn by tools/touch_preview.py in each style and with captions
(port/android/docs). Not run on a device.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants