Blite: Nintendo DS


After programming for Win32 for most of the time I’ve been programming, and Playstation 2 for a little bit when I first came to university. I decided for a bit of change, and began to learn to make games on the Nintendo DS through homebrew.

Using a basic 3D engine I had wrote for the PC a long time ago when I first started making 3D programming, I ported it over. It was a little confusing at first, since I had no experience with fixed point numbers.

After a while, I discovered how to make Cel Shading working, there was very little documentation on how these things work on the Nintendo DS unless you were an actual developer. My initial attempts were to change the table to be filled with three shades of a colour, then switch it over when another colour material needed to be rendered. However this didn’t work, everything was the same colour.

In the end, I figured it out, what you needed was to fill the shading table with a few shades of white to black, then using a texture for a table of colours to use. When combined together, the texture with colours would colour things the correct colour, while the shading table would multiply against these and give a cel shaded effect.

One other annoying problem I had was with the FIFO, it was hard to debug the ARM7 since it kept breaking. Eventually it turned out you needed to clear the error flags if an error occurred.

Blite: Direct3D

Blite 3D

When I began to program in C++, I’ve found I can do so much more than I could with Visual Basic. With C++ being faster, I’ve been slowly converting over all my code from Visual Basic into a DLL for Visual Basic to use, to the point where my DirectDraw code is within the DLL.

So the natural order of it was to start writing programs in Visual C++, removing the need for Visual Basic. And instead of DirectX7, I’ve moved onto DirectX8 where DirectDraw doesn’t exist anymore, instead 2D must be done using 3D, so I have began making my Blite game in 3D.

I made a model in Milkshape3D, which I then exported to the DirectX mesh format known as “.x” files. However since I didn’t understand about textures at the time, the same texture got applied to everything as shown in the image due to my combining meshes in Milkshape3D.

Using my first scripting language I created, the camera would rotate around the center of the pedestal. At the time I found that it strangely worked faster than actual machine code, only to then realise that I was running in debug (I didn’t know release mode existed).

Blite: Others Custom Screens

cms_14As mentioned previously in the Custom Menu System entry, you can select the menu colour on the configuration menu. I tied it further into the game by added the ability to change the text speed, after hearing about Final Fantasy 10, I decided to add the option of ABS (Active Battle System), but in the end removed it since it would require massive changes to the game as it was.


Within the configuration menu, the world map and where you were could turn toggled on or off as well. I can’t quite remember what the “Show Information” was intended for, but it was never completed.

When playing other games made in RPG Maker 2000, I found one that used quite an ingenious method of showing where the game was being saved by swapping the first player with a character named with the save location.

So I decided to adopt that into my game as well, and eventually I planned to making a faceset for the locations as well so an image would be displayed as well as the text.

Blite: Custom Equip Screen

Blite - Custom Equip Screen 1Since Blite was using a Custom Battle System, the old equipment system no longer worked to increase the attributes of playable characters, so I had to add a custom equip screen.

I decided since it was custom, I might as well add additional features.

So I added additional attributes to the player status, as well as weapons, shields and trinkets to improve these features, as well as to teach magic spells like in Final Fantasy 6 and 9.

Blite - Custom Equip Screen 2Eventually I decided to remove the evade attribute, which would now be calculated based on defense and speed, this gave more spacing between them (before they seemed to tightly squished together).

However now that the attributes could be shown and were working (rather than being forced set), equipment needed to be swappable.

Blite - Custom Equip Screen 3Using the same basic idea that I used for the custom item menu, whenever a weapon, armor or trinket was selected, a list of similar items were listed as well.

So if you selected an armor socket, a list of all armor items that player is holding will be listed in a scrollable list.

Now there was only one thing needed to finish off the equipment screen, when selecting an item to equip, show how it affects the individual attributes.

Blite - Custom Equip Screen 4To do thing, I stored the original values, and then hot swapped the item being selected and got the new value before swapping it back to the original.

If the values were not different, they would remain white. However if the new value was less than the old value, then it would be grey, otherwise if it was greater, then the value was be yellow.

Now my custom equipment screen was finished, all that would be needed now is the graphics cleaned up.

Blite: Custom Status Screen

cms_8Since I’m using a custom menu system for Blite, that also means that I need to make my own custom status screen to replace the default one.

One reason for this is there is no way just to show the default status screen, and also it would be out of place from the style I’ve used for the custom ones.

The playable character names were created using a custom name system, rather than using fixed names that RPG Maker 2000 forces you to, I instead created a popup keyboard where players could enter their own name, this is then stored into variables.

cms_9To display the name of a character during a message, all the variables that contain characters for the name just need to be displayed in a message box using the escape characters for showing variables. I think for RPG Maker 2000, it was something like “\v[1]\v[2]” or something like that.

The faith attribute which was a new feature to my game, was a percentage chance to be resurrected or healed in a region if your are in trouble, which could be increased by doing quests for the resident Gods.