Saturday, August 23, 2014

Sunday, August 17, 2014

Media Playback Setups

I mentioned that I got my Ubuntu computer going again, but it still isn't connected to the network.  I need to procure an 8-port switch, some bulk network cable, a crimping kit, and a cable tester in order to get it connected.

Also, that setup will be localized to my bedroom, on my LCD monitor.  My parents have a rather nice 50 inch plasma monitor that they watch TV on, through a computer with an external CableCard tuner and Windows Media Center.  What about playing my shit on that screen?

Well, I've already got a setup.  While I have no intention of actually hiding it from my parents, particularly my dad, it is a fairly stealthy setup that he shouldn't discover.  Even if he does discover it, I've left notes for him that explain exactly what it is, why I chose the setup I chose, and basically trying to reason with the angry beast he'll become once he discovers that I've put any kind of software on that computer at all.

What is the setup, and why did I do it that way, you ask?  Well, I'll tell you.

I'm using the Windows version of mplayer, and PowerShell.  Big surprise there with PowerShell, I know, since it's been my toy language of choice for over a year now.  But mplayer, on Windows, when I very vocally advocate installing the Combined Community Codec Pack and using Media Player Classic HomeCinema?  Srsly?

This brings me to why I chose this setup.  As you may or may not know, mplayer does its own shit.  On Windows it basically uses whatever codecs you have installed, but in any *nix-based OS, it brings its own library of codecs with it.  The fact that it doesn't install any codecs, and in fact makes zero system modifications at all, is precisely what I wanted.

If I knew for goddamn sure that installing CCCP wouldn't break Windows Media Center, I might have gone that route instead, if not for my dad having the chance of discovering that I've installed something (oh teh noes) and getting his panties in a bunch about it.  I specifically wanted to avoid any possibility of breaking Windows Media Center, so my setup was carefully crafted to not fuck with anything.

Like I said earlier, I'm only using PowerShell because it's my toy language of choice in recent times.  What can I say, it makes doing various things ridiculously easy.  I have a profile set up to create a few functions and some important global variables in the PowerShell environment:
  • clean - A function that takes a filename that's been tab-completed by PowerShell and removes the PowerShell-style escape characters that mplayer can't handle.  Its intended usage is mplayer (clean <tab-completed file name>)
  • build-pl - A function that builds a temporary playlist from all files in the current directory, that I can then play with mplayer's -playlist option.
  • netdrive - A function that adds a network drive, starting at Z: and working backwards through the alphabet to E:.  This is far more drive letters than it will ever need, because I only have six network shares where there's even the possibility of video files existing.  Also has a -remove switch which, after asking for confirmation, gets rid of all the network drives it's created.
  • $pl - read-only variable, set to contain the full path of a file within my little spot inside Program Files that I've reserved for myself.  This file is what build-pl overwrites.
  • $mplayerconf - read-only variable, set to contain the full path of the global mplayer config file, so I can edit it easily.
  • $netdrives - an array that holds the drive letters that netdrive has already used.
The first thing I did as soon as I started PowerShell when setting this up was set the local machine execution policy for script execution in PowerShell to RemoteSigned, just because Restricted is the stupidest default ever.  This way I can dot-source the profile after making changes, and run any other scripts I drop onto the machine, all without having to put set-executionpolicy remotesigned in the profile.

To eliminate annoyance, I disabled the Windows 7 balloon tip that comes up when mplayer starts, because it has to turn off Aero.  Srsly I don't care about your stupid balloon tip Microsoft, die in a fire.

The last little bit of the puzzle is file permissions.  By default, in Windows 7, you have to elevate to Administrator in order to create, modify, or remove files inside Program Files.  Except here, I wanted to be able to do it without having to elevate, so I granted full control to the Users group for my entire directory structure and all the files therein.  Windows 7 is painfully not a *nix-based OS, there is no analog of sudo, so this is the best way to handle it.

The setup still isn't perfect, particularly the netdrive function, but it's in a state where it functions well enough for day-to-day use.

Friday, August 15, 2014

Bravely Default: Sending a Super Rejuvenation

I've always sent a healing ability with Bravely Default's friend summon feature.  However, after I got the Salve-Maker with its amazing Healing Lore ability that doubles the effectiveness of HP/MP recovery, I knew I had to try stacking that with the Healing Magic +200% effect conferred by Rejuvenation.  Sure enough, they stack, and I've sent the result.

