Sunday, July 23, 2017

Music Playlist Updated

After over a year of neglecting my YouTube music playlist, I've gone back to it and fixed it up.

What all needed changing?  Well, two videos were completely gone from the playlist.  Dunno where they went, but I found replacements.  The second one eluded me until the final sanity check.

Four more videos were either deleted or blocked by various copyright holders.  So I went and found replacements for them.

One had the end of the song cut off.  I'd known about this, but when I added that video to the playlist, it was basically the only option.  Now that some time has passed, there are other options for the complete song, so I did a little switcheroo.

And finally, the reason this bit of maintenance happened at all: I added a new video.

This kind of stuff is why I keep a master list of everything in the playlist.  It makes it dead simple to tell what got deleted or made private or whatever, so I can go find a replacement.

Anyway, link's over on the right just like always, enjoy.

Monday, July 10, 2017

I Am Setsuna

I found out about this game from a post on /r/chronotrigger.  The game is completely separate from Chrono Trigger, but happens to take a fair amount of inspiration from it, hence it caught the subreddit's eye.

What's the story?  Spoiler-free, of course.  Well, a very wintry world is under constant threat from monsters.  To keep them at bay, every ten years, a sacrificial pilgrimage is done.  A powerful magic user journeys to a place called the Last Lands, protected by a guard.  Once in the Last Lands, the sacrificial rites must be performed for the monsters to be appeased.  This game follows the story of the currently chosen sacrifice, a girl named Setsuna, as she and the members of her guard undertake the sacrificial pilgrimage.

How exactly does the whole "inspired by Chrono Trigger" figure into it?  Most of the similarities are graphical in nature, but there are also tech names and late-game weapons that reference it.

I'm not counting the save system because so many other JRPGs work in the exact same manner.  You know the drill: you can save whenever on the world map, but in an actual explorable area where there's enemies and possibly bosses, you have to find a save point.  It lacks the auto-save of newer RPGs, which might catch some people off-guard, but it's not too big of a deal given that you can save anywhere on the world map.

It's very blatantly not a Chrono Trigger clone, though.  It contains extra mechanics that allow you to formulate completely different types of strategies.  Rather than gaining tech points and unlocking new techs every so often, you simply gain another slot where you can put a tech, and you can customize what your tech list looks like to suit your strategy.  You can also customize those techs slightly with the game's Flux system.  I'm not going to delve too much further into it here, since this is a review, not a tutorial.  The bottom line is: if you try to play this game as you would Chrono Trigger, you're doing it wrong.

I find the Flux system to be very interesting, because it addresses an issue that Chrono Trigger and a lot of other JRPGs have: generally speaking, you want to save your MP for boss fights and go through regular fights with just your regular attacks.  However, here, you actually want to be constantly using techs in order to get Fluxes to occur so you can power up.

One thing that the game very notably lacks: inns.  This is unusual, even for a JRPG.  You basically just have to use a Tent on the world map instead.  NPC dialogue in one town mentions that there used to be an inn there, but due to monster attacks the number of travellers decreased and it went out of business; perhaps this is the reason behind the worldwide inn shortage.

As much as I love the game's beautiful art style, I would really love to see a climate other than "constant snow" done in this same style.  That said, the snow in explorable areas is handled with a reasonable amount of attention to detail.  Namely, as you (and the enemies) move around, you leave a path of trampled snow behind you.  Since the game is constantly rendering snowfall, if you venture away from an area and back, you'll find your tracks have been covered by more snowfall.  It works.

The game's music is rather interesting: the soundtrack is almost entirely piano.  This is a neat stylistic choice that I feel complements the game's setting and story very well.  The piano is capable of expressing a wide range of different emotions, and the soundtrack handles that perfectly.

Enemies move around their "home" areas, and you can use this to your advantage: sneak up behind them and you start with full ATB meter.  If you're strong enough, you can easily use this to finish things in one turn while taking minimal damage and quickly move through an area.

Positioning of the enemies and your party matters greatly, and the game affords you have a fair number of options for adjusting positioning.  One example is the tech Demi, which pulls enemies closer together while dealing damage to them.  Another example is Cyclone, which knocks enemies back a fair distance while dealing damage to them.  Many techs will also reposition your characters in a reasonably intuitive manner: healing techs often have the character run away from enemies for a set distance before the actual casting animation happens, whereas offensive techs could leave a character surrounded if used improperly, or leave them too far away to take advantage of anything that affects close-by party members.

My end-game strategy just sort of fell into place.  I was using Flare, with a support item that restores some of the casting character's MP when they kill things, and then I got Luminaire.  With it, the Luminaire+Flare dual tech, Supernova, opened up.  Combined with a weapon for the character using Luminaire that restores some of their MP when they hit things, and the fact that most battles are against three or four things that Supernova can easily one-shot, and I was moving through areas spamming Supernova, one-shotting everything, and having the characters' MP get completely refilled in the process.  The remaining character was really only necessary for the occasional heal or use of a tech in case Supernova didn't actually kill something.

Overall, the game is really good and I would definitely recommend it.

Saturday, July 8, 2017

The Finer Points of Cheating

I recently obtained about the worst device ever to let me use cheat codes on my SNES: a Super UFO Pro 8.  I bought it for other reasons, and there's a post incoming about the device itself.  This post is about some interesting logic I noticed with the combination of cheat device and Chrono Trigger, while cheating my ass off.  It's applicable to basically any game when using a cheat device, though.

