A downloadable demo with VR for PC!!! for Windows


Please join www.patreon.com/swordofmoonlight to spread interest in this project.

This game app demonstrates my ongoing project to use Sword of Moonlight: KING'S FIELD Making Tool to preserve the classic PlayStation game King's Field II (https://en.wikipedia.org/wiki/King's_Field_II) that are both properties of From Software (www.fromsoftware.jp)—i.e., this project includes unauthorized use of copyrighted materials, including a music file from the game's soundtrack—so I don't know if this fits into the itch.io guidelines; however the former software is RPG Making software, specifically for making retail King's Field games, that comes with a new edition of King's Field, that is the forerunner to King's Field II.

2022: I published this page in 2020 to hit the 25th anniversary of King's Field II, and I'll be doing good if I complete it by Sword of Moonlight's 25th. So far it's 2 years hence and a PC VR demonstration, and a second zone that's partially complete to explore have been added to the mix. The rest of the game will be added in the same way, little by little.

I'm streamlining this page to just an introduction and essentials. I'm going to try to provide all of the information you need to play it right here, even though perhaps if I had game manuals (I don't) it would be better to link them in.

The Sword of Moonlight and King's Field (STORY)

Sword of Moonlight originally appeared for Windows 95 either in late 1999 or early 2000. It was boutique software, not sold like everyday games. I think most of the copies ended up in a warehouse on From Software's lot that's still there, although during COVID lock-down its order form was taken offline. On my website there's a version of it that I've improved far beyond the original edition. There are links in one of the devlogs here if you're interested, and in my profile.

This project's subject matter is a PlayStation game, so it doesn't quite live up to all that Sword of Moonlight is capable of. The first King's Field in 1994 was the first full 3D, first-person game. Its sequel came out in 1995, still a year before better known games like Quake and Thief. It was a nonstop adventure from beginning to end without any loading screens. Finally, there was a third in 1996. The middle sibling is the focus of this project. It's amazing these games could come out in the stretch of three years, but you can see they were rushed, their staff would put any speed-runners to shame. I want to really give this one the attention it surely deserves.

Virtual Reality (PCVR)

You need to follow these instructions carefully with VR sets. VR mode is seated with a game controller, no hand controls.

  • Update: Because this app is 32-bit (x86) some VR sets aren't working with it. Those are Valve and maybe[1] Pimax sets. Oculus works. WMR works of course. And the others aren't known if they do or don't. I'm really sorry.
    [1] There's new evidence Pimax may work. I've updated the game to better accommodate its ultra-wide display.
  • It uses a hybrid of OpenGL and Direct3D 11, and it's only tested with Microsoft's WMR OpenXR runtime. You want to have an Nvidia GPU, but Intel may work too. AMD (Radeon) is known to not work well with OpenGL, although there's news that they are releasing new OpenGL drivers in early 2023 that will close this gap.
  • The new demo will default to this OpenGL mode for Nvidia cards, but others will need to go to Options to select OpenGL from a new Graphics setting. This mode is better on my system, more stable if not "faster". This is the first demo to showcase this mode.
  • Your regular game must be using the same video card or chipset your VR set is plugged into. I recommend using the default display adapter. Note, ignore the "software" and "HAL" modes in the Options menus. These are relics of D3D7. They all represent the same device.
  • Now you must turn on Microsoft's portal and give it time to warm up, because if you start the game app too soon for some reason the WMR "runtime" will get stuck in a very choppy mode. Note, if you plugin your VR set after turning on the portal, then you need to wait for it to "warm up" the same.
  • Your VR set refresh rate needs to match your monitor's refresh rate. I strongly recommend 60hz (FPS) because otherwise parts of your game will run at the wrong speed and it may make your set unable to keep up at max resolution.
  • Ensure no "anti-aliasing" after effects are enabled in your VR or GPU product control panels, as this will be slow, and look bad or off. Same goes for regular mode.
  • Now that the game is on, F2 will enter VR mode. Do the same to exit. Next press F1 to try max-super-sampling mode. If it doesn't work out, press F1 again to go back. Note, my system crashes after I press F2 too many times, depending on how high the resolution is, it takes fewer times. F1 seems fine. Something about Microsoft's "Cliff House" transitions doesn't like OpenGL.
  • Now, you'll want to press Pause twice. The first press will make the VR set go to sleep or go black because if it's like mine it won't hold its picture. The second pause will center your position in the world over the demo's main character. If you fidget in your seat, like me, you must do this frequently.
  • The menu screens may look too wide if you choose one of the narrower "Resolution" settings for regular play. This needs to be fixed. So wider settings are better for VR for now.
  • There's a setting called "aa_divisor" in the Ex.ini file, that helps to fine-tune the do_aa no-cost anti-aliasing extension in VR. It removes the appearance of pixels from 3D edges if tuned correctly. The default is for 2160 (4K) display height. If your VR set's height is different, then I recommend tracking down this configuration file and setting.
  • Small note, in PCVR the information displays (small yellow text) aren't shown, and the compass and other display fade away when you're not looking right at them.
  • The Ex.ini file has color-grading preset to HP_Reverb_G2 and another setting for color balance. I recommend tweaking the color to your liking since chances are most VR displays are similarly dim and low contrast. However you may need to disable it if your system applies its own presets. Something like SteamVR might do this. Windows's built-in portal doesn't.
  • If my VR set goes to sleep I need to press Win+Y twice to wake it up.

Essential Controls

First let's talk about movement. I thought these controls could be discovered by the process of natural play, but after 2 years it's become clear that players never notice that these subtle controls exist, so I'm going to teach them to you. Movement uses the Action button in combination with the analog control sticks.

  • First, the Esc key or Select button can change the analog mode, which you may need to do if your controller doesn't match or you accidentally change it and need to change it back.
  • Climb: Tap Action while pressing against any platform taller than normal stairs.
  • Crouch: Hold Action. Note, when you crouch you don't move, but lean out instead.
  • Standing jump: Press Action for a natural length of time, and release before assuming a crouching posture.
  • Hop: Tap Action and tap a direction at the same time.
  • Lunge or Dodge: Tap Action while pressing (but not tapping) in a direction. (You can kind of do this in all classic King's Field games.)
  • Running: Hold Action while moving in a direction. (Everyone knows this.)
  • Running jump: Run until when ready to jump, release Action and the direction (stick) at the same time.
  • Crouching jump: Crouch down and lean out, and release Action and the direction (stick) at the same time.
  • Jog: "Run" (generically called Dash) with analog stick in middle position.
  • Sneak: "Run" (generically called Dash) with analog stick in a low position.
  • Squat mode: There are a few ways to do this. 1) From crouch position, hold a direction and stand up without jumping. I.e. don't release the direction button. 2) From Sneaking position, release the Action button. 3) When climbing, look more in the down direction when summiting. Note, squatting is also sitting down, like in a chair or on a ledge. Oh and, when running your character will automatically squat as needed to move under low-hanging obstacles. Otherwise press against them and tap Action to squat to enter them.
  • Cancel squat mode: Do the "standing jump" input to stand up, or run will stand up. Crouching will enter crouch mode, which is another way out of squatting mode. Note, inside tunnels you can't stand up, but will move differently instead.
  • Peering around corners, or push/pull interactions: This is like crouching, only you do it while pushing against something, like a wall.
  • Fast running: Hold Action and both hand buttons while moving. That's 3 buttons total. Now your footsteps will be twice as loud.
  • Fast turning: Press both sticks in the same direction, or more specifically turn and walk sideways at the same time in the same direction.

Next is the other 3 buttons, that comprise the game controls. These with the Action button are all bound to the shoulder buttons (not face buttons) on the controller. This means you can press every button at once at all times. If your controller has "triggers" like most modern ones do, I recommend mapping those to the Action and Menu buttons, because how far you press them doesn't matter, and they work better like this. (It's actually very difficult to make them work intuitively like regular buttons, and it introduces considerable lag in inputs. I may try to lock DualSense triggers down soon.)

  • Menu button: This is simple, it accesses the in-game menus system. Note, in the finished game it's going to have a secondary (hold) function for executing hotkey like quick-action bindings. An alternative to that will assign hotkeys to face buttons or any other leftover buttons. In this demo face buttons are bound to accessory keys that are helpful for game development but which won't be included in the finished game. They're just my custom setup for work.
  • Right button: This can either swing your weapon by tapping it, or there's a new and admittedly rough heavy and guard/counter-attack system that is inputted by holding it down and releasing, or waiting to be attacked head-on while holding.
  • Left button: This can either use magic by tapping, or it raises a shield by holding it down. The shield can also be used to do a kind of attack, but it's not very strong.

Finally are accessory buttons. There's a lot of these and I don't know which ones to speak to. Some may be somewhat essential to know about. Another topic is menu controls, but I think they're pretty straightforward. Some keys like Pause are so self explanatory I'm not including them here.

  • F1: This turns supersampling on and off. The VR version is a separate setting.
  • F2: This turns stereo (VR) on and off. Note, there's an alternative VR mode for PSVR, that will be entered in Direc3D 9 mode. Just don't confuse this with PCVR mode that will be entered in OpenGL mode.
  • F3: This makes you immortal, and is turned on by default. It's custom mapped to the up direction on the dpad.
  • F4: This makes you "fly" at a fast speed and go through obstacles. It's custom mapped to the "up" face button. In this mode you can go up and down, but it's not so easy. There's multiple ways to do this, but you'll have to discover them on your own.
  • F5: This pulls up the left hand information display. It will tell you your FPS among other things.
  • F6: This pulls up the right hand information display. It shows exact coordinates for a scene and other things.
  • F7: This is a small display in the bottom left hand corner. It shows "damage" hit points and developer things.
  • F11: This turns full-screen mode on and off. I recommend this because it will make your picture so much brighter on most monitors that do dynamic contrast.
  • F12: This is a master toggle to turn off displays. F3 and F4 turn on the display, so F12 can turn it back off. I.e. hide it
  • + and - keys: These turn the master volume level up and down. 0 can mute I think, and Backspace maybe restores volume or something. I can never remember. Mainly it's good to know about volume.
  • G and J: These can hide and show the onscreen elements like the compass, but you can also do that by tapping both hand buttons (Right and Left) together, and even toggle one at a time by only releasing one button on tap.
  • H: This shows a crosshair, but it uses the mouse cursor for this, and mouse things can be finicky so it may not always work depending on what mode the mouse is in, as it's not intended for players. But if you're used to games with a crosshair (most seem to have one) this one's for you.

One last thing to be aware of, is the 2 hand buttons (Right and Left) are Ctrl and Shift on the keyboard, and they actually function as key combo modifiers with accessory keys . Only now because these buttons can be held down to do things, like raising shields, key combos must be inputted fast, before those functions takeover.

Control stick troubleshooting (QOL)

Issues can arise if the analog sticks are too sensitive or don't have a good "feel". There's many settings in the app's two INI files. The Ex.ini file is read-only and more advanced, focusing on "extensions" whereas the game INI file is read and written every time the app runs. The settings that are of primary interest to players are put at the top and include instructional "comments" to explain how they work. (I want to make these easier to work with with a visual editor, but one's not materialized yet.)

  • escape_analog_gaits: This controls what amount of stick input doesn't register as movement, and the ramp or curve of each mode that the stick can enter.
  • escape_analog_modes: If the Esc key (Select button) can't find any modes that work for you it may be necessary add a new mode.
  • escape_analog_shape: This is for if your stick is square or round or somewhere in between. More modern sticks are round. (It can also adjust the center if your stick is off center due to age and faults.)

Finally, if you're like me and can't manage to make your character walk forward by pressing up on a stick because my thumbs just don't move like that!! you can rotate the axis of the sticks in the game (writable) INI file by finding this section that's disabled or adding it to the main section. I've been meaning to make this a thing you can set in-game.


These values are probably good for you, but the 10 part adjusts the angle (10 degrees) and the other part pairs "axes" so they can be meaningfully rotated.

Display options troubleshooting (OPTIONS)

Windows 10 taskbar has picked up some bugs in recent years. In short if you change your display adapter or resolution or new graphics setting in the Options menu there's a good chance your game window will either disappear or not appear in the taskbar or sound may stop playing. In this case Windows 10 is confused about its own windows and you need to help it. If you can see it you can click on it, or press Win+D to hide all windows, and then it may appear beneath them all, or if nothing else works, open Task Manager and find the game app and "expand" it and then look for "switch to". I don't know what to say that Windows 10 is unaware of its own windows. I'm sorry.


Both of the images on this page are based on found images, I can't give credit for, other than the banner is from the cover art of King's Field II, and the images in the background are screenshots taken from the original PlayStation game, both are content developed by From Software for King's Field II.

Install Instructions

Before I enabled donations there was a section with nitty gritty setup tips on this page, but it now requires downloading to see. I've put those here instead: https://swordofmoonlight.itch.io/k/devlog/414885/install-instructions

