Saturday, March 28, 2015

Chrono Trigger DS: They Can't All Be Personal Bests

I, uh... don't quite know what happened here.


Other than my standard scapegoat of "miscellaneous terrain snags", of which there were a few, I actually thought things went pretty well.  Got the battle skip just before Yakra, knocked out the guards in the castle, and didn't trigger any unnecessary battles.  So... yeah.  There's always next time, I guess.

Tuesday, March 24, 2015

Chocolate Toast Crunch and French Toast Crunch

It's a two-for-one deal!  Both of these popped up in stores recently, and I haven't done a food review in a while, so...  here goes nothing.

Chocolate Toast Crunch

Basically, if you took Cocoa Puffs and flattened them out to look like Cinnamon Toast Crunch, you'd end up with this.  It even gives you chocolate milk to drink from the bowl when you're done.  They claim there's cinnamon in there, but I didn't really taste it.  To be honest, it wasn't a huge disappointment that I couldn't taste it, because this one is all about the chocolate, and boy does it ever deliver on that front.

The verdict: It's pretty good.  Get yourself some while it lasts.

French Toast Crunch

The front of the box somewhat loudly claims "You asked, it's back!".  Who asked?  It existed before?  [citation needed]

The cereal is shaped like little pieces of bread, complete with the edges colored to look like crust.  Honestly, it looks like a smaller, crunchy version of french toast, but that's about where the comparison stops.  It's made out of corn, and there's no eggs.  Last I checked, the definition of french toast was regular bread, dipped in eggs and then cooked on a griddle.  It also claims to have syrup, and while there is kind of a syrupy flavor, it tastes nothing like maple syrup.  Once again, they say there's cinnamon in there, but I didn't notice it.

The verdict: It tastes good, but it's not really french toast in any sense of the term.  I most likely won't be getting any more boxes.

Monday, March 23, 2015

Chrono Trigger DS: Still Improving

So, the latest batch of optimizations gave me this run.  It's not as fast as it could have been, but I can work through it, right?

Thanks LiveSplit config, for making my "best segments" layout
component just show my current split times.  Thanks a lot.
The optimizations are as follows:
  • Holding A on the world map to instantly enter locations
  • Using Lightning 2 instead of Luminaire with Crono
    • This makes the Guardian + Bits fight take a hit from Lucca to seal the deal, but it's still faster
  • Using Lightning 2 on the 5 random Acids/Alkalines instead of regular attacks
  • Basically not switching Crono to Luminaire until the Spekkio fight, where we can do it without time penalty while Lucca and Robo are taking their turns.
Overall, I felt pretty good about that run.  Didn't I say I'd never beat my previous time?  Anyway.

The two green splits in there indicate that while I was still ahead on overall time, those splits were slower than my personal best time.  That's why my sum of best is no longer the same as my fastest run.  I don't know why the Dragon Tank and Spekkio splits don't show the faster times under Best Segments, nothing I change in LiveSplit makes that happen.  In future runs, I'll just have the Sum of Best beneath my split times and that'll be it, because I don't feel like wrestling with LiveSplit's config.

I did, of course, trigger the stupid battle just before Yakra's room, as well as an accidental Alkaline battle in the Factory.  Other than that, nothing accidental happened of note.  Miscellaneous split-second terrain snags, etc.  I'll worry about them if they're still happening when I stop being able to improve so significantly with each run.

I'm really beginning to wonder how much of this is applicable to the SNES, where I never did get much faster than 51 minutes (in-game time, of course).  I know the new equipment from the DS version is helping me, but how much is it helping?

Sunday, March 22, 2015

Significantly Improved Powershell Variable Namespace Script

So a while back I posted about a script I wrote to help me namespace variables and functions I was using for testing stuff in PowerShell, to keep them suitably separate from all the default variables present in PowerShell's Variable: PSDrive.

Well, since that post, I've significantly improved upon the script, enough so that it warrants a new post.  Also, rather than just copy/pasting the whole thing here, I've put it on pastebin.  I think that'll be my new policy for posting large sections of code that I've written, just to cut down on clutter here.  Plus, pastebin has syntax highlighting.  So there's that.

Anyway.  Pastebin link.  Right.

So, what's changed?

Well, it now acts more like a constructor.  Essentially, the script acts as a function, and returns the object it's created.  So now, rather than having to edit a few lines of code to change the name of the namespace, you can just assign the result of the script to a variable.  Do that in your profile script, and you're good to go.  Also, should you need the capability, you can now easily make more than one namespace.

