(Link to video)
Submission Text Full Submission Page
WARNING: The encode features a LOT of screen shaking. If you're sensitive to that sort of thing, DO NOT watch the video to avoid any potential health issues. Sorry about that, but I don't know how to change this.

Game objectives

  • Emulator used: BizHawk 2.8
  • Core: PokeMini (Libretro)
  • Genre: Puzzle
  • Aims to show what a Pokémon mini TAS looks like

Movie Comments

Hi there. This is a TAS of Pokémon Puzzle Collection for the Nintendo Pokémon mini. The Pokémon mini is an obscure, tiny handheld made by Nintendo in the early 2000s, and only featured a selection of small Pokémon related games. Pokémon Puzzle Collection is, as the name implies, a collection of various puzzle types featuring Pokémon characters. This TAS finishes all the levels in the "Shadow Puzzle" mode of the game.
Let's get to explaining the movie itself first. In this game, your inputs register at about 1/30th of a second as opposed to 1/60th. You have to wait for one frame before pressing another input. You can press multiple inputs in one frame, like pressing a D-Pad direction and the A/B button for 1 frame. After pressing the same input, for example, the A button, you have to wait 3 frames before the game registers another A press. At the final levels of the game, you sometimes have to wait 5 frames instead. I don't know why this happens.
Shadow Puzzle consists of fitting all the pieces into a sillouette of a Pokémon. You can grab/place a piece with A and move/select a piece with the D-pad. You can rotate a piece by pressing B, but only in a clock-wise orientation. After placing all the pieces correctly, you'll "catch" the Pokémon and it will be registered into your Pokémon mini Dex. There's 20 levels in Shadow Puzzle, and 80 levels total.
So basically, this TAS consists of optimal menuing and puzzle piece placement. There's not much else to it, and it is fairly simple and straightforward to optimize. Now I must admit I got stuck for nearly 2 hours trying to solve the last Jigglypuff puzzle when playing casually... Not my proudest gaming moment, to be honest.

Making of this TAS

OK, let's get slighly more serious. This TAS, as far as I'm aware, is the very first completed and optimized movie of a Pokémon mini game. Maybe I'm being dumb and didn't look far enough on Google or Nicovideo, but I believe I'm the first person to do something like this. I used the PokeMini Libretro core, which can be used on BizHawk thanks to it's experimental Libretro core support.
Let's talk about the TASing experience I had while making this movie. Now first of all, you MUST use TAStudio in order to record a movie properly. Using the regular recording movie option could potentially result in desyncs as it can just skip the date/time settings screen for some reason. I know TAStudio is basically the standard for recording movies these days, but I just wanted to get that out there. Using savestates works just fine. A/V recording also worked fine and I made an HD encode without too many issues either. Using TAStudio can get confusing at first since all inputs are labeled as "!", but after figuring out which input does what and setting up TAStudio properly it's not too bad. Now I couldn't test the reed switch, I dunno how can I use it within BH itself. That could bring up sync issues but I can't say for certain. Of course because this is a Libretro core, I can't use most tools offered by BH, like RAM Watch or other things like that, but it still got the job done. I wish I could remove the screen shaking though... I can't change any settings for this core due to it being a Libretro core running on BizHawk.
Of course, because I used a Libretro core to make this movie, this is probably not qualified for publication, but this was made to demonstrate just how stable this core is, a proof of concept, if you will. I believe, even in the state that this core is in, is stable and workable enough to make an optimized, finished TAS. Hopefully we'll get a proper PkMiNi core in the future. I do wish that some healthy discussion can be made in regards to this movie though, I really want to see what people think about this.

How to sync the movie

Syncing this movie is simple enough I feel. You just have to follow the tutorial here: https://tasvideos.org/Bizhawk/Libretro
If for some reason the new method doesn't work for you, back when I started testing this core a few years ago, I used the older, BizHawk 1.11.4 method of installing the cores, which means the folders/core organization for me went like this: bizhawk/Libretro/Cores/System/pokemini_libretro/pokemini_libretro.dll
You can get the latest nightly builds of the cores here: http://buildbot.libretro.com/nightly/windows/x86_64/latest/
I also made sure to include the Pokémon mini BIOS inside the Firmware folder, just for good measure. The movie consistently syncs for me, even after updating the core to the latest nightly build.
Here's the unedited movie file, because I couldn't submit that. I had to edit the header in order to submit this movie, so use this movie file instead to sync the movie: https://tasvideos.org/UserFiles/Info/637844343115451234

