A. Outside changes

1. Removed unclickable buttons from the Launcher.

2. Translated the DirectX Setup Tool button.

3. Replaced the dead WhiteDay website link

to Wikia link (still opens in IE).


4. Translated this warning screen


5. Translated Device Settings pages



And this setting now actually works (more on this below):


6. Now, this one is a bit more complicated. When you run the original Korean version, you'll see this screen:


Basically, what is says is:

A Pentium 4 processor has been detected.
Do you want to run with code optimized for SSE2?

Now, when I first spoke to John, back in the day, he told me that you should always press "No" at this prompt. I assume, that info comes from Rana, since later on she told me the very same thing. But that info is wrong. When runing the game with non-SSE2-optimized code, the game is very glitchy, the most well-known glitch being the Ceiling Ghost/Spider Ghost collision issue. I assume, Rana used an old PC when testing the game, so she had better results without SSE2.

So, what does the Yes/No prompt actuall do? In the game folder there are two files; whiteday.dll and whiteday_p4.dll. P4 stands for Pentium 4. That's because when the game was released (developed?) Pentium 4 was the only proccessor that supported the SSE2 instruction set. Since all modern PCs support it, I vote for getting rid of the non-SSE2-optimized dll completely, so I ended up replacing that prompt with this:


I renamed the "Yes" button with "Launch" and the "No" button with "C". C stands for console. Now Whiteday_p4.dll in the folder should be the latest SSE2-optimized dll, and WhiteDay.dll is the Cheat-Enabled dll (which is also SSE2-optimized). This removes any need for renaming. I also got rid of the close button, since it doesn't work anyway.

B. Inside changes

My main goal is to make the game bilingual again, and make it easier for people to make new localizations. John's (Rana's) method of translating isn't really optimal; instead of editing a gazillion SCPs, there's a special SCP designed specifically (by the devs) to make English-related changes; english_conv.scp.

My changes here basically revert all of John's (Rana's) changes in other SCPs and moving them to english_conv.scp. I also removed every single static text in SCPs and instead linked them to LangTable.wdb.

The only thing that doesn't fit this scenario are the macros. They contain a ton of static text, some of them added by Rana, such as the subtitles to the phone call heard during the Labyrinth Run. It doesn't seem like those can be linked to LangTable.

OK, here we go...

1. Minor changes:

_gym.scp - Replaced static text with link (1 line)
e_핸드폰메시지.scp - Relaced static text with link (1 line)
i_안군엄마.scp - Relaced static text with link (2 lines)
i_애기엄마.scp - Relaced static text with link (1 line)
item.scp - Relaced static text with link (2 lines)
o_담배.scp - Relaced static text with link (2 lines) [The cigarettes in the batchroom, also removed distance requirement]
오브젝트_학생부칠판.scp - Relaced static text with link (1 line) [Puzzle hint. More on the puzzle below]

2. Major change in _menu.scp

if (GetRegistry("Language") == "한국어")
SendMessage("Scripter", "언어설정", "kor");
SendMessage("Scripter", "언어설정", "eng");

In Device Settings there's a Language selection tab, it's been there since the very first version of the game. What it does is it changes a registry key, but the game never actually reads that key and always runs in Korean. This function changes that. Now the game is Bilingual.

3. Major changes in _whiteday.scp

if(GetLang() == "kor")
LoadObject("WObjWallPaper", "로딩판넬", "*image data/misc/image/로딩시도움말.jpg");
LoadObject("WObjWallPaper", "로딩판넬", "*image data/misc/image/Controls.jpg");

Loads a different Contols briefing screen depending on the language.

Replaced chapter names used in the Banner and when saving games translatable (linked to LangTable.wdb)

Changed the way the Banner is displayed so the date is displayed in English when the game is run in English.

4. Major changes in english_conv.scp

if(GetTime() / 86400 >= 1)
$DispDate = GetString("Date14");
$DispDate = GetString("Date13");

if((GetTime() % 86400) / 3600 < 10)
$DispHour = "0" + ((GetTime() % 86400) / 3600);
else if((GetTime() % 86400) / 3600 >= 10 && (GetTime() % 86400) / 3600 <= 12)
$DispHour = ((GetTime() % 86400) / 3600);
else if((GetTime() % 86400) / 3600 > 12 && (GetTime() % 86400) / 3600 < 22)
$DispHour = "0" + ((GetTime() % 86400) / 3600 - 12);
$DispHour = ((GetTime() % 86400) / 3600 - 12);

if((GetTime() % 3600) / 60 < 10)
$DispMin = "0" + (GetTime() % 3600) / 60;
$DispMin = (GetTime() % 3600) / 60;

if ((GetTime() % 86400) / 3600 >= 12)
$dt = GetString("TimePM");
$dt = GetString("TimeAM");

return $DispDate + " " + $DispHour + ":" + $DispMin + " " + $dt;

This function calculates the Date/Time. Now the game can do this itself, but since the game (the engine) is in Korean, the result of ConvTime(GetTime()) is diplayed in Korean, so I had  to write a different one.

The time calculation is OK, but if you look at the first 4 lines, you'll see that the date calcuation is lame. BUT, assuming the game always ends in the morning of March 14th, this is OK, I guess.

SendMessage("자막", "X파일자막", "9," + $현재스테이지자막용 + "\n" + ShowDate() + "\n\<img src=" + $자막이미지 + " size=512 64 rect=0 0 512 64 scale=0.5 offset=-5 -19>");

SendMessage("자막", "X파일자막", "9," + $현재스테이지자막용 + "\n" + ShowDate() + "\n\<img src=" + $자막이미지 + " size=512 64 rect=0 0 512 64 scale=0.5 offset=-5 -19>");

SendMessage("자막", "X파일자막", "9," + "School Entrance" + "\n" + "March 14th 06:07am, White Day" + "\n\<img src=" + $자막이미지 + " size=512 64 rect=0 0 512 64 scale=0.5 offset=-5 -30>");
case "본관1" :
$DispStage = GetString("map_0");

case "본관2" :
$DispStage = GetString("map_1");

case "신관" :
$DispStage = GetString("map_2");

case "강당";
$DispStage = GetString("Map_GYM");

case "미궁" :
$DispStage = GetString("Map_LAB");

case "staffroll" :
case "devil" :
case "goodbye" :

SendMessage("자막","문자출력후대기", GetString("s3") + "\n\1" + $DispStage + " / " + $현재스테이지제목 + "\0");

The calculated Date is used along with the Stage Name to display the Banner in English.

No other SCPs should be changed; they do their own thing when the game is ran in Korean, otherwise they link to a specific function inside english_conv.scp.

5. Added Principal's office passcode puzzle back.

The original version had a puzzle to figure out the passcode to the Principal's office. The problem is that it was based on Chinese alphabet. Since the western world has pretty much zero knowledge of Chinese, John simply removed it...

I made a similar puzzle with English letters.

Some screenshots:

English Banner

Ad blocker interference detected!

Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.