1
0
mirror of synced 2024-12-15 07:41:15 +01:00
Commit Graph

170 Commits

Author SHA1 Message Date
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
Jennifer Taylor
6aa04b0c1b Implement recursive if detection. 2021-04-24 18:02:26 +00:00
Jennifer Taylor
6e34d2647e Implement loop break/continue/goto processing. 2021-04-24 18:01:25 +00:00
Jennifer Taylor
738fce36c9 Lots more implementation done on decompiler, including better control flow and loop detection. 2021-04-24 18:00:13 +00:00
Jennifer Taylor
b77ccdd5b9 Beginning of an AFP ByteCode decompiler, starting with a massive code reorg and a control flow graph analyzer. 2021-04-24 17:59:36 +00:00
Jennifer Taylor
011b84aceb Actually parse bytecode into an intermediate representation. 2021-04-21 03:58:53 +00:00
Jennifer Taylor
f209bcbe54 Exit early if we're done rendering the main animation, allow background color override. 2021-04-21 01:06:48 +00:00
Jennifer Taylor
47525837cd Allow partial renders by hitting ctrl-c. 2021-04-21 00:01:35 +00:00
Jennifer Taylor
cc25c3c8dc Don't draw shapes/sprites with zero scaling factor. 2021-04-20 23:33:43 +00:00
Jennifer Taylor
05a85abce8 Convert some more exceptions to warnings for best-effort renderings. 2021-04-20 23:19:14 +00:00
Jennifer Taylor
4c7ac0f744 Rework engine so multiple of the same sprite can be placed down by place item tags. 2021-04-20 21:41:28 +00:00
Jennifer Taylor
81c4496269 Implement what I think are the correct blending modes. Fixes some older Pop'n animations. 2021-04-20 21:41:09 +00:00
Jennifer Taylor
5a499a0f2c Fix rotation origin so some bishi bashi levels will render. 2021-04-17 23:33:04 +00:00
Jennifer Taylor
d1cf978e12 Change rendering output style, allow series of png files to be rendered. 2021-04-17 23:32:47 +00:00
Jennifer Taylor
8cd85f26e9 Separate blend and color arguments for ease of experimenting. 2021-04-17 23:32:30 +00:00
Jennifer Taylor
ebc86019ae Implement color blending, add fast path back to rendering shapes. 2021-04-17 23:32:10 +00:00
Jennifer Taylor
e1c6ad429c Implement proper affine transformations instead of just translation. 2021-04-17 23:31:36 +00:00
Jennifer Taylor
c6e19d0dfa Overhaul clip playback engine to allow clips to start when they're placed, not when they're created. 2021-04-17 23:31:08 +00:00
Jennifer Taylor
830f32814e Clean up the code some in preparation for trying to get affine transformations working. 2021-04-17 23:30:46 +00:00
Jennifer Taylor
700e63a001 Convert some more exceptions to warnings to allow attempts to render some BishiBashi content. 2021-04-16 21:28:53 +00:00
Jennifer Taylor
de5dfd2421 Hook up TXP2 container to renderer, provide a "list" option to list out possible rendering paths in a container. 2021-04-16 21:08:41 +00:00
Jennifer Taylor
42f57e10d7 Include origin point in updated tags. 2021-04-15 23:24:46 +00:00
Jennifer Taylor
3ad60064f9 Convert some exceptions to warnings so files can be partially rendered. 2021-04-15 23:20:27 +00:00
Jennifer Taylor
d835c46320 Support nested animations as well as update object requests. 2021-04-15 23:19:56 +00:00
Jennifer Taylor
3f5760343a Always filter out unnecessary exported tags, even when rendering the default animation. 2021-04-15 23:18:54 +00:00
Jennifer Taylor
1683c8ecdd Initial stab at an AFP animation renderer. It can render some basic animations from Pop'n Music! 2021-04-15 23:18:33 +00:00
Jennifer Taylor
3941b7e602 Fix a few more typos in object placement, values make a lot more sense now. 2021-04-15 23:17:45 +00:00
Jennifer Taylor
61603b0e63 Codify my guess as to what's going on with the mysterious point. 2021-04-15 23:17:15 +00:00
Jennifer Taylor
544baae387 Fix a few small bugs with place object handling. 2021-04-15 23:16:45 +00:00
Jennifer Taylor
db36298f22 Slightly better IFS extraction and shape documentation, given my understanding of the relationship between the two. 2021-04-15 23:16:03 +00:00
Jennifer Taylor
520181785d Vastly improved IFS extraction which names afp/bsi/geo files correctly. 2021-04-14 01:08:13 +00:00
Jennifer Taylor
d486cfa54e Finish handling push types and a few miscelaneous constants. 2021-04-14 01:07:33 +00:00
Jennifer Taylor
142ee31d56 Finish initial RE on bytecode, every opcode is now accounted for. 2021-04-14 01:07:01 +00:00
Jennifer Taylor
79b31c7fa2 Hook up parsed objects to all of SWF except for the bytecode mess. 2021-04-12 03:10:31 +00:00
Jennifer Taylor
8d686dcdb7 Assert on unknown data inside GE2D structures, so we don't miss something important. 2021-04-12 03:10:14 +00:00
Jennifer Taylor
9f6b9eb7d6 Begin parsing AFP data into useful structures. 2021-04-12 03:09:57 +00:00
Jennifer Taylor
522f8eaa29 Refactor verbose debugging to its own class, clean up classes that used it. 2021-04-11 20:45:17 +00:00
Jennifer Taylor
897e779b20 Refactor coverage stuff out to its own utility class, clean up code that used it. 2021-04-11 20:44:55 +00:00
Jennifer Taylor
30a51f48e6 Massive juggling of core AFP/AP2 implementation into its own files. 2021-04-11 20:44:31 +00:00
Jennifer Taylor
f1294df839 Split types up to generic types and AP2-specific types. 2021-04-11 20:44:11 +00:00
Jennifer Taylor
cef8bbfa83 Separate types out into their own module. 2021-04-11 20:43:51 +00:00
Jennifer Taylor
749f2bab0d Move AFP library in preparation of refactoring. 2021-04-11 20:43:27 +00:00