Skip to content
This repository was archived by the owner on Oct 20, 2022. It is now read-only.
/ sudomemo-utils Public archive

Utilities for working with Flipnote Studio DSi's proprietary formats, using PHP + Python

License

Notifications You must be signed in to change notification settings

Sudomemo/sudomemo-utils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 

Repository files navigation

sudomemo-utils

A collection of misc. scripts for reading/writing Flipnote Studio DSi's proprietary formats. Created for Sudomemo.

Contents

PHP Classes

Python Scripts

  • ugoImage.py - converts to and from the .nbf, .npf and .ntft image formats.
  • ugoImageViewer.py - experimental native viewer for the image formats handled by ugoImage.py

class.ugomenu.php

Getting Started

<?php // import the ugomenu class: require("path/to/class.ugomenu.php"); // start a new ugomenu, for these examples, we'll create a generic "demo" menu: $demoMenu = new ugomenu;

Methods

setType

Use:

Set the menu type, from one of the values documented here.

Example:

// set the menu type to type 0 (the same as the 'index' menu) $demoMenu->setType("0");

setMeta

Use:

Set top screen text / background image by setting the equivalent meta-tag value, documented here.

Example:

// set the top screen title to "demo page": $demoMenu->setMeta("uppertitle", "demo page"); // set the top screen subtitle to "demo in progress": $demoMenu->setMeta("uppersubbottom", "demo in progress");

addDropdown

Use:

Add a dropdown option to the menu, like the "Recent Flipnotes" / "Most Popular" options on the "All Flipnotes" menu.

Example:

// create a dropdown option with the label "select me!" // when the user selects this option they will be navigated to www.example.com/path/to/page.htm $demoMenu->addDropdown([ "label" => "select me!", "url" => "http://www.example.com/path/to/page.htm" ]); // to set an item as the preselected option: $demoMenu->addDropdown([ "label" => "select me!", "url" => "http://www.example.com/path/to/page.htm", "selected" => "1" ]);

addButton

Use:

Add a button in the bottom-right corner of the screen, like the "Post Here" button on a channel menu.

Up to two of these can be used on the same menu.

Example:

// create a button with the label "tap me!": // when the user taps this button, they will be navigated to www.example.com/path/to/page.htm $demoMenu->addButton([ "label" => "tap me!", "url" => "http://www.example.com/path/to/page.htm" ]);

addItem

Use:

Add a menu item, or a thumbnail if using the grid layout type.

Built-in icon values are documented here.

Example:

// create a menu item with the label "tap me!": // when the user taps this item, they will be navigated to www.example.com/path/to/page.htm $demoMenu->addItem([ "label" => "tap me!", "url" => "http://www.example.com/path/to/page.htm", // use an internal icon value: "icon" => "104" ]); // create a menu item with a custom icon: $demoMenu->addItem([ "label" => "tap me!", "url" => "http://www.example.com/path/to/page.htm", // embed a custom ntft image and use it as the icon for this image: "file" => "/local/path/to/icon.ntft" ]); // or for a flipnote grid thumbnail: $demoMenu->addItem([ "url" => "http://www.example.com/path/to/page.htm", "file" => "/local/path/to/flipnote.ppm" ]); // you can also add a lock icon or counter to the item: // on Flipnote grid menus, the counter is used for the star count $demoMenu->addItem([ "label" => "tap me!", "url" => "http://www.example.com/path/to/page.htm", "icon" => "104", // add a lock: "lock" => "1", // add a counter: "counter" => "9999" ]);

getUGO

Use:

Build the ugomenu and return the data as a string, ready to send to the DSi client.

Example:

echo $demoMenu->getUGO();

class.ppmParser.php

Getting Started

<?php // import the ppmParser class: require("path/to/class.ppmParser.php"); // start a new parser instance: $ppm = new ppmParser; // open a PPM file for parsing: $ppm->open("path/to/flipnote.ppm");

Methods

isCorrupted

Use:

Does a simple "completeness" check on the PPM to check that all the data necessary is present in the file, acting as a safeguard against "corrupted" Flipnotes that got cut off on upload.

Returns 1 if the PPM is corrupted, else 0.

getMeta

Use:

Parses and returns the metadata for the open PPM file.

About

Utilities for working with Flipnote Studio DSi's proprietary formats, using PHP + Python

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •