Analysis of Yakuza 5 Hack Videos

I happen to be pretty hyped over the upcoming US release of Yakuza 5 — I’m a big fan of the series’ odd mix of ridiculous melodrama, wide variety of activities and minigames, and really satisfying combat. So naturally, after the localization was announced, I went around looking for videos of the game to watch. First off, I found this amazingly comprehensive and lovingly-assembled survey of the whole series — it’s not really related to the rest of this post, but if you’ve never seen these games it’s worth watching to get a glimpse of how unique they are, and what’s so appealing about them to me.

Then, I found some videos of some hacks that someone apparently made to the game, to allow the player to play as Haruka and another female character (Mai — no idea what her place in the story is). During the normal story arc, there is a chapter where you play as Haruka — however, her fights are rhythm games and dance battles, not the sort of bare-knuckle brawls for which the series is famous. This hack instead allows you to play as these characters during other chapters of the game, where you engage in tons and tons of fistfights. And, somewhat surprisingly, if you watch the videos, it looks pretty good!

So, putting on my ex-game developer hat, what do these videos tell us about the way the game is built, and why this was possible? And is adding a new playable character to the game as simple as these videos make it seem? Here are some of my observations and speculation on how this works, and its limitations.

  • The female and male characters must be animated using the same skeleton. Basically, because all of the combat animations that these characters are using are the same ones that the standard playable characters use, Haruka and Mai must be built and animated on the same basic skeletons as Kiryu, Saejima, Akiyama, and Shinada. This is a little surprising to me, but it goes a long way to explaining why the female characters in this series always seem to…uh, have a somewhat mannish feel to them. I’m guessing that, for the original PS2 games, that this was done to save memory, and then brought forward because it worked well enough and making unique skeletons would require duplicating an already-large animation set.
  • Haruka and Mai are missing a lot of animation metadata. The most obvious case is when Haruka goes to light up a relaxing cigarette after beating the tar out of countless schlubs, just like uncle Kiryu.
  • The smoke from the cigarette comes out of Haruka’s chest — or, more accurately, the origin (0, 0, 0) of the character. There’s a missing animation attachment point in Haruka’s metadata, and the game engine falls back to the origin. Interestingly, Mai seems to have this attachment point — the smoke appears in the correct place for her.

    Another example of missing metadata is this HEAT attack with a bowling ball — it pops away from Haruka’s hand and looks like it’s stuck on her nose. And if you freeze-frame a similar HEAT attack with a beer bottle, you can see that the bottle looks like it’s stuck on her lips.

    I believe there are also missing camera focus points — for example, at the end of this HEAT move, the camera seems to be focused on the origin point of Haruka, and her face is off camera. If I remember correctly, this move looks different when performed by one of the other player characters — the camera tracks the head and it’s in the frame.

  • They’re also missing a lot of animations. The easiest case to spot is that Haruka and Mai’s faces remain completely expressionless, and possibly unblinking, during fights — they don’t have any combat “barks” (voice + facial animation), and they don’t play any reaction or pain facial animations as they lay waste to their foes. While it kind of lends a comic tone to the video, this would definitely not be acceptable for an officially supported character. It just looks strange.
  • The game’s IK seems to work OK with these characters. I had kind of assumed that the engine supported IK, given that a lot of the close combat grabs in the game look pretty good. When Haruka grabs a thug by the hand, that’s a pretty strong signal to me that they’re doing some limited IK, because if they weren’t, you would probably see a gap in the throw animation as Haruka’s character is physically smaller than, say, Kiryu’s. Another example of this is Mai kicking the sign stuck on a thug’s head — it’s just too unlikely that it would look good without IK support.

    Note that there are still some cases where it looks like they don’t normally use IK, and just rely on the animations fitting the sizes of the characters — Haruka lifting up a thug looks pretty bad, as her hand is nowhere near the thug’s chest.

  • Haruka and Mai’s hair is not built to be animated during combat. In the case of Mai, her hair basically doesn’t move at all. And Haruka’s hair physics object was clearly conditioned to look good during movement animations, but not tuned at all for anything that would look like combat, with its frequent flips, tumbles, falls, and dashes. It’s all over the place constantly.
  • Both characters seem to be using Akiyama’s move set. But I can’t tell if this is just a convenience, a deliberate stylistic choice on the part of the author, or that none of the others would work. I think it would be kind of funny to see them using Saejima’s brawling moves, though.
  • Surprisingly, there was no content protection on the game assets. Presumably the author of these videos was able to simply pull out the PS3 HDD, and modify the files directly on the hard drive to point a character definition to Haruka or Mai’s models. It’s a little surprising to me that these were left unprotected, but perhaps Japan has less societal anxiety about hot coffee than the US. Maybe I should have a look at the installed data, to see if I can verify any of my conjecture here.

