No description
Find a file
sicoderealm 279a75cf0d
Some checks failed
Spellcheck / codespell (push) Failing after 8s
Build code / build-linux (push) Failing after 1m12s
Build code / build-mac (push) Has been cancelled
Build code / build-windows-32 (push) Has been cancelled
Build code / build-windows-64 (push) Has been cancelled
Honour the sidedef "Transparent" flag in the hardware renderer (#1489)
Palette index 254 is the cutout colour, and the "Transparent" checkbox
decides whether it is a hole or an ordinary colour. The software
renderer reads the flag per wall, so one bitmap can draw both ways. The
hardware renderer decides once per bitmap, at texture upload, where no
sidedef exists yet, so every wall using that bitmap got holes punched in
it whether or not the box was ticked.

Upload two variants instead, keyed on what the sidedef asked for.
D3DRENDER_TEXTURE_SOLID rides in the render packet's effect field,
already part of both the packet match key and the texture cache key, so
no new plumbing is needed.

Turning alpha testing off per chunk would have been fewer lines, but the
colour under a transparent texel is not the cutout colour: the upload
fills it with the last opaque colour on the row so bilinear filtering
does not halo along cutout edges. Disabling the test would reveal that
bleed as a smear.

Two details:

- The flag is read per wall, not per face, since a hole belongs to the
wall rather than the side you view it from. Rooms commonly tick the box
only on the face facing open ground, and reading the near face alone
painted the far face cyan along corner silhouettes.
- "No vertical tile" falls back to tiling where a face is not drawing
holes. That flag fills the wall above the texture with what is behind
it, which the texture clamp only achieves through holes; drawn solid it
smeared the edge row up the wall.

This exposes room data the old behaviour hid: a cutout texture without
the box ticked now draws cyan, as it always has in software. 22 shipped
rooms have at least one such face - but minimal issues/noticeable areas
were found during inspection. Marion was the obvious case and is fixed
separately in https://github.com/Meridian59/Meridian59/pull/1486; the
rest already look this way to every software renderer player.

Verified with a test room containing three sidedefs carrying the same
bitmap with different flags, so any difference between them is purely
flag driven.
2026-08-17 12:52:06 -07:00
.github Add Mac autobuild (#1248) 2025-09-28 17:43:53 -07:00
.vscode Adds vscode settings file with encoding settings (#978) 2024-10-20 09:34:53 -07:00
aws Fix handling of server 102 in reset verification (#1444) 2026-05-31 15:33:49 -07:00
bbgun bbgun updates (#1454) 2026-06-18 08:04:31 -07:00
bin Upgrade flex and bison (#1242) 2025-09-27 10:43:47 -07:00
blakcomp feat: Add point-in-sector utility to check for presence in room sectors (#1189) 2026-01-22 11:20:20 -08:00
blakdeco Remove most server-side sprintfs. (#672) 2024-03-27 16:02:52 -07:00
blakserv Allow "goroom" to use room filename (#1473) 2026-07-26 18:59:47 -07:00
clientd3d Honour the sidedef "Transparent" flag in the hardware renderer (#1489) 2026-08-17 12:52:06 -07:00
club Fix const correctness (#1285) 2025-12-02 14:26:46 -08:00
contrib build(deps-dev): bump brace-expansion from 1.1.11 to 1.1.18 in /contrib/vscode/blakod-support (#1482) 2026-08-11 21:45:27 -07:00
dlg chore: regenerate dlg\dialog.txt from dlg\npc.tab (#1080) 2025-01-27 18:16:25 -08:00
doc feat: allow dropping multiple inventory items in one network message (#1361) 2026-01-21 19:42:59 -08:00
docs feature: add configurable theme borders for chat and stats areas (theming part 5) (#1442) 2026-06-26 13:55:02 -07:00
external ccode: Adds new C function for string token replacement in Blakod (#1191) 2026-01-08 07:14:30 -08:00
include Remove advert tracking from login and char-pick (#1421) 2026-04-30 13:41:28 -07:00
install Add C++ runtime DLL needed by Bugsplat. 2026-07-15 15:10:25 -07:00
kod Allow "goroom" to use room filename (#1473) 2026-07-26 18:59:47 -07:00
lib Add minidump reporting. (#764) 2024-06-07 18:25:35 -07:00
makebgf Fix const correctness (#1285) 2025-12-02 14:26:46 -08:00
manual Regenerate manual PDF for Bound text fix. 2024-05-04 17:46:43 -07:00
module feature: add configurable theme borders for chat and stats areas (theming part 5) (#1442) 2026-06-26 13:55:02 -07:00
resource Mark Marion Linedef 58 wall as transparent (#1486) 2026-08-17 12:40:48 -07:00
roomedit UI tweaks for making slope editing faster. (#1485) 2026-08-15 17:20:49 -07:00
run Updates advertisements (#974) 2025-01-05 13:21:57 -08:00
util Make account name and password into std::strings (#1254) 2026-01-30 19:21:23 -08:00
.clang-format format: clang formatting of several files, updated clang-format rules (#1186) 2025-07-24 21:06:28 -07:00
.clang-format-ignore feat: Add clang-format configuration for C formatting support (#1168) 2025-05-29 07:02:19 -07:00
.gitignore Add C++ runtime DLL needed by Bugsplat. 2026-07-15 15:10:25 -07:00
blakston.pal Initial upload of Meridian 59 2012-09-15 14:06:57 -07:00
common.mak feature: add ogg streaming playback for music (#1388) 2026-03-21 21:12:24 -07:00
common.mak.linux Code cleanup and slight refactor of the Stats panel (Inventory/Spells/Skills/Stats) (#1362) 2026-01-25 15:09:25 -08:00
LICENSE Build wavemix audio DLL from source. 2018-01-22 11:10:27 -08:00
makefile feat: add OpenAL Soft audio engine to client (#1293) 2025-12-27 17:23:52 -08:00
MeridianPalette.BMP Initial upload of Meridian 59 2012-09-15 14:06:57 -07:00
README Update README for VS 2026 2026-05-13 06:49:02 -07:00
rules.mak No message when creating directory that exists. 2023-05-14 11:33:39 -07:00
rules.mak.linux fix up blakserv makefile, mutex for linux 2016-01-07 23:54:01 -08:00

Meridian 59 v1.1, January, 2015
Andrew Kirmse and Chris Kirmse

Copyright 1994-2026 Andrew Kirmse and Chris Kirmse
All rights reserved.  Meridian is a registered trademark.


LICENSE

This project is distributed under a license that is described in the
LICENSE file.  The license does not cover the game content (artwork,
rooms, audio, etc.), which are not included.

Note that "Meridian" is a registered trademark and you may not use it
without our written permission.

The license requires that if you redistribute this code in any form,
you must make the source code available, including any changes you
make.  We would love it if you would contribute your changes back to
the original source so that everyone can benefit.


WHAT'S INCLUDED AND NOT INCLUDED

The source to the client, server, game code, Blakod compiler, room
editor, and all associated tools are included.  Audio is handled by
OpenAL Soft, whose prebuilt binaries are included in external/.


BUILD INSTRUCTIONS

The code has been built successfully with Microsoft Visual Studio 2026
Community Edition, which you can download for free at 
https://visualstudio.microsoft.com/downloads/

1. Make sure Visual Studio's binaries are in your path, e.g. by using
the vcvars32.bat script that comes with Visual Studio.

2. Go to the top-level directory (the one that contains this README).

3. Type "nmake" to build debug versions, or "nmake RELEASE=1" to build
release versions.

RUN INSTRUCTIONS

After building the code, a server install is available in the
run\server directory.  Type "blakserv.exe" in that directory to run
the server.

A client install is available in the run\localclient directory.  You
will need to retrieve the artwork, rooms, and audio files from
elsewhere and copy them into the resource subdirectory.

The first thing you'll probably want to do is create an admin account
on the server so that you can log in.  Go to the "Administration" tab
on the server's interface and enter the command:

create account admin joe.smith password
 
(Don't use this default account name or password, or people will
likely take over your server. You'll get back a message like "Created
ACCOUNT 4".)

Then create a character slot on that account with

create admin 4

You'll now be able to log in with this account name and password.  Be
sure to "save game" from the server interface to save this new
account.

You can point your local client at your local server by running the
client (meridian.exe) with command line flags, like this:

meridian.exe /U:joe.smith /W:password /H:localhost /P:5959 


RUNNING THE SERVER ON LINUX OR MAC

The server can be built on Linux or Mac with the following commands:

cd blakserv
make -f makefile.linux

The blakserv.cfg file requires some manual changes to run on Linux.


THIRD-PARTY CODE

Meridian uses zlib, libpng, libarchive, and OpenAL Soft.  zlib, libpng,
and libarchive are built from source.  OpenAL Soft is included as a
prebuilt binary (LGPL; see external/openal-soft/ for license details).
libarchive was configured via cmake with the following cmake environment
variables set to use zlib:

ZLIB_INCLUDE_DIR points to the include directory
ZLIB_LIBRARY points to lib/zlib.lib


CONTACT INFORMATION

You can contact us at meridian59.email@gmail.com.  Our Web site is
https://meridian59.com, where you can also read about the history of
the game.