Showing posts with label games. Show all posts
Showing posts with label games. Show all posts

Sunday, October 23, 2022

Chrono Trigger notes revisions

So recently, I did another level 99/Tab grind, for some reason on the Chrono Trigger Devolution romhack.

During that, I realized that some of the notes I've made here (as well as some I haven't posted here) were either incorrect, incomplete, or otherwise in need of updating.  This post will by no means be comprehensive, but it will contain the ones I can explain concisely.

Level 99 Spekkio strategy

For the longest time, my strategy for beating him immediately after getting to the End of Time involved using Gold Studs as my accessories.  As it turns out, PrismSpecs are a lot faster.  How much faster?  How about "Spekkio doesn't get the chance to use Hallation" faster?

Azala/BlackTyrano strategy

My party for this fight is my not-so-new standby, Crono/Ayla/Robo.  I had been using Volt Bite on Azala, which works, but takes forever.  Simple is better; just use Luminaire lol.

65 million BC Forest Maze Tech Point grinding

I believe I covered the Gold Eaglet behavior of transforming into a Red Eaglet if not dead after two hits, carrying over the HP.  What I didn't realize at the time is that hitting a Gold Eaglet with Fire damage instantly causes the transformation (if it survives the hit), and also resets the Eaglet in question back to full health.

The Bestiary in the Extras Mode on the DS version also mentions that a Red Eaglet can transform back into a Gold Eaglet; I have yet to see this happen.  I suspect it might only happen if it takes Lightning damage, but I haven't confirmed this.  I don't exactly have sources of either type of damage that aren't one-hit KOs to test with at the moment, though.

Also, the fight with the Kilwalas that has three of them when going through in one direction and two of them in the other direction seems to use the order of your fights to decide how many Kilwalas it has.  I haven't done much testing beyond the initial discovery, but manipulating the fight to always have three probably takes more time than it's worth.

If I failed horribly on formatting above, it's because I'm typing this on my phone, and the internet experience on a phone is total garbage tier.  My computer has a dead cooling fan and I'm procrastinating fixing it.

Wednesday, December 15, 2021

Metroid Dread

Yeah, I got Metroid Dread.  Physical of course, I ain't no chump.  I got it late because reasons, deal with it.  Anyway, here's my thoughts.  Spoiler-free, in case you care about that.  As a bit of background, I'm incredibly used to how Super Metroid does things.

The overall gist of this game is as follows: Samus goes to the planet ZDR after receiving evidence that an X parasite exists on the planet.  Also on this planet are seven robots, called E.M.M.I., that have uber hax armor, and surprise, they're trying to hunt her down.  Samus gets stuck deep into the planet and needs to make her way back to her ship.  ...And then you gain control.

The graphics, music, and overall atmosphere are amazing.  The use of darkness lets the illuminated parts of level geometry and Samus' Power Suit really stand out.  I don't really recall any true bangers on the soundtrack, but it does fit the atmosphere very well, and they brought back the Green Brinstar BGM for a cutscene, which was a nice throwback.

Walljumps are somehow simultaneously better and worse at the same time.  And by "better" I mean "dumbed down".  You no longer need to press a direction to wall jump, just be in a spin jump next to a wall and press jump.  That's it.  The "worse" part is that they're still Fusion walljumps, so you can't single walljump.  Except you sorta can in some circumstances.  An upgrade you get early on that lets you climb the blue walls and hang from the blue ceilings doesn't have the "no single walljump" restriction on it.

The lack of single walljumping is sad, but it's a minor nitpick seeing as later upgrades make walljumping far less necessary, and even take precedence over walljumping.  Bomb jumping and infinite bomb jumps make their triumphant return, though.

Gonna say it now: this game is hard.  And in my eyes, not really in a good way.  Sure, things are challenging, but everything hits like a truck, even at the very beginning.  So you've managed to find six E-Tanks and are headed into a boss?  Congrats, you can get hit maybe seven times.  I've said it before, and I'll say it again: tedium is not challenge.  The challenge of a boss fight is figuring out its attack patterns and how best to deal with them, or when you can tank a hit to get some extra damage in.  But here, even glancing blows take ridiculous amounts of energy.

Movement and related techniques still feel incredibly satisfying to do and when you get a sequence of tight movement right, it looks amazing.  The game has puzzles you have to figure out how to use Speed Booster and shinesparks to complete in order to get 100% items, and they take full advantage of this.  They vary in difficulty, and you may not even recognize some of them as being puzzles because a bunch of the early ones feel pretty straightforward.  Most of them have multiple valid solutions, which was a nice touch.

However, later on you need to be familiar with a specific mechanic of shinesparking that I was not aware of coming in: if you shinespark into a slope, Samus reverts back to the Speed Booster state and you can store another shinespark to use later.  The only place in the game that this ever gets communicated to the player is a loading screen hint that has a very low chance of showing up.

I know the melee attack thing was added in the 3DS remake of Metroid 2, but... why is it necessary?  Samus isn't a melee character.  Sure, melee countering things gives you more drops, and sure, dash melee is nice; but the whole point of Samus having that arm cannon isn't so she can whack things with it.  It's so she can shoot things with it.  The melee counters just slow down gameplay outside of boss fights.  In boss fights, however, they're useful to end the fight faster, and in some cases, required to progress through the fight.

I feel like the controls could have been done slightly better.  I am by no means a fan of analog stick click actions, and this game has one for both analog sticks.  Speed Booster should've activated like it did in Super Metroid.

The game offers you the ability to place markers on the map, which is very nice in a game like this where you're going to want to return to an area later.  However, the markers are incredibly tiny on your minimap, making them very hard to see, and limiting their usefulness.

The new abilities are all really cool.  Flash Shift is great in boss fights, Phantom Cloak is essential to evading the E.M.M.I. until you gain the ability to destroy each one.  Pulse Radar is basically a better version of the X-Ray Scope.  Cross Bombs are a neat addition to the morph ball repertoire, they can blow up stuff vertically and horizontally from where you drop one.  They offer an easy way to bomb jump horizontally to cross gaps and groups of crumble blocks in morph ball tunnels as well.

A lot of the time, by the time the game's progression is giving you a major item, you've been hurting for that item for quite some time.  I have a love-hate relationship with this, because I liked how it handled reduced mobility in water before getting the Gravity Suit, where you gradually gain abilities that slightly increase your underwater capabilities (in addition to being useful elsewhere) before finally getting full movement.

However, one of the major item timings is questionable.  This game suffers from Fusion-style Convenient Debris™, wherein once you progress the story or do something to get through an area, the way back is blocked until you return with a new upgrade.  Most of the time, this new upgrade you need is Power Bombs.  To add insult to injury, you can collect Power Bombs well in advance of being granted them by the game's progression, but they remain an "unknown resource" and thus completely unusable.  Super Metroid wouldn't have done that.

"Super Metroid wouldn't have done that" was a phrase I echoed plenty of times during my playthrough.  This game took entirely too much from Metroid Fusion's playbook.

Is Metroid Dread a good game?  Absolutely.  100% worth picking up and playing yesterday.  Is it perfect?  No.  Is any game ever perfect?  No.  Is it as good as it could be?  No.  Is it better than Super Metroid?  No.  Is it better than Metroid Fusion?  Fuck yes.

And if you're still on the fence, there's a demo on the eShop, so you can get a little "try before you buy" action.

Wednesday, October 20, 2021

I got back into Guild Wars 1

I don't seem to be alone in this either, through my travels I've seen a number of people saying "haven't played in years, how's this thing work again?" in chat.

It's still mostly desolate, but there are definitely more players online now than there were a few years ago.  Everyone's playing with hero parties from the looks of things, but... whatever.

That said, what the hell am I going to do in a number-of-years-old online RPG that I've already played to death?

Well, to start with, realize that there's still a lot I haven't done.  What follows (after the break) is a list of tasks for my latest gaming project.

Finally.

Sorrow's Furnace was added to Guild Wars all the way back in 2005.  I've had the quest To Sorrow's Furnace in my Ranger's quest log since it was added.

Today, I finally finished that quest.  Now I can go on to The Final Assault and get him his Black Moa Chick.
Oh yeah, I'm playing Guild Wars again.  I actually started playing again back in 2020, just didn't post anything about it until now.

Edit (later this same day): Well, that was fast.  Finished The Final Assault and got my Black Moa Chick.

Monday, November 16, 2020

Syrup and the Ultimate Sweet: Illustration 27