Other comments

I chose to TAS Shadow Puzzle simply due to it being the fastest and most technical mode in the game. An ideal TAS for this game would be a 100% TAS where all the modes are completed with all 80 mons caught and registered in the mini Dex.
If/when a proper PkMiNi core gets implemented into Hawk that's acceptable for publications, I can think of other games that have good TASing potential, such as Pokémon Race mini, Togepi's Great Adventure, and the homebrew game Psychic Seeds... maybe Shock Tetris too.
I made a GitHub request not too long ago for a proper Pokémon mini core for BizHawk: https://github.com/TASEmulators/BizHawk/issues/3162
Also before anyone even DARES to suggest using libTAS to TAS the emulator itself on Linux... NO. There's no way in heck I'll go through all that trouble just to TAS something from the frickin' pokémon mini. It's just not worth the effort for me and I don't even have the means to do all that anyways, so... no thank you.

Special Thanks

  • To the BizHawk dev team and PokeMini devs for making this TAS possible.
  • To the people at https://www.pokemon-mini.net/ for their various info about the Pokémon mini and the manual for this game.
  • To the people at https://serebii.net/ for showing all the solutions to the puzzles in this game.
  • To Uncle Derek from Stop Skeletons from Fighting for getting me into the Pokémon mini.
  • And to YOU, for watching and reading this dumb April Fools submission.

Samsara: oh crap i have to be professional for this one
Uh, okay, judging this potentially precedent-setting submission!
Samsara: The submission thread explains everything far better than I'd be able to, but here's a quick summary: Libretro is garbage. Okay, here's a more extended summary: Libretro's API makes it pretty much impossible to even parse the system correctly. This submission had to be edited in order to get through the parser, and even if the parser was able to recognize the system ID, it could only ever be "Libretro", which by itself should not be acceptable here. On top of that, Libretro cores may not be deterministic according to the submission text, and several of the cores are allegedly built off of stolen and outdated code. Any effort spent on supporting a Libretro core would simply be better spent on implementing a better core into BizHawk proper.
I think it's safe to say we won't be accepting Libretro core TASes here. Not at the current time, and probably not ever. I do hope this submission achieves its goal of helping a proper Pokemon Mini core get implemented into BizHawk, though!

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14897
Location: 127.0.0.1
Samsara
She/They
Senior Judge, Site Admin, Expert player (2122)
Joined: 11/13/2006
Posts: 2794
Location: Northern California
I'm seeing a lot of notable problems with Libretro cores just from reading the submission text. Even if they're relatively stable to TAS with on a basic level, there's a lot of major problems that I feel would need to be fixed in order to make Libretro acceptable. Namely:
  • The BK2 would need to be able to parse the correct system from it. Currently, the system ID for Libretro cores is just "Libretro". The site parser doesn't recognize this (this submission had to edit it to NES), and even if the parser was updated, it would still read as Libretro and not as the correct system. Obviously, this is unacceptable, because Libretro isn't a console. It's a dumpster fire.
  • Basic necessities such as RAM Search would have to work for the loaded core. Input isn't even properly recognized, trial and error is needed to figure that out in TAStudio, which according to the submission HAS to be used for TASing because there may be issues with determinism when TASing traditionally.
  • Core settings need to be changeable, once again for sync/determinism issues.
