• Welcome to Talking Time's third iteration! If you would like to register for an account, or have already registered but have not yet been confirmed, please read the following:

    1. The CAPTCHA key's answer is "Percy"
    2. Once you've completed the registration process please email us from the email you used for registration at percyreghelper@gmail.com and include the username you used for registration

    Once you have completed these steps, Moderation Staff will be able to get your account approved.

A surprising range of minerals! M-KAI's Pleasure Hearts for MSX2

Yimothy

Red Plane
(he/him)
A warning to start with: there are a couple of GIFs in this thread that feature strobing light.

j2mIzAA.png


Ah, the MSX. Most classic of classic Japanese computers. Arguably. Well, anyways:

lcWHGEO.gif


Ah, M-Kai (I love that the kanji for Kai here looks kind of like an S and an X, so the logo is the developer's name and also the name of the system). Maker of Judgement Silversword and probably some other stuff. Like this game:

1QYGleL.gif


Pleasure Hearts. Odd name for a biplane shmup. Anyways, let's dig in:

x51KJyD.png


Crumbs. Anyone read Japanese? Actually I already know that the first option, whatever the writing says, starts the game. But since I've got a screenshot, let's see if we can figure the options out:

スタート
Sutaato
Start

アイテム
Aitemu
Item

ステータス
Sutētasu
Status

コンフィグ
Konfuigu
Config

セーブ
Sēbu
Save

I haven't actually tried any of these options other than start, but having played it I have no idea what item, status, or save would do in this game. Maybe the save preserves scores?

P8TX91Z.png


When I choose start I'm taken to a name entry screen. I think this is just for high scores. Translating the title screen took it out of me, I don't think I'm going to take the options down the right side of this on. Although I notice that the second one is in katakana while the others are hiragana, let's see what it says: カタカナ - "Katakana". I wonder if one of these would get me the Latin alphabet. I guess I'll take a look at them.

ひらがな
Hiragana

えいすう
Eisuu
I have no idea what this is. Firing up the game again, this gets me the Latin alphabet and also changes the bottom three options to Next, Back, and Start. For a moment I thought I might have found English mode, but when I start the game from there the in-game text is still in Japanese. Oh well.

すすむ
Susumu
"Proceed", according to google translate.

もどる
Modoru
"Return". I'm guessing this and proceed move the cursor forwards and back.

けってい
Kettei
I think this means "decide". This is the option you select to start the game. Speaking of which, let's get on with it!

nVWM4pr.png


Aaargh! More translation. Let's take a shot:

プロローグ
Puroroogu
Prologue. I must admit, I already knew that this option would lead to the prologue, which made figuring out which katakana is which much easier.

rsg8hdU.gif


Alright, here's some actual gameplay! We start off at what looks a lot like the end of the game, killing a giant dragon and getting two billion points. Nice! As a player you get a little bit of control over this - when the orange plane moves, that's me pressing the controls. The blue plane also moves, but its vertical movement is mirrored. And hey, there was some more Japanese text in here. Let's take a look:

プレミアム ハーツ
Puremiamu haatu
I think this gives us a stage title of "Prologue: Premium Heart"

r9q7CwS.gif


Some kind of energy coalesces and forms a diamond or something. My plane moves down and picks it up (for another seven billion points) and the screen fades to white - COMPLETE. Looks like we did it, guys!

pkD9TQj.gif


The screen fades back in to our two planes drifting above the clouds. A flock of birds join us. This is nice.

2LFFDUl.gif


Suddenly the birds are obliterated by a giant laser beam, and my partner crosses the screen and turns to face me. Have I been betrayed?

aqa1kTA.gif


Sure looks like it. The blue plane summons a giant dragon (made of giant pixels, which I love), it blows me up, and the gem is stolen. And I lose my billions of points!

There's just a smidge of dialogue in there. Let's see what it says:

lOqoizQ.png


...やれ.
...Yare.

I'm having trouble with this one. Maybe "oh!; ah!; oh dear!; dear me!; thank God!", none of which seem quite right. I mean, they make sense for my plane, but I'm assuming it's the blue plane speaking here. I was expecting something like "...sorry", or maybe an instruction for the dragon to attack.

R2f8ByV.png


Anyways, we're on to STAGE 1. The subtitle is different from the prologue's, so let's take a look:

デッドオブア ライブ
Deddoobuaraibu

Uhh... Maybe this is "Dead Raised", going phonetically? My probably incorrect translation: "Stage 1: Back from the dead"

Mw695sL.png


And here we are, back in the skies, recovered from being blown up by a dragon. Let's take a moment to look at the interface: At top left we have SC, which I think stands for score. Currently zero. SC alternates with a character like a lower case d with a cross through it (visible in the previous screenshot). It looks kind of like a hiragana yo (よ), but I don't think that's what it is. Apparently a crossed đ can represent a th sound in phonetic transcription. I have no idea what its significance is here.

Below the score marker are our lives - the four red thingies. Next to that is my current health - 67 of 67. The max health increases over the course of the game for reasons not yet clear to me. The whole mechanic is kind of confusing - I think you lose health by taking weak or grazed hits. Direct hits seem to mostly be instant kills. On the right is my current power level (1). This increases by picking up enemy drops. Below that is my GR, also currently 1. I have no idea what this means. Game Rank, maybe? I'll have to keep an eye on it as we progress.

At the bottom left is my bomb counter. Speaking of which:

BIURMxo.gif


I love this bomb animation. Why is it so pixellated? Don't know, but it's awesome. My original plan for this thread was "Check out how cool the bomb is in Pleasure Hearts", before I got hung up in translating the menu text. That said, I didn't actually mean to use a bomb at this point, but I was playing the game via the OpenMSX emulator for the first time (previously I'd been playing on MiSTer) and I didn't know which button would do what.

nPtfruD.png


Aside from the cool pixellated explosion, the other thing to note here is the enemies drop little gems when they die. They look like lesser versions of the one I got from the dragon earlier. I think these just give points.

GhNjelp.gif


Here's my other attack, not particularly skillfully applied. Shooting these guys increases my score and also takes GR up a few notches. Those red traces left behind when you kill enemies can cause me a bit of confusion with what is and what isn't an enemy bullet when things get busier later in the game.

3dafw6Q.gif


I manage to pick up one of the gems and some text pops up telling me how many points I got.

エピドート
Epidooto

Epidote is a calcium aluminium iron sorosilicate mineral (thanks, Wikipedia!). I guess that's what these gems are made of.

nBOGk5i.gif


Moving on I snag another gem, this one worth about twice as many points.

リーダライト
Riidaraito

Uhh... Read/Write? I'm lost here. Edit: Kirin pointed out I've misread the first character. It's ソ, "so", not ri. So this is Sodalite.

9VuAzBt.png


Some different enemy drops start appearing. The arrow with the P is power - collecting these will increase my level and as a result the strength of my main gun. I'm not sure of the exact figures, but the number of these you need to collect per level increases. I think the first level takes 1, the second takes 2, and so on, but there's a bit too much going on in-game for me to count it as it happens. The little cone with the B is bomb ammo. Yes, please. The banana-looking thing at the bottom is shot type 2: spread shot. There are three main shot types - the default concentrated straight ahead shot, the type 2 spread shot, and the type 3 wave shot.

gmO6tID.png


Here's the spread shot at level 1. Not a very wide spread. There's also another power up on screen: what could be a mushroom and the letter M. These restore your health/boost your maximum health.

166fJL3.png


Here's the spread shot at level 2. Much more spreadly.

62Zg7rv.png


And here it is at level 3. On the left is the icon for shot type 3, which I have deliberately avoided because I'm bad at aiming and want to keep the spread. On the right are some cute little airships.

xQmR4W8.gif


Have some gameplay. The main thing I want to talk about here is the scrolling, but first: there's some more writing when I pick up a gem in this clip.

スピネル
Supineru

Spinel. Another type of mineral. Another thing that happens in this clip is I collide with an enemy and lose eight hearts. Or maybe it's a near-collision. I don't really get how the HP system works, because you can definitely die in one hit.

Anyway, the scrolling. You might have noticed the way the edges of the screen are constantly moving. I don't have any insight into the programming of this game, but I believe this is the result of a limitation in the MSX hardware. Basically it doesn't support smooth horizontal scrolling (it does have vertical scrolling, though). I talked about this a bit when I did my Psycho World LP back on the old forums. Many MSX games with horizontal scrolling scroll in 8-pixel chunks, which looks better than you'd expect but not great. Psycho World, and I believe Pleasure Hearts, achieve their scrolling using a feature of the hardware included to compensate for analogue screens: the display image can be moved left or right in single pixel increments so that users can centre the image if it's off on their screen. So the game is still scrolling in eight pixel chunks, it's just that the whole image (minus the HUD) is being moved at the same time to make it smooth. The downside is the ridiculous appearance of the edges of the screen constantly moving. Psycho World did away with this by covering the screen edges using sprites, but there are only so many sprites the MSX can display and Pleasure Hearts is using a lot of them for gameplay. There are a few places where the edges do get covered up, generally when there are no enemies on screen, but as soon as things heat up even a little the scrolling edges are back.

MNjTStv.gif


A little further on I am bombarded by missiles and pick up yet another gemstone:

ダイオプサイト
Daiopusaito

Diopside.

u47Ggqw.gif


After the missiles, the stage boss appears. "DEAD OR ALIVE". Love it. Also love the shell casings falling from its gun. It's a bit hard to tell because of how fast it is, but I think the scrolling is changing direction as the boss moves about. Presumably it's a background element instead of a big sprite.