You can follow along in an emulator if you have a ROM of Chrono Trigger.  The cheat codes used in this post are RAM codes (address and value, not encoded in any manner), which also happens to be the format used by emulators, as well as both the X-Terminator and Pro Action Replay cheat devices.  If you have the ability to follow along on console, give it a shot.  That's what this post is written for, anyway.  If all you have is a Game Genie or Goldfinger, you won't be able to use it to follow along.  The Game Genie and Goldfinger use ROM codes.  You could still find codes that would work for these devices, but they would be very different.

First, load up the game with the following cheats, start a new game, get to the world map, enable the codes, and save your game.  If you're doing this on console and your cheat device doesn't let you enter all six at once, you'll have to split them up and do multiple saves.  For best results, enter them in pairs, based on the last digit of the address.

AddressValueEffect
7E2401CDOne Power Tab in inventory slot 2
7E250101
7E2402CEOne Magic Tab in inventory slot 3
7E250201
7E2403CFOne Speed Tab in inventory slot 4
7E250301

Note that inventory slot 1 is left empty, this is because the next code uses that slot.  If you haven't done so already, save your game.  Reset the SNES (power-cycling if necessary to get back to the code entry).  If using an emulator, just remove or disable the previously-entered codes, no need to reset or reload your ROM.  Enter the following cheat, load your save, and enable cheats.

AddressValueEffect
7E250063Inventory slot 1's quantity is always 99

You may not notice this code's effect right away, since the first three codes purposefully didn't put anything into the first inventory slot.  When moving items around your inventory, this code will let you duplicate them.  Go ahead and try it with the Tabs you got from the previous codes.  This is why those codes only give you one of each Tab.

Now, these items are of course meant to be used to increase your stats, so let's do that.  If you just use them, though, the quantity will decrease according to the number of them you use.  To stop that from happening, move the one you're using into the first inventory slot, which has its quantity set to 99 by the cheat we currently have active.  Now, when you use whichever Tabs you moved to this slot, you won't run out of them.

While using the tabs, though, you may notice something interesting: the displayed quantity decreases to 98 and stays there while you use them, as opposed to staying at 99.  Why is this?  Well, that's the subject of this post.

The reason behind this is due to how these cheat devices work: given an address and a value, they detect that the game is reading that specific memory address, and respond with the specified value instead of whatever value is actually at that address.  However, if you think I'd be satisfied leaving you with that explanation, you obviously haven't read very much of this blog.  We gonna get detailed, yo.  Well, not too detailed.  Everything is abstracted away from the fiddly technical specifics, to make it easier to follow.

In this first example, the game is running without a cheat device.

Given the following:
  • We're using Power Tabs on Crono
  • stored_quantity is the number of Power Tabs in our inventory
  • displayed_quantity is the number of Power Tabs that gets shown on screen
  • crono_power is Crono's power stat
This (or something functionally identical) will happen every time we use a Power Tab on Crono:
  1. SET displayed_quantity TO stored_quantity
  2. DECREMENT displayed_quantity BY ONE
  3. SET stored_quantity TO displayed_quantity
  4. INCREMENT crono_power BY ONE
  5. UPDATE DISPLAY
Let's run through that, shall we?  Let's say we have 10 Power Tabs.  When we use one on Crono, stored_quantity is read into displayed_quantitydisplayed_quantity is then decremented by one.  The result, 9, is stored back to stored_quantitycrono_power goes up by one, and the display updates (using displayed_quantity to provide the quantity) to show that we now have 9 Power Tabs.  Using another Power Tab will start this over again and result in that 9 being decremented to 8, as you might expect.

When we're using a cheat device, though, something different happens.

Given the following:
  • We're using Power Tabs on Crono
  • stored_quantity is the number of Power Tabs in our inventory
  • displayed_quantity is the number of Power Tabs that gets shown on screen
  • crono_power is Crono's power stat
  • We have a cheat device that tells the game that stored_quantity is 99 whenever the game asks for its value
The same process as before will happen every time we use a Power Tab on Crono:
  1. SET displayed_quantity TO stored_quantity
  2. DECREMENT displayed_quantity BY ONE
  3. SET stored_quantity TO displayed_quantity
  4. INCREMENT crono_power BY ONE
  5. UPDATE DISPLAY
Let's run through it again.  When the process starts, it reads the number of Power Tabs, just like normal.  The cheat device, being configured to provide the value 99 when stored_quantity is read, does its thing, resulting in displayed_quantity becoming 99.  The game decrements displayed_quantity by one, resulting in displayed_quantity being 98.  It stores displayed_quantity back to stored_quantity and crono_power goes up by one.  Finally, the display is updated (using displayed_quantity to provide the quantity) to say there are 98 Power Tabs.

However, the displayed_quantity doesn't immediately go back up to 99, even though our cheat device will tell the game we have 99 of the item in this slot if it asks.  This is because the game believes it already knows the quantity of this item, and hasn't asked for it again.  This means that game doesn't continually re-read the necessary data to show you what you're currently looking at in the inventory.  You can observe this if you make a change in an emulator, scroll the inventory down far enough that the slot is offscreen, then scroll back up.  The game will then re-read the value, and by doing so, it will show the updated value.

Let's go through the process again, so that what's happening becomes apparent.  The game is currently showing us that there are 98 Power Tabs in our inventory.  However, it reads the value again, which means the cheat device once again provides it with the value 99.  This 99 is decremented to 98 and the display is updated.  As far as the displayed values are concerned, we still have 98 Power Tabs.

"Aha!" you say.  Yeah, you understand now.  It's no longer "for some reason it goes down to 98 and stays there", it's "the cheat device always provides it with a 99 that gets decremented and then displayed".