Any one of these things would be a dealbreaker for me by themselves, so all of them needing attention is pretty far beyond what I would want to reasonably allow. As far as I'm aware (please correct me if I'm wrong), each and every potential core would need individualized work done in order to work properly, and at that point it would almost certainly be easier and more stable to just implement the cores into BizHawk itself, rather than continue hacking together support for Libretro as a whole. I appreciate the effort put into making this run and testing out the Libretro functionality, though! It's just unfortunate that testing only went and proved it may never be stable enough for acceptance. Hopefully things can be synced over to a properly implemented Pokemon Mini core whenever that comes around.
TASvideos Admin and acting Senior Judge 💙 | Cohost
warmCabin wrote:
You shouldn't need a degree in computer science to get into this hobby.
Emulator Coder, Judge, Experienced player (609)
Joined: 2/26/2020
Posts: 698
Location: California
Going to respond to a few points here.
The BK2 would need to be able to parse the correct system from it. Currently, the system ID for Libretro cores is just "Libretro". The site parser doesn't recognize this (this submission had to edit it to NES), and even if the parser was updated, it would still read as Libretro and not as the correct system. Obviously, this is unacceptable, because Libretro isn't a console. It's a dumpster fire.
Libretro API doesnt actually give any way to figure out the current system, hence "Libretro" system ID. So unless they make an actual good API having the correct system is practically impossible to do.
Basic necessities such as RAM Search would have to work for the loaded core. Input isn't even properly recognized, trial and error is needed to figure that out in TAStudio, which according to the submission HAS to be used for TASing because there may be issues with determinism when TASing traditionally.
RAM Search (and other RAM peeking/poking functionality) does work with Libretro cores under latest dev builds (surprisingly their API allows this to be "easily" done). I'm not sure about what's going on about TAStudio being needed, perhaps it's something with savestates being nondeterministic. Which probably isn't actually the fault of libretro per se but just this individual core (so likely the problem doesn't go away by simply porting the core individually into BizHawk if its native states are used, so probably needs waterboxing). Input showing up as ! is just nobody bothering to put mnemonics for them. Libretro input is only partially implemented in the first place so lol. It's easily fixable anyhow (I may just do that at some point, since it's more slightly tedious if anything).
Core settings need to be changeable, once again for sync/determinism issues.
Core settings also arent really determinism related as currently as they are implemented they are always set to the defaults. It's not really easy to fix as every Libretro core has different kinds of settings, and the Libretro core has to be init before those settings are revealed. Probably possible to work with but it's not exactly easy. tl;dr Libretro is shit and only there for casual play / experimentation tbh
Alyosha
He/Him
Editor, Expert player (3535)
Joined: 11/30/2014
Posts: 2732
Location: US
Interesting and novel submission, nice work. But that shaking makes it unwatchable to me. Is that in the emulator or just the encode?
Emulator Coder, Judge, Experienced player (609)
Joined: 2/26/2020
Posts: 698
Location: California
Alyosha wrote:
Interesting and novel submission, nice work. But that shaking makes it unwatchable to me. Is that in the emulator or just the encode?
That's the emulator. It seems to be related to rumble, as disabling rumble in the base emu makes it not do that. Since BizHawk just has RA cores use default settings, and by default rumble is enabled, seems to be no way to get rid of the shake without exposing settings to the user.
Spikestuff
They/Them
Editor, Publisher, Expert player (2305)
Joined: 10/12/2011
Posts: 6341
Location: The land down under.
Personally. I really, really, really, really, don't want to see the requirement of grabbing a LibRetro core for 2 reasons:
  1. LibRetro's history is complete and utter garbage when it comes to community, and other emulator developers as they harass, and gaslighting the shit out of them. Recent example is with what the did to the DuckStation emu dev stenzek, which thankfully people did see the bullshit LibRetro was trying to pull there. tl;dr private code that stenzek made was ripped out and mummified into whatever trash PlayStation core LibRetro was "keeping up to date" (it isn't) in this case SwanStation which is an extremely out of date DuckStation-- (where have I heard "out of date" and PlayStation core before? Oh mednafen core!-- and Dolphin, and PCSX2, and PPSSPP) was porting for the umpteenth time which cause stenzek to suspend working on DuckStation for several months.
  2. LibRetro does have a habit of updating their cores-- every 5 years so the fact that we would not to self host a specific version of the Pokemon Mini instead of doing probably the better option of porting the actual source code to Hawk than having a reliance on something "unstable".
On a TAS related note, the shaking makes it unwatchable for me. >.> Abstained vote.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Experienced player (633)
Joined: 11/23/2013
Posts: 2208
Location: Guatemala
Samsara wrote:
I appreciate the effort put into making this run and testing out the Libretro functionality, though! It's just unfortunate that testing only went and proved it may never be stable enough for acceptance. Hopefully things can be synced over to a properly implemented Pokemon Mini core whenever that comes around.
To tell you the truth, the main reason I made this is to hopefully spark some interest into someone to at least consider porting a proper Pokémon mini core in BizHawk haha... I understood from the start that this concept of submitting a Libretro core TAS is a no-go by the site, but at least it started a rather interesting discussion on the matter. By the way, I did make a github request for this to happen: https://github.com/TASEmulators/BizHawk/issues/3162
Here, my YouTube channel: http://www.youtube.com/user/dekutony
TASVideosGrue
They/Them
Joined: 10/1/2008
Posts: 2739
Location: The dark corners of the TASVideos server
om, nom, nom... sweet!