Another Tangent: Degrees of Connectedness

NOTE: Given the amount of time and effort I’ve put into finding good example links for this, I decided it would be acceptable to let it double as this week’s fanfic roundup.

While I was reading The Futile Facade (the sequel to The Pureblood Pretense, which I’ve reviewed), I started thinking about how murkybluematter handles making references to Tamora Pierce’s The Lioness Quartet.

In doing so, I realized that there exist four basic ways in which two stories can be connected. From strongest to weakest, those are:

  1. Crossover
  2. Fusion
  3. Abstract/Meta-Narrative Reference
  4. Direct Reference

NOTE: As with pretty much anything involving classifying fiction, the boundaries between these categories and subcategories can get pretty blurry.

Crossover

Anyone with more than a passing interest in fanfiction or comic books will be familiar with this technique. In essence, a story is written where two universes, formerly considered separate, are brought into contact.

As I’ve read a lot of Ranma ½ crossover fanfiction, I’ll use it for most of my examples here.

The key to this approach is that your readers must feel as if these are the canon characters rather than alternative versions. (ie. That the only alternate universe in play is the one the fanfic itself unavoidably creates and its characters were canonical up to that point.)

That said, some fudging of the dates is generally allowed as long as it doesn’t have a significant effect on the story. For example, it’s not uncommon to nudge the Ranma ½ series forward a decade or two in order to make it match up with a series where technology is more important. (Aside from the occasional brief glimpse of a TV or other electronic gizmo and one episode where a Super Famicom is seen, Ranma ½ does a very good job of making itself fairly timeless by making the technology level irrelevant to the story.)

Common ways to bridge series together include:

“Never Separate To Begin With”

This technique involves revealing that stories were in the same setting to begin with by answering the question “If they were the same setting all along, why did the two casts or rule sets never bump into each other?”

This is a popular technique for crossing together anime/manga series because of several facets foreigners see in Japan: Tokyo is huge, Japanese culture is quite reserved in person, and their TV shows tend to be very… not reserved. This disconnect makes it easy for westerners to imagine all contemporary anime and manga take place in the same “anime Japan” universe, ignorant of each other as each part of Tokyo tries desperately to pretend they’re “as normal as” the other parts. (It also helps that Japanese culture tends to impart shared tonal and stylistic elements to their stories which make them seem much more similar to each other than to foreign works in the same genres.)

There are too many examples of doing this without fudged dates for me to just pick one off the top of my head, but an example of doing this with fudged dates would be the Ranma ½ – Sword Art Online crossover Saotome Art Online by Ozzallos where the Ranma ½ timeline is bumped forward to match SAO. With that done, Ranma “gets caught up in a mess, as usual” as a result of doing motion capture and testing to pay off some money he owes to Nabiki Tendo.

This doesn’t include stories where technological hand-waving is necessary to bridge some kind of gulf of time or space. That’s covered further down.

“Never Separate To Begin With” by way of Unreliable Narrator

This trick merits its own category because of how it doesn’t really fit with either of its neighbouring classes and typically involves having two Earths in the same setting without resorting to alternate universes.

In my experience, it most commonly crops up in Star Trek because it’s canonical that an advanced species known as the Preservers are responsible for all the human populations on terraformed worlds that Kirk and his crew encountered and it boils down to making the “Earth” with a more provincial view of the universe into an unknowing copy of the original Earth.

Examples of this include:

  • Depending on how you look at it, pretty much every Battlestar Galactica crossover I’ve reviewed could fit this category. It just doesn’t feel like a full-on fusion to replace the unsatisfying “we are descendants of the Galactica fleet” ending with the Lords of Kobol (be they Alteran, Preserver, or something else), as having established Kobol by taking humans from the original Earth. (The Phoenix and the Wolverine even casts the Cylon Earth as being a world near the real Earth which was too irradiated for Kirk-era technology to allow an investigative team.)
  • Reaper’s Origin by prometheus55 initially gets the SSV Normandy into the Stargate universe via “glitches in poorly understood high technology are magic” but eventually retroactively bridges the gap in a technological way fitting for Stargate canon. Specifically, by revealing that the Furlings were refugees of the civilization that built the Reapers who fled interdimensionally rather than intergalactically like the Ancients. (This story was written before Mass Effect 3 and, to be honest, I think I prefer this Reaper backstory.)
  • A Thin Veneer by AlbertG has the Federation discover the Babylon 5 setting (and its anomalously accurate copy of Earth) when some politicking among the more advanced species of Trek and B5 canon allows a Federation ship to access one of the Preservers’ “warp superhighways”.
  • Someone Just Like Me by IdiAmeanDada introduces Data from Star Trek: The Next Generation to Chi from Chobits by casting the latter as taking place among a near-human-looking species which actually does have anime-style “rainbow hair”. For better or for worse, it chooses to simplify the task of making things believable by having them wipe themselves out with neutron bombs only a few years before the Enterprise comes to evaluate their suitability for contact. (Though, it does foreshadow a “not as thoroughly extinct as initially believed” situation, should the author ever come back to it.)
  • The Dresden Fillies: Strange Friends by psychicscubadiver is a My Little Pony crossover where canon Equestria is reachable from the Nevernever and manages to survive within the Dresdenverse because Celestia and Luna are beings on par with the Fae queens and put a lot of time and effort into wards in the Nevernever to keep it safe and hidden.
  • Mercury’s World by Fire places the Sailor Moon setting inside The Matrix, with Sailor Mercury being the first successful result of a program to breed humans who can act as living magical reactors in the real world.

I’ve also seen it done in Stargate: A New Era by DN7 and Stargate Mass Effect by InHuman Englishman, where it’s discovered that, while the Stargate Network and the Mass Relay network appear to overlap in a typical 2D projection of the galaxy, they actually exist in separate slices of the galaxy when viewed edge-on, with the stargates and the mass relays occupying separate layers of the galaxy.

First contact then occurs when the SG-1 cast find the time and resources to investigate gateless regions.

Advanced Technology or Magic

If your two source settings are unequivocally separate, then the next choice is to find some way to bridge the distance. Examples of this include:

  • A character has cancer and is placed in experimental cryo-stasis until he can be cured… a clerical error leads to him waking up much later than necessary and on another planet. (This is actually the solution a friend and I chose for a fic we still hope to complete and release some day.)
  • An accident with some kind of time-travel or faster-than-light travel technology (or a run-in with a spatial anomaly in an unmapped region) allows two groups to come into contact who normally wouldn’t. (This is andrewjameswilliams‘s favourite method for crossing together different sci-fi settings.)
  • Like the previous example, but with wild magic. (This is the road taken to make it plausible for two very insular settings on opposite sides of the world to come into contact in The Girl Who Loved, by Darth Drafter. Harry feels such shock and revulsion at Dumbledore telling him that the solution to defeating Voldemort is mpreg with Snape, that a burst of accidental magic sends him Jusenkyo, China… speaking of which, it’s a good fic if you ignore the sort of “successful parody of bad fanfiction… but by accident” feel to Dumbledore at first.)
  • Characters could be reincarnated, cloned from a recorded memory, or otherwise mentally transferred into another setting. For example:

Note that none of this automatically resolves the need to reconcile differences in mood/atmosphere/tone between very different settings. (such as western fiction and Japanese fiction.) This is why it’s so rare to see, for example, a good story that crosses Harry Potter with anime.

Fusion

When you have to “nudge things” too far for a setting to be believable canon, you’ve moved into the realm of “fusions”. A fusion is a “same setting all along” story which uses canon characters or settings in recognizable forms, but rewrites their backstories enough to remove the disconnect.

A mild example of this which a skilled author may write in the fuzzy area between crossovers and fusions would be a Harry Potter – The Dresden Files crossover where the “wand wizards” have managed to carve out a little patch of innocence and safety for their children and civilians in the much grimmer, more consequential setting Harry Dresden knows.

In this case, the “fuzzy area” is defined by two things: What “canon” means  to each individual reader and how much skill the author can bring to bear. The more engaged the reader is, the more likely they’ll ignore or excuse changes necessary to bring the settings together.

I enjoy these mild forms of fusion when done well, since they preserve enough of the familiarity for the story to still be riding on the effort of the source material.

A more serious example which can be nothing but a fusion (which I’ve also seen in practice) would be to move recognizable characters from “anime Japan” to the far-future, desert planet “Gunsmoke” where Trigun takes place.

In such a case, it’s simply not practical to bring the canon characters there. Even if you can justify using technology to put them in stasis or bring them in from a parallel universe without it feeling contrived, you still have to use what “suspension of disbelief” you haven’t spent on trying to bridge the differences in atmosphere, tone, and mood between the two stories.

In this case, the fusion is accomplished by rewriting character backstories so that they’re “native” characters by origin, but still match the original characters in every significant attribute.

Personally, I’m not a fan of the latter case for two reasons:

First, when I start reading a fanfic, my interest is in taking known characters, introducing one change (the “divergence event” which starts off the story) and seeing how that changes them.

From that perspective, a fused-in character comes across as “harmful author laziness” because they exceed my ability to compensate for the differences. They’re unavoidably too different to be equivalent to their canon selves, but not original enough to hold my interest on their own merits. (It certainly doesn’t help that 99%+ of the stories I read lack characters who can stand fully on their own merits.)

Second, humans instinctively perceive things as having an identity imparted by their history. This is why a perfect forgery is not valued as highly as a copy made by the original artist, and one of the reasons we recoil at the idea of technologically reprocessing human waste into food rather than spreading it on a field where we don’t perceive the fertilizer as “becoming” the food.

(No matter how similar a fused-in character is, we can never forget that they aren’t the original.)

This is probably why I rarely find fusions written by good authors outside the fuzzy crossover-fusion border region. When you know enough to see the problem, you tend to find an easier way to accomplish your goals rather than burning effort on forcing it to work.

Also, I apologize for not having example hyperlinks for these. Despite a quick examination of the HP-Dresden crossover category on Fanfiction.net over the last couple of weeks, I failed to re-locate the mentioned fusion within the time available to me. As for the Trigun-AnimeJapan fusion, my memory of that detail is too disconnected from the greater story for me to remember anything searchable.

Abstract/Meta-Narrative Reference

Now, we come to the type which inspired this entire post.

The key to making a really good reference is to make something that’s recognizable, yet doesn’t detract from the story as a whole. (eg. by hurting the immersiveness of the setting)

Basically, it should be something so in-character that you only recognize it as a reference because you have extra information which is external to the setting. (eg. If you have one of your characters say the catchphrase of a character from a series that inspired yours, it has to be perfectly reasonable within the universe… not just because you (the author) are trying to say “wink, wink, nudge, nudge.” (While not as bad as breaking the fourth wall, it has the same kind of problem. Having a character say or do something noticeably out of the ordinary to make a reference, without sufficient justification, reminds people of the man behind the curtain (you).)

If you really want to focus on immersiveness and leave people impressed at your ability to weave a tale, then the best approach is to make your references an emergent property of the larger narrative, rather than small, self-contained things that don’t require much pre-planning.

As I mentioned at the start, the best example I’ve seen of this in fanfiction is murkybluematter‘s excellent series of stories which recasts the concept of Tamora Pierce’s The Lioness Quartet in the context of the Harry Potter series. (and, again, here’s my review of the first one.)

For example, in “The Futile Facade” (equivalent to Harry Potter, Book 4), when Leo (the youthful “king of the court of rogues” in Knockturn Alley) says “Besides, I’ve already got my eye on a lass, and something tells me honesty isn’t high on her priority list.”, it makes it clear that his attraction to the heroine isn’t merely one of curiosity or friendship.

It’s so perfectly in character to the story that there’s nothing to complain about, but we know that this story is recasting the concept of Tamora Pierce’s Song of the Lioness Quartet in a Harry Potter setting, and that, in those books, Alanna wound up married to her friend George Cooper, also a youthful king of thieves who wound up becoming a baron.

Because of that, a perfectly reasonable, in-character statement within the story takes on extra meaning for readers who remember how the source material progressed. (And murkybluematter has filled the series with that kind of elegant use of referential re-interpretation. The plot and characters don’t feel derivative beyond what is necessitated by it being an AU… and every time you recognize a reference, the forethought necessary to make it feel natural leaves a pleasant sense of “I’ve discovered an easter egg” rather than a shallow “Yep. I recognize that.”)

…and, importantly for the immersiveness, Leo and George aren’t the same name, nor do they meet the heroine in the same way, because either of those would be too blatant a coincidence.

murkybluematter’s approach produces an engaging story that feels original, but draws attention to the commonalities at points when it’s especially effective. (After all, as the oft-quoted maxim says, there are only 7 stories that everyone keeps rewriting.)

…now, admittedly, no technique is perfect. The flaw to this approach is that, the more familiar the reader is with the source materials (eg. the more recently they read them), the more difficult it is to keep your story from feeling predictable. murkybluematter resolves this problem by making the story thick with original details which help to induce a “can’t see forest for the trees” effect. You’re too busy getting caught up in the events which *aren’t* references to see the references as evidence of a predictable story or, really, even to notice then until they’re on top of you.

Direct Reference

Finally, we come to the most disconnected option. A story can simply make an isolated reference to another story, be it a catchphrase, character cameo, or some other minor nod.

The problem with this approach is that, ideally, every element in a story should improve the whole, and it’s surprisingly difficult to make a one-off reference satisfy that constraint for two reasons:

  1. The whole point of good writing is to build up a world, and a blatant reference to another story detracts from the atmosphere-building by reminding the reader that the story is an illusion crafted by “[the] man behind the curtain” (you).
  2. It takes quite a bit of skill (or luck) to make such a concrete reference subtle enough to feel truly natural, yet overt enough to not be missed by people who recognize what is being referenced.

Generally, the best solution is to employ one or both of the following tricks:

  • If your story’s primary purpose is comedy, then you can get away with more that would normally break immersion as long as your reference really does elicit a laugh… since the comedy more or less is the atmosphere you’re building.
  • If the work being referenced believably exists within your setting, then your characters can be referencing the in-universe version, rather than the real-life version. Examples of this latter case include:
    • A Harry Potter fic I read in which the nearby muggleborns find it inordinately funny when Draco Malfoy, having never heard of James Bond, introduces himself as “Malfoy. Draco Malfoy.”
    • A Harry Potter comedy fic I may have read or may have just envisioned where Harry makes use of a summoned Rabbit of Caerbannog to deal with the dragon in the first task and, again, only the muggleborns get the joke.

As for a more concrete example of a well-done reference, here’s one of Harry Dresden’s thoughts after winding up in Harry Potter’s body in A Wizard Named Harry by Bugz-Toon:

Of course, that didn’t mean that I was going to just sit back and watch the show. As good as Dumbledore was, backup never hurt. And besides all that, if I was somehow fated to be the one to bring Voldemort down, I was going to do my damnedest to make sure it was as unfair a fight as possible. Up to and including arranging for an anvil to be suspended above a big painted ‘X’ on the pavement, if possible. Although I might skip the birdseed part of that one- it was possible to overdo the Wile E. Coyote, suuuuuper genius thing, after all.

…or, even better, this delightful Philosoraptor reference from Harry Leferts’s The Scaly Raptor:

Now that got a laugh out of Owen as he shook his head. “Well, it is unexpected you know… but why not? I got time to kill after all.”

That caused him to get blank looks from the raptors before they looked at each other. Then Charlie reached up with one claw and scratched the bottom of her jaw like she had learned to after copying some of the various handlers. “{How does one kill time? Time not have body to kill nor blood to spill?}”

In reply, Blue scoffed. “{Just Alpha being stupid with saying stupid confusing things.}”

The key being that, if a reader doesn’t recognize the reference, it should fit in as seamlessly as possible and the biggest advantage of this type of reference is that it can also be used in non-fiction.

Posted in Fanfiction, Writing | Leave a comment

Fanfiction – “Harry Potter, the accidental ‘evil'” fics

This week, something that just barely qualifies as a list: Two fics where Harry Potter gets mistaken for a demon or other non-human horror to some degree or other.

(Sadly, no other such fics were noteworthy enough for me to remember them… though, if you don’t mind broadening the scope to other fandoms, The Dark Lords of Nerima is also fun.)

Anyway, let’s get going:

Fallen by ForgerOfLies
Length: 36,394 Words
Crossover: Buffy the Vampire Slayer
Status: Incomplete
When Harry Potter falls into an unaging coma for 68 years after vanquising Voldemort, he wakes up to discover that he gained a few new titles from his final battle including “Harry the Lightbringer”… but fate isn’t done with him yet. Not long after waking up, a hole in time and space opens up below his feet at a ministry ball.

Meanwhile, in Sunnydale, California, a demon tries to summon someone beyond what the Powers That Be or Glorificus can counter: The Morningstar. …he gets Harry instead.

What proceeds to unfold is a comedy of mistaken identity and misread clues. (And, of course, there’s an unhelpful prophecy about him because it wouldn’t be Harry Potter otherwise.)

I especially like the decision to flesh out the joke by having Harry and Dawn Summers bonding over how much they hate shrewd old men shaping their destinies for them… and the conclusion by others that, because it’s already been established that this is Lucifer, every little whim must be a plan too cunning for them to recognize.

That said, that the grammar occasionally trips up (in ways which suggest English isn’t the author’s first language) and, when the plot initially gets going (around when the assassin “Serpent” is brought in to kill Harry), the prose feels a little too shallow for several chapters, so I’d give it a 3.7 out of 5 rating. (It’s still something I’d recommend reading at least once for the novelty of the concept, given how it stuck in my memory for so many years, but it could really use some tighening up in those middle chapters in order to reach 4 out of 5.)

Make sure you don’t skip the omakes at the ends of some chapters. Even when they start slow, the punchlines tend to be great.

The Master of Death by rgm0005
Length: 69,139 Words
Crossover: The Dresden Files
Status: Incomplete
Here we have a Dresden Files crossover by an author who knows how to take that wonderful Dresden balance of seriousness and wit but also to mix in some very engaging extra-universal world-building and engaging conversations between Harry and an OC.

It all starts when Harry Potter, having lived a full life, dies of old age and returns to the train station at the edge of the afterlife. After telling the train’s driver that he’s ready to go, settling down in a cabin, and accepting the hallows which have appeared next to him like a faithful dog, the driver comes to him with a message: He’s being summoned and would he be willing to answer it.

What follows is a brilliant depiction of passing out of one existence and then back into another to visit the Dresdenverse, becoming an Outsider along the way. (Because of the need to borrow a body from within outskirts of the Dresdenverse within Shape but outside Existence.)

Harry then arrives, summoned by Justin DuMorne and, being an ex-Auror, proceeds with his “saving people thing” after a brief legilimency scan. However, as events progress, he quickly discovers that he has a history in this world and, compelled by the threat of paradox, what follows is an interesting series of character interactions: Harry with the OC “afterlife train driver” (which is surprisingly satisfying) who he relies on to plot routes which temporarily exit Time. Harry with Rashid and Ebenezer, who understand that he means no harm, but also recognize that every time he is summoned or departs, it widens the cracks in the Outer Gates (and are unaware that Harry is experiencing their meetings in reverse order). etc.

Thus begins a story that can be thought of almost as a series of connected short stories, with one complete introductory arc, an interlude, and an incomplete arc having been written. The first two feel very much Dresdenverse stories, while the third taking place so far in the prehistoric past that it feels quite different.

While I’m not a huge fan of the incomplete third and and think the story would be much better off without it (it’s simply too original for the author’s skill level to maintain interest properly), the introductory arc and the interlude are excellent blends of what makes Harry Potter who he is (both personaly-wise and situation-wise) combined with the maturity, tone, and atmosphere of The Dresden Files, and with some elegantly chosen original bits for glue and flavour.

I’d say 4.5 out of 5 for the introductory arc, 4 out of 5 for the interlude, and 3.5 out of 5 for the rest.

For a taste of the aforementioned original bits, I’ll leave you with a quote from the driver to explain the mechanics of Harry borrowing an Outsider body:

“Of course not, sir; it just means nothing out there exists. I think you’ll find that there are a great number of things that don’t exist, sir; indeed, we didn’t exist a short time ago.”

Posted in Fanfiction | Leave a comment

Useful Info On Win16-Targeting Compilers… And a List of DOS/Win16 Resources

Updated 2023-03-14: Added link to guide for writing control panel applets in Delphi.

See Also: Resources for Reverse-Engineering 16-bit Applications for DOS and Win16 debuggers and the rest of the Retrocomputing category for other useful resources like installer builders and unit test frameworks.

While I was poking around the web, looking for information on the most liberally licensed way to put together some utilities for the copies of MS-DOS 6.22 and Windows 3.11 for Workgroups on my retro-gaming PC, I ran across a thread on Computing.Net titled win3.x compatable compilers.

Now, given that it was opened in 2007 and the most recent post was as new as April of 2016, I though I might as well help to fill in the gaps in their knowledge but, much to my dismay, after creating a post (in Leafpad) and creating an account, it seems it’s been locked for being too old. (I can only assume the threshold is something more than 9 years and less than 10.)

…so I decided to post what I put together here instead, so it won’t go to waste.

Tip 1: Current versions of Open Watcom C/C++ can definitely be used to target Windows 3.x.

Not only have I successfully used it to cross-compile basic test binaries on Linux and then run them in Windows 3.11 for Workgroups under DOSBox, I found a Building Win16 GUI Applications in C tutorial which includes an OpenWatcom project file in its example code archive.

Beyond that, it also includes a “windows extender” called Win386, which is essentially a DPMI extender for Windows 3.x applications, providing both a 32-bit flat address space and API thunks to make it more comfortable to call the Win16 API from 32-bit code.

From a deployment standpoint, Win386 has the advantage that it gets bundled into your executable rather than being installed separately like Win32s, so users need never know it even exists. (In fact, for that exact reason, there’s not much information on the web about it today outside the Watcom documentation.)

Tip 1.5: A Single OpenWatcom Install Can Compile To All Targets

In the build.sh script I put together for generating test files in one of my projects, I generate .com, 16-bit DOS EXE, DOS/4GW EXE, OS/2 1.x, OS/2 2.x, Win16, Win386, Windows 95, and Windows NT binaries all from the same hello.c file using the same OpenWatcom install.

(Also note that the linked script cross-compiles using other compilers as well, such as DJGPP, and includes instruction on how to get prebuilt Linux cross-compile binaries for them.)

Tip 2: Open Watcom C/C++ is the same compiler used by many classic games.

Watcom C/C++ was used in quite a few applications back in the day, because they offered the best value for your money if you wanted to do 32-bit protected-mode development. (The compiler was competitively priced, it was known for producing the tightest code, and it came with royalty-free licenses for both a DPMI extender and a precursor to Win32s at no extra charge.)

I’ll go into more detail on all of that…

DOS/4GW

When DOS games like DOOM say “DOS/4GW Protected Mode Runtime” on startup (or don’t, but include a copy of DOS4GW.EXE), that means they were compiled using Watcom C/C++ because DOS/4GW is the special Watcom bundle edition of DOS/4G.

(It’s even still included in OpenWatcom, though more advanced, less nostalgic extenders like PMODE/WDOS/32A and Causeway are also now included. In fact, it’s creator was planning to dig out and provide the source for a more recent version for Open Watcom 2.0 but, sadly, he passed away in 2018.)

I forget which, but at least some of them can be merged into the binary to remove the need for a separate DPMI EXE file.

Win386

Win32s came out relatively late in Windows 3.1’s lifetime, so Watcom included a product called Win386 which did basically the same thing. (Providing a a 32-bit protected-mode environment with thunking wrappers to call back into Win16 code.)

Unlike with DOS/4GW, there’s no optional-but-on-by-default splash screen to tell you when Win386 is in use, but things like the Windows version of the Sierra SCI runtime use it.

(That’s actually why some Win16 programs crash on startup on modern CPUs. There’s a bug in older versions of Win386 that gets triggered on encountering CPUs faster than about 300MHz which can be fixed in any application by the “international” version of the KB240982 patch for Microsoft FoxPro 2.6.)

Information sourced from http://www.os2museum.com/wp/watcom-win386/

Performance of Resulting Binaries

According to Paul Hsieh’s WATCOM C/C++ Programmer’s FAQ, PC Magazine benchmarks indicated that “WATCOM C/C++ version 9.5 had the tightest and
fastest code among such compilers as Visual C++, Borland C/C++, Metaware Hi
C, Zortech and Symantec (by a wide margin)”.

According to that same FAQ, Borland’s strength was always their IDE and compile speed and, better code generators or not, Watcom’s approach to supporting embedding bits of assembly language is superior.

Tip 3: Older Versions of Free Pascal Can Produce Win32s-Compatible Applications and Win16 Support is Being Worked On

Release versions of Free Pascal are currently (v3.0.4) incapable of developing Win16 applications, but real-mode DOS support has been released and Win16 support is being developed in FPC trunk.

That said, the user “watler” on the aforementioned Computing.Net thread claims to have confirmed that Free Pascal 1.9.6 could produce Win32s binaries. However, aside from these pages saying to use -WR with Free Pascal 1.0.10 and avoid console functions in order to target Win32s, I haven’t yet found any further information on the DOs and DON’Ts.

According to this thread, Lazarus 1.6.x and Free Pascal 2.6.4 are the last versions to support Windows 9x with Free Pascal 2.4.x being the last to support it officially, so that’s where you’d want to start looking if you need to develop a Win32s application right now.

Tip 4: Open-Source Installer Creators for Old OSes

This section has been moved to its own post.

Tip 5: WINFILE.EXE is MIT-licensed

Remember how Microsoft included tools like Program Manager in 32-bit Windows up until Windows XP SP1 in order to allow companies to delay retraining?

Well, in early 2018, they MIT-licensed and GitHub’d the version of the Windows 3.1 File Manager that had been included in Windows NT 4 with the original_plus branch containing only minimal changes to allow it to build as a native 64-bit application using Visual Studio 2015 and 2017.

To quote the README…

The most significant changes are:

  1. converted to Visual Studio solution; works on VS 2015 and 2017
  2. compiles and runs on 64-bit Windows (e.g., GetWindowLong -> GetWindowLongPtr, LONG -> LPARAM)
  3. added a few header files which were stored elsewhere in the NT source tree (e.g., wfext.h)
  4. deleted some unused files (e.g., winfile.def)
  5. converted 64-bit arithmetic from internal libraries to C
  6. converted internal shell APIs to public APIs (the primary reason the old version would not run)

That means it shouldn’t be too difficult to port things back if you want to borrow things now considered standard (like the Tree View widget) for your own projects or if you just want to read the code comments and examine the architectural decisions made by official Microsoft programmers.

UPDATE: In fact, efforts are being made to backport it at least far enough to get a Windows 3.11-compatible Win32s build.

As for those “internal shell APIs”, that’s why we have used/library copies of books like Undocumented Windows and Windows Internals by Schulman, Maxey, and Pietrek. (If you came here trying to figure out how to write a shell extension of the Windows Explorer variety, see this article.)

Other Tips

Since I’m doing this as a standalone blog post, I might as well throw in a few other related bits of knowledge I’ve had kicking around:

      1. Awesome DOS is another list of resources like this. When I can find the time, I want to go through my list and contribute anything that’s missing.
      2. While not specifically for DOS, this list of single-file public-domain/open source libraries with minimal dependencies should probably be a good place to look for stuff that either works with Open Watcom C/C++ or isn’t hard to port.
      3. Jeff Parsons has worked hard to scrape together an archive of the Microsoft KnowledgeBase articles that Microsoft no longer cares to preserve.
      4. Custom DOS Stub: The Windows executable format must begin with a DOS executable. Normally, it just displays that message about it not being a DOS program, but both the Watcom and Microsoft linkers allow you to specify a STUB=filename.exe option to provide a custom DOS EXE file. For example, you could follow QEMM 97‘s lead in having a single INSTALL.EXE which launches either a DOS or a Windows installer depending on what you run it under, rather than having separate INSTALL.EXE (DOS) and SETUP.EXE (Windows) files.
      5. Other Libre DOS C Compilers: I’ve already written a StackOverflow answer listing all of the ones I know, but DJGPP and GCC IA16 are the only one I’d consider worthwhile.
        While not as native/storied/historic as Watcom and only capable of protected-mode DOS output, DJGPP is a GCC port has a big ecosystem and, according to this comp.os.msdos.programmer post, produces DPMI executables which require no extender under NTVDM or dosemu, unlike OpenWatcom.
        On the other hand, GCC IA16 is quite young, but, if it’s implemented what you need, its optimizers are going to be more advanced than Open Watcom’s. (eg. It’ll have better dead code elimination.)
      6. Bundling the DPMI stub: Moved to its own post.
      7. Supplemental Libraries: Here are some which look promising:
        1. Argument Parsing: Argtable 3.x seems to place a pretty big emphasis on portability and argtable 2.x explicitly lists DJGPP and Open Watcom as known to build it successfully.
        2. zlib/libzip: Archlinux’s AUR contains patches to build zlib and libzip for OpenWatcom’s DOS targets. (As well as one for zlib on win16, though I don’t see why there would be a difference unless it’s for static libraries vs. an LE-format DLL.)
        3. Extended standard library: iMatix’s legacy repositories on GitHub provide a Standard Function Library (online docs) which offers useful stuff for C such as various string- and filesystem-related functions now standard in modern languages and INI and XML reading/writing. The docs list Watcom and DJGPP among the supported compilers for targeting DOS.
        4. TUI (ie. text-mode GUI) Development: There are ports of Turbo Vision for DJGPP (instructions) and Free Pascal and there is also Al Stevens’s D-Flat.
        5. DOS Game Development: Allegro provides API abstractions and a library of ready-made, optimized utility routines to allow easy writing of portable games. Version 4.2 is the last release which supports targeting DOS.
        6. Pattern Matching: Ozan Yigit’s website has single-file public domain implementations of a robust glob matcher and 4.3 BSD regex syntax.
        7. Executable Compression: UPX can pack pretty much any kind of executable you’re likely to want to pack except Win16 or .NET.For Win16, you can use either PKLite 2.01 (Archive Team) which is under “you must pay to install this in a corporate or government environment” shareware terms but appears allow individual/hobbyist developers to sell what they pack with the shareware version, or PackWin which, as far as I can tell from its documentation, is under “We’d really like you to register, but there are no legal limitations on what the free version can be used for” shareware terms that don’t preclude full commercial use.
        8. JSON Parsing: While it doesn’t explicitly list compatibility with compilers like Open Watcom, microjson is a likely candidate, being a very compact, low-footprint, malloc-free parser for a subset of JSON intended for resource-constrained environments.
        9. Useful Misc.: You can find lots of useful bits in the Wayback Machine on Troels K. and Japheth‘s sites, such as Win16-compatible CEditView / CRichEditView implementations and the HX DOS extender (which provides limited support for Win32 applications in DOS), but be sure to double-check for license compatibility since I think at least one component on the list is an improvement on an EPL-licensed component and the EPL is GPL-incompatible.
        10. More Useful Misc.: Also, check out x2ftp and Sunsite mirrors for useful libraries and tutorials. (eg. the watcom folder on x2ftp)
      8. BASIC: If QBasic/QuickBASIC was more your thing, FreeBASIC supports targeting 32-bit protected-mode DOS and offers a qb dialect mode.
      9. Python: It’s ancient, protected-mode, and I’ve heard people use the phrase “buggy old …” to describe it, but a port of Python 2.4.2 for DOS does exist.
      10. Embedded Scripting: While I haven’t tested any of them yet, the most likely candidates for embedded scripting in a DOS/Win16 environment seem to be running either Lua or the V7 or tiny-js JavaScript runtimes under one of DPMI, Win386, or Win32s. (For more home-grown scripting handling, microjson may be useful as an example of how to write a resource-constrained parser.) …or Microsoft has open-sourced GW-BASIC under the MIT license if you know enough assembly to make it embeddable.
      11. Control Panels in Delphi: If you have Borland Delphi 1.x and want to write a control panel applet for Windows 3.1, there’s a FAQ entry that covers it in The Wayback Machine. (More specifically, it covers writing something that’ll build for 16-bit or 32-bit versions of Delphi using {$IFDEF WIN32}, unlike the one which doesn’t require the Wayback Machine, which is for Delphi 3 and has no IFDEFs.)

I also have a bunch of useful links for building things with Pascal and DOS batch files, but this is already getting really long, so I’ll leave that for another day.

Changelog

  • 2017-12-29: Add a mention of the installer for Open Watcom C/C++, which is in the same source repository and can be built to run as a DOS or Win32 (possibly more) application using a single codebase and setup.inf.
  • 2017-12-27: Merry slightly overdue Christmas. I tracked down the installer builder from the Windows 3.1 SDK, discovered that it’s effectively freeware, and added it to the table. (see LEGAL.TXT inside the self-extracting archive.)
  • 2017-12-19: Added mentions of x2ftp and sunsite mirrors as good places to look for old programming resources.
  • 2017-12-17: Added instructions for generating retro-styled Windows 9x installers using either an InnoSetup release or NSIS plugins. (And completed the table up to the present day for the heck of it. Speaking of which, for Linux, use Flatpak. It’s good enough for software pirates!)
  • 2017-12-10: Updated information on Free Pascal’s real-mode support and added instructions for embedding the DPMI stub used by DJGPP and Free Pascal.
  • 2017-12-08: Added “Tip 4: Open-Source Installer Creators for Old OSes” and a link to microjson.
  • 2018-02-16: Moved list of installer creators to its own post and moved changelog to the bottom of the post.
  • 2018-12-12: Added mention of WinFile being open-source.
  • 2019-01-11: Added link to tutorial and documentation for Watcom’s wmake makefile dialect.
  • 2019-04-10: Added mention of efforts to backport the open-sourced WINFILE.EXE code and a little more info on how to target Win32s with Free Pascal.
  • 2020-05-21: Added mention of GW-BASIC being released under the MIT license and added a link to The Complete Idiot’s Guide To Writing Shell Extensions for lack of a better place.
  • 2020-10-31: Moved the CWSDPMI bundling instructions to an appendix on the post about bundling Open Watcom DPMI extenders.
  • 2021-01-25: Added link to Jeff Parsons’s Microsoft KnowledgeBase Archive.
  • 2021-04-07: Added links to a couple of Watcom-compatible Win16 executable packers.
  • 2023-02-27: Added link to my Internet Archive upload of various versions of D-Flat to the TUI library section.
  • 2023-03-14: Added link to guide for writing control panel applets in Delphi.
Posted in Retrocomputing | 7 Comments

Fanfiction – The Pureblood Pretense

UPDATE: It’s much more tilted toward praise, but I’ve written a review for volumes 1 through 4.

This time, I’ve changed things up as a side effect of finding a new way to slack off: This review is based on notes I took, but forgot to finally process into a review… so say hello to a “first time reading it” review for the first time since I started writing these again.

(Also, sorry for missing Wednesday slightly. I’d forgotten how much polish was left to apply and the tangent I spun out of this and published on time ate up more of the time I’d blocked out..)

The Pureblood Pretense by murkybluematter
Fandom: Harry Potter
Length: 229,389 words (plus sequels of even greater length)
Status: Complete (with two completed sequels and one actively being written)
Rating: 5.0 out of 5

This is a “FemHarry” Harry Potter fic, and people who are quick to judge might consider the main character a Mary Sue, so don’t be too quick to judge. The distinction between a not-too-bad Mary Sue and a room-for-improvement literary hero can be blurry and may rely heavily on whether you’re enjoying the story. I was so into this story that seeing her as a potential Sue never even occurred to me until I was part-way through the sequel and actively looking to revise my notes.

My verdict on those two points: Give the story a chance and see if it grips you. What makes this story so special isn’t the concept (which is sort of dime-a-dozen when you think about it), but how well it’s executed.

Anyway, the plot is basically a fusion of Harry Potter canon with Tamora Pierce’s Song of the Lioness Quartet. (For those unfamiliar with Pierce’s work, the main character, Alanna, trades places with her brother to follow her dreams of being a knight. It’s been years since I read it, but I remember enjoying it so there’s my in-passing recommendation for that series too.)

Now, in more detail:

Harriet Potter’s dream is to be a potions mistress. She eats, sleeps, and breathes potions study, going so far as to read articles in the latest potioneers journals, and she’s determined to study under Severus Snape, the most brilliant potions researcher around. Unfortunately, because of reforms passed through the Wizengamot by a Mr. Riddle’s Save Our World party, halfbloods and muggleborns are banned from attending Hogwarts.

(Note: As a computer-obsessed early-reader who was reading and understanding old BYTE magazines by age 6, I consider this to be plausible in the real world, but tricky to make properly believable when there’s an author who benefits from convenient contrivances.)

Meanwhile, Arcturus Rigel Black’s dream is to be a healer. The best healer program in the world is at the American Institute of Magic, but his father, Sirius, a changed man after his wife’s death and, not wanting to drift apart from his only son, insists that he go to Hogwarts.

Just like in Pierce’s novel, the two hatch a plot to trade places, with Archie going to the A.I.M. where he manages to play off the gender mismatch as a records error and befriends Hermione Granger as “Harry Potter”, while “Rigel Black”, the quiet, studious, male, body-shy loner goes to Hogwarts to learn potions from Professor Snape. However, this being Harry Potter, things get more serious and complicated quickly.

The first thing I’m going to say now: Don’t go into this anticipating moments when people discover her secret. Despite how much I enjoyed what I’ve read so far, I’d have enjoyed it much more if I’d known that, like Alanna, Rigel is clever enough that the deception lasts and lasts. (I haven’t yet started the third book, “The Ambiguous Artifice”, yet, so I don’t know whether this series follow Pierce’s decision to have her get found out at the end of the third book.)

UPDATE 2021-01-27: Nope. The deception lasts until the end of book 4.

OK, back on topic. In accordance with her ambition and admiration for Snape, “he” gets sorted into Slytherin where intrigue is just another means of social interaction and it doesn’t help that Snape has no idea “he” is the daughter of Lily Potter and not the son of Sirius Black.

Now, I don’t want to give away too much and ruin the experience, but,  given that Riddle didn’t die to his own killing curse, the story clearly needs a new “conflict of the year” plot and this definitely delivers. Without spoiling anything, I’ll say that  I found it clever, believable, and highly original. (Though, having taken a few days off to let the story’s grip on me fade, I do worry about certain aspects of the problem and its solution. They skirt close enough to the limits of what’s believable that I worry murkybluematter might overreach in future volumes if there is a need to escalate things.)

UPDATE 2021-01-27: End of book 4 and still no overreach. It looks like murkybluematter was telling the truth when she admitted year 1 was substandard compared to the later years.

So, with the plot I’m willing to spoil covered, let’s get on with the story’s strengths…

First, this is a damn good “Draco and other Slytherins as interesting characters” story. The interactions between Rigel’s friends remind me of Harry and co. in canon or the Scoobies (main cast) in Buffy the Vampire Slayer and I really enjoy reading about them.

However, appropriately, given that she’s the main character rather than merely a main character, one of the story’s big strengths is how well murkybluematter presents Rigel as having the character of a true hero. She’s constantly trying to just be left alone to pursue her dream, yet she’s such a good person that she keeps attracting new allies and building strong loyalties just by being true to herself. …and, despite that, she’s so caught up in the minutiae of her studies and keeping up her deception that she never seems to realize the true significance of her actions. At the same time, the readers clearly see foreshadowing of the dramatic way they’ll come into play when she eventually gets into a head-on collision with destiny.

This ties into the second point: murkybluematter really has a talent for good pacing. The ebb and flow of threats and resolutions kept me on my toes beautifully and, if the foreshadowed build-up in the series-level conflict arc is delivered upon, this is going to be one amazingly satisfying read when I get into the later volumes.

Again to this fic’s credit, I don’t detect any attempt to pander to anyone’s specific “fiction kinks” so far. When Polyjuice is used, it strikes an elegant balance for how much description to use (barely any, but enough to avoid the feeling that it’s being avoided to cover up poor authorship). In the only case I can think of where a trope comes up which has been horrendously abused by poor authors, it’s used merely as a threat on the horizon, to ratchet up the tension.

So… why is Rigel at risk of being a Mary Sue? Well, the gist of the problem is that it takes a lot of skill to justify a story about a prodigy whose talents have some kind of relevance to each arc’s driving conflict. There are several specific manifestations of this:

  1. Despite being a child the same age as Harry Potter, “Rigel Black” comes across as relying significantly more on skill to deal with the story’s challenges than Harry, who relied more on luck. (Once the story’s over and you’re no longer really in the thick of it, that draws attention to how authorially convenient it is for such a young heroine to be such a prodigy.)
  2. In canon, the structure of the first three years gives Harry some chance to grow, as Voldemort never really has the time and resources to care about Harry in more than the abstract until his resurrection. In this story, Tom Riddle is the leader of a major political party. He has ample time to be interested in the quiet, studious, introverted boy who, as a first-year, not only somehow thwarted his attempt to undermine Dumbledore that had the adults in Hogwarts stymied, but also happens to have befriended the heirs of several of his high-ranking underlings. (This draws more attention to how abnormally well such a young heroine is doing under a heavier burden than in canon.)
  3. Unlike Alanna, who lives in a middle ages setting where it’s expected that youths will mature quickly, Rigel lives in a contemporary setting, but the author has done little to justify how capable she is of pulling off the deception beyond some brief comments about how it’s normal for Slytherins to be raised mature. (Which we are forced to assume may have also hastened the onset of certain aspects of maturity in the Potter and Black households.)
  4. Unlike Alanna, Rigel and Archie are both prodigies. It’s always difficult to justify a character being gifted in a way which directly benefits the plausibility of the story (normally, you write a prodigy who struggles with being introduced to the first major problem their talents can’t solve), but, in this case, I really worry about what will happen in the later books when things need to escalate but escalating Rigel’s talents might push her over into full-on Sue-dom. (The general rule people tend to intuitively derive is “If your plot would be impossible without making the main character a shining exception, your main character is probably a Mary Sue.”)
  5. One of the defining traits of a Mary Sue is that the characters love or hate her pretty quickly. The heroic aspects of Rigel’s character that I’ve already mentioned have a similar effect, since she tends to earn loyalty and admiration from those she helps and draw the attention of those whose plots she foils. (A hero can legitimately do that, but it’s one of those traits that puts you in the hazy region between a well-written Sue and a badly written hero unless you’re really good at it.)

At the moment, I’ve only read the first of the sequels but, if they’re representative of what follows, I’d guess that every potential sticking point in the first story and beyond can probably be traced back to the author not having put much effort into justifying how smart the two main protagonists are, given their ages. Now, admittedly, that is somewhat mitigated by accelerated maturity being part of a standard pureblood upbringing, but that detail, though stated, is somewhat brushed under the rug. While the risks in the story have been upped to match, a brilliant protagonist who attracts loyal friends and allies is always at risk of coming across as a Mary Sue and, while I don’t personally perceive Rigel that way, she’s pretty close to the line.

That said, given that this was still the most enjoyable fanfic I’ve read in a long time and I do mainly notice the potential Sue-ness after I take a break, I’m willing to count it as “unpolished hero” rather than “polished Sue”. In fact, my biggest concern is how much of a house of cards this is. (Or, to put it another way, the author clearly has quite the talent for making the story engaging, regardless of the fact that their talent is being applied to a flawed concept. If you’re the type who thinks Rigel is a Sue and writing Sues is turd-polishing, then this is one damn shiny turd.)

Either way, there’s not much murkybluematter can do to change things this late in the game. The reader’s expectations have become locked in and kicking Rigel because things have been too convenient for her is one of the biggest sloppy “ruin a story by overreacting to a flaw” mistakes I see bad fanfiction authors making. …especially since one of the hardest things for a fanfiction author to learn is to put their main character in danger in a way that still earns the readers’ trust, so they’ll allow themselves to open up and ride the emotional roller-coaster.

After over 200,000 words of building a certain expectation for the balance between success and danger that Rigel experiences, it’ll be difficult enough to ramp up the tension without turning off the readers. Actually trying to fix the delicate balance that is Rigel Black’s narrative in order to reduce the Mary Sue element would almost certainly make it feel like a collapse into “hardship porn”.

In fact, it’s something that’s ruined so many fics I’ve read that I had to spin out a whole separate article on it after I went off on a tangent while writing this.

UPDATE 2021-01-27: So far, so good. Aside from a period in book 4, where [spoiler] is introduced in a way that feels worryingly brutish compared to the socio-political sparring between Rigel and Riddle, the story has continued to thread the needle beautifully.

That said, I think one of the biggest pieces of praise I can give is that this is the first “I have a secret” fanfic I’ve ever read where I wound up wanting the reveal to take longer simply because it would give more time to build up to the pay-off. (The thing I love most in stories is reactions to worldview-challenging stimuli)

Normally, I either read a story to get laughs or see hypotheticals for how characters would respond to novel stimuli. Normally, if a fic tries to stand on its own, it destroys the implicit promise of being a Harry Potter fic… but this story does it properly. Rather than trying to introduce new elements willy-nilly, it simply pours a ton of effort into the nuances of how the aforementioned pacing and intrigue affect the reader. Sure, I’d never have picked it up if I weren’t curious about a Lioness Quartet-inspired Harry Potter fic, but I strongly suspect I’d have enjoyed it no less if I had given it a chance without even having read Harry Potter.

All in all, this is one of the best fics I’ve ever read. Of the multiple gigabytes of fanfiction I’ve chewed through in the last 15 years, I’m not sure I can find half a dozen which came this close to the satisfaction I get from a good professionally published novel.

UPDATE 2021-01-27: In fact, taken as a whole, the series is more satisfying than a lot of professional novels I’ve read.

…or, to put it another way, out of all the fanfiction I’ve read, this is one of a literal handful where the writing is good enough to make me fully enjoy it on its own merits, rather than simply as a vehicle for what I typically look for.

Normally, when I see the phrase “marriage law” in Harry Potter fanfiction, I run the other way (unless it’s one of those “how it’d really go down” oneshots) because it’s a pretty good indicator that the story is going to be what I broadly refer to as “suffering/victimization/powerlessness porn”. In this story, when such a bill gets proposed and the light-side families block it, I grin in anticipation at a clear Chekhov’s gun. I trust it won’t get used until our heroine is ready to resist and win. The more you can throw at a great hero without breaking them, the more satisfying the eventual triumph will be… as long as you don’t destroy the reader’s faith in their ability to carry the load.

Likewise, for the other Slytherins’ views on Rigel and “his” secretive nature, I trust that Rigel’s secret will come out in ways that leave her position stronger when the dust clears.

Here’s a short list of common pitfalls this story has dodged so far:

  • It’s a gender-bending story which doesn’t obsess over some non-sexual kink (for lack of a better term) to the detriment of the story.
  • It establishes itself as its own entity, rather than a “mere” fanfic, without alienating people for being too original.
  • It’s a “girl in a hostile environment” story that, so far, doesn’t seem to be risking devolving into “hardship porn”.
  • While it acknowledges a trope I don’t want to name for risk of spoilers, it doesn’t let it dominate the story and seems to be using it only as a credible threat to the character, given the context.

I’d say that, aside from part of its punchiness coming from not having to introduce the reader to the Harry Potter setting, this could stand quite well on its own.

It really is a shame that I almost missed this, given how many different ways in which I look for good fiction on FFnet (spidering from author to author via favourites lists, using a custom filter script combined with sorting search/category results by faves or follows, recommendations elsewhere, etc.).

Specifically, I discovered this fic almost by accident when, for the first time in at least half a decade, I was so hard-up for what I was in the mood for that I decided to wade through the muck in the C2 lists and got curious about what C2s might exist which were gender-bending themed.

If it hadn’t been mentioned as Lioness Quartet-inspired right in the summary, I wouldn’t have been curious enough to give it a chance among all of the other fics I saw. (In the intervening years, I even left Fanfiction.net for a while to go to sites like Twisting the Hellmouth and FiMFiction simply because I’d walked down the curve of diminishing returns so much that I was willing to switch fandoms to get a site with more advanced filtering, a recommender system, and/or a community with higher standards.)

Definitely a 5 out of 5, even with the aforementioned flaws.

UPDATE: Now that I’ve started reading the third volume, I’ve been reminded of how flat-out gleeful I feel at each new twist and turn of the plot. It really is hard to express my feelings in writing when I find something I enjoy reading this much. (Heck, most professional fiction doesn’t hook me this strongly.)

Posted in Fanfiction | 7 Comments

The Importance of Consistent Tone: A Brief Tangent

While I was working on my latest fanfic review, I found myself going off on a massive tangent about one of the most common ways I see fanfiction authors ruining stories: Realizing “late” that the main character “has it too easy” and destroying key aspects of the story’s appeal in an attempt to “fix” things.

This typically happens when an author has let their character one-up the villain too consistently and handily for that to be the driving source of interest in the story, so they suddenly give the villain a free boost without warning.

The problem is that by the time you finish Act 1 (or the 20,000 to 30,000 words that an Act 1 would take in a typical three-act novel at the 80,000 to 120,000 word length that professional editors require of first-time authors), the readers’ expectations have solidified. (And, if you’re writing a series, book 1 sets a marker which all future books in the series must not stray too far from.)

If your readers got that far and didn’t wander away, then something about the story works. Typically, it’s one (or both) of the following:

Possibility A: You’ve built an expectation sort of like a Saturday morning cartoon, where we all know the hero will win (and, for most stories that do this, that no “good guys” will suffer permanent harm).

In this case, it’s not about the outcome, but in how creative you are in letting the hero outplay the villain. (Personally, I’m especially partial to stories where a chessmaster villain’s plans are diverging wildly, and they can’t figure out why because they made one tiny-but-wrong assumption early on and it’s causing all of the logical reasoning they’ve been doing since then to take them further away from reality despite the influx of new data.)

This is also a common vehicle for humorous stories, where the villain having any significant success would run counter to the purpose of the story. (Also, think about The Hitchhiker’s Guide to the Galaxy series. It’s basically a sequence of jokes glued together with a token plot and with characters added to give a frame of reference… and it’s a classic.)

Possibility B: An alternative purpose for the story snuck up on you, such as bildungsroman or some kind of person vs. self conflict.

In this case, it’s pretty obvious why “fixing” it by helping the villain become more relevant would wreck things.

Either way, no matter how “easy a character had it”, you mustn’t betray the expectations cemented by what has come before. (You’ll make the story feel inconsistent and dissatisfy the readers who did read what has come before in an effort to please hypothetical people who are willing to either wade through chapters they don’t like or skip straight into the middle of the story.)

Another big problem of doing this is that making this mistake is part of the reason it’s as difficult as it is to get experienced readers to trust your writing enough to emotionally engage with a story with high stakes for the main character. If you get on an emotional rollercoaster and it sends you crashing into the ground, you’re going to be wary about getting onto the next one you see.

In fact, even professionally published authors can make this mistake.

Harry Potter and the Goblet of Fire gave me a massive emotional shock when it betrayed the sense of “childhood innocence/things will always be OK in the end” and “Voldemort is No Heart from Care Bears” (ie. a Saturday morning cartoon villain) that the first three books had allowed me to develop… and that, combined with badly-written fanfiction is why, today, I don’t often emotionally engage with what I’m reading. I’ve been burned too many times to trust easily.

(And, honestly, I suspect that Rowling’s year of writer’s block after Goblet of Fire is because it shattered her mental models too.)

…plus, at least when I’ve seen it happen in fanfiction, it also tends to make the story feel like “hardship porn”… where it feels as if you’re not doing it for any artistic merit, but merely because you get off on making your character suffer for no good reason.

That said, one excellent example of doing it so properly that it did put me on an emotional roller coaster is a gripping sci-fi story named Days of Wasp and Spider which is technically a distant-past prequel to My Little Pony, but was intentionally written so that you only need to change the cover art to publish it for money. (Trivia: Fifty Shades of Grey began as Twilight fanfiction)

In short, if you’re not the type of author to plan ahead in sufficient detail or revise already-written chapters, accept that you may have to update your plans in response to characters who take on minds of their own. Your readers won’t know to thank you if you get it right, but they’re likely to curse you if you get it wrong.

Posted in Writing | 1 Comment

Fanfiction – Divine Blood

I’ve been giving too much effusive praise recently, so let’s try something different.

Divine Blood by Thrythlind is an interesting case, because it does so many things wrong, yet I re-read it despite that. (This being my third time reading it when it’s over 400,000 words long.)

Overall, I’d give it a 4 out of 5, but the interesting part is the “why”.

The story is a study in starting out weak and getting strong, beginning with the kind of “skipped an essential story arc”feel that usually comes about because a bad author decided to arbitrarily change aspects of canon “because I like it better that way”.

The Cons

The prologue has Ranma Saotome raped, impregnated, and locked in female form by greek gods when the most Greek thing in Ranma ½ canon is Chinese amazons and the most “darkly consequential” thing in Ranma ½ canon is Saffron’s temporary death at the end of the final story arc. …and, after that, it time-skips to an adult, female Ranma and her three half-divine OC children. (ie. a half-OC and her three half-divine OC children.) That screams “bad Ranma ½ fanfic”.

Also, the kids have the “weeaboo Japanese” names “Deimosu”, “Naiki”, and “Eija”. Even assuming that it’s justified as “Their mother wouldn’t have known any better”, it’s too distracting. Thrythlind should have exercised his world-building prerogative to justify something that doesn’t act as a prose-level barrier to making the narrative immersive.

For a final issue, the feel of the story starts out slapdash. For example, details like magical aptitude on an application form carry an undercurrent of that “western 90s fanfic” feel to it, which comes about when the author doesn’t know how to extrapolate a desired element from any of the source series and, instead, constructs it out of whole-cloth. (Seen more strongly in stories like Generation Lost.)

Essentially, it implicitly promises a Ranma ½ component to the story, then starts out by rubbing the reader’s face in how much of what is Ranma ½ it can arbitrarily throw away or change just because the author wants it… and, as the scope of the story continues to grow, the original justification for using Ranma becomes shakier. (Post-canon Ranma is, at best, a big fish in a little pond, yet the justification hinges on Ranma being the best candidate in the world for a plan which requires that “she” not die.)

It does have a bit of a propensity for one-shot references and, once the epic story arc really gets going, a bit of a laissez-faire attitude toward multi-crossing in characters to flesh out the roster from other countries, but, if you’ve gotten that far, it only really “helps to give the story that fanfic flavour”.

The Pros

Now, if it were just those, the rating might wind up in the 2.5 to 3.5 range. So, what about the good bits?

Well, If you haven’t lost interest by the third or fourth chapter, it settles into a first story arc which feels like a reasonably engaging story about OCs in a crossover between Full Metal Panic and some of the more headcanon-ish 1990s Ranma fanfiction… leaning toward the former.

…and, once Oh My Goddess enters the story proper in chapter 7, the world-building really kicks off. In that very chapter, it brings a clever take on why demons act as they do that injects a surprising amount of depth and potential very quickly. From that point on, it starts to feel like a more even balance between Full Metal Panic, Oh My Goddess, and a wavering mix of Ranma ½ and OC elements.

The world-building in this story is a joy to read and my impression while re-reading it was that, whether or not Thrythlind was actively trying to world-build, my level of engagement correlated very strongly with how much a scene was revealing about his larger conception of the Oh My Goddess or Full Metal Panic settings and characters. (For example, the origins of Gods and Demons, the nature of Yggdrasil and Nidhogg, and what the Whispered signify for humanity.)

Also, once you’ve read enough to start to learn to accept that “the story is what it is, take it or leave it”, the Ranma ½ and OC elements start to get engaging too.

Overall, like most good epics, once it gets going, the story is a strong blend of in-close character development and large-scale world-building.

What Could Have Been Improved

So, far be it from me to just complain, let’s analyze how it could have been done better.

First, I remember Thrythlind having been working on a non-fanfic version of the narrative, so I want to address that… I have no interest in it. The story’s greatest strength, by far, is how it explores and merges the greater Oh My Goddess and Full Metal Panic elements, and making the story a standalone piece just turns it into a dime-a-dozen idea for a cosmology that I might have actually come up with and dismissed as uninteresting during my teen years.

The actual problems are threefold:

Slow Startup Of The Epic Elements

First, the story is slow to get started… but in a somewhat unusual way. The story isn’t boring… but it feels like a different genre until enough elements reveal themselves for you to start to recognize an epic feeling in it. A story which grows into a huge epic shouldn’t spend its first six chapters feeling like a twist on a canon Full Metal Panic story arc.

(In essence, it’s a failure of the “make a representative first impression” principle, but the author is skilled enough that, even a failed attempt still manages to achieve “good enough”.)

Perhaps ironically for a fanfic, the solution is that it’s not OC enough. Aside from kicking out the Musk characters for being distracting small fry who delay the development of the epic tone, there’s not really much that can be cut or shrunk without making the first arc feel rushed. It really does need a certain degree of patience to establish such a tone and for the Full Metal Panic cast to start to connect with the main characters, so the solution is to make spending that time more worthwhile… something that could have been solved by jettisoning the Ranma ½ connection entirely, so there’s valid reason to spend that much time getting to know the main characters.

If nothing else, a cast of purely OC main characters who have to hook reader interest more or less cold-turkey would ensure proper recognition is given to the need to make the OCs interesting.

Inconsistent Feel For The Villains

While it gets better near the end of their times as characters, the villains never really feel like they belong to the Oh My Goddess setting that they claim to be from. Scenes which involve them feel like they come from some unknown or original work that got crossed into the setting and their behaviour and presentation feel so divorced from what culture is shown or implied in Oh My Goddess canon that it feels like they’re scheming hermits who left to go live and plot in a cabin in some private pocket dimension.

(Compared to the OCs who do work, which feel like “native OCs” hailing from either Full Metal Panic or Oh My Goddess.)

Detrimental Aversion To Using OCs

This ties into the second problem: None of the Ranma ½ elements feel like they need to be Ranma ½ elements for the sake of the greater narrative, and, in some cases, they run against the grain of the story.

Sure, they’re entertaining to read about… but it feels like the story would have been better off if Thrythlind had taken the time to extend either the Full Metal Panic or Oh My Goddess settings with proper “native OCs”. (Something supported by how well-fitting OCs work when they are used, such as Lusca Kraken and Kodachi‘s pseudo-clones.)

The inclusion of Ranma seems to serve two purposes:

First, as a cheap attempt to avoid having to reconcile the presence of “organic/local-scale magic” (eg. feng shui, exorcists, human half-breeds, etc.) with the Oh My Goddess and Full Metal Panic settings, which present “bureaucratic/enterprise-scale magic” and a mild/near-future blend of psionics and super-tech, respectively.

Not only does this cast Ranma in a role that is quite removed from canon, it’s unnecessary. All of this can be justified just as readily by writing the local-scale magic as “the intersection of Oh My Goddess and Full Metal Panic overturned over a rock and the cast noticed the minor magics that scuttled out.”

Second, as a cheap attempt to justify the skill level of the main character and the relevance of her three OC kids… which also isn’t necessary.

For all the crazy magic going on around Ranma Saotome, it’s inherently a failed errand to use that plus a ~15 year time-skip to justify “her” having become just as much a mystic practitioner as a martial artist. That takes a story arc to justify, you can’t just gloss over it, and it’d probably cheapen the overall series to attempt it nonetheless.

Likewise, Thrythlind has demonstrated an ability to write engaging OCs, so I think the story would have been much better off if Thrythlind had acknowledged that these are OCs, regardless of what he names them, and then dedicated proper attention to developing them.

Solution Summary

So, here, in short, is what could be done to raise this to a  4.5 or even a 5.0 out of 5:

First,replace Ranma with an OC “hailing from the Full Metal Panic setting”, with the story being touched off when the gods from Oh My Goddess decide to “play old-school Greek Pantheon” with her. (She can still be a practitioner of minor magics and the like… just not with the reader preconceptions associated with Ranma ½.)

In my estimation, that would lead to the most effective tone for the story. (As-is, it sort of reads like two interesting stories operating as conjoined twins in the same universe, rather than one very interesting one and the Ranma ½ elements are a big part of this problem.)

Second, mitigate the sense that the story is slow to start by packing more exploration of the now-fully-OC main characters into that initial arc. (Which must necessarily be somewhat slow to handle the “OCs get to meet the canon Full Metal Panic cast” and “reveal hints of The Whispered being more than shown in canon” aspects in a way which feels satisfying, believable, and un-rushed.)

Third, use some of that OC development to explain how “local-scale” magic fits in “off-camera” in this hybrid Oh My Goddess – Full Metal Panic setting. (eg. Either “confidently ignore” or clarify the various implications of having human hybrids and other potentially weaponizable supernature in the Full Metal Panic setting. To avoid getting things side-tracked, I prefer to lean toward seeing it as “The Whispered are significant because they’re new, while the rest has been known to aspiring Mengele types for long enough that what we see today is a state of equilibrium sort of like the ‘average people ignore the strange and unknown’ from The Dresden Files.”)

Fourth, spend proper effort justifying and explaining how such archaic, villainous gods can believably “exist off-camera” in Oh My Goddess canon.

The Plot

Anyway, so what actually is the plot?

The gist of it is that Zeus, Poseidon, and Hecate hatch a plan to bring down the doublet system, overthrow the current leadership, kill off “half-breeds and traitors”, wipe out the human interlopers who infest “their” Earth, and return to the age of war against the demons (who see them in turn as interlopers on “their” Earth).

However, for a variety of reasons, Murphy’s Law takes effect… including that the Whispered are actually a sign that humanity is on the threshold of ascending to become much like the Gods and Demons and circumstances conspire to let some of them play Prometheus, just as the Gods did when the Demons emerged from their KT-event shelter and tried to reclaim Earth.

Now, obviously, this is a very abridged explanation, and omits so many engaging details but, if you don’t mind a spoiler, the doublet system falls, Yggdrasil and Nidhogg crash, and humanity at large is introduced to the true reality of things by a flood of god and demon refugees, soon followed by attacks from their respective insurgent factions.

Speaking of which, I also love the elegance of having the demons develop an animal-based supercomputer (Nidhogg), the Gods using a plant basis for their knock-off (Yggdrasil), and humans completing the Animal/Vegetable/Mineral trifecta with a crystal-based knock-off of the other two (Silmaril).

All in all, it’s an incomplete but good story… if you can overlook the flood of warts in the first few chapters, but it could have been so much better.

Posted in Fanfiction | Leave a comment

Fanfiction – The Petriculture Cycle

I’ve had another extremely busy week, so I’ve decided to try another approach to delivering a quality recommendation without having to re-read an entire story to make sure I’ve got things right… a story where the details are so spoiler-y that digging up details would be a waste of time.

The Petriculture Cycle by Kwakerjak

Beginning with the eponymous Petriculture, this series of My Little Pony: Friendship is Magic fanfics is one of the most satisfyingly clever cases of world-building I’ve ever read.

That said, it’s also one of the trickiest stories to write a recommendation for because simply saying Alternate Universe rather than a more euphemistic “world-building” is spoiler enough for the first story in the series that it’s not listed in the story’s tags. (Let that sink in for a moment. The first story in the series contains such a fundamental plot twist that properly tagging it would be a spoiler.)

As the very sparse intro to the TVTropes page says, “the premise of each successive story is more or less grounded in the surprise ending of the previous story”.

All I can really say for those who want the full experience is that the series is a brilliant example of out-of-the-box creativity in how it blends novel character, setting, and plot details and I’d give it a 5.0 out of 5.

I highly recommend that you just read the series for yourself. I didn’t read the first story until a spoiler for the twist got me curious, and I still regret that.

That said, if I hadn’t seen the spoiler, I might never have read it, so here’s a series of increasingly twist-ruining spoilers for if you’re not yet convinced:

  1. The key detail which forms the core of why this setting is fascinating (and completely spoils book 1) is that Pinkie Pie is Twilight Sparkle’s imaginary friend, who gained her own independent existence during that first Sonic Rainboom and her strange abilities are due to her unusual nature.
  2. The reason it makes it so fascinating (which is a partial spoiler for the later books) is that she’s not the only canon character who’s actually a reified imaginary friend.
  3. The cherry on top (which is a bigger spoiler because of how it gets you thinking) is who these other “thoughtforms” are and whose minds they were born from.
  4. If you’re still not convinced that you want to read it, maybe knowing some (but not all) twist-spoiling specifics will sway you. Nightmare Moon was an “imaginary antagonist” created by Luna who got out of hand. She gets redeemed and becomes an interesting OC. Discord is a name Celestia’s imaginary friend took on when he felt he’d been abandoned by her. Thoughtforms not taking rejection well is a recurring theme.

That said, it’s what Kwakerjak does with those spoilers which earns the story such a high rating. Spoilers or not, it’s still a great read.

Enjoy. 🙂

Posted in Fanfiction | Leave a comment