Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

MSPA-3DS: Difference between revisions

From GameBrew
Created page with "{{Infobox 3DS Homebrews |title=MSPA-3DS |image=MSPA3DS.png |description=A Homestuck (and in the future, other MSPA's) reader for the 3DS. |author=Animalino5 |lastupdated=2026/06/27 |type=Other Apps |version=0.5.0 |license=N/A |download=https://github.com/Animalino5/MSPA-3DS/releases |website=https://github.com/Animalino5/MSPA-3DS |source=https://github.com/Animalino5/MSPA-3DS }}<!--MSPA3DS.7z--> A Homestuck (and other MSPA comics) reader for the Nintendo 3DS. It lets you..."
 
No edit summary
 
(5 intermediate revisions by 2 users not shown)
Line 6: Line 6:
|lastupdated=2026/06/27
|lastupdated=2026/06/27
|type=Other Apps
|type=Other Apps
|version=0.5.0
|version=1.0.0
|license=N/A
|license=N/A
|download=https://github.com/Animalino5/MSPA-3DS/releases
|download=https://github.com/Animalino5/MSPA-3DS/releases
Line 12: Line 12:
|source=https://github.com/Animalino5/MSPA-3DS
|source=https://github.com/Animalino5/MSPA-3DS
}}<!--MSPA3DS.7z-->
}}<!--MSPA3DS.7z-->
A Homestuck (and other MSPA comics) reader for the Nintendo 3DS. It lets you read MS Paint Adventures webcomics on your 3DS.  
A Homestuck (and other MSPA comics) reader for the Nintendo 3DS. It lets you read MS Paint Adventures webcomics on your 3DS.


Comes with a companion PC tool that downloads and pre-converts comic pages into a format the 3DS can display instantly. No internet connection needed on the console itself.
It comes with a companion PC tool that downloads and pre-converts comic pages into a format the 3DS can display instantly. No internet connection needed on the console itself.


'''Fully Supported Comics:'''
'''Fully Supported Comics:'''
* Jailbreak
* Jailbreak
* Problem Sleuth
* Problem Sleuth
* Homestuck (all pages including <code>[S]</code> animations)


'''Incomplete Comics:'''
'''Also supported:'''
* Homestuck
* Any MSPFA (MS Paint Fan Adventures) story via <code>mspfa.com</code>


== Installation ==
== Installation ==
'''What you need:'''
=== 3DS app ===
* A hacked 3DS with homebrew access (CFW + Luma3DS recommended)
Download <code>MSPA-3DS.3dsx</code> from the latest release.
* Python 3.8+ + ffmpeg to run the bundle builder on your PC
* An SD card with enough space (The entire ACT 1 of homestuck is around 1GB)


'''Instructions:'''
Copy <code>MSPA-3DS.3dsx</code> to <code>/3ds/MSPA-3DS/</code> on your SD card.
* Run the included Python GUI tool.
 
* Enter a comic URL or slug (e.g. <code>homestuck</code>, <code>jailbreak</code>, or a full URL).
=== Bundle builder (PC) ===
'''Option 1. Standalone EXE:'''  
 
Download <code>MSPA-3DS-Builder.exe</code> from the latest release and run it, it's a standalone executable, no Python needed.
 
'''Option 2. Run from source:'''
 
Requirements:
* Python 3.8+
* <code>pip install requests beautifulsoup4 Pillow yt-dlp</code>
* ffmpeg (required for video/audio conversion — install via your package manager)
* Java (required for SWF/Flash conversion — install JRE 11+)
* yt-dlp (for YouTube videos — installed via pip above)
* FFDec is auto-downloaded on first run, no manual install needed
 
Run <code>python build_gui.py</code>.
 
'''Using the bundle builder:'''
* Pick a source tab (MSPA Mirror or MSPFA).
* Enter a URL, slug, or story ID.
* Set the page range and pack name.
* Set the page range and pack name.
* Click "Build Bundle".
* Click Build Bundle.
* Copy the output folder to sdmc:/3ds/MSPA-3DS/packs/ on your SD card.
* Copy the generated folder to your 3DS SD card.
* Copy MSPA-3DS.3dsx to sdmc:/3ds/ on your SD card.
 
