Commit Graph

174 Commits

Author SHA1 Message Date
Jonathan G Rennison
602ac717aa Initial support for DSE and jumping over procedures with child groups 2022-08-25 00:22:41 +01:00
Jonathan G Rennison
173f867e1a VarAction2: Save calculated_result in shadow group struct 2022-08-22 00:13:23 +01:00
Jonathan G Rennison
14de8c7f34 VarAction2: Add quick exit case to last-level callback groups if possible 2022-08-22 00:13:23 +01:00
Jonathan G Rennison
e584ef7bba Move NewGRF analysis to separate files 2022-08-14 22:08:31 +01:00
Jonathan G Rennison
9ed5b6e65c Debug: Change sprite group indentation handling 2022-08-09 21:53:43 +01:00
Jonathan G Rennison
41f2e92f5c VarAction2: Add a NOOP operator 2022-08-09 21:36:03 +01:00
Jonathan G Rennison
9a4c31b0da VarAction2: Add last_value variants of JZ/JNZ ops 2022-07-30 23:32:23 +01:00
Jonathan G Rennison
cbc6199542 VarAction2: Add a JNZ op analogous to JZ for OR ops 2022-07-30 22:40:41 +01:00
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