If you type the game's name into Google, one of the search suggestions is the title of this post.  I myself had gotten all the endings and was only missing this one illustration, and finding absolutely nothing to go off of on the internet, I set off on my journey to find it.  As a result, I don't know exactly what triggered it, but I do have it now, and I have a pretty good idea of what might need to be done to get it.

Oh and fair warning: I'm going to talk about the end of the story in this post, so if you haven't already played the game and seen all the endings, maybe don't read further.  Your call though.

I started by noting that the illustrations in the gallery are in the order in which they appear in the story.  Illustration 26 is the one where Syrup goes to sleep after seeing what was recorded on the crystal ball, and illustration 28 is from when she goes to return the crystal ball and has a chat with Toffee before going to sleep.  I figured it had to be somewhere around that specific point in the story.

My first step was going for Gumdrop End and experimenting with different choices on Mt. Sorbet, but that got me nowhere.  My next idea was to get Pastille to show up on Mt. Sorbet.  It had been a few days and I kinda forgot what I needed to do for that.  As a result I got Frozen End a few times.  The gist of getting Pastille End is: be nice to Gumdrop and tell Pastille you wanted to help him (when given the choice to supervise Gumdrop, help Pastille, or leave), then let Gumdrop disappear but help Pastille find her.  I forget if choices matter on Mt. Sorbet before telling Butterscotch you hate her in order to stay trapped in the cave.  If you end up in Treat's cabin, you're on the right track, just avoid getting the Worst End and you'll be good.  Once you're down off the mountain and have the crystal ball, look at it before going to sleep.

Anyway, I got Pastille End.  Then I remembered that Toffee End has a slight difference if you get it again, so I went and got Pastille End again, but this time Syrup had some new dialogue after seeing the scene in the crystal ball.  After this, I got the elusive illustration 27.

This was technically my third time getting Pastille End, but it was also the second time in a row getting this ending.  My recommendation is simply to keep getting Pastille End, and eventually you should get the illustration.  If you need to, play around with choices that you feel are less integral to getting Pastille End.

Wednesday, November 11, 2020

Sentimental Shooting: Compatibility Update

I've been trying to resist the "storytime" intro I often do in my blog posts for this specific series, but this one does have a small story for context.

I was perusing some old speedruns on YouTube when I noticed one in particular was using a program called D3DWindower to force the game to run windowed.  I had been searching for something exactly like this, but I guess I just hadn't typed the right things into Google.  However, searching for D3DWindower by name and sifting through the results revealed an even better option: DxWnd.

DxWnd is now my official recommendation for running Sentimental Shooting on modern versions of Windows.  It fixes 100% of the palette corruption issues and allows a number of other useful tweaks.  Most of them don't actually apply to Sentimental Shooting, but the few that do could be useful depending on your needs.

You can add Sentimental Shooting to DxWnd simply by dragging and dropping SGSTG.EXE onto its window.  In the Options menu, enable Expert Mode so that the Tools menu will appear.  Then, with Sentimental Shooting selected, go to Tools → Clear Compatibility flags to clear any Windows compatibility options you may have set after following my previous post.  After that, right click on the game's icon in DxWnd and select Modify.

Here are the base settings I will recommend.  If a listed item is a checkbox or radio option, it should be selected.  Anything that's omitted should be left default (or in some cases, changed to suit your tastes).  For reference, all of this has been tested on DxWnd v2_05_59, which is the latest version at the time of writing.
  • Main
    • Name: Sentimental Shooting
  • Main → Generic:
    • Do not notify on task switch
    • No banner
    • Run in Window
  • Main → Position:
    • Hide desktop background
    • Keep Aspect Ratio
    • (W)idth: 640
    • (H)eight: 480
    • Desktop
  • Video
    • Initial virtual color setting: 8 BPP
    • Z order: top
    • Window size & position: Anchored
  • DirectX → Emulation
    • Renderer: OpenGL
    • Full bilinear filter (only if you can't achieve an integer scale)
  • Compat. → Tweaks
    • Win7 color fix (may not be needed outside of Windows 7)
As I mentioned with the Full bilinear filter option, it's only necessary if you can't get an integer scale when the game goes fullscreen.  If you're unsure whether or not this is possible, divide your screen resolution's height by 480.  If you get a whole number, congratulations, you can get an integer scale and don't need the bilinear filter.  Otherwise, enable the bilinear filter to make the game's bitmap fonts look right, and to reduce shimmering in the scrolling backgrounds.  Both of those issues are caused by non-integer scaling, and while the bilinear filter means you won't get the chunky pixels you deserve, it's better than the alternative.

Once you have the game configured and working when launched from within DxWnd, you can right click on it and select Proxy → ddraw to be able to run the game without having to launch it from within DxWnd.  When you do this, it will place some extra files in the game directory and the settings will be applied automatically when you launch the game.

These options will force the game to run in a pillarboxed 4:3 aspect ratio, so the graphics will appear as intended.  If you're one of those people who hates "black bars", please seek help for your mental condition.

With this new recommendation, the only remaining compatibility issue is for those who want to use a controller instead of the keyboard controls.  There are three options here:
  1. An XInput controller, with a compatibility layer that translates the game's DirectInput calls into the equivalent XInput calls.  Basically, the reverse of x360ce.
  2. A controller like the Logitech F310 or F710 (F310 = wired, F710 = wireless), that has a switch to toggle the controller between XInput and DirectInput.  If you want to use a controller but lack a controller for your computer, this is probably the easiest option, and it has the side benefit of also working with modern games.
  3. An older DirectInput-only controller, or one of the myriad of USB adapters for controllers from older consoles.  As long as there's X and Y axes (not a POV hat) and at least three buttons, it'll work.
Looks like we can see the light at the end of the tunnel.  There aren't really any more objective "best" options left, it's just down to user preference at this point.

Friday, October 30, 2020

Sentimental Shooting Graphics Files: Code Update

So, the disassembly thing is basically not going to happen.  Or at least, not by me.  As it turns out, people want tons of money for this kind of software and the free alternatives that I'm willing to run on my computer are lacking in documentation and the features I need to get my foot in the door.  Some are written in Python, which is annoying to deal with because everyone has their own pet version of Python that they never upgrade from and require you to install for all their stuff to work.

However, I can make my existing code better, and figure out more of the files.

I've already made the code better, by translating it to C#.  It runs faster and is far simpler now.  The reason for the simplicity is because my original PowerShell scripts were designed to work with paths containing wildcards and the PowerShell pipeline, so there had to be a bit of overhead in there to transition from one file to the next cleanly.  Stuff that an end-user probably wouldn't think of, but would absolutely annoy them if I didn't do it.  Namely, closing file handles properly so files don't stay marked as "in use" and become unable to be moved, renamed, or deleted.

But also in my typical fashion there was code in the PowerShell script for the UME files, for a use case I didn't need: some of the UME files are sort of grafted at the hip to System.ume, and being that the script was designed to be able to process an arbitrary number of input files, I put in code that would try to use System.ume from different directories, but if it's still in the same directory it'll keep the current System.ume open, and just seek back to the beginning of it.  It's kinda dumb, but I wrote it off as being forward-thinking.  After all, this code I'm working on could very well be the basis for modding the game, so maybe you have files for a few different mods you want to convert and they all have their own custom System.ume...  While ostensibly there to avoid closing and reopening the same file repeatedly, it does have this other use case.

Yeah, like I said, it's a use case that I didn't actually need.  It's technically preserved in the C# code, but the C# code also only handles one file at a time.  If you want to process a whole directory, you get to call the method once per file, specifying the path to your desired System.ume with each call.  Yeah, there's some overhead to that, constantly closing and re-opening the same System.ume, but the code's cleaner and easier to follow.  I also got to re-examine what I was doing and remove some of the stupider bits, so the new code is just... more better.

Both the PCG code and the UME code now exist as C# static methods, along with a couple static methods I created to see what was going on with my transformation of the input path to the output path, that I decided to leave in there because why not.  They could be useful.  Yeah, the methods don't take an output path as a parameter, they just transform the input path and then bitch if that file already exists.  That's kinda how I roll I guess.  I did put in a lot of work transforming the file names to be useful, it's not just extension swapping.  For example, Akr1b.ume will get transformed to Akira Stage 1 Background.bmp.

As for figuring out more of the files, honestly, without the ability to understand what's going on in the game's code, I can't do very much more.  The interesting stuff, the PRT, ROT, SPR, and DMO files, will all take more work than I can realistically do right now.  Running some quick commands to get file extension stats shows there's a couple other oddballs in there as well, Enemy.inf and Enemy.pnt.  I've looked at those and have no clue where to start.  This leaves two pieces of extremely low-hanging fruit: Option.dat and Destroy.scoOption.dat holds the options, of which the game only has a handful, and aside from the difficulty setting they're all toggles.  Destroy.sco holds your high scores.  They're such low-hanging that I already have classes for both to allow creating, loading, and saving them.

Destroy.sco was interesting because it contains the same structure repeated 12 times.  I chose to represent this in two ways: named properties on my class to allow accessing a specific stage's data by character name, and a custom indexer that puts the stages in the order they appear on the stage select screen from right to left.  That's actually significant because the score data in Destroy.sco is not in the same order as the stage select screen.  Figuring out the order was easy enough since it was simple to identify which values in the file were the scores.  I just set each stage's score to a number from 1 to 12, so when I looked at it in-game I could see which score showed up where.  Because I implemented an indexer, it didn't feel right without a Count property and an IEnumerable<T> implementation, so those are present as well.  I didn't implement ICollection<T> because it's not actually a collection and doesn't need management methods.

Also, the scores are signed values, which is interesting because if you give it a negative score, it reads an incorrect graphics tile from System.ume when it tries to display the minus sign, despite the fact that there is a minus sign available.  Also, if it has to display more than 7 characters for the score (7 digits, or 6 and a minus sign), it won't fit properly in the box on the stage select screen.  My code range checks and sanitizes both the scores and the percentages to avoid causing display bugs.

The structure of Option.dat suggests to me that the difficulty setting was probably added later on in development.  It appears at the very end of the file even though it shows up at the top of the options screen (everything else is in the order in which it appears on the options screen), Normal difficulty has a value of 0, Easy has a value of 1, and Hard has a value of 2.

Anyway, I've basically done all I can do in terms of figuring out file formats.  I suppose that my next endeavor will be trying to tweak the game's graphics files to avoid the palette corruption.  This will be annoying given that I can't get GIMP to load the palette from the files in its palette editor.  Worst case scenario, I have to roll my own code to change a palette entry and update palette indices to point to the new color, because I'm not writing an image editor.

Friday, October 2, 2020

Sentimental Shooting Graphics Files

So at the end of my previous post, I left a juicy little nugget of information about me poking around the game's graphics files.  I've "completed" a major milestone in doing so, and while there's still stuff left to do, I have enough to actually post about.

The game's graphics are in the PCG and UME files.  Judging by file extension alone, you wouldn't expect them to be any kind of standard file format that's documented outside of a dark corner of the internet, but... you'd be wrong.  Both are standard Windows BMP files, changed ever so slightly so that they don't appear to be proper files if you change their extensions and open them.

The PCG files are the omake pictures, and simply have 0x70 added to the first 0x03E8 bytes of the file.  That's it.

The UME files are the stage backgrounds, clothing fragments, enemy and boss sprites, menus, and everything else.  System.ume is actually a BMP that's just renamed, but the rest are very close to being proper BMP files.  Some have extra bytes at the end that any viewer or editor can easily ignore, but the real kicker is that they have improper data for some of the header fields.  You can make extremely minimal changes to allow an image editor to open them, but... for the stage backgrounds at least, we have the ability to make the game output the file directly.  Making these minimal changes does not result in a file that matches the one generated by the game.

Thus began my journey for matching output.  I discovered that the stage backgrounds saved by the game in the SNAPSHOT directory have various values pulled in from System.ume, including the color palette.  Most of the UME files for stage backgrounds actually have a zeroed out section of their palette where the palette from System.ume should go, which made it easy to spot.  Something about how the game handles the data zeroes out the padding in each row by the time it ends up in the SNAPSHOT directory, and any extra bytes at the end of the file get removed.  Towards the end I identified two groups of files that needed different behavior, but couldn't pinpoint how to detect this from the file contents alone, so I gave in and implemented dirty hacks that check hardcoded filename lists.  It's finally over, I have matching output for all 24 stage backgrounds, and no visible corruption in any of the other files, but... it doesn't feel right with the dirty hacks still in there.  This is why I put the word "complete" in quotes in the first paragraph: It works, but I don't like it.

One issue is that some files exhibit... interesting changes if the System.ume palette is imported, even though they have the space for it.  Some of these changes are easily identified to be incorrect, but others I'm not so sure.  I have an idea how to proceed here, but it's low priority in the long run.

A major sticking point is that I have no idea if my code that generates matching output for the stage backgrounds also does so for any of the other files.  I have no way to make the game output these files, and thus no way to see what needs to be done.  Or, do I?

I have reached a point where all of my remaining logical steps involve disassembling the game to see how it loads the UME files, handles the color palettes, and outputs snapshots.  This will be difficult for me for three reasons:
  1. I don't know x86 assembly
  2. x86 assembly is far more complex than the assembly languages I've learned so far (Z80 and 65816)
  3. I don't trust the NSA so I'm not installing Ghidra (so there goes its much-touted decompilation feature)
I can still think logically enough to know how to proceed after getting a non-Ghidra disassembler installed, though.  I've already looked at SGSTG.EXE in HxD, and I can clearly see the strings the game uses.  Windows executables include the names of the various API functions called by the executable, and I can see the various file names as well; so labelling all the strings I'm interested in and then searching the code for references to them seems like a cromulent first step.  From looking around at different disassemblers, "identification of Windows API calls" is a feature that pops up a lot, which would be handy.  Figuring out how it builds the palette from reading the files shouldn't be that difficult once I have my foot in the door, it's just a matter of copying data around and that's generally pretty easy to follow in any assembly language.

Still though, I now have PowerShell scripts that work for both the PCG and UME files, both of which produce output that matches what the game outputs on its own for every file I can possibly verify it with.

Fixing the palette corruption issues that the Windows compatibility modes mitigate by tweaking the corresponding UME files looks to be possible.  Logo.ume defines a full 256-color grayscale palette but only uses a small portion of it.  Enemy2.ume, which contains the sprites in which I'd noticed some palette corruption, has plenty of unused palette entries.  I just need to figure out which palette entries get corrupted, and move them to areas of the palette that were previously unused.  The disassembly can potentially help with that, if I can catch where the palette corruption happens and discover its true extent.

The pipe dream would be to fix whatever code is causing the corruption in the first place and just patch SGSTG.EXE.

I think I'll leave it there for now.  I'm at the point where I can open a BMP file in HxD and identify all the fields without having to consult an external reference.  If I don't post anything on this subject for a while, I've probably drowned myself in x86 assembly just to tweak a silly hentai game, or given up.

Monday, September 21, 2020

Sentimental Shooting Revisited

So a long time ago I posted about this game.  In case you're unfamiliar and too lazy to click the link, it's an ero-danmaku game released in the late 1990s.  I unironically enjoy it, not because of the nudity, but because of the gameplay.

In my post, I mentioned that having the music enabled causes the game to crash unless you're on Windows XP.  The reason for this is now very clear to me after having done some basic research: Microsoft has been gradually degrading the MIDI support in Windows, and XP was the last version to have proper support.

This means that you can, in fact, have the music enabled without the game crashing.  You just need to do some extra things first.

First up, if you're on Windows 8, 8.1, or 10, you'll need to install CoolSoft MIDIMapper.  Full disclosure: I'm using Windows 7, so I'm unfamiliar with actually using this.

Next, on Windows Vista or newer, you'll need to install CoolSoft VirtualMIDISynth.

Now, in VirtualMIDISynth, there's some configuration that needs to be done.
  1. On the MIDI Mapper tab, set VirtualMIDISynth as the default MIDI out device.
  2. On the Soundfonts tab, you'll need to click the plus button and select a soundfont.  You'll need to download one of these, and thankfully, the download page for VirtualMIDISynth has links to a good number of them.  I downloaded the uncompressed version of FluidR3_GM, which so happens to be the first one in the list.
  3. Do the requisite clicking of Apply and/or OK.
That's basically it.  Now you can start Sentimental Shooting and enable the music.  The crashing should be completely gone.  If it doesn't work and you're on Windows 8, 8.1, or 10, try changing the default MIDI out device within MIDIMapper instead of in VirtualMIDISynth.  Unfortunately, I don't have a computer running one of these versions of Windows to test on.

However, enable the music cautiously, as the default volume was extremely loud for me.  I had to crank it down to around 30% for it to not be louder than the game's sound effects.  You can get back into VirtualMIDISynth's configuration using the system tray icon.  From there, double-click on the soundfont you installed and the volume setting will be on the dialog box that appears.

Additionally, there's something I did that you may want to do.  VirtualMIDISynth has two global keyboard shortcuts enabled by default, and I was worried about them clashing with other games.  On the Shortcuts tab, just click in each key combination's text box and press Spacebar, that seems to have disabled them for me.

Edit (2020-11-11): There's now a better solution for fixing the color palette corruption.  You should follow that post instead and ignore the suggested compatibility settings here.

There's still one remaining issue with the game, and to address that I need to contradict my earlier post.  Specifically, the part where I said:
That's it, no compatibility modes, no running as administrator, and no extra settings.
Without any compatibility options set on the game's executable (SGSTG.EXE), some of the game's graphics palettes are corrupted.  The only combination of them that seemed to fix the corruption for me was the following:
  • Run in 256 colors
  • Run in 640x480 screen resolution
  • Disable desktop composition
  • Disable display scaling on high DPI settings
The last two make sense, sort of, but the first two seem redundant to me: the game already runs in 640x480 with 256 colors.  Nevertheless, the palette corruption wasn't fixed for me without both of them checked.  There are still two scenarios where the palette corruption will happen, and your only recourse to fix it is to restart the game: If you sit at the title screen long enough that one of the demos starts playing, or if you Alt + Tab out of the game and return to it later.

If you're unsure what the palette corruption looks like, well, the logo when you first start up the game isn't supposed to be red, or color-fringed.  Also there's an enemy that sometimes appears outlined in white instead of black.  Those are the only two instances of palette corruption I've noticed, at the very least.

I've been tinkering with the game's graphics files and may be able to provide patched files that don't experience the corruption, we'll have to see.  More on this as events warrant.

Saturday, December 7, 2019

Revenge of the Bird King (Switch)

Like many others, I was intrigued when this retro-styled indie game popped up on the Nintendo Switch eShop, on sale for a measly 9 cents.  I mean, I had more than 9 gold points, so whatever, I grabbed it.  There's a limit to how bad a retro-styled platforming adventure game can be, right?

Well, sorta.

It takes influences from a lot of classic NES titles, namely Mega Man and The Legend of Zelda 2: Link's Adventure.  In addition, there's a central hub area on the world map that serves as a save point and a shop, and you warp back there after completing a level.  So far, so good.

The overworld is where the Zelda 2 influence shows itself.  From the graphics tiles representing areas you can enter, to the black silhouetted enemies that pop up and pull you into a short level if you touch them.  If you've played Zelda 2, it's very similar.  Except that you can pause and select "exit to map" if you didn't want to actually get pulled into that short level by the black silhouetted enemies, which I'll leave as a plus.

The main stages are very much Mega Man-inspired, mostly consisting of a series of screens you navigate without a huge amount of screen scroll involved until you reach the edge of the screen.  There are a few exceptions, though.  There's a stage that takes place on a train that's just one long stage rather than being divided up into screens, as one might expect a train stage to be.  Also, there's a stage where you're flying a vehicle that's an autoscroller.  There are other examples on a smaller scale, but those are the notable ones.

The music is great.  It's very NES-inspired, to go along with the graphics.  It probably uses more sound channels than the NES had available, though.  In the case that's true, they're not real chiptunes.  Still enjoyable though.  I'll take an NES orchestra.

Controls are fairly normal, but have their quirks that are tied to the overall design and premise of the game.  You play as a bird that uses guns.  He has a sword, but you can't really use it in combat too much, it's more for clearing obstructions and knocking armor off of certain enemies.  The main quirk is the guns: they're plants.  You can plant seeds that grow into guns, and as you play through the game, more guns get unlocked.  You have to buy the vast majority of them, but the basic pistol is unlimited.  Just pressing the button grows a gun that you can then pick up and use until it runs out of ammo, but if you hold the button, a turret grows instead.

If you were to go off of everything I've just said, you'd probably be 100% ready to plunk down your money for a neat indie retro-inspired platforming adventure game.  However, there are a number of things that may make you reconsider, that I will now delve into.

Sunday, September 30, 2018

Octopath Traveler: Session 19

I did a little work on the spreadsheet since I got access to a whopping one extra weapon in Wellspring now that Alfyn can use Inquire on everyone there, and then while pondering how best to add a sheet for his concoctions, I had to resist my inner DBA instinct to relate the hell out of the data (in a spreadsheet, running through a heavy and sluggish layer of JavaScript, mind you).  I think I'm going to bite the bullet and manually enter all the effects, even though I could do stuff like "Oh, Noxroot deals with poison!  Make the sheet automatically recognize that it cures poison on allies and inflicts it on enemies!  And by the way, it also deals fire damage to enemies!  And if you use it on a single enemy, the fire hits twice!".  Just reading that and thinking about how you would lay that out to all neatly and automatically figure itself out is a nightmare that anyone can realize regardless of technical level.  Remembering that the best way to complete a game is to actually play it, I put down the Google Sheet and picked up my Switch.

Where was I?  Oh yeah, Alfyn and Therion.  They're both in the party so they can both get experience, so let's jump straight into Alfyn's Chapter 3, shall we?

Alfyn arrives in Saintsbridge and witnesses another apothecary examine a wounded man and then refuse to treat him.  Alfyn doesn't understand why he refused treatment, and the response of "some people aren't worth saving" doesn't really help, because in Alfyn's mind, everyone is worth saving.  Alfyn tends to the man, whose name is Miguel, and finds out he's a thief during the process.  He promises Miguel that they'll raise a glass together at the local tavern once he recovers, but only if he agrees to stop the whole thievery thing.  Oh Alfyn, so naïve.

Checking out the local tavern himself, Alfyn notices a child passed out on the floor and a mother crying for help.  Alfyn tries to figure out why the kid's passed out, but the other apothecary shows up and does it better, and reveals his name to be Ogen.  Apparently it was the snow peas his mom no doubt had him eat.  Anyway, Alfyn goes back to check up on Miguel and ends up staying there the night.  Once he wakes up, Miguel's gone, and of course, immediately back to being up to no good.  Specifically, Miguel is now holding the kid from the tavern at knifepoint in an attempt to get money from his mother.  Upon seeing Alfyn, he grabs the kid and runs off into the nearby woods.

Alfyn follows, fight ensues.  Every time Miguel recovers from being broken, his weaknesses change, but the standard rhythm of breaking his guard and then unloading Divine skills and other high damage attacks did the job.  Alfyn tends to the kid, who got stabbed by Miguel, and takes him back to town.

As Alfyn is leaving town, he runs across Ogen, and they get to talking.  The stage of apothecary-ness that Alfyn is in is apparently a pretty common early apothecary thing, you know, the whole "I wanna help everyone regardless of anything" phase.  Ogen tells his back story, which explains how he progressed on from the naïve stage that Alfyn is in, to the more realistic "I choose who I treat" stage.  After some compliments about Alfyn's tonics, the two part ways.  Alfyn randomly decides to head to Orewell next.

Therion's Chapter 3 is in Wellspring.  Since I ended last session with Olberic's Chapter 3, which also took place there, I could've done Therion's first, but decided to get a change of scenery instead.

Therion speaks to the shadiest looking NPC he can find in hopes of finding the black market in Wellspring, and soon enough he's got his lead: go to the tavern and order something that isn't on the menu.  The real black market is in a nearby cave, and it's run by the tavern keeper.  There's a guarded building with some merchants in it in town, which I mistook for the black market since the merchants inside talk about it.  Anyway, now that he's found the black market, Therion needs a way in.  Given the choice between walking all the way back to town to hit up the tavern keeper again, or simply stealing a mask from an NPC five feet away from me, I chose the latter.

Therion is close to getting the emerald dragonstone when it gets stolen by some other thieves.  Therion chases after them and has a reunion with his old buddy, Darius.  They aren't on such good terms anymore, so guards had to be fought, and Darius had to be pursued.  Darius just out of his grasp, Therion ends up fighting his main guard, a guy by the name of Gareth.  Gareth has a couple minions who heal him a lot, and he keeps changing stances, which changes which of his weaknesses are available to be hit, but once his guard is broken it's all the same anyway, so a healthy beating from Draefendi's Rage and Aeber's Reckoning saw him defeated.

Darius is headed to Northreach, so Therion is naturally following him there.  Darius' group basically controls the town, and they now have both the emerald dragonstone and the gold dragonstone.  I really want to refer to them as the dragonballs, but there's only four of them.  Anyway, shit's gonna go down when Therion gets there, you know, whenever I actually do his Chapter 4.

For now, I'm in that "between chapters" state, and I have a plan.  Run around doing inquiry and thievery, level up Alfyn some more so I can do more inquiry (I'll impose a reasonable limit on it, probably the level 50 milestone since I just passed the level 45 one, although I have yet to encounter someone who requires higher than level 60 and it's tempting to go for that).  I also want to give those four extra shrines a try now that I have better equipment and so forth.  There are also various NPCs guarding various buildings that I haven't defeated yet due to their high star ratings, I'm probably more than strong enough now for either H'aanit or Olberic to beat them senseless in relatively short order.  There's a fair amount to be done, so hopefully I can get a decent portion of it done before delving into Chapter 4.

Saturday, September 29, 2018

Octopath Traveler: Session 18

After a few days of making sure I wasn't falling too far behind on YouTube, I decided it was time to do Chapter 3 for Cyrus and Olberic.  But first, a little equipment shuffling and party maintenance.  I decided to put Alfyn in the party this session, to let him level up a bit.  Both Cyrus and Alfyn needed a bit of attention, because Alfyn had no accessories, and neither had a secondary job as I tend to remove secondaries from people when I take them out of the party.  Not wanting to go all in on equipment knowing full well that I don't even have access to all the equipment from the third town in each region, I just shuffled the good stuff around.

Cyrus arrives in Stonegard looking for the tome From the Far Reaches of Hell.  He starts his search at the local book bindery, and ends up talking to the person who did the translation.  His name is Dominic, he's not too proud of having translated it, but he was in a bind and really needed the money.  Cyrus had been noticing someone following him for a while, and finally confronts them.  The person turns out to be Lucia, the assistant to the Royal Academy of Atlasdam's Headmaster, Yvon.  She says Yvon is up to no good and that she can't stand by while he does it, and tells Cyrus that Yvon grew up in Stonegard.  Being the naturally curious scholar he is, Cyrus wanted to visit the house.  However, as soon as he enters, Lucia attacks him.

Cyrus wakes up in a dark room whose only exit is straight up, being taunted by Headmaster Yvon.  Lucia is right there with him.  Yvon leaves Cyrus down there to starve after Cyrus refuses to join him, and after a little bit of looking around trying to find an exit, someone else opens the hatch and lowers a rope.  Surprise, it's the student who wanted the "personal lessons", Therese!  However, Yvon shows up and takes her hostage, so Cyrus naturally decides to go save her and stop Yvon in the process.  Also, Lucia is completely gone.

The enemies in this area spam status effects and were rather annoying to fight.  I didn't really have the best weapon spread in the world, and it didn't help that both Cyrus and Alfyn were a bit over 20 levels behind H'aanit and Ophilia.  Alfyn was basically on Donate BP duty with the Merchant secondary I gave him, since his damage is kinda crap.  A lot of things were weak to Bow, this led to me spamming Arrowstorm, and using Draefendi's Rage with reckless abandon.  Whatever, it worked.

Cyrus finally reaches Yvon's chamber, suitably placed in his basement at the furthest point from the stairs down from the ground floor.  He pulls out a blood crystal not unlike the ones Cyrus found in Quarrycrest, uses it to transform into a demon version of himself, and thus the battle is on.

Unlike previous battles of this nature, there was no "can't use these weaknesses until you kill the minions first" mechanic.  He gained more hits on his guard every time he recovered from being broken, but also gained another weakness.  At one point, he "lost control of himself" and got a permanent critical hit buff.  I just kept hitting him with Draefendi's Rage and Amputate, and he died before too long.  In typical "I get to get my last words in before I actually die" fashion, he spouted something about immortality and a promise having been broken.

Therese passes out shortly after being rescued, so Cyrus takes her back to the inn.  Once she comes to, they have a bit of a conversation, wherein Cyrus finds out that Yvon was plotting to kill Cyrus, and then head to Duskbarrow.  Given that From the Far Reaches of Hell is still yet to be located, Cyrus decides that answers will be had in Duskbarrow.

Fast travelled over to Wellspring, did a bit of inquiry now that Alfyn is above level 40, and unlocked more stuff at the general store.  Yay.  Wellspring also happens to be where Olberic's Chapter 3 takes place, so I swapped him in, set his secondary as Merchant, and changed Alfyn over to Scholar so he could use some JP to learn Analyze.

Olberic asks around about Erhardt and finds that he's highly respected here, for defending the town from lizardmen.  Just as he's getting to business with the captain of the guard, the lizardmen attack, and Olberic joins in on the defense.  After fending off the attack, Olberic decides to push deeper into their cave, where Erhardt has already been, fighting lizardmen alone.  Erhardt is surprised to see Olberic, to say the least.  They fight off some more lizardmen, and then the lizardmen chiefs attack, so they split up and each take one of them.

It was an interesting fight, the chief didn't attack as long as its minions were alive, so I identified weaknesses and wore down the leader's guard for a bit before taking them out.  The chief itself died shortly thereafter.  What, does the combination of Draefendi's Rage and Brand's Thunder hurt or something?  Oopsie!

Anyway, Erhardt and Olberic have themselves a good discussion about everything that's happened, and it doesn't really seem like Olberic actually wants to kill Erhardt.  He does challenge him, though, which was fun.  Erhardt had a bunch of weaknesses, but the only one I could exploit was Polearm, so I basically just poked his guard down, beat him around a bit with Brand's Thunder, cleaned up HP/SP/status as necessary, and repeated ad nauseam.  If you're reading this and haven't yet done this fight, equip the accessory that prevents Blind.  It'll help.

Olberic gets the name and location of the guy who plotted the downfall of Hornburg, a man by the name of Werner, who went to Riverford.  As per usual, that's Olberic's next destination.

After I finished that, I went around, wrapped up some side quests, beat the guard in front of the Wellspring black market, did some inquiry with Alfyn, and had Therion steal some things.  There's still quite the number of side quests that I have no idea how to continue them, so every time I get a few more key items, I go around and try a few that I think they'll work for, usually to find out that I was wrong.  Whatever, lol.

Up next, Alfyn and Therion.  I'm still waiting to see if all the stories meet up in one "gotta save the world" sort of thing.  I've seen a mysterious hooded figure following people around, notably Tressa at the end of her Chapter 3, and this hooded figure looked a lot like the one that ended up being Lucia.  There's also one among the Saviors mentioned in Ophilia's story, and if I remember correctly, the Saviors have also been brought up in Primrose's story.  They're definitely up to no good regardless, so they'll inevitably get the smackdown.

Monday, September 24, 2018

Octopath Traveler: Session 17

Between last session and this one, a quick Twitter interaction led me to test what stat the healing spells are linked to.  As it turns out, it's Elem. Def., so Ophilia now has armor that boosts that.  My heals are back up to being useful again.  With that done, I fast travelled to Victors Hollow and started Tressa's Chapter 3.

Upon arrival, she starts looking for something that she can sell at the Merchants' Fair in Grandport.  A map at a local merchant catches her eye, that the merchant seems willing to let go of for cheap, but she makes the mistake of letting the merchant know it actually has some value, so just like that, price jacked up to unreasonable levels.  She also comes across Leon, the pirate-turned-merchant she encountered earlier in her journey.  As it turns out, the map belonged to a pirate friend of his, named Baltazar.  Tressa decides to get the one and only thing that the merchant was willing to trade for the map, a stupidly huge shield.  Having successfully traded an incredibly valuable shield for a treasure map, she takes it to Leon.  Back story ensues, but basically he ends up telling her to keep the map and to find the treasure herself.

So she goes and does precisely that.  Guarding the treasure is a beast with venomous claws, so to battle we go.  Because of my equipment, I'm going to stop rating battle difficulty until it catches up to me again.  However, this beast didn't seem to have a big attack to be wary of, it was just the standard "increases its guard when it recovers from being broken" mechanic.  With the beast dealt with, Tressa claims the treasure, a stone called Eldrite that is apparently the only one of its kind in the entire world.  Also in the chest is a letter from Baltazar to Leon, so Tressa takes that back to Leon.

More back story ensues, and in the end, Leon leaves Tressa with the Eldrite.  She now has something to sell at the Merchants' Fair, so her next destination is none other than Grandport itself.

Shifting gears a bit to a much darker story, I fast travelled over to Noblecourt to start Primrose's Chapter 3.  As you may recall, she'd just killed one of the three men responsible for the death of her father, and has returned home to Noblecourt seeking the truth.  Will she be able to handle the truth?

Upon arrival, there's a commotion in the main square as someone's apparently dying in public.  Primrose notes that nothing about that event or the way the city handled it would have happened if her father was still around.  Shortly thereafter she starts getting recognized by people who last saw her when she was a child, including a gardener from her house way back when who also used to write poetry and comfort her periodically.  She also meets the former Captain of the city watch, who tells her that a group called "The Obsidians" basically runs everything in town, and takes her to the entrance to their lair.  Another of the men she needs to kill in order to avenge her father happens to be in charge of things there, so it seems fairly straightforward.  Run in, exchange pleasantries, casual fight to the death.  You know.  The usual.

Instead of having his two minions who prevent his weaknesses from being exploited straight away, the Right-Hand Man summons them a few turns into the fight.  I had to deal with him being two lousy hits away from being broken while I figured out the minions' weaknesses and took them out.  He was annoyingly applying Blind a bit too often for my liking, but with Ophilia spreading the Rehabilitate around, I offed the minions and went back to work.  A few turns later, and he too was down for the count.  Fittingly, Primrose dealt the killing blow.

After the fight, the gardener she met earlier suddenly appears in an oh shit moment, because surprise he's the last person she needs to kill.  Except that he stabs her.  You know, for good measure.  Unfortunately for him, he didn't stab her good enough, and she recovers after a few days.  The ex-city watch guy tells her that he went to Everhold, so that's where Primrose is headed next.

Up next, Cyrus and Olberic.  Side note: I really wish that out-of-party characters would get a percentage of XP, just like in Chrono Trigger.  I wouldn't have all my out-of-party people being 20-30 levels behind like they are right now if that were the case.  I think the intent was for the player to be shuffling their party around a lot more often...

Octopath Traveler: Session 16

After gathering all the equipment and consumables data into a Google Sheet where I can filter it and sort it and encounter annoying issues with Google Sheets and make workarounds for their stupidity, I put together a shopping list.  Naturally, purchasing everything on said shopping list almost completely drained my money, but selling the old stuff recouped a fair portion of it.  Side note, I really wish there was a series of shields that was a straight upgrade to the Kite Shield.  It's the best shield I've found so far that doesn't have some crappy penalty to evasion.  Also, in buying all the good armor, I had to forgo elemental defense, so we'll see how that comes back to bite me.  Anyway, now that I'm kitted out, it's officially time to start Chapter 3.

H'aanit arrives in Stillsnow, seeking the sage Susanna.  Susanna reveals that she's no oracle and that everything she does is power of deduction and getting others to reveal things, which is how those fake "psychics" work in real life.  Anywho, the good news is that the petrification is one of those spell effects that disappears when its caster dies, so all H'aanit has to do to save her master is kill Redeye.  In order to do that, though, she needs a specific herb called "Herb-of-grace" that has the power to prevent the petrification.  It happens to grow in the nearby woods, by sheer coincidence, so off H'aanit goes.

At the end of the forest, near the patch of Herb-of-grace, there's a dragon.  H'aanit has a flashback about her master's stories and how they get longer with each retelling, and decides this will make for a most excellent story before jumping into battle with it.  This fight uses the whole "can't use some weaknesses yet" thing, but instead of the dragon having two minions like in the other cases, the battle simply plays out like you're slowly weakening its defenses over time, meaning as it recovers from you having broken it, more of its weaknesses become available to use for the next time you break it.  It also strengthens its guard, this time by three instead of two.  Interestingly, it has an ability that sweeps a party member out of battle for a few turns, and it used it on Ophilia, so I had to have Tressa do a bit of healing with Healing Grape Bunches until she came back.  Owing to the equipment I just purchased, no doubt, the battle wasn't so bad.

H'aanit returns to Susanna's place with the Herb-of-grace and tells her the story of the fight while it brews into a potion.  Once that's done, I received ten "Herb-of-grace Potion" consumable items, so it looks like I'll actually have to use them in battle myself.  As H'aanit is leaving Stillsnow, one of the Knights Ardante shows up and informs H'aanit that Eliza has located Redeye, near Marsalim.  That'll be the setting for H'aanit's Chapter 4.

Hopped over to Goldshore to do Ophilia's Chapter 3.  Right off the bat, she has another encounter with the merchant that showed up in her Chapter 1.  I thought there was something suspicious about him then, and nothing about this meeting has changed that feeling.  Anyway, she heads up to the cathedral to do the Kindling, but the bishop there is very clearly hiding something and acting rather suspiciously himself.  Ophilia follows a small child who she sees running out of the cathedral and begins to find out what's going on: some random guy asked the kid to give a letter to the bishop, and upon reading that letter, he was clearly shaken.  Getting straight to the point, Ophilia gets him to dump the goods: it was a ransom note.  His daughter has been kidnapped, and he'll get her back in exchange for the Flame that Ophilia carries.  Standard "tell anyone and she dies" threat as well.  Never being the one to avoid helping people, Ophilia runs off to the cave where the bad guys are hiding.

The fight was kind of interesting.  Some weaknesses couldn't be hit, as per usual.  The two guys were both mages, however one was a healer that kept popping off 800 heals for the both of them every couple of turns.  Naturally, after revealing weaknesses, I focused the healer and took him down, at which point all weaknesses became available to hit.  Shortly thereafter, the other one bit the dust.  I make it sound easy, but my lack of elemental defense at the moment left me in fairly constant need of healing, and Ophilia's lack of elemental attack meant that her heals weren't as potent as usual.  I definitely need to rethink the equipment I bought, but regardless, through the use of BP, I was able to keep everyone alive and take them down.

Bishop's daughter safe and sound, Ophilia performs the Kindling, and speaks of returning to Flamesgrace.  Just then, who should enter the cathedral but Lianna.  Back at the inn, Lianna reveals that her father (Ophilia's adoptive father), the archbishop, has died.  She also drugs Ophilia's drink, and then she and some mysterious hooded figure steal the Flame and head off to Wispermill.  The mysterious hooded guy is promising to be able to bring Lianna's father back to life, and Lianna is clearly in the bargaining stage of grief.  Ophilia somehow heard them openly discussing their plans after having passed out from the drugged drink, so after she comes to, she vows to go to Wispermill and reclaim the Flame, and Lianna as well.