The builder handles everything:
* Downloads pages and images from the MSPA mirror or MSPFA's JSON API.
* Converts GIFs and images to 3DS-native <code>.tex</code> textures for instant loading.
* Extracts <code>[S]</code> page Flash animations via FFDec → frame sequences at 6 FPS with WAV audio.
* Downloads YouTube videos from MSPFA pages via yt-dlp → frame sequences.
* Downloads direct video files (MP4/WebM) from MSPFA pages → frame sequences.
* Extracts and resamples audio to 44100Hz stereo WAV for 3DS playback.
* Splits multi-image pages into separate navigable pages.


'''File format notes:'''
=== Transferring bundles to 3DS ===
* .tex - 3DS GPU texture (format 0x80 = untiled RGBA, format 0x00 = GPU-tiled)
After building a pack, copy its folder to: <code>sdmc:/3ds/MSPA-3DS/packs/</code>
* .anim - Animation manifest: frame count + per-frame delays (ms)
 
* .wav - PCM audio for <code>[S]</code> pages
The folder structure looks like:
* .gif - Original GIF (fallback for on-device conversion)
<pre>
* .mpg - Legacy video format (no longer used — frame sequences replace these)
packs/
  homestuck-1-100/
    manifest.json
    bookmark.txt
    pages/
      190100.json
      190200.json
      ...
    media/
      001901_0-000.tex
      001901_0.anim
      001901.wav
      001902_0.gif
      001902_0-000.tex
      ...
</pre>
 
=== File format notes ===
* <code>.tex</code> - 3DS GPU texture (format 0x80 = untiled RGBA, format 0x00 = GPU-tiled)
* <code>.anim</code> - Animation manifest: frame count + per-frame delays (ms)
* <code>.wav</code> - PCM audio (44100Hz stereo) for <code>[S]</code> pages
* <code>.gif</code> - Original GIF (fallback for on-device conversion)
* <code>.json</code> - Page metadata (command, text, media references, next page)
* <code>manifest.json</code> - Pack metadata (title, page range, schema version)
* <code>bookmark.txt</code> - Last-read page number (auto-generated by 3DS app)


== User guide ==
== User guide ==
Line 49: Line 99:
Browse your installed packs from the main menu.
Browse your installed packs from the main menu.


Navigate with A (next page), B (previous page), X (back to menu).
Navigate with A (next page), B (previous page), X (back to menu).


Animated GIFs play automatically as frame sequences.
Animated GIFs play automatically as frame sequences.


<code>[S]</code> pages play as animations with audio.
<code>[S]</code> pages play as animations with audio.
 
Scroll text on the bottom screen with D-Pad Up/Down.
 
Each pack remembers where you left off and resumes from the last-read page.


Scroll text on the bottom screen with D-Pad Up/Down.
== Media type support ==
'''MSPA Mirror (MSPA To Go):'''
 
* Static images (GIF/PNG/JPEG) → converted to <code>.tex</code> textures
* Flash <code>[S]</code> pages → SWF extracted via FFDec → frame sequences at 6 FPS + WAV audio
* Multi-image pages → split into separate sub-pages
 
'''MSPFA (fan adventures):'''
* <code>[img]</code> tags → converted to <code>.tex</code> textures
* <code>[flash]</code> tags → SWF extracted via FFDec → frame sequences
* YouTube embeds (<code>&lt;iframe&gt;</code>) → downloaded via yt-dlp → frame sequences
* Direct video (<code>&lt;video&gt;</code> tags, MP4/WebM) → downloaded and converted via ffmpeg
* <code>@mspfa audio</code> CSS → audio downloaded and resampled to WAV


== Controls ==
== Controls ==
Line 63: Line 129:


X - Return to pack selection
X - Return to pack selection
START - Exit app


D-Pad Up/Down - Scroll text
D-Pad Up/Down - Scroll text


== Limitations ==
== Limitations ==
* <code>[S]</code> pages are converted to 6 FPS frame sequences. smooth but not full video quality
* <code>[S]</code> pages are converted to 6 FPS frame sequences. Smooth but not full video quality.
* Audio for <code>[S]</code> pages is extracted from the video file; some pages may have audio sync issues
* Interactive Flash pages (with ActionScript games) may not convert correctly. FFDec can only extract timeline animations, not interactive content.
* No internet connectivity from the 3DS. all content must be pre-built on PC
* Audio for <code>[S]</code> pages is extracted from the source; some pages may have audio sync issues.
* Very long animations may use significant SD card space
* No internet connectivity from the 3DS. all content must be pre-built on PC.
* Very long animations may use significant SD card space (~1MB per 10 seconds at 6 FPS).


