Skip to content

Commit

Permalink
upd
Browse files Browse the repository at this point in the history
  • Loading branch information
gemu2015 committed Sep 2, 2024
1 parent 5b8fce4 commit 8967f12
Show file tree
Hide file tree
Showing 2 changed files with 106 additions and 20 deletions.
69 changes: 59 additions & 10 deletions tasmota/Plugins/Audio/ESP8266SAM/reciter_c.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,11 @@ MODULE_PART void Code37055(unsigned char mem59) {
samdata->X--;
samdata->A = inputtemp[samdata->X];
samdata->Y = samdata->A;
samdata->A = pgm_read_byte(tab36376+samdata->Y); //tab36376[Y];
//samdata->A = pgm_read_byte(tab36376+samdata->Y); //tab36376[Y];
const uint8_t *cp = tab36376 + samdata->Y;
cp += EXEC_OFFSET;
samdata->A = pgm_read_byte(cp);

return;
}

Expand All @@ -26,7 +30,11 @@ MODULE_PART void Code37066(unsigned char mem58) {
samdata->X++;
samdata->A = inputtemp[samdata->X];
samdata->Y = samdata->A;
samdata->A = pgm_read_byte(tab36376+samdata->Y); //tab36376[Y];
//samdata->A = pgm_read_byte(tab36376+samdata->Y); //tab36376[Y];
const uint8_t *cp = tab36376 + samdata->Y;
cp += EXEC_OFFSET;
samdata->A = pgm_read_byte(cp);

}

