mirror of
https://github.com/RetroDECK/RetroVERSE.git
synced 2026-10-16 17:16:39 +00:00
Compare commits
36 commits
main-20260
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a3e9b93471 | ||
|
|
349057af2a | ||
|
|
b662d2f212 | ||
|
|
ab4fcdef6a | ||
|
|
c8e26655e5 | ||
|
|
ac2991f22b | ||
|
|
afcdcfdd09 | ||
|
|
61b2ef3668 | ||
|
|
f452bfd920 | ||
|
|
d6d40bf503 | ||
|
|
5b487a0d31 | ||
|
|
48fbb508bc | ||
|
|
a4d02fa9d5 | ||
|
|
ac5db61c86 | ||
|
|
a93501a4af | ||
|
|
72d8fc5f41 | ||
|
|
3b12fcc979 | ||
|
|
7c609a0eb4 | ||
|
|
7c881f51db | ||
|
|
42a33f4af5 | ||
|
|
9fefddb45e | ||
|
|
a85c97af89 | ||
|
|
4033740018 | ||
|
|
ff3a555145 | ||
|
|
5bf4c3eefa | ||
|
|
61e8d38563 | ||
|
|
3f338ef2da | ||
|
|
9df72982cd | ||
|
|
fd1f9d8d3f | ||
|
|
7a305f7282 | ||
|
|
0696deabb1 | ||
|
|
98a3ba273f | ||
|
|
f2a7b8a8b9 | ||
|
|
e09ef24da4 | ||
|
|
19c54c3619 | ||
|
|
aa9b6913d6 |
81
.github/workflows/retroverse-build.yml
vendored
81
.github/workflows/retroverse-build.yml
vendored
|
|
@ -1,4 +1,4 @@
|
||||||
name: "RetroVERSE: Build Store Inventory"
|
name: "RetroVERSE: Build Inventory"
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
@ -27,7 +27,7 @@ env:
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# The Alchemist is not vendored here. It is checked out from the components
|
# The Alchemist is not vendored here. It is checked out from the components
|
||||||
# repo at a ref pinned in alchemist/alchemist_ref, so the store repo carries
|
# repo at a ref pinned in alchemist/alchemist_ref, so the RetroVERSE repo carries
|
||||||
# only its own version_policy.sh (and optional version_pins.sh), which are
|
# only its own version_policy.sh (and optional version_pins.sh), which are
|
||||||
# overlaid onto the checkout.
|
# overlaid onto the checkout.
|
||||||
#
|
#
|
||||||
|
|
@ -280,7 +280,7 @@ jobs:
|
||||||
fail "class 'component' must not declare files[]: deployment belongs to the external component installer"
|
fail "class 'component' must not declare files[]: deployment belongs to the external component installer"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Store version is read from retroverse_manifest.json for both classes so the aggregator needs no class-specific logic.
|
# RetroVERSE version is read from retroverse_manifest.json for both classes so the aggregator needs no class-specific logic.
|
||||||
# For components it must agree with the packaged manifest.
|
# For components it must agree with the packaged manifest.
|
||||||
cm="$item_dir/component_manifest.json"
|
cm="$item_dir/component_manifest.json"
|
||||||
if [[ ! -f "$cm" ]]; then
|
if [[ ! -f "$cm" ]]; then
|
||||||
|
|
@ -372,7 +372,7 @@ jobs:
|
||||||
# Collect item metadata, fingerprints and upstream versions
|
# Collect item metadata, fingerprints and upstream versions
|
||||||
# ===========================================================================
|
# ===========================================================================
|
||||||
# Replaces the components repo's resolve-versions job. There is no version
|
# Replaces the components repo's resolve-versions job. There is no version
|
||||||
# resolution for the store version, it is read from the manifest. Component
|
# resolution for the RetroVERSE version, it is read from the manifest. Component
|
||||||
# items still resolve an upstream version through the pinned policy chain,
|
# items still resolve an upstream version through the pinned policy chain,
|
||||||
# for the record and for the bump check.
|
# for the record and for the bump check.
|
||||||
# ===========================================================================
|
# ===========================================================================
|
||||||
|
|
@ -396,7 +396,7 @@ jobs:
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
# Alchemist checkout. sparse-checkout keeps the rest of the components
|
# Alchemist checkout. sparse-checkout keeps the rest of the components
|
||||||
# repo out of the workspace, and the nested .git is harmless: alchemist.sh
|
# repo out of the workspace, and the nested .git is harmless: alchemist.sh
|
||||||
# resolves REPO_ROOT from its working directory, which stays the store
|
# resolves REPO_ROOT from its working directory, which stays the RetroVERSE
|
||||||
# repo root, so $REPO_ROOT/$COMPONENT_NAME still points at the item folder.
|
# repo root, so $REPO_ROOT/$COMPONENT_NAME still points at the item folder.
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
- name: Checkout Alchemist
|
- name: Checkout Alchemist
|
||||||
|
|
@ -408,7 +408,7 @@ jobs:
|
||||||
sparse-checkout: automation-tools/alchemist
|
sparse-checkout: automation-tools/alchemist
|
||||||
sparse-checkout-cone-mode: true
|
sparse-checkout-cone-mode: true
|
||||||
|
|
||||||
- name: Overlay store version policy
|
- name: Overlay RetroVERSE version policy
|
||||||
run: |
|
run: |
|
||||||
# version_policy.sh and version_pins.sh are read from the Alchemist's
|
# version_policy.sh and version_pins.sh are read from the Alchemist's
|
||||||
# own SCRIPT_DIR, so the components repo's copies arrive with the
|
# own SCRIPT_DIR, so the components repo's copies arrive with the
|
||||||
|
|
@ -487,13 +487,13 @@ jobs:
|
||||||
apt)
|
apt)
|
||||||
sudo add-apt-repository -y ppa:flatpak/stable
|
sudo add-apt-repository -y ppa:flatpak/stable
|
||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt install -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq unzip zstd
|
sudo apt install -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq unzip
|
||||||
;;
|
;;
|
||||||
pacman)
|
pacman)
|
||||||
sudo pacman -Sy --noconfirm flatpak flatpak-builder p7zip xmlstarlet bzip2 curl jq unzip zstd
|
sudo pacman -Sy --noconfirm flatpak flatpak-builder p7zip xmlstarlet bzip2 curl jq unzip
|
||||||
;;
|
;;
|
||||||
dnf)
|
dnf)
|
||||||
sudo dnf install -y flatpak flatpak-builder p7zip p7zip-plugins xmlstarlet bzip2 curl jq unzip zstd
|
sudo dnf install -y flatpak flatpak-builder p7zip p7zip-plugins xmlstarlet bzip2 curl jq unzip
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "ERROR: No supported package manager found (apt, pacman, dnf)"
|
echo "ERROR: No supported package manager found (apt, pacman, dnf)"
|
||||||
|
|
@ -527,7 +527,7 @@ jobs:
|
||||||
echo "Processing $item ($class)..."
|
echo "Processing $item ($class)..."
|
||||||
|
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# Fingerprint covers only what the Alchemist consumes. The store
|
# Fingerprint covers only what the Alchemist consumes. The RetroVERSE
|
||||||
# manifest and artwork are excluded: they are republished from
|
# manifest and artwork are excluded: they are republished from
|
||||||
# source every release, so a description or thumbnail edit must not
|
# source every release, so a description or thumbnail edit must not
|
||||||
# invalidate an otherwise identical artifact.
|
# invalidate an otherwise identical artifact.
|
||||||
|
|
@ -673,7 +673,7 @@ jobs:
|
||||||
# This does NOT force version bumps: the bump check compares
|
# This does NOT force version bumps: the bump check compares
|
||||||
# fingerprint and upstream version, neither of which the tool ref
|
# fingerprint and upstream version, neither of which the tool ref
|
||||||
# touches. A tool change rebuilds without demanding a bump on
|
# touches. A tool change rebuilds without demanding a bump on
|
||||||
# every item in the store.
|
# every item in the RetroVERSE.
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
ALCHEMIST_CHANGED=false
|
ALCHEMIST_CHANGED=false
|
||||||
if [[ -n "$PREV_ALCHEMIST_REF" && "$PREV_ALCHEMIST_REF" != "$ALCHEMIST_REF" ]]; then
|
if [[ -n "$PREV_ALCHEMIST_REF" && "$PREV_ALCHEMIST_REF" != "$ALCHEMIST_REF" ]]; then
|
||||||
|
|
@ -733,7 +733,7 @@ jobs:
|
||||||
# ===========================================================================
|
# ===========================================================================
|
||||||
# Build each item (or reuse from previous release)
|
# Build each item (or reuse from previous release)
|
||||||
# ===========================================================================
|
# ===========================================================================
|
||||||
# fail-fast is false: a store may hold hundreds of items and one malformed
|
# fail-fast is false: the RetroVERSE may hold hundreds of items and one malformed
|
||||||
# manifest should surface every other failure in the same run.
|
# manifest should surface every other failure in the same run.
|
||||||
# ===========================================================================
|
# ===========================================================================
|
||||||
build-items:
|
build-items:
|
||||||
|
|
@ -764,7 +764,7 @@ jobs:
|
||||||
sparse-checkout: automation-tools/alchemist
|
sparse-checkout: automation-tools/alchemist
|
||||||
sparse-checkout-cone-mode: true
|
sparse-checkout-cone-mode: true
|
||||||
|
|
||||||
- name: Overlay store version policy
|
- name: Overlay RetroVERSE version policy
|
||||||
if: matrix.can_reuse == false
|
if: matrix.can_reuse == false
|
||||||
run: |
|
run: |
|
||||||
if [[ ! -x "$ALCHEMIST_DIR/alchemist.sh" ]]; then
|
if [[ ! -x "$ALCHEMIST_DIR/alchemist.sh" ]]; then
|
||||||
|
|
@ -795,13 +795,13 @@ jobs:
|
||||||
apt)
|
apt)
|
||||||
sudo add-apt-repository -y ppa:flatpak/stable
|
sudo add-apt-repository -y ppa:flatpak/stable
|
||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt install -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq unzip zstd
|
sudo apt install -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq unzip
|
||||||
;;
|
;;
|
||||||
pacman)
|
pacman)
|
||||||
sudo pacman -Sy --noconfirm flatpak flatpak-builder p7zip xmlstarlet bzip2 curl jq unzip zstd
|
sudo pacman -Sy --noconfirm flatpak flatpak-builder p7zip xmlstarlet bzip2 curl jq unzip
|
||||||
;;
|
;;
|
||||||
dnf)
|
dnf)
|
||||||
sudo dnf install -y flatpak flatpak-builder p7zip p7zip-plugins xmlstarlet bzip2 curl jq unzip zstd
|
sudo dnf install -y flatpak flatpak-builder p7zip p7zip-plugins xmlstarlet bzip2 curl jq unzip
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "ERROR: No supported package manager found (apt, pacman, dnf)"
|
echo "ERROR: No supported package manager found (apt, pacman, dnf)"
|
||||||
|
|
@ -909,7 +909,7 @@ jobs:
|
||||||
echo "Build complete"
|
echo "Build complete"
|
||||||
|
|
||||||
# ---------------------------------------------------------------------
|
# ---------------------------------------------------------------------
|
||||||
# Validation runs on every item, reused or not. The store manifest sits
|
# Validation runs on every item, reused or not. The RetroVERSE manifest sits
|
||||||
# outside the fingerprint, so an edit to files[].source alone would
|
# outside the fingerprint, so an edit to files[].source alone would
|
||||||
# otherwise reuse the old artifact and never revalidate the paths.
|
# otherwise reuse the old artifact and never revalidate the paths.
|
||||||
# ---------------------------------------------------------------------
|
# ---------------------------------------------------------------------
|
||||||
|
|
@ -1061,9 +1061,6 @@ jobs:
|
||||||
with:
|
with:
|
||||||
ref: ${{ needs.configure.outputs.branch }}
|
ref: ${{ needs.configure.outputs.branch }}
|
||||||
|
|
||||||
- name: Install zstd
|
|
||||||
run: sudo apt update && sudo apt install -y zstd
|
|
||||||
|
|
||||||
- name: Generate release tag
|
- name: Generate release tag
|
||||||
id: tag
|
id: tag
|
||||||
run: |
|
run: |
|
||||||
|
|
@ -1136,7 +1133,14 @@ jobs:
|
||||||
cp "$art" artwork-staging/
|
cp "$art" artwork-staging/
|
||||||
done < <(find downloaded-artifacts/ -type f -name '*.artwork.*')
|
done < <(find downloaded-artifacts/ -type f -name '*.artwork.*')
|
||||||
|
|
||||||
ARCHIVES=(release-assets/*.tar.gz)
|
# Item archives only. The artwork bundle is also a .tar.gz and is
|
||||||
|
# built later in this job; excluding it by name keeps the inventory
|
||||||
|
# check correct if these steps are ever reordered.
|
||||||
|
ARCHIVES=()
|
||||||
|
for candidate in release-assets/*.tar.gz; do
|
||||||
|
[[ "$(basename "$candidate")" == "artwork.tar.gz" ]] && continue
|
||||||
|
ARCHIVES+=("$candidate")
|
||||||
|
done
|
||||||
|
|
||||||
if [[ "${#ARCHIVES[@]}" -eq 0 ]]; then
|
if [[ "${#ARCHIVES[@]}" -eq 0 ]]; then
|
||||||
echo "ERROR: no artifacts were collected from downloaded-artifacts/"
|
echo "ERROR: no artifacts were collected from downloaded-artifacts/"
|
||||||
|
|
@ -1166,7 +1170,7 @@ jobs:
|
||||||
# that misses one, a collection bug, a matrix entry that produced no
|
# that misses one, a collection bug, a matrix entry that produced no
|
||||||
# leg. None of those fail anything on their own, and the result would
|
# leg. None of those fail anything on their own, and the result would
|
||||||
# be a smaller inventory that every client reads as those items having
|
# be a smaller inventory that every client reads as those items having
|
||||||
# been removed from the store.
|
# been removed from the RetroVERSE.
|
||||||
# -------------------------------------------------------------------
|
# -------------------------------------------------------------------
|
||||||
jq -r 'keys[]' <<< "$CURRENT" | sort > /tmp/expected_items
|
jq -r 'keys[]' <<< "$CURRENT" | sort > /tmp/expected_items
|
||||||
printf '%s\n' "${ARCHIVES[@]}" \
|
printf '%s\n' "${ARCHIVES[@]}" \
|
||||||
|
|
@ -1192,7 +1196,7 @@ jobs:
|
||||||
|
|
||||||
if [[ "$INVENTORY_ERRORS" -gt 0 ]]; then
|
if [[ "$INVENTORY_ERRORS" -gt 0 ]]; then
|
||||||
echo ""
|
echo ""
|
||||||
echo "ERROR: inventory is incomplete: refusing to publish a partial store"
|
echo "ERROR: inventory is incomplete: refusing to publish a partial set"
|
||||||
echo " Expected: $(wc -l < /tmp/expected_items) items"
|
echo " Expected: $(wc -l < /tmp/expected_items) items"
|
||||||
echo " Collected: $(wc -l < /tmp/collected_items) items"
|
echo " Collected: $(wc -l < /tmp/collected_items) items"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
@ -1207,7 +1211,8 @@ jobs:
|
||||||
- name: Build artwork bundle
|
- name: Build artwork bundle
|
||||||
run: |
|
run: |
|
||||||
if [[ -d artwork-staging && -n "$(ls -A artwork-staging)" ]]; then
|
if [[ -d artwork-staging && -n "$(ls -A artwork-staging)" ]]; then
|
||||||
tar -c -C artwork-staging . | zstd -19 -o release-assets/artwork.tar.zst
|
tar -czf release-assets/artwork.tar.gz -C artwork-staging .
|
||||||
|
( cd release-assets && sha256sum artwork.tar.gz > artwork.tar.gz.sha )
|
||||||
echo "Artwork bundle built: $(ls -1 artwork-staging | wc -l) image(s)"
|
echo "Artwork bundle built: $(ls -1 artwork-staging | wc -l) image(s)"
|
||||||
else
|
else
|
||||||
echo "No artwork to bundle"
|
echo "No artwork to bundle"
|
||||||
|
|
@ -1220,7 +1225,7 @@ jobs:
|
||||||
# file_hashes for a REUSED item are carried forward from the previous
|
# file_hashes for a REUSED item are carried forward from the previous
|
||||||
# release. A reused item is never unpacked and rehashed. Omitting this
|
# release. A reused item is never unpacked and rehashed. Omitting this
|
||||||
# would not fail the build; it would silently ship empty hash maps for
|
# would not fail the build; it would silently ship empty hash maps for
|
||||||
# the most stable items in the store.
|
# the most stable items in the RetroVERSE.
|
||||||
# ---------------------------------------------------------------------
|
# ---------------------------------------------------------------------
|
||||||
- name: Generate retroverse.json
|
- name: Generate retroverse.json
|
||||||
env:
|
env:
|
||||||
|
|
@ -1279,7 +1284,7 @@ jobs:
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# The authored 'artwork' value is a repo path the client cannot see.
|
# The authored 'artwork' value is a repo path the client cannot see.
|
||||||
# Replace it with the file's name inside artwork.tar.zst, or null
|
# Replace it with the file's name inside artwork.tar.gz, or null
|
||||||
# when the item ships none.
|
# when the item ships none.
|
||||||
artwork_file=""
|
artwork_file=""
|
||||||
for candidate in artwork-staging/"$item".artwork.*; do
|
for candidate in artwork-staging/"$item".artwork.*; do
|
||||||
|
|
@ -1325,7 +1330,7 @@ jobs:
|
||||||
--arg alchemist_ref "${{ needs.configure.outputs.alchemist_ref }}" \
|
--arg alchemist_ref "${{ needs.configure.outputs.alchemist_ref }}" \
|
||||||
--argjson items "$entries" \
|
--argjson items "$entries" \
|
||||||
'{
|
'{
|
||||||
store_schema_version: ($schema | tonumber),
|
retroverse_schema_version: ($schema | tonumber),
|
||||||
source_id: $source_id,
|
source_id: $source_id,
|
||||||
release_tag: $tag,
|
release_tag: $tag,
|
||||||
built_on: $built_on,
|
built_on: $built_on,
|
||||||
|
|
@ -1429,10 +1434,15 @@ jobs:
|
||||||
BUILD_MATRIX: ${{ needs.setup-matrix.outputs.build-matrix }}
|
BUILD_MATRIX: ${{ needs.setup-matrix.outputs.build-matrix }}
|
||||||
run: |
|
run: |
|
||||||
IS_DRY_RUN="${{ needs.configure.outputs.is_dry_run }}"
|
IS_DRY_RUN="${{ needs.configure.outputs.is_dry_run }}"
|
||||||
|
RELEASE_RESULT="${{ needs.create-release.result }}"
|
||||||
|
|
||||||
|
# A tag only exists once create-release has actually published. It is
|
||||||
|
# empty on a dry run (the job is skipped) and on a failed release.
|
||||||
RELEASE_TAG="${{ needs.create-release.outputs.release_tag }}"
|
RELEASE_TAG="${{ needs.create-release.outputs.release_tag }}"
|
||||||
if [[ -z "$RELEASE_TAG" ]]; then
|
RELEASE_URL=""
|
||||||
RELEASE_TAG="(not created)"
|
|
||||||
|
if [[ -n "$RELEASE_TAG" && "$RELEASE_RESULT" == "success" ]]; then
|
||||||
|
RELEASE_URL="${{ github.server_url }}/${{ github.repository }}/releases/tag/${RELEASE_TAG}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "## RetroVERSE Build Summary" >> $GITHUB_STEP_SUMMARY
|
echo "## RetroVERSE Build Summary" >> $GITHUB_STEP_SUMMARY
|
||||||
|
|
@ -1441,6 +1451,9 @@ jobs:
|
||||||
if [[ "$IS_DRY_RUN" == "true" ]]; then
|
if [[ "$IS_DRY_RUN" == "true" ]]; then
|
||||||
echo "> **Dry run** - no release was created" >> $GITHUB_STEP_SUMMARY
|
echo "> **Dry run** - no release was created" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "" >> $GITHUB_STEP_SUMMARY
|
echo "" >> $GITHUB_STEP_SUMMARY
|
||||||
|
elif [[ -n "$RELEASE_URL" ]]; then
|
||||||
|
echo "**[View release ${RELEASE_TAG}](${RELEASE_URL})**" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $GITHUB_STEP_SUMMARY
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "### Parameters" >> $GITHUB_STEP_SUMMARY
|
echo "### Parameters" >> $GITHUB_STEP_SUMMARY
|
||||||
|
|
@ -1448,7 +1461,15 @@ jobs:
|
||||||
echo "| Parameter | Value |" >> $GITHUB_STEP_SUMMARY
|
echo "| Parameter | Value |" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "|-----------|-------|" >> $GITHUB_STEP_SUMMARY
|
echo "|-----------|-------|" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "| Branch | \`${{ needs.configure.outputs.branch }}\` |" >> $GITHUB_STEP_SUMMARY
|
echo "| Branch | \`${{ needs.configure.outputs.branch }}\` |" >> $GITHUB_STEP_SUMMARY
|
||||||
echo "| Release tag | \`${RELEASE_TAG}\` |" >> $GITHUB_STEP_SUMMARY
|
|
||||||
|
if [[ -n "$RELEASE_URL" ]]; then
|
||||||
|
echo "| Release | [\`${RELEASE_TAG}\`](${RELEASE_URL}) |" >> $GITHUB_STEP_SUMMARY
|
||||||
|
elif [[ -n "$RELEASE_TAG" ]]; then
|
||||||
|
echo "| Release | \`${RELEASE_TAG}\` (publish failed) |" >> $GITHUB_STEP_SUMMARY
|
||||||
|
else
|
||||||
|
echo "| Release | (not created) |" >> $GITHUB_STEP_SUMMARY
|
||||||
|
fi
|
||||||
|
|
||||||
echo "" >> $GITHUB_STEP_SUMMARY
|
echo "" >> $GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
if [[ -n "$BUILD_MATRIX" && "$BUILD_MATRIX" != "null" ]]; then
|
if [[ -n "$BUILD_MATRIX" && "$BUILD_MATRIX" != "null" ]]; then
|
||||||
|
|
|
||||||
7
README.md
Normal file
7
README.md
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<p align="center">
|
||||||
|
<img src="https://github.com/RetroDECK/RetroDECK/blob/0.11.0/res/rd_icons/general/icon-retroverse.svg" alt="RetroVERSE Logo" width="150"/>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
*"The universe, ever-expanding, never-ending, inspiring and vast. From the smallest bug to the largest animal, all is small and all is equal."*
|
||||||
|
|
||||||
|
# Welcome to the RetroVERSE
|
||||||
BIN
doom-shareware/artwork/thumb.png
Normal file
BIN
doom-shareware/artwork/thumb.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 191 KiB |
22
doom-shareware/component_recipe.json
Normal file
22
doom-shareware/component_recipe.json
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"doom-shareware": [
|
||||||
|
{
|
||||||
|
"source_url": "$REPO_ROOT/$COMPONENT_NAME/rd_assets/doom-shareware.zip",
|
||||||
|
"source_type": "local",
|
||||||
|
"extraction_type": "archive",
|
||||||
|
"version": "$DOOM-SHAREWARE_DESIRED_VERSION",
|
||||||
|
"assets": [
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "doom-shareware/DOOM1.WAD",
|
||||||
|
"dest": "$COMPONENT_ARTIFACT_ROOT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dir",
|
||||||
|
"source": "docs",
|
||||||
|
"dest": "docs"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
494
doom-shareware/rd_assets/README.TXT
Normal file
494
doom-shareware/rd_assets/README.TXT
Normal file
|
|
@ -0,0 +1,494 @@
|
||||||
|
Welcome to v1.9 of DOOM!
|
||||||
|
|
||||||
|
id Software respectfully requests that you do not modify the
|
||||||
|
levels for the shareware version of DOOM. We feel that the
|
||||||
|
distribution of new levels that work with the shareware version
|
||||||
|
of DOOM will lessen a potential user's incentive to purchase the
|
||||||
|
registered version.
|
||||||
|
|
||||||
|
If you would like to work with modified levels of DOOM, we
|
||||||
|
encourage you to purchase the registered version of the game.
|
||||||
|
|
||||||
|
Make sure you read the DOOM FAQ v6.666 if you have any problems
|
||||||
|
or are anxious to find out about the World of DOOM! The 4 files
|
||||||
|
of the FAQ are DMFAQ66A.TXT, DMFAQ66B.TXT, etc. Enjoy!
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
Additional support
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
If you are looking for external PWADs for DOOM, DOOM2 or Heretic,
|
||||||
|
look no further than the DOOMania! BBS, owned and operated by
|
||||||
|
Paul Johnson. The BBS number is (317) 662-8842, the voice number
|
||||||
|
is (317) 662-1449.
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
Auxiliary programs
|
||||||
|
------------------------------------------------------------
|
||||||
|
|
||||||
|
There are a number of auxiliary programs that come with DOOM. These
|
||||||
|
are DM.EXE, the DeathManager you use as a front-end for network and
|
||||||
|
modem play; DWANGO.EXE, the client software for the NEW multiplayer
|
||||||
|
gaming environment of the future; IPXSETUP.EXE, the IPX Network Device
|
||||||
|
Driver that enables you to play DOOM over an office network that uses
|
||||||
|
the IPX protocol and SERSETUP.EXE, the Serial Device Driver that enables
|
||||||
|
you to play DOOM over the modem or serial cable.
|
||||||
|
|
||||||
|
The documentation for the DM.EXE program is named DM.TXT, the documentation
|
||||||
|
for the DWANGO.EXE program is named DWANGO.TXT. The documentation for the
|
||||||
|
IPXSETUP.EXE and SERSETUP.EXE programs follow.
|
||||||
|
|
||||||
|
-------------------------------------------------------------
|
||||||
|
Get our latest releases from the following places:
|
||||||
|
|
||||||
|
id Software's BBS home:
|
||||||
|
Software Creations BBS "Home of the Authors"
|
||||||
|
1200/2400 V.42/MNP: 508-365-2359
|
||||||
|
2400-16.8k HST US Robotics: 508-368-4137
|
||||||
|
2400-14.4k V.32/V.32bis Hayes: 508-368-7036
|
||||||
|
|
||||||
|
id Software's anonymous ftp home:
|
||||||
|
ftp.uwp.edu
|
||||||
|
/pub/games/id
|
||||||
|
|
||||||
|
-------------------------------------------------------------
|
||||||
|
_______
|
||||||
|
____|__ | (R)
|
||||||
|
--| | |-------------------
|
||||||
|
| ____|__ | Association of
|
||||||
|
| | |_| Shareware
|
||||||
|
|__| o | Professionals
|
||||||
|
-----| | |---------------------
|
||||||
|
|___|___| MEMBER
|
||||||
|
|
||||||
|
OMBUDSMAN STATEMENT
|
||||||
|
|
||||||
|
This program was written by a member of the Association of Shareware
|
||||||
|
Professionals (ASP). ASP wants to make sure that the shareware
|
||||||
|
principle works for you. If you are unable to resolve a
|
||||||
|
shareware-related problem with an ASP member by contacting the
|
||||||
|
member directly, ASP may be able to help. The ASP Ombudsman can
|
||||||
|
help you resolve a dispute or problem with an ASP member, but does
|
||||||
|
not provide technical support for members' products. Please write
|
||||||
|
to the ASP Ombudsman at 545 Grover Road, Muskegon, MI 49442 orsend
|
||||||
|
a CompuServe message via CompuServe Mail to ASP Ombudsman
|
||||||
|
70007,3536.
|
||||||
|
|
||||||
|
------------------------------------------------------------
|
||||||
|
------------------------------------------------------------
|
||||||
|
DOOM ADDENDUM
|
||||||
|
------------------------------------------------------------
|
||||||
|
Welcome to DOOM. Before playing, you'll need to read the
|
||||||
|
DOOM manual and this addendum which contains information for
|
||||||
|
playing in Multiplayer mode, as well as technical support
|
||||||
|
and troubleshooting instructions. To avoid compatibility
|
||||||
|
errors, please make sure that your machine and network conform
|
||||||
|
to the system requirements listed below.
|
||||||
|
|
||||||
|
-------------------------------------------------------------
|
||||||
|
SYSTEM REQUIREMENTS
|
||||||
|
-------------------------------------------------------------
|
||||||
|
DOOM(TM) requires an IBM compatible 386 or better with 4 megs of
|
||||||
|
RAM, a VGA graphics card, and a hard disk drive. A 486 or
|
||||||
|
better, a Sound Blaster Pro(TM) or 100% compatible sound card
|
||||||
|
is recommended. A network that uses the IPX protocol is
|
||||||
|
required for network gameplay.
|
||||||
|
|
||||||
|
-------------------------------------------------------------
|
||||||
|
MULTIPLAYER MODE
|
||||||
|
-------------------------------------------------------------
|
||||||
|
GETTING STARTED
|
||||||
|
-------------------------------------------------------------
|
||||||
|
1. Install DOOM as described in the manual.
|
||||||
|
|
||||||
|
2. Launch DOOM from the SETUP program, by going to the
|
||||||
|
directory in which you installed DOOM, type SETUP, and press
|
||||||
|
the ENTER key. (If you are installing DOOM for the first
|
||||||
|
time the SETUP program will be automatically launched.)
|
||||||
|
Unlike playing DOOM in single player mode, DOOM in
|
||||||
|
multiplayer mode must be run either from the SETUP program
|
||||||
|
or by using the command line parameters mentioned later in
|
||||||
|
this addendum.
|
||||||
|
|
||||||
|
3. The SETUP program not only allows you to configure DOOM
|
||||||
|
to your system but lets you tell DOOM information that is
|
||||||
|
necessary for the multiplayer game, (i.e. number of players,
|
||||||
|
skill level, mode, etc.) The SETUP program is simple to
|
||||||
|
use--providing context sensitive help at the bottom of the
|
||||||
|
screen.
|
||||||
|
|
||||||
|
NUMBER OF PLAYERS: A maximum of four people can play
|
||||||
|
multiplayer DOOM on a network.
|
||||||
|
|
||||||
|
COMPATIBLE NETWORKS: To play multiplayer, you must have a
|
||||||
|
network that uses the IPX protocol. Check your network
|
||||||
|
manuals for information regarding your protocol. Novell
|
||||||
|
networks use the IPX protocol.
|
||||||
|
|
||||||
|
MULTIPLE GAMES ON THE NET: To play a multiplayer game while
|
||||||
|
another group is also playing the multiplayer game, you'll
|
||||||
|
need to change your network port address from the SETUP
|
||||||
|
application. The port address tells your server where to
|
||||||
|
send information that is sent over the network. Network
|
||||||
|
addresses range from 1-64000. You should refer to the person
|
||||||
|
in charge of your network for possible port addresses.
|
||||||
|
|
||||||
|
-------------------------------------------------------------
|
||||||
|
MULTIPLAYER INSTRUCTIONS
|
||||||
|
-------------------------------------------------------------
|
||||||
|
Many of the rules for playing DOOM change for the
|
||||||
|
multiplayer game. Read the following information carefully
|
||||||
|
before you begin to play DOOM in multiplayer mode.
|
||||||
|
|
||||||
|
MENUS: When you activate the Options menu or submenus, the
|
||||||
|
game KEEPS RUNNING so that other players can continue with
|
||||||
|
the action. So it is best to find a safe place before
|
||||||
|
adjusting screen sizes or sounds.
|
||||||
|
|
||||||
|
UNPAUSE: A player may Pause the game by pressing the PAUSE
|
||||||
|
key, but any other player can Unpause the game by pressing
|
||||||
|
the PAUSE key again. Make sure it's OK with your buddies
|
||||||
|
before taking a breather.
|
||||||
|
|
||||||
|
SAVE: When you do a savegame during a network game, it saves
|
||||||
|
on every player's system in the savegame slot you select,
|
||||||
|
writing over whatever was there. Before saving the game,
|
||||||
|
players should agree on a safe slot to save in.
|
||||||
|
|
||||||
|
LOAD: You cannot load a saved game while playing a
|
||||||
|
multiplayer game. To load a game everyone must quit from the
|
||||||
|
current game and restart the game from the saved game. To
|
||||||
|
start a game from a saved game, you can either select it
|
||||||
|
from the SETUP program or identify it as a command line
|
||||||
|
parameter.
|
||||||
|
|
||||||
|
WEAPONS: When a player runs over a weapon, he picks it up,
|
||||||
|
but the weapon remains in the game for other players to
|
||||||
|
take. Note: Shotguns dropped by former human sergeants are
|
||||||
|
removed from the game after being picked up or smashed.
|
||||||
|
|
||||||
|
DEATH: If you die and restart in the level, previously taken
|
||||||
|
items and destroyed monsters DON'T reappear. Even though
|
||||||
|
you've died, other players have survived. We didn't want to
|
||||||
|
undo all of their fine destruction by reviving every monster
|
||||||
|
in the area. However, this also means the level will
|
||||||
|
eventually run dry of monsters and ammunition. You'll have
|
||||||
|
to decide when the level is played out.
|
||||||
|
|
||||||
|
UNIFORM COLORS: In net games, each player's uniform is a
|
||||||
|
different color. The color of your character is the color
|
||||||
|
behind your face on the status bar. The colors are BROWN,
|
||||||
|
INDIGO (black), GREEN, and RED.
|
||||||
|
|
||||||
|
CHAT MODE: In a multiplayer game you can communicate with
|
||||||
|
other players in the Chat mode. To enter into Chant mode and
|
||||||
|
broadcast a message to all the players, press the letter t.
|
||||||
|
A cursor will appear where your messaging is normally
|
||||||
|
placed. To broadcast to a specific player, instead of
|
||||||
|
pressing t you'll need to press the first letter of the
|
||||||
|
player's color. (B)rown, (I)ndigo, (G)reen, and (R)ed. For
|
||||||
|
example, to send a message to the brown character, you would
|
||||||
|
press the letter b.
|
||||||
|
|
||||||
|
CHAT MACROS: In a multiplayer game, you can send your own
|
||||||
|
pre-defined macros (defined in the SETUP program) by initiating
|
||||||
|
Chat mode (as stated above), then holding ALT and pressing the
|
||||||
|
number key that corresponds to the macro you wish to send. For
|
||||||
|
example, if macro #2 is "Eat it and die!", initiate Chat mode
|
||||||
|
by pressing 'T', then hold down ALT and press 2.
|
||||||
|
|
||||||
|
EXITING A LEVEL: When one player exits a level, all players
|
||||||
|
instantly exit with him, regardless of their position or
|
||||||
|
their status.
|
||||||
|
|
||||||
|
-------------------------------------------------------------
|
||||||
|
COOPERATIVE OR DEATHMATCH MODE
|
||||||
|
-------------------------------------------------------------
|
||||||
|
There are two ways to play multiplayer--DeathMatch and
|
||||||
|
Cooperative. In Cooperative mode the players work together.
|
||||||
|
In DeathMatch mode your mission is to kill everything that
|
||||||
|
moves, including your buddies. You can choose which mode you
|
||||||
|
wish to play from the SETUP application. The differences
|
||||||
|
between Cooperative and DeathMatch mode are as follows:
|
||||||
|
|
||||||
|
WHERE YOU START: In Cooperative mode each player begins in
|
||||||
|
the same area. In DeathMatch mode the players begin in
|
||||||
|
completely different areas--if you want to see your buddy
|
||||||
|
you'll need to hunt him down. Plus, each time you die,
|
||||||
|
you'll restart in one of several random locations.
|
||||||
|
|
||||||
|
KEYS: Unlike in single-player or Cooperative mode gameplay,
|
||||||
|
in DeathMatch mode the players start each location with the
|
||||||
|
keys necessary for opening any locked door in that area.
|
||||||
|
|
||||||
|
STATUS BAR: In DeathMatch mode the ARMS section on the
|
||||||
|
status bar is replaced with "FRAG." The FRAG section
|
||||||
|
displays the number of times you've killed your opponents.
|
||||||
|
|
||||||
|
AUTOMAP: In Cooperative mode the Automap works the same way
|
||||||
|
it does in single-player mode. Each player is represented by
|
||||||
|
a different color arrow. In DeathMatch mode you won't
|
||||||
|
receive the pleasure of seeing your opponents on the map.
|
||||||
|
Just like the monsters, your friends could be just around
|
||||||
|
the corner, and you won't know until you face them.
|
||||||
|
|
||||||
|
SPY MODE: If you're playing in Cooperative mode, press F12
|
||||||
|
to toggle through the other players' viewpoint(s). Press any
|
||||||
|
other key to return to your view. You still retain your own
|
||||||
|
status bar at the bottom, and if your view reddens from pain
|
||||||
|
it is YOU, not your partner, who has been hit.
|
||||||
|
|
||||||
|
INTERMISSION SCREENS: In both Cooperative and DeathMatch
|
||||||
|
mode the intermission screen tallies your achievement. In
|
||||||
|
Cooperative mode the intermission screen lists the
|
||||||
|
achievements for all players in the game. In DeathMatch mode
|
||||||
|
the intermission provides a death count on everyone, letting
|
||||||
|
you know who killed whom.
|
||||||
|
|
||||||
|
-------------------------------------------------------------
|
||||||
|
DEATHMATCH MODE GAMEPLAY NOTES
|
||||||
|
-------------------------------------------------------------
|
||||||
|
The rules for completing or winning a DeathMatch game have
|
||||||
|
intentionally been left general. Any player can exit an area
|
||||||
|
and force all of the players to move to the next area. Also,
|
||||||
|
there is no limit on how many kills are required to declare
|
||||||
|
a player the winner. We decided to leave this up to you. You
|
||||||
|
know what you like best!
|
||||||
|
|
||||||
|
Note: Before you play DOOM in DeathMatch mode you should be
|
||||||
|
familiar with the layout of every area in DOOM. As you know,
|
||||||
|
in DeathMatch mode your startup location is random and often
|
||||||
|
in an area that is very hostile.
|
||||||
|
|
||||||
|
-------------------------------------------------------------
|
||||||
|
MULTIPLAYER DEMO RECORDING
|
||||||
|
-------------------------------------------------------------
|
||||||
|
You can record your tournaments for posterity! To record multi-
|
||||||
|
player demos, add the line "-record demoz" to the command-line.
|
||||||
|
Make sure the other player is recording also, or it won't work.
|
||||||
|
If you need more time, add the "-maxdemo <K>" option to increase
|
||||||
|
demo buffer space. Make sure both of you specify the same amount.
|
||||||
|
DOOM defaults to 128K of demo buffer space, to specify 1meg you
|
||||||
|
would type "-maxdemo 1024" on the command-line.
|
||||||
|
|
||||||
|
IF DOOM BOMBS TO DOS WITH A "Z_MALLOC" ERROR, YOU DON'T HAVE
|
||||||
|
ENOUGH MEMORY FOR THE MAXDEMO AMOUNT SPECIFIED!
|
||||||
|
|
||||||
|
When you wish to stop recording, press the Q or F10 keys and both
|
||||||
|
players will exit to DOS. To play the demo back, merely type,
|
||||||
|
"DOOM -playdemo demoz" and the demo will play back. To see the
|
||||||
|
other player, press the F12 key. Press F12 to toggle between all
|
||||||
|
players in the demo. The TAB key will display the automap.
|
||||||
|
|
||||||
|
You can set the name of the demo file to anything you want. "demoz"
|
||||||
|
was just an example name.
|
||||||
|
|
||||||
|
-------------------------------------------------------------
|
||||||
|
RUNNING DOOM FROM THE COMMAND LINE
|
||||||
|
-------------------------------------------------------------
|
||||||
|
Much of the information you give to DOOM through the SETUP
|
||||||
|
program can be provided by passing program parameters to
|
||||||
|
the appropriate device driver on the command line.
|
||||||
|
|
||||||
|
NETWORK PLAY
|
||||||
|
------------
|
||||||
|
When you want to run a network game, you use IPXSETUP.EXE which
|
||||||
|
is the device driver for DOOM's network mode. The parameters
|
||||||
|
are as follows:
|
||||||
|
|
||||||
|
-NODES starts DOOM as a network game and sets the number of
|
||||||
|
players who are going to play. If you don't specify the number
|
||||||
|
of nodes, the default is 2.
|
||||||
|
-nodes <# of players>
|
||||||
|
|
||||||
|
-PORT sets the port from which to play DOOM multiplayer on
|
||||||
|
the network. By setting a different port, more than one
|
||||||
|
group of players can play DOOM on a single network.
|
||||||
|
-port <# of the port>
|
||||||
|
|
||||||
|
MODEM PLAY
|
||||||
|
----------
|
||||||
|
When you want to play a modem or null-modem game, you need to
|
||||||
|
run SERSETUP.EXE which is the device driver for DOOM's serial
|
||||||
|
communications mode. The parameters are as follows:
|
||||||
|
|
||||||
|
-DIAL tells the program which number to dial, if you're going
|
||||||
|
to do the calling.
|
||||||
|
-dial <phone number>
|
||||||
|
|
||||||
|
-ANSWER puts your modem into Answer mode so someone can call
|
||||||
|
you and play DOOM.
|
||||||
|
-answer
|
||||||
|
|
||||||
|
-COM1, -COM2, -COM3, -COM4 specifies which COM port your modem
|
||||||
|
or serial cable is connected to. Very important!
|
||||||
|
-com1
|
||||||
|
|
||||||
|
-8250 tells SERSETUP to set the UART to 8250. Just in case your
|
||||||
|
16550 UART is acting up at the higher speed.
|
||||||
|
-8250
|
||||||
|
|
||||||
|
-IRQ sets the IRQ for the COM port.
|
||||||
|
-irq <irq number>
|
||||||
|
|
||||||
|
-PORT sets the COM I/O port that SERSETUP uses to communicate
|
||||||
|
with your modem. To use hexadecimal, such as the number 0x3f8, you
|
||||||
|
would type "-port 0x3f8".
|
||||||
|
-port <port number>
|
||||||
|
|
||||||
|
-<#> sets the baud rate of your COM port, overriding the value in
|
||||||
|
the MODEM.CFG if you're running a modem game. Legal values are
|
||||||
|
9600, 14400, 38400, 57600.
|
||||||
|
Example: -14400
|
||||||
|
|
||||||
|
Note that to run a null-modem game, you must have a null-modem
|
||||||
|
cable plugged into a serial port on both computers and each
|
||||||
|
computer runs SERSETUP.EXE with a -COM# parameter as well as
|
||||||
|
any General Parameters. Do not use the -ANSWER or -DIAL
|
||||||
|
parameters, or SERSETUP will think you're using a modem. To get
|
||||||
|
a null-modem cable, go to CompUSA or Radio Shack and say,"I need
|
||||||
|
a null-modem cable to run a DOOM multiplayer game."
|
||||||
|
|
||||||
|
VERY IMPORTANT!
|
||||||
|
You will need to run the SETUP program and select Choose Modem
|
||||||
|
from the Network/Modem/Serial menu so you can set your modem
|
||||||
|
init string correctly. Merely select the modem and press Enter
|
||||||
|
and SETUP will create a new MODEM.CFG file that corresponds to
|
||||||
|
your modem (the MODEM.CFG file is used by SERSETUP for initing
|
||||||
|
the modem.)
|
||||||
|
|
||||||
|
If your modem is not in the list, you will most likely need to
|
||||||
|
edit the MODEM.CFG file in the DOOM directory. The first line
|
||||||
|
of the file is an initialization string that:
|
||||||
|
* Turns off error-correction
|
||||||
|
* Turns off data-compression
|
||||||
|
The MODEM.CFG file has a Hayes-standard init string like this:
|
||||||
|
AT Z S=46 &Q0 &D0
|
||||||
|
You just add your own commands after the "AT Z " if your modem
|
||||||
|
doesn't work with these settings -- dig up your modem manual for
|
||||||
|
the correct settings.
|
||||||
|
|
||||||
|
The second line is a hangup string used when you quit DOOM.
|
||||||
|
|
||||||
|
The third line is the baud rate at which you want your COM port set.
|
||||||
|
The legal settings are: 9600, 14400, 38400, 57600.
|
||||||
|
|
||||||
|
If the modem connection isn't working when you call your friend,
|
||||||
|
have him call you instead. Try setting the modem to GENERIC (in the
|
||||||
|
SETUP.EXE program) if your modems don't connect.
|
||||||
|
|
||||||
|
If you STILL can't get the modems to connect, both of you should
|
||||||
|
run your favorite COMM programs and connect with 9600, no error
|
||||||
|
correction and no data compression. Then quit the COMM program
|
||||||
|
and keep the connection going. Then just run SERSETUP with a -COM#
|
||||||
|
parameter (as if you were running a null-modem game) since you're
|
||||||
|
already connected.
|
||||||
|
|
||||||
|
If you had trouble connecting, but figured out some settings that
|
||||||
|
work, please fax them to us at (214) 686-9288 so we can expand our
|
||||||
|
modem init string database and perhaps have the SETUP program ask
|
||||||
|
you for your modem type in a future version of DOOM.
|
||||||
|
|
||||||
|
GENERAL PARAMETERS
|
||||||
|
------------------
|
||||||
|
These parameters can be passed straight to DOOM, or passed
|
||||||
|
to IPXSETUP or SERSETUP, which then pass them to DOOM.
|
||||||
|
|
||||||
|
-LOADGAME allows you to start DOOM from a specified save
|
||||||
|
game. Instead of using the saved game name, simply enter the
|
||||||
|
number that corresponds to the slot you saved the game to on
|
||||||
|
the SAVE GAME screen (0-5).
|
||||||
|
-loadgame <# of the game>
|
||||||
|
|
||||||
|
-DEATHMATCH starts DOOM as a DeathMatch game. If you don't
|
||||||
|
enter DEATHMATCH as a command line parameter, DOOM will
|
||||||
|
default to the Cooperative mode.
|
||||||
|
-deathmatch
|
||||||
|
|
||||||
|
-ALTDEATH specifies respawning items during DEATHMATCH.
|
||||||
|
NOTE: Invulnerability and Invisibility do not respawn.
|
||||||
|
-deathmatch -altdeath
|
||||||
|
|
||||||
|
-SKILL sets the skill level (1-5) you wish to play. Only useful
|
||||||
|
with -warp -- see below.
|
||||||
|
-skill <# of skill level>
|
||||||
|
|
||||||
|
-EPISODE sets the episode (1-3) you wish to play. The default
|
||||||
|
episode is Episode One, Knee-Deep in the Dead.
|
||||||
|
-episode <# of the episode>
|
||||||
|
|
||||||
|
-CONFIG allows you to use your configuration file from any
|
||||||
|
directory you choose. This is primarily for diskless workstations
|
||||||
|
that don't have a C: drive to save config information to. You
|
||||||
|
need to rename the default.cfg file created by the SETUP program
|
||||||
|
to a directory and name of your choosing to avoid conflicts.
|
||||||
|
-config <pathname> ex. -config f:\doom\data\myconfig.cfg
|
||||||
|
|
||||||
|
-NOMONSTERS allows you to start playing with NO MONSTERS running
|
||||||
|
around! This is great for DeathMatch where, really, the monsters
|
||||||
|
just get in the way. Only useful with -warp -- see below.
|
||||||
|
-nomonsters
|
||||||
|
|
||||||
|
-RECORD tells DOOM to record the game you are starting.
|
||||||
|
Demo files will be saved as <filename>.lmp.
|
||||||
|
-record <filename>
|
||||||
|
|
||||||
|
-MAXDEMO xxx If you want to record a demo bigger than 128k, use
|
||||||
|
this option. xxx will be the size (in kilobytes) of the demo.
|
||||||
|
example -MAXDEMO 1024 will record a 1 megabyte demo.
|
||||||
|
-record <filename> -maxdemo xxx
|
||||||
|
|
||||||
|
-RESPAWN tells DOOM that, yes, you are a badass, and yes, you
|
||||||
|
want all the monsters to respawn around 8 seconds after you kill
|
||||||
|
them. The NIGHTMARE skill level already does this. Note that
|
||||||
|
using -respawn and -nomonsters at the same time is a dumb thing
|
||||||
|
to do. Only useful with -warp -- see below.
|
||||||
|
-respawn
|
||||||
|
|
||||||
|
-TURBO xxx gives you a speed boost. This is great in DeathMatch!
|
||||||
|
The value xxx can be from 0 to 250. The other player(s) will be
|
||||||
|
notified of your speed increase! THIS IS CONSIDERED CHEATING
|
||||||
|
IN SINGLE PLAYER MODE!
|
||||||
|
-turbo xxx
|
||||||
|
|
||||||
|
@<filename> will allow you to specify a Response file that DOOM
|
||||||
|
will read additional command-line parameters from. For example,
|
||||||
|
typing 'DOOM @MYPARMS' will tell DOOM to look in the MYPARMS file
|
||||||
|
for additional command-line parameters. The file format is simply
|
||||||
|
one parameter per line with a carriage return to terminate the line.
|
||||||
|
Each parameter is typed exactly as you would type it on the DOS
|
||||||
|
command-line.
|
||||||
|
|
||||||
|
-FAST will make the monsters move and shoot up to 3 times faster,
|
||||||
|
just as if you were playing in Nightmare mode, but without the
|
||||||
|
respawning. Only useful with -warp -- see below.
|
||||||
|
-fast
|
||||||
|
|
||||||
|
-TIMER <# of minutes> will make DOOM exit the current level after
|
||||||
|
a specified amount of minutes, going to the intermission screen.
|
||||||
|
This option is only useful in DeathMatch mode.
|
||||||
|
-timer xxx
|
||||||
|
|
||||||
|
An example line for entering the above information would be:
|
||||||
|
doom -loadgame 3 -deathmatch -skill 4 -timer 10
|
||||||
|
|
||||||
|
IMPORTANT: Only the following command-line parameters are available
|
||||||
|
while using the -WARP parameter:
|
||||||
|
-fast, -nomonsters, -skill, -respawn.
|
||||||
|
|
||||||
|
-------------------------------------------------------------
|
||||||
|
ADDING MORE PHONE NUMBERS TO YOUR LIST
|
||||||
|
-------------------------------------------------------------
|
||||||
|
You must use a text editor (such as EDIT that comes with DOS)
|
||||||
|
to edit the MODEM.NUM file. The format is simple. The first line
|
||||||
|
is the Person's name (which will appear in the list), the second
|
||||||
|
line is the phone number. The third line should be blank.
|
||||||
|
|
||||||
|
-------------------------------------------------------------
|
||||||
|
DOOM, the DOOM logo and DOOM likenesses are trademarks of id
|
||||||
|
Software, inc.,(C)1993. IBM is a registered trademark of
|
||||||
|
International Business Machines, inc. Sound Blaster is a
|
||||||
|
registered trademark of Creative Labs, inc. All other
|
||||||
|
trademarks are the property of their respective companies.
|
||||||
|
|
||||||
|
Special thanks to ZOOM in their help for 28.8 modem support.
|
||||||
BIN
doom-shareware/rd_assets/doom-shareware.zip
Normal file
BIN
doom-shareware/rd_assets/doom-shareware.zip
Normal file
Binary file not shown.
24
doom-shareware/retroverse_manifest.json
Normal file
24
doom-shareware/retroverse_manifest.json
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
"schema_version": "1",
|
||||||
|
"id": "doom-shareware",
|
||||||
|
"min_client_schema": "1",
|
||||||
|
"class": "data",
|
||||||
|
"name": "DOOM Shareware",
|
||||||
|
"description": "DOOM Shareware v1.9 featuring the original classic episode: 'Knee-Deep in the Dead'.",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"tags": [
|
||||||
|
"game",
|
||||||
|
"rom"
|
||||||
|
],
|
||||||
|
"requires": [
|
||||||
|
"component:uzdoom"
|
||||||
|
],
|
||||||
|
"artwork": "artwork/thumb.png",
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"source": "DOOM1.WAD",
|
||||||
|
"destination": "$roms_folder/doom/DOOM1.WAD",
|
||||||
|
"policy": "replace"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -12,6 +12,39 @@
|
||||||
"dest": "$COMPONENT_ARTIFACT_ROOT"
|
"dest": "$COMPONENT_ARTIFACT_ROOT"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source_url": "https://github.com/freedoom/freedoom/releases/download/v0.13.0/freedoom-0.13.0.zip",
|
||||||
|
"source_type": "github_release",
|
||||||
|
"extraction_type": "archive",
|
||||||
|
"version": "$FREEDOOM_DESIRED_VERSION",
|
||||||
|
"assets": [
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "freedoom-0.13.0/freedoom1.wad",
|
||||||
|
"dest": "$COMPONENT_ARTIFACT_ROOT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "freedoom-0.13.0/freedoom2.wad",
|
||||||
|
"dest": "$COMPONENT_ARTIFACT_ROOT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "freedoom-0.13.0/COPYING.txt",
|
||||||
|
"dest": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "freedoom-0.13.0/CREDITS.txt",
|
||||||
|
"dest": "docs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "freedoom-0.13.0/CREDITS-MUSIC.txt",
|
||||||
|
"dest": "docs"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
30
freedoom/rd_assets/COPYING.adoc
Normal file
30
freedoom/rd_assets/COPYING.adoc
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
Copyright © 2001-2024
|
||||||
|
Contributors to the Freedoom project. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the Freedoom project nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived from
|
||||||
|
this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS
|
||||||
|
IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
||||||
|
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
For a list of contributors to the Freedoom project, see the file
|
||||||
|
CREDITS.
|
||||||
|
|
@ -1,22 +1,34 @@
|
||||||
{
|
{
|
||||||
"schema_version": 1,
|
"schema_version": "1",
|
||||||
|
"min_client_schema": "1",
|
||||||
"id": "freedoom",
|
"id": "freedoom",
|
||||||
"class": "data",
|
"class": "data",
|
||||||
"name": "FreeDOOM",
|
"name": "FreeDOOM",
|
||||||
"description": "Freedoom is a complete, free content first person shooter game, based on the Doom engine.",
|
"description": "Freedoom is a free, open-source game for UZDoom, compatible with many custom DOOM levels, music, graphics and mods.",
|
||||||
"version": "1.0.0",
|
"version": "1.0.1",
|
||||||
"tags": ["rom", "freeware"],
|
"tags": [
|
||||||
|
"game",
|
||||||
"min_client_schema": 1,
|
"rom"
|
||||||
"requires": ["component:uzdoom"],
|
],
|
||||||
|
"requires": [
|
||||||
|
"component:uzdoom"
|
||||||
|
],
|
||||||
"artwork": "artwork/thumb.png",
|
"artwork": "artwork/thumb.png",
|
||||||
|
|
||||||
"files": [
|
"files": [
|
||||||
{
|
{
|
||||||
"source": "freedm.wad",
|
"source": "freedm.wad",
|
||||||
"destination": "$roms_folder/doom/freedm.wad",
|
"destination": "$roms_folder/doom/freedm.wad",
|
||||||
"policy": "replace"
|
"policy": "replace"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "freedoom1.wad",
|
||||||
|
"destination": "$roms_folder/doom/freedoom1.wad",
|
||||||
|
"policy": "replace"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "freedoom2.wad",
|
||||||
|
"destination": "$roms_folder/doom/freedoom2.wad",
|
||||||
|
"policy": "replace"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
1320
retroverse_licences.txt
Normal file
1320
retroverse_licences.txt
Normal file
File diff suppressed because it is too large
Load diff
BIN
rtdink/artwork/thumb.png
Normal file
BIN
rtdink/artwork/thumb.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1,000 KiB |
32
rtdink/component_functions.sh
Executable file
32
rtdink/component_functions.sh
Executable file
|
|
@ -0,0 +1,32 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
_prepare_component::rtdink() {
|
||||||
|
local action="$1"
|
||||||
|
shift
|
||||||
|
|
||||||
|
local component_config="$(get_own_component_path)/rd_config"
|
||||||
|
|
||||||
|
case "$action" in
|
||||||
|
|
||||||
|
reset)
|
||||||
|
log i "----------------------"
|
||||||
|
log i "Resetting RTDink"
|
||||||
|
log i "----------------------"
|
||||||
|
|
||||||
|
dir_prep "$roms_path/dink" "$storage_path/retrodeck/retroverse/rtdink/dmods"
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
postmove)
|
||||||
|
log i "------------------------"
|
||||||
|
log i "Post-moving RTDink"
|
||||||
|
log i "------------------------"
|
||||||
|
|
||||||
|
dir_prep "$roms_path/dink" "$storage_path/retrodeck/retroverse/rtdink/dmods"
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
16
rtdink/component_launcher.sh
Executable file
16
rtdink/component_launcher.sh
Executable file
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source /app/libexec/launcher_functions.sh
|
||||||
|
|
||||||
|
# Setting component name and path based on the directory name
|
||||||
|
component_name="$(basename "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")"
|
||||||
|
component_path="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd)"
|
||||||
|
|
||||||
|
export LD_LIBRARY_PATH="$component_path/lib:$rd_shared_libs:${DEFAULT_LD_LIBRARY_PATH}"
|
||||||
|
export SDL_SOUNDFONTS="${SDL_SOUNDFONTS:-/app/retrodeck/components/rtdink/dink/midi/TimGM6mb.sf2}"
|
||||||
|
|
||||||
|
log i "RetroDECK is now launching $component_name"
|
||||||
|
log d "Library path is: $LD_LIBRARY_PATH"
|
||||||
|
log d "AppDir is: $component_path"
|
||||||
|
|
||||||
|
exec "$component_path/RTDinkApp" "$@"
|
||||||
43
rtdink/component_recipe.json
Executable file
43
rtdink/component_recipe.json
Executable file
|
|
@ -0,0 +1,43 @@
|
||||||
|
{
|
||||||
|
"rtdink": [
|
||||||
|
{
|
||||||
|
"source_url": "$REPO_ROOT/$COMPONENT_NAME/rd_assets/rtdink.7z.001",
|
||||||
|
"source_type": "local",
|
||||||
|
"version": "2.08",
|
||||||
|
"extraction_type": "archive",
|
||||||
|
"assets": [
|
||||||
|
{
|
||||||
|
"type": "dir",
|
||||||
|
"source": "$EXTRACTED_PATH",
|
||||||
|
"dest": "$COMPONENT_ARTIFACT_ROOT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "create",
|
||||||
|
"dest": "component_version",
|
||||||
|
"contents": "$SOURCE_VERSION"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "$REPO_ROOT/$COMPONENT_NAME/retroverse_manifest.json",
|
||||||
|
"dest": "$COMPONENT_ARTIFACT_ROOT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "$REPO_ROOT/$COMPONENT_NAME/component_functions.sh",
|
||||||
|
"dest": "$COMPONENT_ARTIFACT_ROOT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "$REPO_ROOT/$COMPONENT_NAME/component_launcher.sh",
|
||||||
|
"dest": "$COMPONENT_ARTIFACT_ROOT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "$REPO_ROOT/$COMPONENT_NAME/component_recipe.json",
|
||||||
|
"dest": "$COMPONENT_ARTIFACT_ROOT"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"libs": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
15
rtdink/component_update_rtdink.txt
Normal file
15
rtdink/component_update_rtdink.txt
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
Compiled from source to get non-flatpak hardcoded binary:
|
||||||
|
|
||||||
|
curl -sL https://raw.githubusercontent.com/SethRobinson/RTDink/master/linux_setup.sh | bash
|
||||||
|
|
||||||
|
Date:
|
||||||
|
|
||||||
|
2026-10-14
|
||||||
|
|
||||||
|
Version:
|
||||||
|
|
||||||
|
https://github.com/SethRobinson/RTDink/tags
|
||||||
|
|
||||||
|
------- Change log for 2.08 --------- (March 2025)
|
||||||
|
|
||||||
|
|
||||||
BIN
rtdink/rd_assets/rtdink.7z.001
Normal file
BIN
rtdink/rd_assets/rtdink.7z.001
Normal file
Binary file not shown.
BIN
rtdink/rd_assets/rtdink.7z.002
Normal file
BIN
rtdink/rd_assets/rtdink.7z.002
Normal file
Binary file not shown.
437
rtdink/rd_assets/version_history.txt
Normal file
437
rtdink/rd_assets/version_history.txt
Normal file
|
|
@ -0,0 +1,437 @@
|
||||||
|
|
||||||
|
------ Change log for 1.7.0 ----------
|
||||||
|
|
||||||
|
* Upgraded source projects to Visual Studio 2017 (free community edition works fine)
|
||||||
|
* (bugfix) No longer forces reload of all graphics when saving the state
|
||||||
|
* (bugfix) No longer forces reload of all graphics and audio when losing focus/going into the background
|
||||||
|
* (bugfix) Fixed issue where screen scrolling could bug out if window was resized on windows
|
||||||
|
* Latest state data to "Continue" persists even if the game crashes now
|
||||||
|
* Added support for 64 bit builds (still fully compatible with existing save states/games)
|
||||||
|
* Added support for aspect ratio correction (can be disabled by enabling "Fullscreen stretch" in the options)
|
||||||
|
* Added IPV6 support
|
||||||
|
* (DinkC) Goto statements no longer require a ; at the end to work
|
||||||
|
* (iOS) Now compatible with iOS 11
|
||||||
|
* (Windows) Installer no longer requires admin privileges, now installs to local user's appdata dir (C:\UserName\AppData\Local\DinkSmallwoodHD)
|
||||||
|
* (Windows) .exe and installer are now signed with RTsoft's distribution certificate
|
||||||
|
* (Windows) Now checks for new versions on startup
|
||||||
|
* (Windows) Now writes the stack trace to log.txt if the game crashes (helps debug problems)
|
||||||
|
|
||||||
|
------ Change log for 1.7.1 ----------
|
||||||
|
|
||||||
|
(big thanks to Redink1 for most of these bug reports and the fancy shadows patch!)
|
||||||
|
|
||||||
|
* (Windows) Fixed app icon
|
||||||
|
* (Windows) Mouse-controlled screens in DMODs control better and hide the original mouse cursor
|
||||||
|
* (Windows) Now remembers screen size and fullscreen mode (don't forget, you can drag the window corners around to customize the screen size as well)
|
||||||
|
* (Windows) Input URL input area gets focus by default when installing a DMOD by URL
|
||||||
|
* (bugfix) Can no longer tap F8 during a game load to load a save state too early which can freeze the game
|
||||||
|
* (bugfix) Fixed issue where 32 bit tilebitmaps would go wonky when reloading the surface
|
||||||
|
* Default color under status bar is now black, fixes issue when transparent colors are used in the stats area, random garbage would show through
|
||||||
|
* (windows) Version # is now shown in title bar
|
||||||
|
* (bugfix) Fixed some issues with how default offsets are calculated, it fixed some problems where sprites would be in the wrong place in certain DMODs
|
||||||
|
* (bugfix, windows) "Smoothing" no longer incorrectly turns on if you lose/regain focus
|
||||||
|
* (windows) Added "Windowed Borderless fullscreen mode" toggle, defaults to off. It will try to do 640X480 at your native monitor resolution by default now on
|
||||||
|
a clean install. If you've dragged the dink window to a weird size it won't be able to go fullscreen which is kind of weird, but it does give a clear error message. It should probably
|
||||||
|
enumerate graphic modes and choose one if the current one is invalid, or let the user choose, meh
|
||||||
|
* Added redink1's "soft shadow improvement" patch
|
||||||
|
* (proton) Fixed issue with blitting alpha things to the background, fixed the soft shadows for things rendered into the background
|
||||||
|
|
||||||
|
------ Change log for 1.7.2 ----------
|
||||||
|
|
||||||
|
* Changed "FPS lock:" to "Lock to 30 FPS:" in options, makes it more clear it's actually bad to use and not vsync
|
||||||
|
* (Windows) Handles alt-tab and clicking on a different monitor while in native fullscreen modes better
|
||||||
|
* Added "Ghost walk toggle" to in-game cheat menu. Allows you to walk through solid objects and screenlocks
|
||||||
|
* (DinkC) Added support for Dan's load_tile() command
|
||||||
|
* (Windows) Added support for -game <dmod directory> parm to load a DMOD from anywhere on your HD. It also sets
|
||||||
|
the active DMOD dir to the DMODs parent directory for that session. Automatic state autosave, save/continue and quicksave/quickload work as expected by saving data to its directory
|
||||||
|
* (bugfix) Save states now properly load even if the DMOD directory has been cut and pasted to a new place
|
||||||
|
* (bugfix) Full state saves now properly setup backgrounds with correct vision modifications instead of assuming it was 0
|
||||||
|
- Due to minor changes in the save state stuff, I've versioned it so the game will refuse to load old versions (as always, this doesn't affect the normal save files, just the full state saves HD does)
|
||||||
|
* (DinkC) fill_screen works better and colors 0 and 255 are no longer sometimes reversed
|
||||||
|
* (bugfix) M can now be used to turn off the map, previously it only worked to turn it on
|
||||||
|
* (bugfix) Status no longer incorrectly draws over full screen bitmaps (like the map in Mystery Island) and is properly reconstructed in full save states
|
||||||
|
|
||||||
|
------ Change log for 1.7.3 ----------
|
||||||
|
|
||||||
|
* (DinkC) DinkC version is now reported as 110 instead of 109
|
||||||
|
* (Bugfix) Fixed issue with set_frame_frame, the DMOD Mayhem now works
|
||||||
|
* (Bugfix) Fixed another incorrect color issue with fill_screen (This fixed Initiation's title screen)
|
||||||
|
* (Bugfix) Fixed horrible issue where the last line in a script might not get run. This fixed the intro screen to Lost Forest Romp
|
||||||
|
* (Bugfix) Rewrote some nasty code that I could no longer understand, THE LAST QUEST (part 2)'s cool room slide/warp effect now works right
|
||||||
|
* Added "Debug DinkC Toggle" to cheat menu, it shows collision boxes and causes the log (log.txt or choose view log from debug menu)
|
||||||
|
* If fullscreen is at a weird size it will now just force it to 1024X768. If that fails, well, it won't be good
|
||||||
|
- Note: Save state format has been changed again, so old save states won't load
|
||||||
|
|
||||||
|
------ Change log for 1.7.4 ----------
|
||||||
|
|
||||||
|
* (Bugfix) Fixed a script crash. This bug was also in the legacy dink
|
||||||
|
* (Windows) "Tap to continue" is no longer shown when waiting for a keypress, but will still be shown on touch-devices
|
||||||
|
* Fixed bug where any DMOD directory starting with "dink" was ignored from the internal DMOD listing screen. Oops, that was a pretty bad one, sorry dinkcrft.
|
||||||
|
* (Bugfix) Fixed issue where default .ini animations wouldn't get applied correctly in some cases, this fixed a slight offset problem with Stone Of Balance
|
||||||
|
* Fixed problem with glitchy black lines during screen transitions
|
||||||
|
* (Bugfix) Fixed issue with playmidi and filenames that start with numbers over 1000, this fixed a problem with 1812over.mid not playing in Mayhem
|
||||||
|
* Added 1920X1080 screen mode selector in the Options menu
|
||||||
|
* No longer applying Dan's checkboard fix to tile screens (they don't need it I think..), and also added a hack so it will ignore main-02 through main-04.bpm (the dialog box) as it made it look weird
|
||||||
|
* Fixed some issues related to dynamic 8 bit to 32 bit surface changes (this can happen if you turn on the new shadows after starting to play or the game suddenly hits a 32 bit image)
|
||||||
|
- Note: Just to be safe, save state version has changed, so old save states won't load
|
||||||
|
|
||||||
|
------ Change log for 1.7.5 ----------
|
||||||
|
|
||||||
|
* Properly handles an illegal frame # sent to sp_frame instead of crashing
|
||||||
|
* (Bugfix) Fixed issue with not being able to set long delays in sprites (fixed dancing knight in Bugmania)
|
||||||
|
* (Bugfix) Fixed DinkC "!=" command which was renamed "!" for some reason. This fixed the goto in Bugmania
|
||||||
|
* Enabled support for >= and <= in DinkC, not sure why it was commented out before, they were active in 1.08
|
||||||
|
* (Bugfix) Status bar will now be drawn even when mouse mode is active if needed (it now shows up in Bugmania)
|
||||||
|
* Space no longer selects dialog, you'll have to use ENTER or CONTROL like on 1.08
|
||||||
|
* Mouse can now be used to select dialog options
|
||||||
|
* Fixed mouse issue with Bugmania in the town where it wasn't sending button down messages
|
||||||
|
* Made escape open the Dink HD menu even when wait_for_button is being used. This may be a problem if any DMODs require ESCAPE to be a button that is used though
|
||||||
|
- Note: Save state format has been changed again, so old save states won't load
|
||||||
|
|
||||||
|
------ Change log for 1.7.6 ----------
|
||||||
|
|
||||||
|
* Made Dink HD work with DFArc. Either you can put DFArc in the Dink HD dir and add "dmods" as the additional dmod directory so it can find
|
||||||
|
mods installed by Dink HD too, or you can keep Dink HD completely separate, and enter the full path/exe to Dink HD's .exe in DFArc config and that works too.
|
||||||
|
|
||||||
|
It's kind of weird that Dink HD puts its mods in a subdir called "dmods" as compared to the original Dink which useds its root dir. I could change that but.. meh.
|
||||||
|
|
||||||
|
* Added support for -window and -debug from the command line. Dink HD remembers the last setting already, so -window would only have any effect
|
||||||
|
if it was last used as fullscreen
|
||||||
|
|
||||||
|
* Added Dan Walma's improved shadow patch
|
||||||
|
|
||||||
|
------ Change log for 1.7.7 ----------
|
||||||
|
|
||||||
|
* Sprite blits that hang out of the game area are now rejected in some situations, to match functionality of Dink 1.08. (Bloop the fish on 1.08 looked right because it was getting ddraw errors when trying to draw the "blank" numbers because they were too big for the screen)
|
||||||
|
* A LOAD_SEQUENCE done after a LOAD_SEQUENCE_NOW in dink.ini is now ignored to match V1.08 functionality. This fixes the issue of a fish turning into an old man in Bloop the fish
|
||||||
|
* Alt-Q now closes Dink, to match 1.08
|
||||||
|
* Fixed issue with bubble magic not having a transparent background in Bloop the fish (was due to some changes to make fake magic/weapon icons work on mobiles.. I'll have to redo that later)
|
||||||
|
* Fixed issue with slow nagivation in Broken Windows due to too much logging about scripts being run
|
||||||
|
* (Bugfix) copy_bmp_to_screen issue where it might try to blit a 24 bit image onto 8 bit fixed (fixed incorrect images in Broken Windows)
|
||||||
|
* (Bugfix) key-<key num>.c scripts are no longer sometimes loaded multiple times
|
||||||
|
* Some tweaks to keyboard input so Broken Windows typing area works better, "," and "." are supported. Escape is as well but it also brings up Dink HD's menu which isn't great, but at least it works
|
||||||
|
* (Bugfix) Default transparency for LEFTALIGN things is now correctly white instead of sometimes not transparent
|
||||||
|
* The / divider on the experience display ( ns-11.bmp ) is now always "white transparent". This WAS the original way (check the Dink jewel case screenshots) but somehow in 1.08 and beyond this stopped being transparent. Fixing this fixed the white box in Bug Mania
|
||||||
|
* (Bugfix) Fixed "way too jumpy megapotion" bug
|
||||||
|
|
||||||
|
- Note: Just to be safe, save state version has changed, so old save states won't load
|
||||||
|
|
||||||
|
------ Change log for 1.7.8 ----------
|
||||||
|
|
||||||
|
* Fixed issue where launching dmods from DFArc with a dmod path not in DFArc's dir or Dink HD's dmod dir would fail
|
||||||
|
* Fixed compatibility so Freedink.exe and the dink.exe from 1.08 can be run from Dink HD's dir (previously, start.c had been hacked to skip stuff for the HD version,
|
||||||
|
it now checks version and if it's being run as a dmod or not and does it right)
|
||||||
|
* If you run the HD "dink" dir as a mod it now works as expected (it plays the normal game, including the old start up screen)
|
||||||
|
* Now including story/*.c instead of the .d files. No reason to hide them, right? (note: if you install over HD without uninstalling, the old .d files will still be there. But .c files are checked
|
||||||
|
first so it should be ok anyway)
|
||||||
|
* DMODs now default to the original .midi files rather than the .ogg CD music, as it changed the desired "feel" of some DMODs to switch to CD music. Running with -game dink causes Dink itself to
|
||||||
|
not use CD music as well, so for people who don't like CD music at all there's an option to play the original game with midis only
|
||||||
|
* (Bugfix) Dink HD will no longer try to grab missing sprites from the base dink dir, this fixes Dink's pushing anim in Zoltron
|
||||||
|
* (Bugfix) dmod installer no longer chokes on zero byte files (I'm looking at you, 9gems)
|
||||||
|
* (Bugfix) Fixed memory leak and possible crash related to script loading
|
||||||
|
* (Bugfix) Fixed issue with the checkerboard shadow processing where the 8 bit RLE decoder failed because it was expecting an 8 bit target (most bmps don't use RLE, but Alliance does in places)
|
||||||
|
* (Bugfix) Fixed issue with loading certain 16 bit bmps incorrectly, fixed tilted text in Infinidink
|
||||||
|
* Went ahead and decided to accept 252,252,252 as alpha if it's index 255 on an 8bit sprite. This fixed the white background issue with Alliance dmod as well as Dinkcraft
|
||||||
|
* FEATURE: Can now download all DMODs from Dink Network directly from inside the game via Dan's php interface. Can sort by rating, latest update date, or alphabetically
|
||||||
|
|
||||||
|
- Note: Just to be safe, save state version has changed, so old save states won't load
|
||||||
|
|
||||||
|
------ Change log for 1.7.9 ----------
|
||||||
|
|
||||||
|
* Dink now continues to download and install dmods when in the background, but everywhere else pauses automatically
|
||||||
|
* After installing a dmod, you can now choose to play it now or go back to the browse dmod list
|
||||||
|
* DMOD data downloaded from dink network is now cached for that session (it's not going to change so quickly, so why stress DN.com if we don't have to)
|
||||||
|
* (Bugfix) "installing <dmod>..." text message is no longer truncated in a weird way sometimes
|
||||||
|
* (Bugfix) Fixed another issue where a base graphic could fill in with a missing .bmp in a sequence when it shouldn't
|
||||||
|
* Huh, turns out .D files are always loaded before .C files. I switched back to including .D files, otherwise if you didn't do a clean install my start.c changes don't show up
|
||||||
|
* Fixed it so freedink.exe and the old dink can be run directly from the Dink HD directory without crashing. I didn't actually test it before, they didn't like / instead of \ in my .ini previously.
|
||||||
|
I also added the CD and splash.bmp that were missing
|
||||||
|
* Quick tip that pops up when playing the normal game now talks about the F1/F8 instant state save/load feature instead of talking about pressing the "pause icon" which doesn't even exist on the Windows build
|
||||||
|
|
||||||
|
- Note: Just to be safe, save state version has changed, so old save states won't load
|
||||||
|
|
||||||
|
------ Change log for 1.8.0 ----------
|
||||||
|
|
||||||
|
* Applied 16 bit bmp loading fix to "fancy shadows" version too, forgot before
|
||||||
|
* (Bugfix) Dink is no longer sometimes incorrectly shown on screen right as a dmod is started
|
||||||
|
* (Windows, DinkC, Performance) Logging code rewritten, it's was horribly slow before. If a DMOD spammed "debug" messages it would previously drastically slow down the entire dmod
|
||||||
|
* (Bugfix) LOAD_SEQUENCE and LOAD_SEQUENCE_NOW fixes, fixes stuff in many dmods
|
||||||
|
* Improved mouse handling on dialog menus, no longer accidently select the first option of the dink menu if you click slow after using HD's escape menu to get there
|
||||||
|
|
||||||
|
- Note: Just to be safe, save state version has changed, so old save states won't load
|
||||||
|
|
||||||
|
------ Change log for 1.8.1 ----------
|
||||||
|
|
||||||
|
* Escape now brings up the classic dink escape menu, the Dink HD menu was just too intrusive. It will show a text message that you can hit Shift-Escape to bring up the HD menu as well
|
||||||
|
* Made dialog box background look better by making it 32 bit with alpha, no more "cracks" at some resolutions. Custom dialogs may still get line cracks at non 640X480 but whatever
|
||||||
|
* Default resolution is now 1024X768 fullscreen instead of 640X480
|
||||||
|
* dmod listing is packed tighter and now sorted alphabetically by dmod name, not directory name
|
||||||
|
|
||||||
|
------ Change log for 1.8.2 ----------
|
||||||
|
|
||||||
|
* Changed release compiling a bit to enable C7 compatible debug info, may help with stack traces
|
||||||
|
* Oops, turned max sprites back up to 300 from 100, don't ask me how I managed that one
|
||||||
|
* (DinkC) A line of over 200 characters won't corrupt memory (new limit is 512) - this fixed a crash in Grasp of Darkness
|
||||||
|
* (DinkC) external commands no longer generate bogus errors in the log.txt due to how 1.08 added weird overloading stuff
|
||||||
|
* Now shows the dmod's splash.bmp during loading
|
||||||
|
* Fixed issue where music might not play on the title screen
|
||||||
|
* Raised "memory of dead background sprites" to 300 from 100 for Windows, up to 200 for mobile
|
||||||
|
* Doubled memory Dink is allowed to use before uncaching graphics not used recently (could probably be disabled entirely for Windows but whatever)
|
||||||
|
|
||||||
|
------ Change log for 1.8.3 ----------
|
||||||
|
|
||||||
|
* Added "If a .dmod file is put in the Dink HD directory (where the .exe is), it will be automatically installed and then deleted" to readme.txt
|
||||||
|
* Dialog box rendering was off a few pixels due to me forgetting to remove some tests I did, fixed
|
||||||
|
* Black at index 255 and white at index 0 is now forced during bmp loading. Windows does it, photoshop doesn't, but older versions of Dink (directx) seemed to do
|
||||||
|
it so going with that
|
||||||
|
* Invalid sprite sent to freeze/unfreeze will no longer crash the game (bug was also in original 1.08)
|
||||||
|
* Added hardening to check valid input on many script functions, will stop "sometimes" crashes based on bad scripting as well as log them
|
||||||
|
* Crash logging should show correct function names. I mean it this time!
|
||||||
|
|
||||||
|
------ Change log for 1.8.4 ----------
|
||||||
|
|
||||||
|
* Some changes to Dink's speed calculations, it's now basically locked at "you better get 60 fps or the whole game will slow down" - the
|
||||||
|
original system is REALLY bad and the timing of Dink vs monsters can vary wildly based on your framerate. So I sort of had to "choose" a correct
|
||||||
|
speed and go with that, I chose a pretty fast speed sort of arbitrarily because it "felt" ok. There isn't really a "correct" speed so I do expect problems with some dmods due to them expecting
|
||||||
|
a specific speed, but by choosing rather snappy speed hopefully mystery island and most of them will be finishable
|
||||||
|
* Related to the above, holding tab no longer lets you cheat by moving relatively faster than monsters
|
||||||
|
* Playing location aware sounds on a script not attached to a sprite will no longer cause crashes (should fix crash in malachi the jerk)
|
||||||
|
|
||||||
|
------ Change log for 1.8.5 ----------
|
||||||
|
|
||||||
|
* Tweaked speed a bit, sort of aligned it so the cutscenes in Initiation play right
|
||||||
|
|
||||||
|
------ Change log for 1.8.6 ----------
|
||||||
|
|
||||||
|
* (Windows) Running "dink.exe c:\temp\ACoolDMOD.dmod" from the command line will now install it, then run it. (original dmod file won't be deleted) Just seemed weird that this didn't exist so added it
|
||||||
|
* DMOD installer progress now switches to showing MB instead of K if the size is big
|
||||||
|
* BUGFIX: Fixed map loading bug that could crash the game (I added this one recently trying to clean up code to use more consts rather than magic #s, but there is always the risk I stupidely break something!)
|
||||||
|
* load_tile no longer instantly takes effect but requires a draw_screen or moving screens, this matches how 1.08 worked. Loading a save state or resizing the window will cause it to happen early, but hey, close enough
|
||||||
|
* BUGFIX: Fixed extra nasty bug where logic on certain things like charging your magic would pause the amount of time you used TAB to skip time
|
||||||
|
|
||||||
|
- Note: Just to be safe, save state version has changed, so old save states won't load
|
||||||
|
|
||||||
|
------ Change log for 1.8.7 ----------
|
||||||
|
|
||||||
|
* Savestates should now properly restore the background in dmods that use mouse controls and tiles at the same time
|
||||||
|
* Some tweaks with when mouse buttons are processed (only in mouse cursor modes or a dialog menu)
|
||||||
|
* Misc work on touch controls to prepare for the mobile releases
|
||||||
|
* Added some names to credits (if you notice I added anybody twice or would rather be credited a different way or not at all, let me know!)
|
||||||
|
* Fixed bug that could sort of over-write random data if more than 100 sprites were active.. wow, bad
|
||||||
|
|
||||||
|
------ Change log for 1.8.8 ----------
|
||||||
|
|
||||||
|
* Mobile GUI tweaks
|
||||||
|
* Added option to disable screen scroll transitions, one of my Android test devices has the slowest glread in the world, it's like 1 full second to walk to the next screen because of it. This might make dmods that
|
||||||
|
use timing (Myster island camera sequence for example) easier though, not sure.
|
||||||
|
* Fixed issue where behavior of two load_sequence commands in a row on the same sequence differed from 1.08 (in 1.08, max frame is set to the second one as long as the first one wasn't actually loaded yet. key now shows up in TGKA)
|
||||||
|
* Fixed regression where offsets in Mayhem were incorrect on the hand mouse pointer
|
||||||
|
* Upped max frames per seq to 100 instead of 50, fixes Echoes of the Ancient. I should probably make it dynamic but changing one const number is much easier!
|
||||||
|
* Now gives a clear warning in the log.txt if a seq tries to go beyond what it can handle and will truncate it (better than breaking the whole sequence as it did before)
|
||||||
|
* Added support for a weird bmp header type, fixes incorrect palette issue in the dmod The Orb of Darkness
|
||||||
|
* Fixed life/exp/health to correctly interpolate between values like the original dink, huge thanks to Dan's detailed bug report on this, he even made a mod which made testing the fix a breeze!
|
||||||
|
* BUGFIX: .dmod files detected in the main Dink HD dir are now properly deleted after auto-installing them
|
||||||
|
* (Windows) Key binding changes: F1 now brings up the Dink Menu (Shift-Escape was .. weird..) and quicksave was moved to F4
|
||||||
|
|
||||||
|
- Note: Save state version has changed, old save states won't load!
|
||||||
|
|
||||||
|
------ Change log for 1.89 ----------
|
||||||
|
|
||||||
|
* Added Dan Walma's .png support (untested)
|
||||||
|
* Another bugfix in the .dmod decompresser, fixes issue with Attack of the veggies
|
||||||
|
* (Windows) Holding Shift in addition to Tab will cause "super turbo" mode, speeding up the game faster than just holding Tab. (Secret tip: If you really want to see speed, hold down the Control key too)
|
||||||
|
|
||||||
|
|
||||||
|
------ Change log for 1.90 ----------
|
||||||
|
|
||||||
|
* iOS version recompiled as Release instead of debug, oops
|
||||||
|
* OSX version released as a code-signed secure download from rtsoft.com. Removed from Mac App Store. It supports notifying the user about
|
||||||
|
new versions, same as the Windows version. Like the windows version, the window can be stretched to any size, but it lacks a full screen option.
|
||||||
|
|
||||||
|
------ Change log for 1.91 ----------
|
||||||
|
|
||||||
|
* This release fixes CVE-2018-0496: Sylvain Beucler and Dan Walma discovered several directory traversal issues in DFArc, an extension manager for the Dink Smallwood game, allowing an attacker to overwrite arbitrary files on the user's system. (While this doesn't use DFArc, some of the same "zip slip" issues applied)
|
||||||
|
* Applied Dan Walma's fix so DinkHD would not incorrectly interpret sp_frame(x, -1) as sp_frame(x, 1), this fixes an issue with the Malachi the Jerk DMOD
|
||||||
|
|
||||||
|
------ Change log for 1.92 ----------
|
||||||
|
|
||||||
|
* (Bugfix) Fixed issue that caused graphical glitches in the DMOD Revolution
|
||||||
|
* Looping sounds like fire/save machines now properly pause when app loses focus
|
||||||
|
|
||||||
|
|
||||||
|
------ Change log for 1.93 ----------
|
||||||
|
|
||||||
|
* (Bugfix) Fixed crash in Windows 10/11. What was the problem? I'm not sure, simply rebuilding the game with my current dev environment was enough to fix it
|
||||||
|
* "Cheats" button renamed "Debug tools" and only show the cheat options if debug mode is enabled, then you re-enter the menu. Seemed like having cheats
|
||||||
|
right in your face is a bad idea and probably caused people to ruin the game by cheating even when they didn't need it
|
||||||
|
* XInput gamepads now supported, can be plugged/unplugged during play
|
||||||
|
* Misc fixes to how windowing/resolutions worked, removed some code that caused weird buggy behavior in Win 10/11, was written long ago
|
||||||
|
* Added quit button (Windows version)
|
||||||
|
|
||||||
|
------ Change log for 1.94 ----------
|
||||||
|
|
||||||
|
* Should work on Windows 7 again (in theory.. uhh.. )
|
||||||
|
* Now using HTTPS for all communications/downloads on all platforms
|
||||||
|
* Download & DMOD install is now much faster
|
||||||
|
* Windows now using a 64 bit build and latest FMOD Studio version for audio
|
||||||
|
* BUGFIX: All cheats now properly show up if DinkC Debug Toggle is used from the debug mode (previously, Ghostwalk didn't appear)
|
||||||
|
* (Android) Fixed issue with Android 11 not being able to save
|
||||||
|
* (Windows) Running dink.exe with /? or --help will now show a list of possible command line parms
|
||||||
|
* (Android) Now using FMOD for the sound engine here, now all supported platforms have audio feature parity and should sound the same
|
||||||
|
* BUGFIX (Android): Installing certain large DMODs will no longer crash due to JNI not being able to garbage collect strings fast enough,
|
||||||
|
although this bug might be something that only happened on this build due to DMOD install optimizations, not sure
|
||||||
|
* (Windows) Added note on about screen: "Click and drag to move this window, yeah, this GUI was originally made for mobile so it's weird",
|
||||||
|
* (Desktop versions) In-game Options menu now shows active dink and DMOD paths, About page shows dink dir and dmod base dir
|
||||||
|
* Midi improvements - using a new MIDI soundfont ( GeneralUser GS 1.471.sf2, but I converted it to .dls1 as FMOD only supports that) -
|
||||||
|
I think it's probably better than the default Windows midi player so I went ahead and enabled it for Desktop versions too, but .. I don't know,
|
||||||
|
I feel like some instruments are a bit loud in some midis, but I guess it's probably because different midi authors worked with different
|
||||||
|
soundfonts and engineered them to different audio levels, so fixing volume for one song makes it too loud on another. Hrmph
|
||||||
|
* DMOD browse menu (showing things you can install) now shows file size
|
||||||
|
* BUGFIX: Plugged in XInput devices no longer cause dink to stutter while walking if using keyboard to move
|
||||||
|
* BUGFIX: Fixed some weirdness that happend if DPI scaling is enable
|
||||||
|
|
||||||
|
|
||||||
|
------ Change log for 1.95 ----------
|
||||||
|
* Fixed 25 year old strcpy usage issue with overlapping the dest and src locations which you shouldn't do,
|
||||||
|
strangely the first time it actually caused a problem (AFAIK?) was on a recent Android build that
|
||||||
|
was crashing on some devices when New Game is clicked.
|
||||||
|
|
||||||
|
------ Change log for 1.97 ---------- (July 2022)
|
||||||
|
|
||||||
|
* BUGFIX: Fixed issue with black tiles at the start of Charlie's Legacy (Now properly rebuilds surfaces when dynamically switching from
|
||||||
|
8 bit to 32 bit color back buffer mode, it does this the first time it detects high color sprites in a dmod) (Robj)
|
||||||
|
* BUGFIX: Fixed issue with pushing animation code that caused Charlie's Legacy to freeze dink on frame 1 when pushing (Robj)
|
||||||
|
* Unless you're using touch controls, choosing an inventory item will no longer auto-close the menu, not really need for
|
||||||
|
keyboard/gamepad players (robj)
|
||||||
|
* load_script gives a warning to log if you try to load a script to a sprite that doesn't exist instead of crashing
|
||||||
|
* Added support for bmps using "bitfields" (to Proton), have never seen one in the wild, but Charlie's Legacy's map-03.bmp uses it
|
||||||
|
* BUGFIX: Unknown procedures give correct error in log, before it would include weird garbage
|
||||||
|
* HUGE speedup on script loading, fixes slowdowns in Charlie's Legacy sliding puzzles
|
||||||
|
(and pretty much any dmod that does intensive script processing)
|
||||||
|
* (Windows) I see possible issues with the script "return var" statement and stack problems, it doesn't properly
|
||||||
|
handle recursion well and will kill the stack if enough calls are made in the same loop. Instead of a real fix, I've increased the .exe's stack
|
||||||
|
from 1 mb to 50mb on Windows for now, will revisit issue later probably when handling mobile builds
|
||||||
|
* No longer writes "drawing hardmap" to the log
|
||||||
|
* BUGFIX: Fixed *.pdb open error which caused log.txt crash info to log less than it should have
|
||||||
|
* Changed every single sp_<something> command so it won't crash on a bad sprite index, will log it and return -1 to indicate an error
|
||||||
|
* BUGFIX: Fixed issue where reloading sequences in DMODS could eventually crash the game (Robj)
|
||||||
|
* Audio assigned to an invalid sprite owner no longer causes crashes (Robj)
|
||||||
|
* Say() command with invalid sprite no longer causes crashes (Robj)
|
||||||
|
* A manual draw_status dinkc command now causes status bar variables to be updated instead of animating the differences, to match other dink engine versions (robj)
|
||||||
|
* BUGFIX: Reloading sprite sequences with longer ones no longer loses set_frame_frame info (Robj)
|
||||||
|
* Added "Unfreeze Player" command to the secret debug menu
|
||||||
|
* Tab or Shift-Tab or Ctrl-Shift-Tab "speedups" now properly also speed up certain timers that it was skipping (robj)
|
||||||
|
* Quicksave/quickload moved to F5-F9 the "standard" keys. (Skurn)
|
||||||
|
* -game option now properly handles quotes and spaces in filenames (ebilV)
|
||||||
|
* (android) External keyboards now fully work, you can turn down the onscreen controls and just play
|
||||||
|
with keyboard now
|
||||||
|
* BUGFIX: "Use F1 to bring up the Dink menu" message will no longer get stuck on the screen (Robj)
|
||||||
|
* BUGFIX: Fixed issue where sometimes the mouse cursor would stop showing up in the Dink HD F1 menu (ebilV)
|
||||||
|
* NEW DINKC COMMAND: set_disable_savestates(1) to disabled. 0 to enable, -1 to return the current status. Note: Autosaves will continue to
|
||||||
|
function normally, and the current savestate status will be respected in autosaves as well
|
||||||
|
* NEW DINKC COMMAND: show_quick_message("Hello! `4This is red``. `2Green``."); shows a quick message over the dink screen, useful for showing quick messages, I used it
|
||||||
|
for testing stuff. Works with SANSI color codes. Oh, I guess all Dink text works with color codes actually.
|
||||||
|
* get_version() now returns 111. (dinkC version incremented by one due to added new scripting commands).
|
||||||
|
Reminder: you can use get_client_version if you want 197, the client exe version.
|
||||||
|
* If dinkc debug mode is on, now logs extra info about "external" calls being done
|
||||||
|
* Reworked dinkc to use much less stack memory, fixes issue on Android with nested "external" calls
|
||||||
|
* Controller support improved on Windows and Android, 8Bit Do, Nintendo Pro, PS4,PS5,XBOX should be auto-mapped right. Start on controllers
|
||||||
|
now always opens the Dink HD menu, pushing left/right allows selecting save/load state easily. Select button will open
|
||||||
|
the classic Dink menu.
|
||||||
|
* Changed default sorting for the in-game DMOD browser to "Newest", this way active DMOD authors might get an extra boost of motivation by getting
|
||||||
|
more downloads. A player can always tap it to change to sort by rating or alphabetical of course
|
||||||
|
* Improved the DMOD browser a bit, more text fits when browsing the list to install
|
||||||
|
* BUGFIX: No longer sometimes crashes if you resize the window moving crazy while holding down Shift (non proportional resize mode)
|
||||||
|
|
||||||
|
------ Change log for 1.98 ---------- (August 2022)
|
||||||
|
|
||||||
|
* (iOS) Native Bluetooth controller & keyboard support added, same as Win and Android builds
|
||||||
|
* Added an emulated pointer where needed, all GUI screens can now be 100% controlled by controller or keyboard,
|
||||||
|
mouse/touch not required anymore
|
||||||
|
* DinkC addition: get_client_fork() added. Always returns 1.
|
||||||
|
* get_version() incremented one due to the above change. Now returns 112
|
||||||
|
* (iOS/Android) BUGFIX: show_bmp dinkc command will no longer fail on some dmods due to case sensitivity of linux based systems
|
||||||
|
* No longer drawing a black square behind the active magic icon. No idea why I was doing that. (Robj)
|
||||||
|
|
||||||
|
------ Change log for 1.99 ---------- (August 2022)
|
||||||
|
|
||||||
|
* map_tile dinkc command now checks ranges and if there is actually source tile data to write in that index (ebilV, Robj)
|
||||||
|
* Detects and fixes a rare situation where a sprite is connected to a dead script (Robj)
|
||||||
|
* Disabled the window bar menu, alt would appear to freeze the game (Robj)
|
||||||
|
* Properly shows correct dinkc version when starting a dmod, before showed incorrect version (Robj)
|
||||||
|
* if update_status is disabled, it doesn't blank out that area, it just leaves whatever was there (Robj)
|
||||||
|
|
||||||
|
------ Change log for 2.02 ---------- (November 2023)
|
||||||
|
|
||||||
|
* say() text is now drawn under choice menus rather than above, previously dmods that used sp_kill to make text permanent could cause visual problems in choice menus (Robj)
|
||||||
|
* A saved game is no longer included, oops
|
||||||
|
* The screen scroll effect now respects sprites that were drawn over the GUI parts (Robj)
|
||||||
|
* Overlapping text is easier to read now, for two reasons, the main problem was Proton SDK does batching under the hood (this didn't exist when the original Dink HD was made) and it was trying to batch all the the text backgrounds together on the same layer which isn't what we wanted, and two, I made the bg slightly darker
|
||||||
|
* attack_wait for sprite 1 is now preserved across saves to match functionality of other dink versions (RobJ)
|
||||||
|
* DinkC change: LogMsg (a script command that let's a script print text to the log.txt file directly) now properly handles &variables
|
||||||
|
* DMOD installer fixed to work with older v7 tar format (big thanks to drone1400 for help with this)
|
||||||
|
* DMOD installer fixed so it wouldn't fail with a stack overflow with certain dmods (cast_awakening_part_5_revolution-v1_00.dmod)
|
||||||
|
* (Windows) I added "dink.exe <dmod url> will install a dmod directly from the net." to the dink.exe /? command line help screen. Not a new feature but I don't think I ever told anyone about it
|
||||||
|
* Dink source updated to compile with (up to) C++ '17.
|
||||||
|
* Scrollbars can now be manipulated with a mouse as expected, in addition to the normal "click the content to move it" carry over from touch screens on mobile. I added this because it turns out having nearly 400 dmods installed was too slow to navigate without it
|
||||||
|
* Will now use .png tile screen images if available
|
||||||
|
|
||||||
|
------ Change log for 2.05 --------- (April 2024)
|
||||||
|
|
||||||
|
* BUGFIX: Detects divide by 0 errors in some DinkC situations and avoids a crash (Fix by drone1400)
|
||||||
|
* BUGFIX: Fixed issue where HD would get tricked into improperly eating a punch/magic keystroke to skip dialog when DMODS did certain tricky things (SimonK)
|
||||||
|
* Now correctly handles the case when a DMOD directory filename is different than the savestate it is in (ie, it was renamed after the savestate was made)
|
||||||
|
* (Win) Added "-skip" command-line parm support, will skip the new version check and make the main menu load without fancy animations
|
||||||
|
some Windows/proton keyboard problems. At least the method I used should work on non-US keyboards too
|
||||||
|
* Added "Force save to slot 9" option to debug menu, might break the game but useful for debugging because unlike savestates it will force all scripts to be reloaded
|
||||||
|
* (Win) Added ` (backtick) to toggle an overlay window showing the log. I wanted to do Shift-Tilde or something so it wasn't accidently hit but ran into
|
||||||
|
* Removed "View log" from debug menu because the above option replaces it
|
||||||
|
* Added "set_music_vol" DinkC command. Accepts between 0 and 100. 50 means set the music/midi to 50% of whatever the current setting is in options.
|
||||||
|
* get_version now returns 113 instead of 112 due to the DinkC addition
|
||||||
|
|
||||||
|
------- Change log for 2.06 --------- (April 2024)
|
||||||
|
|
||||||
|
* BUGFIX with map_tile, now goes 0 to 5247 (Robj, yeoldetoast, https://www.dinknetwork.com/forum.cgi?MID=209752&Posts=16 )
|
||||||
|
* BUGFIX with disable_all_sprites/enable_all_sprites (Robj, yeoldetoast, https://www.dinknetwork.com/forum.cgi?MID=209752&Posts=16 )
|
||||||
|
* sound_set_vol behaves more like original Dink ( https://www.dinknetwork.com/forum.cgi?MID=209752#209908 )
|
||||||
|
* Text fit better inside the black background (RobJ)
|
||||||
|
* Text stays visible during fades to match functionality with the original (RobJ)
|
||||||
|
|
||||||
|
------- Change log for 2.07 --------- (June 2024)
|
||||||
|
|
||||||
|
* Catches and logs invalid seq ids from the dink.ini instead of crashing (Simon)
|
||||||
|
|
||||||
|
------- Change log for 2.08 --------- (March 2025)
|
||||||
|
|
||||||
|
* Checked midi issue with 9 gems of life II, 1.mid doesn't play at startup because FMOD doesn't like the format of it. If replaced with a different midi it will work. (unfixable by me, FMOD issue)
|
||||||
|
* make_global function now works (thanks RobJ, yeoldetoast)
|
||||||
|
* text brains X won't go past 470 (for RobJ)
|
||||||
|
* re-enabeled preload_seq DinkC command
|
||||||
|
* Added get_dinkspeed to DinkC (RobJ)
|
||||||
|
* gfx_alttext_disable in the ini will disable the text shadow effect. set_gfx_alttext_disable(0 or 1) can also be used in DinkC (for RobJ)
|
||||||
|
* Fixed issue where some variables weren't be totally cleared when a second game/dmod was loaded, could cause the intro screen to have tiles on it from the previous game, oops
|
||||||
|
* set_use_latest_fixes_level() dinkC command added, currently level 1 will cause next two bugs to be fixed. (the idea is new DMODs can say "hey, fix the bugs" but old ones won't break because things got fixed.
|
||||||
|
* Fixed issue where the black background used with aspect correction of the window size might not fully cover an 8k monitor (untested, I don't have one!)
|
||||||
|
* When playing with "Smoothing" off and at an exact 4:3 screen ratio, DinkHD will now be "pixel perfect" (thanks Drone). I guess with some work this could also work with smoothing on (sub pixel and texture clamp settings?) but maybe for another day
|
||||||
|
* Dink limits have been increased so folks like Simon making more demanding DMODs can be supported (trying to keep it roughly in parity with YeOldeDink as well)
|
||||||
|
|
||||||
|
-Sorry, I was too lazy to make it stay compatible with old save states, but of course normal save-machine saves work
|
||||||
|
|
||||||
|
const int32 C_MAX_SEQUENCES = 2000; //Max # of sprite animations, was 1300
|
||||||
|
const int32 C_MAX_SPRITES_ADDRESSABLE = 30000; //was 6000
|
||||||
|
const int32 C_MAX_SPRITES_AT_ONCE = 300; //don't change, there are still hardcoded numbers elsewhere and some weird stuff with screen lock and "flub" stuff whatever that is
|
||||||
|
const int32 C_MAX_SCRIPT_CALLBACKS = 200; //was 100
|
||||||
|
const int32 max_vars = 250;
|
||||||
|
const int32 C_MAX_SCRIPTS = 400; //was 200
|
||||||
|
const int32 C_DINK_VERSION = 114; //dink script version
|
||||||
|
const int32 num_soundbanks = 64; //was 20
|
||||||
|
const int32 max_sounds = 200; //was 100
|
||||||
|
const int32 C_TILE_SCREEN_COUNT = 61 + 1; //(20 more than before)
|
||||||
|
|
||||||
|
#define C_MAX_BACKGROUND_SPRITES_AT_ONCE 200
|
||||||
|
#define C_MAX_SPRITE_FRAMES 100
|
||||||
|
|
||||||
|
if set_use_latest_fixes_level() is > 0 these bugs are fixed:
|
||||||
|
|
||||||
|
BUGFIX: "/=" math operations now work correctly (previously, only "/" worked right.. so er.. yeah)
|
||||||
|
BUGFIX: Missile weapons with an odd # like strength 5 can now actually do 5 damage sometimes, previously they couldn't due to using integer division
|
||||||
62
rtdink/retroverse_manifest.json
Normal file
62
rtdink/retroverse_manifest.json
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
{
|
||||||
|
"rtdink": {
|
||||||
|
"name": "RTDink",
|
||||||
|
"core_framework_compatibility": "1",
|
||||||
|
"component_version": "1.0.0",
|
||||||
|
"schema_version": "1",
|
||||||
|
"min_client_schema": "1",
|
||||||
|
"id": "rtdink",
|
||||||
|
"class": "component",
|
||||||
|
"capabilities": [
|
||||||
|
"reset",
|
||||||
|
"open"
|
||||||
|
],
|
||||||
|
"url_rdwiki": "https://retrodeck.readthedocs.io/en/latest/wiki_retroverse/engines/rtdink/rtdink-guide/",
|
||||||
|
"url_webpage": "https://www.dinknetwork.com/",
|
||||||
|
"url_donation_purchase": "https://www.gog.com/en/game/dink_smallwood_hd",
|
||||||
|
"url_source": "https://github.com/SethRobinson/RTDink",
|
||||||
|
"component_type": "Engine",
|
||||||
|
"description": "RTDink Engine for Dink Smallwood HD and dmods.",
|
||||||
|
"system_friendly_name": "Dink Smallwood HD",
|
||||||
|
"system": "dink",
|
||||||
|
"artwork": "artwork/thumb.png",
|
||||||
|
"tags": [
|
||||||
|
"engine",
|
||||||
|
"game"
|
||||||
|
],
|
||||||
|
"es_de_config": {
|
||||||
|
"es_find_rules": {
|
||||||
|
"emulators": [
|
||||||
|
{
|
||||||
|
"name": "RTDINK",
|
||||||
|
"description": "RTDink - Dink Smallwood HD Engine",
|
||||||
|
"rules": [
|
||||||
|
{
|
||||||
|
"type": "staticpath",
|
||||||
|
"entries": [
|
||||||
|
"%COMPONENT_PATH%/component_launcher.sh"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"es_systems": [
|
||||||
|
{
|
||||||
|
"name": "dink",
|
||||||
|
"fullname": "Dink Smallwood HD",
|
||||||
|
"path": "%ROMPATH%/dink",
|
||||||
|
"extension": ".dink",
|
||||||
|
"commands": [
|
||||||
|
{
|
||||||
|
"label": "RTDink (Standalone)",
|
||||||
|
"command": "%EMULATOR_RTDINK% %ROM%"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"platform": "pc, pcwindows",
|
||||||
|
"theme": "dink"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
zork-trilogy/artwork/thumb.png
Normal file
BIN
zork-trilogy/artwork/thumb.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 424 KiB |
32
zork-trilogy/component_recipe.json
Normal file
32
zork-trilogy/component_recipe.json
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"zork-trilogy": [
|
||||||
|
{
|
||||||
|
"source_url": "$REPO_ROOT/$COMPONENT_NAME/rd_assets/zork-trilogy.zip",
|
||||||
|
"source_type": "local",
|
||||||
|
"extraction_type": "archive",
|
||||||
|
"version": "$ZORK-TRILOGY_DESIRED_VERSION",
|
||||||
|
"assets": [
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "zork-trilogy/zork1.z3",
|
||||||
|
"dest": "$COMPONENT_ARTIFACT_ROOT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "zork-trilogy/zork2.z3",
|
||||||
|
"dest": "$COMPONENT_ARTIFACT_ROOT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": "zork-trilogy/zork3.z3",
|
||||||
|
"dest": "$COMPONENT_ARTIFACT_ROOT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dir",
|
||||||
|
"source": "docs",
|
||||||
|
"dest": "docs"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
21
zork-trilogy/rd_assets/LICENSE
Normal file
21
zork-trilogy/rd_assets/LICENSE
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2025 Microsoft
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
BIN
zork-trilogy/rd_assets/zork-trilogy.zip
Normal file
BIN
zork-trilogy/rd_assets/zork-trilogy.zip
Normal file
Binary file not shown.
35
zork-trilogy/retroverse_manifest.json
Normal file
35
zork-trilogy/retroverse_manifest.json
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"schema_version": "1",
|
||||||
|
"min_client_schema": "1",
|
||||||
|
"id": "zork-trilogy",
|
||||||
|
"class": "data",
|
||||||
|
"name": "Zork Trilogy",
|
||||||
|
"description": "The full Zork Trilogy is a collection of three legendary classic interactive fiction games for the Z-machine.",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"tags": [
|
||||||
|
"game",
|
||||||
|
"rom"
|
||||||
|
],
|
||||||
|
"requires": [
|
||||||
|
"component:retroarch",
|
||||||
|
"component:gargoyle"
|
||||||
|
],
|
||||||
|
"artwork": "artwork/thumb.png",
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"source": "zork1.z3",
|
||||||
|
"destination": "$roms_folder/zmachine/zork1.z3",
|
||||||
|
"policy": "replace"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "zork2.z3",
|
||||||
|
"destination": "$roms_folder/zmachine/zork2.z3",
|
||||||
|
"policy": "replace"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "zork3.z3",
|
||||||
|
"destination": "$roms_folder/zmachine/zork3.z3",
|
||||||
|
"policy": "replace"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue