Jump to content

Photo

Zelda Classic 2.55 Alpha 16 (Official)

Alpha Æternal AEternal 2.55

  • This topic is locked This topic is locked
No replies to this topic

#1 Timelord

Timelord

    The Timelord

  • Banned
  • Location:Prydon Academy

Posted 01 April 2019 - 05:58 AM

Zelda Classic Æternal, Alpha 16 [Win-32] (57MB)

Changelog for 2.55 on GitHub.

 

 

 

 

 

Highlights

  • New Weapon Options in Item Editor
    • You can now have items emulate different weapon properties, or have a pre-set Defence type.
  • Load Modules At Any Time
    • You can load a Module file at any time in ZQuest, and from the file select screen in ZC Player.
  • Revised Keyboard Control Dialogues
    • Added the ability to clear keys, and to set cheat key modifiers.
  • Correct timing for initial array availability.
    • This fixes issues using arrays in Link's Init Script.
  • Fixes compatibility issues with legacy quests.
    • Corrects issues with bombchu explosions.
  • Includes ports of all fixes from 2.53 Gamma 8.

ZScript/Parser/Compiler Fixes and Improvements

1. Added enum

2. Added short-circuiting

3. Added a ZScript menu to ZQuest, with ASM import and compiler/script options.

4. Added namespace, using, and always using.

5. Rewrote std.zh for optimal performance.

6. Added header guards, to prevent accidental duplication of headers (e.g.  import std.zh).

  • See ZScript_Additions.txt for more information.

 

Changes Over Alpha 15

 

Revised the Bombchu emulation behaviour, and toggled the QR based on
    quest header data.
    2.50.0 and 2.50.1 quests have superbomb enabled by default.
    2.50.2 and 2.50.3RC1 quests have normal bomb by default.
    The emulation option is unavailable for quests made
    in 2.50.3RC1 or later.
    
Updated std.zh for 2.55 Alpha 16
    Version is 1.6000
    Optimise all functions for new ZScript parser.
    Revised some functions.
    Moved itemdata functions into idata.zh, inside namespace idata.
    Added some configs to std.cfg.
    Updated docs for std.zh and added std_extension.txt
Added npcdata->GetName(int str[]) to ZScript.
Corrected Controller Button Constants in std.zh
Revamped all keyboard key dialogues:
    Added the ability to clear any keyboard key setting from
        the GUI using a new 'Clear' button.
        This button is on all keyboard key dialogues.
    Ensured that modifier key bindings must be unique against all other keybindings.
    Ensured that a keybinding of 0 (None) does not need to be unique.
Added a dialogue to configure cheat modifier keys.
    ( ZoriaRPG, 1st April, 2019 )

Avoid using `GOTOLESS`, because it could cause `0.0001` to == false, depending on QR setting
Parser: Optimize short-circuit behavior
    Optimised ASM generated when short-circuiting is enabled.
Feat: Option dialogue linked to options
Parser: Improve option value handling
    ( Venrob, 31st March, 2019 )

Added short-circuit logic to the parser.
    When on, `||` and `&&` will short-circuit. i.e. `(true || foo())`
    and `(false && foo())` will not call `foo()`
    Defaults to off.
Changed cast style
    Now `<type>expr` instead of `cast<type>(expr)`
    Tokens `cast` and `static_cast` are un-reserved
Fixed custom const types  / need `const` in name!
    ( Venrob, 30th March, 2019 )

Solid FFC: Added Note on Placement
Initial Work on Solid FFCs
    ( ZoriaRPG, 30th March, 2019 )

