Skip to content
/ para Public

πŸ—ƒ Flipnote Studios .ppm Animation Format Decoder & Utility

License

Notifications You must be signed in to change notification settings

Fuwn/para

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

34 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ—ƒ para

Crate Build Status

What?

A decoder and utility for the Flipnote Studios .ppm animation format.

Why this implementation over the original?

This implementation is

  • SIGNIFICANTLY faster,
  • implemented in safe Rust (a language with strict type-checking!),
  • and being actively updated.

Speed

In a 219 frame .ppm benchmark, running the command $ para ./ppms/samplememo_02.ppm gif samplememo_02.gif on a twelve-core, twenty-four-thread Ryzen 9 processor, para took an average of 368.35 milliseconds, while ppm-parser took an average of 50.4171397 seconds.

Running the command $ para ./ppms/samplememo_02.ppm 0 samplememo_02.png on a twelve-core, twenty-four-thread Ryzen 9 processor, para took an average of 1.875619 milliseconds, while ppm-parser took an average of 358.2232 milliseconds.

Rust versus Python isn't very fair, however, this benchmark shows the speed improvements that para brings to the table.

Things To Come

  • Support for other formats (namely .kwz)
  • Optimizations here and there
  • Friendlier CLI
  • Possible GUI

Getting up and Running

Installation

Install from crates.io

cargo +nightly install para-cli --force

Download from releases

Prebuilt binaries for x86_64-based Linux systems are available in the releases. If you are using a different operating system or architecture such as macOS or Windows; you'll have to build and install Para yourself!

Install from self-compile

cargo +nightly install --git https://github.com/Fuwn/para --branch main

If you are building and installing yourself, you must have Rust installed!

Usage

usage:  para <in> <index option> <out>
index options:
        gif
        thumb
        dump
        integer(u16)

Examples

  • $ para ./example.ppm 23 example.png will output the twenty-fourth frame of example.ppm to example.png
  • $ para ./example.ppm thumb example.png will output the thumbnail of example.ppm to example.png
  • $ para ./example.ppm dump example.json will output the metadata of example.ppm to example.json
  • $ para ./example.ppm gif example.gif will output example.ppm to example.gif

Prebuilt Binaries

Prebuilt binaries for the latest release may or may not be found here.

Credits

  • jaames for completing PPM reverse-engineering and writing the original implementation.
  • bricklife, mirai-iro, harimau_tigris, and other members of the Japanese Flipnote community who started reverse-engineering the PPM format almost as soon as the app was released.
  • Midmad and WDLMaster for identifying the adpcm sound codec used.
  • steven and yellows8 for the PPM documentation on DSiBrew.
  • PBSDS for more PPM reverse-engineering, as well as writing hatenatools

License

MIT License

About

πŸ—ƒ Flipnote Studios .ppm Animation Format Decoder & Utility

Topics

Resources

License

Stars

Watchers

Forks

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy