This is the sixth article in Operation Bellflower’s weekly tech posts series. Check out the previous ones here!


In the last couple of articles I’ve shown you how to mess around with the game file’s assembly code to do some simple text replacement and font parameters tuning. But there is, of course, much more to translate in the engine than just some text on the screen. These scenario files we’ve seen earlier are also capable of triggering complex visual effects. Take, for instance, Senmomo’s date display screen.

These show up sporadically in the game. Pictured above is the very first one, showing the date “March 4th” (Literally: month 3, day 4). It might look simple but there’s quite a lot going on here. This screen is generated by an algorithm that takes a date as an input, then displays in turn each of the digits as images (not text!) at the right spot, with a fancy little animation.

At first glance you might think that translating this screen would be straightforward: why don’t we just replace the images for these Japanese digits with our Arabic numerals? Unfortunately it won’t be as easy as that, otherwise I wouldn’t be here making a whole article about it. There are a couple of complications:

  • The Japanese counting system is fundamentally different from the western one, and you can’t just take each digit one by one, replace them with the right one in our decimal system and be done with it. For example, numbers starting from 21 use three digits in Japanese, whereas we would need only two.
  • The date format we want is different than what’s used here: we’re going for the name of the month followed by a number for the day (for instance, the date shown above would be translated to “March 4”). We could have gone with something more similar to what’s already there, but decided against a potentially ambiguous MM/DD format that might confuse our European audiences.
  • Remember, it’s all assembly code. That will severely limit our capabilities to comprehend, let alone modify the aforementioned algorithm that handles date formatting.

By performing some strategic changes to a couple of strings in the game’s scripts and cleverly constructing the translated images, we’ll be able to figure something out. Working out a solution for this was one of my favorite challenges in the entire project and possibly one of the most incredibly stupid hack I’ve ever worked on. But I live by the motto of “if it looks stupid but it works, then it’s not stupid”. So let me share with you the whole adventure that was translating Senmomo’s calendar screens…

This is the fifth article in Operation Bellflower’s weekly tech posts series. Check out the previous ones here!


Welcome to another Adventure in the Ethornell Engine! Last week we’ve learned how to replace the game’s original script with our translated text. But as you may have noticed, there are a couple of issues with how the text is displayed. It’s not too surprising, considering that the game was never meant to display characters from our Latin alphabet. And so we’ll have to fiddle a bit with the scripts that handle fonts. There are two kinds of scripts packaged with the game: “scenario files”, like the one we dealt with last week, and system script files. Today I’ll show you a couple of tricks to adjust the font from both system scripts and scenario files.

Credit where it’s due, all the content from today’s article was made possible thanks to previous research made by ArcusMaximus. This tutorial illustrates the method they described in here to perform various font changes. Huge kudos!

This is the fourth article in Operation Bellflower’s weekly tech posts series. Check out the previous ones here!


We’re finally done with all that frankly unnecessary rambling on the engine’s archive system, and now we’re ready do dive into the nitty gritty of how to translate a BGI game. The last couple of articles explained how to extract scenario files, which contain all of the game’s narration. So all we need to do next is to replace the original Japanese text with our translation. This isn’t as simple as it sounds, as you will see that the format of those scenario files is anything but easy to work with. It’s nothing insurmountable though. I’ll first walk you through the steps to do it manually, then talk about some tools to make the job easier. So without further ado, let’s get started!

The very first line of narration in Senmomo, and the one we’ll attempt to modify in today’s tutorial

This is the third article in Operation Bellflower’s weekly tech posts series. Check out the previous ones here!


Howdy and welcome to another installment of Adventures in the Ethornell Engine! Today’s article will be a direct continuation of last week’s, where we did the first half of the work for extracting a scenario file. If you followed the Python approach and everything went well, you should now have at hand an extracted scene file (if not, here’s a copy). It’s still not quite in a usable state though, there’s one last layer of abstraction called the DSC format that we must decipher before we can see the actual contents. Once we take care of that we’ll finally be able to view and edit the game’s text, but that’s spoilers for next week.

A heads up that this article will be quite meaty, so I hope you’re not allergic to Python. Otherwise, feel free to follow the GARbro approach outlined in the previous article to extract your file and skip this. Again, what I will explain here is nothing that GARbro doesn’t already do, but where’s the fun in letting a program do the work for us? So let’s see how to decrypt the DSC format using a Python script.

This is the second article in a series of tech posts documenting some of the hacking work done for Senmomo. Make sure to check out the first installment for an introduction!


So you want to translate a visual novel. Now arises the question: where to even start? In the next couple of articles, I’ll guide you towards changing your first line of text in a BGI visual novel, both using the tools introducing previously and by writing our own. (Because doing things by ourselves can be fun sometimes! Sometimes.) So let’s get our hands dirty.

We won’t get very far without finding the original Japanese text. It’s in there somewhere, among the gigabytes of zeroes and ones that make up the whole game. Looking at the game files, you’ll notice that the bulk of it is in those many files under the .arc format. These contain absolutely all of the resources that the game needs: sprites, backgrounds, music, voice lines, videos, UI elements, fonts, scripts, and of course the original text that we’re looking for, in what I like to call scenario files. Let’s see how we can extract them…

This article is the first in a series of tech posts documenting some of the hacking work we’ve done on the engine. I’ve got a good pile of content to share here, so I hope you enjoy the ride!


Back when I joined Operation Bellflower, our team lead Kazoo was specifically recruiting for a hacker rather than a programmer. At first, I didn’t exactly understand why. I consider myself firmly in the second category but naively assumed that I could still apply most of the code wrangling knowledge I got from my years of making games on Roblox writing serious professional software. But it turns out that this is not just about writing code, it’s first and foremost a matter of breaking down piece by piece a whole engine – that is hacking.

So when I jumped in, I was pretty new to this hacking thing. I thought I had a good grasp on how computers work, but the BGI/Ethornell Engine would keep proving me wrong. This is why plunging into the innards of this anime PowerPoint program ended up being such a learning experience. A painful one at times, but nonetheless a wonderful adventure, and one I would heartily recommend.

The goal of this series of articles is to share this journey with you, whether you’re a seasoned code person or just a curious passerby. For those in the second category I will do my best not to dive too deep into the technical intricacies, at least not right away (I promise, I won’t show a single line of code until the second article). We’ll start off slow with a quick overview of exactly what we’ll be dealing with as well as a list of helpful resources.

Continue reading “Adventures in the Ethornell Engine I – Introduction and Community Resources”