Skip to content

Commit 9044608

Browse files
authored
Merge pull request #10 from sabino/doomgeo-ceiling-forward-motion
Restore ceiling plane in texture experiment
2 parents dce4418 + 804354d commit 9044608

5 files changed

Lines changed: 39 additions & 4 deletions

File tree

Makefile

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ DOOM_INPUT_DEBUG?=0
6969
DOOM_CHUNK_MOVEMENT_TEST?=0
7070
DOOM_CHUNK_MOVEMENT_START_DELAY?=0
7171
DOOM_SKIP_INTRO?=0
72+
DOOM_TITLEPIC?=1
7273
DOOM_WALL_UPLOAD_COLUMNS?=
7374
DOOM_WALL_UPLOAD_OVERRUN_COLUMNS?=
7475
ifeq ($(DOOM_SIMPLE_MAP),1)
@@ -93,6 +94,7 @@ DOOM_FLAT_PLANES?=0
9394
DOOM_CROM_FILE_BYTES?=4194304
9495
DOOM_PLANE_PHASE_SHIFT?=15
9596
DOOM_E1M1_MULTIFLOOR_SPRITES=3004:POSSA1,3004:POSSA2A8,3004:POSSA3A7,3004:POSSA4A6,3004:POSSA5,3004:POSSB1,3004:POSSB2B8,3004:POSSB3B7,3004:POSSB4B6,3004:POSSB5,3001:TROOA1,3001:TROOA2A8,3001:TROOA3A7,3001:TROOA4A6,3001:TROOA5,3001:TROOB1,3001:TROOB2B8,3001:TROOB3B7,3001:TROOB4B6,3001:TROOB5,9010:POSSH0,9015:POSSI0,9020:POSSJ0,9032:POSSK0,9001:POSSL0,9012:TROOI0,9017:TROOJ0,9022:TROOK0,9034:TROOL0,9003:TROOR0,5:BKEYA0,6:YKEYA0,13:RKEYA0,2001:SHOTA0,2002:MGUNA0,2003:LAUNA0,2007:CLIPA0,2008:SHELA0,2011:STIMA0,2012:MEDIA0,2014:BON1A0,2015:BON2A0,2018:ARM1A0,2019:ARM2A0,2046:BROKA0,2048:AMMOA0,2049:SBOXA0,2035:BAR1A0,9000:BEXPC0,9006:BAL1A0
97+
DOOM_SIMPLE_EXPERIMENT_SPRITES=3004:POSSA1,3004:POSSA2A8,3004:POSSA3A7,3004:POSSA4A6,3004:POSSA5,3001:TROOA1,3001:TROOA2A8,3001:TROOA3A7,3001:TROOA4A6,3001:TROOA5,9010:POSSH0,9015:POSSI0,9020:POSSJ0,9032:POSSK0,9001:POSSL0,9012:TROOI0,9017:TROOJ0,9022:TROOK0,9034:TROOL0,9003:TROOR0,5:BKEYA0,2001:SHOTA0,2007:CLIPA0,2011:STIMA0,2018:ARM1A0,2035:BAR1A0,9000:BEXPC0,9006:BAL1A0
9698
ifeq ($(DOOM_MULTIFLOOR_RENDER),1)
9799
DOOM_MONSTER_SPRITES?=$(DOOM_E1M1_MULTIFLOOR_SPRITES)
98100
DOOM_SPRITE_SCALES?=1.00,0.75,0.50,0.33,0.25
@@ -133,6 +135,7 @@ DOOM_MAP_CLEANUP_ARGS=$(if $(filter 1 yes true,$(DOOM_MAP_READABILITY_CLEANUP)),
133135
GFX_SIMPLE_MAP_ARG=$(if $(filter 1 yes true,$(DOOM_SIMPLE_MAP)),--simple-map,)
134136
GFX_PLANE_PHASE_ARGS=--floor-forward-phases $(DOOM_PLANE_FLOOR_FORWARD_PHASES) --ceiling-forward-phases $(DOOM_PLANE_CEILING_FORWARD_PHASES)
135137
GFX_CEILING_ARG=$(if $(filter 0 no false,$(DOOM_CEILING_PERSPECTIVE)),--no-ceiling-perspective,)
138+
GFX_TITLEPIC_ARG=$(if $(filter 0 no false,$(DOOM_TITLEPIC)),--no-titlepic,)
136139
GFX_CROM_BYTES_ARG=--crom-file-bytes $(DOOM_CROM_FILE_BYTES)
137140
GFX_MONSTER_SPRITES_ARG=$(if $(strip $(DOOM_MONSTER_SPRITES)),--monster-sprites '$(DOOM_MONSTER_SPRITES)',)
138141
GFX_SPRITE_SCALES_ARG=$(if $(strip $(DOOM_SPRITE_SCALES)),--sprite-scales '$(DOOM_SPRITE_SCALES)',)
@@ -168,6 +171,9 @@ endif
168171
ifeq ($(DOOM_SKIP_INTRO),1)
169172
override CFLAGS += -DDOOM_SKIP_INTRO=1
170173
endif
174+
ifeq ($(DOOM_TITLEPIC),0)
175+
override CFLAGS += -DDOOM_TITLEPIC=0
176+
endif
171177
override CFLAGS += -DDOOM_WALL_LAYERS=$(DOOM_WALL_LAYERS)
172178
ifeq ($(DOOM_MULTIFLOOR_RENDER),1)
173179
override CFLAGS += -DDOOM_MULTIFLOOR_RENDER=1
@@ -580,9 +586,10 @@ EXPERIMENT_GFX_ROM_DIR=$(EXPERIMENT_DIR)/assets
580586
EXPERIMENT_MANIFEST=$(EXPERIMENT_DIR)/manifest.txt
581587
RENDER_EXPERIMENT_COMMON=DOOM_MAP=E1M1 DOOM_DETAIL=quality DOOM_SKIP_INTRO=1 DOOM_WALL_TEXTURE=STARTAN3 DOOM_WALL_UPLOAD_COLUMNS=255 DOOM_WALL_UPLOAD_OVERRUN_COLUMNS=255
582588
RENDER_EXPERIMENT_E1M1_ASSETS=DOOM_MONSTER_SPRITES=$(DOOM_E1M1_MULTIFLOOR_SPRITES) DOOM_SPRITE_SCALES=1.00,0.75,0.50,0.33,0.25 DOOM_CROM_FILE_BYTES=1048576
589+
RENDER_EXPERIMENT_SIMPLE_ASSETS=DOOM_MONSTER_SPRITES=$(DOOM_SIMPLE_EXPERIMENT_SPRITES) DOOM_SPRITE_SCALES=1.00,0.75,0.50,0.33 DOOM_CROM_FILE_BYTES=1048576
583590

584591
EXPERIMENT_DESC_texture_columns=Generated STARTAN3 texture columns on the stable simple-map raycaster.
585-
EXPERIMENT_FLAGS_texture_columns=$(RENDER_EXPERIMENT_COMMON) $(RENDER_EXPERIMENT_E1M1_ASSETS) DOOM_SIMPLE_MAP=1 DOOM_CHUNKED_SIMPLE_MAP=0 DOOM_CEILING_PERSPECTIVE=0 DOOM_FLAT_PLANES=0
592+
EXPERIMENT_FLAGS_texture_columns=$(RENDER_EXPERIMENT_COMMON) $(RENDER_EXPERIMENT_SIMPLE_ASSETS) DOOM_SIMPLE_MAP=1 DOOM_CHUNKED_SIMPLE_MAP=0 DOOM_TITLEPIC=0 DOOM_CEILING_PERSPECTIVE=1 DOOM_PLANE_FLOOR_FORWARD_PHASES=2 DOOM_PLANE_CEILING_FORWARD_PHASES=2 DOOM_BG_SCROLL_COLUMNS=20 DOOM_BG_SCROLL_OVERRUN_COLUMNS=20 DOOM_FLAT_PLANES=0
586593
EXPERIMENT_PROBES_texture_columns=simple-enemy-visibility-check
587594

588595
EXPERIMENT_DESC_ripdoom_flat=Actual E1M1 RIPDOOM geometry, one wall layer, flat floor/ceiling backdrop.
@@ -749,7 +756,7 @@ $(GFX_ROM_DIR)/c1.bin $(GFX_ROM_DIR)/c2.bin $(GFX_ROM_DIR)/s1.bin $(GFX_ROM_DIR)
749756
@test -f $@
750757

751758
$(GFX_STAMP): tools/gen_gfx.py tools/doom_convert.py config.h $(DOOM_MAP_HEADER) $(DOOM_IWAD) | $(BUILDDIR) $(GFX_ROM_DIR)
752-
$(PYTHON) tools/gen_gfx.py --iwad $(DOOM_IWAD) --map $(DOOM_MAP) --wall-texture $(DOOM_WALL_TEXTURE) --detail $(DOOM_DETAIL) $(GFX_SIMPLE_MAP_ARG) $(GFX_PLANE_PHASE_ARGS) $(GFX_CEILING_ARG) $(GFX_CROM_BYTES_ARG) $(GFX_MONSTER_SPRITES_ARG) $(GFX_SPRITE_SCALES_ARG) --palette-header $(GFX_HEADER) --out-dir $(GFX_ROM_DIR)
759+
$(PYTHON) tools/gen_gfx.py --iwad $(DOOM_IWAD) --map $(DOOM_MAP) --wall-texture $(DOOM_WALL_TEXTURE) --detail $(DOOM_DETAIL) $(GFX_SIMPLE_MAP_ARG) $(GFX_PLANE_PHASE_ARGS) $(GFX_CEILING_ARG) $(GFX_TITLEPIC_ARG) $(GFX_CROM_BYTES_ARG) $(GFX_MONSTER_SPRITES_ARG) $(GFX_SPRITE_SCALES_ARG) --palette-header $(GFX_HEADER) --out-dir $(GFX_ROM_DIR)
753760
touch $@
754761

755762
$(GFX_ROM_DIR):

config.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,9 @@
345345
#ifndef DOOM_CEILING_PERSPECTIVE
346346
#define DOOM_CEILING_PERSPECTIVE 1
347347
#endif
348+
#ifndef DOOM_TITLEPIC
349+
#define DOOM_TITLEPIC 1
350+
#endif
348351
#ifndef DOOM_DYNAMIC_SECTOR_FLATS
349352
#if DOOM_MULTIFLOOR_RENDER
350353
#define DOOM_DYNAMIC_SECTOR_FLATS 0
@@ -411,8 +414,13 @@
411414
#define TILE_CEILING_PERSPECTIVE_BASE (TILE_HUD_SMALL_DIGIT_BASE + TILE_HUD_SMALL_DIGIT_COUNT)
412415
#define TILE_FLOOR_PERSPECTIVE_BASE (TILE_CEILING_PERSPECTIVE_BASE + TILE_CEILING_PERSPECTIVE_TILES)
413416
#define TILE_TITLEPIC_BASE (TILE_FLOOR_PERSPECTIVE_BASE + TILE_FLOOR_PERSPECTIVE_TILES)
417+
#if DOOM_TITLEPIC
414418
#define TILE_TITLEPIC_COLS 20
415419
#define TILE_TITLEPIC_ROWS 13
420+
#else
421+
#define TILE_TITLEPIC_COLS 0
422+
#define TILE_TITLEPIC_ROWS 0
423+
#endif
416424
#define TILE_TITLEPIC_TILES (TILE_TITLEPIC_COLS * TILE_TITLEPIC_ROWS)
417425
#define TILE_FLASH_CHECKER (TILE_TITLEPIC_BASE + TILE_TITLEPIC_TILES)
418426
#define TILE_FLASH_CHECKER_COUNT 1

docs/renderer-experiments.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ real hardware/performance tradeoff.
5050
`texture_columns`
5151

5252
Generated STARTAN3 texture columns on the stable simple-map raycaster. Use this
53-
as the baseline for texture readability, column density, and classic floor
54-
motion before adding real WAD geometry.
53+
as the baseline for texture readability, column density, matched ceiling/floor
54+
plane motion, and full-frame backdrop refresh before adding real WAD geometry.
5555

5656
`ripdoom_flat`
5757

tools/gen_gfx.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,19 @@ def apply_ceiling_perspective(enabled: bool) -> None:
243243
recompute_layout()
244244

245245

246+
def apply_titlepic(enabled: bool) -> None:
247+
global TITLEPIC_COLS, TITLEPIC_ROWS, TITLEPIC_TILES
248+
249+
if enabled:
250+
TITLEPIC_COLS = 20
251+
TITLEPIC_ROWS = 13
252+
else:
253+
TITLEPIC_COLS = 0
254+
TITLEPIC_ROWS = 0
255+
TITLEPIC_TILES = TITLEPIC_COLS * TITLEPIC_ROWS
256+
recompute_layout()
257+
258+
246259
def encode_tile(px):
247260
"""px: 16x16 list-of-lists of palette indices (0..15) -> (c1, c2) bytes."""
248261
c1, c2 = bytearray(), bytearray()
@@ -830,6 +843,8 @@ def patch_grid_tiles(iwad, zip_member, patch_name, cols, rows):
830843

831844

832845
def titlepic_tiles(iwad, zip_member):
846+
if TITLEPIC_TILES == 0:
847+
return [], "disabled-title", [], 0, 0
833848
if not iwad:
834849
palette = [(6, 6, 8), (54, 40, 26), (118, 26, 18), (170, 146, 74), (210, 198, 150)] * 3
835850
return [tile_solid() for _ in range(TITLEPIC_TILES)], "fallback-title", palette, TITLEPIC_COLS * 16, 200
@@ -1393,6 +1408,7 @@ def main():
13931408
ap.add_argument("--floor-forward-phases", type=int, help="Forward-motion floor plane cache phases")
13941409
ap.add_argument("--ceiling-forward-phases", type=int, help="Forward-motion ceiling plane cache phases")
13951410
ap.add_argument("--no-ceiling-perspective", action="store_true", help="Use a flat ceiling fill instead of baking ceiling perspective tiles")
1411+
ap.add_argument("--no-titlepic", action="store_true", help="Omit title picture C-ROM tiles for skip-intro experiment builds")
13961412
ap.add_argument("--crom-file-bytes", type=lambda value: int(value, 0), default=C_PAD, help="Per-file C-ROM byte budget for live encoded tiles before padding")
13971413
ap.add_argument("--map", default="E1M1", help="Doom map used to select player-start floor and ceiling flats")
13981414
ap.add_argument("--palette-header", help="Generated wall palette header")
@@ -1453,6 +1469,7 @@ def main():
14531469
args.ceiling_forward_phases if args.ceiling_forward_phases is not None else (2 if args.simple_map else 1),
14541470
)
14551471
apply_ceiling_perspective(not args.no_ceiling_perspective)
1472+
apply_titlepic(not args.no_titlepic)
14561473

14571474
here = os.path.dirname(os.path.abspath(__file__))
14581475
out = args.out_dir if args.out_dir else os.path.join(here, "..", "rom")

tools/simple_enemy_visibility_probe.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,9 @@ def main() -> int:
223223

224224
try:
225225
defs, scales = parse_generated_sprites(args.gfx_header)
226+
assert_sprite_fits("live former human walk frames", defs, scales, 3004, {1, 2, 3, 4, 5, 6, 7, 8}, args.crom_file_bytes)
227+
assert_sprite_fits("former human corpse frame", defs, scales, 9001, {0}, args.crom_file_bytes)
228+
assert_sprite_fits("former human death frames", defs, scales, 9010, {0}, args.crom_file_bytes)
226229
assert_sprite_fits("live imp walk frames", defs, scales, 3001, {1, 2, 3, 4, 5, 6, 7, 8}, args.crom_file_bytes)
227230
assert_sprite_fits("imp corpse frame", defs, scales, 9003, {0}, args.crom_file_bytes)
228231
assert_sprite_fits("imp death frames", defs, scales, 9012, {0}, args.crom_file_bytes)

0 commit comments

Comments
 (0)