The setup is simple.  You'll need two party members wielding staves.  One of those two should either be a Salve-Maker or have reached job level 9 in Salve-Maker, so they can have the Healing Lore support ability.  Ideally, the one without Healing Lore should be faster, so that they will take their action before the staff-wielder with Healing Lore, but it doesn't really matter.  Also, for the best effect, you should have HP Recovery Lv. 5, Cure K.O., MP Recovery Lv. 5, and BP Bonus Lv. 2 equipped on Rejuvenation, for the staff-wielder that has Healing Lore.  You'll also need at least one Sleep Point so you can activate Bravely Second.  Now go trigger a random battle.

Now comes the fun part: stalling for time until your staff-wielders both have Rejuvenation ready.  As a reminder, they will both need to heal 10 times to get it ready.  The easiest way to do this is to buy 20 potions.  The rest of your party should use healing items or abilities to keep the party's health up, and remove status conditions that enemies might inflict.  Once both of your staff-wielders have Rejuvenation ready, tell the one without Healing Lore to use Rejuvenation.  Don't send it, just use it.  Default on everyone else.

The first Rejuvenation serves an important purpose: Get that Healing Magic +200% effect on the party.  Now, queue up actions on everyone and hit Go.  As soon as the turn starts, hit Start to activate Bravely Second.  Select your staff-wielder with Healing Lore, and have them send their Rejuvenation.  Bravely Second is important because it allows any action you perform that either raises or lowers health to exceed the cap of 9999.  In my case, I got a nice fat heal of around 15000 on everyone.  Finish the fight and don't forget to select Update Data at a save point to complete sending the heal.

Now, the people receiving this may not see the full 15000 heal, since I believe Healing Magic +200% has to be on the target rather than the caster, but it should still be really powerful, and well worth using in a pinch.

Sunday, August 10, 2014

I Got My Ubuntu Box Working Again

When I moved last year, I went to set it up at the apartment, only to discover that it wouldn't finish the boot process.  I was worried something had gotten fucked up when I drove it across the city, and the most obvious of methods to diagnose and fix what was wrong completely escaped me at the time.

In fact, it wasn't until I was setting up SpillPass-Pi and in need of a working SD card reader that I decided to try again to get it to work.  After a few fumbles, one of which strangely got me to the GRUB menu but no further, I remembered something.  Something critical, something useful.

Good old Ctrl+Alt+F1.

You see, in console mode, *nixes have a few virtual consoles that you can switch between by holding Ctrl+Alt and hitting the function keys.  GUIs typically run on the one presented by Ctrl+Alt+F7.  So when it was stuck during the boot process, I hit Ctrl+Alt+F1 and got greeted with the text-mode login screen.

Now, a long time ago, when I had it hooked up to my parents' plasma monitor, I'd had to do a small tweak using xrandr to force the Ubuntu login screen to use the proper display resolution.  I said to myself, "well, I'm not using the computer on that monitor anymore, so let's go disable that...".  Disabled it (I had aptly named the script "lightdmbitchslap.sh") and rebooted, and surprise!  A GUI.  A finished booting process.  "IT'S ALIIIIIIIIIIIVE!".  Etc.

The strange thing is, when I moved, I thought to myself "I wonder if that xrandr script is going to mess things up", but then as soon as I was trying to get the computer going again, that thought completely exited my head.  I was actually more worried about having to hook up a monitor and keyboard to my server so I could go and change the static IP that it was configured to use, even though I never bothered to do anything with my server and it spent the entire time I lived there holding up a box fan so it could blow air over my lofted bed.  Trivia: that box fan is now serving as a cooling fan for my main computer and I need to go get another one to keep myself cool while I sleep.

I can watch anime again, guys.  It's been a year.  I can finish Railgun S.  I can watch UTW-Mazui's release of Kill Me Baby.  I can watch the Steins;Gate movie.  All because all of that is encoded in 10-bit h264 which this single-core computer can't decode in realtime.  My Ubuntu box is a 64-bit 1.8GHz dual core Intel processor, and even though its major chokepoint is its single gigabyte of RAM, that extra CPU core makes all the difference.

Now I just need to procure myself a network switch, a spool of cat5, and some RJ-45 crimping tools so I can have all my shit hooked up to the network at the same time.

Saturday, August 9, 2014

SpillPass-Pi

I had a long series of tweets on this subject, while I was setting it up, and after I finished verifying that it worked, but here I'll expand on stuff.

