diff options
author | Eugene Sandulenko | 2011-12-23 19:02:50 +0000 |
---|---|---|
committer | Strangerke | 2012-04-06 08:18:12 +0200 |
commit | 816e53c1f87365cb351fe3dbdf4a8636954d1773 (patch) | |
tree | 7e6cdc9ebb3a5e83d461695651677f21997a4ec1 /engines/mortevielle/parole.h | |
parent | 8c57c71e3a81edf03905b549c70599ab5247f969 (diff) | |
download | scummvm-rg350-816e53c1f87365cb351fe3dbdf4a8636954d1773.tar.gz scummvm-rg350-816e53c1f87365cb351fe3dbdf4a8636954d1773.tar.bz2 scummvm-rg350-816e53c1f87365cb351fe3dbdf4a8636954d1773.zip |
MORTEVIELLE: Initial ptoc output
Diffstat (limited to 'engines/mortevielle/parole.h')
-rw-r--r-- | engines/mortevielle/parole.h | 432 |
1 files changed, 432 insertions, 0 deletions
diff --git a/engines/mortevielle/parole.h b/engines/mortevielle/parole.h new file mode 100644 index 0000000000..0630c9b2b3 --- /dev/null +++ b/engines/mortevielle/parole.h @@ -0,0 +1,432 @@ + + void spfrac(integer wor) + { + c3.rep= (cardinal)wor >> 12; + if ((typlec==0) && (c3.code!=9)) + if (((c3.code>4) && (c3.val!=20) && ! (set::of(3,6,9, eos).has(c3.rep))) || + ((c3.code<5) && ! (set::of(19,22, eos).has(c3.val)) && ! (set::of(4,9, eos).has(c3.rep)))) + c3.rep= c3.rep + 1; + c3.freq= ((cardinal)wor >> 6) & 7; + c3.acc= ((cardinal)wor >> 9) & 7; + } + + void charg_car() + { + integer wor, int_; + + wor= swap(memw[adword+ptr_word]); + int_= wor & 0x3f; + switch (int_) { + case 60 : { + c3.val= 32; /* " " */ + c3.code= 9; + } + break; + case 61 : { + c3.val= 46; /* "." */ + c3.code= 9; + } + break; + case 62 : { + c3.val= 35; /* "#" */ + c3.code= 9; + } + break; + case RANGE_26(22,47) : { + int_= int_-22; + c3.val= int_; + c3.code= typcon[int_]; + } + break; + case RANGE_9(48,56) : { + c3.val= int_-22; + c3.code= 4; + } + break; + case RANGE_8(14,21) : { + c3.val= int_; + c3.code= 6; + } + break; + case RANGE_14(0,13) : { + c3.val= int_; + c3.code= 5; + } + break; + } + spfrac(wor); + ptr_word= ptr_word+2; + } + + + void entroct( byte o) + { + mem[adtroct+ptr_oct]= o; + ptr_oct= ptr_oct+1; + } + + void veracf(byte b) + {; + } + +/* overlay */ void cctable (tablint& t) + { + integer k; + array<0,256,real> tb; + + + tb[0]=0; + for( k=0; k <= 255; k ++) + { + tb[k+1]= addfix + tb[k]; + t[255-k]=trunc(tb[k])+1; + } + } + +/* overlay */ void regenbruit() + { + integer i,j; + + i= offsetb3+8590; + j= 0; + do { + t_cph[j]=memw[adbruit3+i]; + i= i+2; + j= j+1; + } while (!(i>= offsetb3+8790)); + } + +/* overlay */ void charge_son() + { + untyped_file f; + + assign(f,"sonmus.mor"); + reset(f); + blockread(f,mem[0x7414+0],273); + /*blockread(f,mem[adson+0],300); + blockread(f,mem[adson+2400+0],245);*/ + demus(0x7414,adson,273); + close(f); + } + +/* overlay */ void charge_phbruit() + { + untyped_file f; + + assign(f,"phbrui.mor"); + reset(f); + blockread(f,t_cph,3); + close(f); + } + +/* overlay */ void charge_bruit() + { + untyped_file f; + integer j,i; + + assign(f,"bruits"); + reset(f); + blockread(f,mem[adbruit+0],250); + for( i=0; i <= 19013; i ++) mem[adbruit+32000+i]= mem[adbruit5+i]; + blockread(f,mem[adbruit1+offsetb1],149); + close(f); + } + +/* overlay */ void trait_car() + { + byte d3; + integer d2, i; + + switch (c2.code) { + case 9 : if (c2.val!=ord('#')) for( i=0; i <= c2.rep; i ++) entroct(c2.val); break; + + case 5:case 6 : { + if (c2.code==6) d3= tabdph[(c2.val - 14) << 1]; + else d3= null; + if (c1.code>=5) + { + veracf(c2.acc); + if (c1.code==9) + { + entroct(4); + if (d3==null) entroct(c2.val); + else entroct(d3); + entroct(22); + } + } + switch (c2.rep) { + case 0 : { + entroct(0); + entroct(c2.val); + if (d3==null) if (c3.code==9) entroct(2); + else entroct(4); + else if (c3.code==9) entroct(0); + else entroct(1); + } + break; + case 4:case 5:case 6 : { + if (c2.rep!=4) + { + i= c2.rep-5; + do { + i= i-1; + entroct(0); + if (d3==null) entroct(c2.val); + else entroct(d3); + entroct(3); + } while (!(i<0)); + } + if (d3==null) + { + entroct(4); + entroct(c2.val); + entroct(0); + } + else + { + entroct(0); + entroct(c2.val); + entroct(3); + } + } + break; + case 7:case 8:case 9 : { + if (c2.rep!=7) + { + i= c2.rep-8; + do { + i= i-1; + entroct(0); + if (d3==null) entroct(c2.val); + else entroct(d3); + entroct(3); + } while (!(i<0)); + } + if (d3==null) + { + entroct(0); + entroct(c2.val); + entroct(2); + } + else + { + entroct(0); + entroct(c2.val); + entroct(0); + } + } + break; + case 1:case 2:case 3 : { + if (c2.rep!=1) + { + i= c2.rep-2; + do { + i= i-1; + entroct(0); + if (d3==null) entroct(c2.val); + else entroct(d3); + entroct(3); + } while (!(i<0)); + } + entroct(0); + entroct(c2.val); + if (c3.code==9) entroct(0); + else entroct(1); + } + break; + } /* case c2.rep */ + } + break; + + case 2:case 3 : { + d3= c2.code+5; /* 7 ou 8 => voyelle correspondante */ + if (c1.code>4) + { + veracf(c2.acc); + if (c1.code==9) + { + entroct(4); + entroct(d3); + entroct(22); + } + } + i=c2.rep; + if (i!=0) + { + do { + i=i-1; + entroct(0); + entroct(d3); + entroct(3); + } while (!(i<=0)); + } + veracf(c3.acc); + if (c3.code==6) + { + entroct(4); + entroct(tabdph[(c3.val-14) << 1]); + entroct(c2.val); + } + else + { + entroct(4); + if (c3.val==4) entroct(3); + else entroct(c3.val); + entroct(c2.val); + } + } + break; + case 0:case 1 : { + veracf(c2.acc); + switch (c3.code) { + case 2 : d2= 7; break; + case 3 : d2= 8; break; + case 6 : d2= tabdph[(c3.val-14) << 1]; break; + case 5 : d2= c3.val; break; + default: d2=10; + } /* case c3.code */ + d2= d2 *26 + c2.val; + if (tnocon[d2]==0) d3=2; + else d3=6; + if (c2.rep>=5) + { + c2.rep=c2.rep-5; + d3= 8-d3; /* echange 2 et 6 */ + } + if (c2.code==0) + { + i=c2.rep; + if (i!=0) + { + do { + i=i-1; + entroct(d3); + entroct(c2.val); + entroct(3); + } while (!(i<=0)); + } + entroct(d3); + entroct(c2.val); + entroct(4); + } + else + { + entroct(d3); + entroct(c2.val); + entroct(3); + i=c2.rep; + if (i!=0) + { + do { + i=i-1; + entroct(d3); + entroct(c2.val); + entroct(4); + } while (!(i<=0)); + } + } + if (c3.code==9) + { + entroct(d3); + entroct(c2.val); + entroct(5); + } + else + if (! (set::of(range(0,1),4, eos).has(c3.code))) + { + veracf(c3.acc); + switch (c3.code) { + case 3 : d2= 8; break; + case 6 : d2= tabdph[(c3.val-14) << 1]; break; + case 5 : d2= c3.val; break; + default: d2= 7; + } /* case c3.code */ + if (d2==4) d2=3; + if (intcon[c2.val]!=0) c2.val= c2.val+1; + if ((c2.val==17) || (c2.val==18)) c2.val=16; + entroct(4); + entroct(d2); + entroct(c2.val); + } + } + break; + case 4 : { + veracf(c2.acc); + i=c2.rep; + if (i!=0) + { + do { + i=i-1; + entroct(2); + entroct(c2.val); + entroct(3); + } while (!(i<=0)); + } + entroct(2); + entroct(c2.val); + entroct(4); + if (c3.code==9) + { + entroct(2); + entroct(c2.val); + entroct(5); + } + else + if (! (set::of(range(0,1),4, eos).has(c3.code))) + { + veracf(c3.acc); + switch (c3.code) { + case 3 : d2= 8; break; + case 6 : d2= tabdph[(c3.val-14) << 1]; break; + case 5 : d2= c3.val; break; + default: d2= 7; + } /* case c3.code */ + if (d2==4) d2=3; + if (intcon[c2.val]!=0) c2.val= c2.val+1; + entroct(4); + entroct(d2); + entroct(tabdbc[((c2.val-26) << 1)+1]); + } + } + break; + } /* case c2.code */ + } + +/*overlay function testprot : boolean; +var + regs : registres; + buffer : array[0..511] of char; + i,j,k : integer; + st : phrase; + tay : integer; + test : array[0..2] of boolean; +const + chaine : array[0..7] of char + = (' ','M','A','S','T','E','R',' '); + +begin + test[0]:= false;test[1]:=false;test[2]:=false;k:=0; + with regs do + begin + while (test[k]=false) and (k<2) do + begin + k:=k+1; + ax:=0;intr(19,regs); + ax:=$0201;cx:=$0001;dx:=$0100+k-1;es:=seg(buffer);bx:=ofs(buffer); + intr(19,regs); + test[k]:=true; + tesok:= true; + i:=0; + while (test[k]) and (i<19) do + begin + ax:=$0201;cx:=$2700+i;dx:=$0100+k-1;es:=seg(buffer);bx:=ofs(buffer); + intr(19,regs);if lo(flags) mod 2=1 then test[k]:=false;i:=i+1; + end; + for j:=0 to 7 do + if buffer[j+504]<>chaine[j] then test[k]:=false; + end; + end; + testprot:=(test[1] or test[2]); +end; +*/ + |