Commit Graph
232 Commits
Author SHA1 Message Date
djsrv 6b756b3213 DIRECTOR: LINGO: Rename codeFactory to registerFactory 2021-06-22 18:16:53 -04:00
djsrv 0a87b2ab2e DIRECTOR: LINGO: Eliminate argstack 2021-06-22 18:16:53 -04:00
djsrv 0a708b9c8f DIRECTOR: LINGO: Move compiler logic to new class 2021-06-22 18:16:53 -04:00
djsrv a4df3c3d8e DIRECTOR: LINGO: Eliminate Lingo::varCreate
This function just complicates things.
2021-06-22 18:16:53 -04:00
djsrv 34d8aabc4b DIRECTOR: LINGO: Add DatumType enum 2021-06-22 18:16:53 -04:00
djsrv e3f75a9bc4 DIRECTOR: LINGO: Implement b_delete/cb_delete 2021-06-10 11:51:50 -04:00
djsrv 35e68aece3 DIRECTOR: LINGO: Fix chunk refs with start < 1 2021-06-08 21:20:19 -04:00
djsrv f747445e15 DIRECTOR: LINGO: Implement kTEAString properties 2021-06-08 20:06:29 -04:00
djsrv ed8ca876e3 DIRECTOR: Use version from VWCF for loading 2021-06-07 14:48:48 -04:00
Eugene Sandulenko 5d41772b5e DIRECTOR: Added more comments 2020-08-21 00:36:19 +02:00
djsrv a5948cfc37 DIRECTOR: LINGO: Evaluate field ref on pop
This simplifies handling of fields, since most of the time it should be
treated as a string. Where we actually need a raw reference, pop(false)
is used.
2020-08-20 15:53:31 -04:00
djsrv 60fe2ea32e DIRECTOR: LINGO: Eliminate lazy vars
Now normal var refs are evaluated on pop. To get the reference itself,
use pop(false)
2020-08-20 15:34:13 -04:00
djsrv 6db398a74d DIRECTOR: LINGO: Use findVarV4 in cb_v4assign 2020-08-19 18:55:34 -04:00
djsrv 6fe741d2af DIRECTOR: LINGO: Implement findVarV4 2020-08-19 18:55:34 -04:00
djsrv df7cc8e2c2 DIRECTOR: LINGO: Mark objectcall warnings BUILDBOT 2020-08-19 15:09:45 -04:00
djsrv febf4592ba DIRECTOR: LINGO: Handle varType in cb_objectcall 2020-08-19 15:06:27 -04:00
djsrv b95495725a DIRECTOR: LINGO: Remove unnecessary non-eval pop
cb_varrefpush no longer pushes a lazy var, so suppressing its evaluation
is no longer necessary.
2020-08-19 14:42:49 -04:00
djsrv 0345a04e7a DIRECTOR: LINGO: cb_objectpush -> cb_varrefpush
The opcode isn't used just for objects.
2020-08-18 16:34:40 -04:00
djsrv b67df72543 DIRECTOR: LINGO: Push regular var in cb_objectpush 2020-08-18 16:12:29 -04:00
djsrv 191ab2da4e DIRECTOR: LINGO: Fix cb_objectcall lazy vars
Only the first arg is treated as a lazy var.
2020-08-18 15:53:45 -04:00
djsrv cd91e0fc2a DIRECTOR: LINGO: Push lazy var in cb_objectpush 2020-08-18 15:31:53 -04:00
Roland van Laar f071de48a3 DIRECTOR: LINGO: implement put ... after chunkexpr
The D4 lingo `put ... after chunkexpr` uses opcode 34 (0x22) for
cb_v4assign.
We convert the SYMBOL to a VAR due to cb_objectpush pushing
variables as SYMBOLS to the stack.
2020-08-18 16:10:02 +02:00
djsrv 7feaa01003 DIRECTOR: LINGO: Reuse LC::call in cb_objectcall 2020-08-17 21:19:55 -04:00
djsrv 19a0e574be DIRECTOR: LINGO: Mark kThePerFrameHook as writable 2020-08-17 21:19:54 -04:00
Roland van Laar 5848462bdb DIRECTOR:LINGO: Specify arg names on dump scripts
Dumped lingo (lscr) files now contain the argument names on functions.
2020-08-17 21:04:09 +02:00
Roland van Laar 062bf46ee5 DIRECTOR: Integer comparison fixes 2020-08-16 21:51:36 +02:00
Roland van Laar 5ee19d2264 DIRECTOR: LINGO: Fix prop, value order
The stack was read as if the order was a list, not a stack.
2020-08-15 15:42:01 +02:00
djsrv e1583465a2 DIRECTOR: LINGO: Fix v4 field props 2020-08-14 18:08:23 -04:00
djsrv a0c7ce4bca DIRECTOR: LINGO: Fix copy/paste error 2020-08-14 18:00:38 -04:00
djsrv 465281569a DIRECTOR: LINGO: Add missing V4 the entity fields 2020-08-14 00:15:54 -04:00
djsrv baacf3c1ab DIRECTOR: Replace SeekableSubReadStreamEndian
Use the superclass SeekableReadStreamEndian.
2020-08-12 17:26:55 -04:00
djsrv 0ff7274993 DIRECTOR: Multiply version numbers by 100
To accomodate minor version.
2020-08-10 15:00:55 -04:00
djsrv dabc82efdb DIRECTOR: LINGO: Don't add scripts w/o cast member 2020-08-04 21:25:58 -04:00
djsrv 0ccf8ab395 DIRECTOR: LINGO: Handle unused script flag
Appears in Lingo Expo/Simulation/MECH.
Any scripts that have this are empty and have no cast member.
2020-08-03 16:57:37 -04:00
djsrv d0002d5ef1 DIRECTOR: LINGO: Uniformly use 1-indexed script id 2020-08-03 16:57:37 -04:00
djsrv 039d2b3fd6 DIRECTOR: LINGO: Remove "maybe" in Lscr debug
We know the script type/cast member id for sure now.
2020-07-29 11:25:07 -04:00
djsrv 908f381ac1 DIRECTOR: LINGO: Fix D4 generic events 2020-07-29 11:25:07 -04:00
djsrv 8d29257e99 DIRECTOR: LINGO: Implement tell 2020-07-28 11:33:19 -04:00
Roland van Laar 9219568792 DIRECTOR: LINGO: Revert use lctxIndex in lscr dumps
This reverts commit 274be05986.