In closing, I think these are really neat, fun videos to watch, and that it would be very cool if female characters in future Yakuza installments were able to fight and brawl. But there are enough rough edges and missing content in this hack, that it should be clear that making them fully playable is not just a matter of flipping a switch (or deciding to change the story) and suddenly having Haruka powerbombing fools alongside her uncle Kiryu. There’s a lot of missing content and additional polish that would need to go into making Haruka and Mai fully first-class fighting characters in the game.

Questions or comments on my analysis are welcome!

Operation Stop Junk Mail

I am sick and tired of receiving junk mail. It wastes my time, it wastes resources, and it generally has no redeeming value whatsoever. Even worse, I feel that for some classes of junk mail (stupid stuff like balance transfer checks, which I will never ever use), I need to take special care to shred it to avoid identity theft or scammery. So, I’m going to try to do everything I can to stop junk mail from being sent to me, and document everything that I’ve done in the hopes that it gives other people some ideas on how to stem the tide of garbage hitting their mailbox.

The first step on this journey is the FTC’s “Stopping Unsolicited Mail, Phone Calls, and Email” page. Here you will find:

  • optoutprescreen.com, which is a site created by four major U.S. credit reporting companies to allow you to opt out of pre-screened credit card offers. You can opt out for a period of five years electronically — to opt out permanently, you need to mail in a signed form (which is a ridiculously weaselly requirement that is just trying to raise the pain threshold for truly opting out). Considering how much junk mail I get that consists of credit card offers, this seems like a great place to start. Note that unlike USPS mail forwarding, every individual in the household will need to opt out.
  • The government’s “do not call” registry, www.donotcall.gov. While this doesn’t actually address junk mail, it’s such a basic quality-of-life improvement that it’s worth including anyway.
  • The Direct Marketing Association’s “Mail Preference Service” site, www.dmachoice.org. This lets you opt out of several categories of junk mail. They also have an “e-mail preference service” which alleges to reduce unsolicited commercial e-mail.

Beyond that, now you’ll need to start on some other companies with whom you probably do business, and sell your name and address to “marketing partners.” The primary ones that I’m focusing on are banks, credit card companies, and airlines, since those seem to constitute most of the garbage offers I get in the mail. The general rule of thumb is that the “opt-out” switches tend to be hidden in each company’s “Privacy Policy” section of their site — if you can’t find any way to opt out of slimy sleazy marketing in the normal account settings, check their privacy policy. (I’m guessing that there’s a legal reason for this, but I haven’t dug into the specifics.)

I’m going to start with these and see how it goes. Hopefully this will eradicate a significant amount of hassle and wasted time and resources!

Tinfoil hat time

I just thought I would share an amusing anecdote from my time at Netflix, related to wi-fi networking in our office. Because many devices that support Netflix have built-in wi-fi, we would test streaming with wi-fi connections to ensure that the experience was still satisfactory. Pretty standard stuff.

At one point, though, we ran into a mysterious problem with wi-fi networking on one of our supported device types. Thinking that perhaps there was an issue with the wi-fi adapter on the device, or the signal from the router, someone did a WLAN survey to see how many wi-fi networks were visible from our corner of the office.

