aboutsummaryrefslogtreecommitdiff
path: root/engines/mortevielle/taffich.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2011-12-26 17:32:59 +0000
committerStrangerke2012-04-06 08:18:14 +0200
commite6a0c23d2c57461305906cb4c62b2b6962915264 (patch)
treee3300420f52afca4ec48c54a6d3b83b6b6a67697 /engines/mortevielle/taffich.cpp
parent9b6a4264dcaa26d87fa099c0a0dadbb8e37a6241 (diff)
downloadscummvm-rg350-e6a0c23d2c57461305906cb4c62b2b6962915264.tar.gz
scummvm-rg350-e6a0c23d2c57461305906cb4c62b2b6962915264.tar.bz2
scummvm-rg350-e6a0c23d2c57461305906cb4c62b2b6962915264.zip
MORTEVIELLE: Rename *.h -> *.cpp where they really belong
Diffstat (limited to 'engines/mortevielle/taffich.cpp')
-rw-r--r--engines/mortevielle/taffich.cpp196
1 files changed, 196 insertions, 0 deletions
diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp
new file mode 100644
index 0000000000..00203118d8
--- /dev/null
+++ b/engines/mortevielle/taffich.cpp
@@ -0,0 +1,196 @@
+void chardes(str11 nom, long_integer passe, integer long_) {
+ integer i, p, l;
+ byte b;
+ untyped_file f;
+
+ /* debug('chardes'); */
+ assign(f, nom);
+ /*$i-*/
+ reset(f);
+ testfi();
+ p = 0;
+ while (passe > 127) {
+ p = p + 1;
+ passe = passe - 128;
+ }
+ if (p != 0) seek(f, p);
+ p = trunc(passe);
+ l = long_ + p;
+ i = 0;
+ while (l > 0) {
+ blockread(f, mem[0x6000 + i], 1);
+ testfi();
+ l = l - 128;
+ i = i + 128;
+ }
+ close(f);
+ for (i = p; i <= long_ + p; i ++) mem[0x7000 + i - p] = mem[0x6000 + i];
+ /*$i+*/
+}
+
+void charani(str11 nom, long_integer passe, integer long_) {
+ integer i, p, l;
+ byte b;
+ untyped_file f;
+
+ /* debug('charani'); */
+ assign(f, nom);
+ /*$i-*/
+ reset(f);
+ testfi();
+ p = 0;
+ while (passe > 127) {
+ passe = passe - 128;
+ p = p + 1;
+ }
+ if (p != 0) seek(f, p);
+ p = trunc(passe);
+ l = long_ + p;
+ i = 0;
+ while (l > 0) {
+ blockread(f, mem[0x6000 + i], 1);
+ testfi();
+ l = l - 128;
+ i = i + 128;
+ }
+ close(f);
+ for (i = p; i <= long_ + p; i ++) mem[0x7314 + i - p] = mem[0x6000 + i];
+ /*$i+*/
+}
+
+void taffich() {
+ const array<136, 140, byte> tran1
+ = {{ 121, 121, 138, 139, 120 }};
+ const array<153, 161, byte> tran2
+ = {{
+ 150, 150, 152, 152, 100,
+ 110, 159, 100, 100
+ }
+ };
+ integer i, m, a, b, cx, handle,
+ npal;
+ long_integer lgt, lhandle;
+ str11 nom;
+ integer palh, k, j;
+ array<0, 15, integer> alllum;
+
+
+ a = caff;
+ if (set::of(range(153, 161), eos).has(a)) a = tran2[a];
+ else if (set::of(range(136, 140), eos).has(a)) a = tran1[a];
+ b = a;
+ if (maff == a) return;
+ if (a == 16) {
+ s.pourc[9] = '*';
+ s.teauto[42] = '*';
+ }
+ if (a == 20) {
+ s.teauto[39] = '*';
+ if (s.teauto[36] == '*') {
+ s.pourc[3] = '*';
+ s.teauto[38] = '*';
+ }
+ }
+ if (a == 24) s.teauto[37] = '*';
+ if (a == 30) s.teauto[9] = '*';
+ if (a == 31) {
+ s.pourc[4] = '*';
+ s.teauto[35] = '*';
+ }
+ if (a == 118) s.teauto[41] = '*';
+ if (a == 143) s.pourc[1] = '*';
+ if (a == 150) s.teauto[34] = '*';
+ if (a == 151) s.pourc[2] = '*';
+ okdes = true;
+ hide_mouse();
+ lgt = 0;
+ if ((a != 50) && (a != 51)) {
+ m = a + 2000;
+ if ((m > 2001) && (m < 2010)) m = 2001;
+ if (m == 2011) m = 2010;
+ if (a == 32) m = 2034;
+ if ((a == 17) && (maff == 14)) m = 2018;
+ if (a > 99)
+ if ((is == 1) || (is == 0)) m = 2031;
+ else m = 2032;
+ if (((a > 69) && (a < 80)) || (a == 30) || (a == 31) || (a == 144)
+ || (a == 147) || (a == 149)) m = 2030;
+ if (((a < 27) && (((maff > 69) && (! s.ipre)) || (maff > 99)))
+ || ((maff > 29) && (maff < 33))) m = 2033;
+ messint(m);
+ maff = a;
+ if (a == 159) a = 86;
+ else if (a > 140) a = a - 67;
+ else if (a > 137) a = a - 66;
+ else if (a > 99) a = a - 64;
+ else if (a > 69) a = a - 42;
+ else if (a > 29) a = a - 5;
+ else if (a == 26) a = 24;
+ else if (a > 18) a = a - 1;
+ npal = a;
+ for (cx = 0; cx <= (a - 1); cx ++) lgt = lgt + l[cx];
+ handle = l[a];
+ nom = "DXX.mor";
+ } else {
+ nom = "DZZ.mor";
+ handle = l[87];
+ if (a == 51) {
+ lgt = handle;
+ handle = l[88];
+ }
+ maff = a;
+ npal = a + 37;
+ }
+ chardes(nom, lgt, handle);
+ if (gd == her) {
+ for (i = 0; i <= 15; i ++) {
+ palh = memw[0x7000 + (succ(integer, i) << 1)];
+ alllum[i] = (palh & 15) + (((cardinal)palh >> 12) & 15) + (((cardinal)palh >> 8) & 15);
+ }
+ for (i = 0; i <= 15; i ++) {
+ k = 0;
+ for (j = 0; j <= 15; j ++) if (alllum[j] > alllum[k]) k = j;
+ mem[0x7000 + 2 + (k << 1)] = rang[i];
+ alllum[k] = -1;
+ }
+ }
+ numpal = npal;
+ writepal(npal);
+
+ if ((b < 15) || (b == 16) || (b == 17) || (b == 24) || (b == 26) || (b == 50)) {
+ lgt = 0;
+ if ((b < 15) || (b == 16) || (b == 17) || (b == 24) || (b == 26)) {
+ if (b == 26) b = 18;
+ else if (b == 24) b = 17;
+ else if (b > 15) b = b - 1;
+ for (cx = 0; cx <= (b - 1); cx ++) lgt = lgt + l[cx + 89];
+ handle = l[b + 89];
+ nom = "AXX.mor";
+ } else if (b == 50) {
+ nom = "AZZ.mor";
+ handle = 1260;
+ }
+ charani(nom, lgt, handle);
+ }
+ show_mouse();
+ if ((a < 27) && ((maff < 27) || (s.mlieu == 15)) && (msg[4] != entrer)) {
+ if ((a == 13) || (a == 14)) person();
+ else if (! blo) t11(s.mlieu, cx);
+ mpers = 0;
+ }
+}
+
+/* begin
+ for i:=0 to 15 do
+ begin
+ PalH:=memw[$7000:succ(i) shl 1];
+ Alllum[i]:=PalH and 15 + PalH shr 4 and 15 + PalH shr 8 and 15;
+ end;
+ for i:=0 to 15 do
+ begin
+ k:=0;
+ for j:=0 to 15 do if Alllum[j]>Alllum[k] then k:=j;
+ mem[$7000:2+k shl 1]:= Rang[i];
+ Alllum[k]:=-1;
+ end;
+ end;*/