From b4e78d0fa3ce05c821268f7d9a825097524e61f6 Mon Sep 17 00:00:00 2001 From: Denis Pauk Date: Sun, 15 Oct 2023 23:09:05 +0300 Subject: [PATCH] vk,gl1: Fix mgu2m3 --- doc/100_tested_maps.md | 449 +++++++++++++++--------------- src/client/refresh/files/models.c | 8 +- src/client/refresh/gl1/gl1_surf.c | 6 + src/client/refresh/gl3/gl3_surf.c | 6 + src/client/refresh/gl4/gl4_surf.c | 6 + src/client/refresh/soft/sw_bsp.c | 8 +- src/client/refresh/vk/vk_surf.c | 6 + 7 files changed, 259 insertions(+), 230 deletions(-) diff --git a/doc/100_tested_maps.md b/doc/100_tested_maps.md index 89f925f6..d7ea1f51 100644 --- a/doc/100_tested_maps.md +++ b/doc/100_tested_maps.md @@ -10,231 +10,230 @@ ## Quake2 ReRelease Notes: - * mgu2m3: vk: crash * mgu5m1: gl1,vk: non transparent flowers * mgu5m2: server code: Too many models 256 (226 inline models) - | map | gl1.4 | gl3/gles3 | gl4.6 | vk | soft | - | ----------------------------------- | ------ | --------- | ----- | ------ | ----------- | - | maps/badlands.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/base1.bsp | ML/MD5 | WL/ML/MD5 | N/A | MD5 | WL/ML/MD5/G | - | maps/base2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/base3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/base64.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/biggun.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/boss1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/boss2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/bunk1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/city1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/city2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/city3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/city64.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/command.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/cool1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/e3/bunk_e3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/e3/fact_e3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/e3/jail4_e3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/e3/jail_e3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/e3/lab_e3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/e3/mine_e3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/e3/space_e3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/e3/ware1a_e3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/e3/ware2_e3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/e3/waste_e3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/ec/base3_ec.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/ec/base_ec.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/ec/command_ec.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/ec/factx_ec.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/ec/jail_ec.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/ec/kmdm3_ec.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/ec/mine1_ec.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/ec/power_ec.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/ec/space_ec.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/ec/waste_ec.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/fact1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/fact2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/fact3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/hangar1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/hangar2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/industry.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/jail1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/jail2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/jail3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/jail4.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/jail5.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/lab.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/mgdm1.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu1m1.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu1m2.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu1m3.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu1m4.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu1m5.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu1trial.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu2m1.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu2m2.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu2m3.bsp | B | N/A | N/A | B | N/A | - | maps/mgu3m1.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu3m2.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu3m3.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu3m4.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu3secret.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu4m1.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu4m2.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu4m3.bsp | B | N/A | N/A | MD5 | N/A | - | maps/mgu4trial.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu5m1.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu5m2.bsp | B | N/A | N/A | B | N/A | - | maps/mgu5m3.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu5trial.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu6m1.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu6m2.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu6m3.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mgu6trial.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mguboss.bsp | N/A | N/A | N/A | MD5 | N/A | - | maps/mguhub.bsp | MD5 | ML/MD5 | ML/MD5| MD5 | ML/MD5 | - | maps/mine1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/mine2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/mine3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/mine4.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/mintro.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/ndctf0.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/old/baseold.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/old/city2_4.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/old/fact1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/old/fact2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/old/fact3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/old/facthub.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/old/hangarold.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/old/kmdm3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/old/pjtrain1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/old/ware1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/old/xcommand5.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/outbase.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/power1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/power2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q2ctf1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q2ctf2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q2ctf3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q2ctf4.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q2ctf5.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q2dm1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q2dm2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q2dm3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q2dm4.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q2dm5.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q2dm6.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q2dm7.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q2dm8.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q2kctf1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q2kctf2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/bio.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/cargo.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/command.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/comm.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/complex.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/conduits.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/core.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/dm10.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/dm1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/dm2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/dm3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/dm4.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/dm5.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/dm6.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/dm7.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/dm8.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/dm9.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/geo-stat.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/intel.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/jail.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/lab.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/mines.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/orbit.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/organic.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/outpost.bsp | OK | N/A | N/A | N/A | B | - | maps/q64/process.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/rtest.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/ship.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/station.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/q64/storage.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rammo1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rammo2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rbase1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rbase2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rboss.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rdm10.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rdm11.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rdm12.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rdm13.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rdm14.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rdm1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rdm2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rdm3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rdm4.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rdm5.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rdm6.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rdm7.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rdm8.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rdm9.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/refinery.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rhangar1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rhangar2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rlava1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rlava2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rmine1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rmine2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rsewer1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rsewer2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rware1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/rware2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/security.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/sewer64.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/space.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/strike.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/test/base1_flashlight.bsp | OK | OK | OK | OK | OK | - | maps/test/gekk.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/test/mals_barrier_test.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/test/mals_box.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/test/mals_ladder_test.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/test/mals_locked_door_test.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/test/paril_health_relay.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/test/paril_ladder.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/test/paril_poi.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/test/paril_scaled_monsters.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/test/paril_soundstage.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/test/paril_steps.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/test/paril_waterlight.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/test/skysort.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/test/spbox2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/test/spbox.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/test/test_jerry.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/test/test_kaiser.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/test/tom_test_01.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/train.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/tutorial.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/ware1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/ware2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/waste1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/waste2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/waste3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/w_treat.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xcompnd1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xcompnd2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xdm1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xdm2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xdm3.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xdm4.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xdm5.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xdm6.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xdm7.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xhangar1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xhangar2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xintell.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xmoon1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xmoon2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xreactor.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xsewer1.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xsewer2.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xship.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xswamp.bsp | N/A | N/A | N/A | N/A | N/A | - | maps/xware.bsp | N/A | N/A | N/A | N/A | N/A | + | map | gl1.4 | gl3/gles3 | gl4.6 | vk | soft | + | ------------------------------ | ------ | --------- | ------ | ------ | ----------- | + | badlands.bsp | N/A | N/A | N/A | N/A | N/A | + | base1.bsp | ML/MD5 | WL/ML/MD5 | N/A | MD5 | WL/ML/MD5/G | + | base2.bsp | N/A | N/A | N/A | N/A | N/A | + | base3.bsp | N/A | N/A | N/A | N/A | N/A | + | base64.bsp | N/A | N/A | N/A | N/A | N/A | + | biggun.bsp | N/A | N/A | N/A | N/A | N/A | + | boss1.bsp | N/A | N/A | N/A | N/A | N/A | + | boss2.bsp | N/A | N/A | N/A | N/A | N/A | + | bunk1.bsp | N/A | N/A | N/A | N/A | N/A | + | city1.bsp | N/A | N/A | N/A | N/A | N/A | + | city2.bsp | N/A | N/A | N/A | N/A | N/A | + | city3.bsp | N/A | N/A | N/A | N/A | N/A | + | city64.bsp | N/A | N/A | N/A | N/A | N/A | + | command.bsp | N/A | N/A | N/A | N/A | N/A | + | cool1.bsp | N/A | N/A | N/A | N/A | N/A | + | e3/bunk_e3.bsp | N/A | N/A | N/A | N/A | N/A | + | e3/fact_e3.bsp | N/A | N/A | N/A | N/A | N/A | + | e3/jail4_e3.bsp | N/A | N/A | N/A | N/A | N/A | + | e3/jail_e3.bsp | N/A | N/A | N/A | N/A | N/A | + | e3/lab_e3.bsp | N/A | N/A | N/A | N/A | N/A | + | e3/mine_e3.bsp | N/A | N/A | N/A | N/A | N/A | + | e3/space_e3.bsp | N/A | N/A | N/A | N/A | N/A | + | e3/ware1a_e3.bsp | N/A | N/A | N/A | N/A | N/A | + | e3/ware2_e3.bsp | N/A | N/A | N/A | N/A | N/A | + | e3/waste_e3.bsp | N/A | N/A | N/A | N/A | N/A | + | ec/base3_ec.bsp | N/A | N/A | N/A | N/A | N/A | + | ec/base_ec.bsp | N/A | N/A | N/A | N/A | N/A | + | ec/command_ec.bsp | N/A | N/A | N/A | N/A | N/A | + | ec/factx_ec.bsp | N/A | N/A | N/A | N/A | N/A | + | ec/jail_ec.bsp | N/A | N/A | N/A | N/A | N/A | + | ec/kmdm3_ec.bsp | N/A | N/A | N/A | N/A | N/A | + | ec/mine1_ec.bsp | N/A | N/A | N/A | N/A | N/A | + | ec/power_ec.bsp | N/A | N/A | N/A | N/A | N/A | + | ec/space_ec.bsp | N/A | N/A | N/A | N/A | N/A | + | ec/waste_ec.bsp | N/A | N/A | N/A | N/A | N/A | + | fact1.bsp | N/A | N/A | N/A | N/A | N/A | + | fact2.bsp | N/A | N/A | N/A | N/A | N/A | + | fact3.bsp | N/A | N/A | N/A | N/A | N/A | + | hangar1.bsp | N/A | N/A | N/A | N/A | N/A | + | hangar2.bsp | N/A | N/A | N/A | N/A | N/A | + | industry.bsp | N/A | N/A | N/A | N/A | N/A | + | jail1.bsp | N/A | N/A | N/A | N/A | N/A | + | jail2.bsp | N/A | N/A | N/A | N/A | N/A | + | jail3.bsp | N/A | N/A | N/A | N/A | N/A | + | jail4.bsp | N/A | N/A | N/A | N/A | N/A | + | jail5.bsp | N/A | N/A | N/A | N/A | N/A | + | lab.bsp | N/A | N/A | N/A | N/A | N/A | + | mgdm1.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu1m1.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu1m2.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu1m3.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu1m4.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu1m5.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu1trial.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu2m1.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu2m2.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu2m3.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu3m1.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu3m2.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu3m3.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu3m4.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu3secret.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu4m1.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu4m2.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu4m3.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu4trial.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu5m1.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu5m2.bsp | B | N/A | N/A | B | N/A | + | mgu5m3.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu5trial.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu6m1.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu6m2.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu6m3.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mgu6trial.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mguboss.bsp | MD5 | N/A | N/A | MD5 | N/A | + | mguhub.bsp | MD5 | ML/MD5 | ML/MD5 | MD5 | ML/MD5 | + | mine1.bsp | N/A | N/A | N/A | N/A | N/A | + | mine2.bsp | N/A | N/A | N/A | N/A | N/A | + | mine3.bsp | N/A | N/A | N/A | N/A | N/A | + | mine4.bsp | N/A | N/A | N/A | N/A | N/A | + | mintro.bsp | N/A | N/A | N/A | N/A | N/A | + | ndctf0.bsp | N/A | N/A | N/A | N/A | N/A | + | old/baseold.bsp | N/A | N/A | N/A | N/A | N/A | + | old/city2_4.bsp | N/A | N/A | N/A | N/A | N/A | + | old/fact1.bsp | N/A | N/A | N/A | N/A | N/A | + | old/fact2.bsp | N/A | N/A | N/A | N/A | N/A | + | old/fact3.bsp | N/A | N/A | N/A | N/A | N/A | + | old/facthub.bsp | N/A | N/A | N/A | N/A | N/A | + | old/hangarold.bsp | N/A | N/A | N/A | N/A | N/A | + | old/kmdm3.bsp | N/A | N/A | N/A | N/A | N/A | + | old/pjtrain1.bsp | N/A | N/A | N/A | N/A | N/A | + | old/ware1.bsp | N/A | N/A | N/A | N/A | N/A | + | old/xcommand5.bsp | N/A | N/A | N/A | N/A | N/A | + | outbase.bsp | N/A | N/A | N/A | N/A | N/A | + | power1.bsp | N/A | N/A | N/A | N/A | N/A | + | power2.bsp | N/A | N/A | N/A | N/A | N/A | + | q2ctf1.bsp | N/A | N/A | N/A | N/A | N/A | + | q2ctf2.bsp | N/A | N/A | N/A | N/A | N/A | + | q2ctf3.bsp | N/A | N/A | N/A | N/A | N/A | + | q2ctf4.bsp | N/A | N/A | N/A | N/A | N/A | + | q2ctf5.bsp | N/A | N/A | N/A | N/A | N/A | + | q2dm1.bsp | N/A | N/A | N/A | N/A | N/A | + | q2dm2.bsp | N/A | N/A | N/A | N/A | N/A | + | q2dm3.bsp | N/A | N/A | N/A | N/A | N/A | + | q2dm4.bsp | N/A | N/A | N/A | N/A | N/A | + | q2dm5.bsp | N/A | N/A | N/A | N/A | N/A | + | q2dm6.bsp | N/A | N/A | N/A | N/A | N/A | + | q2dm7.bsp | N/A | N/A | N/A | N/A | N/A | + | q2dm8.bsp | N/A | N/A | N/A | N/A | N/A | + | q2kctf1.bsp | N/A | N/A | N/A | N/A | N/A | + | q2kctf2.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/bio.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/cargo.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/command.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/comm.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/complex.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/conduits.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/core.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/dm10.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/dm1.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/dm2.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/dm3.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/dm4.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/dm5.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/dm6.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/dm7.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/dm8.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/dm9.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/geo-stat.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/intel.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/jail.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/lab.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/mines.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/orbit.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/organic.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/outpost.bsp | OK | N/A | N/A | N/A | B | + | q64/process.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/rtest.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/ship.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/station.bsp | N/A | N/A | N/A | N/A | N/A | + | q64/storage.bsp | N/A | N/A | N/A | N/A | N/A | + | rammo1.bsp | N/A | N/A | N/A | N/A | N/A | + | rammo2.bsp | N/A | N/A | N/A | N/A | N/A | + | rbase1.bsp | N/A | N/A | N/A | N/A | N/A | + | rbase2.bsp | N/A | N/A | N/A | N/A | N/A | + | rboss.bsp | N/A | N/A | N/A | N/A | N/A | + | rdm10.bsp | N/A | N/A | N/A | N/A | N/A | + | rdm11.bsp | N/A | N/A | N/A | N/A | N/A | + | rdm12.bsp | N/A | N/A | N/A | N/A | N/A | + | rdm13.bsp | N/A | N/A | N/A | N/A | N/A | + | rdm14.bsp | N/A | N/A | N/A | N/A | N/A | + | rdm1.bsp | N/A | N/A | N/A | N/A | N/A | + | rdm2.bsp | N/A | N/A | N/A | N/A | N/A | + | rdm3.bsp | N/A | N/A | N/A | N/A | N/A | + | rdm4.bsp | N/A | N/A | N/A | N/A | N/A | + | rdm5.bsp | N/A | N/A | N/A | N/A | N/A | + | rdm6.bsp | N/A | N/A | N/A | N/A | N/A | + | rdm7.bsp | N/A | N/A | N/A | N/A | N/A | + | rdm8.bsp | N/A | N/A | N/A | N/A | N/A | + | rdm9.bsp | N/A | N/A | N/A | N/A | N/A | + | refinery.bsp | N/A | N/A | N/A | N/A | N/A | + | rhangar1.bsp | N/A | N/A | N/A | N/A | N/A | + | rhangar2.bsp | N/A | N/A | N/A | N/A | N/A | + | rlava1.bsp | N/A | N/A | N/A | N/A | N/A | + | rlava2.bsp | N/A | N/A | N/A | N/A | N/A | + | rmine1.bsp | N/A | N/A | N/A | N/A | N/A | + | rmine2.bsp | N/A | N/A | N/A | N/A | N/A | + | rsewer1.bsp | N/A | N/A | N/A | N/A | N/A | + | rsewer2.bsp | N/A | N/A | N/A | N/A | N/A | + | rware1.bsp | N/A | N/A | N/A | N/A | N/A | + | rware2.bsp | N/A | N/A | N/A | N/A | N/A | + | security.bsp | N/A | N/A | N/A | N/A | N/A | + | sewer64.bsp | N/A | N/A | N/A | N/A | N/A | + | space.bsp | N/A | N/A | N/A | N/A | N/A | + | strike.bsp | N/A | N/A | N/A | N/A | N/A | + | test/base1_flashlight.bsp | OK | OK | OK | OK | OK | + | test/gekk.bsp | N/A | N/A | N/A | N/A | N/A | + | test/mals_barrier_test.bsp | N/A | N/A | N/A | N/A | N/A | + | test/mals_box.bsp | N/A | N/A | N/A | N/A | N/A | + | test/mals_ladder_test.bsp | N/A | N/A | N/A | N/A | N/A | + | test/mals_locked_door_test.bsp | N/A | N/A | N/A | N/A | N/A | + | test/paril_health_relay.bsp | N/A | N/A | N/A | N/A | N/A | + | test/paril_ladder.bsp | N/A | N/A | N/A | N/A | N/A | + | test/paril_poi.bsp | N/A | N/A | N/A | N/A | N/A | + | test/paril_scaled_monsters.bsp | N/A | N/A | N/A | N/A | N/A | + | test/paril_soundstage.bsp | N/A | N/A | N/A | N/A | N/A | + | test/paril_steps.bsp | N/A | N/A | N/A | N/A | N/A | + | test/paril_waterlight.bsp | N/A | N/A | N/A | N/A | N/A | + | test/skysort.bsp | N/A | N/A | N/A | N/A | N/A | + | test/spbox2.bsp | N/A | N/A | N/A | N/A | N/A | + | test/spbox.bsp | N/A | N/A | N/A | N/A | N/A | + | test/test_jerry.bsp | N/A | N/A | N/A | N/A | N/A | + | test/test_kaiser.bsp | N/A | N/A | N/A | N/A | N/A | + | test/tom_test_01.bsp | N/A | N/A | N/A | N/A | N/A | + | train.bsp | N/A | N/A | N/A | N/A | N/A | + | tutorial.bsp | N/A | N/A | N/A | N/A | N/A | + | ware1.bsp | N/A | N/A | N/A | N/A | N/A | + | ware2.bsp | N/A | N/A | N/A | N/A | N/A | + | waste1.bsp | N/A | N/A | N/A | N/A | N/A | + | waste2.bsp | N/A | N/A | N/A | N/A | N/A | + | waste3.bsp | N/A | N/A | N/A | N/A | N/A | + | w_treat.bsp | N/A | N/A | N/A | N/A | N/A | + | xcompnd1.bsp | N/A | N/A | N/A | N/A | N/A | + | xcompnd2.bsp | N/A | N/A | N/A | N/A | N/A | + | xdm1.bsp | N/A | N/A | N/A | N/A | N/A | + | xdm2.bsp | N/A | N/A | N/A | N/A | N/A | + | xdm3.bsp | N/A | N/A | N/A | N/A | N/A | + | xdm4.bsp | N/A | N/A | N/A | N/A | N/A | + | xdm5.bsp | N/A | N/A | N/A | N/A | N/A | + | xdm6.bsp | N/A | N/A | N/A | N/A | N/A | + | xdm7.bsp | N/A | N/A | N/A | N/A | N/A | + | xhangar1.bsp | N/A | N/A | N/A | N/A | N/A | + | xhangar2.bsp | N/A | N/A | N/A | N/A | N/A | + | xintell.bsp | N/A | N/A | N/A | N/A | N/A | + | xmoon1.bsp | N/A | N/A | N/A | N/A | N/A | + | xmoon2.bsp | N/A | N/A | N/A | N/A | N/A | + | xreactor.bsp | N/A | N/A | N/A | N/A | N/A | + | xsewer1.bsp | N/A | N/A | N/A | N/A | N/A | + | xsewer2.bsp | N/A | N/A | N/A | N/A | N/A | + | xship.bsp | N/A | N/A | N/A | N/A | N/A | + | xswamp.bsp | N/A | N/A | N/A | N/A | N/A | + | xware.bsp | N/A | N/A | N/A | N/A | N/A | diff --git a/src/client/refresh/files/models.c b/src/client/refresh/files/models.c index 90e03cdd..961b7ccc 100644 --- a/src/client/refresh/files/models.c +++ b/src/client/refresh/files/models.c @@ -1446,8 +1446,8 @@ Mod_LoadNodes(const char *name, cplane_t *planes, int numplanes, mleaf_t *leafs, } out->plane = planes + planenum; - out->firstsurface = LittleShort(in->firstface); - out->numsurfaces = LittleShort(in->numfaces); + out->firstsurface = LittleShort(in->firstface) & 0xFFFF; + out->numsurfaces = LittleShort(in->numfaces) & 0xFFFF; out->contents = CONTENTS_NODE; /* differentiate from leafs */ for (j = 0; j < 2; j++) @@ -1528,8 +1528,8 @@ Mod_LoadQNodes(const char *name, cplane_t *planes, int numplanes, mleaf_t *leafs } out->plane = planes + planenum; - out->firstsurface = LittleLong(in->firstface); - out->numsurfaces = LittleLong(in->numfaces); + out->firstsurface = LittleLong(in->firstface) & 0xFFFFFFFF; + out->numsurfaces = LittleLong(in->numfaces) & 0xFFFFFFFF; out->contents = CONTENTS_NODE; /* differentiate from leafs */ for (j = 0; j < 2; j++) diff --git a/src/client/refresh/gl1/gl1_surf.c b/src/client/refresh/gl1/gl1_surf.c index 2e24f387..983dcf13 100644 --- a/src/client/refresh/gl1/gl1_surf.c +++ b/src/client/refresh/gl1/gl1_surf.c @@ -871,6 +871,12 @@ R_RecursiveWorldNode(entity_t *currententity, mnode_t *node) /* recurse down the children, front side first */ R_RecursiveWorldNode(currententity, node->children[side]); + if ((node->numsurfaces + node->firstsurface) > r_worldmodel->numsurfaces) + { + R_Printf(PRINT_ALL, "Broken node firstsurface\n"); + return; + } + /* draw stuff */ for (c = node->numsurfaces, surf = r_worldmodel->surfaces + node->firstsurface; diff --git a/src/client/refresh/gl3/gl3_surf.c b/src/client/refresh/gl3/gl3_surf.c index c099ecf5..e2a63edb 100644 --- a/src/client/refresh/gl3/gl3_surf.c +++ b/src/client/refresh/gl3/gl3_surf.c @@ -699,6 +699,12 @@ RecursiveWorldNode(entity_t *currententity, mnode_t *node) /* recurse down the children, front side first */ RecursiveWorldNode(currententity, node->children[side]); + if ((node->numsurfaces + node->firstsurface) > gl3_worldmodel->numsurfaces) + { + R_Printf(PRINT_ALL, "Broken node firstsurface\n"); + return; + } + /* draw stuff */ for (c = node->numsurfaces, surf = gl3_worldmodel->surfaces + node->firstsurface; diff --git a/src/client/refresh/gl4/gl4_surf.c b/src/client/refresh/gl4/gl4_surf.c index 08ecea4a..fe8653ea 100644 --- a/src/client/refresh/gl4/gl4_surf.c +++ b/src/client/refresh/gl4/gl4_surf.c @@ -698,6 +698,12 @@ RecursiveWorldNode(entity_t *currententity, mnode_t *node) /* recurse down the children, front side first */ RecursiveWorldNode(currententity, node->children[side]); + if ((node->numsurfaces + node->firstsurface) > gl4_worldmodel->numsurfaces) + { + R_Printf(PRINT_ALL, "Broken node firstsurface\n"); + return; + } + /* draw stuff */ for (c = node->numsurfaces, surf = gl4_worldmodel->surfaces + node->firstsurface; diff --git a/src/client/refresh/soft/sw_bsp.c b/src/client/refresh/soft/sw_bsp.c index f750e74f..78d8aa97 100644 --- a/src/client/refresh/soft/sw_bsp.c +++ b/src/client/refresh/soft/sw_bsp.c @@ -278,7 +278,7 @@ R_RecursiveClipBPoly(entity_t *currententity, bedge_t *pedges, mnode_t *pnode, m if (numbedges >= MAX_BMODEL_EDGES) { - R_Printf(PRINT_ALL,"Out of edges for bmodel\n"); + R_Printf(PRINT_ALL, "Out of edges for bmodel\n"); return; } } @@ -575,6 +575,12 @@ R_RecursiveWorldNode (entity_t *currententity, const model_t *currentmodel, mnod // recurse down the children, front side first R_RecursiveWorldNode (currententity, currentmodel, node->children[side], clipflags, insubmodel); + if ((node->numsurfaces + node->firstsurface) > currentmodel->numsurfaces) + { + R_Printf(PRINT_ALL, "Broken node firstsurface\n"); + return; + } + // draw stuff c = node->numsurfaces; diff --git a/src/client/refresh/vk/vk_surf.c b/src/client/refresh/vk/vk_surf.c index 3a08adcf..da239b6b 100644 --- a/src/client/refresh/vk/vk_surf.c +++ b/src/client/refresh/vk/vk_surf.c @@ -809,6 +809,12 @@ R_RecursiveWorldNode(entity_t *currententity, mnode_t *node) /* recurse down the children, front side first */ R_RecursiveWorldNode(currententity, node->children[side]); + if ((node->numsurfaces + node->firstsurface) > r_worldmodel->numsurfaces) + { + R_Printf(PRINT_ALL, "Broken node firstsurface\n"); + return; + } + /* draw stuff */ for (c = node->numsurfaces, surf = r_worldmodel->surfaces + node->firstsurface;