As far as functionality, it's gained another member, _protected, which holds a bunch of stuff that the object uses internally.  Doing this removed the requirement for certain things to be hardcoded, making it easier to extend the whole thing.  This extra member is named like it is so that it hopefully won't collide with any names you actually want to use.

Also, I swapped the order of the arguments on the list() method, because it was backwards and that was bothering me.

Furthermore, there's now a giant documentation comment at the top, which means you can use Get-Help on the script and get all kinds of (hopefully) useful information.

Side note: Pastebin overzealously turned some strategically placed spaces in my indentation into tabs.  It even did it in the "raw paste data" box at the bottom.  Ugh.

Saturday, March 21, 2015

For extra nonsense, use this CSS!

In a fair number of my posts on this blog, I've put random comments in title attributes on certain text.  Either you can stop reading right now and go on a scavenger hunt, or you can use some variant of this CSS as a user style in your browser of choice: (this can be copied and pasted directly into Stylish if you use Firefox, in other browsers your mileage may vary)

@namespace url("http://www.w3.org/1999/xhtml"); @-moz-document domain("xt-8147.blogspot.com") { .post span[title] { border-bottom: 1px dashed #FFF !important; } }
Have fun!

Friday, March 20, 2015

Right under my damn nose

So, you may or may not recall that since I moved last, I was unable to locate my PS2's RCA A/V cable.  I had a perfectly good S-Video A/V cable, but no screen that took S-Video as an input without an adapter of one or another variety.

Yesterday, I had the genius idea to use a four-way system selector to just automatically convert S-Video to RCA video, which would solve my problems.  There so happened to be such a system selector in my dad's entertainment center, uselessly sitting there between the VCR we never use and the TV and audio receiver, with the VCR as the only thing plugged into it.  So, with a little backwards shuffling of the VCR to make cables reach, I hooked it up directly to everything and extracted my prize.

I proceeded to hook up everything, including the PS2.  Excited that I was going to get to play Guitar Hero once again, I opened the controller pocket on the travel case I have for my PS2, which also houses my memory cards.  There, sandwiched between the two controllers, I saw something.  It looked oddly like a set of red, white, and yellow RCA male plugs.

Yeah, so that happened.  The cable was in my damn PS2 travel case the entire fucking time.  Go me.

So, what does this mean?  Well, other than being able to play Guitar Hero again...
  • After finishing Chrono Trigger DS, and the Bravely Default SCIENCE!, I can finally get to the last half of Project 'Bout Fuckin' Time and play me some Final Fantasy 4.
  • After that, I can finally play through Chrono Cross.  A long time ago, in a galaxy far, far away, I played through a significant portion of the first disc, then for whatever reason I set it down and didn't come back to it.  Now that I've completely forgotten where I was and what I was doing, I'm just going to start the story over again.
  • And then, who knows what?  I'm hoping I can entice some friends into playing Melty Blood or Fate/Unlimited Codes at some point (or maybe even Garou: Mark of the Wolves or The Rumble Fish).  I'm not particularly amazing at fighting games in general, and usually play troll strategies with no real regard as to whether or not I win.  This works well considering I have friends who, just like me, aren't tourneyfags.  Thus, using mainly strings of basic attacks and the occasional special move or super is quite appropriate.

Wednesday, March 18, 2015

Chrono Trigger DS: Holy crap this Spekkio run

Take a look at this.  TAKE A FUCKING LOOK AT THIS.


Man, I'm never gonna beat that.  Knocked out both guards in the prison escape.  Still missed the battle skip just before Yakra (it's pixel-perfect, to be fair).  Everything else was nigh-on perfect.  I knew I could save time over my previous run, but... this much?  Seriously?

I mean, there's plenty of little fiddly bits I can optimize.  Things like my battle speed setting, and figuring out faster ways of getting through the few fights I actually fight.  But those optimizations are only going to save a handful of seconds.  I'm predicting that a 47:30 is about optimal for this glitchless run.

I may try my hand at the glitched version of this run, once I finish the stat maxing that I'm doing.  I don't think the fade-out menu glitch even works on the DS version, so it'll be on SNES.

Sunday, March 15, 2015

STOP DOING THIS

The continued mislabelling of images with edited-in captions using the Impact font as "memes" astounds me.

The correct term is "image macro".

Source: I used to be a /b/tard, and know what a meme actually is.

Friday, March 13, 2015

Chrono Trigger DS: Timing Myself with LiveSplit

LiveSplit is a timer for speedrunners that lets you break up your run into sections, or "splits", so you can compare runs and track your record and whatnot.  Its highly customizable interface, devoid of window manager decorations, is mostly designed for livestreamers; but there's absolutely nothing preventing it from being used just for personal tracking, as I'm doing.

You can set graphics for the game title and each split, and these show up in your layout.  This is totally optional, but really neat.  I went on some sprite-ripping websites and grabbed the sprites for the various things I needed to decorate the layout for my Spekkio run.

The difference between in-game time, that I've been using up until now, and real time, is noticeable in longer runs.  The in-game clock turns off for certain things, including but not limited to the jet bike race in Lab 32.  It also doesn't show precision below the minute level, so you can't tell if the 0:50 you just got is a low 0:50 that could have been a 0:49, or a high 0:50 that's closer to 0:51.  You have to get out a stopwatch and time from when you bring up the menu to when it changes, and that's just silly.

So basically, from now on, I'm using real time to time my runs.  Speaking of that, here's my very first run timed in real time.  I'm splitting on the last damage number in each fight (only Dragon Tank and Spekkio take multiple hits lol), except for Spekkio, I'm splitting when the victory pose happens since I haven't gotten the hang of counting HP yet.


The run had a few issues.  Didn't get the pixel-perfect battle skip just before Yakra.  I accidentally triggered Johnny's introduction of XR-RX, the scorekeeping robot for the jet bike race.  I also accidentally mashed A instead of X on the 5 random acids/alkalines fight for my second set of turns, which meant Robo used Shock.  Also accidentally triggered the second fight in Proto Dome.  And as always, miscellaneous terrain snags.  The in-game timer, which I always look at when I save after the fight, said 0:49, but I went to the menu and shortly thereafter it changd to 0:50.  We don't care about in-game time anymore, but since I've used it for all my previous runs, it's still a semi-relevant comparison to make.  It's also interesting that for this run, it's off by less than a minute.

Overall, 49:22 isn't too bad for this run, considering I've done it a lot, and I'm doing it without the fade out menu glitch and the save anywhere glitch.  I am, however, using instant escape, as well as running around Spekkio's room.  I was expecting the real time to be significantly longer than the in-game clock.  I'm beginning to wonder if I could break my old in-game time record of 0:51 on SNES/PS1.  Also, I have another few layout elements that I'll be using after this run, for showing best segments and sum of best.  They were irrelevant for this run, so I left them out.

Tuesday, March 10, 2015

F2P Pokemon Nonsense

I've never been massively into Pokemon.  I'm dating myself here, but Red/Blue came out in the US when I was in high school.  I've played some of Blue via an emulator, but never really got very far.

This is only relevant because I got a spotpass about Pokemon Shuffle, which is a free to play Pokemon puzzle game.  Being that it's free, I decided to check it out.  I know, F2P games are designed such that they're almost unplayable without burning a hole in your pocket, but... whatever.

So, yeah.  Like I said, it's a puzzle game.  You encounter wild Pokemon that you want to catch, and to weaken them, you have to match up three or more Pokemon in a grid to deal damage.  It also gives an extra bonus for plus shapes and L shapes.  Getting combos going adds extra damage.  You have a certain number of turns available to weaken the Pokemon.  Once you do, you have to catch it.  Your chance of catching it depends on how well you did on the puzzle, and how many turns you didn't use.

What makes it neat is that you can use the Pokemon you've already caught to help deal damage.  Each one has a special move that will trigger at some point during the fight, depending on what the move actually is.  For instance, the Squirtle I got has Power of 4, and deals extra damage if I match up four of it.  Types also matter, so people who're massively into Pokemon will be correct in instinctively taking the correct type to exploit type weaknesses.  I don't really know any of that besides the obvious, and thankfully, to make the game accessible to people like me, there's an "Optimize" button that sets your Pokemon up as well as it possibly can for the one you're about to go up against.  It helpfully labels Pokemon that will be at an advantage or disadvantage with up or down arrows, respectively.  There are also other gameplay mechanics that pop up every now and then, such as Pokemon that will put rocks in your puzzle field that you have to make a match next to in order to get rid of them.

Being a free to play game, it limits your gameplay so it can charge you real money to exceed that limit.  You have hearts that control how many puzzles you can attempt.  Each puzzle takes one heart, and you get a heart every half hour or so.  Thankfully, this clock ticks in real time even if the game isn't running.  It's got the standard F2P two-currency system, whereby one currency is obtained by playing the game and things cost a ton in that currency, so saving as much of it as you can is critical, and then it has the other currency that you get some of "as a gift" and then the rest you have to purchase with real money.  You can use this paid currency to buy more hearts, as well as buying the free currency in bulk (the options are 3000, 10000, 22000, and 48000, and of course 48000 is the most expensive and also the best deal).  The free currency can be used in lower quantities to buy per-puzzle bonuses for things like an experience booster for your Pokemon, to extra turns (which don't make the Pokemon easier to catch, it's just extra turns to solve the puzzle).  I haven't gotten far enough into the game to "check in with the server", so I don't know how much the paid currency actually costs.

Also, don't bother turning on the stereoscopic 3D on your 3DS, because the game doesn't use it.  As far as controls go, it's entirely touchscreen-driven.  None of the actual physical buttons or directional inputs on the 3DS do anything.  As someone who generally prefers the physical buttons, I find this kind of annoying.

The game has streetpass functionality, but I have yet to get a streetpass with data for it since downloading it, so I can't comment on that.

Overall, if you treat it like a game that's meant to be played in small sittings and ignore the real-money transaction aspect of the game, it's a fun but short diversion.  If you actually spend money in games like this, then you're a bad person because you encourage making more games like this.

Edit for Completeness

Okay, so I beat enough stages and unlocked the ability to "check in".  Basically, it opens up a special area with a bunch of limited-time challenge stages.  Beat the stage, get a chance to capture the Pokemon.  Also, every tenth stage gives you a Mega Stone for one of your Pokemon, so it can Mega Evolve.  The Mega Evolutions here have extra powerful abilities.  The very first one, on Mega Audino, takes out all Pokemon adjacent to the ones involved in the match.  You have to charge it up by matching Audinos a few times.  Also, Eevee (and probably other Pokemon) have the ability to increase the Mega Evolution gauge when they're matched, so you can work them into your combos for faster Mega Evolutions.

Also, one of the options is to enter a passcode.  I guess these are just being given out at random or something.  There's only one out right now, 20150007, and it gives you two Mega Starts, which when used before a stage will start your Pokemon that can Mega Evolve off in its Mega Evolution.

Another option is the Client Number, which is just a unique identifier that you need to use should you ever contact customer service regarding the game. Okay, fine.

So, the burning question... how much are the real money transactions?  Well, I'm not going to serve as an advertisement for them, because I don't like the practice.  However, you would be correct in assuming that the most expensive jewel purchase also stretches your money the farthest.  Curiously, you can also enter a download code, so maybe there will be codes at some point that just give you jewels.  Who knows.

Tuesday, March 3, 2015

Flower Town Progress Tracker

I may or may not have mentioned this a while back, but I wrote a small PHP/SQL application to keep track of what I'd done in Flower Town, since I found the game's journal to be inadequate for presenting me with the kind of information I wanted to see.

Well, after what feels like forever since I finished Flower Town, I remembered about the application I wrote, modified it slightly to make it suitable for distribution, and packaged it on up.

Within the archive you'll find an extremely rough around the edges PHP script and set of MySQL tables.  The important thing, however, is that when combined on a server with Apache, mod_rewrite, PHP, and MySQL installed, they'll work together to let you track your progress in Flower Town.

Unfortunately, it isn't multi-user.  I wanted to make it multi-user, but writing the login system was taking time away from writing the actual application itself, so I hastily made it single-user with basic HTTP authentication.

Anyway, you're either begging for the link, or going "what a nerd, writing this nonsense to track progress in a streetpass game".  If you're of the latter disposition, GTFO.  If you're of the former disposition, however, here you go.  Enjoy.

Note: if the sentence above that mentioned the requirement for an Apache web server with mod_rewrite, PHP, and MySQL installed didn't catch your attention, then perhaps this will: This wasn't designed with the average user in mind.  It was designed by me, for me, on my already pre-configured server.  If the setup process seems like too much for you, then it probably is.  Unless of course you're looking for a learning experience in this sort of thing, in which case, go right ahead!

Edit (2016-03-03): Immediately upon resetting it so I could track progress on my second system, I noticed that it was full of bugs relating to there being either nothing or very little in the database.  I've fixed those on my own copy (not on the download above), but I'm adding some more features and will do a new post once the super shiny version 2.0 is ready for release.  Because, despite what I believed at the time, the version I released in this post wasn't actually ready for release...

What new features?  Well... that's just going to have to be a surprise.  I'll guarantee one thing: they'll be useful.