ZQuest Classic is a game engine for creating games similar to the original NES Zelda
Full Changelog: https://github.com/ZQuestClassic/ZQuestClassic/compare/2.55.2...2.55.3
387e6c05c
ae1c890e7
32a169b2f
7e52830f0
5e1f431eb
This prevents the draw offset from a quake from persisting during a scroll.
See https://discord.com/channels/876899628556091432/1238226802867048529
4066823d5
2761eb50b
150aafa9f
e9438011a
For some reason, only the combo at position 0 had its owned objects deallocated when loading a new screen. Now they all do.
9879b835f
719738e74
b3b79f66e
This was already made inaccessible from the GUI in 1da2d02, but now it is removed entirely. Work on a real debugger will begin soon.
Region->
and screen script internals in preparation for z3 e02113363
Region->OriginScreen
is now of typescreendata
, andRegion->OriginScreenIndex
is added to return just the screen index.Similar change made to
Region->GetScreenForComoboPos(int pos)
.
c6da3fe63
asmjit's register allocation was using a bin-packing algorithm. This turns out to be very slow for the assembly that our jit compiler emits, since the vast majority of variables exist for only a single basic block. Instead of bin-packing, the much faster and simpler linear scan register allocation algorithm is now used.
For a very large 200k-instruction script, compilation went from 19.5s to 2.8s (a 85% decrease).
With this improvement, the 20k-instruction limit for jit has been removed. One example of the impact of this is that
yuurand.zplay
, which the jit compiler was previously mostly disabled for since most of its scripts are huge, now has all its scripts compiled. This increased the average FPS foryuurand.zplay
from ~320 to ~2000, while still reducing the total time spent compiling.Theoretically this change in register allocation may produce slower runtime code, but there was no drop in FPS realized in the
maths.zs
stress test.
b119635bb
To download this release, visit the ZQuest Classic website or see the bottom of this page.
The following are the changes since 3.0.0-prerelease.52+2024-04-22:
cf2769fe9
Array types can be declared by adding
[]
.
d7555bf9e
7d9ceee14
1428ca004
5f16c4d04
96aeccbc5
1af434da4
009d59164
7feb9afdd
This regressed because of the recent GC changes.
b00f59aad
This regressed because of the recent error locations refactor.
975cf9c60
68a5f70c8
4ce3a2186
213361564
19edaac07
c5da0a5c6
d44b13ffa
3717da293
50b8b0bf2
asmjit's register allocation was using a bin-packing algorithm. This turns out to be very slow for the assembly that our jit compiler emits, since the vast majority of variables exist for only a single basic block. Instead of bin-packing, the much faster and simpler linear scan register allocation algorithm is now used.
For a very large 200k-instruction script, compilation went from 19.5s to 2.8s (a 85% decrease).
With this improvement, the 20k-instruction limit for jit has been removed. One example of the impact of this is that
yuurand.zplay
, which the jit compiler was previously mostly disabled for since most of its scripts are huge, now has all its scripts compiled. This increased the average FPS foryuurand.zplay
from ~320 to ~2000, while still reducing the total time spent compiling.Theoretically this change in register allocation may produce slower runtime code, but there was no drop in FPS realized in the
maths.zs
stress test.
bb5404c8d
This was already made inaccessible from the GUI in 1da2d02, but now it is removed entirely. Work on a real debugger will begin soon.
75dc4d745
75f981f57
982031f5c
6720fc50e
873e7ecd6
0ab66ae79
f7650745d
b23b23484
To download this release, visit the ZQuest Classic website or see the bottom of this page.
The following are the changes since 3.0.0-prerelease.51+2024-04-14:
1430272d2
Comments may contain inline links to other symbols with the
@link
tag:// Better than {@link counter2} ... {@link counter2|that counter is lame} int counter1; // This also works as shorthand for links: [counter1] int counter2;
When hovering the mouse over any usage of
counter1
, the tooltip will render these as clickable links that navigate you to the specified symbol.
fd5901f67
db2256d50
00c1ec410
672597c11
- npc->Attack()
- npc->CanSlide()
- npc->ConstantWalk(int[])
- npc->ConstantWalk8(int[])
- npc->FloatingWalk(int[])
- npc->HaltingWalk(int[])
- npc->HaltingWalk8(int[])
- npc->isDead()
- npc->NewDir8(int[])
- npc->Remove()
- npc->Slide()
- npc->StopBGSFX()
- npc->VariableWalk(int[])
- npc->VariableWalk8(int[])
- Trace(char32[])
f6d59d044
179d55946
c483f611c
bcd079539
52949459f
eed542419
This removes some scripts that aren't useful, or aren't a good fit for default inclusion.
- delete
gameover_menus.zh
- delete
LISP.zh
- delete
Music.zh
- delete
sprites.zh
- delete
styles.zh
- delete
theRandomHeader_v2.zh
- delete
ZVersion.zh
- delete
tango/1.0
andtango/1.2
(keeping just 1.3)- move
sram.zh
todeprecated/sram.zh
- move
theRandomHeader_v3.zh
todeprecated/theRandomHeader.zh
- move
time.zh
todeprecated/time.zh
- move example scripts to
headers/examples
- remove
std
includingEmilyMisc.zh
- include yourself as needed
46ca3bfa8
~40 built-in methods exist in this style:
int Max(); // Returns the max. void Max(int value); // Sets the max. int GetCurDMapScreen();
These have been deprecated and replaced with a variable, like so:
int Max; // The max number. int CurDMapScreen;
011539980
Internal symbols were defined in
.cpp
files, but now they are defined in.zs
files with a newinternal
keyword and@zasm
doc comments. These files live inbindings
, and are automatically included for every compilation.This should simplify the process of adding new internal symbols. It also enables viewing documentation of any internal symbol in the VS Code extension (w/ a hover tooltip), and all the documentation we have for internal functions and variables has been inserted as comments in the binding files.
This also deprecates functions that create an object of internal types, like
Game->CreateBitmap(width, height)
- and replaces with normal constructors -new bitmap(width, height)
.
76a67b371
b76078275
c58661f07
Full Changelog: https://github.com/ZQuestClassic/ZQuestClassic/compare/2.55.1...2.55.2
e9e127f73
aa948b117
Several default subscreen fixes (some by P-Tux7, some by myself)
ef8ce36a9
b7ac0c6a8
80b70b43f
This fixes some quests that only look at the alpha version and, seeing it was now 0 presented an error message to the user.
3c86a76b8
c04ea1ba6
bb644e0c8
489e32212
0a21ba8ff
d1386ba10
a50934b68
cef01b5c1
ba8f2dfd5
19917e9f7
6aae56ece
Also fixes some issues with 'undo'ing moves, and adds Combo Protection for in-use combos.
61cccce71
f2fc4df01
9c5d9aed4
8d7658367
9909f5c1b
8a48221a9
A bug in type conversion allowed this code to compile:
Object obj = new Object(); int number = obj; int numbers[] = {obj};
The above code now produces a compiler error.
960da1145
40537d3ab
d845df6a8
324d86cac
982ec4d75
- npc->Attack()
- npc->CanSlide()
- npc->ConstantWalk(int[])
- npc->ConstantWalk8(int[])
- npc->FloatingWalk(int[])
- npc->HaltingWalk(int[])
- npc->HaltingWalk8(int[])
- npc->isDead()
- npc->NewDir8(int[])
- npc->Remove()
- npc->Slide()
- npc->StopBGSFX()
- npc->VariableWalk(int[])
- npc->VariableWalk8(int[])
- Trace(char32[])
fd4e4b434
b90683ccb
a58cf4f05
7a20dab49
~40 built-in methods exist in this style:
int Max(); // Returns the max. void Max(int value); // Sets the max. int GetCurDMapScreen();
These have been deprecated and replaced with a variable, like so:
int Max; // The max number. int CurDMapScreen;
d8d56745e
702396d7f
To download this release, visit the ZQuest Classic website or see the bottom of this page.
The following are the changes since 3.0.0-prerelease.50+2024-04-07:
ff6c8151e
dae41c8c7
42b835781
4917cea2d
9220affe4
3ee3da857
1f74bdc0a
8f50a32f5
5dd03e998
bc0c7ac8e
3c72e3712
5e06d5629
Relevant changes:
- refactor(zc): reduce duplicated code for trigger results
f20ddc1b4
53310a254
The following are the changes since 3.0.0-prerelease.51+2024-04-14:
To download this release, visit the ZQuest Classic website or see the bottom of this page.
The following are the changes since 3.0.0-prerelease.49+2024-04-06:
dbd473b97
This patch greatly enhances the capabilities of the language extension. New features are:
- A symbol outline of the current script, showing all variables, functions, classes, namespaces, etc.
- Tooltips on hover, shown if a variable/class/whatever was declared with a comment. This supports markdown
- "Go to Definition" to jump to where something is defined. You can right-click to see this option, or CTRL/CMD+click on something
4e1bd29e4
Several default subscreen fixes (some by P-Tux7, some by myself)
e061ad48b
80af019ef
4efe6b07d
7b26369e0
26c78ebec
58aaefd3a
b5b8ef720
df11ee40f
5526c1ddc
To download this release, visit the ZQuest Classic website or see the bottom of this page.
The following are the changes since 3.0.0-prerelease.48+2024-04-05:
1f010f2d6
dc6c35037
4bd0e5412
cb05cf84d
To download this release, visit the ZQuest Classic website or see the bottom of this page.
The following are the changes since 3.0.0-prerelease.47+2024-04-04:
2ed2cd56d
5c29d6f4e
08756b8cb
11b834b35
e8d903186
To download this release, visit the ZQuest Classic website or see the bottom of this page.
The following are the changes since 3.0.0-prerelease.46+2024-04-04:
f93172d33
To download this release, visit the ZQuest Classic website or see the bottom of this page.
The following are the changes since 3.0.0-prerelease.45+2024-04-02:
a3cf09ddc
c729bb682
803871558
7cfededaa
5c338087d
771f801de
7a84cbf40
88898e22f
331bbd4e3
bffa9428d
also makes aliases of getters/setters work
29094bbe5