This commit is contained in:
topicchi
2023-09-22 06:03:48 +00:00
parent bb4fb5d400
commit 0b6afad8fe
660 changed files with 229375 additions and 12 deletions

View File

@@ -0,0 +1,546 @@
#ifndef RECITERTABS_H
#define RECITERTABS_H
//some flags
unsigned char tab36376[] =
{
0, 0, 0, 0, 0, 0, 0, 0, // 0-7
0, 0, 0, 0, 0, 0, 0, 0, // 8-15
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 2, 2, 2, 2, 2, 2, 130, // ' ', '!'
0, 0, 2, 2, 2, 2, 2, 2,
3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 2, 2, 2, 2, 2, 2,
2, 192, 168, 176, 172, 192, 160, 184, // '@', 'A'
160, 192, 188, 160, 172, 168, 172, 192,
160, 160, 172, 180, 164, 192, 168, 168,
176, 192, 188, 0, 0, 0, 2, 0, // 'X', 'Y', 'Z', '[',
32, 32, 155, 32, 192, 185, 32, 205,
163, 76, 138, 142
};
char rules[] =
{
']','A'|0x80,
' ','(','A','.',')', '=','E','H','4','Y','.',' '|0x80,
'(','A',')',' ', '=','A','H'|0x80,
' ','(','A','R','E',')',' ', '=','A','A','R'|0x80,
' ','(','A','R',')','O', '=','A','X','R'|0x80,
'(','A','R',')','#', '=','E','H','4','R'|0x80,
' ','^','(','A','S',')','#', '=','E','Y','4','S'|0x80,
'(','A',')','W','A', '=','A','X'|0x80,
'(','A','W',')', '=','A','O','5'|0x80,
' ',':','(','A','N','Y',')', '=','E','H','4','N','I','Y'|0x80,
'(','A',')','^','+','#', '=','E','Y','5'|0x80,
'#',':','(','A','L','L','Y',')', '=','U','L','I','Y'|0x80,
' ','(','A','L',')','#', '=','U','L'|0x80,
'(','A','G','A','I','N',')', '=','A','X','G','E','H','4','N'|0x80,
'#',':','(','A','G',')','E', '=','I','H','J'|0x80,
'(','A',')','^','%', '=','E','Y'|0x80,
'(','A',')','^','+',':','#', '=','A','E'|0x80,
' ',':','(','A',')','^','+',' ', '=','E','Y','4'|0x80,
' ','(','A','R','R',')', '=','A','X','R'|0x80,
'(','A','R','R',')', '=','A','E','4','R'|0x80,
' ','^','(','A','R',')',' ', '=','A','A','5','R'|0x80,
'(','A','R',')', '=','A','A','5','R'|0x80,
'(','A','I','R',')', '=','E','H','4','R'|0x80,
'(','A','I',')', '=','E','Y','4'|0x80,
'(','A','Y',')', '=','E','Y','5'|0x80,
'(','A','U',')', '=','A','O','4'|0x80,
'#',':','(','A','L',')',' ', '=','U','L'|0x80,
'#',':','(','A','L','S',')',' ', '=','U','L','Z'|0x80,
'(','A','L','K',')', '=','A','O','4','K'|0x80,
'(','A','L',')','^', '=','A','O','L'|0x80,
' ',':','(','A','B','L','E',')', '=','E','Y','4','B','U','L'|0x80,
'(','A','B','L','E',')', '=','A','X','B','U','L'|0x80,
'(','A',')','V','O', '=','E','Y','4'|0x80,
'(','A','N','G',')','+', '=','E','Y','4','N','J'|0x80,
'(','A','T','A','R','I',')', '=','A','H','T','A','A','4','R','I','Y'|0x80,
'(','A',')','T','O','M', '=','A','E'|0x80,
'(','A',')','T','T','I', '=','A','E'|0x80,
' ','(','A','T',')',' ', '=','A','E','T'|0x80,
' ','(','A',')','T', '=','A','H'|0x80,
'(','A',')', '=','A','E'|0x80,
']','B'|0x80,
' ','(','B',')',' ', '=','B','I','Y','4'|0x80,
' ','(','B','E',')','^','#', '=','B','I','H'|0x80,
'(','B','E','I','N','G',')', '=','B','I','Y','4','I','H','N','X'|0x80,
' ','(','B','O','T','H',')',' ', '=','B','O','W','4','T','H'|0x80,
' ','(','B','U','S',')','#', '=','B','I','H','4','Z'|0x80,
'(','B','R','E','A','K',')', '=','B','R','E','Y','5','K'|0x80,
'(','B','U','I','L',')', '=','B','I','H','4','L'|0x80,
'(','B',')', '=','B'|0x80,
']','C'|0x80,
' ','(','C',')',' ', '=','S','I','Y','4'|0x80,
' ','(','C','H',')','^', '=','K'|0x80,
'^','E','(','C','H',')', '=','K'|0x80,
'(','C','H','A',')','R','#', '=','K','E','H','5'|0x80,
'(','C','H',')', '=','C','H'|0x80,
' ','S','(','C','I',')','#', '=','S','A','Y','4'|0x80,
'(','C','I',')','A', '=','S','H'|0x80,
'(','C','I',')','O', '=','S','H'|0x80,
'(','C','I',')','E','N', '=','S','H'|0x80,
'(','C','I','T','Y',')', '=','S','I','H','T','I','Y'|0x80,
'(','C',')','+', '=','S'|0x80,
'(','C','K',')', '=','K'|0x80,
'(','C','O','M','M','O','D','O','R','E',')','=','K','A','A','4','M','A','H','D','O','H','R'|0x80,
'(','C','O','M',')', '=','K','A','H','M'|0x80,
'(','C','U','I','T',')', '=','K','I','H','T'|0x80,
'(','C','R','E','A',')', '=','K','R','I','Y','E','Y'|0x80,
'(','C',')', '=','K'|0x80,
']','D'|0x80,
' ','(','D',')',' ', '=','D','I','Y','4'|0x80,
' ','(','D','R','.',')',' ', '=','D','A','A','4','K','T','E','R'|0x80,
'#',':','(','D','E','D',')',' ', '=','D','I','H','D'|0x80,
'.','E','(','D',')',' ', '=','D'|0x80,
'#',':','^','E','(','D',')',' ', '=','T'|0x80,
' ','(','D','E',')','^','#', '=','D','I','H'|0x80,
' ','(','D','O',')',' ', '=','D','U','W'|0x80,
' ','(','D','O','E','S',')', '=','D','A','H','Z'|0x80,
'(','D','O','N','E',')',' ', '=','D','A','H','5','N'|0x80,
'(','D','O','I','N','G',')', '=','D','U','W','4','I','H','N','X'|0x80,
' ','(','D','O','W',')', '=','D','A','W'|0x80,
'#','(','D','U',')','A', '=','J','U','W'|0x80,
'#','(','D','U',')','^','#', '=','J','A','X'|0x80,
'(','D',')', '=','D'|0x80,
']','E'|0x80,
' ','(','E',')',' ', '=','I','Y','I','Y','4'|0x80,
'#',':','(','E',')',' ','='|0x80,
'\'',':','^','(','E',')',' ','='|0x80,
' ',':','(','E',')',' ', '=','I','Y'|0x80,
'#','(','E','D',')',' ', '=','D'|0x80,
'#',':','(','E',')','D',' ','='|0x80,
'(','E','V',')','E','R', '=','E','H','4','V'|0x80,
'(','E',')','^','%', '=','I','Y','4'|0x80,
'(','E','R','I',')','#', '=','I','Y','4','R','I','Y'|0x80,
'(','E','R','I',')', '=','E','H','4','R','I','H'|0x80,
'#',':','(','E','R',')','#', '=','E','R'|0x80,
'(','E','R','R','O','R',')', '=','E','H','4','R','O','H','R'|0x80,
'(','E','R','A','S','E',')', '=','I','H','R','E','Y','5','S'|0x80,
'(','E','R',')','#', '=','E','H','R'|0x80,
'(','E','R',')', '=','E','R'|0x80,
' ','(','E','V','E','N',')', '=','I','Y','V','E','H','N'|0x80,
'#',':','(','E',')','W','='|0x80,
'@','(','E','W',')', '=','U','W'|0x80,
'(','E','W',')', '=','Y','U','W'|0x80,
'(','E',')','O', '=','I','Y'|0x80,
'#',':','&','(','E','S',')',' ', '=','I','H','Z'|0x80,
'#',':','(','E',')','S',' ','='|0x80,
'#',':','(','E','L','Y',')',' ', '=','L','I','Y'|0x80,
'#',':','(','E','M','E','N','T',')', '=','M','E','H','N','T'|0x80,
'(','E','F','U','L',')', '=','F','U','H','L'|0x80,
'(','E','E',')', '=','I','Y','4'|0x80,
'(','E','A','R','N',')', '=','E','R','5','N'|0x80,
' ','(','E','A','R',')','^', '=','E','R','5'|0x80,
'(','E','A','D',')', '=','E','H','D'|0x80,
'#',':','(','E','A',')',' ', '=','I','Y','A','X'|0x80,
'(','E','A',')','S','U', '=','E','H','5'|0x80,
'(','E','A',')', '=','I','Y','5'|0x80,
'(','E','I','G','H',')', '=','E','Y','4'|0x80,
'(','E','I',')', '=','I','Y','4'|0x80,
' ','(','E','Y','E',')', '=','A','Y','4'|0x80,
'(','E','Y',')', '=','I','Y'|0x80,
'(','E','U',')', '=','Y','U','W','5'|0x80,
'(','E','Q','U','A','L',')', '=','I','Y','4','K','W','U','L'|0x80,
'(','E',')', '=','E','H'|0x80,
']','F'|0x80,
' ','(','F',')',' ', '=','E','H','4','F'|0x80,
'(','F','U','L',')', '=','F','U','H','L'|0x80,
'(','F','R','I','E','N','D',')', '=','F','R','E','H','5','N','D'|0x80,
'(','F','A','T','H','E','R',')', '=','F','A','A','4','D','H','E','R'|0x80,
'(','F',')','F','='|0x80,
'(','F',')', '=','F'|0x80,
']','G'|0x80,
' ','(','G',')',' ', '=','J','I','Y','4'|0x80,
'(','G','I','V',')', '=','G','I','H','5','V'|0x80,
' ','(','G',')','I','^', '=','G'|0x80,
'(','G','E',')','T', '=','G','E','H','5'|0x80,
'S','U','(','G','G','E','S',')', '=','G','J','E','H','4','S'|0x80,
'(','G','G',')', '=','G'|0x80,
' ','B','#','(','G',')', '=','G'|0x80,
'(','G',')','+', '=','J'|0x80,
'(','G','R','E','A','T',')', '=','G','R','E','Y','4','T'|0x80,
'(','G','O','N',')','E', '=','G','A','O','5','N'|0x80,
'#','(','G','H',')','='|0x80,
' ','(','G','N',')', '=','N'|0x80,
'(','G',')', '=','G'|0x80,
']','H'|0x80,
' ','(','H',')',' ', '=','E','Y','4','C','H'|0x80,
' ','(','H','A','V',')', '=','/','H','A','E','6','V'|0x80,
' ','(','H','E','R','E',')', '=','/','H','I','Y','R'|0x80,
' ','(','H','O','U','R',')', '=','A','W','5','E','R'|0x80,
'(','H','O','W',')', '=','/','H','A','W'|0x80,
'(','H',')','#', '=','/','H'|0x80,
'(','H',')','='|0x80,
']','I'|0x80,
' ','(','I','N',')', '=','I','H','N'|0x80,
' ','(','I',')',' ', '=','A','Y','4'|0x80,
'(','I',')',' ', '=','A','Y'|0x80,
'(','I','N',')','D', '=','A','Y','5','N'|0x80,
'S','E','M','(','I',')', '=','I','Y'|0x80,
' ','A','N','T','(','I',')', '=','A','Y'|0x80,
'(','I','E','R',')', '=','I','Y','E','R'|0x80,
'#',':','R','(','I','E','D',')',' ', '=','I','Y','D'|0x80,
'(','I','E','D',')',' ', '=','A','Y','5','D'|0x80,
'(','I','E','N',')', '=','I','Y','E','H','N'|0x80,
'(','I','E',')','T', '=','A','Y','4','E','H'|0x80,
'(','I','\'',')', '=','A','Y','5'|0x80,
' ',':','(','I',')','^','%', '=','A','Y','5'|0x80,
' ',':','(','I','E',')',' ', '=','A','Y','4'|0x80,
'(','I',')','%', '=','I','Y'|0x80,
'(','I','E',')', '=','I','Y','4'|0x80,
' ','(','I','D','E','A',')', '=','A','Y','D','I','Y','5','A','H'|0x80,
'(','I',')','^','+',':','#', '=','I','H'|0x80,
'(','I','R',')','#', '=','A','Y','R'|0x80,
'(','I','Z',')','%', '=','A','Y','Z'|0x80,
'(','I','S',')','%', '=','A','Y','Z'|0x80,
'I','^','(','I',')','^','#', '=','I','H'|0x80,
'+','^','(','I',')','^','+', '=','A','Y'|0x80,
'#',':','^','(','I',')','^','+', '=','I','H'|0x80,
'(','I',')','^','+', '=','A','Y'|0x80,
'(','I','R',')', '=','E','R'|0x80,
'(','I','G','H',')', '=','A','Y','4'|0x80,
'(','I','L','D',')', '=','A','Y','5','L','D'|0x80,
' ','(','I','G','N',')', '=','I','H','G','N'|0x80,
'(','I','G','N',')',' ', '=','A','Y','4','N'|0x80,
'(','I','G','N',')','^', '=','A','Y','4','N'|0x80,
'(','I','G','N',')','%', '=','A','Y','4','N'|0x80,
'(','I','C','R','O',')', '=','A','Y','4','K','R','O','H'|0x80,
'(','I','Q','U','E',')', '=','I','Y','4','K'|0x80,
'(','I',')', '=','I','H'|0x80,
']','J'|0x80,
' ','(','J',')',' ', '=','J','E','Y','4'|0x80,
'(','J',')', '=','J'|0x80,
']','K'|0x80,
' ','(','K',')',' ', '=','K','E','Y','4'|0x80,
' ','(','K',')','N','='|0x80,
'(','K',')', '=','K'|0x80,
']','L'|0x80,
' ','(','L',')',' ', '=','E','H','4','L'|0x80,
'(','L','O',')','C','#', '=','L','O','W'|0x80,
'L','(','L',')','='|0x80,
'#',':','^','(','L',')','%', '=','U','L'|0x80,
'(','L','E','A','D',')', '=','L','I','Y','D'|0x80,
' ','(','L','A','U','G','H',')', '=','L','A','E','4','F'|0x80,
'(','L',')', '=','L'|0x80,
']','M'|0x80,
' ','(','M',')',' ', '=','E','H','4','M'|0x80,
' ','(','M','R','.',')',' ', '=','M','I','H','4','S','T','E','R'|0x80,
' ','(','M','S','.',')', '=','M','I','H','5','Z'|0x80,
' ','(','M','R','S','.',')',' ', '=','M','I','H','4','S','I','X','Z'|0x80,
'(','M','O','V',')', '=','M','U','W','4','V'|0x80,
'(','M','A','C','H','I','N',')', '=','M','A','H','S','H','I','Y','5','N'|0x80,
'M','(','M',')','='|0x80,
'(','M',')', '=','M'|0x80,
']','N'|0x80,
' ','(','N',')',' ', '=','E','H','4','N'|0x80,
'E','(','N','G',')','+', '=','N','J'|0x80,
'(','N','G',')','R', '=','N','X','G'|0x80,
'(','N','G',')','#', '=','N','X','G'|0x80,
'(','N','G','L',')','%', '=','N','X','G','U','L'|0x80,
'(','N','G',')', '=','N','X'|0x80,
'(','N','K',')', '=','N','X','K'|0x80,
' ','(','N','O','W',')',' ', '=','N','A','W','4'|0x80,
'N','(','N',')','='|0x80,
'(','N','O','N',')','E', '=','N','A','H','4','N'|0x80,
'(','N',')', '=','N'|0x80,
']','O'|0x80,
' ','(','O',')',' ', '=','O','H','4','W'|0x80,
'(','O','F',')',' ', '=','A','H','V'|0x80,
' ','(','O','H',')',' ', '=','O','W','5'|0x80,
'(','O','R','O','U','G','H',')', '=','E','R','4','O','W'|0x80,
'#',':','(','O','R',')',' ', '=','E','R'|0x80,
'#',':','(','O','R','S',')',' ', '=','E','R','Z'|0x80,
'(','O','R',')', '=','A','O','R'|0x80,
' ','(','O','N','E',')', '=','W','A','H','N'|0x80,
'#','(','O','N','E',')',' ', '=','W','A','H','N'|0x80,
'(','O','W',')', '=','O','W'|0x80,
' ','(','O','V','E','R',')', '=','O','W','5','V','E','R'|0x80,
'P','R','(','O',')','V', '=','U','W','4'|0x80,
'(','O','V',')', '=','A','H','4','V'|0x80,
'(','O',')','^','%', '=','O','W','5'|0x80,
'(','O',')','^','E','N', '=','O','W'|0x80,
'(','O',')','^','I','#', '=','O','W','5'|0x80,
'(','O','L',')','D', '=','O','W','4','L'|0x80,
'(','O','U','G','H','T',')', '=','A','O','5','T'|0x80,
'(','O','U','G','H',')', '=','A','H','5','F'|0x80,
' ','(','O','U',')', '=','A','W'|0x80,
'H','(','O','U',')','S','#', '=','A','W','4'|0x80,
'(','O','U','S',')', '=','A','X','S'|0x80,
'(','O','U','R',')', '=','O','H','R'|0x80,
'(','O','U','L','D',')', '=','U','H','5','D'|0x80,
'(','O','U',')','^','L', '=','A','H','5'|0x80,
'(','O','U','P',')', '=','U','W','5','P'|0x80,
'(','O','U',')', '=','A','W'|0x80,
'(','O','Y',')', '=','O','Y'|0x80,
'(','O','I','N','G',')', '=','O','W','4','I','H','N','X'|0x80,
'(','O','I',')', '=','O','Y','5'|0x80,
'(','O','O','R',')', '=','O','H','5','R'|0x80,
'(','O','O','K',')', '=','U','H','5','K'|0x80,
'F','(','O','O','D',')', '=','U','W','5','D'|0x80,
'L','(','O','O','D',')', '=','A','H','5','D'|0x80,
'M','(','O','O','D',')', '=','U','W','5','D'|0x80,
'(','O','O','D',')', '=','U','H','5','D'|0x80,
'F','(','O','O','T',')', '=','U','H','5','T'|0x80,
'(','O','O',')', '=','U','W','5'|0x80,
'(','O','\'',')', '=','O','H'|0x80,
'(','O',')','E', '=','O','W'|0x80,
'(','O',')',' ', '=','O','W'|0x80,
'(','O','A',')', '=','O','W','4'|0x80,
' ','(','O','N','L','Y',')', '=','O','W','4','N','L','I','Y'|0x80,
' ','(','O','N','C','E',')', '=','W','A','H','4','N','S'|0x80,
'(','O','N','\'','T',')', '=','O','W','4','N','T'|0x80,
'C','(','O',')','N', '=','A','A'|0x80,
'(','O',')','N','G', '=','A','O'|0x80,
' ',':','^','(','O',')','N', '=','A','H'|0x80,
'I','(','O','N',')', '=','U','N'|0x80,
'#',':','(','O','N',')', '=','U','N'|0x80,
'#','^','(','O','N',')', '=','U','N'|0x80,
'(','O',')','S','T', '=','O','W'|0x80,
'(','O','F',')','^', '=','A','O','4','F'|0x80,
'(','O','T','H','E','R',')', '=','A','H','5','D','H','E','R'|0x80,
'R','(','O',')','B', '=','R','A','A'|0x80,
'^','R','(','O',')',':','#', '=','O','W','5'|0x80,
'(','O','S','S',')',' ', '=','A','O','5','S'|0x80,
'#',':','^','(','O','M',')', '=','A','H','M'|0x80,
'(','O',')', '=','A','A'|0x80,
']','P'|0x80,
' ','(','P',')',' ', '=','P','I','Y','4'|0x80,
'(','P','H',')', '=','F'|0x80,
'(','P','E','O','P','L',')', '=','P','I','Y','5','P','U','L'|0x80,
'(','P','O','W',')', '=','P','A','W','4'|0x80,
'(','P','U','T',')',' ', '=','P','U','H','T'|0x80,
'(','P',')','P','='|0x80,
'(','P',')','S','='|0x80,
'(','P',')','N','='|0x80,
'(','P','R','O','F','.',')', '=','P','R','O','H','F','E','H','4','S','E','R'|0x80,
'(','P',')', '=','P'|0x80,
']','Q'|0x80,
' ','(','Q',')',' ', '=','K','Y','U','W','4'|0x80,
'(','Q','U','A','R',')', '=','K','W','O','H','5','R'|0x80,
'(','Q','U',')', '=','K','W'|0x80,
'(','Q',')', '=','K'|0x80,
']','R'|0x80,
' ','(','R',')',' ', '=','A','A','5','R'|0x80,
' ','(','R','E',')','^','#', '=','R','I','Y'|0x80,
'(','R',')','R','='|0x80,
'(','R',')', '=','R'|0x80,
']','S'|0x80,
' ','(','S',')',' ', '=','E','H','4','S'|0x80,
'(','S','H',')', '=','S','H'|0x80,
'#','(','S','I','O','N',')', '=','Z','H','U','N'|0x80,
'(','S','O','M','E',')', '=','S','A','H','M'|0x80,
'#','(','S','U','R',')','#', '=','Z','H','E','R'|0x80,
'(','S','U','R',')','#', '=','S','H','E','R'|0x80,
'#','(','S','U',')','#', '=','Z','H','U','W'|0x80,
'#','(','S','S','U',')','#', '=','S','H','U','W'|0x80,
'#','(','S','E','D',')', '=','Z','D'|0x80,
'#','(','S',')','#', '=','Z'|0x80,
'(','S','A','I','D',')', '=','S','E','H','D'|0x80,
'^','(','S','I','O','N',')', '=','S','H','U','N'|0x80,
'(','S',')','S','='|0x80,
'.','(','S',')',' ', '=','Z'|0x80,
'#',':','.','E','(','S',')',' ', '=','Z'|0x80,
'#',':','^','#','(','S',')',' ', '=','S'|0x80,
'U','(','S',')',' ', '=','S'|0x80,
' ',':','#','(','S',')',' ', '=','Z'|0x80,
'#','#','(','S',')',' ', '=','Z'|0x80,
' ','(','S','C','H',')', '=','S','K'|0x80,
'(','S',')','C','+','='|0x80,
'#','(','S','M',')', '=','Z','U','M'|0x80,
'#','(','S','N',')','\'', '=','Z','U','M'|0x80,
'(','S','T','L','E',')', '=','S','U','L'|0x80,
'(','S',')', '=','S'|0x80,
']','T'|0x80,
' ','(','T',')',' ', '=','T','I','Y','4'|0x80,
' ','(','T','H','E',')',' ','#', '=','D','H','I','Y'|0x80,
' ','(','T','H','E',')',' ', '=','D','H','A','X'|0x80,
'(','T','O',')',' ', '=','T','U','X'|0x80,
' ','(','T','H','A','T',')', '=','D','H','A','E','T'|0x80,
' ','(','T','H','I','S',')',' ', '=','D','H','I','H','S'|0x80,
' ','(','T','H','E','Y',')', '=','D','H','E','Y'|0x80,
' ','(','T','H','E','R','E',')', '=','D','H','E','H','R'|0x80,
'(','T','H','E','R',')', '=','D','H','E','R'|0x80,
'(','T','H','E','I','R',')', '=','D','H','E','H','R'|0x80,
' ','(','T','H','A','N',')',' ', '=','D','H','A','E','N'|0x80,
' ','(','T','H','E','M',')',' ', '=','D','H','A','E','N'|0x80,
'(','T','H','E','S','E',')',' ', '=','D','H','I','Y','Z'|0x80,
' ','(','T','H','E','N',')', '=','D','H','E','H','N'|0x80,
'(','T','H','R','O','U','G','H',')', '=','T','H','R','U','W','4'|0x80,
'(','T','H','O','S','E',')', '=','D','H','O','H','Z'|0x80,
'(','T','H','O','U','G','H',')',' ', '=','D','H','O','W'|0x80,
'(','T','O','D','A','Y',')', '=','T','U','X','D','E','Y'|0x80,
'(','T','O','M','O',')','R','R','O','W','=','T','U','M','A','A','5'|0x80,
'(','T','O',')','T','A','L', '=','T','O','W','5'|0x80,
' ','(','T','H','U','S',')', '=','D','H','A','H','4','S'|0x80,
'(','T','H',')', '=','T','H'|0x80,
'#',':','(','T','E','D',')', '=','T','I','X','D'|0x80,
'S','(','T','I',')','#','N', '=','C','H'|0x80,
'(','T','I',')','O', '=','S','H'|0x80,
'(','T','I',')','A', '=','S','H'|0x80,
'(','T','I','E','N',')', '=','S','H','U','N'|0x80,
'(','T','U','R',')','#', '=','C','H','E','R'|0x80,
'(','T','U',')','A', '=','C','H','U','W'|0x80,
' ','(','T','W','O',')', '=','T','U','W'|0x80,
'&','(','T',')','E','N',' ','='|0x80,
'(','T',')', '=','T'|0x80,
']','U'|0x80,
' ','(','U',')',' ', '=','Y','U','W','4'|0x80,
' ','(','U','N',')','I', '=','Y','U','W','N'|0x80,
' ','(','U','N',')', '=','A','H','N'|0x80,
' ','(','U','P','O','N',')', '=','A','X','P','A','O','N'|0x80,
'@','(','U','R',')','#', '=','U','H','4','R'|0x80,
'(','U','R',')','#', '=','Y','U','H','4','R'|0x80,
'(','U','R',')', '=','E','R'|0x80,
'(','U',')','^',' ', '=','A','H'|0x80,
'(','U',')','^','^', '=','A','H','5'|0x80,
'(','U','Y',')', '=','A','Y','5'|0x80,
' ','G','(','U',')','#','='|0x80,
'G','(','U',')','%','='|0x80,
'G','(','U',')','#', '=','W'|0x80,
'#','N','(','U',')', '=','Y','U','W'|0x80,
'@','(','U',')', '=','U','W'|0x80,
'(','U',')', '=','Y','U','W'|0x80,
']','V'|0x80,
' ','(','V',')',' ', '=','V','I','Y','4'|0x80,
'(','V','I','E','W',')', '=','V','Y','U','W','5'|0x80,
'(','V',')', '=','V'|0x80,
']','W'|0x80,
' ','(','W',')',' ', '=','D','A','H','4','B','U','L','Y','U','W'|0x80,
' ','(','W','E','R','E',')', '=','W','E','R'|0x80,
'(','W','A',')','S','H', '=','W','A','A'|0x80,
'(','W','A',')','S','T', '=','W','E','Y'|0x80,
'(','W','A',')','S', '=','W','A','H'|0x80,
'(','W','A',')','T', '=','W','A','A'|0x80,
'(','W','H','E','R','E',')', '=','W','H','E','H','R'|0x80,
'(','W','H','A','T',')', '=','W','H','A','H','T'|0x80,
'(','W','H','O','L',')', '=','/','H','O','W','L'|0x80,
'(','W','H','O',')', '=','/','H','U','W'|0x80,
'(','W','H',')', '=','W','H'|0x80,
'(','W','A','R',')','#', '=','W','E','H','R'|0x80,
'(','W','A','R',')', '=','W','A','O','R'|0x80,
'(','W','O','R',')','^', '=','W','E','R'|0x80,
'(','W','R',')', '=','R'|0x80,
'(','W','O','M',')','A', '=','W','U','H','M'|0x80,
'(','W','O','M',')','E', '=','W','I','H','M'|0x80,
'(','W','E','A',')','R', '=','W','E','H'|0x80,
'(','W','A','N','T',')', '=','W','A','A','5','N','T'|0x80,
'A','N','S','(','W','E','R',')', '=','E','R'|0x80,
'(','W',')', '=','W'|0x80,
']','X'|0x80,
' ','(','X',')',' ', '=','E','H','4','K','R'|0x80,
' ','(','X',')', '=','Z'|0x80,
'(','X',')', '=','K','S'|0x80,
']','Y'|0x80,
' ','(','Y',')',' ', '=','W','A','Y','4'|0x80,
'(','Y','O','U','N','G',')', '=','Y','A','H','N','X'|0x80,
' ','(','Y','O','U','R',')', '=','Y','O','H','R'|0x80,
' ','(','Y','O','U',')', '=','Y','U','W'|0x80,
' ','(','Y','E','S',')', '=','Y','E','H','S'|0x80,
' ','(','Y',')', '=','Y'|0x80,
'F','(','Y',')', '=','A','Y'|0x80,
'P','S','(','Y','C','H',')', '=','A','Y','K'|0x80,
'#',':','^','(','Y',')', '=','I','Y'|0x80,
'#',':','^','(','Y',')','I', '=','I','Y'|0x80,
' ',':','(','Y',')',' ', '=','A','Y'|0x80,
' ',':','(','Y',')','#', '=','A','Y'|0x80,
' ',':','(','Y',')','^','+',':','#', '=','I','H'|0x80,
' ',':','(','Y',')','^','#', '=','A','Y'|0x80,
'(','Y',')', '=','I','H'|0x80,
']','Z'|0x80,
' ','(','Z',')',' ', '=','Z','I','Y','4'|0x80,
'(','Z',')', '=','Z'|0x80,
'j'|0x80
};
char rules2[] =
{
'(','A',')', '='|0x80,
'(','!',')', '=','.'|0x80,
'(','"',')',' ', '=','-','A','H','5','N','K','W','O','W','T','-'|0x80,
'(','"',')', '=','K','W','O','W','4','T','-'|0x80,
'(','#',')', '=',' ','N','A','H','4','M','B','E','R'|0x80,
'(','$',')', '=',' ','D','A','A','4','L','E','R'|0x80,
'(','%',')', '=',' ','P','E','R','S','E','H','4','N','T'|0x80,
'(','&',')', '=',' ','A','E','N','D'|0x80,
'(','\'',')', '='|0x80,
'(','*',')', '=',' ','A','E','4','S','T','E','R','I','H','S','K'|0x80,
'(','+',')', '=',' ','P','L','A','H','4','S'|0x80,
'(',',',')', '=',','|0x80,
' ','(','-',')',' ', '=','-'|0x80,
'(','-',')', '='|0x80,
'(','.',')', '=',' ','P','O','Y','N','T'|0x80,
'(','/',')', '=',' ','S','L','A','E','4','S','H'|0x80,
'(','0',')', '=',' ','Z','I','Y','4','R','O','W'|0x80,
' ','(','1','S','T',')', '=','F','E','R','4','S','T'|0x80,
' ','(','1','0','T','H',')', '=','T','E','H','4','N','T','H'|0x80,
'(','1',')', '=',' ','W','A','H','4','N'|0x80,
' ','(','2','N','D',')', '=','S','E','H','4','K','U','N','D'|0x80,
'(','2',')', '=',' ','T','U','W','4'|0x80,
' ','(','3','R','D',')', '=','T','H','E','R','4','D'|0x80,
'(','3',')', '=',' ','T','H','R','I','Y','4'|0x80,
'(','4',')', '=',' ','F','O','H','4','R'|0x80,
' ','(','5','T','H',')', '=','F','I','H','4','F','T','H'|0x80,
'(','5',')', '=',' ','F','A','Y','4','V'|0x80,
' ','(','6','4',')',' ', '=','S','I','H','4','K','S','T','I','Y',' ','F','O','H','R'|0x80,
'(','6',')', '=',' ','S','I','H','4','K','S'|0x80,
'(','7',')', '=',' ','S','E','H','4','V','U','N'|0x80,
' ','(','8','T','H',')', '=','E','Y','4','T','H'|0x80,
'(','8',')', '=',' ','E','Y','4','T'|0x80,
'(','9',')', '=',' ','N','A','Y','4','N'|0x80,
'(',':',')', '=','.'|0x80,
'(',';',')', '=','.'|0x80,
'(','<',')', '=',' ','L','E','H','4','S',' ','D','H','A','E','N'|0x80,
'(','=',')', '=',' ','I','Y','4','K','W','U','L','Z'|0x80,
'(','>',')', '=',' ','G','R','E','Y','4','T','E','R',' ','D','H','A','E','N'|0x80,
'(','?',')', '=','?'|0x80,
'(','@',')', '=',' ','A','E','6','T'|0x80,
'(','^',')', '=',' ','K','A','E','4','R','I','X','T'|0x80,
']','A'|0x80
};
//26 items. From 'A' to 'Z'
// positions for mem62 and mem63 for each character
unsigned char tab37489[] =
{
0, 149, 247, 162, 57, 197, 6, 126,
199, 38, 55, 78, 145, 241, 85, 161,
254, 36, 69, 45, 167, 54, 83, 46,
71, 218
};
unsigned char tab37515[] =
{
125, 126, 126, 127, 128, 129, 130, 130,
130, 132, 132, 132, 132, 132, 133, 135,
135, 136, 136, 137, 138, 139, 139, 140,
140, 140
};
#endif