So when I moved back in with my parents (#livingthedream), I had to deal with the lack of a wireless network in their house.  A long time ago we wired the entire house with cat5 and it's all been good, but with everything going wireless these days it's a blast from the past.  Wireless networks are certainly no substitute for wired networks, don't get me wrong, but since the 3DS doesn't have a LAN port, I needed a solution.

My temporary solution was to — get this — leave the house and go to where I knew a Nintendo Zone was so I could use its internet for Bravely Default's "Update Data" command, which gets you nemeses and actions sent by other players.  This also let me get StreetPasses, since the other function of a Nintendo Zone is to relay StreetPasses to you from the last six or so people to "tag" the Zone with a StreetPass.

This system, like most others, can be spoofed for the benefit of the user.  You see, as it turns out, there are only two pieces of information that matter for a Nintendo Zone.  Its SSID, and its MAC address.  When setting up consumer wireless equipment, SSID is a standard option as it differentiates between access points in a user-friendly manner.  The MAC address is supposed to be reasonably unique and be a better indication of different access points, that the devices connecting can care about a bit moreso than the SSID.  With the right hardware, the MAC address can be "spoofed", or changed to another strategically chosen MAC address.

As far as making the Nintendo 3DS think it's in range of a Nintendo Zone, the access point's SSID is all that matters.  It simply has an internal list of valid SSIDs, and if it sees one (and the network is unencrypted), it immediately hops on and tells you you're in range of a Nintendo Zone.

The access point providing you with the Nintendo Zone service actually doesn't do the caching of the StreetPass data itself.  This is handled by some server somewhere that Nintendo owns.  This is where the MAC address matters.  The 3DS will contact that server saying "hey I'm on a Nintendo Zone with this MAC address, here's my StreetPass info, gimme StreetPasses" and that server replies "lol okay here you go".  That's the entire conversation.

This means that ANY wireless access point can be a valid Nintendo Zone with its own set of StreetPasses to hand out.  The system appears to be entirely passive and just accepts new MAC addresses, even ones that aren't from actual real Nintendo Zones.

This brings me to the solution I have set up.  For not more than $70 I ordered a CanaKit Raspberry Pi (512 MB) Complete Starter Kit, and a Belkin 150N (F6D4050) USB 802.11b/g/n Wireless dongle.  It pretty much has to be that wireless dongle or one with the same chipset.  Using a customized Raspbian SD card image, my Raspberry Pi rotates around through a list of MAC addresses every five minutes.

Information on how I set all this up, complete with the directions I followed and links to where you can get the requisite hardware, can be found here.

Note that Win32 Disk Imager refused to show the SD card reader on both the Windows machines I tried it on.  I ended up having to use my Ubuntu box, which also has an SD card reader, to dd the image to the SD card.

However you get the image on the SD card, once it's there, you're good to go.  Slap that fucker into the Raspberry Pi, connect it to your network via a LAN cable, plug in the wireless dongle, and power it up.  After a short boot process, your 3DS will give you that happy message: "The Nintendo Zone service is available in this area."  Sit there for a bit longer and the notification LED will give you that oh-so-familiar green flash, letting you know that you just got StreetPasses without even having to leave your house.

Do note: this process creates an unsecured wireless access point on your home network.  To keep honest people from hopping onto it, you can set up a MAC address filter list, so that your brand new SpillPass-Pi will only let clients with specific MAC addresses connect.  The reason why this only works against honest people is that unencrypted wireless network traffic is balls easy to sniff, and once it's been sniffed your MAC address is just sitting right there in plain view.  Anyone who really wants to get onto it will get onto it with ease.  How is it so easy?  Well, considering that the entire principle this device is based around, spoofing one's MAC address, is performed every five minutes by the device, using a cheap USB wireless dongle that anyone can buy...

Anyway, if you wish to complete your knowledge of this subject, then here's one final bit of information.  The community has taken to referring to this method of gaining StreetPasses as HomePass.  I think it's quite the fitting term, personally.  Furthermore, HomePass is somewhat of a regular discussion subject on pretty much any 3DS-related subreddit.

Tuesday, August 5, 2014

Bravely Default Nemesis Strategy: Pollywog pg

This is a weird nemesis.  On July 1st, its level was 1, and it went up by one level each day.  It was given out on the first and second of July, and if it was given out after that, I didn't get it.  They're all ridiculously easy to beat.

Recommended party:
  • Any method of dealing fire damage and lightning damage
  • Heck, any method of dealing damage, period.  No specific party required.
Special Moves:
  • None necessary
Strategy:
  • If you've brought magic, hit the Pollywogs with lightning and the Lucky Jade with fire.  Otherwise, punch in the face.
Up next: Now that I have Blizzaga, I can see about clearing Norende of all the copies of the Satan nemesis that I have.