-1. You can get the utilities mentioned below either witing thsi package
or on hobbes.nmsu.edu or in google (thats for ifoedit). Generally you must
have installed the following tools not included there:
  odin + ifoedit    - to patch IFO files
  dvddao + mkisofs  - to write dvd
  tesseract or gocr - to make srt subtitles from dvd
  perl              - to patch srt files to adjust timings and so on.
  lsdvd             - to get info about dvd

0. Lets say the movie within dvd have title 2. So movie vobs will be VTS_02_?.VOB,
corresponding ifo file - VTS_02_0.IFO

1. get existing subtitle with 
spuunmux.exe -o t -p palette.rgb -v 4 VTS_02_1.VOB VTS_02_2.VOB VTS_02_3.VOB VTS_02_4.VOB VTS_02_5.VOB

palette.rgb is the color map to create png files with subtitles. Each subtitle
is 4 color bitmap, each color is one of 16 colors within dvd palette which is
kept within IFO file. palette.rgb contains the definitioin of those 16 colors
in form RRGGBB like coloring in html. RR - hex level (from 00 to FF) of red
channel, GG - green, BB - blue. The file included in this package is the sample
one. You can freely edit it in any text editor to get output images in the 
color scheme you like.

2. note the 'cmd: palette 0123 -> 0000' int the output.
There 0123 - indexes of colors used for subtitles within palette from IFO file.
Generally your own subtitles will use the same indexes, but it may be in different 
order. The exact order you'll get by the experiment (see below).

3. spuunmux.exe from 1. will make t*.png and t.xml file. 
  t*.png - the subtitle bitmaps
  t.xml - timing info.
Having those files and the srt file you want to insert you have to make sure
that the timing within srt correnponds with the t.xml timing. If not - correct
srt file using i.e. perl script (see shift.pl for example)

4. If you havnt srt file but want to get existing subs from dvd and translate 
to your language, use 'makesrt.pl t.xml'. It use tesseract OCR, image alchemy
and pnmtotiff.exe to do image conversion. makesrt1.pl makes use gocr program
for OCR which is more convenient thus accepts png right away, but tesseract
OCRs better. You may need edit palette.rgb or/and use -m key yo spuunmux.exe
to make png files be more OCR friendly (i.e. black on white without borders)

5. Insert srt to vob with editing conf.sub (insert there palette from step 2,
edit src filename, codepage, fps, image size and so on) and run:
spumux.exe -s <stream number to insert> -P -o 1.vob -i VTS_02_1.VOB -i VTS_02_2.VOB -i VTS_02_3.VOB -i VTS_02_4.VOB -i VTS_02_5.VOB conf.sub
There you can run 1. step again on the subs inserted (-s <stream number to insert>)
to verify if the png you got have the same color as 1. result. If not - edit
palette in conf.sub

6. Split resulting 1.vob back to 1gb parts with:
dvddao --split-output 1G -d f:r:\path\VTS_02_#.VOB 1.vob

7. Run pe ifoedit.exe and open VTS_02_0.IFO
7.1 Edit VTS_PGCITI->VTSI_MAT Subpicture stream 3 (<stream number to insert> + 1) attributes
the same way as other subs attributes
7.2 Edit VTS_PGCITI->VTS_PGC_1 Subpicture stream 3 (<stream number to insert> + 1) status
7.3 Save changes, close ifoedit and open it again with VTS_02_0.IFO to 
ensure everything saved ok.

8. Run pe ifoedit.exe and open VIDEO_TS.IFO. Press GET VTS Sector, press ok on 
every error screen. ifoedit will patch pointers of changed vob file within ifo
files. Close ifoedit. Redo step 8 until GET VTS Sector shows no errors.

9. Run ifopatch.exe 2. It will patch IFO file pointers left
unpatched by ifoedit.

10. write the dvd:

run 'mkisofs -dvd-video -o q:\d.o -V MYCOOLDVD -v .' within the directory 
containing AUDIO_TS and VIDEO_TS
run 'dvddao q:\d.o'