View File

@@ -0,0 +1,512 @@
#ifndef RENDERTABS_H
#define RENDERTABS_H
unsigned char tab48426[5] = { 0x18, 0x1A, 0x17, 0x17, 0x17 };
unsigned char tab47492[] =
{
0 , 0 , 0xE0 , 0xE6 , 0xEC , 0xF3 , 0xF9 , 0 ,
6 , 0xC , 6
};
unsigned char amplitudeRescale[] =
{
0 , 1 , 2 , 2 , 2 , 3 , 3 , 4 ,
4 , 5 , 6 , 8 , 9 ,0xB ,0xD ,0xF, 0 //17 elements?
};
// Used to decide which phoneme's blend lengths. The candidate with the lower score is selected.
// tab45856
unsigned char blendRank[] =
{
0 , 0x1F , 0x1F , 0x1F , 0x1F , 2 , 2 , 2 ,
2 , 2 , 2 , 2 , 2 , 2 , 5 , 5 ,
2 ,0xA , 2 , 8 , 5 , 5 ,0xB ,0xA ,
9 , 8 , 8 , 0xA0 , 8 , 8 , 0x17 , 0x1F ,
0x12 , 0x12 , 0x12 , 0x12 , 0x1E , 0x1E , 0x14 , 0x14 ,
0x14 , 0x14 , 0x17 , 0x17 , 0x1A , 0x1A , 0x1D , 0x1D ,
2 , 2 , 2 , 2 , 2 , 2 , 0x1A , 0x1D ,
0x1B , 0x1A , 0x1D , 0x1B , 0x1A , 0x1D , 0x1B , 0x1A ,
0x1D , 0x1B , 0x17 , 0x1D , 0x17 , 0x17 , 0x1D , 0x17 ,
0x17 , 0x1D , 0x17 , 0x17 , 0x1D , 0x17 , 0x17 , 0x17
};
// Number of frames at the end of a phoneme devoted to interpolating to next phoneme's final value
//tab45696
unsigned char outBlendLength[] =
{
0 , 2 , 2 , 2 , 2 , 4 , 4 , 4 ,
4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 ,
4 , 4 , 3 , 2 , 4 , 4 , 2 , 2 ,
2 , 2 , 2 , 1 , 1 , 1 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 ,
2 , 1 , 0 , 1 , 0 , 1 , 0 , 5 ,
5 , 5 , 5 , 5 , 4 , 4 , 2 , 0 ,
1 , 2 , 0 , 1 , 2 , 0 , 1 , 2 ,
0 , 1 , 2 , 0 , 2 , 2 , 0 , 1 ,
3 , 0 , 2 , 3 , 0 , 2 , 0xA0 , 0xA0
};
// Number of frames at beginning of a phoneme devoted to interpolating to phoneme's final value
// tab45776
unsigned char inBlendLength[] =
{
0 , 2 , 2 , 2 , 2 , 4 , 4 , 4 ,
4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 ,
4 , 4 , 3 , 3 , 4 , 4 , 3 , 3 ,
3 , 3 , 3 , 1 , 2 , 3 , 2 , 1 ,
3 , 3 , 3 , 3 , 1 , 1 , 3 , 3 ,
3 , 2 , 2 , 3 , 2 , 3 , 0 , 0 ,
5 , 5 , 5 , 5 , 4 , 4 , 2 , 0 ,
2 , 2 , 0 , 3 , 2 , 0 , 4 , 2 ,
0 , 3 , 2 , 0 , 2 , 2 , 0 , 2 ,
3 , 0 , 3 , 3 , 0 , 3 , 0xB0 , 0xA0
};
// Looks like it's used as bit flags
// High bits masked by 248 (11111000)
//
// 32: S* 241 11110001
// 33: SH 226 11100010
// 34: F* 211 11010011
// 35: TH 187 10111011
// 36: /H 124 01111100
// 37: /X 149 10010101
// 38: Z* 1 00000001
// 39: ZH 2 00000010
// 40: V* 3 00000011
// 41: DH 3 00000011
// 43: ** 114 01110010
// 45: ** 2 00000010
// 67: ** 27 00011011
// 70: ** 25 00011001
// tab45936
unsigned char sampledConsonantFlags[] =
{
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0xF1 , 0xE2 , 0xD3 , 0xBB , 0x7C , 0x95 , 1 , 2 ,
3 , 3 , 0 , 0x72 , 0 , 2 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0x1B , 0 , 0 , 0x19 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
};
//tab45056
unsigned char freq1data[]=
{
0x00 ,0x13 ,0x13 ,0x13 ,0x13 , 0xA , 0xE ,0x12
, 0x18 ,0x1A ,0x16 ,0x14 ,0x10 ,0x14 , 0xE ,0x12
, 0xE ,0x12 ,0x12 ,0x10 , 0xC , 0xE , 0xA ,0x12
, 0xE ,0xA , 8 , 6 , 6 , 6 , 6 ,0x11
, 6 , 6 , 6 , 6 ,0xE , 0x10 , 9 ,0xA
, 8 ,0xA , 6 , 6 , 6 , 5 , 6 , 0
, 0x12 , 0x1A , 0x14 , 0x1A , 0x12 ,0xC , 6 , 6
, 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6
, 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6
, 6 ,0xA ,0xA , 6 , 6 , 6 , 0x2C , 0x13
};
//tab451356
unsigned char freq2data[]=
{
0x00 , 0x43 , 0x43 , 0x43 , 0x43 , 0x54 , 0x48 , 0x42 ,
0x3E , 0x28 , 0x2C , 0x1E , 0x24 , 0x2C , 0x48 , 0x30 ,
0x24 , 0x1E , 0x32 , 0x24 , 0x1C , 0x44 , 0x18 , 0x32 ,
0x1E , 0x18 , 0x52 , 0x2E , 0x36 , 0x56 , 0x36 , 0x43 ,
0x49 , 0x4F , 0x1A , 0x42 , 0x49 , 0x25 , 0x33 , 0x42 ,
0x28 , 0x2F , 0x4F , 0x4F , 0x42 , 0x4F , 0x6E , 0x00 ,
0x48 , 0x26 , 0x1E , 0x2A , 0x1E , 0x22 , 0x1A , 0x1A ,
0x1A , 0x42 , 0x42 , 0x42 , 0x6E , 0x6E , 0x6E , 0x54 ,
0x54 , 0x54 , 0x1A , 0x1A , 0x1A , 0x42 , 0x42 , 0x42 ,
0x6D , 0x56 , 0x6D , 0x54 , 0x54 , 0x54 , 0x7F , 0x7F
};
//tab45216
unsigned char freq3data[]=
{
0x00 , 0x5B , 0x5B , 0x5B , 0x5B , 0x6E , 0x5D , 0x5B ,
0x58 , 0x59 , 0x57 , 0x58 , 0x52 , 0x59 , 0x5D , 0x3E ,
0x52 , 0x58 , 0x3E , 0x6E , 0x50 , 0x5D , 0x5A , 0x3C ,
0x6E , 0x5A , 0x6E , 0x51 , 0x79 , 0x65 , 0x79 , 0x5B ,
0x63 , 0x6A , 0x51 , 0x79 , 0x5D , 0x52 , 0x5D , 0x67 ,
0x4C , 0x5D , 0x65 , 0x65 , 0x79 , 0x65 , 0x79 , 0x00 ,
0x5A , 0x58 , 0x58 , 0x58 , 0x58 , 0x52 , 0x51 , 0x51 ,
0x51 , 0x79 , 0x79 , 0x79 , 0x70 , 0x6E , 0x6E , 0x5E ,
0x5E , 0x5E , 0x51 , 0x51 , 0x51 , 0x79 , 0x79 , 0x79 ,
0x65 , 0x65 , 0x70 , 0x5E , 0x5E , 0x5E , 0x08 , 0x01
};
unsigned char ampl1data[] =
{
0 , 0 , 0 , 0 , 0 ,0xD ,0xD ,0xE ,
0xF ,0xF ,0xF ,0xF ,0xF ,0xC ,0xD ,0xC ,
0xF ,0xF ,0xD ,0xD ,0xD ,0xE ,0xD ,0xC ,
0xD ,0xD ,0xD ,0xC , 9 , 9 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 ,0xB ,0xB ,
0xB ,0xB , 0 , 0 , 1 ,0xB , 0 , 2 ,
0xE ,0xF ,0xF ,0xF ,0xF ,0xD , 2 , 4 ,
0 , 2 , 4 , 0 , 1 , 4 , 0 , 1 ,
4 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 ,0xC , 0 , 0 , 0 , 0 ,0xF ,0xF
};
unsigned char ampl2data[] =
{
0 , 0 , 0 , 0 , 0 ,0xA ,0xB ,0xD ,
0xE ,0xD ,0xC ,0xC ,0xB , 9 ,0xB ,0xB ,
0xC ,0xC ,0xC , 8 , 8 ,0xC , 8 ,0xA ,
8 , 8 ,0xA , 3 , 9 , 6 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 3 , 5 ,
3 , 4 , 0 , 0 , 0 , 5 ,0xA , 2 ,
0xE ,0xD ,0xC ,0xD ,0xC , 8 , 0 , 1 ,
0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 ,
1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 ,0xA , 0 , 0 ,0xA , 0 , 0 , 0
};
unsigned char ampl3data[] =
{
0 , 0 , 0 , 0 , 0 , 8 , 7 , 8 ,
8 , 1 , 1 , 0 , 1 , 0 , 7 , 5 ,
1 , 0 , 6 , 1 , 0 , 7 , 0 , 5 ,
1 , 0 , 8 , 0 , 0 , 3 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ,
0 , 0 , 0 , 0 , 0 , 1 ,0xE , 1 ,
9 , 1 , 0 , 1 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 7 , 0 , 0 , 5 , 0 , 0x13 , 0x10
};
//tab42240
unsigned char sinus[] =
{
0x00 , 0x00 , 0x00 , 0x10 , 0x10 , 0x10 , 0x10 , 0x10 ,
0x10 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x30 ,
0x30 , 0x30 , 0x30 , 0x30 , 0x30 , 0x30 , 0x40 , 0x40 ,
0x40 , 0x40 , 0x40 , 0x40 , 0x40 , 0x50 , 0x50 , 0x50 ,
0x50 , 0x50 , 0x50 , 0x50 , 0x50 , 0x60 , 0x60 , 0x60 ,
0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 ,
0x60 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 , 0x60 ,
0x60 , 0x60 , 0x60 , 0x60 , 0x50 , 0x50 , 0x50 , 0x50 ,
0x50 , 0x50 , 0x50 , 0x50 , 0x40 , 0x40 , 0x40 , 0x40 ,
0x40 , 0x40 , 0x40 , 0x30 , 0x30 , 0x30 , 0x30 , 0x30 ,
0x30 , 0x30 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 , 0x20 ,
0x10 , 0x10 , 0x10 , 0x10 , 0x10 , 0x10 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0xF0 , 0xF0 , 0xF0 , 0xF0 , 0xF0 ,
0xF0 , 0xE0 , 0xE0 , 0xE0 , 0xE0 , 0xE0 , 0xE0 , 0xD0 ,
0xD0 , 0xD0 , 0xD0 , 0xD0 , 0xD0 , 0xD0 , 0xC0 , 0xC0 ,
0xC0 , 0xC0 , 0xC0 , 0xC0 , 0xC0 , 0xB0 , 0xB0 , 0xB0 ,
0xB0 , 0xB0 , 0xB0 , 0xB0 , 0xB0 , 0xA0 , 0xA0 , 0xA0 ,
0xA0 , 0xA0 , 0xA0 , 0xA0 , 0xA0 , 0xA0 , 0xA0 , 0xA0 ,
0xA0 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0xA0 , 0xA0 , 0xA0 , 0xA0 , 0xA0 , 0xA0 , 0xA0 , 0xA0 ,
0xA0 , 0xA0 , 0xA0 , 0xA0 , 0xB0 , 0xB0 , 0xB0 , 0xB0 ,
0xB0 , 0xB0 , 0xB0 , 0xB0 , 0xC0 , 0xC0 , 0xC0 , 0xC0 ,
0xC0 , 0xC0 , 0xC0 , 0xD0 , 0xD0 , 0xD0 , 0xD0 , 0xD0 ,
0xD0 , 0xD0 , 0xE0 , 0xE0 , 0xE0 , 0xE0 , 0xE0 , 0xE0 ,
0xF0 , 0xF0 , 0xF0 , 0xF0 , 0xF0 , 0xF0 , 0x00 , 0x00 };
//tab42496
unsigned char rectangle[] =
{
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 ,
0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70
};
//tab42752
unsigned char multtable[] =
{
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 1 , 1 , 2 , 2 , 3 , 3 ,
4 , 4 , 5 , 5 , 6 , 6 , 7 , 7 ,
0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ,
8 , 9 ,0xA ,0xB ,0xC ,0xD ,0xE ,0xF ,
0x00 , 1 , 3 , 4 , 6 , 7 , 9 ,0xA ,
0xC ,0xD ,0xF , 0x10 , 0x12 , 0x13 , 0x15 , 0x16 ,
0x00 , 2 , 4 , 6 , 8 ,0xA ,0xC ,0xE ,
0x10 , 0x12 , 0x14 , 0x16 , 0x18 , 0x1A , 0x1C , 0x1E ,
0x00 , 2 , 5 , 7 ,0xA ,0xC ,0xF , 0x11 ,
0x14 , 0x16 , 0x19 , 0x1B , 0x1E , 0x20 , 0x23 , 0x25 ,
0x00 , 3 , 6 , 9 ,0xC ,0xF , 0x12 , 0x15 ,
0x18 , 0x1B , 0x1E , 0x21 , 0x24 , 0x27 , 0x2A , 0x2D ,
0x00 , 0x03 , 0x07 , 0x0A , 0x0E , 0x11 , 0x15 , 0x18 ,
0x1C , 0x1F , 0x23 , 0x26 , 0x2A , 0x2D , 0x31 , 0x34 ,
0x00 , 0xFC , 0xF8 , 0xF4 , 0xF0 , 0xEC , 0xE8 , 0xE4 ,
0xE0 , 0xDC , 0xD8 , 0xD4 , 0xD0 , 0xCC , 0xC8 , 0xC4 ,
0x00 , 0xFC , 0xF9 , 0xF5 , 0xF2 , 0xEE , 0xEB , 0xE7 ,
0xE4 , 0xE0 , 0xDD , 0xD9 , 0xD6 , 0xD2 , 0xCF , 0xCB ,
0x00 , 0xFD , 0xFA , 0xF7 , 0xF4 , 0xF1 , 0xEE , 0xEB ,
0xE8 , 0xE5 , 0xE2 , 0xDF , 0xDC , 0xD9 , 0xD6 , 0xD3 ,
0x00 , 0xFD , 0xFB , 0xF8 , 0xF6 , 0xF3 , 0xF1 , 0xEE ,
0xEC , 0xE9 , 0xE7 , 0xE4 , 0xE2 , 0xDF , 0xDD , 0xDA ,
0x00 , 0xFE , 0xFC , 0xFA , 0xF8 , 0xF6 , 0xF4 , 0xF2 ,
0xF0 , 0xEE , 0xEC , 0xEA , 0xE8 , 0xE6 , 0xE4 , 0xE2 ,
0x00 , 0xFE , 0xFD , 0xFB , 0xFA , 0xF8 , 0xF7 , 0xF5 ,
0xF4 , 0xF2 , 0xF1 , 0xEF , 0xEE , 0xEC , 0xEB , 0xE9 ,
0x00 , 0xFF , 0xFE , 0xFD , 0xFC , 0xFB , 0xFA , 0xF9 ,
0xF8 , 0xF7 , 0xF6 , 0xF5 , 0xF4 , 0xF3 , 0xF2 , 0xF1 ,
0x00 , 0xFF , 0xFF , 0xFE , 0xFE , 0xFD , 0xFD , 0xFC ,
0xFC , 0xFB , 0xFB , 0xFA , 0xFA , 0xF9 , 0xF9 , 0xF8
};
//random data ?
unsigned char sampleTable[0x500] =
{
//00
0x38 , 0x84 , 0x6B , 0x19 , 0xC6 , 0x63 , 0x18 , 0x86
, 0x73 , 0x98 , 0xC6 , 0xB1 , 0x1C , 0xCA , 0x31 , 0x8C
, 0xC7 , 0x31 , 0x88 , 0xC2 , 0x30 , 0x98 , 0x46 , 0x31
, 0x18 , 0xC6 , 0x35 ,0xC , 0xCA , 0x31 ,0xC , 0xC6
//20
, 0x21 , 0x10 , 0x24 , 0x69 , 0x12 , 0xC2 , 0x31 , 0x14
, 0xC4 , 0x71 , 8 , 0x4A , 0x22 , 0x49 , 0xAB , 0x6A
, 0xA8 , 0xAC , 0x49 , 0x51 , 0x32 , 0xD5 , 0x52 , 0x88
, 0x93 , 0x6C , 0x94 , 0x22 , 0x15 , 0x54 , 0xD2 , 0x25
//40
, 0x96 , 0xD4 , 0x50 , 0xA5 , 0x46 , 0x21 , 8 , 0x85
, 0x6B , 0x18 , 0xC4 , 0x63 , 0x10 , 0xCE , 0x6B , 0x18
, 0x8C , 0x71 , 0x19 , 0x8C , 0x63 , 0x35 ,0xC , 0xC6
, 0x33 , 0x99 , 0xCC , 0x6C , 0xB5 , 0x4E , 0xA2 , 0x99
//60
, 0x46 , 0x21 , 0x28 , 0x82 , 0x95 , 0x2E , 0xE3 , 0x30
, 0x9C , 0xC5 , 0x30 , 0x9C , 0xA2 , 0xB1 , 0x9C , 0x67
, 0x31 , 0x88 , 0x66 , 0x59 , 0x2C , 0x53 , 0x18 , 0x84
, 0x67 , 0x50 , 0xCA , 0xE3 ,0xA , 0xAC , 0xAB , 0x30
//80
, 0xAC , 0x62 , 0x30 , 0x8C , 0x63 , 0x10 , 0x94 , 0x62
, 0xB1 , 0x8C , 0x82 , 0x28 , 0x96 , 0x33 , 0x98 , 0xD6
, 0xB5 , 0x4C , 0x62 , 0x29 , 0xA5 , 0x4A , 0xB5 , 0x9C
, 0xC6 , 0x31 , 0x14 , 0xD6 , 0x38 , 0x9C , 0x4B , 0xB4
//A0
, 0x86 , 0x65 , 0x18 , 0xAE , 0x67 , 0x1C , 0xA6 , 0x63
, 0x19 , 0x96 , 0x23 , 0x19 , 0x84 , 0x13 , 8 , 0xA6
, 0x52 , 0xAC , 0xCA , 0x22 , 0x89 , 0x6E , 0xAB , 0x19
, 0x8C , 0x62 , 0x34 , 0xC4 , 0x62 , 0x19 , 0x86 , 0x63
//C0
, 0x18 , 0xC4 , 0x23 , 0x58 , 0xD6 , 0xA3 , 0x50 , 0x42
, 0x54 , 0x4A , 0xAD , 0x4A , 0x25 , 0x11 , 0x6B , 0x64
, 0x89 , 0x4A , 0x63 , 0x39 , 0x8A , 0x23 , 0x31 , 0x2A
, 0xEA , 0xA2 , 0xA9 , 0x44 , 0xC5 , 0x12 , 0xCD , 0x42
//E0
, 0x34 , 0x8C , 0x62 , 0x18 , 0x8C , 0x63 , 0x11 , 0x48
, 0x66 , 0x31 , 0x9D , 0x44 , 0x33 , 0x1D , 0x46 , 0x31
, 0x9C , 0xC6 , 0xB1 ,0xC , 0xCD , 0x32 , 0x88 , 0xC4
, 0x73 , 0x18 , 0x86 , 0x73 , 8 , 0xD6 , 0x63 , 0x58
//100
, 7 , 0x81 , 0xE0 , 0xF0 , 0x3C , 7 , 0x87 , 0x90
, 0x3C , 0x7C ,0xF , 0xC7 , 0xC0 , 0xC0 , 0xF0 , 0x7C
, 0x1E , 7 , 0x80 , 0x80 , 0 , 0x1C , 0x78 , 0x70
, 0xF1 , 0xC7 , 0x1F , 0xC0 ,0xC , 0xFE , 0x1C , 0x1F
//120
, 0x1F ,0xE ,0xA , 0x7A , 0xC0 , 0x71 , 0xF2 , 0x83
, 0x8F , 3 ,0xF ,0xF ,0xC , 0 , 0x79 , 0xF8
, 0x61 , 0xE0 , 0x43 ,0xF , 0x83 , 0xE7 , 0x18 , 0xF9
, 0xC1 , 0x13 , 0xDA , 0xE9 , 0x63 , 0x8F ,0xF , 0x83
//140
, 0x83 , 0x87 , 0xC3 , 0x1F , 0x3C , 0x70 , 0xF0 , 0xE1
, 0xE1 , 0xE3 , 0x87 , 0xB8 , 0x71 ,0xE , 0x20 , 0xE3
, 0x8D , 0x48 , 0x78 , 0x1C , 0x93 , 0x87 , 0x30 , 0xE1
, 0xC1 , 0xC1 , 0xE4 , 0x78 , 0x21 , 0x83 , 0x83 , 0xC3
//160
, 0x87 , 6 , 0x39 , 0xE5 , 0xC3 , 0x87 , 7 ,0xE
, 0x1C , 0x1C , 0x70 , 0xF4 , 0x71 , 0x9C , 0x60 , 0x36
, 0x32 , 0xC3 , 0x1E , 0x3C , 0xF3 , 0x8F ,0xE , 0x3C
, 0x70 , 0xE3 , 0xC7 , 0x8F ,0xF ,0xF ,0xE , 0x3C
//180
, 0x78 , 0xF0 , 0xE3 , 0x87 , 6 , 0xF0 , 0xE3 , 7
, 0xC1 , 0x99 , 0x87 ,0xF , 0x18 , 0x78 , 0x70 , 0x70
, 0xFC , 0xF3 , 0x10 , 0xB1 , 0x8C , 0x8C , 0x31 , 0x7C
, 0x70 , 0xE1 , 0x86 , 0x3C , 0x64 , 0x6C , 0xB0 , 0xE1
//1A0
, 0xE3 ,0xF , 0x23 , 0x8F ,0xF , 0x1E , 0x3E , 0x38
, 0x3C , 0x38 , 0x7B , 0x8F , 7 ,0xE , 0x3C , 0xF4
, 0x17 , 0x1E , 0x3C , 0x78 , 0xF2 , 0x9E , 0x72 , 0x49
, 0xE3 , 0x25 , 0x36 , 0x38 , 0x58 , 0x39 , 0xE2 , 0xDE
//1C0
, 0x3C , 0x78 , 0x78 , 0xE1 , 0xC7 , 0x61 , 0xE1 , 0xE1
, 0xB0 , 0xF0 , 0xF0 , 0xC3 , 0xC7 ,0xE , 0x38 , 0xC0
, 0xF0 , 0xCE , 0x73 , 0x73 , 0x18 , 0x34 , 0xB0 , 0xE1
, 0xC7 , 0x8E , 0x1C , 0x3C , 0xF8 , 0x38 , 0xF0 , 0xE1
//1E0
, 0xC1 , 0x8B , 0x86 , 0x8F , 0x1C , 0x78 , 0x70 , 0xF0
, 0x78 , 0xAC , 0xB1 , 0x8F , 0x39 , 0x31 , 0xDB , 0x38
, 0x61 , 0xC3 ,0xE ,0xE , 0x38 , 0x78 , 0x73 , 0x17
, 0x1E , 0x39 , 0x1E , 0x38 , 0x64 , 0xE1 , 0xF1 , 0xC1
//200
, 0x4E ,0xF , 0x40 , 0xA2 , 2 , 0xC5 , 0x8F , 0x81
, 0xA1 , 0xFC , 0x12 , 8 , 0x64 , 0xE0 , 0x3C , 0x22
, 0xE0 , 0x45 , 7 , 0x8E ,0xC , 0x32 , 0x90 , 0xF0
, 0x1F , 0x20 , 0x49 , 0xE0 , 0xF8 ,0xC , 0x60 , 0xF0
//220
, 0x17 , 0x1A , 0x41 , 0xAA , 0xA4 , 0xD0 , 0x8D , 0x12
, 0x82 , 0x1E , 0x1E , 3 , 0xF8 , 0x3E , 3 ,0xC
, 0x73 , 0x80 , 0x70 , 0x44 , 0x26 , 3 , 0x24 , 0xE1
, 0x3E , 4 , 0x4E , 4 , 0x1C , 0xC1 , 9 , 0xCC
//240
, 0x9E , 0x90 , 0x21 , 7 , 0x90 , 0x43 , 0x64 , 0xC0
, 0xF , 0xC6 , 0x90 , 0x9C , 0xC1 , 0x5B , 3 , 0xE2
, 0x1D , 0x81 , 0xE0 , 0x5E , 0x1D , 3 , 0x84 , 0xB8
, 0x2C ,0xF , 0x80 , 0xB1 , 0x83 , 0xE0 , 0x30 , 0x41
//260
, 0x1E , 0x43 , 0x89 , 0x83 , 0x50 , 0xFC , 0x24 , 0x2E
, 0x13 , 0x83 , 0xF1 , 0x7C , 0x4C , 0x2C , 0xC9 ,0xD
, 0x83 , 0xB0 , 0xB5 , 0x82 , 0xE4 , 0xE8 , 6 , 0x9C
, 7 , 0xA0 , 0x99 , 0x1D , 7 , 0x3E , 0x82 , 0x8F
//280
, 0x70 , 0x30 , 0x74 , 0x40 , 0xCA , 0x10 , 0xE4 , 0xE8
, 0xF , 0x92 , 0x14 , 0x3F , 6 , 0xF8 , 0x84 , 0x88
, 0x43 , 0x81 ,0xA , 0x34 , 0x39 , 0x41 , 0xC6 , 0xE3
, 0x1C , 0x47 , 3 , 0xB0 , 0xB8 , 0x13 ,0xA , 0xC2
//2A0
, 0x64 , 0xF8 , 0x18 , 0xF9 , 0x60 , 0xB3 , 0xC0 , 0x65
, 0x20 , 0x60 , 0xA6 , 0x8C , 0xC3 , 0x81 , 0x20 , 0x30
, 0x26 , 0x1E , 0x1C , 0x38 , 0xD3 , 1 , 0xB0 , 0x26
, 0x40 , 0xF4 ,0xB , 0xC3 , 0x42 , 0x1F , 0x85 , 0x32
//2C0
, 0x26 , 0x60 , 0x40 , 0xC9 , 0xCB , 1 , 0xEC , 0x11
, 0x28 , 0x40 , 0xFA , 4 , 0x34 , 0xE0 , 0x70 , 0x4C
, 0x8C , 0x1D , 7 , 0x69 , 3 , 0x16 , 0xC8 , 4
, 0x23 , 0xE8 , 0xC6 , 0x9A ,0xB , 0x1A , 3 , 0xE0
//2E0
, 0x76 , 6 , 5 , 0xCF , 0x1E , 0xBC , 0x58 , 0x31
, 0x71 , 0x66 , 0 , 0xF8 , 0x3F , 4 , 0xFC ,0xC
, 0x74 , 0x27 , 0x8A , 0x80 , 0x71 , 0xC2 , 0x3A , 0x26
, 6 , 0xC0 , 0x1F , 5 ,0xF , 0x98 , 0x40 , 0xAE
//300
, 1 , 0x7F , 0xC0 , 7 , 0xFF , 0 ,0xE , 0xFE
, 0 , 3 , 0xDF , 0x80 , 3 , 0xEF , 0x80 , 0x1B
, 0xF1 , 0xC2 , 0 , 0xE7 , 0xE0 , 0x18 , 0xFC , 0xE0
, 0x21 , 0xFC , 0x80 , 0x3C , 0xFC , 0x40 ,0xE , 0x7E
//320
, 0 , 0x3F , 0x3E , 0 ,0xF , 0xFE , 0 , 0x1F
, 0xFF , 0 , 0x3E , 0xF0 , 7 , 0xFC , 0 , 0x7E
, 0x10 , 0x3F , 0xFF , 0 , 0x3F , 0x38 ,0xE , 0x7C
, 1 , 0x87 ,0xC , 0xFC , 0xC7 , 0 , 0x3E , 4
//340
, 0xF , 0x3E , 0x1F ,0xF ,0xF , 0x1F ,0xF , 2
, 0x83 , 0x87 , 0xCF , 3 , 0x87 ,0xF , 0x3F , 0xC0
, 7 , 0x9E , 0x60 , 0x3F , 0xC0 , 3 , 0xFE , 0
, 0x3F , 0xE0 , 0x77 , 0xE1 , 0xC0 , 0xFE , 0xE0 , 0xC3
//360
, 0xE0 , 1 , 0xDF , 0xF8 , 3 , 7 , 0 , 0x7E
, 0x70 , 0 , 0x7C , 0x38 , 0x18 , 0xFE ,0xC , 0x1E
, 0x78 , 0x1C , 0x7C , 0x3E ,0xE , 0x1F , 0x1E , 0x1E
, 0x3E , 0 , 0x7F , 0x83 , 7 , 0xDB , 0x87 , 0x83
//380
, 7 , 0xC7 , 7 , 0x10 , 0x71 , 0xFF , 0 , 0x3F
, 0xE2 , 1 , 0xE0 , 0xC1 , 0xC3 , 0xE1 , 0 , 0x7F
, 0xC0 , 5 , 0xF0 , 0x20 , 0xF8 , 0xF0 , 0x70 , 0xFE
, 0x78 , 0x79 , 0xF8 , 2 , 0x3F ,0xC , 0x8F , 3
//3a0
, 0xF , 0x9F , 0xE0 , 0xC1 , 0xC7 , 0x87 , 3 , 0xC3
, 0xC3 , 0xB0 , 0xE1 , 0xE1 , 0xC1 , 0xE3 , 0xE0 , 0x71
, 0xF0 , 0 , 0xFC , 0x70 , 0x7C ,0xC , 0x3E , 0x38
, 0xE , 0x1C , 0x70 , 0xC3 , 0xC7 , 3 , 0x81 , 0xC1
//3c0
, 0xC7 , 0xE7 , 0 ,0xF , 0xC7 , 0x87 , 0x19 , 9
, 0xEF , 0xC4 , 0x33 , 0xE0 , 0xC1 , 0xFC , 0xF8 , 0x70
, 0xF0 , 0x78 , 0xF8 , 0xF0 , 0x61 , 0xC7 , 0 , 0x1F
, 0xF8 , 1 , 0x7C , 0xF8 , 0xF0 , 0x78 , 0x70 , 0x3C
//3e0
, 0x7C , 0xCE ,0xE , 0x21 , 0x83 , 0xCF , 8 , 7
, 0x8F , 8 , 0xC1 , 0x87 , 0x8F , 0x80 , 0xC7 , 0xE3
, 0 , 7 , 0xF8 , 0xE0 , 0xEF , 0 , 0x39 , 0xF7
, 0x80 ,0xE , 0xF8 , 0xE1 , 0xE3 , 0xF8 , 0x21 , 0x9F
//400
, 0xC0 , 0xFF , 3 , 0xF8 , 7 , 0xC0 , 0x1F , 0xF8
, 0xC4 , 4 , 0xFC , 0xC4 , 0xC1 , 0xBC , 0x87 , 0xF0
, 0xF , 0xC0 , 0x7F , 5 , 0xE0 , 0x25 , 0xEC , 0xC0
, 0x3E , 0x84 , 0x47 , 0xF0 , 0x8E , 3 , 0xF8 , 3
//420
, 0xFB , 0xC0 , 0x19 , 0xF8 , 7 , 0x9C ,0xC , 0x17
, 0xF8 , 7 , 0xE0 , 0x1F , 0xA1 , 0xFC ,0xF , 0xFC
, 1 , 0xF0 , 0x3F , 0 , 0xFE , 3 , 0xF0 , 0x1F
, 0 , 0xFD , 0 , 0xFF , 0x88 ,0xD , 0xF9 , 1
//440
, 0xFF , 0 , 0x70 , 7 , 0xC0 , 0x3E , 0x42 , 0xF3
, 0xD , 0xC4 , 0x7F , 0x80 , 0xFC , 7 , 0xF0 , 0x5E
, 0xC0 , 0x3F , 0 , 0x78 , 0x3F , 0x81 , 0xFF , 1
, 0xF8 , 1 , 0xC3 , 0xE8 ,0xC , 0xE4 , 0x64 , 0x8F
////460
, 0xE4 ,0xF , 0xF0 , 7 , 0xF0 , 0xC2 , 0x1F , 0
, 0x7F , 0xC0 , 0x6F , 0x80 , 0x7E , 3 , 0xF8 , 7
, 0xF0 , 0x3F , 0xC0 , 0x78 ,0xF , 0x82 , 7 , 0xFE
, 0x22 , 0x77 , 0x70 , 2 , 0x76 , 3 , 0xFE , 0
//480
, 0xFE , 0x67 , 0 , 0x7C , 0xC7 , 0xF1 , 0x8E , 0xC6
, 0x3B , 0xE0 , 0x3F , 0x84 , 0xF3 , 0x19 , 0xD8 , 3
, 0x99 , 0xFC , 9 , 0xB8 ,0xF , 0xF8 , 0 , 0x9D
, 0x24 , 0x61 , 0xF9 ,0xD , 0 , 0xFD , 3 , 0xF0
//4a0
, 0x1F , 0x90 , 0x3F , 1 , 0xF8 , 0x1F , 0xD0 ,0xF
, 0xF8 , 0x37 , 1 , 0xF8 , 7 , 0xF0 ,0xF , 0xC0
, 0x3F , 0 , 0xFE , 3 , 0xF8 ,0xF , 0xC0 , 0x3F
, 0 , 0xFA , 3 , 0xF0 ,0xF , 0x80 , 0xFF , 1
//4c0
, 0xB8 , 7 , 0xF0 , 1 , 0xFC , 1 , 0xBC , 0x80
, 0x13 , 0x1E , 0 , 0x7F , 0xE1 , 0x40 , 0x7F , 0xA0
, 0x7F , 0xB0 , 0 , 0x3F , 0xC0 , 0x1F , 0xC0 , 0x38
, 0xF , 0xF0 , 0x1F , 0x80 , 0xFF , 1 , 0xFC , 3
//4e0
, 0xF1 , 0x7E , 1 , 0xFE , 1 , 0xF0 , 0xFF , 0
, 0x7F , 0xC0 , 0x1D , 7 , 0xF0 ,0xF , 0xC0 , 0x7E
, 6 , 0xE0 , 7 , 0xE0 ,0xF , 0xF8 , 6 , 0xC1
, 0xFE , 1 , 0xFC , 3 , 0xE0 ,0xF , 0 , 0xFC
};
#endif

