Jonathan G Rennison
229613b06a
VarAction2: Resolve jumps in advance to avoid needing to track nesting
2022-06-22 02:09:13 +01:00
Jonathan G Rennison
387e646439
VarAction2: Add group flag for whether to run jump insert pass
2022-06-20 18:46:31 +01:00
Jonathan G Rennison
3714fad790
VarAction2: Fix jump insertion using mul with bool as last value
2022-06-20 18:41:09 +01:00
Jonathan G Rennison
13fcde9ea0
VarAction2: Add a JZ operation, use for ternary style mul masking
2022-06-14 02:23:23 +01:00
Jonathan G Rennison
34cd547325
Debug: Show if action 2s have been modified by action 6 in debug window
2022-06-11 02:34:08 +01:00
Jonathan G Rennison
6214d0d20d
VarAction2: Add an ABS opcode
2022-06-11 02:33:09 +01:00
Jonathan G Rennison
8aac0ed639
VarAction2: Shrink size of RandomizedSpriteGroupCompareMode
2022-06-10 20:07:21 +01:00
Jonathan G Rennison
3bddd55921
VarAction2: Add sprite group flag for if var 1C seen before proc
2022-06-10 20:06:24 +01:00
Jonathan G Rennison
0409bd88e8
VarAction2: Simplify tracking of sprite group feature
2022-06-08 20:22:53 +01:00
Jonathan G Rennison
caebff85f5
VarAction2: Add helper functions for constant comparison adjust types
2022-06-08 19:40:36 +01:00
Jonathan G Rennison
249a20e47a
VarAction2: Add helper functions for relational comparison ops
2022-06-08 19:22:00 +01:00
Jonathan G Rennison
31e96ff5e7
VarAction2: Add helper functions for anti-commutative ops
2022-06-08 19:15:56 +01:00
Jonathan G Rennison
45798fa533
Debug: Add scroll to sprite number to debug window
2022-06-08 01:57:10 +01:00
Jonathan G Rennison
6e398f9cec
VarAction2: DSE now takes into account DSE results from child groups
2022-06-07 23:53:32 +01:00
Jonathan G Rennison
65407210a6
VarAction2: Allow DSGA_OP_STO_NC to be used with DSGA_TYPE_EQ/NEQ
2022-06-07 22:21:51 +01:00
Jonathan G Rennison
86324e0fda
Debug: Add mode to sprite dump window to show unoptimised
2022-06-07 18:54:42 +01:00
Jonathan G Rennison
e41a5d2f63
VarAction2: Add flags to skip adjust if value is 0 or LSB set
2022-06-06 23:04:45 +01:00
Jonathan G Rennison
9d04ebcc90
VarAction2: Remove operations which always do nothing when applied to 0
2022-06-06 22:20:16 +01:00
Jonathan G Rennison
dc8465dc68
VarAction2: Shrink enum fields of DeterministicSpriteGroupAdjust
2022-06-06 21:38:12 +01:00
Jonathan G Rennison
3a5902ff77
VarAction2: Reduce cost of RecursiveDisallowDSEForProcedure
...
Fix disallowing DSE also disallowing store simplification
2022-06-06 20:09:48 +01:00
Jonathan G Rennison
894c8d8b5e
NewGRF: Shrink various flags/enum fields
2022-06-06 20:01:25 +01:00
Jonathan G Rennison
7a61b5d820
VarAction2: Cache refit capacity callback results which depend only on cargo
2022-06-06 18:34:30 +01:00
Jonathan G Rennison
a9ca89d0f8
VarAction2: Move cb_result_found to a flags var in AnalyseCallbackOperation
2022-06-06 17:44:47 +01:00
Jonathan G Rennison
f5f48e89dc
Debug: Show all sprite groups for vehicles in debug window
2022-06-06 02:07:21 +01:00
Jonathan G Rennison
cf640cc0cf
Debug: Add sprite group collapsing to sprite group dump window
2022-06-04 21:08:35 +01:00
Jonathan G Rennison
bbc1e28b24
VarAction2: Re-use allocated callback result sprite groups
2022-06-04 20:31:09 +01:00
Jonathan G Rennison
db7f29b07c
VarAction2: Deduplicate loads from expensive uncached variables
...
Currently only some vehicle variables
2022-06-03 20:14:30 +01:00
Jonathan G Rennison
263a87f5da
VarAction2: Add adjust types for combined (in)equality with constant
2022-06-03 14:17:15 +01:00
Jonathan G Rennison
c238bd5012
Debug: Add temp store highlighting to sprite group dump window
...
Add tooltip
2022-06-02 20:07:18 +01:00
Jonathan G Rennison
564d7e5029
Debug: Allow clicking to highlight group in sprite group dump window
2022-06-01 21:31:05 +01:00
Jonathan G Rennison
42e20d3d99
Industry: Determine which tiles in industry layouts are not animated
...
Do not set these as animated tiles for new industries
2022-06-01 01:13:46 +01:00
Jonathan G Rennison
304f88dc40
VarAction2: Fix callback result detection in AnalyseEngineCallbacks
2022-05-31 17:41:35 +01:00
Jonathan G Rennison
994dc683a2
VarAction2: Fix calculated result groups being incorrectly pruned
2022-05-30 17:24:26 +01:00
Jonathan G Rennison
a5f5be2dff
VarAction2: Detect ops on previous constants which become loads
2022-05-29 12:57:23 +01:00
Jonathan G Rennison
1fec7d6ddb
VarAction2: Detect and replace reversed commutative op via temp storage
2022-05-29 12:08:49 +01:00
Jonathan G Rennison
145536e1fd
VarAction2: Detect and replace reverse subtract via temp storage
2022-05-27 03:14:07 +01:00
Jonathan G Rennison
90a2aa57fc
VarAction2: Detect and replace signed relational comparisons
2022-05-25 23:58:44 +01:00
Jonathan G Rennison
3b5eede3fc
VarAction2: Detect and replace operations which always produce 0
2022-05-25 20:04:36 +01:00
Jonathan G Rennison
08b83352bf
Fix truncation of variable mapping A2VM->VPRM params wider than 8 bits
...
And remapped variables via variable 7B
2022-05-25 04:02:12 +01:00
Jonathan G Rennison
012d73ef34
VarAction2: Detect equality comparisons
...
Remove redundant equality with 0 comparison before ternary
2022-05-25 02:23:25 +01:00
Jonathan G Rennison
7283825638
VarAction2: Detect and replace ternary operator pattern
2022-05-25 01:52:22 +01:00
Jonathan G Rennison
e3df522111
VarAction2: Delete provably zero adjustment operations
2022-05-24 23:40:29 +01:00
Jonathan G Rennison
502980ba61
Support railtype-dependant GRF train speed limits with realistic braking
...
See: #389
2022-05-24 21:50:38 +01:00
Jonathan G Rennison
33dc6c9688
Add NewGRF VarAction2 variable remapping infrastructure
2022-01-24 02:01:09 +00:00
Andreas Schmitt
29b227a3cd
Fix a few compiler warnings
2021-06-23 05:45:10 +02:00
Jonathan G Rennison
97d5982cb5
Fix various compiler warnings
...
See: #267
2021-06-11 00:39:24 +01:00
Jonathan G Rennison
6f10b01ba2
Debug: Add general mechanism to dump a sprite group chain
2021-05-21 19:35:22 +01:00
Jonathan G Rennison
55915d8d55
Elide vehicle random trigger callbacks
2021-05-18 22:14:19 +01:00
Jonathan G Rennison
a15e26f369
NewGRF: Elide unmasked vehicle callbacks where possible
...
This includes:
* CBID_VEHICLE_32DAY_CALLBACK
* CBID_VEHICLE_REFIT_COST
* CBID_VEHICLE_MODIFY_PROPERTY
This is on a per-property basis
The main benefit of this is to avoid callbacks not handled by the
vehicle's current sprite group from using the full graphics chain as
the "default" branch in the callback switch.
In the case where the graphics chain is long/expensive, a lot of work
had to be done before a callback failure result was eventually returned.
2021-05-18 19:07:44 +01:00
Peter Nelson
f5722a999e
Cleanup: Use std::vector in RandomSpriteGroup.
...
(cherry picked from commit 913d8a7f28 )
2021-05-06 20:25:59 +01:00