diff options
author | Eugene Sandulenko | 2006-11-06 13:19:12 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2006-11-06 13:19:12 +0000 |
commit | da3e724a990e1d7482c1654623e01723ba890534 (patch) | |
tree | 2ef1e1dd6b5f9971a1a2b7a8c2420211247f0c1f /tools | |
parent | c13380e76e35ae45d3550a4ac97e7620537bbc0f (diff) | |
download | scummvm-rg350-da3e724a990e1d7482c1654623e01723ba890534.tar.gz scummvm-rg350-da3e724a990e1d7482c1654623e01723ba890534.tar.bz2 scummvm-rg350-da3e724a990e1d7482c1654623e01723ba890534.zip |
Predictive input for AGI engine. To Do:
- Multitap
- scummvm.ini-based dictionary path
- speedup dictionary loading
svn-id: r24635
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/construct-pred-dict.pl | 63 | ||||
-rwxr-xr-x | tools/extract-words-tok.pl | 73 |
2 files changed, 136 insertions, 0 deletions
diff --git a/tools/construct-pred-dict.pl b/tools/construct-pred-dict.pl new file mode 100755 index 0000000000..780d8843ab --- /dev/null +++ b/tools/construct-pred-dict.pl @@ -0,0 +1,63 @@ +#!perl +# +# ScummVM - Scumm Interpreter +# Copyright (C) 2006 The ScummVM project +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# $URL$ +# $Id$ +# + +# This script constructs dictionary for use with predictive input +# +# Feed it with list of words. One word per line + +%words = (); + +while(<>) { + chomp; + + s/[\x7f-\xff]//g; # remove unprintable characters + + next if /^.$/; # skip one character words + next if $_ eq ""; # skip empty words + + $words{$_} = 1; +} + +%list = (); + +for $_ (sort keys %words) { + $word = $_; + + s/['-.&_!]/1/g; + s/[abc]/2/g; + s/[def]/3/g; + s/[ghi]/4/g; + s/[jkl]/5/g; + s/[mno]/6/g; + s/[pqrs]/7/g; + s/[tuv]/8/g; + s/[wxyz]/9/g; + + $list{$_} .= "$word "; +} + +for $k (sort keys %list) { + chop $list{$k}; + + print "$k $list{$k}\n"; +} diff --git a/tools/extract-words-tok.pl b/tools/extract-words-tok.pl new file mode 100755 index 0000000000..53c7ae09a9 --- /dev/null +++ b/tools/extract-words-tok.pl @@ -0,0 +1,73 @@ +#!perl +# +# ScummVM - Scumm Interpreter +# Copyright (C) 2006 The ScummVM project +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# $URL$ +# $Id$ +# + +# This script extracts AGI words.tok file +# +# It produces one word per line. Multiword verbs get splitted +# +# Typical usage: +# +# for i in agigames/*/words.tok +# do +# tools/extract-words-tok.pl "$i" +# done | tools/construct-pred-dict.pl +# + +local $/; +local $file = <>; + +#$off = ord(substr($file, $i * 2, 1)) * 256 + ord(substr($file, $i * 2 + 1, 1)); +#$offn = ord(substr($file, ($i + 1) * 2, 1)) * 256 + ord(substr($file, ($i + 1) * 2 + 1, 1)); + +$off = 52; + +$word = ""; +$mode = 0; + +while ($off < length $file) { + $c = (ord(substr($file, $off, 1))); + if ($mode == 0) { + $word = substr $word, 0, $c; + $mode = 1; + $off++; + next; + } + + $r = ($c & 0x7f) ^ 0x7f; + $word .= chr($r); + + if ($c & 0x80) { + for $w (split ' ', $word) { + print "$w\n"; + } + $off += 3; + $mode = 0; + next; + } + + $off++; +} + +for $w (split ' ', $word) { + print "$w\n"; +} |