It turns out that there were no fewer than 150 access points visible from there. Yes, 150 access points. That’s what happens when you have a huge number of people, working on a huge array of different devices, with different network configurations, and in different working environments.

Of course, this discovery led to more than a few jokes about sterilization, CIA mind control, and space madness.

(It turns out that the root cause of the problem didn’t have anything to do with wi-fi interference — it was actually a firmware bug on the device, which was triggered by a separate firmware update to the wireless access points in our building. Pretty crazy!)

23andme Thoughts

Sandy and I recently decided to get our DNA analyzed through 23andme. The service genotypes DNA from your saliva, which you send to the lab after collecting it in their “spit kit.” After a few weeks, you get access to a set of results containing health and ancestry information for yourself. The presentation is through a fairly slick web app, with what seems to be pretty good documentation and bibliography for the claims that are made, and an easy-to-navigate interface.

The information available is kind of a mix between useful statistical data (risk factors for certain diseases, whether or not you are a carrier for certain diseases, etc.), and what I think of as “science-flavored astrology” (seeing which celebrities share your maternal or paternal haplogroups, or seeing the percentage of neanderthal DNA you possess).

There are a range of health risks for which their data suggests I am statistically at an elevated risk — similarly, there is another set of risks for which I am at decreased risk. These range from type 2 diabetes, to certain types of cancers, to Alzheimer’s. Some of the probabilities allow you to select a particular ethnicity (presumably selecting for a specific experiment or set of experiments whose results back the calculation), which is somewhat problematic or tough to interpret for someone like me from a mixed background. (23andme itself lets you report multiple ethnicities, but source data for certain health risks may only have involved cohorts of a single ethnicity.) Interestingly, the elevated risks for Sandy and I are mostly disjoint, which gives me hope that our daughter will inherit our advantageous traits while skipping our vulnerabilities. 🙂

You can also browse a set of “traits”, which are a set of tests on non-disease characteristics. For example, I am apparently 0.13-0.29 times less likely than the average European to develop male pattern baldness — fingers crossed! I also apparently have a genotype that frequently results in not being able to taste certain bitter flavors, which perhaps explains some of my tastes in food and drink.

There’s also an ancestry aspect to the service, which does a bit of analysis to show where your distant ancestors (500+ years ago) came from, and also provides a “relative finder” and family tree builder. You need to specifically allow the “relative finder” to find close relatives (or to be found as a close relative), apparently to reduce the likelihood of unpleasant surprises. This is interesting but I have no particularly close matches currently registered on the service — the closest are estimated as 3rd through 5th cousins.

The cost of the service is fairly modest — it’s now $99. On the one hand, it’s not at the level where I could call it “cheap” — however, given the breadth of information that is obtained from the test, I think nearly everyone would find something interesting or perhaps helpful from getting tested. To look at it in a very simplistic way, if you undertake any sort of successful lifestyle change (prompted by your genotype analysis results), and you wind up living just a few hours longer than you would have otherwise, it’s “worth it.” I also find the idea that this sort of information is now more readily available to the average person really fascinating — I guess I’m more focused on the potentially positive aspects of it, rather than potential privacy and/or insurability problems.

Purging Material Possessions: Books Edition

Since we are moving soon, I figured it would be nice to get rid of stuff we don’t need, or that we haven’t touched in years. I had heard about somewhere, so I decided now would be a good time to try it out. I pretty much cleaned out most of my book collection to have it scanned by this service. Fortunately, since we live nearby, I was able to just drive over there and drop the books off, instead of having to send the package to them. I did have to count pages in order to calculate the price — they charge $1 for every 100 pages or fraction thereof, and there are various add-on services like OCR which add to the cost. I did opt for OCR, so the output should be searchable, too.

In a couple of weeks, my stuff should be scanned and available for me to download and read. Hopefully this turns out well!

Thoughts on Persona 4 Golden