Up next: Chapter 3 for Tressa and Primrose.  I'll re-evaluate equipment after that, since I'll also be shuffling party members around for the rest of Chapter 3.

Edit: Actually, effective immediately, Ophilia's now wearing a Platinum Vest instead of Platinum Armor.  I did a quick test, and found that healing amounts are linked to Elem. Def., which the Platinum Armor doesn't boost.  My healing should be a lot better now.

Friday, September 21, 2018

Octopath Traveler: Data Gathering Session 2

...aaaaaand done.  That felt like it took forever, but I really just needed to establish an optimized workflow.  Once I got things rolling it wasn't really so bad.

However, in the process of trying to set up the spreadsheet to be shared, I learned a lot about the shortcomings of Google Sheets.
  1. Rather than selecting "Publish to the web...", you have to select "Share...".  Why aren't these two options under the same menu selection?
  2. Filters are awesome, but don't get shared along with the spreadsheet.
  3. The green color used in many places to indicate that filters are present still propagates through to the shared spreadsheet, though.
  4. If I have the spreadsheet open, and filter it, it becomes filtered for anyone who's viewing it.  lolwut?
  5. The sorting options in each column's filter menu have to be undone by the standard editing Undo action.  There's no "revert to unsorted state" option.
If you want to use this spreadsheet, you'll have to go to Data → Filter views... and make a new temporary filter view.  Only then will you be able to filter and sort it to find what you're looking for.  This kinda sucks, but there's no other option.