View File

@@ -0,0 +1,215 @@
#ifndef SAMTABS_H
#define SAMTABS_H
//tab40672
unsigned char stressInputTable[] =
{
'*', '1', '2', '3', '4', '5', '6', '7', '8'
};
//tab40682
unsigned char signInputTable1[]={
' ', '.', '?', ',', '-', 'I', 'I', 'E',
'A', 'A', 'A', 'A', 'U', 'A', 'I', 'E',
'U', 'O', 'R', 'L', 'W', 'Y', 'W', 'R',
'L', 'W', 'Y', 'M', 'N', 'N', 'D', 'Q',
'S', 'S', 'F', 'T', '/', '/', 'Z', 'Z',
'V', 'D', 'C', '*', 'J', '*', '*', '*',
'E', 'A', 'O', 'A', 'O', 'U', 'B', '*',
'*', 'D', '*', '*', 'G', '*', '*', 'G',
'*', '*', 'P', '*', '*', 'T', '*', '*',
'K', '*', '*', 'K', '*', '*', 'U', 'U',
'U'
};
//tab40763
unsigned char signInputTable2[] =
{
'*', '*', '*', '*', '*', 'Y', 'H', 'H',
'E', 'A', 'H', 'O', 'H', 'X', 'X', 'R',
'X', 'H', 'X', 'X', 'X', 'X', 'H', '*',
'*', '*', '*', '*', '*', 'X', 'X', '*',
'*', 'H', '*', 'H', 'H', 'X', '*', 'H',
'*', 'H', 'H', '*', '*', '*', '*', '*',
'Y', 'Y', 'Y', 'W', 'W', 'W', '*', '*',
'*', '*', '*', '*', '*', '*', '*', 'X',
'*', '*', '*', '*', '*', '*', '*', '*',
'*', '*', '*', 'X', '*', '*', 'L', 'M',
'N'
};
//loc_9F8C
unsigned char flags[]={
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0xA4 , 0xA4 , 0xA4 ,
0xA4 , 0xA4 , 0xA4 , 0x84 , 0x84 , 0xA4 , 0xA4 , 0x84 ,
0x84 , 0x84 , 0x84 , 0x84 , 0x84 , 0x84 , 0x44 , 0x44 ,
0x44 , 0x44 , 0x44 , 0x4C , 0x4C , 0x4C , 0x48 , 0x4C ,
0x40 , 0x40 , 0x40 , 0x40 , 0x40 , 0x40 , 0x44 , 0x44 ,
0x44 , 0x44 , 0x48 , 0x40 , 0x4C , 0x44 , 0x00 , 0x00 ,
0xB4 , 0xB4 , 0xB4 , 0x94 , 0x94 , 0x94 , 0x4E , 0x4E ,
0x4E , 0x4E , 0x4E , 0x4E , 0x4E , 0x4E , 0x4E , 0x4E ,
0x4E , 0x4E , 0x4B , 0x4B , 0x4B , 0x4B , 0x4B , 0x4B ,
0x4B , 0x4B , 0x4B , 0x4B , 0x4B , 0x4B , 0x80 , 0xC1 ,
0xC1
};
//??? flags overlap flags2
//loc_9FDA
unsigned char flags2[] =
{
0x80 , 0xC1 , 0xC1 , 0xC1 , 0xC1 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x10 ,
0x10 , 0x10 , 0x10 , 0x08 , 0x0C , 0x08 , 0x04 , 0x40 ,
0x24 , 0x20 , 0x20 , 0x24 , 0x00 , 0x00 , 0x24 , 0x20 ,
0x20 , 0x24 , 0x20 , 0x20 , 0x00 , 0x20 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x04 , 0x04 , 0x04 , 0x00 , 0x00 , 0x00 , 0x00 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x04 , 0x04 , 0x04 ,
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00
};
//tab45616???
unsigned char phonemeStressedLengthTable[] =
{
0x00 , 0x12 , 0x12 , 0x12 , 8 ,0xB , 9 ,0xB ,
0xE ,0xF ,0xB , 0x10 ,0xC , 6 , 6 ,0xE ,
0xC ,0xE ,0xC ,0xB , 8 , 8 ,0xB ,0xA ,
9 , 8 , 8 , 8 , 8 , 8 , 3 , 5 ,
2 , 2 , 2 , 2 , 2 , 2 , 6 , 6 ,
8 , 6 , 6 , 2 , 9 , 4 , 2 , 1 ,
0xE ,0xF ,0xF ,0xF ,0xE ,0xE , 8 , 2 ,
2 , 7 , 2 , 1 , 7 , 2 , 2 , 7 ,
2 , 2 , 8 , 2 , 2 , 6 , 2 , 2 ,
7 , 2 , 4 , 7 , 1 , 4 , 5 , 5
};
//tab45536???
unsigned char phonemeLengthTable[] =
{
0 , 0x12 , 0x12 , 0x12 , 8 , 8 , 8 , 8 ,
8 ,0xB , 6 ,0xC ,0xA , 5 , 5 ,0xB ,
0xA ,0xA ,0xA , 9 , 8 , 7 , 9 , 7 ,
6 , 8 , 6 , 7 , 7 , 7 , 2 , 5 ,
2 , 2 , 2 , 2 , 2 , 2 , 6 , 6 ,
7 , 6 , 6 , 2 , 8 , 3 , 1 , 0x1E ,
0xD ,0xC ,0xC ,0xC ,0xE , 9 , 6 , 1 ,
2 , 5 , 1 , 1 , 6 , 1 , 2 , 6 ,
1 , 2 , 8 , 2 , 2 , 4 , 2 , 2 ,
6 , 1 , 4 , 6 , 1 , 4 , 0xC7 , 0xFF
};
/*
Ind | phoneme | flags |
-----|---------|----------|
0 | * | 00000000 |
1 | .* | 00000000 |
2 | ?* | 00000000 |
3 | ,* | 00000000 |
4 | -* | 00000000 |
VOWELS
5 | IY | 10100100 |
6 | IH | 10100100 |
7 | EH | 10100100 |
8 | AE | 10100100 |
9 | AA | 10100100 |
10 | AH | 10100100 |
11 | AO | 10000100 |
17 | OH | 10000100 |
12 | UH | 10000100 |
16 | UX | 10000100 |
15 | ER | 10000100 |
13 | AX | 10100100 |
14 | IX | 10100100 |
DIPHTONGS
48 | EY | 10110100 |
49 | AY | 10110100 |
50 | OY | 10110100 |
51 | AW | 10010100 |
52 | OW | 10010100 |
53 | UW | 10010100 |
21 | YX | 10000100 |
20 | WX | 10000100 |
18 | RX | 10000100 |
19 | LX | 10000100 |
37 | /X | 01000000 |
30 | DX | 01001000 |
22 | WH | 01000100 |
VOICED CONSONANTS
23 | R* | 01000100 |
24 | L* | 01000100 |
25 | W* | 01000100 |
26 | Y* | 01000100 |
27 | M* | 01001100 |
28 | N* | 01001100 |
29 | NX | 01001100 |
54 | B* | 01001110 |
57 | D* | 01001110 |
60 | G* | 01001110 |
44 | J* | 01001100 |
38 | Z* | 01000100 |
39 | ZH | 01000100 |
40 | V* | 01000100 |
41 | DH | 01000100 |
unvoiced CONSONANTS
32 | S* | 01000000 |
33 | SH | 01000000 |
34 | F* | 01000000 |
35 | TH | 01000000 |
66 | P* | 01001011 |
69 | T* | 01001011 |
72 | K* | 01001011 |
42 | CH | 01001000 |
36 | /H | 01000000 |
43 | ** | 01000000 |
45 | ** | 01000100 |
46 | ** | 00000000 |
47 | ** | 00000000 |
55 | ** | 01001110 |
56 | ** | 01001110 |
58 | ** | 01001110 |
59 | ** | 01001110 |
61 | ** | 01001110 |
62 | ** | 01001110 |
63 | GX | 01001110 |
64 | ** | 01001110 |
65 | ** | 01001110 |
67 | ** | 01001011 |
68 | ** | 01001011 |
70 | ** | 01001011 |
71 | ** | 01001011 |
73 | ** | 01001011 |
74 | ** | 01001011 |
75 | KX | 01001011 |
76 | ** | 01001011 |
77 | ** | 01001011 |
SPECIAL
78 | UL | 10000000 |
79 | UM | 11000001 |
80 | UN | 11000001 |
31 | Q* | 01001100 |
*/
#endif

