seth
791b13682f
remove debugging code and arena references
2021-08-06 22:36:17 -04:00
seth
42c1bddefc
iidx: Add Rootage to bemapi
2021-08-06 22:36:17 -04:00
seth
8473113ef9
Add support for 64 bit PE in psmap
2021-08-06 22:36:17 -04:00
seth
b963b461d1
iidx: fix region select and add qpro select
2021-08-06 22:36:17 -04:00
seth
84e731aabb
iidx: update api to support qpros in catalog
2021-08-06 22:36:17 -04:00
seth
c77d834091
iidx: Support cannonballers and rootage.
...
Add stubs for heroic verse and bistrover
2021-08-06 22:36:17 -04:00
Jennifer Taylor
4584cb3f45
Fix some 3D animations not getting their transforms updated per-frame.
2021-08-06 21:32:19 +00:00
Jennifer Taylor
7e70c6dad1
Fix clipping entirely off screen perspective quads.
2021-08-05 17:37:30 +00:00
Jennifer Taylor
af25448d47
Fix 3D objects in wrong position and scaling when entire animation is being scaled.
2021-08-05 17:35:10 +00:00
Jennifer Taylor
48f1196f06
Disable bilinear interpolation for perspective transforms to fix aliasing quality.
2021-08-05 17:34:33 +00:00
Jennifer Taylor
ed7fe542ec
Fix clipping calculations when textures come through the camera.
2021-08-05 17:33:30 +00:00
Jennifer Taylor
53f69c0eca
Fix wiggling textures in perspective mode due to premature rounding.
2021-08-05 17:33:09 +00:00
Jennifer Taylor
74838e698d
Switch perspective engine to using existing blitter with correct perspective-based texture mapping.
2021-08-05 17:32:20 +00:00
Jennifer Taylor
75bc9f975c
More concrete selection of perspective/affine rendering engines.
2021-08-05 17:31:28 +00:00
Jennifer Taylor
62b77b850c
Separate TX/TY and TZ set tracking because this is how the SWF loader assigns it. This seems to fix some animations using 3D perspective.
2021-08-03 20:34:06 +00:00
Jennifer Taylor
b9b85bf146
Very primitive 3D transform support. Animations using cameras/3D now display with the proper perspective, but there are lots of issues.
2021-08-03 17:04:20 +00:00
Jennifer Taylor
52300c40b7
Add a mode to renderer console command to show progress.
2021-08-03 17:03:59 +00:00
Jennifer Taylor
44f6a7fee0
Slightly more correct transform updating. Does not currently matter but affects some 3D transforms.
2021-08-03 17:03:35 +00:00
Jennifer Taylor
9c3010bcbd
Get rid of warning for 3D transform stuff that we support parsing but don't have engine support for.
2021-07-31 01:16:09 +00:00
Jennifer Taylor
96a99f6f74
Fix bug in matrix inversion code relating to upper triangles causing some matrixes to fail to invert and hiding some textures.
2021-07-31 01:15:52 +00:00
Jennifer Taylor
6e76c25e95
Switch back to older style of parsing transform matrixes from SWF files.
2021-07-31 01:15:32 +00:00
Jennifer Taylor
52216cb56b
Change the way we calculate visibility on hidden items.
2021-07-31 01:15:15 +00:00
Jennifer Taylor
cfba02ebee
Better handling of "aep_set_frame_control", fixes a few Pop'n and IIDX animations.
2021-07-29 22:02:10 +00:00
Jennifer Taylor
c8be6aef23
Eliminate some more gotos, enable finding more types of compound if.
2021-07-15 00:15:52 +00:00
Jennifer Taylor
2895bfc050
Another quick goto eliminiation optimization for decompiler.
2021-07-15 00:15:28 +00:00
Jennifer Taylor
244f54d93f
Add future enhancement TODO to decompiler optimizer.
2021-07-15 00:15:14 +00:00
Jennifer Taylor
392a5e5133
Fix a few edge cases in a few of the decompilation optimizers.
2021-07-15 00:14:48 +00:00
Jennifer Taylor
7ca9e6920f
Enable many more types of switch statements to be detected.
2021-07-15 00:14:29 +00:00
Jennifer Taylor
a8f8b82768
Allow code optimizer to be turned off without tripping on asserts.
2021-07-15 00:13:45 +00:00
Jennifer Taylor
5ebb0a3524
Fix detection of some compound or statements with no false path.
2021-07-15 00:13:25 +00:00
Jennifer Taylor
599825332a
Introduce switch statements and use those to make decompilation better.
2021-07-15 00:13:02 +00:00
Jennifer Taylor
d5a8fbfb4c
Improve compound or detection to get rid of a few more gotos in AFP decompiler.
2021-07-15 00:12:36 +00:00
Jennifer Taylor
1b0785960b
Use built-in hex for displaying bytes in AFP utilities.
2021-07-15 00:12:13 +00:00
Jennifer Taylor
9b773fd0a8
Implement compound or statement detection and folding for AFP decompiler.
2021-07-15 00:11:46 +00:00
Jennifer Taylor
de3f9107cd
Address newest crop of lint issue with new flake8 tool.
2021-07-06 22:29:41 +00:00
Jennifer Taylor
debc7b3aac
Switch to 4x4 matrix and 3D point for all transform operations. Should behave identically to before.
2021-07-06 21:58:32 +00:00
seth
f0792067b7
frontend: Patch path traversal vulnerability
2021-07-06 17:44:05 -04:00
seth
33d0000c77
api client: fix get_all_records
2021-06-29 19:42:59 -04:00
Jennifer Taylor
07205d3e16
Implement a way to force particular width/height instead of just a particular scaling factor.
2021-06-13 21:38:41 +00:00
Jennifer Taylor
092c4b6972
Implement bilinear AA for scaled up sprites to get rid of boxy artifacting.
2021-06-13 18:24:18 +00:00
Jennifer Taylor
8e8fa77d36
Slight optimization for AA passes.
2021-06-13 16:46:22 +00:00
Jennifer Taylor
d9469babee
Enable AA for rectangles, it appears this works now.
2021-06-13 15:34:30 +00:00
Jennifer Taylor
f8c3f75883
Fix issue with anti-aliasing artifacts around borders with transparent pixels.
2021-06-13 03:15:03 +00:00
Jennifer Taylor
dfffe80a74
Attempt to fix issue with OSX.
2021-06-12 18:50:17 +00:00
Jennifer Taylor
535a2c872e
Properly calculate scaling for AA sampling, fixing several artifacting errors and improving AA for many small sprites.
2021-06-12 17:17:26 +00:00
Jennifer Taylor
d68fd77975
Implement best guess as to what frame_control function should do. Still doesn't fix some Pop'n animations but they look closer?
2021-06-12 17:17:02 +00:00
Jennifer Taylor
d4e3a25340
Auto-create directories for output files as a convenience.
2021-06-12 17:16:45 +00:00
seth
061ff796f6
Fix compatibility with python < 3.8 by switching from typing.Final to typing_extensions.Final
2021-06-07 23:07:36 -04:00
Jennifer Taylor
b1b8b67fe3
Fix a few more optional type errors.
2021-05-31 18:14:51 +00:00
Jennifer Taylor
a4746f2934
Get rid of remaining dunder calls in unit tests.
2021-05-31 18:14:04 +00:00
Jennifer Taylor
7809ff360f
More type changes for correctness in order to compile with mypyc in the future.
2021-05-31 18:13:43 +00:00
Jennifer Taylor
0a1cfb6f07
Unify semantics between animated and individual-frame file writers.
2021-05-31 18:13:04 +00:00
Jennifer Taylor
b022149d28
Convert anti-aliased rendering to an experimental enable, instead of enabled by default.
2021-05-31 18:12:06 +00:00
Jennifer Taylor
83495f44af
Additional typing fixes for safety and to be able to compile more code with mypyc.
2021-05-31 18:09:40 +00:00
Jennifer Taylor
732e2afb42
Fix possible logic error in saving favorites for IIDX.
2021-05-31 18:09:08 +00:00
Jennifer Taylor
4a1579b099
Some type hint fixes for protocol necessary to compile with mypyc.
2021-05-31 18:08:31 +00:00
Jennifer Taylor
2eb39f86cd
Update to stricter type checking, get rid of a bunch of unnecessary ignore statements.
2021-05-31 18:07:03 +00:00
Jennifer Taylor
630263dd8d
Refactor pure-python blend implementation to reduce duplicated code.
2021-05-30 17:56:02 +00:00
Jennifer Taylor
e6ffc983f7
Add simple anti-aliasing to texture renderer functions.
2021-05-30 04:16:25 +00:00
Jennifer Taylor
4785b01132
Juggle around some imports a little bit after the massive refactor.
2021-05-30 04:16:08 +00:00
Jennifer Taylor
b864148c3e
Refactor/reorganization of C++ modules.
2021-05-29 22:11:15 +00:00
Jennifer Taylor
3281e125cf
Get rid of now-unnecessary verbose flag to all expression/statement renderers.
2021-05-29 22:10:51 +00:00
Jennifer Taylor
322c33a9b8
Massive type refactor for decompiler.
2021-05-29 22:10:31 +00:00
Jennifer Taylor
0f160e9663
Get rid of unnecessary length calls.
2021-05-29 22:10:08 +00:00
Jennifer Taylor
161544e612
Sped up listing of paths a fair amount, added options for displaying size and number of frames.
2021-05-29 03:41:25 +00:00
Jennifer Taylor
1dbe51d96d
Major refactor of afputils as it was getting out of hand.
2021-05-29 03:41:03 +00:00
Jennifer Taylor
2609047b03
Add a few more wrapper calls to our AEPLib implementation.
2021-05-29 00:21:42 +00:00
Jennifer Taylor
1765c383e2
Fix typo in verbose SWF print.
2021-05-29 00:01:00 +00:00
Jennifer Taylor
83457808e7
A bit of refactoring and debug messages.
2021-05-29 00:01:00 +00:00
Jennifer Taylor
bc46d83452
Add warning and command-line flag for working with animations that loop forever.
2021-05-25 02:01:36 +00:00
Jennifer Taylor
089eef1588
Implement AP2_IMAGE tag support into renderer.
2021-05-25 02:01:17 +00:00
Jennifer Taylor
d9a48e150f
Implement additional tag parsing necessary to render some Museca animations.
2021-05-25 02:00:56 +00:00
Jennifer Taylor
5ec5068916
Handle newly-discovered file flags properly in GE2D structures.
2021-05-25 02:00:37 +00:00
DragonMinded
afa8214ed1
Messy fix for AFP tests failing on Windows.
2021-05-24 17:22:50 -04:00
Jennifer Taylor
7fd194d98b
Hack/fix for SWFs with orphaned tags, I think this is correct?
2021-05-24 18:35:43 +00:00
Jennifer Taylor
838f151234
Suppress warnings for imported libs we don't need and reimplement anyway.
2021-05-24 17:38:56 +00:00
Jennifer Taylor
64f8666590
Support DXT5 image compression in ifs files.
2021-05-24 17:37:47 +00:00
Jennifer Taylor
88564ae11d
Add dummy asdlib for sound requests in some games.
2021-05-24 17:37:13 +00:00
Jennifer Taylor
ee6d848977
Fix context in which getInstanceAtDepth operates to fix some UNDEFINED object errors.
2021-05-24 17:36:57 +00:00
Jennifer Taylor
8b3ce489b1
Convert from rendering to a list of images to rendering in a generator so extremely long sequences can be rendered to pngs without OOM.
2021-05-24 17:36:34 +00:00
Jennifer Taylor
8622e0980c
Fix bytecode frame updates being off by one frame.
2021-05-24 01:24:26 +00:00
Jennifer Taylor
7eb41a45e7
Implement support for adding a background image on top of the background color but below the animation.
2021-05-23 23:37:05 +00:00
Jennifer Taylor
cc5cdde995
Fix frame number display in verbose output.
2021-05-23 20:37:42 +00:00
Jennifer Taylor
56498f6154
Implement masking support.
2021-05-23 20:37:18 +00:00
Jennifer Taylor
9df33fcec3
Support simple frame control bytecode.
2021-05-23 20:33:05 +00:00
Jennifer Taylor
14c8ac9347
Implement the first bits of bytecode processing, including the ability to go to an animation frame.
2021-05-23 20:32:21 +00:00
Jennifer Taylor
0a6635d993
Add comment about additive blending alpha 'hack'.
2021-05-23 20:31:39 +00:00
Jennifer Taylor
9dada6fb79
Get rid of useless threading argument for list command.
2021-05-23 20:31:23 +00:00
Jennifer Taylor
8e52428d76
Organize help for render command a bit.
2021-05-23 20:30:35 +00:00
Jennifer Taylor
2aa37c2e40
Fix additive blending on semi-transparent backgrounds.
2021-05-22 23:24:51 +00:00
Jennifer Taylor
2d69d1dc99
Support parent sprite blend parameter inheritance.
2021-05-22 21:56:28 +00:00
Jennifer Taylor
e3e6354295
Blend 1 is the same as blend 0, according to Bishi.
2021-05-22 21:54:53 +00:00
Jennifer Taylor
a5c93569e9
Add a couple more warnings for areas where we don't (yet) support animation features.
2021-05-22 21:54:22 +00:00
Jennifer Taylor
274bd297f2
Change compositing to take from the center of the pixel in preparation of upcoming anti-aliasing attempt.
2021-05-22 21:53:09 +00:00
Jennifer Taylor
212ff2be4e
Improved disassembled output when setting register values.
2021-05-22 21:52:40 +00:00
Jennifer Taylor
8923c93a66
Implement embedded clip blend colors.
2021-05-22 21:52:17 +00:00
Jennifer Taylor
0edb5dc2b1
Rework additive color a bit for type clarity and add warnings where we don't support it.
2021-05-22 01:31:42 +00:00
Jennifer Taylor
3bdc0d3887
Add more specific warning for missing bytecode.
2021-05-22 01:31:17 +00:00
Jennifer Taylor
8ee8e5c519
Make some debugging adjustments.
2021-05-22 01:30:58 +00:00
Jennifer Taylor
f33c73572b
Preserve placed object order when rendering.
2021-05-22 01:30:28 +00:00
Jennifer Taylor
d031b2107a
Pad out written PNG frames so all of them have the same number of digits in them.
2021-05-21 21:47:26 +00:00
Jennifer Taylor
03381ee8ca
Fix double-applying base transform to the root clip.
2021-05-21 21:32:19 +00:00
Jennifer Taylor
70f06b2b33
Fix translation matrix application on embedded clips, fixes placement of lots of complex animations.
2021-05-21 21:32:02 +00:00
Jennifer Taylor
2c678e60f8
Implement scale by width and height for final animation.
2021-05-21 21:31:39 +00:00
Jennifer Taylor
35c53c3b6c
Implement forced aspect ratio for renderer.
2021-05-21 21:31:13 +00:00
Jennifer Taylor
3922535555
Implement non-textured rectangle shapes.
2021-05-21 16:58:39 +00:00
Jennifer Taylor
4290b86c34
Implement basic import system to avoid crashing with not-found registered objects.
2021-05-21 16:58:01 +00:00
Jennifer Taylor
0d648f1371
Implement a multi-threaded C++ renderer for a decent speed boost.
2021-05-20 03:51:43 +00:00
Jennifer Taylor
f15ba3c718
Fix massive amount of type errors coming from new MyPy with Flask stubs.
2021-05-19 22:38:00 +00:00
Jennifer Taylor
f47a4782da
Another attempted fix for CLANG on OSX.
2021-05-19 20:16:51 +00:00
Jennifer Taylor
f8f32ef082
Possible fix for clang OSX compile.
2021-05-19 20:01:32 +00:00
Jennifer Taylor
48e9c59513
Initial implementation of C++ affine renderer for massive speed boost.
2021-05-19 16:25:13 +00:00
Jennifer Taylor
b02c4292be
Fix non-alpha blended modes now that I have an example file.
2021-05-19 02:00:05 +00:00
Jennifer Taylor
d59fec65f7
More descriptive frame count when printing verbose information.
2021-05-17 04:04:38 +00:00
Jennifer Taylor
1da2ac8397
Ignore PLACE_CAMERA tags in renderer for the time being.
2021-05-17 03:55:41 +00:00
Jennifer Taylor
f2be6d2bb8
Initial RE of new tags and flags seen in some IIDX versions.
2021-05-17 03:48:05 +00:00
Jennifer Taylor
ace6bd54c4
Fix partial-alpha blending equation, should fix dark sprites on semi-transparent backgrounds.
2021-05-16 22:19:38 +00:00
Jennifer Taylor
40968ab039
Remove ability to render exported tags as it was broken and elongated the render time of some animations.
2021-05-16 22:19:07 +00:00
Jennifer Taylor
ec20ab4cf1
Slightly better verbose debugging for DO_ACTION tag so I can start to figure out what it's used for in animations.
2021-05-16 22:18:44 +00:00
Jennifer Taylor
337440cb14
Handle decompiling bytecode which does not use function call results properly.
2021-05-16 22:18:23 +00:00
Jennifer Taylor
21ba1db898
Add support for rendering only certain depth planes for debugging.
2021-05-16 19:40:06 +00:00
Jennifer Taylor
89af7c100a
Better multi-threaded Ctrl+C handling.
2021-05-16 19:39:44 +00:00
Jennifer Taylor
604b987f90
Better logging for rendering cycle.
2021-05-16 19:39:25 +00:00
Jennifer Taylor
428ee8a063
Implement alternate transform matrix specification to fix some animations not having scaling/rotation applied to various sprites.
2021-05-16 19:39:07 +00:00
Jennifer Taylor
3db9cc9a58
Shave off another 33% of rendering time by better pcklable data in multithreaded case.
2021-05-16 15:15:06 +00:00
Jennifer Taylor
fdf7e70bfd
Speed up rendering using multi-processing. The bottleneck is now the queue and we need a C++ implementation.
2021-05-16 00:20:43 +00:00
Jennifer Taylor
85606fece9
Move affine transform function out into blend for slight cPython boost and also preparation for threading.
2021-05-16 00:20:23 +00:00
Jennifer Taylor
187783696b
Use cPython to speed up some rendering by about 10%.
2021-05-16 00:19:50 +00:00
Jennifer Taylor
68feebc78e
Fix missing ctypes definition for compression in Lz77 module.
2021-05-16 00:19:20 +00:00
Jennifer Taylor
f74dd8c136
Speed up animation rendering a bit by caching some calculated properties from PIL.
2021-05-16 00:18:59 +00:00
Jennifer Taylor
afb5eaa6fb
Add todo to fix decompiling some Pop'n animation bytecodes.
2021-05-15 04:23:04 +00:00
Jennifer Taylor
f7861c0819
Support update tags allowing the underlying object to be swapped out, fixes some IIDX animations.
2021-05-15 04:22:43 +00:00
Jennifer Taylor
a58e1165bf
Fix incorrectly handling placed sprites if there was a change previously in the frame.
2021-05-15 04:22:17 +00:00
Jennifer Taylor
7ead384215
Add more documentation to blend modes, implement multiply blend mode.
2021-05-15 04:21:52 +00:00
Jennifer Taylor
26c2a99a6e
Tie up loose ends by adding TODOs and documentation for a few remaining bits in decompiler.
2021-05-11 17:01:35 +00:00
Jennifer Taylor
b184ae3169
Rename references to labels as they do the same thing as SWF labels in the original format.
2021-05-10 22:26:46 +00:00
Jennifer Taylor
17aaeb81fe
Rewrite AFP rendering engine core which seems to fix several Pop'n animations.
2021-05-10 22:26:26 +00:00
Jennifer Taylor
d9550122de
Allow dumping decompiled bytecode to file for both raw afp/bsi pairs and TXP2 containers.
2021-05-10 00:12:54 +00:00
Jennifer Taylor
ee3e272787
Properly plumb verbosity flags to all of decompiler pieces, clean up some code.
2021-05-10 00:12:28 +00:00
Jennifer Taylor
08601dfcfe
Initial parsing of AFP buttons, which is good enough to parse all of DDR PS3's files and decompile them.
2021-05-09 19:19:19 +00:00
Jennifer Taylor
aace5c7c13
Enable selective coverage printing to help narrow down missing sections in individual tags.
2021-05-09 19:19:02 +00:00
Jennifer Taylor
da1dba8f2b
Implement GET_TIME opcode used by some DDR PS3 files.
2021-05-09 19:18:48 +00:00
Jennifer Taylor
95dc046043
Do a really half-assed job handling morph shapes.
2021-05-09 19:18:33 +00:00
Jennifer Taylor
8b54d7ccd5
Fix parsing of API client content-type string.
2021-05-08 01:49:42 +00:00
Jennifer Taylor
a2ceb5cd9e
Remove duplicate copy of user.py that somehow existed in the top-level data directory for years.
2021-05-07 05:16:15 +00:00
Jennifer Taylor
1e6ab47c4a
Better constants for a few more floating point values.
2021-05-07 05:16:00 +00:00
Jennifer Taylor
cbe084f137
Update some debug prints based on better understanding of one more tag section.
2021-05-06 19:38:13 +00:00
Jennifer Taylor
2252390706
Implement one more opcode needed for some Bishi levels.
2021-05-06 19:37:55 +00:00
Jennifer Taylor
459803d244
Only check IFS file size if we extracted it out of our own IFS.
2021-05-06 19:37:32 +00:00
Jennifer Taylor
9ce8b79b10
Implement define text tag, fill in some better understanding of the font tag from define text understanding.
2021-05-06 19:37:05 +00:00
Jennifer Taylor
5d26149298
Check in fix for non-compressed files.
2021-05-06 19:36:43 +00:00
Jennifer Taylor
74e3160588
Implement super support for IFS extraction.
2021-05-06 19:36:24 +00:00
Jennifer Taylor
b81d2aeaae
Fix one last case where we can get surprise gotos.
2021-05-05 19:32:08 +00:00
Jennifer Taylor
203fdd3a10
Fix tricky case where we have nowhere to jump to after a While loop inside an if.
2021-05-05 19:31:45 +00:00
Jennifer Taylor
481c5a50ce
Implement one more opcode that I've seen in Bishi levels.
2021-05-05 00:57:31 +00:00
Jennifer Taylor
9544287b13
Deal with empty if statements (usually compiled-out debug switches).
2021-05-05 00:56:59 +00:00
Jennifer Taylor
25278d76c5
Fix stack walking bug with respect to pre-converted if statements.
2021-05-05 00:56:33 +00:00
Jennifer Taylor
eba79ed3bc
Add heuristic for parsing a troublesome flag in SWF object create tags.
2021-05-05 00:55:34 +00:00
Jennifer Taylor
f75b9f038e
Implement a few more opcodes to get a few more Bishi files decompiling.
2021-05-05 00:55:02 +00:00
Jennifer Taylor
636e1876bc
Add while loop detection and conversion.
2021-05-05 00:54:34 +00:00
Jennifer Taylor
2f79a6401d
Fix massive bug which dropped function calls without returns from the finished output.
2021-05-05 00:53:58 +00:00
Jennifer Taylor
f09fd79a45
Add for loop detection and conversion.
2021-05-05 00:53:38 +00:00
Jennifer Taylor
e17f7c2bdb
Add some tests for for/while loops in anticipation of optimizing output.
2021-05-05 00:53:02 +00:00
Jennifer Taylor
83f4f43e9e
Implement a few more opcodes, fix stack ordering with multiple entries after reconciliation.
2021-05-04 02:32:32 +00:00
Jennifer Taylor
eddb8dc208
Several more code output optimizations done.
2021-05-04 02:32:04 +00:00
Jennifer Taylor
44b3628a85
Fix logic error in merging stacks when if statements didn't have a true and false body.
2021-05-04 02:31:07 +00:00
Jennifer Taylor
4790385022
Fix a logic error in if statement unwrapping, remove duplicated code in favor of a better true/false detection algorithm.
2021-05-04 02:30:37 +00:00
Jennifer Taylor
108d7c228d
Handle having bytecode with no actual entries.
2021-05-04 02:29:53 +00:00
Jennifer Taylor
54b4c88d65
It seems that some bytecode leaves extra stuff on the stack sometimes, I think this is fine?
2021-05-04 02:29:27 +00:00
Jennifer Taylor
70c7448aa0
Fix nasty bug where sometimes we would have gotos without corresponding labels.
2021-05-02 03:50:48 +00:00
Jennifer Taylor
336ef6fc3d
Check in some beta code for a new style of if detection that does not work yet.
2021-05-02 03:50:19 +00:00
Jennifer Taylor
7493db034f
Add in basic throw, test code generation of mostly the same code as we tested the code graph with.
2021-05-02 03:49:35 +00:00
Jennifer Taylor
829597a871
Address the fact that I never handled END actions (they end processing as they are encountered).
2021-05-02 03:48:38 +00:00
Jennifer Taylor
261c3d7fbd
Start a unit test framework for decompilation, in the hopes of eventually tracking down a logic bug in if extraction.
2021-05-02 03:48:07 +00:00
Jennifer Taylor
820a86845d
Fix shallowest successor find when multiple nodes lead to the same location, fix if swap optimization and add BITAND and NOT_BITAND if support.
2021-04-26 03:24:47 +00:00
Jennifer Taylor
8cf219cb25
Avoid duplicating labels outside of and inside of do-while statements. Avoid going to or generating negative labels (artificially inserted nodes).
2021-04-26 03:24:24 +00:00
Jennifer Taylor
b7523b5521
Fix if processing by getting rid of negation early optimization. There was a path that
...
was negating but not being checked when doing the final render, leaving some if statements
inverted. Moved the optimization to a final pass for more generalized correctness.
2021-04-26 02:50:19 +00:00
Jennifer Taylor
2d4f6cadfb
Much more complicated stack walking algorithm that chains the stack through chunks and also calculates when temporary variables are needed.
2021-04-26 01:28:48 +00:00
Jennifer Taylor
4d0bfe5637
Fix an edge case in if detection where we reused IDs incorrectly by stopping the reuse of IDs. Also, convert returns much earlier in the stack.
2021-04-26 01:27:51 +00:00
Jennifer Taylor
28ce17b996
Apparently some BishiBashi levels use an even older AP2 version.
2021-04-26 01:27:10 +00:00
Jennifer Taylor
06bd9d1245
Fix logic error where we lost if statement jump points because __gather_chunks was too-aggressively dropping end pointers.
2021-04-26 01:26:50 +00:00
Jennifer Taylor
6f78668e9a
Fix up exceptions and add more invariant checks to loop generation code.
2021-04-26 01:25:32 +00:00
Jennifer Taylor
5761474bec
Enforce another invariant for dominator calculation that would have caught another hard-to-find bug.
2021-04-26 01:24:25 +00:00
Jennifer Taylor
a09ad70de5
Improve a lot of exception message, enforce several more invariants in
...
graph generation that would have caught previous bugs, fix possible
issue with loop/dominator code if the entry code chunk was the beginning
of a loop.
2021-04-26 01:23:54 +00:00
Jennifer Taylor
44f5e5cdcc
Fix control flow graph splitting function to handle functions that jump to the end offset as a way of exiting early.
2021-04-26 01:23:08 +00:00
Jennifer Taylor
6323ef9adf
Implment several more opcodes in actual decompilation step.
2021-04-26 01:22:39 +00:00
Jennifer Taylor
6052deed3c
Refactor code generation step to allow for nested function definitions, actually hook those up.
2021-04-26 01:22:14 +00:00
Jennifer Taylor
3a9b3a7b3c
Pass indentation context into expression rendering for upcoming function definition support.
2021-04-26 01:21:42 +00:00
Jennifer Taylor
351e7060b8
Allow subclasses of verbose manager to check verbose state directly.
2021-04-26 01:21:03 +00:00
Jennifer Taylor
51e27c0cff
Enhance goto eliminiation to remove all unneeded gotos.
2021-04-24 19:37:14 +00:00
Jennifer Taylor
964d6f082c
Clean up types on If statement, stop using strings to pass information.
2021-04-24 19:36:58 +00:00
Jennifer Taylor
534ab20f98
Add dead code eliminiation so dominators doesn't fail. Fix a tricky jump case with if statements.
2021-04-24 18:13:07 +00:00
Jennifer Taylor
de84379ad0
Implement a lot more opcodes for expressions, fix an if conditional, improve while display.
2021-04-24 18:11:20 +00:00
Jennifer Taylor
cc27d2418e
Fix register display on assignment, add a few optimizing passes to clean up code.
2021-04-24 18:10:27 +00:00
Jennifer Taylor
f1aea996c4
Handle if-goto pattern that I previously neglected.
2021-04-24 18:09:44 +00:00
Jennifer Taylor
6221d0273b
Overhauled statement eval system so we always get back a list of statements.
2021-04-24 18:08:04 +00:00
Jennifer Taylor
b0778e1110
Convert expression rendering to an explicit function so we can retain __repr__ for debugging.
2021-04-24 18:07:01 +00:00
Jennifer Taylor
f2761b90b0
Restructure a lot of types to fit an expression/statement model and making a lot of stuff make more sense.
2021-04-24 18:05:58 +00:00
Jennifer Taylor
19c6de1fcc
Actually decompile basic bytecode. There's much left to do, but some basics work!
2021-04-24 18:05:03 +00:00
Jennifer Taylor
aebc277b62
Add a graph walker at the very end to verify that we've handled all control paths correctly, fix an edge case in If detection.
2021-04-24 18:03:24 +00:00