The castIds are repaired during the loading of the scripts
and thus can be dumped based on their castId again.
2020-07-27 00:48:51 +02:00
Roland van Laar 30e6f0a01d DIRECTOR: LINGO: Add scripts to the correct cast
Repair the castIds of script when the scripts are loaded.
The castIds that are defined in the scripts can be wrong.
A better way to link scripts with casts is via the scriptId.

To achieve this casts need to be fetched by their scriptId.
This commit implements the necessary getCastMemberByScript functions
to enable fetching a cast by it's scriptId.

Also removes the old way of repairing the castId coupling.
2020-07-27 00:48:51 +02:00
Roland van Laar 372a7f984f DIRECTOR: LINGO: Only replace string that is a var
cb_objectcall accepts strings that should be variables.
When a string isn't known as a variable it should be popped
back to the stack as a string.
The check was for VOIDSYM, however a non-existing var results in
a VOID.
2020-07-26 23:35:01 +02:00
Roland van Laar 274be05986 DIRECTOR: LINGO: use lctxIndex in lscr dumps
Dumpfiles for Lingoscripts (lscr) were named based on the castId.
The castId read from the script is not always unique causing
name clashes for the dumps.
The lctxIndex for scripts is unique, resolving the name clash.
2020-07-26 16:44:42 +02:00
djsrv dc3216dab8 DIRECTOR: LINGO: Fix cb_objectfieldassign 2020-07-24 00:13:51 -04:00
Eugene Sandulenko 88604526e9 DIRECTOR: Added more entity mapping to bytecode 2020-07-23 23:40:19 +02:00
Eugene Sandulenko 4909f7661c DIRECTOR: LINGO: Trigger buildbot on unmapped cb_v4theentitypush() 2020-07-23 22:40:13 +02:00
Eugene Sandulenko 1d8b821290 DIRECTOR: LINGO: Mapped more fields in bytecode 2020-07-23 22:36:16 +02:00
Eugene Sandulenko 7cdd4ce4f5 DIRECTOR: LINGO: Map 'the immediate of sprite' 2020-07-23 10:33:02 +02:00
djsrv bfcd0e2f1f DIRECTOR: LINGO: Add missing v4 the entity 2020-07-22 16:45:04 -04:00
djsrv 2b75427213 DIRECTOR: LINGO: Fix put before/after field 2020-07-22 16:01:12 -04:00
djsrv 3a694d7496 DIRECTOR: LINGO: Handle more ARGCNORETs 2020-07-22 12:38:01 -04:00