View File

@@ -0,0 +1,75 @@
#include<stdio.h>
extern unsigned char signInputTable1[];
extern unsigned char signInputTable2[];
void PrintPhonemes(unsigned char *phonemeindex, unsigned char *phonemeLength, unsigned char *stress)
{
int i = 0;
printf("===========================================\n");
printf("Internal Phoneme presentation:\n\n");
printf(" idx phoneme length stress\n");
printf("------------------------------\n");
while((phonemeindex[i] != 255) && (i < 255))
{
if (phonemeindex[i] < 81)
{
printf(" %3i %c%c %3i %i\n",
phonemeindex[i],
signInputTable1[phonemeindex[i]],
signInputTable2[phonemeindex[i]],
phonemeLength[i],
stress[i]
);
} else
{
printf(" %3i ?? %3i %i\n", phonemeindex[i], phonemeLength[i], stress[i]);
}
i++;
}
printf("===========================================\n");
printf("\n");
}
void PrintOutput(
unsigned char *flag,
unsigned char *f1,
unsigned char *f2,
unsigned char *f3,
unsigned char *a1,
unsigned char *a2,
unsigned char *a3,
unsigned char *p)
{
printf("===========================================\n");
printf("Final data for speech output:\n\n");
int i = 0;
printf(" flags ampl1 freq1 ampl2 freq2 ampl3 freq3 pitch\n");
printf("------------------------------------------------\n");
while(i < 255)
{
printf("%5i %5i %5i %5i %5i %5i %5i %5i\n", flag[i], a1[i], f1[i], a2[i], f2[i], a3[i], f3[i], p[i]);
i++;
}
printf("===========================================\n");
}
extern unsigned char GetRuleByte(unsigned short mem62, unsigned char Y);
void PrintRule(int offset)
{
int i = 1;
unsigned char A = 0;
printf("Applying rule: ");
do
{
A = GetRuleByte(offset, i);
if ((A&127) == '=') printf(" -> "); else printf("%c", A&127);
i++;
} while ((A&128)==0);
printf("\n");
}