Updated 27 days ago
StatusIn development
Rated 4.7 out of 5 stars
(3 total ratings)
TagsFirst-Person, Ghosts, Magic, Mystery, secrets, Skeletons, Slime, Swords, Tentacles, Virtual Reality (VR)
Average sessionAbout an hour
InputsPlaystation controller, Windows Mixed Reality



Install instructions

  • Don't use a mouse or keyboard to play it. It's only meant to be played with a game controller, preferably a PS4 or PS5 (PlayStation) controller.
  • Please turn off any "anti-aliasing" effects offered in your video card's control panel. These will make the game look wrong or bad and will slow it down.
  • On Nvidia, turn on "High Quality" texture mapping... since really that just means that your computer works the way developers expect it to.
  • You need Direct3D 9 to be installed. This is normally installed by your display drivers and or is built into Windows. Update: I've recently added D3DX9_43.dll and D3DCompiler_43.dll to the download, so hopefully it works out of the box.
  • Please don't copy these files into your Program Files directory. That's for programs that use "permissions". These files should belong to your Windows user account, so put them on your Desktop or user folder.
  • The game launcher may offend antivirus software, including Windows Defender. I apologize if Windows Defender deletes your files without warning. The EXE is http://svn.swordofmoonlight.net/tool/SOM_EX.exe renamed to the demo's title. Source code is at http://svn.swordofmoonlight.net/code/SOM_EX/ however the bulk of the code is in the SomEx.dll file, e.g. http://svn.swordofmoonlight.net/code/SomEx/som.exe.cpp. (Please understand, I've no plans to change my work-life schedule to accommodate antivirus software. Sword of Moonlight is 20 year old software, so it has special needs that may raise red flags with antivirus.)

    To keep the frame rate from dropping down 1 frame on a somewhat regular pulse, these settings need to be added to the registry with Microsoft's Regedit program. I feel like these should be the default settings since games aren't usually run without the intent of being reliable. You can press F12 to see the rough frame rate. On my new system it's unstable without these settings even though the CPU is at 5% and GPU at 30%.

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Games] 
    "Scheduling Category"="High"
    "SFIO Priority"="High"
    "Background Only"="False"
    "Clock Rate"=dword:00002710
    "GPU Priority"=dword:00000008

Development log

View all posts