== Changelog ==
== Changelog ==
'''v1.0.0'''
* What's new in v1.0.0
** MSPFA support -- build packs from any fan adventure on mspfa.com via the JSON API
** SWF conversion -- <code>[S]</code> page Flash animations are automatically extracted to frame sequences using JPEXS FFDec (auto-downloaded on first run)
** YouTube support -- MSPFA pages with YouTube embeds are automatically downloaded via yt-dlp
** Direct video support -- MSPFA pages with <code><video></code> tags (MP4/WebM) are downloaded and converted
** Per-pack bookmarks -- the 3DS app remembers where you left off in each pack individually
** Auto-downloaded FFDec -- no manual installation needed, the builder fetches it from GitHub
** Two-column builder GUI -- compact layout that fits on smaller screens
** Builder EXE -- for those who hate python!
'''v0.5.0'''
'''v0.5.0'''
* What works
* What works

Latest revision as of 05:56, 28 June 2026

MSPA-3DS
General
AuthorAnimalino5
TypeOther Apps
Version1.0.0
LicenseN/A
Last Updated2026/06/27
Links
Download
Website
Source

A Homestuck (and other MSPA comics) reader for the Nintendo 3DS. It lets you read MS Paint Adventures webcomics on your 3DS.

It comes with a companion PC tool that downloads and pre-converts comic pages into a format the 3DS can display instantly. No internet connection needed on the console itself.

Fully Supported Comics:

  • Jailbreak
  • Problem Sleuth
  • Homestuck (all pages including [S] animations)

Also supported:

  • Any MSPFA (MS Paint Fan Adventures) story via mspfa.com

Installation

3DS app

Download MSPA-3DS.3dsx from the latest release.

Copy MSPA-3DS.3dsx to /3ds/MSPA-3DS/ on your SD card.

Bundle builder (PC)

Option 1. Standalone EXE:

Download MSPA-3DS-Builder.exe from the latest release and run it, it's a standalone executable, no Python needed.

Option 2. Run from source:

Requirements:

  • Python 3.8+
  • pip install requests beautifulsoup4 Pillow yt-dlp
  • ffmpeg (required for video/audio conversion — install via your package manager)
  • Java (required for SWF/Flash conversion — install JRE 11+)
  • yt-dlp (for YouTube videos — installed via pip above)
  • FFDec is auto-downloaded on first run, no manual install needed

Run python build_gui.py.

Using the bundle builder:

  • Pick a source tab (MSPA Mirror or MSPFA).
  • Enter a URL, slug, or story ID.
  • Set the page range and pack name.
  • Click Build Bundle.
  • Copy the generated folder to your 3DS SD card.

The builder handles everything:

  • Downloads pages and images from the MSPA mirror or MSPFA's JSON API.
  • Converts GIFs and images to 3DS-native .tex textures for instant loading.
  • Extracts [S] page Flash animations via FFDec → frame sequences at 6 FPS with WAV audio.
  • Downloads YouTube videos from MSPFA pages via yt-dlp → frame sequences.
  • Downloads direct video files (MP4/WebM) from MSPFA pages → frame sequences.
  • Extracts and resamples audio to 44100Hz stereo WAV for 3DS playback.
  • Splits multi-image pages into separate navigable pages.

Transferring bundles to 3DS

After building a pack, copy its folder to: sdmc:/3ds/MSPA-3DS/packs/

The folder structure looks like:

packs/
  homestuck-1-100/
    manifest.json
    bookmark.txt
    pages/
      190100.json
      190200.json
      ...
    media/
      001901_0-000.tex
      001901_0.anim
      001901.wav
      001902_0.gif
      001902_0-000.tex
      ...

