Commit Graph
199 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 d4faa9f7d8 Fix path issues for a few miscelaneous tools on Windows. 2021-04-16 03:51:16 +00:00