Also, I've enabled comments on the spreadsheet.  Hopefully, if I've missed anything, have a typo somewhere, or some equipment stat anomaly has gotten past the sanity checks I did as I entered information, people can comment and let me know.  Keep in mind that it's not complete yet, as I still need to Inquire/Scrutinize in a few towns to get access to the full inventories of their shops.  I'm also filling in recovery amounts for various consumable items since the game doesn't see fit to tell you what they are, and that process isn't complete yet.

Here's the link to the spreadsheet.  This is a separate, static view of the one I'm working on, without any of the formulas or the sheets that just serve as lookup tables and sets of data for data verification rules.  Lacking all that stuff, it should load a lot faster.  Enjoy!

Octopath Traveler: Data Gathering Session 1

So, I have a slight issue with the way Octopath Traveler handles the player's acquisition of new equipment.  It's basically spread out among a bunch of towns, and they just say "figure out what's best yourself lol".  Unless you're like me, you'll probably have to fast travel around comparing stats and whatnot to find what you need.

I've never been one to pass up an opportunity to make myself a solution.  I've also always had issues with the ways that games present information, usually it's not in a manner that I can easily digest.  If you recall, I made a PHP/MySQL application a while back for the StreetPass game Flower Town, just so I could track my progress and see what I had left in a way that much more completely and concisely told me what I had and hadn't done.