File format notes

  • .tex - 3DS GPU texture (format 0x80 = untiled RGBA, format 0x00 = GPU-tiled)
  • .anim - Animation manifest: frame count + per-frame delays (ms)
  • .wav - PCM audio (44100Hz stereo) for [S] pages
  • .gif - Original GIF (fallback for on-device conversion)
  • .json - Page metadata (command, text, media references, next page)
  • manifest.json - Pack metadata (title, page range, schema version)
  • bookmark.txt - Last-read page number (auto-generated by 3DS app)

User guide

Run MSPA-3DS (reader) on the 3DS.

Browse your installed packs from the main menu.

Navigate with A (next page), B (previous page), X (back to menu).

Animated GIFs play automatically as frame sequences.

[S] pages play as animations with audio.

Scroll text on the bottom screen with D-Pad Up/Down.

Each pack remembers where you left off and resumes from the last-read page.

Media type support

MSPA Mirror (MSPA To Go):

  • Static images (GIF/PNG/JPEG) → converted to .tex textures
  • Flash [S] pages → SWF extracted via FFDec → frame sequences at 6 FPS + WAV audio
  • Multi-image pages → split into separate sub-pages

MSPFA (fan adventures):

  • [img] tags → converted to .tex textures
  • [flash] tags → SWF extracted via FFDec → frame sequences
  • YouTube embeds (<iframe>) → downloaded via yt-dlp → frame sequences
  • Direct video (<video> tags, MP4/WebM) → downloaded and converted via ffmpeg
  • @mspfa audio CSS → audio downloaded and resampled to WAV

Controls

A - Next page (or next image on multi-image pages)

B - Previous page

X - Return to pack selection

START - Exit app

D-Pad Up/Down - Scroll text

Limitations

  • [S] pages are converted to 6 FPS frame sequences. Smooth but not full video quality.
  • Interactive Flash pages (with ActionScript games) may not convert correctly. FFDec can only extract timeline animations, not interactive content.
  • Audio for [S] pages is extracted from the source; some pages may have audio sync issues.
  • No internet connectivity from the 3DS. all content must be pre-built on PC.
  • Very long animations may use significant SD card space (~1MB per 10 seconds at 6 FPS).

Changelog

v1.0.0

  • What's new in v1.0.0
    • MSPFA support -- build packs from any fan adventure on mspfa.com via the JSON API
    • SWF conversion -- [S] page Flash animations are automatically extracted to frame sequences using JPEXS FFDec (auto-downloaded on first run)
    • YouTube support -- MSPFA pages with YouTube embeds are automatically downloaded via yt-dlp
    • Direct video support -- MSPFA pages with <video> tags (MP4/WebM) are downloaded and converted
    • Per-pack bookmarks -- the 3DS app remembers where you left off in each pack individually
    • Auto-downloaded FFDec -- no manual installation needed, the builder fetches it from GitHub
    • Two-column builder GUI -- compact layout that fits on smaller screens
    • Builder EXE -- for those who hate python!

v0.5.0

  • What works
    • Full comic reading -- navigate pages with A/B, scroll text with D-pad
    • Animated GIFs -- pre-converted to frame sequences, play smoothly
    • pages -- converted to 6 FPS frame sequences with WAV audio
    • Multi-image pages -- automatically split into separate navigable pages
    • Multiple comics -- Homestuck, Jailbreak, and Problem Sleuth supported
    • Pack system -- each comic pack is a folder on SD, easy to add/remove
    • PC bundle builder -- GUI tool downloads, converts, and packages everything
  • Known issues
    • Audio quirks -- some [S] pages may have audio sync or playback issues
    • No Bard Quest -- excluded because it has branching paths (multiple "next" links per page) which the reader doesn't support
    • No Homestuck Beta -- excluded because it's flash-only with no static images
    • pages are 6 FPS -- smooth enough for reading, but not full video quality
    • Large [S] pages use more space -- frame sequences are bigger than video files (roughly 300KB/frame at 320x240)

v0.1.0

  • FEATURES PRESENT SO FAR:
    • You can read most homestuck pages
    • You have their gif showing up at the top screen
    • You can scroll down
    • You can teleport to whatever page you want
    • You can save your progress
  • LIMITATIONS SO FAR:
    • Pages with double images just render one
    • Flashes are not usable
    • Depending on gif complexity, FPS may fall
    • Pesterlogs aren't colored

External links

Advertising: