Project mobipeg - World's first OSS video encoder for Wii, 3DS, and DS Mobiclip Video

  • Thread starter Thread starter quatric
  • Start date Start date
  • Views Views 718
  • Replies Replies 4
  • Likes Likes 12

quatric

Member
Newcomer
Joined
May 28, 2026
Messages
8
Reaction score
24
Trophies
0
XP
64
Country
United States

1782705104514.png

mobipeg is a fork of FFmpeg with added support for encoding and decoding Nintendo MobiClip video formats. It uses a modified version of x264 for encoding and bundles a GUI tool for easy use.

Features
  • Allows encoding and decoding Mobiclip videos for Wii, 3DS, and DS
  • Allows ADPCM, FastAudio and PCM audio for Wii, 3DS, and DS (along with Vorbis for Wii)
  • Allows encoding 3D video for 3DS
  • Has a GUI for easy use to encode or decode videos, also can be used with CLI
  • Works on Windows, Mac, and Linux - no Mobiclip SDK needed, and no license needed
 
Last edited by quatric,
mobiclip v1.1 released

  • New format and codec support: Added encoders and decoders for VX (Actimagine/MobiclipDS video), RVID (Rocket Video), KWZ (Flipnote Studio 3D), PPM Flipnote, and THP (GameCube/Wii video). VX includes full CAVLC video codec, audio encoder/decoder, and both mux/demux.
  • MODS improvements: Extended MODS encoder/decoder with broader audio support; Codebook (SX/FastAudio-SX) audio is now fully decodable (previously errored).
  • ADPCM encoder: Major expansion of the ADPCM encoder (adpcmenc.c) with ~535 lines of new encoding logic.
  • encode.py / encode_gui.py: Added YCgCo inverse colorspace correction (fixes green/magenta cast on MODS/VX decode), auto-detection of YCgCo sources via ffprobe, per-format demuxer forcing (PPM, KWZ, THP, RVID), duration/FPS probing, and MOBICLIP_KEYINT_MAX cap (90 frames, matching retail Wii .mo cadence).
  • RVID tools: Added rvid.py, rvid_decode.py, and rvid_lz.c for standalone RVID unpacking with LZ compression
 
mobiclip v1.1 released

  • New format and codec support: Added encoders and decoders for VX (Actimagine/MobiclipDS video), RVID (Rocket Video), KWZ (Flipnote Studio 3D), PPM Flipnote, and THP (GameCube/Wii video). VX includes full CAVLC video codec, audio encoder/decoder, and both mux/demux.
  • MODS improvements: Extended MODS encoder/decoder with broader audio support; Codebook (SX/FastAudio-SX) audio is now fully decodable (previously errored).
  • ADPCM encoder: Major expansion of the ADPCM encoder (adpcmenc.c) with ~535 lines of new encoding logic.
  • encode.py / encode_gui.py: Added YCgCo inverse colorspace correction (fixes green/magenta cast on MODS/VX decode), auto-detection of YCgCo sources via ffprobe, per-format demuxer forcing (PPM, KWZ, THP, RVID), duration/FPS probing, and MOBICLIP_KEYINT_MAX cap (90 frames, matching retail Wii .mo cadence).
  • RVID tools: Added rvid.py, rvid_decode.py, and rvid_lz.c for standalone RVID unpacking with LZ compression
I tested this with replacing the Kirby Return to Dreamlands opening and it went smoothly!

There is some weird scaling issue but I think thats due to incorrect setting of Scale (I set it to 640x320, maybe I need to change it?)

I also tried doing the original cutscene by decoding and reencoding that, however that had another weird issue where the game hung at the end (metafortress? something else?) on top the incorrect scale

Overall though really great tool, and I wonder where this goes next!
 
I tested this with replacing the Kirby Return to Dreamlands opening and it went smoothly!

There is some weird scaling issue but I think thats due to incorrect setting of Scale (I set it to 640x320, maybe I need to change it?)

I also tried doing the original cutscene by decoding and reencoding that, however that had another weird issue where the game hung at the end (metafortress? something else?) on top the incorrect scale

Overall though really great tool, and I wonder where this goes next!

I'm not sure why it hung, but you will want to ensure you're using the same resolution that the cutscene uses. The VeggieTales clip with Bob the Tomato seems to be squished due to that

mobipeg v1.2 released

New format support

- Native FastVideoDS (.fv) demuxer/codec and TiVo Series 3 / TMF (.ty+/.tmf) support

GUI

- Replaced the 2-pass encode option with a single Highest Quality toggle, and made it interchangeable with the advanced quality fields

Build & tooling

- Dropped the FastVideo C# and s3tots binary dependencies in favor of native FFmpeg drivers

- Fixed compilation warnings/errors in fastaudio.c and fastvideo.c, and a codec-ID ordering bug breaking CI builds

- Fixed build-gui failures on linux-x86/armhf/arm64 and a windows-arm64 Vorbis pkg-config lookup issue with llvm-mingw

- Repo cleanup: stopped tracking __pycache__/bytecode and removed stray root mp4/x264 build artifacts

Docs

- Linked The Mobiclip Formats technical reference from the README
 
Last edited by quatric,
mobiclip v1.1 released

  • New format and codec support: Added encoders and decoders for VX (Actimagine/MobiclipDS video), RVID (Rocket Video), KWZ (Flipnote Studio 3D), PPM Flipnote, and THP (GameCube/Wii video). VX includes full CAVLC video codec, audio encoder/decoder, and both mux/demux.
  • MODS improvements: Extended MODS encoder/decoder with broader audio support; Codebook (SX/FastAudio-SX) audio is now fully decodable (previously errored).
  • ADPCM encoder: Major expansion of the ADPCM encoder (adpcmenc.c) with ~535 lines of new encoding logic.
  • encode.py / encode_gui.py: Added YCgCo inverse colorspace correction (fixes green/magenta cast on MODS/VX decode), auto-detection of YCgCo sources via ffprobe, per-format demuxer forcing (PPM, KWZ, THP, RVID), duration/FPS probing, and MOBICLIP_KEYINT_MAX cap (90 frames, matching retail Wii .mo cadence).
  • RVID tools: Added rvid.py, rvid_decode.py, and rvid_lz.c for standalone RVID unpacking with LZ compression
Sorry, I was wondering if you could help clear up a few questions I have... I tested the program to convert a video for a translation I'm working on, but the resulting Moflex file is slightly larger than the original and plays back a bit slower. Also, I got an error message once the encoding finished... What could be causing that?
 

Site & Scene News

Popular threads in this forum