It should come as no surprise that I started work on a spreadsheet of all the equipment available for purchase from shops.  It may come as no surprise that I'm also including consumable items in this spreadsheet.  I've been asking myself "where did I get this thing?  If I knew, I'd go back and get more!", and that's precisely what this spreadsheet will tell me.  Well, not completely.  If I got it from a chest, or boughtstole it from an NPC, it won't be in the spreadsheet.  At least, I'll have a pretty good indicator as to which items I can readily get more of.

This is a fairly time-consuming process, hence my actual game progress has come to a halt.  I even restart the game periodically so the time I spend standing there with one or another shop's menu open won't count towards the gameplay time on my save.  Up until the time of this writing, I've got half of the game's shops documented.  I need to get the other half, and then I need to get Alfyn levelled up more so he can Inquire about things, since one of the things you can get from that is additional stock at shops.

Making this spreadsheet has been an interesting journey of writing formulas, using the hell out of named ranges, and adding in data verification and conditional formatting.  These sheets are designed more like database tables, to be honest.  I'm using VLOOKUPs all over the place.  I have a duplicate equipment protection conditional formatting rule in my equipment sheet that takes so pointlessly long to actually apply its formatting that I might as well not have it.  The performance issue is either due to the fact that it has to compare what I've entered to everything else in the column, or that every row on the sheet is subject to a VLOOKUP from my main equipment sheet with all the pretty formatting, to pull in item stats and whatnot so I didn't have to keep typing them out over and over again, and every time I change a cell the VLOOKUPs are getting re-evaluated even though the sheet they're on isn't even visible.  There's probably a way to optimize it further than I already have.  Do I know what that way is?  No!