Fix: Re-add sanity check on `const typename`
Parser: Add custom enum types, fix constant issue from previous commit
    Usage:
    `enum day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY };`
    Then, `day d = SUNDAY;` or `const day TGIF = FRIDAY;`
    `day d = 1;` is NOT valid. (You can use untyped or casting to bypass this, though)
    These are not just renamed types, they are ACTUAL separate types!
    They will cast to float/bool, though; `int d = SUNDAY;` would be fine, resulting in `d = 0;`
    You can use floats in the initializer without issue
        (`enum foo { min = -1, zero, one, two, three, max };` won't give you a `cannot cast from float to foo` error)
Internal: Fixed memory leak in constants. Remember to `clone()`!
    ( Venrob, 30th march, 2019 )

std.zh: Added error codes _ERR_REDEFDATATYPE and _ERR_CONSTALREADYCONSTANT
`const` is now separate from type keywords :
    This means that you can now use `const` with typedef'd types.
        Previously, `typedef int foo;` then `const foo f = 5;` would give an error, `unexpected token const`.
        This has been rectified, now allowing this as a way to create a constant of type foo.
        A new error code has been added, because `typedef const int define;` then `const define;` means `const const int`, which is an error.

    Internal: `DataType->getTypeConst()` will now fetch the constant version of a naive type.
    ( Venrob, 29th march, 2019 )
    
Weapons with a UseType of Sword can now cut grass/bushes/pots,
    and trigger sword triggers.
Added the following to ZScript:
    lweapon->Defense, lweapon->Defence : Sets the UseDefence property for an lweapon.
    lweapon->Weapon : Sets the UseWeapon property for an lweapon

Fixed some issues where the default weapon defence type would be
    wrong, particularly if the weapon UseWeapon type value was not None.
    Probably fixed some other, related bugs at the same time.
Fixed some errors in the new weapon system. The weapon type override
    seems to work fine now; however setting the 'default defence' is still broken.
    It's giving the wrong value somewhere down the chain.
Ported the New Weapon Defence System that I wrote for the DD 2.60
    old master branch, to 2.55.

    This does the following:

    Items/lweapons now have a 'UseDefence' property.

    Effects: If an enemy in the Enemy Editor has its defence category for that
    weapon type set to 'None', and the weapon has a base defence type, then
    that defence type (effect) will be applied as if the enemy had it set.

    Items/lweapons now have a 'UseType' property.
    Effects: When hit with this weapon type, the enemy will use the defence
    category of the simulated 'UseType' weapon type, rather than the true weapon
    type of the weapon.
Ported the 'Weapon Properties' Item Editor tab that I wrote,
    from the old DD 2.60 master branch, to 2.55.
    ( ZoriaRPG, 29th march, 2019 )

Style: Matched braces in std_vars.zh
std.zh: Optimise std_vars.zh
Updated std.txt to cover all cleanup in std.zh, except for
    std_extension (t/b/a).
    ( ZoriaRPG, 28th March, 2019 )
    
Added details on #option HEADER_GUARD to ZScript_Additions.txt,
    added 'always using', and corrected the docs for 'using' (scope).
Default for Header Guard is now WARN
    ( ZoriaRPG, 27th March, 2019 )

Allow disabling of any AST node
    `node->disable();` to disable, `node->isDisabled()` to read. Cannot be re-enabled.
    Disabled nodes are skipped by RecursiveVisitor::visit() and BuildOpCodes::visit(),
        effectively deleting the node, and everything inside it, from the output.
    HEADER_GUARD now disables duplicate imports in this manner.
    LOGGING also does, as I built this off of what that option did.
Added parser #option HEADER_GUARD
    Values:
    `off` - nothing new
    `on` - Ignore duplicate import statements
    `error` - Throw duplication error on duplicate import statements
    `warn` - Throw duplication warning on duplicate import statements, and ignore the duplicates.

    Keywords: Reserved `error` and `warn` within HASH environment (#option)
    `error` has a literal value of 2,
    `warn` has a literal value of 3.
Files: Add `parserDefs.h`, as a `zdefs.h` for the parser.
Fixed src compile error.
Fixed accidentally using usingNamespaces from parent file.
Added 'always using'
    Usage: `always using namespace NAME;`
    This can only be declared at the File Scope.
    This declaration will make ALL code act under `using namespace NAME;`, regardless of being in a different file.
Fix: Missed some changes in BuildVisitors.cpp/h and Scope.cpp/h
    ( Venrob, 27th March, 2019 )

Added a config line 'logo_volume' to the 'zeldadx' section of zc.cfg to
    set the sound volume of the AGN fire logo.
Music.zh: Renamed BossMusic to MusicZH_BossMusic to avoid a conflict with Classic.zh
Added missing $END token to the enum that Venrod added to
    std_constants.zh.
Music.zh: Disable call to LogPrint
Music.zh: Fix NPC_MIDI and NPC_MUSIC scripts. Bump to 1.3.5.
Fixed the screen info for 'Layer Used By' not updating properly
    when changing maps.
    ( ZoriaRPG, 26th March, 2019 )

Parser: Add `itemsprite` and `untyped` script types, parser-side only.
Changed _ERR constants to an enum.
Fixed roken flag6 on wands, cbyrna
Add `using`, for both FileScope and ScriptScope
    Use: `using namespace NAME;` or `using namespace NAME1::NAME2;`
    ( Venrob, 24th March, 2019 )
    
Fix Compile: Missing comma in QRs
Added a QR that causes bombchu explosions on contact with Link
    to be superbomb sized. This used the absolute last, unused rule bit for 2.53.
    This should be ported to a behavioural flag, set by qst.cpp on the enemy,
        in the future.
Don't terminate the ZQuest process if the user presses the CANCEL
    button in the Load Module dialogue.
Allow Setting Doors on Mapscreens > 0x82
Fixed the state of 'save' not being set when deleting a favourite
    combo using the contextual menu.
Added the ability to import LWeapon, EWeapon, DMap, Hero, and
    Screen ASM scripts to the ZScript menu.
Prevent changing module while playing a quest.
Loading a module in ZC player now refreshes the title screen.
Added a Modules menu, and Load Module to ZC Player.
    The file select screen does not yet refresh on loading a new module, but
    it does refresh on selecting a quest.
Fixed a crash when loading 2.50 quests, caused by trying to initialise
    zinit.SBombmax with division by 0 in qst.cpp.
Added a Modules menu to ZQuest, and added Load Module to it.
It is now possible to load a module at any time.
    ( ZoriaRPG, 24th march, 2019 )

Namespace now registers directly to RootScope, skipping FileScope.
Added SCOPERES operator ("::"), used exclusively in ASTExprIdentifier for namespace resolution.
    `namespace::var` is valid. `script.var` is valid.
    `namespace.var` is invalid. `script::var` is invalid.
Namespace is now run directly after imports, rather than last. No clue why it was last before.
Added several bison nonterminals, allowing now `Identifier_List` (containing any list of identifiers) as before, as well as `Scoperes_Identifier_List` which cannot contain `.`, and (commented out as it is currently unused) `Dot_Identifier_List`, which cannot contain `::`.
Added a way to declare multiple namespaces at once: `namespace name::name2{}`. This declares a namespace `name`, then declares `name2` within it.
    ( Venrob, 22nd March, 2019 )

Added dialogues to the ZScript Menu for 'Quest ZScript Settings',
    and for ZScript Compiler Options.
    These are stored with the quest as rules.
Removed Scripts rules from QR dialogue.
    We now have them in the ZScript dialogue.
The Assign ASM NPC Script menu option now opens the appropriate dialogue.
    ( ZoriaRPG, 21st march, 2019 )

Added Import NPC ASM Script to ZQuest
Added a new menu to ZQuest, 'ZScript'.
Renamed the Link tab in the Compile ZScript dialogue to 'Hero'.
Updated ZScript_Additions.txt
    ( ZoriaRPG, 20th march, 2019 )

Added `namespace` to ZScript.
    Use:
    namespace namespace_name
    {
     ///vars, functions
    }
Added the following tokens to ZScript:
    Pointer Hero->
    Pointer Player->
    hero script
    player script
    These are synonymous with Link-> and link script, both of which
        are now deprecated, but still legal for compatibility reasons
        with older scripts.
    ( Venrob, 20th March, 2019 )

Fixed illegal esc char in menus.
Fixed copyright year on ending.
Updated Music.zh to v1.3.4
Added file mobileBait.zh, with lweapon script MovingBait.
    Call that script by import in Classic.zh.
    Classic.zh version is now 2.02.
The bomb bag (L1) starts Link with 30 bombs. We only want him to
    have 8, so we set his max_bombs in Init Data. We don't give him this item.
Added files: lweapon scripts FireRod, replaceOnDeath, lwBombArrow, and lwZigZag
Added files: eweapon script ewZigZag
Classic.zh
    Updated to v2.01
    Adds calls to import lweapon scripts FireRod, replaceOnDeath, lwBombArrow, and lwZigZag
    Adds call to import eweapon script ewZigZag
    ( ZoriaRPG, 19th march, 2019 )

Convert the values for Halt Duration, and Accel Factor for
    Keese, Peahats, and Phantom Ghini enemies in 2.10 and earlier quests on
    file load.
Re-added LogPrint() and ScreenPrint() to string_functions.zh.
    The build package lost these in a file overwrite at some prior point.
    ( ZoriaRPG, 18th March, 2019 )

 





Also tagged with one or more of these keywords: Alpha, Æternal, AEternal, 2.55

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users