github ZQuestClassic/ZQuestClassic nightly-2023-10-29
Nightly 2023-10-29

pre-release7 months ago

The following are the changes since nightly-2023-10-28-2:

Features

  • Crumbling Combos (crumbling floors) 5ac8fd1ee

Bug Fixes

  • a couple crashes/dialog oddities c577892d9
  • add proper versioning for init data deltas fdd6da3c1

Editor

  • test mode init data marking quest as "needs saving" extraneously 243088418

The following are the changes since 2.55-alpha-119:

Expand changelog

Features

  • Add 'Screen->Data[]', 'Screen->DataSize' script data array for every screen. b080de56c
     

    This data array can be edited in the 'Screen Data' dialog, and all changes made by scripts are saved to the save file.

  • Init Data dither pattern picker/previewer ef1e3e5f6
  • fade out the background behind dialog windows ba6344865
  • 3 new dithering styles 8b7aa8ed7
  • customizable 'ShoveOffset', add zfix round-direction handling 809119087
  • FFC 'Platform' flag for moving platforms (to pull the player along with) 3fb03f0b0
  • Crumbling Combos (crumbling floors) 5ac8fd1ee

Player

  • added a setting to put a limit on 'uncapped' FPS so the game still runs at playable speeds 5f9a3d367

Editor

  • Pressing 'esc' while zoomed in on the minimap now unzooms (instead of trying to quit zq) 918cdafca
  • 'Insert SCC' button in the string editor now respects the caret position c706b3af3
  • made enemy editor InitD compatible with script metadata 8c0e4b37b

ZScript Standard Library (std.zh)

  • memcpy version that only takes 2 args (auto-determines size) 3bb11dda8

ZScript

  • script access for extended dmap titles and new dmap intro string IDs 21c168a1b
  • GetTilePixel(), SetTilePixel(), and Is8BitTile[] b9b290a14

Web

Bug Fixes

  • wavy/cancel compat not being set 2f0fe8052
  • a couple small things related to script access of subscreens d120f2c3a
  • 'Newer Player Movement' corner-shove works better with off-grid solids 1695530d3
  • Init Data dialog sometimes being too tall ed36204f0
  • use cross platform clock for text edit proc e6bdfb99d
  • issue more vsync in old gui proc as needed to catch up 5add82df0
  • [mac] only check for .app to allow for app bundle to be renamed b393e5875
  • set size when making dlg layer to avoid crash 6d47e8136
  • minor dialog hiccups in some circumstances 02764be1b
  • crash on viewing 'Fairy' flag help texts 62bfe66d4
  • dialog windows in background popping out on tab-out e7dbfacdd
  • tooltips staying open over dialog windows fadfa27d2
  • use steady_clock instead of system_lock to measure replay duration d3e8e7fcc
  • [mac] handle CMD key press and allow CMD for all places CTRL is e45016fb2
  • a couple crashes/dialog oddities c577892d9
  • add proper versioning for init data deltas fdd6da3c1

Player

  • fixed passageway and item cellar fade-in when "New Dark Rooms" rule is on 4748d9a89
  • playtime not drawing unless scrolling ddd3f26a1
     

    I'm so mad at how dumb this was. Specifically, it doesn't draw if you have "subscreen over sprites" disabled unless you're scrolling.

  • 1-pixel gap in 'show walkability' cheat draw ee0eda1e2
  • 'Newer Player Movement' corner-shove being far too lenient d0e2908b1
  • fix manhandla step speed calculations 60e9d9f41
  • show previous changes in player data menu when used multiple times without unpausing 325834d44
  • restore quest progression and skip names 804484ddd
  • fix corner shove solidity 7c5c7c992
  • set size when making info layer to avoid crash 5163053b5

Editor

  • fixed crash when opening preview mode 23ad85cfb
  • made autocombos respect moving, adding, and removing combos f8d89f5ad
  • prevent crash when changing font 640378df8
  • prevent data loss when grabbing tile from old quests f8fdd7bb7
  • qrs having wrong category name in search menu 5391348e4
  • import maps was unhelpfully clearing everything 50c6377e1
     

    The map import tool was checking if the first screen's valid field was a special value denoting it was "cleared" by the user. It's unclear why valid holds this information, but presently it's not useful and breaks map imports randomly.

  • use cross platform clock for timing to fix combo editor animation 163f9a91f
  • use cross platform clock for zscript compile timing cde9a4688
  • format zc_args.txt correctly be4390661
  • preserve screen bitmap 3d674f868
  • prevent crash when rendering minimap during loading 4c7dfe677
  • fix crash with passive and overlay subscreen settings 1c9b81f57
  • 'Paste FFC' being slightly misaligned from the grid 8664554e2
  • clear tooltip before entering square-placement mode 972e6919a
  • test mode init data marking quest as "needs saving" extraneously 243088418

ZScript Standard Library (std.zh)

  • update ffrules.zh to include all new quest rules cc67be852

