1
0
mirror of synced 2024-11-24 14:30:11 +01:00
Commit Graph

226 Commits

Author SHA1 Message Date
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