After a bit of shooting, the boss goes down, giving me a cool 52 million points (I'm a big fan of the big numbers in the score of this game). Hey, I'm having a pretty good run so far here! As the boss dies there's some more text:

クリスタル
Kurisutaru

"Crystals", I think. I tell you what, I did not expect this thread to be mostly about minerals. I'm not sure if that's supposed to be the boss's dying cry, or if it's just that I picked up the crystals it dropped.

And I think that's enough for today. I wasn't planning on going into so much detail - I wanted to make a .gif of the bomb and now we're almost in Let's Play territory. I think I'll keep posting about this, but I expect the detail will drop off, which is why I haven't made this thread in the Let's Play subforum.
This is a pretty cool little game - it's homebrew from 1999, well past the heyday of the MSX. The guy that made it, M-KAI, was in high school or maybe recently graduated at the time. I'm not that familiar with what the MSX can do, but this feels like it's pushing the boundaries. It's also quite fun and a good visual spectacle. There's something about the heavy pixellation in the explosion and the dragon at the start that just works for me. Supposedly the game is now freeware, and it's not hard to find a disk image for download. Getting it to work is slightly more hassle, but not too hard and worth a shot if you're interested.

Next Time:
STAGE 2
 
Last edited:

Kirin

Summon for hire
(he/him)
I think the pick-up gem you couldn't translate started with "so" rather than "ri", making it Sodalite, another mineral.

Also I think the stage 1 title is "Dead Of Alive", a bit of Engrish repeated on the boss sail. ("Or" would obviously be more grammatical and a case could be made that the R is cut of by the edge of the sail, but "Of" matches the kana in the stage name.)

Anyway, this is neat.
 

Yimothy

Red Plane
(he/him)
SsfiZOK.png


And we're back. Almost. Loading. The game's English font has a few non-standard characters.

qhQjxPE.png


Time for stage 2. What's the subtitle?

ヤナック ダイウ゛ォス
Yanakku Daiuosu

I have no idea what this is. Also, the third character of the second word, ウ゛, doesn't seem right. It's a u, but ウ isn't supposed to combine with ゛ so far as I can tell. Any help here would be appreciated.

InIogv5.png


Anyways, let's play the game. I read this environment as a cave, but maybe there's like a cliff face in the background? Regardless, it looks like someone is throwing giant knives at us.

jHEXh79.gif


Moving forwards we come across the ruins of some buildings. I think they're ruins, anyway. If they weren't before, they are now. This stage is highly destructible. Looks like I've found another gem:

iNnhKC5.png


アベンチュリ
Abenchuri

Add another ン to the end of this and we have "Adventurine", a form of quartz. Now, am I gonna get ambitious and try to translate the tiny sign on the building?

ライフ
Raifu

"Life", I guess. And the one on the right says "Sec.", but you could probably see that yourself.

CnMnY8R.png


A little further along I get another gem:

カーネリアン
Kaanerian

Carnelian. You know, I bet if I went to the item page of the menu after playing the game it would show me how many of each gem type I'd collected. Too bad I didn't know there was a save option and so didn't save after this playthrough, and now I'm too busy writing about the game to play it.

eBIMF7I.gif


The destructible terrain in this level is pretty cool, but it also has the effect of limiting your fire. I'm trying to take out the blue thing on the ground, but all my shots are being absorbed by the building I'm fling in front of. This is not a complaint - I think that's the intentional design of the level, and it makes things interesting.

6ISvQ5b.png


Fortunately, there's a solution in sight: shot type 3.

VZBF0ZQ.gif


The wave shot isn't absorbed when it hits, so it can clear a building way faster than the others. That shot type 1 pickup that's dropped in this GIF is now a deadly hazard to be avoided. There's another text box when I get a gem in this gif, but it's adventurine again. I'd been assuming all of the gem drops were one of these types but I was only seeing the name the first time I got a given type, but perhaps the named ones are actually individualised and there are a fixed set of them to collect through the game? In which case I've probably missed a lot.

6ZhWlqU.png


アイオライト
Aioraito

Iolite.

Oremtqo.gif


The wave shot really makes clearing these buildings easier. You can see the MSX's per-line sprite limits pretty clearly in this shot, with a black line through anything at the same height as this mid-boss's concentrated shots.

lsYzfeE.png


アンダリュサイト
Andaryusaito

Andalusite. A Spanish mineral, I guess. This section of the game is pretty tough without the wave shot becuase of all the buildings you have to blast through to hit the turrets.

tTov95d.gif


Pretty easy with it, though.

u9UiWTH.png


Here's another turretty mid-boss. I've already blasted away the building shielding it.

uU14fr3.gif


Consequently, it's pretty easy.

OXMm1Ks.png


As I move forwards, a blue plane drifts in (backwards) from above. Is this my former partner, back to rub it in?

9OMsEHa.gif


I'm gonna go with no, given there's two of them and they go down pretty easily. The gem that appears at the end of this GIF is another Adventurine. I'm sure you all needed to know.

qhi2W06.png


We're now approaching the stage boss, who resides in a mountain. Unlike with the buildings, I don't need to destroy the background here.

jPIUUsk.gif


In a flash, the boss appears. More turrets! Can I dodge all this fire? At this point I remembered another tool in my arsenal:

XWSUapk.gif


Ka-blooey! I expected the bomb would only hit the turrets that were currently firing, but it seems to have destroyed the ones that were closed. Hmm... maybe their animation cycle continued behind the animation and the damage took place some time during it? Or I've just misread the fight.

IWlGS1x.png


We interrupt this boss fight to report it dropped a

ブラッドストーン
Buraddosutoon

Bloodstone.

m3NHCo4.gif


I time my next bomb for when all the remaining turrets are open (possibly incorrectly?) and reveal the boss's final form.

MXg7dXl.gif


A few more shots fired and it's all over. And I got another gem!

トルマリン
Torumarin

Tourmaline. I feel like I've heard of this one before.

a7L8Y4l.gif


Boss defeated, we fly up out of the canyon or whatever and move on.

This game is great, you guys.

Next time:
STAGE 3
 

Mogri

Round and round I go
(he)
Staff member
Moderator
Once again, you've taken a game I've never heard of in a genre of little interest to me and gotten me hooked. I love your gifs.
 

Yimothy

Red Plane
(he/him)
Thanks man! Unfortunately, progress will slow from here. I've had a bit of spare time the last few days that I won't have again for a little while. Also:

mFIRPF9.png


I've been investigating hex editing. Simultaneously easier and harder than I expected. Took maybe 30 minutes from when I thought “Maybe I should try and hack this thing” to get the screen above in-game. Several hours of effort later, I have made no further progress whatsoever.
 
Last edited:

Kirin

Summon for hire
(he/him)
ヤナック ダイウ゛ォス
Yanakku Daiuosu

I have no idea what this is. Also, the third character of the second word, ウ゛, doesn't seem right. It's a u, but ウ isn't supposed to combine with ゛ so far as I can tell. Any help here would be appreciated.

The U with " is an occasionally-used character to make "V" in foreign words. So, "Yanack Daivos" or something. Not really sure what it's going for. If it were supposed to be "Divers" I would expect V-small-a rather than V-small-o...

ライフ
Raifu

"Life", I guess. And the one on the right says "Sec.", but you could probably see that yourself.

Here I suspect the last character is missing a " that's too small for the pixel size, making it Raibu, i.e. "Live", which is a common display sign in Japan for venues with live music.


This continues to be really cool! Love all the little details in this game, and some interesting twists for a fairly simple shooter as well.
 

Yimothy

Red Plane
(he/him)
kEjNh8d.png


Time for Stage 3.

デウ゛アガメッシュ
Devagamesshu

Uh... maybe Deva Ganesha? This might make sense as a name for the boss of this stage.

2qIrIVw.gif


I mentioned a few posts back about using sprites to cover the scrolling artifacts at the edges of the screen. I think that's what's happening at the start of the GIF, but as soon as enemies appear the edges start moving again. The ground scrolling effect in this stage is pretty good, as is the bullet dodge I pull at the end of the GIF. Does cost me a few HP, though.

EWJHgDQ.png


The enemies on this screen (trucks? crabs?) are ground-based. They don't do contact damage. In the distance some windmills are scrolling into view.

アメジスト
Amejisuto

Amethyst. Another mineral I've actually heard of.

4gMsPU5.png


There are a lot of bugs in this stage.

ローズクォーツ
Roozuquootu

Rose quartz.

BMmULK2.gif


Bugs, everywhere bugs.

ヘリオドール
Heriodooru

Heliodor, aka yellow beryl. I also get another amethyst in this GIF.

m8nxy2l.gif


These ground guys show up again. Even though they're just static sprites sliding across the screen, they feel alive somehow. I think it's the eyes.

サンゴ
Sango

This is coral, apparently.

TqnQcHG.gif


Next up: fish! These guys put out a pretty decent curain of fire, actually.

ガーネット
Gaanetto

Garnet. I think most of my knowledge of gemstones comes from playing JRPGs, meaning I recognise the names but know nothing about what they actually are. Though this one is a princess.

フローライト
Furooraito

Fluorite. I keep writing it as flourite. I don't have a screenshot for this one but one of the fish drops it.

x785uvM.gif


I come to the midboss. Note the smooth vertical scrolling up to face it, in contrast to the jumpy horizontal scrolling. It's such a little thing, but it feels big moving up into the sky to face this giant plane. I wuss out an chuck a bomb, which clears the enemy fire and also seems to give me temporary invincibility which I use to not die from a direct hit.

ゴーシェナイト
Gooshenaito

Goshenite: a colourless beryl. Kind of regretting the decision to translate all the gems, but surely I've done most of them by now, right?

zQsTchZ.png


Blink and you'll miss these kids playing with their dog. None of my shots went low enough to hit them, so I don't know if they can be fired on. Hopefully not.

t3LpqCq.png


This is the start of a prolonged series of gems floating in the air. Let's see what it is:

シェル
Sheru

Shell. Not exactly a mineral, but I bet it's pretty.

qtxnGbr.gif


I'm not making a GIF of the whole sequence, but this goes on for about thirty seconds. I was dreading having to do a big heap of mineral translations through this bit, but it seems they're all shells.

Hl5mMmf.gif


There's another brief period of stable borders, and then:

Yu2OVLF.gif


The stage boss, a tank with an elephant trunk-like cannon. Maybe this thing is called Ganesha because of that?

FXt9yHW.gif


Once again I prefer bombs to dodging. This also converts the enemy fire to gems. I wonder if I need to bomb all the different enemy fire types to get all the gems? On closer inspection though, this is goshenite again. Probably for the best.

iYKdBN2.gif


Its main cannon destroyed, the tank sends a fairly intense bullet pattern my way. Nothing I can't handle, though!

kPgReE1.gif


Oh. My first life lost of the run so far. I should have used another bomb. Aside from losing a life, this drops my power level by one. I do get a bomb top-up out of it, at least.

KvtrXpi.gif


A few more hits do the trick, and the tank explodes, dropping

サンストーン
Sansutoon

Sandstone. Edit: As Kirin says, this is probably Sunstone, not sandstone.

ixFhKi3.gif


In the background what I presume to be the enemy armada drifts into view and we leave stage three behind.

Next time:
STAGE 4
 
Last edited:

Kirin

Summon for hire
(he/him)
Last one there could also be Sunstone (a type of feldspar), not sure.

Forgot to mention last time I both love and am deeply puzzled by the Stage 2 cannons that briefly manifest what looks like a big glowing duck on their launch tubes before firing at you...
 

Yimothy

Red Plane
(he/him)
Hello again. Before we start stage 4, I noticed I missed something in the first post:

RBoH7o2.png


The name of the gem dropped by the big dragon, identified by me at the time as "a diamond or something", aka the item my partner betrayed me to steal and presumably the whole point of the plot. Well done, Yimothy. Let's see what this thing is:

プレジャーハーツ
Purejaahaatsu

Pleasure Hearts. There we go. The very thing the game is named after, and I missed it. On the subject of things from earlier in the game:

Lva1Y92.png


Quack.

OK, back to the game.

UHnSHDE.png


オールド ウェポン
Oorudo.Wepon

Some kind of weapon. Rude Weapon? Fits with these being the boss names. Oh! Old Weapon! The classic ancient machine brought back to life? Let's see what the stage brings.

efqxlvA.png


This certainly looks old, doesn't it? Night has fallen, the tones are earthy. Are those tree stumps in the background?

qOm5zuJ.gif


No time to think about that now, enemy craft incoming! Stage 4 is where the game really starts to heat up, in my opinion. I lost only one life in the first three stages, against the boss of stage three. Spoilers: that's gonna happen more frequently from here. Right from go, these guys are putting out a lot of fire. To help with that, a spread shot powerup appears and I take it. I also pick up a gem!

タンザナイト
Tanzanaito

Tanzanite. The blue variety of zoisite. Which is a type of epidote. Yep. Anyway, I also want to point out that this stage's play area is taller than the screen. Move up and down and the screen scrolls.

tcpXmhJ.png


スキャポライト
Sukyaporaito

Scapolite. A silicate mineral. I'd like to try and have something to say about all these minerals, but honestly the wikipedia pages for minerals are very hard to read. "The tetragonal crystals are hemihedral with parallel faces". OK.

VqbhOdy.gif


The game is at least generous with drops at this point. Tempting to blame my death here on the sheer amount of stuff onscreen distracting me from the bullets.

3NAYpof.gif


It's straight back into the fray, though. These rocket launchers take quite a few hits to kill. The first time I got here I'd suffered quite a few more deaths and my level was a lot lower, and I was struggling to take these guys out before they reached the left side of the screen.

ジェード
Jeedo

I reckon this is jade. Another one I've heard of!

FyBuM1N.png


I wondered earlier if the brown columns were trees - as we get closer it looks like they're brick, part of a series of castle-type fortifications.

rsM6Oxo.png


I wonder if these grey planes are part of the fleet that came into view at the end of stage 3?

ペリドット
Peridotto

Peridot. Aka chrysolite, which for a second got me thinking I could talk about Discworld, but that's Chrysoprase. Maybe I'll find some of that later.

EqskbBe.gif


I encounter another type of artillery, these ones lobbing red balls that arc up into the air.

インディゴライト
Indigoraito

Indicolite - a blue tourmaline.

vOuY0Jr.gif


The buildings have been getting steadily bigger, or maybe just closer. This one takes up the whole screen.

aDiJxdF.gif


Perfect place to fight the midboss. I remain terrible at dodging, but keep it together well enough to bomb my way out of danger, sending the enemy drifting downward to explode. I get a few gems:

ジャスパー
Jasupaa

Jasper.

ムーンストーン
Muunsutoon

Moonstone. Should go nicely with my sunstone from earlier. And what's that other thing that dropped?

QqhoSvX.png


1up?

cfmUo7G.png


Yep! I've ticked up from two red thingies to three. Nice! Meanwhile we're flying past some windows or something.

SDRJdnF.png


And a pyramid! Where are we?

1VYhFoq.gif


Mechs start showing up.

ヒデナイト
Hidenaito

Hiddenite - a green spodumene.

ヘリナイト
Herinaito

Helenite - OK, this one is actually interesting. It's an artificial glass made by melting volcanic ash from Mount St. Helens.

2LtFOj5.gif


After about thirty seconds of minor enemies, a whole heap of mechs show up. Facing likely death, I bomb my way out. Phew!

ゴーシェナイト
Gooshenaito

Google translate turned the katakana into Gauchenite, the awkward mineral, but I think it's Goshenite, the colourless beryl with exceptional clarity. Come to think of it, I got one of these in stage 3.

6m96qkX.png


I'm not sure if there's a quiet period here or if my level 8 spread shot is just taking out all the enemies before they get a chance to do anything. I pick up an

アクアマリン
Akuamarin

Aquamarine, and will go on to pick up the type-3 shot power-up that's on screen.

XonHpQy.png


As seen in this shot. It's got decent screen coverage, and it's served me well against bosses so far.

ネフライト
Nehuraito

Nephrite. That'd be a kidney stone, right?

WNCgDXx.gif


Speaking of bosses, here's the Old Weapon.

hP3wf3S.png


I'm not sure if it's like attached to the wall, or flying, or if we've maybe switched perspectives and are looking from above here. Presumably my plane would be using its banking sprite if we were looking down, though. I wonder what "P-2" means?

vBhXMlz.gif


I start by taking out its moving upper turret.

iZBFVPX.gif


Then something explodes. Not sure what, though.

mBy1Snu.png


Whatever. I'm getting gems:

モルダバイド
Morudabaido

Moldavite - this one's a glass formed during a meteorite explosion in Bavaria 15 million years ago. Its pitted surface is due to the molten material cooling while airborne from the explosion.

2Dj4g7t.gif


Suddenly, the P-2 hatch opens, and a figure clad in white comes out and starts shooting at me. I resort to the old stand-by and drop a bomb, taking the heat off for a moment. But now I'm out of bombs!

テクタイト
Tekutaito

Tektites are also meteorite explosion formed glasses.

YFpg2HP.gif


With no bombs left, I'm forced to rely on dodging, and miraculously I pull off a win with no further loss of life. When I say miraculously, I went through my video frame by frame and I'm not sure what killed the boss. Maybe my ship dealt contact damage to it? It really looks like I should have died instead.

ほうらい かのん
Hourai Kanon

This is in hiragana, not katakana, which I think means it's in Japanese, not loanwords. I also got it as soon as the boss died, but I was in contact with the boss at the time, so I'm not sure if a gem would have appeared but I collected it before it had the chance, or if you just get this pop up when the boss dies. Horai is apparently the Japanese name for Mount Penglai, a utopian location where immortals live. Kanon is the Japanese name for Guanyin, a bodhisattva associated with mercy. I know nothing about either of these and have no idea why they're mentioned here. Could also be something else with similar names, I dunno.

Anyways, that's stage 4.

Next Time:
STAGE 5
 

Kirin

Summon for hire
(he/him)
ヘリナイト
Herinaito

Helenite - OK, this one is actually interesting. It's an artificial glass made by melting volcanic ash from Mount St. Helens.

I initially read the second character in this one as 'so' instead of 'ri', which would make it Hessonite - a yellow-orange to reddish orange variety of grossular garnet also known as cinnamon stone - but given some of the other glassy stones in this stage I'm not sure.

The moral of the story is "there sure are a lot of minerals".

With no bombs left, I'm forced to rely on dodging, and miraculously I pull off a win with no further loss of life. When I say miraculously, I went through my video frame by frame and I'm not sure what killed the boss. Maybe my ship dealt contact damage to it? It really looks like I should have died instead.

ほうらい かのん
Hourai Kanon

This is in hiragana, not katakana, which I think means it's in Japanese, not loanwords. I also got it as soon as the boss died, but I was in contact with the boss at the time, so I'm not sure if a gem would have appeared but I collected it before it had the chance, or if you just get this pop up when the boss dies. Horai is apparently the Japanese name for Mount Penglai, a utopian location where immortals live. Kanon is the Japanese name for Guanyin, a bodhisattva associated with mercy. I know nothing about either of these and have no idea why they're mentioned here. Could also be something else with similar names, I dunno.

You know, putting these two things together, it almost seems like you picked up the white figure that ejected from the boss weapon. Is scooping up the boss's pilot an alternate win condition? Probably not and it was just a timing coincidence, but this game is weird enough that I'm not certain at all.
 

Yimothy

Red Plane
(he/him)
That's an interesting possibility I hadn't considered, and might tie in with the next post when I get to it. I'll have to see if I can finish the fight without making contact next time I play.
 

Yimothy

Red Plane
(he/him)
JouonMo.png


Here we are at the start of Stage 5:

カイベルダート
Kaiberudaato

OK, I've got two guesses for this one: Cyberdart, or Kaiser's Dart. It's probably neither. I don't know if this is significant, but the lives indicator is now alternating between red and black instead of red and white.

v7pS12E.gif


As soon as the level starts, we face a boss enemy. Check out the animation on this thing! I'm able to kite its fire around the screen without much trouble.

E68siA3.gif


It changes its firing pattern, but I'm soon able to finish it off. It breaks apart and explodes, apparently taking the gem it dropped with it. I'll have to try to pick that one up next time.

A67Hirr.png


With that taken care of, we move a bit higher and face some minor enemies. When I was playing this level, I read the blue background as the hull of a giant ship, but I'm pretty sure it's the sky and we're flying above the clouds. Those fast-moving clouds are murder on my GIF file sizes, so moving up a bit is a good thing.

gOzf06G.gif


A little further along another boss enemy rises through the clouds. This one looks a lot like the Dead Of Alive back in Stage 1, but instead of a sail it's got something mounted on the front.

8T6iltX.gif


Oh, it's a sword! But I take it out before it gets a chance to use it, once again missing the gem drop.

3I2ptPx.gif


Spoke too soon! The sword returns, summons some shields, and goes on the attack.

thEMyAI.gif


Briefly. I wonder if this would be harder if my current attack wasn't the piercing one?

Lpyr6Pc.gif


Oh hey, maybe there is a giant enemy airship in this level. I do well against its initial straight shots, but cop the first aimed shot it fires right to the face, losing my first life of many in this stage.

ouAEKbB.gif


The next phase is pretty standard stuff - I just move up and down within the lane drawn by the enemy fire.

d1Zmqgq.gif


Doing the same against diagonal fire is a little trickier, and I resort to bombing, probably unnecessarily. The gem I get here is a Jasper.

pdRSAD1.gif


This last phase gets pretty dense, but doesn't last long. It's fortunate that I've kept my level high so I'm doing a lot of damage. I get a 1up for beating this thing.

tnYpKgZ.png


Hard to believe this shot didn't hit me, but I'm not complaining. I did lose two hit points from it.

ZZHCgT7.gif


This might have been a good place to have the spread shot. These enemies die quickly, but if you don't get them straight away they put out a lot of fire. The gems I get here are アパタイト (Apatite) and ブルームーン (Blue Moon - apparently this is a type of quartz containing Dumortierite).

ZF8YKXj.gif


Here's the next miniboss. This appears to be a flying helmet, trailing a scarf? Technically I guess the scarf is leading it. Like a lot of shmup enemies, I'm pretty sure it's flying backwards.

ZQWZMco.gif


Check out the skill luck on display here in the dodge just before the bomb.

guO0sIR.gif


The enemy launches a barrage of arcing shots and I come a cropper.

31d5ruo.png


Then it's these blue shots - they come out as stars, then in the middle of the screen change to spheres and come straight at me.

K8G2dOy.gif


The next couple of patterns are pretty busy, and even a bomb isn't enough to save me. I'm getting low on lives, but more worryingly my power level is down to four.

uJl1R3O.gif


The enemy reverts to its first pattern and I at last take it out for good.

vYG4XMu.gif


Moments later the next enemy appears. A UFO?

iGhFRHQ.gif


Aww crumbs. Here's our first sight of the continue screen. I know real shmuppers are only in it for the 1CC, but ask me if I want to continue and I choose YES.

eC4aAno.png


This flashes for a single frame when I continue. Looks like a text readout of the game's binary file? I doubt it means anything.

pNELzXb.gif


I am mercifully returned to where I left off, though my GR (whatever it is) is back to 1. My level 3 gun is getting into pea shooter territory. Time to just start bombing everything. You don't get to carry leftover bombs between lives, so I've wasted a lot of them by dying instead of using them.

Zero points? What's that about?

E3v8hQ8.gif


Another one of these shows up. Unlike last time, it takes me out immediately.

0ZITrRG.png


So I bomb it into oblivion. Note that I just lost a life, meaning I had three bombs, and in this screenshot I have none left. Yeah, I'm going full bombs at this point. The mineral here is goshenite - we've seen it before.

6dMhGtg.png


These things look kind of like the ones that appeared after the miniboss at the start of the stage, but they shoot slow-moving blue balls instead of fastmoving yellow ones. Also with my level 2 gun I can't take them out in one hit.

D9fS3uD.png


Another life lost. I'm down to level 1 now.

SXRtRxi.png


I've still got bombs, though.

boxUo1d.png


Before long the last of those enemies scrolls off-screen (their projectiles hang around, though) and these little orange guys start showing up.

The gem here is a new one: ラピスラズリ, Lapis Lazuli.

TYQK82o.png


I think this one's new too: コハク. Amber. These enemies aren't firing on me, but they are dropping power-ups. Thank goodness!

Yv2AE0D.gif


They don't fire, but they can still attack. Are they supposed to be claw machine grabbers?

u7WuW93.gif


Shortly after losing that life, the next midboss shows up. Rudely, it starts firing before I can see it. It's another repeat, though there's neither sword nor sail this time. Is that a treasure chest on the bow?

OCk3nml.gif


With my power levels low, it's taking way longer to kill these guys. I get cornered and use a bomb.

Xrylotb.gif


Darn.

wMG2oEK.gif


Twice in a row? Come on, Yimothy! Get it together!

fx5k9VF.gif


I barely give the continue screen time to appear before getting back in the game and finishing the boss off. It drops a 1up. Nice!

dNadaqw.gif


OK, this thing. What is the deal with this thing?

JtbKqEs.gif


Watch this 24 frame GIF for two minutes, that's this fight in a nutshell. What the heck?

1RA6dEZ.gif


I try moving about to see if it makes a difference and this happens. Again, what the heck?

M9zkDii.png


I try bombs too, to no effect. Is this some kind of softlock?

fB6hWo2.gif


Whoa! Out of nowhere!

04hNDou.gif


It launches this attack occasionally. Sometimes it hits, sometimes it doesn't.

cUQvPym.gif


Eventually it dies. Did I just need to get to the right side of the screen and attack it there? I really wonder if this is something my emulator isn't handling correctly. Anyway, there's a drop:

メノウ
Menou

Agate.

B6VpD9R.png


The claw machine things start showing up again. These ones fly directly at me, pretty quickly. And they drop power-ups, which I am in desperate need of.

E2lPT4Y.gif


Oh, this is nice. This goes on for about 45 seconds, way longer than needed to get back up to full power.

rizwK4B.png


As I fly with only the moon and clouds for company, the boss music starts up.

ivfPz3T.png


I fail to consider my future need for a clean screenshot of the boss coming on stage and start firing immediately. It's saying something, but I can't read Japanese. Let's figure it out:

ごめんなさいおそれいりますが
Gomennasaiosoreirimasuga

Alright, without looking anything up I think the first bit is "Sorry". Phonetically the second bit looks kind of like sorry in English, too. Google is translating the whole line as "I'm sorry, but I'm afraid". Aww. Poor little guy. Maybe I shouldn't be shooting at it.

OBZgFt1.png


Oh wait, there's more:

これいじょういかせるわけには
Koreijouikaseruwakeniha

Google gives this as "I can't make this work". Are we breaking up? DeepL translator gives "I can't let you do this", which seems more likely.

5uDjtm9.png


After sitting there taking my fire, it blows up. I think. What's it saying?

しょうかん:マルチスイーパーカスタム
Shoukan:Marutisuiipaakasutamu

Google gives this as "Brothel: Multi Sweeper Custom". Seems unlikely. It asks if I meant 召喚, and when I click on that it gives the same sound for the first word (Shokan), but translates it as summon. That's more like it. "Multi Sweeper Custom", though? Let's see what appears:

D9Hoikk.gif


It's the stage 4 boss!

NSY3Vk0.png


Hmm... hair's different. Different palette on this stage, or a different character?

GpgU8cy.gif


Sigh. I'm getting pretty low on lives here.

CQXXobF.gif


That's using your noodle, Yimmers.

REtS0G0.png


Dunno if I should be aiming for the ship or the figure here, but the ship moves less so is easier to hit. And there's another new gem:

カイアナイト
Kyanite

o6BrPX0.gif


This red pattern doesn't last long. I suspect the bomb's power is determined by my level as well as well as the shot's power.

usWMZGB.gif


This one starts as a single shot, then two, then three, and so on.

UWN8tMl.png


Then we're back to earlier patterns.

LJ2Q1fZ.gif


This is really quite poor performance on my part.

sN3xQYj.gif


Sigh. Down to my last life, now.

mU35qx9.png


I start throwing enough bombs to summon the disk image data again, and...

equJNcm.gif


Yes! Got 'em!

fKetdVu.png


まほう:APPETOPPE
Mahou:APPETOPPE

Magic: Appetoppe. What's an appetoppe?

1iTB8KH.png


たとえこの ウシ がくだけちっても...
Tatoekono usi gakudaketittemo...

"Even if this cow is crappy..." Really? I think this might be an "Even if I die..." situation. Maybe I've mistranscribed a character. Oh, yeah, that should be ワ not ウ. Tatoekono wai gakudaketittemo. Hmm... "Even if this eagle is smashed". Alternatively, "Even if I'm crapping my pants". Must be that one.

GbckuIN.png


ときまほう:ZAP-HALL
Tokimahou:ZAP-HALL

Google translates this as Tokiho, which isn't much help. But we've had mahou as magic already, so what does toki mean? Google says "when". DeepL gives a few options, among them "Time". Time Magic: ZAP-HALL. Whatever that is.

オパール
Opaaru

The flying figure dropped an opal.

yf6JMzW.gif


Here's the scene in motion. That's a lot of blood for what I took to be some kind of vehicle. What will happen now?

yqfXnYB.gif


Oh, it's a black hole. Have I been transported through a wormhole somewhere for the next stage?

hoAfAHi.png


What the? Oh man... out of lives, out of credits. I guess I needed to dodge the black hole? Or maybe you just inevitably lose a life here and I was on my last one. Damn.

V4QLUoC.png


At least I got the high score. Didn't enter a name, though. And also I recorded all the gameplay so far in one take before I'd translated any of the menu, so I didn't save when I was done, so this is all gone now. Oh well.

Next Time:
Something different.
 

Mogri

Round and round I go
(he)
Staff member
Moderator
I like how they've integrated cutscenes into this game's combat.
 

Yimothy

Red Plane
(he/him)
Hello again! I haven't got any more gameplay footage today. Instead, you may remember this shot from earlier in the thread?

mFIRPF9.png


This is a shot from my early attempt at ROMhacking Pleasure Hearts into English. Well, in fact, DSK hacking, because the game didn't come on a ROM, but a disk. Which introduces a slight problem for me but I'll get to that later. Anyways, this post will explain how I hope to make the translation, what my difficulties have been, and so on. As usual I'll probably be going into far more detail than necessary.

Let's start with the basics: How did I get to the image above? Well, in the thread itself I translated the first page of the menu:

x51KJyD.png


Crumbs. Anyone read Japanese? Actually I already know that the first option, whatever the writing says, starts the game. But since I've got a screenshot, let's see if we can figure the options out:

スタート
Sutaato
Start

アイテム
Aitemu
Item

ステータス
Sutētasu
Status

コンフィグ
Konfuigu
Config

セーブ
Sēbu
Save

Having identified the Japanese characters, I just had to find where they were in my DSK file and change them. How do we do that? In short, with a hex editor. I've mostly been using one called XVI32. This is not a rom hacking specific editor, but what I've learned about hex editors trying to do this is that they all have their strengths and weaknesses. XVI doesn't do everything I'd like it to, but the ones that do the things it doesn't have problems that XVI doesn't. Side note: I'd always assumed XVI was a hex editing offshoot of venerable text editor vi. Actually, the name is just 16 in roman numerals.

A hex editor is like a text editor, but instead of editing text which is then encoded into binary, you're editing the raw binary of a file. For convenience and legibility, each eight bit byte is grouped into two hexadecimal characters (0-F), each character representing four bits. For example, 4C in hex represents 0100 1100 in binary. To find the Japanese text in the DSK file, I needed to find a hex string that matched the text displayed. To begin with, I went with スタート, the first item on the menu. But how to figure out what that was in hex? Fortunately, I have access to the internet. Searching for "MSX character encoding" got me to this page, and this image:

LSZ638T.png


The left column gives the first digit of the hex code, and the upper row gives the second. By finding a character on the table, I could get the hex code. So, ス is in row B column D, so it's BD. タ is C0, though the low res font of the table makes it a bit hard to tell. ー is B0, and ト is C4. So I'm looking for BD C0 B0 C4. Fire up XVI, hit "Find" in the menu, enter those numbers as a hex string, and you're taken to hex address 2796 (Hit F3 to search again and it turns up at 2B62, where it's part of the name entry screen, but never mind that for now). Let's take a look at the hex starting from 2796:

Code:
BD C0 B0 C4 FF B1 B2 C3 D1 FF BD C3 B0 C0 BD FF BA DD CC A8 B8 DE FF BE B0 CC DE FF BE B0 CC DE 9C E3 92 EF 9D A5 A5 A5 FF 4F 4B 2E FF 45 52 52 4F 52

Clear as mud. But, we have some idea what might come next: the other menu items. The next thing on the menu is アイテム. If we look at the numbers after BDC0B0C4, it goes FF, which on our character encoding table is a blue square, then B1 - ア on the table. Next is B2, イ on the table, then C3 - テ, and D1 - ム. Then it's FF again. I won't go into it, but this continues through the other three items on the menu - the codes match them, with FF in between. FF, as it turns out, is the line break character. It tells the game where a string ends. So, now that we know where the data is, we can edit it!

Code:
BD C0 B0 C4 FF = スタート = Start
B1 B2 C3 D1 FF = アイテム = Item
BD C3 B0 C0 BD FF = ステータス = Stats
BA DD CC A8 B8 DE FF = コンフィグ = Config
BE B0 CC DE FF = セーブ = Save

Fortunately, the encoding in this table for English letters matches the default encoding in the hex editor, meaning instead of having to type in hex codes I can just type in the letter (if I've set the editor to text mode). Unfortunately, Japanese words tend to have fewer letters than their English equivalents thanks to the Japanese letters conveying a consonant and a vowel together (though in this encoding characters with the little dots or dashes on them need to have that added as a second character, which helps sometimes). That means the hex strings for English words are often longer than the equivalent Japanese word. In the above case, there are 23 Japanese letters. My translations hold 24, and honestly it'd probably be better if "Item" were "Items". I can just insert an extra letter, and I tried that. The result was that the file would no longer run. The problem is that inserting an extra letter displaces everything after it in the file. If the program is told to look at the data at address 14AB8, what it will find there is what's supposed to be at 14AB7. Things aren't going to work like that.

In this case, I've gotten around the problem by dropping the I from "Config" to make it "Confg", which to be honest I'm not that happy with. Maybe I should change "Start" to "Play", and use the letter gained that way to make "Config"? I'm actually fortunate that I can move letters between words. In some cases, including within this game, every line of text has a pointer somewhere that tells the game where it is. If that were the case here, I'd have to find and edit the pointers if I wanted to change the length of each line. I'll be getting to that later for a different part of the file. For now, it seems there's only a pointer for the first letter of this menu, and the game divides it into lines using the FF character (as a side note, even when there is a pointer between each line the line break character will still be there, because the pointer only tells the game where to start looking, not where to stop). Consequently, I can insert a character into one line, so long as I delete one from another.

So, I juggled the space a little, typed in my English menu, saved the file, and fired it up. I've already posted the image of the result, so here's the modified hex:

Code:
53 54 41 52 54 FF (START)
49 54 45 4D FF (ITEM)
53 54 41 54 53 FF (STATS)
43 4F 4E 46 47 FF (CONFG)
53 41 56 45 FF (SAVE)

This was a lot easier than I'd expected. I was lucky to be looking at a game with no compression, using the standard encoding for its system, and not using pointers for every line. At this point I opened a new file on my computer:

notes.txt said:
(Bad) Technique:
get hex codes for JP characters from screenshot and hex table
search hex string in disk image to find data
overwrite with translated version - maintain string lengths, but seem to be able to take from other lines in same menu box without trouble - shorted one line, lengthen other by same amount

Then I opened the other menu pages, took screenshots, transcribed their characters into hex, translated them, and looked at putting the data in:

AaRO7yF.png


notes.txt said:
CA B2 BD BA B1
ハ イ ス コ ア - High Score

9D ED DE E3 99 9D
す へ ゛ て け す - Erase

B2 DD CC AB D2 B0 BC AE DD
インフォメーション - Information

B1 B2 C3 D1 9D ED DE E3 9D E3 F9
アイテムすべてすてる - All items are gone (Item reset?)

9D ED DE E3 9C 8E 97 96 9D F9
すべてしょきかする - Initialise everything (Reset All?)

F3 E4 DE F9
もと゛る - Return (Back)

41K290V.png


I had to abbreviate things a bit to make it fit, but this actually looks pretty good. "Info" is the only one which is obviously shortened, and it's a pretty common abbreviation.

JYmQ4im.png


I'm pretty pleased with how this one came out. This is what you get by selecting "Item reset". The two near-identical overlapped boxes on the left are asking "Are you sure", with the latter presumably being a little more emphatic. I translated these as "Really?" and "For sure?" to fit within the length of the Japanese text. Their options were No and Yes - no being three characters in Japanese and yes being two, which was fortunate for me. The third box was machine translated by google as

I've lost the data in memory.
to erase the data on disc,
please 「save」 as it is.

After some thought, that became:

Data cleared from
memory. Use 「Save」
to clear from disk.

So these reset options don't do anything permanent. That's what "Save" is for in the menu.

hytGhLH.png


I also changed the name entry screen to default to the Latin alphabet, and changed the label for it to "ABC". This was at 2A88, here it is after I've messed with it:

8PIWsYO.png


The highlighted part is one screen worth of characters. Note that ABC, NEXT, BACK, and START repeat three times. The first is the English screen. The second is the hiragana screen, and the third the katakana. I edited the menu items, then cut and pasted the English section up to the top.

Let's look at my hex editor screen for a moment here. On the left side is the hex. On the right, the characters encoded by it. The Latin alphabet is no problem, but the hiragana and katakana are not displaying properly at all. This is one of two big issues I have with XVI - it doesn't allow me to customise the encoding for the right side of the screen. Hex editors designed specifically for ROM hacking generally do, using what are called table files - a table which tells the editor which code corresponds to which character.

At this point in this project, I got stuck for ages trying to figure this out. I was looking at various hex editors that supported table files. I had made a table file using the hex values from the image I posted earlier, but it wasn't displaying correctly. The problem was, I'd been doing everything using UTF-8 encoding, and all the editors I could find were using ANSI or something. Another issue is that although there's a lot of information out there about rom hacking, most of it is in forum posts and dead websites. It's not easy to find straightforward instructions and information about how to use the tools. WindHex, one of the other editors I've been using, has a tool for creating table files, and I eventually used it to make one that would work in that editor, but it doesn't tell you how to use it and I struggled to figure it out.

wPJZxik.png


Here's the same thing in WindHex with my table file applied (and the "Display Text Data as Japanese" option turned on). It's much easier to tell what it is, though I wish all the characters on the right were evenly spaced (XVI monospacing everything makes the table layout of this text much more obvious). Thing is, I don't actually read Japanese, so having the characters there doesn't help me as much as I thought it would. Also it took me a seriously long time to get this working and by then I'd figured out a different approach: I'd find some text from the game, transcribe the first few characters into hex, search for that, and then copy/paste as much hex starting from there (or a bit earlier) as I thought was text (possibly looking at it in WindHex, admittedly) into a text file. Then I set up a batch file to do a find/replace on the hex and convert it to Japanese script (in UTF-8). Then I could copy/paste the Japanese script into online dictionaries or wherever to try to translate it.

So, what needs to be translated in this game? Well, we've already got the menu more or less sorted. There's also the plot, those little lines of text that come up in the prologue and during the stage 5 boss. And of course, the minerals. Loads of minerals. I'll make a list of things I know need translating:

Menu
Dialogue
Minerals (in game)
Minerals + items (menu)
Stage titles
Error messages
Ending
Printed manual (if I'm getting ambitious)

Of these, the menu is pretty much done. The dialogue I haven't really played with, but I've had no trouble finding it in the code, so it should be ok. Stage titles are the same. Error messages are a little tricky, because how will I know if I've got them all? I don't know how many errors there might be. The ending I haven't tried at all, not having beat the game to get it, but there are longplays on youtube that should give me a look at what I'm looking for. Also I do plan to beat the game at some point. The manual (reasonable photos of which can be found online, though I'd like something higher res for some of the kanji) I've done a little work on. But the bulk of my efforts have gone to the minerals. Those darn minerals. There's like 80 of them, and there's also a heap of other items.

Fg91xvM.png


Here's where the in-game text for the minerals lives (starting from the third row, 3E7E0). Although the Japanese characters are rendered as squiggles, there's a recognisable structure to the data. Each line starts with a single digit hex - 03, 06, 09, 0A. Then a bunch of values, then FF, then some spaces, then a few more random seeming values. I haven't figured out what the numbers at the end do yet, but the first digit corresponds to how many characters are in the name and is used to tell the game how big to draw the text box, then the first set of values is the name. So if we take one of the rows:

05 BD CC AA B0 DD FF 20 20 20 20 20 00 00 24 00

There are five values between the first value and FF, so the first value is set to 5. Going off my MSX encoding table, those values correlate to スフェーン, which translates to sphene, another name for titanite. So if I want to translate this, it's simple: change 05 to 06, and overwrite the next six values with SPHENE. Then I need to change the first 20 to FF. And we're done. Alternatively, I could change 05 to 08 and go with Titanite, which I like better as a name. The problem with that comes when we get to the list of names for items in the menu:

ei6374k.png


These are the same names, but with an extra character added to the start to signify item type. And it's only showing the ones I've found. This list has 256 entries, and is stored in one long string:

80 BC AA D9 FF 80 CB DE B0 C4 DE DB FF 80 C3 B8 C0 B2 C4 FF 80 BD CC AA B0 DD FF 80 C0 DE B2 B5 CC DF BB B2 C4 FF 80 B1 CF BF DE C5 B2 C4 FF 80 D3 D9 C0 DE CA DE B2 C4 DE FF 80 BA DE B0 BC AA C5 B2 C4 FF 80 B4 CB DF C4 DE B0 C4 FF 80 BC DE D9 BA DD FF 80 B1 CD DE DD C1 AD D8 FF 80 BD B7 AC CE DF D7 B2 C4 FF 80 BC DE AC BD CA DF B0 FF 80 BF B0 C0 DE D7 B2 C4 FF 80 CC DB B0 D7 B2 C4 FF 80 CA B3 D7 B2 C4 FF 80 BD CB DF C8 D9 FF 80 CC DE D7 AF C4 DE BD C4 B0 DD FF 80 B2 DD B6 DB B0 BD DE FF 80 CE DE B0 B3 AA C5 B2 C4 FF 80 B1 CA DF C0 B2 C4 FF 80 B8 D8 BD C0 D9 FF

This is just a chunk of it. Like the menu text earlier on, this is a long series of names separated by FF line breaks. The 80s are the code for the gem special character. Later entries have different prefixes for different icons. Speaking of which, here's my special character list:

notes.txt said:
Special Characters (Main menu/In game):
5C yen symbol = dt
80 spade = gem symbol/T
81 hearts = treasure chest/R
82 clubs = key/A
83 diamonds = reg jug/I
84 hollow circle = sword/Right arrow
85 solid circle = sack/Gem
90 = heart/S
A0 = floppy disk/C
FE = page/Heart
60 = copyright symbol
06 = Mushroom/Black Box
7B { = [
7C | = ¥
7D } = ]
A1=。
A2=「
A3=」
A4=、
A5=・

The special characters are defined differently in menu text versus in-game text. The heart icon, for example, is 90 in menu text but FE in game text. I figured these out by replacing text with the numbers I thought might be special characters and seeing what happened:

5AymUKs.png


I've changed the bottom line here to 80 81 82 83 84 85 90 A0 FE 06. "TRAI" is not the usual font - these special characters are used to write DEMONSTRATION during the demo, and for things like LEVEL and GR at the top of this shot. The heart icon is the same one used for my HP.

Anyway, to get back to the item list. It's a long series of names separated by line breaks, like how the menu text is stored, but longer. Except: every item on the list has its own pointer. This is bad for me, because it means I can't just take a letter from one entry on the list and put it into a different entry. If I want to adjust word length (which I don't, but if I want my hack to be any good I'll need to), I need to adjust the pointers as well. So, what is a pointer (I'll point out here that I'm a nurse, and know a lot less about how software works than a lot of other forum members do, so please forgive mistakes)? It's a value that points to a memory address. When the game wants to display an item from this list, it looks at the pointer, goes to the address it specifies, and takes data from that point until it reaches FF (or whatever other value the game might use to signify a line break). If I start shuffling data around but don't change the pointers, then the pointer will be pointing at the wrong data. For example, here are the first two items on the list, what those values correspond to in katakana, and what that means in English:

80 BC AA D9 FF - シェル Shell
80 CB DE B0 C4 DE DB FF - ヒ゛ート゛ロ Glass

The first one has three characters in Japanese, but five in English, while the second has six in Japanese (because ビ requires a second character for the ゛) and five in English. If I modify the text but leave the pointers (indicated by #):

Code:
80 S H E L L FF 80 G L A S S FF
#          #                 #

The output for the first item is SHELL, but the second item becomes L because the pointer is still pointing to the sixth character in the string, which is now the last letter of the first entry. The third word will be even worse, because the pointer is going straight to the end of text indicator.

So, in order to make a translation without having to keep the same word lengths (I guess I could go with SHL?), I need to find and modify the pointers. But where are they? Spoilers: immediately above the text, in this case. But it took me a long time to figure that out. The problem was that I didn't know what format they'd be in, or where they might be, or what they should look like. And I was unable to find any information online about generic techniques to find pointers. Lots about finding NES pointers, or SNES, or SMS. Nothing generic. So I had to look at those other systems, and try to figure out from them what the pointers might look like. And then I had to try to find that.

I'll cut to the chase: in this game, for this block of text, the pointers consist of two bytes corresponding to the memory address but in little endian order (I think little - I find endianness very confusing). So, off the bat, two bytes aren't enough to describe an absolute memory address in a 720kB file. So I wasn't able to just look at the memory address of the first entry in the list (14200) and try searching the hex for it. I did try that - a hex search for 01 42 00 didn't get me anywhere. I tried reversing the endianness, which means putting the bytes in reverse order (while keeping the contents of the bytes in the same order). Searching 00 42 01 didn't get me anywhere. I tried just searching for the less significant bytes (42 and 00) in both orders, but that didn't work out. What I needed was the offset - the number that needed to be added to or subtracted from the actual address to give the value stored in the pointer. But how do you identify that? Well, on the NES it's 10, apparently. Not much help here. I found lots of documents telling me offsets for various situations, but nothing on how to find one yourself. Eventually, I thought of an answer: wildcard searching. I made a list of the addresses of the first few items:

14200
14205
1420D
14214
1421B

Then I used XVI's hex search leaving every second character undefined:

00 xx 05 xx 0d xx 14 xx 1B

The plan was that if that didn't get an answer, I'd put two wildcards between each value. As it turns out, though, at address 1400 (512 bytes earlier than where the 256 item long list started), I got 00 C6 05 C6 0D C6 14 C6 1B. So each two bytes was describing the memory address, less significant byte first, with 84 added to the larger byte:

01 42 00 became 00 C6
01 42 05 became 05 C6

And this went on for 256 pairs. I'd found it! Now, seriously, why didn't any of the readme files, forum posts, or other guides I'd looked at just suggest this method? There is a slightly better version of this, though. I was relying on the least significant bytes not being changed by the offset. There is a method of searching where it doesn't matter if the offset impacts all bytes, so long as it's consistent: relative search. XVI doesn't have it. WindHex does, but seemingly only for encoded text, not for the hex values themselves. I wound up using a third editor, translhextion, which has "relative value scan". It doesn't explain anywhere what that means, but when I tried it out it allows me to search for a series of changes in hex values. It also allows wildcards. Basically instead of searching for specific values, it compares subsequent values to earlier ones to see if the differences are the same. So for my earlier search string:

00 xx 05 xx 0d xx 14 xx 1B

It would also find

01 xx 06 xx 0E xx 15 xx 1C

Because the differences between values are the same even if the values themselves aren't. I was able to use this search method to find the same pointers in the same place as I had with XVI (though I didn't need to having already found them). What I don't get here is why nobody was suggesting this anywhere I could find? There's heaps of guides to using relative search to generate table files to figure out the text encoding of a file, nothing I could find about using it for pointers.

Anyway, the good news was I'd found the pointer block. The bad news was that this meant I couldn't just give up on translating the item list as unfeasible and move on. It's a long list! And most of the entries are longer in English than in Japanese! I made a tally, and for the first 80-odd items which are the gems, I need to find 138 extra characters somehow. Plus there's the rest of the list, which I haven't translated yet. I've got a few ideas for this:

-Make the names as long as I want and adjust all the pointers. This would give the best results, but would be a lot of work. Also I tried changing some of the pointers and it seems like there's a limited set of values that will work - going outside of them causes crashes or muddled data (not the data I'd set them to point at). It seems there are only an extra 83 spaces I can put data into.
-Abbreviate the names where possible and adjust all the pointers. Also a lot of work, not as good a result, but might fit more easily. I could save a lot of space by just dropping the "e" from the end of a lot of minerals. Titanite -> Titanit. Doesn't look great, though. Lapis Lazuli could become just Lapis easily enough, though.
-Drop the icons at the start of the names. This would give me an extra character per name right off the bat, which would make a big difference, but wouldn't look as nice. I'd rather not go this way.
-Change names. Change Watermelon Agate to Jet. It's a completely different stone, but it uses way less characters. I'm probably going to do this a bit, I think. Some of the actual names are just way too long.
-Dual character encoding - if I could find a way to edit the font (which I have tried to do - I found tiles that seemed to be the font, but when I edited them nothing changed) I could maybe put two letters in one character to save space. Combine "li" or "it" or whatever. I just have to figure out how to do it.
-Combine strings. Some of the gems have similar names and I could combine them. Ruby and StarRuby could be the same string, for example, with one pointer going to the S and the other pointer going to the second R. Same with Onyx and Sardonyx. Come to think of it though, this would lose the icon at the start. Darn.
-Just not bother. Tempting option.

There is software out there that will automatically sort out the pointers for you, but you have to set it up correctly. Foolishly, I'm planning to do it manually rather than spending the time to figure out the automation. Also foolishly I'm still working in a bunch of text files. I probably should be learning how to spreadsheet for this. I bet if I worked at it I could make a sheet that would tally up the character numbers and calculate the memory addresses for me. Hmm...

Aside from the item list, it would be nice to edit the pointers of the menu text so I can get that "i" into "config". Except, I can't find the pointers. I tried the methods described above, they didn't work. So, I'm considering using a trick. Here's the data:

QgPhrHI.png


Notice that right after "SAVE" comes "SAVING... ". SAVING has its own pointer which I haven't found, so I can't just move one of those spaces. If I do manage to find it, it'll be easy. Increment the pointer by one, insert the I in CONFIG, and delete one of the spaces after SAVING. I could even delete two spaces and stick an S on ITEM. But, if I can't find the pointer, I could insert even more characters (probably blank spaces) before the SAVING pointer (deleting the equivalent number afterwards) and make SAVE from the menu land at the pointer. This should get SAVE still in the menu, and when I chose to save instead of a box popping up to say

SAVING...
OK

It would be

SAVE
OK

Which is not as good, but not terrible.


Another small issue I hit on while working on this is that it's not a ROM file. It's a DSK. It isn't read-only. That means that the game changes the file I'm working on. Mostly it changes things that are seperated from what I'm working on. Basically it's the save data - high scores and which items I've collected. I'd prefer to finish this thing without my save data baked into it, which means editing a version of the file which never gets opened in the emulator (it seems to make some changes even without my choosing "Save" on the menu). So I'm doing the editing in one version, testing that version, and then if it works copying the edit to my "clean" hacked version. This is very likely to introduce errors.

OK, I think that's enough. Here ends this edition of the Yimothy Guide to Romhacking for Absolute Beginners. Hope it's been interesting.
 

Mogri

Round and round I go
(he)
Staff member
Moderator
That's a fascinating peek into the world of ROM localization.

If the gems are too much, you could use the icon plus their point values instead of the actual names. It seems like there's not a good answer, and this approach leaves you with the fewest difficult decisions.
 

Yimothy

Red Plane
(he/him)
I'm coming to understand how, for example, Cúchulainn shows up in FFT as Queklain. Turns out translation is hard! There's a bunch of stuff in the item list that seems like it's probably inside jokes or pop culture references that I'm not likely to understand the intent of. I might leave stuff I just can't figure out in Japanese.

At the moment I'm looking at a couple of names which seem to be for people. Machine translation is giving them as Author and Mayor, which could be right, but I'm currently going with Asa and Mayol, which are what the results I got searching directly in google gave me. Is this what was intended? No idea. I've also figured out how to change DEAD OF ALIVE on the stage one boss's sail to DEAD OR ALIVE. The question is, should I change it? Maybe I'm overthinking it.
 

Kirin

Summon for hire
(he/him)
This is all super cool, thanks for writing it up.

If I'm remembering right, the stage name also definitely had "DEAD OF ALIVE" in kana, so it was presumably written that way in both places, but whether it's an intentional weird turn of phrase or just unknowing Engrish is anyone's guess.

Also just guessing, "Mayor" seems like it wight be intentional as it's a title that gets used in a lot of old video games and fantasy contexts. "Author" though, while possible, seems like a stretch, unless it ends up supported by something in the ending plot.

As for all the gems, if I were the crazy one doing this I'd probably be inclined to just go with highly abbreviated versions of the actual translated names, which can get ugly to be sure, but can have a sort of retro NES translation feel to it (for the very reasons you're running into, of course). For something as ridiculously long as Watermelon Agate I might just go with W.Agate, which obviously loses info but still seems like something you could pick up in an old video game. Or maybe MelonAgate is space allowed. And so on. But obviously that's a ton of work, this is a cool hack whatever you do!
 

Yimothy

Red Plane
(he/him)
I've done some more work on this. First, this ugly thing:

RiK8L5i.png


I wanted to know what all the special characters were, so I filled the name entry screen with them. This image is that, with the hex codes at the top. Each column of numbers corresponds with the column of symbols below it. It would be a lot more readable if I'd put the numbers next to the symbols, but I decided it wouldn't be worth the effort. Wasn't planning on posting the image at the time.

The letters on this screen are actually encoded in lower case, but it seems there's no lower case font in the game. In theory I could put one in, but my attempts to edit the existing font have so far not been fruitful. I think it's beyond me for now. Plus, a lot of work.

fQbReiZ.png


Speaking of a lot of work, I finished putting the English item list into hex. Turns out it's actually shorter than the Japanese original, mostly due to a loss of details in some of the items. For example, there's a section which is all foods. In Japanese it'll be like ゴウガシャビーフ, which phonetically is "gouga sha beef", but in my version is "BEEF". I don't know what gouga sha means (one machine translation suggested "gorgeous", but I also wondered if it might be goulash), but honestly I'm happy to save a few letters. There are also a bunch of keys which have the key icon, then what they're made of, then the word "key". I dropped "key" and saved a heap of letters. Backup plan was to change them from like gold to Au, copper to Cu, and so on. Probably for the best that that wasn't necessary. High grade grease became GREASE. Some things I didn't translate, either because I didn't know what they meant or because I thought they made more sense with the kana. For example, in the image there on the right just above the middle is "JTC<misc characters>Z10", which should come out in-game as JTCウィンZ10, apparently the name of a font. Slightly lower is the code for "MADもとネタALL", which I left alone because I don't know what it means.

There's a whole heap of what look like CDs, some of which you can see at the top right of the image above. I wasn't able to figure out a lot of those, though "BANANAFR." is short for Banana Fritters, a Japanese group. BAN.SENS. is Banana Sensation, on of their albums, and BANANABEST is their best of. I think COMPILE and TOAPLAN are shooter soundtracks, and hey look there's a typo in ELDRAN. I'll just correct that in the file. There are a few things in the list that I didn't wind up looking too far into. Like at the top there, MEGA BABE KAZUMI. Don't google that one at work. I wound up being kind of loose with the translations, sometimes having to take a guess at what things might mean. For example:

Code:
81 95 F4 9C DE D0 BB B2 D9 FF おやじミサイル Father/Boss/Old Man's Missile
81 95 F4 9C DE BC AE AF C4 FF おやじショット Father/Boss/Old Man's Shot
81 95 F4 9C DE CA B2 CA DF B0 FF おやじハイパー Father/Boss/Old Man's Hyper

I wound up putting these as DADMISSILE DADSHOT DADHYPER, which I am sure is not correct, but what is correct? This is not a rhetorical question, if anyone can tell me I'd like to know. Actually, thinking of it, I'm gonna change DAD to BOSS. Boss weapons make sense, right? There's also:

Code:
20 91 20 EA 20 9B 20 E9 20 9A 20 FF あ は さ の こ 
20 EB 20 F3 20 E9 20 DC 20 FD 20 B1 20 FF ひ も の ワ ん ア 
20 9C 20 E3 DE 92 20 B1 20 9A 20 FF し で い ア こ 
20 9A DE 8F 20 86 20 C0 20 92 20 B2 20 FF ごっ を タ い イ 
20 96 20 97 20 E6 20 B2 20 E6 20 FF か き に イ に
20 92 20 E3 20 96 20 BC 20 9A 20 C3 20 FF い てか シ こ テ
20 F7 20 EF 20 E2 20 C3 20 91 20 FF ら ま つ テ あ
20 8F 20 F9 20 97 20 96 DE 93 20 D1 20 FF っ る き が う ム
20 9D DE 9E 20 96 20 D1 20 F9 20 FF ず せ か ム る
20 EE DF EB 20 EF 20 CE 20 E6 20 32 20 FF ぽ ひ ま ホ に 2
20 A1 20 FD 20 93 20 EA 20 9D 20 FF 。 ん う は す
20 93 20 E4 20 9C 20 BC 20 EA 20 30 20 FF う と し シ は 0
20 28 20 E9 20 9A 20 9C DE ED DE FF ( の こ じ べ
20 86 20 EA 20 E0 20 B2 20 92 20 30 20 FF を は た イ い 0
20 AB 20 E3 DE E4 20 8F 20 E3 20 FF ォ で と っ て
20 21 20 9E DE A1 20 F3 20 EF 20 EA DE FF ! ぜ。 も ま ば

I can't make sense of any of this. Maybe all of them together spell something out? But like, there's an opening bracket but no closing bracket! What is this?

Another puzzle for me is 16 EE 93 F7 92 20 96 E9 FD FF ほうらい かのん. This was the thing I picked up when I beat the boss of stage four, possibly the boss itself. I initially had this as Hourai Kanon, respectively the name of a mountain where immortals live and a bohisattva. I still don't really know what this means, but for now I've put it in my list as DIVINEKANON, which seems like a reasonable interpretation but could be way off. It also presents a slight problem in length. In the original item list, there are a few items with names thirteen characters long, so we're safe there, but in the other list, the text which appears in game when you pick something up (which has only about a third of the items that the other list does), there's nothing longer than ten characters, so I'll need to drop one to make this name fit. I guess I could just go with HORAIKANON and leave it to the user to figure out what it means.

Anyway, I guess I need to take another look over it for any more typos, and then look at sorting out the pointers. I don't think that will be difficult, just tedious. I've written it all out into a new file, I just need to make a list of the memory address of each item on the list (which I can get by looking at the character after each FF hex), then add the appropriate offset, then write it out with the two hexes for each address in reverse order. Actually, rather than add the offset to each address, I plan to just add enough zeroes before the actual data that the address in my list file will match the pointers. The first pointer is C600, so I just gotta insert 00 at the start 50,688 times. And I guess if I put an extra one in, it'll bump all the FFs over to where I want the pointer to be so I can just take their addresses. I think one of my hex editors can search for things and make a list of addresses where they appear, that might help. Anyway, however I do it it's gonna be a pain. The other thing is that whatever editing I do to my item list, I need to do it before sorting out the pointers, because if I wind up inserting an extra character somewhere later I'll have to redo them. No thanks.

yjLuRBP.png


Here's some of where the game stores data. The bit with all the lines is the high scores. I think the game is keeping multiple score tables depending on the processor of the system it's running on, but I'm not totally sure. The high scores aren't too hard to read - the dashes (and YIM) are the names, then after them are the scores, which although stored as hex are actually decimal numbers. As in, to the right of YIM where it says pD&, that's hex values 70 44 26. My high score on this file is 264,470 (decimal). The value below is 00 00 20, which in-game is 200,000. I guess if I wanted to I could give myself some ridiculous scores, but I have noticed that if you fiddle with the save data the game detects it and wipes the save file. I haven't tried with scores, though.

What else is stored here? I think the YIM at the bottom is where it stores the default for the name entry screen. The numbers just below the high score table are what I'm really interested in, though. I think that this is where it stores which items you've found. I'd really like to trick the game into thinking I've found all the items so I can test out how my new item list looks in-game. I think the format is that it's just a 256-bit long string, and each bit that's set to 1 is an item that you have. For example, on this file I have the second and the 20th items on the list. If you take the first three hexes here, 02 00 08, and convert them to binary, you get 00000010 00000000 00001000. That looks like I should have the seventh and the 21st items, but if you count backwards within each byte:

Code:
8  ->  1  16  ->  9  24  ->  17   
00000010   00000000   00001000
      2                   20

Then it works. I tried filling in all 256 bits with 1s, but it got me this message:

ujJdPHX.png


Which machine translate tells me means "I'm sorry to tell you this, but the book of secrets has been lost". Or "It's an adventure, but I've lost my adventure". Either way, what I think it's really saying is "Save file corrupted". Then it deletes your data. It must be checking the save file against something somehow. Dunno. I've tried making much smaller changes, turning one item off and one other one, and it still throws an error. I guess it's to stop cheating.

OK, something else: The first stage's title, Dead Of Alive, shows up on the sail of the stage boss:

3uSUlAI.png


Was this a deliberate choice, or should it say "Dead or Alive"? I don't know the answer, but I think I'm going to change it to the latter. But how?

u2UqWv3.png


Here's WindHex's tile editor, going to hex position 70,000 in the file. It's showing the data as each bit representing a pixel, and we can see what looks kind of like a jumble of the first boss in the right pane. In the top left pane I've selected one tile, which looks like the word "OF". To edit it, I just need to black out a few pixels to turn the F into an R. This can probably be done through the tile editor, but honestly I find it very hard to work with. It doesn't explain itself well. Instead, I looked at which pixels were on or off, figured out what hex values they would correspond to, and searched for them in the file. So, for the first line, all but two pixels are on. In binary, it's 11111001. In hex, that's F9. Do the same for the others, and we get:

Code:
F9 11111001
DB 11011011
A9 10101001
AB 10101011
AB 10101011
DF 11011111
FF 11111111
F1 11110001

This would probably read more easily with the ones and zeros reversed, but you can see how it makes the tile. To turn it into an R, I change it to:

Code:
F9 11111001
DA 11011010
A9 10101001
AA 10101010
AA 10101010
DF 11011111
FF 11111111
F1 11110001

Let's face it, figuring out the interface of WindHex's tile editor would probably have been easier than this. But anyway, I opened up XVI and did a find/replace of F9 DB A9 AB AB DF FF F1 to F9 DA A9 AA AA DF FF F1, and the result:

MXKxsVe.png


Nice! The other advantage of doing this by replacing the hex instead of using the tile editor is that the string I'm replacing actually occurs four times in the disk image. Which of those four do I need to change to make this happen? No idea, I just replaced them all. It's not impossible that one of those strings related to something else and doing this will have broken it, but it's unlikely.

I tried doing the same thing to the tiles with the font on them, but although I changed all six instances of the O tile, it didn't change in-game.

OK, one more thing. I think I mentioned translating the manual. That's much harder than the in-game text, because it requires identifying kanji, and because I can't pull the hex data from the disk image to identify the characters for me. I've done a little bit of it, but for now here's the back of the box:

ZKIfR6c.jpg


This is similar to, but not exactly the same as the text on the story page of the manual. Identifying kanji is kind of a nightmare. I've been using jisho.org's radicals feature. It lets you choose radicals (components of kanji) and gives characters that contain those components. But it's still hard, because the image I'm working from is not super-high-res, and because the radicals may be distorted, or what looks like two small radicals together is actually a single more complicated radical. I got stumped for ages by 詩. I was trying to make the left side of it out of 二 and 口, but it turns out I needed to use 言. Note that the radical is compressed horizontally to fit into the kanji. Some of the more complex ones get really squished and hard to read. Anyways, here's the box text:

MSX最強シューティソグ.

MSX's Strongest Shooter

再臨.

The Second Coming

剣と魔砲と歯車の交差する世界...

A world where guns, swords, and gears meet...

「Pleasure Hearts」

その光り輝く宝石を持つものは全てを統べるといわれる…

A shining jewel, said to give its owner control of everything...

今, その幻の宝石を求め,2人の若き勇士と鉄の翼が空を駆け抜ける!

Now, seeking the phantom jewel, two young heroes travel the skies on iron wings!

だがストーリーは思わぬ展開へ走り出す...

However, the story takes an unexpected turn...

「完全攻略キヨクゲン」のM改が放つ,

The next release by 「Perfect Assault Kyokugen」's M-Kai

RPGライク横スクロールシェーティングゲームの金字塔!

The best RPG-like horizontal scrolling shooting game!

しいあ「こいつぁすごいぜっ!」

Shia: This is amazing!

A few things to explain here: Shia is the name of one of the two young heros, I think the player character. Kyokugen is M-Kai's previous game, a vertical shooter (also a very good game, by the way). As for the second coming, although this is M-Kai Operation 3, it's only his second shooter. Operation 1 was a JRPG.

Alright, I think that's enough for today. I'll end with a request for help: I don't speak Japanese, and there are a few instances where machine translation isn't getting me anywhere. If anyone can help me understand any of these, I'll be grateful:

...やれ.
...Yare.

This is what the enemy plane says when setting the dragon on you at the end of the prologue. I'm leaning towards "...Do it." for my version.

ヤナック ダイウ゛ォス
Yanakku Daivosu

This is the name of the second stage and presumably its boss. DeepL gives yanakku as "dead of night". Daivosu could be "divers" or "diverse", maybe? The stage is dark, and the boss is a gun built into a mountain. "Canyon Dive"? "Night Divers"? I dunno.

デヴァガメッシュ
Devagamesshu

Stage 3. My theory for this one is that it's Ganesha, the Hindu deva. The boss is a big grey tank with a flexible cannon that looks sort of like an elephant trunk. This makes sense to me, but I know next to nothing about Hinduism and don't want to offend by getting this wrong.

カイベルダート
Kaiberudaato

Stage 5 - KaiserDart?

しょうかん:マルチスイーパーカスタム
Shoukan:Marutisuiipaakasutamu

This is part of the dialogue of the boss of stage five, and comes up when it summons another boss. Summon: multi super custom?

まほう:APPETOPPE

A bit of googling suggests appetoppe is a regional phrase meaning something doesn't make sense or is confusing. So what's that mean here?

I'm also after help with the seemingly random series of characters in the item list, as mentioned earlier in the post. And there are these:

ステ
テンオチ
デフォ
エーパ

Also in the item list, they have a page of paper icon next to them, kind of a mystery. I've put something for them in my hex, but I doubt it's accurate. If I'm honest, there are quite a few places where I was a bit liberal with my translation.
 

Torzelbaum

????? LV 13 HP 292/ 292
(he, him, his)
the scores, which although stored as hex are actually decimal numbers. As in, to the right of YIM where it says pD&, that's hex values 70 44 26. My high score on this file is 264,470 (decimal). The value below is 00 00 20, which in-game is 200,000.
This is known as little endian (LE).

It must be checking the save file against something somehow.
There must be some kind of integrity check possibly with a checksum value stored somewhere in the data. I don't know how people usually reverse-engineer those but I think you would have to look at the executable code in order to do that. (I wonder if there is some sort of debug mode hidden in the game that you could use.)
 

Kirin

Summon for hire
(he/him)
Agreeing with Torz, I was about to say I bet there’s a checksum on the save data and it just throws it all out if it doesn’t match. You’d have to know both where the checksum is stored and how it’s generated (over exactly what portion of the data) to fix it.

. For example, in the image there on the right just above the middle is "JTC<misc characters>Z10", which should come out in-game as JTCウィンZ10, apparently the name of a font.

Not that it matters, but I suspect the ‘uin’ there is Win for a Windows font.

I wound up putting these as DADMISSILE DADSHOT DADHYPER, which I am sure is not correct, but what is correct? This is not a rhetorical question, if anyone can tell me I'd like to know. Actually, thinking of it, I'm gonna change DAD to BOSS. Boss weapons make sense, right? There's also:

Oyajii being used as an adjective sounds like it’s indicating weapons passed down from either a literal father or a mentor of some type. Using weapons that belonged to ones older predecessor. Up to you how you’d want to render that.


As for the stuff you asked about at the bottom, for most of them I don’t have any ideas that seem better than what you’ve already guessed. Multi Super Custom definitely sounds right, like something you’d call a fancy powered up version of a boss. The Mahou Appetoppe might just be Unknown Magic or Mysterious Magic? And while “yare yare” is a common colloquial phrase of mild disappointment or resignation like “oh well” or “good grief”, I’m not sure if the single yare is being used like that...
 

Kirin

Summon for hire
(he/him)
Oh, stage 5 looks more like Khyber Dart, though referencing an area of Pakistan would be odd but not impossible given the Ganesha. But also possible they’re just pronouncing Cyber Dart oddly. I forget what the boss of this stage was.
 

Yimothy

Red Plane
(he/him)
This is known as little endian (LE).
I have a sort of understanding of endianness, but I still find it confusing. Why does little endian have the big part of the number at the end? But the main thing I was commenting on is that the scores are stored as a string rather than a number - 200,000 could be stored as 0x30D40 (or 40 0D 03, I guess), but instead each nibble encodes one decimal digit.
 

Torzelbaum

????? LV 13 HP 292/ 292
(he, him, his)
Endianness is just an arbitrary decision that was made by hardware designers which has to be maintained to keep from breaking legacy stuff.

I wonder if the score was stored that way so that it could be compared as the system handles data but also so it could be displayed more easily. Per my understanding programmers often had to use weird designs like that when dealing with the vagaries of game system hardware architectures.
 

Yimothy

Red Plane
(he/him)
I've been plugging away at this, and I have what I think is a working patch! I haven't tested it much yet, but what tests I have done are working. Let's talk about how I made it:

0FTvZhW.png


Here's the in-game item list, post-translation. This was actually pretty easy - most of the names were readily and unambiguously translated by google, and I had clearly defined parameters - no name could have more than ten characters. I had to abbreviate a few things, such as "LABRADORIT". ROSEQUARTZ would have a space in it, if space allowed. On the whole, though, nothing was too compromised. I did all this in a seperate hex file, then copy/pasted the hex to overwrite the original list in the disk image.

jWx0Ax9.png


Here's the menu version of this list. It has 256 entries (the in-game one is I think 87 or something), of varying length. This was a little trickier to translate because I had a limited number of characters to use in total. I was able to make individual items longer than in the other list, though, so here LABRADORITE has its E. On the other hand, all the two word items are without spaces - INCAROSE is INCA ROSE in the other list. Anyways, I made this list quite a while ago, though I have edited it a little since. The thing I needed to do to get this into the game was make the pointer list - a series of hex values describing where in the disk image each of these values started. Each of those values would be the address of the icon (in this section of the list, hex value 80, which shows as a white diamond in-game), added to C600, and the result having its bytes reversed (so C600 became 00C6). There's nothing difficult about making that list, it's just tedious. So I semi-automated it:

KolmNn0.png


On the left is the pointer list while I was working on it. At the upper right is a text file with a list of all the pointer values. I realise this is pretty hard to read, but bear with me and hopefully it'll make sense. To make my text file with all the pointer values, I took my hex file with the item list in it, and inserted C600 (50,688 in decimal) bytes with value 00 at the start. That got the correct offset. Then I just needed to identify the starting point of each item in the list. The simplest way to do that would be to search for the first character, but that's different for different items in the list. On the other hand, the last character of each item is the same - FF. So, I just inserted another 00 at the start, moving every character along one space. As a result, the last character of each item was where the first character of the next item should be, meaning I could search for each FF to find the pointer value of each item. XVI doesn't seem to let me generate a list of addresses in that way, but WindHex does, and that's where I got the list in the text file, though I had to use find replace to get rid of some extra text WindHex added to each line.

Once I had that file, I needed to reverse the bytes. But I realised, because the values are always increasing, the lowest value was C600 and the highest CF74, there would only be a limited number of changes in the larger byte. So I just pasted the whole list into a hex file (I say just - when I copied the whole text file XVI only pasted in up to the first line break, so I opened the list in notepad++ and used that program to automatically remove all the line breaks, then pasted it into a hex file), and manually changed the first occurence of each increment of the more significant bit. So for example, in the image above I've just changed the value to the left of the highlighted byte from CA to C9. If you look ahead to the first CB, which I hadn't corrected yet when the screenshot was taken, the string is EECA FACB 05CB, because in the text I was pasting in it was actually EE CAFA CB05 CB. Hopefully that makes sense.

Eagle-eyed observers might notice a mistake I almost made in this list - I left off the first value, 00 C6. That's because I was counting the displaced last bytes of each value. The first value on the list didn't have a previous item's last value to flag it for me. Plus I have an extra value at the end - CF7A is one byte past the end of the last value in the item list - I don't want to point anything there. Fortunately I noticed this before copying it into the disk image.

Speaking of which, my ultimate file for this project was ChangesList.txt:

Code:
Dead of alive sprite:
F9 DB A9 AB AB DF FF F1 to
F9 DA A9 AA AA DF FF F1

Stage 1/Prologue menu:
overwrite from 675E2:
50 52 4F 4C 4F 47 55 45 FF 53 54 41 47 45 20 31 FF

Item list (menu):
ItemList.hex overwrite from 14200

Just a big long list of things like that for each thing I wanted to change. I either did a copy/paste overwrite from a certain address, or I did a find/replace.

Oh, I haven't talked about the ending. I found most of the text in-game by searching for the hex value A3 FF, which encodes 」<line break>, which is how most lines end. There were some exceptions, like when spells are cast, which I found either by searching for the ones I knew about or noticing likely looking lines in the hex (using WindHex to have the hex code displayed as kana). I also watched a longplay on youtube to identify more text to search for. I think I got it all, but I'm not entirely sure. I found two different endings, one of which I stumbled across rather than seeing footage of. It's possible I missed other secrets. Anyway, once I found all the text, I just had to translate it. I will be honest - my English text is not particularly well-written. I wasn't able to find the pointers, so I had to put the text into the same space used by the Japanese version, meaning it's mostly pretty terse. I also went with short versions of the characters' names to get some extra letters. There are three named characters, Shia, Khan (or Haan, or Hearn), and Maina. Whenever someone speaks, the line starts with their name. Khan became Han, and Maina became Mina, because I needed the extra character or two for certain lines. Maybe I should have just used their name for the first line and let the player assume it was the same person speaking for subsequent lines until I specified otherwise. Oh well, done now.

The ending has slightly different encoding than the rest of the text. It's a series of text screens, where line breaks are denoted by hex value 61 rather than FF. Value 62 causes a brief pause in the text appearing on screen, 63 denotes the end of a screen worth of text, I think 65 gives a fade-out, and 66 marks the end of the ending. I haven't actually tested any of that yet because I haven't beaten the game. I've made my translation, in the process of which I changed a few line-lengths, but I kept each screen the same total length as in the original because I wasn't sure if there are individual pointers for each screen or not. Hopefully each line isn't individually pointed - if it is I'll have to redo the lot.

One other thing: I found a message from the creator in the hex, just after the ending. I'm pretty sure it doesn't appear in game:

PLEASURE HEARTS・・・ようやくかんせいです。 これからフロントラインヘていしゅつします。
いやー、みじかいようで、ながいみちのりでした・・・。 おもえば1ねんいじょうまえ、フロントラインから「PCMかんれんのハードをリリースしたいので、たいおうゲームをつくってくれ」とたのまれ、ちゃくしゅしたのがこのソフトでした。 はじめは、とうじせいさくしていた「キョクゲンせいでん」をPCMハードたいおうにしようかとおもったのですが、とうじのわたしはしごとがいそがしく(1にちのへいきんきんむじかんが14じかんいじょう)、さらに、MSX2でもつかえるPCMハードだときいて、きゅうきょみじかめのゲームのせいさくにとりかかったわけです。それがまさか1ねんも・・・。 そのころマイブームだったシューティングゲームが「スチームハーツ(GIGA)」と「レイディアントシルバーガン(トレジャー)」だったので、それからとって「PLEASURE HEARTS」というタイトルにあいなってしまいました。あー。 でもエンディングメッセージにおいて、このあやふやなタイトルのつじつまはあわせることはできたのでよしとしましょう(ぉ ・・・わたしって、プログラミングレベルがひくいのにもかかわらずたいさくをつくってしまっもんだから、かなりのくろうがありました。ここだけのはなし、せいさくかいしとうじは「こうぞうかプログラミング」も「マルチタスク」も「わりこみのただしいかけかた」も「EXTRN/PUBLIC」も「マルチ」も(ぉ まったくもって、しりませんでした。わらってください。 ま、これらはじかいさくでなんとかいたしましょう・・・。 おっと、フロントラインがまっている。いそがなくては。 1999/10/20 03:05 M-KAI

Plugging that into machine translation, we get:

PLEASURE HEARTS...It's finally time. It's been a long journey. It's been a long road, but it seems short.... When I think about it, about a year ago, Frontline asked me to make a support game for their PCM-related hardware release, and this is the game I made. At first, I thought I would use "Kyokugen Seiden", which I had been working on for a long time, as a PCM hardware support game, but I had a lot of work to do (14 hours of work per day), and when I heard that the PCM hardware could also be used with MSX2, I had to make a decision. So I started working on a new game in a short time. I didn't expect it to take a year... My favorite shooting games at the time were "Steam Hearts (GIGA)" and "Radiant Silver Gun (Treasure)", so I took those titles and came up with "PLEASURE HEARTS". Ah. However, I was able to reconcile this ambiguous title in the ending message, so that's good. Between you and me, the policy opening words are "structure or programming", "multitasking", "interrupt justification", "EXTRN/PUBLIC", and "multi"). Please forgive me. Well, let's do something about it with these first measures.... Oops, I'm waiting for Frontline. I have to hurry up.

For context, Frontline was the group that published Pleasure Hearts, and Kyokugen was M-Kai's previous game. Apparently the unusual name of this game, Pleasure Hearts, comes from the game Steam Hearts (an eroge shooter) and the developer Treasure.

So, that's it for now. Please take a look at my patch, give it a shot, see if it works for you. I won't link to the disk image, but supposedly it is now freeware. It'll turn up pretty quickly if you google it. Let me know if you find any problems.

The next task, aside from testing, is translating a bit more of the manual and making a readme.
 

Yimothy

Red Plane
(he/him)
OK, now that I'm done fiddling with the image file, let's play some more Pleasure Hearts! In English this time!

GRohOIv.gif


As soon as I've quibbled over an oddity. At the start of the game, you get the M-Kai logo, then a loading screen, then the title screen. Seem reasonable. But!

RPBleKE.gif


If you press a button while the logo is up, you skip the loading screen and go straight to the title screen with the menu (now in English) open. I thought this was pretty odd, but looking at it now I'm realising you don't get the image on the left side of the title screen if you do this. I guess that's what's loading during the loading screen. This is actually pretty considerate design!

jmdpmpU.png


Here's the name entry screen, now with Latin characters as the default. I'd really have liked to have gotten a lower case font in there, but I wasn't able to figure it out. Oh well.

dNdl8iG.png


The upper option here was プロローグ before. Let's take a look at the prologue:

MGcGPtB.png


This upper line used to be "Prologue", but the lower line was プレミアム ハーツ. I'm cheating a little by using the heart icon, and I feel having the lower text line be one character longer than the top makes it look lopsided, but this came out ok. Maybe I should drop the space between premium and the heart?

CC1fa9W.png


As before, we defeat the dragon and claim the gem. I'm using the heart icon again, but I didn't have a lot of choice - there's a hard limit of ten characters for in-game item names. I suppose I could have gone with P.Hearts or something.

pErzcSR.gif


As before, my partner betrays me, summons a dragon to kill me, and steals the jewel. Two things are different: the English dialogue, and that I've made an attempt to fight the dragon. I didn't realise that was an option when I first played this bit. In the Japanese version, the text here was 「...やれ。」, phonetically "Yare", which best as I can tell might mean "...do it". My first pass at translating this was 「...GO。」, but I wasn't happy with it. I wanted to keep the brackets, the dots before, and the full stop, but that only left two characters. That's pretty limiting. I decided this was far enough from the other dialogue in the game that not having the brackets might not stand out too badly, and the pause before speaking could be implied. Obviously GOODBYE is a very different sentiment (and addresses a different character) to "do it". Actually, I suppose if I'd dropped just the ellipsis I could have fit 「DO IT。」. But I think I like GOODBYE。 better.

As for the fight with the dragon, I think it's impossible. There is an item you can get which is a medal titled prologue master, suggesting this can be won, but I took a shot at this fight using my emulator's rewind feature and eventually this happens:

Evo6wDY.gif


You can dodge all the bullets, you can dodge the first beam, but the second one covers the whole screen. I tried to get under the dragon, I tried going through the whole fight again and saving a bomb to use its invincibility window to avoid this attack, I couldn't find a way through.

I just noticed there's some dialogue here!

ファイナルパワー
Fainarupowaa

Final Power. Looks like I'll be revising my patch again. It's nine characters, so FINAL POWER is two too many. LASTPOWER? FINALSHOT? BIG LASER? I'll think of something.

2SO1v1k.png


Here we are back at stage one. I decided to go with DEAD OR ALIVE rather than DEAD OF ALIVE.

jGto5Xx.png


Here's me collecting a gem, in this case EPIDOTE. Huzzah! This is probably the single most obvious thing that's different in the whole hack. Well, no, the English menu. But having the gem names come up in English comes second, I'd say.

G1sS7he.png


Here's our old friend, the Dead of Alive, going down without having fired a shot. Note that I didn't just change the stage title - I turned the F on the sail into an R. Not obvious in the screenshot is that I failed to pick up either of the gems that are on screen here.

iWH9tHb.png


Stage 2 - Yanak Daivos. I just went with a phonetic transcription for this. If it means something in Japanese, I wasn't able to figure out what. I considered going with English words that sounded kind of like Yanak Daivos (MANIC DIVERS? YANK DIVERSE?) or just making up my own name based on the boss, a bunch of guns in a wall (CANNON DIVERSE?), but wound up erring on the side of caution.

xYLI9sD.png


Same with stage 3. Earlier I speculated that the boss of this stage might be named after Ganesha, but that's not quite what the kana come to phonetically and it was pointed out to me that Ganesha has different names in Japan anyway. Also I was concerned casually throwing in a religious reference might be offensive. If the stage name had come out to Lordjesas or something I'd think carefully before naming the stage/boss LORD JESUS, and that's a religion I have some familiarity with.

l0Iztwo.gif


Here's me getting PSNed. I had three characters to work with, I think this is a reasonable way to do it. The poison itself I guess is caused by the yellow dot cloud the bug enemies drop. So far as I've seen this is the only status effect in the game and it's pretty mild.

qBQcp4t.png


I mentioned these guys in my previous trip through stage 3, turns out you can collect them. Only one at a time though, it seems - MAYOL is the guy on the left, ASA the woman on the right, and I think the dog must be WATCHDOG. All three of them are on the item list, both in-game and menu, but although right after this screenshot I flew right through the three of them, I only got MAYOL. I used the emulator rewind feature here to take several passes and was never able to get more than one of them.

S6DR6Mz.png


One of the easier stage names - it's a direct transcription of the kana, and it fit in the characters available to me. I might have gone with ANCIENT・WEAPON had I had space, but I didn't so no decision necessary.

gZlsXTs.png


The stage four midboss drops this one-up, just like last time. But, unlike last time I've been using the emulator rewind to avoid any deaths (because I want to check that the translated ending is working properly), so I might as well skip it, hey?

jJXcR0m.gif


I guess M-KAI doesn't agree.

RMyg48B.png


TORTOISESH here was probably the name that suffered the most from abbreviation. It's tortoiseshell, if that wasn't clear. Not the most moral of substances. While we're here, in my previous run I fought the second stage of this boss, the little figure that comes out, for a bit, then managed to kill it just as it was about to collide with me. Or did I?

1OgFehG.gif


Yeah, nah. Park yourself on top of the hatch after blowing up the old weapon's weaponry, and you'll pick up Horai Kanon as soon as they emerge. Stage complete!

svcV6pp.png


I had stage 5's name as カイベルダート - Kaiberudaato. Cyberdart seemed like a reasonable guess at what that might mean. Plus, it fits into the characters available. The boss is more of a magician than a cyber whatever, but it'll do.

TOAJPKK.png


This thing remains a mystery, though it goes down a lot quicker to level 8 type-3 shot than it did to level 1 type-1.

O3cFPEA.gif


This doesn't flow all that well, does it? It'd be better with a "but" after "Sorry,". That's down to the character limit. The original was ごめんなさいおそれいりますが これいじょういかせるわけには, which I'd translated as "I'm sorry, but I'm afraid I can't let you do this". I think this is a reasonable take on the matter.

V2oE8Oi.png


This was しょうかん:マルチスイーパーカスタム Shoukan:Marutisuiipaakasutamu. Multi super custom became MULTI SUPER.

z3pwqdC.png


Huh... I was expecting a different line here. The first time I came through here I beat the flying figure, MULTI SUPER, first, then almost immediately beat the CYBERDART. I got まほう:APPETOPPE after beating the summon, then たとえこの ウシ がくだけちっても..., which is the line seen here in translation. I guess I must have killed both simultaneously this time and skipped the first line. Actually, watching a longplay on youtube, it looks like the DART will say APPETOPPE and fight you directly after you beat the summon, which means my translation of APPETOPPE is probably wrong. Darn it.

LHTixHA.png


Here's a shot from the longplay, showing not just the CYBERDART's attack pattern but also another status effect: こんらん. That can mean chaos, disorder or mayhem, but here I think it's confusion. I had trouble translating APPETOPPE, but I eventually found something that referenced it as a regional expression used when something doesn't make sense or is confusing. Since I'd seen it in the context of the enemy losing the fight, my translation of the line in the existing patch is CAST: ...HUH?, intended to show that CYBERDART was attempting and failing to cast a spell because of its injuries, and being confused. Instead, I guess it should be CAST: CONFUSION - no, actually that doesn't fit, make it CONFUSE. I guess I'll change こんらん to CONF. Man, what else have I missed? No idea what confusion does to the player, at a guess I'd say reverses controls.

faAr1lF.png


This was originally ときまほう: ZAP-HALL. I didn't have the space for TIME MAGIC, and I think ZAP HALL is supposed to be BLACK HOLE, so I went with the enemy struggling to say it. I think it works OK. What I thought the dialogue sequence here was going to be was:

CAST: ...HUH?
EVEN IF I'VE LOST...
B...BLACK-HOLE

Now I guess it's just the last two lines. Arguably that works better.

Vr4F6Js.gif


And here's what ended my game last time. I'm holding down and to the left the whole time here, pulling myself away from the black hole. I was also physically leaning down and to the left, because I am a terrible nerd and this is an effective sequence.

DoSYKJP.gif


OK, black hole dealt with, it's on to the next stage. But that will have to wait for

Next Time:
STAGE 6
 

Mogri

Round and round I go
(he)
Staff member
Moderator
I like what you've done here! This is a weird Latin font, though (the extra lines on the X and D, for example).
 

Kirin

Summon for hire
(he/him)
Haha, the enormous NO!!! for missing the 1-up is a hilarious weird detail.
Good to see the mystery of picking up the boss resolved!
 
Top