diff --git a/emulator/firmware-decomp/emu860c/live_render.py b/emulator/firmware-decomp/emu860c/live_render.py index c2e4f231..72895b22 100644 --- a/emulator/firmware-decomp/emu860c/live_render.py +++ b/emulator/firmware-decomp/emu860c/live_render.py @@ -29,6 +29,7 @@ from driver import boot, CpuShim from vrboard import A from texstore import build_texstore from gpu_raster import Renderer, W, H +from hud2d_overlay import HudTracker, composite_hud ANAME = {int(a): a.name for a in A} emu860.Mem.log = lambda self, *a, **k: None @@ -148,6 +149,7 @@ print("GPU:", g.ctx.info['GL_RENDERER'], flush=True) recs = list(catchup_recs) # running wire, for the texture store tex_dirty = bool(catchup_recs) renderer = Renderer(g.ctx, []) # texlist filled once textures arrive +hud = HudTracker() # cockpit reticle/pips (dpl2d overlay) pinned = False if PIN: renderer.texlist = list(build_texstore(parse_fifodump(PIN)).items()) @@ -233,6 +235,7 @@ while not stopped: tex_dirty = False img = renderer.frame(emu860c.dump_range) if img is not None: + composite_hud(img, hud, W, H) # no-op until the reticle resolves if not present(img, frames): break frames += 1 @@ -251,7 +254,9 @@ while not stopped: break if stopped: break - if ANAME.get(r.queue[r.qi][0]) == 'draw_scene': + act, pl = r.queue[r.qi] + hud.feed(act, pl) # every record, in wire order, exactly + if ANAME.get(act) == 'draw_scene': # once -- matches consumption, not arrival prev_draw = True if h(shim) == 'done': break