Git Product home page Git Product logo

shockky's People

Contributors

dependabot[bot] avatar paulusparssinen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shockky's Issues

Director version handling

Determine how Shockky will support different Director versions and how much they differ from each other on a chunk basis.

My initial plan is to construct some sort of a DisassemblyContext like structure from initial version information (InitialMapChunk.Version for normal and FileVersionChunk.Version for "afterburned" movies/casts?) and keep passing that to chunk reading methods.

Seems like the guys at ScummVM have made great progress on reverse-engineering early versions of Director. Shockky has been tested on "brand-new" D8/11.5/12 files only.

Parsing/extracting non-script resources

Continued from ProjectorRays/ProjectorRays#3 since it's more relevant here

It would be great to get all the non-script assets pulled from namely cct and dcr files. In the previous issue mentioned, you said you'd look into image and sound files - any idea how much of a stretch it would be to get everything else? I have a director trial atm, and I'm seeing the following:

image

There's also all the controls, but not sure how you'd go about handling exporting something like that (as with sprites/frames/etc)
image

Utilize Roslyn Source Generation to reduce boilerplate in (de)serialization

The Shockwave file format includes many common patterns/structures and is somewhat consistent with them. For example, arrays and some smaller common structures ones such as Point, CastMemberId and Rect are represented using common structure in binary. In addition to those, most "complex" and important one of them is internally called VList aka "Vector List". It's not actually "complex" but just annoying to write (de)serialization logic for and I have been thinking how to handle them best for few years now. VLists appear in many important resources of the file format, such as Cast member metadata (VWCF, later embedded to CASt) and Cross Cast Links (ccl ) and more.

Now heavily inspired by csnover's earthquake-rust pvec! macro (seriously, this man's a genius!), I'm planning to implement something similar to make the handling VLists significantly easier by using build time Roslyn source generation.

This issue is just a tracking issue for my design for this model which is a work in progress.

TODO: Design

Basically VLists consists of header and a offset table that points to entries in following it.

I'm also currently in process of designing a source generation process for all the Lingo bytecode instructions which will share components with this but still essentially be seperate generator.

Make a small program to demonstrate functionality

Currently I have my own small sandbox application using Shockky but as there is no documentation yet for any of this, I should make something to demonstrate progress of the project. This will not replace unit tests of course. The program will probably just be a CLI which is able to dump the non-script resources (mentioned in #1 ) such as images and sounds for now atleast.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.