Playlist and list files

The .lst and .pls formats used alongside Flipnote browsing.

Flipnote Studio's library uses list and playlist files in addition to PPM animations and UGO menus. The Flipnote Studio Docs wiki records .lst and .pls structures on SD card and in application savedata. A .lst names files; a .pls can carry full sdmc:/ or nand:/ paths. Their entries should not be confused with PPM frame offsets or the animation's own sound flags. [1]

The published description uses a newline-separated plaintext list before an XOR transform and a short checksum. A reader should check which folder or savedata list it is parsing, because the file's purpose and fixed size differ by location. [1]

When implementing a compatible service, treat these as their own response types, validate references before showing them and test the exact client screen that consumes each file. The local original-ROM guide maps the broader scanning and request paths, but does not claim every list variant is fully understood. [1][2]

Different paths, different record meanings

The community documentation describes .lst files as lists of filenames and .pls files as lists of full paths. Both SD storage and the DSi save contain lists. ROM research confirms several path and extension checks, but a single record layout has not been established for every kind of list. [1][2]

Typical local uses

Directory lists index Flipnotes in an SD folder; mark lists record sticker selections; recent lists point to recently edited work. A full path may begin with an SD or NAND namespace. These file roles are useful when reconstructing the library, but an absent or damaged list should not be mistaken for proof that the underlying PPM is absent. [1][2]

Integrity and padding

The published playlist description specifies an encoded list with a final 16-bit checksum, and fixed-length padding for some SD files. Validate the checksum and exact record length before trusting an entry. An implementation should separate parsing a list from opening and validating the PPM path it names. [1]

Known list files

WhereFilePurpose in the wiki
SD folderdirmemo2.lstFolder's Flipnote names; fixed 160,000 bytes
SD cardmark0.pls–mark3.plsFour sticker lists; 8,000 bytes each
SD cardrecent10.plsRecently edited notes; 4,000 bytes
System Memorynand.pls, latest1.pls, recent10.plsLibrary, newest note and recent list
System Memorymark0.pls–mark3.plsSticker groups
System Memoryremind.pls, friend.plsCalendar reminder and local sharing; exact semantics are not fully confirmed

The payload is a newline-terminated list ending with a null byte. SD copies add zero padding to a fixed length. The wiki describes a repeating 64-byte XOR key and a 16-bit check value taken from bytes 7 and 9 of the plaintext's MD5 digest. This obfuscates the file and checks its contents; it does not prove identity. Before decoding a list, identify its location and fixed length, then check the decoded paths before opening files. [3]

F7 4C 6A 3A FB 82 A6 37 6E 11 38 CF A0 DD 85 C0
C7 9B C4 D8 DD 28 8A 87 53 20 EE E0 0B EB 43 A0
DB 55 0F 75 36 37 EB 35 6A 34 7F B5 0F 99 F7 EF
43 25 CE A0 29 46 D9 D4 4D BB 04 66 68 08 F1 F8

The wording “7th and 9th bytes” is ordinal in the wiki and does not say which digest byte becomes the low half of the checksum. Check both order and index convention against a known list before writing one. [3]

Paths and list contents

Unlike filename-only .lst records, .pls entries are complete paths beginning with sdmc:/ or nand:/. The documented path limit is 256 bytes, not 256 displayed characters. The recent list specifically holds the ten most recently edited Flipnotes. [1]

LocationFileRecorded purposeDocumented length
SD, each Flipnote folderdirmemo2.lstIndex of filenames in that folder160,000 bytes
SDmark0.pls, mark1.pls, mark2.pls, mark3.plsFour sticker selections8,000 bytes for each file
SDrecent10.plsTen most recently edited Flipnotes4,000 bytes
System Memorynand.plsAll Flipnotes saved to System MemoryNot specified by this page
System Memorymark0.pls, mark1.pls, mark2.pls, mark3.plsFour sticker selectionsNot specified by this page
System Memoryrecent10.plsTen most recently edited FlipnotesNot specified by this page
System Memorylatest1.plsThe single most recently edited FlipnoteNot specified by this page
System Memoryremind.plsPossibly tracks calendar Flipnotes; not confirmedNot specified by this page
System Memoryfriend.plsPeople involved in local-wireless sharing; unusual record semantics remain unexplainedNot specified by this page

The plaintext ending is two consecutive bytes, 0A 00: a final line-feed followed by a null byte. The list itself is described as plaintext, so this ending does not imply UTF-16 encoding. The source also describes the repeating XOR transformation and a following 16-bit checksum. It lacks the byte examples needed to confirm every fixed-size padding boundary and checksum-index convention. Use a verified sample alongside the XOR-key and checksum notes when writing these files. [1]

Sources

  1. [1] Flipnote Studio Docs — .pls and .lst files
  2. [2] Flipnote Decompilation Project — Saving, loading and library indexing
  3. [3] Flipnote Studio Docs wiki — .pls and .lst files

← All documentation