ZScript

  • 'subdata->TransClock' was not returning -1 properly when not transitioning 95edf1e5e
  • fix slowdown caused by draw commands during frozen message strings 48511cdd5
  • persist compiled jit functions when reloading the same quest 2bd7e877d

Web

  • remove unnecessary bitmap backup 9c309afab
     

    This pretty much doubles FPS across the board. huzzah

  • support both landscape orientations 8206a3008

Documentation

  • specify what OS versions we support 080b61e10

Build

Web

  • fix renamed script d79ef7d06
  • remove post-processing by python script f8b2af856
  • include function names in release build, separate dwarf for debug build fb44b2a78
  • integrate web build into cmake 7dbb75dee
  • fix missing zscript compiler caused by 7dbb75d bbdb9be63

Chores

  • fix many many typos of it's -> its a7e3cf4ec
  • remove outdated or unnecessary docs and ZScript headers 81b871ade

Refactors

  • memcpy the buffer in PACKFILE fread 8f547f8f5
     

    This saves ~500ms on my Mac when loading Yuurand.qst

  • speed up copy_tile / tilesize 01e13ec0a
  • use safe cstr reading functions b1a7b8d43
  • add bounded_vec container type 9edaa62a2
  • render a4->a5 bitmaps in first pass 8ef8665a7
  • reorder field initializer list to fix compiler warnings 8d64f8374
  • simplify render tree drawing b52d7eaea
     

    This adds prepare and render functions to the RenderTreeItem class. Also makes them virtual so that new classes can be made to represent a render item. The minimap drawing code was moved to this.

    Consolidates the logic for when a render item is dirty, and moves allegro 4 bitmap handling into a new derived class.

  • use a single bitmap for dialog tint 8a8ef4667
  • add bitmap_flags to rti 6af0dcc23
  • Init Data / Gamedata acb7c8481
     

    Change how Init Data is stored and saved to the quest file (and rearrange the dialog slightly) - Allow setting mcguffin level state for all levels in init data/cheats instead of just levels 1-8 - Init data health can be in HP instead of just in Hearts - Can set init values for script counters 26-100 (was missing before) - Change how data is stored and saved to the save file

  • cache zasm script size be7c81d3c
  • move zcsound source files to src/sound 09dfea4eb
  • remove zcmusicd.cpp 15628e6f3
  • move ffc set data / changer out of ffc.cpp and to src/zc 3a6d2d394
     

    This is the first step to moving ffc.cpp to zcbase.

Player

  • do far less work in platform_fallthrough 8861f51f1

Editor

  • only draw tooltip bitmap when in use ef146dede
  • remove rests and use smarter fps throttle 3ca0a1208
     

    Use the same smart FPS throttle that the player uses in the editor too.

    This doubled the FPS in the Web version.

  • draw minimap to smaller bitmap df2602f85
     

    Also add a callback to RenderTreeItem, which allows the main drawing code to directly render the minimap as needed.

  • only rerender minimap when dirty 66d882141
  • draw tooltips to smaller bitmap 50f1344a3
  • move minimap drawing to render_minimap.cpp 042728610
  • remove dialogs for deprecated modules and quest templates 0ebbc8450
  • move tooltip rendering to render_tooltip.cpp 911019c55

ZScript

  • replace script debug_id with composite id (type, index) 8e6c48a21
     

    The previous hack of using a global variable incremented in the constructor had strange behavior, and would result in different ids given when reloading a quest.

  • use .contains instead of .find in jit.cpp 02dbb040c

Web

  • prevent script trace unless debugger is enabled cf3ce065b
  • stop excluding some slow-to-build dialogs in debug builds 452efb90a

Tests

  • re-enable classic_1st.qst resave test 9065169e6
  • expand resave test to include ss_jenny.qst a92664884
  • run replay tests concurrently 762ac2db5

Editor

CI

  • trigger web.zquestclassic.com deploy on release c17ef05ea
  • use clang 17.0.2 for linux 1d3ebb548

Misc.

Player

  • set cont. heart beep default to off 9919433e6
  • change ending credits from Zelda Classic to ZQuest Classic 31c7829ca

Editor

  • add -uncompress-qst CLI command 696657428
  • make checkerboard bg in the tile editor align with the tile grid 2b681111a

ZScript

  • Add compile error when trying to store temporary literals e6296db90
  • never compile scripts larger than 20,000 ZASM instructions 5986e6021
  • print jit_log stuff to allegro log instead of stdout 3e720b62d
  • highly priortize only frame-1 global scripts for JIT compiler e8f60b40e

Web

  • make quest url a bit friendlier 8aa27f494
  • use gzip instead of allegro PACKFILE compression dee67d885
     

    gzip compresses better than allegro PACKFILEs:

    And it's a bit faster to load a qst in the Web version when it doesn't have to decompress it. For Yuurand.qst, loading time (including downloading) from 17.4s to 14.5s

  • better indicate download progress for compressed assets 3fb07895d
  • support default open URL for tilesets b1e6584dd

Don't miss a new ZQuestClassic release

NewReleases is sending notifications on new releases.