View File

@@ -0,0 +1,17 @@
#ifndef DEBUG_H
#define DEBUG_H
void PrintPhonemes(unsigned char *phonemeindex, unsigned char *phonemeLength, unsigned char *stress);
void PrintOutput(
unsigned char *flag,
unsigned char *f1,
unsigned char *f2,
unsigned char *f3,
unsigned char *a1,
unsigned char *a2,
unsigned char *a3,
unsigned char *p);
void PrintRule(int offset);
#endif

View File

@@ -0,0 +1,269 @@
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include "reciter.h"
#include "sam.h"
#include "debug.h"
#ifdef USESDL
#include <SDL.h>
#include <SDL_audio.h>
#endif
void WriteWav(char* filename, char* buffer, int bufferlength)
{
FILE *file = fopen(filename, "wb");
if (file == NULL) return;
//RIFF header
fwrite("RIFF", 4, 1,file);
unsigned int filesize=bufferlength + 12 + 16 + 8 - 8;
fwrite(&filesize, 4, 1, file);
fwrite("WAVE", 4, 1, file);
//format chunk
fwrite("fmt ", 4, 1, file);
unsigned int fmtlength = 16;
fwrite(&fmtlength, 4, 1, file);
unsigned short int format=1; //PCM
fwrite(&format, 2, 1, file);
unsigned short int channels=1;
fwrite(&channels, 2, 1, file);
unsigned int samplerate = 22050;
fwrite(&samplerate, 4, 1, file);
fwrite(&samplerate, 4, 1, file); // bytes/second
unsigned short int blockalign = 1;
fwrite(&blockalign, 2, 1, file);
unsigned short int bitspersample=8;
fwrite(&bitspersample, 2, 1, file);
//data chunk
fwrite("data", 4, 1, file);
fwrite(&bufferlength, 4, 1, file);
fwrite(buffer, bufferlength, 1, file);
fclose(file);
}
void PrintUsage()
{
printf("usage: sam [options] Word1 Word2 ....\n");
printf("options\n");
printf(" -phonetic enters phonetic mode. (see below)\n");
printf(" -pitch number set pitch value (default=64)\n");
printf(" -speed number set speed value (default=72)\n");
printf(" -throat number set throat value (default=128)\n");
printf(" -mouth number set mouth value (default=128)\n");
printf(" -wav filename output to wav instead of libsdl\n");
printf(" -sing special treatment of pitch\n");
printf(" -debug print additional debug messages\n");
printf("\n");
printf(" VOWELS VOICED CONSONANTS \n");
printf("IY f(ee)t R red \n");
printf("IH p(i)n L allow \n");
printf("EH beg W away \n");
printf("AE Sam W whale \n");
printf("AA pot Y you \n");
printf("AH b(u)dget M Sam \n");
printf("AO t(al)k N man \n");
printf("OH cone NX so(ng) \n");
printf("UH book B bad \n");
printf("UX l(oo)t D dog \n");
printf("ER bird G again \n");
printf("AX gall(o)n J judge \n");
printf("IX dig(i)t Z zoo \n");
printf(" ZH plea(s)ure \n");
printf(" DIPHTHONGS V seven \n");
printf("EY m(a)de DH (th)en \n");
printf("AY h(igh) \n");
printf("OY boy \n");
printf("AW h(ow) UNVOICED CONSONANTS \n");
printf("OW slow S Sam \n");
printf("UW crew Sh fish \n");
printf(" F fish \n");
printf(" TH thin \n");
printf(" SPECIAL PHONEMES P poke \n");
printf("UL sett(le) (=AXL) T talk \n");
printf("UM astron(omy) (=AXM) K cake \n");
printf("UN functi(on) (=AXN) CH speech \n");
printf("Q kitt-en (glottal stop) /H a(h)ead \n");
}
#ifdef USESDL
int pos = 0;
void MixAudio(void *unused, Uint8 *stream, int len)
{
int bufferpos = GetBufferLength();
char *buffer = GetBuffer();
int i;
if (pos >= bufferpos) return;
if ((bufferpos-pos) < len) len = (bufferpos-pos);
for(i=0; i<len; i++)
{
stream[i] = buffer[pos];
pos++;
}
}
void OutputSound()
{
int bufferpos = GetBufferLength();
bufferpos /= 50;
SDL_AudioSpec fmt;
fmt.freq = 22050;
fmt.format = AUDIO_U8;
fmt.channels = 1;
fmt.samples = 2048;
fmt.callback = MixAudio;
fmt.userdata = NULL;
/* Open the audio device and start playing sound! */
if ( SDL_OpenAudio(&fmt, NULL) < 0 )
{
printf("Unable to open audio: %s\n", SDL_GetError());
exit(1);
}
SDL_PauseAudio(0);
//SDL_Delay((bufferpos)/7);
while (pos < bufferpos)
{
SDL_Delay(100);
}
SDL_CloseAudio();
}
#else
void OutputSound() {}
#endif
int debug = 0;
int main(int argc, char **argv)
{
int i;
int phonetic = 0;
char* wavfilename = NULL;
char input[256];
for(i=0; i<256; i++) input[i] = 0;
if (argc <= 1)
{
PrintUsage();
return 1;
}
i = 1;
while(i < argc)
{
if (argv[i][0] != '-')
{
strcat(input, argv[i]);
strcat(input, " ");
} else
{
if (strcmp(&argv[i][1], "wav")==0)
{
wavfilename = argv[i+1];
i++;
} else
if (strcmp(&argv[i][1], "sing")==0)
{
EnableSingmode();
} else
if (strcmp(&argv[i][1], "phonetic")==0)
{
phonetic = 1;
} else
if (strcmp(&argv[i][1], "debug")==0)
{
debug = 1;
} else
if (strcmp(&argv[i][1], "pitch")==0)
{
SetPitch(atoi(argv[i+1]));
i++;
} else
if (strcmp(&argv[i][1], "speed")==0)
{
SetSpeed(atoi(argv[i+1]));
i++;
} else
if (strcmp(&argv[i][1], "mouth")==0)
{
SetMouth(atoi(argv[i+1]));
i++;
} else
if (strcmp(&argv[i][1], "throat")==0)
{
SetThroat(atoi(argv[i+1]));
i++;
} else
{
PrintUsage();
return 1;
}
}
i++;
} //while
for(i=0; input[i] != 0; i++)
input[i] = toupper((int)input[i]);
if (debug)
{
if (phonetic) printf("phonetic input: %s\n", input);
else printf("text input: %s\n", input);
}
if (!phonetic)
{
strcat(input, "[");
if (!TextToPhonemes(input)) return 1;
if (debug)
printf("phonetic input: %s\n", input);
} else strcat(input, "\x9b");
#ifdef USESDL
if ( SDL_Init(SDL_INIT_AUDIO) < 0 )
{
printf("Unable to init SDL: %s\n", SDL_GetError());
exit(1);
}
atexit(SDL_Quit);
#endif
SetInput(input);
if (!SAMMain())
{
PrintUsage();
return 1;
}
if (wavfilename != NULL)
WriteWav(wavfilename, GetBuffer(), GetBufferLength()/50);
else
OutputSound();
return 0;
}

