From ef5ebff353b47e19f7dc648d1f0c8e92a446f81a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B3=D0=BE=D1=80=D1=8C=20=D0=A4=D0=B5=D0=B4=D0=BE?= =?UTF-8?q?=D1=81=D0=B5=D0=B5=D0=B2?= Date: Sun, 1 Nov 2026 22:41:36 +0300 Subject: [PATCH] fix: align hell weapons with crosshair and HUD Center resting barrels and anchor every firing pose to the HUD edge. Add native framebuffer regression checks for all nine poses and update game assets, binaries and launcher integrity hash. --- assets/hell/pistol.bin | Bin 614420 -> 1024020 bytes assets/hell/preview.png | Bin 30968 -> 29025 bytes assets/hell/shotgun.bin | Bin 491540 -> 819220 bytes bin/poker.exe | Bin 1582080 -> 1582080 bytes build/AssemblerCasinoLauncher.cs | 2 +- build/graphics/poker.exe | Bin 1582080 -> 1582080 bytes dist/Assembler Casino.exe | Bin 376320 -> 376320 bytes docs/HELL_ASSET_PIPELINE.md | 10 +++ poker.exe | Bin 1582080 -> 1582080 bytes poker.obj | Bin 1820317 -> 1820313 bytes src_graphics/hell_fps_render.inc | 4 +- tools/generators/import_freedoom.py | 20 +++++- tools/tests/check_hell_fps.py | 5 +- tools/tests/check_hell_weapons.py | 94 ++++++++++++++++++++++++++++ tools/tests/hell_fps_test.inc | 59 +++++++++++++++++ 15 files changed, 190 insertions(+), 4 deletions(-) create mode 100644 tools/tests/check_hell_weapons.py diff --git a/assets/hell/pistol.bin b/assets/hell/pistol.bin index 8f950401bb94366d51f72a20e8eda55f7a351cbf..e82922d22781187ecd376c0d46094a6b10000455 100644 GIT binary patch delta 8832 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 delta 6860 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 TiRIZ4V*8y{#uVj+V1WGxBvpK7 diff --git a/assets/hell/preview.png b/assets/hell/preview.png index 79f641b1940d10c985f04e8792aa204c12590514..08339e7acc6cdd922a857ad6183cb2b2c167b24d 100644 GIT binary patch literal 29025 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 literal 30968 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 Qr*h@KhW@=OHQN{eAL*ne?EnA( diff --git a/assets/hell/shotgun.bin b/assets/hell/shotgun.bin index 0e9f95cee878c9f33bd0a06864dfe774b607613f..714b15d100a1ec2ec5f95c9f84c335c3655e8b4b 100644 GIT binary patch delta 7442 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 aPBE3zKRK^36>WM3QJK6?izk>|XZ;_~5A%os delta 5912 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 F{1=U{_x%6> diff --git a/bin/poker.exe b/bin/poker.exe index abd39a1347b443ccfa5b301170bf2d14a3ff914e..b5929a1f3d7fd27a4c310e8fbafba94dc040cc6a 100644 GIT binary patch delta 13023 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�QkC;$QEq@RJch%7KH&yS78u%0&xsAh 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 JEO?UZ{{xI5R~i5S diff --git a/build/AssemblerCasinoLauncher.cs b/build/AssemblerCasinoLauncher.cs index 1462d69..782a01c 100644 --- a/build/AssemblerCasinoLauncher.cs +++ b/build/AssemblerCasinoLauncher.cs @@ -8,7 +8,7 @@ namespace AssemblerCasinoLauncher { static class Program { - const string ExpectedPokerSha256 = "EC24778AE95D57B80247180AB0121279C8224A2B7E36801A168AEEF391E6B34B"; + const string ExpectedPokerSha256 = "D25606FE934E0D447DC4791218F8213BB1A21B0F2F7C8AFC0B61D419C03E92C0"; [STAThread] static void Main() diff --git a/build/graphics/poker.exe b/build/graphics/poker.exe index abd39a1347b443ccfa5b301170bf2d14a3ff914e..b5929a1f3d7fd27a4c310e8fbafba94dc040cc6a 100644 GIT binary patch delta 13023 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�QkC;$QEq@RJch%7KH&yS78u%0&xsAh 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 JEO?UZ{{xI5R~i5S diff --git a/dist/Assembler Casino.exe b/dist/Assembler Casino.exe index 746c6044c968448123be5c3a872bc7f656d90941..a3f424dff95724ff2c328c54ee5631b16f1873cb 100644 GIT binary patch delta 330 zcmZqpBi8UoY(fXql_?v$a=GeV7>pQ98O#_AfY^<}mBEt1n85@{8!)&4X%hx>AngpM zEg1}fY7H4Ifa)y3EMo>IAT(rf1oNDLdfb34H=rJ8pbAGI%NZ!<1T@(YY?>j^bdZQK z*d8MgyPkm|e#Q(I&b@Oz`|Fqj#5PTS$H1|@DkeiITstZFZbxm@+G49*Nj3?>ZbKxo0>$l%Ig$zaOh0>tJFPCyX@sH`EF z?FbYzU@!!Vfv`DHtus*E2&~2tNIC(uc3jq4pb!Q!e%j^b}=4C SAZ7w$W*}zSF2=+9Y9jy-E;hLU diff --git a/docs/HELL_ASSET_PIPELINE.md b/docs/HELL_ASSET_PIPELINE.md index c29f9fc..7f1e093 100644 --- a/docs/HELL_ASSET_PIPELINE.md +++ b/docs/HELL_ASSET_PIPELINE.md @@ -13,6 +13,16 @@ frame count, payload bytes), then row-major BGRA frames. Nearest-neighbour only. | `faces.bin` | 24×32 | Five health bands × four expressions, then dead; bottom-centred | | `impacts.bin` | 32×32 | Four `PUFF` frames, shared sprite origin; transparent | | `painting.bin` | 512×256 | One opaque, power-of-two wall texture; full-frame UVs | +| `pistol.bin`, `shotgun.bin` | 320×160 | Resting barrel centred at x=160; every frame bottom-anchored | + +Weapon art retains the shared animation scale from a 192×160 fit. The wider +transparent canvas preserves the shotgun's leftward pump movement; horizontal +translation is shared across each weapon's frames. Each frame's opaque bottom +is registered at y=160, keeping wrists attached to the status bar during recoil. +Rendered at (80,176), size 480×240: resting barrel x=320, hands end at HUD y=416. +`python tools/tests/check_hell_weapons.py` checks all asset anchors; +`python tools/tests/check_hell_fps.py` also compares all nine weapon poses against +the real ASM framebuffer and writes `build/scratch/hell-weapon-native.png`. Painting composes Freedoom sky, lava, masonry and monsters with an authored gilt border. Its preview uses intended landscape aspect. Engine maps the texture onto diff --git a/poker.exe b/poker.exe index abd39a1347b443ccfa5b301170bf2d14a3ff914e..b5929a1f3d7fd27a4c310e8fbafba94dc040cc6a 100644 GIT binary patch delta 13023 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�QkC;$QEq@RJch%7KH&yS78u%0&xsAh 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 JEO?UZ{{xI5R~i5S diff --git a/poker.obj b/poker.obj index dbcf28a24071f31e1d0f68b748b9c4f30d093c11..e91f7a56c783c01dd9ee170c707c562ee43f3cea 100644 GIT binary patch delta 10945 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 diff --git a/src_graphics/hell_fps_render.inc b/src_graphics/hell_fps_render.inc index be0cf64..7138ab2 100644 --- a/src_graphics/hell_fps_render.inc +++ b/src_graphics/hell_fps_render.inc @@ -299,7 +299,9 @@ hf_shotgun_pose: jbe hf_weapon_draw mov edi,1 hf_weapon_draw: - invoke DrawAnimSprite3D,esi,edi,176,176,288,240 + ; 320x160 packs: resting barrel at x=160, every wrist reaches row 160. + ; 1.5x scaling puts barrel at screen x=320 and wrists under HUD y=416. + invoke DrawAnimSprite3D,esi,edi,80,176,480,240 cmp hfFlash,0 je @F invoke DrawAnimSprite3D,OFFSET hfFireArt,0,296,202,48,48 diff --git a/tools/generators/import_freedoom.py b/tools/generators/import_freedoom.py index 9b0d892..a70efbd 100644 --- a/tools/generators/import_freedoom.py +++ b/tools/generators/import_freedoom.py @@ -101,6 +101,24 @@ def aligned(wad, names, size=(128, 128)): return result +def weapon_frames(wad, names): + """Register by resting barrel, not animation bounds; keep wrists at HUD edge.""" + frames = aligned(wad, names, (192,160)) + alpha = frames[0].getchannel('A') + top = alpha.getbbox()[1] + tip = alpha.crop((0,top,192,top+4)).getbbox() + shift_x = round(160-(tip[0]+tip[2])/2) + result = [] + for image in frames: + bottom = image.getchannel('A').getbbox()[3] + canvas = Image.new('RGBA',(320,160)) + # Extra horizontal canvas retains the shotgun's leftward pump motion. + # Same scale and horizontal translation for every frame of each weapon. + canvas.paste(image,(shift_x,160-bottom)) + result.append(canvas) + return result + + def interface_assets(wad, out, manifest): """Doom-layout status bar, native-size glyphs and common-origin face frames.""" pack(out/'hud.bin', [wad.patch('STBAR')[0]]) @@ -187,7 +205,7 @@ def main(): if not choices: raise KeyError(lump) names[i] = sorted(choices)[0] - images = aligned(wad, names, (192, 160) if name in ('pistol','shotgun') else (128,128)) + images = weapon_frames(wad,names) if name in ('pistol','shotgun') else aligned(wad,names) if name == 'portal': # Recolour original Freedoom teleport animation to infernal orange/red. for image in images: diff --git a/tools/tests/check_hell_fps.py b/tools/tests/check_hell_fps.py index f1069bc..b2c1fb1 100644 --- a/tools/tests/check_hell_fps.py +++ b/tools/tests/check_hell_fps.py @@ -43,10 +43,13 @@ def main(): if options.window: print('PASS: real Win32 window, 120 presented frames, mouse-down/up events, firing, Mick Gordon playback, six SFX channels, clean return') return + from check_hell_weapons import check_assets, check_native + check_assets() + check_native() print('PASS: painting entrance, collision/LOS, multi-target seven-pellet shotgun, ' 'single-ray pistol, armour/death/retry, gates/secrets, ' '1050 AI ticks, finite-ammo boss fight with dodging, first-clear reward, ' - 'native/preview save roundtrips, return, 4 native render captures') + 'native/preview save roundtrips, return, 4 native scene captures, 9 weapon poses') if __name__ == '__main__': diff --git a/tools/tests/check_hell_weapons.py b/tools/tests/check_hell_weapons.py new file mode 100644 index 0000000..8390e44 --- /dev/null +++ b/tools/tests/check_hell_weapons.py @@ -0,0 +1,94 @@ +"""Check first-person weapon registration, including every firing pose.""" +from pathlib import Path +import struct +from PIL import Image, ImageChops, ImageDraw + +ROOT = Path(__file__).resolve().parents[2] +OUT = ROOT / 'build/scratch' + + +def check_assets(): + OUT.mkdir(parents=True, exist_ok=True) + sheet = Image.new('RGB', (5*288, 2*260), (40,44,50)) + draw = ImageDraw.Draw(sheet) + errors = [] + for row, name in enumerate(('pistol','shotgun')): + raw = (ROOT/f'assets/hell/{name}.bin').read_bytes() + magic,w,h,count,size = struct.unpack_from('<5I',raw) + assert magic == 0x314d4e41 and (w,h) == (320,160) + assert size == w*h*count*4 == len(raw)-20 + for frame in range(count): + start = 20+frame*w*h*4 + image = Image.frombytes('RGBA',(w,h),raw[start:start+w*h*4],'raw','BGRA') + alpha = image.getchannel('A') + bounds = alpha.getbbox() + if bounds[0] == 0 or bounds[2] == w: + errors.append(f'{name} frame {frame}: weapon touches horizontal canvas edge') + if bounds[3] != h: + errors.append(f'{name} frame {frame}: hands end {h-bounds[3]} px above panel') + if frame == 0: + # Upper tip of resting barrel must register at screen centre. + tip = alpha.crop((0,bounds[1],w,bounds[1]+4)).getbbox() + centre = (tip[0]+tip[2])/2 + if abs(centre-w/2) > 1: + errors.append(f'{name}: resting barrel x={centre:g}, expected {w/2:g}') + # Crop equal empty margins for the compact contact sheet. + preview = image.resize((480,240),Image.Resampling.NEAREST).crop((96,0,384,240)) + sheet.paste(preview,(frame*288,row*260),preview) + draw.line((frame*288+144,row*260,frame*288+144,row*260+239), fill=(170,60,60)) + draw.line((frame*288,row*260+240,frame*288+287,row*260+240), fill=(200,180,110)) + draw.text((frame*288+4,row*260+245),f'{name} {frame}',fill='white') + sheet.save(OUT/'hell-weapon-alignment.png') + assert not errors, '\n'.join(errors) + + +def check_native(): + """Compare full ASM scene captures with fixed-point, nearest-neighbour overlays.""" + sheet = Image.new('RGB', (5*320, 2*240)) + draw = ImageDraw.Draw(sheet) + index = 0 + for row, name in enumerate(('pistol','shotgun')): + raw = (ROOT/f'assets/hell/{name}.bin').read_bytes() + _,w,h,count,_ = struct.unpack_from('<5I',raw) + base = Image.frombytes('RGBA',(640,480), + (OUT/f'hell-weapon-{name}-base.bgra').read_bytes(), + 'raw','BGRA').convert('RGB') + for frame in range(count): + start = 20+frame*w*h*4 + source = Image.frombytes('RGBA',(w,h),raw[start:start+w*h*4],'raw','BGRA') + expected = base.copy() + pixels = expected.load() + sprite = source.load() + # Match DrawAnimSprite3D's truncated 16.16 steps, not Pillow's sampling. + xstep,ystep = (w<<16)//480,(h<<16)//240 + for y in range(240): + for x in range(480): + color = sprite[(x*xstep)>>16,(y*ystep)>>16] + if color[3]: + assert color[3] == 255 + pixels[80+x,176+y] = color[:3] + # Crosshair is drawn over the weapon, as in the native renderer. + for bounds in ((318,234,322,248),(312,240,328,242)): + expected.paste(base.crop(bounds),bounds[:2]) + actual = Image.frombytes('RGBA',(640,480), + (OUT/f'hell-weapon-{index}.bgra').read_bytes(), + 'raw','BGRA').convert('RGB') + assert ImageChops.difference(actual,expected).getbbox() is None, \ + f'{name} frame {frame}: ASM placement/pose differs from asset contract' + assert ImageChops.difference(actual,base).crop((80,415,560,416)).getbbox(), \ + f'{name} frame {frame}: native hands do not meet HUD at y=416' + sheet.paste(actual.resize((320,240),Image.Resampling.NEAREST),(frame*320,row*240)) + draw.text((frame*320+4,row*240+4),f'{name} {frame}',fill='white') + index += 1 + sheet.save(OUT/'hell-weapon-native.png') + + +if __name__ == '__main__': + import argparse + parser = argparse.ArgumentParser() + parser.add_argument('--native',action='store_true',help='also validate captures from check_hell_fps.py') + options = parser.parse_args() + check_assets() + if options.native: + check_native() + print('PASS: centred resting barrels; all weapon poses meet the status bar') diff --git a/tools/tests/hell_fps_test.inc b/tools/tests/hell_fps_test.inc index c47f758..f89eeda 100644 --- a/tools/tests/hell_fps_test.inc +++ b/tools/tests/hell_fps_test.inc @@ -10,7 +10,65 @@ hfTestProfileDir db 'build\scratch',0 hfTestProfileName db 'hell-profile.dat',0 hfTestBoss dd 0 hfTestStrafe dd 5000 +hfTestWeaponBase0 db 'build\scratch\hell-weapon-pistol-base.bgra',0 +hfTestWeaponBase1 db 'build\scratch\hell-weapon-shotgun-base.bgra',0 +hfTestWeapon0 db 'build\scratch\hell-weapon-0.bgra',0 +hfTestWeapon1 db 'build\scratch\hell-weapon-1.bgra',0 +hfTestWeapon2 db 'build\scratch\hell-weapon-2.bgra',0 +hfTestWeapon3 db 'build\scratch\hell-weapon-3.bgra',0 +hfTestWeapon4 db 'build\scratch\hell-weapon-4.bgra',0 +hfTestWeapon5 db 'build\scratch\hell-weapon-5.bgra',0 +hfTestWeapon6 db 'build\scratch\hell-weapon-6.bgra',0 +hfTestWeapon7 db 'build\scratch\hell-weapon-7.bgra',0 +hfTestWeapon8 db 'build\scratch\hell-weapon-8.bgra',0 +; Weapon, cooldown (-1 hides both packs for a clean reference), capture path. +hfTestWeaponCases dd 0,-1,OFFSET hfTestWeaponBase0 + dd 0,0,OFFSET hfTestWeapon0 + dd 0,9,OFFSET hfTestWeapon1 + dd 0,7,OFFSET hfTestWeapon2 + dd 0,5,OFFSET hfTestWeapon3 + dd 0,3,OFFSET hfTestWeapon4 + dd 1,-1,OFFSET hfTestWeaponBase1 + dd 1,0,OFFSET hfTestWeapon5 + dd 1,29,OFFSET hfTestWeapon6 + dd 1,18,OFFSET hfTestWeapon7 + dd 1,10,OFFSET hfTestWeapon8 +HFTestCapture PROTO :DWORD .code +HFTestWeaponFrames PROC uses esi ebx + local pistolPixels:DWORD,shotgunPixels:DWORD + mov eax,hfPistol.pixels + mov pistolPixels,eax + mov eax,hfShotgun.pixels + mov shotgunPixels,eax + call HFReset + mov hfHasShotgun,1 + mov esi,OFFSET hfTestWeaponCases + mov ebx,11 +hf_test_weapon_frame: + mov eax,[esi] + mov hfWeapon,eax + mov eax,[esi+4] + mov hfCooldown,eax + cmp eax,-1 + jne @F + mov hfCooldown,0 + mov hfPistol.pixels,0 + mov hfShotgun.pixels,0 +@@: + call RenderHellFPS3D + invoke HFTestCapture,DWORD PTR [esi+8] + mov eax,pistolPixels + mov hfPistol.pixels,eax + mov eax,shotgunPixels + mov hfShotgun.pixels,eax + add esi,12 + dec ebx + jnz hf_test_weapon_frame + call HFReset + ret +HFTestWeaponFrames ENDP + HFTestAimBoss PROC uses esi edi ebx local vx:DWORD,vy:DWORD,best:DWORD mov esi,hfTestBoss @@ -106,6 +164,7 @@ RunHellFPSTest PROC uses esi edi ebx mov hfOldCeiling,FP_1*5/2 call HFReset mov hfTestStage,3 + call HFTestWeaponFrames call RenderHellFPS3D invoke HFTestCapture,OFFSET hfTestFrame invoke HFLineClear,3*FP_1+FP_HALF,26*FP_1+FP_HALF,7*FP_1+FP_HALF,26*FP_1+FP_HALF