MODULE_PART unsigned char GetRuleByte(unsigned short mem62, unsigned char Y) {
Expand All @@ -37,10 +45,18 @@ MODULE_PART unsigned char GetRuleByte(unsigned short mem62, unsigned char Y) {

if (mem62 >= icp[4]) {
address -= icp[4];
return pgm_read_byte(rules2 + address + Y); //rules2[address+Y];
//return pgm_read_byte(rules2 + address + Y); //rules2[address+Y];
const char *cp = rules2 + address + Y;
cp += EXEC_OFFSET;
return pgm_read_byte(cp);

}
address -= icp[5];
return pgm_read_byte(rules + address + Y); //rules[address+Y];
//return pgm_read_byte(rules + address + Y); //rules[address+Y];
const char *cp = rules + address + Y;
cp += EXEC_OFFSET;
return pgm_read_byte(cp);

}

// Code36484
Expand Down Expand Up @@ -113,7 +129,11 @@ MODULE_PART int TextToPhonemes(char *inbuff) {
if (samdata->A != '.') break;
samdata->X++;
samdata->Y = inputtemp[samdata->X];
samdata->A = pgm_read_byte(tab36376+samdata->Y)/*tab36376[Y]*/ & 1;
//samdata->A = pgm_read_byte(tab36376+samdata->Y)/*tab36376[Y]*/ & 1;
const uint8_t *cp = tab36376 + samdata->Y;
cp += EXEC_OFFSET;
samdata->A = pgm_read_byte(cp);

if (samdata->A != 0) break;
mem56++;
samdata->X = mem56;
Expand All @@ -123,9 +143,15 @@ MODULE_PART int TextToPhonemes(char *inbuff) {


//pos36607:
{
samdata->A = mem64;
samdata->Y = samdata->A;
samdata->A = pgm_read_byte(tab36376 + samdata->A); //tab36376[A];
//samdata->A = pgm_read_byte(tab36376 + samdata->A); //tab36376[A];
const uint8_t *cp = tab36376 + samdata->A;
cp += EXEC_OFFSET;
samdata->A = pgm_read_byte(cp);
}

mem57 = samdata->A;
if ((samdata->A & 2) != 0) {
mem62 = icp[4];
Expand Down Expand Up @@ -168,7 +194,14 @@ MODULE_PART int TextToPhonemes(char *inbuff) {

// go to the right rules for this character.
samdata->X = mem64 - 'A';
mem62 = pgm_read_byte(&tab37489[samdata->X]) | (pgm_read_byte(&tab37515[samdata->X])<<8);
{
//mem62 = pgm_read_byte(&tab37489[samdata->X]) | (pgm_read_byte(&tab37515[samdata->X])<<8);
const uint8_t *cp1 = &tab37489[samdata->X];
const uint8_t *cp2 = &tab37515[samdata->X];
cp1 += EXEC_OFFSET;
cp2 += EXEC_OFFSET;
mem62 = pgm_read_byte(cp1) | (pgm_read_byte(cp2)<<8);
}

// -------------------------------------
// go to next rule
Expand Down Expand Up @@ -242,7 +275,11 @@ MODULE_PART int TextToPhonemes(char *inbuff) {
//36800: BPL 36805
if ((samdata->A & 128) != 0) goto pos37180;
samdata->X = samdata->A & 127;
samdata->A = pgm_read_byte(tab36376+samdata->X)/*tab36376[X]*/ & 128;
//samdata->A = pgm_read_byte(tab36376+samdata->X)/*tab36376[X]*/ & 128;
const uint8_t *cp = tab36376 + samdata->X;
cp += EXEC_OFFSET;
samdata->A = pgm_read_byte(cp);

if (samdata->A == 0) break;
samdata->X = mem59-1;
samdata->A = inputtemp[samdata->X];
Expand Down Expand Up @@ -357,7 +394,13 @@ MODULE_PART int TextToPhonemes(char *inbuff) {
samdata->X++;
samdata->Y = inputtemp[samdata->X];
samdata->X--;
samdata->A = pgm_read_byte(tab36376+samdata->Y)/*tab36376[Y]*/ & 128;
{
//samdata->A = pgm_read_byte(tab36376+samdata->Y)/*tab36376[Y]*/ & 128;
const uint8_t *cp = tab36376+samdata->Y;
cp += EXEC_OFFSET;
samdata->A = pgm_read_byte(cp);
}

if(samdata->A == 0) goto pos37108;
samdata->X++;
samdata->A = inputtemp[samdata->X];
Expand Down Expand Up @@ -412,7 +455,13 @@ MODULE_PART int TextToPhonemes(char *inbuff) {
samdata->A = GetRuleByte(mem62,samdata->Y);
mem57 = samdata->A;
samdata->X = samdata->A;
samdata->A = pgm_read_byte(tab36376+samdata->X)/*tab36376[X]*/ & 128;
{
//samdata->A = pgm_read_byte(tab36376+samdata->X)/*tab36376[X]*/ & 128;
const uint8_t *cp = tab36376+samdata->X;
cp += EXEC_OFFSET;
samdata->A = pgm_read_byte(cp);
}

if(samdata->A == 0) goto pos37226;
samdata->X = mem58+1;
samdata->A = inputtemp[samdata->X];
Expand Down
57 changes: 47 additions & 10 deletions tasmota/Plugins/Audio/ESP8266SAM/sam_c.h
Original file line number Diff line number Diff line change
Expand Up @@ -433,12 +433,19 @@ int Parser1() {

// GET FIRST CHARACTER AT POSITION Y IN signInputTable
// --> should change name to PhonemeNameTable1
samdata->A = pgm_read_byte(signInputTable1 + samdata->Y);//signInputTable1[Y];
//samdata->A = pgm_read_byte(signInputTable1 + samdata->Y);//signInputTable1[Y];
const uint8_t *cp = signInputTable1 + samdata->Y;
cp += EXEC_OFFSET;
samdata->A = pgm_read_byte(cp);

// FIRST CHARACTER MATCHES?
if (samdata->A == sign1) {
// GET THE CHARACTER FROM THE PhonemeSecondLetterTable
samdata->A = pgm_read_byte(signInputTable2 + samdata->Y);//signInputTable2[Y];
//samdata->A = pgm_read_byte(signInputTable2 + samdata->Y);//signInputTable2[Y];
const uint8_t *cp = signInputTable2 + samdata->Y;
cp += EXEC_OFFSET;
samdata->A = pgm_read_byte(cp);

// NOT A SPECIAL AND MATCHES SECOND CHARACTER?
if ((samdata->A != '*') && (samdata->A == sign2)) {
// STORE THE INDEX OF THE PHONEME INTO THE phomeneIndexTable
Expand Down Expand Up @@ -468,9 +475,16 @@ int Parser1() {
samdata->Y = 0;
pos41134:
// DOES THE PHONEME IN THE TABLE END WITH '*'?
if (pgm_read_byte(signInputTable2 + samdata->Y)/*signInputTable2[Y]*/ == '*') {
//if (pgm_read_byte(signInputTable2 + samdata->Y)/*signInputTable2[Y]*/ == '*') {
cp = signInputTable2 + samdata->Y;
cp += EXEC_OFFSET;

if (pgm_read_byte(cp)/*signInputTable2[Y]*/ == '*') {
// DOES THE FIRST CHARACTER MATCH THE FIRST LETTER OF THE PHONEME
if (pgm_read_byte(signInputTable1 + samdata->Y)/*]signInputTable1[Y]*/ == sign1) {
//if (pgm_read_byte(signInputTable1 + samdata->Y)/*]signInputTable1[Y]*/ == sign1) {
const uint8_t *cp = signInputTable1 + samdata->Y;
cp += EXEC_OFFSET;
if (pgm_read_byte(cp)/*]signInputTable1[Y]*/ == sign1) {
// SAVE THE POSITION AND MOVE AHEAD
phonemeindex[position] = samdata->Y;
// ADVANCE THE POINTER
Expand Down Expand Up @@ -519,9 +533,16 @@ void SetPhonemeLength() {
A = stress[position];
//41218: BMI 41229
if ((A == 0) || ((A&128) != 0)) {
phonemeLength[position] = pgm_read_byte(&phonemeLengthTable[phonemeindex[position]]);
//phonemeLength[position] = pgm_read_byte(&phonemeLengthTable[phonemeindex[position]]);
const uint8_t *cp = &phonemeLengthTable[phonemeindex[position]];
cp += EXEC_OFFSET;
phonemeLength[position] = pgm_read_byte(cp);

} else {
phonemeLength[position] = pgm_read_byte(&phonemeStressedLengthTable[phonemeindex[position]]);
//phonemeLength[position] = pgm_read_byte(&phonemeStressedLengthTable[phonemeindex[position]]);
const uint8_t *cp = &phonemeStressedLengthTable[phonemeindex[position]];
cp += EXEC_OFFSET;
phonemeLength[position] = pgm_read_byte(cp);
}
position++;
}
Expand All @@ -540,8 +561,16 @@ void Code41240() {
pos++;
continue;
} else if ((flags[index] & 1) == 0) {
Insert(pos + 1, index + 1, pgm_read_byte(&phonemeLengthTable[index + 1]), stress[pos]);
Insert(pos + 2, index + 2, pgm_read_byte(&phonemeLengthTable[index + 2]), stress[pos]);
//Insert(pos + 1, index + 1, pgm_read_byte(&phonemeLengthTable[index + 1]), stress[pos]);
const uint8_t *cp = &phonemeLengthTable[index + 1];
cp += EXEC_OFFSET;
Insert(pos + 1, index + 1, pgm_read_byte(cp), stress[pos]);

//Insert(pos + 2, index + 2, pgm_read_byte(&phonemeLengthTable[index + 2]), stress[pos]);
cp = &phonemeLengthTable[index + 2];
cp += EXEC_OFFSET;
Insert(pos + 2, index + 1, pgm_read_byte(cp), stress[pos]);

pos += 3;
continue;
}
Expand All @@ -556,8 +585,16 @@ void Code41240() {
if ((samdata->A == 36) || (samdata->A == 37)) {pos++; continue;} // '/H' '/X'
}

Insert(pos + 1, index + 1, pgm_read_byte(&phonemeLengthTable[index + 1]), stress[pos]);
Insert(pos + 2, index + 2, pgm_read_byte(&phonemeLengthTable[index + 2]), stress[pos]);
//Insert(pos + 1, index + 1, pgm_read_byte(&phonemeLengthTable[index + 1]), stress[pos]);
const uint8_t *cp = &phonemeLengthTable[index + 1];
cp += EXEC_OFFSET;
Insert(pos + 1, index + 1, pgm_read_byte(cp), stress[pos]);

//Insert(pos + 2, index + 2, pgm_read_byte(&phonemeLengthTable[index + 2]), stress[pos]);
cp = &phonemeLengthTable[index + 2];
cp += EXEC_OFFSET;
Insert(pos + 2, index + 1, pgm_read_byte(cp), stress[pos]);

pos += 3;
};

Expand Down

0 comments on commit 8967f12

Please sign in to comment.