So I recently got done burning a huge chunk of time finishing Persona 4 GoldenPersona 4 Golden on the Vita (with the “true ending”). I never played Persona 4 when it was originally released, so I figured that it would be a good game to pick up for the Vita. Overall, it’s a stellar example of “better than the sum of its parts.” There’s a lot to like, but I can also level a lot of critiques at the game.

The good

  • The story is fairly compelling. That is, for a game, it’s pretty good. It is full of well-worn character stereotypes, along with two bonus dungeons that really feel tacked on to this re-release, but the main story arc is satisfying enough. (Even if the resolution of the main story is telegraphed well in advance.) I guess the best way to describe it would be that it’s like a really, really long after school special.
  • There is a pretty solid set of interactions between the two parts of the game. The “high school time management” stuff has consequences for your equipment and powers in the dungeon crawling part of the game, and you’re motivated to do well in both parts of the game.
  • The translation and voice acting are really quite good. Humor and nuance are carried through into English, and given the amount of text in the game, this is no small feat. The dialogue fits the characters, and fits the mood of the game very well.
  • There is a ton of stuff to unlock and/or complete. You don’t need to do much of it to complete the game, but it’s enjoyable enough that you’ll be motivated to do a lot.

The not-so-good

  • The dungeon crawling becomes incredibly tedious as the game goes on. The dungeons are nearly all just tile swaps of each other, with few gimmicks or notable differences between them except the level and type of monsters you fight. Boring…
  • The bestiary of enemies you fight is truly insane, and really feels like a huge disconnect from the story and theme. And, what’s worse is that nobody ever really comments on it! When a reanimated table is trying to kill you, you think somebody might find it at least a little funny. I realize that these enemies get carried over between games in the series, but it just seems completely out of whack. And none of the “themed” areas of the game have themed enemies, which seems like a missed opportunity.
  • The combat system gets quite boring after a while — there aren’t enough twists and sub-systems to sustain 50+ hours of gameplay. The combat basically boils down to: 1) determine elemental weaknesses, 2) spam elemental attacks of that type, 3) perform all-out-attacks, 4) rinse and repeat. It feels like they even removed a little bit of complexity from P3 since I don’t think any creatures in P4 are resilient to all-out-attacks. None of the boss fights really change things up, either — the only variation is that you might need to heal or remove ailments at some point. There are no cases where the standard battle rules are subverted, or you are forced to use unusual aspects of the battle system — there are only a couple of “trick” encounters, and you don’t even need to recognize the trick to prevail.
  • Along similar lines, there’s no real incentive or reason to mix up your party — the main character can fill in pretty much any missing powers via judicious use of Personas. I used Yosuke, Chie, and Yukiko for basically the entire game, because they were the highest level characters I had.
  • There’s a decent amount of creepitude (Teddie is the #1 offender) and/or blatant fan-service, which just makes me roll my eyes. A lot of the movies in the game fit this description, actually.
  • The social link system of the game is broad, but very limited. There aren’t really any meaningful decisions to be made when advancing someone’s social link, and once you complete it, there’s no meaningful interactivity or payoff beyond the dungeon crawling benefits (persona unlocks, battle abilities, etc.). You can’t pick between character development trees, or unlock mutually exclusive abilities, or anything like that. There was some attempt in the re-release to give some flexibility as far as respec’ing yourself and your allies, but it’s not enough (and it takes too long to do so in-game — you have to burn up a chunk of time every time you want to either get the card for a power, or respec one of your allies’ powers).
  • You are also really incentivized to be a giant man-whore, in order to unlock all of the battle benefits for each party member. (There are, I think, two points in the game where man-whoring behavior is pointed out, but there are absolutely no consequences.) All of the benefits, like follow-up attacks, ability to withstand mortal wounds, ability to take fatal damage for the main character, and especially all of Rise’s party-wide boosts are ridiculously powerful, and it would be foolish not to unlock everything that you can.
  • There are some story bits that are just kind of dropped on the floor, and left unexplored. The presence of Junes in Inaba, the fate of certain characters, Dojima’s story arc, and some of the “school life” stuff is left unresolved or ignored in the last third of the game. This is kind of disappointing, because I feel that the plot or story could be even more engaging with just a bit more effort.

In spite of all of the negativity above, I really enjoyed playing the game. I just think that with some extra polish it could move from “pretty great niche JRPG” to “amazing game that could be recommended to any gamer.” I suppose there’s always next time.

I’m totally done with P4G now, though. The thought of “New Game+” after playing for dozens of hours already is pretty scary…

DIY PC Troubles: The Darndest Things

A few months ago I decided to update my desktop PC to Windows 8. I am somewhat ambivalent about the new Metro/Modern UI, but I figured that I would update anyway just to be on the latest and greatest.

Unfortunately, after I updated, I started experiencing a lot of bizarre blue-screen crashes. At the same time, sometimes my machine would refuse to get through the BIOS startup at all, which would seem to indicate an issue with hardware rather than with the OS. I suspected perhaps that it was an issue with the SSD I had installed a while back (a Crucial M4), because the BIOS startup code would hang on drive detection. I tried updating the firmware for it, but that didn’t seem to do anything. Finally, after a more serious bout of being unable to boot for an extended period of time, I got frustrated and started trying to isolate things further.

I turned off my external Blu-ray writer (an ASUS BW-12D1S-U), and then all of a sudden I was able to boot consistently. I thought that was very strange, and then got to thinking that maybe it was because I had plugged it into one of the front USB 2.0 ports on my case, and maybe that was drawing too much power. The reason I had plugged it in there was that a different USB 3.0 hub that I had bought (a SIIG JU-H60012-S1) had always been kind of flaky, and didn’t seem to work well with Windows 8 — I checked the Device Manager, and it was listed as “Superspeed USB Hub (Non Functional)”, which was kind of off-putting.

It turns out that there is a firmware update for that USB hub that gets it to work correctly with Windows 8 (I’m guessing that may be more of a “gets it to work correctly at all” update). Applying that update allowed the hub to work in Windows 8, and, in turn, allowed me to plug my Blu-ray writer into it (a separately-powered hub) rather than directly to my computer. And (crossing my fingers) that seems to have solved my stability problems so far.

My layman’s guesses as to why the problems initially seemed to be related to Windows 8:

  • There might be power-management changes in the USB drivers for Windows 8, that might be changing behavior slightly and triggering problems with my particular setup.
  • I might have switched where I plugged the drive in after I upgraded, not realizing that was what was causing the problem to begin with.
  • I didn’t use the hub that often before I updated to Windows 8, and didn’t realize that the hub itself could potentially be screwing with the rest of my system.

I’m just glad that everything seems to be working now, and I can soldier on a bit further with my system (which is almost 3 years old now!)…

Getting an apostille for a birth certificate in California

I have been going through the process of obtaining an apostille certifying the recent birth of my daughter. It is an international means of certifying the origin of a document from another country – in this case, her birth certificate. We need to have this in order for her to obtain her dual citizenship, from Finland. There is a good primer on apostilles, “The ABCs of Apostilles,” available from the Hague Conference on Private International Law. (Note that not every country is a participant in the “Apostille convention,” so check to make sure that the country in question accepts this means of document authentication.)

The process is a bit involved, so I figured that it would be useful to put together a short article describing the steps involved. Note that the steps may vary depending on where you are – in my case, the instructions are tailored for people living in California (and more specifically, Santa Clara County).

  1. Obtain a certified copy of the birth certificate. Be warned that Google is infested with dozens of companies that try and obfuscate the “normal” government channels for doing this, and rip you off by charging you money to do things that you can take care of yourself. (As an example, one link that I clicked on wanted to charge me $39 as a “retrieval fee,” on top of the normal costs charged by the county. This is an outrageous skimming fee.)

    For Santa Clara County, certified copies of the birth certificate (from birth through 1 year of age) are available from the Public Health Department, through the Department of Vital Records. Information can be found here. At the time of writing, the cost was $21.00 per copy.

    Birth certificates older than 1 year must be obtained from the Santa Clara County Clerk Recorder’s office. The cost is still $21.00, although if you order them online or with a credit card, additional fees will apply.

    UPDATE (12/20/2016): As of July 1, 2016, in Santa Clara County, all birth certificates are now available through the County Clerk Recorder’s office, starting 4 weeks after birth. You no longer need to go through the Public Health Department for certificates less than a year old. The cost is now $28 for each copy. This is a link to the Birth Certificate page on the Clerk Recorder’s site.

  2. You will then need to have the signatures of the county health officials certified by the clerk recorder’s office. The reason for this is that the California Secretary of State’s notary section cannot certify these signatures – they can only certify a smaller group, from the various county clerks. This will cost an additional $13 – see the line item for “Signature of Authentication of County Medical Officer” on this brochure.

    As an aside, I was missing this crucial step, as it is not called out on the California Secretary of State’s Authentications information page, and none of the other government sites I read while researching this really mentioned it. While the SOS page does mention the limitations on what signatures can be authenticated by the Secretary of State, it does not mention that even though the birth certificate is a certified copy, that its signature cannot be authenticated by their office.

  3. Finally, you can send the certified document to the California Secretary of State’s notary section, along with a $20 check or money order, a self-addressed stamped envelope, and a cover letter indicating the country in which the document will be used. (In our case, that would be Finland.) Information can be found on the Secretary of State’s authentications page. The processing time, as of this writing, is 3-5 business days.

At the end of this process, you should have an apostille indicating that the birth certificate is an authentic document, valid for use in the country you requested.

Quick guide for installing SpamAssassin as a service

I was having some issues with spam on my mail server (hMailServer), so I decided to set up SpamAssassin to filter things before they hit my inbox. While hMailServer has some native support for SpamAssassin, I figured I would write up the steps I used to get things running smoothly as a Windows service.

Note that this is on a Windows Server 2003 box – steps may vary for other versions.

  • Download and install the Win32 binaries for SpamAssassin from JAM Software. This includes the spamd daemon, but this normally runs as a command-line application. It is better to run it as a Windows service, so it can be launched automatically when the machine reboots, without having to log in and run it manually.
  • Install the Windows Server 2003 Resource Kit Tools, if you haven’t done so already. This contains the srvany tool, which can be used to run an application as a service.
  • Open a command prompt for the Resource Kit Tools. There’s a shortcut installed with the tools.
  • Run instsrv SpamAssassin <path to Resource Kit Tools>\srvany.exe. This will install a new “SpamAssassin” service, linked to the srvany tool.
  • Now, open up the registry editor (regedit). Create a new key under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SpamAssassin, called Parameters.
  • Under the Parameters key, create a string value called Application. Set the value of this to <SpamAssassin path>\spamd.exe.
  • Under the Parameters key, create another string value called AppDirectory. Set the value of this to <SpamAssassin path>.
  • Go to the Services administrator tool, and start the new SpamAssassin service you created.
  • Now, open up the hMailServer administrator tool, and go to Settings\Anti-spam. Click on the SpamAssassin tab, and check the Use SpamAssassin checkbox. Fill in the appropriate hostname (localhost should be fine, although you can use 127.0.0.1 if that doesn’t work), and check the Use score from SpamAssassin box. Finally, click on the Test… button to test your configuration. If a dialog box shows up with a response from the SpamAssassin service, you’re good to go.
  • If not, check to make sure that the service is running, and that the port used (783, by default) is not blocked. Check to see if the port is being used, by running netstat –an and checking to see that something (the spamd daemon) is using TCP port 783. You can also try enabling logging with spamd by creating an AppParameters string value under the registry key mentioned above, and setting it to –s file. This should result in a spamd.log file being created in the same directory as spamd.exe, and the information within might help you debug the issue.