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

589 Commits

Author SHA1 Message Date
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
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
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
9925b2f6b0 Add an extract option to write afp/bsi/geo files out of TXP2 containers similar to IFS containers. 2021-04-11 20:45:40 +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
Jennifer Taylor
fce04a2493 Implement a few more bytecode parsers, implement a few more push types, fix advancing past tags which are not 4-byte aligned in size. 2021-04-10 03:47:15 +00:00
Jennifer Taylor
61bd70f803 Implement some of edit text tags. 2021-04-10 03:46:52 +00:00
Jennifer Taylor
72f81e4f58 Fix typing mistake not caught on previous AP2 check-in. 2021-04-08 01:05:48 +00:00
Jennifer Taylor
a3f247f422 Clean up node a little bit:
- Remove redundant attribute creation function.
 - Remove redundant len field.
 - Add the rest of the missing types to the constructor array.
 - Reorganize a bit.
2021-04-08 01:05:20 +00:00
Jennifer Taylor
6b547f72ec Implement a decent chunk more bytecode, implement font tag. 2021-04-07 04:36:55 +00:00
Jennifer Taylor
2c35ca1cda Implement unknown point parser to make DDR PS3 files parseable. 2021-04-07 00:45:08 +00:00
Jennifer Taylor
3109794607 Add in expanded property table that works with newer Pop'n/IIDX data. 2021-04-07 00:22:42 +00:00
Jennifer Taylor
689a997079 Support 1-byte integer PUSH from tricoro. 2021-04-06 23:01:42 +00:00
Jennifer Taylor
32cc4a071c Update with working RE for all remaining known data pieces including properties and object events. 2021-04-06 22:24:36 +00:00
Jennifer Taylor
eda60c065c Teach struct tool how to print line numbers with offsets, handy for decoding enums. 2021-04-06 22:24:16 +00:00
Jennifer Taylor
cddadd8114 Teach struct utility to take an --end or a --count for decoding values. 2021-04-06 22:24:00 +00:00
Jennifer Taylor
fa49513381 Fix ability to parse DDR PS3 AFP files, add a bit of info gleaned from looking at those files. 2021-04-06 05:46:53 +00:00
Jennifer Taylor
b118cd1109 Add a ton of RE for bytecodes, now capable of parsing several Bishi Bashi levels. 2021-04-06 04:56:59 +00:00
Jennifer Taylor
50b5ae8616 Fix a few more todos, slight renaming based on better understanding. 2021-04-05 16:28:34 +00:00
Jennifer Taylor
0bfec7655c Last few object bits implemented enough to parse Pop'n Music, a few more annotations. 2021-04-05 00:52:10 +00:00
Jennifer Taylor
d26f3e0238 Teach struct how to deal with NULL pointers, better output of parsed structures. 2021-04-05 00:51:34 +00:00
Jennifer Taylor
c7e739c6e2 Support BINXML data with no property bodies. 2021-04-05 00:50:30 +00:00
Jennifer Taylor
5adb36d5b2 Fix a few comments in old XML parser. 2021-04-05 00:50:08 +00:00
Jennifer Taylor
887d4dc657 Add a mostly-complete parser for shapes, which are the missing link between object placement in AP2 files and textures/regions elsewhere. 2021-04-03 05:30:19 +00:00
Jennifer Taylor
98197641c9 Add an almost-complete object instantiation/updating parser. 2021-04-03 05:29:37 +00:00
Jennifer Taylor
c6a138c0ea Add AP2 action table, codify understanding of frames, minor adjustments. 2021-04-03 05:28:57 +00:00
Jennifer Taylor
cdfb6cc21f Allow loading/parsing AFP/BSI files extracted from IFS files. 2021-04-03 05:27:09 +00:00
Jennifer Taylor
4a3068686a Fix help display and fix skipping padding bytes ('x' character). 2021-04-03 05:26:48 +00:00
Jennifer Taylor
bfa7384f2b Update tag parsing with better guesses as to the unknown tag sections. 2021-04-03 05:26:25 +00:00
Jennifer Taylor
0e86248fd1 Support sprites which are basically recursive tag sections. 2021-04-03 05:26:03 +00:00
Jennifer Taylor
d688314d1f Restructure string decoding, fix non-ascii strings, at least parse out the last remaining tag bytes we don't understand. 2021-04-03 05:25:27 +00:00
Jennifer Taylor
7beb518484 Fix a TODO, add a bit more RE. 2021-03-30 04:50:51 +00:00
Jennifer Taylor
02d2c9cd5a Got a bit more of the AFP base format figured out. Now we can see shape definitions and imported/exported tags properly. 2021-03-30 04:50:05 +00:00
Jennifer Taylor
8e8bcbf822 Juggle AFP file a bit. 2021-03-30 04:49:37 +00:00
Jennifer Taylor
ec88cc866e Fix lint errors that crept in. 2021-03-19 00:47:56 +00:00
Jennifer Taylor
152787f6d6 Fix error on startup caused by incorrect types and new SqlAlchemy. 2021-03-19 00:47:37 +00:00
Cammy
ccba50e2cf Add event id notes, update Museca Plus stuff. 2021-02-06 22:23:55 -05:00
kami-poi
5e7061c23b Fix logic error in eacoin.py 2021-01-24 12:38:22 -05:00
Jennifer Taylor
07a1d09cfa Initial work to reverse engineering the AFP flash derivative. 2021-01-15 01:03:59 +00:00
Jennifer Taylor
69ab6723fe Far more powerful struct printer that can handle complex structures with pointers. 2021-01-15 01:03:29 +00:00
Jennifer Taylor
6768b1417f Better 1555/565/4444 color extraction that scales colors to full 8-bit range. 2020-12-21 23:41:58 +00:00
Jennifer Taylor
47330ca37d Fix DXT1/DXT5 handling for DDR PS3 files. 2020-12-21 23:41:58 +00:00
seth
5522b80994 MUSECA plus: fix read script 2020-12-21 13:35:22 -05:00
Jennifer Taylor
e70b74f21a Slight optimization of python lz77 code. 2020-12-20 04:06:41 +00:00
Jennifer Taylor
c431e30d3b Remove a few redundant code paths in LZ77 C++ implementation, fix a bug preventing us from finding the optimal compression. 2020-12-20 03:38:34 +00:00
Jennifer Taylor
6ab6dc89c4 Support one more texture format for repacking. 2020-12-17 22:06:14 +00:00
Jennifer Taylor
68c1b7cc63 Encode unicode in JSX differently to attempt to fix issue with unicode translation on some non-utf8 systems. 2020-12-17 21:47:36 +00:00
Jennifer Taylor
b7bd09bb62 Remove magic strings and use constants instead. 2020-12-17 20:16:30 +00:00
seth
416904100b API: enable omnimix for only MUSECA and IIDX 2020-12-17 14:57:20 -05:00
seth
d32c8fafa6 Code style 2020-12-17 14:57:20 -05:00
seth
349a34d25d MUSECA PLUS: Webui fix 2020-12-17 14:57:20 -05:00
seth
13c0d02e45 MUSECA: finishing touches 2020-12-17 14:57:20 -05:00
seth
85622dbc9b MUSECA 1+1/2: mission stuff 2020-12-17 14:57:20 -05:00
seth
f8f511250c Fix linting errors 2020-12-17 14:57:20 -05:00
seth
1a4a231066 MUSECA: API and webui fixes for Museca PLUS 2020-12-17 14:57:20 -05:00
seth
82a67e0792 MUSECA: Support Museca Plus modpack 2020-12-17 14:57:20 -05:00
Jennifer Taylor
37e01e0a3e Rewrite LZ77 compressor in C++ (like decompressor) for another massive speed boost. 2020-12-14 22:15:20 +00:00
Jennifer Taylor
fd3868073f Add a few more known node types. 2020-11-30 22:57:46 +00:00
Jennifer Taylor
0ea53660b4 Support repacking a few more texture formats. 2020-11-30 18:16:02 +00:00
Jennifer Taylor
c6e395b8a5 Add ability to update textures from individual sprites as well as whole texture images. 2020-11-29 00:48:44 +00:00
Jennifer Taylor
0c4cb8df5c Support splitting texturemaps into individual sprites. 2020-11-29 00:47:25 +00:00
Jennifer Taylor
31ad2856fd Add a much faster C++ implementation of Lz77 decompress. We can achieve approximately a 10x speedup decompressing with this enabled. 2020-11-28 19:05:27 +00:00
Jennifer Taylor
c1fad0caeb Skip tracking coverage when we aren't printing verbose debugging for a slight speedup. 2020-11-28 19:05:03 +00:00
Jennifer Taylor
d2d4f9d1e9 Fix bug where some textures weren't referenced properly by BishiBashi in updated AFP files. 2020-11-27 21:53:01 +00:00
Jennifer Taylor
d3d0bab2f5 Reorganize some debug prints to help figure out correct file writing order. 2020-11-27 21:52:30 +00:00
Jennifer Taylor
476c459272 Add debugging printer so we can verify contents identical before and after a null update. 2020-11-27 17:47:48 +00:00
Jennifer Taylor
27afc98ee5 Skip recompressing textures we don't change, don't try to write a file unless we successfully generated it. 2020-11-24 00:03:28 +00:00
Jennifer Taylor
526a462ef4 Overwrite original AFP file instead of making a temporary copy. 2020-11-23 22:33:12 +00:00
Jennifer Taylor
f6b90ea014 Add feature to enable overlay bounds generation for visualizing regions in textures. 2020-11-23 20:56:05 +00:00
Jennifer Taylor
8acdb1cefc Update documentation for other texture formats that we semi-support. 2020-11-23 20:55:38 +00:00
Jennifer Taylor
ff147a37b1 Support an additional texture format found in updated BishiBashi JP data, document mapping to D3D9 structures. 2020-11-23 20:55:00 +00:00
Jennifer Taylor
db6a6739fc Implement the first bits of what's necessary to update textures. 2020-11-12 05:03:52 +00:00
Jennifer Taylor
41ea293897 Faster, but less than ideal, large file compression as well as start byte GC. 2020-11-12 05:03:33 +00:00
Jennifer Taylor
88042a7e9e Write back textures and regions when saving files. 2020-11-12 05:03:03 +00:00
Jennifer Taylor
42c3362a3c Fix off-by-one error in LZ77 implementation rarely resulting in truncated files on inflate. 2020-11-12 05:02:37 +00:00
Jennifer Taylor
a5966a6382 Fix some lint and typing issues uncovered by mypy/flake8 upgrades. 2020-11-11 05:14:36 +00:00
Jennifer Taylor
ffa70e372b Ability to write back out simple files with the data we parsed. 2020-11-11 03:39:51 +00:00
Jennifer Taylor
32d1909137 Support round-tripping a few more bits of various files, to increase our eventual success of injecting translated T*BB textures. 2020-11-11 03:39:21 +00:00
Jennifer Taylor
7fcca97ae4 Capture the rest of the file that I know about in parsed structures, track when a file needs to be read-only. 2020-11-10 03:26:26 +00:00
Jennifer Taylor
59b93e6931 Massive refactor to start parsing out to a file structure instead of just extracting. 2020-11-10 03:26:06 +00:00
Jennifer Taylor
b594349faf Capture another unknown header flag that seems to change randomly. 2020-11-10 03:25:39 +00:00
Jennifer Taylor
f9d035aa34 Remove out-of-date TODO. 2020-11-09 03:01:42 +00:00