View File

@@ -0,0 +1,554 @@
#include <stdio.h>
#include <string.h>
#include "reciter.h"
#include "ReciterTabs.h"
#include "debug.h"
unsigned char A, X, Y;
extern int debug;
static unsigned char inputtemp[256]; // secure copy of input tab36096
void Code37055(unsigned char mem59)
{
X = mem59;
X--;
A = inputtemp[X];
Y = A;
A = tab36376[Y];
return;
}
void Code37066(unsigned char mem58)
{
X = mem58;
X++;
A = inputtemp[X];
Y = A;
A = tab36376[Y];
}
unsigned char GetRuleByte(unsigned short mem62, unsigned char Y)
{
unsigned int address = mem62;
if (mem62 >= 37541)
{
address -= 37541;
return rules2[address+Y];
}
address -= 32000;
return rules[address+Y];
}
int TextToPhonemes(char *input) // Code36484
{
//unsigned char *tab39445 = &mem[39445]; //input and output
//unsigned char mem29;
unsigned char mem56; //output position for phonemes
unsigned char mem57;
unsigned char mem58;
unsigned char mem59;
unsigned char mem60;
unsigned char mem61;
unsigned short mem62; // memory position of current rule
unsigned char mem64; // position of '=' or current character
unsigned char mem65; // position of ')'
unsigned char mem66; // position of '('
unsigned char mem36653;
inputtemp[0] = 32;
// secure copy of input
// because input will be overwritten by phonemes
X = 1;
Y = 0;
do
{
//pos36499:
A = input[Y] & 127;
if ( A >= 112) A = A & 95;
else if ( A >= 96) A = A & 79;
inputtemp[X] = A;
X++;
Y++;
} while (Y != 255);
X = 255;
inputtemp[X] = 27;
mem61 = 255;
pos36550:
A = 255;
mem56 = 255;
pos36554:
while(1)
{
mem61++;
X = mem61;
A = inputtemp[X];
mem64 = A;
if (A == '[')
{
mem56++;
X = mem56;
A = 155;
input[X] = 155;
//goto pos36542;
// Code39771(); //Code39777();
return 1;
}
//pos36579:
if (A != '.') break;
X++;
Y = inputtemp[X];
A = tab36376[Y] & 1;
if(A != 0) break;
mem56++;
X = mem56;
A = '.';
input[X] = '.';
} //while
//pos36607:
A = mem64;
Y = A;
A = tab36376[A];
mem57 = A;
if((A&2) != 0)
{
mem62 = 37541;
goto pos36700;
}
//pos36630:
A = mem57;
if(A != 0) goto pos36677;
A = 32;
inputtemp[X] = ' ';
mem56++;
X = mem56;
if (X > 120) goto pos36654;
input[X] = A;
goto pos36554;
// -----
//36653 is unknown. Contains position
pos36654:
input[X] = 155;
A = mem61;
mem36653 = A;
// mem29 = A; // not used
// Code36538(); das ist eigentlich
return 1;
//Code39771();
//go on if there is more input ???
mem61 = mem36653;
goto pos36550;
pos36677:
A = mem57 & 128;
if(A == 0)
{
//36683: BRK
return 0;
}
// go to the right rules for this character.
X = mem64 - 'A';
mem62 = tab37489[X] | (tab37515[X]<<8);
// -------------------------------------
// go to next rule
// -------------------------------------
pos36700:
// find next rule
Y = 0;
do
{
mem62 += 1;
A = GetRuleByte(mem62, Y);
} while ((A & 128) == 0);
Y++;
//pos36720:
// find '('
while(1)
{
A = GetRuleByte(mem62, Y);
if (A == '(') break;
Y++;
}
mem66 = Y;
//pos36732:
// find ')'
do
{
Y++;
A = GetRuleByte(mem62, Y);
} while(A != ')');
mem65 = Y;
//pos36741:
// find '='
do
{
Y++;
A = GetRuleByte(mem62, Y);
A = A & 127;
} while (A != '=');
mem64 = Y;
X = mem61;
mem60 = X;
// compare the string within the bracket
Y = mem66;
Y++;
//pos36759:
while(1)
{
mem57 = inputtemp[X];
A = GetRuleByte(mem62, Y);
if (A != mem57) goto pos36700;
Y++;
if(Y == mem65) break;
X++;
mem60 = X;
}
// the string in the bracket is correct
//pos36787:
A = mem61;
mem59 = mem61;
pos36791:
while(1)
{
mem66--;
Y = mem66;
A = GetRuleByte(mem62, Y);
mem57 = A;
//36800: BPL 36805
if ((A & 128) != 0) goto pos37180;
X = A & 127;
A = tab36376[X] & 128;
if (A == 0) break;
X = mem59-1;
A = inputtemp[X];
if (A != mem57) goto pos36700;
mem59 = X;
}
//pos36833:
A = mem57;
if (A == ' ') goto pos36895;
if (A == '#') goto pos36910;
if (A == '.') goto pos36920;
if (A == '&') goto pos36935;
if (A == '@') goto pos36967;
if (A == '^') goto pos37004;
if (A == '+') goto pos37019;
if (A == ':') goto pos37040;
// Code42041(); //Error
//36894: BRK
return 0;
// --------------
pos36895:
Code37055(mem59);
A = A & 128;
if(A != 0) goto pos36700;
pos36905:
mem59 = X;
goto pos36791;
// --------------
pos36910:
Code37055(mem59);
A = A & 64;
if(A != 0) goto pos36905;
goto pos36700;
// --------------
pos36920:
Code37055(mem59);
A = A & 8;
if(A == 0) goto pos36700;
pos36930:
mem59 = X;
goto pos36791;
// --------------
pos36935:
Code37055(mem59);
A = A & 16;
if(A != 0) goto pos36930;
A = inputtemp[X];
if (A != 72) goto pos36700;
X--;
A = inputtemp[X];
if ((A == 67) || (A == 83)) goto pos36930;
goto pos36700;
// --------------
pos36967:
Code37055(mem59);
A = A & 4;
if(A != 0) goto pos36930;
A = inputtemp[X];
if (A != 72) goto pos36700;
if ((A != 84) && (A != 67) && (A != 83)) goto pos36700;
mem59 = X;
goto pos36791;
// --------------
pos37004:
Code37055(mem59);
A = A & 32;
if(A == 0) goto pos36700;
pos37014:
mem59 = X;
goto pos36791;
// --------------
pos37019:
X = mem59;
X--;
A = inputtemp[X];
if ((A == 'E') || (A == 'I') || (A == 'Y')) goto pos37014;
goto pos36700;
// --------------
pos37040:
Code37055(mem59);
A = A & 32;
if(A == 0) goto pos36791;
mem59 = X;
goto pos37040;
//---------------------------------------
pos37077:
X = mem58+1;
A = inputtemp[X];
if (A != 'E') goto pos37157;
X++;
Y = inputtemp[X];
X--;
A = tab36376[Y] & 128;
if(A == 0) goto pos37108;
X++;
A = inputtemp[X];
if (A != 'R') goto pos37113;
pos37108:
mem58 = X;
goto pos37184;
pos37113:
if ((A == 83) || (A == 68)) goto pos37108; // 'S' 'D'
if (A != 76) goto pos37135; // 'L'
X++;
A = inputtemp[X];
if (A != 89) goto pos36700;
goto pos37108;
pos37135:
if (A != 70) goto pos36700;
X++;
A = inputtemp[X];
if (A != 85) goto pos36700;
X++;
A = inputtemp[X];
if (A == 76) goto pos37108;
goto pos36700;
pos37157:
if (A != 73) goto pos36700;
X++;
A = inputtemp[X];
if (A != 78) goto pos36700;
X++;
A = inputtemp[X];
if (A == 71) goto pos37108;
//pos37177:
goto pos36700;
// -----------------------------------------
pos37180:
A = mem60;
mem58 = A;
pos37184:
Y = mem65 + 1;
//37187: CPY 64
// if(? != 0) goto pos37194;
if(Y == mem64) goto pos37455;
mem65 = Y;
//37196: LDA (62),y
A = GetRuleByte(mem62, Y);
mem57 = A;
X = A;
A = tab36376[X] & 128;
if(A == 0) goto pos37226;
X = mem58+1;
A = inputtemp[X];
if (A != mem57) goto pos36700;
mem58 = X;
goto pos37184;
pos37226:
A = mem57;
if (A == 32) goto pos37295; // ' '
if (A == 35) goto pos37310; // '#'
if (A == 46) goto pos37320; // '.'
if (A == 38) goto pos37335; // '&'
if (A == 64) goto pos37367; // ''
if (A == 94) goto pos37404; // ''
if (A == 43) goto pos37419; // '+'
if (A == 58) goto pos37440; // ':'
if (A == 37) goto pos37077; // '%'
//pos37291:
// Code42041(); //Error
//37294: BRK
return 0;
// --------------
pos37295:
Code37066(mem58);
A = A & 128;
if(A != 0) goto pos36700;
pos37305:
mem58 = X;
goto pos37184;
// --------------
pos37310:
Code37066(mem58);
A = A & 64;
if(A != 0) goto pos37305;
goto pos36700;
// --------------
pos37320:
Code37066(mem58);
A = A & 8;
if(A == 0) goto pos36700;
pos37330:
mem58 = X;
goto pos37184;
// --------------
pos37335:
Code37066(mem58);
A = A & 16;
if(A != 0) goto pos37330;
A = inputtemp[X];
if (A != 72) goto pos36700;
X++;
A = inputtemp[X];
if ((A == 67) || (A == 83)) goto pos37330;
goto pos36700;
// --------------
pos37367:
Code37066(mem58);
A = A & 4;
if(A != 0) goto pos37330;
A = inputtemp[X];
if (A != 72) goto pos36700;
if ((A != 84) && (A != 67) && (A != 83)) goto pos36700;
mem58 = X;
goto pos37184;
// --------------
pos37404:
Code37066(mem58);
A = A & 32;
if(A == 0) goto pos36700;
pos37414:
mem58 = X;
goto pos37184;
// --------------
pos37419:
X = mem58;
X++;
A = inputtemp[X];
if ((A == 69) || (A == 73) || (A == 89)) goto pos37414;
goto pos36700;
// ----------------------
pos37440:
Code37066(mem58);
A = A & 32;
if(A == 0) goto pos37184;
mem58 = X;
goto pos37440;
pos37455:
Y = mem64;
mem61 = mem60;
if (debug)
PrintRule(mem62);
pos37461:
//37461: LDA (62),y
A = GetRuleByte(mem62, Y);
mem57 = A;
A = A & 127;
if (A != '=')
{
mem56++;
X = mem56;
input[X] = A;
}
//37478: BIT 57
//37480: BPL 37485 //not negative flag
if ((mem57 & 128) == 0) goto pos37485; //???
goto pos36554;
pos37485:
Y++;
goto pos37461;
}

