17 OCT 2024 - Welcome Back to TorrentFunk! Get your pirate hat back out. Streaming is dying and torrents are the new trend. Account Registration works again and so do Torrent Uploads. We invite you all to start uploading torrents again!
TORRENT DETAILS
[XC] Pichu Bros In Party Panic! (Pokémon Channel) (GameCube X264 Multi-Audio Opus)
![logos.png](https://files.catbox.moe/1gcdov.png)
A special episode of the Pokémon anime only ever released within a GameCube game? Yeah.
Chunks of the episode and alternate audio tracks are unlocked by playing through the game, though with no subtitles for the Japanese tracks.
New English translations for both the primary Japanese track and the special Kasumi narration were provided by bluesun. I used [SOSSubs](https://nyaa.si/view/1820962)'s timing as a base.
In-game captions for the English dub extracted from the NA version with their original timing, and typeset to match. It's a faithful recreation of the in-game subs, 4-liners and all. Don't blame me.
Audio and song lyrics for all languages extracted from the EU version of the game.
Also included are Japanese and English audio tracks without sound effects during the ending segment.
Previous releases of this episode were all screen recorded or dumped through an emulator, with the exception of [#1387571](https://nyaa.si/view/1387571). That release was decoded from raw files.
Unfortunately, after replicating the process from the description and comparing it with the SDK's official player app, I found that the brightness gets messed up due to unnecessary RGB conversions in the third-party decoder. I made [a fork](https://github.com/po5/hvqm4) to output the decoded yuv420p to y4m, for accurate lossless dumps matching the SDK.
The HVQM4 video compression introduced ugly checkerboard blocking patterns that flash once per second, even in static scenes.
An [SRFormer](https://github.com/HVision-NKU/SRFormer) [1x model](https://files.catbox.moe/qe5ey0.onnx) was custom-trained to get rid of compression artifacts using contemporary high quality Pokémon episodes ran through the official hvqm4enc app.
The video was then further filtered with VapourSynth to deal with interlaced transitions, misaligned chroma, and other source issues.
**[Comparison screenshots](https://slow.pics/s/20ywRsnJ?canvas-mode=fit-height)**
Most of the special is animated like any other episode, but there is a minute and a half CGI segment near the end.
The game includes 8 different variants of it, a random one being picked on each viewing. Every major region (JP, NA, EU) has its own exclusive 8 variants.
This release is a multi-edition mkv, allowing you to switch between all 24 of these CGI variants. The default is variant 1 from the EU game.
If the video appears to be 58 minutes long, your player does not support mkv editions. The file is arranged so you can still watch the default edition normally, but you really should update to the latest mpv/VLC/MPC-HC.
NA segments were particularily nasty in the source with loads of ugly glitches left by bad deinterlacing. They have been fixed.
NA variant 2 inexplicably was 416px high instead of 448 like the rest, and had deinterlacing glitches spread across both fields. This was a giant pain in the ass, but I fixed it too.
AU version of the game didn't have any exclusive content.
Chapters match those of the original game, whereas previous releases made up their own chapters.
Audio tracks:
```
Japanese
Japanese (Hosted by Kasumi!)
Japanese (No Meowth's Party SFX)
English
English (No Meowth's Party SFX)
German
French
Castilian Spanish
Italian
```
Subtitle tracks:
```
English (Main narration)
English (Hosted by Kasumi!)
English (Dubtitles)
English (Songs)
German (Songs)
French (Songs)
Castilian Spanish (Songs)
Italian (Songs)
Japanese (Songs)
Romaji (Songs)
```
Editions:
```
Ending 1-8 (EU)
Ending 1-8 (JP)
Ending 1-8 (NA)
```
Thanks to these people:
bluesun for translating the two Japanese tracks
mbc for making the [original release](https://nyaa.si/view/1387571) that got me curious enough to try this
hcs, Nisto, bnnm for [vgmstream](https://github.com/vgmstream/vgmstream)'s [h4m audio decoder](https://hcs64.com/mboard/forumlong.php?showthread=20147)
March42 for sharing the [HVQM4 SDK](https://archive.org/details/GameCubeHVQM4)
flacs for the [h4m video decoder](https://github.com/Tilka/hvqm4)
LiVeR for unintentionally giving me the AI video model idea
---
In reverence to mbc's release, I've detailed my process below.
It's not worth reading.
gamecube decoding:
gather roms for Japan (+bonus disc), USA, Australia, Europe
extract h4m files using Dolphin
decode video with my custom h4m decoder, and all audio tracks with vgmstream
$ `h4m jp/Apart.h4m out/Apart.h4m-jp.y4m`
$ `vgmstream-cli -o out/Apart.h4m-jp_?s.wav -S 0 jp/Apart.h4m`
to save you the trouble [here are all the lossless decodes with audio muxed](https://drive.google.com/drive/folders/1k1dU42UYW0ir8BhoMnWbZ5viQCjTh0J1?usp=sharing)
ai preparation and training:
load yuv422p10 pokemon sources with vapoursynth, output to yuv444p8 (ffmpeg fucks up both the chroma quality and gamma if we let it do the conversion)
$ `vspipe ai_src.py - -c y4m -o 2 | ffmpeg -f yuv4mpegpipe -i - -c:v utvideo ai_src_3.mkv`
$ `ffmpeg -i ai_src_3.mkv -pix_fmt rgb32 -c:v rawvideo ai_src_3.avi`
this creates VFW (Video for Windows) compatible avi files that can be loaded into VirtualDub to split them into 2GB chunks because hvqm4enc has an input filesize limit
VirtualDub crashes on the last frame of splitting, so take the last piece and remux it into a proper avi with VirtualDub again
encode each chunk with a quality level above 200, point at which the compression introduces ugly checkerboard blocking patterns
$ `hvqm4enc.exe -q 210 ai_src_1.00.avi bad_ai_src_1.00.avi.h4m`
merge into a single h4m file
$ `CombHVQM4.exe -o bad_ai_src_1.h4m bad_ai_src_1.*.avi.h4m`
decode to y4m with my h4m-video-decoder fork
$ `h4m bad_ai_src_1.h4m bad_ai_src_1.y4m`
run through vapoursynth script to isolate interesting training data, dump HR/LR to png with vsfpng
split into tiles with [TileImages.py](https://github.com/Kim2091/helpful-scripts/blob/main/Image%20Tiling/TileImages.py)
$ `python TileImages.py -t 128 128 hr hr-sub`
train 1x SRFormer model using [traiNNer-redux-FJ](https://github.com/FlotingDream/traiNNer-redux-FJ)
$ `python train.py -opt options/train/SRFormer/1x_Pokemon_H4M_128.yml --auto_resume`
convert torch model to onnx with chaiNNer
filtering:
filter interlaced transitions, use [DPIR](https://github.com/cszn/DPIR) to repair chroma that got smudged across fields
run model in vapoursynth with [vs-mlrt](https://github.com/AmusementClub/vs-mlrt)'s generic inference function and TensorRT backend
use a model trained on a lower hvqm4enc quality level to patch up areas that have too much texture enhancement
stabilize details with [QTGMC](http://avisynth.nl/index.php/QTGMC) progressive mode
repair panning shots that have visible vertical desyncs (maybe from when they resized from 640x480 to 640x448?)
get rid of CGI segment's dotcrawl artifacts with [Dotzilla](https://openmodeldb.info/models/1x-Dotzilla-Compact)
slight denoise to cover up compression cycle resets
I'll try to publish vapoursynth scripts [on Github](https://github.com/po5/encoderino) eventually but right now my files are a huge mess
extracting in-game subs:
produce ffv1 frame dumps of each language through dolphin
sync videos, removing inconsistent load times between segments
extract timings with a rudimentary vapoursynth diff script
match styling and qc
packaging:
time all subtitles to a workraw with Apart, party000, party001-eu, Bpart joined together
sync no-SFX Japanese audio from NA and no-SFX English audio from JP to other regions with Audacity
add chapter at 00:00 of party000, party001 and Bpart raw decoded files, then append all with mkvtoolnix
add all subtitles to merged mkv, then split it by chapters to get reusable subtitles for each segment
add all audios and subtitles to filtered video segments
$ `mkvmerge -o party004-eu-audio-wnosfx.mkv ../out-y4m/unique/party004.h4m-eu.mkv party004.h4m-eu_1.wav party004.h4m-eu_2.wav party004.h4m-eu_3.wav party004.h4m-eu_4.wav party004.h4m-eu_5.wav party004.h4m-eu_6.wav party004.h4m-eu_7.wav ../out-vgm-nosfx/party004.h4m-eu_1.wav ../out-vgm-nosfx/party004.h4m-eu_2.wav party00x/*.ass`
add a chapter with the name of each file at 00:00 so I can easily keep track of timestamps later when making editions
swap out lossless video files with encoded videos
join all unique mkvs together
$ `mkvmerge -o full.mkv '[' *.mkv ']'`
transcode all audio to 192kbps opus
save as 29.97fps file with 4:3 resize tags
make into multi-edition mkv to allow switching between the different scenes, with multilingual chapter and edition titles
VISITOR COMMENTS (0 )
FILE LIST
Filename
Size
[XC] Pichu Bros. in Party Panic! (Pokémon Channel) (GameCube x264 Multi-Audio Opus).mkv