Nomidos HQ Textures in Moghouse, Furnishing and Effect Guide
If you see something that needs improvement please tell me. ;)
What is this guide for?
You want to put a HQ texture on something that doesn't have a header if you import it into VRS?
This guide tells you how you can do that.
What do you need to win the battle against evil "You-will-never-HQ-me"-DATs?
+Knowledge about the tools that follow.
+A Hexeditor. I will use Hex Workshop in this guide.
+The DAT ROM\1\20.DAT (if I remember right it is the moghouse)
+A Backup of the DAT ROM\1\20.DAT >;P
+How can I change the texturesize in the DAT?
+Hexdatalist for the most common sizes
+The 2 ways to a custom texturesize
How can I change the texturesize in the DAT?
Before we go to the shocking Hexediting open the DAT ROM\1\20.DAT with Changetex.
It should look like this:
Do you see our texture "model yuka00"? We will turn this baby into a 1024x1024
high quality texture.
Here comes an information bomb about what we are going to change in the dat.
I colored the parts that need attention.
Do you feel shocked, confused, lost? Good, then I have your attention.
Find your inner peace because now we will start to do it step by step(no not THAT! :P).
Open the DAT ROM\1\20.DAT with your hexeditor it should look like this:
It doesn't look like this? Try to use these in your preferneces.
Now use the Goto function under Edit.
This Window should pop up:
"Why should I write 32685 hex there?"
This is where the Data of the texture begins. I marked that point pink in the
informationbombpicture that scared you to death.
"How do I know that number?"
Look at the dat with Changetex and look what number under "Addr"
stands at our model yuka00. Yes you read right 00032685 in hexadecimal.
If you took the right Goto-way into the dat you are here. (If you followed the
white light after your shock of the second picture... you are dead. :P)
If you scroll a bit up it should look like this. Yes, you just jumped to the
screenshot of the shockingpicture. You are now looking at what i call the header
of the texture.
Ok, we want to HQ the texture to 256x256. So we start with erasing the texture
data. Your Cursor should still be at the address 32685. If not go back to that
address with the Goto function or by hand.
Now choose select Block.
This window should pop up:
"Why should I write 16384 dec there?"
This is the size of the texturedata. We will send it to an endless sleep. XD
"How do I know that number?"
Look at the dat with Changetex again and look what number under "Data Size"
stands at our model yuka00. BINGOOO it is 16384 in decimal. ;)
I copied the begin and the end of the selected block into one picture to show
you how it looks if you did all right and selected the right data. ^^
Ok, if you are 100 percent sure you selected the right block hit delete and erase it.
If you are not 100 percent sure hit delete anyway. You can only destroy the dat and start
new. So no problem because of your backup.
If you did it right it will look like this in the hex editor and Changetex:
Now select insert and stay focused, this is a guide and not THAT sort of game. :P
After you clicked on insert this window will pop up:
I can hear the questions growing in you...
"The number 65536. Why should I write it there?"
We are adding the new size of the texturedata.
"Where is the secret of this value hidden?"
I wrote:"Ok, we want to HQ the texture to 256x256."
Calculate: 256x256= 65536 -> Tadaaa, thats how you can get this value.
Just multipy the formats.
"Why write FF there?"
Because it works. I always write FF there. It will create a black dds.
You can see where it starts and ends with ease.
If you prefer something else then try it out.
I take no responsibility for killed DATS. :P
If all went right you should be sitting before a window that looks like this:
No change in Changetex. ;D
Now go back to the header at address 32685.
Now we start changing the following things written in red:
Save and open it in Changetex. It should look like this:
You have done it an made that texture a bit more high qualitiy.
Now you can exchange it with the texture you want to use.
If not you messed up somewhere. :P
Hexdatalist for the most common sizes
Format =Datasize =Sizeamount =Size Part 1 x Size Part 2 = Mysterious Value
64x64 =4096 dez =00 10 00 00 00 01 00 00 =40 00 x 40 00 = 83 00 00
128x64 =8192 dez =00 20 00 00 00 02 00 00 =80 00 x 40 00 = 03 01 00
128x128 =16384 dez =00 40 00 00 00 02 00 00 =80 00 x 80 00 = 03 02 00
128x256 =32768 dez =00 80 00 00 00 02 00 00 =80 00 x 00 01 = 03 04 00
256x128 =32768 dez =00 80 00 00 00 04 00 00 =00 01 x 80 00 = 03 04 00
256x256 =65536 dez =00 00 01 00 00 04 00 00 =00 01 x 00 01 = 03 08 00
512x256 =131072 dez =00 00 02 00 00 08 00 00 =00 02 x 00 01 = 03 10 00
512x512 =262144 dez =00 00 04 00 00 08 00 00 =00 02 x 00 02 = 03 20 00
512x1024 =524288 dez =00 00 08 00 00 08 00 00 =00 02 x 00 04 = 03 40 00
1024x1024 = 1048576 dez =00 00 10 00 00 10 00 00 =00 04 x 00 04 = 03 80 00
1024x2048 = 2097152 dez =00 00 20 00 00 10 00 00 =00 08 x 00 08 = 03 00 01
Here pictures how they look in a dat:
The 2 ways to a custom texturesize
The way Nr.1 is easy just open any DAT that has a bitmap with the size you want
to use. Use Changetex to find out where the texture begins ,jump there and discover
the values you need. :)
Hmm... Yes, Dats with imported textures and added textures created from VRS
(0,7,5,2 Build 1466 and later) can also be used for stealing the values we need.
Our way Nr2 is to calculate all the values and guess the Mysterious Value until
it fits in and works. No, up to now I don't know how to calculate this Value.
It wouldn't be mysterious if I could. XD
Here are my methods. I use the Windows Caclulator in sience viewmode for these
Lets say we want to get the values of 128x256...
NO, we don't get 90x60x90. This is no textureformat! :P
128x256 = 32768
You need to multiply the values of the texturesize.
32768 dec = 8000 hex and also 128x4 = 512 dec = 200 hex
You need to transform the Datasize to its hexadecimal value. You also have to
multiply the first value of the Texturesize by 4 and then also transform it to
its hexadecimal value.
Now you have 2 hexadecimal values: 8000 hex and 200 hex
Time to fill in some zeros before our numbers to get 16 digits like this:
00008000 00000200 <-- each value should now have 8 digits
Now lets seperate them a bit like this:
00 00 80 00 00 00 02 00
Ok, now you can see we get near to the look of our Sizeamount in the dat but
something is missing. Lets invert our 2 hex values.
00 80 00 00 00 02 00 00 <--- TADAA, you got your Sizeamount.
Same invertstep with a pure fictional value to show you what I just did:
12 34 56 78 98 76 54 32 <- seperated value
78 56 34 12 32 54 76 98 <- inverted value
As you can see I only invert each group of 8 digits for themself and I always
take 2 digits a a whole. Why? Because they like eachother and their love makes
the texture work. :P
Size Part 1 x Size Part 2:
128x256 dec = 80 x 100 hex
Transform the textureformat to hexadecimal values.
Now lets add some zeros as we did before at the sizeamount. We should get 4 digits
Now lets seperate them:
00 80 01 00
Time to invert:
80 00 00 01 <-- Tadaa, Size Part 1 and Size Part 2 ready for use.
Mysterious Value: If anybody of you finds out how to calculate this, please tell
me. Until then you can only guess and use the "Try and Error" method for this.^^'