467 lines
10 KiB
Plaintext
467 lines
10 KiB
Plaintext
# D2Mods Knowledge Base: Article 171
|
|
# Title: Animations Conversion Tutorial
|
|
# URL: https://d2mods.info/forum/kb/viewarticle?a=171
|
|
|
|
Animations Conversion Tutorial
|
|
Written by: Phrozen Heart
|
|
|
|
Written on: Tue Dec 02, 2003 5:05 pm
|
|
|
|
Last modified: Sat Jan 06, 2018 2:39 am
|
|
Views: 8131
|
|
|
|
Description: by Nefarius
|
|
|
|
Categories: Tutorials (1.09x)
|
|
|
|
Acknowledgements:
|
|
|
|
Thx go to TeknoKyo for clearing me up with some of the stuff
|
|
|
|
and giving me some more accurate infos, and to Apocalypse Demon
|
|
|
|
for spelling corrections.
|
|
|
|
Animations Conversions
|
|
|
|
1.A Getting the Animations
|
|
|
|
Lets say that you want to replace the foul crows with the hellfire
|
|
|
|
torch ants, you will need to get the animations of the torch
|
|
|
|
ants youwill have to download Cv5. It crashes pretty often but
|
|
|
|
still, it is the only tool to use. Open hellfire.mpq with cv5
|
|
|
|
(in you hellfire folder or on your hellfire cd) and go to the
|
|
|
|
monsters folder in it. You will see many sub folders. Go down
|
|
|
|
to the antworm folder and open it. Take to note that diablo 1
|
|
|
|
and hellfire dont use the same mode code like d2 and d2x, the
|
|
|
|
mode code used in d1 and hellfire is the following:
|
|
|
|
A - Attack
|
|
|
|
D - Death
|
|
|
|
H - Get hit
|
|
|
|
N - Neutral (standing)
|
|
|
|
S - Skill
|
|
|
|
W - Walk
|
|
|
|
As you probably saw there is no corpse, since d1 and hellfire
|
|
|
|
use the last frame (for the direction) in the D mode as the corpse.The
|
|
|
|
animations of the torch ant have the following frames:
|
|
|
|
A - 96
|
|
|
|
D - 160
|
|
|
|
H - 48
|
|
|
|
N - 112
|
|
|
|
W - 96
|
|
|
|
Save all of these animations as
|
|
|
|
ANIMATED .GIF. To save you ALOT of work later, make sure to ALWAYS
|
|
|
|
load the diablo palette while saving diablo 1 and hellfire animations.
|
|
|
|
Now you will have to get a decent gif animator, trash like ms
|
|
|
|
gif animator won't do the job here so get something that is about
|
|
|
|
as good as jasc animation shop pro which comes with paintshop
|
|
|
|
pro. Now you will notice that the animations are not ordered
|
|
|
|
like the D2 animations. The d1 animations are ordered in the
|
|
|
|
following way: down, down left, left, left up, up, right up,
|
|
|
|
right, right down while in d2 the animations are ordered as left
|
|
|
|
down, left up, right up, right down, down, left, up, right. Cut
|
|
|
|
and paste the
|
|
|
|
frames until they are ordered like in the d2 animations. Remember
|
|
|
|
that every directions contains /8 frames of the total frame count
|
|
|
|
so an animation with 128 frames has 16 frames per direction.
|
|
|
|
Now change the background color to #AAAAAA so that your animations
|
|
|
|
won't have a black background. Now repeat this for all the animations.
|
|
|
|
Now you will have to make a corpse animation, which is easy.
|
|
|
|
Open the D(death) animation with the gif animator, remove all
|
|
|
|
the frames
|
|
|
|
except the LAST frames for each direction and save it as C. Now
|
|
|
|
to the harder part. Open up d2data.mpq and browse with cv5 to
|
|
|
|
data\global\monsters\bk\tr\. You will see ALOT of animations.
|
|
|
|
These are all the foul crow animations so make a list like the
|
|
|
|
one below because you will find it VERY helpful later on.
|
|
|
|
A1 88
|
|
|
|
DD 8
|
|
|
|
DT 184
|
|
|
|
GH 40
|
|
|
|
NU 88
|
|
|
|
WL 64
|
|
|
|
Now, as you notice the frames don't match. What you will have
|
|
|
|
to do is see which part has more frames then the foul crow and
|
|
|
|
you will end up with this:
|
|
|
|
nu bk=88 ta=112 and A1 bk=88 ta=96, if we will just go into
|
|
|
|
the next step the game WILL crash so you will have to first find
|
|
|
|
a cof file that has more frames than 112. To make your search
|
|
|
|
easy goto the vulture demon folder (VD) and copy the VDNUHTH.cof
|
|
|
|
file, rename it BKNUHTH.cof and put it in the BK folder. Do the
|
|
|
|
same with VDA1HTH.cof and rename it to BKA1HTH.cof and put in
|
|
|
|
BK folder. (if you dont know why I say put it in without reminding
|
|
|
|
mpq2k or stuff like this, read the -direct -txt guide you can
|
|
|
|
find on the phrozenkeep). This problem is fixed for now but now
|
|
|
|
we get to the harder part. You will have to save the animations
|
|
|
|
from hellfire as .dccs AND make the offsets match. To do this
|
|
|
|
select the
|
|
|
|
bktrlitnuhth.dcc file with cv5 and save it as .dcc. The window
|
|
|
|
that will appear now will show you alot of slots for offsets.
|
|
|
|
Copy the numbers in the first one and then save the image but
|
|
|
|
as .gif, open the gif with a graphic tool and write down it's
|
|
|
|
width and height. the offsets are the location of the animation
|
|
|
|
on the play screen. If they don't match, the animation will appear
|
|
|
|
to float or will not be
|
|
|
|
targetable and will therefore look screwed up! The best way I
|
|
|
|
found to get offsets is to do original offsets +new width-old
|
|
|
|
width which will be like this: If the original offset 20x 20y
|
|
|
|
and size is 100x100px, the
|
|
|
|
new animation is 150x150px, the offsets will be 70x 70y. It is
|
|
|
|
enough to get one offset for ALL the animations (thx to foxbat
|
|
|
|
for clearing this up that you need only 2 matching offset instead
|
|
|
|
of 16 ) this is only
|
|
|
|
correct for d1 and hellfire monsters though! Now that you have
|
|
|
|
the offset, save the edited .gifs as .dcc with cv5, set directions
|
|
|
|
to 8, enter the offsets in the 16 slots and then click the save
|
|
|
|
button on
|
|
|
|
the .dcc panel. After this is done we can start the hex editing
|
|
|
|
part. Just before this I will add some useful data about x/y
|
|
|
|
systems and d2 modes.
|
|
|
|
The directions in x/y for offsets:
|
|
|
|
UP= -Y
|
|
|
|
DOWN= +Y
|
|
|
|
LEFT= -X
|
|
|
|
RIGHT= +X
|
|
|
|
As you probably noticed the MODES for d2 are quite different
|
|
|
|
and there are much more graphics per monster. Here is a complete
|
|
|
|
table to explain body parts, modes and sub modes:
|
|
|
|
HD - head
|
|
|
|
TR - torso (or entire monster)
|
|
|
|
LG - legs
|
|
|
|
RA - right arm
|
|
|
|
LA - left arm
|
|
|
|
RH - right hand
|
|
|
|
LH - left hand
|
|
|
|
SH - shoulders
|
|
|
|
S1 - overlay 1
|
|
|
|
S2 - overlay 2
|
|
|
|
S3 - overlay 3
|
|
|
|
S4 - overlay 4
|
|
|
|
S5 - overlay 5
|
|
|
|
S6 - overlay 6
|
|
|
|
S7 - overlay 7
|
|
|
|
S8 - overlay 8
|
|
|
|
Each might have sub modes:
|
|
|
|
DT - death
|
|
|
|
NU - neutral
|
|
|
|
WL - walk
|
|
|
|
GH - gethit
|
|
|
|
A1 - attack 1
|
|
|
|
A2 - attack 2
|
|
|
|
BL - block
|
|
|
|
SC - cast
|
|
|
|
S1 - skill 1
|
|
|
|
S2 - skill 2
|
|
|
|
S3 - skill 3
|
|
|
|
S4 - skill 4
|
|
|
|
DD - corpse
|
|
|
|
KB - knock back
|
|
|
|
SQ - skill sequence
|
|
|
|
RN - run
|
|
|
|
In case that your animation is made off more then 1 body part
|
|
|
|
and has overlays, you can make 1x1 px animations with #AAAAAA
|
|
|
|
color in the appropriate length to just make those disappear.
|
|
|
|
Now to the harder part, this editing might sound scary for
|
|
|
|
many of the people that read this but it is easy. First I'll
|
|
|
|
explain the difference between hex and dec numbers: decimal has
|
|
|
|
10 numbers from the word
|
|
|
|
DECI 0,1,2,3,4,5,6,7,8,9
|
|
|
|
Hexadecimal has 16 numbers from the words HEXA and DECI which
|
|
|
|
means 6 and 10. 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F the smallest
|
|
|
|
number is 00 while the biggest is FF (255). Now remember when
|
|
|
|
I told you to write down the frame counts:
|
|
|
|
A - 96
|
|
|
|
D - 160
|
|
|
|
H - 48
|
|
|
|
N - 112
|
|
|
|
W - 96
|
|
|
|
C - 8
|
|
|
|
A1 88
|
|
|
|
DD 8
|
|
|
|
DT 184
|
|
|
|
GH 40
|
|
|
|
NU 88
|
|
|
|
WL 64
|
|
|
|
Now we will have to divide all these by 8 which will be:
|
|
|
|
A - 12
|
|
|
|
D - 20
|
|
|
|
H - 6
|
|
|
|
N - 14
|
|
|
|
W - 12
|
|
|
|
C - 1
|
|
|
|
A1 11
|
|
|
|
DD 1
|
|
|
|
DT 23
|
|
|
|
GH 5
|
|
|
|
NU 11
|
|
|
|
WL 8
|
|
|
|
Those that match in this case DD and C will be removed from
|
|
|
|
this list since there is no need to hex edit something that matches.
|
|
|
|
(DUH!)
|
|
|
|
Now we will need to convert all of these to hex:
|
|
|
|
A - 0C
|
|
|
|
D - 14
|
|
|
|
H - 06
|
|
|
|
N - 0E
|
|
|
|
W - 0C
|
|
|
|
A1 0B
|
|
|
|
DT 17
|
|
|
|
GH 05
|
|
|
|
NU 0B
|
|
|
|
WL 08
|
|
|
|
As well as listing .cofs which will HELP alot while searching
|
|
|
|
in the files later on with your hex editor
|
|
|
|
A1/A = BKA1HTH
|
|
|
|
DT/D = BKDTHTH
|
|
|
|
GH/H = BKGHHTH
|
|
|
|
NU/N = BKNUHTH
|
|
|
|
WL/W = BKWLHTH
|
|
|
|
Now extract animdata.d2 from your d2exp.mpq and load it into
|
|
|
|
your hex editor. I use Hex Workshop. In the editor search for
|
|
|
|
the text strings of the .cof names from above. (eg: search for
|
|
|
|
BKA1HTH now you will see somthing like this):
|
|
|
|
424B 4131 4854 4800 *0B00* 0000 0401 0000
|
|
|
|
0000 0000 0000 0100 0000 0000 0000 0000
|
|
|
|
The frame count is stored in the byte marked with ** as you
|
|
|
|
see from the converting before A1 has 0B frames and what you
|
|
|
|
want to replace has 0C frames so edit that byte from 0B00 ro
|
|
|
|
0C00 repeat this for every animation then save animdata.d2 and
|
|
|
|
put it in data\global. Now it's time to rename your new .dcc
|
|
|
|
files so they can be used to replace the old ones. Rename the
|
|
|
|
A.dcc to bktrlita1hth.dcc the D.dcc to bktrlitdthth.dcc and so
|
|
|
|
on for the rest (H,N,W,C) and put these into data\global\monsters\bk\tr\
|
|
|
|
and put the .cofs into data\global\monsters\bk\cof. Now you can
|
|
|
|
hex edit a palshift.dat file
|
|
|
|
if you want to change the monsters color to what ever you like
|
|
|
|
or use what they have now. Since this tutorial deals with graphics
|
|
|
|
and not sounds I'll add a short but not full sound par. To use
|
|
|
|
the hellbat sounds go to the monsters/newsfx folder and get the
|
|
|
|
hellbat sounds, open them in a sfx program and change their type
|
|
|
|
to 24000HZ 16Bit STEREO and put them in the appropriate folder.
|
|
|
|
Addendum:
|
|
|
|
Since first writing this tutorial, I found a very easy way
|
|
|
|
to find offsets:
|
|
|
|
WIDTH - (WIDTH-(WIDTH/2)
|
|
|
|
so if width is 100 the x offset will be -50
|
|
|
|
For example: 100-(100-50) = -50
|
|
|
|
Link to this article: Select all
|
|
|
|
[url=https://d2mods.info/forum/kb/viewarticle?a=171]Knowledge Base - Animations Conversion Tutorial[/url] |