In my typical fashion, I'll post a link to this spreadsheet once I'm done making it, so everyone can bask in its glorymake use of it.

Thursday, September 20, 2018

Octopath Traveler: Session 15

Pledging to come back to Shrine of the Archmagus later, I left, and got to Duskbarrow proper.  After noting that Alfyn needs to level up in order to Inquire about all of the NPCs here, I stole what I could with Therion, did some side quest stuff, and fast travelled to Stillsnow.

In Stillsnow, I investigated the trail leading out the back of the city before progressing on to the next uncharted area of the Frostlands, Southern Northreach wilds.  Once there, I noted that there isn't a shrine in this area, and then made the quick trek north to Northreach itself.  Nothing terribly special happened here either, just side quest stuff and more of Alfyn being too low level to use his path action.  Stole what I could, and fast travelled to Noblecourt.

Then Switch update 6.0.0 came out, and with it, Nintendo Switch Online.  I started the free 7-day trial and spent a while playing The Legend of Zelda.  Also, protip, if you have a Japanese eShop account and Nintendo Switch Online active on your US account (as I currently do), you can use the Japanese account to download the Japanese NES application, and run it under your US account.  All the text will still be in Japanese, but hey, if there's ever any region-exclusive releases, you should be covered.

Anyway, back in Octopath Traveler, I headed out of Noblecourt and north to Western Wispermill Flats.  This area does have a shrine, specifically the Shrine of the Starseer.  Remembering my previous experience I just poked my head in to get it on my map, made a note of it for later, and carried on to Wispermill.

I could tell as soon as the Wispermill music started playing that something's going on here.  Attempting to talk to the locals confirms my suspicion, as they only seem capable of grunting at me with varied levels of emotion.  Something's clearly taken their ability to speak.  The only NPC that would actually talk was a side quest NPC, Theracio.  Nothing to steal, only one chest, and Alfyn's too low level to Inquire, so I moved on.  Continuing my own personal quest to explore to the third town of each region, I fast travelled to Goldshore.

I worked my way through West Grandport Coast, noting the lack of a shrine.  Given that Grandport is where a lot of merchants set up shop, Therion had a field day stealing basically everything.  After a bit of fast travelling around and resolving some side quests that I now had the items for, I moved on to Stonegard.

To get to Everhold from Stonegard, one must travel through West Stonegard Pass.  Once in West Everhold Pass, the town is actually the most straightforward place to reach, despite the winding path up the hill.  This time, I explored the town and stole what I could before poking my head into the sub-areas.  Poked my head into the Shrine of the Runeblade while I was in the area.

The Highlands explored sufficiently for now, I fast travelled to Wellspring and made my way to Marsalim.  Did the usual running around and stealing what I could while activating side quests, and then it was on to Saintsbridge.

...Or so I thought.  Upon closer inspection, there doesn't seem to be a way to go south from Saintsbridge.  Noticing a path on the map that runs through the Cliftlands, right along its border with the Riverlands, I decided to fast travel to Quarrycrest and see if that would work.  I saw that it indeed would work, so I skipped right past Orewell to visit Riverford.

Know how I suggested that some serious shit had happened in Wispermill?  Well, that ain't shit compared to Riverford.  The town square looks to be set up to burn people at the stake, and all the residents are on edge.  I did the rounds with Therion and promptly got out of their business.

The journey to Orewell wasn't so bad, and I picked up the Shrine of the Warbringer on my way out of the general Riverford area.  Orewell itself is rather tiny, so there wasn't much to see, and equally as little for Therion to steal.

That concludes my exploration of the world map, outside of areas I'm currently barred from entering because of story reasons, I've been everywhere.  I haven't done everything, but I've made notes of it all so I can refer to them later, perhaps between chapters 3 and 4.  Before I begin chapter 3, though, there's one last thing: equipment upgrades.  Equipment is so far spread out in this game that I'm going to need to make a list of it all in order to make sure I've got everything I want, so that'll take a bit.  We'll see just how long it takes...

Monday, September 17, 2018

Octopath Traveler: Session 14

Took a couple days' break there to relax and make sure I wasn't falling too far behind on YouTube videos.

This session started off with me going around making a note of the sub-areas in each explorable area and whether or not I'd cleared them, which is something I'd neglected to do up until this point.  I cleared out the Tomb of Kings, but it didn't have a boss in it.  It did, however, have a gravekeeper NPC at the end who told me to bugger off, and I suspect this area might be used in the story or something.  Since that sub-area is along the path that connects Stonegard and Wellspring, I explored that path and got chests.  At this point, I think I've explored everything except for the areas that contain each region's third town, and any other connecting areas between them.

In the process I got a bunch of JP and had Primrose learn Scholar.  Switched her over to it from Hunter, so now I have someone in the party who can use Analyze on bosses and so forth.  Should make things go more smoothly at the beginning of fights with new enemies.  She obviously doesn't have the Study Foe ability that Cyrus has, but Analyze is cheap and she regenerates 10 SP per turn anyway, so it doesn't really matter.

I've basically stopped actively trying to grind JP at this point, it seems to be much more worthwhile to explore and get JP as a byproduct of that than to stay in an area and run in circles.

After a bit of jumping from town to town, buying equipment as necessary so I'd be ready to start Chapter 3, I decided to actually explore one of the areas I had yet to explore: East Duskbarrow Trail.  Enemies there are definitely higher-level, as the fights took a bit longer than I'm used to, but it wasn't anything I couldn't handle.  Then I happened upon a shrine.  A ninth shrine, entitled Shrine of the Archmagus.  This gives off Scholar vibes to me, so... more Scholar stuff, somehow?  Likely another Divine skill?  That means there's probably a second shrine for all the other jobs as well.  Anyway, what sets this one apart from the eight I've been in thus far is that it contains enemies.  Especially at the end, where you get talked to by Dreisang, the Archmagus.  He offers up juicy "lost secrets", but you have to prove yourself worthy first.  Okay, a fight, let's go, right?

Well, first off, he hits like a truck.  He does the "strengthen my guard every time I recover from being broken" thing as well as the "cycle my weaknesses when I recover from being broken" thing.  No problem, I say to myself, I've got a variety of weapons, access to all elements via spells, and Primrose knows Analyze.  Analyze also shows you a foe's HP, but I have this nasty habit of paying more attention to the foe's weaknesses than the HP box that briefly shows up, so I didn't notice Dreisang's HP for a while.  I randomly decided to analyze him while I had him broken, just to see what I had left, and... it was over 131,000 HP.  A hundred and thirty-one thousand.  Yeah no, with my damage being in the hundreds when not boosted, and my largest sources being 5000-7000, there's no way that's happening any time soon.  It was only a small consolation that all my efforts thus far had succeeded in knocking ~40k off of him (if memory serves, his max HP is around 171,000...).  You can't flee the fight, but fortunately, there's a save point just before it, and I'd saved there.  One reload later and I'm free to roam the continent in my next session.