View File

@@ -0,0 +1,9 @@
#ifndef RECITER_C
#define RECITER_C
//int TextToPhonemes(char *input, char *output);
int TextToPhonemes(char *input);
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
#ifndef RENDER_H
#define RENDER_H
void Render();
void SetMouthThroat(unsigned char mouth, unsigned char throat);
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,39 @@
#ifndef SAM_H
#define SAM_H
void SetInput(char *_input);
void SetSpeed(unsigned char _speed);
void SetPitch(unsigned char _pitch);
void SetMouth(unsigned char _mouth);
void SetThroat(unsigned char _throat);
void EnableSingmode();
void EnableDebug();
int SAMMain();
char* GetBuffer();
int GetBufferLength();
//char input[]={"/HAALAOAO MAYN NAAMAEAE IHSTT SAEBAASTTIHAAN \x9b\x9b\0"};
//unsigned char input[]={"/HAALAOAO \x9b\0"};
//unsigned char input[]={"AA \x9b\0"};
//unsigned char input[] = {"GUH5DEHN TAEG\x9b\0"};
//unsigned char input[]={"AY5 AEM EY TAO4LXKIHNX KAX4MPYUX4TAH. GOW4 AH/HEH3D PAHNK.MEYK MAY8 DEY.\x9b\0"};
//unsigned char input[]={"/HEH3LOW2, /HAW AH YUX2 TUXDEY. AY /HOH3P YUX AH FIYLIHNX OW4 KEY.\x9b\0"};
//unsigned char input[]={"/HEY2, DHIHS IH3Z GREY2T. /HAH /HAH /HAH.AYL BIY5 BAEK.\x9b\0"};
//unsigned char input[]={"/HAH /HAH /HAH \x9b\0"};
//unsigned char input[]={"/HAH /HAH /HAH.\x9b\0"};
//unsigned char input[]={".TUW BIY5Y3,, OHR NAA3T - TUW BIY5IYIY., DHAE4T IHZ DHAH KWEH4SCHAHN.\x9b\0"};
//unsigned char input[]={"/HEY2, DHIHS \x9b\0"};
//unsigned char input[]={" IYIHEHAEAAAHAOOHUHUXERAXIX \x9b\0"};
//unsigned char input[]={" RLWWYMNNXBDGJZZHVDH \x9b\0"};
//unsigned char input[]={" SSHFTHPTKCH/H \x9b\0"};
//unsigned char input[]={" EYAYOYAWOWUW ULUMUNQ YXWXRXLX/XDX\x9b\0"};
#endif