I say "next session", because I need sleep.

SERIOUSLY THOUGH, A HUNDRED AND THIRTY ONE THOUSAND.  I mean, I'd settled into a rhythm and was handling the stuff he was throwing my way relatively easily, so I know I could've done it, but I was just too tired to whittle through that much HP.  Definitely later.

Thursday, September 13, 2018

Octopath Traveler: Session 13

This session, I went back around grabbing purple chests out of areas where I didn't have Therion in the party the first time, finished up side quests, and took on a couple cave areas; and in the process I fought things and got all the usual ancillary benefits.  This kind of stuff is really hard to elaborate on in the meandering manner required to pad out the length of this post, to be honest.

I finished up a few side quests here and there.  I currently have an aspiring actor following me, looking for another because they both have to be recruited at the same time for some stupid reason, but I may have to part ways and go back to Noblecourt to get him again later.  As it turned out, apparently I'm blind and the moneylender that was a part of a side quest in Atlasdam was standing right next to the NPC that gave me the side quest, and in fact, I'd already used path actions on him.  Beating him up solves the side quest, so yay.  Gave Lorie's diary to the NPC that was looking for her, though I'd already found her gravestone lol.

Fully learned a few more jobs.  H'aanit and Ophilia are now only missing each other's primary jobs as secondaries.  Others are missing a lot more, especially the people I don't use as much.  I'm trying to get Scholar learned on as many people as I can, so I can always have someone in the party with Analyze to assist in figuring out enemy weaknesses.  I have sort of a process for doing it without Analyze, but Analyze would make it go a lot faster.  In developing my process, I logic'd out the order of the weaknesses.  You see, there's up to five weaknesses for any given foe, but they always appear in the same order regardless of any gaps between them.  Knowing this order lets you more easily decide what to try next once you find one that works.  Also, some enemies actually have logical weaknesses, whether to weapons or elements, which always helps because you can just whack them with whatever makes the most sense and it'll probably be a weakness (for example, treants are weak to axes and fire).  Unless you're trying Lightning on a foe that's wearing armor.  I'm so used to armored foes always being weak to Lightning from Bravely Default and Bravely Second that the lack of that here kinda trips me up.

The caves just outside of Wellspring I thought were really easy, up until the boss at the end.  Kinda had to hit the home button and restart the game, the fight was just going nowhere.  Death loops aren't particularly fun, especially when coupled with a foe that puts your entire party to sleep before wiping out half of them.  It's a side quest thing, I'll come back to it in about 20 levels or so and wipe the floor with it, I guess.  Before it got me in the death loop, I'd only managed to figure out that the guy accompanying the giant serpent was weak to staff as his third weakness of five, which meant that weaknesses four and five have to be elements.  I never really got the chance to try anything else, though.

Anyway, if I don't decide to devote next session to more purple chest opening or any side quests/exploration, it'll be time for H'aanit's Chapter 3.  In that regard, I left myself in Stillsnow.

Wednesday, September 12, 2018

Octopath Traveler: Session 12

Time for Alfyn's Chapter 2!  I left myself in Stonegard at the end of last session, so the first order of business was getting to Goldshore.

Alfyn arrives in Goldshore noticing that there's a sickness going around, but also that there's an apothecary already in town by the name of Vanessa that's treating it.  He introduces himself, they have a nice chat, everything seems fine, but this Vanessa just has a dark vibe to her that I can't ignore.  Maybe it's just the way she turned Alfyn's request to learn a thing or two about medicine away with some diatribe about "trade secrets", I dunno.

Anyway, as Alfyn peruses the village, he notices that everyone that Vanessa has cured is now suddenly coming down with symptoms of a whooping cough from a far-off land.  Vanessa's intentions are made reasonably clear when he sees her selling a remedy for the cough to nobles at an exorbitant price, and refusing to come down on her price for a commoner, claiming rarity of the primary reagent.  Alfyn goes to treat the commoner's child and discovers what's going on: Vanessa's offering a free cure for the original sickness that involves an ingredient that causes a cough much like that whooping cough as a side effect, and then she's bilking people out of their money for the remedy to the cough.  I can't sympathize too much with the plight of the nobles, but her intentions are clearly not on the honorable side.

Alfyn asks around and finds that the primary reagent for the cough remedy, a glowing moss, happens to be found in a nearby cave, so he heads there to find it, and most likely Vanessa as well.

Said cave is fairly short and to the point, however filled with random encounters it may be.  Sure enough, at the end of the cave, Alfyn sees Vanessa, and she is indeed 100% in it for the profit, like most medical professionals in the real world.  Alfyn makes his presence known, and it's party time.

I must be getting to the point where they want me to know about this mechanic, because it's suddenly popping up everywhere: Vanessa has two sellsword guards, and as long as they're alive, her guard can't be weakned.  Predictably, she spends the fight throwing various concoctions at you, and using others to buff her guards.  Poison is a particularly nasty status effect in this game, left unchecked it will drain a lot of HP, and she throws it out every few turns.  H'aanit with the Patience support ability is especially vulnerable, since she takes poison damage at the end of her regular turn, and then again at the end of her Patience turn.  Anyway, once the status effects had been dealt with, I had also managed to kill her guards, so I broke her guard and hit her in the face with all kinds of Divine skills and the like until she'd been beaten senseless.

Alfyn uses a sleep concoction on her to ensure she'll still be in the cave when the guards come to get her, takes some of the moss for himself, and heads back to town to make the remedy and give it to the commoner that needed it.  Satisfied with his visit to Goldshore and having helped its people, he leaves, declaring the next stop on his journey to be Saintsbridge.

The next stop on my journey, though, is Noblecourt, for Therion's Chapter 2, and thus to wrap up Chapter 2 for everyone.  I don't yet have the ability to fast travel there, but Atlasdam makes for a suitable staging area for the journey, so I fast travelled there instead.

The journey from Atlasdam to Noblecourt was rather uneventful.  Therion immediately overhears people talking about a crazy scholar by the name of Orlick who's locked himself inside his mansion doing research, and decides that's the guy with the ruby dragonstone he's looking for.  As it turns out, not only has he locked himself in there, he has guards to keep people out, and the only way in is the front door, and thus in plain view of the guards.  An alternate approach would be necessary to gain entry.

Consulting the powers of eavesdropping on other people's conversations at the tavern, he hears a couple guys talking about Orlick.  He joins in and offers them a drink if they'll tell him what they know, and he ends up finding the name of Orlick's old research partner, Barham.  Barham happens to live on the south end of town, so he heads there to see what he can find out.  As it turns out, Barham is more than willing to cooperate in Therion's removal of the ruby dragonstone from Orlick's possession, only because the two used to be friends before Orlick's research consumed him.  Therion just has to procure some stuff from local merchants, and he'll get the password to give the guards so he can get into Orlick's mansion.

The stuff Barham had Therion obtain ends up being components he uses to make a key, that Therion needs to get into Orlick's lab.  Therion takes the key, bluffs the guards with a story about an urgent delivery, gives the password, and walks right in the front door.  After wading through random encounters, I finally reached Orlick's lab.  As per usual, Therion's just about to grab the dragonstone when Orlick comes in with the guards from out front.  He's really crazy about that research thing, and given that Therion refuses to back down, the fight begins.

At this point, the "two guards preventing the boss' weaknesses from being exploited" thing is a mainstay of the boss battles, it seems.  Regardless, the same strategy as before worked well, mostly thanks to me being overlevelled, no doubt.  Beat up the guards, weaken the boss, unload Divine skills, win.

Having defeated Orlick, Therion takes the ruby dragonstone and heads back to Bolderfall to turn it in and procure the location of the next one.  As it turns out, the emerald dragonstone is reportedly on the black market in Wellspring, so that's where Therion is off to next.

And with that, Chapter 2 comes to a close.  Throughout Chapter 2, I skipped over a lot of the purple chests that only Therion can open, so I'm going to go back and grab them, as well as finishing up whatever side quests I can, and perhaps getting some exploration in the direction of the third town in each region done before beginning Chapter 3.