From 816e53c1f87365cb351fe3dbdf4a8636954d1773 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 23 Dec 2011 19:02:50 +0000 Subject: MORTEVIELLE: Initial ptoc output --- engines/mortevielle/actions.h | 1372 +++++++++++++++++++++++++++++++++++++ engines/mortevielle/alert.h | 214 ++++++ engines/mortevielle/boite.h | 30 + engines/mortevielle/disk.h | 80 +++ engines/mortevielle/droite.h | 35 + engines/mortevielle/keyboard.h | 59 ++ engines/mortevielle/level15.h | 186 +++++ engines/mortevielle/menu.h | 306 +++++++++ engines/mortevielle/mor.h | 1457 ++++++++++++++++++++++++++++++++++++++++ engines/mortevielle/mor2.h | 764 +++++++++++++++++++++ engines/mortevielle/mort.cpp | 124 ++++ engines/mortevielle/mouse.h | 469 +++++++++++++ engines/mortevielle/outtext.h | 205 ++++++ engines/mortevielle/ovd1.h | 347 ++++++++++ engines/mortevielle/parole.h | 432 ++++++++++++ engines/mortevielle/parole2.h | 103 +++ engines/mortevielle/prog.h | 346 ++++++++++ engines/mortevielle/ques.h | 121 ++++ engines/mortevielle/sprint.h | 55 ++ engines/mortevielle/taffich.h | 216 ++++++ engines/mortevielle/var_mor.h | 485 +++++++++++++ 21 files changed, 7406 insertions(+) create mode 100644 engines/mortevielle/actions.h create mode 100644 engines/mortevielle/alert.h create mode 100644 engines/mortevielle/boite.h create mode 100644 engines/mortevielle/disk.h create mode 100644 engines/mortevielle/droite.h create mode 100644 engines/mortevielle/keyboard.h create mode 100644 engines/mortevielle/level15.h create mode 100644 engines/mortevielle/menu.h create mode 100644 engines/mortevielle/mor.h create mode 100644 engines/mortevielle/mor2.h create mode 100644 engines/mortevielle/mort.cpp create mode 100644 engines/mortevielle/mouse.h create mode 100644 engines/mortevielle/outtext.h create mode 100644 engines/mortevielle/ovd1.h create mode 100644 engines/mortevielle/parole.h create mode 100644 engines/mortevielle/parole2.h create mode 100644 engines/mortevielle/prog.h create mode 100644 engines/mortevielle/ques.h create mode 100644 engines/mortevielle/sprint.h create mode 100644 engines/mortevielle/taffich.h create mode 100644 engines/mortevielle/var_mor.h diff --git a/engines/mortevielle/actions.h b/engines/mortevielle/actions.h new file mode 100644 index 0000000000..fd4ae2e0b6 --- /dev/null +++ b/engines/mortevielle/actions.h @@ -0,0 +1,1372 @@ +/* NIVEAU 4 */ +const char stouinon[] = "[2][ ][OUI][NON]"; + +/* overlay */ void taller() + +{ + integer mx,cx,cy; + + if ((s.mlieu== 26) && (msg[4]== depl[6])) + { + s.mlieu= 15; + caff= s.mlieu; + afdes(0); + repon(2,s.mlieu); + } + if ((s.mlieu== 15) && (msg[4]== depl[6])) + { + if (! syn) ecr3("aller"); + tfleche(); + if (iesc) okdes= false; + if ((anyone) || (iesc)) return; + tcoord(1); + if (num== 0) return; + if (num== 1) + { + s.mlieu= 0; + tmlieu(0); + } + else + if (num== 7) + { + s.mlieu= 13; + tmlieu(13); + } + else + if (num!= 6) s.mlieu= 26; + if ((num> 1) && (num< 6)) ment= num- 1; + if (num> 7) ment= num- 3; + if (num!= 6) affrep(); else aldepl(); + return; + } + tsort(); + cx= 0; + do { + cx= cx+ 1; + } while (!(depl[cx]== msg[4])); + if (s.mlieu== 19) + { + if (cx== 1) t1deva(); + if (cx== 2) t1neig(); + goto L2; + } + if (s.mlieu== 23) + { + if (cx== 1) t1deau(); + if (cx== 2) t1derr(); + goto L2; + } + if ((s.mlieu== 11) && (cx== 1)) cx= 6; + if (s.mlieu== 12) + { + if (cx== 2) cx= 6; + if (cx== 5) cx= 16; + } + if ((s.mlieu== 14) && (cx== 3)) cx= 6; + if (((s.mlieu== 15) || (s.mlieu== 26)) && (cx== 4)) cx= 6; + if ((s.mlieu> 19) && (s.mlieu!= 26)) cx= cx+ 10; + if ((s.mlieu== 20) && (cx== 13)) cx= 16; + if (s.mlieu== 21) + { + if (cx== 12) cx= 16; else + if (cx> 13) cx= 15; + } + if ((s.mlieu== 22) && (cx> 14)) cx= 15; + if ((s.mlieu== 24) && (cx!= 17)) + if (cx> 13) cx= 15; + if (cx== 1) s.mlieu= 11; else + if (cx== 2) s.mlieu= 12; else + if (cx== 3) s.mlieu= 14; else + if (cx== 4) s.mlieu= 15; else + if (cx== 5) cx= 12; + if (cx== 6) cx= 11; + if (cx== 11) t1sama(); else + if (cx== 12) t1deva(); else + if (cx== 13) s.mlieu= 20; else + if (cx== 14) s.mlieu= 24; else + if (cx== 15) t1neig(); else + if (cx== 16) t1derr(); else + if (cx== 17) + { + if ((s.ipuit!= 120) && (s.ipuit!= 140)) crep= 997; else + if (s.ipuit== 120) crep= 181; else + if (s.conf> 80) + { + crep= 1505; + tperd(); + } + else + { + s.mlieu= 23; + affrep(); + } + } + if ((cx< 5) || (cx== 13) || (cx== 14)) affrep(); + debloc(s.mlieu); +L2: + tmlieu(s.mlieu); +} + +/* overlay */ void tprendre() +{ + integer cx, cy, cz; + + if (caff> 99) + { + cx= caff; + avpoing(cx); + if (crep!= 139) + { + if (ipers> 0) s.conf= s.conf+ 3; + if (obpart) + { + if (s.mlieu== 2) s.iloic= 0; + if (s.mlieu== 13) + { + if (s.iboul== caff) s.iboul= 0; + if (s.ibag== caff) s.ibag= 0; + } + if (s.mlieu== 14) s.icave= 0; + if (s.mlieu== 16) s.icryp= 0; + if (s.mlieu== 17) s.ivier= 0; + if (s.mlieu== 24) s.ipuit= 0; + mfouen(); + obpart= false; + affrep(); + } + else + { + tabdon[acha+ (pred(integer,mchai)* 10)+ pred(integer,cs)]=0; + tsuiv(); + dobj= dobj+ 1; + if (dobj> 6) + { + s.conf= s.conf+ 2; + dobj= 0; + } + } + } + return; + } + if (! syn) ecr3("prendre"); + tfleche(); + if ((anyone) || (iesc)) return; + if (caff== 3) + { + tcoord(2); + if (num== 1) + { + crep= 152; + return; + } + } + tcoord(5); + if ((num== 0) || ((num== 1) && (s.mlieu== 16))) + { + tcoord(8); + if (num!= 0) + { + if (ipers> 0) s.conf= s.conf+ 3; + crep= 997; + if ((s.mlieu== 2) && (s.iloic!= 0)) avpoing(s.iloic); + if ((s.mlieu==13) && (num==1) && (s.iboul!=0)) + { + avpoing(s.iboul); + if ((crep!= 997) && (crep!= 139)) aniof(2,7); + } + if ((s.mlieu==13) && (num==2) && (s.ibag!=0)) + { + avpoing(s.ibag); + if ((crep!= 997) && (crep!= 139)) aniof(2,6); + } + if ((s.mlieu== 14) && (s.icave!= 0)) + { + avpoing(s.icave); + if ((crep!= 997) && (crep!= 139)) aniof(2,2); + } + if ((s.mlieu== 16) && (s.icryp!= 0)) avpoing(s.icryp); + if ((s.mlieu== 17) && (s.ivier!= 0)) + { + avpoing(s.ivier); + if ((crep!= 997) && (crep!= 139)) + { + crep= 182; + aniof(2,1); + } + } + if ((s.mlieu== 24) && (s.ipuit!= 0)) + { + avpoing(s.ipuit); + if ((crep!= 997) && (crep!= 139)) aniof(2,1); + } + if ((crep!= 997) && (crep!= 182) && (crep!= 139)) crep= 999; + } + } + else + { + if (((s.mlieu== 0) && (num== 3)) || ((s.mlieu== 1) && (num== 4)) + || ((s.mlieu== 2) && (num== 1)) || ((s.mlieu== 4) && (num== 3)) + || ((s.mlieu== 5) && (num== 6)) || ((s.mlieu== 6) && (num== 2)) + || ((s.mlieu== 7) && (num== 6)) || ((s.mlieu== 8) && (num== 4)) + || ((s.mlieu== 9) && (num== 4)) || ((s.mlieu== 10) && (num> 2)) + || ((s.mlieu== 11) && (num== 7)) || ((s.mlieu== 12) && (num== 6)) + || ((s.mlieu== 13) && (num> 4)) || ((s.mlieu> 13) + && (s.mlieu!= 23))) crep= 997; else + { + if (s.mlieu== 23) + { + crep= 1504; + tperd(); + } + else crep= 120; + } + } +} + +/* overlay */ void tsprendre() +{ + integer cx,cy,cz; + + cx= 0; + do { + cx= cx+ 1; + } while (!(invt[cx]== msg[4])); + cz= 0; + cy= 0; + do { + cy= cy+ 1; + if (ord(s.sjer[cy])!= 0) cz= cz+ 1; + } while (!(cz== cx)); + cz= ord(s.sjer[cy]); + s.sjer[cy]= chr(0); + modinv(); + avpoing(cz); + crep= 998; + clsf2(); +} + +/* overlay */ void tsoulever() + +{ + integer cx; + + if (! syn) ecr3("soulever"); + tfleche(); + if ((anyone) || (iesc)) return; + tcoord(3); + if (num== 0) + { + tcoord(8); + if (num!= 0) + { + if (ipers> 0) s.conf= s.conf+ 1; + crep= 997; + if ((s.mlieu== 2) && (s.iloic!= 0)) treg(s.iloic); + } + return; + } + if (ipers> 0) s.conf= s.conf+ 1; + cx= s.mlieu; + if (s.mlieu== 16) cx= 14; + if (s.mlieu== 19) cx= 15; + crep= tabdon[asoul+(cx << 3)+pred(integer,num)]; + if (crep== 255) crep= 997; +} + +/* overlay */ void tlire() +{ + integer iaff; + + if (caff> 99) st4(caff); else + { + if (! syn) ecr3("lire"); + tfleche(); + if (! (anyone) && ! (iesc)) + { + tcoord(4); + if (num!= 0) crep= 107; + } + } +} + +/* overlay */ void tslire() +{ + if (s.derobj== 0) crep= 186; else st4(s.derobj); +} + +/* overlay */ void tregarder() +{ + integer cx; + + if (caff> 99) + { + crep= 103; + return; + } + if (! syn) ecr3("regarder"); + tfleche(); + if ((anyone) || (iesc)) return; + tcoord(5); + if (num== 0) + { + tcoord(8); + crep= 131; + if (num!= 0) + { + if (s.mlieu== 13) + { + if (num== 1) + { + crep= 164; + if (s.ibag!= 0) treg(s.ibag); else + if (s.iboul!= 0) treg(s.iboul); + } + else + { + crep= 193; + if (s.ibag!= 0) treg(s.ibag); + } + } + if (s.mlieu== 14) + { + crep= 164; + if (s.icave!= 0) treg(s.icave); + } + if (s.mlieu== 17) + { + crep= 174; + if (s.ivier!= 0) treg(s.ivier); + } + if (s.mlieu== 24) + { + crep= 131; + if (s.ipuit!= 0) treg(s.ipuit); + } + } + return; + } + cx= s.mlieu; + if (s.mlieu== 20) cx= 17; + if ((s.mlieu> 21) && (s.mlieu< 25)) cx= cx- 4; + if (s.mlieu== 26) cx= 21; + crep= tabdon[arega+(cx*7)+pred(integer,num)]; + if ((s.mlieu== 13) && (num== 8)) crep= 126; + if (s.mlieu== 19) crep= 103; + if (crep== 255) crep= 131; + if ((s.mlieu== 1) && (num== 1)) treg(144); + if ((s.mlieu== 5) && (num== 3)) treg(147); + if ((s.mlieu== 8) && (num== 3)) treg(149); + if ((s.mlieu== 9) && (num== 2)) treg(30); + if ((s.mlieu== 10) && (num== 3)) treg(31); +} + +/* overlay */ void tsregarder() +{ + if (s.derobj!= 0) treg(s.derobj); else crep= 186; +} + +/* overlay */ void tfouiller() +{ + const array<0,13,byte> r = {{123,104,123,131,131,123,104,131,123,123,106,123,123,107}}; + integer cx; + + if (caff> 99) + { + st7(caff); + return; + } + if (! syn) ecr3("fouiller"); + tfleche(); + if (anyone || iesc) return; + if (s.mlieu==23) + { + crep= 1504; + tperd(); + return; + } + tcoord(6); + if (num== 0) + { + tcoord(7); + if (num!=0) + { + cx=0; + do { + cx=cx+1; + } while (!((cx>6) || (num== ord(touv[cx])))); + if (num!=ord(touv[cx])) crep=187; else + { + if (ipers>0) s.conf= s.conf+3; + rechai(mchai); + if (mchai!=0) + { + cs=0; + is=0; + fouil=true; + mfoudi(); + tsuiv(); + } + else crep=997; + } + } + else + { + tcoord(8); + crep= 997; + if (num!=0) + { + if (ipers>0) s.conf=s.conf+3; + if ((s.mlieu!=24) && (s.mlieu!=17) && (s.mlieu!=13)) + { + if (s.mlieu==2) + { + crep= 123; + if (s.iloic!=0) treg(s.iloic); + } + if (s.mlieu==16) + { + crep= 123; + if (s.icryp!=0) treg(s.icryp); + } + } + } + } + } + else + { + if (ipers>0) s.conf=s.conf+ 3; + crep= 997; + if (s.mlieu < 14) crep= r[s.mlieu]; + if ((s.mlieu== 3) && (num== 2)) crep=162; + if (s.mlieu== 12) + { + if ((num== 3) || (num== 4)) crep=162; + if (num== 5) crep= 159; + } + if (s.mlieu==19) crep=104; + if (s.mlieu==16) crep=155; + } +} + +/* overlay */ void tsfouiller() +{ + if (s.derobj!=0) st7(s.derobj); else crep= 186; +} + +/* overlay */ void touvrir() +{ + integer cx,haz; + + if (! syn) ecr3("ouvrir"); + if (caff== 26) + { + if (ment!= 0) + { + msg[4]= entrer; + syn= true; + } + else crep= 997; + return; + } + if (caff== 15) + { + aldepl(); + return; + } + tfleche(); + if ((anyone) || (iesc)) return; + tcoord(7); + if (num!= 0) + { + if (ipers> 0) s.conf= s.conf+ 2; + iouv= iouv+ 1; + cx= 0; + do { + cx= cx+ 1; + } while (!((cx> 6) || (ord(touv[cx])== 0) || (ord(touv[cx])== num))); + if (ord(touv[cx])!= num) + { + if (! + ( + ( (num== 3) && ((s.mlieu== 0) || (s.mlieu== 9) || (s.mlieu== 5) || (s.mlieu== 7)) ) + || + ((num== 4) && ((s.mlieu== 1) || (s.mlieu== 2) || (s.mlieu== 6))) || + ((s.mlieu== 4) && (num== 5)) || + ((num== 6) && ((s.mlieu== 7) || (s.mlieu== 10) || + (s.mlieu== 8) || (s.mlieu== 13))) || + ((s.mlieu== 8) && (num== 2)) || + ((s.mlieu== 12) && (num== 7)))) + { + if (((s.mlieu> 10) && (s.mlieu< 14)) || + ((s.mlieu> 6) && (s.mlieu< 10)) || + (s.mlieu== 0) || (s.mlieu== 2) || (s.mlieu== 5)) + { + haz= hazard(1, 4); + if (haz== 3) parole(7, 9, 1); + } + touv[cx]= chr(num); + aniof(1,num); + } + cx= s.mlieu; + if (s.mlieu== 16) cx= 14; + crep= tabdon[aouvr+ (cx* 7)+ pred(integer,num)]; + if (crep== 254) crep= 999; + } + else crep= 18; + } +} + +/* overlay */ void tmettre() +{ + integer quel; + boolean entre; + phrase st; + str255 str_; + integer i,tay; + + if (s.derobj== 0) + { + crep= 186; + return; + } + if (! syn) ecr3("mettre"); + tfleche(); + if (iesc) crep= 998; + if ((anyone) || (iesc)) return; + tcoord(8); + if (num!= 0) + { + crep= 999; + if (caff== 13) + { + if (num== 1) + { + if (s.iboul!= 0) crep= 188; else + { + s.iboul= s.derobj; + if (s.derobj== 141) aniof(1,7); + } + } + else + if (s.ibag!= 0) crep= 188; else + { + s.ibag= s.derobj; + if (s.derobj== 159) aniof(1,6); + } + } + if (caff== 14) + if (s.icave!=0) crep= 188; else + { + s.icave= s.derobj; + if (s.derobj== 151) + { + aniof(1,2); + aniof(1,1); + repon(2,165); + maivid(); + parole(6, -9, 1); + quel= do_alert(stouinon,1); + if (quel==1) { + deline(582,st,tay); + i= do_alert(delig,1); + tesok=false; + entre= ques(); + hide_mouse(); + hirs(); + dessine_rouleau(); + clsf2(); + clsf3(); + show_mouse(); + tinke(); + pendule(); + if (ipers!=0) affper(ipers); + else person(); + menu_aff(); + if (entre) + { + s.mlieu= 17; + tmlieu(17); + } + else + { + tmlieu(s.mlieu); + writepal(14); + dessin(0); + aniof(1,2); + aniof(1,1); + deline(577,st,tay); + i= do_alert(delig,1); + aniof(2,1); + crep= 166; + } + affrep(); + } + else { + aniof(2,1); + crep= 166; + tesok=true; + } + return; + } + } + if (caff== 16) + if (s.icryp== 0) s.icryp= s.derobj; else crep= 188; + if (caff== 17) + if (s.ivier!=0) crep= 188; else + if (s.derobj== 143) + { + s.ivier= 143; + aniof(1,1); + } + else + { + crep= 1512; + tperd(); + } + if (caff== 24) + if (s.ipuit!= 0) crep= 188; else + if ((s.derobj== 140) || (s.derobj== 120)) + { + s.ipuit= s.derobj; + aniof(1,1); + } + else crep= 185; + if (crep!= 188) maivid(); + } +} + +/* overlay */ void ttourner() +{ + integer quel; + + if (caff> 99) + { + crep= 149; + return; + } + if (! syn) ecr3("tourner"); + tfleche(); + if ((anyone) || (iesc)) return; + tcoord(9); + if (num!= 0) + { + crep= 997; + if ((s.mlieu== 13) && (s.ibag== 159) && (s.iboul== 141)) + { + repon(2,167); + parole(7, 9, 1); + quel= do_alert(stouinon,1); + if (quel== 1) solu= true; else crep= 168; + } + if ((s.mlieu== 17) && (s.ivier== 143)) + { + repon(2, 175); + clsf3(); + parole(6, -9, 1); + quel= do_alert(stouinon,1); + if (quel== 1) + { + s.mlieu= 16; + affrep(); + } + else crep= 176; + } + } +} + +/* overlay */ void tcacher() +{ + if (! syn) ecr3("se cacher"); + tfleche(); + if (! (anyone) && ! (iesc)) + { + tcoord(10); + if (num== 0) cache= false; else + { + cache= true; + crep= 999; + } + } +} + +/* overlay */ void tattacher() +{ + if (s.derobj== 0) crep= 186; else + { + if (! syn) ecr3("attacher"); + tfleche(); + if (! (anyone) && ! (iesc)) + { + tcoord(8); + crep= 997; + if ((num!= 0) && (s.mlieu== 24)) + { + crep= 999; + if ((s.derobj== 120) || (s.derobj== 140)) + { + s.ipuit= s.derobj; + aniof(1,1); + } + else crep= 185; + maivid(); + } + } + } +} + +/* overlay */ void tfermer() +{ + integer cx,chai; + + if (! syn) ecr3("fermer"); + if (caff< 26) + { + tfleche(); + if (iesc) crep= 998; + if ((anyone) || (iesc)) return; + tcoord(7); + if (num!= 0) + { + cx= 0; + do { + cx= cx+ 1; + } while (!((cx> 6) || (num== ord(touv[cx])))); + if (num== ord(touv[cx])) + { + aniof(2,num); + crep= 998; + touv[cx]= chr(0); + iouv= iouv- 1; + if (iouv< 0) iouv= 0; + chai= 9999; + rechai(chai); + if (mchai== chai) mchai= 0; + } + else crep= 187; + } + } + if (caff== 26) crep= 999; +} + +/* overlay */ void tfrapper() +{ + integer l,p,haz; + + if (! syn) ecr3("frapper"); + if (s.mlieu== 15) + { + l= do_alert("[1][ | Avant, utilisez le menu DEP...][ok]",1); + return; + } + if (s.mlieu< 25) + { + tfleche(); + if (! (anyone) && ! (iesc)) + if ((s.mlieu< 19) && (s.mlieu!= 15)) crep= 133; else crep= 997; + return; + } + if (s.mlieu== 26) + { + haz= (hazard(0, 8))- 4; + parole(11, haz, 1); + ecfren(p,haz,s.conf,ment); + l= ment; + if (l!= 0) + if (p!= -500) + { + if (haz> p) crep= 190; else + { + becfren(l); + frap(); + } + } + else frap(); + if (ment== 8) crep= 190; + } +} + +/* overlay */ void tposer() +{ + integer cx,chai; + + if (! syn) ecr3("poser"); + if (s.derobj== 0) crep= 186; else + { + if (caff> 99) + { + crep= 999; + ajchai(); + if (crep!= 192) maivid(); + return; + } + tfleche(); + if ((anyone) || (iesc)) return; + tcoord(7); + crep= 124; + if (num!= 0) + { + rechai(chai); + if (chai== 0) crep= 997; else + { + cx= 0; + do { + cx= cx+ 1; + } while (!((cx> 6) || (num== ord(touv[cx])))); + if (num!= ord(touv[cx])) crep= 187; else + { + mchai= chai; + crep= 999; + } + } + } + else + { + tcoord(8); + if (num!= 0) + { + crep= 998; + if (caff== 2) + if (s.iloic!= 0) crep= 188; else s.iloic= s.derobj; + if (caff== 13) + { + if (num== 1) + { + if (s.iboul!= 0) crep= 188; else s.iboul= s.derobj; + } + else + if (s.ibag!= 0) crep= 188; else s.ibag= s.derobj; + } + if (caff== 16) + if (s.icryp!= 0) crep= 188; else s.icryp= s.derobj; + if (caff== 24) crep= 185; + if ((caff== 14) || (caff== 17)) crep= 124; + } + else + { + crep= 124; + if (caff== 24) + { + tcoord(5); + if (num!= 0) crep= 185; + } + } + } + if (caff== 23) crep= 185; + if ((crep== 999) || (crep== 185) || (crep== 998)) + { + if (crep== 999) ajchai(); + if (crep!= 192) maivid(); + } + } +} + +/* overlay */ void tecouter() +{ + integer l,p,haz,j,h,m; + + if (s.mlieu!= 26) crep= 101; else + { + if (ipers!= 0) s.conf= s.conf+ 1; + ecfren(p,haz,s.conf,ment); + l= ment; + if (l!= 0) + if (p!= -500) + { + if (haz> p) crep= 101; else + { + becfren(l); + calch(j,h,m); + haz= hazard(1,100); + if ((h>= 0) && (h< 8)) + { + if (haz> 30) crep= 101; else crep= 178; + } + else + if (haz> 70) crep= 101; else crep= 178; + } + } + else crep= 178; + } +} + +/* overlay */ void tmanger() +{ + integer j,h,m; + + if ((s.mlieu> 15) && (s.mlieu< 26)) + crep= 148; + else + { + tsort(); + s.mlieu= 10; + caff= 10; + debloc(s.mlieu); + tmlieu(s.mlieu); + calch(j,h,m); + if ((h== 12) || (h== 13) || (h== 19)) + { + s.conf= s.conf- (s.conf / 7); + if (h== 12) + if (m== 0) h= 4; else h= 3; + if ((h== 13) || (h== 19)) + if (m== 0) h= 2; else h= 1; + jh= jh+ h; + crep= 135; + tinke(); + } + else crep= 134; + } +} + +/* overlay */ void tentrer() +{ + integer x, z; + + if ((s.mlieu== 21) || (s.mlieu== 22)) + { + t1sama(); + tmlieu(s.mlieu); + } + else + if (s.mlieu== 15) aldepl(); else + if (ment== 0) crep= 997; else + { + if ((ment== 9) && (s.derobj!= 136)) + { + crep= 189; + s.teauto[8]= '*'; + } + else + { + if (! blo) t11(ment, z); + if (z!= 0) + { + if ((ment== 3) || (ment== 7)) crep= 179; else + { + x= (hazard(0, 10))- 5; + parole(7, x, 1); + aniof(1,1); +/* tkey(5,32000);*/ + tip(z,x); + s.conf= s.conf+ 1; + s.mlieu= 15; + msg[3]= discut; + msg[4]= disc[x]; + syn= true; + if (ment== 9) + { + col= true; + caff= 70; + afdes(0); + repon(2,caff); + } + else col= false; + debloc(ment); + ment= 0; + } + } + else + { + x= (hazard(0, 10))- 5; + parole(7, x, 1); + aniof(1,1); +/* tkey(1,32000);*/ + s.mlieu= ment; + affrep(); + debloc(s.mlieu); + tmlieu(s.mlieu); + ment= 0; + mpers= 0; + ipers= 0; + } + } + } +} + +/* overlay */ void tdormir() +{ + const char m1[] = "D‚sirez-vous vous r‚veiller?"; + integer z,j,h,m,quel; + + if ((s.mlieu> 15) && (s.mlieu< 26)) + { + crep= 148; + return; + } + if (s.mlieu != 0) + { + tsort(); + s.mlieu= 0; + affrep(); + afdes(0); + debloc(s.mlieu); + tmlieu(s.mlieu); + } + clsf3(); + clsf2(); + ecrf2(); + ecr2(m1); + calch(j,h,m); + do { + if (h< 8) + { + s.conf= s.conf- (s.conf / 20); + z= (7- h)* 2; + if (m== 30) z= z- 1; + jh= jh+ z; + h= 7; + } + jh= jh+ 2; + h= h+ 1; + if (h> 23) h= 0; + tinke(); + quel= do_alert(stouinon,1); + anyone= false; + } while (!(quel== 1)); + crep= 998; + num= 0; +} + +/* overlay */ void tdefoncer() +{ + if (! syn) ecr3("d‚foncer"); + if (caff< 25) tfleche(); + if ((! anyone) && (! iesc)) + if (s.mlieu!= 26) crep= 997; else + { + crep= 143; + s.conf= s.conf+ 2; + } +} + +/* overlay */ void tsortir() +{ + integer lx; + + tsort(); + crep= 0; + if ((s.mlieu== 19) || (s.mlieu== 21) || (s.mlieu== 22) + || (s.mlieu== 24)) crep= 997; else + { + if ((s.mlieu< 16) || (s.mlieu== 26)) lx= 10; + if ((s.mlieu== 10) || (s.mlieu== 20)) lx= 21; + if ((s.mlieu< 10) || (s.mlieu== 13)) lx= 15; + if (s.mlieu== 16) + { + lx= 17; + crep= 176; + } + if (s.mlieu== 17) t23coul(lx); + if (s.mlieu== 23) lx= 24; + if (crep!= 997) s.mlieu= lx; + caff= lx; + if (crep== 0) crep= lx; + debloc(lx); + tmlieu(lx); + } +} + +/* overlay */ void tattendre() +{ + integer quel; + + mpers= 0; + clsf3(); + do { + jh= jh+ 1; + tinke(); + if (! blo) t11(s.mlieu, quel); + if ((ipers!= 0) && (mpers== 0)) + { + crep= 998; + if ((s.mlieu== 13) || (s.mlieu== 14)) cavegre(); + if ((s.mlieu> 0) && (s.mlieu< 10)) anyone= true; + mpers= ipers; + if (! anyone) tinke(); + return; + } + repon(2,102); + quel= do_alert(stouinon,1); + } while (!(quel== 2)); + crep= 998; + if (! anyone) tinke(); +} + +/* overlay */ void tsonder() +{ + if (! syn) ecr3("sonder"); + if (caff< 27) + { + tfleche(); + if (! (anyone) && (! iesc)) crep= 145; + num= 0; + } +} + +/* overlay */ void tparler() + +{ + array<1,46,boolean> te; + integer ix, cy, cx, max, haz, suj, co,lig,icm, + i, tay, choi, x, y, c; + char tou; + array<1,46,varying_string<40> > lib; + phrase st; + boolean f; + + + + finfouil(); + if (col) suj= 128; else + { + cx= 0; + do { + cx= cx+ 1; + } while (!(disc[cx]== msg[4])); + caff= 69+ cx; + afdes(0); + repon(2,caff); + suj= caff+ 60; + } + tkey1(false); + mennor(); + hide_mouse(); + hirs(); + premtet(); + sparl(0,suj); + hirs(); + for( ix= 1; ix <= 46; ix ++) te[ix]= false; + for( ix=1; ix <= 45; ix ++) + { + deline(ix+c_tparler,st,tay); + lib[ix]= delig; + for( i=tay; i <= 40; i ++) lib[ix]=lib[ix]+' '; + } + lib[46]=lib[45]; + lib[45]=' '; + show_mouse(); + do { + choi= 0; + icm= 0; + co= 0; + lig= 0; + do { + icm= succ(integer, icm ); + putxy(co,lig); + if (s.teauto[icm]=='*') + if (te[icm]) writetp(lib[icm],1); + else writetp(lib[icm],0); + if (icm==23) { + lig= 0; + co= 320; + } + else lig= lig + 8; + } while (!(icm==42)); + putxy(320,176); + writetp(lib[46],0); + tou= '\0'; + do { + mov_mouse(f,tou); +/* if keypressed then read(kbd,tou);*/ + read_pos_mouse(x,y,c); + x= x *(3-res); + if (x>319) cx= 41; else cx= 1; + cy= succ(integer,(cardinal)y >> 3); /* 0-199 => 1-25 */ + if ((cy>23) || ((cx==41) && (set::of(range(20,22), eos).has(cy)))) + { + if (choi!=0) + { + lig= ((choi-1) % 23) << 3; + if (choi>23) co= 320; else co= 0; + putxy(co,lig); + if (te[choi]) writetp(lib[choi],0); + else writetp(lib[choi],1); + te[choi]= ! te[choi]; + choi= 0; + } + } + else { + ix= cy; + if (cx==41) ix= ix+23; + if (ix!=choi) + { + if (choi!=0) + { + lig= ((choi-1) % 23) << 3; + if (choi>23) co= 320; else co= 0; + putxy(co,lig); + if (te[choi]) writetp(lib[choi],0); + else writetp(lib[choi],1); + te[choi]= ! te[choi]; + } + if ((s.teauto[ix]=='*') || (ix==46)) + { + lig= ((ix-1) % 23) << 3; + if (ix>23) co= 320; else co= 0; + putxy(co,lig); + if (te[ix]) writetp(lib[ix],0); + else writetp(lib[ix],1); + te[ix]= ! te[ix]; + choi= ix; + } + else choi= 0; + } + } + } while (!((tou=='\15') || ( ((c!=0) || clic) && (choi!=0)))); + clic=false; + if (choi!=46) + { + ix= choi-1; + if (col) + { + col= false; + s.mlieu= 15; + if (iouv> 0) max= 8; else max= 4; + haz= hazard(1,max); + if (haz== 2) suj= 129; else + { + suj= 138; + s.conf= s.conf+ (3* (s.conf / 10)); + } + } + else + if (nbrep[caff- 69]< nbrepm[caff- 69]) + { + suj= tabdon[arep+ (ix << 3)+ (caff- 70)]; + s.conf= s.conf+ tabdon[arcf+ ix]; + nbrep[caff- 69]= nbrep[caff- 69]+ 1; + } + else + { + s.conf= s.conf+ 3; + suj= 139; + } + hide_mouse(); + hirs(); + premtet(); + sparl(0, suj); + show_mouse(); + if ((suj== 84) || (suj== 86)) + { + s.pourc[5]= '*'; + s.teauto[7]= '*'; + } + if ((suj== 106) || (suj== 108) || (suj== 94)) + { + for( ix= 29; ix <= 31; ix ++) s.teauto[ix]= '*'; + s.pourc[7]= '*'; + } + if (suj== 70) + { + s.pourc[8]= '*'; + s.teauto[32]= '*'; + } + hide_mouse(); + hirs(); + show_mouse(); + } + } while (!((choi== 46) || (suj== 138))); + if (col) + { + s.conf= s.conf+ (3* (s.conf / 10)); + hide_mouse(); + hirs(); + premtet(); + sparl(0, 138); + show_mouse(); + col= false; + s.mlieu= 15; + } + ctrm= 0; + hide_mouse(); + hirs(); + dessine_rouleau(); + show_mouse(); + affper(ipers); + tinke(); + pendule(); + affrep(); +/* chech;*/ + tmlieu(s.mlieu); + clsf3(); +} + +/* overlay */ void tsentir() +{ + crep= 119; + if (caff< 26) + { + if (! syn) ecr3("sentir"); + tfleche(); + if (! (anyone) && ! (iesc)) + if (caff== 16) crep= 153; + } + else + if (caff== 123) crep= 110; + num= 0; +} + +/* overlay */ void tgratter() +{ + crep= 155; + if (caff< 27) + { + if (! syn) ecr3("gratter"); + tfleche(); + } + num= 0; +} + +/* NIVEAU 2 */ +/* overlay */ void tmaj1() /* Le jeu est termin‚ !!! */ +{ + arret= true; + tlu(13,152); + maivid(); + clsf1(); + clsf2(); + clsf3(); + repon(9,1509); + tkey1(false); + hide_mouse(); + caff= 70; + taffich(); + hirs(); + premtet(); + sparl(0,141); + show_mouse(); + clsf1(); + repon(9,1509); + repon(2,142); + tkey1(false); + caff= 32; + afdes(0); + repon(6,34); + repon(2,35); + musique(0); + tkey1(false); + messint(2036); + tkey1(false); + inzon(); +} + +/* overlay */ void tencore() /* Perdu !!! */ +{ + integer quel; + + clsf2(); + musique(0); + tkey1(false); + maivid(); + inzon(); + dprog(); + vh= 10; + vm= 0; + vj= 0; + min= 0; + heu= 10; + jou= 0; + repon(2,180); + quel= do_alert(stouinon,1); + arret= (quel!=1); +} diff --git a/engines/mortevielle/alert.h b/engines/mortevielle/alert.h new file mode 100644 index 0000000000..c3a45fe529 --- /dev/null +++ b/engines/mortevielle/alert.h @@ -0,0 +1,214 @@ +/* overlay */ integer do_alert(str255 str_, integer n); + + +const integer nligne = 7; +const matrix<1,2,1,3,integer> coord + = {{ {{150, 72, 103}}, + {{143, 107, 183}} }}; + + + +static void decod(str255 s, integer& nbc,integer& nbl,integer& col, str255& c, str30& cs) + { + integer i,k; + boolean v; + + val(s[2],nbc,i); + c= ""; + nbl= 0; i= 5; k= 0; + v=true; col=0; + + while (s[i]!=']') + { + c=c+s[i]; + if ((s[i]=='|') || (s[i+1]==']')) + { + if (k>col) col=k; + k= 0; + nbl=nbl+1; + } + else if (s[i]!=' ') v=false; + i=i+1; + k=k+1; + } + if (v) { + c=""; + col=20; + } + else { + c=c+']'; + col=col+6; + } + i=i+1; + cs=copy(s,i,30); + if (res==2) col= col*6; + else col= col*10; + } + + + +static void posit(integer ji, integer& coldep, integer& esp) + { + putxy(coldep + (40+esp) *pred(integer,ji),98); + } + + + +static void fait_boite(integer lidep,integer nli,integer tx) + { + integer x,y,xx,yy; + + if (tx>640) tx=640; + x= 320- ((cardinal)tx >> 1); + y=pred(integer,lidep) << 3; + xx=x+ tx; + yy=y + (nli << 3); + box(15,gd,x,y,xx,yy,255); + box(0,gd,x,y+2,xx,y+4,255); + box(0,gd,x,yy-4,xx,yy-2,255); + } + + + +static void fait_choix(str30 c, integer& coldep, integer& nbcase, array<1,2,varying_string<3> >& s, integer& esp) + { + integer i,l,x; + char ch; + + i=1; + x=coldep; + for( l=1; l <= nbcase; l ++) + { + s[l]=""; + do { + i=i+1; + ch=c[i]; + s[l]=s[l]+ch; + } while (!(c[i+1]==']')); + i=i+2; + while (length(s[l])<3) s[l]=s[l]+' '; + putxy(x,98); + writeg(string(' ')+s[l]+' ',0); + x= x+esp+40; + } + } + + integer do_alert(str255 str_, integer n) +{ + integer coldep,esp,i,l,nbcase,quoi,ix; + str255 st, chaine; + matrix<1,2,1,2,integer> limit; + char c,dumi; + array<1,2,varying_string<3> > s; + integer cx,cy,cd,nbcol,nblig; + boolean touch,newaff,test,test1,test2,test3,dum; + str30 cas; + + + /*debug('** do_alert **');*/ + integer do_alert_result; + hide_mouse(); + while (keypressed()) input >> kbd >> dumi; + clic=false; + decod(str_,nbcase,nblig,nbcol,chaine,cas); + sauvecr(50,succ(integer,nligne) << 4); + + i=0; + if (chaine=="") + { + fait_boite(10,5,nbcol); + } + else + { + fait_boite(8,7,nbcol); + i=0; + ywhere=70; + do { + cx= 320; + st= ""; + while (! (set::of('\174','\135', eos).has(chaine[i+1]))) + { + i=i+1; + st=st+chaine[i]; + if (res==2) cx=cx-3; + else cx=cx-5; + } + putxy(cx,ywhere); + ywhere=ywhere+6; + writeg(st,4); + i=i+1; + } while (!(chaine[i]==']')); + } + if (nbcase==1) esp= nbcol- 40; + else esp= (cardinal)(nbcol-nbcase*40) >> 1; + coldep=320-((cardinal)nbcol >> 1)+((cardinal)esp >> 1); + fait_choix(cas, coldep, nbcase, s, esp); + limit[1][1]=((cardinal)(coldep) >> 1)*res; + limit[1][2]=limit[1][1]+40; + if (nbcase==1) + { + limit[2][1]=limit[2][2]; + } + else + { + limit[2][1]=((cardinal)(320+((cardinal)esp >> 1)) >> 1)*res; + limit[2][2]=(limit[2][1])+40; + } + show_mouse(); + quoi=0; + dum=false; + do { + dumi='\377'; + mov_mouse(dum,dumi); + cx= x_s; + cy= y_s; + test=(cy>95) && (cy<105); + newaff=false; + if (test) + { + test1=(cx>limit[1][1]) && (cx1) test2= test1 || ((cx>limit[2][1]) && (cx95) && (cy<105) && (((cx>limit[1][1]) && (cxlimit[2][1]) && (cx> 1; + dx= (cardinal)dx >> 1; + } + xi=x; yi=y; xo=x; yo=y; + for( i=0; i <= dx+dy; i ++) + { + putpix(gd,xi,yi,coul); + if (xi==x+dx) { + if (gd!=cga) putpix(gd,pred(integer,xi),yi,coul); + yi=succ(integer,yi); + } + else xi=succ(integer,xi); + putpix(gd,xo,yo,coul); + if (yo==y+dy) xo=succ(integer,xo); + else { + if (gd!=cga) putpix(gd,succ(integer,xo),yo,coul); + yo=succ(integer,yo); + } + } + show_mouse(); + } diff --git a/engines/mortevielle/disk.h b/engines/mortevielle/disk.h new file mode 100644 index 0000000000..28a2dbe6a5 --- /dev/null +++ b/engines/mortevielle/disk.h @@ -0,0 +1,80 @@ + +void dem1() +{ + untyped_file f; + integer k; + + /* -- demande de disk 1 -- */ + assign(f,"mort.005"); + /*$i-*/ + k=ioresult; + reset(f); + while (ioresult!=0) + { + show_mouse(); + k= do_alert(al_mess,1); + hide_mouse(); + reset(f); + } + close(f); +} + +void takesav(integer n) +{ + untyped_file f; + integer i; + varying_string<10> st; + + dem1(); + /* -- chargement du fichier 'sauve#n.mor' -- */ + st= string("sav")+chr(n+48)+".mor"; + assign(f,st); + reset(f,497); + blockread(f,s1,1); + if (ioresult!=0) + { + i=do_alert(err_mess,1); + exit(0); + } + s=s1; + for( i=0; i <= 389; i ++) tabdon[i+acha]=bufcha[i]; + close(f); +} + +void ld_game(integer n) +{ + hide_mouse(); + maivid(); + takesav(n); + /* -- disquette 2 -- */ + dem2(); + /* -- mises en place -- */ + theure(); + dprog(); + antegame(); + show_mouse(); +} + +void sv_game(integer n) +{ + untyped_file f; + integer i; + + hide_mouse(); + tmaj3(); + dem1(); + /* -- sauvegarde du fichier 'sauve#n.mor' -- */ + for( i=0; i <= 389; i ++) bufcha[i]=tabdon[i+acha]; + s1=s; + if (s1.mlieu== 26) s1.mlieu= 15; + assign(f,string("sav")+chr(n+48)+".mor"); + rewrite(f,497); + blockwrite(f,s1,1); + close(f); + dem2(); + show_mouse(); +} + + + + diff --git a/engines/mortevielle/droite.h b/engines/mortevielle/droite.h new file mode 100644 index 0000000000..7dd029e2ec --- /dev/null +++ b/engines/mortevielle/droite.h @@ -0,0 +1,35 @@ +void droite( integer x, integer y, integer xx, integer yy, integer coul ) + { + integer step,i; + real a,b; + real xr,yr,xro,yro; + + xr=x; yr=y; xro=xx; yro=yy; + /*writeln(le_file,'(',x:4,',',y:4,') ==> (',xx:4,',',yy:4,')');*/ + if (abs(y-yy) > abs(x-xx)) + { + a= (real)((x-xx)) / (y-yy); + b= ( yr*xro - yro*xr) / (y-yy); + i=y; + if (y>yy) step=-1; + else step=1; + do { + putpix(gd, trunc(a*i+b), i, coul); + i=i+step; + } while (!(i==yy)); + /*writeln(le_file,'X == ',a:3:3,' * Y + ',b:3:3);*/ + } + else + { + a= (real)((y-yy)) / (x-xx); + b= ((yro*xr) - (yr*xro)) / (x-xx); + i=x; + if (x>xx) step=-1; + else step=1; + do { + putpix(gd,i, trunc(a*i+b), coul); + i=i+step; + } while (!(i==xx)); + /*writeln(le_file,'Y == ',a:3:3,' * X + ',b:3:3);*/ + } + } \ No newline at end of file diff --git a/engines/mortevielle/keyboard.h b/engines/mortevielle/keyboard.h new file mode 100644 index 0000000000..9f8423a41f --- /dev/null +++ b/engines/mortevielle/keyboard.h @@ -0,0 +1,59 @@ +char readkey1() + { + char c; + + char readkey1_result; + input >> kbd >> c; + readkey1_result= c; + return readkey1_result; + } + +integer testou() + { + char ch; + + integer testou_result; + input >> kbd >> ch; + switch (ch) { + case '\23' : sonoff= ! sonoff; break; + case '\1': + case '\3': + case '\5' : { + newgd= (cardinal)pred(integer,ord(ch)) >> 1; + testou_result= 61; + return testou_result; + } + break; + case '\10' : { + newgd= her; + testou_result= 61; + return testou_result; + } + break; + case '\24' : { + newgd= tan; + testou_result= 61; + return testou_result; + } + break; + case '\26' : if (set::of(1,2, eos).has(c_zzz)) + { + zzuul(adcfiec+161,0,1644); + c_zzz=succ(integer,c_zzz); + testou_result=61; + return testou_result; + } + break; + case '\33' : if (keypressed()) input >> kbd >> ch; break; + } + testou_result=ord(ch); + return testou_result; + } + +void teskbd() + { + integer dum; + + if (keypressed()) dum=testou(); + } + diff --git a/engines/mortevielle/level15.h b/engines/mortevielle/level15.h new file mode 100644 index 0000000000..be92e8dca2 --- /dev/null +++ b/engines/mortevielle/level15.h @@ -0,0 +1,186 @@ + +/* NIVEAU 15 */ +void copcha() +{ + integer i; + + i= acha; + do { + tabdon[i]=tabdon[i+390]; + i=succ(integer,i); + } while (!(i==acha +390)); +} + +boolean dans_rect( rectangle r ) + { + integer x, y, c; + + boolean dans_rect_result; + read_pos_mouse(x,y,c); + if ((x>r.x1) && + (xr.y1) && + (y0x100)) memw[0x7000+0x4138]=0x100; + afff(gd,seg,dep,x,y); + } + +void putxy(integer x,integer y) +{ + xwhere=x; + ywhere=y; +} +/* +function calad(x,y:integer):integer; + begin + calad:=pred(x)+320*pred(y) + end; + */ +void sauvecr(integer y,integer dy) + { + hide_mouse(); + s_sauv(gd,y,dy); + show_mouse(); + } + +void charecr(integer y,integer dy) + { + hide_mouse(); + s_char(gd,y,dy); + show_mouse(); + } +/* +function peek(ad:integer):integer; +begin + peek:=tabdon[ad]; +end; + +function peekw(ad:integer):integer; +begin + peekw:=tabdon[ad] shl 8+tabdon[succ(ad)]; +end; + +function peekl(ad:integer):real; +begin + peekl:=tabdon[ad+3]+tabdon[ad+2] shl 8; +end; + + +procedure poke (ad,n:integer); +begin + tabdon[ad]:=lo(n); +end; + */ + +void adzon() + { + untyped_file f; + file g; + byte a; + integer i; + + assign(f,"don.mor"); + reset(f,256); + blockread(f,tabdon,7); + close(f); + assign(f,"bmor.mor"); + reset(f,1916); + blockread(f,tabdon[fleche],1); + /*i:=fleche; + repeat + read(g,a); + tabdon[i]:=a; + i:=succ(i); + until i=fleche + 1916;*/ + close(f); + assign(f,"dec.mor"); + reset(f,1664); + blockread(f,mem[0x73a2+0],1); + /*i:=0; + repeat + read(g,a); + mem[$73A2:i]:=a; + i:=succ(i); + until eof(g);*/ + close(f); + } + +integer animof (integer ouf,integer num) + { + integer nani, aux; + + integer animof_result; + nani= mem[adani+1]; + aux= num; + if (ouf!=1) aux= aux+nani; + animof_result=(nani << 2) + 2+swap(memw[adani+ (aux << 1)]); + /*aux:= nani shl 2 + 2; + if ouf=1 then aux:= aux+ swap(memw[adani: num shl 1]) + else aux:= aux+ swap(memw[adani: (nani+num) shl 1]); + animof:=aux;*/ + return animof_result; + } + +/*procedure affgd(offs,dep,x,y:integer); +begin + case Gd of + Ams : affams(offs,dep,x,y); + Cga : affcga(offs,dep,x,y); + Ega : affega(offs,dep,x,y); + Her : affher(offs,dep,x,y); + Tan : afftan(offs,dep,x,y); + end; +end;*/ diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h new file mode 100644 index 0000000000..9256182280 --- /dev/null +++ b/engines/mortevielle/menu.h @@ -0,0 +1,306 @@ +/* NIVEAU 14*/ + +/* overlay */ void menut(integer no, str30 nom) + { + byte h,l; + str30 s; + + + /* debug('menut'); */ + h=hi(no); + l=lo(no); + s=nom; + if (! tesok) + { + clrscr; + exit(0); + } + while (length(s)<30) s=s+' '; + switch (h) { + case invent : if (l!=7) inv[l]= string(' ')+s; break; + case depla : dep[l]= s; break; + case action : act[l]= s; break; + case saction : self_[l]= s; break; + case discut : dis[l]= s; break; + } + } + +/* overlay */ void menu_disable(integer no) + { + byte h,l; + + /* debug('menu_disable'); */ + h=hi(no); + l=lo(no); + switch (h) { + case invent : { + if (l>6) { + inv[l][1]='<'; + inv[l][22]='>'; + } + else inv[l][1]='*'; + } + break; + case depla : dep[l][1]='*'; break; + case action : act[l][1]='*'; break; + case saction : self_[l][1]='*'; break; + case discut : dis[l][1]='*'; break; + } + } + +/* overlay */ void menu_enable(integer no) + { + byte h,l; + + /* debug('menu_disable'); */ + h=hi(no); + l=lo(no); + switch (h) { + case invent : { + inv[l][1]=' '; + inv[l][22]=' '; + } + break; + case depla : dep[l][1]=' '; break; + case action : act[l][1]=' '; break; + case saction : { + self_[l][1]=' '; + self_[l][1]=' '; + } + break; + case discut : dis[l][1]=' '; break; + } + } + +void menu_aff() + { + integer ind_tabl,k,col; + char c; + integer pt,x,y,color,msk, + num_letr; + + /* debug('menu_aff'); */ + hide_mouse(); + /*if not tesok then + begin + clrscr; + halt; + end;*/ + box( 7, gd, 0,0, 639,10, 255); + col= 28*res; + if (gd == cga) color=1; + else color=9; + num_letr=0; + do { /* lettre par lettre */ + num_letr= num_letr +1; + ind_tabl=0; + y= 1; + do { /* colonne par colonne */ + k=0; + x= col; + do { /* ligne par ligne */ + msk=0x80; + for( pt=0; pt <= 7; pt ++) + { + if ((lettres[num_letr][ind_tabl] & msk)!=0) + { + putpix(gd,x+1,y+1,0); + putpix(gd,x,y+1,0); + putpix(gd,x,y,color); + } + msk= (cardinal)msk >> 1; + x=x +1; + } + ind_tabl=succ(integer,ind_tabl); + k=succ(integer,k); + } while (!(k==3)); + y=y+1; + } while (!(y==9)); + col=col+48*res; + } while (!(num_letr==6)); + show_mouse(); + } + + +void draw_menu() + { + /* debug('draw_menu'); */ + menu_aff(); + active_menu=true; + msg4=no_choice; + msg3=no_choice; + choisi=false; + clic=false; + test0=false; + } + +void invers(integer ix) + { + varying_string<23> s; + + /* debug('invers'); */ + if (msg4==no_choice) return; + putxy(don[msg3][1] << 3,succ(void,lo(msg4)) << 3); + switch (msg3) { + case 1 : s= inv[lo(msg4)]; break; + case 2 : s= dep[lo(msg4)]; break; + case 3 : s= act[lo(msg4)]; break; + case 4 : s= self_[lo(msg4)]; break; + case 5 : s= dis[lo(msg4)]; break; + case 6 : s= fic[lo(msg4)]; break; + case 7 : s= fic[1]+' '+chr(48+lo(msg4)); break; + case 8 : if (lo(msg4)==1) s=recom; + else s= fic[2]+' '+chr(47+lo(msg4)); + break; + } + if ((s[1]!='*') && (s[1]!='<')) writeg(s,ix); + else msg4=no_choice; + } + +void util(integer x,integer y) + { + integer ymx, dxcar, xmn, xmx, ix; + + /* debug('util'); */ + ymx= (don[msg3][4] << 3)+16; + dxcar= don[msg3][3]; + xmn= (don[msg3][1] << 2)*res; + if (res==1) ix=5; else ix=3; + xmx= dxcar*ix*res+ xmn+ 2; + if ((x>xmn) && (x15)) + { + ix= pred(integer,(cardinal)y >> 3)+ (msg3 << 8); + if (ix!=msg4) + { + invers(1); + msg4=ix; + invers(0); + } + } + else if (msg4!=no_choice) + { + invers(1); + msg4=no_choice; + } + } + +void menu_down( integer ii) + { + integer cx, xcc; + integer xco, nb_lig; + + /* debug('menu_down'); */ + xco=don[ii][1]; + nb_lig= don[ii][4]; + hide_mouse(); + sauvecr(10,succ(byte,don[ii][2]) << 1); + xco= xco << 3; + if (res==1) cx=10; else cx=6; + xcc= xco+ (don[ii][3]*cx)+6; + box(15, gd, xco,12, xcc, 10 + (don[ii][2] << 1), 255); + box(0, gd, xcc, 12, xcc+4, 10 + (don[ii][2] << 1),255); + box(0,gd,xco, 8 + (don[ii][2] << 1), xcc+4, 12 + (don[ii][2] << 1),255); + putxy(xco,16); + cx=0; + do { + cx= succ(integer,cx); + switch (ii) { + case 1 : if (inv[cx][1]!= '*') writeg(inv[cx],4); break; + case 2 : if (dep[cx][1]!= '*') writeg(dep[cx],4); break; + case 3 : if (act[cx][1]!= '*') writeg(act[cx],4); break; + case 4 : if (self_[cx][1]!='*') writeg(self_[cx],4); break; + case 5 : if (dis[cx][1]!= '*') writeg(dis[cx],4); break; + case 6 : writeg(fic[cx],4); break; + case 7 : writeg(fic[1]+' '+chr(48+cx),4); break; + case 8 : if (cx==1) writeg( recom,4); + else writeg(fic[2]+' '+chr(47+cx),4); + break; + } + putxy(xco,ywhere+8); + } while (!(cx==nb_lig)); + test0=true; + show_mouse(); + } + +void menu_up(integer xx) + { + /* debug('menu_up'); */ + if (test0) + { + charecr(10,succ(byte,don[xx][2]) << 1); + test0=false; + } + } + +void erase_menu() + { + /* debug('erase_menu'); */ + active_menu=false; + clic=false; + menu_up(msg3); + } + +void mdn() + { + integer x,y,c,a,ix; + boolean tes; + + /* debug('mdn'); */ + if (! active_menu) return; + x=x_s; y=y_s; + if (! clic) + { + if ((x==xprec) && + (y==yprec)) return; + else { + xprec=x; + yprec=y; + } + tes=(y<11) && ((set::of(range(28*res,28*res+24),range(76*res,76*res+24), eos).has(x)) + || ((x>124*res) && (x<124*res+24)) + || ((x>172*res) && (x<172*res+24)) + || ((x>220*res) && (x<220*res+24)) + || ((x>268*res) && (x<268*res+24))); + if (tes) + { + if (x<76*res) ix=invent; + else if (x<124*res) ix=depla; + else if (x<172*res) ix=action; + else if (x<220*res) ix=saction; + else if (x<268*res) ix=discut; + else ix= fichier; + if ((ix!=msg3) || (! test0)) + if (! ((ix==fichier) && (set::of(sauve, charge, eos).has(msg3)))) + { + menu_up(msg3); + menu_down(ix); + msg3=ix; + msg4=no_choice; + } + } + else /* Not in the MenuTitle line */ + { + if ((y>11) && (test0)) util(x,y); + } + } + else /* il y a eu 'clic' */ + if ((msg3==fichier) && (msg4!=no_choice)) + { + clic=false; + menu_up(msg3); + if (lo(msg4)==1) msg3=7; + else msg3=8; + menu_down(msg3); + } + else /* il y a eu clic sur un autre menu */ + { + choisi=(test0) && (msg4!=no_choice); + menu_up(msg3); + msg[4]=msg4; + msg[3]=msg3; + msg3=no_choice; + msg4=no_choice; + clic=false; + } + } + diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h new file mode 100644 index 0000000000..a4fe1e1b6b --- /dev/null +++ b/engines/mortevielle/mor.h @@ -0,0 +1,1457 @@ +/* Niveau 14 suite */ +const char m1[] = "quelqu'un entre, parait ‚tonn‚ mais ne dit rien"; + + +void testfi() + { + if (ioresult!= 0) + { + caff= do_alert(err_mess,1); + exit(0); + } + } + + +integer readclock() +{ + registres r; + integer s, m, h; + +/* debug('readclock');*/ + integer readclock_result; + r.ax = 0x2c00; + intr(0x21,r); + { + h=(cardinal)r.cx >> 8; + m=r.cx % 256; + s=(cardinal)r.dx >> 8; + } + m= m * 60; + h= h* 3600; + readclock_result= h+ m+ s; + return readclock_result; +} + +void modif(integer& nu) +{ + /* debug('modif'); */ + if (nu== 26) nu= 25; + if ((nu> 29) && (nu< 36)) nu= nu- 4; + if ((nu> 69) && (nu< 78)) nu= nu- 37; + if ((nu> 99) && (nu< 194)) nu= nu- 59; + if ((nu> 996) && (nu< 1000)) nu= nu- 862; + if ((nu> 1500) && (nu< 1507)) nu= nu- 1363; + if ((nu> 1507) && (nu< 1513)) nu= nu- 1364; + if ((nu> 1999) && (nu< 2002)) nu= nu- 1851; + if (nu== 2010) nu= 151; + if ((nu> 2011) && (nu< 2025)) nu= nu- 1860; + if (nu== 2026) nu= 165; + if ((nu> 2029) && (nu< 2037)) nu= nu- 1864; + if ((nu> 3000) && (nu< 3005)) nu= nu- 2828; + if (nu== 4100) nu= 177; + if (nu== 4150) nu= 178; + if ((nu> 4151) && (nu< 4156)) nu= nu- 3973; + if (nu== 4157) nu= 183; + if ((nu== 4160) || (nu== 4161)) nu= nu- 3976; +} + + +void dessine(integer ad, integer x, integer y) +{ + /* debug('dessine'); */ + hide_mouse(); + writepal(numpal); + pictout(ad,0,x,y); + show_mouse(); +} + +void dessine_rouleau() +{ + /* debug('dessine_rouleau'); */ + writepal(89); + if (gd==her) + { + mem[0x7000+14]=15; + } + hide_mouse(); + pictout(0x73a2,0,0,0); + show_mouse(); +} + + +void text_color(integer c) +{ + color_txt= c; +} + +/* NIVEAU 13 */ + + +void text1(integer x,integer y,integer nb,integer m) +{ + phrase st; + integer tay; + integer co; + + + /* debug('text'); */ + if (res==1) co=10; else co=6; + deline(m,st,tay); + if ((y==182) && (tay*co>nb*6)) y=176; + afftex(st,x,y,nb,20,color_txt); +} + +void initouv() + { + integer cx; + + /* debug('initouv'); */ + for( cx= 1; cx <= 7; cx ++) touv[cx]= chr(0); + } + +void ecrf1() +{ + boite(0, 11, 512, 163, 15); /* grand dessin */ +} + +void clsf1() +{ + integer i,j; + + /* debug('clsf1'); */ + hide_mouse(); + box(0,gd, 0,11, 514,175, 255); +/* if Gd=ams then port[$3DD]:=15; + case Gd of + ams, + cga : begin + for j:=0 to 63 do + begin + for i:=6 to 86 do + begin + mem[$B800:i*80+j]:=0; + mem[$Ba00:i*80+j]:=0; + end; + mem[$b800:6960+j]:=0; + mem[$ba00:400+j]:=0; + end; + end; + ega : begin + port[$3C4]:= 2; + port[$3C5]:= 15; + port[$3CE]:= 8; + port[$3CF]:= 255; + for j:=0 to 63 do + for i:=11 to 174 do + mem[$A000:i*80+j]:=0; + end; + tan : begin + for j:=0 to 128 do + begin + for i:=3 to 43 do + begin + mem[$B800:i*160+j]:=0; + mem[$Ba00:i*160+j]:=0; + mem[$bc00:i*160+j]:=0; + if i<>43 then mem[$be00:i*160+j]:=0; + end; + mem[$be00:320+j]:=0; + end; + end; + end; + droite(256*res,11,256*res,175,0);*/ + show_mouse(); +} + +void clsf2() +{ + integer i,j; + + /* debug('clsf2'); */ + hide_mouse(); + if (f2_all) + { + box(0,gd,1,176,633,199,255); + boite(0,175,634,24,15); + f2_all=false; + } + else + { + box(0,gd,1,176,633,190,255); + boite(0,175,634,15,15); + } + show_mouse(); +} + +void ecrf2() +{ + /* debug('ecrf2'); */ + text_color(5); + /*boite(0,175,630,15,15);*/ +} + +void ecr2(str255 str_) +{ + integer tab; + integer tlig; + + /* debug('ecr2 : '+str_);*/ + if (res==1) tab=10; else tab=6; + putxy(8,177); + tlig=59+pred(integer,res)*36; + if (length(str_) st; + + /* debug('clsf10'); */ + hide_mouse(); + if (res==1) + { + co=634; + cod=534; + } + else + { + co=600; + cod=544; + } + box(15,gd, cod, 93, co, 98, 255); + if (s.conf< 33) st="Cool"; + else + if (s.conf< 66) st=" Lourde "; + else + if (s.conf> 65) st="Malsaine"; + if (res==1) co=10; else co=6; + co= 574-((cardinal)co*length(st) >> 1); + putxy(co,92); + writeg(st,4); + if (res==1) co=620; else co=584; + box(15,gd, 560, 24, co, 86, 255); +/* rempli(69,12,32,5,255);*/ + show_mouse(); +} + + void stop() + { + clrscr; + hirs(); + gd=ams; + hirs(); + exit(0); + } + +void paint_rect(integer x, integer y, integer dx, integer dy) + { + integer co; + + /* debug('paint_rect'); */ + if (gd==cga) co= 3; + else co=11; + box(co,gd,x,y,x+dx,y+dy,255); + } + +integer hazard(integer min,integer max) + { + integer ha1; + real ha2; + + /* debug('hazard'); */ + integer hazard_result; + ha2= Random(); + ha1= trunc(ha2*(max-min)); + hazard_result= min+ ha1; + return hazard_result; + } + +void calch(integer& j,integer& h,integer& m) +{ + integer th,nh; + +/* debug('calch');*/ + nh= readclock(); + th= jh+ ((nh- mh) / t); + m= ((th % 2)+ vm)* 30; + h= ((cardinal)th >> 1)+ vh; + if (m== 60) + { + m= 0; + h= h+ 1; + } + j= (h / 24)+ vj; + h= h- ((j- vj)* 24); +} + +void conv(integer x, integer& y) +{ + integer cx; + + /* debug('conv'); */ + cx= 1; + y= 128; + while (cx< x) + { + y= (cardinal)y >> 1; + cx= succ(integer,cx); + } +} + +/* NIVEAU 12 */ +void okpas() +{ + tesok=true; +} + +void modobj(integer m) +{ + phrase str_; + str30 strp; + integer i,tay; + + /* debug('modobj'); */ + strp=' '; + if (m!= 500) + { + deline(m- 501+ c_st41,str_,tay); + strp= delig; + } + menut( invt[8], strp); + menu_disable( invt[8]); +} + +void modobj2(integer m,boolean t1,boolean t2) +{ + phrase str_; + str30 strp; + integer i,tay; + + /* debug('modobj'); */ + strp=' '; + if (t1 || t2) okpas(); + else tesok=false;; + if (m!= 500) + { + deline(m- 501+ c_st41,str_,tay); + strp= delig; + } + menut( invt[8], strp); + menu_disable( invt[8]); +} + + +void repon(integer f,integer m) +{ + str255 str_; + varying_string<40> str1; + phrase st; + text1 fic; + integer i, xco, dx, caspe, tay; + + /* debug('repon fenetre nř'+chr(f+48));*/ + if ((m> 499) && (m< 563)) + { + deline( m-501+c_st41,st,tay); + if (tay>((58+pred(integer,res)*37) << 1)) f2_all= true; + else f2_all= false; + clsf2(); + afftex(st,8,176,85,3,5); + } + else + { + modif(m); + if (f== 8) f= 2; + if (f== 1) f= 6; + if (f== 2) + { + clsf2(); + ecrf2(); + text1(8, 182, 103, m); + if ((m== 68) || (m== 69)) s.teauto[40]= '*'; + if ((m== 104) && (caff== 14)) + { + s.teauto[36]= '*'; + if (s.teauto[39]== '*') + { + s.pourc[3]= '*'; + s.teauto[38]= '*'; + } + } + } + if (set::of(6,9, eos).has(f)) + { + deline(m,st,tay); + if (f==6) i=4; + else i=5; + afftex(st,80,40,60,25,i); + if (m== 180) s.pourc[6]= '*'; + if (m== 179) s.pourc[10]= '*'; + } + if (f== 7) /* messint */ + { + ecrf7(); + deline(m,st,tay); + if (res==1) + { + xco=252-tay*5; + caspe= 100; + dx= 80; + } + else + { + xco=252-tay*3; + caspe= 144; + dx=50; + } + if (tay<40) afftex(st,xco,86,dx,3,5); + else afftex(st,caspe,86,dx,3,5); + } + } +} + +void f3f8() +{ + integer co; + + if (res==1) co=107; else co=64; + putxy(3,44); + writeg(f3,5); + ywhere= 51; + writeg(f8,5); + boite(0,42,co,16,7); +} + +void t5(integer cx) +{ + /* debug('t5'); */ + if (cx== 10) blo= false; + if (cx!= 1) + { + bh1= false; + bf1= false; + } + if (cx!= 2) bh2= false; + if (cx!= 4) + { + bh4= false; + bf4= false; + } + if (cx!= 5) bh5= false; + if (cx!= 6) bh6= false; + if (cx!= 8) bh8= false; + if (cx!= 3) bt3= false; + if (cx!= 7) bt7= false; + if (cx!= 9) bh9= false; +} + +void affper(integer per) +{ + integer cx; + + /* debug('affper'); */ + for( cx= 1; cx <= 8; cx ++) menu_disable( disc[cx]); + clsf10(); + if ((per & 128)== 128) + { + putxy(560,24); + writeg("LEO",4); + menu_enable( disc[1]); + } + if ((per & 64)== 64) + { + putxy(560, 32); + writeg("PAT",4); + menu_enable( disc[2]); + } + if ((per & 32)== 32) + { + putxy(560, 40); + writeg("GUY",4); + menu_enable( disc[3]); + } + if ((per & 16)== 16) + { + putxy(560,48); + writeg("EVA",4); + menu_enable( disc[4]); + } + if ((per & 8)== 8) + { + putxy(560,56); + writeg("BOB",4); + menu_enable( disc[5]); + } + if ((per & 4)== 4) + { + putxy(560, 64); + writeg("LUC",4); + menu_enable( disc[6]); + } + if ((per & 2)== 2) + { + putxy(560, 72); + writeg("IDA",4); + menu_enable( disc[7]); + } + if ((per & 1)== 1) + { + putxy(560, 80); + writeg("MAX",4); + menu_enable( disc[8]); + } + ipers= per; +} + +/* overlay */ void choix(integer min,integer max, integer& per) +{ + boolean i; + integer haz,cx,cy,cz; + long_integer per2,cz2; + + /* debug('o0 choix'); */ + haz= hazard(min,max); + if (haz> 4) + { + haz= 8- haz; + i= true; + } + else i= false; + cx= 0; + per= 0; + while (cx< haz) + { + cy= hazard(1,8); + conv(cy,cz); + if ((per & cz)!= cz) + { + cx= cx+ 1; + per= (per | cz); + } + } + if (i) per= 255- per; + i= false; +} + +/* overlay */ void cpl1(integer& p) +{ + integer j,h,m; + + /* debug('o0 cpl1'); */ + calch(j,h,m); + if ((h> 7) || (h< 11)) p= 25; + if ((h> 10) && (h< 14)) p= 35; + if ((h> 13) && (h< 16)) p= 50; + if ((h> 15) && (h< 18)) p= 5; + if ((h> 17) && (h< 22)) p= 35; + if ((h> 21) && (h< 24)) p= 50; + if ((h>= 0) && (h< 8)) p= 70; + mdn(); +} + +/* overlay */ void cpl2(integer& p) +{ + integer j,h,m; + + /* debug('o0 cpl2'); */ + calch(j,h,m); + if ((h> 7) && (h< 11)) p= -2; + if (h== 11) p= 100; + if ((h> 11) && (h< 23)) p= 10; + if (h== 23) p= 20; + if ((h>= 0) && (h< 8)) p= 50; +} + +/* overlay */ void cpl3(integer& p) +{ + integer j,h,m; + + /* debug('o0 cpl3'); */ + calch(j,h,m); + if (((h> 8) && (h< 10)) || ((h> 19) && (h< 24))) p= 34; + if (((h> 9) && (h< 20)) || ((h>= 0) && (h< 9))) p= 0; +} + +/* overlay */ void cpl5(integer& p) +{ + integer j,h,m; + + /* debug('o0 cpl5'); */ + calch(j,h,m); + if ((h> 6) && (h< 10)) p= 0; + if (h== 10) p= 100; + if ((h> 10) && (h< 24)) p= 15; + if ((h>= 0) && (h< 7)) p= 50; +} + +/* overlay */ void cpl6(integer& p) +{ + integer j,h,m; + + /* debug('o0 cpl6'); */ + calch(j,h,m); + if (((h> 7) && (h< 13)) || ((h> 17) && (h< 20))) p= -2; + if (((h> 12) && (h< 17)) || ((h> 19) && (h< 24))) p= 35; + if (h== 17) p= 100; + if ((h>= 0) && (h< 8)) p= 60; +} + +void person() +{ + const char m1[] = "Vous"; + const char m2[] = "tes"; + const char m3[] = "SEUL"; + integer cf; + str255 str_; + + /* debug('person'); */ + for( cf= 1; cf <= 8; cf ++) menu_disable( disc[cf]); + clsf10(); + putxy(560, 30); + writeg(m1,4); + putxy(560, 50); + writeg(m2,4); + putxy(560, 70); + writeg(m3,4); + ipers= 0; +} + +void chlm(integer& per) +{ + /* debug('chlm'); */ + per= hazard(1,2); + if (per== 2) per= 128; +} + +void pendule() +{ + const matrix<1,2,1,12,integer> cv + = {{{{ 5, 8, 10, 8, 5, 0, -5, -8, -10, -8, -5, 0}}, + {{-5, -3, 0, 3, 5, 6, 5, 3, 0, -3, -5, -6}} }}; + const integer x = 580; + const integer y = 123; + const integer rg = 9; + integer h,co; + + + /* debug('pendule'); */ + hide_mouse(); + /*paint_rect(572,114,18,20); + paint_rect(577,114,6,20);*/ + paint_rect(570,118,20,10); + paint_rect(578,114,6,18); + if (set::of(cga,her, eos).has(gd)) co=0; else co=1; + if (min== 0) droite(((cardinal)x >> 1)*res, y, ((cardinal)x >> 1)*res, (y- rg), co); + else droite(((cardinal)x >> 1)*res, y, ((cardinal)x >> 1)*res, (y+ rg), co); + h= heu; + if (h> 12) h= h- 12; + if (h== 0) h= 12; + droite(((cardinal)x >> 1)*res, y, ((cardinal)(x+ cv[1][h]) >> 1)*res, y+ cv[2][h], co); + show_mouse(); + putxy( 568, 154); + if (heu> 11) writeg( "PM ",1); + else writeg( "AM ",1); + putxy( 550, 160); + if (set::of(range(0,8), eos).has(jou)) writeg(string(chr(jou+49))+"& jour",1); +} + +/************* + * NIVEAU 11 * + *************/ + +void debloc(integer l) +{ +/* debug('debloc'); */ + num= 0; + x= 0; + y= 0; + if ((l!= 26) && (l!= 15)) t5(l); + mpers= ipers; +} + +/* overlay */ void cpl10(integer& p,integer& h) +{ + integer j,m; + +/* debug('o1 cpl10'); */ + calch(j,h,m); + if (((h> 7) && (h< 11)) || ((h> 11) && (h< 14)) + || ((h> 18) && (h< 21))) p= 100; + if ((h== 11) || ((h> 20) && (h< 24))) p= 45; + if (((h> 13) && (h< 17)) || (h== 18)) p= 35; + if (h== 17) p= 60; + if ((h>= 0) && (h< 8)) p= 5; +} + +/* overlay */ void cpl11(integer& p,integer& h) +{ + integer j,m; + +/* debug('o1 cpl11'); */ + calch(j,h,m); + if (((h> 8) && (h< 12)) || ((h> 20) && (h< 24))) p= 25; + if (((h> 11) && (h< 14)) || ((h> 18) && (h< 21))) p= 5; + if ((h> 13) && (h< 17)) p= 55; + if ((h> 16) && (h< 19)) p= 45; + if ((h>= 0) && (h< 9)) p= 0; +} + +/* overlay */ void cpl12(integer& p) +{ + integer j,h,m; + +/* debug('o1 cpl12'); */ + calch(j,h,m); + if (((h> 8) && (h< 15)) || ((h> 16) && (h< 22))) p= 55; + if (((h> 14) && (h< 17)) || ((h> 21) && (h< 24))) p= 25; + if ((h>= 0) && (h< 5)) p= 0; + if ((h> 4) && (h< 9)) p= 15; +} + +/* overlay */ void cpl13(integer& p) +{ +/* debug('o1 cpl13'); */ + p= 0; +} + +/* overlay */ void cpl15(integer& p) +{ + integer j,h,m; + +/* debug('o1 cpl15'); */ + calch(j,h,m); + if ((h> 7) && (h< 12)) p= 25; + if ((h> 11) && (h< 14)) p= 0; + if ((h> 13) && (h< 18)) p= 10; + if ((h> 17) && (h< 20)) p= 55; + if ((h> 19) && (h< 22)) p= 5; + if ((h> 21) && (h< 24)) p= 15; + if ((h>= 0) && (h< 8)) p= -15; +} + +/* overlay */ void cpl20(integer& p,integer& h) +{ + integer j,m; + +/* debug('o1 cpl20'); */ + calch(j,h,m); + if (h== 10) p= 65; + if ((h> 10) && (h< 21)) p= 5; + if ((h> 20) && (h< 24)) p= -15; + if ((h>= 0) && (h< 5)) p= -300; + if ((h> 4) && (h< 10)) p= -5; +} + +/* overlay */ void quelq1(integer l) +{ + integer per; + +/* debug('o1 quelq1'); */ + per= hazard(1,2); + if (l== 1) + if (per== 1) bh1= true; else bf1= true; + if (l== 4) + if (per== 1) bh4= true; else bf4= true; + ipers= 10; +} + +/* overlay */ void quelq2() +{ +/* debug('o1 quelq2'); */ + if (li== 2) bh2= true; else bh9= true; + ipers= 10; +} + +/* overlay */ void quelq5() +{ +/* debug('o1 quelq5'); */ + bh5= true; + ipers= 10; +} + +/* overlay */ void quelq6(integer l) +{ + integer per; + +/* debug('o1 quelq6'); */ + if (l== 6) bh6= true; + if (l== 8) bh8= true; + ipers= 10; +} + +/* overlay */ void quelq10(integer h, integer& per) +{ + integer min,max; + +/* debug('o1 quelq10'); */ + if ((h>= 0) && (h< 8)) chlm(per); else + { + if ((h> 7) && (h< 10)) + { + min= 5; + max= 7; + } + if ((h> 9) && (h< 12)) + { + min= 1; + max= 4; + } + if (((h> 11) && (h< 15)) || ((h> 18) && (h< 21))) + { + min= 6; + max= 8; + } + if (((h> 14) && (h< 19)) || ((h> 20) && (h< 24))) + { + min= 1; + max= 5; + } + choix(min,max,per); + } + affper(per); +} + +/* overlay */ void quelq11(integer h, integer& per) +{ + integer min,max; + +/* debug('o1 quelq11'); */ + if ((h>= 0) && (h< 8)) chlm(per); else + { + if (((h> 7) && (h< 10)) || ((h>20) && (h< 24))) + { + min= 1; + max= 3; + } + if (((h> 9) && (h< 12)) || ((h> 13) && (h< 19))) + { + min= 1; + max= 4; + } + if (((h> 11) && (h< 14)) || ((h> 18) && (h< 21))) + { + min= 1; + max= 2; + } + choix(min,max,per); + } + affper(per); +} + +/* overlay */ void quelq12(integer& per) +{ +/* debug('o1 quelq12'); */ + chlm(per); + affper(per); +} + +/* overlay */ void quelq15(integer& per) +{ + integer cx; + boolean test; + + +/* debug('o1 quelq15'); */ + per= 0; + if (per== 0) + { + do { + cx= hazard(1,8); + test =(((cx== 1) && (bh2 || bh9)) || + ((cx== 2) && bh8) || + ((cx== 3) && bh4) || + ((cx== 4) && bf4) || + ((cx== 5) && bh6) || + ((cx== 6) && bh1) || + ((cx== 7) && bf1) || + ((cx== 8) && bh5)); + } while (!(! test)); + conv(cx,per); + affper(per); + } +} + +/* overlay */ void quelq20(integer h, integer& per) +{ + integer min,max; + +/* debug('o1 quelq20'); */ + if (((h>= 0) && (h< 10)) || ((h> 18) && (h< 24))) chlm(per); + else + { + if ((h> 9) && (h< 12)) + { + min= 3; + max= 7; + } + if ((h> 11) && (h< 18)) + { + min= 1; + max= 2; + } + if (h== 18) + { + min= 2; + max= 4; + } + choix(min,max,per); + } + affper(per); +} + + +/* overlay */void frap() +{ + integer j,h,m,haz; + +/* debug('o1 frap'); */ + calch(j,h,m); + if ((h>= 0) && (h< 8)) crep= 190; else + { + haz= hazard(1,100); + if (haz> 70) crep= 190; else crep= 147; + } +} + +/* overlay */ void nouvp(integer l, integer& p) +{ +/* debug('o1 nouvp'); */ + p= 0; + if (l== 1) + { + if (bh1) p= 4; + if (bf1) p= 2; + } + if (((l== 2) && (bh2)) || ((l== 9) && (bh9))) p= 128; + if (l== 4) + { + if (bh4) p= 32; + if (bf4) p= 16; + } + if ((l== 5) && (bh5)) p= 1; + if ((l== 6) && (bh6)) p= 8; + if ((l== 8) && (bh8)) p= 64; + if (((l== 3) && (bt3)) || ((l== 7) && (bt7))) p= 9; + if (p!= 9) affper(p); +} + + + +/* overlay */ void tip(integer ip, integer& cx) +{ +/* debug('o1 tip'); */ + if (ip== 128) cx= 1; else + if (ip== 64) cx= 2; else + if (ip== 32) cx= 3; else + if (ip== 16) cx= 4; else + if (ip== 8) cx= 5; else + if (ip== 4) cx= 6; else + if (ip== 2) cx= 7; else + if (ip== 1) cx= 8; +} + + +/* overlay */ void ecfren(integer& p,integer& haz, integer cf,integer l) +{ +/* debug('o1 ecfren'); */ + if (l== 0) person(); + p= -500; + haz= 0; + if (((l== 1) && (! bh1) && (! bf1)) + || ((l== 4) && (! bh4) && (! bf4))) cpl1(p); + if ((l== 2) && (! bh2) && (! bh9)) cpl2(p); + if (((l== 3) && (! bt3)) || ((l== 7) && (! bt7))) cpl3(p); + if ((l== 5) && (! bh5)) cpl5(p); + if (((l== 6) && (! bh6)) || ((l== 8) && (! bh8))) cpl6(p); + if ((l== 9) && (! bh9) && (! bh2)) p= 10; + if (((l== 2) && (bh9)) || ((l== 9) && (bh2))) p= -400; + if (p!= -500) + { + p= p+ cf; + haz= hazard(1,100); + } +} + +/* overlay */ void becfren(integer l) +{ + integer haz; + +/* debug('o1 becfren'); */ + if ((l== 1) || (l== 4)) + { + haz= hazard(1,2); + if (l== 1) + if (haz== 1) bh1= true; else bf1= true; + if (l== 4) + if (haz== 1) bh4= true; else bf4= true; + } + if (l== 2) bh2= true; else + if (l== 3) bt3= true; else + if (l== 5) bh5= true; else + if (l== 6) bh6= true; else + if (l== 7) bt7= true; else + if (l== 8) bh8= true; else + if (l== 9) bh9= true; +} + +/* NIVEAU 10 */ +void init_nbrepm() +{ + const array<1,8,byte> ipm + = {{4,5,6,7,5,6,5,8}}; + integer i; + +/* debug('init_nbrepm'); */ + i= 0; + do { + i= succ(integer,i); + nbrepm[i]= ipm[i]; + } while (!(i==8)); +} + +void phaz(integer& haz,integer& p, integer cf) +{ +/* debug('phaz'); */ + p= p+ cf; + haz= hazard(1,100); +} + +/* overlay */ void inzon() +{ + integer cx; + +/* debug('o2 inzon'); */ + copcha(); + { + s.ipre = false; + s.derobj= 0; + s.icave = 0; + s.iboul = 0; + s.ibag = 0; + s.ipuit = 0; + s.ivier = 0; + s.iloic = 136; + s.icryp = 141; + s.conf = hazard(4,10); + s.mlieu = 21; + for( cx= 2; cx <= 6; cx ++) s.sjer[cx]= chr(0); + s.sjer[1]= chr(113); + s.heure= chr(20); + for( cx= 1; cx <= 10; cx ++) s.pourc[cx]= ' '; + for( cx= 1; cx <= 6; cx ++) s.teauto[cx]= '*'; + for( cx= 7; cx <= 9; cx ++) s.teauto[cx]= ' '; + for( cx= 10; cx <= 28; cx ++) s.teauto[cx]= '*'; + for( cx= 29; cx <= 42; cx ++) s.teauto[cx]= ' '; + s.teauto[33]= '*'; + } + for( cx= 1; cx <= 8; cx ++) nbrep[cx]= 0; + init_nbrepm(); +} + +/* overlay */ void dprog() +{ +/* debug('o2 dprog'); */ + li= 21; + /* jh:= t_settime(0);*/ + jh= 0; + if (! s.ipre) blo= true; + t= ti1; + mh= readclock(); +} + +/* overlay */ void pl1(integer cf) +{ + integer p, haz; + +/* debug('o2 pl1'); */ + if (((li== 1) && (! bh1) && (! bf1)) + || ((li== 4) && (! bh4) && (! bf4))) + { + cpl1(p); + phaz(haz,p,cf); + if (haz> p) person(); else quelq1(li); + } +} + +/* overlay */ void pl2(integer cf) +{ + integer p,haz; + +/* debug('o2 pl2'); */ + if (! bh2) + { + cpl2(p); + phaz(haz,p,cf); + if (haz> p) person(); else quelq2(); + } +} + +/* overlay */ void pl5(integer cf) +{ + integer p,haz; + +/* debug('o2 pl5'); */ + if (! bh5) + { + cpl5(p); + phaz(haz,p,cf); + if (haz> p) person(); else quelq5(); + } +} + +/* overlay */ void pl6(integer cf) +{ + integer p,haz; + +/* debug('o2 pl6'); */ + if (((li== 6) && (! bh6)) || ((li== 8) && (! bh8))) + { + cpl6(p); + phaz(haz,p,cf); + if (haz> p) person(); else quelq6(li); + } +} + +/* overlayi */ void pl9(integer cf) +{ + integer p,haz; + +/* debug('o2 pl9'); */ + if (! bh9) + { + cf= -10; + phaz(haz,p,cf); + if (haz> p) person(); else quelq2(); + } +} + +/* overlayi */ void pl10(integer cf) +{ + integer p,h,haz; + +/* debug('o2 pl10'); */ + cpl10(p,h); + phaz(haz,p,cf); + if (haz> p) person(); else quelq10(h,p); +} + +/* overlay */ void pl11(integer cf) +{ + integer p,h,haz; + +/* debug('o2 pl11'); */ + cpl11(p,h); + phaz(haz,p,cf); + if (haz> p) person(); else quelq11(h,p); +} + +/* overlay */ void pl12(integer cf) +{ + integer p,haz; + +/* debug('o2 pl12'); */ + cpl12(p); + phaz(haz,p,cf); + if (haz> p) person(); else quelq12(p); +} + +/* overlay */ void pl13(integer cf) +{ + integer p,haz; + +/* debug('o2 pl13'); */ + cpl13(p); + phaz(haz,p,cf); + if (haz> p) person(); else quelq12(p); +} + +/* overlay */ void pl15(integer cf) +{ + integer p,haz; + +/* debug('o2 pl15'); */ + cpl15(p); + phaz(haz,p,cf); + if (haz> p) person(); else quelq15(p); +} + +/* overlay */ void pl20(integer cf) +{ + integer p,h,haz; + +/* debug('o2 pl20'); */ + cpl20(p,h); + phaz(haz,p,cf); + if (haz> p) person(); else quelq20(h,p); +} + +/* overlay */ void t11(integer l11, integer& a) +{ + integer p,haz,h; + +/* debug('o2 t11'); */ + ecfren(p,haz,s.conf,l11); + li= l11; + if ((l11> 0) && (l11< 10)) + if (p!= -500) + { + if (haz> p) + { + person(); + a= 0; + } + else + { + becfren(li); + nouvp(li,a); + } + } + else nouvp(li,a); + if (l11> 9) + if ((l11> 15) && (l11!= 20) && (l11!= 26)) person(); else + { + if (l11== 10) cpl10(p,h); + if (l11== 11) cpl11(p,h); + if (l11== 12) cpl12(p); + if ((l11== 13) || (l11== 14)) cpl13(p); + if ((l11== 15) || (l11== 26)) cpl15(p); + if (l11== 20) cpl20(p,h); + p= p+ s.conf; + haz= hazard(1,100); + if (haz> p) + { + person(); + a= 0; + } + else + { + if (l11== 10) quelq10(h,p); + if (l11== 11) quelq11(h,p); + if ((l11== 12) || (l11== 13) || (l11== 14)) quelq12(p); + if ((l11== 15) || (l11== 26)) quelq15(p); + if (l11== 20) quelq20(h,p); + a= p; + } + } +} + +/* overlay */ void cavegre() + +{ + integer haz; + +/* debug('cavegre'); */ + s.conf= s.conf+ 2; + if (s.conf> 69) s.conf= s.conf+ (s.conf / 10); + clsf3(); + ecrf2(); + ecr3(m1); + haz= (hazard(0, 4))- 2; + parole(2, haz, 1); + for( haz=0; haz <= 3000; haz ++); + clsf3(); + person(); +} + +void writetp(str255 s,integer t) +{ + if (res==2) writeg(s,t); + else writeg(copy(s,1,25),t); +} + +void messint(integer nu) +{ +/* debug('messint'); */ + clsf1(); + clsf2(); + clsf3(); + decomp( 0x73a2, 1008); + memw[0x7413+12]= 80; + memw[0x7413+14]= 40; + writepal(90); + afff(gd,0x73a2, 1008,0,0); + afff(gd,0x73a2, 1008,0,70); + repon(7,nu); +} + +void aniof(integer ouf,integer num) + { + integer ad, offset; + char c; + + /* debug('aniof'); */ + if ((caff== 7) && ((num== 4) || (num== 5))) return; + if ((caff== 10) && (num== 7)) num= 6; + if (caff== 12) if (num== 3) num= 4; + else if (num== 4) num= 3; + ad= adani; + offset= animof(ouf,num); + decomp(ad,offset); + hide_mouse(); + afff(gd,ad,offset,0,12); + ecrf1(); + show_mouse(); + } + +void musique(integer so) +{ + boolean i; + integer haz; +/* dep: array[1..5] of long_integer;*/ + +/* debug('musique'); */ + if (so== 0) /*musik(0)*/ {; } + else + if ((prebru== 0) && (! s.ipre)) + { + parole(10, 1, 1); + prebru= prebru+ 1; + } + else + { + i= false; + if ((s.mlieu== 19) || (s.mlieu== 21) || (s.mlieu== 22)) + { + haz= hazard(1,3); + if (haz== 2) + { + haz= hazard(2,4); + parole(9,haz,1); + i= true; + } + } + if (s.mlieu== 20) + { + haz= hazard(1,2); + if (haz== 1) + { + parole(8,1,1); + i= true; + } + } + if (s.mlieu== 24) + { + haz= hazard(1,2); + if (haz== 2) + { + parole(12,1,1); + i= true; + } + } + if (s.mlieu== 23) + { + parole(13,1,1); + i= true; + } + if (! i) + { + /* dep[1]:= 1416; + dep[2]:= 1512; + dep[3]:= 1692; + dep[4]:= 1884; + dep[5]:= 2046; + haz:= hazard(1,5); + musik(dep[haz]);*/ + haz= hazard(1,17); + parole(haz,1,2); + } + } +} + +/* NIVEAU 9 */ +void dessin(integer ad) +{ + integer cx; + +/* debug('dessin'); */ + if (ad!= 0) dessine(ades,((ad % 160)* 2),(ad / 160)); + else + { + clsf1(); + if (caff> 99) + { + dessine(ades,60,33); + boite(118, 32, 291, 121, 15); /* cadre moyen */ + } + else + if (caff> 69) + { + dessine(ades,112,48); /* ttes */ + boite(222, 47, 155, 91, 15); + } + else + { + dessine(ades,0,12); + ecrf1(); + if ((caff< 30) || (caff> 32)) + { + for( cx= 1; cx <= 6; cx ++) + if (ord(touv[cx])!= 0) aniof(1,ord(touv[cx])); + if (caff== 13) + { + if (s.iboul== 141) aniof(1,7); + if (s.ibag== 159) aniof(1,6); + } + if ((caff== 14) && (s.icave== 151)) aniof(1,2); + if ((caff== 17) && (s.ivier== 143)) aniof(1,1); + if ((caff== 24) && (s.ipuit!= 0)) aniof(1,1); + } + if (caff< 26) musique(1); + } + } +} + + + diff --git a/engines/mortevielle/mor2.h b/engines/mortevielle/mor2.h new file mode 100644 index 0000000000..8edf601458 --- /dev/null +++ b/engines/mortevielle/mor2.h @@ -0,0 +1,764 @@ +const array<1,11,integer> men + = {{ scacher, attacher, defoncer, dormir, + entrer, fermer, frapper, manger, + mettre, ouvrir, sortir }}; + +void tinke() +{ + const char m1[] = "Mince! Vous entendez du bruit..."; + const char d1[] = " | Vous devriez avoir remarqu‚| "; + const char d2[] = "% des indices..."; + const char d3 = '['; + const char d4 = ']'; + const char d5 = '1'; + const char d6[] = "OK"; + integer cx,cy,haz,nh,cf,j,h,m,cd; + varying_string<3> stpo; + boolean am; + + anyone= false; + calch(j,h,m); + if (j!= jou) + { + jou= j; + cx=0; + do { + cx=cx+1; + if (nbrepm[cx]!= 0) nbrepm[cx]= nbrepm[cx]- 1; + nbrep[cx]= 0; + } while (!(cx==8)); + } + if ((h> heu) || ((h== 0) && (heu== 23))) + { + heu= h; + min= 0; + pendule(); + cf= 0; + for( cx= 1; cx <= 10; cx ++) if (s.pourc[cx]== '*') cf= cf+ 1; + if (cf==10) stpo="10"; + else stpo=chr(cf+48); + stpou= string(d3)+ d5+ d4+ d3+ d1+ stpo+ '0'+ d2+ d4+ d3+ d6+ d4; + } + if (m> min) + { + min= 30; + pendule(); + } + if (y_s<12) return; + if (! blo) + { + if ((h== 12) || ((h> 18) && (h< 21)) || ((h>= 0) && (h< 7))) + t= ti2; else t= ti1; + cf= s.conf; + if ((cf> 33) && (cf< 66)) t= t- (t / 3); + if (cf> 65) t= t- ((t / 3)* 2); + nh= readclock(); + if ((nh- mh)> t) + { + am= active_menu; + erase_menu(); + jh= jh+ ((nh- mh)/ t); + mh= nh; + switch (li) { + case 1:case 4 : pl1(cf); break; + case 2 : pl2(cf); break; + case 5 : pl5(cf); break; + case 6:case 8 : pl6(cf); break; + case 9 : pl9(cf); break; + case 10 : pl10(cf); break; + case 11 : pl11(cf); break; + case 12 : pl12(cf); break; + case 13:case 14 : pl13(cf); break; + case 15:case 26 : pl15(cf); break; + case 20 : pl20(cf); break; + } + if ((mpers!= 0) && (ipers!= 10)) mpers= ipers; + if ((mpers== 0) && (ipers> 0)) + if ((s.mlieu== 13) || (s.mlieu== 14)) cavegre(); else + if (ipers== 10) + { + ipers= 0; + if (! brt) + { + brt= true; + hdb= readclock(); + haz= hazard(1,5); + if (haz< 5) + { + clsf3(); + ecrf2(); + ecr3(m1); + haz= (hazard(0, 4))- 2; + parole(1, haz, 1); + clsf3(); + } + } + } + if (am) draw_menu(); + } + } + hfb= readclock(); + if ((brt) && ((hfb- hdb)> 17)) + { + nouvp(li,cx); + brt= false; + hdb= 0; + if ((s.mlieu> 0) && (s.mlieu< 10)) anyone= true; + } +} + +void fenat(char ans) +{ + integer coul; + + hide_mouse(); + if (gd==cga) coul=2; + else if (gd==her) coul=1; else coul=12; + affcar(gd,306,193,coul,ord(ans)); + boite(300, 191, 16, 8, 15); + show_mouse(); +} + + +/* NIVEAU 8 */ +void afdes(integer ad) +{ + taffich(); + dessin(ad); + okdes= false; +} + +void tkey1(boolean d) +{ + boolean quest; + integer x,y,c; + integer key; + + hide_mouse(); + fenat('K'); + while (keypressed()) key=testou(); + do { + if (d) tinke(); + quest=keypressed(); + read_pos_mouse(x,y,c); + } while (!(quest || (c!=0) || (d && anyone))); + if (quest) key=testou(); + clic=false; + show_mouse(); +} + +void tmlieu(integer mli) +{ + integer cx, j, i, tail; + str30 nomp; + phrase st; + + + if (mli== 26) mli= 15; + i=1; + while ((i<8) && (v_lieu[i][mli]!=0)) + { + cx=v_lieu[i][mli]; + deline(cx+c_tmlieu,st,tail); + nomp= delig; + while (length(nomp)<30) nomp=nomp+' '; + menut( depl[i], nomp); + i=i+1; + } + nomp= "* "; + for( cx= 7; cx >= i; cx --) menut( depl[cx], nomp); +} + + +/* NIVEAU 7 */ +void tlu(integer af,integer ob) +{ + caff= 32; + afdes(0); + repon(6,ob+ 4000); + repon(2,999); + tkey1(true); + caff= af; + msg[3]= no_choice; + crep= 998; +} + +void delin(integer n) + { + phrase s; + integer t; + + deline(n,s,t); + } + +void affrep() +{ + caff= s.mlieu; + crep= s.mlieu; +} + +void mfouen() + +{ + integer cx; + + tmlieu(s.mlieu); + for( cx=1; cx <= 11; cx ++) menu_enable( men[cx]); +/* menu_enable( scacher); + menu_enable(menup, attacher); + menu_enable(menup, defoncer); + menu_enable(menup, dormir); + menu_enable(menup, entrer); + menu_enable(menup, fermer); + menu_enable(menup, frapper); + menu_enable(menup, manger); + menu_enable(menup, mettre); + menu_enable(menup, ouvrir); + menu_enable(menup, sortir); */ + menut( sonder, " sonder "); + menut( soulever, " soulever "); +} + +void atf3f8(integer& key) + { + do { + key= testou(); + } while (!((key==61) || (key==66))); + } + +/* NIVEAU 6 */ + +void tperd() +{ + integer cx; + + initouv(); + ment= 0; + iouv= 0; + mchai= 0; + mfouen(); + if (! blo) t11(21, cx); + perdu= true; + clsf1(); + boite( 60, 35, 400, 50, 15); + repon(9,crep); + clsf2(); + clsf3(); + col= false; + syn= false; + okdes= false; +} + +void tsort() +{ + integer cx; + + if ((iouv> 0) && (s.mlieu!= 0)) + if (s.conf< 50) s.conf= s.conf+ 2; + else s.conf= s.conf+ (s.conf / 10); + for( cx= 1; cx <= 7; cx ++) touv[cx]= chr(0); + ment= 0; + iouv= 0; + mchai= 0; + debloc(s.mlieu); +} + +void st4(integer ob) +{ + crep= 997; + switch (ob) { + case 114 : crep=109; break; + case 110 : crep=107; break; + case 158 : crep=113; break; + case RANGE_5(152,156):case 150: + case 100:case 157:case 160:case 161 : tlu(caff,ob); + break; + } +} + +void cherjer(integer ob, boolean& d) +{ + integer cx; + + d= false; + for( cx= 1; cx <= 6; cx ++) d=(d || (ord(s.sjer[cx])== ob)); + if (s.derobj== ob) d= true; +} + +void st1sama() +{ + s.mlieu= 10; + affrep(); +} + +void modinv() +{ + integer cx, cy, tay, i, r; + phrase nom; + str30 nomp; + + cy= 0; + for( cx=1; cx <= 6; cx ++) + if (s.sjer[cx]!= chr(0)) + { + cy= succ(integer,cy); + r= (ord(s.sjer[cx])+ 400); + deline(r-501+c_st41,nom,tay); + nomp= delig; + menut( invt[cy], nomp); + menu_enable( invt[cx]); + } + if (cy<6) + for( cx=cy+1; cx <= 6; cx ++) + { + menut( invt[cx], " "); + menu_disable( invt[cx]); + } +} + +void sparl(long_integer adr, long_integer rep) +{ + const array<1,8,integer> haut + = {{0,1,-3,6,-2,2,7,-1}}; + integer key, ad, tay, repint; + phrase st; + + repint=trunc(rep); + hide_mouse(); + deline( repint+c_paroles,st,tay); + afftex(st,230,4,65,24,5); + f3f8(); + /*boite(43,30,90,19,15); + gotoxy(7,5); + write('F3: Encore'); + gotoxy(7,6); + write('F8: Stop');*/ + key= 0; + do { + parole(repint, haut[caff- 69], 0); + atf3f8(key); + } while (!(key== 66)); + hirs(); + show_mouse(); +} + +void finfouil() + { + fouil= false; + obpart= false; + cs= 0; + is= 0; + mfouen(); + } + +void mfoudi() +{ + integer cx; + + for( cx= 1; cx <= 7; cx ++) menu_disable( depl[cx]); + for( cx=1; cx <= 11; cx ++) menu_disable( men[cx]); +/* menu_disable(menup, scacher); + menu_disable(menup, attacher); + menu_disable(menup, defoncer); + menu_disable(menup, dormir); + menu_disable(menup, entrer); + menu_disable(menup, fermer); + menu_disable(menup, frapper); + menu_disable(menup, manger); + menu_disable(menup, mettre); + menu_disable(menup, ouvrir); + menu_disable(menup, sortir); */ + menut( sonder, " -SUITE- "); + menut( soulever, " -STOP- "); +} + +void mennor() +{ + menu_up(msg[3]); +} + +void premtet() +{ + dessine(ades, 10, 80); + boite(18, 79, 155, 91, 15); +} + +/* NIVEAU 5 */ +void ajchai() +{ + integer cx,cy,lderobj; + + + cy= (acha+ pred(integer,pred(integer,mchai)* 10)); + cx= 0; + do { + cx= cx+ 1; + } while (!((cx> 9) || (tabdon[cy+ cx]== 0))); + if (tabdon[cy+ cx]== 0) + { + lderobj= s.derobj; + tabdon[cy+ cx]=lderobj; + } + else crep= 192; +} + +void ajjer(integer ob) +{ + integer cx; + + cx= 0; + do { + cx= cx+ 1; + } while (!((cx> 5) || (ord(s.sjer[cx])== 0))); + if (ord(s.sjer[cx])== 0) + { + s.sjer[(cx)]= chr(ob); + modinv(); + } + else crep= 139; +} + +void t1sama() /* On entre dans le manoir */ +{ + integer j,h,m; + boolean d; + + calch(j,h,m); + if ((h< 5) && (s.mlieu> 18)) + { + cherjer(137,d); + if (! d) /* On n'a pas les cl‚s et il est tard */ + { + crep= 1511; + tperd(); + } + else st1sama(); + } + else + if (! s.ipre) /* c'est votre premiŠre fois ? */ + { + ipers= 255; + affper(ipers); + caff= 77; + afdes(0); + boite(223, 47, 155, 91, 15); + repon(2,33); + tkey1(false); + mennor(); + hide_mouse(); + hirs(); + premtet(); + sparl(0,140); + dessine_rouleau(); + pendule(); + show_mouse(); + s.mlieu= 0; + affrep(); + t5(10); + if (! blo) t11(0, m); + ipers= 0; + mpers= 0; + s.ipre= true; + /*chech;*/ + } + else st1sama(); +} + +void t1vier() +{ + s.mlieu= 17; + affrep(); +} + +void t1neig() +{ + inei= inei+ 1; + if (inei> 2) + { + crep= 1506; + tperd(); + } + else + { + okdes= true; + s.mlieu= 19; + affrep(); + } +} + +void t1deva() +{ + inei= 0; + s.mlieu= 21; + affrep(); +} + +void t1derr() +{ + s.mlieu = 22; + affrep(); +} + +void t1deau() +{ + crep = 1503; + tperd(); +} + +void tctrm() +{ + repon(2,(3000+ ctrm)); + ctrm= 0; +} + + +void quelquun() + +{ + integer haz,cx; + + if (imen) erase_menu(); + finfouil(); + crep= 997; +L1: + if (! cache) + { + if (crep== 997) crep= 138; + repon(2,crep); + if (crep== 138) parole(5, 2, 1); else parole(4, 4, 1); + if (iouv== 0) s.conf= s.conf+ 2; else + if (s.conf< 50) s.conf= s.conf+ 4; else + s.conf= s.conf+ (3* (s.conf / 10)); + tsort(); + tmlieu(15); + tip(ipers,cx); + caff= 69+ cx; + crep= caff; + msg[3]= discut; + msg[4]= disc[cx]; + syn= true; + col= true; + } + else + { + haz= hazard(1, 3); + if (haz== 2) + { + cache= false; + crep= 137; + goto L1; + } + else + { + repon(2, 136); + haz= (hazard(0, 4))- 2; + parole(3, haz, 1); + clsf2(); + person(); + debloc(21); + affrep(); + } + } + if (imen) draw_menu(); +} + +void tsuiv() +{ + integer cx,tbcl; + integer cl,cy; + + cy= acha+ ((mchai- 1)* 10)- 1; + cx= 0; + do { + cx= cx+ 1; + cs= cs+ 1; + cl= cy+ cs; + tbcl= tabdon[cl]; + } while (!((tbcl != 0) || (cs> 9))); + if ((tbcl != 0) && (cs< 11)) + { + is= is+ 1; + caff= tbcl; + crep= caff+ 400; + if (ipers!= 0) s.conf= s.conf+ 2; + } + else + { + affrep(); + finfouil(); + if (cx> 9) crep= 131; + } +} + +void tfleche() +{ + boolean qust; + char touch; + integer dummy,cd,xmo,ymo; + + if (num== 9999) return; + fenat(chr(152)); + rect= false; + do { + touch='\0'; + + do { + mov_mouse(qust,touch); + if (clic) rect=(x_s<256*res) && (y_s<176) && (y_s>12); + tinke(); + } while (!(qust || rect || anyone)); + + if (qust && (touch=='\103')) dummy=do_alert(stpou,1); + } while (!((touch=='\73') || ((touch== '\104') && (x!= 0) && (y!=0)) || + (anyone) || (rect))); + if (touch=='\73') iesc= true; + if (rect) + { + x=x_s; + y=y_s; + } +} + +void tcoord(integer sx) + + { + integer sy,ix,iy,cb,cy,ib; + integer a, b, atdon; + + + num= 0; + crep= 999; + a=0; + atdon=amzon+3; + cy= 0; + while (cy= sx) && (x<= ix) && (y>= sy) && (y<= iy)) + || (cy> ib))); + if ((x>= sx) && (x<= ix) && (y>= sy) && (y<= iy)) + + { + num= cy- 1; + return; + } +L1: + crep= 997; + } + + +void st7(integer ob) +{ + crep= 183; + if ((ob== 116) || (ob== 144)) crep= 104; + if ((ob== 126) || (ob== 111)) crep= 108; + if (ob== 132) crep= 111; + if (ob== 142) crep= 112; + if (crep== 183) st4(ob); +} + +void treg(integer ob) +{ + integer mdes; + + mdes= caff; + caff= ob; + if (((caff> 29) && (caff< 33)) || (caff== 144) || + (caff== 147) || (caff== 149) || (msg[4]== sregarder)) + { + afdes(0); + if ((caff> 29) && (caff< 33)) repon(2,caff); else repon(2,(caff+ 400)); + tkey1(true); + caff= mdes; + msg[3]= 0; + crep= 998; + } + else + { + obpart= true; + crep= caff+ 400; + mfoudi(); + } +} + +void avpoing(integer& ob) +{ + crep= 999; + if (s.derobj!= 0) ajjer(s.derobj); + if (crep!= 139) + { + modobj(ob+ 400); + s.derobj= ob; + ob= 0; + } +} + +void rechai(integer& ch) +{ + integer cx; + + cx= s.mlieu; + if (s.mlieu== 16) cx= 14; + ch= tabdon[achai+ (cx* 7)+ pred(integer,num)]; +} + +void t23coul(integer& l) +{ + boolean d; + + cherjer(143,d); + l= 14; + if (! d) + { + crep= 1512; + tperd(); + } +} + +void maivid() +{ + s.derobj= 0; + modobj(500); +} + +void st13(integer ob) +{ + if ((ob== 114) || (ob== 116) || (ob== 126) || (ob== 132) || + (ob== 111) || (ob== 106) || (ob== 102) || (ob== 100) || + (ob== 110) || (ob== 153) || (ob== 154) || (ob== 155) || + (ob== 156) || (ob== 157) || (ob== 144) || (ob== 158) || + (ob== 150) || (ob== 152)) crep= 999; else crep= 105; +} + +void aldepl() +{ + integer dummy; + + dummy=do_alert("[1][Alors, utilisez le menu DEP...][ok]",1); +} diff --git a/engines/mortevielle/mort.cpp b/engines/mortevielle/mort.cpp new file mode 100644 index 0000000000..1fbd91c648 --- /dev/null +++ b/engines/mortevielle/mort.cpp @@ -0,0 +1,124 @@ +#include "ptoc.h" + + + + /*$v-*/ + /*$k-*/ + /*$x-*/ + /*$c-*/ + +#include "var_mor.h" /* les variables */ +#include "keyboard.h" /* la gestion du clavier */ +#include "mouse.h" /* la souris */ +#include "level15.h" /* les fonctions de base */ +#include "droite.h" /* pour faire une droite */ +#include "boite.h" +#include "sprint.h" /* l'affichage des textes */ +#include "outtext.h" /* fonctions sup‚rieures d'affichage */ +#include "parole.h" /* les fonctions de la parole */ +#include "alert.h" +#include "parole2.h" /* les fonctions de la parole */ + /* debug le debugging */ +#include "ques.h" /* les questions */ +#include "menu.h" /* les fonctions du menu */ +#include "mor.h" /* divers */ +#include "taffich.h" /* chargement des dessins */ +#include "ovd1.h" /* les fonctions sur disque 1 */ +#include "mor2.h" /* divers */ +#include "actions.h" /* les actions */ +#include "prog.h" /* fonctions toplevel */ +#include "disk.h" /* chargements et sauvegardes */ + +/* ecrihexa utilitaire */ + +void divers(integer np,boolean b) +{ + teskbd(); + do { + parole(np, 0, 0); + atf3f8(key); + if (newgd!=gd) + { + gd=newgd; + hirs(); + aff50(b); + } + } while (!(key== 66)); +} + +/* NIVEAU 0 */ + +int main(int argc, const char* argv[]) +{ +/*init_debug;*/ +/* ecri_seg;*/ + pio_initialize(argc, argv); + gd=cga; + newgd= gd; + zuul= false; + tesok= false; + chartex(); + charpal(); + charge_cfiph(); + charge_cfiec(); + zzuul(adcfiec+161,0,1644); + c_zzz= 1; + init_nbrepm(); + init_mouse(); +/* crep:=memw[$7f00:0]; + memw[$7f00:0]:= crep+1; + if (memw[$7f00:0]<> crep+1) then + begin + hirs; + show_mouse; + crep:=do_alert('[1][ 512 k minimum requis !!][OK]',1); + clrscr; + halt; + end; + if (Dseg+$1000>adbruit5) then + begin + hirs; + show_mouse; + crep:=do_alert('[1][ Il ne reste pas assez de |place m‚moire !!][OK]',1); + clrscr; + halt; + end;*/ + init_lieu(); + arret= false; + sonoff= false; + f2_all= false; + textcolor(9); + teskbd(); + dialpre(); + newgd= gd; + teskbd(); + if (newgd!=gd) gd=newgd; + hirs(); + ades= 0x7000; + aff50(false); + mlec= 0; + divers(142,false); + + ani50(); + divers(143,true); + suite(); + music(); + adzon(); + takesav(0); + if (rech_cfiec) charge_cfiec(); + for( crep=1; crep <= c_zzz; crep ++) zzuul(adcfiec+161,0,1644); + charge_bruit5(); + init_menu(); + + theure(); + dprog(); + hirs(); + dessine_rouleau(); + show_mouse(); + do { tjouer(); } while (!arret); + hide_mouse(); + clrscr; +/*out_debug;*/ + return EXIT_SUCCESS; +} + diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h new file mode 100644 index 0000000000..3f250d91e4 --- /dev/null +++ b/engines/mortevielle/mouse.h @@ -0,0 +1,469 @@ +const integer m_arrow = 0; +const integer m_point_hand = 1; + +boolean int_m, +clic; + +integer m_show, +x_s, +y_s, +p_o_s, +mouse_shwn; + +matrix<0,5,0,11,integer> s_s; + + +void init_mouse() +{ + integer i, j; + registres reg; + + mouse_shwn= 0; + x_s= 0; + y_s= 0; + p_o_s= 0; + /*int_m:= False;*/ + clic= false; + m_show= m_arrow; + if ((memw[0xcc]==0) && (memw[0xce]==0)) int_m= false; + if (int_m) + { + reg.ax= 0; + intr(0x33,reg); + int_m= (reg.ax==-1); + if (int_m) + { + { + reg.ax=4; + reg.cx=0; + reg.dx=0; + } + intr(0x33,reg); + } + } +} + +/*procedure change_mouse( t : integer ); +begin + m_show:= t; +end;*/ + +/*procedure dessine_souris(xf,yf:integer); + var x, xx, y :integer; +begin + case m_show of + m_arrow : begin + affput(2,Gd,xf,yf,0,0); + end; + end; +end; */ + +void hide_mouse() +{ + integer i,j,k,ps,ds; + boolean imp; + + mouse_shwn = pred(integer,mouse_shwn); + if (mouse_shwn==0) + { + imp= odd(y_s); + j=p_o_s; + switch (gd) { + case cga : { + k=0; + j=((cardinal)y_s >> 1) * 80+ ((cardinal)x_s >> 2); + do { + memw[0xb000+j]=s_s[0][k]; + memw[0xb800+j+2]=s_s[1][k]; + memw[0xba00+j]=s_s[2][k]; + memw[0xba00+j+2]=s_s[3][k]; + j=j+80; + k= succ(integer,k); + } while (!(k>=5)); + } + break; + case ams : { + for( i=0; i <= 3; i ++) + { + port[0x3dd]= 1 << i; + k=0; + j=p_o_s; + do { + if (imp) + { + memw[0xb800+j]=s_s[i][k]; + j=j+80-0x2000; + } + else + { + memw[0xb800+j]=s_s[i][k]; + j=j+0x2000; + } + imp=! imp; + k= succ(integer,k); + } while (!(k>=8)); + } + } + break; + case ega : { + port[0x3c4]=2; + port[0x3ce]=8; + port[0x3cf]=255; + i= 0; + do { + port[0x3c5]= 1 << i; + k=0; + j=p_o_s; + do { + ps=mem[0xa000+j]; + mem[0xa000+j]=lo(s_s[i][k]); + ps=mem[0xa000+j+1]; + mem[0xa000+j+1]=hi(s_s[i][k]); + j=j+80; + k= succ(integer,k); + } while (!(k>=8)); + i= i+1; + } while (!(i==4)); + } + break; + case her : { + j= ((cardinal)y_s >> 1) *80+((cardinal)x_s >> 3); + for( i=0; i <= 5; i ++) + { + for( k=0; k <= 3; k ++) memw[0xb000+k*0x200+j]=s_s[i][k]; + j=j+80; + } + } + break; + case tan : { + j= ((cardinal)y_s >> 2) *160+((cardinal)x_s >> 1); + k=0; + do { + for( i=0; i <= 3; i ++) + { + memw[0xb800+0x200*i+j]=s_s[k][i+(k << 2)]; + memw[0xb800+0x200*i+j+2]=s_s[k+3][i+(k << 2)]; + } + j=j+160; + k= succ(integer,k); + } while (!(k==3)); + } + break; + + } /* case Gd */ + } +} + +void show_mouse() +{ + integer i, j, k, l, + ps,ds; + boolean imp; + char c; + + mouse_shwn = mouse_shwn +1; + if (mouse_shwn!=1) return; + j=p_o_s; + imp= odd(y_s); + i=x_s & 7; + switch (gd) { + case cga : { + k=0; + j=((cardinal)y_s >> 1) * 80+ ((cardinal)x_s >> 2); + do { + s_s[0][k]=memw[0xb800+j]; + s_s[1][k]=memw[0xb800+j+2]; + s_s[2][k]=memw[0xba00+j]; + s_s[3][k]=memw[0xba00+j+2]; + j=j+80; + k= succ(integer,k); + } while (!(k>=5)); + } + break; + case ams : { + for( i=0; i <= 3; i ++) + { + j=p_o_s; + imp= odd(y_s); + port[0x3de]= i; + k=0; + do { + if (imp) + { + s_s[i][k]=memw[0xb800+j]; + j=j+80-0x2000; + } + else + { + s_s[i][k]=memw[0xb800+j]; + j=j+0x2000; + } + imp=! imp; + k= succ(integer,k); + } while (!(k>=8)); + } + } + break; + case ega : { + port[0x3ce]=4; + l= 0; + do { + port[0x3cf]= l; + k=0; + j=p_o_s; + do { + s_s[l][k]= mem[0xa000+j]+(mem[0xa000+succ(integer,j)] << 8); + j=j+80; + k= succ(integer,k); + } while (!(k>=8)); + l= l+1; + } while (!(l==4)); + } + break; + case her : { + j= ((cardinal)y_s >> 1) *80+((cardinal)x_s >> 3); + for( i=0; i <= 5; i ++) + { + for( k=0; k <= 3; k ++) s_s[i][k]=memw[0xb000+k*0x200+j]; + j=j+80; + } + } + break; + case tan : { + j= ((cardinal)y_s >> 2)*160+((cardinal)x_s >> 1); + k=0; + do { + for( i=0; i <= 3; i ++) + { + s_s[k][i+(k << 2)]=memw[0xb800+0x200*i+j]; + s_s[k+3][i+(k << 2)]=memw[0xb800+0x200*i+j+2]; + } + j=j+160; + k= succ(integer,k); + } while (!(k==3)); + } + break; + } /* case Gd */ + affput(2,gd,x_s,y_s,0,0); +} + +void pos_mouse(integer x,integer y) +{ + registres reg; + + if (x>314*res) x=314*res; + else if (x<0) x=0; + if (y>199) y=199; + else if (y<0) y=0; + if ((x==x_s) && (y==y_s)) return; + if (int_m) + { + { + reg.ax=4; + reg.cx=x; + reg.dx=y; + } + intr(0x33,reg); + } + hide_mouse(); + x_s=x; + y_s=y; + switch (gd) { + case ams : { + p_o_s=((cardinal)y_s >> 1)*80+((cardinal)x_s >> 3)+(y_s & 1)*0x2000; + } + break; + /*cga : begin + P_O_S:=(Y_S shr 1)*80+X_S shr 2+(Y_S and 1)*$2000; + end;*/ + case ega : { + p_o_s=y_s*80+((cardinal)x_s >> 3); + } + break; + } /* case Gd */ + show_mouse(); +} + +void read_pos_mouse(integer& x,integer& y,integer& c) +{ + registres reg; + + if (int_m) + { + reg.ax=3; + intr(0x33,reg); + x=reg.cx; + y=reg.dx; + c=reg.bx; + } + else + { + c=0; + x=x_s; + y=y_s; + } +} + +void mov_mouse(boolean& funct, char& key) + { + boolean p_key; + char in1, in2; + integer x,y,cx,cy,cd; + registres reg; + + if (int_m) + { + reg.ax=3; + intr(0x33,reg); + x=reg.cx; + y=reg.dx; + cd=reg.bx; + pos_mouse(x,y); + if (cd!=0) + { + clic=true; + return; + } + } + funct=false; + key='\377'; + p_key=keypressed(); + while (p_key) + { + input >> kbd >> in1; + read_pos_mouse(cx, cy, cd); + switch (upcase(in1)) { + case '4' : cx= cx - 8; break; + case '2' : cy= cy + 8; break; + case '6' : cx= cx + 8; break; + case '8' : cy= cy - 8; break; + case '7' : { + cy=1; + cx=1; + } + break; + case '1' : { + cx=1; + cy=190; + } + break; + case '9' : { + cx=315*res; + cy=1; + } + break; + case '3' : { + cy=190; + cx=315*res; + } + break; + case '5' : { + cy=100; + cx=155*res; + } + break; + case ' ': case '\15' : { + clic=true; + return; + } + break; + case '\33' : { + p_key=keypressed(); + if (p_key) + { + input >> kbd >> in2; + switch (in2) { + case 'K' : cx= pred(integer,cx); break; + case 'P' : cy= succ(integer,cy); break; + case 'M' : cx= cx + 2; break; + case 'H' : cy= pred(integer,cy); break; + case RANGE_10(';','D') : { + funct= true; + key=in2; + return; + } + break; + case 'G' : { + cx=cx-1; + cy=cy-1; + } + break; + case 'I' : { + cx=cx+1; + cy=cy-1; + } + break; + case 'O' : { + cx=cx-1; + cy=cy+1; + } + break; + case 'Q' : { + cx=cx+1; + cy=cy+1; + } + break; + } /* case */ + } + } + break; + case 'I' : { + cx= res*32; + cy= 8; + } + break; + case 'D' : { + cx= 80*res; + cy= 8; + } + break; + case 'A' : { + cx= 126*res; + cy= 8; + } + break; + case 'S' : { + cx= 174*res; + cy= 8; + } + break; + case 'P' : { + cx= 222*res; + cy= 8; + } + break; + case 'F' : { + cx= res*270; + cy= 8; + } + break; + case '\23' : { + sonoff= ! sonoff; + return; + } + break; + case '\26' : { + zuul=true; + return; + } + break; + case '\24' : { /* ^T => mode tandy */ + funct= true; + key= '\11'; + } + break; + case '\10' : { /* ^H => mode Hercule */ + funct= true; + key= '\7'; + } + break; + case '\1':case '\3':case '\5' : { + funct= true; + key=in1; + } + break; + } + pos_mouse(cx, cy); + p_key=keypressed(); + } + } diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h new file mode 100644 index 0000000000..5bd4fd2809 --- /dev/null +++ b/engines/mortevielle/outtext.h @@ -0,0 +1,205 @@ +str255 delig; +const array<0,31,byte> tabdr + = {{ 32, 101, 115, 97, 114, 105, 110, + 117, 116, 111, 108, 13, 100, 99, + 112, 109, 46, 118, 130, 39, 102, + 98, 44, 113, 104, 103, 33, 76, + 85, 106, 30, 31 }}; + + +const array<0,31,byte> tab30 + = {{ 69, 67, 74, 138, 133, 120, 77, 122, + 121, 68, 65, 63, 73, 80, 83, 82, + 156, 45, 58, 79, 49, 86, 78, 84, + 71, 81, 64, 66, 135, 34, 136, 91 }}; + + + +const array<0,31,byte> tab31 + = {{ 93, 47, 48, 53, 50, 70, 124, 75, + 72, 147, 140, 150, 151, 57, 56, 51, + 107, 139, 55, 89, 131, 37, 54, 88, + 119, 0, 0, 0, 0, 0, 0, 0 }}; + +void deline( integer num , phrase& l , integer& tl ); + +static void cinq_huit( char& c, integer& ind, byte& pt, boolean& the_end) + { + const array<0,31,char> rap + = {{ ',', ':', '@', '!', '?', '-', '‡', + ' ', '…', '', '‚', 'Š', '', '/', + '‹', 'Ś', '˘', '\47', '“', '"', '—', + '–', '0', '1', '2', '3', '4', '5', + '6', '7', '8', '9'}}; + integer oct,ocd; + + /* 5-8 */ + oct=t_mot[ind]; + oct=(cardinal)(oct << (16-pt)) >> (16-pt); + if (pt<6) + { + ind=ind+1; + oct=oct << (5-pt); + pt=pt+11; + oct=oct | ((cardinal)t_mot[ind] >> pt); + } + else + { + pt=pt-5; + oct=(cardinal)oct >> pt; + } + + switch (oct) { + case 11 : { + c= '$'; + the_end= true; + } + break; + case 30:case 31 : { + ocd=t_mot[ind]; + ocd=(cardinal)(ocd << (16-pt)) >> (16-pt); + if (pt<6) + { + ind=ind+1; + ocd=ocd << (5-pt); + pt=pt+11; + ocd=ocd | ((cardinal)t_mot[ind] >> pt); + } + else + { + pt=pt-5; + ocd=(cardinal)ocd >> pt; + } + if (oct==30) c=chr(tab30[ocd]); + else c=chr(tab31[ocd]); + if (c=='\0') + { + the_end=true; + c='#'; + } + } + break; + default: c=chr(tabdr[oct]); + } + } /* 5-8 */ + +void deline( integer num , phrase& l , integer& tl ) + { + integer i,j,ts; + char let; + byte ps, k; + boolean the_end; + + /* DETEX */ + /*debug(' => DeLine');*/ + delig=""; + ts= t_rec[num].indis; + ps= t_rec[num].point; + i=ts; + tl=1; + j=1; + k=ps; + the_end=false; + do { + cinq_huit(let,i,k, the_end); + l[j]=let; + if (j<254) delig=delig+let; + j=j+1; + } while (!the_end); + tl=j-1; + if (tl<255) delig=copy(delig,1,tl-1); /* enleve le $ */ + } /* DETEX */ + + +void afftex( phrase ch, integer x,integer y,integer dx,integer dy, integer typ); + + +static integer l_motsuiv(integer p, phrase& ch, integer& tab) + { + integer c; + + integer l_motsuiv_result; + c=p; + while (! (set::of(' ','$','@', eos).has(ch[p]))) p=p+1; + l_motsuiv_result=tab*(p-c); + return l_motsuiv_result; + } + +void afftex( phrase ch, integer x,integer y,integer dx,integer dy, integer typ) + { + boolean the_end; + char touch; + integer xf,yf; + integer xc,yc; + integer tab, p; + varying_string<255> s; + integer i,j,nt; + + +/* debug(' .. Afftex');*/ + putxy(x,y); + if (res==1) tab=10; else tab=6; + dx= dx * 6; + dy= dy * 6; + xc= x; + yc= y; + xf= x+dx; + yf= y+dy; + p= 1; + the_end=(ch[p]=='$'); + s=""; + while (! the_end) + { + switch (ch[p]) { + case '@' : { + writeg(s,typ); + s=""; + p=p+1; + xc=x; + yc=yc+6; + putxy(xc,yc); + } + break; + case ' ' : { + s=s+' '; + xc=xc+tab; + p=p+1; + if (l_motsuiv(p, ch, tab)+xc > xf) + { + writeg(s,typ); + s=""; + xc=x; + yc=yc+6; + if (yc>yf) + { + do {; } while (!keypressed()); + i=y; + do { + j=x; + do { + putxy(j,i); + writeg(" ",0); + j=j+6; + } while (!(j>xf)); + i=i+6; + } while (!(i>yf)); + yc=y; + } + putxy(xc,yc); + } + } + break; + case '$' : { + the_end= true; + writeg(s,typ); + } + break; + default: + { + s=s+ch[p]; + p=p+1; + xc=xc+tab; + } + } /* case */ + } + } diff --git a/engines/mortevielle/ovd1.h b/engines/mortevielle/ovd1.h new file mode 100644 index 0000000000..b2f5f7962c --- /dev/null +++ b/engines/mortevielle/ovd1.h @@ -0,0 +1,347 @@ +void dem2() +{ + untyped_file f; + integer k; + + /* -- demande de disk 2 -- */ + while (ioresult!=0); + assign(f,"mort.001"); + /*$i-*/ + reset(f); + while (ioresult!=0) + { + show_mouse(); + k= do_alert(al_mess2,1); + hide_mouse(); + reset(f); + } + close(f); +} + +void ani50() + { + crep= animof(1,1); + pictout(adani,crep,63,12); + crep= animof(2,1); + pictout(adani,crep,63,12); + f2_all= (res==1); + repon(2, c_paroles+143); + } + +/*overlay procedure apzuul; + begin + if (c_zzz=1) or (c_zzz=2) then + begin + zzuul(adcfiec+161,0,1644); + c_zzz:=succ(c_zzz); + end; + end;*/ + +/* overlay */ void aff50(boolean c) + { + integer k; + + caff= 50; + maff=0; + taffich(); + dessine(ades,63,12); + if (c) ani50(); + else repon(2, c_paroles+142); + f3f8(); + } + +/* overlay */ void init_menu() + { + integer i, j, tai; + phrase st; + untyped_file f; + + assign(f,"menufr.mor"); + /*$i-*/ + reset(f,144); + blockread(f,lettres,1); + close(f); + /* ---- Demande de changement de disquette ---- */ + dem2(); + + + for( i= 1; i <= 8; i ++) + inv[i]= "* "; + inv[7]= "< -*-*-*-*-*-*-*-*-*- "; + for( i= 1; i <= 7; i ++) + dep[i]= "* "; + i= 1; + do { + deline(i+c_action,st,tai); + act[i]= delig + " "; + if (i<9) + { + if (i<6) + { + deline(i+c_saction,st,tai); + self_[i]= delig + " "; + } + deline(i+c_dis,st,tai); + dis[i]= delig+ ' '; + } + i= succ(integer,i); + } while (!(i== 22)); + for( i= 1; i <= 8; i ++) + { + disc[i]=0x500+i; + if (i<8) depl[i]=0x200+i; + invt[i]=0x100+i; + if (i>6) menu_disable(invt[i]); + } + msg3=no_choice; + msg4=no_choice; + msg[3]=no_choice; + msg[4]=no_choice; + clic=false; + } + + +/* overlay */ void charpal() +{ + file f; + file ft; + integer i,j,k; + file fb; + byte b; + + assign(ft,"fxx.mor"); + /*$i-*/ + reset(ft); + if (ioresult!=0) + { + caff=do_alert(err_mess,1); + exit(0); + } + ft >> l; + close(ft); + assign(f,"plxx.mor"); + reset(f); + for( i= 0; i <= 90; i ++) f >> tabpal[i]; + close(f); + assign(fb, "cxx.mor"); + reset(fb); + for( j=0; j <= 90; j ++) + { + fb >> palcga[j].p; + for( i=0; i <= 15; i ++) + { + nhom& with = palcga[j].a[i]; + + fb >> b; + with.n=(cardinal)b >> 4; + with.hom[0]= ((cardinal)b >> 2) & 3; + with.hom[1]= b & 3; + } + } + palcga[10].a[9]= palcga[10].a[5]; + for( j=0; j <= 14; j ++) + { + fb >> tpt[j].tax; + fb >> tpt[j].tay; + for( i=1; i <= 20; i ++) + for( k=1; k <= 20; k ++) + fb >> tpt[j].des[i][k]; + } + close(fb); +} + +/* overlay */ void chartex() +{ + integer i; + untyped_file fibyte; + phrase s; + +/* debug('o3 chartex'); */ + i=0; + assign(fibyte,"TXX.INP"); + /*$i-*/ + reset(fibyte); + blockread(fibyte,t_mot,125); + close(fibyte); + assign(sauv_t,"TXX.NTP"); + reset(sauv_t); + do { + sauv_t >> t_rec[i]; + i=i+1; + } while (!(eof(sauv_t))); + close(sauv_t); + deline(578,s,i); + al_mess= delig; + deline(579,s,i); + err_mess= delig; + deline(580,s,i); + ind_mess= delig; + deline(581,s,i); + al_mess2= delig; +} + +/* overlay */ void dialpre() + +{ + integer cy, tay; + phrase st; + real ix; + char ch; + + + /* debug('o3 dialpre'); */ + cy=0; + clrscr; + textcolor(9); + do { + cy= cy+1; + deline( cy+c_dialpre,st,tay); + gotoxy(40-tay / 2,wherey+1); + output << delig; + } while (!(cy==20)); + ix=0; + do { + ix= ix+1; + } while (!(keypressed() | (ix==5e5))); + crep= 998; + textcolor(1); + gotoxy(1,21); clreol; + gotoxy(1,23); + output << "CARTE GRAPHIQUE CGA EGA HERCULE/AT&T400 TANDY AMSTRAD1512"; + gotoxy(12,24); + output << "Ctrl C E H T A"; + do { + input >> kbd >> ch; + } while (!(set::of('\1','\3','\5','\24','\10', eos).has(ch))); + switch (ch) { + case '\1':case '\3':case '\5' : gd= (cardinal)ord(ch) >> 1; break; + case '\10' : gd= her; break; + case '\24' : gd= tan; break; + } + gotoxy(1,24); + clreol; + gotoxy(1,23); + clreol; + gotoxy(26,23); + output << "Jeu au Clavier / … la Souris"; + textcolor(4); + gotoxy(33,23); output << 'C'; + gotoxy(48,23); output << 'S'; + do { + input >> kbd >> ch; + } while (!(set::of('C','S', eos).has(upcase(ch)))); + int_m= (upcase(ch)=='S'); +} + +/* overlay */ void init_lieu() +{ + file f_lieu; + +/* debug('o3 init_lieu'); */ + assign(f_lieu,"MXX.mor"); + /*$i-*/ + reset(f_lieu); + f_lieu >> v_lieu; + close(f_lieu); +} + + +/* overlay */ void music() +{ + untyped_file fic; + integer k; + boolean fin; + char ch; + real x,y; + + + /* debug('o3 music'); */ + if (sonoff) return; + rech_cfiec= true; + assign(fic,"mort.img"); + /*$i-*/ + reset(fic); + blockread(fic,mem[0x3800+0],500); + blockread(fic,mem[0x47a0+0],123); + close(fic); + demus(0x3800,0x5000,623); + addfix= (real)((tempo_mus-addv[1]))/256; + cctable(tbi); + + fin=false; + k=0; + do { + fin= keypressed(); + musyc( tbi, 9958 , tempo_mus); + k= k+1; + fin= fin | keypressed() | (k>=5); + } while (!fin); + while (keypressed()) input >> kbd >> ch; +} + + +/* overlay */ void charge_bruit5() + { + untyped_file f; + + assign(f,"bruit5"); + /*$i-*/ + reset(f); + if (ioresult!=0) + { + caff=do_alert(err_mess,1); + exit(0); + } + blockread(f,mem[adbruit5+0],149); + /*blockread(f,mem[$5CB0:0],100); + blockread(f,mem[$3D1F:0],49);*/ + close(f); + } + +/* overlay */ void charge_cfiec() + { + untyped_file f; + + assign(f,"cfiec.mor"); + /*$i-*/ + reset(f); + blockread(f,mem[adcfiec+0],511); + blockread(f,mem[adcfiec+4088+0],311); + close(f); + rech_cfiec= false; + } + + +/* overlay */ void charge_cfiph() + { + untyped_file f; + + assign(f,"cfiph.mor"); + /*$i-*/ + reset(f,256); + blockread(f,t_cph,50); + close(f); + } + + +/* overlay */ void suite() +{ + varying_string<25> cpr; + + hirs(); + repon(7,2035); + caff= 51; + taffich(); + teskbd(); + if (newgd!=gd) gd=newgd; + hirs(); + dessine(ades,0,0); + gotoxy(20*pred(integer,res)+8,24); + textcolor(7); + cpr="COPYRIGHT 1989 : LANKHOR"; + if (set::of(ega,ams,cga, eos).has(gd)) output << cpr; + else { + putxy(104+72*res,190); + writeg(cpr,0); + } +} 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; +*/ + diff --git a/engines/mortevielle/parole2.h b/engines/mortevielle/parole2.h new file mode 100644 index 0000000000..6cdaa3e2b4 --- /dev/null +++ b/engines/mortevielle/parole2.h @@ -0,0 +1,103 @@ + void rot_chariot() + { + c1= c2; + c2= c3; + { + c3.val= 32; + c3.code= 9; + } + } + + void init_chariot() + { + { + c3.rep= 0; + c3.freq= 0; + c3.acc= 0; + } + rot_chariot(); + rot_chariot(); + } + + +void trait_ph() + { + const array<0,2,integer> deca + = {{300,30,40}}; + + ptr_tcph= pred(integer,num_ph); + ledeb=swap(t_cph[ptr_tcph]) + deca[typlec]; + lefin=swap(t_cph[ptr_tcph+1]) + deca[typlec]; + nb_word= lefin - ledeb; + ptr_tcph=(cardinal)ledeb >> 1; + ptr_word = 0; + do { + memw[adword+ ptr_word]= t_cph[ptr_tcph]; + ptr_word = ptr_word +2; + ptr_tcph = ptr_tcph+1; + } while (!(ptr_tcph>=((cardinal)lefin >> 1))); + + ptr_oct= 0; + ptr_word= 0; + init_chariot(); + + do { + rot_chariot(); + charg_car(); + trait_car(); + } while (!(ptr_word >= nb_word)); + + rot_chariot(); + trait_car(); + entroct(ord('#')); + } + + + + void parole(integer rep, integer ht, integer typ) + { + array<0,500,integer> savph; + integer i; + integer tempo; + + + if (sonoff) return; + num_ph= rep; + haut= ht; + typlec= typ; + if (typlec!=0) + { + for( i=0; i <= 500; i ++) savph[i]=t_cph[i]; + tempo= tempo_bruit; + } + else + if (haut>5) tempo= tempo_f; + else tempo= tempo_m; + addfix= (real)((tempo-addv[0]))/256; + cctable(tbi); + switch (typ) { + case 1 : { + charge_bruit(); + /*if zuul then zzuul(adbruit,0,1095);*/ + regenbruit(); + } + break; + case 2 : { + charge_son(); + charge_phbruit(); + } + break; + } + trait_ph(); + litph(tbi,typ,tempo); + if (typlec!=0) + for( i=0; i <= 500; i ++) + { + t_cph[i]=savph[i]; + mlec=typlec; + } + writepal(numpal); + } + + + diff --git a/engines/mortevielle/prog.h b/engines/mortevielle/prog.h new file mode 100644 index 0000000000..a3ba1896ae --- /dev/null +++ b/engines/mortevielle/prog.h @@ -0,0 +1,346 @@ +/* overlay */ void change_gd(integer ngd) +{ + integer i; + + hide_mouse(); + gd= ngd; + hirs(); + init_mouse(); + show_mouse(); + dessine_rouleau(); + tinke(); + pendule(); + if (ipers!=0) affper(ipers); else person(); + clsf2(); + clsf3(); + maff= 68; + afdes(0); + repon(2,crep); + menu_aff(); +} + +/* overlay */ void antegame() +{ + integer cx; + registres regs; + array<0,511,char> buffer; + integer i,j,k; + array<0,2,boolean> test; + array<0,7,char> g; + + + hide_mouse(); + imen= false; + g[1]='M'; +perdu= true; + anyone= false; +okdes= true; + test[0]= false; + test[1]=false; + g[0]='\40'; + col= false; + tesok= true; + test[2]=false; + g[7]=g[0]; + g[2]='A'; + cache= false; + brt= false; + maff= 68; + g[5]='E'; + mnumo= 0; + prebru= 0; + g[4]='T'; + x= 0; + y= 0; + num= 0; + hdb= 0; + hfb= 0; + cs= 0; + is= 0; + k= 0; + ment= 0; +syn= true; +fouil= true; + mchai= 0; + inei= 0; + initouv(); + g[3]='S'; + g[6]='R'; + iouv= 0; + dobj= 0; + affrep(); + stpou= ind_mess; + while ((test[k]==false) && (k<2)) + { + regs.ax=0; + k=succ(integer,k); + intr(19,regs); + { + regs.ax=0x201;regs.cx=0x1;regs.dx=0x100+k-1;regs.es=seg(buffer);regs.bx=ofs(buffer); + intr(19,regs); + test[k]=! imen; + i=0; + while ((test[k]) && (i<19)) + { + regs.ax=0x201; + syn= false;regs.cx=0x2700+i;regs.dx=0x100+k-1;regs.es=seg(buffer);regs.bx=ofs(buffer); + intr(19,regs);if (lo(regs.flags) % 2==1) test[k]=false;i=i+1; + } + okdes= false; + solu= true; + for( j=0; j <= 7; j ++) if (buffer[j+504]!=g[j]) test[k]=false; + } + perdu= false; + fouil= false; + } + person(); + tinke(); + pendule(); + afdes(0); + repon(2,crep); + clsf3(); + solu= false; + tmlieu(s.mlieu); + modinv(); + if (s.derobj!= 0) modobj2(s.derobj+ 400,test[1],test[2]); + else tesok=test[1] || test[2]; + show_mouse(); +} + + +/* NIVEAU 3 */ +/* procedure PROGRAMME */ +void tmaj3() +{ + integer j,h,m; + + calch(j,h,m); + if (m== 30) m= 1; + h= h+ (j* 24); + m= m+ (h* 2); + s.heure= chr(m); +} + +void tsitu() + +{ + integer h,j,m; + + if (! col) clsf2(); + syn= false; + iesc= false; + if (anyone) goto L1; + if (brt) + if ((msg[3]== depla) || (msg[4]== sortir) || (msg[4]== dormir) || + (msg[4]== manger)) + { + ctrm= 4; + goto L2; + } + if (msg[3]== depla) taller(); + if (msg[3]== discut) tparler(); + if (msg[3]== invent) tsprendre(); + if (msg[4]== attacher) tattacher(); + if (msg[4]== attendre) tattendre(); + if (msg[4]== defoncer) tdefoncer(); + if (msg[4]== dormir) tdormir(); + if (msg[4]== ecouter) tecouter(); + if (msg[4]== entrer) tentrer(); + if (msg[4]== fermer) tfermer(); + if (msg[4]== fouiller) tfouiller(); + if (msg[4]== frapper) tfrapper(); + if (msg[4]== gratter) tgratter(); + if (msg[4]== lire) tlire(); + if (msg[4]== manger) tmanger(); + if (msg[4]== mettre) tmettre(); + if (msg[4]== ouvrir) touvrir(); + if (msg[4]== prendre) tprendre(); + if (msg[4]== regarder) tregarder(); + if (msg[4]== sentir) tsentir(); + if (msg[4]== sonder) tsonder(); + if (msg[4]== sortir) tsortir(); + if (msg[4]== soulever) tsoulever(); + if (msg[4]== tourner) ttourner(); + if (msg[4]== scacher) + { + tcacher(); + goto L1; + } + if (msg[4]== sfouiller) tsfouiller(); + if (msg[4]== slire) tslire(); + if (msg[4]== sposer) tposer(); + if (msg[4]== sregarder) tsregarder(); + cache= false; +L1: + if (anyone) + { + quelquun(); + anyone= false; + goto L2; + } + calch(j,h,m); + if ((((h== 12) || (h== 13) || (h== 19)) && (s.mlieu!= 10)) || + ((h> 0) && (h< 6) && (s.mlieu!= 0))) s.conf= s.conf+ 1; + if (((s.mlieu< 16) || (s.mlieu> 19)) && (s.mlieu!= 23) + && (s.mlieu!= 0) && (s.derobj!= 152) && (! perdu)) + { + if ((s.conf> 99) && (h> 8) && (h< 16)) + { + crep= 1501; + tperd(); + } + if ((s.conf> 99) && (h> 0) && (h< 9)) + { + crep= 1508; + tperd(); + } + if ((j> 1) && (h> 8) && (! perdu)) + { + crep= 1502; + tperd(); + } + } +L2: + mennor(); +} + +void sv_game(integer n); + +void ld_game(integer n); + +void tecran() +{ + const char idem[] = "Idem"; + const integer lim = 20000; + integer temps; + char inkey; + boolean oo, funct; + + clsf3(); + oo= false; + ctrm= 0; + if (! iesc) + { + draw_menu(); + imen= true; + temps= 0; + key= 0; + funct= false; + inkey='.'; + + do { + mdn(); + tinke(); + mov_mouse(funct,inkey); + temps= temps+ 1; + } while (!((choisi) || (temps > lim) || (funct) || (anyone))); + + erase_menu(); + imen= false; + if (set::of('\1','\3','\5','\7','\11', eos).has(inkey)) + { + change_gd((cardinal)pred(integer,ord(inkey)) >> 1); + return; + } + if (choisi && (msg[3]==sauve)) sv_game(msg[4] & 7); + if (choisi && (msg[3]==charge)) ld_game(pred(integer,msg[4] & 7)); + if (inkey== '\103') /* F9 */ + { + temps = do_alert(stpou,1); + return; + } + else + if (inkey== '\77') + { + if ((mnumo!= no_choice) && ((msg[3]== action) || (msg[3]== saction))) + { + msg[4]= mnumo; + ecr3(idem); + } + else return; + } + else + if (inkey== '\104') + { + if ((x!= 0) && (y!= 0)) num= 9999; + return; + } + } + if (inkey== '\73') + { + arret= true; + tmaj3(); + } + else + { + if ((funct) && (inkey!= '\77')) return; + if (temps> lim) + { + repon(2,141); + if (num== 9999) num= 0; + } + else + { + mnumo= msg[3]; + if ((msg[3]== action) || (msg[3]== saction)) mnumo= msg[4]; + if (! anyone) + { + if ((fouil) || (obpart)) + { + if (y_s< 12) return; + if ((msg[4]== sonder) || (msg[4]== soulever)) + { + oo= true; + if ((msg[4]== soulever) || (obpart)) + { + finfouil(); + caff= s.mlieu; + crep= 998; + } + else tsuiv(); + mennor(); + } + } + } + do { + if (! oo) tsitu(); + if ((ctrm== 0) && (! perdu) && (! solu)) + { + taffich(); + if (okdes) + { + okdes= false; + dessin(0); + } + if ((! syn) || (col)) repon(2,crep); + } + } while (!(! syn)); + if (ctrm!= 0) tctrm(); + } + } +} + +/* NIVEAU 1 */ + +void theure() +{ + vj= ord(s.heure); + vh= vj % 48; + vj= vj / 48; + vm= vh % 2; + vh= vh / 2; + heu= vh; + if (vm== 1) min= 30; else min= 0; +} + + +void tjouer() +{ + antegame(); + do { + tecran(); + } while (!((arret) || (solu) || (perdu))); + if (solu) tmaj1(); else + if (perdu) tencore(); +} + diff --git a/engines/mortevielle/ques.h b/engines/mortevielle/ques.h new file mode 100644 index 0000000000..66584d5d3c --- /dev/null +++ b/engines/mortevielle/ques.h @@ -0,0 +1,121 @@ + +/* overlay */ boolean ques() +{ + const array<1,10,integer> ta + = {{ 511, 516, 524, 531, 545, + 552, 559, 563, 570, 576}}; + const array<1,10,integer> ok + = {{ 4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }}; + + boolean q, func, test; + integer i,j,k,y,memk; + integer tay , tmax; + integer rep, prem, der; + phrase st; + char key; + mult_rect coor; + array<1,14,str40> chaines; + integer compte; + + + boolean ques_result; + test=false; + i=0; + compte= 0; + + do { + hide_mouse(); + hirs(); + show_mouse(); + i= i+1; + deline(ta[i],st,tay); + if (res==1) y=29; else y=23; + box(15,gd,0,14,630,y,255); + afftex(st,20,15,100,2,0); + if (i!=10) + { + prem= ta[i]+1; + der= ta[i+1]-1; + } + else + { + prem= 503; + der= 510; + } + y=35; + tmax= 0; + memk= 1; + for( j= prem; j <= der; j ++) + { + deline(j,st,tay); + if (tay>tmax) tmax= tay; + afftex(st,100,y,100,1,0); + chaines[memk]= delig; + memk= memk+1; + y= y+8; + } + for( j= 1; j <= succ(integer,der-prem); j ++) + { + { + rectangle& with = coor[j]; + + with.x1= 45*res; + with.x2= (tmax*3 + 55)*res; + with.y1= 27 + j*8; + with.y2= 34 + j*8; + with.etat= true; + } + while (length(chaines[j] )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;*/ diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h new file mode 100644 index 0000000000..c1881be6fe --- /dev/null +++ b/engines/mortevielle/var_mor.h @@ -0,0 +1,485 @@ + +/* Constantes, Types et Variables pour le + + M A N O I R DE M O R T E V I E L L E + + ( version Nov 1988 + + + musique & paroles Oct 88 ) + */ + + +/*---------------------------------------------------------------------------*/ +/*------------------------- CONSTANTES ----------------------------------*/ +/*---------------------------------------------------------------------------*/ + +const real freq0 = 1.19318e6; + +const integer seg_syst = 0x6fed; +const integer segmou = 0x6f00; +const integer segdon = 0x6c00; +const integer adani = 0x7314; +const integer adword = 0x4000; +const integer adtroct = 0x406b; +const integer adcfiec = 0x4300; +const integer adbruit = 0x5cb0;/*2C00;*/ +const integer adbruit1 = 0x6924;/*3874;*/ +const integer adbruit2 = 0x6b30;/*3A80;*/ +const integer adbruit3 = 0x6ba6;/*3AF6;*/ +const integer adbruit5 = 0x3b50; +const integer adson = 0x5cb0;/*2C00;*/ +const integer adson2 = 0x60b0;/*3000;*/ +const integer offsetb1 = 6; +const integer offsetb2 = 4; +const integer offsetb3 = 6; + +const integer null = 255; + +const integer tempo_mus = 71; +const integer tempo_bruit = 78; +const integer tempo_f = 80; +const integer tempo_m = 89; + +const integer ti1 = 410; +const integer ti2 = 250; +const integer maxti = 7975; +const integer maxtd = 600; +const integer max_rect = 14; + +const integer ams = 0; +const integer cga = 1; +const integer ega = 2; +const integer her = 3; +const integer tan = 4; + +const integer c_repon = 0; +const integer c_st41 = 186; +const integer c_tparler = 247; +const integer c_paroles = 292; +const integer c_tmlieu = 435; +const integer c_dialpre = 456; +const integer c_action = 476; +const integer c_saction = 497; +const integer c_dis = 502; +const integer c_fin = 510; /* => n'existe pas ; si !! */ + +const integer arega = 0; +const integer asoul = 154; +const integer aouvr = 282; +const integer achai = 387; +const integer acha = 492; +const integer arcf = 1272; +const integer arep = 1314; +const integer amzon = 1650; +const integer fleche = 1758; + +const integer no_choice = 0; +const integer invent = 1; +const integer depla = 2; +const integer action = 3; +const integer saction = 4; +const integer discut = 5; +const integer fichier = 6; +const integer sauve = 7; +const integer charge = 8; + +const integer attacher = 0x301; +const integer attendre = 0x302; +const integer defoncer = 0x303; +const integer dormir = 0x304; +const integer ecouter = 0x305; +const integer entrer = 0x306; +const integer fermer = 0x307; +const integer fouiller = 0x308; +const integer frapper = 0x309; +const integer gratter = 0x30a; +const integer lire = 0x30b; +const integer manger = 0x30c; +const integer mettre = 0x30d; +const integer ouvrir = 0x30e; +const integer prendre = 0x30f; +const integer regarder = 0x310; +const integer sentir = 0x311; +const integer sonder = 0x312; +const integer sortir = 0x313; +const integer soulever = 0x314; +const integer tourner = 0x315; + +const integer scacher = 0x401; +const integer sfouiller = 0x402; +const integer slire = 0x403; +const integer sposer = 0x404; +const integer sregarder = 0x405; + + const array<0,17,byte> tabdbc + = {{7, 23, 7, 14, 13, 9, 14, 9, 5, 12, 6, 12, 13, 4, 0, 4, 5, 9}}; + const array<0,15,byte> tabdph + = {{0, 10, 2, 0, 2, 10, 3, 0, 3, 7, 5, 0, 6, 7, 7, 10}}; + const array<0,25,byte> typcon + = {{0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3}}; + const array<0,25,byte> intcon + = {{1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}}; + const array<0,363,byte> tnocon + = {{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,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,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,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0}}; + + +const matrix<1,8,1,4,byte> don + = {{{{ 7, 37, 22, 8}}, + {{19, 33, 23, 7}}, + {{31, 89, 10, 21}}, + {{43, 25, 11, 5}}, + {{55, 37, 5, 8}}, + {{64, 13, 11, 2}}, + {{62, 22, 13, 4}}, + {{62, 25, 13, 5}}}}; + +const array<1,2,varying_string<11> > fic + = {{ " Sauvegarde", + " Chargement" }}; + +const array<0,1,byte> addv + = {{8,8}}; + +const char recom[] = " Recommence "; + + const char f3[] = "F3: Encore"; + const char f8[] = "F8: Suite"; + + const integer max_patt = 20; + + + const array<0,15,byte> rang + = {{15,14,11,7,13,12,10,6,9,5,3,1,2,4,8,0}}; + + +/*---------------------------------------------------------------------------*/ +/*-------------------------------- TYPES --------------------------------*/ +/*---------------------------------------------------------------------------*/ + +typedef varying_string<11> path_chars; +typedef real long_integer; +typedef varying_string<255> str255; +typedef varying_string<125> str125; +typedef varying_string<30> str30; +typedef varying_string<11> str11; +typedef file fichier_byte; +struct sav_chaine { + integer conf; + array<0,10,char> pourc; + array<0,42,char> teauto; + array<0,30,char> sjer; + integer mlieu,iboul,ibag,icave,ivier,ipuit; + integer derobj,iloic,icryp; + boolean ipre; + char heure; +}; +struct registres { + integer ax,bx,cx,dx,bp,si,di,ds,es,flags; +}; +typedef array<1,1410,char> phrase; +typedef array<0,maxti,integer> tabint; + struct ind { + integer indis; + byte point; + }; +typedef array<0,maxtd,ind> tabind; + +typedef matrix<1,7,0,24,byte> tab_mlieu; + + typedef array<0,255,real> table; +typedef array<0,255,integer> tablint; + + typedef integer word1; +struct chariot { + integer val, + code, + acc, + freq, + rep; +}; + +struct doublet { + byte x,y; +}; +typedef array<1,16,doublet> tabdb; +typedef array<0,107,integer> tfxx; +struct rectangle { + integer x1, x2, y1, y2; + boolean etat; +}; + +typedef array<1,max_rect,rectangle> mult_rect; +typedef varying_string<40> str40; + + struct pattern { + byte tay, tax; + matrix<1,max_patt, 1,max_patt,byte> des; + }; + + + struct nhom { + byte n; /* numero entre 0 et 32 */ + array<0,3,byte> hom; + }; + + typedef array<0,15,nhom> t_nhom; + + struct t_pcga { + byte p; + t_nhom a; + }; + + typedef array<0,90,t_pcga> pal_cga; + + +/*---------------------------------------------------------------------------*/ +/*------------------------------ VARIABLES ------------------------------*/ +/*---------------------------------------------------------------------------*/ + +boolean blo, +bh1, +bf1, +bh2, +bh4, +bf4, +bh5, +bh6, +bh8, +bt3, +bt7, +bh9, + +sonoff, +main1, +choisi, +test0, +f2_all, +imen, +cache, +iesc, +perdu, +col, +syn, +fouil, +zuul, +tesok, +obpart, +okdes, +solu, +arret, +anyone, +brt, +rect, +rech_cfiec, +active_menu; + + +integer x, +y, +t, +vj, +li, +vh, +vm, +jh, +mh, +cs, +gd, /* Gd = graph device */ +hdb, +hfb, +heu, +jou, +key, +min, +num, +max, +res, +ment, +haut, +caff, +maff, +crep, +ades, +iouv, +inei, +ctrm, +dobj, +msg3, +msg4, +mlec, +newgd, +c_zzz, +mchai, +menup, +ipers, +ledeb, +lefin, +mpers, +mnumo, +xprec, +yprec, +perdep, +prebru, +typlec, +num_ph, +xwhere, +ywhere, +numpal, +lderobj, +nb_word, +ptr_oct, +k_tempo, +ptr_tcph, +ptr_word, +color_txt; + +array<0,6400,integer> t_cph; +array<0,4000,byte> tabdon; +/* t_dxx : array[0..121] of integer;*/ +str125 stpou; /* donne le % d'indices */ +byte is; +char mode; +fichier_byte ficdes; +str125 al_mess, +err_mess, +ind_mess, +al_mess2; + + array<1,8,integer> invt, +nbrep, +nbrepm, + disc; + array<0,4,integer> msg; + array<1,7,integer> depl; + array<1,8,varying_string<22> > inv; + array<1,7,varying_string<23> > dep; + array<1,21,varying_string<10> > act; + array<1,5,varying_string<11> > self_; + array<1,8,varying_string<5> > dis; + array<1,7,char> touv; + sav_chaine s,s1; +array<0,390,byte> bufcha; + +matrix<1,6,0,23,byte> lettres; + +array<0,15,byte> palher; + + tabint t_mot; +integer tay_tchar; + tabind t_rec; + file sauv_t; + untyped_file fibyte; + tab_mlieu v_lieu; + tfxx l; + tablint tbi; +chariot c1, c2, c3; + real addfix; + pal_cga palsav; + array<0,90,tabdb> tabpal; + pal_cga palcga; + array<0,14,pattern> tpt; + + + +/*---------------------------------------------------------------------------*/ +/*-------------------- PROCEDURES ET FONCTIONS ------------------------*/ +/*---------------------------------------------------------------------------*/ + +/* procedure box(c,Gd,xo,yo,xi,yi,patt:integer); external 'c:\mc\boite.com'; */ + +void hirs() +{ + const array<0,13,byte> tandy + = {{113,80,90,14,63,6,50,56,2,3,6,7,0,0}}; + const array<0,12,byte> herc + = {{50,40,41,9,103,3,100,100,2,3,0,0,0}}; + integer i, j; + + switch (gd) { + case cga : + { + graphcolormode; + graphbackground(0); + palette(1); + res=1; + } + break; + case ams : + { + hires; + inline_((real)(0xb8)/6/0/ /* => mov ax,6 */ + 0xcd/0x10); /* => int 16 */ + port[0x3d9]=15; + port[0x3df]=0; + port[0x3dd]=15; + res=2; + } + break; + case ega : + { + inline_((real)(0xb8) / 14 / 0 / /* MOV AX, 14 ; mode video 14 = 640*200 16 couleurs */ + 0xcd / 0x10); /* INT 16 */ + res=2; + } + break; + case her : + { + port[0x3bf]=3; + port[0x3b8]=2; + for( i=0; i <= 12; i ++) + { + port[0x3b4]=i; + port[0x3b5]=herc[i]; + } + inline_((real)(0xfc)/0xb9/0/0x80/0xb8/0/0xb0/0x8e/0xc0/0x31/0xff/0x31/0xc0/0xf3/0xab); + port[0x3b8]=10; + res=2; + } + break; + case tan : + { + port[0x3d8]=0; + port[0x3da]=3; + port[0x3de]=0x14; + for( i=0; i <= 13; i ++) + { + port[0x3d4]=i; + port[0x3d5]=tandy[i]; + } + port[0x3da]=2; + port[0x3de]=0; + port[0x3d8]=port[0x3d8] | (11 & 0xef); + port[0x3dd]=port[0x3dd] | 1; + port[0x3df]=port[0x3df] | 0xc0; + box(0,gd,0,0,640,200,255); + res=1; + } + break; + } +} + +/* procedure affput(Chx,Gd,x,y,coul,char:integer); external 'c:\mc\divaf.com'; */ + +void affcar(integer gd,integer x,integer y,integer coul,integer char) +{ + if (res==1) affput(1,gd,((cardinal)x >> 1),y,coul,char); + else affput(1,gd,x,y,coul,char); +} + +void putpix(integer gd,integer x,integer y,integer coul) +{ + affput(0,gd,x,y,coul,0); +} -- cgit v1.2.3 From 9b6a4264dcaa26d87fa099c0a0dadbb8e37a6241 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 23 Dec 2011 22:15:35 +0000 Subject: MORTEVIELLE: Ran astyle over generated files --- engines/mortevielle/actions.h | 2371 ++++++++++++++++------------------- engines/mortevielle/alert.h | 401 +++--- engines/mortevielle/boite.h | 57 +- engines/mortevielle/disk.h | 124 +- engines/mortevielle/droite.h | 67 +- engines/mortevielle/keyboard.h | 107 +- engines/mortevielle/level15.h | 271 ++-- engines/mortevielle/menu.h | 594 ++++----- engines/mortevielle/mor.h | 2690 +++++++++++++++++++--------------------- engines/mortevielle/mor2.h | 1376 ++++++++++---------- engines/mortevielle/mort.cpp | 175 ++- engines/mortevielle/mouse.h | 846 +++++++------ engines/mortevielle/outtext.h | 409 +++--- engines/mortevielle/ovd1.h | 628 +++++----- engines/mortevielle/parole.h | 736 ++++++----- engines/mortevielle/parole2.h | 168 ++- engines/mortevielle/prog.h | 595 +++++---- engines/mortevielle/ques.h | 220 ++-- engines/mortevielle/sprint.h | 91 +- engines/mortevielle/taffich.h | 366 +++--- engines/mortevielle/var_mor.h | 591 +++++---- 21 files changed, 6210 insertions(+), 6673 deletions(-) diff --git a/engines/mortevielle/actions.h b/engines/mortevielle/actions.h index fd4ae2e0b6..1dd3abe08f 100644 --- a/engines/mortevielle/actions.h +++ b/engines/mortevielle/actions.h @@ -1,1372 +1,1193 @@ /* NIVEAU 4 */ const char stouinon[] = "[2][ ][OUI][NON]"; -/* overlay */ void taller() +/* overlay */ +void taller() { - integer mx,cx,cy; + integer mx, cx, cy; - if ((s.mlieu== 26) && (msg[4]== depl[6])) - { - s.mlieu= 15; - caff= s.mlieu; - afdes(0); - repon(2,s.mlieu); - } - if ((s.mlieu== 15) && (msg[4]== depl[6])) - { - if (! syn) ecr3("aller"); - tfleche(); - if (iesc) okdes= false; - if ((anyone) || (iesc)) return; - tcoord(1); - if (num== 0) return; - if (num== 1) - { - s.mlieu= 0; - tmlieu(0); - } - else - if (num== 7) - { - s.mlieu= 13; - tmlieu(13); - } - else - if (num!= 6) s.mlieu= 26; - if ((num> 1) && (num< 6)) ment= num- 1; - if (num> 7) ment= num- 3; - if (num!= 6) affrep(); else aldepl(); - return; - } - tsort(); - cx= 0; - do { - cx= cx+ 1; - } while (!(depl[cx]== msg[4])); - if (s.mlieu== 19) - { - if (cx== 1) t1deva(); - if (cx== 2) t1neig(); - goto L2; - } - if (s.mlieu== 23) - { - if (cx== 1) t1deau(); - if (cx== 2) t1derr(); - goto L2; - } - if ((s.mlieu== 11) && (cx== 1)) cx= 6; - if (s.mlieu== 12) - { - if (cx== 2) cx= 6; - if (cx== 5) cx= 16; - } - if ((s.mlieu== 14) && (cx== 3)) cx= 6; - if (((s.mlieu== 15) || (s.mlieu== 26)) && (cx== 4)) cx= 6; - if ((s.mlieu> 19) && (s.mlieu!= 26)) cx= cx+ 10; - if ((s.mlieu== 20) && (cx== 13)) cx= 16; - if (s.mlieu== 21) - { - if (cx== 12) cx= 16; else - if (cx> 13) cx= 15; - } - if ((s.mlieu== 22) && (cx> 14)) cx= 15; - if ((s.mlieu== 24) && (cx!= 17)) - if (cx> 13) cx= 15; - if (cx== 1) s.mlieu= 11; else - if (cx== 2) s.mlieu= 12; else - if (cx== 3) s.mlieu= 14; else - if (cx== 4) s.mlieu= 15; else - if (cx== 5) cx= 12; - if (cx== 6) cx= 11; - if (cx== 11) t1sama(); else - if (cx== 12) t1deva(); else - if (cx== 13) s.mlieu= 20; else - if (cx== 14) s.mlieu= 24; else - if (cx== 15) t1neig(); else - if (cx== 16) t1derr(); else - if (cx== 17) - { - if ((s.ipuit!= 120) && (s.ipuit!= 140)) crep= 997; else - if (s.ipuit== 120) crep= 181; else - if (s.conf> 80) - { - crep= 1505; - tperd(); - } - else - { - s.mlieu= 23; - affrep(); - } - } - if ((cx< 5) || (cx== 13) || (cx== 14)) affrep(); - debloc(s.mlieu); + if ((s.mlieu == 26) && (msg[4] == depl[6])) { + s.mlieu = 15; + caff = s.mlieu; + afdes(0); + repon(2, s.mlieu); + } + if ((s.mlieu == 15) && (msg[4] == depl[6])) { + if (! syn) ecr3("aller"); + tfleche(); + if (iesc) okdes = false; + if ((anyone) || (iesc)) return; + tcoord(1); + if (num == 0) return; + if (num == 1) { + s.mlieu = 0; + tmlieu(0); + } else if (num == 7) { + s.mlieu = 13; + tmlieu(13); + } else if (num != 6) s.mlieu = 26; + if ((num > 1) && (num < 6)) ment = num - 1; + if (num > 7) ment = num - 3; + if (num != 6) affrep(); + else aldepl(); + return; + } + tsort(); + cx = 0; + do { + cx = cx + 1; + } while (!(depl[cx] == msg[4])); + if (s.mlieu == 19) { + if (cx == 1) t1deva(); + if (cx == 2) t1neig(); + goto L2; + } + if (s.mlieu == 23) { + if (cx == 1) t1deau(); + if (cx == 2) t1derr(); + goto L2; + } + if ((s.mlieu == 11) && (cx == 1)) cx = 6; + if (s.mlieu == 12) { + if (cx == 2) cx = 6; + if (cx == 5) cx = 16; + } + if ((s.mlieu == 14) && (cx == 3)) cx = 6; + if (((s.mlieu == 15) || (s.mlieu == 26)) && (cx == 4)) cx = 6; + if ((s.mlieu > 19) && (s.mlieu != 26)) cx = cx + 10; + if ((s.mlieu == 20) && (cx == 13)) cx = 16; + if (s.mlieu == 21) { + if (cx == 12) cx = 16; + else if (cx > 13) cx = 15; + } + if ((s.mlieu == 22) && (cx > 14)) cx = 15; + if ((s.mlieu == 24) && (cx != 17)) + if (cx > 13) cx = 15; + if (cx == 1) s.mlieu = 11; + else if (cx == 2) s.mlieu = 12; + else if (cx == 3) s.mlieu = 14; + else if (cx == 4) s.mlieu = 15; + else if (cx == 5) cx = 12; + if (cx == 6) cx = 11; + if (cx == 11) t1sama(); + else if (cx == 12) t1deva(); + else if (cx == 13) s.mlieu = 20; + else if (cx == 14) s.mlieu = 24; + else if (cx == 15) t1neig(); + else if (cx == 16) t1derr(); + else if (cx == 17) { + if ((s.ipuit != 120) && (s.ipuit != 140)) crep = 997; + else if (s.ipuit == 120) crep = 181; + else if (s.conf > 80) { + crep = 1505; + tperd(); + } else { + s.mlieu = 23; + affrep(); + } + } + if ((cx < 5) || (cx == 13) || (cx == 14)) affrep(); + debloc(s.mlieu); L2: - tmlieu(s.mlieu); + tmlieu(s.mlieu); } -/* overlay */ void tprendre() -{ - integer cx, cy, cz; +/* overlay */ void tprendre() { + integer cx, cy, cz; - if (caff> 99) - { - cx= caff; - avpoing(cx); - if (crep!= 139) - { - if (ipers> 0) s.conf= s.conf+ 3; - if (obpart) - { - if (s.mlieu== 2) s.iloic= 0; - if (s.mlieu== 13) - { - if (s.iboul== caff) s.iboul= 0; - if (s.ibag== caff) s.ibag= 0; - } - if (s.mlieu== 14) s.icave= 0; - if (s.mlieu== 16) s.icryp= 0; - if (s.mlieu== 17) s.ivier= 0; - if (s.mlieu== 24) s.ipuit= 0; - mfouen(); - obpart= false; - affrep(); - } - else - { - tabdon[acha+ (pred(integer,mchai)* 10)+ pred(integer,cs)]=0; - tsuiv(); - dobj= dobj+ 1; - if (dobj> 6) - { - s.conf= s.conf+ 2; - dobj= 0; - } - } - } - return; - } - if (! syn) ecr3("prendre"); - tfleche(); - if ((anyone) || (iesc)) return; - if (caff== 3) - { - tcoord(2); - if (num== 1) - { - crep= 152; - return; - } - } - tcoord(5); - if ((num== 0) || ((num== 1) && (s.mlieu== 16))) - { - tcoord(8); - if (num!= 0) - { - if (ipers> 0) s.conf= s.conf+ 3; - crep= 997; - if ((s.mlieu== 2) && (s.iloic!= 0)) avpoing(s.iloic); - if ((s.mlieu==13) && (num==1) && (s.iboul!=0)) - { - avpoing(s.iboul); - if ((crep!= 997) && (crep!= 139)) aniof(2,7); - } - if ((s.mlieu==13) && (num==2) && (s.ibag!=0)) - { - avpoing(s.ibag); - if ((crep!= 997) && (crep!= 139)) aniof(2,6); - } - if ((s.mlieu== 14) && (s.icave!= 0)) - { - avpoing(s.icave); - if ((crep!= 997) && (crep!= 139)) aniof(2,2); - } - if ((s.mlieu== 16) && (s.icryp!= 0)) avpoing(s.icryp); - if ((s.mlieu== 17) && (s.ivier!= 0)) - { - avpoing(s.ivier); - if ((crep!= 997) && (crep!= 139)) - { - crep= 182; - aniof(2,1); - } - } - if ((s.mlieu== 24) && (s.ipuit!= 0)) - { - avpoing(s.ipuit); - if ((crep!= 997) && (crep!= 139)) aniof(2,1); - } - if ((crep!= 997) && (crep!= 182) && (crep!= 139)) crep= 999; - } - } - else - { - if (((s.mlieu== 0) && (num== 3)) || ((s.mlieu== 1) && (num== 4)) - || ((s.mlieu== 2) && (num== 1)) || ((s.mlieu== 4) && (num== 3)) - || ((s.mlieu== 5) && (num== 6)) || ((s.mlieu== 6) && (num== 2)) - || ((s.mlieu== 7) && (num== 6)) || ((s.mlieu== 8) && (num== 4)) - || ((s.mlieu== 9) && (num== 4)) || ((s.mlieu== 10) && (num> 2)) - || ((s.mlieu== 11) && (num== 7)) || ((s.mlieu== 12) && (num== 6)) - || ((s.mlieu== 13) && (num> 4)) || ((s.mlieu> 13) - && (s.mlieu!= 23))) crep= 997; else - { - if (s.mlieu== 23) - { - crep= 1504; - tperd(); - } - else crep= 120; - } - } + if (caff > 99) { + cx = caff; + avpoing(cx); + if (crep != 139) { + if (ipers > 0) s.conf = s.conf + 3; + if (obpart) { + if (s.mlieu == 2) s.iloic = 0; + if (s.mlieu == 13) { + if (s.iboul == caff) s.iboul = 0; + if (s.ibag == caff) s.ibag = 0; + } + if (s.mlieu == 14) s.icave = 0; + if (s.mlieu == 16) s.icryp = 0; + if (s.mlieu == 17) s.ivier = 0; + if (s.mlieu == 24) s.ipuit = 0; + mfouen(); + obpart = false; + affrep(); + } else { + tabdon[acha + (pred(integer, mchai) * 10) + pred(integer, cs)] = 0; + tsuiv(); + dobj = dobj + 1; + if (dobj > 6) { + s.conf = s.conf + 2; + dobj = 0; + } + } + } + return; + } + if (! syn) ecr3("prendre"); + tfleche(); + if ((anyone) || (iesc)) return; + if (caff == 3) { + tcoord(2); + if (num == 1) { + crep = 152; + return; + } + } + tcoord(5); + if ((num == 0) || ((num == 1) && (s.mlieu == 16))) { + tcoord(8); + if (num != 0) { + if (ipers > 0) s.conf = s.conf + 3; + crep = 997; + if ((s.mlieu == 2) && (s.iloic != 0)) avpoing(s.iloic); + if ((s.mlieu == 13) && (num == 1) && (s.iboul != 0)) { + avpoing(s.iboul); + if ((crep != 997) && (crep != 139)) aniof(2, 7); + } + if ((s.mlieu == 13) && (num == 2) && (s.ibag != 0)) { + avpoing(s.ibag); + if ((crep != 997) && (crep != 139)) aniof(2, 6); + } + if ((s.mlieu == 14) && (s.icave != 0)) { + avpoing(s.icave); + if ((crep != 997) && (crep != 139)) aniof(2, 2); + } + if ((s.mlieu == 16) && (s.icryp != 0)) avpoing(s.icryp); + if ((s.mlieu == 17) && (s.ivier != 0)) { + avpoing(s.ivier); + if ((crep != 997) && (crep != 139)) { + crep = 182; + aniof(2, 1); + } + } + if ((s.mlieu == 24) && (s.ipuit != 0)) { + avpoing(s.ipuit); + if ((crep != 997) && (crep != 139)) aniof(2, 1); + } + if ((crep != 997) && (crep != 182) && (crep != 139)) crep = 999; + } + } else { + if (((s.mlieu == 0) && (num == 3)) || ((s.mlieu == 1) && (num == 4)) + || ((s.mlieu == 2) && (num == 1)) || ((s.mlieu == 4) && (num == 3)) + || ((s.mlieu == 5) && (num == 6)) || ((s.mlieu == 6) && (num == 2)) + || ((s.mlieu == 7) && (num == 6)) || ((s.mlieu == 8) && (num == 4)) + || ((s.mlieu == 9) && (num == 4)) || ((s.mlieu == 10) && (num > 2)) + || ((s.mlieu == 11) && (num == 7)) || ((s.mlieu == 12) && (num == 6)) + || ((s.mlieu == 13) && (num > 4)) || ((s.mlieu > 13) + && (s.mlieu != 23))) crep = 997; + else { + if (s.mlieu == 23) { + crep = 1504; + tperd(); + } else crep = 120; + } + } } -/* overlay */ void tsprendre() -{ - integer cx,cy,cz; +/* overlay */ void tsprendre() { + integer cx, cy, cz; - cx= 0; - do { - cx= cx+ 1; - } while (!(invt[cx]== msg[4])); - cz= 0; - cy= 0; - do { - cy= cy+ 1; - if (ord(s.sjer[cy])!= 0) cz= cz+ 1; - } while (!(cz== cx)); - cz= ord(s.sjer[cy]); - s.sjer[cy]= chr(0); - modinv(); - avpoing(cz); - crep= 998; - clsf2(); + cx = 0; + do { + cx = cx + 1; + } while (!(invt[cx] == msg[4])); + cz = 0; + cy = 0; + do { + cy = cy + 1; + if (ord(s.sjer[cy]) != 0) cz = cz + 1; + } while (!(cz == cx)); + cz = ord(s.sjer[cy]); + s.sjer[cy] = chr(0); + modinv(); + avpoing(cz); + crep = 998; + clsf2(); } /* overlay */ void tsoulever() { - integer cx; + integer cx; - if (! syn) ecr3("soulever"); - tfleche(); - if ((anyone) || (iesc)) return; - tcoord(3); - if (num== 0) - { - tcoord(8); - if (num!= 0) - { - if (ipers> 0) s.conf= s.conf+ 1; - crep= 997; - if ((s.mlieu== 2) && (s.iloic!= 0)) treg(s.iloic); - } - return; - } - if (ipers> 0) s.conf= s.conf+ 1; - cx= s.mlieu; - if (s.mlieu== 16) cx= 14; - if (s.mlieu== 19) cx= 15; - crep= tabdon[asoul+(cx << 3)+pred(integer,num)]; - if (crep== 255) crep= 997; + if (! syn) ecr3("soulever"); + tfleche(); + if ((anyone) || (iesc)) return; + tcoord(3); + if (num == 0) { + tcoord(8); + if (num != 0) { + if (ipers > 0) s.conf = s.conf + 1; + crep = 997; + if ((s.mlieu == 2) && (s.iloic != 0)) treg(s.iloic); + } + return; + } + if (ipers > 0) s.conf = s.conf + 1; + cx = s.mlieu; + if (s.mlieu == 16) cx = 14; + if (s.mlieu == 19) cx = 15; + crep = tabdon[asoul + (cx << 3) + pred(integer, num)]; + if (crep == 255) crep = 997; } -/* overlay */ void tlire() -{ - integer iaff; +/* overlay */ void tlire() { + integer iaff; - if (caff> 99) st4(caff); else - { - if (! syn) ecr3("lire"); - tfleche(); - if (! (anyone) && ! (iesc)) - { - tcoord(4); - if (num!= 0) crep= 107; - } - } + if (caff > 99) st4(caff); + else { + if (! syn) ecr3("lire"); + tfleche(); + if (!(anyone) && !(iesc)) { + tcoord(4); + if (num != 0) crep = 107; + } + } } -/* overlay */ void tslire() -{ - if (s.derobj== 0) crep= 186; else st4(s.derobj); +/* overlay */ void tslire() { + if (s.derobj == 0) crep = 186; + else st4(s.derobj); } -/* overlay */ void tregarder() -{ - integer cx; +/* overlay */ void tregarder() { + integer cx; - if (caff> 99) - { - crep= 103; - return; - } - if (! syn) ecr3("regarder"); - tfleche(); - if ((anyone) || (iesc)) return; - tcoord(5); - if (num== 0) - { - tcoord(8); - crep= 131; - if (num!= 0) - { - if (s.mlieu== 13) - { - if (num== 1) - { - crep= 164; - if (s.ibag!= 0) treg(s.ibag); else - if (s.iboul!= 0) treg(s.iboul); - } - else - { - crep= 193; - if (s.ibag!= 0) treg(s.ibag); - } - } - if (s.mlieu== 14) - { - crep= 164; - if (s.icave!= 0) treg(s.icave); - } - if (s.mlieu== 17) - { - crep= 174; - if (s.ivier!= 0) treg(s.ivier); - } - if (s.mlieu== 24) - { - crep= 131; - if (s.ipuit!= 0) treg(s.ipuit); - } - } - return; - } - cx= s.mlieu; - if (s.mlieu== 20) cx= 17; - if ((s.mlieu> 21) && (s.mlieu< 25)) cx= cx- 4; - if (s.mlieu== 26) cx= 21; - crep= tabdon[arega+(cx*7)+pred(integer,num)]; - if ((s.mlieu== 13) && (num== 8)) crep= 126; - if (s.mlieu== 19) crep= 103; - if (crep== 255) crep= 131; - if ((s.mlieu== 1) && (num== 1)) treg(144); - if ((s.mlieu== 5) && (num== 3)) treg(147); - if ((s.mlieu== 8) && (num== 3)) treg(149); - if ((s.mlieu== 9) && (num== 2)) treg(30); - if ((s.mlieu== 10) && (num== 3)) treg(31); + if (caff > 99) { + crep = 103; + return; + } + if (! syn) ecr3("regarder"); + tfleche(); + if ((anyone) || (iesc)) return; + tcoord(5); + if (num == 0) { + tcoord(8); + crep = 131; + if (num != 0) { + if (s.mlieu == 13) { + if (num == 1) { + crep = 164; + if (s.ibag != 0) treg(s.ibag); + else if (s.iboul != 0) treg(s.iboul); + } else { + crep = 193; + if (s.ibag != 0) treg(s.ibag); + } + } + if (s.mlieu == 14) { + crep = 164; + if (s.icave != 0) treg(s.icave); + } + if (s.mlieu == 17) { + crep = 174; + if (s.ivier != 0) treg(s.ivier); + } + if (s.mlieu == 24) { + crep = 131; + if (s.ipuit != 0) treg(s.ipuit); + } + } + return; + } + cx = s.mlieu; + if (s.mlieu == 20) cx = 17; + if ((s.mlieu > 21) && (s.mlieu < 25)) cx = cx - 4; + if (s.mlieu == 26) cx = 21; + crep = tabdon[arega + (cx * 7) + pred(integer, num)]; + if ((s.mlieu == 13) && (num == 8)) crep = 126; + if (s.mlieu == 19) crep = 103; + if (crep == 255) crep = 131; + if ((s.mlieu == 1) && (num == 1)) treg(144); + if ((s.mlieu == 5) && (num == 3)) treg(147); + if ((s.mlieu == 8) && (num == 3)) treg(149); + if ((s.mlieu == 9) && (num == 2)) treg(30); + if ((s.mlieu == 10) && (num == 3)) treg(31); } -/* overlay */ void tsregarder() -{ - if (s.derobj!= 0) treg(s.derobj); else crep= 186; +/* overlay */ void tsregarder() { + if (s.derobj != 0) treg(s.derobj); + else crep = 186; } -/* overlay */ void tfouiller() -{ - const array<0,13,byte> r = {{123,104,123,131,131,123,104,131,123,123,106,123,123,107}}; - integer cx; +/* overlay */ void tfouiller() { + const array<0, 13, byte> r = {{123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}}; + integer cx; - if (caff> 99) - { - st7(caff); - return; - } - if (! syn) ecr3("fouiller"); - tfleche(); - if (anyone || iesc) return; - if (s.mlieu==23) - { - crep= 1504; - tperd(); - return; - } - tcoord(6); - if (num== 0) - { - tcoord(7); - if (num!=0) - { - cx=0; - do { - cx=cx+1; - } while (!((cx>6) || (num== ord(touv[cx])))); - if (num!=ord(touv[cx])) crep=187; else - { - if (ipers>0) s.conf= s.conf+3; - rechai(mchai); - if (mchai!=0) - { - cs=0; - is=0; - fouil=true; - mfoudi(); - tsuiv(); - } - else crep=997; - } - } - else - { - tcoord(8); - crep= 997; - if (num!=0) - { - if (ipers>0) s.conf=s.conf+3; - if ((s.mlieu!=24) && (s.mlieu!=17) && (s.mlieu!=13)) - { - if (s.mlieu==2) - { - crep= 123; - if (s.iloic!=0) treg(s.iloic); - } - if (s.mlieu==16) - { - crep= 123; - if (s.icryp!=0) treg(s.icryp); - } - } - } - } - } - else - { - if (ipers>0) s.conf=s.conf+ 3; - crep= 997; - if (s.mlieu < 14) crep= r[s.mlieu]; - if ((s.mlieu== 3) && (num== 2)) crep=162; - if (s.mlieu== 12) - { - if ((num== 3) || (num== 4)) crep=162; - if (num== 5) crep= 159; - } - if (s.mlieu==19) crep=104; - if (s.mlieu==16) crep=155; - } + if (caff > 99) { + st7(caff); + return; + } + if (! syn) ecr3("fouiller"); + tfleche(); + if (anyone || iesc) return; + if (s.mlieu == 23) { + crep = 1504; + tperd(); + return; + } + tcoord(6); + if (num == 0) { + tcoord(7); + if (num != 0) { + cx = 0; + do { + cx = cx + 1; + } while (!((cx > 6) || (num == ord(touv[cx])))); + if (num != ord(touv[cx])) crep = 187; + else { + if (ipers > 0) s.conf = s.conf + 3; + rechai(mchai); + if (mchai != 0) { + cs = 0; + is = 0; + fouil = true; + mfoudi(); + tsuiv(); + } else crep = 997; + } + } else { + tcoord(8); + crep = 997; + if (num != 0) { + if (ipers > 0) s.conf = s.conf + 3; + if ((s.mlieu != 24) && (s.mlieu != 17) && (s.mlieu != 13)) { + if (s.mlieu == 2) { + crep = 123; + if (s.iloic != 0) treg(s.iloic); + } + if (s.mlieu == 16) { + crep = 123; + if (s.icryp != 0) treg(s.icryp); + } + } + } + } + } else { + if (ipers > 0) s.conf = s.conf + 3; + crep = 997; + if (s.mlieu < 14) crep = r[s.mlieu]; + if ((s.mlieu == 3) && (num == 2)) crep = 162; + if (s.mlieu == 12) { + if ((num == 3) || (num == 4)) crep = 162; + if (num == 5) crep = 159; + } + if (s.mlieu == 19) crep = 104; + if (s.mlieu == 16) crep = 155; + } } -/* overlay */ void tsfouiller() -{ - if (s.derobj!=0) st7(s.derobj); else crep= 186; +/* overlay */ void tsfouiller() { + if (s.derobj != 0) st7(s.derobj); + else crep = 186; } -/* overlay */ void touvrir() -{ - integer cx,haz; +/* overlay */ void touvrir() { + integer cx, haz; - if (! syn) ecr3("ouvrir"); - if (caff== 26) - { - if (ment!= 0) - { - msg[4]= entrer; - syn= true; - } - else crep= 997; - return; - } - if (caff== 15) - { - aldepl(); - return; - } - tfleche(); - if ((anyone) || (iesc)) return; - tcoord(7); - if (num!= 0) - { - if (ipers> 0) s.conf= s.conf+ 2; - iouv= iouv+ 1; - cx= 0; - do { - cx= cx+ 1; - } while (!((cx> 6) || (ord(touv[cx])== 0) || (ord(touv[cx])== num))); - if (ord(touv[cx])!= num) - { - if (! - ( - ( (num== 3) && ((s.mlieu== 0) || (s.mlieu== 9) || (s.mlieu== 5) || (s.mlieu== 7)) ) - || - ((num== 4) && ((s.mlieu== 1) || (s.mlieu== 2) || (s.mlieu== 6))) || - ((s.mlieu== 4) && (num== 5)) || - ((num== 6) && ((s.mlieu== 7) || (s.mlieu== 10) || - (s.mlieu== 8) || (s.mlieu== 13))) || - ((s.mlieu== 8) && (num== 2)) || - ((s.mlieu== 12) && (num== 7)))) - { - if (((s.mlieu> 10) && (s.mlieu< 14)) || - ((s.mlieu> 6) && (s.mlieu< 10)) || - (s.mlieu== 0) || (s.mlieu== 2) || (s.mlieu== 5)) - { - haz= hazard(1, 4); - if (haz== 3) parole(7, 9, 1); - } - touv[cx]= chr(num); - aniof(1,num); - } - cx= s.mlieu; - if (s.mlieu== 16) cx= 14; - crep= tabdon[aouvr+ (cx* 7)+ pred(integer,num)]; - if (crep== 254) crep= 999; - } - else crep= 18; - } + if (! syn) ecr3("ouvrir"); + if (caff == 26) { + if (ment != 0) { + msg[4] = entrer; + syn = true; + } else crep = 997; + return; + } + if (caff == 15) { + aldepl(); + return; + } + tfleche(); + if ((anyone) || (iesc)) return; + tcoord(7); + if (num != 0) { + if (ipers > 0) s.conf = s.conf + 2; + iouv = iouv + 1; + cx = 0; + do { + cx = cx + 1; + } while (!((cx > 6) || (ord(touv[cx]) == 0) || (ord(touv[cx]) == num))); + if (ord(touv[cx]) != num) { + if (! + ( + ((num == 3) && ((s.mlieu == 0) || (s.mlieu == 9) || (s.mlieu == 5) || (s.mlieu == 7))) + || + ((num == 4) && ((s.mlieu == 1) || (s.mlieu == 2) || (s.mlieu == 6))) || + ((s.mlieu == 4) && (num == 5)) || + ((num == 6) && ((s.mlieu == 7) || (s.mlieu == 10) || + (s.mlieu == 8) || (s.mlieu == 13))) || + ((s.mlieu == 8) && (num == 2)) || + ((s.mlieu == 12) && (num == 7)))) { + if (((s.mlieu > 10) && (s.mlieu < 14)) || + ((s.mlieu > 6) && (s.mlieu < 10)) || + (s.mlieu == 0) || (s.mlieu == 2) || (s.mlieu == 5)) { + haz = hazard(1, 4); + if (haz == 3) parole(7, 9, 1); + } + touv[cx] = chr(num); + aniof(1, num); + } + cx = s.mlieu; + if (s.mlieu == 16) cx = 14; + crep = tabdon[aouvr + (cx * 7) + pred(integer, num)]; + if (crep == 254) crep = 999; + } else crep = 18; + } } -/* overlay */ void tmettre() -{ - integer quel; - boolean entre; - phrase st; - str255 str_; - integer i,tay; +/* overlay */ void tmettre() { + integer quel; + boolean entre; + phrase st; + str255 str_; + integer i, tay; - if (s.derobj== 0) - { - crep= 186; - return; - } - if (! syn) ecr3("mettre"); - tfleche(); - if (iesc) crep= 998; - if ((anyone) || (iesc)) return; - tcoord(8); - if (num!= 0) - { - crep= 999; - if (caff== 13) - { - if (num== 1) - { - if (s.iboul!= 0) crep= 188; else - { - s.iboul= s.derobj; - if (s.derobj== 141) aniof(1,7); - } - } - else - if (s.ibag!= 0) crep= 188; else - { - s.ibag= s.derobj; - if (s.derobj== 159) aniof(1,6); - } - } - if (caff== 14) - if (s.icave!=0) crep= 188; else - { - s.icave= s.derobj; - if (s.derobj== 151) - { - aniof(1,2); - aniof(1,1); - repon(2,165); - maivid(); - parole(6, -9, 1); - quel= do_alert(stouinon,1); - if (quel==1) { - deline(582,st,tay); - i= do_alert(delig,1); - tesok=false; - entre= ques(); - hide_mouse(); - hirs(); - dessine_rouleau(); - clsf2(); - clsf3(); - show_mouse(); - tinke(); - pendule(); - if (ipers!=0) affper(ipers); - else person(); - menu_aff(); - if (entre) - { - s.mlieu= 17; - tmlieu(17); - } - else - { - tmlieu(s.mlieu); - writepal(14); - dessin(0); - aniof(1,2); - aniof(1,1); - deline(577,st,tay); - i= do_alert(delig,1); - aniof(2,1); - crep= 166; - } - affrep(); - } - else { - aniof(2,1); - crep= 166; - tesok=true; - } - return; - } - } - if (caff== 16) - if (s.icryp== 0) s.icryp= s.derobj; else crep= 188; - if (caff== 17) - if (s.ivier!=0) crep= 188; else - if (s.derobj== 143) - { - s.ivier= 143; - aniof(1,1); - } - else - { - crep= 1512; - tperd(); - } - if (caff== 24) - if (s.ipuit!= 0) crep= 188; else - if ((s.derobj== 140) || (s.derobj== 120)) - { - s.ipuit= s.derobj; - aniof(1,1); - } - else crep= 185; - if (crep!= 188) maivid(); - } + if (s.derobj == 0) { + crep = 186; + return; + } + if (! syn) ecr3("mettre"); + tfleche(); + if (iesc) crep = 998; + if ((anyone) || (iesc)) return; + tcoord(8); + if (num != 0) { + crep = 999; + if (caff == 13) { + if (num == 1) { + if (s.iboul != 0) crep = 188; + else { + s.iboul = s.derobj; + if (s.derobj == 141) aniof(1, 7); + } + } else if (s.ibag != 0) crep = 188; + else { + s.ibag = s.derobj; + if (s.derobj == 159) aniof(1, 6); + } + } + if (caff == 14) + if (s.icave != 0) crep = 188; + else { + s.icave = s.derobj; + if (s.derobj == 151) { + aniof(1, 2); + aniof(1, 1); + repon(2, 165); + maivid(); + parole(6, -9, 1); + quel = do_alert(stouinon, 1); + if (quel == 1) { + deline(582, st, tay); + i = do_alert(delig, 1); + tesok = false; + entre = ques(); + hide_mouse(); + hirs(); + dessine_rouleau(); + clsf2(); + clsf3(); + show_mouse(); + tinke(); + pendule(); + if (ipers != 0) affper(ipers); + else person(); + menu_aff(); + if (entre) { + s.mlieu = 17; + tmlieu(17); + } else { + tmlieu(s.mlieu); + writepal(14); + dessin(0); + aniof(1, 2); + aniof(1, 1); + deline(577, st, tay); + i = do_alert(delig, 1); + aniof(2, 1); + crep = 166; + } + affrep(); + } else { + aniof(2, 1); + crep = 166; + tesok = true; + } + return; + } + } + if (caff == 16) + if (s.icryp == 0) s.icryp = s.derobj; + else crep = 188; + if (caff == 17) + if (s.ivier != 0) crep = 188; + else if (s.derobj == 143) { + s.ivier = 143; + aniof(1, 1); + } else { + crep = 1512; + tperd(); + } + if (caff == 24) + if (s.ipuit != 0) crep = 188; + else if ((s.derobj == 140) || (s.derobj == 120)) { + s.ipuit = s.derobj; + aniof(1, 1); + } else crep = 185; + if (crep != 188) maivid(); + } } -/* overlay */ void ttourner() -{ - integer quel; +/* overlay */ void ttourner() { + integer quel; - if (caff> 99) - { - crep= 149; - return; - } - if (! syn) ecr3("tourner"); - tfleche(); - if ((anyone) || (iesc)) return; - tcoord(9); - if (num!= 0) - { - crep= 997; - if ((s.mlieu== 13) && (s.ibag== 159) && (s.iboul== 141)) - { - repon(2,167); - parole(7, 9, 1); - quel= do_alert(stouinon,1); - if (quel== 1) solu= true; else crep= 168; - } - if ((s.mlieu== 17) && (s.ivier== 143)) - { - repon(2, 175); - clsf3(); - parole(6, -9, 1); - quel= do_alert(stouinon,1); - if (quel== 1) - { - s.mlieu= 16; - affrep(); - } - else crep= 176; - } - } + if (caff > 99) { + crep = 149; + return; + } + if (! syn) ecr3("tourner"); + tfleche(); + if ((anyone) || (iesc)) return; + tcoord(9); + if (num != 0) { + crep = 997; + if ((s.mlieu == 13) && (s.ibag == 159) && (s.iboul == 141)) { + repon(2, 167); + parole(7, 9, 1); + quel = do_alert(stouinon, 1); + if (quel == 1) solu = true; + else crep = 168; + } + if ((s.mlieu == 17) && (s.ivier == 143)) { + repon(2, 175); + clsf3(); + parole(6, -9, 1); + quel = do_alert(stouinon, 1); + if (quel == 1) { + s.mlieu = 16; + affrep(); + } else crep = 176; + } + } } -/* overlay */ void tcacher() -{ - if (! syn) ecr3("se cacher"); - tfleche(); - if (! (anyone) && ! (iesc)) - { - tcoord(10); - if (num== 0) cache= false; else - { - cache= true; - crep= 999; - } - } +/* overlay */ void tcacher() { + if (! syn) ecr3("se cacher"); + tfleche(); + if (!(anyone) && !(iesc)) { + tcoord(10); + if (num == 0) cache = false; + else { + cache = true; + crep = 999; + } + } } -/* overlay */ void tattacher() -{ - if (s.derobj== 0) crep= 186; else - { - if (! syn) ecr3("attacher"); - tfleche(); - if (! (anyone) && ! (iesc)) - { - tcoord(8); - crep= 997; - if ((num!= 0) && (s.mlieu== 24)) - { - crep= 999; - if ((s.derobj== 120) || (s.derobj== 140)) - { - s.ipuit= s.derobj; - aniof(1,1); - } - else crep= 185; - maivid(); - } - } - } +/* overlay */ void tattacher() { + if (s.derobj == 0) crep = 186; + else { + if (! syn) ecr3("attacher"); + tfleche(); + if (!(anyone) && !(iesc)) { + tcoord(8); + crep = 997; + if ((num != 0) && (s.mlieu == 24)) { + crep = 999; + if ((s.derobj == 120) || (s.derobj == 140)) { + s.ipuit = s.derobj; + aniof(1, 1); + } else crep = 185; + maivid(); + } + } + } } -/* overlay */ void tfermer() -{ - integer cx,chai; +/* overlay */ void tfermer() { + integer cx, chai; - if (! syn) ecr3("fermer"); - if (caff< 26) - { - tfleche(); - if (iesc) crep= 998; - if ((anyone) || (iesc)) return; - tcoord(7); - if (num!= 0) - { - cx= 0; - do { - cx= cx+ 1; - } while (!((cx> 6) || (num== ord(touv[cx])))); - if (num== ord(touv[cx])) - { - aniof(2,num); - crep= 998; - touv[cx]= chr(0); - iouv= iouv- 1; - if (iouv< 0) iouv= 0; - chai= 9999; - rechai(chai); - if (mchai== chai) mchai= 0; - } - else crep= 187; - } - } - if (caff== 26) crep= 999; + if (! syn) ecr3("fermer"); + if (caff < 26) { + tfleche(); + if (iesc) crep = 998; + if ((anyone) || (iesc)) return; + tcoord(7); + if (num != 0) { + cx = 0; + do { + cx = cx + 1; + } while (!((cx > 6) || (num == ord(touv[cx])))); + if (num == ord(touv[cx])) { + aniof(2, num); + crep = 998; + touv[cx] = chr(0); + iouv = iouv - 1; + if (iouv < 0) iouv = 0; + chai = 9999; + rechai(chai); + if (mchai == chai) mchai = 0; + } else crep = 187; + } + } + if (caff == 26) crep = 999; } -/* overlay */ void tfrapper() -{ - integer l,p,haz; +/* overlay */ void tfrapper() { + integer l, p, haz; - if (! syn) ecr3("frapper"); - if (s.mlieu== 15) - { - l= do_alert("[1][ | Avant, utilisez le menu DEP...][ok]",1); - return; - } - if (s.mlieu< 25) - { - tfleche(); - if (! (anyone) && ! (iesc)) - if ((s.mlieu< 19) && (s.mlieu!= 15)) crep= 133; else crep= 997; - return; - } - if (s.mlieu== 26) - { - haz= (hazard(0, 8))- 4; - parole(11, haz, 1); - ecfren(p,haz,s.conf,ment); - l= ment; - if (l!= 0) - if (p!= -500) - { - if (haz> p) crep= 190; else - { - becfren(l); - frap(); - } - } - else frap(); - if (ment== 8) crep= 190; - } + if (! syn) ecr3("frapper"); + if (s.mlieu == 15) { + l = do_alert("[1][ | Avant, utilisez le menu DEP...][ok]", 1); + return; + } + if (s.mlieu < 25) { + tfleche(); + if (!(anyone) && !(iesc)) + if ((s.mlieu < 19) && (s.mlieu != 15)) crep = 133; + else crep = 997; + return; + } + if (s.mlieu == 26) { + haz = (hazard(0, 8)) - 4; + parole(11, haz, 1); + ecfren(p, haz, s.conf, ment); + l = ment; + if (l != 0) + if (p != -500) { + if (haz > p) crep = 190; + else { + becfren(l); + frap(); + } + } else frap(); + if (ment == 8) crep = 190; + } } -/* overlay */ void tposer() -{ - integer cx,chai; +/* overlay */ void tposer() { + integer cx, chai; - if (! syn) ecr3("poser"); - if (s.derobj== 0) crep= 186; else - { - if (caff> 99) - { - crep= 999; - ajchai(); - if (crep!= 192) maivid(); - return; - } - tfleche(); - if ((anyone) || (iesc)) return; - tcoord(7); - crep= 124; - if (num!= 0) - { - rechai(chai); - if (chai== 0) crep= 997; else - { - cx= 0; - do { - cx= cx+ 1; - } while (!((cx> 6) || (num== ord(touv[cx])))); - if (num!= ord(touv[cx])) crep= 187; else - { - mchai= chai; - crep= 999; - } - } - } - else - { - tcoord(8); - if (num!= 0) - { - crep= 998; - if (caff== 2) - if (s.iloic!= 0) crep= 188; else s.iloic= s.derobj; - if (caff== 13) - { - if (num== 1) - { - if (s.iboul!= 0) crep= 188; else s.iboul= s.derobj; - } - else - if (s.ibag!= 0) crep= 188; else s.ibag= s.derobj; - } - if (caff== 16) - if (s.icryp!= 0) crep= 188; else s.icryp= s.derobj; - if (caff== 24) crep= 185; - if ((caff== 14) || (caff== 17)) crep= 124; - } - else - { - crep= 124; - if (caff== 24) - { - tcoord(5); - if (num!= 0) crep= 185; - } - } - } - if (caff== 23) crep= 185; - if ((crep== 999) || (crep== 185) || (crep== 998)) - { - if (crep== 999) ajchai(); - if (crep!= 192) maivid(); - } - } + if (! syn) ecr3("poser"); + if (s.derobj == 0) crep = 186; + else { + if (caff > 99) { + crep = 999; + ajchai(); + if (crep != 192) maivid(); + return; + } + tfleche(); + if ((anyone) || (iesc)) return; + tcoord(7); + crep = 124; + if (num != 0) { + rechai(chai); + if (chai == 0) crep = 997; + else { + cx = 0; + do { + cx = cx + 1; + } while (!((cx > 6) || (num == ord(touv[cx])))); + if (num != ord(touv[cx])) crep = 187; + else { + mchai = chai; + crep = 999; + } + } + } else { + tcoord(8); + if (num != 0) { + crep = 998; + if (caff == 2) + if (s.iloic != 0) crep = 188; + else s.iloic = s.derobj; + if (caff == 13) { + if (num == 1) { + if (s.iboul != 0) crep = 188; + else s.iboul = s.derobj; + } else if (s.ibag != 0) crep = 188; + else s.ibag = s.derobj; + } + if (caff == 16) + if (s.icryp != 0) crep = 188; + else s.icryp = s.derobj; + if (caff == 24) crep = 185; + if ((caff == 14) || (caff == 17)) crep = 124; + } else { + crep = 124; + if (caff == 24) { + tcoord(5); + if (num != 0) crep = 185; + } + } + } + if (caff == 23) crep = 185; + if ((crep == 999) || (crep == 185) || (crep == 998)) { + if (crep == 999) ajchai(); + if (crep != 192) maivid(); + } + } } -/* overlay */ void tecouter() -{ - integer l,p,haz,j,h,m; +/* overlay */ void tecouter() { + integer l, p, haz, j, h, m; - if (s.mlieu!= 26) crep= 101; else - { - if (ipers!= 0) s.conf= s.conf+ 1; - ecfren(p,haz,s.conf,ment); - l= ment; - if (l!= 0) - if (p!= -500) - { - if (haz> p) crep= 101; else - { - becfren(l); - calch(j,h,m); - haz= hazard(1,100); - if ((h>= 0) && (h< 8)) - { - if (haz> 30) crep= 101; else crep= 178; - } - else - if (haz> 70) crep= 101; else crep= 178; - } - } - else crep= 178; - } + if (s.mlieu != 26) crep = 101; + else { + if (ipers != 0) s.conf = s.conf + 1; + ecfren(p, haz, s.conf, ment); + l = ment; + if (l != 0) + if (p != -500) { + if (haz > p) crep = 101; + else { + becfren(l); + calch(j, h, m); + haz = hazard(1, 100); + if ((h >= 0) && (h < 8)) { + if (haz > 30) crep = 101; + else crep = 178; + } else if (haz > 70) crep = 101; + else crep = 178; + } + } else crep = 178; + } } -/* overlay */ void tmanger() -{ - integer j,h,m; +/* overlay */ void tmanger() { + integer j, h, m; - if ((s.mlieu> 15) && (s.mlieu< 26)) - crep= 148; - else - { - tsort(); - s.mlieu= 10; - caff= 10; - debloc(s.mlieu); - tmlieu(s.mlieu); - calch(j,h,m); - if ((h== 12) || (h== 13) || (h== 19)) - { - s.conf= s.conf- (s.conf / 7); - if (h== 12) - if (m== 0) h= 4; else h= 3; - if ((h== 13) || (h== 19)) - if (m== 0) h= 2; else h= 1; - jh= jh+ h; - crep= 135; - tinke(); - } - else crep= 134; - } + if ((s.mlieu > 15) && (s.mlieu < 26)) + crep = 148; + else { + tsort(); + s.mlieu = 10; + caff = 10; + debloc(s.mlieu); + tmlieu(s.mlieu); + calch(j, h, m); + if ((h == 12) || (h == 13) || (h == 19)) { + s.conf = s.conf - (s.conf / 7); + if (h == 12) + if (m == 0) h = 4; + else h = 3; + if ((h == 13) || (h == 19)) + if (m == 0) h = 2; + else h = 1; + jh = jh + h; + crep = 135; + tinke(); + } else crep = 134; + } } -/* overlay */ void tentrer() -{ - integer x, z; +/* overlay */ void tentrer() { + integer x, z; - if ((s.mlieu== 21) || (s.mlieu== 22)) - { - t1sama(); - tmlieu(s.mlieu); - } - else - if (s.mlieu== 15) aldepl(); else - if (ment== 0) crep= 997; else - { - if ((ment== 9) && (s.derobj!= 136)) - { - crep= 189; - s.teauto[8]= '*'; - } - else - { - if (! blo) t11(ment, z); - if (z!= 0) - { - if ((ment== 3) || (ment== 7)) crep= 179; else - { - x= (hazard(0, 10))- 5; - parole(7, x, 1); - aniof(1,1); -/* tkey(5,32000);*/ - tip(z,x); - s.conf= s.conf+ 1; - s.mlieu= 15; - msg[3]= discut; - msg[4]= disc[x]; - syn= true; - if (ment== 9) - { - col= true; - caff= 70; - afdes(0); - repon(2,caff); - } - else col= false; - debloc(ment); - ment= 0; - } - } - else - { - x= (hazard(0, 10))- 5; - parole(7, x, 1); - aniof(1,1); -/* tkey(1,32000);*/ - s.mlieu= ment; - affrep(); - debloc(s.mlieu); - tmlieu(s.mlieu); - ment= 0; - mpers= 0; - ipers= 0; - } - } - } + if ((s.mlieu == 21) || (s.mlieu == 22)) { + t1sama(); + tmlieu(s.mlieu); + } else if (s.mlieu == 15) aldepl(); + else if (ment == 0) crep = 997; + else { + if ((ment == 9) && (s.derobj != 136)) { + crep = 189; + s.teauto[8] = '*'; + } else { + if (! blo) t11(ment, z); + if (z != 0) { + if ((ment == 3) || (ment == 7)) crep = 179; + else { + x = (hazard(0, 10)) - 5; + parole(7, x, 1); + aniof(1, 1); + /* tkey(5,32000);*/ + tip(z, x); + s.conf = s.conf + 1; + s.mlieu = 15; + msg[3] = discut; + msg[4] = disc[x]; + syn = true; + if (ment == 9) { + col = true; + caff = 70; + afdes(0); + repon(2, caff); + } else col = false; + debloc(ment); + ment = 0; + } + } else { + x = (hazard(0, 10)) - 5; + parole(7, x, 1); + aniof(1, 1); + /* tkey(1,32000);*/ + s.mlieu = ment; + affrep(); + debloc(s.mlieu); + tmlieu(s.mlieu); + ment = 0; + mpers = 0; + ipers = 0; + } + } + } } -/* overlay */ void tdormir() -{ - const char m1[] = "D‚sirez-vous vous r‚veiller?"; - integer z,j,h,m,quel; +/* overlay */ void tdormir() { + const char m1[] = "D‚sirez-vous vous r‚veiller?"; + integer z, j, h, m, quel; - if ((s.mlieu> 15) && (s.mlieu< 26)) - { - crep= 148; - return; - } - if (s.mlieu != 0) - { - tsort(); - s.mlieu= 0; - affrep(); - afdes(0); - debloc(s.mlieu); - tmlieu(s.mlieu); - } - clsf3(); - clsf2(); - ecrf2(); - ecr2(m1); - calch(j,h,m); - do { - if (h< 8) - { - s.conf= s.conf- (s.conf / 20); - z= (7- h)* 2; - if (m== 30) z= z- 1; - jh= jh+ z; - h= 7; - } - jh= jh+ 2; - h= h+ 1; - if (h> 23) h= 0; - tinke(); - quel= do_alert(stouinon,1); - anyone= false; - } while (!(quel== 1)); - crep= 998; - num= 0; + if ((s.mlieu > 15) && (s.mlieu < 26)) { + crep = 148; + return; + } + if (s.mlieu != 0) { + tsort(); + s.mlieu = 0; + affrep(); + afdes(0); + debloc(s.mlieu); + tmlieu(s.mlieu); + } + clsf3(); + clsf2(); + ecrf2(); + ecr2(m1); + calch(j, h, m); + do { + if (h < 8) { + s.conf = s.conf - (s.conf / 20); + z = (7 - h) * 2; + if (m == 30) z = z - 1; + jh = jh + z; + h = 7; + } + jh = jh + 2; + h = h + 1; + if (h > 23) h = 0; + tinke(); + quel = do_alert(stouinon, 1); + anyone = false; + } while (!(quel == 1)); + crep = 998; + num = 0; } -/* overlay */ void tdefoncer() -{ - if (! syn) ecr3("d‚foncer"); - if (caff< 25) tfleche(); - if ((! anyone) && (! iesc)) - if (s.mlieu!= 26) crep= 997; else - { - crep= 143; - s.conf= s.conf+ 2; - } +/* overlay */ void tdefoncer() { + if (! syn) ecr3("d‚foncer"); + if (caff < 25) tfleche(); + if ((! anyone) && (! iesc)) + if (s.mlieu != 26) crep = 997; + else { + crep = 143; + s.conf = s.conf + 2; + } } -/* overlay */ void tsortir() -{ - integer lx; +/* overlay */ void tsortir() { + integer lx; - tsort(); - crep= 0; - if ((s.mlieu== 19) || (s.mlieu== 21) || (s.mlieu== 22) - || (s.mlieu== 24)) crep= 997; else - { - if ((s.mlieu< 16) || (s.mlieu== 26)) lx= 10; - if ((s.mlieu== 10) || (s.mlieu== 20)) lx= 21; - if ((s.mlieu< 10) || (s.mlieu== 13)) lx= 15; - if (s.mlieu== 16) - { - lx= 17; - crep= 176; - } - if (s.mlieu== 17) t23coul(lx); - if (s.mlieu== 23) lx= 24; - if (crep!= 997) s.mlieu= lx; - caff= lx; - if (crep== 0) crep= lx; - debloc(lx); - tmlieu(lx); - } + tsort(); + crep = 0; + if ((s.mlieu == 19) || (s.mlieu == 21) || (s.mlieu == 22) + || (s.mlieu == 24)) crep = 997; + else { + if ((s.mlieu < 16) || (s.mlieu == 26)) lx = 10; + if ((s.mlieu == 10) || (s.mlieu == 20)) lx = 21; + if ((s.mlieu < 10) || (s.mlieu == 13)) lx = 15; + if (s.mlieu == 16) { + lx = 17; + crep = 176; + } + if (s.mlieu == 17) t23coul(lx); + if (s.mlieu == 23) lx = 24; + if (crep != 997) s.mlieu = lx; + caff = lx; + if (crep == 0) crep = lx; + debloc(lx); + tmlieu(lx); + } } -/* overlay */ void tattendre() -{ - integer quel; +/* overlay */ void tattendre() { + integer quel; - mpers= 0; - clsf3(); - do { - jh= jh+ 1; - tinke(); - if (! blo) t11(s.mlieu, quel); - if ((ipers!= 0) && (mpers== 0)) - { - crep= 998; - if ((s.mlieu== 13) || (s.mlieu== 14)) cavegre(); - if ((s.mlieu> 0) && (s.mlieu< 10)) anyone= true; - mpers= ipers; - if (! anyone) tinke(); - return; - } - repon(2,102); - quel= do_alert(stouinon,1); - } while (!(quel== 2)); - crep= 998; - if (! anyone) tinke(); + mpers = 0; + clsf3(); + do { + jh = jh + 1; + tinke(); + if (! blo) t11(s.mlieu, quel); + if ((ipers != 0) && (mpers == 0)) { + crep = 998; + if ((s.mlieu == 13) || (s.mlieu == 14)) cavegre(); + if ((s.mlieu > 0) && (s.mlieu < 10)) anyone = true; + mpers = ipers; + if (! anyone) tinke(); + return; + } + repon(2, 102); + quel = do_alert(stouinon, 1); + } while (!(quel == 2)); + crep = 998; + if (! anyone) tinke(); } -/* overlay */ void tsonder() -{ - if (! syn) ecr3("sonder"); - if (caff< 27) - { - tfleche(); - if (! (anyone) && (! iesc)) crep= 145; - num= 0; - } +/* overlay */ void tsonder() { + if (! syn) ecr3("sonder"); + if (caff < 27) { + tfleche(); + if (!(anyone) && (! iesc)) crep = 145; + num = 0; + } } /* overlay */ void tparler() { - array<1,46,boolean> te; - integer ix, cy, cx, max, haz, suj, co,lig,icm, - i, tay, choi, x, y, c; - char tou; - array<1,46,varying_string<40> > lib; - phrase st; - boolean f; + array<1, 46, boolean> te; + integer ix, cy, cx, max, haz, suj, co, lig, icm, + i, tay, choi, x, y, c; + char tou; + array<1, 46, varying_string<40> > lib; + phrase st; + boolean f; - finfouil(); - if (col) suj= 128; else - { - cx= 0; - do { - cx= cx+ 1; - } while (!(disc[cx]== msg[4])); - caff= 69+ cx; - afdes(0); - repon(2,caff); - suj= caff+ 60; - } - tkey1(false); - mennor(); - hide_mouse(); - hirs(); - premtet(); - sparl(0,suj); - hirs(); - for( ix= 1; ix <= 46; ix ++) te[ix]= false; - for( ix=1; ix <= 45; ix ++) - { - deline(ix+c_tparler,st,tay); - lib[ix]= delig; - for( i=tay; i <= 40; i ++) lib[ix]=lib[ix]+' '; - } - lib[46]=lib[45]; - lib[45]=' '; - show_mouse(); - do { - choi= 0; - icm= 0; - co= 0; - lig= 0; - do { - icm= succ(integer, icm ); - putxy(co,lig); - if (s.teauto[icm]=='*') - if (te[icm]) writetp(lib[icm],1); - else writetp(lib[icm],0); - if (icm==23) { - lig= 0; - co= 320; - } - else lig= lig + 8; - } while (!(icm==42)); - putxy(320,176); - writetp(lib[46],0); - tou= '\0'; - do { - mov_mouse(f,tou); -/* if keypressed then read(kbd,tou);*/ - read_pos_mouse(x,y,c); - x= x *(3-res); - if (x>319) cx= 41; else cx= 1; - cy= succ(integer,(cardinal)y >> 3); /* 0-199 => 1-25 */ - if ((cy>23) || ((cx==41) && (set::of(range(20,22), eos).has(cy)))) - { - if (choi!=0) - { - lig= ((choi-1) % 23) << 3; - if (choi>23) co= 320; else co= 0; - putxy(co,lig); - if (te[choi]) writetp(lib[choi],0); - else writetp(lib[choi],1); - te[choi]= ! te[choi]; - choi= 0; - } - } - else { - ix= cy; - if (cx==41) ix= ix+23; - if (ix!=choi) - { - if (choi!=0) - { - lig= ((choi-1) % 23) << 3; - if (choi>23) co= 320; else co= 0; - putxy(co,lig); - if (te[choi]) writetp(lib[choi],0); - else writetp(lib[choi],1); - te[choi]= ! te[choi]; - } - if ((s.teauto[ix]=='*') || (ix==46)) - { - lig= ((ix-1) % 23) << 3; - if (ix>23) co= 320; else co= 0; - putxy(co,lig); - if (te[ix]) writetp(lib[ix],0); - else writetp(lib[ix],1); - te[ix]= ! te[ix]; - choi= ix; - } - else choi= 0; - } - } - } while (!((tou=='\15') || ( ((c!=0) || clic) && (choi!=0)))); - clic=false; - if (choi!=46) - { - ix= choi-1; - if (col) - { - col= false; - s.mlieu= 15; - if (iouv> 0) max= 8; else max= 4; - haz= hazard(1,max); - if (haz== 2) suj= 129; else - { - suj= 138; - s.conf= s.conf+ (3* (s.conf / 10)); - } - } - else - if (nbrep[caff- 69]< nbrepm[caff- 69]) - { - suj= tabdon[arep+ (ix << 3)+ (caff- 70)]; - s.conf= s.conf+ tabdon[arcf+ ix]; - nbrep[caff- 69]= nbrep[caff- 69]+ 1; - } - else - { - s.conf= s.conf+ 3; - suj= 139; - } - hide_mouse(); - hirs(); - premtet(); - sparl(0, suj); - show_mouse(); - if ((suj== 84) || (suj== 86)) - { - s.pourc[5]= '*'; - s.teauto[7]= '*'; - } - if ((suj== 106) || (suj== 108) || (suj== 94)) - { - for( ix= 29; ix <= 31; ix ++) s.teauto[ix]= '*'; - s.pourc[7]= '*'; - } - if (suj== 70) - { - s.pourc[8]= '*'; - s.teauto[32]= '*'; - } - hide_mouse(); - hirs(); - show_mouse(); - } - } while (!((choi== 46) || (suj== 138))); - if (col) - { - s.conf= s.conf+ (3* (s.conf / 10)); - hide_mouse(); - hirs(); - premtet(); - sparl(0, 138); - show_mouse(); - col= false; - s.mlieu= 15; - } - ctrm= 0; - hide_mouse(); - hirs(); - dessine_rouleau(); - show_mouse(); - affper(ipers); - tinke(); - pendule(); - affrep(); -/* chech;*/ - tmlieu(s.mlieu); - clsf3(); + finfouil(); + if (col) suj = 128; + else { + cx = 0; + do { + cx = cx + 1; + } while (!(disc[cx] == msg[4])); + caff = 69 + cx; + afdes(0); + repon(2, caff); + suj = caff + 60; + } + tkey1(false); + mennor(); + hide_mouse(); + hirs(); + premtet(); + sparl(0, suj); + hirs(); + for (ix = 1; ix <= 46; ix ++) te[ix] = false; + for (ix = 1; ix <= 45; ix ++) { + deline(ix + c_tparler, st, tay); + lib[ix] = delig; + for (i = tay; i <= 40; i ++) lib[ix] = lib[ix] + ' '; + } + lib[46] = lib[45]; + lib[45] = ' '; + show_mouse(); + do { + choi = 0; + icm = 0; + co = 0; + lig = 0; + do { + icm = succ(integer, icm); + putxy(co, lig); + if (s.teauto[icm] == '*') + if (te[icm]) writetp(lib[icm], 1); + else writetp(lib[icm], 0); + if (icm == 23) { + lig = 0; + co = 320; + } else lig = lig + 8; + } while (!(icm == 42)); + putxy(320, 176); + writetp(lib[46], 0); + tou = '\0'; + do { + mov_mouse(f, tou); + /* if keypressed then read(kbd,tou);*/ + read_pos_mouse(x, y, c); + x = x * (3 - res); + if (x > 319) cx = 41; + else cx = 1; + cy = succ(integer, (cardinal)y >> 3); /* 0-199 => 1-25 */ + if ((cy > 23) || ((cx == 41) && (set::of(range(20, 22), eos).has(cy)))) { + if (choi != 0) { + lig = ((choi - 1) % 23) << 3; + if (choi > 23) co = 320; + else co = 0; + putxy(co, lig); + if (te[choi]) writetp(lib[choi], 0); + else writetp(lib[choi], 1); + te[choi] = ! te[choi]; + choi = 0; + } + } else { + ix = cy; + if (cx == 41) ix = ix + 23; + if (ix != choi) { + if (choi != 0) { + lig = ((choi - 1) % 23) << 3; + if (choi > 23) co = 320; + else co = 0; + putxy(co, lig); + if (te[choi]) writetp(lib[choi], 0); + else writetp(lib[choi], 1); + te[choi] = ! te[choi]; + } + if ((s.teauto[ix] == '*') || (ix == 46)) { + lig = ((ix - 1) % 23) << 3; + if (ix > 23) co = 320; + else co = 0; + putxy(co, lig); + if (te[ix]) writetp(lib[ix], 0); + else writetp(lib[ix], 1); + te[ix] = ! te[ix]; + choi = ix; + } else choi = 0; + } + } + } while (!((tou == '\15') || (((c != 0) || clic) && (choi != 0)))); + clic = false; + if (choi != 46) { + ix = choi - 1; + if (col) { + col = false; + s.mlieu = 15; + if (iouv > 0) max = 8; + else max = 4; + haz = hazard(1, max); + if (haz == 2) suj = 129; + else { + suj = 138; + s.conf = s.conf + (3 * (s.conf / 10)); + } + } else if (nbrep[caff - 69] < nbrepm[caff - 69]) { + suj = tabdon[arep + (ix << 3) + (caff - 70)]; + s.conf = s.conf + tabdon[arcf + ix]; + nbrep[caff - 69] = nbrep[caff - 69] + 1; + } else { + s.conf = s.conf + 3; + suj = 139; + } + hide_mouse(); + hirs(); + premtet(); + sparl(0, suj); + show_mouse(); + if ((suj == 84) || (suj == 86)) { + s.pourc[5] = '*'; + s.teauto[7] = '*'; + } + if ((suj == 106) || (suj == 108) || (suj == 94)) { + for (ix = 29; ix <= 31; ix ++) s.teauto[ix] = '*'; + s.pourc[7] = '*'; + } + if (suj == 70) { + s.pourc[8] = '*'; + s.teauto[32] = '*'; + } + hide_mouse(); + hirs(); + show_mouse(); + } + } while (!((choi == 46) || (suj == 138))); + if (col) { + s.conf = s.conf + (3 * (s.conf / 10)); + hide_mouse(); + hirs(); + premtet(); + sparl(0, 138); + show_mouse(); + col = false; + s.mlieu = 15; + } + ctrm = 0; + hide_mouse(); + hirs(); + dessine_rouleau(); + show_mouse(); + affper(ipers); + tinke(); + pendule(); + affrep(); + /* chech;*/ + tmlieu(s.mlieu); + clsf3(); } -/* overlay */ void tsentir() -{ - crep= 119; - if (caff< 26) - { - if (! syn) ecr3("sentir"); - tfleche(); - if (! (anyone) && ! (iesc)) - if (caff== 16) crep= 153; - } - else - if (caff== 123) crep= 110; - num= 0; +/* overlay */ void tsentir() { + crep = 119; + if (caff < 26) { + if (! syn) ecr3("sentir"); + tfleche(); + if (!(anyone) && !(iesc)) + if (caff == 16) crep = 153; + } else if (caff == 123) crep = 110; + num = 0; } -/* overlay */ void tgratter() -{ - crep= 155; - if (caff< 27) - { - if (! syn) ecr3("gratter"); - tfleche(); - } - num= 0; +/* overlay */ void tgratter() { + crep = 155; + if (caff < 27) { + if (! syn) ecr3("gratter"); + tfleche(); + } + num = 0; } /* NIVEAU 2 */ -/* overlay */ void tmaj1() /* Le jeu est termin‚ !!! */ -{ - arret= true; - tlu(13,152); - maivid(); - clsf1(); - clsf2(); - clsf3(); - repon(9,1509); - tkey1(false); - hide_mouse(); - caff= 70; - taffich(); - hirs(); - premtet(); - sparl(0,141); - show_mouse(); - clsf1(); - repon(9,1509); - repon(2,142); - tkey1(false); - caff= 32; - afdes(0); - repon(6,34); - repon(2,35); - musique(0); - tkey1(false); - messint(2036); - tkey1(false); - inzon(); +/* overlay */ void tmaj1() { /* Le jeu est termin‚ !!! */ + arret = true; + tlu(13, 152); + maivid(); + clsf1(); + clsf2(); + clsf3(); + repon(9, 1509); + tkey1(false); + hide_mouse(); + caff = 70; + taffich(); + hirs(); + premtet(); + sparl(0, 141); + show_mouse(); + clsf1(); + repon(9, 1509); + repon(2, 142); + tkey1(false); + caff = 32; + afdes(0); + repon(6, 34); + repon(2, 35); + musique(0); + tkey1(false); + messint(2036); + tkey1(false); + inzon(); } -/* overlay */ void tencore() /* Perdu !!! */ -{ - integer quel; +/* overlay */ void tencore() { /* Perdu !!! */ + integer quel; - clsf2(); - musique(0); - tkey1(false); - maivid(); - inzon(); - dprog(); - vh= 10; - vm= 0; - vj= 0; - min= 0; - heu= 10; - jou= 0; - repon(2,180); - quel= do_alert(stouinon,1); - arret= (quel!=1); + clsf2(); + musique(0); + tkey1(false); + maivid(); + inzon(); + dprog(); + vh = 10; + vm = 0; + vj = 0; + min = 0; + heu = 10; + jou = 0; + repon(2, 180); + quel = do_alert(stouinon, 1); + arret = (quel != 1); } diff --git a/engines/mortevielle/alert.h b/engines/mortevielle/alert.h index c3a45fe529..d059fc3ef3 100644 --- a/engines/mortevielle/alert.h +++ b/engines/mortevielle/alert.h @@ -2,213 +2,196 @@ const integer nligne = 7; -const matrix<1,2,1,3,integer> coord - = {{ {{150, 72, 103}}, - {{143, 107, 183}} }}; - - - -static void decod(str255 s, integer& nbc,integer& nbl,integer& col, str255& c, str30& cs) - { - integer i,k; - boolean v; - - val(s[2],nbc,i); - c= ""; - nbl= 0; i= 5; k= 0; - v=true; col=0; - - while (s[i]!=']') - { - c=c+s[i]; - if ((s[i]=='|') || (s[i+1]==']')) - { - if (k>col) col=k; - k= 0; - nbl=nbl+1; - } - else if (s[i]!=' ') v=false; - i=i+1; - k=k+1; - } - if (v) { - c=""; - col=20; - } - else { - c=c+']'; - col=col+6; - } - i=i+1; - cs=copy(s,i,30); - if (res==2) col= col*6; - else col= col*10; - } - - - -static void posit(integer ji, integer& coldep, integer& esp) - { - putxy(coldep + (40+esp) *pred(integer,ji),98); - } - - - -static void fait_boite(integer lidep,integer nli,integer tx) - { - integer x,y,xx,yy; - - if (tx>640) tx=640; - x= 320- ((cardinal)tx >> 1); - y=pred(integer,lidep) << 3; - xx=x+ tx; - yy=y + (nli << 3); - box(15,gd,x,y,xx,yy,255); - box(0,gd,x,y+2,xx,y+4,255); - box(0,gd,x,yy-4,xx,yy-2,255); - } - - - -static void fait_choix(str30 c, integer& coldep, integer& nbcase, array<1,2,varying_string<3> >& s, integer& esp) - { - integer i,l,x; - char ch; - - i=1; - x=coldep; - for( l=1; l <= nbcase; l ++) - { - s[l]=""; - do { - i=i+1; - ch=c[i]; - s[l]=s[l]+ch; - } while (!(c[i+1]==']')); - i=i+2; - while (length(s[l])<3) s[l]=s[l]+' '; - putxy(x,98); - writeg(string(' ')+s[l]+' ',0); - x= x+esp+40; - } - } - - integer do_alert(str255 str_, integer n) -{ - integer coldep,esp,i,l,nbcase,quoi,ix; - str255 st, chaine; - matrix<1,2,1,2,integer> limit; - char c,dumi; - array<1,2,varying_string<3> > s; - integer cx,cy,cd,nbcol,nblig; - boolean touch,newaff,test,test1,test2,test3,dum; - str30 cas; - - - /*debug('** do_alert **');*/ - integer do_alert_result; - hide_mouse(); - while (keypressed()) input >> kbd >> dumi; - clic=false; - decod(str_,nbcase,nblig,nbcol,chaine,cas); - sauvecr(50,succ(integer,nligne) << 4); - - i=0; - if (chaine=="") - { - fait_boite(10,5,nbcol); - } - else - { - fait_boite(8,7,nbcol); - i=0; - ywhere=70; - do { - cx= 320; - st= ""; - while (! (set::of('\174','\135', eos).has(chaine[i+1]))) - { - i=i+1; - st=st+chaine[i]; - if (res==2) cx=cx-3; - else cx=cx-5; - } - putxy(cx,ywhere); - ywhere=ywhere+6; - writeg(st,4); - i=i+1; - } while (!(chaine[i]==']')); - } - if (nbcase==1) esp= nbcol- 40; - else esp= (cardinal)(nbcol-nbcase*40) >> 1; - coldep=320-((cardinal)nbcol >> 1)+((cardinal)esp >> 1); - fait_choix(cas, coldep, nbcase, s, esp); - limit[1][1]=((cardinal)(coldep) >> 1)*res; - limit[1][2]=limit[1][1]+40; - if (nbcase==1) - { - limit[2][1]=limit[2][2]; - } - else - { - limit[2][1]=((cardinal)(320+((cardinal)esp >> 1)) >> 1)*res; - limit[2][2]=(limit[2][1])+40; - } - show_mouse(); - quoi=0; - dum=false; - do { - dumi='\377'; - mov_mouse(dum,dumi); - cx= x_s; - cy= y_s; - test=(cy>95) && (cy<105); - newaff=false; - if (test) - { - test1=(cx>limit[1][1]) && (cx1) test2= test1 || ((cx>limit[2][1]) && (cx95) && (cy<105) && (((cx>limit[1][1]) && (cxlimit[2][1]) && (cx coord += {{ {{150, 72, 103}}, + {{143, 107, 183}} + } +}; + + + +static void decod(str255 s, integer &nbc, integer &nbl, integer &col, str255 &c, str30 &cs) { + integer i, k; + boolean v; + + val(s[2], nbc, i); + c = ""; + nbl = 0; + i = 5; + k = 0; + v = true; + col = 0; + + while (s[i] != ']') { + c = c + s[i]; + if ((s[i] == '|') || (s[i + 1] == ']')) { + if (k > col) col = k; + k = 0; + nbl = nbl + 1; + } else if (s[i] != ' ') v = false; + i = i + 1; + k = k + 1; + } + if (v) { + c = ""; + col = 20; + } else { + c = c + ']'; + col = col + 6; + } + i = i + 1; + cs = copy(s, i, 30); + if (res == 2) col = col * 6; + else col = col * 10; +} + + + +static void posit(integer ji, integer &coldep, integer &esp) { + putxy(coldep + (40 + esp) *pred(integer, ji), 98); +} + + + +static void fait_boite(integer lidep, integer nli, integer tx) { + integer x, y, xx, yy; + + if (tx > 640) tx = 640; + x = 320 - ((cardinal)tx >> 1); + y = pred(integer, lidep) << 3; + xx = x + tx; + yy = y + (nli << 3); + box(15, gd, x, y, xx, yy, 255); + box(0, gd, x, y + 2, xx, y + 4, 255); + box(0, gd, x, yy - 4, xx, yy - 2, 255); +} + + + +static void fait_choix(str30 c, integer &coldep, integer &nbcase, array<1, 2, varying_string<3> > &s, integer &esp) { + integer i, l, x; + char ch; + + i = 1; + x = coldep; + for (l = 1; l <= nbcase; l ++) { + s[l] = ""; + do { + i = i + 1; + ch = c[i]; + s[l] = s[l] + ch; + } while (!(c[i + 1] == ']')); + i = i + 2; + while (length(s[l]) < 3) s[l] = s[l] + ' '; + putxy(x, 98); + writeg(string(' ') + s[l] + ' ', 0); + x = x + esp + 40; + } +} + +integer do_alert(str255 str_, integer n) { + integer coldep, esp, i, l, nbcase, quoi, ix; + str255 st, chaine; + matrix<1, 2, 1, 2, integer> limit; + char c, dumi; + array<1, 2, varying_string<3> > s; + integer cx, cy, cd, nbcol, nblig; + boolean touch, newaff, test, test1, test2, test3, dum; + str30 cas; + + + /*debug('** do_alert **');*/ + integer do_alert_result; + hide_mouse(); + while (keypressed()) input >> kbd >> dumi; + clic = false; + decod(str_, nbcase, nblig, nbcol, chaine, cas); + sauvecr(50, succ(integer, nligne) << 4); + + i = 0; + if (chaine == "") { + fait_boite(10, 5, nbcol); + } else { + fait_boite(8, 7, nbcol); + i = 0; + ywhere = 70; + do { + cx = 320; + st = ""; + while (!(set::of('\174', '\135', eos).has(chaine[i + 1]))) { + i = i + 1; + st = st + chaine[i]; + if (res == 2) cx = cx - 3; + else cx = cx - 5; + } + putxy(cx, ywhere); + ywhere = ywhere + 6; + writeg(st, 4); + i = i + 1; + } while (!(chaine[i] == ']')); + } + if (nbcase == 1) esp = nbcol - 40; + else esp = (cardinal)(nbcol - nbcase * 40) >> 1; + coldep = 320 - ((cardinal)nbcol >> 1) + ((cardinal)esp >> 1); + fait_choix(cas, coldep, nbcase, s, esp); + limit[1][1] = ((cardinal)(coldep) >> 1) * res; + limit[1][2] = limit[1][1] + 40; + if (nbcase == 1) { + limit[2][1] = limit[2][2]; + } else { + limit[2][1] = ((cardinal)(320 + ((cardinal)esp >> 1)) >> 1) * res; + limit[2][2] = (limit[2][1]) + 40; + } + show_mouse(); + quoi = 0; + dum = false; + do { + dumi = '\377'; + mov_mouse(dum, dumi); + cx = x_s; + cy = y_s; + test = (cy > 95) && (cy < 105); + newaff = false; + if (test) { + test1 = (cx > limit[1][1]) && (cx < limit[1][2]); + test2 = test1; + if (nbcase > 1) test2 = test1 || ((cx > limit[2][1]) && (cx < limit[2][2])); + if (test2) { + newaff = true; + if (test1) ix = 1; + else ix = 2; + if (ix != quoi) { + hide_mouse(); + if (quoi != 0) { + posit(quoi, coldep, esp); + writeg(string(' ') + s[quoi] + ' ', 0); + } + posit(ix, coldep, esp); + writeg(string(' ') + s[ix] + ' ', 1); + quoi = ix; + show_mouse(); + } + } + } + if ((quoi != 0) && ! newaff) { + hide_mouse(); + posit(quoi, coldep, esp); + writeg(string(' ') + s[quoi] + ' ', 0); + quoi = 0; + show_mouse(); + } + test3 = (cy > 95) && (cy < 105) && (((cx > limit[1][1]) && (cx < limit[1][2])) + || ((cx > limit[2][1]) && (cx < limit[2][2]))); + } while (!clic); + clic = false; + hide_mouse(); + if (! test3) { + quoi = n; + posit(n, coldep, esp); + writeg(string(' ') + s[n] + ' ', 1); + } + charecr(50, succ(integer, nligne) << 4); + show_mouse(); + do_alert_result = quoi; + return do_alert_result; } diff --git a/engines/mortevielle/boite.h b/engines/mortevielle/boite.h index 0819490bfc..4120f7337f 100644 --- a/engines/mortevielle/boite.h +++ b/engines/mortevielle/boite.h @@ -1,30 +1,29 @@ -void boite(integer x,integer y,integer dx,integer dy,integer coul) - { - integer i; - integer xi,yi,xo,yo; +void boite(integer x, integer y, integer dx, integer dy, integer coul) { + integer i; + integer xi, yi, xo, yo; - /* debug('boite'); */ - hide_mouse(); - if (res==1) - { - x= (cardinal)x >> 1; - dx= (cardinal)dx >> 1; - } - xi=x; yi=y; xo=x; yo=y; - for( i=0; i <= dx+dy; i ++) - { - putpix(gd,xi,yi,coul); - if (xi==x+dx) { - if (gd!=cga) putpix(gd,pred(integer,xi),yi,coul); - yi=succ(integer,yi); - } - else xi=succ(integer,xi); - putpix(gd,xo,yo,coul); - if (yo==y+dy) xo=succ(integer,xo); - else { - if (gd!=cga) putpix(gd,succ(integer,xo),yo,coul); - yo=succ(integer,yo); - } - } - show_mouse(); - } + /* debug('boite'); */ + hide_mouse(); + if (res == 1) { + x = (cardinal)x >> 1; + dx = (cardinal)dx >> 1; + } + xi = x; + yi = y; + xo = x; + yo = y; + for (i = 0; i <= dx + dy; i ++) { + putpix(gd, xi, yi, coul); + if (xi == x + dx) { + if (gd != cga) putpix(gd, pred(integer, xi), yi, coul); + yi = succ(integer, yi); + } else xi = succ(integer, xi); + putpix(gd, xo, yo, coul); + if (yo == y + dy) xo = succ(integer, xo); + else { + if (gd != cga) putpix(gd, succ(integer, xo), yo, coul); + yo = succ(integer, yo); + } + } + show_mouse(); +} diff --git a/engines/mortevielle/disk.h b/engines/mortevielle/disk.h index 28a2dbe6a5..517d408c87 100644 --- a/engines/mortevielle/disk.h +++ b/engines/mortevielle/disk.h @@ -1,78 +1,72 @@ -void dem1() -{ - untyped_file f; - integer k; +void dem1() { + untyped_file f; + integer k; - /* -- demande de disk 1 -- */ - assign(f,"mort.005"); - /*$i-*/ - k=ioresult; - reset(f); - while (ioresult!=0) - { - show_mouse(); - k= do_alert(al_mess,1); - hide_mouse(); - reset(f); - } - close(f); + /* -- demande de disk 1 -- */ + assign(f, "mort.005"); + /*$i-*/ + k = ioresult; + reset(f); + while (ioresult != 0) { + show_mouse(); + k = do_alert(al_mess, 1); + hide_mouse(); + reset(f); + } + close(f); } -void takesav(integer n) -{ - untyped_file f; - integer i; - varying_string<10> st; +void takesav(integer n) { + untyped_file f; + integer i; + varying_string<10> st; - dem1(); - /* -- chargement du fichier 'sauve#n.mor' -- */ - st= string("sav")+chr(n+48)+".mor"; - assign(f,st); - reset(f,497); - blockread(f,s1,1); - if (ioresult!=0) - { - i=do_alert(err_mess,1); - exit(0); - } - s=s1; - for( i=0; i <= 389; i ++) tabdon[i+acha]=bufcha[i]; - close(f); + dem1(); + /* -- chargement du fichier 'sauve#n.mor' -- */ + st = string("sav") + chr(n + 48) + ".mor"; + assign(f, st); + reset(f, 497); + blockread(f, s1, 1); + if (ioresult != 0) { + i = do_alert(err_mess, 1); + exit(0); + } + s = s1; + for (i = 0; i <= 389; i ++) tabdon[i + acha] = bufcha[i]; + close(f); } -void ld_game(integer n) -{ - hide_mouse(); - maivid(); - takesav(n); - /* -- disquette 2 -- */ - dem2(); - /* -- mises en place -- */ - theure(); - dprog(); - antegame(); - show_mouse(); +void ld_game(integer n) { + hide_mouse(); + maivid(); + takesav(n); + /* -- disquette 2 -- */ + dem2(); + /* -- mises en place -- */ + theure(); + dprog(); + antegame(); + show_mouse(); } -void sv_game(integer n) -{ - untyped_file f; - integer i; +void sv_game(integer n) { + untyped_file f; + integer i; - hide_mouse(); - tmaj3(); - dem1(); - /* -- sauvegarde du fichier 'sauve#n.mor' -- */ - for( i=0; i <= 389; i ++) bufcha[i]=tabdon[i+acha]; - s1=s; - if (s1.mlieu== 26) s1.mlieu= 15; - assign(f,string("sav")+chr(n+48)+".mor"); - rewrite(f,497); - blockwrite(f,s1,1); - close(f); - dem2(); - show_mouse(); + hide_mouse(); + tmaj3(); + dem1(); + /* -- sauvegarde du fichier 'sauve#n.mor' -- */ + for (i = 0; i <= 389; i ++) bufcha[i] = tabdon[i + acha]; + s1 = s; + if (s1.mlieu == 26) s1.mlieu = 15; + assign(f, string("sav") + chr(n + 48) + ".mor"); + rewrite(f, 497); + blockwrite(f, s1, 1); + close(f); + dem2(); + show_mouse(); } diff --git a/engines/mortevielle/droite.h b/engines/mortevielle/droite.h index 7dd029e2ec..8d254a4afc 100644 --- a/engines/mortevielle/droite.h +++ b/engines/mortevielle/droite.h @@ -1,35 +1,34 @@ -void droite( integer x, integer y, integer xx, integer yy, integer coul ) - { - integer step,i; - real a,b; - real xr,yr,xro,yro; +void droite(integer x, integer y, integer xx, integer yy, integer coul) { + integer step, i; + real a, b; + real xr, yr, xro, yro; - xr=x; yr=y; xro=xx; yro=yy; - /*writeln(le_file,'(',x:4,',',y:4,') ==> (',xx:4,',',yy:4,')');*/ - if (abs(y-yy) > abs(x-xx)) - { - a= (real)((x-xx)) / (y-yy); - b= ( yr*xro - yro*xr) / (y-yy); - i=y; - if (y>yy) step=-1; - else step=1; - do { - putpix(gd, trunc(a*i+b), i, coul); - i=i+step; - } while (!(i==yy)); - /*writeln(le_file,'X == ',a:3:3,' * Y + ',b:3:3);*/ - } - else - { - a= (real)((y-yy)) / (x-xx); - b= ((yro*xr) - (yr*xro)) / (x-xx); - i=x; - if (x>xx) step=-1; - else step=1; - do { - putpix(gd,i, trunc(a*i+b), coul); - i=i+step; - } while (!(i==xx)); - /*writeln(le_file,'Y == ',a:3:3,' * X + ',b:3:3);*/ - } - } \ No newline at end of file + xr = x; + yr = y; + xro = xx; + yro = yy; + /*writeln(le_file,'(',x:4,',',y:4,') ==> (',xx:4,',',yy:4,')');*/ + if (abs(y - yy) > abs(x - xx)) { + a = (real)((x - xx)) / (y - yy); + b = (yr * xro - yro * xr) / (y - yy); + i = y; + if (y > yy) step = -1; + else step = 1; + do { + putpix(gd, trunc(a * i + b), i, coul); + i = i + step; + } while (!(i == yy)); + /*writeln(le_file,'X == ',a:3:3,' * Y + ',b:3:3);*/ + } else { + a = (real)((y - yy)) / (x - xx); + b = ((yro * xr) - (yr * xro)) / (x - xx); + i = x; + if (x > xx) step = -1; + else step = 1; + do { + putpix(gd, i, trunc(a * i + b), coul); + i = i + step; + } while (!(i == xx)); + /*writeln(le_file,'Y == ',a:3:3,' * X + ',b:3:3);*/ + } +} \ No newline at end of file diff --git a/engines/mortevielle/keyboard.h b/engines/mortevielle/keyboard.h index 9f8423a41f..b450e074c1 100644 --- a/engines/mortevielle/keyboard.h +++ b/engines/mortevielle/keyboard.h @@ -1,59 +1,60 @@ -char readkey1() - { - char c; +char readkey1() { + char c; - char readkey1_result; - input >> kbd >> c; - readkey1_result= c; - return readkey1_result; - } + char readkey1_result; + input >> kbd >> c; + readkey1_result = c; + return readkey1_result; +} -integer testou() - { - char ch; +integer testou() { + char ch; - integer testou_result; - input >> kbd >> ch; - switch (ch) { - case '\23' : sonoff= ! sonoff; break; - case '\1': - case '\3': - case '\5' : { - newgd= (cardinal)pred(integer,ord(ch)) >> 1; - testou_result= 61; - return testou_result; - } - break; - case '\10' : { - newgd= her; - testou_result= 61; - return testou_result; - } - break; - case '\24' : { - newgd= tan; - testou_result= 61; - return testou_result; - } - break; - case '\26' : if (set::of(1,2, eos).has(c_zzz)) - { - zzuul(adcfiec+161,0,1644); - c_zzz=succ(integer,c_zzz); - testou_result=61; - return testou_result; - } - break; - case '\33' : if (keypressed()) input >> kbd >> ch; break; - } - testou_result=ord(ch); - return testou_result; - } + integer testou_result; + input >> kbd >> ch; + switch (ch) { + case '\23' : + sonoff = ! sonoff; + break; + case '\1': + case '\3': + case '\5' : { + newgd = (cardinal)pred(integer, ord(ch)) >> 1; + testou_result = 61; + return testou_result; + } + break; + case '\10' : { + newgd = her; + testou_result = 61; + return testou_result; + } + break; + case '\24' : { + newgd = tan; + testou_result = 61; + return testou_result; + } + break; + case '\26' : + if (set::of(1, 2, eos).has(c_zzz)) { + zzuul(adcfiec + 161, 0, 1644); + c_zzz = succ(integer, c_zzz); + testou_result = 61; + return testou_result; + } + break; + case '\33' : + if (keypressed()) input >> kbd >> ch; + break; + } + testou_result = ord(ch); + return testou_result; +} -void teskbd() - { - integer dum; +void teskbd() { + integer dum; - if (keypressed()) dum=testou(); - } + if (keypressed()) dum = testou(); +} diff --git a/engines/mortevielle/level15.h b/engines/mortevielle/level15.h index be92e8dca2..2c9b8cdcf4 100644 --- a/engines/mortevielle/level15.h +++ b/engines/mortevielle/level15.h @@ -1,87 +1,80 @@ /* NIVEAU 15 */ -void copcha() -{ - integer i; - - i= acha; - do { - tabdon[i]=tabdon[i+390]; - i=succ(integer,i); - } while (!(i==acha +390)); +void copcha() { + integer i; + + i = acha; + do { + tabdon[i] = tabdon[i + 390]; + i = succ(integer, i); + } while (!(i == acha + 390)); } -boolean dans_rect( rectangle r ) - { - integer x, y, c; - - boolean dans_rect_result; - read_pos_mouse(x,y,c); - if ((x>r.x1) && - (xr.y1) && - (y0x100)) memw[0x7000+0x4138]=0x100; - afff(gd,seg,dep,x,y); - } - -void putxy(integer x,integer y) -{ - xwhere=x; - ywhere=y; +boolean dans_rect(rectangle r) { + integer x, y, c; + + boolean dans_rect_result; + read_pos_mouse(x, y, c); + if ((x > r.x1) && + (x < r.x2) && + (y > r.y1) && + (y < r.y2)) dans_rect_result = true; + else dans_rect_result = false; + return dans_rect_result; +} + +void outbloc(integer n, pattern p, t_nhom pal) { + integer i, j, ad; + + ad = n * 404 + 0xd700; + { + memw[0x6000 + ad] = p.tax; + memw[0x6000 + ad + 2] = p.tay; + ad = ad + 4; + for (i = 1; i <= p.tax; i ++) + for (j = 1; j <= p.tay; j ++) + mem[0x6000 + ad + pred(integer, j)*p.tax + pred(integer, i)] = pal[n].hom[p.des[i][j]]; + } +} + + +void writepal(integer n) { + integer i; + t_nhom pal; + + + switch (gd) { + case tan: + case ega: + case ams : + for (i = 1; i <= 16; i ++) { + mem[0x7000 + 2 * i] = tabpal[n][i].x; + mem[0x7000 + succ(integer, 2 * i)] = tabpal[n][i].y; + } + break; + case cga : { + pal = palcga[n].a; + if (n < 89) palette(palcga[n].p); + for (i = 0; i <= 15; i ++) outbloc(i, tpt[pal[i].n], pal); + } + break; + } +} + + +void pictout(integer seg, integer dep, integer x, integer y) { + decomp(seg, dep); + if (gd == her) { + mem[0x7000 + 2] = 0; + mem[0x7000 + 32] = 15; + } + if ((caff != 51) && (memw[0x7000 + 0x4138] > 0x100)) memw[0x7000 + 0x4138] = 0x100; + afff(gd, seg, dep, x, y); +} + +void putxy(integer x, integer y) { + xwhere = x; + ywhere = y; } /* function calad(x,y:integer):integer; @@ -89,19 +82,17 @@ function calad(x,y:integer):integer; calad:=pred(x)+320*pred(y) end; */ -void sauvecr(integer y,integer dy) - { - hide_mouse(); - s_sauv(gd,y,dy); - show_mouse(); - } - -void charecr(integer y,integer dy) - { - hide_mouse(); - s_char(gd,y,dy); - show_mouse(); - } +void sauvecr(integer y, integer dy) { + hide_mouse(); + s_sauv(gd, y, dy); + show_mouse(); +} + +void charecr(integer y, integer dy) { + hide_mouse(); + s_char(gd, y, dy); + show_mouse(); +} /* function peek(ad:integer):integer; begin @@ -125,54 +116,52 @@ begin end; */ -void adzon() - { - untyped_file f; - file g; - byte a; - integer i; - - assign(f,"don.mor"); - reset(f,256); - blockread(f,tabdon,7); - close(f); - assign(f,"bmor.mor"); - reset(f,1916); - blockread(f,tabdon[fleche],1); - /*i:=fleche; - repeat - read(g,a); - tabdon[i]:=a; - i:=succ(i); - until i=fleche + 1916;*/ - close(f); - assign(f,"dec.mor"); - reset(f,1664); - blockread(f,mem[0x73a2+0],1); - /*i:=0; - repeat - read(g,a); - mem[$73A2:i]:=a; - i:=succ(i); - until eof(g);*/ - close(f); - } - -integer animof (integer ouf,integer num) - { - integer nani, aux; - - integer animof_result; - nani= mem[adani+1]; - aux= num; - if (ouf!=1) aux= aux+nani; - animof_result=(nani << 2) + 2+swap(memw[adani+ (aux << 1)]); - /*aux:= nani shl 2 + 2; - if ouf=1 then aux:= aux+ swap(memw[adani: num shl 1]) - else aux:= aux+ swap(memw[adani: (nani+num) shl 1]); - animof:=aux;*/ - return animof_result; - } +void adzon() { + untyped_file f; + file g; + byte a; + integer i; + + assign(f, "don.mor"); + reset(f, 256); + blockread(f, tabdon, 7); + close(f); + assign(f, "bmor.mor"); + reset(f, 1916); + blockread(f, tabdon[fleche], 1); + /*i:=fleche; + repeat + read(g,a); + tabdon[i]:=a; + i:=succ(i); + until i=fleche + 1916;*/ + close(f); + assign(f, "dec.mor"); + reset(f, 1664); + blockread(f, mem[0x73a2 + 0], 1); + /*i:=0; + repeat + read(g,a); + mem[$73A2:i]:=a; + i:=succ(i); + until eof(g);*/ + close(f); +} + +integer animof(integer ouf, integer num) { + integer nani, aux; + + integer animof_result; + nani = mem[adani + 1]; + aux = num; + if (ouf != 1) aux = aux + nani; + animof_result = (nani << 2) + 2 + swap(memw[adani + (aux << 1)]); + /*aux:= nani shl 2 + 2; + if ouf=1 then aux:= aux+ swap(memw[adani: num shl 1]) + else aux:= aux+ swap(memw[adani: (nani+num) shl 1]); + animof:=aux;*/ + return animof_result; +} /*procedure affgd(offs,dep,x,y:integer); begin diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index 9256182280..691ef7c852 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -1,306 +1,334 @@ /* NIVEAU 14*/ -/* overlay */ void menut(integer no, str30 nom) - { - byte h,l; - str30 s; +/* overlay */ void menut(integer no, str30 nom) { + byte h, l; + str30 s; - /* debug('menut'); */ - h=hi(no); - l=lo(no); - s=nom; - if (! tesok) - { - clrscr; - exit(0); - } - while (length(s)<30) s=s+' '; - switch (h) { - case invent : if (l!=7) inv[l]= string(' ')+s; break; - case depla : dep[l]= s; break; - case action : act[l]= s; break; - case saction : self_[l]= s; break; - case discut : dis[l]= s; break; - } - } + /* debug('menut'); */ + h = hi(no); + l = lo(no); + s = nom; + if (! tesok) { + clrscr; + exit(0); + } + while (length(s) < 30) s = s + ' '; + switch (h) { + case invent : + if (l != 7) inv[l] = string(' ') + s; + break; + case depla : + dep[l] = s; + break; + case action : + act[l] = s; + break; + case saction : + self_[l] = s; + break; + case discut : + dis[l] = s; + break; + } +} -/* overlay */ void menu_disable(integer no) - { - byte h,l; +/* overlay */ void menu_disable(integer no) { + byte h, l; - /* debug('menu_disable'); */ - h=hi(no); - l=lo(no); - switch (h) { - case invent : { - if (l>6) { - inv[l][1]='<'; - inv[l][22]='>'; - } - else inv[l][1]='*'; - } - break; - case depla : dep[l][1]='*'; break; - case action : act[l][1]='*'; break; - case saction : self_[l][1]='*'; break; - case discut : dis[l][1]='*'; break; - } - } + /* debug('menu_disable'); */ + h = hi(no); + l = lo(no); + switch (h) { + case invent : { + if (l > 6) { + inv[l][1] = '<'; + inv[l][22] = '>'; + } else inv[l][1] = '*'; + } + break; + case depla : + dep[l][1] = '*'; + break; + case action : + act[l][1] = '*'; + break; + case saction : + self_[l][1] = '*'; + break; + case discut : + dis[l][1] = '*'; + break; + } +} -/* overlay */ void menu_enable(integer no) - { - byte h,l; +/* overlay */ void menu_enable(integer no) { + byte h, l; - /* debug('menu_disable'); */ - h=hi(no); - l=lo(no); - switch (h) { - case invent : { - inv[l][1]=' '; - inv[l][22]=' '; - } - break; - case depla : dep[l][1]=' '; break; - case action : act[l][1]=' '; break; - case saction : { - self_[l][1]=' '; - self_[l][1]=' '; - } - break; - case discut : dis[l][1]=' '; break; - } - } + /* debug('menu_disable'); */ + h = hi(no); + l = lo(no); + switch (h) { + case invent : { + inv[l][1] = ' '; + inv[l][22] = ' '; + } + break; + case depla : + dep[l][1] = ' '; + break; + case action : + act[l][1] = ' '; + break; + case saction : { + self_[l][1] = ' '; + self_[l][1] = ' '; + } + break; + case discut : + dis[l][1] = ' '; + break; + } +} -void menu_aff() - { - integer ind_tabl,k,col; - char c; - integer pt,x,y,color,msk, - num_letr; +void menu_aff() { + integer ind_tabl, k, col; + char c; + integer pt, x, y, color, msk, + num_letr; - /* debug('menu_aff'); */ - hide_mouse(); - /*if not tesok then - begin - clrscr; - halt; - end;*/ - box( 7, gd, 0,0, 639,10, 255); - col= 28*res; - if (gd == cga) color=1; - else color=9; - num_letr=0; - do { /* lettre par lettre */ - num_letr= num_letr +1; - ind_tabl=0; - y= 1; - do { /* colonne par colonne */ - k=0; - x= col; - do { /* ligne par ligne */ - msk=0x80; - for( pt=0; pt <= 7; pt ++) - { - if ((lettres[num_letr][ind_tabl] & msk)!=0) - { - putpix(gd,x+1,y+1,0); - putpix(gd,x,y+1,0); - putpix(gd,x,y,color); - } - msk= (cardinal)msk >> 1; - x=x +1; - } - ind_tabl=succ(integer,ind_tabl); - k=succ(integer,k); - } while (!(k==3)); - y=y+1; - } while (!(y==9)); - col=col+48*res; - } while (!(num_letr==6)); - show_mouse(); - } + /* debug('menu_aff'); */ + hide_mouse(); + /*if not tesok then + begin + clrscr; + halt; + end;*/ + box(7, gd, 0, 0, 639, 10, 255); + col = 28 * res; + if (gd == cga) color = 1; + else color = 9; + num_letr = 0; + do { /* lettre par lettre */ + num_letr = num_letr + 1; + ind_tabl = 0; + y = 1; + do { /* colonne par colonne */ + k = 0; + x = col; + do { /* ligne par ligne */ + msk = 0x80; + for (pt = 0; pt <= 7; pt ++) { + if ((lettres[num_letr][ind_tabl] & msk) != 0) { + putpix(gd, x + 1, y + 1, 0); + putpix(gd, x, y + 1, 0); + putpix(gd, x, y, color); + } + msk = (cardinal)msk >> 1; + x = x + 1; + } + ind_tabl = succ(integer, ind_tabl); + k = succ(integer, k); + } while (!(k == 3)); + y = y + 1; + } while (!(y == 9)); + col = col + 48 * res; + } while (!(num_letr == 6)); + show_mouse(); +} -void draw_menu() - { - /* debug('draw_menu'); */ - menu_aff(); - active_menu=true; - msg4=no_choice; - msg3=no_choice; - choisi=false; - clic=false; - test0=false; - } +void draw_menu() { + /* debug('draw_menu'); */ + menu_aff(); + active_menu = true; + msg4 = no_choice; + msg3 = no_choice; + choisi = false; + clic = false; + test0 = false; +} -void invers(integer ix) - { - varying_string<23> s; +void invers(integer ix) { + varying_string<23> s; - /* debug('invers'); */ - if (msg4==no_choice) return; - putxy(don[msg3][1] << 3,succ(void,lo(msg4)) << 3); - switch (msg3) { - case 1 : s= inv[lo(msg4)]; break; - case 2 : s= dep[lo(msg4)]; break; - case 3 : s= act[lo(msg4)]; break; - case 4 : s= self_[lo(msg4)]; break; - case 5 : s= dis[lo(msg4)]; break; - case 6 : s= fic[lo(msg4)]; break; - case 7 : s= fic[1]+' '+chr(48+lo(msg4)); break; - case 8 : if (lo(msg4)==1) s=recom; - else s= fic[2]+' '+chr(47+lo(msg4)); - break; - } - if ((s[1]!='*') && (s[1]!='<')) writeg(s,ix); - else msg4=no_choice; - } + /* debug('invers'); */ + if (msg4 == no_choice) return; + putxy(don[msg3][1] << 3, succ(void, lo(msg4)) << 3); + switch (msg3) { + case 1 : + s = inv[lo(msg4)]; + break; + case 2 : + s = dep[lo(msg4)]; + break; + case 3 : + s = act[lo(msg4)]; + break; + case 4 : + s = self_[lo(msg4)]; + break; + case 5 : + s = dis[lo(msg4)]; + break; + case 6 : + s = fic[lo(msg4)]; + break; + case 7 : + s = fic[1] + ' ' + chr(48 + lo(msg4)); + break; + case 8 : + if (lo(msg4) == 1) s = recom; + else s = fic[2] + ' ' + chr(47 + lo(msg4)); + break; + } + if ((s[1] != '*') && (s[1] != '<')) writeg(s, ix); + else msg4 = no_choice; +} -void util(integer x,integer y) - { - integer ymx, dxcar, xmn, xmx, ix; +void util(integer x, integer y) { + integer ymx, dxcar, xmn, xmx, ix; - /* debug('util'); */ - ymx= (don[msg3][4] << 3)+16; - dxcar= don[msg3][3]; - xmn= (don[msg3][1] << 2)*res; - if (res==1) ix=5; else ix=3; - xmx= dxcar*ix*res+ xmn+ 2; - if ((x>xmn) && (x15)) - { - ix= pred(integer,(cardinal)y >> 3)+ (msg3 << 8); - if (ix!=msg4) - { - invers(1); - msg4=ix; - invers(0); - } - } - else if (msg4!=no_choice) - { - invers(1); - msg4=no_choice; - } - } + /* debug('util'); */ + ymx = (don[msg3][4] << 3) + 16; + dxcar = don[msg3][3]; + xmn = (don[msg3][1] << 2) * res; + if (res == 1) ix = 5; + else ix = 3; + xmx = dxcar * ix * res + xmn + 2; + if ((x > xmn) && (x < xmx) && (y < ymx) && (y > 15)) { + ix = pred(integer, (cardinal)y >> 3) + (msg3 << 8); + if (ix != msg4) { + invers(1); + msg4 = ix; + invers(0); + } + } else if (msg4 != no_choice) { + invers(1); + msg4 = no_choice; + } +} -void menu_down( integer ii) - { - integer cx, xcc; - integer xco, nb_lig; +void menu_down(integer ii) { + integer cx, xcc; + integer xco, nb_lig; - /* debug('menu_down'); */ - xco=don[ii][1]; - nb_lig= don[ii][4]; - hide_mouse(); - sauvecr(10,succ(byte,don[ii][2]) << 1); - xco= xco << 3; - if (res==1) cx=10; else cx=6; - xcc= xco+ (don[ii][3]*cx)+6; - box(15, gd, xco,12, xcc, 10 + (don[ii][2] << 1), 255); - box(0, gd, xcc, 12, xcc+4, 10 + (don[ii][2] << 1),255); - box(0,gd,xco, 8 + (don[ii][2] << 1), xcc+4, 12 + (don[ii][2] << 1),255); - putxy(xco,16); - cx=0; - do { - cx= succ(integer,cx); - switch (ii) { - case 1 : if (inv[cx][1]!= '*') writeg(inv[cx],4); break; - case 2 : if (dep[cx][1]!= '*') writeg(dep[cx],4); break; - case 3 : if (act[cx][1]!= '*') writeg(act[cx],4); break; - case 4 : if (self_[cx][1]!='*') writeg(self_[cx],4); break; - case 5 : if (dis[cx][1]!= '*') writeg(dis[cx],4); break; - case 6 : writeg(fic[cx],4); break; - case 7 : writeg(fic[1]+' '+chr(48+cx),4); break; - case 8 : if (cx==1) writeg( recom,4); - else writeg(fic[2]+' '+chr(47+cx),4); - break; - } - putxy(xco,ywhere+8); - } while (!(cx==nb_lig)); - test0=true; - show_mouse(); - } + /* debug('menu_down'); */ + xco = don[ii][1]; + nb_lig = don[ii][4]; + hide_mouse(); + sauvecr(10, succ(byte, don[ii][2]) << 1); + xco = xco << 3; + if (res == 1) cx = 10; + else cx = 6; + xcc = xco + (don[ii][3] * cx) + 6; + box(15, gd, xco, 12, xcc, 10 + (don[ii][2] << 1), 255); + box(0, gd, xcc, 12, xcc + 4, 10 + (don[ii][2] << 1), 255); + box(0, gd, xco, 8 + (don[ii][2] << 1), xcc + 4, 12 + (don[ii][2] << 1), 255); + putxy(xco, 16); + cx = 0; + do { + cx = succ(integer, cx); + switch (ii) { + case 1 : + if (inv[cx][1] != '*') writeg(inv[cx], 4); + break; + case 2 : + if (dep[cx][1] != '*') writeg(dep[cx], 4); + break; + case 3 : + if (act[cx][1] != '*') writeg(act[cx], 4); + break; + case 4 : + if (self_[cx][1] != '*') writeg(self_[cx], 4); + break; + case 5 : + if (dis[cx][1] != '*') writeg(dis[cx], 4); + break; + case 6 : + writeg(fic[cx], 4); + break; + case 7 : + writeg(fic[1] + ' ' + chr(48 + cx), 4); + break; + case 8 : + if (cx == 1) writeg(recom, 4); + else writeg(fic[2] + ' ' + chr(47 + cx), 4); + break; + } + putxy(xco, ywhere + 8); + } while (!(cx == nb_lig)); + test0 = true; + show_mouse(); +} -void menu_up(integer xx) - { - /* debug('menu_up'); */ - if (test0) - { - charecr(10,succ(byte,don[xx][2]) << 1); - test0=false; - } - } +void menu_up(integer xx) { + /* debug('menu_up'); */ + if (test0) { + charecr(10, succ(byte, don[xx][2]) << 1); + test0 = false; + } +} -void erase_menu() - { - /* debug('erase_menu'); */ - active_menu=false; - clic=false; - menu_up(msg3); - } +void erase_menu() { + /* debug('erase_menu'); */ + active_menu = false; + clic = false; + menu_up(msg3); +} -void mdn() - { - integer x,y,c,a,ix; - boolean tes; +void mdn() { + integer x, y, c, a, ix; + boolean tes; - /* debug('mdn'); */ - if (! active_menu) return; - x=x_s; y=y_s; - if (! clic) - { - if ((x==xprec) && - (y==yprec)) return; - else { - xprec=x; - yprec=y; - } - tes=(y<11) && ((set::of(range(28*res,28*res+24),range(76*res,76*res+24), eos).has(x)) - || ((x>124*res) && (x<124*res+24)) - || ((x>172*res) && (x<172*res+24)) - || ((x>220*res) && (x<220*res+24)) - || ((x>268*res) && (x<268*res+24))); - if (tes) - { - if (x<76*res) ix=invent; - else if (x<124*res) ix=depla; - else if (x<172*res) ix=action; - else if (x<220*res) ix=saction; - else if (x<268*res) ix=discut; - else ix= fichier; - if ((ix!=msg3) || (! test0)) - if (! ((ix==fichier) && (set::of(sauve, charge, eos).has(msg3)))) - { - menu_up(msg3); - menu_down(ix); - msg3=ix; - msg4=no_choice; - } - } - else /* Not in the MenuTitle line */ - { - if ((y>11) && (test0)) util(x,y); - } - } - else /* il y a eu 'clic' */ - if ((msg3==fichier) && (msg4!=no_choice)) - { - clic=false; - menu_up(msg3); - if (lo(msg4)==1) msg3=7; - else msg3=8; - menu_down(msg3); - } - else /* il y a eu clic sur un autre menu */ - { - choisi=(test0) && (msg4!=no_choice); - menu_up(msg3); - msg[4]=msg4; - msg[3]=msg3; - msg3=no_choice; - msg4=no_choice; - clic=false; - } - } + /* debug('mdn'); */ + if (! active_menu) return; + x = x_s; + y = y_s; + if (! clic) { + if ((x == xprec) && + (y == yprec)) return; + else { + xprec = x; + yprec = y; + } + tes = (y < 11) && ((set::of(range(28 * res, 28 * res + 24), range(76 * res, 76 * res + 24), eos).has(x)) + || ((x > 124 * res) && (x < 124 * res + 24)) + || ((x > 172 * res) && (x < 172 * res + 24)) + || ((x > 220 * res) && (x < 220 * res + 24)) + || ((x > 268 * res) && (x < 268 * res + 24))); + if (tes) { + if (x < 76 * res) ix = invent; + else if (x < 124 * res) ix = depla; + else if (x < 172 * res) ix = action; + else if (x < 220 * res) ix = saction; + else if (x < 268 * res) ix = discut; + else ix = fichier; + if ((ix != msg3) || (! test0)) + if (!((ix == fichier) && (set::of(sauve, charge, eos).has(msg3)))) { + menu_up(msg3); + menu_down(ix); + msg3 = ix; + msg4 = no_choice; + } + } else { /* Not in the MenuTitle line */ + if ((y > 11) && (test0)) util(x, y); + } + } else /* il y a eu 'clic' */ + if ((msg3 == fichier) && (msg4 != no_choice)) { + clic = false; + menu_up(msg3); + if (lo(msg4) == 1) msg3 = 7; + else msg3 = 8; + menu_down(msg3); + } else { /* il y a eu clic sur un autre menu */ + choisi = (test0) && (msg4 != no_choice); + menu_up(msg3); + msg[4] = msg4; + msg[3] = msg3; + msg3 = no_choice; + msg4 = no_choice; + clic = false; + } +} diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index a4fe1e1b6b..fd4e2f5ffa 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -2,1455 +2,1309 @@ const char m1[] = "quelqu'un entre, parait ‚tonn‚ mais ne dit rien"; -void testfi() - { - if (ioresult!= 0) - { - caff= do_alert(err_mess,1); - exit(0); - } - } - - -integer readclock() -{ - registres r; - integer s, m, h; - -/* debug('readclock');*/ - integer readclock_result; - r.ax = 0x2c00; - intr(0x21,r); - { - h=(cardinal)r.cx >> 8; - m=r.cx % 256; - s=(cardinal)r.dx >> 8; - } - m= m * 60; - h= h* 3600; - readclock_result= h+ m+ s; - return readclock_result; -} - -void modif(integer& nu) -{ - /* debug('modif'); */ - if (nu== 26) nu= 25; - if ((nu> 29) && (nu< 36)) nu= nu- 4; - if ((nu> 69) && (nu< 78)) nu= nu- 37; - if ((nu> 99) && (nu< 194)) nu= nu- 59; - if ((nu> 996) && (nu< 1000)) nu= nu- 862; - if ((nu> 1500) && (nu< 1507)) nu= nu- 1363; - if ((nu> 1507) && (nu< 1513)) nu= nu- 1364; - if ((nu> 1999) && (nu< 2002)) nu= nu- 1851; - if (nu== 2010) nu= 151; - if ((nu> 2011) && (nu< 2025)) nu= nu- 1860; - if (nu== 2026) nu= 165; - if ((nu> 2029) && (nu< 2037)) nu= nu- 1864; - if ((nu> 3000) && (nu< 3005)) nu= nu- 2828; - if (nu== 4100) nu= 177; - if (nu== 4150) nu= 178; - if ((nu> 4151) && (nu< 4156)) nu= nu- 3973; - if (nu== 4157) nu= 183; - if ((nu== 4160) || (nu== 4161)) nu= nu- 3976; -} - - -void dessine(integer ad, integer x, integer y) -{ - /* debug('dessine'); */ - hide_mouse(); - writepal(numpal); - pictout(ad,0,x,y); - show_mouse(); -} - -void dessine_rouleau() -{ - /* debug('dessine_rouleau'); */ - writepal(89); - if (gd==her) - { - mem[0x7000+14]=15; - } - hide_mouse(); - pictout(0x73a2,0,0,0); - show_mouse(); -} - - -void text_color(integer c) -{ - color_txt= c; +void testfi() { + if (ioresult != 0) { + caff = do_alert(err_mess, 1); + exit(0); + } +} + + +integer readclock() { + registres r; + integer s, m, h; + + /* debug('readclock');*/ + integer readclock_result; + r.ax = 0x2c00; + intr(0x21, r); + { + h = (cardinal)r.cx >> 8; + m = r.cx % 256; + s = (cardinal)r.dx >> 8; + } + m = m * 60; + h = h * 3600; + readclock_result = h + m + s; + return readclock_result; +} + +void modif(integer &nu) { + /* debug('modif'); */ + if (nu == 26) nu = 25; + if ((nu > 29) && (nu < 36)) nu = nu - 4; + if ((nu > 69) && (nu < 78)) nu = nu - 37; + if ((nu > 99) && (nu < 194)) nu = nu - 59; + if ((nu > 996) && (nu < 1000)) nu = nu - 862; + if ((nu > 1500) && (nu < 1507)) nu = nu - 1363; + if ((nu > 1507) && (nu < 1513)) nu = nu - 1364; + if ((nu > 1999) && (nu < 2002)) nu = nu - 1851; + if (nu == 2010) nu = 151; + if ((nu > 2011) && (nu < 2025)) nu = nu - 1860; + if (nu == 2026) nu = 165; + if ((nu > 2029) && (nu < 2037)) nu = nu - 1864; + if ((nu > 3000) && (nu < 3005)) nu = nu - 2828; + if (nu == 4100) nu = 177; + if (nu == 4150) nu = 178; + if ((nu > 4151) && (nu < 4156)) nu = nu - 3973; + if (nu == 4157) nu = 183; + if ((nu == 4160) || (nu == 4161)) nu = nu - 3976; +} + + +void dessine(integer ad, integer x, integer y) { + /* debug('dessine'); */ + hide_mouse(); + writepal(numpal); + pictout(ad, 0, x, y); + show_mouse(); +} + +void dessine_rouleau() { + /* debug('dessine_rouleau'); */ + writepal(89); + if (gd == her) { + mem[0x7000 + 14] = 15; + } + hide_mouse(); + pictout(0x73a2, 0, 0, 0); + show_mouse(); +} + + +void text_color(integer c) { + color_txt = c; } /* NIVEAU 13 */ -void text1(integer x,integer y,integer nb,integer m) -{ - phrase st; - integer tay; - integer co; - - - /* debug('text'); */ - if (res==1) co=10; else co=6; - deline(m,st,tay); - if ((y==182) && (tay*co>nb*6)) y=176; - afftex(st,x,y,nb,20,color_txt); -} - -void initouv() - { - integer cx; - - /* debug('initouv'); */ - for( cx= 1; cx <= 7; cx ++) touv[cx]= chr(0); - } - -void ecrf1() -{ - boite(0, 11, 512, 163, 15); /* grand dessin */ -} - -void clsf1() -{ - integer i,j; - - /* debug('clsf1'); */ - hide_mouse(); - box(0,gd, 0,11, 514,175, 255); -/* if Gd=ams then port[$3DD]:=15; - case Gd of - ams, - cga : begin - for j:=0 to 63 do - begin - for i:=6 to 86 do - begin - mem[$B800:i*80+j]:=0; - mem[$Ba00:i*80+j]:=0; - end; - mem[$b800:6960+j]:=0; - mem[$ba00:400+j]:=0; - end; - end; - ega : begin - port[$3C4]:= 2; - port[$3C5]:= 15; - port[$3CE]:= 8; - port[$3CF]:= 255; - for j:=0 to 63 do - for i:=11 to 174 do - mem[$A000:i*80+j]:=0; - end; - tan : begin - for j:=0 to 128 do - begin - for i:=3 to 43 do - begin - mem[$B800:i*160+j]:=0; - mem[$Ba00:i*160+j]:=0; - mem[$bc00:i*160+j]:=0; - if i<>43 then mem[$be00:i*160+j]:=0; - end; - mem[$be00:320+j]:=0; - end; - end; - end; - droite(256*res,11,256*res,175,0);*/ - show_mouse(); -} - -void clsf2() -{ - integer i,j; - - /* debug('clsf2'); */ - hide_mouse(); - if (f2_all) - { - box(0,gd,1,176,633,199,255); - boite(0,175,634,24,15); - f2_all=false; - } - else - { - box(0,gd,1,176,633,190,255); - boite(0,175,634,15,15); - } - show_mouse(); -} - -void ecrf2() -{ - /* debug('ecrf2'); */ - text_color(5); - /*boite(0,175,630,15,15);*/ -} - -void ecr2(str255 str_) -{ - integer tab; - integer tlig; - - /* debug('ecr2 : '+str_);*/ - if (res==1) tab=10; else tab=6; - putxy(8,177); - tlig=59+pred(integer,res)*36; - if (length(str_) st; - - /* debug('clsf10'); */ - hide_mouse(); - if (res==1) - { - co=634; - cod=534; - } - else - { - co=600; - cod=544; - } - box(15,gd, cod, 93, co, 98, 255); - if (s.conf< 33) st="Cool"; - else - if (s.conf< 66) st=" Lourde "; - else - if (s.conf> 65) st="Malsaine"; - if (res==1) co=10; else co=6; - co= 574-((cardinal)co*length(st) >> 1); - putxy(co,92); - writeg(st,4); - if (res==1) co=620; else co=584; - box(15,gd, 560, 24, co, 86, 255); -/* rempli(69,12,32,5,255);*/ - show_mouse(); -} - - void stop() - { - clrscr; - hirs(); - gd=ams; - hirs(); - exit(0); - } - -void paint_rect(integer x, integer y, integer dx, integer dy) - { - integer co; - - /* debug('paint_rect'); */ - if (gd==cga) co= 3; - else co=11; - box(co,gd,x,y,x+dx,y+dy,255); - } - -integer hazard(integer min,integer max) - { - integer ha1; - real ha2; - - /* debug('hazard'); */ - integer hazard_result; - ha2= Random(); - ha1= trunc(ha2*(max-min)); - hazard_result= min+ ha1; - return hazard_result; - } - -void calch(integer& j,integer& h,integer& m) -{ - integer th,nh; - -/* debug('calch');*/ - nh= readclock(); - th= jh+ ((nh- mh) / t); - m= ((th % 2)+ vm)* 30; - h= ((cardinal)th >> 1)+ vh; - if (m== 60) - { - m= 0; - h= h+ 1; - } - j= (h / 24)+ vj; - h= h- ((j- vj)* 24); -} - -void conv(integer x, integer& y) -{ - integer cx; - - /* debug('conv'); */ - cx= 1; - y= 128; - while (cx< x) - { - y= (cardinal)y >> 1; - cx= succ(integer,cx); - } +void text1(integer x, integer y, integer nb, integer m) { + phrase st; + integer tay; + integer co; + + + /* debug('text'); */ + if (res == 1) co = 10; + else co = 6; + deline(m, st, tay); + if ((y == 182) && (tay * co > nb * 6)) y = 176; + afftex(st, x, y, nb, 20, color_txt); +} + +void initouv() { + integer cx; + + /* debug('initouv'); */ + for (cx = 1; cx <= 7; cx ++) touv[cx] = chr(0); +} + +void ecrf1() { + boite(0, 11, 512, 163, 15); /* grand dessin */ +} + +void clsf1() { + integer i, j; + + /* debug('clsf1'); */ + hide_mouse(); + box(0, gd, 0, 11, 514, 175, 255); + /* if Gd=ams then port[$3DD]:=15; + case Gd of + ams, + cga : begin + for j:=0 to 63 do + begin + for i:=6 to 86 do + begin + mem[$B800:i*80+j]:=0; + mem[$Ba00:i*80+j]:=0; + end; + mem[$b800:6960+j]:=0; + mem[$ba00:400+j]:=0; + end; + end; + ega : begin + port[$3C4]:= 2; + port[$3C5]:= 15; + port[$3CE]:= 8; + port[$3CF]:= 255; + for j:=0 to 63 do + for i:=11 to 174 do + mem[$A000:i*80+j]:=0; + end; + tan : begin + for j:=0 to 128 do + begin + for i:=3 to 43 do + begin + mem[$B800:i*160+j]:=0; + mem[$Ba00:i*160+j]:=0; + mem[$bc00:i*160+j]:=0; + if i<>43 then mem[$be00:i*160+j]:=0; + end; + mem[$be00:320+j]:=0; + end; + end; + end; + droite(256*res,11,256*res,175,0);*/ + show_mouse(); +} + +void clsf2() { + integer i, j; + + /* debug('clsf2'); */ + hide_mouse(); + if (f2_all) { + box(0, gd, 1, 176, 633, 199, 255); + boite(0, 175, 634, 24, 15); + f2_all = false; + } else { + box(0, gd, 1, 176, 633, 190, 255); + boite(0, 175, 634, 15, 15); + } + show_mouse(); +} + +void ecrf2() { + /* debug('ecrf2'); */ + text_color(5); + /*boite(0,175,630,15,15);*/ +} + +void ecr2(str255 str_) { + integer tab; + integer tlig; + + /* debug('ecr2 : '+str_);*/ + if (res == 1) tab = 10; + else tab = 6; + putxy(8, 177); + tlig = 59 + pred(integer, res) * 36; + if (length(str_) < tlig) writeg(str_, 5); + else if (length(str_) < (tlig << 1)) { + putxy(8, 176); + writeg(copy(str_, 1, pred(integer, tlig)), 5); + putxy(8, 182); + writeg(copy(str_, tlig, tlig << 1), 5); + } else { + f2_all = true; + clsf2(); + putxy(8, 176); + writeg(copy(str_, 1, pred(integer, tlig)), 5); + putxy(8, 182); + writeg(copy(str_, tlig, pred(integer, tlig << 1)), 5); + putxy(8, 190); + writeg(copy(str_, tlig << 1, tlig * 3), 5); + } +} + +void clsf3() { + integer i, j; + + /* debug('clsf3'); */ + hide_mouse(); + box(0, gd, 1, 192, 633, 199, 255); + boite(0, 191, 634, 8, 15); + show_mouse(); +} + +void ecr3(str255 text) { + /* debug('ecr3 : '+text);*/ + clsf3(); + putxy(8, 192); + writeg(text, 5); +} + +void ecrf6() { + /* debug('ecrf6'); */ + text_color(5); + boite(62, 33, 363, 80, 15); +} + +void ecrf7() { + text_color(4); + /* draw_mode(2); + text_height(4*res); + text_style(normal);*/ +} + +void clsf10() { + integer co, cod; + varying_string<8> st; + + /* debug('clsf10'); */ + hide_mouse(); + if (res == 1) { + co = 634; + cod = 534; + } else { + co = 600; + cod = 544; + } + box(15, gd, cod, 93, co, 98, 255); + if (s.conf < 33) st = "Cool"; + else if (s.conf < 66) st = " Lourde "; + else if (s.conf > 65) st = "Malsaine"; + if (res == 1) co = 10; + else co = 6; + co = 574 - ((cardinal)co * length(st) >> 1); + putxy(co, 92); + writeg(st, 4); + if (res == 1) co = 620; + else co = 584; + box(15, gd, 560, 24, co, 86, 255); + /* rempli(69,12,32,5,255);*/ + show_mouse(); +} + +void stop() { + clrscr; + hirs(); + gd = ams; + hirs(); + exit(0); +} + +void paint_rect(integer x, integer y, integer dx, integer dy) { + integer co; + + /* debug('paint_rect'); */ + if (gd == cga) co = 3; + else co = 11; + box(co, gd, x, y, x + dx, y + dy, 255); +} + +integer hazard(integer min, integer max) { + integer ha1; + real ha2; + + /* debug('hazard'); */ + integer hazard_result; + ha2 = Random(); + ha1 = trunc(ha2 * (max - min)); + hazard_result = min + ha1; + return hazard_result; +} + +void calch(integer &j, integer &h, integer &m) { + integer th, nh; + + /* debug('calch');*/ + nh = readclock(); + th = jh + ((nh - mh) / t); + m = ((th % 2) + vm) * 30; + h = ((cardinal)th >> 1) + vh; + if (m == 60) { + m = 0; + h = h + 1; + } + j = (h / 24) + vj; + h = h - ((j - vj) * 24); +} + +void conv(integer x, integer &y) { + integer cx; + + /* debug('conv'); */ + cx = 1; + y = 128; + while (cx < x) { + y = (cardinal)y >> 1; + cx = succ(integer, cx); + } } /* NIVEAU 12 */ -void okpas() -{ - tesok=true; -} - -void modobj(integer m) -{ - phrase str_; - str30 strp; - integer i,tay; - - /* debug('modobj'); */ - strp=' '; - if (m!= 500) - { - deline(m- 501+ c_st41,str_,tay); - strp= delig; - } - menut( invt[8], strp); - menu_disable( invt[8]); -} - -void modobj2(integer m,boolean t1,boolean t2) -{ - phrase str_; - str30 strp; - integer i,tay; - - /* debug('modobj'); */ - strp=' '; - if (t1 || t2) okpas(); - else tesok=false;; - if (m!= 500) - { - deline(m- 501+ c_st41,str_,tay); - strp= delig; - } - menut( invt[8], strp); - menu_disable( invt[8]); -} - - -void repon(integer f,integer m) -{ - str255 str_; - varying_string<40> str1; - phrase st; - text1 fic; - integer i, xco, dx, caspe, tay; - - /* debug('repon fenetre nř'+chr(f+48));*/ - if ((m> 499) && (m< 563)) - { - deline( m-501+c_st41,st,tay); - if (tay>((58+pred(integer,res)*37) << 1)) f2_all= true; - else f2_all= false; - clsf2(); - afftex(st,8,176,85,3,5); - } - else - { - modif(m); - if (f== 8) f= 2; - if (f== 1) f= 6; - if (f== 2) - { - clsf2(); - ecrf2(); - text1(8, 182, 103, m); - if ((m== 68) || (m== 69)) s.teauto[40]= '*'; - if ((m== 104) && (caff== 14)) - { - s.teauto[36]= '*'; - if (s.teauto[39]== '*') - { - s.pourc[3]= '*'; - s.teauto[38]= '*'; - } - } - } - if (set::of(6,9, eos).has(f)) - { - deline(m,st,tay); - if (f==6) i=4; - else i=5; - afftex(st,80,40,60,25,i); - if (m== 180) s.pourc[6]= '*'; - if (m== 179) s.pourc[10]= '*'; - } - if (f== 7) /* messint */ - { - ecrf7(); - deline(m,st,tay); - if (res==1) - { - xco=252-tay*5; - caspe= 100; - dx= 80; - } - else - { - xco=252-tay*3; - caspe= 144; - dx=50; - } - if (tay<40) afftex(st,xco,86,dx,3,5); - else afftex(st,caspe,86,dx,3,5); - } - } -} - -void f3f8() -{ - integer co; - - if (res==1) co=107; else co=64; - putxy(3,44); - writeg(f3,5); - ywhere= 51; - writeg(f8,5); - boite(0,42,co,16,7); -} - -void t5(integer cx) -{ - /* debug('t5'); */ - if (cx== 10) blo= false; - if (cx!= 1) - { - bh1= false; - bf1= false; - } - if (cx!= 2) bh2= false; - if (cx!= 4) - { - bh4= false; - bf4= false; - } - if (cx!= 5) bh5= false; - if (cx!= 6) bh6= false; - if (cx!= 8) bh8= false; - if (cx!= 3) bt3= false; - if (cx!= 7) bt7= false; - if (cx!= 9) bh9= false; -} - -void affper(integer per) -{ - integer cx; - - /* debug('affper'); */ - for( cx= 1; cx <= 8; cx ++) menu_disable( disc[cx]); - clsf10(); - if ((per & 128)== 128) - { - putxy(560,24); - writeg("LEO",4); - menu_enable( disc[1]); - } - if ((per & 64)== 64) - { - putxy(560, 32); - writeg("PAT",4); - menu_enable( disc[2]); - } - if ((per & 32)== 32) - { - putxy(560, 40); - writeg("GUY",4); - menu_enable( disc[3]); - } - if ((per & 16)== 16) - { - putxy(560,48); - writeg("EVA",4); - menu_enable( disc[4]); - } - if ((per & 8)== 8) - { - putxy(560,56); - writeg("BOB",4); - menu_enable( disc[5]); - } - if ((per & 4)== 4) - { - putxy(560, 64); - writeg("LUC",4); - menu_enable( disc[6]); - } - if ((per & 2)== 2) - { - putxy(560, 72); - writeg("IDA",4); - menu_enable( disc[7]); - } - if ((per & 1)== 1) - { - putxy(560, 80); - writeg("MAX",4); - menu_enable( disc[8]); - } - ipers= per; -} - -/* overlay */ void choix(integer min,integer max, integer& per) -{ - boolean i; - integer haz,cx,cy,cz; - long_integer per2,cz2; - - /* debug('o0 choix'); */ - haz= hazard(min,max); - if (haz> 4) - { - haz= 8- haz; - i= true; - } - else i= false; - cx= 0; - per= 0; - while (cx< haz) - { - cy= hazard(1,8); - conv(cy,cz); - if ((per & cz)!= cz) - { - cx= cx+ 1; - per= (per | cz); - } - } - if (i) per= 255- per; - i= false; -} - -/* overlay */ void cpl1(integer& p) -{ - integer j,h,m; - - /* debug('o0 cpl1'); */ - calch(j,h,m); - if ((h> 7) || (h< 11)) p= 25; - if ((h> 10) && (h< 14)) p= 35; - if ((h> 13) && (h< 16)) p= 50; - if ((h> 15) && (h< 18)) p= 5; - if ((h> 17) && (h< 22)) p= 35; - if ((h> 21) && (h< 24)) p= 50; - if ((h>= 0) && (h< 8)) p= 70; - mdn(); -} - -/* overlay */ void cpl2(integer& p) -{ - integer j,h,m; - - /* debug('o0 cpl2'); */ - calch(j,h,m); - if ((h> 7) && (h< 11)) p= -2; - if (h== 11) p= 100; - if ((h> 11) && (h< 23)) p= 10; - if (h== 23) p= 20; - if ((h>= 0) && (h< 8)) p= 50; -} - -/* overlay */ void cpl3(integer& p) -{ - integer j,h,m; - - /* debug('o0 cpl3'); */ - calch(j,h,m); - if (((h> 8) && (h< 10)) || ((h> 19) && (h< 24))) p= 34; - if (((h> 9) && (h< 20)) || ((h>= 0) && (h< 9))) p= 0; -} - -/* overlay */ void cpl5(integer& p) -{ - integer j,h,m; - - /* debug('o0 cpl5'); */ - calch(j,h,m); - if ((h> 6) && (h< 10)) p= 0; - if (h== 10) p= 100; - if ((h> 10) && (h< 24)) p= 15; - if ((h>= 0) && (h< 7)) p= 50; -} - -/* overlay */ void cpl6(integer& p) -{ - integer j,h,m; - - /* debug('o0 cpl6'); */ - calch(j,h,m); - if (((h> 7) && (h< 13)) || ((h> 17) && (h< 20))) p= -2; - if (((h> 12) && (h< 17)) || ((h> 19) && (h< 24))) p= 35; - if (h== 17) p= 100; - if ((h>= 0) && (h< 8)) p= 60; -} - -void person() -{ - const char m1[] = "Vous"; - const char m2[] = "tes"; - const char m3[] = "SEUL"; - integer cf; - str255 str_; - - /* debug('person'); */ - for( cf= 1; cf <= 8; cf ++) menu_disable( disc[cf]); - clsf10(); - putxy(560, 30); - writeg(m1,4); - putxy(560, 50); - writeg(m2,4); - putxy(560, 70); - writeg(m3,4); - ipers= 0; -} - -void chlm(integer& per) -{ - /* debug('chlm'); */ - per= hazard(1,2); - if (per== 2) per= 128; -} - -void pendule() -{ - const matrix<1,2,1,12,integer> cv - = {{{{ 5, 8, 10, 8, 5, 0, -5, -8, -10, -8, -5, 0}}, - {{-5, -3, 0, 3, 5, 6, 5, 3, 0, -3, -5, -6}} }}; - const integer x = 580; - const integer y = 123; - const integer rg = 9; - integer h,co; - - - /* debug('pendule'); */ - hide_mouse(); - /*paint_rect(572,114,18,20); - paint_rect(577,114,6,20);*/ - paint_rect(570,118,20,10); - paint_rect(578,114,6,18); - if (set::of(cga,her, eos).has(gd)) co=0; else co=1; - if (min== 0) droite(((cardinal)x >> 1)*res, y, ((cardinal)x >> 1)*res, (y- rg), co); - else droite(((cardinal)x >> 1)*res, y, ((cardinal)x >> 1)*res, (y+ rg), co); - h= heu; - if (h> 12) h= h- 12; - if (h== 0) h= 12; - droite(((cardinal)x >> 1)*res, y, ((cardinal)(x+ cv[1][h]) >> 1)*res, y+ cv[2][h], co); - show_mouse(); - putxy( 568, 154); - if (heu> 11) writeg( "PM ",1); - else writeg( "AM ",1); - putxy( 550, 160); - if (set::of(range(0,8), eos).has(jou)) writeg(string(chr(jou+49))+"& jour",1); +void okpas() { + tesok = true; +} + +void modobj(integer m) { + phrase str_; + str30 strp; + integer i, tay; + + /* debug('modobj'); */ + strp = ' '; + if (m != 500) { + deline(m - 501 + c_st41, str_, tay); + strp = delig; + } + menut(invt[8], strp); + menu_disable(invt[8]); +} + +void modobj2(integer m, boolean t1, boolean t2) { + phrase str_; + str30 strp; + integer i, tay; + + /* debug('modobj'); */ + strp = ' '; + if (t1 || t2) okpas(); + else tesok = false;; + if (m != 500) { + deline(m - 501 + c_st41, str_, tay); + strp = delig; + } + menut(invt[8], strp); + menu_disable(invt[8]); +} + + +void repon(integer f, integer m) { + str255 str_; + varying_string<40> str1; + phrase st; + text1 fic; + integer i, xco, dx, caspe, tay; + + /* debug('repon fenetre nř'+chr(f+48));*/ + if ((m > 499) && (m < 563)) { + deline(m - 501 + c_st41, st, tay); + if (tay > ((58 + pred(integer, res) * 37) << 1)) f2_all = true; + else f2_all = false; + clsf2(); + afftex(st, 8, 176, 85, 3, 5); + } else { + modif(m); + if (f == 8) f = 2; + if (f == 1) f = 6; + if (f == 2) { + clsf2(); + ecrf2(); + text1(8, 182, 103, m); + if ((m == 68) || (m == 69)) s.teauto[40] = '*'; + if ((m == 104) && (caff == 14)) { + s.teauto[36] = '*'; + if (s.teauto[39] == '*') { + s.pourc[3] = '*'; + s.teauto[38] = '*'; + } + } + } + if (set::of(6, 9, eos).has(f)) { + deline(m, st, tay); + if (f == 6) i = 4; + else i = 5; + afftex(st, 80, 40, 60, 25, i); + if (m == 180) s.pourc[6] = '*'; + if (m == 179) s.pourc[10] = '*'; + } + if (f == 7) { /* messint */ + ecrf7(); + deline(m, st, tay); + if (res == 1) { + xco = 252 - tay * 5; + caspe = 100; + dx = 80; + } else { + xco = 252 - tay * 3; + caspe = 144; + dx = 50; + } + if (tay < 40) afftex(st, xco, 86, dx, 3, 5); + else afftex(st, caspe, 86, dx, 3, 5); + } + } +} + +void f3f8() { + integer co; + + if (res == 1) co = 107; + else co = 64; + putxy(3, 44); + writeg(f3, 5); + ywhere = 51; + writeg(f8, 5); + boite(0, 42, co, 16, 7); +} + +void t5(integer cx) { + /* debug('t5'); */ + if (cx == 10) blo = false; + if (cx != 1) { + bh1 = false; + bf1 = false; + } + if (cx != 2) bh2 = false; + if (cx != 4) { + bh4 = false; + bf4 = false; + } + if (cx != 5) bh5 = false; + if (cx != 6) bh6 = false; + if (cx != 8) bh8 = false; + if (cx != 3) bt3 = false; + if (cx != 7) bt7 = false; + if (cx != 9) bh9 = false; +} + +void affper(integer per) { + integer cx; + + /* debug('affper'); */ + for (cx = 1; cx <= 8; cx ++) menu_disable(disc[cx]); + clsf10(); + if ((per & 128) == 128) { + putxy(560, 24); + writeg("LEO", 4); + menu_enable(disc[1]); + } + if ((per & 64) == 64) { + putxy(560, 32); + writeg("PAT", 4); + menu_enable(disc[2]); + } + if ((per & 32) == 32) { + putxy(560, 40); + writeg("GUY", 4); + menu_enable(disc[3]); + } + if ((per & 16) == 16) { + putxy(560, 48); + writeg("EVA", 4); + menu_enable(disc[4]); + } + if ((per & 8) == 8) { + putxy(560, 56); + writeg("BOB", 4); + menu_enable(disc[5]); + } + if ((per & 4) == 4) { + putxy(560, 64); + writeg("LUC", 4); + menu_enable(disc[6]); + } + if ((per & 2) == 2) { + putxy(560, 72); + writeg("IDA", 4); + menu_enable(disc[7]); + } + if ((per & 1) == 1) { + putxy(560, 80); + writeg("MAX", 4); + menu_enable(disc[8]); + } + ipers = per; +} + +/* overlay */ void choix(integer min, integer max, integer &per) { + boolean i; + integer haz, cx, cy, cz; + long_integer per2, cz2; + + /* debug('o0 choix'); */ + haz = hazard(min, max); + if (haz > 4) { + haz = 8 - haz; + i = true; + } else i = false; + cx = 0; + per = 0; + while (cx < haz) { + cy = hazard(1, 8); + conv(cy, cz); + if ((per & cz) != cz) { + cx = cx + 1; + per = (per | cz); + } + } + if (i) per = 255 - per; + i = false; +} + +/* overlay */ void cpl1(integer &p) { + integer j, h, m; + + /* debug('o0 cpl1'); */ + calch(j, h, m); + if ((h > 7) || (h < 11)) p = 25; + if ((h > 10) && (h < 14)) p = 35; + if ((h > 13) && (h < 16)) p = 50; + if ((h > 15) && (h < 18)) p = 5; + if ((h > 17) && (h < 22)) p = 35; + if ((h > 21) && (h < 24)) p = 50; + if ((h >= 0) && (h < 8)) p = 70; + mdn(); +} + +/* overlay */ void cpl2(integer &p) { + integer j, h, m; + + /* debug('o0 cpl2'); */ + calch(j, h, m); + if ((h > 7) && (h < 11)) p = -2; + if (h == 11) p = 100; + if ((h > 11) && (h < 23)) p = 10; + if (h == 23) p = 20; + if ((h >= 0) && (h < 8)) p = 50; +} + +/* overlay */ void cpl3(integer &p) { + integer j, h, m; + + /* debug('o0 cpl3'); */ + calch(j, h, m); + if (((h > 8) && (h < 10)) || ((h > 19) && (h < 24))) p = 34; + if (((h > 9) && (h < 20)) || ((h >= 0) && (h < 9))) p = 0; +} + +/* overlay */ void cpl5(integer &p) { + integer j, h, m; + + /* debug('o0 cpl5'); */ + calch(j, h, m); + if ((h > 6) && (h < 10)) p = 0; + if (h == 10) p = 100; + if ((h > 10) && (h < 24)) p = 15; + if ((h >= 0) && (h < 7)) p = 50; +} + +/* overlay */ void cpl6(integer &p) { + integer j, h, m; + + /* debug('o0 cpl6'); */ + calch(j, h, m); + if (((h > 7) && (h < 13)) || ((h > 17) && (h < 20))) p = -2; + if (((h > 12) && (h < 17)) || ((h > 19) && (h < 24))) p = 35; + if (h == 17) p = 100; + if ((h >= 0) && (h < 8)) p = 60; +} + +void person() { + const char m1[] = "Vous"; + const char m2[] = "tes"; + const char m3[] = "SEUL"; + integer cf; + str255 str_; + + /* debug('person'); */ + for (cf = 1; cf <= 8; cf ++) menu_disable(disc[cf]); + clsf10(); + putxy(560, 30); + writeg(m1, 4); + putxy(560, 50); + writeg(m2, 4); + putxy(560, 70); + writeg(m3, 4); + ipers = 0; +} + +void chlm(integer &per) { + /* debug('chlm'); */ + per = hazard(1, 2); + if (per == 2) per = 128; +} + +void pendule() { + const matrix<1, 2, 1, 12, integer> cv + = {{{{ 5, 8, 10, 8, 5, 0, -5, -8, -10, -8, -5, 0}}, + {{ -5, -3, 0, 3, 5, 6, 5, 3, 0, -3, -5, -6}} + } + }; + const integer x = 580; + const integer y = 123; + const integer rg = 9; + integer h, co; + + + /* debug('pendule'); */ + hide_mouse(); + /*paint_rect(572,114,18,20); + paint_rect(577,114,6,20);*/ + paint_rect(570, 118, 20, 10); + paint_rect(578, 114, 6, 18); + if (set::of(cga, her, eos).has(gd)) co = 0; + else co = 1; + if (min == 0) droite(((cardinal)x >> 1)*res, y, ((cardinal)x >> 1)*res, (y - rg), co); + else droite(((cardinal)x >> 1)*res, y, ((cardinal)x >> 1)*res, (y + rg), co); + h = heu; + if (h > 12) h = h - 12; + if (h == 0) h = 12; + droite(((cardinal)x >> 1)*res, y, ((cardinal)(x + cv[1][h]) >> 1)*res, y + cv[2][h], co); + show_mouse(); + putxy(568, 154); + if (heu > 11) writeg("PM ", 1); + else writeg("AM ", 1); + putxy(550, 160); + if (set::of(range(0, 8), eos).has(jou)) writeg(string(chr(jou + 49)) + "& jour", 1); } /************* * NIVEAU 11 * *************/ -void debloc(integer l) -{ -/* debug('debloc'); */ - num= 0; - x= 0; - y= 0; - if ((l!= 26) && (l!= 15)) t5(l); - mpers= ipers; +void debloc(integer l) { + /* debug('debloc'); */ + num = 0; + x = 0; + y = 0; + if ((l != 26) && (l != 15)) t5(l); + mpers = ipers; } -/* overlay */ void cpl10(integer& p,integer& h) -{ - integer j,m; +/* overlay */ void cpl10(integer &p, integer &h) { + integer j, m; -/* debug('o1 cpl10'); */ - calch(j,h,m); - if (((h> 7) && (h< 11)) || ((h> 11) && (h< 14)) - || ((h> 18) && (h< 21))) p= 100; - if ((h== 11) || ((h> 20) && (h< 24))) p= 45; - if (((h> 13) && (h< 17)) || (h== 18)) p= 35; - if (h== 17) p= 60; - if ((h>= 0) && (h< 8)) p= 5; + /* debug('o1 cpl10'); */ + calch(j, h, m); + if (((h > 7) && (h < 11)) || ((h > 11) && (h < 14)) + || ((h > 18) && (h < 21))) p = 100; + if ((h == 11) || ((h > 20) && (h < 24))) p = 45; + if (((h > 13) && (h < 17)) || (h == 18)) p = 35; + if (h == 17) p = 60; + if ((h >= 0) && (h < 8)) p = 5; } -/* overlay */ void cpl11(integer& p,integer& h) -{ - integer j,m; - -/* debug('o1 cpl11'); */ - calch(j,h,m); - if (((h> 8) && (h< 12)) || ((h> 20) && (h< 24))) p= 25; - if (((h> 11) && (h< 14)) || ((h> 18) && (h< 21))) p= 5; - if ((h> 13) && (h< 17)) p= 55; - if ((h> 16) && (h< 19)) p= 45; - if ((h>= 0) && (h< 9)) p= 0; -} - -/* overlay */ void cpl12(integer& p) -{ - integer j,h,m; - -/* debug('o1 cpl12'); */ - calch(j,h,m); - if (((h> 8) && (h< 15)) || ((h> 16) && (h< 22))) p= 55; - if (((h> 14) && (h< 17)) || ((h> 21) && (h< 24))) p= 25; - if ((h>= 0) && (h< 5)) p= 0; - if ((h> 4) && (h< 9)) p= 15; -} - -/* overlay */ void cpl13(integer& p) -{ -/* debug('o1 cpl13'); */ - p= 0; -} - -/* overlay */ void cpl15(integer& p) -{ - integer j,h,m; +/* overlay */ void cpl11(integer &p, integer &h) { + integer j, m; -/* debug('o1 cpl15'); */ - calch(j,h,m); - if ((h> 7) && (h< 12)) p= 25; - if ((h> 11) && (h< 14)) p= 0; - if ((h> 13) && (h< 18)) p= 10; - if ((h> 17) && (h< 20)) p= 55; - if ((h> 19) && (h< 22)) p= 5; - if ((h> 21) && (h< 24)) p= 15; - if ((h>= 0) && (h< 8)) p= -15; -} - -/* overlay */ void cpl20(integer& p,integer& h) -{ - integer j,m; - -/* debug('o1 cpl20'); */ - calch(j,h,m); - if (h== 10) p= 65; - if ((h> 10) && (h< 21)) p= 5; - if ((h> 20) && (h< 24)) p= -15; - if ((h>= 0) && (h< 5)) p= -300; - if ((h> 4) && (h< 10)) p= -5; -} - -/* overlay */ void quelq1(integer l) -{ - integer per; - -/* debug('o1 quelq1'); */ - per= hazard(1,2); - if (l== 1) - if (per== 1) bh1= true; else bf1= true; - if (l== 4) - if (per== 1) bh4= true; else bf4= true; - ipers= 10; -} - -/* overlay */ void quelq2() -{ -/* debug('o1 quelq2'); */ - if (li== 2) bh2= true; else bh9= true; - ipers= 10; -} - -/* overlay */ void quelq5() -{ -/* debug('o1 quelq5'); */ - bh5= true; - ipers= 10; -} - -/* overlay */ void quelq6(integer l) -{ - integer per; - -/* debug('o1 quelq6'); */ - if (l== 6) bh6= true; - if (l== 8) bh8= true; - ipers= 10; -} - -/* overlay */ void quelq10(integer h, integer& per) -{ - integer min,max; - -/* debug('o1 quelq10'); */ - if ((h>= 0) && (h< 8)) chlm(per); else - { - if ((h> 7) && (h< 10)) - { - min= 5; - max= 7; - } - if ((h> 9) && (h< 12)) - { - min= 1; - max= 4; - } - if (((h> 11) && (h< 15)) || ((h> 18) && (h< 21))) - { - min= 6; - max= 8; - } - if (((h> 14) && (h< 19)) || ((h> 20) && (h< 24))) - { - min= 1; - max= 5; - } - choix(min,max,per); - } - affper(per); -} - -/* overlay */ void quelq11(integer h, integer& per) -{ - integer min,max; - -/* debug('o1 quelq11'); */ - if ((h>= 0) && (h< 8)) chlm(per); else - { - if (((h> 7) && (h< 10)) || ((h>20) && (h< 24))) - { - min= 1; - max= 3; - } - if (((h> 9) && (h< 12)) || ((h> 13) && (h< 19))) - { - min= 1; - max= 4; - } - if (((h> 11) && (h< 14)) || ((h> 18) && (h< 21))) - { - min= 1; - max= 2; - } - choix(min,max,per); - } - affper(per); -} - -/* overlay */ void quelq12(integer& per) -{ -/* debug('o1 quelq12'); */ - chlm(per); - affper(per); -} - -/* overlay */ void quelq15(integer& per) -{ - integer cx; - boolean test; - - -/* debug('o1 quelq15'); */ - per= 0; - if (per== 0) - { - do { - cx= hazard(1,8); - test =(((cx== 1) && (bh2 || bh9)) || - ((cx== 2) && bh8) || - ((cx== 3) && bh4) || - ((cx== 4) && bf4) || - ((cx== 5) && bh6) || - ((cx== 6) && bh1) || - ((cx== 7) && bf1) || - ((cx== 8) && bh5)); - } while (!(! test)); - conv(cx,per); - affper(per); - } -} - -/* overlay */ void quelq20(integer h, integer& per) -{ - integer min,max; - -/* debug('o1 quelq20'); */ - if (((h>= 0) && (h< 10)) || ((h> 18) && (h< 24))) chlm(per); - else - { - if ((h> 9) && (h< 12)) - { - min= 3; - max= 7; - } - if ((h> 11) && (h< 18)) - { - min= 1; - max= 2; - } - if (h== 18) - { - min= 2; - max= 4; - } - choix(min,max,per); - } - affper(per); -} - - -/* overlay */void frap() -{ - integer j,h,m,haz; - -/* debug('o1 frap'); */ - calch(j,h,m); - if ((h>= 0) && (h< 8)) crep= 190; else - { - haz= hazard(1,100); - if (haz> 70) crep= 190; else crep= 147; - } -} - -/* overlay */ void nouvp(integer l, integer& p) -{ -/* debug('o1 nouvp'); */ - p= 0; - if (l== 1) - { - if (bh1) p= 4; - if (bf1) p= 2; - } - if (((l== 2) && (bh2)) || ((l== 9) && (bh9))) p= 128; - if (l== 4) - { - if (bh4) p= 32; - if (bf4) p= 16; - } - if ((l== 5) && (bh5)) p= 1; - if ((l== 6) && (bh6)) p= 8; - if ((l== 8) && (bh8)) p= 64; - if (((l== 3) && (bt3)) || ((l== 7) && (bt7))) p= 9; - if (p!= 9) affper(p); -} - - - -/* overlay */ void tip(integer ip, integer& cx) -{ -/* debug('o1 tip'); */ - if (ip== 128) cx= 1; else - if (ip== 64) cx= 2; else - if (ip== 32) cx= 3; else - if (ip== 16) cx= 4; else - if (ip== 8) cx= 5; else - if (ip== 4) cx= 6; else - if (ip== 2) cx= 7; else - if (ip== 1) cx= 8; -} - - -/* overlay */ void ecfren(integer& p,integer& haz, integer cf,integer l) -{ -/* debug('o1 ecfren'); */ - if (l== 0) person(); - p= -500; - haz= 0; - if (((l== 1) && (! bh1) && (! bf1)) - || ((l== 4) && (! bh4) && (! bf4))) cpl1(p); - if ((l== 2) && (! bh2) && (! bh9)) cpl2(p); - if (((l== 3) && (! bt3)) || ((l== 7) && (! bt7))) cpl3(p); - if ((l== 5) && (! bh5)) cpl5(p); - if (((l== 6) && (! bh6)) || ((l== 8) && (! bh8))) cpl6(p); - if ((l== 9) && (! bh9) && (! bh2)) p= 10; - if (((l== 2) && (bh9)) || ((l== 9) && (bh2))) p= -400; - if (p!= -500) - { - p= p+ cf; - haz= hazard(1,100); - } -} - -/* overlay */ void becfren(integer l) -{ - integer haz; - -/* debug('o1 becfren'); */ - if ((l== 1) || (l== 4)) - { - haz= hazard(1,2); - if (l== 1) - if (haz== 1) bh1= true; else bf1= true; - if (l== 4) - if (haz== 1) bh4= true; else bf4= true; - } - if (l== 2) bh2= true; else - if (l== 3) bt3= true; else - if (l== 5) bh5= true; else - if (l== 6) bh6= true; else - if (l== 7) bt7= true; else - if (l== 8) bh8= true; else - if (l== 9) bh9= true; + /* debug('o1 cpl11'); */ + calch(j, h, m); + if (((h > 8) && (h < 12)) || ((h > 20) && (h < 24))) p = 25; + if (((h > 11) && (h < 14)) || ((h > 18) && (h < 21))) p = 5; + if ((h > 13) && (h < 17)) p = 55; + if ((h > 16) && (h < 19)) p = 45; + if ((h >= 0) && (h < 9)) p = 0; +} + +/* overlay */ void cpl12(integer &p) { + integer j, h, m; + + /* debug('o1 cpl12'); */ + calch(j, h, m); + if (((h > 8) && (h < 15)) || ((h > 16) && (h < 22))) p = 55; + if (((h > 14) && (h < 17)) || ((h > 21) && (h < 24))) p = 25; + if ((h >= 0) && (h < 5)) p = 0; + if ((h > 4) && (h < 9)) p = 15; +} + +/* overlay */ void cpl13(integer &p) { + /* debug('o1 cpl13'); */ + p = 0; +} + +/* overlay */ void cpl15(integer &p) { + integer j, h, m; + + /* debug('o1 cpl15'); */ + calch(j, h, m); + if ((h > 7) && (h < 12)) p = 25; + if ((h > 11) && (h < 14)) p = 0; + if ((h > 13) && (h < 18)) p = 10; + if ((h > 17) && (h < 20)) p = 55; + if ((h > 19) && (h < 22)) p = 5; + if ((h > 21) && (h < 24)) p = 15; + if ((h >= 0) && (h < 8)) p = -15; +} + +/* overlay */ void cpl20(integer &p, integer &h) { + integer j, m; + + /* debug('o1 cpl20'); */ + calch(j, h, m); + if (h == 10) p = 65; + if ((h > 10) && (h < 21)) p = 5; + if ((h > 20) && (h < 24)) p = -15; + if ((h >= 0) && (h < 5)) p = -300; + if ((h > 4) && (h < 10)) p = -5; +} + +/* overlay */ void quelq1(integer l) { + integer per; + + /* debug('o1 quelq1'); */ + per = hazard(1, 2); + if (l == 1) + if (per == 1) bh1 = true; + else bf1 = true; + if (l == 4) + if (per == 1) bh4 = true; + else bf4 = true; + ipers = 10; +} + +/* overlay */ void quelq2() { + /* debug('o1 quelq2'); */ + if (li == 2) bh2 = true; + else bh9 = true; + ipers = 10; +} + +/* overlay */ void quelq5() { + /* debug('o1 quelq5'); */ + bh5 = true; + ipers = 10; +} + +/* overlay */ void quelq6(integer l) { + integer per; + + /* debug('o1 quelq6'); */ + if (l == 6) bh6 = true; + if (l == 8) bh8 = true; + ipers = 10; +} + +/* overlay */ void quelq10(integer h, integer &per) { + integer min, max; + + /* debug('o1 quelq10'); */ + if ((h >= 0) && (h < 8)) chlm(per); + else { + if ((h > 7) && (h < 10)) { + min = 5; + max = 7; + } + if ((h > 9) && (h < 12)) { + min = 1; + max = 4; + } + if (((h > 11) && (h < 15)) || ((h > 18) && (h < 21))) { + min = 6; + max = 8; + } + if (((h > 14) && (h < 19)) || ((h > 20) && (h < 24))) { + min = 1; + max = 5; + } + choix(min, max, per); + } + affper(per); +} + +/* overlay */ void quelq11(integer h, integer &per) { + integer min, max; + + /* debug('o1 quelq11'); */ + if ((h >= 0) && (h < 8)) chlm(per); + else { + if (((h > 7) && (h < 10)) || ((h > 20) && (h < 24))) { + min = 1; + max = 3; + } + if (((h > 9) && (h < 12)) || ((h > 13) && (h < 19))) { + min = 1; + max = 4; + } + if (((h > 11) && (h < 14)) || ((h > 18) && (h < 21))) { + min = 1; + max = 2; + } + choix(min, max, per); + } + affper(per); +} + +/* overlay */ void quelq12(integer &per) { + /* debug('o1 quelq12'); */ + chlm(per); + affper(per); +} + +/* overlay */ void quelq15(integer &per) { + integer cx; + boolean test; + + + /* debug('o1 quelq15'); */ + per = 0; + if (per == 0) { + do { + cx = hazard(1, 8); + test = (((cx == 1) && (bh2 || bh9)) || + ((cx == 2) && bh8) || + ((cx == 3) && bh4) || + ((cx == 4) && bf4) || + ((cx == 5) && bh6) || + ((cx == 6) && bh1) || + ((cx == 7) && bf1) || + ((cx == 8) && bh5)); + } while (!(! test)); + conv(cx, per); + affper(per); + } +} + +/* overlay */ void quelq20(integer h, integer &per) { + integer min, max; + + /* debug('o1 quelq20'); */ + if (((h >= 0) && (h < 10)) || ((h > 18) && (h < 24))) chlm(per); + else { + if ((h > 9) && (h < 12)) { + min = 3; + max = 7; + } + if ((h > 11) && (h < 18)) { + min = 1; + max = 2; + } + if (h == 18) { + min = 2; + max = 4; + } + choix(min, max, per); + } + affper(per); +} + + +/* overlay */void frap() { + integer j, h, m, haz; + + /* debug('o1 frap'); */ + calch(j, h, m); + if ((h >= 0) && (h < 8)) crep = 190; + else { + haz = hazard(1, 100); + if (haz > 70) crep = 190; + else crep = 147; + } +} + +/* overlay */ void nouvp(integer l, integer &p) { + /* debug('o1 nouvp'); */ + p = 0; + if (l == 1) { + if (bh1) p = 4; + if (bf1) p = 2; + } + if (((l == 2) && (bh2)) || ((l == 9) && (bh9))) p = 128; + if (l == 4) { + if (bh4) p = 32; + if (bf4) p = 16; + } + if ((l == 5) && (bh5)) p = 1; + if ((l == 6) && (bh6)) p = 8; + if ((l == 8) && (bh8)) p = 64; + if (((l == 3) && (bt3)) || ((l == 7) && (bt7))) p = 9; + if (p != 9) affper(p); +} + + + +/* overlay */ void tip(integer ip, integer &cx) { + /* debug('o1 tip'); */ + if (ip == 128) cx = 1; + else if (ip == 64) cx = 2; + else if (ip == 32) cx = 3; + else if (ip == 16) cx = 4; + else if (ip == 8) cx = 5; + else if (ip == 4) cx = 6; + else if (ip == 2) cx = 7; + else if (ip == 1) cx = 8; +} + + +/* overlay */ void ecfren(integer &p, integer &haz, integer cf, integer l) { + /* debug('o1 ecfren'); */ + if (l == 0) person(); + p = -500; + haz = 0; + if (((l == 1) && (! bh1) && (! bf1)) + || ((l == 4) && (! bh4) && (! bf4))) cpl1(p); + if ((l == 2) && (! bh2) && (! bh9)) cpl2(p); + if (((l == 3) && (! bt3)) || ((l == 7) && (! bt7))) cpl3(p); + if ((l == 5) && (! bh5)) cpl5(p); + if (((l == 6) && (! bh6)) || ((l == 8) && (! bh8))) cpl6(p); + if ((l == 9) && (! bh9) && (! bh2)) p = 10; + if (((l == 2) && (bh9)) || ((l == 9) && (bh2))) p = -400; + if (p != -500) { + p = p + cf; + haz = hazard(1, 100); + } +} + +/* overlay */ void becfren(integer l) { + integer haz; + + /* debug('o1 becfren'); */ + if ((l == 1) || (l == 4)) { + haz = hazard(1, 2); + if (l == 1) + if (haz == 1) bh1 = true; + else bf1 = true; + if (l == 4) + if (haz == 1) bh4 = true; + else bf4 = true; + } + if (l == 2) bh2 = true; + else if (l == 3) bt3 = true; + else if (l == 5) bh5 = true; + else if (l == 6) bh6 = true; + else if (l == 7) bt7 = true; + else if (l == 8) bh8 = true; + else if (l == 9) bh9 = true; } /* NIVEAU 10 */ -void init_nbrepm() -{ - const array<1,8,byte> ipm - = {{4,5,6,7,5,6,5,8}}; - integer i; - -/* debug('init_nbrepm'); */ - i= 0; - do { - i= succ(integer,i); - nbrepm[i]= ipm[i]; - } while (!(i==8)); -} - -void phaz(integer& haz,integer& p, integer cf) -{ -/* debug('phaz'); */ - p= p+ cf; - haz= hazard(1,100); -} - -/* overlay */ void inzon() -{ - integer cx; - -/* debug('o2 inzon'); */ - copcha(); - { - s.ipre = false; - s.derobj= 0; - s.icave = 0; - s.iboul = 0; - s.ibag = 0; - s.ipuit = 0; - s.ivier = 0; - s.iloic = 136; - s.icryp = 141; - s.conf = hazard(4,10); - s.mlieu = 21; - for( cx= 2; cx <= 6; cx ++) s.sjer[cx]= chr(0); - s.sjer[1]= chr(113); - s.heure= chr(20); - for( cx= 1; cx <= 10; cx ++) s.pourc[cx]= ' '; - for( cx= 1; cx <= 6; cx ++) s.teauto[cx]= '*'; - for( cx= 7; cx <= 9; cx ++) s.teauto[cx]= ' '; - for( cx= 10; cx <= 28; cx ++) s.teauto[cx]= '*'; - for( cx= 29; cx <= 42; cx ++) s.teauto[cx]= ' '; - s.teauto[33]= '*'; - } - for( cx= 1; cx <= 8; cx ++) nbrep[cx]= 0; - init_nbrepm(); -} - -/* overlay */ void dprog() -{ -/* debug('o2 dprog'); */ - li= 21; - /* jh:= t_settime(0);*/ - jh= 0; - if (! s.ipre) blo= true; - t= ti1; - mh= readclock(); -} - -/* overlay */ void pl1(integer cf) -{ - integer p, haz; - -/* debug('o2 pl1'); */ - if (((li== 1) && (! bh1) && (! bf1)) - || ((li== 4) && (! bh4) && (! bf4))) - { - cpl1(p); - phaz(haz,p,cf); - if (haz> p) person(); else quelq1(li); - } -} - -/* overlay */ void pl2(integer cf) -{ - integer p,haz; - -/* debug('o2 pl2'); */ - if (! bh2) - { - cpl2(p); - phaz(haz,p,cf); - if (haz> p) person(); else quelq2(); - } -} - -/* overlay */ void pl5(integer cf) -{ - integer p,haz; - -/* debug('o2 pl5'); */ - if (! bh5) - { - cpl5(p); - phaz(haz,p,cf); - if (haz> p) person(); else quelq5(); - } -} - -/* overlay */ void pl6(integer cf) -{ - integer p,haz; - -/* debug('o2 pl6'); */ - if (((li== 6) && (! bh6)) || ((li== 8) && (! bh8))) - { - cpl6(p); - phaz(haz,p,cf); - if (haz> p) person(); else quelq6(li); - } -} - -/* overlayi */ void pl9(integer cf) -{ - integer p,haz; - -/* debug('o2 pl9'); */ - if (! bh9) - { - cf= -10; - phaz(haz,p,cf); - if (haz> p) person(); else quelq2(); - } -} - -/* overlayi */ void pl10(integer cf) -{ - integer p,h,haz; - -/* debug('o2 pl10'); */ - cpl10(p,h); - phaz(haz,p,cf); - if (haz> p) person(); else quelq10(h,p); -} - -/* overlay */ void pl11(integer cf) -{ - integer p,h,haz; - -/* debug('o2 pl11'); */ - cpl11(p,h); - phaz(haz,p,cf); - if (haz> p) person(); else quelq11(h,p); -} - -/* overlay */ void pl12(integer cf) -{ - integer p,haz; - -/* debug('o2 pl12'); */ - cpl12(p); - phaz(haz,p,cf); - if (haz> p) person(); else quelq12(p); -} - -/* overlay */ void pl13(integer cf) -{ - integer p,haz; - -/* debug('o2 pl13'); */ - cpl13(p); - phaz(haz,p,cf); - if (haz> p) person(); else quelq12(p); -} - -/* overlay */ void pl15(integer cf) -{ - integer p,haz; - -/* debug('o2 pl15'); */ - cpl15(p); - phaz(haz,p,cf); - if (haz> p) person(); else quelq15(p); -} - -/* overlay */ void pl20(integer cf) -{ - integer p,h,haz; - -/* debug('o2 pl20'); */ - cpl20(p,h); - phaz(haz,p,cf); - if (haz> p) person(); else quelq20(h,p); -} - -/* overlay */ void t11(integer l11, integer& a) -{ - integer p,haz,h; - -/* debug('o2 t11'); */ - ecfren(p,haz,s.conf,l11); - li= l11; - if ((l11> 0) && (l11< 10)) - if (p!= -500) - { - if (haz> p) - { - person(); - a= 0; - } - else - { - becfren(li); - nouvp(li,a); - } - } - else nouvp(li,a); - if (l11> 9) - if ((l11> 15) && (l11!= 20) && (l11!= 26)) person(); else - { - if (l11== 10) cpl10(p,h); - if (l11== 11) cpl11(p,h); - if (l11== 12) cpl12(p); - if ((l11== 13) || (l11== 14)) cpl13(p); - if ((l11== 15) || (l11== 26)) cpl15(p); - if (l11== 20) cpl20(p,h); - p= p+ s.conf; - haz= hazard(1,100); - if (haz> p) - { - person(); - a= 0; - } - else - { - if (l11== 10) quelq10(h,p); - if (l11== 11) quelq11(h,p); - if ((l11== 12) || (l11== 13) || (l11== 14)) quelq12(p); - if ((l11== 15) || (l11== 26)) quelq15(p); - if (l11== 20) quelq20(h,p); - a= p; - } - } +void init_nbrepm() { + const array<1, 8, byte> ipm + = {{4, 5, 6, 7, 5, 6, 5, 8}}; + integer i; + + /* debug('init_nbrepm'); */ + i = 0; + do { + i = succ(integer, i); + nbrepm[i] = ipm[i]; + } while (!(i == 8)); +} + +void phaz(integer &haz, integer &p, integer cf) { + /* debug('phaz'); */ + p = p + cf; + haz = hazard(1, 100); +} + +/* overlay */ void inzon() { + integer cx; + + /* debug('o2 inzon'); */ + copcha(); + { + s.ipre = false; + s.derobj = 0; + s.icave = 0; + s.iboul = 0; + s.ibag = 0; + s.ipuit = 0; + s.ivier = 0; + s.iloic = 136; + s.icryp = 141; + s.conf = hazard(4, 10); + s.mlieu = 21; + for (cx = 2; cx <= 6; cx ++) s.sjer[cx] = chr(0); + s.sjer[1] = chr(113); + s.heure = chr(20); + for (cx = 1; cx <= 10; cx ++) s.pourc[cx] = ' '; + for (cx = 1; cx <= 6; cx ++) s.teauto[cx] = '*'; + for (cx = 7; cx <= 9; cx ++) s.teauto[cx] = ' '; + for (cx = 10; cx <= 28; cx ++) s.teauto[cx] = '*'; + for (cx = 29; cx <= 42; cx ++) s.teauto[cx] = ' '; + s.teauto[33] = '*'; + } + for (cx = 1; cx <= 8; cx ++) nbrep[cx] = 0; + init_nbrepm(); +} + +/* overlay */ void dprog() { + /* debug('o2 dprog'); */ + li = 21; + /* jh:= t_settime(0);*/ + jh = 0; + if (! s.ipre) blo = true; + t = ti1; + mh = readclock(); +} + +/* overlay */ void pl1(integer cf) { + integer p, haz; + + /* debug('o2 pl1'); */ + if (((li == 1) && (! bh1) && (! bf1)) + || ((li == 4) && (! bh4) && (! bf4))) { + cpl1(p); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq1(li); + } +} + +/* overlay */ void pl2(integer cf) { + integer p, haz; + + /* debug('o2 pl2'); */ + if (! bh2) { + cpl2(p); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq2(); + } +} + +/* overlay */ void pl5(integer cf) { + integer p, haz; + + /* debug('o2 pl5'); */ + if (! bh5) { + cpl5(p); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq5(); + } +} + +/* overlay */ void pl6(integer cf) { + integer p, haz; + + /* debug('o2 pl6'); */ + if (((li == 6) && (! bh6)) || ((li == 8) && (! bh8))) { + cpl6(p); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq6(li); + } +} + +/* overlayi */ void pl9(integer cf) { + integer p, haz; + + /* debug('o2 pl9'); */ + if (! bh9) { + cf = -10; + phaz(haz, p, cf); + if (haz > p) person(); + else quelq2(); + } +} + +/* overlayi */ void pl10(integer cf) { + integer p, h, haz; + + /* debug('o2 pl10'); */ + cpl10(p, h); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq10(h, p); +} + +/* overlay */ void pl11(integer cf) { + integer p, h, haz; + + /* debug('o2 pl11'); */ + cpl11(p, h); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq11(h, p); +} + +/* overlay */ void pl12(integer cf) { + integer p, haz; + + /* debug('o2 pl12'); */ + cpl12(p); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq12(p); +} + +/* overlay */ void pl13(integer cf) { + integer p, haz; + + /* debug('o2 pl13'); */ + cpl13(p); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq12(p); +} + +/* overlay */ void pl15(integer cf) { + integer p, haz; + + /* debug('o2 pl15'); */ + cpl15(p); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq15(p); +} + +/* overlay */ void pl20(integer cf) { + integer p, h, haz; + + /* debug('o2 pl20'); */ + cpl20(p, h); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq20(h, p); +} + +/* overlay */ void t11(integer l11, integer &a) { + integer p, haz, h; + + /* debug('o2 t11'); */ + ecfren(p, haz, s.conf, l11); + li = l11; + if ((l11 > 0) && (l11 < 10)) + if (p != -500) { + if (haz > p) { + person(); + a = 0; + } else { + becfren(li); + nouvp(li, a); + } + } else nouvp(li, a); + if (l11 > 9) + if ((l11 > 15) && (l11 != 20) && (l11 != 26)) person(); + else { + if (l11 == 10) cpl10(p, h); + if (l11 == 11) cpl11(p, h); + if (l11 == 12) cpl12(p); + if ((l11 == 13) || (l11 == 14)) cpl13(p); + if ((l11 == 15) || (l11 == 26)) cpl15(p); + if (l11 == 20) cpl20(p, h); + p = p + s.conf; + haz = hazard(1, 100); + if (haz > p) { + person(); + a = 0; + } else { + if (l11 == 10) quelq10(h, p); + if (l11 == 11) quelq11(h, p); + if ((l11 == 12) || (l11 == 13) || (l11 == 14)) quelq12(p); + if ((l11 == 15) || (l11 == 26)) quelq15(p); + if (l11 == 20) quelq20(h, p); + a = p; + } + } } /* overlay */ void cavegre() { - integer haz; - -/* debug('cavegre'); */ - s.conf= s.conf+ 2; - if (s.conf> 69) s.conf= s.conf+ (s.conf / 10); - clsf3(); - ecrf2(); - ecr3(m1); - haz= (hazard(0, 4))- 2; - parole(2, haz, 1); - for( haz=0; haz <= 3000; haz ++); - clsf3(); - person(); -} - -void writetp(str255 s,integer t) -{ - if (res==2) writeg(s,t); - else writeg(copy(s,1,25),t); -} - -void messint(integer nu) -{ -/* debug('messint'); */ - clsf1(); - clsf2(); - clsf3(); - decomp( 0x73a2, 1008); - memw[0x7413+12]= 80; - memw[0x7413+14]= 40; - writepal(90); - afff(gd,0x73a2, 1008,0,0); - afff(gd,0x73a2, 1008,0,70); - repon(7,nu); -} - -void aniof(integer ouf,integer num) - { - integer ad, offset; - char c; - - /* debug('aniof'); */ - if ((caff== 7) && ((num== 4) || (num== 5))) return; - if ((caff== 10) && (num== 7)) num= 6; - if (caff== 12) if (num== 3) num= 4; - else if (num== 4) num= 3; - ad= adani; - offset= animof(ouf,num); - decomp(ad,offset); - hide_mouse(); - afff(gd,ad,offset,0,12); - ecrf1(); - show_mouse(); - } - -void musique(integer so) -{ - boolean i; - integer haz; -/* dep: array[1..5] of long_integer;*/ - -/* debug('musique'); */ - if (so== 0) /*musik(0)*/ {; } - else - if ((prebru== 0) && (! s.ipre)) - { - parole(10, 1, 1); - prebru= prebru+ 1; - } - else - { - i= false; - if ((s.mlieu== 19) || (s.mlieu== 21) || (s.mlieu== 22)) - { - haz= hazard(1,3); - if (haz== 2) - { - haz= hazard(2,4); - parole(9,haz,1); - i= true; - } - } - if (s.mlieu== 20) - { - haz= hazard(1,2); - if (haz== 1) - { - parole(8,1,1); - i= true; - } - } - if (s.mlieu== 24) - { - haz= hazard(1,2); - if (haz== 2) - { - parole(12,1,1); - i= true; - } - } - if (s.mlieu== 23) - { - parole(13,1,1); - i= true; - } - if (! i) - { - /* dep[1]:= 1416; - dep[2]:= 1512; - dep[3]:= 1692; - dep[4]:= 1884; - dep[5]:= 2046; - haz:= hazard(1,5); - musik(dep[haz]);*/ - haz= hazard(1,17); - parole(haz,1,2); - } - } + integer haz; + + /* debug('cavegre'); */ + s.conf = s.conf + 2; + if (s.conf > 69) s.conf = s.conf + (s.conf / 10); + clsf3(); + ecrf2(); + ecr3(m1); + haz = (hazard(0, 4)) - 2; + parole(2, haz, 1); + for (haz = 0; haz <= 3000; haz ++); + clsf3(); + person(); +} + +void writetp(str255 s, integer t) { + if (res == 2) writeg(s, t); + else writeg(copy(s, 1, 25), t); +} + +void messint(integer nu) { + /* debug('messint'); */ + clsf1(); + clsf2(); + clsf3(); + decomp(0x73a2, 1008); + memw[0x7413 + 12] = 80; + memw[0x7413 + 14] = 40; + writepal(90); + afff(gd, 0x73a2, 1008, 0, 0); + afff(gd, 0x73a2, 1008, 0, 70); + repon(7, nu); +} + +void aniof(integer ouf, integer num) { + integer ad, offset; + char c; + + /* debug('aniof'); */ + if ((caff == 7) && ((num == 4) || (num == 5))) return; + if ((caff == 10) && (num == 7)) num = 6; + if (caff == 12) if (num == 3) num = 4; + else if (num == 4) num = 3; + ad = adani; + offset = animof(ouf, num); + decomp(ad, offset); + hide_mouse(); + afff(gd, ad, offset, 0, 12); + ecrf1(); + show_mouse(); +} + +void musique(integer so) { + boolean i; + integer haz; + /* dep: array[1..5] of long_integer;*/ + + /* debug('musique'); */ + if (so == 0) { /*musik(0)*/ + ; + } else if ((prebru == 0) && (! s.ipre)) { + parole(10, 1, 1); + prebru = prebru + 1; + } else { + i = false; + if ((s.mlieu == 19) || (s.mlieu == 21) || (s.mlieu == 22)) { + haz = hazard(1, 3); + if (haz == 2) { + haz = hazard(2, 4); + parole(9, haz, 1); + i = true; + } + } + if (s.mlieu == 20) { + haz = hazard(1, 2); + if (haz == 1) { + parole(8, 1, 1); + i = true; + } + } + if (s.mlieu == 24) { + haz = hazard(1, 2); + if (haz == 2) { + parole(12, 1, 1); + i = true; + } + } + if (s.mlieu == 23) { + parole(13, 1, 1); + i = true; + } + if (! i) { + /* dep[1]:= 1416; + dep[2]:= 1512; + dep[3]:= 1692; + dep[4]:= 1884; + dep[5]:= 2046; + haz:= hazard(1,5); + musik(dep[haz]);*/ + haz = hazard(1, 17); + parole(haz, 1, 2); + } + } } /* NIVEAU 9 */ -void dessin(integer ad) -{ - integer cx; - -/* debug('dessin'); */ - if (ad!= 0) dessine(ades,((ad % 160)* 2),(ad / 160)); - else - { - clsf1(); - if (caff> 99) - { - dessine(ades,60,33); - boite(118, 32, 291, 121, 15); /* cadre moyen */ - } - else - if (caff> 69) - { - dessine(ades,112,48); /* ttes */ - boite(222, 47, 155, 91, 15); - } - else - { - dessine(ades,0,12); - ecrf1(); - if ((caff< 30) || (caff> 32)) - { - for( cx= 1; cx <= 6; cx ++) - if (ord(touv[cx])!= 0) aniof(1,ord(touv[cx])); - if (caff== 13) - { - if (s.iboul== 141) aniof(1,7); - if (s.ibag== 159) aniof(1,6); - } - if ((caff== 14) && (s.icave== 151)) aniof(1,2); - if ((caff== 17) && (s.ivier== 143)) aniof(1,1); - if ((caff== 24) && (s.ipuit!= 0)) aniof(1,1); - } - if (caff< 26) musique(1); - } - } +void dessin(integer ad) { + integer cx; + + /* debug('dessin'); */ + if (ad != 0) dessine(ades, ((ad % 160) * 2), (ad / 160)); + else { + clsf1(); + if (caff > 99) { + dessine(ades, 60, 33); + boite(118, 32, 291, 121, 15); /* cadre moyen */ + } else if (caff > 69) { + dessine(ades, 112, 48); /* ttes */ + boite(222, 47, 155, 91, 15); + } else { + dessine(ades, 0, 12); + ecrf1(); + if ((caff < 30) || (caff > 32)) { + for (cx = 1; cx <= 6; cx ++) + if (ord(touv[cx]) != 0) aniof(1, ord(touv[cx])); + if (caff == 13) { + if (s.iboul == 141) aniof(1, 7); + if (s.ibag == 159) aniof(1, 6); + } + if ((caff == 14) && (s.icave == 151)) aniof(1, 2); + if ((caff == 17) && (s.ivier == 143)) aniof(1, 1); + if ((caff == 24) && (s.ipuit != 0)) aniof(1, 1); + } + if (caff < 26) musique(1); + } + } } diff --git a/engines/mortevielle/mor2.h b/engines/mortevielle/mor2.h index 8edf601458..734cb4806c 100644 --- a/engines/mortevielle/mor2.h +++ b/engines/mortevielle/mor2.h @@ -1,764 +1,728 @@ -const array<1,11,integer> men - = {{ scacher, attacher, defoncer, dormir, - entrer, fermer, frapper, manger, - mettre, ouvrir, sortir }}; - -void tinke() -{ - const char m1[] = "Mince! Vous entendez du bruit..."; - const char d1[] = " | Vous devriez avoir remarqu‚| "; - const char d2[] = "% des indices..."; - const char d3 = '['; - const char d4 = ']'; - const char d5 = '1'; - const char d6[] = "OK"; - integer cx,cy,haz,nh,cf,j,h,m,cd; - varying_string<3> stpo; - boolean am; - - anyone= false; - calch(j,h,m); - if (j!= jou) - { - jou= j; - cx=0; - do { - cx=cx+1; - if (nbrepm[cx]!= 0) nbrepm[cx]= nbrepm[cx]- 1; - nbrep[cx]= 0; - } while (!(cx==8)); - } - if ((h> heu) || ((h== 0) && (heu== 23))) - { - heu= h; - min= 0; - pendule(); - cf= 0; - for( cx= 1; cx <= 10; cx ++) if (s.pourc[cx]== '*') cf= cf+ 1; - if (cf==10) stpo="10"; - else stpo=chr(cf+48); - stpou= string(d3)+ d5+ d4+ d3+ d1+ stpo+ '0'+ d2+ d4+ d3+ d6+ d4; - } - if (m> min) - { - min= 30; - pendule(); - } - if (y_s<12) return; - if (! blo) - { - if ((h== 12) || ((h> 18) && (h< 21)) || ((h>= 0) && (h< 7))) - t= ti2; else t= ti1; - cf= s.conf; - if ((cf> 33) && (cf< 66)) t= t- (t / 3); - if (cf> 65) t= t- ((t / 3)* 2); - nh= readclock(); - if ((nh- mh)> t) - { - am= active_menu; - erase_menu(); - jh= jh+ ((nh- mh)/ t); - mh= nh; - switch (li) { - case 1:case 4 : pl1(cf); break; - case 2 : pl2(cf); break; - case 5 : pl5(cf); break; - case 6:case 8 : pl6(cf); break; - case 9 : pl9(cf); break; - case 10 : pl10(cf); break; - case 11 : pl11(cf); break; - case 12 : pl12(cf); break; - case 13:case 14 : pl13(cf); break; - case 15:case 26 : pl15(cf); break; - case 20 : pl20(cf); break; - } - if ((mpers!= 0) && (ipers!= 10)) mpers= ipers; - if ((mpers== 0) && (ipers> 0)) - if ((s.mlieu== 13) || (s.mlieu== 14)) cavegre(); else - if (ipers== 10) - { - ipers= 0; - if (! brt) - { - brt= true; - hdb= readclock(); - haz= hazard(1,5); - if (haz< 5) - { - clsf3(); - ecrf2(); - ecr3(m1); - haz= (hazard(0, 4))- 2; - parole(1, haz, 1); - clsf3(); - } - } - } - if (am) draw_menu(); - } - } - hfb= readclock(); - if ((brt) && ((hfb- hdb)> 17)) - { - nouvp(li,cx); - brt= false; - hdb= 0; - if ((s.mlieu> 0) && (s.mlieu< 10)) anyone= true; - } -} - -void fenat(char ans) -{ - integer coul; - - hide_mouse(); - if (gd==cga) coul=2; - else if (gd==her) coul=1; else coul=12; - affcar(gd,306,193,coul,ord(ans)); - boite(300, 191, 16, 8, 15); - show_mouse(); +const array<1, 11, integer> men += {{ + scacher, attacher, defoncer, dormir, + entrer, fermer, frapper, manger, + mettre, ouvrir, sortir + } +}; + +void tinke() { + const char m1[] = "Mince! Vous entendez du bruit..."; + const char d1[] = " | Vous devriez avoir remarqu‚| "; + const char d2[] = "% des indices..."; + const char d3 = '['; + const char d4 = ']'; + const char d5 = '1'; + const char d6[] = "OK"; + integer cx, cy, haz, nh, cf, j, h, m, cd; + varying_string<3> stpo; + boolean am; + + anyone = false; + calch(j, h, m); + if (j != jou) { + jou = j; + cx = 0; + do { + cx = cx + 1; + if (nbrepm[cx] != 0) nbrepm[cx] = nbrepm[cx] - 1; + nbrep[cx] = 0; + } while (!(cx == 8)); + } + if ((h > heu) || ((h == 0) && (heu == 23))) { + heu = h; + min = 0; + pendule(); + cf = 0; + for (cx = 1; cx <= 10; cx ++) if (s.pourc[cx] == '*') cf = cf + 1; + if (cf == 10) stpo = "10"; + else stpo = chr(cf + 48); + stpou = string(d3) + d5 + d4 + d3 + d1 + stpo + '0' + d2 + d4 + d3 + d6 + d4; + } + if (m > min) { + min = 30; + pendule(); + } + if (y_s < 12) return; + if (! blo) { + if ((h == 12) || ((h > 18) && (h < 21)) || ((h >= 0) && (h < 7))) + t = ti2; + else t = ti1; + cf = s.conf; + if ((cf > 33) && (cf < 66)) t = t - (t / 3); + if (cf > 65) t = t - ((t / 3) * 2); + nh = readclock(); + if ((nh - mh) > t) { + am = active_menu; + erase_menu(); + jh = jh + ((nh - mh) / t); + mh = nh; + switch (li) { + case 1: + case 4 : + pl1(cf); + break; + case 2 : + pl2(cf); + break; + case 5 : + pl5(cf); + break; + case 6: + case 8 : + pl6(cf); + break; + case 9 : + pl9(cf); + break; + case 10 : + pl10(cf); + break; + case 11 : + pl11(cf); + break; + case 12 : + pl12(cf); + break; + case 13: + case 14 : + pl13(cf); + break; + case 15: + case 26 : + pl15(cf); + break; + case 20 : + pl20(cf); + break; + } + if ((mpers != 0) && (ipers != 10)) mpers = ipers; + if ((mpers == 0) && (ipers > 0)) + if ((s.mlieu == 13) || (s.mlieu == 14)) cavegre(); + else if (ipers == 10) { + ipers = 0; + if (! brt) { + brt = true; + hdb = readclock(); + haz = hazard(1, 5); + if (haz < 5) { + clsf3(); + ecrf2(); + ecr3(m1); + haz = (hazard(0, 4)) - 2; + parole(1, haz, 1); + clsf3(); + } + } + } + if (am) draw_menu(); + } + } + hfb = readclock(); + if ((brt) && ((hfb - hdb) > 17)) { + nouvp(li, cx); + brt = false; + hdb = 0; + if ((s.mlieu > 0) && (s.mlieu < 10)) anyone = true; + } +} + +void fenat(char ans) { + integer coul; + + hide_mouse(); + if (gd == cga) coul = 2; + else if (gd == her) coul = 1; + else coul = 12; + affcar(gd, 306, 193, coul, ord(ans)); + boite(300, 191, 16, 8, 15); + show_mouse(); } /* NIVEAU 8 */ -void afdes(integer ad) -{ - taffich(); - dessin(ad); - okdes= false; -} - -void tkey1(boolean d) -{ - boolean quest; - integer x,y,c; - integer key; - - hide_mouse(); - fenat('K'); - while (keypressed()) key=testou(); - do { - if (d) tinke(); - quest=keypressed(); - read_pos_mouse(x,y,c); - } while (!(quest || (c!=0) || (d && anyone))); - if (quest) key=testou(); - clic=false; - show_mouse(); -} - -void tmlieu(integer mli) -{ - integer cx, j, i, tail; - str30 nomp; - phrase st; - - - if (mli== 26) mli= 15; - i=1; - while ((i<8) && (v_lieu[i][mli]!=0)) - { - cx=v_lieu[i][mli]; - deline(cx+c_tmlieu,st,tail); - nomp= delig; - while (length(nomp)<30) nomp=nomp+' '; - menut( depl[i], nomp); - i=i+1; - } - nomp= "* "; - for( cx= 7; cx >= i; cx --) menut( depl[cx], nomp); +void afdes(integer ad) { + taffich(); + dessin(ad); + okdes = false; +} + +void tkey1(boolean d) { + boolean quest; + integer x, y, c; + integer key; + + hide_mouse(); + fenat('K'); + while (keypressed()) key = testou(); + do { + if (d) tinke(); + quest = keypressed(); + read_pos_mouse(x, y, c); + } while (!(quest || (c != 0) || (d && anyone))); + if (quest) key = testou(); + clic = false; + show_mouse(); +} + +void tmlieu(integer mli) { + integer cx, j, i, tail; + str30 nomp; + phrase st; + + + if (mli == 26) mli = 15; + i = 1; + while ((i < 8) && (v_lieu[i][mli] != 0)) { + cx = v_lieu[i][mli]; + deline(cx + c_tmlieu, st, tail); + nomp = delig; + while (length(nomp) < 30) nomp = nomp + ' '; + menut(depl[i], nomp); + i = i + 1; + } + nomp = "* "; + for (cx = 7; cx >= i; cx --) menut(depl[cx], nomp); } /* NIVEAU 7 */ -void tlu(integer af,integer ob) -{ - caff= 32; - afdes(0); - repon(6,ob+ 4000); - repon(2,999); - tkey1(true); - caff= af; - msg[3]= no_choice; - crep= 998; +void tlu(integer af, integer ob) { + caff = 32; + afdes(0); + repon(6, ob + 4000); + repon(2, 999); + tkey1(true); + caff = af; + msg[3] = no_choice; + crep = 998; } -void delin(integer n) - { - phrase s; - integer t; +void delin(integer n) { + phrase s; + integer t; - deline(n,s,t); - } + deline(n, s, t); +} -void affrep() -{ - caff= s.mlieu; - crep= s.mlieu; +void affrep() { + caff = s.mlieu; + crep = s.mlieu; } void mfouen() { - integer cx; - - tmlieu(s.mlieu); - for( cx=1; cx <= 11; cx ++) menu_enable( men[cx]); -/* menu_enable( scacher); - menu_enable(menup, attacher); - menu_enable(menup, defoncer); - menu_enable(menup, dormir); - menu_enable(menup, entrer); - menu_enable(menup, fermer); - menu_enable(menup, frapper); - menu_enable(menup, manger); - menu_enable(menup, mettre); - menu_enable(menup, ouvrir); - menu_enable(menup, sortir); */ - menut( sonder, " sonder "); - menut( soulever, " soulever "); -} - -void atf3f8(integer& key) - { - do { - key= testou(); - } while (!((key==61) || (key==66))); - } + integer cx; -/* NIVEAU 6 */ - -void tperd() -{ - integer cx; - - initouv(); - ment= 0; - iouv= 0; - mchai= 0; - mfouen(); - if (! blo) t11(21, cx); - perdu= true; - clsf1(); - boite( 60, 35, 400, 50, 15); - repon(9,crep); - clsf2(); - clsf3(); - col= false; - syn= false; - okdes= false; -} - -void tsort() -{ - integer cx; - - if ((iouv> 0) && (s.mlieu!= 0)) - if (s.conf< 50) s.conf= s.conf+ 2; - else s.conf= s.conf+ (s.conf / 10); - for( cx= 1; cx <= 7; cx ++) touv[cx]= chr(0); - ment= 0; - iouv= 0; - mchai= 0; - debloc(s.mlieu); + tmlieu(s.mlieu); + for (cx = 1; cx <= 11; cx ++) menu_enable(men[cx]); + /* menu_enable( scacher); + menu_enable(menup, attacher); + menu_enable(menup, defoncer); + menu_enable(menup, dormir); + menu_enable(menup, entrer); + menu_enable(menup, fermer); + menu_enable(menup, frapper); + menu_enable(menup, manger); + menu_enable(menup, mettre); + menu_enable(menup, ouvrir); + menu_enable(menup, sortir); */ + menut(sonder, " sonder "); + menut(soulever, " soulever "); } -void st4(integer ob) -{ - crep= 997; - switch (ob) { - case 114 : crep=109; break; - case 110 : crep=107; break; - case 158 : crep=113; break; - case RANGE_5(152,156):case 150: - case 100:case 157:case 160:case 161 : tlu(caff,ob); - break; - } -} - -void cherjer(integer ob, boolean& d) -{ - integer cx; - - d= false; - for( cx= 1; cx <= 6; cx ++) d=(d || (ord(s.sjer[cx])== ob)); - if (s.derobj== ob) d= true; +void atf3f8(integer &key) { + do { + key = testou(); + } while (!((key == 61) || (key == 66))); } -void st1sama() -{ - s.mlieu= 10; - affrep(); -} - -void modinv() -{ - integer cx, cy, tay, i, r; - phrase nom; - str30 nomp; - - cy= 0; - for( cx=1; cx <= 6; cx ++) - if (s.sjer[cx]!= chr(0)) - { - cy= succ(integer,cy); - r= (ord(s.sjer[cx])+ 400); - deline(r-501+c_st41,nom,tay); - nomp= delig; - menut( invt[cy], nomp); - menu_enable( invt[cx]); - } - if (cy<6) - for( cx=cy+1; cx <= 6; cx ++) - { - menut( invt[cx], " "); - menu_disable( invt[cx]); - } -} - -void sparl(long_integer adr, long_integer rep) -{ - const array<1,8,integer> haut - = {{0,1,-3,6,-2,2,7,-1}}; - integer key, ad, tay, repint; - phrase st; - - repint=trunc(rep); - hide_mouse(); - deline( repint+c_paroles,st,tay); - afftex(st,230,4,65,24,5); - f3f8(); - /*boite(43,30,90,19,15); - gotoxy(7,5); - write('F3: Encore'); - gotoxy(7,6); - write('F8: Stop');*/ - key= 0; - do { - parole(repint, haut[caff- 69], 0); - atf3f8(key); - } while (!(key== 66)); - hirs(); - show_mouse(); -} - -void finfouil() - { - fouil= false; - obpart= false; - cs= 0; - is= 0; - mfouen(); - } - -void mfoudi() -{ - integer cx; - - for( cx= 1; cx <= 7; cx ++) menu_disable( depl[cx]); - for( cx=1; cx <= 11; cx ++) menu_disable( men[cx]); -/* menu_disable(menup, scacher); - menu_disable(menup, attacher); - menu_disable(menup, defoncer); - menu_disable(menup, dormir); - menu_disable(menup, entrer); - menu_disable(menup, fermer); - menu_disable(menup, frapper); - menu_disable(menup, manger); - menu_disable(menup, mettre); - menu_disable(menup, ouvrir); - menu_disable(menup, sortir); */ - menut( sonder, " -SUITE- "); - menut( soulever, " -STOP- "); -} - -void mennor() -{ - menu_up(msg[3]); -} +/* NIVEAU 6 */ -void premtet() -{ - dessine(ades, 10, 80); - boite(18, 79, 155, 91, 15); +void tperd() { + integer cx; + + initouv(); + ment = 0; + iouv = 0; + mchai = 0; + mfouen(); + if (! blo) t11(21, cx); + perdu = true; + clsf1(); + boite(60, 35, 400, 50, 15); + repon(9, crep); + clsf2(); + clsf3(); + col = false; + syn = false; + okdes = false; +} + +void tsort() { + integer cx; + + if ((iouv > 0) && (s.mlieu != 0)) + if (s.conf < 50) s.conf = s.conf + 2; + else s.conf = s.conf + (s.conf / 10); + for (cx = 1; cx <= 7; cx ++) touv[cx] = chr(0); + ment = 0; + iouv = 0; + mchai = 0; + debloc(s.mlieu); +} + +void st4(integer ob) { + crep = 997; + switch (ob) { + case 114 : + crep = 109; + break; + case 110 : + crep = 107; + break; + case 158 : + crep = 113; + break; + case RANGE_5(152, 156): + case 150: + case 100: + case 157: + case 160: + case 161 : + tlu(caff, ob); + break; + } +} + +void cherjer(integer ob, boolean &d) { + integer cx; + + d = false; + for (cx = 1; cx <= 6; cx ++) d = (d || (ord(s.sjer[cx]) == ob)); + if (s.derobj == ob) d = true; +} + +void st1sama() { + s.mlieu = 10; + affrep(); +} + +void modinv() { + integer cx, cy, tay, i, r; + phrase nom; + str30 nomp; + + cy = 0; + for (cx = 1; cx <= 6; cx ++) + if (s.sjer[cx] != chr(0)) { + cy = succ(integer, cy); + r = (ord(s.sjer[cx]) + 400); + deline(r - 501 + c_st41, nom, tay); + nomp = delig; + menut(invt[cy], nomp); + menu_enable(invt[cx]); + } + if (cy < 6) + for (cx = cy + 1; cx <= 6; cx ++) { + menut(invt[cx], " "); + menu_disable(invt[cx]); + } +} + +void sparl(long_integer adr, long_integer rep) { + const array<1, 8, integer> haut + = {{0, 1, -3, 6, -2, 2, 7, -1}}; + integer key, ad, tay, repint; + phrase st; + + repint = trunc(rep); + hide_mouse(); + deline(repint + c_paroles, st, tay); + afftex(st, 230, 4, 65, 24, 5); + f3f8(); + /*boite(43,30,90,19,15); + gotoxy(7,5); + write('F3: Encore'); + gotoxy(7,6); + write('F8: Stop');*/ + key = 0; + do { + parole(repint, haut[caff - 69], 0); + atf3f8(key); + } while (!(key == 66)); + hirs(); + show_mouse(); +} + +void finfouil() { + fouil = false; + obpart = false; + cs = 0; + is = 0; + mfouen(); +} + +void mfoudi() { + integer cx; + + for (cx = 1; cx <= 7; cx ++) menu_disable(depl[cx]); + for (cx = 1; cx <= 11; cx ++) menu_disable(men[cx]); + /* menu_disable(menup, scacher); + menu_disable(menup, attacher); + menu_disable(menup, defoncer); + menu_disable(menup, dormir); + menu_disable(menup, entrer); + menu_disable(menup, fermer); + menu_disable(menup, frapper); + menu_disable(menup, manger); + menu_disable(menup, mettre); + menu_disable(menup, ouvrir); + menu_disable(menup, sortir); */ + menut(sonder, " -SUITE- "); + menut(soulever, " -STOP- "); +} + +void mennor() { + menu_up(msg[3]); +} + +void premtet() { + dessine(ades, 10, 80); + boite(18, 79, 155, 91, 15); } /* NIVEAU 5 */ -void ajchai() -{ - integer cx,cy,lderobj; - - - cy= (acha+ pred(integer,pred(integer,mchai)* 10)); - cx= 0; - do { - cx= cx+ 1; - } while (!((cx> 9) || (tabdon[cy+ cx]== 0))); - if (tabdon[cy+ cx]== 0) - { - lderobj= s.derobj; - tabdon[cy+ cx]=lderobj; - } - else crep= 192; +void ajchai() { + integer cx, cy, lderobj; + + + cy = (acha + pred(integer, pred(integer, mchai) * 10)); + cx = 0; + do { + cx = cx + 1; + } while (!((cx > 9) || (tabdon[cy + cx] == 0))); + if (tabdon[cy + cx] == 0) { + lderobj = s.derobj; + tabdon[cy + cx] = lderobj; + } else crep = 192; +} + +void ajjer(integer ob) { + integer cx; + + cx = 0; + do { + cx = cx + 1; + } while (!((cx > 5) || (ord(s.sjer[cx]) == 0))); + if (ord(s.sjer[cx]) == 0) { + s.sjer[(cx)] = chr(ob); + modinv(); + } else crep = 139; +} + +void t1sama() { /* On entre dans le manoir */ + integer j, h, m; + boolean d; + + calch(j, h, m); + if ((h < 5) && (s.mlieu > 18)) { + cherjer(137, d); + if (! d) { /* On n'a pas les cl‚s et il est tard */ + crep = 1511; + tperd(); + } else st1sama(); + } else if (! s.ipre) { /* c'est votre premiŠre fois ? */ + ipers = 255; + affper(ipers); + caff = 77; + afdes(0); + boite(223, 47, 155, 91, 15); + repon(2, 33); + tkey1(false); + mennor(); + hide_mouse(); + hirs(); + premtet(); + sparl(0, 140); + dessine_rouleau(); + pendule(); + show_mouse(); + s.mlieu = 0; + affrep(); + t5(10); + if (! blo) t11(0, m); + ipers = 0; + mpers = 0; + s.ipre = true; + /*chech;*/ + } else st1sama(); +} + +void t1vier() { + s.mlieu = 17; + affrep(); +} + +void t1neig() { + inei = inei + 1; + if (inei > 2) { + crep = 1506; + tperd(); + } else { + okdes = true; + s.mlieu = 19; + affrep(); + } +} + +void t1deva() { + inei = 0; + s.mlieu = 21; + affrep(); +} + +void t1derr() { + s.mlieu = 22; + affrep(); +} + +void t1deau() { + crep = 1503; + tperd(); +} + +void tctrm() { + repon(2, (3000 + ctrm)); + ctrm = 0; } -void ajjer(integer ob) -{ - integer cx; - - cx= 0; - do { - cx= cx+ 1; - } while (!((cx> 5) || (ord(s.sjer[cx])== 0))); - if (ord(s.sjer[cx])== 0) - { - s.sjer[(cx)]= chr(ob); - modinv(); - } - else crep= 139; -} -void t1sama() /* On entre dans le manoir */ -{ - integer j,h,m; - boolean d; - - calch(j,h,m); - if ((h< 5) && (s.mlieu> 18)) - { - cherjer(137,d); - if (! d) /* On n'a pas les cl‚s et il est tard */ - { - crep= 1511; - tperd(); - } - else st1sama(); - } - else - if (! s.ipre) /* c'est votre premiŠre fois ? */ - { - ipers= 255; - affper(ipers); - caff= 77; - afdes(0); - boite(223, 47, 155, 91, 15); - repon(2,33); - tkey1(false); - mennor(); - hide_mouse(); - hirs(); - premtet(); - sparl(0,140); - dessine_rouleau(); - pendule(); - show_mouse(); - s.mlieu= 0; - affrep(); - t5(10); - if (! blo) t11(0, m); - ipers= 0; - mpers= 0; - s.ipre= true; - /*chech;*/ - } - else st1sama(); -} - -void t1vier() -{ - s.mlieu= 17; - affrep(); -} - -void t1neig() -{ - inei= inei+ 1; - if (inei> 2) - { - crep= 1506; - tperd(); - } - else - { - okdes= true; - s.mlieu= 19; - affrep(); - } -} - -void t1deva() -{ - inei= 0; - s.mlieu= 21; - affrep(); -} - -void t1derr() -{ - s.mlieu = 22; - affrep(); -} +void quelquun() -void t1deau() { - crep = 1503; - tperd(); -} + integer haz, cx; -void tctrm() -{ - repon(2,(3000+ ctrm)); - ctrm= 0; + if (imen) erase_menu(); + finfouil(); + crep = 997; +L1: + if (! cache) { + if (crep == 997) crep = 138; + repon(2, crep); + if (crep == 138) parole(5, 2, 1); + else parole(4, 4, 1); + if (iouv == 0) s.conf = s.conf + 2; + else if (s.conf < 50) s.conf = s.conf + 4; + else + s.conf = s.conf + (3 * (s.conf / 10)); + tsort(); + tmlieu(15); + tip(ipers, cx); + caff = 69 + cx; + crep = caff; + msg[3] = discut; + msg[4] = disc[cx]; + syn = true; + col = true; + } else { + haz = hazard(1, 3); + if (haz == 2) { + cache = false; + crep = 137; + goto L1; + } else { + repon(2, 136); + haz = (hazard(0, 4)) - 2; + parole(3, haz, 1); + clsf2(); + person(); + debloc(21); + affrep(); + } + } + if (imen) draw_menu(); +} + +void tsuiv() { + integer cx, tbcl; + integer cl, cy; + + cy = acha + ((mchai - 1) * 10) - 1; + cx = 0; + do { + cx = cx + 1; + cs = cs + 1; + cl = cy + cs; + tbcl = tabdon[cl]; + } while (!((tbcl != 0) || (cs > 9))); + if ((tbcl != 0) && (cs < 11)) { + is = is + 1; + caff = tbcl; + crep = caff + 400; + if (ipers != 0) s.conf = s.conf + 2; + } else { + affrep(); + finfouil(); + if (cx > 9) crep = 131; + } +} + +void tfleche() { + boolean qust; + char touch; + integer dummy, cd, xmo, ymo; + + if (num == 9999) return; + fenat(chr(152)); + rect = false; + do { + touch = '\0'; + + do { + mov_mouse(qust, touch); + if (clic) rect = (x_s < 256 * res) && (y_s < 176) && (y_s > 12); + tinke(); + } while (!(qust || rect || anyone)); + + if (qust && (touch == '\103')) dummy = do_alert(stpou, 1); + } while (!((touch == '\73') || ((touch == '\104') && (x != 0) && (y != 0)) || + (anyone) || (rect))); + if (touch == '\73') iesc = true; + if (rect) { + x = x_s; + y = y_s; + } } - -void quelquun() +void tcoord(integer sx) { - integer haz,cx; - - if (imen) erase_menu(); - finfouil(); - crep= 997; + integer sy, ix, iy, cb, cy, ib; + integer a, b, atdon; + + + num = 0; + crep = 999; + a = 0; + atdon = amzon + 3; + cy = 0; + while (cy < caff) { + a = a + tabdon[atdon]; + atdon = atdon + 4; + cy = succ(integer, cy); + } + /* for cy:=0 to caff-1 do + a:=a+ tabdon[amzon+3+4*cy]; + b:= peek(amzon+3+4*caff); */ + b = tabdon[atdon]; + if (b == 0) goto L1; + a = a + fleche; + cb = 0; + for (cy = 0; cy <= (sx - 2); cy ++) { + ib = (tabdon[a + cb] << 8) + tabdon[succ(integer, a + cb)]; + cb = cb + (ib * 4) + 2; + } + ib = (tabdon[a + cb] << 8) + tabdon[succ(integer, a + cb)]; + if (ib == 0) goto L1; + cy = 1; + do { + cb = cb + 2; + sx = tabdon[a + cb] * res; + sy = tabdon[succ(integer, a + cb)]; + cb = cb + 2; + ix = tabdon[a + cb] * res; + iy = tabdon[succ(integer, a + cb)]; + cy = cy + 1; + } while (!(((x >= sx) && (x <= ix) && (y >= sy) && (y <= iy)) + || (cy > ib))); + if ((x >= sx) && (x <= ix) && (y >= sy) && (y <= iy)) + + { + num = cy - 1; + return; + } L1: - if (! cache) - { - if (crep== 997) crep= 138; - repon(2,crep); - if (crep== 138) parole(5, 2, 1); else parole(4, 4, 1); - if (iouv== 0) s.conf= s.conf+ 2; else - if (s.conf< 50) s.conf= s.conf+ 4; else - s.conf= s.conf+ (3* (s.conf / 10)); - tsort(); - tmlieu(15); - tip(ipers,cx); - caff= 69+ cx; - crep= caff; - msg[3]= discut; - msg[4]= disc[cx]; - syn= true; - col= true; - } - else - { - haz= hazard(1, 3); - if (haz== 2) - { - cache= false; - crep= 137; - goto L1; - } - else - { - repon(2, 136); - haz= (hazard(0, 4))- 2; - parole(3, haz, 1); - clsf2(); - person(); - debloc(21); - affrep(); - } - } - if (imen) draw_menu(); -} - -void tsuiv() -{ - integer cx,tbcl; - integer cl,cy; - - cy= acha+ ((mchai- 1)* 10)- 1; - cx= 0; - do { - cx= cx+ 1; - cs= cs+ 1; - cl= cy+ cs; - tbcl= tabdon[cl]; - } while (!((tbcl != 0) || (cs> 9))); - if ((tbcl != 0) && (cs< 11)) - { - is= is+ 1; - caff= tbcl; - crep= caff+ 400; - if (ipers!= 0) s.conf= s.conf+ 2; - } - else - { - affrep(); - finfouil(); - if (cx> 9) crep= 131; - } -} - -void tfleche() -{ - boolean qust; - char touch; - integer dummy,cd,xmo,ymo; - - if (num== 9999) return; - fenat(chr(152)); - rect= false; - do { - touch='\0'; - - do { - mov_mouse(qust,touch); - if (clic) rect=(x_s<256*res) && (y_s<176) && (y_s>12); - tinke(); - } while (!(qust || rect || anyone)); - - if (qust && (touch=='\103')) dummy=do_alert(stpou,1); - } while (!((touch=='\73') || ((touch== '\104') && (x!= 0) && (y!=0)) || - (anyone) || (rect))); - if (touch=='\73') iesc= true; - if (rect) - { - x=x_s; - y=y_s; - } + crep = 997; } -void tcoord(integer sx) - { - integer sy,ix,iy,cb,cy,ib; - integer a, b, atdon; - - - num= 0; - crep= 999; - a=0; - atdon=amzon+3; - cy= 0; - while (cy= sx) && (x<= ix) && (y>= sy) && (y<= iy)) - || (cy> ib))); - if ((x>= sx) && (x<= ix) && (y>= sy) && (y<= iy)) - - { - num= cy- 1; - return; - } -L1: - crep= 997; - } +void st7(integer ob) { + crep = 183; + if ((ob == 116) || (ob == 144)) crep = 104; + if ((ob == 126) || (ob == 111)) crep = 108; + if (ob == 132) crep = 111; + if (ob == 142) crep = 112; + if (crep == 183) st4(ob); +} +void treg(integer ob) { + integer mdes; -void st7(integer ob) -{ - crep= 183; - if ((ob== 116) || (ob== 144)) crep= 104; - if ((ob== 126) || (ob== 111)) crep= 108; - if (ob== 132) crep= 111; - if (ob== 142) crep= 112; - if (crep== 183) st4(ob); + mdes = caff; + caff = ob; + if (((caff > 29) && (caff < 33)) || (caff == 144) || + (caff == 147) || (caff == 149) || (msg[4] == sregarder)) { + afdes(0); + if ((caff > 29) && (caff < 33)) repon(2, caff); + else repon(2, (caff + 400)); + tkey1(true); + caff = mdes; + msg[3] = 0; + crep = 998; + } else { + obpart = true; + crep = caff + 400; + mfoudi(); + } } -void treg(integer ob) -{ - integer mdes; - - mdes= caff; - caff= ob; - if (((caff> 29) && (caff< 33)) || (caff== 144) || - (caff== 147) || (caff== 149) || (msg[4]== sregarder)) - { - afdes(0); - if ((caff> 29) && (caff< 33)) repon(2,caff); else repon(2,(caff+ 400)); - tkey1(true); - caff= mdes; - msg[3]= 0; - crep= 998; - } - else - { - obpart= true; - crep= caff+ 400; - mfoudi(); - } -} - -void avpoing(integer& ob) -{ - crep= 999; - if (s.derobj!= 0) ajjer(s.derobj); - if (crep!= 139) - { - modobj(ob+ 400); - s.derobj= ob; - ob= 0; - } +void avpoing(integer &ob) { + crep = 999; + if (s.derobj != 0) ajjer(s.derobj); + if (crep != 139) { + modobj(ob + 400); + s.derobj = ob; + ob = 0; + } } -void rechai(integer& ch) -{ - integer cx; +void rechai(integer &ch) { + integer cx; - cx= s.mlieu; - if (s.mlieu== 16) cx= 14; - ch= tabdon[achai+ (cx* 7)+ pred(integer,num)]; + cx = s.mlieu; + if (s.mlieu == 16) cx = 14; + ch = tabdon[achai + (cx * 7) + pred(integer, num)]; } -void t23coul(integer& l) -{ - boolean d; +void t23coul(integer &l) { + boolean d; - cherjer(143,d); - l= 14; - if (! d) - { - crep= 1512; - tperd(); - } + cherjer(143, d); + l = 14; + if (! d) { + crep = 1512; + tperd(); + } } -void maivid() -{ - s.derobj= 0; - modobj(500); +void maivid() { + s.derobj = 0; + modobj(500); } -void st13(integer ob) -{ - if ((ob== 114) || (ob== 116) || (ob== 126) || (ob== 132) || - (ob== 111) || (ob== 106) || (ob== 102) || (ob== 100) || - (ob== 110) || (ob== 153) || (ob== 154) || (ob== 155) || - (ob== 156) || (ob== 157) || (ob== 144) || (ob== 158) || - (ob== 150) || (ob== 152)) crep= 999; else crep= 105; +void st13(integer ob) { + if ((ob == 114) || (ob == 116) || (ob == 126) || (ob == 132) || + (ob == 111) || (ob == 106) || (ob == 102) || (ob == 100) || + (ob == 110) || (ob == 153) || (ob == 154) || (ob == 155) || + (ob == 156) || (ob == 157) || (ob == 144) || (ob == 158) || + (ob == 150) || (ob == 152)) crep = 999; + else crep = 105; } -void aldepl() -{ - integer dummy; +void aldepl() { + integer dummy; - dummy=do_alert("[1][Alors, utilisez le menu DEP...][ok]",1); + dummy = do_alert("[1][Alors, utilisez le menu DEP...][ok]", 1); } diff --git a/engines/mortevielle/mort.cpp b/engines/mortevielle/mort.cpp index 1fbd91c648..7d5f33c2ab 100644 --- a/engines/mortevielle/mort.cpp +++ b/engines/mortevielle/mort.cpp @@ -2,10 +2,10 @@ - /*$v-*/ - /*$k-*/ - /*$x-*/ - /*$c-*/ +/*$v-*/ +/*$k-*/ +/*$x-*/ +/*$c-*/ #include "var_mor.h" /* les variables */ #include "keyboard.h" /* la gestion du clavier */ @@ -18,7 +18,7 @@ #include "parole.h" /* les fonctions de la parole */ #include "alert.h" #include "parole2.h" /* les fonctions de la parole */ - /* debug le debugging */ +/* debug le debugging */ #include "ques.h" /* les questions */ #include "menu.h" /* les fonctions du menu */ #include "mor.h" /* divers */ @@ -31,94 +31,93 @@ /* ecrihexa utilitaire */ -void divers(integer np,boolean b) -{ - teskbd(); - do { - parole(np, 0, 0); - atf3f8(key); - if (newgd!=gd) - { - gd=newgd; - hirs(); - aff50(b); - } - } while (!(key== 66)); +void divers(integer np, boolean b) { + teskbd(); + do { + parole(np, 0, 0); + atf3f8(key); + if (newgd != gd) { + gd = newgd; + hirs(); + aff50(b); + } + } while (!(key == 66)); } /* NIVEAU 0 */ -int main(int argc, const char* argv[]) -{ -/*init_debug;*/ -/* ecri_seg;*/ - pio_initialize(argc, argv); - gd=cga; - newgd= gd; - zuul= false; - tesok= false; - chartex(); - charpal(); - charge_cfiph(); - charge_cfiec(); - zzuul(adcfiec+161,0,1644); - c_zzz= 1; - init_nbrepm(); - init_mouse(); -/* crep:=memw[$7f00:0]; - memw[$7f00:0]:= crep+1; - if (memw[$7f00:0]<> crep+1) then - begin - hirs; - show_mouse; - crep:=do_alert('[1][ 512 k minimum requis !!][OK]',1); - clrscr; - halt; - end; - if (Dseg+$1000>adbruit5) then - begin - hirs; - show_mouse; - crep:=do_alert('[1][ Il ne reste pas assez de |place m‚moire !!][OK]',1); - clrscr; - halt; - end;*/ - init_lieu(); - arret= false; - sonoff= false; - f2_all= false; - textcolor(9); - teskbd(); - dialpre(); - newgd= gd; - teskbd(); - if (newgd!=gd) gd=newgd; - hirs(); - ades= 0x7000; - aff50(false); - mlec= 0; - divers(142,false); +int main(int argc, const char *argv[]) { + /*init_debug;*/ + /* ecri_seg;*/ + pio_initialize(argc, argv); + gd = cga; + newgd = gd; + zuul = false; + tesok = false; + chartex(); + charpal(); + charge_cfiph(); + charge_cfiec(); + zzuul(adcfiec + 161, 0, 1644); + c_zzz = 1; + init_nbrepm(); + init_mouse(); + /* crep:=memw[$7f00:0]; + memw[$7f00:0]:= crep+1; + if (memw[$7f00:0]<> crep+1) then + begin + hirs; + show_mouse; + crep:=do_alert('[1][ 512 k minimum requis !!][OK]',1); + clrscr; + halt; + end; + if (Dseg+$1000>adbruit5) then + begin + hirs; + show_mouse; + crep:=do_alert('[1][ Il ne reste pas assez de |place m‚moire !!][OK]',1); + clrscr; + halt; + end;*/ + init_lieu(); + arret = false; + sonoff = false; + f2_all = false; + textcolor(9); + teskbd(); + dialpre(); + newgd = gd; + teskbd(); + if (newgd != gd) gd = newgd; + hirs(); + ades = 0x7000; + aff50(false); + mlec = 0; + divers(142, false); - ani50(); - divers(143,true); - suite(); - music(); - adzon(); - takesav(0); - if (rech_cfiec) charge_cfiec(); - for( crep=1; crep <= c_zzz; crep ++) zzuul(adcfiec+161,0,1644); - charge_bruit5(); - init_menu(); + ani50(); + divers(143, true); + suite(); + music(); + adzon(); + takesav(0); + if (rech_cfiec) charge_cfiec(); + for (crep = 1; crep <= c_zzz; crep ++) zzuul(adcfiec + 161, 0, 1644); + charge_bruit5(); + init_menu(); - theure(); - dprog(); - hirs(); - dessine_rouleau(); - show_mouse(); - do { tjouer(); } while (!arret); - hide_mouse(); - clrscr; -/*out_debug;*/ - return EXIT_SUCCESS; + theure(); + dprog(); + hirs(); + dessine_rouleau(); + show_mouse(); + do { + tjouer(); + } while (!arret); + hide_mouse(); + clrscr; + /*out_debug;*/ + return EXIT_SUCCESS; } diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index 3f250d91e4..d1de4b79d2 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -2,45 +2,42 @@ const integer m_arrow = 0; const integer m_point_hand = 1; boolean int_m, -clic; + clic; integer m_show, -x_s, -y_s, -p_o_s, -mouse_shwn; + x_s, + y_s, + p_o_s, + mouse_shwn; -matrix<0,5,0,11,integer> s_s; +matrix<0, 5, 0, 11, integer> s_s; -void init_mouse() -{ - integer i, j; - registres reg; +void init_mouse() { + integer i, j; + registres reg; - mouse_shwn= 0; - x_s= 0; - y_s= 0; - p_o_s= 0; - /*int_m:= False;*/ - clic= false; - m_show= m_arrow; - if ((memw[0xcc]==0) && (memw[0xce]==0)) int_m= false; - if (int_m) - { - reg.ax= 0; - intr(0x33,reg); - int_m= (reg.ax==-1); - if (int_m) - { - { - reg.ax=4; - reg.cx=0; - reg.dx=0; - } - intr(0x33,reg); - } - } + mouse_shwn = 0; + x_s = 0; + y_s = 0; + p_o_s = 0; + /*int_m:= False;*/ + clic = false; + m_show = m_arrow; + if ((memw[0xcc] == 0) && (memw[0xce] == 0)) int_m = false; + if (int_m) { + reg.ax = 0; + intr(0x33, reg); + int_m = (reg.ax == -1); + if (int_m) { + { + reg.ax = 4; + reg.cx = 0; + reg.dx = 0; + } + intr(0x33, reg); + } + } } /*procedure change_mouse( t : integer ); @@ -58,412 +55,405 @@ begin end; end; */ -void hide_mouse() -{ - integer i,j,k,ps,ds; - boolean imp; +void hide_mouse() { + integer i, j, k, ps, ds; + boolean imp; - mouse_shwn = pred(integer,mouse_shwn); - if (mouse_shwn==0) - { - imp= odd(y_s); - j=p_o_s; - switch (gd) { - case cga : { - k=0; - j=((cardinal)y_s >> 1) * 80+ ((cardinal)x_s >> 2); - do { - memw[0xb000+j]=s_s[0][k]; - memw[0xb800+j+2]=s_s[1][k]; - memw[0xba00+j]=s_s[2][k]; - memw[0xba00+j+2]=s_s[3][k]; - j=j+80; - k= succ(integer,k); - } while (!(k>=5)); - } - break; - case ams : { - for( i=0; i <= 3; i ++) - { - port[0x3dd]= 1 << i; - k=0; - j=p_o_s; - do { - if (imp) - { - memw[0xb800+j]=s_s[i][k]; - j=j+80-0x2000; - } - else - { - memw[0xb800+j]=s_s[i][k]; - j=j+0x2000; - } - imp=! imp; - k= succ(integer,k); - } while (!(k>=8)); - } - } - break; - case ega : { - port[0x3c4]=2; - port[0x3ce]=8; - port[0x3cf]=255; - i= 0; - do { - port[0x3c5]= 1 << i; - k=0; - j=p_o_s; - do { - ps=mem[0xa000+j]; - mem[0xa000+j]=lo(s_s[i][k]); - ps=mem[0xa000+j+1]; - mem[0xa000+j+1]=hi(s_s[i][k]); - j=j+80; - k= succ(integer,k); - } while (!(k>=8)); - i= i+1; - } while (!(i==4)); - } - break; - case her : { - j= ((cardinal)y_s >> 1) *80+((cardinal)x_s >> 3); - for( i=0; i <= 5; i ++) - { - for( k=0; k <= 3; k ++) memw[0xb000+k*0x200+j]=s_s[i][k]; - j=j+80; - } - } - break; - case tan : { - j= ((cardinal)y_s >> 2) *160+((cardinal)x_s >> 1); - k=0; - do { - for( i=0; i <= 3; i ++) - { - memw[0xb800+0x200*i+j]=s_s[k][i+(k << 2)]; - memw[0xb800+0x200*i+j+2]=s_s[k+3][i+(k << 2)]; - } - j=j+160; - k= succ(integer,k); - } while (!(k==3)); - } - break; + mouse_shwn = pred(integer, mouse_shwn); + if (mouse_shwn == 0) { + imp = odd(y_s); + j = p_o_s; + switch (gd) { + case cga : { + k = 0; + j = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 2); + do { + memw[0xb000 + j] = s_s[0][k]; + memw[0xb800 + j + 2] = s_s[1][k]; + memw[0xba00 + j] = s_s[2][k]; + memw[0xba00 + j + 2] = s_s[3][k]; + j = j + 80; + k = succ(integer, k); + } while (!(k >= 5)); + } + break; + case ams : { + for (i = 0; i <= 3; i ++) { + port[0x3dd] = 1 << i; + k = 0; + j = p_o_s; + do { + if (imp) { + memw[0xb800 + j] = s_s[i][k]; + j = j + 80 - 0x2000; + } else { + memw[0xb800 + j] = s_s[i][k]; + j = j + 0x2000; + } + imp = ! imp; + k = succ(integer, k); + } while (!(k >= 8)); + } + } + break; + case ega : { + port[0x3c4] = 2; + port[0x3ce] = 8; + port[0x3cf] = 255; + i = 0; + do { + port[0x3c5] = 1 << i; + k = 0; + j = p_o_s; + do { + ps = mem[0xa000 + j]; + mem[0xa000 + j] = lo(s_s[i][k]); + ps = mem[0xa000 + j + 1]; + mem[0xa000 + j + 1] = hi(s_s[i][k]); + j = j + 80; + k = succ(integer, k); + } while (!(k >= 8)); + i = i + 1; + } while (!(i == 4)); + } + break; + case her : { + j = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 3); + for (i = 0; i <= 5; i ++) { + for (k = 0; k <= 3; k ++) memw[0xb000 + k * 0x200 + j] = s_s[i][k]; + j = j + 80; + } + } + break; + case tan : { + j = ((cardinal)y_s >> 2) * 160 + ((cardinal)x_s >> 1); + k = 0; + do { + for (i = 0; i <= 3; i ++) { + memw[0xb800 + 0x200 * i + j] = s_s[k][i + (k << 2)]; + memw[0xb800 + 0x200 * i + j + 2] = s_s[k + 3][i + (k << 2)]; + } + j = j + 160; + k = succ(integer, k); + } while (!(k == 3)); + } + break; - } /* case Gd */ - } + } /* case Gd */ + } } -void show_mouse() -{ - integer i, j, k, l, - ps,ds; - boolean imp; - char c; +void show_mouse() { + integer i, j, k, l, + ps, ds; + boolean imp; + char c; - mouse_shwn = mouse_shwn +1; - if (mouse_shwn!=1) return; - j=p_o_s; - imp= odd(y_s); - i=x_s & 7; - switch (gd) { - case cga : { - k=0; - j=((cardinal)y_s >> 1) * 80+ ((cardinal)x_s >> 2); - do { - s_s[0][k]=memw[0xb800+j]; - s_s[1][k]=memw[0xb800+j+2]; - s_s[2][k]=memw[0xba00+j]; - s_s[3][k]=memw[0xba00+j+2]; - j=j+80; - k= succ(integer,k); - } while (!(k>=5)); - } - break; - case ams : { - for( i=0; i <= 3; i ++) - { - j=p_o_s; - imp= odd(y_s); - port[0x3de]= i; - k=0; - do { - if (imp) - { - s_s[i][k]=memw[0xb800+j]; - j=j+80-0x2000; - } - else - { - s_s[i][k]=memw[0xb800+j]; - j=j+0x2000; - } - imp=! imp; - k= succ(integer,k); - } while (!(k>=8)); - } - } - break; - case ega : { - port[0x3ce]=4; - l= 0; - do { - port[0x3cf]= l; - k=0; - j=p_o_s; - do { - s_s[l][k]= mem[0xa000+j]+(mem[0xa000+succ(integer,j)] << 8); - j=j+80; - k= succ(integer,k); - } while (!(k>=8)); - l= l+1; - } while (!(l==4)); - } - break; - case her : { - j= ((cardinal)y_s >> 1) *80+((cardinal)x_s >> 3); - for( i=0; i <= 5; i ++) - { - for( k=0; k <= 3; k ++) s_s[i][k]=memw[0xb000+k*0x200+j]; - j=j+80; - } - } - break; - case tan : { - j= ((cardinal)y_s >> 2)*160+((cardinal)x_s >> 1); - k=0; - do { - for( i=0; i <= 3; i ++) - { - s_s[k][i+(k << 2)]=memw[0xb800+0x200*i+j]; - s_s[k+3][i+(k << 2)]=memw[0xb800+0x200*i+j+2]; - } - j=j+160; - k= succ(integer,k); - } while (!(k==3)); - } - break; - } /* case Gd */ - affput(2,gd,x_s,y_s,0,0); + mouse_shwn = mouse_shwn + 1; + if (mouse_shwn != 1) return; + j = p_o_s; + imp = odd(y_s); + i = x_s & 7; + switch (gd) { + case cga : { + k = 0; + j = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 2); + do { + s_s[0][k] = memw[0xb800 + j]; + s_s[1][k] = memw[0xb800 + j + 2]; + s_s[2][k] = memw[0xba00 + j]; + s_s[3][k] = memw[0xba00 + j + 2]; + j = j + 80; + k = succ(integer, k); + } while (!(k >= 5)); + } + break; + case ams : { + for (i = 0; i <= 3; i ++) { + j = p_o_s; + imp = odd(y_s); + port[0x3de] = i; + k = 0; + do { + if (imp) { + s_s[i][k] = memw[0xb800 + j]; + j = j + 80 - 0x2000; + } else { + s_s[i][k] = memw[0xb800 + j]; + j = j + 0x2000; + } + imp = ! imp; + k = succ(integer, k); + } while (!(k >= 8)); + } + } + break; + case ega : { + port[0x3ce] = 4; + l = 0; + do { + port[0x3cf] = l; + k = 0; + j = p_o_s; + do { + s_s[l][k] = mem[0xa000 + j] + (mem[0xa000 + succ(integer, j)] << 8); + j = j + 80; + k = succ(integer, k); + } while (!(k >= 8)); + l = l + 1; + } while (!(l == 4)); + } + break; + case her : { + j = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 3); + for (i = 0; i <= 5; i ++) { + for (k = 0; k <= 3; k ++) s_s[i][k] = memw[0xb000 + k * 0x200 + j]; + j = j + 80; + } + } + break; + case tan : { + j = ((cardinal)y_s >> 2) * 160 + ((cardinal)x_s >> 1); + k = 0; + do { + for (i = 0; i <= 3; i ++) { + s_s[k][i + (k << 2)] = memw[0xb800 + 0x200 * i + j]; + s_s[k + 3][i + (k << 2)] = memw[0xb800 + 0x200 * i + j + 2]; + } + j = j + 160; + k = succ(integer, k); + } while (!(k == 3)); + } + break; + } /* case Gd */ + affput(2, gd, x_s, y_s, 0, 0); } -void pos_mouse(integer x,integer y) -{ - registres reg; +void pos_mouse(integer x, integer y) { + registres reg; - if (x>314*res) x=314*res; - else if (x<0) x=0; - if (y>199) y=199; - else if (y<0) y=0; - if ((x==x_s) && (y==y_s)) return; - if (int_m) - { - { - reg.ax=4; - reg.cx=x; - reg.dx=y; - } - intr(0x33,reg); - } - hide_mouse(); - x_s=x; - y_s=y; - switch (gd) { - case ams : { - p_o_s=((cardinal)y_s >> 1)*80+((cardinal)x_s >> 3)+(y_s & 1)*0x2000; - } - break; - /*cga : begin - P_O_S:=(Y_S shr 1)*80+X_S shr 2+(Y_S and 1)*$2000; - end;*/ - case ega : { - p_o_s=y_s*80+((cardinal)x_s >> 3); - } - break; - } /* case Gd */ - show_mouse(); + if (x > 314 * res) x = 314 * res; + else if (x < 0) x = 0; + if (y > 199) y = 199; + else if (y < 0) y = 0; + if ((x == x_s) && (y == y_s)) return; + if (int_m) { + { + reg.ax = 4; + reg.cx = x; + reg.dx = y; + } + intr(0x33, reg); + } + hide_mouse(); + x_s = x; + y_s = y; + switch (gd) { + case ams : { + p_o_s = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 3) + (y_s & 1) * 0x2000; + } + break; + /*cga : begin + P_O_S:=(Y_S shr 1)*80+X_S shr 2+(Y_S and 1)*$2000; + end;*/ + case ega : { + p_o_s = y_s * 80 + ((cardinal)x_s >> 3); + } + break; + } /* case Gd */ + show_mouse(); } -void read_pos_mouse(integer& x,integer& y,integer& c) -{ - registres reg; +void read_pos_mouse(integer &x, integer &y, integer &c) { + registres reg; - if (int_m) - { - reg.ax=3; - intr(0x33,reg); - x=reg.cx; - y=reg.dx; - c=reg.bx; - } - else - { - c=0; - x=x_s; - y=y_s; - } + if (int_m) { + reg.ax = 3; + intr(0x33, reg); + x = reg.cx; + y = reg.dx; + c = reg.bx; + } else { + c = 0; + x = x_s; + y = y_s; + } } -void mov_mouse(boolean& funct, char& key) - { - boolean p_key; - char in1, in2; - integer x,y,cx,cy,cd; - registres reg; +void mov_mouse(boolean &funct, char &key) { + boolean p_key; + char in1, in2; + integer x, y, cx, cy, cd; + registres reg; - if (int_m) - { - reg.ax=3; - intr(0x33,reg); - x=reg.cx; - y=reg.dx; - cd=reg.bx; - pos_mouse(x,y); - if (cd!=0) - { - clic=true; - return; - } - } - funct=false; - key='\377'; - p_key=keypressed(); - while (p_key) - { - input >> kbd >> in1; - read_pos_mouse(cx, cy, cd); - switch (upcase(in1)) { - case '4' : cx= cx - 8; break; - case '2' : cy= cy + 8; break; - case '6' : cx= cx + 8; break; - case '8' : cy= cy - 8; break; - case '7' : { - cy=1; - cx=1; - } - break; - case '1' : { - cx=1; - cy=190; - } - break; - case '9' : { - cx=315*res; - cy=1; - } - break; - case '3' : { - cy=190; - cx=315*res; - } - break; - case '5' : { - cy=100; - cx=155*res; - } - break; - case ' ': case '\15' : { - clic=true; - return; - } - break; - case '\33' : { - p_key=keypressed(); - if (p_key) - { - input >> kbd >> in2; - switch (in2) { - case 'K' : cx= pred(integer,cx); break; - case 'P' : cy= succ(integer,cy); break; - case 'M' : cx= cx + 2; break; - case 'H' : cy= pred(integer,cy); break; - case RANGE_10(';','D') : { - funct= true; - key=in2; - return; - } - break; - case 'G' : { - cx=cx-1; - cy=cy-1; - } - break; - case 'I' : { - cx=cx+1; - cy=cy-1; - } - break; - case 'O' : { - cx=cx-1; - cy=cy+1; - } - break; - case 'Q' : { - cx=cx+1; - cy=cy+1; - } - break; - } /* case */ - } - } - break; - case 'I' : { - cx= res*32; - cy= 8; - } - break; - case 'D' : { - cx= 80*res; - cy= 8; - } - break; - case 'A' : { - cx= 126*res; - cy= 8; - } - break; - case 'S' : { - cx= 174*res; - cy= 8; - } - break; - case 'P' : { - cx= 222*res; - cy= 8; - } - break; - case 'F' : { - cx= res*270; - cy= 8; - } - break; - case '\23' : { - sonoff= ! sonoff; - return; - } - break; - case '\26' : { - zuul=true; - return; - } - break; - case '\24' : { /* ^T => mode tandy */ - funct= true; - key= '\11'; - } - break; - case '\10' : { /* ^H => mode Hercule */ - funct= true; - key= '\7'; - } - break; - case '\1':case '\3':case '\5' : { - funct= true; - key=in1; - } - break; - } - pos_mouse(cx, cy); - p_key=keypressed(); - } - } + if (int_m) { + reg.ax = 3; + intr(0x33, reg); + x = reg.cx; + y = reg.dx; + cd = reg.bx; + pos_mouse(x, y); + if (cd != 0) { + clic = true; + return; + } + } + funct = false; + key = '\377'; + p_key = keypressed(); + while (p_key) { + input >> kbd >> in1; + read_pos_mouse(cx, cy, cd); + switch (upcase(in1)) { + case '4' : + cx = cx - 8; + break; + case '2' : + cy = cy + 8; + break; + case '6' : + cx = cx + 8; + break; + case '8' : + cy = cy - 8; + break; + case '7' : { + cy = 1; + cx = 1; + } + break; + case '1' : { + cx = 1; + cy = 190; + } + break; + case '9' : { + cx = 315 * res; + cy = 1; + } + break; + case '3' : { + cy = 190; + cx = 315 * res; + } + break; + case '5' : { + cy = 100; + cx = 155 * res; + } + break; + case ' ': + case '\15' : { + clic = true; + return; + } + break; + case '\33' : { + p_key = keypressed(); + if (p_key) { + input >> kbd >> in2; + switch (in2) { + case 'K' : + cx = pred(integer, cx); + break; + case 'P' : + cy = succ(integer, cy); + break; + case 'M' : + cx = cx + 2; + break; + case 'H' : + cy = pred(integer, cy); + break; + case RANGE_10(';', 'D') : { + funct = true; + key = in2; + return; + } + break; + case 'G' : { + cx = cx - 1; + cy = cy - 1; + } + break; + case 'I' : { + cx = cx + 1; + cy = cy - 1; + } + break; + case 'O' : { + cx = cx - 1; + cy = cy + 1; + } + break; + case 'Q' : { + cx = cx + 1; + cy = cy + 1; + } + break; + } /* case */ + } + } + break; + case 'I' : { + cx = res * 32; + cy = 8; + } + break; + case 'D' : { + cx = 80 * res; + cy = 8; + } + break; + case 'A' : { + cx = 126 * res; + cy = 8; + } + break; + case 'S' : { + cx = 174 * res; + cy = 8; + } + break; + case 'P' : { + cx = 222 * res; + cy = 8; + } + break; + case 'F' : { + cx = res * 270; + cy = 8; + } + break; + case '\23' : { + sonoff = ! sonoff; + return; + } + break; + case '\26' : { + zuul = true; + return; + } + break; + case '\24' : { /* ^T => mode tandy */ + funct = true; + key = '\11'; + } + break; + case '\10' : { /* ^H => mode Hercule */ + funct = true; + key = '\7'; + } + break; + case '\1': + case '\3': + case '\5' : { + funct = true; + key = in1; + } + break; + } + pos_mouse(cx, cy); + p_key = keypressed(); + } +} diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index 5bd4fd2809..7c8f1c9f5c 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -1,205 +1,206 @@ str255 delig; -const array<0,31,byte> tabdr - = {{ 32, 101, 115, 97, 114, 105, 110, - 117, 116, 111, 108, 13, 100, 99, - 112, 109, 46, 118, 130, 39, 102, - 98, 44, 113, 104, 103, 33, 76, - 85, 106, 30, 31 }}; - - -const array<0,31,byte> tab30 - = {{ 69, 67, 74, 138, 133, 120, 77, 122, - 121, 68, 65, 63, 73, 80, 83, 82, - 156, 45, 58, 79, 49, 86, 78, 84, - 71, 81, 64, 66, 135, 34, 136, 91 }}; - - - -const array<0,31,byte> tab31 - = {{ 93, 47, 48, 53, 50, 70, 124, 75, - 72, 147, 140, 150, 151, 57, 56, 51, - 107, 139, 55, 89, 131, 37, 54, 88, - 119, 0, 0, 0, 0, 0, 0, 0 }}; - -void deline( integer num , phrase& l , integer& tl ); - -static void cinq_huit( char& c, integer& ind, byte& pt, boolean& the_end) - { - const array<0,31,char> rap - = {{ ',', ':', '@', '!', '?', '-', '‡', - ' ', '…', '', '‚', 'Š', '', '/', - '‹', 'Ś', '˘', '\47', '“', '"', '—', - '–', '0', '1', '2', '3', '4', '5', - '6', '7', '8', '9'}}; - integer oct,ocd; - - /* 5-8 */ - oct=t_mot[ind]; - oct=(cardinal)(oct << (16-pt)) >> (16-pt); - if (pt<6) - { - ind=ind+1; - oct=oct << (5-pt); - pt=pt+11; - oct=oct | ((cardinal)t_mot[ind] >> pt); - } - else - { - pt=pt-5; - oct=(cardinal)oct >> pt; - } - - switch (oct) { - case 11 : { - c= '$'; - the_end= true; - } - break; - case 30:case 31 : { - ocd=t_mot[ind]; - ocd=(cardinal)(ocd << (16-pt)) >> (16-pt); - if (pt<6) - { - ind=ind+1; - ocd=ocd << (5-pt); - pt=pt+11; - ocd=ocd | ((cardinal)t_mot[ind] >> pt); - } - else - { - pt=pt-5; - ocd=(cardinal)ocd >> pt; - } - if (oct==30) c=chr(tab30[ocd]); - else c=chr(tab31[ocd]); - if (c=='\0') - { - the_end=true; - c='#'; - } - } - break; - default: c=chr(tabdr[oct]); - } - } /* 5-8 */ - -void deline( integer num , phrase& l , integer& tl ) - { - integer i,j,ts; - char let; - byte ps, k; - boolean the_end; - - /* DETEX */ - /*debug(' => DeLine');*/ - delig=""; - ts= t_rec[num].indis; - ps= t_rec[num].point; - i=ts; - tl=1; - j=1; - k=ps; - the_end=false; - do { - cinq_huit(let,i,k, the_end); - l[j]=let; - if (j<254) delig=delig+let; - j=j+1; - } while (!the_end); - tl=j-1; - if (tl<255) delig=copy(delig,1,tl-1); /* enleve le $ */ - } /* DETEX */ - - -void afftex( phrase ch, integer x,integer y,integer dx,integer dy, integer typ); - - -static integer l_motsuiv(integer p, phrase& ch, integer& tab) - { - integer c; - - integer l_motsuiv_result; - c=p; - while (! (set::of(' ','$','@', eos).has(ch[p]))) p=p+1; - l_motsuiv_result=tab*(p-c); - return l_motsuiv_result; - } - -void afftex( phrase ch, integer x,integer y,integer dx,integer dy, integer typ) - { - boolean the_end; - char touch; - integer xf,yf; - integer xc,yc; - integer tab, p; - varying_string<255> s; - integer i,j,nt; - - -/* debug(' .. Afftex');*/ - putxy(x,y); - if (res==1) tab=10; else tab=6; - dx= dx * 6; - dy= dy * 6; - xc= x; - yc= y; - xf= x+dx; - yf= y+dy; - p= 1; - the_end=(ch[p]=='$'); - s=""; - while (! the_end) - { - switch (ch[p]) { - case '@' : { - writeg(s,typ); - s=""; - p=p+1; - xc=x; - yc=yc+6; - putxy(xc,yc); - } - break; - case ' ' : { - s=s+' '; - xc=xc+tab; - p=p+1; - if (l_motsuiv(p, ch, tab)+xc > xf) - { - writeg(s,typ); - s=""; - xc=x; - yc=yc+6; - if (yc>yf) - { - do {; } while (!keypressed()); - i=y; - do { - j=x; - do { - putxy(j,i); - writeg(" ",0); - j=j+6; - } while (!(j>xf)); - i=i+6; - } while (!(i>yf)); - yc=y; - } - putxy(xc,yc); - } - } - break; - case '$' : { - the_end= true; - writeg(s,typ); - } - break; - default: - { - s=s+ch[p]; - p=p+1; - xc=xc+tab; - } - } /* case */ - } - } +const array<0, 31, byte> tabdr += {{ + 32, 101, 115, 97, 114, 105, 110, + 117, 116, 111, 108, 13, 100, 99, + 112, 109, 46, 118, 130, 39, 102, + 98, 44, 113, 104, 103, 33, 76, + 85, 106, 30, 31 + } +}; + + +const array<0, 31, byte> tab30 += {{ + 69, 67, 74, 138, 133, 120, 77, 122, + 121, 68, 65, 63, 73, 80, 83, 82, + 156, 45, 58, 79, 49, 86, 78, 84, + 71, 81, 64, 66, 135, 34, 136, 91 + } +}; + + + +const array<0, 31, byte> tab31 += {{ + 93, 47, 48, 53, 50, 70, 124, 75, + 72, 147, 140, 150, 151, 57, 56, 51, + 107, 139, 55, 89, 131, 37, 54, 88, + 119, 0, 0, 0, 0, 0, 0, 0 + } +}; + +void deline(integer num , phrase &l , integer &tl); + +static void cinq_huit(char &c, integer &ind, byte &pt, boolean &the_end) { + const array<0, 31, char> rap + = {{ ',', ':', '@', '!', '?', '-', '‡', + ' ', '…', '', '‚', 'Š', '', '/', + '‹', 'Ś', '˘', '\47', '“', '"', '—', + '–', '0', '1', '2', '3', '4', '5', + '6', '7', '8', '9' + } + }; + integer oct, ocd; + + /* 5-8 */ + oct = t_mot[ind]; + oct = (cardinal)(oct << (16 - pt)) >> (16 - pt); + if (pt < 6) { + ind = ind + 1; + oct = oct << (5 - pt); + pt = pt + 11; + oct = oct | ((cardinal)t_mot[ind] >> pt); + } else { + pt = pt - 5; + oct = (cardinal)oct >> pt; + } + + switch (oct) { + case 11 : { + c = '$'; + the_end = true; + } + break; + case 30: + case 31 : { + ocd = t_mot[ind]; + ocd = (cardinal)(ocd << (16 - pt)) >> (16 - pt); + if (pt < 6) { + ind = ind + 1; + ocd = ocd << (5 - pt); + pt = pt + 11; + ocd = ocd | ((cardinal)t_mot[ind] >> pt); + } else { + pt = pt - 5; + ocd = (cardinal)ocd >> pt; + } + if (oct == 30) c = chr(tab30[ocd]); + else c = chr(tab31[ocd]); + if (c == '\0') { + the_end = true; + c = '#'; + } + } + break; + default: + c = chr(tabdr[oct]); + } +} /* 5-8 */ + +void deline(integer num , phrase &l , integer &tl) { + integer i, j, ts; + char let; + byte ps, k; + boolean the_end; + + /* DETEX */ + /*debug(' => DeLine');*/ + delig = ""; + ts = t_rec[num].indis; + ps = t_rec[num].point; + i = ts; + tl = 1; + j = 1; + k = ps; + the_end = false; + do { + cinq_huit(let, i, k, the_end); + l[j] = let; + if (j < 254) delig = delig + let; + j = j + 1; + } while (!the_end); + tl = j - 1; + if (tl < 255) delig = copy(delig, 1, tl - 1); /* enleve le $ */ +} /* DETEX */ + + +void afftex(phrase ch, integer x, integer y, integer dx, integer dy, integer typ); + + +static integer l_motsuiv(integer p, phrase &ch, integer &tab) { + integer c; + + integer l_motsuiv_result; + c = p; + while (!(set::of(' ', '$', '@', eos).has(ch[p]))) p = p + 1; + l_motsuiv_result = tab * (p - c); + return l_motsuiv_result; +} + +void afftex(phrase ch, integer x, integer y, integer dx, integer dy, integer typ) { + boolean the_end; + char touch; + integer xf, yf; + integer xc, yc; + integer tab, p; + varying_string<255> s; + integer i, j, nt; + + + /* debug(' .. Afftex');*/ + putxy(x, y); + if (res == 1) tab = 10; + else tab = 6; + dx = dx * 6; + dy = dy * 6; + xc = x; + yc = y; + xf = x + dx; + yf = y + dy; + p = 1; + the_end = (ch[p] == '$'); + s = ""; + while (! the_end) { + switch (ch[p]) { + case '@' : { + writeg(s, typ); + s = ""; + p = p + 1; + xc = x; + yc = yc + 6; + putxy(xc, yc); + } + break; + case ' ' : { + s = s + ' '; + xc = xc + tab; + p = p + 1; + if (l_motsuiv(p, ch, tab) + xc > xf) { + writeg(s, typ); + s = ""; + xc = x; + yc = yc + 6; + if (yc > yf) { + do { + ; + } while (!keypressed()); + i = y; + do { + j = x; + do { + putxy(j, i); + writeg(" ", 0); + j = j + 6; + } while (!(j > xf)); + i = i + 6; + } while (!(i > yf)); + yc = y; + } + putxy(xc, yc); + } + } + break; + case '$' : { + the_end = true; + writeg(s, typ); + } + break; + default: { + s = s + ch[p]; + p = p + 1; + xc = xc + tab; + } + } /* case */ + } +} diff --git a/engines/mortevielle/ovd1.h b/engines/mortevielle/ovd1.h index b2f5f7962c..d40f8d39bc 100644 --- a/engines/mortevielle/ovd1.h +++ b/engines/mortevielle/ovd1.h @@ -1,32 +1,29 @@ -void dem2() -{ - untyped_file f; - integer k; - - /* -- demande de disk 2 -- */ - while (ioresult!=0); - assign(f,"mort.001"); - /*$i-*/ - reset(f); - while (ioresult!=0) - { - show_mouse(); - k= do_alert(al_mess2,1); - hide_mouse(); - reset(f); - } - close(f); +void dem2() { + untyped_file f; + integer k; + + /* -- demande de disk 2 -- */ + while (ioresult != 0); + assign(f, "mort.001"); + /*$i-*/ + reset(f); + while (ioresult != 0) { + show_mouse(); + k = do_alert(al_mess2, 1); + hide_mouse(); + reset(f); + } + close(f); } -void ani50() - { - crep= animof(1,1); - pictout(adani,crep,63,12); - crep= animof(2,1); - pictout(adani,crep,63,12); - f2_all= (res==1); - repon(2, c_paroles+143); - } +void ani50() { + crep = animof(1, 1); + pictout(adani, crep, 63, 12); + crep = animof(2, 1); + pictout(adani, crep, 63, 12); + f2_all = (res == 1); + repon(2, c_paroles + 143); +} /*overlay procedure apzuul; begin @@ -37,311 +34,304 @@ void ani50() end; end;*/ -/* overlay */ void aff50(boolean c) - { - integer k; - - caff= 50; - maff=0; - taffich(); - dessine(ades,63,12); - if (c) ani50(); - else repon(2, c_paroles+142); - f3f8(); - } - -/* overlay */ void init_menu() - { - integer i, j, tai; - phrase st; - untyped_file f; - - assign(f,"menufr.mor"); - /*$i-*/ - reset(f,144); - blockread(f,lettres,1); - close(f); - /* ---- Demande de changement de disquette ---- */ - dem2(); - - - for( i= 1; i <= 8; i ++) - inv[i]= "* "; - inv[7]= "< -*-*-*-*-*-*-*-*-*- "; - for( i= 1; i <= 7; i ++) - dep[i]= "* "; - i= 1; - do { - deline(i+c_action,st,tai); - act[i]= delig + " "; - if (i<9) - { - if (i<6) - { - deline(i+c_saction,st,tai); - self_[i]= delig + " "; - } - deline(i+c_dis,st,tai); - dis[i]= delig+ ' '; - } - i= succ(integer,i); - } while (!(i== 22)); - for( i= 1; i <= 8; i ++) - { - disc[i]=0x500+i; - if (i<8) depl[i]=0x200+i; - invt[i]=0x100+i; - if (i>6) menu_disable(invt[i]); - } - msg3=no_choice; - msg4=no_choice; - msg[3]=no_choice; - msg[4]=no_choice; - clic=false; - } - - -/* overlay */ void charpal() -{ - file f; - file ft; - integer i,j,k; - file fb; - byte b; - - assign(ft,"fxx.mor"); - /*$i-*/ - reset(ft); - if (ioresult!=0) - { - caff=do_alert(err_mess,1); - exit(0); - } - ft >> l; - close(ft); - assign(f,"plxx.mor"); - reset(f); - for( i= 0; i <= 90; i ++) f >> tabpal[i]; - close(f); - assign(fb, "cxx.mor"); - reset(fb); - for( j=0; j <= 90; j ++) - { - fb >> palcga[j].p; - for( i=0; i <= 15; i ++) - { - nhom& with = palcga[j].a[i]; - - fb >> b; - with.n=(cardinal)b >> 4; - with.hom[0]= ((cardinal)b >> 2) & 3; - with.hom[1]= b & 3; - } - } - palcga[10].a[9]= palcga[10].a[5]; - for( j=0; j <= 14; j ++) - { - fb >> tpt[j].tax; - fb >> tpt[j].tay; - for( i=1; i <= 20; i ++) - for( k=1; k <= 20; k ++) - fb >> tpt[j].des[i][k]; - } - close(fb); +/* overlay */ void aff50(boolean c) { + integer k; + + caff = 50; + maff = 0; + taffich(); + dessine(ades, 63, 12); + if (c) ani50(); + else repon(2, c_paroles + 142); + f3f8(); } -/* overlay */ void chartex() -{ - integer i; - untyped_file fibyte; - phrase s; - -/* debug('o3 chartex'); */ - i=0; - assign(fibyte,"TXX.INP"); - /*$i-*/ - reset(fibyte); - blockread(fibyte,t_mot,125); - close(fibyte); - assign(sauv_t,"TXX.NTP"); - reset(sauv_t); - do { - sauv_t >> t_rec[i]; - i=i+1; - } while (!(eof(sauv_t))); - close(sauv_t); - deline(578,s,i); - al_mess= delig; - deline(579,s,i); - err_mess= delig; - deline(580,s,i); - ind_mess= delig; - deline(581,s,i); - al_mess2= delig; +/* overlay */ void init_menu() { + integer i, j, tai; + phrase st; + untyped_file f; + + assign(f, "menufr.mor"); + /*$i-*/ + reset(f, 144); + blockread(f, lettres, 1); + close(f); + /* ---- Demande de changement de disquette ---- */ + dem2(); + + + for (i = 1; i <= 8; i ++) + inv[i] = "* "; + inv[7] = "< -*-*-*-*-*-*-*-*-*- "; + for (i = 1; i <= 7; i ++) + dep[i] = "* "; + i = 1; + do { + deline(i + c_action, st, tai); + act[i] = delig + " "; + if (i < 9) { + if (i < 6) { + deline(i + c_saction, st, tai); + self_[i] = delig + " "; + } + deline(i + c_dis, st, tai); + dis[i] = delig + ' '; + } + i = succ(integer, i); + } while (!(i == 22)); + for (i = 1; i <= 8; i ++) { + disc[i] = 0x500 + i; + if (i < 8) depl[i] = 0x200 + i; + invt[i] = 0x100 + i; + if (i > 6) menu_disable(invt[i]); + } + msg3 = no_choice; + msg4 = no_choice; + msg[3] = no_choice; + msg[4] = no_choice; + clic = false; +} + + +/* overlay */ void charpal() { + file f; + file ft; + integer i, j, k; + file fb; + byte b; + + assign(ft, "fxx.mor"); + /*$i-*/ + reset(ft); + if (ioresult != 0) { + caff = do_alert(err_mess, 1); + exit(0); + } + ft >> l; + close(ft); + assign(f, "plxx.mor"); + reset(f); + for (i = 0; i <= 90; i ++) f >> tabpal[i]; + close(f); + assign(fb, "cxx.mor"); + reset(fb); + for (j = 0; j <= 90; j ++) { + fb >> palcga[j].p; + for (i = 0; i <= 15; i ++) { + nhom &with = palcga[j].a[i]; + + fb >> b; + with.n = (cardinal)b >> 4; + with.hom[0] = ((cardinal)b >> 2) & 3; + with.hom[1] = b & 3; + } + } + palcga[10].a[9] = palcga[10].a[5]; + for (j = 0; j <= 14; j ++) { + fb >> tpt[j].tax; + fb >> tpt[j].tay; + for (i = 1; i <= 20; i ++) + for (k = 1; k <= 20; k ++) + fb >> tpt[j].des[i][k]; + } + close(fb); +} + +/* overlay */ void chartex() { + integer i; + untyped_file fibyte; + phrase s; + + /* debug('o3 chartex'); */ + i = 0; + assign(fibyte, "TXX.INP"); + /*$i-*/ + reset(fibyte); + blockread(fibyte, t_mot, 125); + close(fibyte); + assign(sauv_t, "TXX.NTP"); + reset(sauv_t); + do { + sauv_t >> t_rec[i]; + i = i + 1; + } while (!(eof(sauv_t))); + close(sauv_t); + deline(578, s, i); + al_mess = delig; + deline(579, s, i); + err_mess = delig; + deline(580, s, i); + ind_mess = delig; + deline(581, s, i); + al_mess2 = delig; } /* overlay */ void dialpre() { - integer cy, tay; - phrase st; - real ix; - char ch; - - - /* debug('o3 dialpre'); */ - cy=0; - clrscr; - textcolor(9); - do { - cy= cy+1; - deline( cy+c_dialpre,st,tay); - gotoxy(40-tay / 2,wherey+1); - output << delig; - } while (!(cy==20)); - ix=0; - do { - ix= ix+1; - } while (!(keypressed() | (ix==5e5))); - crep= 998; - textcolor(1); - gotoxy(1,21); clreol; - gotoxy(1,23); - output << "CARTE GRAPHIQUE CGA EGA HERCULE/AT&T400 TANDY AMSTRAD1512"; - gotoxy(12,24); - output << "Ctrl C E H T A"; - do { - input >> kbd >> ch; - } while (!(set::of('\1','\3','\5','\24','\10', eos).has(ch))); - switch (ch) { - case '\1':case '\3':case '\5' : gd= (cardinal)ord(ch) >> 1; break; - case '\10' : gd= her; break; - case '\24' : gd= tan; break; - } - gotoxy(1,24); - clreol; - gotoxy(1,23); - clreol; - gotoxy(26,23); - output << "Jeu au Clavier / … la Souris"; - textcolor(4); - gotoxy(33,23); output << 'C'; - gotoxy(48,23); output << 'S'; - do { - input >> kbd >> ch; - } while (!(set::of('C','S', eos).has(upcase(ch)))); - int_m= (upcase(ch)=='S'); + integer cy, tay; + phrase st; + real ix; + char ch; + + + /* debug('o3 dialpre'); */ + cy = 0; + clrscr; + textcolor(9); + do { + cy = cy + 1; + deline(cy + c_dialpre, st, tay); + gotoxy(40 - tay / 2, wherey + 1); + output << delig; + } while (!(cy == 20)); + ix = 0; + do { + ix = ix + 1; + } while (!(keypressed() | (ix == 5e5))); + crep = 998; + textcolor(1); + gotoxy(1, 21); + clreol; + gotoxy(1, 23); + output << "CARTE GRAPHIQUE CGA EGA HERCULE/AT&T400 TANDY AMSTRAD1512"; + gotoxy(12, 24); + output << "Ctrl C E H T A"; + do { + input >> kbd >> ch; + } while (!(set::of('\1', '\3', '\5', '\24', '\10', eos).has(ch))); + switch (ch) { + case '\1': + case '\3': + case '\5' : + gd = (cardinal)ord(ch) >> 1; + break; + case '\10' : + gd = her; + break; + case '\24' : + gd = tan; + break; + } + gotoxy(1, 24); + clreol; + gotoxy(1, 23); + clreol; + gotoxy(26, 23); + output << "Jeu au Clavier / … la Souris"; + textcolor(4); + gotoxy(33, 23); + output << 'C'; + gotoxy(48, 23); + output << 'S'; + do { + input >> kbd >> ch; + } while (!(set::of('C', 'S', eos).has(upcase(ch)))); + int_m = (upcase(ch) == 'S'); } -/* overlay */ void init_lieu() -{ - file f_lieu; - -/* debug('o3 init_lieu'); */ - assign(f_lieu,"MXX.mor"); - /*$i-*/ - reset(f_lieu); - f_lieu >> v_lieu; - close(f_lieu); +/* overlay */ void init_lieu() { + file f_lieu; + + /* debug('o3 init_lieu'); */ + assign(f_lieu, "MXX.mor"); + /*$i-*/ + reset(f_lieu); + f_lieu >> v_lieu; + close(f_lieu); } -/* overlay */ void music() -{ - untyped_file fic; - integer k; - boolean fin; - char ch; - real x,y; - - - /* debug('o3 music'); */ - if (sonoff) return; - rech_cfiec= true; - assign(fic,"mort.img"); - /*$i-*/ - reset(fic); - blockread(fic,mem[0x3800+0],500); - blockread(fic,mem[0x47a0+0],123); - close(fic); - demus(0x3800,0x5000,623); - addfix= (real)((tempo_mus-addv[1]))/256; - cctable(tbi); - - fin=false; - k=0; - do { - fin= keypressed(); - musyc( tbi, 9958 , tempo_mus); - k= k+1; - fin= fin | keypressed() | (k>=5); - } while (!fin); - while (keypressed()) input >> kbd >> ch; +/* overlay */ void music() { + untyped_file fic; + integer k; + boolean fin; + char ch; + real x, y; + + + /* debug('o3 music'); */ + if (sonoff) return; + rech_cfiec = true; + assign(fic, "mort.img"); + /*$i-*/ + reset(fic); + blockread(fic, mem[0x3800 + 0], 500); + blockread(fic, mem[0x47a0 + 0], 123); + close(fic); + demus(0x3800, 0x5000, 623); + addfix = (real)((tempo_mus - addv[1])) / 256; + cctable(tbi); + + fin = false; + k = 0; + do { + fin = keypressed(); + musyc(tbi, 9958 , tempo_mus); + k = k + 1; + fin = fin | keypressed() | (k >= 5); + } while (!fin); + while (keypressed()) input >> kbd >> ch; } -/* overlay */ void charge_bruit5() - { - untyped_file f; - - assign(f,"bruit5"); - /*$i-*/ - reset(f); - if (ioresult!=0) - { - caff=do_alert(err_mess,1); - exit(0); - } - blockread(f,mem[adbruit5+0],149); - /*blockread(f,mem[$5CB0:0],100); - blockread(f,mem[$3D1F:0],49);*/ - close(f); - } - -/* overlay */ void charge_cfiec() - { - untyped_file f; - - assign(f,"cfiec.mor"); - /*$i-*/ - reset(f); - blockread(f,mem[adcfiec+0],511); - blockread(f,mem[adcfiec+4088+0],311); - close(f); - rech_cfiec= false; - } - - -/* overlay */ void charge_cfiph() - { - untyped_file f; - - assign(f,"cfiph.mor"); - /*$i-*/ - reset(f,256); - blockread(f,t_cph,50); - close(f); - } - - -/* overlay */ void suite() -{ - varying_string<25> cpr; - - hirs(); - repon(7,2035); - caff= 51; - taffich(); - teskbd(); - if (newgd!=gd) gd=newgd; - hirs(); - dessine(ades,0,0); - gotoxy(20*pred(integer,res)+8,24); - textcolor(7); - cpr="COPYRIGHT 1989 : LANKHOR"; - if (set::of(ega,ams,cga, eos).has(gd)) output << cpr; - else { - putxy(104+72*res,190); - writeg(cpr,0); - } +/* overlay */ void charge_bruit5() { + untyped_file f; + + assign(f, "bruit5"); + /*$i-*/ + reset(f); + if (ioresult != 0) { + caff = do_alert(err_mess, 1); + exit(0); + } + blockread(f, mem[adbruit5 + 0], 149); + /*blockread(f,mem[$5CB0:0],100); + blockread(f,mem[$3D1F:0],49);*/ + close(f); +} + +/* overlay */ void charge_cfiec() { + untyped_file f; + + assign(f, "cfiec.mor"); + /*$i-*/ + reset(f); + blockread(f, mem[adcfiec + 0], 511); + blockread(f, mem[adcfiec + 4088 + 0], 311); + close(f); + rech_cfiec = false; +} + + +/* overlay */ void charge_cfiph() { + untyped_file f; + + assign(f, "cfiph.mor"); + /*$i-*/ + reset(f, 256); + blockread(f, t_cph, 50); + close(f); +} + + +/* overlay */ void suite() { + varying_string<25> cpr; + + hirs(); + repon(7, 2035); + caff = 51; + taffich(); + teskbd(); + if (newgd != gd) gd = newgd; + hirs(); + dessine(ades, 0, 0); + gotoxy(20 * pred(integer, res) + 8, 24); + textcolor(7); + cpr = "COPYRIGHT 1989 : LANKHOR"; + if (set::of(ega, ams, cga, eos).has(gd)) output << cpr; + else { + putxy(104 + 72 * res, 190); + writeg(cpr, 0); + } } diff --git a/engines/mortevielle/parole.h b/engines/mortevielle/parole.h index 0630c9b2b3..3b777c3770 100644 --- a/engines/mortevielle/parole.h +++ b/engines/mortevielle/parole.h @@ -1,396 +1,388 @@ - 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 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_; +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; - } + 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 entroct(byte o) { + mem[adtroct + ptr_oct] = o; + ptr_oct = ptr_oct + 1; +} - void veracf(byte b) - {; - } +void veracf(byte b) { + ; +} -/* overlay */ void cctable (tablint& t) - { - integer k; - array<0,256,real> tb; +/* 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; - } - } + 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; +/* 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)); - } + 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; +/* 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); - } + 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; +/* overlay */ void charge_phbruit() { + untyped_file f; - assign(f,"phbrui.mor"); - reset(f); - blockread(f,t_cph,3); - close(f); - } + assign(f, "phbrui.mor"); + reset(f); + blockread(f, t_cph, 3); + close(f); +} -/* overlay */ void charge_bruit() - { - untyped_file f; - integer j,i; +/* 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); - } + 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; +/* 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; + 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 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 */ - } + 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 diff --git a/engines/mortevielle/parole2.h b/engines/mortevielle/parole2.h index 6cdaa3e2b4..07ac757d77 100644 --- a/engines/mortevielle/parole2.h +++ b/engines/mortevielle/parole2.h @@ -1,103 +1,95 @@ - void rot_chariot() - { - c1= c2; - c2= c3; - { - c3.val= 32; - c3.code= 9; - } - } +void rot_chariot() { + c1 = c2; + c2 = c3; + { + c3.val = 32; + c3.code = 9; + } +} - void init_chariot() - { - { - c3.rep= 0; - c3.freq= 0; - c3.acc= 0; - } - rot_chariot(); - rot_chariot(); - } +void init_chariot() { + { + c3.rep = 0; + c3.freq = 0; + c3.acc = 0; + } + rot_chariot(); + rot_chariot(); +} -void trait_ph() - { - const array<0,2,integer> deca - = {{300,30,40}}; +void trait_ph() { + const array<0, 2, integer> deca + = {{300, 30, 40}}; - ptr_tcph= pred(integer,num_ph); - ledeb=swap(t_cph[ptr_tcph]) + deca[typlec]; - lefin=swap(t_cph[ptr_tcph+1]) + deca[typlec]; - nb_word= lefin - ledeb; - ptr_tcph=(cardinal)ledeb >> 1; - ptr_word = 0; - do { - memw[adword+ ptr_word]= t_cph[ptr_tcph]; - ptr_word = ptr_word +2; - ptr_tcph = ptr_tcph+1; - } while (!(ptr_tcph>=((cardinal)lefin >> 1))); + ptr_tcph = pred(integer, num_ph); + ledeb = swap(t_cph[ptr_tcph]) + deca[typlec]; + lefin = swap(t_cph[ptr_tcph + 1]) + deca[typlec]; + nb_word = lefin - ledeb; + ptr_tcph = (cardinal)ledeb >> 1; + ptr_word = 0; + do { + memw[adword + ptr_word] = t_cph[ptr_tcph]; + ptr_word = ptr_word + 2; + ptr_tcph = ptr_tcph + 1; + } while (!(ptr_tcph >= ((cardinal)lefin >> 1))); - ptr_oct= 0; - ptr_word= 0; - init_chariot(); + ptr_oct = 0; + ptr_word = 0; + init_chariot(); - do { - rot_chariot(); - charg_car(); - trait_car(); - } while (!(ptr_word >= nb_word)); + do { + rot_chariot(); + charg_car(); + trait_car(); + } while (!(ptr_word >= nb_word)); - rot_chariot(); - trait_car(); - entroct(ord('#')); - } + rot_chariot(); + trait_car(); + entroct(ord('#')); +} - void parole(integer rep, integer ht, integer typ) - { - array<0,500,integer> savph; - integer i; - integer tempo; +void parole(integer rep, integer ht, integer typ) { + array<0, 500, integer> savph; + integer i; + integer tempo; - if (sonoff) return; - num_ph= rep; - haut= ht; - typlec= typ; - if (typlec!=0) - { - for( i=0; i <= 500; i ++) savph[i]=t_cph[i]; - tempo= tempo_bruit; - } - else - if (haut>5) tempo= tempo_f; - else tempo= tempo_m; - addfix= (real)((tempo-addv[0]))/256; - cctable(tbi); - switch (typ) { - case 1 : { - charge_bruit(); - /*if zuul then zzuul(adbruit,0,1095);*/ - regenbruit(); - } - break; - case 2 : { - charge_son(); - charge_phbruit(); - } - break; - } - trait_ph(); - litph(tbi,typ,tempo); - if (typlec!=0) - for( i=0; i <= 500; i ++) - { - t_cph[i]=savph[i]; - mlec=typlec; - } - writepal(numpal); - } + if (sonoff) return; + num_ph = rep; + haut = ht; + typlec = typ; + if (typlec != 0) { + for (i = 0; i <= 500; i ++) savph[i] = t_cph[i]; + tempo = tempo_bruit; + } else if (haut > 5) tempo = tempo_f; + else tempo = tempo_m; + addfix = (real)((tempo - addv[0])) / 256; + cctable(tbi); + switch (typ) { + case 1 : { + charge_bruit(); + /*if zuul then zzuul(adbruit,0,1095);*/ + regenbruit(); + } + break; + case 2 : { + charge_son(); + charge_phbruit(); + } + break; + } + trait_ph(); + litph(tbi, typ, tempo); + if (typlec != 0) + for (i = 0; i <= 500; i ++) { + t_cph[i] = savph[i]; + mlec = typlec; + } + writepal(numpal); +} diff --git a/engines/mortevielle/prog.h b/engines/mortevielle/prog.h index a3ba1896ae..7bdea5b850 100644 --- a/engines/mortevielle/prog.h +++ b/engines/mortevielle/prog.h @@ -1,346 +1,319 @@ -/* overlay */ void change_gd(integer ngd) -{ - integer i; +/* overlay */ void change_gd(integer ngd) { + integer i; - hide_mouse(); - gd= ngd; - hirs(); - init_mouse(); - show_mouse(); - dessine_rouleau(); - tinke(); - pendule(); - if (ipers!=0) affper(ipers); else person(); - clsf2(); - clsf3(); - maff= 68; - afdes(0); - repon(2,crep); - menu_aff(); + hide_mouse(); + gd = ngd; + hirs(); + init_mouse(); + show_mouse(); + dessine_rouleau(); + tinke(); + pendule(); + if (ipers != 0) affper(ipers); + else person(); + clsf2(); + clsf3(); + maff = 68; + afdes(0); + repon(2, crep); + menu_aff(); } -/* overlay */ void antegame() -{ - integer cx; - registres regs; - array<0,511,char> buffer; - integer i,j,k; - array<0,2,boolean> test; - array<0,7,char> g; +/* overlay */ void antegame() { + integer cx; + registres regs; + array<0, 511, char> buffer; + integer i, j, k; + array<0, 2, boolean> test; + array<0, 7, char> g; - hide_mouse(); - imen= false; - g[1]='M'; -perdu= true; - anyone= false; -okdes= true; - test[0]= false; - test[1]=false; - g[0]='\40'; - col= false; - tesok= true; - test[2]=false; - g[7]=g[0]; - g[2]='A'; - cache= false; - brt= false; - maff= 68; - g[5]='E'; - mnumo= 0; - prebru= 0; - g[4]='T'; - x= 0; - y= 0; - num= 0; - hdb= 0; - hfb= 0; - cs= 0; - is= 0; - k= 0; - ment= 0; -syn= true; -fouil= true; - mchai= 0; - inei= 0; - initouv(); - g[3]='S'; - g[6]='R'; - iouv= 0; - dobj= 0; - affrep(); - stpou= ind_mess; - while ((test[k]==false) && (k<2)) - { - regs.ax=0; - k=succ(integer,k); - intr(19,regs); - { - regs.ax=0x201;regs.cx=0x1;regs.dx=0x100+k-1;regs.es=seg(buffer);regs.bx=ofs(buffer); - intr(19,regs); - test[k]=! imen; - i=0; - while ((test[k]) && (i<19)) - { - regs.ax=0x201; - syn= false;regs.cx=0x2700+i;regs.dx=0x100+k-1;regs.es=seg(buffer);regs.bx=ofs(buffer); - intr(19,regs);if (lo(regs.flags) % 2==1) test[k]=false;i=i+1; - } - okdes= false; - solu= true; - for( j=0; j <= 7; j ++) if (buffer[j+504]!=g[j]) test[k]=false; - } - perdu= false; - fouil= false; - } - person(); - tinke(); - pendule(); - afdes(0); - repon(2,crep); - clsf3(); - solu= false; - tmlieu(s.mlieu); - modinv(); - if (s.derobj!= 0) modobj2(s.derobj+ 400,test[1],test[2]); - else tesok=test[1] || test[2]; - show_mouse(); + hide_mouse(); + imen = false; + g[1] = 'M'; + perdu = true; + anyone = false; + okdes = true; + test[0] = false; + test[1] = false; + g[0] = '\40'; + col = false; + tesok = true; + test[2] = false; + g[7] = g[0]; + g[2] = 'A'; + cache = false; + brt = false; + maff = 68; + g[5] = 'E'; + mnumo = 0; + prebru = 0; + g[4] = 'T'; + x = 0; + y = 0; + num = 0; + hdb = 0; + hfb = 0; + cs = 0; + is = 0; + k = 0; + ment = 0; + syn = true; + fouil = true; + mchai = 0; + inei = 0; + initouv(); + g[3] = 'S'; + g[6] = 'R'; + iouv = 0; + dobj = 0; + affrep(); + stpou = ind_mess; + while ((test[k] == false) && (k < 2)) { + regs.ax = 0; + k = succ(integer, k); + intr(19, regs); + { + regs.ax = 0x201; + regs.cx = 0x1; + regs.dx = 0x100 + k - 1; + regs.es = seg(buffer); + regs.bx = ofs(buffer); + intr(19, regs); + test[k] = ! imen; + i = 0; + while ((test[k]) && (i < 19)) { + regs.ax = 0x201; + syn = false; + regs.cx = 0x2700 + i; + regs.dx = 0x100 + k - 1; + regs.es = seg(buffer); + regs.bx = ofs(buffer); + intr(19, regs); + if (lo(regs.flags) % 2 == 1) test[k] = false; + i = i + 1; + } + okdes = false; + solu = true; + for (j = 0; j <= 7; j ++) if (buffer[j + 504] != g[j]) test[k] = false; + } + perdu = false; + fouil = false; + } + person(); + tinke(); + pendule(); + afdes(0); + repon(2, crep); + clsf3(); + solu = false; + tmlieu(s.mlieu); + modinv(); + if (s.derobj != 0) modobj2(s.derobj + 400, test[1], test[2]); + else tesok = test[1] || test[2]; + show_mouse(); } /* NIVEAU 3 */ /* procedure PROGRAMME */ -void tmaj3() -{ - integer j,h,m; +void tmaj3() { + integer j, h, m; - calch(j,h,m); - if (m== 30) m= 1; - h= h+ (j* 24); - m= m+ (h* 2); - s.heure= chr(m); + calch(j, h, m); + if (m == 30) m = 1; + h = h + (j * 24); + m = m + (h * 2); + s.heure = chr(m); } void tsitu() { - integer h,j,m; + integer h, j, m; - if (! col) clsf2(); - syn= false; - iesc= false; - if (anyone) goto L1; - if (brt) - if ((msg[3]== depla) || (msg[4]== sortir) || (msg[4]== dormir) || - (msg[4]== manger)) - { - ctrm= 4; - goto L2; - } - if (msg[3]== depla) taller(); - if (msg[3]== discut) tparler(); - if (msg[3]== invent) tsprendre(); - if (msg[4]== attacher) tattacher(); - if (msg[4]== attendre) tattendre(); - if (msg[4]== defoncer) tdefoncer(); - if (msg[4]== dormir) tdormir(); - if (msg[4]== ecouter) tecouter(); - if (msg[4]== entrer) tentrer(); - if (msg[4]== fermer) tfermer(); - if (msg[4]== fouiller) tfouiller(); - if (msg[4]== frapper) tfrapper(); - if (msg[4]== gratter) tgratter(); - if (msg[4]== lire) tlire(); - if (msg[4]== manger) tmanger(); - if (msg[4]== mettre) tmettre(); - if (msg[4]== ouvrir) touvrir(); - if (msg[4]== prendre) tprendre(); - if (msg[4]== regarder) tregarder(); - if (msg[4]== sentir) tsentir(); - if (msg[4]== sonder) tsonder(); - if (msg[4]== sortir) tsortir(); - if (msg[4]== soulever) tsoulever(); - if (msg[4]== tourner) ttourner(); - if (msg[4]== scacher) - { - tcacher(); - goto L1; - } - if (msg[4]== sfouiller) tsfouiller(); - if (msg[4]== slire) tslire(); - if (msg[4]== sposer) tposer(); - if (msg[4]== sregarder) tsregarder(); - cache= false; + if (! col) clsf2(); + syn = false; + iesc = false; + if (anyone) goto L1; + if (brt) + if ((msg[3] == depla) || (msg[4] == sortir) || (msg[4] == dormir) || + (msg[4] == manger)) { + ctrm = 4; + goto L2; + } + if (msg[3] == depla) taller(); + if (msg[3] == discut) tparler(); + if (msg[3] == invent) tsprendre(); + if (msg[4] == attacher) tattacher(); + if (msg[4] == attendre) tattendre(); + if (msg[4] == defoncer) tdefoncer(); + if (msg[4] == dormir) tdormir(); + if (msg[4] == ecouter) tecouter(); + if (msg[4] == entrer) tentrer(); + if (msg[4] == fermer) tfermer(); + if (msg[4] == fouiller) tfouiller(); + if (msg[4] == frapper) tfrapper(); + if (msg[4] == gratter) tgratter(); + if (msg[4] == lire) tlire(); + if (msg[4] == manger) tmanger(); + if (msg[4] == mettre) tmettre(); + if (msg[4] == ouvrir) touvrir(); + if (msg[4] == prendre) tprendre(); + if (msg[4] == regarder) tregarder(); + if (msg[4] == sentir) tsentir(); + if (msg[4] == sonder) tsonder(); + if (msg[4] == sortir) tsortir(); + if (msg[4] == soulever) tsoulever(); + if (msg[4] == tourner) ttourner(); + if (msg[4] == scacher) { + tcacher(); + goto L1; + } + if (msg[4] == sfouiller) tsfouiller(); + if (msg[4] == slire) tslire(); + if (msg[4] == sposer) tposer(); + if (msg[4] == sregarder) tsregarder(); + cache = false; L1: - if (anyone) - { - quelquun(); - anyone= false; - goto L2; - } - calch(j,h,m); - if ((((h== 12) || (h== 13) || (h== 19)) && (s.mlieu!= 10)) || - ((h> 0) && (h< 6) && (s.mlieu!= 0))) s.conf= s.conf+ 1; - if (((s.mlieu< 16) || (s.mlieu> 19)) && (s.mlieu!= 23) - && (s.mlieu!= 0) && (s.derobj!= 152) && (! perdu)) - { - if ((s.conf> 99) && (h> 8) && (h< 16)) - { - crep= 1501; - tperd(); - } - if ((s.conf> 99) && (h> 0) && (h< 9)) - { - crep= 1508; - tperd(); - } - if ((j> 1) && (h> 8) && (! perdu)) - { - crep= 1502; - tperd(); - } - } + if (anyone) { + quelquun(); + anyone = false; + goto L2; + } + calch(j, h, m); + if ((((h == 12) || (h == 13) || (h == 19)) && (s.mlieu != 10)) || + ((h > 0) && (h < 6) && (s.mlieu != 0))) s.conf = s.conf + 1; + if (((s.mlieu < 16) || (s.mlieu > 19)) && (s.mlieu != 23) + && (s.mlieu != 0) && (s.derobj != 152) && (! perdu)) { + if ((s.conf > 99) && (h > 8) && (h < 16)) { + crep = 1501; + tperd(); + } + if ((s.conf > 99) && (h > 0) && (h < 9)) { + crep = 1508; + tperd(); + } + if ((j > 1) && (h > 8) && (! perdu)) { + crep = 1502; + tperd(); + } + } L2: - mennor(); + mennor(); } -void sv_game(integer n); +void sv_game(integer n); -void ld_game(integer n); +void ld_game(integer n); -void tecran() -{ - const char idem[] = "Idem"; - const integer lim = 20000; - integer temps; - char inkey; - boolean oo, funct; +void tecran() { + const char idem[] = "Idem"; + const integer lim = 20000; + integer temps; + char inkey; + boolean oo, funct; - clsf3(); - oo= false; - ctrm= 0; - if (! iesc) - { - draw_menu(); - imen= true; - temps= 0; - key= 0; - funct= false; - inkey='.'; + clsf3(); + oo = false; + ctrm = 0; + if (! iesc) { + draw_menu(); + imen = true; + temps = 0; + key = 0; + funct = false; + inkey = '.'; - do { - mdn(); - tinke(); - mov_mouse(funct,inkey); - temps= temps+ 1; - } while (!((choisi) || (temps > lim) || (funct) || (anyone))); + do { + mdn(); + tinke(); + mov_mouse(funct, inkey); + temps = temps + 1; + } while (!((choisi) || (temps > lim) || (funct) || (anyone))); - erase_menu(); - imen= false; - if (set::of('\1','\3','\5','\7','\11', eos).has(inkey)) - { - change_gd((cardinal)pred(integer,ord(inkey)) >> 1); - return; - } - if (choisi && (msg[3]==sauve)) sv_game(msg[4] & 7); - if (choisi && (msg[3]==charge)) ld_game(pred(integer,msg[4] & 7)); - if (inkey== '\103') /* F9 */ - { - temps = do_alert(stpou,1); - return; - } - else - if (inkey== '\77') - { - if ((mnumo!= no_choice) && ((msg[3]== action) || (msg[3]== saction))) - { - msg[4]= mnumo; - ecr3(idem); - } - else return; - } - else - if (inkey== '\104') - { - if ((x!= 0) && (y!= 0)) num= 9999; - return; - } - } - if (inkey== '\73') - { - arret= true; - tmaj3(); - } - else - { - if ((funct) && (inkey!= '\77')) return; - if (temps> lim) - { - repon(2,141); - if (num== 9999) num= 0; - } - else - { - mnumo= msg[3]; - if ((msg[3]== action) || (msg[3]== saction)) mnumo= msg[4]; - if (! anyone) - { - if ((fouil) || (obpart)) - { - if (y_s< 12) return; - if ((msg[4]== sonder) || (msg[4]== soulever)) - { - oo= true; - if ((msg[4]== soulever) || (obpart)) - { - finfouil(); - caff= s.mlieu; - crep= 998; - } - else tsuiv(); - mennor(); - } - } - } - do { - if (! oo) tsitu(); - if ((ctrm== 0) && (! perdu) && (! solu)) - { - taffich(); - if (okdes) - { - okdes= false; - dessin(0); - } - if ((! syn) || (col)) repon(2,crep); - } - } while (!(! syn)); - if (ctrm!= 0) tctrm(); - } - } + erase_menu(); + imen = false; + if (set::of('\1', '\3', '\5', '\7', '\11', eos).has(inkey)) { + change_gd((cardinal)pred(integer, ord(inkey)) >> 1); + return; + } + if (choisi && (msg[3] == sauve)) sv_game(msg[4] & 7); + if (choisi && (msg[3] == charge)) ld_game(pred(integer, msg[4] & 7)); + if (inkey == '\103') { /* F9 */ + temps = do_alert(stpou, 1); + return; + } else if (inkey == '\77') { + if ((mnumo != no_choice) && ((msg[3] == action) || (msg[3] == saction))) { + msg[4] = mnumo; + ecr3(idem); + } else return; + } else if (inkey == '\104') { + if ((x != 0) && (y != 0)) num = 9999; + return; + } + } + if (inkey == '\73') { + arret = true; + tmaj3(); + } else { + if ((funct) && (inkey != '\77')) return; + if (temps > lim) { + repon(2, 141); + if (num == 9999) num = 0; + } else { + mnumo = msg[3]; + if ((msg[3] == action) || (msg[3] == saction)) mnumo = msg[4]; + if (! anyone) { + if ((fouil) || (obpart)) { + if (y_s < 12) return; + if ((msg[4] == sonder) || (msg[4] == soulever)) { + oo = true; + if ((msg[4] == soulever) || (obpart)) { + finfouil(); + caff = s.mlieu; + crep = 998; + } else tsuiv(); + mennor(); + } + } + } + do { + if (! oo) tsitu(); + if ((ctrm == 0) && (! perdu) && (! solu)) { + taffich(); + if (okdes) { + okdes = false; + dessin(0); + } + if ((! syn) || (col)) repon(2, crep); + } + } while (!(! syn)); + if (ctrm != 0) tctrm(); + } + } } /* NIVEAU 1 */ -void theure() -{ - vj= ord(s.heure); - vh= vj % 48; - vj= vj / 48; - vm= vh % 2; - vh= vh / 2; - heu= vh; - if (vm== 1) min= 30; else min= 0; +void theure() { + vj = ord(s.heure); + vh = vj % 48; + vj = vj / 48; + vm = vh % 2; + vh = vh / 2; + heu = vh; + if (vm == 1) min = 30; + else min = 0; } -void tjouer() -{ - antegame(); - do { - tecran(); - } while (!((arret) || (solu) || (perdu))); - if (solu) tmaj1(); else - if (perdu) tencore(); +void tjouer() { + antegame(); + do { + tecran(); + } while (!((arret) || (solu) || (perdu))); + if (solu) tmaj1(); + else if (perdu) tencore(); } diff --git a/engines/mortevielle/ques.h b/engines/mortevielle/ques.h index 66584d5d3c..87d0c87cd1 100644 --- a/engines/mortevielle/ques.h +++ b/engines/mortevielle/ques.h @@ -1,121 +1,113 @@ -/* overlay */ boolean ques() -{ - const array<1,10,integer> ta - = {{ 511, 516, 524, 531, 545, - 552, 559, 563, 570, 576}}; - const array<1,10,integer> ok - = {{ 4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }}; +/* overlay */ boolean ques() { + const array<1, 10, integer> ta + = {{ + 511, 516, 524, 531, 545, + 552, 559, 563, 570, 576 + } + }; + const array<1, 10, integer> ok + = {{ 4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }}; - boolean q, func, test; - integer i,j,k,y,memk; - integer tay , tmax; - integer rep, prem, der; - phrase st; - char key; - mult_rect coor; - array<1,14,str40> chaines; - integer compte; + boolean q, func, test; + integer i, j, k, y, memk; + integer tay , tmax; + integer rep, prem, der; + phrase st; + char key; + mult_rect coor; + array<1, 14, str40> chaines; + integer compte; - boolean ques_result; - test=false; - i=0; - compte= 0; + boolean ques_result; + test = false; + i = 0; + compte = 0; - do { - hide_mouse(); - hirs(); - show_mouse(); - i= i+1; - deline(ta[i],st,tay); - if (res==1) y=29; else y=23; - box(15,gd,0,14,630,y,255); - afftex(st,20,15,100,2,0); - if (i!=10) - { - prem= ta[i]+1; - der= ta[i+1]-1; - } - else - { - prem= 503; - der= 510; - } - y=35; - tmax= 0; - memk= 1; - for( j= prem; j <= der; j ++) - { - deline(j,st,tay); - if (tay>tmax) tmax= tay; - afftex(st,100,y,100,1,0); - chaines[memk]= delig; - memk= memk+1; - y= y+8; - } - for( j= 1; j <= succ(integer,der-prem); j ++) - { - { - rectangle& with = coor[j]; + do { + hide_mouse(); + hirs(); + show_mouse(); + i = i + 1; + deline(ta[i], st, tay); + if (res == 1) y = 29; + else y = 23; + box(15, gd, 0, 14, 630, y, 255); + afftex(st, 20, 15, 100, 2, 0); + if (i != 10) { + prem = ta[i] + 1; + der = ta[i + 1] - 1; + } else { + prem = 503; + der = 510; + } + y = 35; + tmax = 0; + memk = 1; + for (j = prem; j <= der; j ++) { + deline(j, st, tay); + if (tay > tmax) tmax = tay; + afftex(st, 100, y, 100, 1, 0); + chaines[memk] = delig; + memk = memk + 1; + y = y + 8; + } + for (j = 1; j <= succ(integer, der - prem); j ++) { + { + rectangle &with = coor[j]; - with.x1= 45*res; - with.x2= (tmax*3 + 55)*res; - with.y1= 27 + j*8; - with.y2= 34 + j*8; - with.etat= true; - } - while (length(chaines[j] )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+*/ - } + /* 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; +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+*/ - } + /* 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; +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); + 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; - } + 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 diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index c1881be6fe..bdc6b59eb7 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -111,58 +111,65 @@ const integer slire = 0x403; const integer sposer = 0x404; const integer sregarder = 0x405; - const array<0,17,byte> tabdbc - = {{7, 23, 7, 14, 13, 9, 14, 9, 5, 12, 6, 12, 13, 4, 0, 4, 5, 9}}; - const array<0,15,byte> tabdph - = {{0, 10, 2, 0, 2, 10, 3, 0, 3, 7, 5, 0, 6, 7, 7, 10}}; - const array<0,25,byte> typcon - = {{0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3}}; - const array<0,25,byte> intcon - = {{1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}}; - const array<0,363,byte> tnocon - = {{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,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,1,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,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0}}; - - -const matrix<1,8,1,4,byte> don - = {{{{ 7, 37, 22, 8}}, - {{19, 33, 23, 7}}, - {{31, 89, 10, 21}}, - {{43, 25, 11, 5}}, - {{55, 37, 5, 8}}, - {{64, 13, 11, 2}}, - {{62, 22, 13, 4}}, - {{62, 25, 13, 5}}}}; - -const array<1,2,varying_string<11> > fic - = {{ " Sauvegarde", - " Chargement" }}; - -const array<0,1,byte> addv - = {{8,8}}; +const array<0, 17, byte> tabdbc += {{7, 23, 7, 14, 13, 9, 14, 9, 5, 12, 6, 12, 13, 4, 0, 4, 5, 9}}; +const array<0, 15, byte> tabdph += {{0, 10, 2, 0, 2, 10, 3, 0, 3, 7, 5, 0, 6, 7, 7, 10}}; +const array<0, 25, byte> typcon += {{0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3}}; +const array<0, 25, byte> intcon += {{1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}}; +const array<0, 363, byte> tnocon += {{ + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + } +}; + + +const matrix<1, 8, 1, 4, byte> don += {{{{ 7, 37, 22, 8}}, + {{19, 33, 23, 7}}, + {{31, 89, 10, 21}}, + {{43, 25, 11, 5}}, + {{55, 37, 5, 8}}, + {{64, 13, 11, 2}}, + {{62, 22, 13, 4}}, + {{62, 25, 13, 5}} + } +}; + +const array<1, 2, varying_string<11> > fic += {{ " Sauvegarde", + " Chargement" + } +}; + +const array<0, 1, byte> addv += {{8, 8}}; const char recom[] = " Recommence "; - const char f3[] = "F3: Encore"; - const char f8[] = "F8: Suite"; +const char f3[] = "F3: Encore"; +const char f8[] = "F8: Suite"; - const integer max_patt = 20; +const integer max_patt = 20; - const array<0,15,byte> rang - = {{15,14,11,7,13,12,10,6,9,5,3,1,2,4,8,0}}; +const array<0, 15, byte> rang += {{15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}}; /*---------------------------------------------------------------------------*/ @@ -177,72 +184,72 @@ typedef varying_string<30> str30; typedef varying_string<11> str11; typedef file fichier_byte; struct sav_chaine { - integer conf; - array<0,10,char> pourc; - array<0,42,char> teauto; - array<0,30,char> sjer; - integer mlieu,iboul,ibag,icave,ivier,ipuit; - integer derobj,iloic,icryp; - boolean ipre; - char heure; + integer conf; + array<0, 10, char> pourc; + array<0, 42, char> teauto; + array<0, 30, char> sjer; + integer mlieu, iboul, ibag, icave, ivier, ipuit; + integer derobj, iloic, icryp; + boolean ipre; + char heure; }; struct registres { - integer ax,bx,cx,dx,bp,si,di,ds,es,flags; + integer ax, bx, cx, dx, bp, si, di, ds, es, flags; +}; +typedef array<1, 1410, char> phrase; +typedef array<0, maxti, integer> tabint; +struct ind { + integer indis; + byte point; }; -typedef array<1,1410,char> phrase; -typedef array<0,maxti,integer> tabint; - struct ind { - integer indis; - byte point; - }; -typedef array<0,maxtd,ind> tabind; +typedef array<0, maxtd, ind> tabind; -typedef matrix<1,7,0,24,byte> tab_mlieu; +typedef matrix<1, 7, 0, 24, byte> tab_mlieu; - typedef array<0,255,real> table; -typedef array<0,255,integer> tablint; +typedef array<0, 255, real> table; +typedef array<0, 255, integer> tablint; - typedef integer word1; +typedef integer word1; struct chariot { - integer val, - code, - acc, - freq, - rep; + integer val, + code, + acc, + freq, + rep; }; struct doublet { - byte x,y; + byte x, y; }; -typedef array<1,16,doublet> tabdb; -typedef array<0,107,integer> tfxx; +typedef array<1, 16, doublet> tabdb; +typedef array<0, 107, integer> tfxx; struct rectangle { - integer x1, x2, y1, y2; - boolean etat; + integer x1, x2, y1, y2; + boolean etat; }; -typedef array<1,max_rect,rectangle> mult_rect; +typedef array<1, max_rect, rectangle> mult_rect; typedef varying_string<40> str40; - struct pattern { - byte tay, tax; - matrix<1,max_patt, 1,max_patt,byte> des; - }; +struct pattern { + byte tay, tax; + matrix<1, max_patt, 1, max_patt, byte> des; +}; - struct nhom { - byte n; /* numero entre 0 et 32 */ - array<0,3,byte> hom; - }; +struct nhom { + byte n; /* numero entre 0 et 32 */ + array<0, 3, byte> hom; +}; - typedef array<0,15,nhom> t_nhom; +typedef array<0, 15, nhom> t_nhom; - struct t_pcga { - byte p; - t_nhom a; - }; +struct t_pcga { + byte p; + t_nhom a; +}; - typedef array<0,90,t_pcga> pal_cga; +typedef array<0, 90, t_pcga> pal_cga; /*---------------------------------------------------------------------------*/ @@ -250,147 +257,147 @@ typedef varying_string<40> str40; /*---------------------------------------------------------------------------*/ boolean blo, -bh1, -bf1, -bh2, -bh4, -bf4, -bh5, -bh6, -bh8, -bt3, -bt7, -bh9, - -sonoff, -main1, -choisi, -test0, -f2_all, -imen, -cache, -iesc, -perdu, -col, -syn, -fouil, -zuul, -tesok, -obpart, -okdes, -solu, -arret, -anyone, -brt, -rect, -rech_cfiec, -active_menu; + bh1, + bf1, + bh2, + bh4, + bf4, + bh5, + bh6, + bh8, + bt3, + bt7, + bh9, + + sonoff, + main1, + choisi, + test0, + f2_all, + imen, + cache, + iesc, + perdu, + col, + syn, + fouil, + zuul, + tesok, + obpart, + okdes, + solu, + arret, + anyone, + brt, + rect, + rech_cfiec, + active_menu; integer x, -y, -t, -vj, -li, -vh, -vm, -jh, -mh, -cs, -gd, /* Gd = graph device */ -hdb, -hfb, -heu, -jou, -key, -min, -num, -max, -res, -ment, -haut, -caff, -maff, -crep, -ades, -iouv, -inei, -ctrm, -dobj, -msg3, -msg4, -mlec, -newgd, -c_zzz, -mchai, -menup, -ipers, -ledeb, -lefin, -mpers, -mnumo, -xprec, -yprec, -perdep, -prebru, -typlec, -num_ph, -xwhere, -ywhere, -numpal, -lderobj, -nb_word, -ptr_oct, -k_tempo, -ptr_tcph, -ptr_word, -color_txt; - -array<0,6400,integer> t_cph; -array<0,4000,byte> tabdon; + y, + t, + vj, + li, + vh, + vm, + jh, + mh, + cs, + gd, /* Gd = graph device */ + hdb, + hfb, + heu, + jou, + key, + min, + num, + max, + res, + ment, + haut, + caff, + maff, + crep, + ades, + iouv, + inei, + ctrm, + dobj, + msg3, + msg4, + mlec, + newgd, + c_zzz, + mchai, + menup, + ipers, + ledeb, + lefin, + mpers, + mnumo, + xprec, + yprec, + perdep, + prebru, + typlec, + num_ph, + xwhere, + ywhere, + numpal, + lderobj, + nb_word, + ptr_oct, + k_tempo, + ptr_tcph, + ptr_word, + color_txt; + +array<0, 6400, integer> t_cph; +array<0, 4000, byte> tabdon; /* t_dxx : array[0..121] of integer;*/ str125 stpou; /* donne le % d'indices */ byte is; char mode; fichier_byte ficdes; str125 al_mess, -err_mess, -ind_mess, -al_mess2; - - array<1,8,integer> invt, -nbrep, -nbrepm, - disc; - array<0,4,integer> msg; - array<1,7,integer> depl; - array<1,8,varying_string<22> > inv; - array<1,7,varying_string<23> > dep; - array<1,21,varying_string<10> > act; - array<1,5,varying_string<11> > self_; - array<1,8,varying_string<5> > dis; - array<1,7,char> touv; - sav_chaine s,s1; -array<0,390,byte> bufcha; - -matrix<1,6,0,23,byte> lettres; - -array<0,15,byte> palher; - - tabint t_mot; + err_mess, + ind_mess, + al_mess2; + +array<1, 8, integer> invt, + nbrep, + nbrepm, + disc; +array<0, 4, integer> msg; +array<1, 7, integer> depl; +array<1, 8, varying_string<22> > inv; +array<1, 7, varying_string<23> > dep; +array<1, 21, varying_string<10> > act; +array<1, 5, varying_string<11> > self_; +array<1, 8, varying_string<5> > dis; +array<1, 7, char> touv; +sav_chaine s, s1; +array<0, 390, byte> bufcha; + +matrix<1, 6, 0, 23, byte> lettres; + +array<0, 15, byte> palher; + +tabint t_mot; integer tay_tchar; - tabind t_rec; - file sauv_t; - untyped_file fibyte; - tab_mlieu v_lieu; - tfxx l; - tablint tbi; +tabind t_rec; +file sauv_t; +untyped_file fibyte; +tab_mlieu v_lieu; +tfxx l; +tablint tbi; chariot c1, c2, c3; - real addfix; - pal_cga palsav; - array<0,90,tabdb> tabpal; - pal_cga palcga; - array<0,14,pattern> tpt; +real addfix; +pal_cga palsav; +array<0, 90, tabdb> tabpal; +pal_cga palcga; +array<0, 14, pattern> tpt; @@ -400,86 +407,76 @@ chariot c1, c2, c3; /* procedure box(c,Gd,xo,yo,xi,yi,patt:integer); external 'c:\mc\boite.com'; */ -void hirs() -{ - const array<0,13,byte> tandy - = {{113,80,90,14,63,6,50,56,2,3,6,7,0,0}}; - const array<0,12,byte> herc - = {{50,40,41,9,103,3,100,100,2,3,0,0,0}}; - integer i, j; - - switch (gd) { - case cga : - { - graphcolormode; - graphbackground(0); - palette(1); - res=1; - } - break; - case ams : - { - hires; - inline_((real)(0xb8)/6/0/ /* => mov ax,6 */ - 0xcd/0x10); /* => int 16 */ - port[0x3d9]=15; - port[0x3df]=0; - port[0x3dd]=15; - res=2; - } - break; - case ega : - { - inline_((real)(0xb8) / 14 / 0 / /* MOV AX, 14 ; mode video 14 = 640*200 16 couleurs */ - 0xcd / 0x10); /* INT 16 */ - res=2; - } - break; - case her : - { - port[0x3bf]=3; - port[0x3b8]=2; - for( i=0; i <= 12; i ++) - { - port[0x3b4]=i; - port[0x3b5]=herc[i]; - } - inline_((real)(0xfc)/0xb9/0/0x80/0xb8/0/0xb0/0x8e/0xc0/0x31/0xff/0x31/0xc0/0xf3/0xab); - port[0x3b8]=10; - res=2; - } - break; - case tan : - { - port[0x3d8]=0; - port[0x3da]=3; - port[0x3de]=0x14; - for( i=0; i <= 13; i ++) - { - port[0x3d4]=i; - port[0x3d5]=tandy[i]; - } - port[0x3da]=2; - port[0x3de]=0; - port[0x3d8]=port[0x3d8] | (11 & 0xef); - port[0x3dd]=port[0x3dd] | 1; - port[0x3df]=port[0x3df] | 0xc0; - box(0,gd,0,0,640,200,255); - res=1; - } - break; - } +void hirs() { + const array<0, 13, byte> tandy + = {{113, 80, 90, 14, 63, 6, 50, 56, 2, 3, 6, 7, 0, 0}}; + const array<0, 12, byte> herc + = {{50, 40, 41, 9, 103, 3, 100, 100, 2, 3, 0, 0, 0}}; + integer i, j; + + switch (gd) { + case cga : { + graphcolormode; + graphbackground(0); + palette(1); + res = 1; + } + break; + case ams : { + hires; + inline_((real)(0xb8) / 6 / 0 / /* => mov ax,6 */ + 0xcd / 0x10); /* => int 16 */ + port[0x3d9] = 15; + port[0x3df] = 0; + port[0x3dd] = 15; + res = 2; + } + break; + case ega : { + inline_((real)(0xb8) / 14 / 0 / /* MOV AX, 14 ; mode video 14 = 640*200 16 couleurs */ + 0xcd / 0x10); /* INT 16 */ + res = 2; + } + break; + case her : { + port[0x3bf] = 3; + port[0x3b8] = 2; + for (i = 0; i <= 12; i ++) { + port[0x3b4] = i; + port[0x3b5] = herc[i]; + } + inline_((real)(0xfc) / 0xb9 / 0 / 0x80 / 0xb8 / 0 / 0xb0 / 0x8e / 0xc0 / 0x31 / 0xff / 0x31 / 0xc0 / 0xf3 / 0xab); + port[0x3b8] = 10; + res = 2; + } + break; + case tan : { + port[0x3d8] = 0; + port[0x3da] = 3; + port[0x3de] = 0x14; + for (i = 0; i <= 13; i ++) { + port[0x3d4] = i; + port[0x3d5] = tandy[i]; + } + port[0x3da] = 2; + port[0x3de] = 0; + port[0x3d8] = port[0x3d8] | (11 & 0xef); + port[0x3dd] = port[0x3dd] | 1; + port[0x3df] = port[0x3df] | 0xc0; + box(0, gd, 0, 0, 640, 200, 255); + res = 1; + } + break; + } } /* procedure affput(Chx,Gd,x,y,coul,char:integer); external 'c:\mc\divaf.com'; */ -void affcar(integer gd,integer x,integer y,integer coul,integer char) -{ - if (res==1) affput(1,gd,((cardinal)x >> 1),y,coul,char); - else affput(1,gd,x,y,coul,char); +void affcar(integer gd, integer x, integer y, integer coul, integer char) { + if (res == 1) affput(1, gd, ((cardinal)x >> 1), y, coul, char); + else affput(1, gd, x, y, coul, char); } -void putpix(integer gd,integer x,integer y,integer coul) -{ - affput(0,gd,x,y,coul,0); +void putpix(integer gd, integer x, integer y, integer coul) { + affput(0, gd, x, y, coul, 0); } -- cgit v1.2.3 From e6a0c23d2c57461305906cb4c62b2b6962915264 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 26 Dec 2011 17:32:59 +0000 Subject: MORTEVIELLE: Rename *.h -> *.cpp where they really belong --- engines/mortevielle/actions.cpp | 1193 ++++++++++++++++++++++++++++++++++ engines/mortevielle/actions.h | 1193 ---------------------------------- engines/mortevielle/alert.cpp | 197 ++++++ engines/mortevielle/alert.h | 197 ------ engines/mortevielle/boite.cpp | 29 + engines/mortevielle/boite.h | 29 - engines/mortevielle/disk.cpp | 74 +++ engines/mortevielle/disk.h | 74 --- engines/mortevielle/droite.cpp | 34 + engines/mortevielle/droite.h | 34 - engines/mortevielle/keyboard.cpp | 60 ++ engines/mortevielle/keyboard.h | 60 -- engines/mortevielle/level15.cpp | 175 +++++ engines/mortevielle/level15.h | 175 ----- engines/mortevielle/menu.cpp | 334 ++++++++++ engines/mortevielle/menu.h | 334 ---------- engines/mortevielle/mor.cpp | 1311 ++++++++++++++++++++++++++++++++++++++ engines/mortevielle/mor.h | 1311 -------------------------------------- engines/mortevielle/mor2.cpp | 728 +++++++++++++++++++++ engines/mortevielle/mor2.h | 728 --------------------- engines/mortevielle/mouse.cpp | 459 +++++++++++++ engines/mortevielle/mouse.h | 459 ------------- engines/mortevielle/outtext.cpp | 206 ++++++ engines/mortevielle/outtext.h | 206 ------ engines/mortevielle/ovd1.cpp | 337 ++++++++++ engines/mortevielle/ovd1.h | 337 ---------- engines/mortevielle/parole.cpp | 424 ++++++++++++ engines/mortevielle/parole.h | 424 ------------ engines/mortevielle/parole2.cpp | 95 +++ engines/mortevielle/parole2.h | 95 --- engines/mortevielle/prog.cpp | 319 ++++++++++ engines/mortevielle/prog.h | 319 ---------- engines/mortevielle/ques.cpp | 113 ++++ engines/mortevielle/ques.h | 113 ---- engines/mortevielle/sprint.cpp | 54 ++ engines/mortevielle/sprint.h | 54 -- engines/mortevielle/taffich.cpp | 196 ++++++ engines/mortevielle/taffich.h | 196 ------ engines/mortevielle/var_mor.cpp | 482 ++++++++++++++ engines/mortevielle/var_mor.h | 482 -------------- 40 files changed, 6820 insertions(+), 6820 deletions(-) create mode 100644 engines/mortevielle/actions.cpp delete mode 100644 engines/mortevielle/actions.h create mode 100644 engines/mortevielle/alert.cpp delete mode 100644 engines/mortevielle/alert.h create mode 100644 engines/mortevielle/boite.cpp delete mode 100644 engines/mortevielle/boite.h create mode 100644 engines/mortevielle/disk.cpp delete mode 100644 engines/mortevielle/disk.h create mode 100644 engines/mortevielle/droite.cpp delete mode 100644 engines/mortevielle/droite.h create mode 100644 engines/mortevielle/keyboard.cpp delete mode 100644 engines/mortevielle/keyboard.h create mode 100644 engines/mortevielle/level15.cpp delete mode 100644 engines/mortevielle/level15.h create mode 100644 engines/mortevielle/menu.cpp delete mode 100644 engines/mortevielle/menu.h create mode 100644 engines/mortevielle/mor.cpp delete mode 100644 engines/mortevielle/mor.h create mode 100644 engines/mortevielle/mor2.cpp delete mode 100644 engines/mortevielle/mor2.h create mode 100644 engines/mortevielle/mouse.cpp delete mode 100644 engines/mortevielle/mouse.h create mode 100644 engines/mortevielle/outtext.cpp delete mode 100644 engines/mortevielle/outtext.h create mode 100644 engines/mortevielle/ovd1.cpp delete mode 100644 engines/mortevielle/ovd1.h create mode 100644 engines/mortevielle/parole.cpp delete mode 100644 engines/mortevielle/parole.h create mode 100644 engines/mortevielle/parole2.cpp delete mode 100644 engines/mortevielle/parole2.h create mode 100644 engines/mortevielle/prog.cpp delete mode 100644 engines/mortevielle/prog.h create mode 100644 engines/mortevielle/ques.cpp delete mode 100644 engines/mortevielle/ques.h create mode 100644 engines/mortevielle/sprint.cpp delete mode 100644 engines/mortevielle/sprint.h create mode 100644 engines/mortevielle/taffich.cpp delete mode 100644 engines/mortevielle/taffich.h create mode 100644 engines/mortevielle/var_mor.cpp delete mode 100644 engines/mortevielle/var_mor.h diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp new file mode 100644 index 0000000000..1dd3abe08f --- /dev/null +++ b/engines/mortevielle/actions.cpp @@ -0,0 +1,1193 @@ +/* NIVEAU 4 */ +const char stouinon[] = "[2][ ][OUI][NON]"; + +/* overlay */ +void taller() + +{ + integer mx, cx, cy; + + if ((s.mlieu == 26) && (msg[4] == depl[6])) { + s.mlieu = 15; + caff = s.mlieu; + afdes(0); + repon(2, s.mlieu); + } + if ((s.mlieu == 15) && (msg[4] == depl[6])) { + if (! syn) ecr3("aller"); + tfleche(); + if (iesc) okdes = false; + if ((anyone) || (iesc)) return; + tcoord(1); + if (num == 0) return; + if (num == 1) { + s.mlieu = 0; + tmlieu(0); + } else if (num == 7) { + s.mlieu = 13; + tmlieu(13); + } else if (num != 6) s.mlieu = 26; + if ((num > 1) && (num < 6)) ment = num - 1; + if (num > 7) ment = num - 3; + if (num != 6) affrep(); + else aldepl(); + return; + } + tsort(); + cx = 0; + do { + cx = cx + 1; + } while (!(depl[cx] == msg[4])); + if (s.mlieu == 19) { + if (cx == 1) t1deva(); + if (cx == 2) t1neig(); + goto L2; + } + if (s.mlieu == 23) { + if (cx == 1) t1deau(); + if (cx == 2) t1derr(); + goto L2; + } + if ((s.mlieu == 11) && (cx == 1)) cx = 6; + if (s.mlieu == 12) { + if (cx == 2) cx = 6; + if (cx == 5) cx = 16; + } + if ((s.mlieu == 14) && (cx == 3)) cx = 6; + if (((s.mlieu == 15) || (s.mlieu == 26)) && (cx == 4)) cx = 6; + if ((s.mlieu > 19) && (s.mlieu != 26)) cx = cx + 10; + if ((s.mlieu == 20) && (cx == 13)) cx = 16; + if (s.mlieu == 21) { + if (cx == 12) cx = 16; + else if (cx > 13) cx = 15; + } + if ((s.mlieu == 22) && (cx > 14)) cx = 15; + if ((s.mlieu == 24) && (cx != 17)) + if (cx > 13) cx = 15; + if (cx == 1) s.mlieu = 11; + else if (cx == 2) s.mlieu = 12; + else if (cx == 3) s.mlieu = 14; + else if (cx == 4) s.mlieu = 15; + else if (cx == 5) cx = 12; + if (cx == 6) cx = 11; + if (cx == 11) t1sama(); + else if (cx == 12) t1deva(); + else if (cx == 13) s.mlieu = 20; + else if (cx == 14) s.mlieu = 24; + else if (cx == 15) t1neig(); + else if (cx == 16) t1derr(); + else if (cx == 17) { + if ((s.ipuit != 120) && (s.ipuit != 140)) crep = 997; + else if (s.ipuit == 120) crep = 181; + else if (s.conf > 80) { + crep = 1505; + tperd(); + } else { + s.mlieu = 23; + affrep(); + } + } + if ((cx < 5) || (cx == 13) || (cx == 14)) affrep(); + debloc(s.mlieu); +L2: + tmlieu(s.mlieu); +} + +/* overlay */ void tprendre() { + integer cx, cy, cz; + + if (caff > 99) { + cx = caff; + avpoing(cx); + if (crep != 139) { + if (ipers > 0) s.conf = s.conf + 3; + if (obpart) { + if (s.mlieu == 2) s.iloic = 0; + if (s.mlieu == 13) { + if (s.iboul == caff) s.iboul = 0; + if (s.ibag == caff) s.ibag = 0; + } + if (s.mlieu == 14) s.icave = 0; + if (s.mlieu == 16) s.icryp = 0; + if (s.mlieu == 17) s.ivier = 0; + if (s.mlieu == 24) s.ipuit = 0; + mfouen(); + obpart = false; + affrep(); + } else { + tabdon[acha + (pred(integer, mchai) * 10) + pred(integer, cs)] = 0; + tsuiv(); + dobj = dobj + 1; + if (dobj > 6) { + s.conf = s.conf + 2; + dobj = 0; + } + } + } + return; + } + if (! syn) ecr3("prendre"); + tfleche(); + if ((anyone) || (iesc)) return; + if (caff == 3) { + tcoord(2); + if (num == 1) { + crep = 152; + return; + } + } + tcoord(5); + if ((num == 0) || ((num == 1) && (s.mlieu == 16))) { + tcoord(8); + if (num != 0) { + if (ipers > 0) s.conf = s.conf + 3; + crep = 997; + if ((s.mlieu == 2) && (s.iloic != 0)) avpoing(s.iloic); + if ((s.mlieu == 13) && (num == 1) && (s.iboul != 0)) { + avpoing(s.iboul); + if ((crep != 997) && (crep != 139)) aniof(2, 7); + } + if ((s.mlieu == 13) && (num == 2) && (s.ibag != 0)) { + avpoing(s.ibag); + if ((crep != 997) && (crep != 139)) aniof(2, 6); + } + if ((s.mlieu == 14) && (s.icave != 0)) { + avpoing(s.icave); + if ((crep != 997) && (crep != 139)) aniof(2, 2); + } + if ((s.mlieu == 16) && (s.icryp != 0)) avpoing(s.icryp); + if ((s.mlieu == 17) && (s.ivier != 0)) { + avpoing(s.ivier); + if ((crep != 997) && (crep != 139)) { + crep = 182; + aniof(2, 1); + } + } + if ((s.mlieu == 24) && (s.ipuit != 0)) { + avpoing(s.ipuit); + if ((crep != 997) && (crep != 139)) aniof(2, 1); + } + if ((crep != 997) && (crep != 182) && (crep != 139)) crep = 999; + } + } else { + if (((s.mlieu == 0) && (num == 3)) || ((s.mlieu == 1) && (num == 4)) + || ((s.mlieu == 2) && (num == 1)) || ((s.mlieu == 4) && (num == 3)) + || ((s.mlieu == 5) && (num == 6)) || ((s.mlieu == 6) && (num == 2)) + || ((s.mlieu == 7) && (num == 6)) || ((s.mlieu == 8) && (num == 4)) + || ((s.mlieu == 9) && (num == 4)) || ((s.mlieu == 10) && (num > 2)) + || ((s.mlieu == 11) && (num == 7)) || ((s.mlieu == 12) && (num == 6)) + || ((s.mlieu == 13) && (num > 4)) || ((s.mlieu > 13) + && (s.mlieu != 23))) crep = 997; + else { + if (s.mlieu == 23) { + crep = 1504; + tperd(); + } else crep = 120; + } + } +} + +/* overlay */ void tsprendre() { + integer cx, cy, cz; + + cx = 0; + do { + cx = cx + 1; + } while (!(invt[cx] == msg[4])); + cz = 0; + cy = 0; + do { + cy = cy + 1; + if (ord(s.sjer[cy]) != 0) cz = cz + 1; + } while (!(cz == cx)); + cz = ord(s.sjer[cy]); + s.sjer[cy] = chr(0); + modinv(); + avpoing(cz); + crep = 998; + clsf2(); +} + +/* overlay */ void tsoulever() + +{ + integer cx; + + if (! syn) ecr3("soulever"); + tfleche(); + if ((anyone) || (iesc)) return; + tcoord(3); + if (num == 0) { + tcoord(8); + if (num != 0) { + if (ipers > 0) s.conf = s.conf + 1; + crep = 997; + if ((s.mlieu == 2) && (s.iloic != 0)) treg(s.iloic); + } + return; + } + if (ipers > 0) s.conf = s.conf + 1; + cx = s.mlieu; + if (s.mlieu == 16) cx = 14; + if (s.mlieu == 19) cx = 15; + crep = tabdon[asoul + (cx << 3) + pred(integer, num)]; + if (crep == 255) crep = 997; +} + +/* overlay */ void tlire() { + integer iaff; + + if (caff > 99) st4(caff); + else { + if (! syn) ecr3("lire"); + tfleche(); + if (!(anyone) && !(iesc)) { + tcoord(4); + if (num != 0) crep = 107; + } + } +} + +/* overlay */ void tslire() { + if (s.derobj == 0) crep = 186; + else st4(s.derobj); +} + +/* overlay */ void tregarder() { + integer cx; + + if (caff > 99) { + crep = 103; + return; + } + if (! syn) ecr3("regarder"); + tfleche(); + if ((anyone) || (iesc)) return; + tcoord(5); + if (num == 0) { + tcoord(8); + crep = 131; + if (num != 0) { + if (s.mlieu == 13) { + if (num == 1) { + crep = 164; + if (s.ibag != 0) treg(s.ibag); + else if (s.iboul != 0) treg(s.iboul); + } else { + crep = 193; + if (s.ibag != 0) treg(s.ibag); + } + } + if (s.mlieu == 14) { + crep = 164; + if (s.icave != 0) treg(s.icave); + } + if (s.mlieu == 17) { + crep = 174; + if (s.ivier != 0) treg(s.ivier); + } + if (s.mlieu == 24) { + crep = 131; + if (s.ipuit != 0) treg(s.ipuit); + } + } + return; + } + cx = s.mlieu; + if (s.mlieu == 20) cx = 17; + if ((s.mlieu > 21) && (s.mlieu < 25)) cx = cx - 4; + if (s.mlieu == 26) cx = 21; + crep = tabdon[arega + (cx * 7) + pred(integer, num)]; + if ((s.mlieu == 13) && (num == 8)) crep = 126; + if (s.mlieu == 19) crep = 103; + if (crep == 255) crep = 131; + if ((s.mlieu == 1) && (num == 1)) treg(144); + if ((s.mlieu == 5) && (num == 3)) treg(147); + if ((s.mlieu == 8) && (num == 3)) treg(149); + if ((s.mlieu == 9) && (num == 2)) treg(30); + if ((s.mlieu == 10) && (num == 3)) treg(31); +} + +/* overlay */ void tsregarder() { + if (s.derobj != 0) treg(s.derobj); + else crep = 186; +} + +/* overlay */ void tfouiller() { + const array<0, 13, byte> r = {{123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}}; + integer cx; + + if (caff > 99) { + st7(caff); + return; + } + if (! syn) ecr3("fouiller"); + tfleche(); + if (anyone || iesc) return; + if (s.mlieu == 23) { + crep = 1504; + tperd(); + return; + } + tcoord(6); + if (num == 0) { + tcoord(7); + if (num != 0) { + cx = 0; + do { + cx = cx + 1; + } while (!((cx > 6) || (num == ord(touv[cx])))); + if (num != ord(touv[cx])) crep = 187; + else { + if (ipers > 0) s.conf = s.conf + 3; + rechai(mchai); + if (mchai != 0) { + cs = 0; + is = 0; + fouil = true; + mfoudi(); + tsuiv(); + } else crep = 997; + } + } else { + tcoord(8); + crep = 997; + if (num != 0) { + if (ipers > 0) s.conf = s.conf + 3; + if ((s.mlieu != 24) && (s.mlieu != 17) && (s.mlieu != 13)) { + if (s.mlieu == 2) { + crep = 123; + if (s.iloic != 0) treg(s.iloic); + } + if (s.mlieu == 16) { + crep = 123; + if (s.icryp != 0) treg(s.icryp); + } + } + } + } + } else { + if (ipers > 0) s.conf = s.conf + 3; + crep = 997; + if (s.mlieu < 14) crep = r[s.mlieu]; + if ((s.mlieu == 3) && (num == 2)) crep = 162; + if (s.mlieu == 12) { + if ((num == 3) || (num == 4)) crep = 162; + if (num == 5) crep = 159; + } + if (s.mlieu == 19) crep = 104; + if (s.mlieu == 16) crep = 155; + } +} + +/* overlay */ void tsfouiller() { + if (s.derobj != 0) st7(s.derobj); + else crep = 186; +} + +/* overlay */ void touvrir() { + integer cx, haz; + + if (! syn) ecr3("ouvrir"); + if (caff == 26) { + if (ment != 0) { + msg[4] = entrer; + syn = true; + } else crep = 997; + return; + } + if (caff == 15) { + aldepl(); + return; + } + tfleche(); + if ((anyone) || (iesc)) return; + tcoord(7); + if (num != 0) { + if (ipers > 0) s.conf = s.conf + 2; + iouv = iouv + 1; + cx = 0; + do { + cx = cx + 1; + } while (!((cx > 6) || (ord(touv[cx]) == 0) || (ord(touv[cx]) == num))); + if (ord(touv[cx]) != num) { + if (! + ( + ((num == 3) && ((s.mlieu == 0) || (s.mlieu == 9) || (s.mlieu == 5) || (s.mlieu == 7))) + || + ((num == 4) && ((s.mlieu == 1) || (s.mlieu == 2) || (s.mlieu == 6))) || + ((s.mlieu == 4) && (num == 5)) || + ((num == 6) && ((s.mlieu == 7) || (s.mlieu == 10) || + (s.mlieu == 8) || (s.mlieu == 13))) || + ((s.mlieu == 8) && (num == 2)) || + ((s.mlieu == 12) && (num == 7)))) { + if (((s.mlieu > 10) && (s.mlieu < 14)) || + ((s.mlieu > 6) && (s.mlieu < 10)) || + (s.mlieu == 0) || (s.mlieu == 2) || (s.mlieu == 5)) { + haz = hazard(1, 4); + if (haz == 3) parole(7, 9, 1); + } + touv[cx] = chr(num); + aniof(1, num); + } + cx = s.mlieu; + if (s.mlieu == 16) cx = 14; + crep = tabdon[aouvr + (cx * 7) + pred(integer, num)]; + if (crep == 254) crep = 999; + } else crep = 18; + } +} + +/* overlay */ void tmettre() { + integer quel; + boolean entre; + phrase st; + str255 str_; + integer i, tay; + + if (s.derobj == 0) { + crep = 186; + return; + } + if (! syn) ecr3("mettre"); + tfleche(); + if (iesc) crep = 998; + if ((anyone) || (iesc)) return; + tcoord(8); + if (num != 0) { + crep = 999; + if (caff == 13) { + if (num == 1) { + if (s.iboul != 0) crep = 188; + else { + s.iboul = s.derobj; + if (s.derobj == 141) aniof(1, 7); + } + } else if (s.ibag != 0) crep = 188; + else { + s.ibag = s.derobj; + if (s.derobj == 159) aniof(1, 6); + } + } + if (caff == 14) + if (s.icave != 0) crep = 188; + else { + s.icave = s.derobj; + if (s.derobj == 151) { + aniof(1, 2); + aniof(1, 1); + repon(2, 165); + maivid(); + parole(6, -9, 1); + quel = do_alert(stouinon, 1); + if (quel == 1) { + deline(582, st, tay); + i = do_alert(delig, 1); + tesok = false; + entre = ques(); + hide_mouse(); + hirs(); + dessine_rouleau(); + clsf2(); + clsf3(); + show_mouse(); + tinke(); + pendule(); + if (ipers != 0) affper(ipers); + else person(); + menu_aff(); + if (entre) { + s.mlieu = 17; + tmlieu(17); + } else { + tmlieu(s.mlieu); + writepal(14); + dessin(0); + aniof(1, 2); + aniof(1, 1); + deline(577, st, tay); + i = do_alert(delig, 1); + aniof(2, 1); + crep = 166; + } + affrep(); + } else { + aniof(2, 1); + crep = 166; + tesok = true; + } + return; + } + } + if (caff == 16) + if (s.icryp == 0) s.icryp = s.derobj; + else crep = 188; + if (caff == 17) + if (s.ivier != 0) crep = 188; + else if (s.derobj == 143) { + s.ivier = 143; + aniof(1, 1); + } else { + crep = 1512; + tperd(); + } + if (caff == 24) + if (s.ipuit != 0) crep = 188; + else if ((s.derobj == 140) || (s.derobj == 120)) { + s.ipuit = s.derobj; + aniof(1, 1); + } else crep = 185; + if (crep != 188) maivid(); + } +} + +/* overlay */ void ttourner() { + integer quel; + + if (caff > 99) { + crep = 149; + return; + } + if (! syn) ecr3("tourner"); + tfleche(); + if ((anyone) || (iesc)) return; + tcoord(9); + if (num != 0) { + crep = 997; + if ((s.mlieu == 13) && (s.ibag == 159) && (s.iboul == 141)) { + repon(2, 167); + parole(7, 9, 1); + quel = do_alert(stouinon, 1); + if (quel == 1) solu = true; + else crep = 168; + } + if ((s.mlieu == 17) && (s.ivier == 143)) { + repon(2, 175); + clsf3(); + parole(6, -9, 1); + quel = do_alert(stouinon, 1); + if (quel == 1) { + s.mlieu = 16; + affrep(); + } else crep = 176; + } + } +} + +/* overlay */ void tcacher() { + if (! syn) ecr3("se cacher"); + tfleche(); + if (!(anyone) && !(iesc)) { + tcoord(10); + if (num == 0) cache = false; + else { + cache = true; + crep = 999; + } + } +} + +/* overlay */ void tattacher() { + if (s.derobj == 0) crep = 186; + else { + if (! syn) ecr3("attacher"); + tfleche(); + if (!(anyone) && !(iesc)) { + tcoord(8); + crep = 997; + if ((num != 0) && (s.mlieu == 24)) { + crep = 999; + if ((s.derobj == 120) || (s.derobj == 140)) { + s.ipuit = s.derobj; + aniof(1, 1); + } else crep = 185; + maivid(); + } + } + } +} + +/* overlay */ void tfermer() { + integer cx, chai; + + if (! syn) ecr3("fermer"); + if (caff < 26) { + tfleche(); + if (iesc) crep = 998; + if ((anyone) || (iesc)) return; + tcoord(7); + if (num != 0) { + cx = 0; + do { + cx = cx + 1; + } while (!((cx > 6) || (num == ord(touv[cx])))); + if (num == ord(touv[cx])) { + aniof(2, num); + crep = 998; + touv[cx] = chr(0); + iouv = iouv - 1; + if (iouv < 0) iouv = 0; + chai = 9999; + rechai(chai); + if (mchai == chai) mchai = 0; + } else crep = 187; + } + } + if (caff == 26) crep = 999; +} + +/* overlay */ void tfrapper() { + integer l, p, haz; + + if (! syn) ecr3("frapper"); + if (s.mlieu == 15) { + l = do_alert("[1][ | Avant, utilisez le menu DEP...][ok]", 1); + return; + } + if (s.mlieu < 25) { + tfleche(); + if (!(anyone) && !(iesc)) + if ((s.mlieu < 19) && (s.mlieu != 15)) crep = 133; + else crep = 997; + return; + } + if (s.mlieu == 26) { + haz = (hazard(0, 8)) - 4; + parole(11, haz, 1); + ecfren(p, haz, s.conf, ment); + l = ment; + if (l != 0) + if (p != -500) { + if (haz > p) crep = 190; + else { + becfren(l); + frap(); + } + } else frap(); + if (ment == 8) crep = 190; + } +} + +/* overlay */ void tposer() { + integer cx, chai; + + if (! syn) ecr3("poser"); + if (s.derobj == 0) crep = 186; + else { + if (caff > 99) { + crep = 999; + ajchai(); + if (crep != 192) maivid(); + return; + } + tfleche(); + if ((anyone) || (iesc)) return; + tcoord(7); + crep = 124; + if (num != 0) { + rechai(chai); + if (chai == 0) crep = 997; + else { + cx = 0; + do { + cx = cx + 1; + } while (!((cx > 6) || (num == ord(touv[cx])))); + if (num != ord(touv[cx])) crep = 187; + else { + mchai = chai; + crep = 999; + } + } + } else { + tcoord(8); + if (num != 0) { + crep = 998; + if (caff == 2) + if (s.iloic != 0) crep = 188; + else s.iloic = s.derobj; + if (caff == 13) { + if (num == 1) { + if (s.iboul != 0) crep = 188; + else s.iboul = s.derobj; + } else if (s.ibag != 0) crep = 188; + else s.ibag = s.derobj; + } + if (caff == 16) + if (s.icryp != 0) crep = 188; + else s.icryp = s.derobj; + if (caff == 24) crep = 185; + if ((caff == 14) || (caff == 17)) crep = 124; + } else { + crep = 124; + if (caff == 24) { + tcoord(5); + if (num != 0) crep = 185; + } + } + } + if (caff == 23) crep = 185; + if ((crep == 999) || (crep == 185) || (crep == 998)) { + if (crep == 999) ajchai(); + if (crep != 192) maivid(); + } + } +} + +/* overlay */ void tecouter() { + integer l, p, haz, j, h, m; + + if (s.mlieu != 26) crep = 101; + else { + if (ipers != 0) s.conf = s.conf + 1; + ecfren(p, haz, s.conf, ment); + l = ment; + if (l != 0) + if (p != -500) { + if (haz > p) crep = 101; + else { + becfren(l); + calch(j, h, m); + haz = hazard(1, 100); + if ((h >= 0) && (h < 8)) { + if (haz > 30) crep = 101; + else crep = 178; + } else if (haz > 70) crep = 101; + else crep = 178; + } + } else crep = 178; + } +} + +/* overlay */ void tmanger() { + integer j, h, m; + + if ((s.mlieu > 15) && (s.mlieu < 26)) + crep = 148; + else { + tsort(); + s.mlieu = 10; + caff = 10; + debloc(s.mlieu); + tmlieu(s.mlieu); + calch(j, h, m); + if ((h == 12) || (h == 13) || (h == 19)) { + s.conf = s.conf - (s.conf / 7); + if (h == 12) + if (m == 0) h = 4; + else h = 3; + if ((h == 13) || (h == 19)) + if (m == 0) h = 2; + else h = 1; + jh = jh + h; + crep = 135; + tinke(); + } else crep = 134; + } +} + +/* overlay */ void tentrer() { + integer x, z; + + if ((s.mlieu == 21) || (s.mlieu == 22)) { + t1sama(); + tmlieu(s.mlieu); + } else if (s.mlieu == 15) aldepl(); + else if (ment == 0) crep = 997; + else { + if ((ment == 9) && (s.derobj != 136)) { + crep = 189; + s.teauto[8] = '*'; + } else { + if (! blo) t11(ment, z); + if (z != 0) { + if ((ment == 3) || (ment == 7)) crep = 179; + else { + x = (hazard(0, 10)) - 5; + parole(7, x, 1); + aniof(1, 1); + /* tkey(5,32000);*/ + tip(z, x); + s.conf = s.conf + 1; + s.mlieu = 15; + msg[3] = discut; + msg[4] = disc[x]; + syn = true; + if (ment == 9) { + col = true; + caff = 70; + afdes(0); + repon(2, caff); + } else col = false; + debloc(ment); + ment = 0; + } + } else { + x = (hazard(0, 10)) - 5; + parole(7, x, 1); + aniof(1, 1); + /* tkey(1,32000);*/ + s.mlieu = ment; + affrep(); + debloc(s.mlieu); + tmlieu(s.mlieu); + ment = 0; + mpers = 0; + ipers = 0; + } + } + } +} + +/* overlay */ void tdormir() { + const char m1[] = "D‚sirez-vous vous r‚veiller?"; + integer z, j, h, m, quel; + + if ((s.mlieu > 15) && (s.mlieu < 26)) { + crep = 148; + return; + } + if (s.mlieu != 0) { + tsort(); + s.mlieu = 0; + affrep(); + afdes(0); + debloc(s.mlieu); + tmlieu(s.mlieu); + } + clsf3(); + clsf2(); + ecrf2(); + ecr2(m1); + calch(j, h, m); + do { + if (h < 8) { + s.conf = s.conf - (s.conf / 20); + z = (7 - h) * 2; + if (m == 30) z = z - 1; + jh = jh + z; + h = 7; + } + jh = jh + 2; + h = h + 1; + if (h > 23) h = 0; + tinke(); + quel = do_alert(stouinon, 1); + anyone = false; + } while (!(quel == 1)); + crep = 998; + num = 0; +} + +/* overlay */ void tdefoncer() { + if (! syn) ecr3("d‚foncer"); + if (caff < 25) tfleche(); + if ((! anyone) && (! iesc)) + if (s.mlieu != 26) crep = 997; + else { + crep = 143; + s.conf = s.conf + 2; + } +} + +/* overlay */ void tsortir() { + integer lx; + + tsort(); + crep = 0; + if ((s.mlieu == 19) || (s.mlieu == 21) || (s.mlieu == 22) + || (s.mlieu == 24)) crep = 997; + else { + if ((s.mlieu < 16) || (s.mlieu == 26)) lx = 10; + if ((s.mlieu == 10) || (s.mlieu == 20)) lx = 21; + if ((s.mlieu < 10) || (s.mlieu == 13)) lx = 15; + if (s.mlieu == 16) { + lx = 17; + crep = 176; + } + if (s.mlieu == 17) t23coul(lx); + if (s.mlieu == 23) lx = 24; + if (crep != 997) s.mlieu = lx; + caff = lx; + if (crep == 0) crep = lx; + debloc(lx); + tmlieu(lx); + } +} + +/* overlay */ void tattendre() { + integer quel; + + mpers = 0; + clsf3(); + do { + jh = jh + 1; + tinke(); + if (! blo) t11(s.mlieu, quel); + if ((ipers != 0) && (mpers == 0)) { + crep = 998; + if ((s.mlieu == 13) || (s.mlieu == 14)) cavegre(); + if ((s.mlieu > 0) && (s.mlieu < 10)) anyone = true; + mpers = ipers; + if (! anyone) tinke(); + return; + } + repon(2, 102); + quel = do_alert(stouinon, 1); + } while (!(quel == 2)); + crep = 998; + if (! anyone) tinke(); +} + +/* overlay */ void tsonder() { + if (! syn) ecr3("sonder"); + if (caff < 27) { + tfleche(); + if (!(anyone) && (! iesc)) crep = 145; + num = 0; + } +} + +/* overlay */ void tparler() + +{ + array<1, 46, boolean> te; + integer ix, cy, cx, max, haz, suj, co, lig, icm, + i, tay, choi, x, y, c; + char tou; + array<1, 46, varying_string<40> > lib; + phrase st; + boolean f; + + + + finfouil(); + if (col) suj = 128; + else { + cx = 0; + do { + cx = cx + 1; + } while (!(disc[cx] == msg[4])); + caff = 69 + cx; + afdes(0); + repon(2, caff); + suj = caff + 60; + } + tkey1(false); + mennor(); + hide_mouse(); + hirs(); + premtet(); + sparl(0, suj); + hirs(); + for (ix = 1; ix <= 46; ix ++) te[ix] = false; + for (ix = 1; ix <= 45; ix ++) { + deline(ix + c_tparler, st, tay); + lib[ix] = delig; + for (i = tay; i <= 40; i ++) lib[ix] = lib[ix] + ' '; + } + lib[46] = lib[45]; + lib[45] = ' '; + show_mouse(); + do { + choi = 0; + icm = 0; + co = 0; + lig = 0; + do { + icm = succ(integer, icm); + putxy(co, lig); + if (s.teauto[icm] == '*') + if (te[icm]) writetp(lib[icm], 1); + else writetp(lib[icm], 0); + if (icm == 23) { + lig = 0; + co = 320; + } else lig = lig + 8; + } while (!(icm == 42)); + putxy(320, 176); + writetp(lib[46], 0); + tou = '\0'; + do { + mov_mouse(f, tou); + /* if keypressed then read(kbd,tou);*/ + read_pos_mouse(x, y, c); + x = x * (3 - res); + if (x > 319) cx = 41; + else cx = 1; + cy = succ(integer, (cardinal)y >> 3); /* 0-199 => 1-25 */ + if ((cy > 23) || ((cx == 41) && (set::of(range(20, 22), eos).has(cy)))) { + if (choi != 0) { + lig = ((choi - 1) % 23) << 3; + if (choi > 23) co = 320; + else co = 0; + putxy(co, lig); + if (te[choi]) writetp(lib[choi], 0); + else writetp(lib[choi], 1); + te[choi] = ! te[choi]; + choi = 0; + } + } else { + ix = cy; + if (cx == 41) ix = ix + 23; + if (ix != choi) { + if (choi != 0) { + lig = ((choi - 1) % 23) << 3; + if (choi > 23) co = 320; + else co = 0; + putxy(co, lig); + if (te[choi]) writetp(lib[choi], 0); + else writetp(lib[choi], 1); + te[choi] = ! te[choi]; + } + if ((s.teauto[ix] == '*') || (ix == 46)) { + lig = ((ix - 1) % 23) << 3; + if (ix > 23) co = 320; + else co = 0; + putxy(co, lig); + if (te[ix]) writetp(lib[ix], 0); + else writetp(lib[ix], 1); + te[ix] = ! te[ix]; + choi = ix; + } else choi = 0; + } + } + } while (!((tou == '\15') || (((c != 0) || clic) && (choi != 0)))); + clic = false; + if (choi != 46) { + ix = choi - 1; + if (col) { + col = false; + s.mlieu = 15; + if (iouv > 0) max = 8; + else max = 4; + haz = hazard(1, max); + if (haz == 2) suj = 129; + else { + suj = 138; + s.conf = s.conf + (3 * (s.conf / 10)); + } + } else if (nbrep[caff - 69] < nbrepm[caff - 69]) { + suj = tabdon[arep + (ix << 3) + (caff - 70)]; + s.conf = s.conf + tabdon[arcf + ix]; + nbrep[caff - 69] = nbrep[caff - 69] + 1; + } else { + s.conf = s.conf + 3; + suj = 139; + } + hide_mouse(); + hirs(); + premtet(); + sparl(0, suj); + show_mouse(); + if ((suj == 84) || (suj == 86)) { + s.pourc[5] = '*'; + s.teauto[7] = '*'; + } + if ((suj == 106) || (suj == 108) || (suj == 94)) { + for (ix = 29; ix <= 31; ix ++) s.teauto[ix] = '*'; + s.pourc[7] = '*'; + } + if (suj == 70) { + s.pourc[8] = '*'; + s.teauto[32] = '*'; + } + hide_mouse(); + hirs(); + show_mouse(); + } + } while (!((choi == 46) || (suj == 138))); + if (col) { + s.conf = s.conf + (3 * (s.conf / 10)); + hide_mouse(); + hirs(); + premtet(); + sparl(0, 138); + show_mouse(); + col = false; + s.mlieu = 15; + } + ctrm = 0; + hide_mouse(); + hirs(); + dessine_rouleau(); + show_mouse(); + affper(ipers); + tinke(); + pendule(); + affrep(); + /* chech;*/ + tmlieu(s.mlieu); + clsf3(); +} + +/* overlay */ void tsentir() { + crep = 119; + if (caff < 26) { + if (! syn) ecr3("sentir"); + tfleche(); + if (!(anyone) && !(iesc)) + if (caff == 16) crep = 153; + } else if (caff == 123) crep = 110; + num = 0; +} + +/* overlay */ void tgratter() { + crep = 155; + if (caff < 27) { + if (! syn) ecr3("gratter"); + tfleche(); + } + num = 0; +} + +/* NIVEAU 2 */ +/* overlay */ void tmaj1() { /* Le jeu est termin‚ !!! */ + arret = true; + tlu(13, 152); + maivid(); + clsf1(); + clsf2(); + clsf3(); + repon(9, 1509); + tkey1(false); + hide_mouse(); + caff = 70; + taffich(); + hirs(); + premtet(); + sparl(0, 141); + show_mouse(); + clsf1(); + repon(9, 1509); + repon(2, 142); + tkey1(false); + caff = 32; + afdes(0); + repon(6, 34); + repon(2, 35); + musique(0); + tkey1(false); + messint(2036); + tkey1(false); + inzon(); +} + +/* overlay */ void tencore() { /* Perdu !!! */ + integer quel; + + clsf2(); + musique(0); + tkey1(false); + maivid(); + inzon(); + dprog(); + vh = 10; + vm = 0; + vj = 0; + min = 0; + heu = 10; + jou = 0; + repon(2, 180); + quel = do_alert(stouinon, 1); + arret = (quel != 1); +} diff --git a/engines/mortevielle/actions.h b/engines/mortevielle/actions.h deleted file mode 100644 index 1dd3abe08f..0000000000 --- a/engines/mortevielle/actions.h +++ /dev/null @@ -1,1193 +0,0 @@ -/* NIVEAU 4 */ -const char stouinon[] = "[2][ ][OUI][NON]"; - -/* overlay */ -void taller() - -{ - integer mx, cx, cy; - - if ((s.mlieu == 26) && (msg[4] == depl[6])) { - s.mlieu = 15; - caff = s.mlieu; - afdes(0); - repon(2, s.mlieu); - } - if ((s.mlieu == 15) && (msg[4] == depl[6])) { - if (! syn) ecr3("aller"); - tfleche(); - if (iesc) okdes = false; - if ((anyone) || (iesc)) return; - tcoord(1); - if (num == 0) return; - if (num == 1) { - s.mlieu = 0; - tmlieu(0); - } else if (num == 7) { - s.mlieu = 13; - tmlieu(13); - } else if (num != 6) s.mlieu = 26; - if ((num > 1) && (num < 6)) ment = num - 1; - if (num > 7) ment = num - 3; - if (num != 6) affrep(); - else aldepl(); - return; - } - tsort(); - cx = 0; - do { - cx = cx + 1; - } while (!(depl[cx] == msg[4])); - if (s.mlieu == 19) { - if (cx == 1) t1deva(); - if (cx == 2) t1neig(); - goto L2; - } - if (s.mlieu == 23) { - if (cx == 1) t1deau(); - if (cx == 2) t1derr(); - goto L2; - } - if ((s.mlieu == 11) && (cx == 1)) cx = 6; - if (s.mlieu == 12) { - if (cx == 2) cx = 6; - if (cx == 5) cx = 16; - } - if ((s.mlieu == 14) && (cx == 3)) cx = 6; - if (((s.mlieu == 15) || (s.mlieu == 26)) && (cx == 4)) cx = 6; - if ((s.mlieu > 19) && (s.mlieu != 26)) cx = cx + 10; - if ((s.mlieu == 20) && (cx == 13)) cx = 16; - if (s.mlieu == 21) { - if (cx == 12) cx = 16; - else if (cx > 13) cx = 15; - } - if ((s.mlieu == 22) && (cx > 14)) cx = 15; - if ((s.mlieu == 24) && (cx != 17)) - if (cx > 13) cx = 15; - if (cx == 1) s.mlieu = 11; - else if (cx == 2) s.mlieu = 12; - else if (cx == 3) s.mlieu = 14; - else if (cx == 4) s.mlieu = 15; - else if (cx == 5) cx = 12; - if (cx == 6) cx = 11; - if (cx == 11) t1sama(); - else if (cx == 12) t1deva(); - else if (cx == 13) s.mlieu = 20; - else if (cx == 14) s.mlieu = 24; - else if (cx == 15) t1neig(); - else if (cx == 16) t1derr(); - else if (cx == 17) { - if ((s.ipuit != 120) && (s.ipuit != 140)) crep = 997; - else if (s.ipuit == 120) crep = 181; - else if (s.conf > 80) { - crep = 1505; - tperd(); - } else { - s.mlieu = 23; - affrep(); - } - } - if ((cx < 5) || (cx == 13) || (cx == 14)) affrep(); - debloc(s.mlieu); -L2: - tmlieu(s.mlieu); -} - -/* overlay */ void tprendre() { - integer cx, cy, cz; - - if (caff > 99) { - cx = caff; - avpoing(cx); - if (crep != 139) { - if (ipers > 0) s.conf = s.conf + 3; - if (obpart) { - if (s.mlieu == 2) s.iloic = 0; - if (s.mlieu == 13) { - if (s.iboul == caff) s.iboul = 0; - if (s.ibag == caff) s.ibag = 0; - } - if (s.mlieu == 14) s.icave = 0; - if (s.mlieu == 16) s.icryp = 0; - if (s.mlieu == 17) s.ivier = 0; - if (s.mlieu == 24) s.ipuit = 0; - mfouen(); - obpart = false; - affrep(); - } else { - tabdon[acha + (pred(integer, mchai) * 10) + pred(integer, cs)] = 0; - tsuiv(); - dobj = dobj + 1; - if (dobj > 6) { - s.conf = s.conf + 2; - dobj = 0; - } - } - } - return; - } - if (! syn) ecr3("prendre"); - tfleche(); - if ((anyone) || (iesc)) return; - if (caff == 3) { - tcoord(2); - if (num == 1) { - crep = 152; - return; - } - } - tcoord(5); - if ((num == 0) || ((num == 1) && (s.mlieu == 16))) { - tcoord(8); - if (num != 0) { - if (ipers > 0) s.conf = s.conf + 3; - crep = 997; - if ((s.mlieu == 2) && (s.iloic != 0)) avpoing(s.iloic); - if ((s.mlieu == 13) && (num == 1) && (s.iboul != 0)) { - avpoing(s.iboul); - if ((crep != 997) && (crep != 139)) aniof(2, 7); - } - if ((s.mlieu == 13) && (num == 2) && (s.ibag != 0)) { - avpoing(s.ibag); - if ((crep != 997) && (crep != 139)) aniof(2, 6); - } - if ((s.mlieu == 14) && (s.icave != 0)) { - avpoing(s.icave); - if ((crep != 997) && (crep != 139)) aniof(2, 2); - } - if ((s.mlieu == 16) && (s.icryp != 0)) avpoing(s.icryp); - if ((s.mlieu == 17) && (s.ivier != 0)) { - avpoing(s.ivier); - if ((crep != 997) && (crep != 139)) { - crep = 182; - aniof(2, 1); - } - } - if ((s.mlieu == 24) && (s.ipuit != 0)) { - avpoing(s.ipuit); - if ((crep != 997) && (crep != 139)) aniof(2, 1); - } - if ((crep != 997) && (crep != 182) && (crep != 139)) crep = 999; - } - } else { - if (((s.mlieu == 0) && (num == 3)) || ((s.mlieu == 1) && (num == 4)) - || ((s.mlieu == 2) && (num == 1)) || ((s.mlieu == 4) && (num == 3)) - || ((s.mlieu == 5) && (num == 6)) || ((s.mlieu == 6) && (num == 2)) - || ((s.mlieu == 7) && (num == 6)) || ((s.mlieu == 8) && (num == 4)) - || ((s.mlieu == 9) && (num == 4)) || ((s.mlieu == 10) && (num > 2)) - || ((s.mlieu == 11) && (num == 7)) || ((s.mlieu == 12) && (num == 6)) - || ((s.mlieu == 13) && (num > 4)) || ((s.mlieu > 13) - && (s.mlieu != 23))) crep = 997; - else { - if (s.mlieu == 23) { - crep = 1504; - tperd(); - } else crep = 120; - } - } -} - -/* overlay */ void tsprendre() { - integer cx, cy, cz; - - cx = 0; - do { - cx = cx + 1; - } while (!(invt[cx] == msg[4])); - cz = 0; - cy = 0; - do { - cy = cy + 1; - if (ord(s.sjer[cy]) != 0) cz = cz + 1; - } while (!(cz == cx)); - cz = ord(s.sjer[cy]); - s.sjer[cy] = chr(0); - modinv(); - avpoing(cz); - crep = 998; - clsf2(); -} - -/* overlay */ void tsoulever() - -{ - integer cx; - - if (! syn) ecr3("soulever"); - tfleche(); - if ((anyone) || (iesc)) return; - tcoord(3); - if (num == 0) { - tcoord(8); - if (num != 0) { - if (ipers > 0) s.conf = s.conf + 1; - crep = 997; - if ((s.mlieu == 2) && (s.iloic != 0)) treg(s.iloic); - } - return; - } - if (ipers > 0) s.conf = s.conf + 1; - cx = s.mlieu; - if (s.mlieu == 16) cx = 14; - if (s.mlieu == 19) cx = 15; - crep = tabdon[asoul + (cx << 3) + pred(integer, num)]; - if (crep == 255) crep = 997; -} - -/* overlay */ void tlire() { - integer iaff; - - if (caff > 99) st4(caff); - else { - if (! syn) ecr3("lire"); - tfleche(); - if (!(anyone) && !(iesc)) { - tcoord(4); - if (num != 0) crep = 107; - } - } -} - -/* overlay */ void tslire() { - if (s.derobj == 0) crep = 186; - else st4(s.derobj); -} - -/* overlay */ void tregarder() { - integer cx; - - if (caff > 99) { - crep = 103; - return; - } - if (! syn) ecr3("regarder"); - tfleche(); - if ((anyone) || (iesc)) return; - tcoord(5); - if (num == 0) { - tcoord(8); - crep = 131; - if (num != 0) { - if (s.mlieu == 13) { - if (num == 1) { - crep = 164; - if (s.ibag != 0) treg(s.ibag); - else if (s.iboul != 0) treg(s.iboul); - } else { - crep = 193; - if (s.ibag != 0) treg(s.ibag); - } - } - if (s.mlieu == 14) { - crep = 164; - if (s.icave != 0) treg(s.icave); - } - if (s.mlieu == 17) { - crep = 174; - if (s.ivier != 0) treg(s.ivier); - } - if (s.mlieu == 24) { - crep = 131; - if (s.ipuit != 0) treg(s.ipuit); - } - } - return; - } - cx = s.mlieu; - if (s.mlieu == 20) cx = 17; - if ((s.mlieu > 21) && (s.mlieu < 25)) cx = cx - 4; - if (s.mlieu == 26) cx = 21; - crep = tabdon[arega + (cx * 7) + pred(integer, num)]; - if ((s.mlieu == 13) && (num == 8)) crep = 126; - if (s.mlieu == 19) crep = 103; - if (crep == 255) crep = 131; - if ((s.mlieu == 1) && (num == 1)) treg(144); - if ((s.mlieu == 5) && (num == 3)) treg(147); - if ((s.mlieu == 8) && (num == 3)) treg(149); - if ((s.mlieu == 9) && (num == 2)) treg(30); - if ((s.mlieu == 10) && (num == 3)) treg(31); -} - -/* overlay */ void tsregarder() { - if (s.derobj != 0) treg(s.derobj); - else crep = 186; -} - -/* overlay */ void tfouiller() { - const array<0, 13, byte> r = {{123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}}; - integer cx; - - if (caff > 99) { - st7(caff); - return; - } - if (! syn) ecr3("fouiller"); - tfleche(); - if (anyone || iesc) return; - if (s.mlieu == 23) { - crep = 1504; - tperd(); - return; - } - tcoord(6); - if (num == 0) { - tcoord(7); - if (num != 0) { - cx = 0; - do { - cx = cx + 1; - } while (!((cx > 6) || (num == ord(touv[cx])))); - if (num != ord(touv[cx])) crep = 187; - else { - if (ipers > 0) s.conf = s.conf + 3; - rechai(mchai); - if (mchai != 0) { - cs = 0; - is = 0; - fouil = true; - mfoudi(); - tsuiv(); - } else crep = 997; - } - } else { - tcoord(8); - crep = 997; - if (num != 0) { - if (ipers > 0) s.conf = s.conf + 3; - if ((s.mlieu != 24) && (s.mlieu != 17) && (s.mlieu != 13)) { - if (s.mlieu == 2) { - crep = 123; - if (s.iloic != 0) treg(s.iloic); - } - if (s.mlieu == 16) { - crep = 123; - if (s.icryp != 0) treg(s.icryp); - } - } - } - } - } else { - if (ipers > 0) s.conf = s.conf + 3; - crep = 997; - if (s.mlieu < 14) crep = r[s.mlieu]; - if ((s.mlieu == 3) && (num == 2)) crep = 162; - if (s.mlieu == 12) { - if ((num == 3) || (num == 4)) crep = 162; - if (num == 5) crep = 159; - } - if (s.mlieu == 19) crep = 104; - if (s.mlieu == 16) crep = 155; - } -} - -/* overlay */ void tsfouiller() { - if (s.derobj != 0) st7(s.derobj); - else crep = 186; -} - -/* overlay */ void touvrir() { - integer cx, haz; - - if (! syn) ecr3("ouvrir"); - if (caff == 26) { - if (ment != 0) { - msg[4] = entrer; - syn = true; - } else crep = 997; - return; - } - if (caff == 15) { - aldepl(); - return; - } - tfleche(); - if ((anyone) || (iesc)) return; - tcoord(7); - if (num != 0) { - if (ipers > 0) s.conf = s.conf + 2; - iouv = iouv + 1; - cx = 0; - do { - cx = cx + 1; - } while (!((cx > 6) || (ord(touv[cx]) == 0) || (ord(touv[cx]) == num))); - if (ord(touv[cx]) != num) { - if (! - ( - ((num == 3) && ((s.mlieu == 0) || (s.mlieu == 9) || (s.mlieu == 5) || (s.mlieu == 7))) - || - ((num == 4) && ((s.mlieu == 1) || (s.mlieu == 2) || (s.mlieu == 6))) || - ((s.mlieu == 4) && (num == 5)) || - ((num == 6) && ((s.mlieu == 7) || (s.mlieu == 10) || - (s.mlieu == 8) || (s.mlieu == 13))) || - ((s.mlieu == 8) && (num == 2)) || - ((s.mlieu == 12) && (num == 7)))) { - if (((s.mlieu > 10) && (s.mlieu < 14)) || - ((s.mlieu > 6) && (s.mlieu < 10)) || - (s.mlieu == 0) || (s.mlieu == 2) || (s.mlieu == 5)) { - haz = hazard(1, 4); - if (haz == 3) parole(7, 9, 1); - } - touv[cx] = chr(num); - aniof(1, num); - } - cx = s.mlieu; - if (s.mlieu == 16) cx = 14; - crep = tabdon[aouvr + (cx * 7) + pred(integer, num)]; - if (crep == 254) crep = 999; - } else crep = 18; - } -} - -/* overlay */ void tmettre() { - integer quel; - boolean entre; - phrase st; - str255 str_; - integer i, tay; - - if (s.derobj == 0) { - crep = 186; - return; - } - if (! syn) ecr3("mettre"); - tfleche(); - if (iesc) crep = 998; - if ((anyone) || (iesc)) return; - tcoord(8); - if (num != 0) { - crep = 999; - if (caff == 13) { - if (num == 1) { - if (s.iboul != 0) crep = 188; - else { - s.iboul = s.derobj; - if (s.derobj == 141) aniof(1, 7); - } - } else if (s.ibag != 0) crep = 188; - else { - s.ibag = s.derobj; - if (s.derobj == 159) aniof(1, 6); - } - } - if (caff == 14) - if (s.icave != 0) crep = 188; - else { - s.icave = s.derobj; - if (s.derobj == 151) { - aniof(1, 2); - aniof(1, 1); - repon(2, 165); - maivid(); - parole(6, -9, 1); - quel = do_alert(stouinon, 1); - if (quel == 1) { - deline(582, st, tay); - i = do_alert(delig, 1); - tesok = false; - entre = ques(); - hide_mouse(); - hirs(); - dessine_rouleau(); - clsf2(); - clsf3(); - show_mouse(); - tinke(); - pendule(); - if (ipers != 0) affper(ipers); - else person(); - menu_aff(); - if (entre) { - s.mlieu = 17; - tmlieu(17); - } else { - tmlieu(s.mlieu); - writepal(14); - dessin(0); - aniof(1, 2); - aniof(1, 1); - deline(577, st, tay); - i = do_alert(delig, 1); - aniof(2, 1); - crep = 166; - } - affrep(); - } else { - aniof(2, 1); - crep = 166; - tesok = true; - } - return; - } - } - if (caff == 16) - if (s.icryp == 0) s.icryp = s.derobj; - else crep = 188; - if (caff == 17) - if (s.ivier != 0) crep = 188; - else if (s.derobj == 143) { - s.ivier = 143; - aniof(1, 1); - } else { - crep = 1512; - tperd(); - } - if (caff == 24) - if (s.ipuit != 0) crep = 188; - else if ((s.derobj == 140) || (s.derobj == 120)) { - s.ipuit = s.derobj; - aniof(1, 1); - } else crep = 185; - if (crep != 188) maivid(); - } -} - -/* overlay */ void ttourner() { - integer quel; - - if (caff > 99) { - crep = 149; - return; - } - if (! syn) ecr3("tourner"); - tfleche(); - if ((anyone) || (iesc)) return; - tcoord(9); - if (num != 0) { - crep = 997; - if ((s.mlieu == 13) && (s.ibag == 159) && (s.iboul == 141)) { - repon(2, 167); - parole(7, 9, 1); - quel = do_alert(stouinon, 1); - if (quel == 1) solu = true; - else crep = 168; - } - if ((s.mlieu == 17) && (s.ivier == 143)) { - repon(2, 175); - clsf3(); - parole(6, -9, 1); - quel = do_alert(stouinon, 1); - if (quel == 1) { - s.mlieu = 16; - affrep(); - } else crep = 176; - } - } -} - -/* overlay */ void tcacher() { - if (! syn) ecr3("se cacher"); - tfleche(); - if (!(anyone) && !(iesc)) { - tcoord(10); - if (num == 0) cache = false; - else { - cache = true; - crep = 999; - } - } -} - -/* overlay */ void tattacher() { - if (s.derobj == 0) crep = 186; - else { - if (! syn) ecr3("attacher"); - tfleche(); - if (!(anyone) && !(iesc)) { - tcoord(8); - crep = 997; - if ((num != 0) && (s.mlieu == 24)) { - crep = 999; - if ((s.derobj == 120) || (s.derobj == 140)) { - s.ipuit = s.derobj; - aniof(1, 1); - } else crep = 185; - maivid(); - } - } - } -} - -/* overlay */ void tfermer() { - integer cx, chai; - - if (! syn) ecr3("fermer"); - if (caff < 26) { - tfleche(); - if (iesc) crep = 998; - if ((anyone) || (iesc)) return; - tcoord(7); - if (num != 0) { - cx = 0; - do { - cx = cx + 1; - } while (!((cx > 6) || (num == ord(touv[cx])))); - if (num == ord(touv[cx])) { - aniof(2, num); - crep = 998; - touv[cx] = chr(0); - iouv = iouv - 1; - if (iouv < 0) iouv = 0; - chai = 9999; - rechai(chai); - if (mchai == chai) mchai = 0; - } else crep = 187; - } - } - if (caff == 26) crep = 999; -} - -/* overlay */ void tfrapper() { - integer l, p, haz; - - if (! syn) ecr3("frapper"); - if (s.mlieu == 15) { - l = do_alert("[1][ | Avant, utilisez le menu DEP...][ok]", 1); - return; - } - if (s.mlieu < 25) { - tfleche(); - if (!(anyone) && !(iesc)) - if ((s.mlieu < 19) && (s.mlieu != 15)) crep = 133; - else crep = 997; - return; - } - if (s.mlieu == 26) { - haz = (hazard(0, 8)) - 4; - parole(11, haz, 1); - ecfren(p, haz, s.conf, ment); - l = ment; - if (l != 0) - if (p != -500) { - if (haz > p) crep = 190; - else { - becfren(l); - frap(); - } - } else frap(); - if (ment == 8) crep = 190; - } -} - -/* overlay */ void tposer() { - integer cx, chai; - - if (! syn) ecr3("poser"); - if (s.derobj == 0) crep = 186; - else { - if (caff > 99) { - crep = 999; - ajchai(); - if (crep != 192) maivid(); - return; - } - tfleche(); - if ((anyone) || (iesc)) return; - tcoord(7); - crep = 124; - if (num != 0) { - rechai(chai); - if (chai == 0) crep = 997; - else { - cx = 0; - do { - cx = cx + 1; - } while (!((cx > 6) || (num == ord(touv[cx])))); - if (num != ord(touv[cx])) crep = 187; - else { - mchai = chai; - crep = 999; - } - } - } else { - tcoord(8); - if (num != 0) { - crep = 998; - if (caff == 2) - if (s.iloic != 0) crep = 188; - else s.iloic = s.derobj; - if (caff == 13) { - if (num == 1) { - if (s.iboul != 0) crep = 188; - else s.iboul = s.derobj; - } else if (s.ibag != 0) crep = 188; - else s.ibag = s.derobj; - } - if (caff == 16) - if (s.icryp != 0) crep = 188; - else s.icryp = s.derobj; - if (caff == 24) crep = 185; - if ((caff == 14) || (caff == 17)) crep = 124; - } else { - crep = 124; - if (caff == 24) { - tcoord(5); - if (num != 0) crep = 185; - } - } - } - if (caff == 23) crep = 185; - if ((crep == 999) || (crep == 185) || (crep == 998)) { - if (crep == 999) ajchai(); - if (crep != 192) maivid(); - } - } -} - -/* overlay */ void tecouter() { - integer l, p, haz, j, h, m; - - if (s.mlieu != 26) crep = 101; - else { - if (ipers != 0) s.conf = s.conf + 1; - ecfren(p, haz, s.conf, ment); - l = ment; - if (l != 0) - if (p != -500) { - if (haz > p) crep = 101; - else { - becfren(l); - calch(j, h, m); - haz = hazard(1, 100); - if ((h >= 0) && (h < 8)) { - if (haz > 30) crep = 101; - else crep = 178; - } else if (haz > 70) crep = 101; - else crep = 178; - } - } else crep = 178; - } -} - -/* overlay */ void tmanger() { - integer j, h, m; - - if ((s.mlieu > 15) && (s.mlieu < 26)) - crep = 148; - else { - tsort(); - s.mlieu = 10; - caff = 10; - debloc(s.mlieu); - tmlieu(s.mlieu); - calch(j, h, m); - if ((h == 12) || (h == 13) || (h == 19)) { - s.conf = s.conf - (s.conf / 7); - if (h == 12) - if (m == 0) h = 4; - else h = 3; - if ((h == 13) || (h == 19)) - if (m == 0) h = 2; - else h = 1; - jh = jh + h; - crep = 135; - tinke(); - } else crep = 134; - } -} - -/* overlay */ void tentrer() { - integer x, z; - - if ((s.mlieu == 21) || (s.mlieu == 22)) { - t1sama(); - tmlieu(s.mlieu); - } else if (s.mlieu == 15) aldepl(); - else if (ment == 0) crep = 997; - else { - if ((ment == 9) && (s.derobj != 136)) { - crep = 189; - s.teauto[8] = '*'; - } else { - if (! blo) t11(ment, z); - if (z != 0) { - if ((ment == 3) || (ment == 7)) crep = 179; - else { - x = (hazard(0, 10)) - 5; - parole(7, x, 1); - aniof(1, 1); - /* tkey(5,32000);*/ - tip(z, x); - s.conf = s.conf + 1; - s.mlieu = 15; - msg[3] = discut; - msg[4] = disc[x]; - syn = true; - if (ment == 9) { - col = true; - caff = 70; - afdes(0); - repon(2, caff); - } else col = false; - debloc(ment); - ment = 0; - } - } else { - x = (hazard(0, 10)) - 5; - parole(7, x, 1); - aniof(1, 1); - /* tkey(1,32000);*/ - s.mlieu = ment; - affrep(); - debloc(s.mlieu); - tmlieu(s.mlieu); - ment = 0; - mpers = 0; - ipers = 0; - } - } - } -} - -/* overlay */ void tdormir() { - const char m1[] = "D‚sirez-vous vous r‚veiller?"; - integer z, j, h, m, quel; - - if ((s.mlieu > 15) && (s.mlieu < 26)) { - crep = 148; - return; - } - if (s.mlieu != 0) { - tsort(); - s.mlieu = 0; - affrep(); - afdes(0); - debloc(s.mlieu); - tmlieu(s.mlieu); - } - clsf3(); - clsf2(); - ecrf2(); - ecr2(m1); - calch(j, h, m); - do { - if (h < 8) { - s.conf = s.conf - (s.conf / 20); - z = (7 - h) * 2; - if (m == 30) z = z - 1; - jh = jh + z; - h = 7; - } - jh = jh + 2; - h = h + 1; - if (h > 23) h = 0; - tinke(); - quel = do_alert(stouinon, 1); - anyone = false; - } while (!(quel == 1)); - crep = 998; - num = 0; -} - -/* overlay */ void tdefoncer() { - if (! syn) ecr3("d‚foncer"); - if (caff < 25) tfleche(); - if ((! anyone) && (! iesc)) - if (s.mlieu != 26) crep = 997; - else { - crep = 143; - s.conf = s.conf + 2; - } -} - -/* overlay */ void tsortir() { - integer lx; - - tsort(); - crep = 0; - if ((s.mlieu == 19) || (s.mlieu == 21) || (s.mlieu == 22) - || (s.mlieu == 24)) crep = 997; - else { - if ((s.mlieu < 16) || (s.mlieu == 26)) lx = 10; - if ((s.mlieu == 10) || (s.mlieu == 20)) lx = 21; - if ((s.mlieu < 10) || (s.mlieu == 13)) lx = 15; - if (s.mlieu == 16) { - lx = 17; - crep = 176; - } - if (s.mlieu == 17) t23coul(lx); - if (s.mlieu == 23) lx = 24; - if (crep != 997) s.mlieu = lx; - caff = lx; - if (crep == 0) crep = lx; - debloc(lx); - tmlieu(lx); - } -} - -/* overlay */ void tattendre() { - integer quel; - - mpers = 0; - clsf3(); - do { - jh = jh + 1; - tinke(); - if (! blo) t11(s.mlieu, quel); - if ((ipers != 0) && (mpers == 0)) { - crep = 998; - if ((s.mlieu == 13) || (s.mlieu == 14)) cavegre(); - if ((s.mlieu > 0) && (s.mlieu < 10)) anyone = true; - mpers = ipers; - if (! anyone) tinke(); - return; - } - repon(2, 102); - quel = do_alert(stouinon, 1); - } while (!(quel == 2)); - crep = 998; - if (! anyone) tinke(); -} - -/* overlay */ void tsonder() { - if (! syn) ecr3("sonder"); - if (caff < 27) { - tfleche(); - if (!(anyone) && (! iesc)) crep = 145; - num = 0; - } -} - -/* overlay */ void tparler() - -{ - array<1, 46, boolean> te; - integer ix, cy, cx, max, haz, suj, co, lig, icm, - i, tay, choi, x, y, c; - char tou; - array<1, 46, varying_string<40> > lib; - phrase st; - boolean f; - - - - finfouil(); - if (col) suj = 128; - else { - cx = 0; - do { - cx = cx + 1; - } while (!(disc[cx] == msg[4])); - caff = 69 + cx; - afdes(0); - repon(2, caff); - suj = caff + 60; - } - tkey1(false); - mennor(); - hide_mouse(); - hirs(); - premtet(); - sparl(0, suj); - hirs(); - for (ix = 1; ix <= 46; ix ++) te[ix] = false; - for (ix = 1; ix <= 45; ix ++) { - deline(ix + c_tparler, st, tay); - lib[ix] = delig; - for (i = tay; i <= 40; i ++) lib[ix] = lib[ix] + ' '; - } - lib[46] = lib[45]; - lib[45] = ' '; - show_mouse(); - do { - choi = 0; - icm = 0; - co = 0; - lig = 0; - do { - icm = succ(integer, icm); - putxy(co, lig); - if (s.teauto[icm] == '*') - if (te[icm]) writetp(lib[icm], 1); - else writetp(lib[icm], 0); - if (icm == 23) { - lig = 0; - co = 320; - } else lig = lig + 8; - } while (!(icm == 42)); - putxy(320, 176); - writetp(lib[46], 0); - tou = '\0'; - do { - mov_mouse(f, tou); - /* if keypressed then read(kbd,tou);*/ - read_pos_mouse(x, y, c); - x = x * (3 - res); - if (x > 319) cx = 41; - else cx = 1; - cy = succ(integer, (cardinal)y >> 3); /* 0-199 => 1-25 */ - if ((cy > 23) || ((cx == 41) && (set::of(range(20, 22), eos).has(cy)))) { - if (choi != 0) { - lig = ((choi - 1) % 23) << 3; - if (choi > 23) co = 320; - else co = 0; - putxy(co, lig); - if (te[choi]) writetp(lib[choi], 0); - else writetp(lib[choi], 1); - te[choi] = ! te[choi]; - choi = 0; - } - } else { - ix = cy; - if (cx == 41) ix = ix + 23; - if (ix != choi) { - if (choi != 0) { - lig = ((choi - 1) % 23) << 3; - if (choi > 23) co = 320; - else co = 0; - putxy(co, lig); - if (te[choi]) writetp(lib[choi], 0); - else writetp(lib[choi], 1); - te[choi] = ! te[choi]; - } - if ((s.teauto[ix] == '*') || (ix == 46)) { - lig = ((ix - 1) % 23) << 3; - if (ix > 23) co = 320; - else co = 0; - putxy(co, lig); - if (te[ix]) writetp(lib[ix], 0); - else writetp(lib[ix], 1); - te[ix] = ! te[ix]; - choi = ix; - } else choi = 0; - } - } - } while (!((tou == '\15') || (((c != 0) || clic) && (choi != 0)))); - clic = false; - if (choi != 46) { - ix = choi - 1; - if (col) { - col = false; - s.mlieu = 15; - if (iouv > 0) max = 8; - else max = 4; - haz = hazard(1, max); - if (haz == 2) suj = 129; - else { - suj = 138; - s.conf = s.conf + (3 * (s.conf / 10)); - } - } else if (nbrep[caff - 69] < nbrepm[caff - 69]) { - suj = tabdon[arep + (ix << 3) + (caff - 70)]; - s.conf = s.conf + tabdon[arcf + ix]; - nbrep[caff - 69] = nbrep[caff - 69] + 1; - } else { - s.conf = s.conf + 3; - suj = 139; - } - hide_mouse(); - hirs(); - premtet(); - sparl(0, suj); - show_mouse(); - if ((suj == 84) || (suj == 86)) { - s.pourc[5] = '*'; - s.teauto[7] = '*'; - } - if ((suj == 106) || (suj == 108) || (suj == 94)) { - for (ix = 29; ix <= 31; ix ++) s.teauto[ix] = '*'; - s.pourc[7] = '*'; - } - if (suj == 70) { - s.pourc[8] = '*'; - s.teauto[32] = '*'; - } - hide_mouse(); - hirs(); - show_mouse(); - } - } while (!((choi == 46) || (suj == 138))); - if (col) { - s.conf = s.conf + (3 * (s.conf / 10)); - hide_mouse(); - hirs(); - premtet(); - sparl(0, 138); - show_mouse(); - col = false; - s.mlieu = 15; - } - ctrm = 0; - hide_mouse(); - hirs(); - dessine_rouleau(); - show_mouse(); - affper(ipers); - tinke(); - pendule(); - affrep(); - /* chech;*/ - tmlieu(s.mlieu); - clsf3(); -} - -/* overlay */ void tsentir() { - crep = 119; - if (caff < 26) { - if (! syn) ecr3("sentir"); - tfleche(); - if (!(anyone) && !(iesc)) - if (caff == 16) crep = 153; - } else if (caff == 123) crep = 110; - num = 0; -} - -/* overlay */ void tgratter() { - crep = 155; - if (caff < 27) { - if (! syn) ecr3("gratter"); - tfleche(); - } - num = 0; -} - -/* NIVEAU 2 */ -/* overlay */ void tmaj1() { /* Le jeu est termin‚ !!! */ - arret = true; - tlu(13, 152); - maivid(); - clsf1(); - clsf2(); - clsf3(); - repon(9, 1509); - tkey1(false); - hide_mouse(); - caff = 70; - taffich(); - hirs(); - premtet(); - sparl(0, 141); - show_mouse(); - clsf1(); - repon(9, 1509); - repon(2, 142); - tkey1(false); - caff = 32; - afdes(0); - repon(6, 34); - repon(2, 35); - musique(0); - tkey1(false); - messint(2036); - tkey1(false); - inzon(); -} - -/* overlay */ void tencore() { /* Perdu !!! */ - integer quel; - - clsf2(); - musique(0); - tkey1(false); - maivid(); - inzon(); - dprog(); - vh = 10; - vm = 0; - vj = 0; - min = 0; - heu = 10; - jou = 0; - repon(2, 180); - quel = do_alert(stouinon, 1); - arret = (quel != 1); -} diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp new file mode 100644 index 0000000000..d059fc3ef3 --- /dev/null +++ b/engines/mortevielle/alert.cpp @@ -0,0 +1,197 @@ +/* overlay */ integer do_alert(str255 str_, integer n); + + +const integer nligne = 7; +const matrix<1, 2, 1, 3, integer> coord += {{ {{150, 72, 103}}, + {{143, 107, 183}} + } +}; + + + +static void decod(str255 s, integer &nbc, integer &nbl, integer &col, str255 &c, str30 &cs) { + integer i, k; + boolean v; + + val(s[2], nbc, i); + c = ""; + nbl = 0; + i = 5; + k = 0; + v = true; + col = 0; + + while (s[i] != ']') { + c = c + s[i]; + if ((s[i] == '|') || (s[i + 1] == ']')) { + if (k > col) col = k; + k = 0; + nbl = nbl + 1; + } else if (s[i] != ' ') v = false; + i = i + 1; + k = k + 1; + } + if (v) { + c = ""; + col = 20; + } else { + c = c + ']'; + col = col + 6; + } + i = i + 1; + cs = copy(s, i, 30); + if (res == 2) col = col * 6; + else col = col * 10; +} + + + +static void posit(integer ji, integer &coldep, integer &esp) { + putxy(coldep + (40 + esp) *pred(integer, ji), 98); +} + + + +static void fait_boite(integer lidep, integer nli, integer tx) { + integer x, y, xx, yy; + + if (tx > 640) tx = 640; + x = 320 - ((cardinal)tx >> 1); + y = pred(integer, lidep) << 3; + xx = x + tx; + yy = y + (nli << 3); + box(15, gd, x, y, xx, yy, 255); + box(0, gd, x, y + 2, xx, y + 4, 255); + box(0, gd, x, yy - 4, xx, yy - 2, 255); +} + + + +static void fait_choix(str30 c, integer &coldep, integer &nbcase, array<1, 2, varying_string<3> > &s, integer &esp) { + integer i, l, x; + char ch; + + i = 1; + x = coldep; + for (l = 1; l <= nbcase; l ++) { + s[l] = ""; + do { + i = i + 1; + ch = c[i]; + s[l] = s[l] + ch; + } while (!(c[i + 1] == ']')); + i = i + 2; + while (length(s[l]) < 3) s[l] = s[l] + ' '; + putxy(x, 98); + writeg(string(' ') + s[l] + ' ', 0); + x = x + esp + 40; + } +} + +integer do_alert(str255 str_, integer n) { + integer coldep, esp, i, l, nbcase, quoi, ix; + str255 st, chaine; + matrix<1, 2, 1, 2, integer> limit; + char c, dumi; + array<1, 2, varying_string<3> > s; + integer cx, cy, cd, nbcol, nblig; + boolean touch, newaff, test, test1, test2, test3, dum; + str30 cas; + + + /*debug('** do_alert **');*/ + integer do_alert_result; + hide_mouse(); + while (keypressed()) input >> kbd >> dumi; + clic = false; + decod(str_, nbcase, nblig, nbcol, chaine, cas); + sauvecr(50, succ(integer, nligne) << 4); + + i = 0; + if (chaine == "") { + fait_boite(10, 5, nbcol); + } else { + fait_boite(8, 7, nbcol); + i = 0; + ywhere = 70; + do { + cx = 320; + st = ""; + while (!(set::of('\174', '\135', eos).has(chaine[i + 1]))) { + i = i + 1; + st = st + chaine[i]; + if (res == 2) cx = cx - 3; + else cx = cx - 5; + } + putxy(cx, ywhere); + ywhere = ywhere + 6; + writeg(st, 4); + i = i + 1; + } while (!(chaine[i] == ']')); + } + if (nbcase == 1) esp = nbcol - 40; + else esp = (cardinal)(nbcol - nbcase * 40) >> 1; + coldep = 320 - ((cardinal)nbcol >> 1) + ((cardinal)esp >> 1); + fait_choix(cas, coldep, nbcase, s, esp); + limit[1][1] = ((cardinal)(coldep) >> 1) * res; + limit[1][2] = limit[1][1] + 40; + if (nbcase == 1) { + limit[2][1] = limit[2][2]; + } else { + limit[2][1] = ((cardinal)(320 + ((cardinal)esp >> 1)) >> 1) * res; + limit[2][2] = (limit[2][1]) + 40; + } + show_mouse(); + quoi = 0; + dum = false; + do { + dumi = '\377'; + mov_mouse(dum, dumi); + cx = x_s; + cy = y_s; + test = (cy > 95) && (cy < 105); + newaff = false; + if (test) { + test1 = (cx > limit[1][1]) && (cx < limit[1][2]); + test2 = test1; + if (nbcase > 1) test2 = test1 || ((cx > limit[2][1]) && (cx < limit[2][2])); + if (test2) { + newaff = true; + if (test1) ix = 1; + else ix = 2; + if (ix != quoi) { + hide_mouse(); + if (quoi != 0) { + posit(quoi, coldep, esp); + writeg(string(' ') + s[quoi] + ' ', 0); + } + posit(ix, coldep, esp); + writeg(string(' ') + s[ix] + ' ', 1); + quoi = ix; + show_mouse(); + } + } + } + if ((quoi != 0) && ! newaff) { + hide_mouse(); + posit(quoi, coldep, esp); + writeg(string(' ') + s[quoi] + ' ', 0); + quoi = 0; + show_mouse(); + } + test3 = (cy > 95) && (cy < 105) && (((cx > limit[1][1]) && (cx < limit[1][2])) + || ((cx > limit[2][1]) && (cx < limit[2][2]))); + } while (!clic); + clic = false; + hide_mouse(); + if (! test3) { + quoi = n; + posit(n, coldep, esp); + writeg(string(' ') + s[n] + ' ', 1); + } + charecr(50, succ(integer, nligne) << 4); + show_mouse(); + do_alert_result = quoi; + return do_alert_result; +} diff --git a/engines/mortevielle/alert.h b/engines/mortevielle/alert.h deleted file mode 100644 index d059fc3ef3..0000000000 --- a/engines/mortevielle/alert.h +++ /dev/null @@ -1,197 +0,0 @@ -/* overlay */ integer do_alert(str255 str_, integer n); - - -const integer nligne = 7; -const matrix<1, 2, 1, 3, integer> coord -= {{ {{150, 72, 103}}, - {{143, 107, 183}} - } -}; - - - -static void decod(str255 s, integer &nbc, integer &nbl, integer &col, str255 &c, str30 &cs) { - integer i, k; - boolean v; - - val(s[2], nbc, i); - c = ""; - nbl = 0; - i = 5; - k = 0; - v = true; - col = 0; - - while (s[i] != ']') { - c = c + s[i]; - if ((s[i] == '|') || (s[i + 1] == ']')) { - if (k > col) col = k; - k = 0; - nbl = nbl + 1; - } else if (s[i] != ' ') v = false; - i = i + 1; - k = k + 1; - } - if (v) { - c = ""; - col = 20; - } else { - c = c + ']'; - col = col + 6; - } - i = i + 1; - cs = copy(s, i, 30); - if (res == 2) col = col * 6; - else col = col * 10; -} - - - -static void posit(integer ji, integer &coldep, integer &esp) { - putxy(coldep + (40 + esp) *pred(integer, ji), 98); -} - - - -static void fait_boite(integer lidep, integer nli, integer tx) { - integer x, y, xx, yy; - - if (tx > 640) tx = 640; - x = 320 - ((cardinal)tx >> 1); - y = pred(integer, lidep) << 3; - xx = x + tx; - yy = y + (nli << 3); - box(15, gd, x, y, xx, yy, 255); - box(0, gd, x, y + 2, xx, y + 4, 255); - box(0, gd, x, yy - 4, xx, yy - 2, 255); -} - - - -static void fait_choix(str30 c, integer &coldep, integer &nbcase, array<1, 2, varying_string<3> > &s, integer &esp) { - integer i, l, x; - char ch; - - i = 1; - x = coldep; - for (l = 1; l <= nbcase; l ++) { - s[l] = ""; - do { - i = i + 1; - ch = c[i]; - s[l] = s[l] + ch; - } while (!(c[i + 1] == ']')); - i = i + 2; - while (length(s[l]) < 3) s[l] = s[l] + ' '; - putxy(x, 98); - writeg(string(' ') + s[l] + ' ', 0); - x = x + esp + 40; - } -} - -integer do_alert(str255 str_, integer n) { - integer coldep, esp, i, l, nbcase, quoi, ix; - str255 st, chaine; - matrix<1, 2, 1, 2, integer> limit; - char c, dumi; - array<1, 2, varying_string<3> > s; - integer cx, cy, cd, nbcol, nblig; - boolean touch, newaff, test, test1, test2, test3, dum; - str30 cas; - - - /*debug('** do_alert **');*/ - integer do_alert_result; - hide_mouse(); - while (keypressed()) input >> kbd >> dumi; - clic = false; - decod(str_, nbcase, nblig, nbcol, chaine, cas); - sauvecr(50, succ(integer, nligne) << 4); - - i = 0; - if (chaine == "") { - fait_boite(10, 5, nbcol); - } else { - fait_boite(8, 7, nbcol); - i = 0; - ywhere = 70; - do { - cx = 320; - st = ""; - while (!(set::of('\174', '\135', eos).has(chaine[i + 1]))) { - i = i + 1; - st = st + chaine[i]; - if (res == 2) cx = cx - 3; - else cx = cx - 5; - } - putxy(cx, ywhere); - ywhere = ywhere + 6; - writeg(st, 4); - i = i + 1; - } while (!(chaine[i] == ']')); - } - if (nbcase == 1) esp = nbcol - 40; - else esp = (cardinal)(nbcol - nbcase * 40) >> 1; - coldep = 320 - ((cardinal)nbcol >> 1) + ((cardinal)esp >> 1); - fait_choix(cas, coldep, nbcase, s, esp); - limit[1][1] = ((cardinal)(coldep) >> 1) * res; - limit[1][2] = limit[1][1] + 40; - if (nbcase == 1) { - limit[2][1] = limit[2][2]; - } else { - limit[2][1] = ((cardinal)(320 + ((cardinal)esp >> 1)) >> 1) * res; - limit[2][2] = (limit[2][1]) + 40; - } - show_mouse(); - quoi = 0; - dum = false; - do { - dumi = '\377'; - mov_mouse(dum, dumi); - cx = x_s; - cy = y_s; - test = (cy > 95) && (cy < 105); - newaff = false; - if (test) { - test1 = (cx > limit[1][1]) && (cx < limit[1][2]); - test2 = test1; - if (nbcase > 1) test2 = test1 || ((cx > limit[2][1]) && (cx < limit[2][2])); - if (test2) { - newaff = true; - if (test1) ix = 1; - else ix = 2; - if (ix != quoi) { - hide_mouse(); - if (quoi != 0) { - posit(quoi, coldep, esp); - writeg(string(' ') + s[quoi] + ' ', 0); - } - posit(ix, coldep, esp); - writeg(string(' ') + s[ix] + ' ', 1); - quoi = ix; - show_mouse(); - } - } - } - if ((quoi != 0) && ! newaff) { - hide_mouse(); - posit(quoi, coldep, esp); - writeg(string(' ') + s[quoi] + ' ', 0); - quoi = 0; - show_mouse(); - } - test3 = (cy > 95) && (cy < 105) && (((cx > limit[1][1]) && (cx < limit[1][2])) - || ((cx > limit[2][1]) && (cx < limit[2][2]))); - } while (!clic); - clic = false; - hide_mouse(); - if (! test3) { - quoi = n; - posit(n, coldep, esp); - writeg(string(' ') + s[n] + ' ', 1); - } - charecr(50, succ(integer, nligne) << 4); - show_mouse(); - do_alert_result = quoi; - return do_alert_result; -} diff --git a/engines/mortevielle/boite.cpp b/engines/mortevielle/boite.cpp new file mode 100644 index 0000000000..4120f7337f --- /dev/null +++ b/engines/mortevielle/boite.cpp @@ -0,0 +1,29 @@ +void boite(integer x, integer y, integer dx, integer dy, integer coul) { + integer i; + integer xi, yi, xo, yo; + + /* debug('boite'); */ + hide_mouse(); + if (res == 1) { + x = (cardinal)x >> 1; + dx = (cardinal)dx >> 1; + } + xi = x; + yi = y; + xo = x; + yo = y; + for (i = 0; i <= dx + dy; i ++) { + putpix(gd, xi, yi, coul); + if (xi == x + dx) { + if (gd != cga) putpix(gd, pred(integer, xi), yi, coul); + yi = succ(integer, yi); + } else xi = succ(integer, xi); + putpix(gd, xo, yo, coul); + if (yo == y + dy) xo = succ(integer, xo); + else { + if (gd != cga) putpix(gd, succ(integer, xo), yo, coul); + yo = succ(integer, yo); + } + } + show_mouse(); +} diff --git a/engines/mortevielle/boite.h b/engines/mortevielle/boite.h deleted file mode 100644 index 4120f7337f..0000000000 --- a/engines/mortevielle/boite.h +++ /dev/null @@ -1,29 +0,0 @@ -void boite(integer x, integer y, integer dx, integer dy, integer coul) { - integer i; - integer xi, yi, xo, yo; - - /* debug('boite'); */ - hide_mouse(); - if (res == 1) { - x = (cardinal)x >> 1; - dx = (cardinal)dx >> 1; - } - xi = x; - yi = y; - xo = x; - yo = y; - for (i = 0; i <= dx + dy; i ++) { - putpix(gd, xi, yi, coul); - if (xi == x + dx) { - if (gd != cga) putpix(gd, pred(integer, xi), yi, coul); - yi = succ(integer, yi); - } else xi = succ(integer, xi); - putpix(gd, xo, yo, coul); - if (yo == y + dy) xo = succ(integer, xo); - else { - if (gd != cga) putpix(gd, succ(integer, xo), yo, coul); - yo = succ(integer, yo); - } - } - show_mouse(); -} diff --git a/engines/mortevielle/disk.cpp b/engines/mortevielle/disk.cpp new file mode 100644 index 0000000000..517d408c87 --- /dev/null +++ b/engines/mortevielle/disk.cpp @@ -0,0 +1,74 @@ + +void dem1() { + untyped_file f; + integer k; + + /* -- demande de disk 1 -- */ + assign(f, "mort.005"); + /*$i-*/ + k = ioresult; + reset(f); + while (ioresult != 0) { + show_mouse(); + k = do_alert(al_mess, 1); + hide_mouse(); + reset(f); + } + close(f); +} + +void takesav(integer n) { + untyped_file f; + integer i; + varying_string<10> st; + + dem1(); + /* -- chargement du fichier 'sauve#n.mor' -- */ + st = string("sav") + chr(n + 48) + ".mor"; + assign(f, st); + reset(f, 497); + blockread(f, s1, 1); + if (ioresult != 0) { + i = do_alert(err_mess, 1); + exit(0); + } + s = s1; + for (i = 0; i <= 389; i ++) tabdon[i + acha] = bufcha[i]; + close(f); +} + +void ld_game(integer n) { + hide_mouse(); + maivid(); + takesav(n); + /* -- disquette 2 -- */ + dem2(); + /* -- mises en place -- */ + theure(); + dprog(); + antegame(); + show_mouse(); +} + +void sv_game(integer n) { + untyped_file f; + integer i; + + hide_mouse(); + tmaj3(); + dem1(); + /* -- sauvegarde du fichier 'sauve#n.mor' -- */ + for (i = 0; i <= 389; i ++) bufcha[i] = tabdon[i + acha]; + s1 = s; + if (s1.mlieu == 26) s1.mlieu = 15; + assign(f, string("sav") + chr(n + 48) + ".mor"); + rewrite(f, 497); + blockwrite(f, s1, 1); + close(f); + dem2(); + show_mouse(); +} + + + + diff --git a/engines/mortevielle/disk.h b/engines/mortevielle/disk.h deleted file mode 100644 index 517d408c87..0000000000 --- a/engines/mortevielle/disk.h +++ /dev/null @@ -1,74 +0,0 @@ - -void dem1() { - untyped_file f; - integer k; - - /* -- demande de disk 1 -- */ - assign(f, "mort.005"); - /*$i-*/ - k = ioresult; - reset(f); - while (ioresult != 0) { - show_mouse(); - k = do_alert(al_mess, 1); - hide_mouse(); - reset(f); - } - close(f); -} - -void takesav(integer n) { - untyped_file f; - integer i; - varying_string<10> st; - - dem1(); - /* -- chargement du fichier 'sauve#n.mor' -- */ - st = string("sav") + chr(n + 48) + ".mor"; - assign(f, st); - reset(f, 497); - blockread(f, s1, 1); - if (ioresult != 0) { - i = do_alert(err_mess, 1); - exit(0); - } - s = s1; - for (i = 0; i <= 389; i ++) tabdon[i + acha] = bufcha[i]; - close(f); -} - -void ld_game(integer n) { - hide_mouse(); - maivid(); - takesav(n); - /* -- disquette 2 -- */ - dem2(); - /* -- mises en place -- */ - theure(); - dprog(); - antegame(); - show_mouse(); -} - -void sv_game(integer n) { - untyped_file f; - integer i; - - hide_mouse(); - tmaj3(); - dem1(); - /* -- sauvegarde du fichier 'sauve#n.mor' -- */ - for (i = 0; i <= 389; i ++) bufcha[i] = tabdon[i + acha]; - s1 = s; - if (s1.mlieu == 26) s1.mlieu = 15; - assign(f, string("sav") + chr(n + 48) + ".mor"); - rewrite(f, 497); - blockwrite(f, s1, 1); - close(f); - dem2(); - show_mouse(); -} - - - - diff --git a/engines/mortevielle/droite.cpp b/engines/mortevielle/droite.cpp new file mode 100644 index 0000000000..8d254a4afc --- /dev/null +++ b/engines/mortevielle/droite.cpp @@ -0,0 +1,34 @@ +void droite(integer x, integer y, integer xx, integer yy, integer coul) { + integer step, i; + real a, b; + real xr, yr, xro, yro; + + xr = x; + yr = y; + xro = xx; + yro = yy; + /*writeln(le_file,'(',x:4,',',y:4,') ==> (',xx:4,',',yy:4,')');*/ + if (abs(y - yy) > abs(x - xx)) { + a = (real)((x - xx)) / (y - yy); + b = (yr * xro - yro * xr) / (y - yy); + i = y; + if (y > yy) step = -1; + else step = 1; + do { + putpix(gd, trunc(a * i + b), i, coul); + i = i + step; + } while (!(i == yy)); + /*writeln(le_file,'X == ',a:3:3,' * Y + ',b:3:3);*/ + } else { + a = (real)((y - yy)) / (x - xx); + b = ((yro * xr) - (yr * xro)) / (x - xx); + i = x; + if (x > xx) step = -1; + else step = 1; + do { + putpix(gd, i, trunc(a * i + b), coul); + i = i + step; + } while (!(i == xx)); + /*writeln(le_file,'Y == ',a:3:3,' * X + ',b:3:3);*/ + } +} \ No newline at end of file diff --git a/engines/mortevielle/droite.h b/engines/mortevielle/droite.h deleted file mode 100644 index 8d254a4afc..0000000000 --- a/engines/mortevielle/droite.h +++ /dev/null @@ -1,34 +0,0 @@ -void droite(integer x, integer y, integer xx, integer yy, integer coul) { - integer step, i; - real a, b; - real xr, yr, xro, yro; - - xr = x; - yr = y; - xro = xx; - yro = yy; - /*writeln(le_file,'(',x:4,',',y:4,') ==> (',xx:4,',',yy:4,')');*/ - if (abs(y - yy) > abs(x - xx)) { - a = (real)((x - xx)) / (y - yy); - b = (yr * xro - yro * xr) / (y - yy); - i = y; - if (y > yy) step = -1; - else step = 1; - do { - putpix(gd, trunc(a * i + b), i, coul); - i = i + step; - } while (!(i == yy)); - /*writeln(le_file,'X == ',a:3:3,' * Y + ',b:3:3);*/ - } else { - a = (real)((y - yy)) / (x - xx); - b = ((yro * xr) - (yr * xro)) / (x - xx); - i = x; - if (x > xx) step = -1; - else step = 1; - do { - putpix(gd, i, trunc(a * i + b), coul); - i = i + step; - } while (!(i == xx)); - /*writeln(le_file,'Y == ',a:3:3,' * X + ',b:3:3);*/ - } -} \ No newline at end of file diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp new file mode 100644 index 0000000000..b450e074c1 --- /dev/null +++ b/engines/mortevielle/keyboard.cpp @@ -0,0 +1,60 @@ +char readkey1() { + char c; + + char readkey1_result; + input >> kbd >> c; + readkey1_result = c; + return readkey1_result; +} + +integer testou() { + char ch; + + integer testou_result; + input >> kbd >> ch; + switch (ch) { + case '\23' : + sonoff = ! sonoff; + break; + case '\1': + case '\3': + case '\5' : { + newgd = (cardinal)pred(integer, ord(ch)) >> 1; + testou_result = 61; + return testou_result; + } + break; + case '\10' : { + newgd = her; + testou_result = 61; + return testou_result; + } + break; + case '\24' : { + newgd = tan; + testou_result = 61; + return testou_result; + } + break; + case '\26' : + if (set::of(1, 2, eos).has(c_zzz)) { + zzuul(adcfiec + 161, 0, 1644); + c_zzz = succ(integer, c_zzz); + testou_result = 61; + return testou_result; + } + break; + case '\33' : + if (keypressed()) input >> kbd >> ch; + break; + } + testou_result = ord(ch); + return testou_result; +} + +void teskbd() { + integer dum; + + if (keypressed()) dum = testou(); +} + diff --git a/engines/mortevielle/keyboard.h b/engines/mortevielle/keyboard.h deleted file mode 100644 index b450e074c1..0000000000 --- a/engines/mortevielle/keyboard.h +++ /dev/null @@ -1,60 +0,0 @@ -char readkey1() { - char c; - - char readkey1_result; - input >> kbd >> c; - readkey1_result = c; - return readkey1_result; -} - -integer testou() { - char ch; - - integer testou_result; - input >> kbd >> ch; - switch (ch) { - case '\23' : - sonoff = ! sonoff; - break; - case '\1': - case '\3': - case '\5' : { - newgd = (cardinal)pred(integer, ord(ch)) >> 1; - testou_result = 61; - return testou_result; - } - break; - case '\10' : { - newgd = her; - testou_result = 61; - return testou_result; - } - break; - case '\24' : { - newgd = tan; - testou_result = 61; - return testou_result; - } - break; - case '\26' : - if (set::of(1, 2, eos).has(c_zzz)) { - zzuul(adcfiec + 161, 0, 1644); - c_zzz = succ(integer, c_zzz); - testou_result = 61; - return testou_result; - } - break; - case '\33' : - if (keypressed()) input >> kbd >> ch; - break; - } - testou_result = ord(ch); - return testou_result; -} - -void teskbd() { - integer dum; - - if (keypressed()) dum = testou(); -} - diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp new file mode 100644 index 0000000000..2c9b8cdcf4 --- /dev/null +++ b/engines/mortevielle/level15.cpp @@ -0,0 +1,175 @@ + +/* NIVEAU 15 */ +void copcha() { + integer i; + + i = acha; + do { + tabdon[i] = tabdon[i + 390]; + i = succ(integer, i); + } while (!(i == acha + 390)); +} + +boolean dans_rect(rectangle r) { + integer x, y, c; + + boolean dans_rect_result; + read_pos_mouse(x, y, c); + if ((x > r.x1) && + (x < r.x2) && + (y > r.y1) && + (y < r.y2)) dans_rect_result = true; + else dans_rect_result = false; + return dans_rect_result; +} + +void outbloc(integer n, pattern p, t_nhom pal) { + integer i, j, ad; + + ad = n * 404 + 0xd700; + { + memw[0x6000 + ad] = p.tax; + memw[0x6000 + ad + 2] = p.tay; + ad = ad + 4; + for (i = 1; i <= p.tax; i ++) + for (j = 1; j <= p.tay; j ++) + mem[0x6000 + ad + pred(integer, j)*p.tax + pred(integer, i)] = pal[n].hom[p.des[i][j]]; + } +} + + +void writepal(integer n) { + integer i; + t_nhom pal; + + + switch (gd) { + case tan: + case ega: + case ams : + for (i = 1; i <= 16; i ++) { + mem[0x7000 + 2 * i] = tabpal[n][i].x; + mem[0x7000 + succ(integer, 2 * i)] = tabpal[n][i].y; + } + break; + case cga : { + pal = palcga[n].a; + if (n < 89) palette(palcga[n].p); + for (i = 0; i <= 15; i ++) outbloc(i, tpt[pal[i].n], pal); + } + break; + } +} + + +void pictout(integer seg, integer dep, integer x, integer y) { + decomp(seg, dep); + if (gd == her) { + mem[0x7000 + 2] = 0; + mem[0x7000 + 32] = 15; + } + if ((caff != 51) && (memw[0x7000 + 0x4138] > 0x100)) memw[0x7000 + 0x4138] = 0x100; + afff(gd, seg, dep, x, y); +} + +void putxy(integer x, integer y) { + xwhere = x; + ywhere = y; +} +/* +function calad(x,y:integer):integer; + begin + calad:=pred(x)+320*pred(y) + end; + */ +void sauvecr(integer y, integer dy) { + hide_mouse(); + s_sauv(gd, y, dy); + show_mouse(); +} + +void charecr(integer y, integer dy) { + hide_mouse(); + s_char(gd, y, dy); + show_mouse(); +} +/* +function peek(ad:integer):integer; +begin + peek:=tabdon[ad]; +end; + +function peekw(ad:integer):integer; +begin + peekw:=tabdon[ad] shl 8+tabdon[succ(ad)]; +end; + +function peekl(ad:integer):real; +begin + peekl:=tabdon[ad+3]+tabdon[ad+2] shl 8; +end; + + +procedure poke (ad,n:integer); +begin + tabdon[ad]:=lo(n); +end; + */ + +void adzon() { + untyped_file f; + file g; + byte a; + integer i; + + assign(f, "don.mor"); + reset(f, 256); + blockread(f, tabdon, 7); + close(f); + assign(f, "bmor.mor"); + reset(f, 1916); + blockread(f, tabdon[fleche], 1); + /*i:=fleche; + repeat + read(g,a); + tabdon[i]:=a; + i:=succ(i); + until i=fleche + 1916;*/ + close(f); + assign(f, "dec.mor"); + reset(f, 1664); + blockread(f, mem[0x73a2 + 0], 1); + /*i:=0; + repeat + read(g,a); + mem[$73A2:i]:=a; + i:=succ(i); + until eof(g);*/ + close(f); +} + +integer animof(integer ouf, integer num) { + integer nani, aux; + + integer animof_result; + nani = mem[adani + 1]; + aux = num; + if (ouf != 1) aux = aux + nani; + animof_result = (nani << 2) + 2 + swap(memw[adani + (aux << 1)]); + /*aux:= nani shl 2 + 2; + if ouf=1 then aux:= aux+ swap(memw[adani: num shl 1]) + else aux:= aux+ swap(memw[adani: (nani+num) shl 1]); + animof:=aux;*/ + return animof_result; +} + +/*procedure affgd(offs,dep,x,y:integer); +begin + case Gd of + Ams : affams(offs,dep,x,y); + Cga : affcga(offs,dep,x,y); + Ega : affega(offs,dep,x,y); + Her : affher(offs,dep,x,y); + Tan : afftan(offs,dep,x,y); + end; +end;*/ diff --git a/engines/mortevielle/level15.h b/engines/mortevielle/level15.h deleted file mode 100644 index 2c9b8cdcf4..0000000000 --- a/engines/mortevielle/level15.h +++ /dev/null @@ -1,175 +0,0 @@ - -/* NIVEAU 15 */ -void copcha() { - integer i; - - i = acha; - do { - tabdon[i] = tabdon[i + 390]; - i = succ(integer, i); - } while (!(i == acha + 390)); -} - -boolean dans_rect(rectangle r) { - integer x, y, c; - - boolean dans_rect_result; - read_pos_mouse(x, y, c); - if ((x > r.x1) && - (x < r.x2) && - (y > r.y1) && - (y < r.y2)) dans_rect_result = true; - else dans_rect_result = false; - return dans_rect_result; -} - -void outbloc(integer n, pattern p, t_nhom pal) { - integer i, j, ad; - - ad = n * 404 + 0xd700; - { - memw[0x6000 + ad] = p.tax; - memw[0x6000 + ad + 2] = p.tay; - ad = ad + 4; - for (i = 1; i <= p.tax; i ++) - for (j = 1; j <= p.tay; j ++) - mem[0x6000 + ad + pred(integer, j)*p.tax + pred(integer, i)] = pal[n].hom[p.des[i][j]]; - } -} - - -void writepal(integer n) { - integer i; - t_nhom pal; - - - switch (gd) { - case tan: - case ega: - case ams : - for (i = 1; i <= 16; i ++) { - mem[0x7000 + 2 * i] = tabpal[n][i].x; - mem[0x7000 + succ(integer, 2 * i)] = tabpal[n][i].y; - } - break; - case cga : { - pal = palcga[n].a; - if (n < 89) palette(palcga[n].p); - for (i = 0; i <= 15; i ++) outbloc(i, tpt[pal[i].n], pal); - } - break; - } -} - - -void pictout(integer seg, integer dep, integer x, integer y) { - decomp(seg, dep); - if (gd == her) { - mem[0x7000 + 2] = 0; - mem[0x7000 + 32] = 15; - } - if ((caff != 51) && (memw[0x7000 + 0x4138] > 0x100)) memw[0x7000 + 0x4138] = 0x100; - afff(gd, seg, dep, x, y); -} - -void putxy(integer x, integer y) { - xwhere = x; - ywhere = y; -} -/* -function calad(x,y:integer):integer; - begin - calad:=pred(x)+320*pred(y) - end; - */ -void sauvecr(integer y, integer dy) { - hide_mouse(); - s_sauv(gd, y, dy); - show_mouse(); -} - -void charecr(integer y, integer dy) { - hide_mouse(); - s_char(gd, y, dy); - show_mouse(); -} -/* -function peek(ad:integer):integer; -begin - peek:=tabdon[ad]; -end; - -function peekw(ad:integer):integer; -begin - peekw:=tabdon[ad] shl 8+tabdon[succ(ad)]; -end; - -function peekl(ad:integer):real; -begin - peekl:=tabdon[ad+3]+tabdon[ad+2] shl 8; -end; - - -procedure poke (ad,n:integer); -begin - tabdon[ad]:=lo(n); -end; - */ - -void adzon() { - untyped_file f; - file g; - byte a; - integer i; - - assign(f, "don.mor"); - reset(f, 256); - blockread(f, tabdon, 7); - close(f); - assign(f, "bmor.mor"); - reset(f, 1916); - blockread(f, tabdon[fleche], 1); - /*i:=fleche; - repeat - read(g,a); - tabdon[i]:=a; - i:=succ(i); - until i=fleche + 1916;*/ - close(f); - assign(f, "dec.mor"); - reset(f, 1664); - blockread(f, mem[0x73a2 + 0], 1); - /*i:=0; - repeat - read(g,a); - mem[$73A2:i]:=a; - i:=succ(i); - until eof(g);*/ - close(f); -} - -integer animof(integer ouf, integer num) { - integer nani, aux; - - integer animof_result; - nani = mem[adani + 1]; - aux = num; - if (ouf != 1) aux = aux + nani; - animof_result = (nani << 2) + 2 + swap(memw[adani + (aux << 1)]); - /*aux:= nani shl 2 + 2; - if ouf=1 then aux:= aux+ swap(memw[adani: num shl 1]) - else aux:= aux+ swap(memw[adani: (nani+num) shl 1]); - animof:=aux;*/ - return animof_result; -} - -/*procedure affgd(offs,dep,x,y:integer); -begin - case Gd of - Ams : affams(offs,dep,x,y); - Cga : affcga(offs,dep,x,y); - Ega : affega(offs,dep,x,y); - Her : affher(offs,dep,x,y); - Tan : afftan(offs,dep,x,y); - end; -end;*/ diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp new file mode 100644 index 0000000000..691ef7c852 --- /dev/null +++ b/engines/mortevielle/menu.cpp @@ -0,0 +1,334 @@ +/* NIVEAU 14*/ + +/* overlay */ void menut(integer no, str30 nom) { + byte h, l; + str30 s; + + + /* debug('menut'); */ + h = hi(no); + l = lo(no); + s = nom; + if (! tesok) { + clrscr; + exit(0); + } + while (length(s) < 30) s = s + ' '; + switch (h) { + case invent : + if (l != 7) inv[l] = string(' ') + s; + break; + case depla : + dep[l] = s; + break; + case action : + act[l] = s; + break; + case saction : + self_[l] = s; + break; + case discut : + dis[l] = s; + break; + } +} + +/* overlay */ void menu_disable(integer no) { + byte h, l; + + /* debug('menu_disable'); */ + h = hi(no); + l = lo(no); + switch (h) { + case invent : { + if (l > 6) { + inv[l][1] = '<'; + inv[l][22] = '>'; + } else inv[l][1] = '*'; + } + break; + case depla : + dep[l][1] = '*'; + break; + case action : + act[l][1] = '*'; + break; + case saction : + self_[l][1] = '*'; + break; + case discut : + dis[l][1] = '*'; + break; + } +} + +/* overlay */ void menu_enable(integer no) { + byte h, l; + + /* debug('menu_disable'); */ + h = hi(no); + l = lo(no); + switch (h) { + case invent : { + inv[l][1] = ' '; + inv[l][22] = ' '; + } + break; + case depla : + dep[l][1] = ' '; + break; + case action : + act[l][1] = ' '; + break; + case saction : { + self_[l][1] = ' '; + self_[l][1] = ' '; + } + break; + case discut : + dis[l][1] = ' '; + break; + } +} + +void menu_aff() { + integer ind_tabl, k, col; + char c; + integer pt, x, y, color, msk, + num_letr; + + /* debug('menu_aff'); */ + hide_mouse(); + /*if not tesok then + begin + clrscr; + halt; + end;*/ + box(7, gd, 0, 0, 639, 10, 255); + col = 28 * res; + if (gd == cga) color = 1; + else color = 9; + num_letr = 0; + do { /* lettre par lettre */ + num_letr = num_letr + 1; + ind_tabl = 0; + y = 1; + do { /* colonne par colonne */ + k = 0; + x = col; + do { /* ligne par ligne */ + msk = 0x80; + for (pt = 0; pt <= 7; pt ++) { + if ((lettres[num_letr][ind_tabl] & msk) != 0) { + putpix(gd, x + 1, y + 1, 0); + putpix(gd, x, y + 1, 0); + putpix(gd, x, y, color); + } + msk = (cardinal)msk >> 1; + x = x + 1; + } + ind_tabl = succ(integer, ind_tabl); + k = succ(integer, k); + } while (!(k == 3)); + y = y + 1; + } while (!(y == 9)); + col = col + 48 * res; + } while (!(num_letr == 6)); + show_mouse(); +} + + +void draw_menu() { + /* debug('draw_menu'); */ + menu_aff(); + active_menu = true; + msg4 = no_choice; + msg3 = no_choice; + choisi = false; + clic = false; + test0 = false; +} + +void invers(integer ix) { + varying_string<23> s; + + /* debug('invers'); */ + if (msg4 == no_choice) return; + putxy(don[msg3][1] << 3, succ(void, lo(msg4)) << 3); + switch (msg3) { + case 1 : + s = inv[lo(msg4)]; + break; + case 2 : + s = dep[lo(msg4)]; + break; + case 3 : + s = act[lo(msg4)]; + break; + case 4 : + s = self_[lo(msg4)]; + break; + case 5 : + s = dis[lo(msg4)]; + break; + case 6 : + s = fic[lo(msg4)]; + break; + case 7 : + s = fic[1] + ' ' + chr(48 + lo(msg4)); + break; + case 8 : + if (lo(msg4) == 1) s = recom; + else s = fic[2] + ' ' + chr(47 + lo(msg4)); + break; + } + if ((s[1] != '*') && (s[1] != '<')) writeg(s, ix); + else msg4 = no_choice; +} + +void util(integer x, integer y) { + integer ymx, dxcar, xmn, xmx, ix; + + /* debug('util'); */ + ymx = (don[msg3][4] << 3) + 16; + dxcar = don[msg3][3]; + xmn = (don[msg3][1] << 2) * res; + if (res == 1) ix = 5; + else ix = 3; + xmx = dxcar * ix * res + xmn + 2; + if ((x > xmn) && (x < xmx) && (y < ymx) && (y > 15)) { + ix = pred(integer, (cardinal)y >> 3) + (msg3 << 8); + if (ix != msg4) { + invers(1); + msg4 = ix; + invers(0); + } + } else if (msg4 != no_choice) { + invers(1); + msg4 = no_choice; + } +} + +void menu_down(integer ii) { + integer cx, xcc; + integer xco, nb_lig; + + /* debug('menu_down'); */ + xco = don[ii][1]; + nb_lig = don[ii][4]; + hide_mouse(); + sauvecr(10, succ(byte, don[ii][2]) << 1); + xco = xco << 3; + if (res == 1) cx = 10; + else cx = 6; + xcc = xco + (don[ii][3] * cx) + 6; + box(15, gd, xco, 12, xcc, 10 + (don[ii][2] << 1), 255); + box(0, gd, xcc, 12, xcc + 4, 10 + (don[ii][2] << 1), 255); + box(0, gd, xco, 8 + (don[ii][2] << 1), xcc + 4, 12 + (don[ii][2] << 1), 255); + putxy(xco, 16); + cx = 0; + do { + cx = succ(integer, cx); + switch (ii) { + case 1 : + if (inv[cx][1] != '*') writeg(inv[cx], 4); + break; + case 2 : + if (dep[cx][1] != '*') writeg(dep[cx], 4); + break; + case 3 : + if (act[cx][1] != '*') writeg(act[cx], 4); + break; + case 4 : + if (self_[cx][1] != '*') writeg(self_[cx], 4); + break; + case 5 : + if (dis[cx][1] != '*') writeg(dis[cx], 4); + break; + case 6 : + writeg(fic[cx], 4); + break; + case 7 : + writeg(fic[1] + ' ' + chr(48 + cx), 4); + break; + case 8 : + if (cx == 1) writeg(recom, 4); + else writeg(fic[2] + ' ' + chr(47 + cx), 4); + break; + } + putxy(xco, ywhere + 8); + } while (!(cx == nb_lig)); + test0 = true; + show_mouse(); +} + +void menu_up(integer xx) { + /* debug('menu_up'); */ + if (test0) { + charecr(10, succ(byte, don[xx][2]) << 1); + test0 = false; + } +} + +void erase_menu() { + /* debug('erase_menu'); */ + active_menu = false; + clic = false; + menu_up(msg3); +} + +void mdn() { + integer x, y, c, a, ix; + boolean tes; + + /* debug('mdn'); */ + if (! active_menu) return; + x = x_s; + y = y_s; + if (! clic) { + if ((x == xprec) && + (y == yprec)) return; + else { + xprec = x; + yprec = y; + } + tes = (y < 11) && ((set::of(range(28 * res, 28 * res + 24), range(76 * res, 76 * res + 24), eos).has(x)) + || ((x > 124 * res) && (x < 124 * res + 24)) + || ((x > 172 * res) && (x < 172 * res + 24)) + || ((x > 220 * res) && (x < 220 * res + 24)) + || ((x > 268 * res) && (x < 268 * res + 24))); + if (tes) { + if (x < 76 * res) ix = invent; + else if (x < 124 * res) ix = depla; + else if (x < 172 * res) ix = action; + else if (x < 220 * res) ix = saction; + else if (x < 268 * res) ix = discut; + else ix = fichier; + if ((ix != msg3) || (! test0)) + if (!((ix == fichier) && (set::of(sauve, charge, eos).has(msg3)))) { + menu_up(msg3); + menu_down(ix); + msg3 = ix; + msg4 = no_choice; + } + } else { /* Not in the MenuTitle line */ + if ((y > 11) && (test0)) util(x, y); + } + } else /* il y a eu 'clic' */ + if ((msg3 == fichier) && (msg4 != no_choice)) { + clic = false; + menu_up(msg3); + if (lo(msg4) == 1) msg3 = 7; + else msg3 = 8; + menu_down(msg3); + } else { /* il y a eu clic sur un autre menu */ + choisi = (test0) && (msg4 != no_choice); + menu_up(msg3); + msg[4] = msg4; + msg[3] = msg3; + msg3 = no_choice; + msg4 = no_choice; + clic = false; + } +} + diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h deleted file mode 100644 index 691ef7c852..0000000000 --- a/engines/mortevielle/menu.h +++ /dev/null @@ -1,334 +0,0 @@ -/* NIVEAU 14*/ - -/* overlay */ void menut(integer no, str30 nom) { - byte h, l; - str30 s; - - - /* debug('menut'); */ - h = hi(no); - l = lo(no); - s = nom; - if (! tesok) { - clrscr; - exit(0); - } - while (length(s) < 30) s = s + ' '; - switch (h) { - case invent : - if (l != 7) inv[l] = string(' ') + s; - break; - case depla : - dep[l] = s; - break; - case action : - act[l] = s; - break; - case saction : - self_[l] = s; - break; - case discut : - dis[l] = s; - break; - } -} - -/* overlay */ void menu_disable(integer no) { - byte h, l; - - /* debug('menu_disable'); */ - h = hi(no); - l = lo(no); - switch (h) { - case invent : { - if (l > 6) { - inv[l][1] = '<'; - inv[l][22] = '>'; - } else inv[l][1] = '*'; - } - break; - case depla : - dep[l][1] = '*'; - break; - case action : - act[l][1] = '*'; - break; - case saction : - self_[l][1] = '*'; - break; - case discut : - dis[l][1] = '*'; - break; - } -} - -/* overlay */ void menu_enable(integer no) { - byte h, l; - - /* debug('menu_disable'); */ - h = hi(no); - l = lo(no); - switch (h) { - case invent : { - inv[l][1] = ' '; - inv[l][22] = ' '; - } - break; - case depla : - dep[l][1] = ' '; - break; - case action : - act[l][1] = ' '; - break; - case saction : { - self_[l][1] = ' '; - self_[l][1] = ' '; - } - break; - case discut : - dis[l][1] = ' '; - break; - } -} - -void menu_aff() { - integer ind_tabl, k, col; - char c; - integer pt, x, y, color, msk, - num_letr; - - /* debug('menu_aff'); */ - hide_mouse(); - /*if not tesok then - begin - clrscr; - halt; - end;*/ - box(7, gd, 0, 0, 639, 10, 255); - col = 28 * res; - if (gd == cga) color = 1; - else color = 9; - num_letr = 0; - do { /* lettre par lettre */ - num_letr = num_letr + 1; - ind_tabl = 0; - y = 1; - do { /* colonne par colonne */ - k = 0; - x = col; - do { /* ligne par ligne */ - msk = 0x80; - for (pt = 0; pt <= 7; pt ++) { - if ((lettres[num_letr][ind_tabl] & msk) != 0) { - putpix(gd, x + 1, y + 1, 0); - putpix(gd, x, y + 1, 0); - putpix(gd, x, y, color); - } - msk = (cardinal)msk >> 1; - x = x + 1; - } - ind_tabl = succ(integer, ind_tabl); - k = succ(integer, k); - } while (!(k == 3)); - y = y + 1; - } while (!(y == 9)); - col = col + 48 * res; - } while (!(num_letr == 6)); - show_mouse(); -} - - -void draw_menu() { - /* debug('draw_menu'); */ - menu_aff(); - active_menu = true; - msg4 = no_choice; - msg3 = no_choice; - choisi = false; - clic = false; - test0 = false; -} - -void invers(integer ix) { - varying_string<23> s; - - /* debug('invers'); */ - if (msg4 == no_choice) return; - putxy(don[msg3][1] << 3, succ(void, lo(msg4)) << 3); - switch (msg3) { - case 1 : - s = inv[lo(msg4)]; - break; - case 2 : - s = dep[lo(msg4)]; - break; - case 3 : - s = act[lo(msg4)]; - break; - case 4 : - s = self_[lo(msg4)]; - break; - case 5 : - s = dis[lo(msg4)]; - break; - case 6 : - s = fic[lo(msg4)]; - break; - case 7 : - s = fic[1] + ' ' + chr(48 + lo(msg4)); - break; - case 8 : - if (lo(msg4) == 1) s = recom; - else s = fic[2] + ' ' + chr(47 + lo(msg4)); - break; - } - if ((s[1] != '*') && (s[1] != '<')) writeg(s, ix); - else msg4 = no_choice; -} - -void util(integer x, integer y) { - integer ymx, dxcar, xmn, xmx, ix; - - /* debug('util'); */ - ymx = (don[msg3][4] << 3) + 16; - dxcar = don[msg3][3]; - xmn = (don[msg3][1] << 2) * res; - if (res == 1) ix = 5; - else ix = 3; - xmx = dxcar * ix * res + xmn + 2; - if ((x > xmn) && (x < xmx) && (y < ymx) && (y > 15)) { - ix = pred(integer, (cardinal)y >> 3) + (msg3 << 8); - if (ix != msg4) { - invers(1); - msg4 = ix; - invers(0); - } - } else if (msg4 != no_choice) { - invers(1); - msg4 = no_choice; - } -} - -void menu_down(integer ii) { - integer cx, xcc; - integer xco, nb_lig; - - /* debug('menu_down'); */ - xco = don[ii][1]; - nb_lig = don[ii][4]; - hide_mouse(); - sauvecr(10, succ(byte, don[ii][2]) << 1); - xco = xco << 3; - if (res == 1) cx = 10; - else cx = 6; - xcc = xco + (don[ii][3] * cx) + 6; - box(15, gd, xco, 12, xcc, 10 + (don[ii][2] << 1), 255); - box(0, gd, xcc, 12, xcc + 4, 10 + (don[ii][2] << 1), 255); - box(0, gd, xco, 8 + (don[ii][2] << 1), xcc + 4, 12 + (don[ii][2] << 1), 255); - putxy(xco, 16); - cx = 0; - do { - cx = succ(integer, cx); - switch (ii) { - case 1 : - if (inv[cx][1] != '*') writeg(inv[cx], 4); - break; - case 2 : - if (dep[cx][1] != '*') writeg(dep[cx], 4); - break; - case 3 : - if (act[cx][1] != '*') writeg(act[cx], 4); - break; - case 4 : - if (self_[cx][1] != '*') writeg(self_[cx], 4); - break; - case 5 : - if (dis[cx][1] != '*') writeg(dis[cx], 4); - break; - case 6 : - writeg(fic[cx], 4); - break; - case 7 : - writeg(fic[1] + ' ' + chr(48 + cx), 4); - break; - case 8 : - if (cx == 1) writeg(recom, 4); - else writeg(fic[2] + ' ' + chr(47 + cx), 4); - break; - } - putxy(xco, ywhere + 8); - } while (!(cx == nb_lig)); - test0 = true; - show_mouse(); -} - -void menu_up(integer xx) { - /* debug('menu_up'); */ - if (test0) { - charecr(10, succ(byte, don[xx][2]) << 1); - test0 = false; - } -} - -void erase_menu() { - /* debug('erase_menu'); */ - active_menu = false; - clic = false; - menu_up(msg3); -} - -void mdn() { - integer x, y, c, a, ix; - boolean tes; - - /* debug('mdn'); */ - if (! active_menu) return; - x = x_s; - y = y_s; - if (! clic) { - if ((x == xprec) && - (y == yprec)) return; - else { - xprec = x; - yprec = y; - } - tes = (y < 11) && ((set::of(range(28 * res, 28 * res + 24), range(76 * res, 76 * res + 24), eos).has(x)) - || ((x > 124 * res) && (x < 124 * res + 24)) - || ((x > 172 * res) && (x < 172 * res + 24)) - || ((x > 220 * res) && (x < 220 * res + 24)) - || ((x > 268 * res) && (x < 268 * res + 24))); - if (tes) { - if (x < 76 * res) ix = invent; - else if (x < 124 * res) ix = depla; - else if (x < 172 * res) ix = action; - else if (x < 220 * res) ix = saction; - else if (x < 268 * res) ix = discut; - else ix = fichier; - if ((ix != msg3) || (! test0)) - if (!((ix == fichier) && (set::of(sauve, charge, eos).has(msg3)))) { - menu_up(msg3); - menu_down(ix); - msg3 = ix; - msg4 = no_choice; - } - } else { /* Not in the MenuTitle line */ - if ((y > 11) && (test0)) util(x, y); - } - } else /* il y a eu 'clic' */ - if ((msg3 == fichier) && (msg4 != no_choice)) { - clic = false; - menu_up(msg3); - if (lo(msg4) == 1) msg3 = 7; - else msg3 = 8; - menu_down(msg3); - } else { /* il y a eu clic sur un autre menu */ - choisi = (test0) && (msg4 != no_choice); - menu_up(msg3); - msg[4] = msg4; - msg[3] = msg3; - msg3 = no_choice; - msg4 = no_choice; - clic = false; - } -} - diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp new file mode 100644 index 0000000000..fd4e2f5ffa --- /dev/null +++ b/engines/mortevielle/mor.cpp @@ -0,0 +1,1311 @@ +/* Niveau 14 suite */ +const char m1[] = "quelqu'un entre, parait ‚tonn‚ mais ne dit rien"; + + +void testfi() { + if (ioresult != 0) { + caff = do_alert(err_mess, 1); + exit(0); + } +} + + +integer readclock() { + registres r; + integer s, m, h; + + /* debug('readclock');*/ + integer readclock_result; + r.ax = 0x2c00; + intr(0x21, r); + { + h = (cardinal)r.cx >> 8; + m = r.cx % 256; + s = (cardinal)r.dx >> 8; + } + m = m * 60; + h = h * 3600; + readclock_result = h + m + s; + return readclock_result; +} + +void modif(integer &nu) { + /* debug('modif'); */ + if (nu == 26) nu = 25; + if ((nu > 29) && (nu < 36)) nu = nu - 4; + if ((nu > 69) && (nu < 78)) nu = nu - 37; + if ((nu > 99) && (nu < 194)) nu = nu - 59; + if ((nu > 996) && (nu < 1000)) nu = nu - 862; + if ((nu > 1500) && (nu < 1507)) nu = nu - 1363; + if ((nu > 1507) && (nu < 1513)) nu = nu - 1364; + if ((nu > 1999) && (nu < 2002)) nu = nu - 1851; + if (nu == 2010) nu = 151; + if ((nu > 2011) && (nu < 2025)) nu = nu - 1860; + if (nu == 2026) nu = 165; + if ((nu > 2029) && (nu < 2037)) nu = nu - 1864; + if ((nu > 3000) && (nu < 3005)) nu = nu - 2828; + if (nu == 4100) nu = 177; + if (nu == 4150) nu = 178; + if ((nu > 4151) && (nu < 4156)) nu = nu - 3973; + if (nu == 4157) nu = 183; + if ((nu == 4160) || (nu == 4161)) nu = nu - 3976; +} + + +void dessine(integer ad, integer x, integer y) { + /* debug('dessine'); */ + hide_mouse(); + writepal(numpal); + pictout(ad, 0, x, y); + show_mouse(); +} + +void dessine_rouleau() { + /* debug('dessine_rouleau'); */ + writepal(89); + if (gd == her) { + mem[0x7000 + 14] = 15; + } + hide_mouse(); + pictout(0x73a2, 0, 0, 0); + show_mouse(); +} + + +void text_color(integer c) { + color_txt = c; +} + +/* NIVEAU 13 */ + + +void text1(integer x, integer y, integer nb, integer m) { + phrase st; + integer tay; + integer co; + + + /* debug('text'); */ + if (res == 1) co = 10; + else co = 6; + deline(m, st, tay); + if ((y == 182) && (tay * co > nb * 6)) y = 176; + afftex(st, x, y, nb, 20, color_txt); +} + +void initouv() { + integer cx; + + /* debug('initouv'); */ + for (cx = 1; cx <= 7; cx ++) touv[cx] = chr(0); +} + +void ecrf1() { + boite(0, 11, 512, 163, 15); /* grand dessin */ +} + +void clsf1() { + integer i, j; + + /* debug('clsf1'); */ + hide_mouse(); + box(0, gd, 0, 11, 514, 175, 255); + /* if Gd=ams then port[$3DD]:=15; + case Gd of + ams, + cga : begin + for j:=0 to 63 do + begin + for i:=6 to 86 do + begin + mem[$B800:i*80+j]:=0; + mem[$Ba00:i*80+j]:=0; + end; + mem[$b800:6960+j]:=0; + mem[$ba00:400+j]:=0; + end; + end; + ega : begin + port[$3C4]:= 2; + port[$3C5]:= 15; + port[$3CE]:= 8; + port[$3CF]:= 255; + for j:=0 to 63 do + for i:=11 to 174 do + mem[$A000:i*80+j]:=0; + end; + tan : begin + for j:=0 to 128 do + begin + for i:=3 to 43 do + begin + mem[$B800:i*160+j]:=0; + mem[$Ba00:i*160+j]:=0; + mem[$bc00:i*160+j]:=0; + if i<>43 then mem[$be00:i*160+j]:=0; + end; + mem[$be00:320+j]:=0; + end; + end; + end; + droite(256*res,11,256*res,175,0);*/ + show_mouse(); +} + +void clsf2() { + integer i, j; + + /* debug('clsf2'); */ + hide_mouse(); + if (f2_all) { + box(0, gd, 1, 176, 633, 199, 255); + boite(0, 175, 634, 24, 15); + f2_all = false; + } else { + box(0, gd, 1, 176, 633, 190, 255); + boite(0, 175, 634, 15, 15); + } + show_mouse(); +} + +void ecrf2() { + /* debug('ecrf2'); */ + text_color(5); + /*boite(0,175,630,15,15);*/ +} + +void ecr2(str255 str_) { + integer tab; + integer tlig; + + /* debug('ecr2 : '+str_);*/ + if (res == 1) tab = 10; + else tab = 6; + putxy(8, 177); + tlig = 59 + pred(integer, res) * 36; + if (length(str_) < tlig) writeg(str_, 5); + else if (length(str_) < (tlig << 1)) { + putxy(8, 176); + writeg(copy(str_, 1, pred(integer, tlig)), 5); + putxy(8, 182); + writeg(copy(str_, tlig, tlig << 1), 5); + } else { + f2_all = true; + clsf2(); + putxy(8, 176); + writeg(copy(str_, 1, pred(integer, tlig)), 5); + putxy(8, 182); + writeg(copy(str_, tlig, pred(integer, tlig << 1)), 5); + putxy(8, 190); + writeg(copy(str_, tlig << 1, tlig * 3), 5); + } +} + +void clsf3() { + integer i, j; + + /* debug('clsf3'); */ + hide_mouse(); + box(0, gd, 1, 192, 633, 199, 255); + boite(0, 191, 634, 8, 15); + show_mouse(); +} + +void ecr3(str255 text) { + /* debug('ecr3 : '+text);*/ + clsf3(); + putxy(8, 192); + writeg(text, 5); +} + +void ecrf6() { + /* debug('ecrf6'); */ + text_color(5); + boite(62, 33, 363, 80, 15); +} + +void ecrf7() { + text_color(4); + /* draw_mode(2); + text_height(4*res); + text_style(normal);*/ +} + +void clsf10() { + integer co, cod; + varying_string<8> st; + + /* debug('clsf10'); */ + hide_mouse(); + if (res == 1) { + co = 634; + cod = 534; + } else { + co = 600; + cod = 544; + } + box(15, gd, cod, 93, co, 98, 255); + if (s.conf < 33) st = "Cool"; + else if (s.conf < 66) st = " Lourde "; + else if (s.conf > 65) st = "Malsaine"; + if (res == 1) co = 10; + else co = 6; + co = 574 - ((cardinal)co * length(st) >> 1); + putxy(co, 92); + writeg(st, 4); + if (res == 1) co = 620; + else co = 584; + box(15, gd, 560, 24, co, 86, 255); + /* rempli(69,12,32,5,255);*/ + show_mouse(); +} + +void stop() { + clrscr; + hirs(); + gd = ams; + hirs(); + exit(0); +} + +void paint_rect(integer x, integer y, integer dx, integer dy) { + integer co; + + /* debug('paint_rect'); */ + if (gd == cga) co = 3; + else co = 11; + box(co, gd, x, y, x + dx, y + dy, 255); +} + +integer hazard(integer min, integer max) { + integer ha1; + real ha2; + + /* debug('hazard'); */ + integer hazard_result; + ha2 = Random(); + ha1 = trunc(ha2 * (max - min)); + hazard_result = min + ha1; + return hazard_result; +} + +void calch(integer &j, integer &h, integer &m) { + integer th, nh; + + /* debug('calch');*/ + nh = readclock(); + th = jh + ((nh - mh) / t); + m = ((th % 2) + vm) * 30; + h = ((cardinal)th >> 1) + vh; + if (m == 60) { + m = 0; + h = h + 1; + } + j = (h / 24) + vj; + h = h - ((j - vj) * 24); +} + +void conv(integer x, integer &y) { + integer cx; + + /* debug('conv'); */ + cx = 1; + y = 128; + while (cx < x) { + y = (cardinal)y >> 1; + cx = succ(integer, cx); + } +} + +/* NIVEAU 12 */ +void okpas() { + tesok = true; +} + +void modobj(integer m) { + phrase str_; + str30 strp; + integer i, tay; + + /* debug('modobj'); */ + strp = ' '; + if (m != 500) { + deline(m - 501 + c_st41, str_, tay); + strp = delig; + } + menut(invt[8], strp); + menu_disable(invt[8]); +} + +void modobj2(integer m, boolean t1, boolean t2) { + phrase str_; + str30 strp; + integer i, tay; + + /* debug('modobj'); */ + strp = ' '; + if (t1 || t2) okpas(); + else tesok = false;; + if (m != 500) { + deline(m - 501 + c_st41, str_, tay); + strp = delig; + } + menut(invt[8], strp); + menu_disable(invt[8]); +} + + +void repon(integer f, integer m) { + str255 str_; + varying_string<40> str1; + phrase st; + text1 fic; + integer i, xco, dx, caspe, tay; + + /* debug('repon fenetre nř'+chr(f+48));*/ + if ((m > 499) && (m < 563)) { + deline(m - 501 + c_st41, st, tay); + if (tay > ((58 + pred(integer, res) * 37) << 1)) f2_all = true; + else f2_all = false; + clsf2(); + afftex(st, 8, 176, 85, 3, 5); + } else { + modif(m); + if (f == 8) f = 2; + if (f == 1) f = 6; + if (f == 2) { + clsf2(); + ecrf2(); + text1(8, 182, 103, m); + if ((m == 68) || (m == 69)) s.teauto[40] = '*'; + if ((m == 104) && (caff == 14)) { + s.teauto[36] = '*'; + if (s.teauto[39] == '*') { + s.pourc[3] = '*'; + s.teauto[38] = '*'; + } + } + } + if (set::of(6, 9, eos).has(f)) { + deline(m, st, tay); + if (f == 6) i = 4; + else i = 5; + afftex(st, 80, 40, 60, 25, i); + if (m == 180) s.pourc[6] = '*'; + if (m == 179) s.pourc[10] = '*'; + } + if (f == 7) { /* messint */ + ecrf7(); + deline(m, st, tay); + if (res == 1) { + xco = 252 - tay * 5; + caspe = 100; + dx = 80; + } else { + xco = 252 - tay * 3; + caspe = 144; + dx = 50; + } + if (tay < 40) afftex(st, xco, 86, dx, 3, 5); + else afftex(st, caspe, 86, dx, 3, 5); + } + } +} + +void f3f8() { + integer co; + + if (res == 1) co = 107; + else co = 64; + putxy(3, 44); + writeg(f3, 5); + ywhere = 51; + writeg(f8, 5); + boite(0, 42, co, 16, 7); +} + +void t5(integer cx) { + /* debug('t5'); */ + if (cx == 10) blo = false; + if (cx != 1) { + bh1 = false; + bf1 = false; + } + if (cx != 2) bh2 = false; + if (cx != 4) { + bh4 = false; + bf4 = false; + } + if (cx != 5) bh5 = false; + if (cx != 6) bh6 = false; + if (cx != 8) bh8 = false; + if (cx != 3) bt3 = false; + if (cx != 7) bt7 = false; + if (cx != 9) bh9 = false; +} + +void affper(integer per) { + integer cx; + + /* debug('affper'); */ + for (cx = 1; cx <= 8; cx ++) menu_disable(disc[cx]); + clsf10(); + if ((per & 128) == 128) { + putxy(560, 24); + writeg("LEO", 4); + menu_enable(disc[1]); + } + if ((per & 64) == 64) { + putxy(560, 32); + writeg("PAT", 4); + menu_enable(disc[2]); + } + if ((per & 32) == 32) { + putxy(560, 40); + writeg("GUY", 4); + menu_enable(disc[3]); + } + if ((per & 16) == 16) { + putxy(560, 48); + writeg("EVA", 4); + menu_enable(disc[4]); + } + if ((per & 8) == 8) { + putxy(560, 56); + writeg("BOB", 4); + menu_enable(disc[5]); + } + if ((per & 4) == 4) { + putxy(560, 64); + writeg("LUC", 4); + menu_enable(disc[6]); + } + if ((per & 2) == 2) { + putxy(560, 72); + writeg("IDA", 4); + menu_enable(disc[7]); + } + if ((per & 1) == 1) { + putxy(560, 80); + writeg("MAX", 4); + menu_enable(disc[8]); + } + ipers = per; +} + +/* overlay */ void choix(integer min, integer max, integer &per) { + boolean i; + integer haz, cx, cy, cz; + long_integer per2, cz2; + + /* debug('o0 choix'); */ + haz = hazard(min, max); + if (haz > 4) { + haz = 8 - haz; + i = true; + } else i = false; + cx = 0; + per = 0; + while (cx < haz) { + cy = hazard(1, 8); + conv(cy, cz); + if ((per & cz) != cz) { + cx = cx + 1; + per = (per | cz); + } + } + if (i) per = 255 - per; + i = false; +} + +/* overlay */ void cpl1(integer &p) { + integer j, h, m; + + /* debug('o0 cpl1'); */ + calch(j, h, m); + if ((h > 7) || (h < 11)) p = 25; + if ((h > 10) && (h < 14)) p = 35; + if ((h > 13) && (h < 16)) p = 50; + if ((h > 15) && (h < 18)) p = 5; + if ((h > 17) && (h < 22)) p = 35; + if ((h > 21) && (h < 24)) p = 50; + if ((h >= 0) && (h < 8)) p = 70; + mdn(); +} + +/* overlay */ void cpl2(integer &p) { + integer j, h, m; + + /* debug('o0 cpl2'); */ + calch(j, h, m); + if ((h > 7) && (h < 11)) p = -2; + if (h == 11) p = 100; + if ((h > 11) && (h < 23)) p = 10; + if (h == 23) p = 20; + if ((h >= 0) && (h < 8)) p = 50; +} + +/* overlay */ void cpl3(integer &p) { + integer j, h, m; + + /* debug('o0 cpl3'); */ + calch(j, h, m); + if (((h > 8) && (h < 10)) || ((h > 19) && (h < 24))) p = 34; + if (((h > 9) && (h < 20)) || ((h >= 0) && (h < 9))) p = 0; +} + +/* overlay */ void cpl5(integer &p) { + integer j, h, m; + + /* debug('o0 cpl5'); */ + calch(j, h, m); + if ((h > 6) && (h < 10)) p = 0; + if (h == 10) p = 100; + if ((h > 10) && (h < 24)) p = 15; + if ((h >= 0) && (h < 7)) p = 50; +} + +/* overlay */ void cpl6(integer &p) { + integer j, h, m; + + /* debug('o0 cpl6'); */ + calch(j, h, m); + if (((h > 7) && (h < 13)) || ((h > 17) && (h < 20))) p = -2; + if (((h > 12) && (h < 17)) || ((h > 19) && (h < 24))) p = 35; + if (h == 17) p = 100; + if ((h >= 0) && (h < 8)) p = 60; +} + +void person() { + const char m1[] = "Vous"; + const char m2[] = "tes"; + const char m3[] = "SEUL"; + integer cf; + str255 str_; + + /* debug('person'); */ + for (cf = 1; cf <= 8; cf ++) menu_disable(disc[cf]); + clsf10(); + putxy(560, 30); + writeg(m1, 4); + putxy(560, 50); + writeg(m2, 4); + putxy(560, 70); + writeg(m3, 4); + ipers = 0; +} + +void chlm(integer &per) { + /* debug('chlm'); */ + per = hazard(1, 2); + if (per == 2) per = 128; +} + +void pendule() { + const matrix<1, 2, 1, 12, integer> cv + = {{{{ 5, 8, 10, 8, 5, 0, -5, -8, -10, -8, -5, 0}}, + {{ -5, -3, 0, 3, 5, 6, 5, 3, 0, -3, -5, -6}} + } + }; + const integer x = 580; + const integer y = 123; + const integer rg = 9; + integer h, co; + + + /* debug('pendule'); */ + hide_mouse(); + /*paint_rect(572,114,18,20); + paint_rect(577,114,6,20);*/ + paint_rect(570, 118, 20, 10); + paint_rect(578, 114, 6, 18); + if (set::of(cga, her, eos).has(gd)) co = 0; + else co = 1; + if (min == 0) droite(((cardinal)x >> 1)*res, y, ((cardinal)x >> 1)*res, (y - rg), co); + else droite(((cardinal)x >> 1)*res, y, ((cardinal)x >> 1)*res, (y + rg), co); + h = heu; + if (h > 12) h = h - 12; + if (h == 0) h = 12; + droite(((cardinal)x >> 1)*res, y, ((cardinal)(x + cv[1][h]) >> 1)*res, y + cv[2][h], co); + show_mouse(); + putxy(568, 154); + if (heu > 11) writeg("PM ", 1); + else writeg("AM ", 1); + putxy(550, 160); + if (set::of(range(0, 8), eos).has(jou)) writeg(string(chr(jou + 49)) + "& jour", 1); +} + +/************* + * NIVEAU 11 * + *************/ + +void debloc(integer l) { + /* debug('debloc'); */ + num = 0; + x = 0; + y = 0; + if ((l != 26) && (l != 15)) t5(l); + mpers = ipers; +} + +/* overlay */ void cpl10(integer &p, integer &h) { + integer j, m; + + /* debug('o1 cpl10'); */ + calch(j, h, m); + if (((h > 7) && (h < 11)) || ((h > 11) && (h < 14)) + || ((h > 18) && (h < 21))) p = 100; + if ((h == 11) || ((h > 20) && (h < 24))) p = 45; + if (((h > 13) && (h < 17)) || (h == 18)) p = 35; + if (h == 17) p = 60; + if ((h >= 0) && (h < 8)) p = 5; +} + +/* overlay */ void cpl11(integer &p, integer &h) { + integer j, m; + + /* debug('o1 cpl11'); */ + calch(j, h, m); + if (((h > 8) && (h < 12)) || ((h > 20) && (h < 24))) p = 25; + if (((h > 11) && (h < 14)) || ((h > 18) && (h < 21))) p = 5; + if ((h > 13) && (h < 17)) p = 55; + if ((h > 16) && (h < 19)) p = 45; + if ((h >= 0) && (h < 9)) p = 0; +} + +/* overlay */ void cpl12(integer &p) { + integer j, h, m; + + /* debug('o1 cpl12'); */ + calch(j, h, m); + if (((h > 8) && (h < 15)) || ((h > 16) && (h < 22))) p = 55; + if (((h > 14) && (h < 17)) || ((h > 21) && (h < 24))) p = 25; + if ((h >= 0) && (h < 5)) p = 0; + if ((h > 4) && (h < 9)) p = 15; +} + +/* overlay */ void cpl13(integer &p) { + /* debug('o1 cpl13'); */ + p = 0; +} + +/* overlay */ void cpl15(integer &p) { + integer j, h, m; + + /* debug('o1 cpl15'); */ + calch(j, h, m); + if ((h > 7) && (h < 12)) p = 25; + if ((h > 11) && (h < 14)) p = 0; + if ((h > 13) && (h < 18)) p = 10; + if ((h > 17) && (h < 20)) p = 55; + if ((h > 19) && (h < 22)) p = 5; + if ((h > 21) && (h < 24)) p = 15; + if ((h >= 0) && (h < 8)) p = -15; +} + +/* overlay */ void cpl20(integer &p, integer &h) { + integer j, m; + + /* debug('o1 cpl20'); */ + calch(j, h, m); + if (h == 10) p = 65; + if ((h > 10) && (h < 21)) p = 5; + if ((h > 20) && (h < 24)) p = -15; + if ((h >= 0) && (h < 5)) p = -300; + if ((h > 4) && (h < 10)) p = -5; +} + +/* overlay */ void quelq1(integer l) { + integer per; + + /* debug('o1 quelq1'); */ + per = hazard(1, 2); + if (l == 1) + if (per == 1) bh1 = true; + else bf1 = true; + if (l == 4) + if (per == 1) bh4 = true; + else bf4 = true; + ipers = 10; +} + +/* overlay */ void quelq2() { + /* debug('o1 quelq2'); */ + if (li == 2) bh2 = true; + else bh9 = true; + ipers = 10; +} + +/* overlay */ void quelq5() { + /* debug('o1 quelq5'); */ + bh5 = true; + ipers = 10; +} + +/* overlay */ void quelq6(integer l) { + integer per; + + /* debug('o1 quelq6'); */ + if (l == 6) bh6 = true; + if (l == 8) bh8 = true; + ipers = 10; +} + +/* overlay */ void quelq10(integer h, integer &per) { + integer min, max; + + /* debug('o1 quelq10'); */ + if ((h >= 0) && (h < 8)) chlm(per); + else { + if ((h > 7) && (h < 10)) { + min = 5; + max = 7; + } + if ((h > 9) && (h < 12)) { + min = 1; + max = 4; + } + if (((h > 11) && (h < 15)) || ((h > 18) && (h < 21))) { + min = 6; + max = 8; + } + if (((h > 14) && (h < 19)) || ((h > 20) && (h < 24))) { + min = 1; + max = 5; + } + choix(min, max, per); + } + affper(per); +} + +/* overlay */ void quelq11(integer h, integer &per) { + integer min, max; + + /* debug('o1 quelq11'); */ + if ((h >= 0) && (h < 8)) chlm(per); + else { + if (((h > 7) && (h < 10)) || ((h > 20) && (h < 24))) { + min = 1; + max = 3; + } + if (((h > 9) && (h < 12)) || ((h > 13) && (h < 19))) { + min = 1; + max = 4; + } + if (((h > 11) && (h < 14)) || ((h > 18) && (h < 21))) { + min = 1; + max = 2; + } + choix(min, max, per); + } + affper(per); +} + +/* overlay */ void quelq12(integer &per) { + /* debug('o1 quelq12'); */ + chlm(per); + affper(per); +} + +/* overlay */ void quelq15(integer &per) { + integer cx; + boolean test; + + + /* debug('o1 quelq15'); */ + per = 0; + if (per == 0) { + do { + cx = hazard(1, 8); + test = (((cx == 1) && (bh2 || bh9)) || + ((cx == 2) && bh8) || + ((cx == 3) && bh4) || + ((cx == 4) && bf4) || + ((cx == 5) && bh6) || + ((cx == 6) && bh1) || + ((cx == 7) && bf1) || + ((cx == 8) && bh5)); + } while (!(! test)); + conv(cx, per); + affper(per); + } +} + +/* overlay */ void quelq20(integer h, integer &per) { + integer min, max; + + /* debug('o1 quelq20'); */ + if (((h >= 0) && (h < 10)) || ((h > 18) && (h < 24))) chlm(per); + else { + if ((h > 9) && (h < 12)) { + min = 3; + max = 7; + } + if ((h > 11) && (h < 18)) { + min = 1; + max = 2; + } + if (h == 18) { + min = 2; + max = 4; + } + choix(min, max, per); + } + affper(per); +} + + +/* overlay */void frap() { + integer j, h, m, haz; + + /* debug('o1 frap'); */ + calch(j, h, m); + if ((h >= 0) && (h < 8)) crep = 190; + else { + haz = hazard(1, 100); + if (haz > 70) crep = 190; + else crep = 147; + } +} + +/* overlay */ void nouvp(integer l, integer &p) { + /* debug('o1 nouvp'); */ + p = 0; + if (l == 1) { + if (bh1) p = 4; + if (bf1) p = 2; + } + if (((l == 2) && (bh2)) || ((l == 9) && (bh9))) p = 128; + if (l == 4) { + if (bh4) p = 32; + if (bf4) p = 16; + } + if ((l == 5) && (bh5)) p = 1; + if ((l == 6) && (bh6)) p = 8; + if ((l == 8) && (bh8)) p = 64; + if (((l == 3) && (bt3)) || ((l == 7) && (bt7))) p = 9; + if (p != 9) affper(p); +} + + + +/* overlay */ void tip(integer ip, integer &cx) { + /* debug('o1 tip'); */ + if (ip == 128) cx = 1; + else if (ip == 64) cx = 2; + else if (ip == 32) cx = 3; + else if (ip == 16) cx = 4; + else if (ip == 8) cx = 5; + else if (ip == 4) cx = 6; + else if (ip == 2) cx = 7; + else if (ip == 1) cx = 8; +} + + +/* overlay */ void ecfren(integer &p, integer &haz, integer cf, integer l) { + /* debug('o1 ecfren'); */ + if (l == 0) person(); + p = -500; + haz = 0; + if (((l == 1) && (! bh1) && (! bf1)) + || ((l == 4) && (! bh4) && (! bf4))) cpl1(p); + if ((l == 2) && (! bh2) && (! bh9)) cpl2(p); + if (((l == 3) && (! bt3)) || ((l == 7) && (! bt7))) cpl3(p); + if ((l == 5) && (! bh5)) cpl5(p); + if (((l == 6) && (! bh6)) || ((l == 8) && (! bh8))) cpl6(p); + if ((l == 9) && (! bh9) && (! bh2)) p = 10; + if (((l == 2) && (bh9)) || ((l == 9) && (bh2))) p = -400; + if (p != -500) { + p = p + cf; + haz = hazard(1, 100); + } +} + +/* overlay */ void becfren(integer l) { + integer haz; + + /* debug('o1 becfren'); */ + if ((l == 1) || (l == 4)) { + haz = hazard(1, 2); + if (l == 1) + if (haz == 1) bh1 = true; + else bf1 = true; + if (l == 4) + if (haz == 1) bh4 = true; + else bf4 = true; + } + if (l == 2) bh2 = true; + else if (l == 3) bt3 = true; + else if (l == 5) bh5 = true; + else if (l == 6) bh6 = true; + else if (l == 7) bt7 = true; + else if (l == 8) bh8 = true; + else if (l == 9) bh9 = true; +} + +/* NIVEAU 10 */ +void init_nbrepm() { + const array<1, 8, byte> ipm + = {{4, 5, 6, 7, 5, 6, 5, 8}}; + integer i; + + /* debug('init_nbrepm'); */ + i = 0; + do { + i = succ(integer, i); + nbrepm[i] = ipm[i]; + } while (!(i == 8)); +} + +void phaz(integer &haz, integer &p, integer cf) { + /* debug('phaz'); */ + p = p + cf; + haz = hazard(1, 100); +} + +/* overlay */ void inzon() { + integer cx; + + /* debug('o2 inzon'); */ + copcha(); + { + s.ipre = false; + s.derobj = 0; + s.icave = 0; + s.iboul = 0; + s.ibag = 0; + s.ipuit = 0; + s.ivier = 0; + s.iloic = 136; + s.icryp = 141; + s.conf = hazard(4, 10); + s.mlieu = 21; + for (cx = 2; cx <= 6; cx ++) s.sjer[cx] = chr(0); + s.sjer[1] = chr(113); + s.heure = chr(20); + for (cx = 1; cx <= 10; cx ++) s.pourc[cx] = ' '; + for (cx = 1; cx <= 6; cx ++) s.teauto[cx] = '*'; + for (cx = 7; cx <= 9; cx ++) s.teauto[cx] = ' '; + for (cx = 10; cx <= 28; cx ++) s.teauto[cx] = '*'; + for (cx = 29; cx <= 42; cx ++) s.teauto[cx] = ' '; + s.teauto[33] = '*'; + } + for (cx = 1; cx <= 8; cx ++) nbrep[cx] = 0; + init_nbrepm(); +} + +/* overlay */ void dprog() { + /* debug('o2 dprog'); */ + li = 21; + /* jh:= t_settime(0);*/ + jh = 0; + if (! s.ipre) blo = true; + t = ti1; + mh = readclock(); +} + +/* overlay */ void pl1(integer cf) { + integer p, haz; + + /* debug('o2 pl1'); */ + if (((li == 1) && (! bh1) && (! bf1)) + || ((li == 4) && (! bh4) && (! bf4))) { + cpl1(p); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq1(li); + } +} + +/* overlay */ void pl2(integer cf) { + integer p, haz; + + /* debug('o2 pl2'); */ + if (! bh2) { + cpl2(p); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq2(); + } +} + +/* overlay */ void pl5(integer cf) { + integer p, haz; + + /* debug('o2 pl5'); */ + if (! bh5) { + cpl5(p); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq5(); + } +} + +/* overlay */ void pl6(integer cf) { + integer p, haz; + + /* debug('o2 pl6'); */ + if (((li == 6) && (! bh6)) || ((li == 8) && (! bh8))) { + cpl6(p); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq6(li); + } +} + +/* overlayi */ void pl9(integer cf) { + integer p, haz; + + /* debug('o2 pl9'); */ + if (! bh9) { + cf = -10; + phaz(haz, p, cf); + if (haz > p) person(); + else quelq2(); + } +} + +/* overlayi */ void pl10(integer cf) { + integer p, h, haz; + + /* debug('o2 pl10'); */ + cpl10(p, h); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq10(h, p); +} + +/* overlay */ void pl11(integer cf) { + integer p, h, haz; + + /* debug('o2 pl11'); */ + cpl11(p, h); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq11(h, p); +} + +/* overlay */ void pl12(integer cf) { + integer p, haz; + + /* debug('o2 pl12'); */ + cpl12(p); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq12(p); +} + +/* overlay */ void pl13(integer cf) { + integer p, haz; + + /* debug('o2 pl13'); */ + cpl13(p); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq12(p); +} + +/* overlay */ void pl15(integer cf) { + integer p, haz; + + /* debug('o2 pl15'); */ + cpl15(p); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq15(p); +} + +/* overlay */ void pl20(integer cf) { + integer p, h, haz; + + /* debug('o2 pl20'); */ + cpl20(p, h); + phaz(haz, p, cf); + if (haz > p) person(); + else quelq20(h, p); +} + +/* overlay */ void t11(integer l11, integer &a) { + integer p, haz, h; + + /* debug('o2 t11'); */ + ecfren(p, haz, s.conf, l11); + li = l11; + if ((l11 > 0) && (l11 < 10)) + if (p != -500) { + if (haz > p) { + person(); + a = 0; + } else { + becfren(li); + nouvp(li, a); + } + } else nouvp(li, a); + if (l11 > 9) + if ((l11 > 15) && (l11 != 20) && (l11 != 26)) person(); + else { + if (l11 == 10) cpl10(p, h); + if (l11 == 11) cpl11(p, h); + if (l11 == 12) cpl12(p); + if ((l11 == 13) || (l11 == 14)) cpl13(p); + if ((l11 == 15) || (l11 == 26)) cpl15(p); + if (l11 == 20) cpl20(p, h); + p = p + s.conf; + haz = hazard(1, 100); + if (haz > p) { + person(); + a = 0; + } else { + if (l11 == 10) quelq10(h, p); + if (l11 == 11) quelq11(h, p); + if ((l11 == 12) || (l11 == 13) || (l11 == 14)) quelq12(p); + if ((l11 == 15) || (l11 == 26)) quelq15(p); + if (l11 == 20) quelq20(h, p); + a = p; + } + } +} + +/* overlay */ void cavegre() + +{ + integer haz; + + /* debug('cavegre'); */ + s.conf = s.conf + 2; + if (s.conf > 69) s.conf = s.conf + (s.conf / 10); + clsf3(); + ecrf2(); + ecr3(m1); + haz = (hazard(0, 4)) - 2; + parole(2, haz, 1); + for (haz = 0; haz <= 3000; haz ++); + clsf3(); + person(); +} + +void writetp(str255 s, integer t) { + if (res == 2) writeg(s, t); + else writeg(copy(s, 1, 25), t); +} + +void messint(integer nu) { + /* debug('messint'); */ + clsf1(); + clsf2(); + clsf3(); + decomp(0x73a2, 1008); + memw[0x7413 + 12] = 80; + memw[0x7413 + 14] = 40; + writepal(90); + afff(gd, 0x73a2, 1008, 0, 0); + afff(gd, 0x73a2, 1008, 0, 70); + repon(7, nu); +} + +void aniof(integer ouf, integer num) { + integer ad, offset; + char c; + + /* debug('aniof'); */ + if ((caff == 7) && ((num == 4) || (num == 5))) return; + if ((caff == 10) && (num == 7)) num = 6; + if (caff == 12) if (num == 3) num = 4; + else if (num == 4) num = 3; + ad = adani; + offset = animof(ouf, num); + decomp(ad, offset); + hide_mouse(); + afff(gd, ad, offset, 0, 12); + ecrf1(); + show_mouse(); +} + +void musique(integer so) { + boolean i; + integer haz; + /* dep: array[1..5] of long_integer;*/ + + /* debug('musique'); */ + if (so == 0) { /*musik(0)*/ + ; + } else if ((prebru == 0) && (! s.ipre)) { + parole(10, 1, 1); + prebru = prebru + 1; + } else { + i = false; + if ((s.mlieu == 19) || (s.mlieu == 21) || (s.mlieu == 22)) { + haz = hazard(1, 3); + if (haz == 2) { + haz = hazard(2, 4); + parole(9, haz, 1); + i = true; + } + } + if (s.mlieu == 20) { + haz = hazard(1, 2); + if (haz == 1) { + parole(8, 1, 1); + i = true; + } + } + if (s.mlieu == 24) { + haz = hazard(1, 2); + if (haz == 2) { + parole(12, 1, 1); + i = true; + } + } + if (s.mlieu == 23) { + parole(13, 1, 1); + i = true; + } + if (! i) { + /* dep[1]:= 1416; + dep[2]:= 1512; + dep[3]:= 1692; + dep[4]:= 1884; + dep[5]:= 2046; + haz:= hazard(1,5); + musik(dep[haz]);*/ + haz = hazard(1, 17); + parole(haz, 1, 2); + } + } +} + +/* NIVEAU 9 */ +void dessin(integer ad) { + integer cx; + + /* debug('dessin'); */ + if (ad != 0) dessine(ades, ((ad % 160) * 2), (ad / 160)); + else { + clsf1(); + if (caff > 99) { + dessine(ades, 60, 33); + boite(118, 32, 291, 121, 15); /* cadre moyen */ + } else if (caff > 69) { + dessine(ades, 112, 48); /* ttes */ + boite(222, 47, 155, 91, 15); + } else { + dessine(ades, 0, 12); + ecrf1(); + if ((caff < 30) || (caff > 32)) { + for (cx = 1; cx <= 6; cx ++) + if (ord(touv[cx]) != 0) aniof(1, ord(touv[cx])); + if (caff == 13) { + if (s.iboul == 141) aniof(1, 7); + if (s.ibag == 159) aniof(1, 6); + } + if ((caff == 14) && (s.icave == 151)) aniof(1, 2); + if ((caff == 17) && (s.ivier == 143)) aniof(1, 1); + if ((caff == 24) && (s.ipuit != 0)) aniof(1, 1); + } + if (caff < 26) musique(1); + } + } +} + + + diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h deleted file mode 100644 index fd4e2f5ffa..0000000000 --- a/engines/mortevielle/mor.h +++ /dev/null @@ -1,1311 +0,0 @@ -/* Niveau 14 suite */ -const char m1[] = "quelqu'un entre, parait ‚tonn‚ mais ne dit rien"; - - -void testfi() { - if (ioresult != 0) { - caff = do_alert(err_mess, 1); - exit(0); - } -} - - -integer readclock() { - registres r; - integer s, m, h; - - /* debug('readclock');*/ - integer readclock_result; - r.ax = 0x2c00; - intr(0x21, r); - { - h = (cardinal)r.cx >> 8; - m = r.cx % 256; - s = (cardinal)r.dx >> 8; - } - m = m * 60; - h = h * 3600; - readclock_result = h + m + s; - return readclock_result; -} - -void modif(integer &nu) { - /* debug('modif'); */ - if (nu == 26) nu = 25; - if ((nu > 29) && (nu < 36)) nu = nu - 4; - if ((nu > 69) && (nu < 78)) nu = nu - 37; - if ((nu > 99) && (nu < 194)) nu = nu - 59; - if ((nu > 996) && (nu < 1000)) nu = nu - 862; - if ((nu > 1500) && (nu < 1507)) nu = nu - 1363; - if ((nu > 1507) && (nu < 1513)) nu = nu - 1364; - if ((nu > 1999) && (nu < 2002)) nu = nu - 1851; - if (nu == 2010) nu = 151; - if ((nu > 2011) && (nu < 2025)) nu = nu - 1860; - if (nu == 2026) nu = 165; - if ((nu > 2029) && (nu < 2037)) nu = nu - 1864; - if ((nu > 3000) && (nu < 3005)) nu = nu - 2828; - if (nu == 4100) nu = 177; - if (nu == 4150) nu = 178; - if ((nu > 4151) && (nu < 4156)) nu = nu - 3973; - if (nu == 4157) nu = 183; - if ((nu == 4160) || (nu == 4161)) nu = nu - 3976; -} - - -void dessine(integer ad, integer x, integer y) { - /* debug('dessine'); */ - hide_mouse(); - writepal(numpal); - pictout(ad, 0, x, y); - show_mouse(); -} - -void dessine_rouleau() { - /* debug('dessine_rouleau'); */ - writepal(89); - if (gd == her) { - mem[0x7000 + 14] = 15; - } - hide_mouse(); - pictout(0x73a2, 0, 0, 0); - show_mouse(); -} - - -void text_color(integer c) { - color_txt = c; -} - -/* NIVEAU 13 */ - - -void text1(integer x, integer y, integer nb, integer m) { - phrase st; - integer tay; - integer co; - - - /* debug('text'); */ - if (res == 1) co = 10; - else co = 6; - deline(m, st, tay); - if ((y == 182) && (tay * co > nb * 6)) y = 176; - afftex(st, x, y, nb, 20, color_txt); -} - -void initouv() { - integer cx; - - /* debug('initouv'); */ - for (cx = 1; cx <= 7; cx ++) touv[cx] = chr(0); -} - -void ecrf1() { - boite(0, 11, 512, 163, 15); /* grand dessin */ -} - -void clsf1() { - integer i, j; - - /* debug('clsf1'); */ - hide_mouse(); - box(0, gd, 0, 11, 514, 175, 255); - /* if Gd=ams then port[$3DD]:=15; - case Gd of - ams, - cga : begin - for j:=0 to 63 do - begin - for i:=6 to 86 do - begin - mem[$B800:i*80+j]:=0; - mem[$Ba00:i*80+j]:=0; - end; - mem[$b800:6960+j]:=0; - mem[$ba00:400+j]:=0; - end; - end; - ega : begin - port[$3C4]:= 2; - port[$3C5]:= 15; - port[$3CE]:= 8; - port[$3CF]:= 255; - for j:=0 to 63 do - for i:=11 to 174 do - mem[$A000:i*80+j]:=0; - end; - tan : begin - for j:=0 to 128 do - begin - for i:=3 to 43 do - begin - mem[$B800:i*160+j]:=0; - mem[$Ba00:i*160+j]:=0; - mem[$bc00:i*160+j]:=0; - if i<>43 then mem[$be00:i*160+j]:=0; - end; - mem[$be00:320+j]:=0; - end; - end; - end; - droite(256*res,11,256*res,175,0);*/ - show_mouse(); -} - -void clsf2() { - integer i, j; - - /* debug('clsf2'); */ - hide_mouse(); - if (f2_all) { - box(0, gd, 1, 176, 633, 199, 255); - boite(0, 175, 634, 24, 15); - f2_all = false; - } else { - box(0, gd, 1, 176, 633, 190, 255); - boite(0, 175, 634, 15, 15); - } - show_mouse(); -} - -void ecrf2() { - /* debug('ecrf2'); */ - text_color(5); - /*boite(0,175,630,15,15);*/ -} - -void ecr2(str255 str_) { - integer tab; - integer tlig; - - /* debug('ecr2 : '+str_);*/ - if (res == 1) tab = 10; - else tab = 6; - putxy(8, 177); - tlig = 59 + pred(integer, res) * 36; - if (length(str_) < tlig) writeg(str_, 5); - else if (length(str_) < (tlig << 1)) { - putxy(8, 176); - writeg(copy(str_, 1, pred(integer, tlig)), 5); - putxy(8, 182); - writeg(copy(str_, tlig, tlig << 1), 5); - } else { - f2_all = true; - clsf2(); - putxy(8, 176); - writeg(copy(str_, 1, pred(integer, tlig)), 5); - putxy(8, 182); - writeg(copy(str_, tlig, pred(integer, tlig << 1)), 5); - putxy(8, 190); - writeg(copy(str_, tlig << 1, tlig * 3), 5); - } -} - -void clsf3() { - integer i, j; - - /* debug('clsf3'); */ - hide_mouse(); - box(0, gd, 1, 192, 633, 199, 255); - boite(0, 191, 634, 8, 15); - show_mouse(); -} - -void ecr3(str255 text) { - /* debug('ecr3 : '+text);*/ - clsf3(); - putxy(8, 192); - writeg(text, 5); -} - -void ecrf6() { - /* debug('ecrf6'); */ - text_color(5); - boite(62, 33, 363, 80, 15); -} - -void ecrf7() { - text_color(4); - /* draw_mode(2); - text_height(4*res); - text_style(normal);*/ -} - -void clsf10() { - integer co, cod; - varying_string<8> st; - - /* debug('clsf10'); */ - hide_mouse(); - if (res == 1) { - co = 634; - cod = 534; - } else { - co = 600; - cod = 544; - } - box(15, gd, cod, 93, co, 98, 255); - if (s.conf < 33) st = "Cool"; - else if (s.conf < 66) st = " Lourde "; - else if (s.conf > 65) st = "Malsaine"; - if (res == 1) co = 10; - else co = 6; - co = 574 - ((cardinal)co * length(st) >> 1); - putxy(co, 92); - writeg(st, 4); - if (res == 1) co = 620; - else co = 584; - box(15, gd, 560, 24, co, 86, 255); - /* rempli(69,12,32,5,255);*/ - show_mouse(); -} - -void stop() { - clrscr; - hirs(); - gd = ams; - hirs(); - exit(0); -} - -void paint_rect(integer x, integer y, integer dx, integer dy) { - integer co; - - /* debug('paint_rect'); */ - if (gd == cga) co = 3; - else co = 11; - box(co, gd, x, y, x + dx, y + dy, 255); -} - -integer hazard(integer min, integer max) { - integer ha1; - real ha2; - - /* debug('hazard'); */ - integer hazard_result; - ha2 = Random(); - ha1 = trunc(ha2 * (max - min)); - hazard_result = min + ha1; - return hazard_result; -} - -void calch(integer &j, integer &h, integer &m) { - integer th, nh; - - /* debug('calch');*/ - nh = readclock(); - th = jh + ((nh - mh) / t); - m = ((th % 2) + vm) * 30; - h = ((cardinal)th >> 1) + vh; - if (m == 60) { - m = 0; - h = h + 1; - } - j = (h / 24) + vj; - h = h - ((j - vj) * 24); -} - -void conv(integer x, integer &y) { - integer cx; - - /* debug('conv'); */ - cx = 1; - y = 128; - while (cx < x) { - y = (cardinal)y >> 1; - cx = succ(integer, cx); - } -} - -/* NIVEAU 12 */ -void okpas() { - tesok = true; -} - -void modobj(integer m) { - phrase str_; - str30 strp; - integer i, tay; - - /* debug('modobj'); */ - strp = ' '; - if (m != 500) { - deline(m - 501 + c_st41, str_, tay); - strp = delig; - } - menut(invt[8], strp); - menu_disable(invt[8]); -} - -void modobj2(integer m, boolean t1, boolean t2) { - phrase str_; - str30 strp; - integer i, tay; - - /* debug('modobj'); */ - strp = ' '; - if (t1 || t2) okpas(); - else tesok = false;; - if (m != 500) { - deline(m - 501 + c_st41, str_, tay); - strp = delig; - } - menut(invt[8], strp); - menu_disable(invt[8]); -} - - -void repon(integer f, integer m) { - str255 str_; - varying_string<40> str1; - phrase st; - text1 fic; - integer i, xco, dx, caspe, tay; - - /* debug('repon fenetre nř'+chr(f+48));*/ - if ((m > 499) && (m < 563)) { - deline(m - 501 + c_st41, st, tay); - if (tay > ((58 + pred(integer, res) * 37) << 1)) f2_all = true; - else f2_all = false; - clsf2(); - afftex(st, 8, 176, 85, 3, 5); - } else { - modif(m); - if (f == 8) f = 2; - if (f == 1) f = 6; - if (f == 2) { - clsf2(); - ecrf2(); - text1(8, 182, 103, m); - if ((m == 68) || (m == 69)) s.teauto[40] = '*'; - if ((m == 104) && (caff == 14)) { - s.teauto[36] = '*'; - if (s.teauto[39] == '*') { - s.pourc[3] = '*'; - s.teauto[38] = '*'; - } - } - } - if (set::of(6, 9, eos).has(f)) { - deline(m, st, tay); - if (f == 6) i = 4; - else i = 5; - afftex(st, 80, 40, 60, 25, i); - if (m == 180) s.pourc[6] = '*'; - if (m == 179) s.pourc[10] = '*'; - } - if (f == 7) { /* messint */ - ecrf7(); - deline(m, st, tay); - if (res == 1) { - xco = 252 - tay * 5; - caspe = 100; - dx = 80; - } else { - xco = 252 - tay * 3; - caspe = 144; - dx = 50; - } - if (tay < 40) afftex(st, xco, 86, dx, 3, 5); - else afftex(st, caspe, 86, dx, 3, 5); - } - } -} - -void f3f8() { - integer co; - - if (res == 1) co = 107; - else co = 64; - putxy(3, 44); - writeg(f3, 5); - ywhere = 51; - writeg(f8, 5); - boite(0, 42, co, 16, 7); -} - -void t5(integer cx) { - /* debug('t5'); */ - if (cx == 10) blo = false; - if (cx != 1) { - bh1 = false; - bf1 = false; - } - if (cx != 2) bh2 = false; - if (cx != 4) { - bh4 = false; - bf4 = false; - } - if (cx != 5) bh5 = false; - if (cx != 6) bh6 = false; - if (cx != 8) bh8 = false; - if (cx != 3) bt3 = false; - if (cx != 7) bt7 = false; - if (cx != 9) bh9 = false; -} - -void affper(integer per) { - integer cx; - - /* debug('affper'); */ - for (cx = 1; cx <= 8; cx ++) menu_disable(disc[cx]); - clsf10(); - if ((per & 128) == 128) { - putxy(560, 24); - writeg("LEO", 4); - menu_enable(disc[1]); - } - if ((per & 64) == 64) { - putxy(560, 32); - writeg("PAT", 4); - menu_enable(disc[2]); - } - if ((per & 32) == 32) { - putxy(560, 40); - writeg("GUY", 4); - menu_enable(disc[3]); - } - if ((per & 16) == 16) { - putxy(560, 48); - writeg("EVA", 4); - menu_enable(disc[4]); - } - if ((per & 8) == 8) { - putxy(560, 56); - writeg("BOB", 4); - menu_enable(disc[5]); - } - if ((per & 4) == 4) { - putxy(560, 64); - writeg("LUC", 4); - menu_enable(disc[6]); - } - if ((per & 2) == 2) { - putxy(560, 72); - writeg("IDA", 4); - menu_enable(disc[7]); - } - if ((per & 1) == 1) { - putxy(560, 80); - writeg("MAX", 4); - menu_enable(disc[8]); - } - ipers = per; -} - -/* overlay */ void choix(integer min, integer max, integer &per) { - boolean i; - integer haz, cx, cy, cz; - long_integer per2, cz2; - - /* debug('o0 choix'); */ - haz = hazard(min, max); - if (haz > 4) { - haz = 8 - haz; - i = true; - } else i = false; - cx = 0; - per = 0; - while (cx < haz) { - cy = hazard(1, 8); - conv(cy, cz); - if ((per & cz) != cz) { - cx = cx + 1; - per = (per | cz); - } - } - if (i) per = 255 - per; - i = false; -} - -/* overlay */ void cpl1(integer &p) { - integer j, h, m; - - /* debug('o0 cpl1'); */ - calch(j, h, m); - if ((h > 7) || (h < 11)) p = 25; - if ((h > 10) && (h < 14)) p = 35; - if ((h > 13) && (h < 16)) p = 50; - if ((h > 15) && (h < 18)) p = 5; - if ((h > 17) && (h < 22)) p = 35; - if ((h > 21) && (h < 24)) p = 50; - if ((h >= 0) && (h < 8)) p = 70; - mdn(); -} - -/* overlay */ void cpl2(integer &p) { - integer j, h, m; - - /* debug('o0 cpl2'); */ - calch(j, h, m); - if ((h > 7) && (h < 11)) p = -2; - if (h == 11) p = 100; - if ((h > 11) && (h < 23)) p = 10; - if (h == 23) p = 20; - if ((h >= 0) && (h < 8)) p = 50; -} - -/* overlay */ void cpl3(integer &p) { - integer j, h, m; - - /* debug('o0 cpl3'); */ - calch(j, h, m); - if (((h > 8) && (h < 10)) || ((h > 19) && (h < 24))) p = 34; - if (((h > 9) && (h < 20)) || ((h >= 0) && (h < 9))) p = 0; -} - -/* overlay */ void cpl5(integer &p) { - integer j, h, m; - - /* debug('o0 cpl5'); */ - calch(j, h, m); - if ((h > 6) && (h < 10)) p = 0; - if (h == 10) p = 100; - if ((h > 10) && (h < 24)) p = 15; - if ((h >= 0) && (h < 7)) p = 50; -} - -/* overlay */ void cpl6(integer &p) { - integer j, h, m; - - /* debug('o0 cpl6'); */ - calch(j, h, m); - if (((h > 7) && (h < 13)) || ((h > 17) && (h < 20))) p = -2; - if (((h > 12) && (h < 17)) || ((h > 19) && (h < 24))) p = 35; - if (h == 17) p = 100; - if ((h >= 0) && (h < 8)) p = 60; -} - -void person() { - const char m1[] = "Vous"; - const char m2[] = "tes"; - const char m3[] = "SEUL"; - integer cf; - str255 str_; - - /* debug('person'); */ - for (cf = 1; cf <= 8; cf ++) menu_disable(disc[cf]); - clsf10(); - putxy(560, 30); - writeg(m1, 4); - putxy(560, 50); - writeg(m2, 4); - putxy(560, 70); - writeg(m3, 4); - ipers = 0; -} - -void chlm(integer &per) { - /* debug('chlm'); */ - per = hazard(1, 2); - if (per == 2) per = 128; -} - -void pendule() { - const matrix<1, 2, 1, 12, integer> cv - = {{{{ 5, 8, 10, 8, 5, 0, -5, -8, -10, -8, -5, 0}}, - {{ -5, -3, 0, 3, 5, 6, 5, 3, 0, -3, -5, -6}} - } - }; - const integer x = 580; - const integer y = 123; - const integer rg = 9; - integer h, co; - - - /* debug('pendule'); */ - hide_mouse(); - /*paint_rect(572,114,18,20); - paint_rect(577,114,6,20);*/ - paint_rect(570, 118, 20, 10); - paint_rect(578, 114, 6, 18); - if (set::of(cga, her, eos).has(gd)) co = 0; - else co = 1; - if (min == 0) droite(((cardinal)x >> 1)*res, y, ((cardinal)x >> 1)*res, (y - rg), co); - else droite(((cardinal)x >> 1)*res, y, ((cardinal)x >> 1)*res, (y + rg), co); - h = heu; - if (h > 12) h = h - 12; - if (h == 0) h = 12; - droite(((cardinal)x >> 1)*res, y, ((cardinal)(x + cv[1][h]) >> 1)*res, y + cv[2][h], co); - show_mouse(); - putxy(568, 154); - if (heu > 11) writeg("PM ", 1); - else writeg("AM ", 1); - putxy(550, 160); - if (set::of(range(0, 8), eos).has(jou)) writeg(string(chr(jou + 49)) + "& jour", 1); -} - -/************* - * NIVEAU 11 * - *************/ - -void debloc(integer l) { - /* debug('debloc'); */ - num = 0; - x = 0; - y = 0; - if ((l != 26) && (l != 15)) t5(l); - mpers = ipers; -} - -/* overlay */ void cpl10(integer &p, integer &h) { - integer j, m; - - /* debug('o1 cpl10'); */ - calch(j, h, m); - if (((h > 7) && (h < 11)) || ((h > 11) && (h < 14)) - || ((h > 18) && (h < 21))) p = 100; - if ((h == 11) || ((h > 20) && (h < 24))) p = 45; - if (((h > 13) && (h < 17)) || (h == 18)) p = 35; - if (h == 17) p = 60; - if ((h >= 0) && (h < 8)) p = 5; -} - -/* overlay */ void cpl11(integer &p, integer &h) { - integer j, m; - - /* debug('o1 cpl11'); */ - calch(j, h, m); - if (((h > 8) && (h < 12)) || ((h > 20) && (h < 24))) p = 25; - if (((h > 11) && (h < 14)) || ((h > 18) && (h < 21))) p = 5; - if ((h > 13) && (h < 17)) p = 55; - if ((h > 16) && (h < 19)) p = 45; - if ((h >= 0) && (h < 9)) p = 0; -} - -/* overlay */ void cpl12(integer &p) { - integer j, h, m; - - /* debug('o1 cpl12'); */ - calch(j, h, m); - if (((h > 8) && (h < 15)) || ((h > 16) && (h < 22))) p = 55; - if (((h > 14) && (h < 17)) || ((h > 21) && (h < 24))) p = 25; - if ((h >= 0) && (h < 5)) p = 0; - if ((h > 4) && (h < 9)) p = 15; -} - -/* overlay */ void cpl13(integer &p) { - /* debug('o1 cpl13'); */ - p = 0; -} - -/* overlay */ void cpl15(integer &p) { - integer j, h, m; - - /* debug('o1 cpl15'); */ - calch(j, h, m); - if ((h > 7) && (h < 12)) p = 25; - if ((h > 11) && (h < 14)) p = 0; - if ((h > 13) && (h < 18)) p = 10; - if ((h > 17) && (h < 20)) p = 55; - if ((h > 19) && (h < 22)) p = 5; - if ((h > 21) && (h < 24)) p = 15; - if ((h >= 0) && (h < 8)) p = -15; -} - -/* overlay */ void cpl20(integer &p, integer &h) { - integer j, m; - - /* debug('o1 cpl20'); */ - calch(j, h, m); - if (h == 10) p = 65; - if ((h > 10) && (h < 21)) p = 5; - if ((h > 20) && (h < 24)) p = -15; - if ((h >= 0) && (h < 5)) p = -300; - if ((h > 4) && (h < 10)) p = -5; -} - -/* overlay */ void quelq1(integer l) { - integer per; - - /* debug('o1 quelq1'); */ - per = hazard(1, 2); - if (l == 1) - if (per == 1) bh1 = true; - else bf1 = true; - if (l == 4) - if (per == 1) bh4 = true; - else bf4 = true; - ipers = 10; -} - -/* overlay */ void quelq2() { - /* debug('o1 quelq2'); */ - if (li == 2) bh2 = true; - else bh9 = true; - ipers = 10; -} - -/* overlay */ void quelq5() { - /* debug('o1 quelq5'); */ - bh5 = true; - ipers = 10; -} - -/* overlay */ void quelq6(integer l) { - integer per; - - /* debug('o1 quelq6'); */ - if (l == 6) bh6 = true; - if (l == 8) bh8 = true; - ipers = 10; -} - -/* overlay */ void quelq10(integer h, integer &per) { - integer min, max; - - /* debug('o1 quelq10'); */ - if ((h >= 0) && (h < 8)) chlm(per); - else { - if ((h > 7) && (h < 10)) { - min = 5; - max = 7; - } - if ((h > 9) && (h < 12)) { - min = 1; - max = 4; - } - if (((h > 11) && (h < 15)) || ((h > 18) && (h < 21))) { - min = 6; - max = 8; - } - if (((h > 14) && (h < 19)) || ((h > 20) && (h < 24))) { - min = 1; - max = 5; - } - choix(min, max, per); - } - affper(per); -} - -/* overlay */ void quelq11(integer h, integer &per) { - integer min, max; - - /* debug('o1 quelq11'); */ - if ((h >= 0) && (h < 8)) chlm(per); - else { - if (((h > 7) && (h < 10)) || ((h > 20) && (h < 24))) { - min = 1; - max = 3; - } - if (((h > 9) && (h < 12)) || ((h > 13) && (h < 19))) { - min = 1; - max = 4; - } - if (((h > 11) && (h < 14)) || ((h > 18) && (h < 21))) { - min = 1; - max = 2; - } - choix(min, max, per); - } - affper(per); -} - -/* overlay */ void quelq12(integer &per) { - /* debug('o1 quelq12'); */ - chlm(per); - affper(per); -} - -/* overlay */ void quelq15(integer &per) { - integer cx; - boolean test; - - - /* debug('o1 quelq15'); */ - per = 0; - if (per == 0) { - do { - cx = hazard(1, 8); - test = (((cx == 1) && (bh2 || bh9)) || - ((cx == 2) && bh8) || - ((cx == 3) && bh4) || - ((cx == 4) && bf4) || - ((cx == 5) && bh6) || - ((cx == 6) && bh1) || - ((cx == 7) && bf1) || - ((cx == 8) && bh5)); - } while (!(! test)); - conv(cx, per); - affper(per); - } -} - -/* overlay */ void quelq20(integer h, integer &per) { - integer min, max; - - /* debug('o1 quelq20'); */ - if (((h >= 0) && (h < 10)) || ((h > 18) && (h < 24))) chlm(per); - else { - if ((h > 9) && (h < 12)) { - min = 3; - max = 7; - } - if ((h > 11) && (h < 18)) { - min = 1; - max = 2; - } - if (h == 18) { - min = 2; - max = 4; - } - choix(min, max, per); - } - affper(per); -} - - -/* overlay */void frap() { - integer j, h, m, haz; - - /* debug('o1 frap'); */ - calch(j, h, m); - if ((h >= 0) && (h < 8)) crep = 190; - else { - haz = hazard(1, 100); - if (haz > 70) crep = 190; - else crep = 147; - } -} - -/* overlay */ void nouvp(integer l, integer &p) { - /* debug('o1 nouvp'); */ - p = 0; - if (l == 1) { - if (bh1) p = 4; - if (bf1) p = 2; - } - if (((l == 2) && (bh2)) || ((l == 9) && (bh9))) p = 128; - if (l == 4) { - if (bh4) p = 32; - if (bf4) p = 16; - } - if ((l == 5) && (bh5)) p = 1; - if ((l == 6) && (bh6)) p = 8; - if ((l == 8) && (bh8)) p = 64; - if (((l == 3) && (bt3)) || ((l == 7) && (bt7))) p = 9; - if (p != 9) affper(p); -} - - - -/* overlay */ void tip(integer ip, integer &cx) { - /* debug('o1 tip'); */ - if (ip == 128) cx = 1; - else if (ip == 64) cx = 2; - else if (ip == 32) cx = 3; - else if (ip == 16) cx = 4; - else if (ip == 8) cx = 5; - else if (ip == 4) cx = 6; - else if (ip == 2) cx = 7; - else if (ip == 1) cx = 8; -} - - -/* overlay */ void ecfren(integer &p, integer &haz, integer cf, integer l) { - /* debug('o1 ecfren'); */ - if (l == 0) person(); - p = -500; - haz = 0; - if (((l == 1) && (! bh1) && (! bf1)) - || ((l == 4) && (! bh4) && (! bf4))) cpl1(p); - if ((l == 2) && (! bh2) && (! bh9)) cpl2(p); - if (((l == 3) && (! bt3)) || ((l == 7) && (! bt7))) cpl3(p); - if ((l == 5) && (! bh5)) cpl5(p); - if (((l == 6) && (! bh6)) || ((l == 8) && (! bh8))) cpl6(p); - if ((l == 9) && (! bh9) && (! bh2)) p = 10; - if (((l == 2) && (bh9)) || ((l == 9) && (bh2))) p = -400; - if (p != -500) { - p = p + cf; - haz = hazard(1, 100); - } -} - -/* overlay */ void becfren(integer l) { - integer haz; - - /* debug('o1 becfren'); */ - if ((l == 1) || (l == 4)) { - haz = hazard(1, 2); - if (l == 1) - if (haz == 1) bh1 = true; - else bf1 = true; - if (l == 4) - if (haz == 1) bh4 = true; - else bf4 = true; - } - if (l == 2) bh2 = true; - else if (l == 3) bt3 = true; - else if (l == 5) bh5 = true; - else if (l == 6) bh6 = true; - else if (l == 7) bt7 = true; - else if (l == 8) bh8 = true; - else if (l == 9) bh9 = true; -} - -/* NIVEAU 10 */ -void init_nbrepm() { - const array<1, 8, byte> ipm - = {{4, 5, 6, 7, 5, 6, 5, 8}}; - integer i; - - /* debug('init_nbrepm'); */ - i = 0; - do { - i = succ(integer, i); - nbrepm[i] = ipm[i]; - } while (!(i == 8)); -} - -void phaz(integer &haz, integer &p, integer cf) { - /* debug('phaz'); */ - p = p + cf; - haz = hazard(1, 100); -} - -/* overlay */ void inzon() { - integer cx; - - /* debug('o2 inzon'); */ - copcha(); - { - s.ipre = false; - s.derobj = 0; - s.icave = 0; - s.iboul = 0; - s.ibag = 0; - s.ipuit = 0; - s.ivier = 0; - s.iloic = 136; - s.icryp = 141; - s.conf = hazard(4, 10); - s.mlieu = 21; - for (cx = 2; cx <= 6; cx ++) s.sjer[cx] = chr(0); - s.sjer[1] = chr(113); - s.heure = chr(20); - for (cx = 1; cx <= 10; cx ++) s.pourc[cx] = ' '; - for (cx = 1; cx <= 6; cx ++) s.teauto[cx] = '*'; - for (cx = 7; cx <= 9; cx ++) s.teauto[cx] = ' '; - for (cx = 10; cx <= 28; cx ++) s.teauto[cx] = '*'; - for (cx = 29; cx <= 42; cx ++) s.teauto[cx] = ' '; - s.teauto[33] = '*'; - } - for (cx = 1; cx <= 8; cx ++) nbrep[cx] = 0; - init_nbrepm(); -} - -/* overlay */ void dprog() { - /* debug('o2 dprog'); */ - li = 21; - /* jh:= t_settime(0);*/ - jh = 0; - if (! s.ipre) blo = true; - t = ti1; - mh = readclock(); -} - -/* overlay */ void pl1(integer cf) { - integer p, haz; - - /* debug('o2 pl1'); */ - if (((li == 1) && (! bh1) && (! bf1)) - || ((li == 4) && (! bh4) && (! bf4))) { - cpl1(p); - phaz(haz, p, cf); - if (haz > p) person(); - else quelq1(li); - } -} - -/* overlay */ void pl2(integer cf) { - integer p, haz; - - /* debug('o2 pl2'); */ - if (! bh2) { - cpl2(p); - phaz(haz, p, cf); - if (haz > p) person(); - else quelq2(); - } -} - -/* overlay */ void pl5(integer cf) { - integer p, haz; - - /* debug('o2 pl5'); */ - if (! bh5) { - cpl5(p); - phaz(haz, p, cf); - if (haz > p) person(); - else quelq5(); - } -} - -/* overlay */ void pl6(integer cf) { - integer p, haz; - - /* debug('o2 pl6'); */ - if (((li == 6) && (! bh6)) || ((li == 8) && (! bh8))) { - cpl6(p); - phaz(haz, p, cf); - if (haz > p) person(); - else quelq6(li); - } -} - -/* overlayi */ void pl9(integer cf) { - integer p, haz; - - /* debug('o2 pl9'); */ - if (! bh9) { - cf = -10; - phaz(haz, p, cf); - if (haz > p) person(); - else quelq2(); - } -} - -/* overlayi */ void pl10(integer cf) { - integer p, h, haz; - - /* debug('o2 pl10'); */ - cpl10(p, h); - phaz(haz, p, cf); - if (haz > p) person(); - else quelq10(h, p); -} - -/* overlay */ void pl11(integer cf) { - integer p, h, haz; - - /* debug('o2 pl11'); */ - cpl11(p, h); - phaz(haz, p, cf); - if (haz > p) person(); - else quelq11(h, p); -} - -/* overlay */ void pl12(integer cf) { - integer p, haz; - - /* debug('o2 pl12'); */ - cpl12(p); - phaz(haz, p, cf); - if (haz > p) person(); - else quelq12(p); -} - -/* overlay */ void pl13(integer cf) { - integer p, haz; - - /* debug('o2 pl13'); */ - cpl13(p); - phaz(haz, p, cf); - if (haz > p) person(); - else quelq12(p); -} - -/* overlay */ void pl15(integer cf) { - integer p, haz; - - /* debug('o2 pl15'); */ - cpl15(p); - phaz(haz, p, cf); - if (haz > p) person(); - else quelq15(p); -} - -/* overlay */ void pl20(integer cf) { - integer p, h, haz; - - /* debug('o2 pl20'); */ - cpl20(p, h); - phaz(haz, p, cf); - if (haz > p) person(); - else quelq20(h, p); -} - -/* overlay */ void t11(integer l11, integer &a) { - integer p, haz, h; - - /* debug('o2 t11'); */ - ecfren(p, haz, s.conf, l11); - li = l11; - if ((l11 > 0) && (l11 < 10)) - if (p != -500) { - if (haz > p) { - person(); - a = 0; - } else { - becfren(li); - nouvp(li, a); - } - } else nouvp(li, a); - if (l11 > 9) - if ((l11 > 15) && (l11 != 20) && (l11 != 26)) person(); - else { - if (l11 == 10) cpl10(p, h); - if (l11 == 11) cpl11(p, h); - if (l11 == 12) cpl12(p); - if ((l11 == 13) || (l11 == 14)) cpl13(p); - if ((l11 == 15) || (l11 == 26)) cpl15(p); - if (l11 == 20) cpl20(p, h); - p = p + s.conf; - haz = hazard(1, 100); - if (haz > p) { - person(); - a = 0; - } else { - if (l11 == 10) quelq10(h, p); - if (l11 == 11) quelq11(h, p); - if ((l11 == 12) || (l11 == 13) || (l11 == 14)) quelq12(p); - if ((l11 == 15) || (l11 == 26)) quelq15(p); - if (l11 == 20) quelq20(h, p); - a = p; - } - } -} - -/* overlay */ void cavegre() - -{ - integer haz; - - /* debug('cavegre'); */ - s.conf = s.conf + 2; - if (s.conf > 69) s.conf = s.conf + (s.conf / 10); - clsf3(); - ecrf2(); - ecr3(m1); - haz = (hazard(0, 4)) - 2; - parole(2, haz, 1); - for (haz = 0; haz <= 3000; haz ++); - clsf3(); - person(); -} - -void writetp(str255 s, integer t) { - if (res == 2) writeg(s, t); - else writeg(copy(s, 1, 25), t); -} - -void messint(integer nu) { - /* debug('messint'); */ - clsf1(); - clsf2(); - clsf3(); - decomp(0x73a2, 1008); - memw[0x7413 + 12] = 80; - memw[0x7413 + 14] = 40; - writepal(90); - afff(gd, 0x73a2, 1008, 0, 0); - afff(gd, 0x73a2, 1008, 0, 70); - repon(7, nu); -} - -void aniof(integer ouf, integer num) { - integer ad, offset; - char c; - - /* debug('aniof'); */ - if ((caff == 7) && ((num == 4) || (num == 5))) return; - if ((caff == 10) && (num == 7)) num = 6; - if (caff == 12) if (num == 3) num = 4; - else if (num == 4) num = 3; - ad = adani; - offset = animof(ouf, num); - decomp(ad, offset); - hide_mouse(); - afff(gd, ad, offset, 0, 12); - ecrf1(); - show_mouse(); -} - -void musique(integer so) { - boolean i; - integer haz; - /* dep: array[1..5] of long_integer;*/ - - /* debug('musique'); */ - if (so == 0) { /*musik(0)*/ - ; - } else if ((prebru == 0) && (! s.ipre)) { - parole(10, 1, 1); - prebru = prebru + 1; - } else { - i = false; - if ((s.mlieu == 19) || (s.mlieu == 21) || (s.mlieu == 22)) { - haz = hazard(1, 3); - if (haz == 2) { - haz = hazard(2, 4); - parole(9, haz, 1); - i = true; - } - } - if (s.mlieu == 20) { - haz = hazard(1, 2); - if (haz == 1) { - parole(8, 1, 1); - i = true; - } - } - if (s.mlieu == 24) { - haz = hazard(1, 2); - if (haz == 2) { - parole(12, 1, 1); - i = true; - } - } - if (s.mlieu == 23) { - parole(13, 1, 1); - i = true; - } - if (! i) { - /* dep[1]:= 1416; - dep[2]:= 1512; - dep[3]:= 1692; - dep[4]:= 1884; - dep[5]:= 2046; - haz:= hazard(1,5); - musik(dep[haz]);*/ - haz = hazard(1, 17); - parole(haz, 1, 2); - } - } -} - -/* NIVEAU 9 */ -void dessin(integer ad) { - integer cx; - - /* debug('dessin'); */ - if (ad != 0) dessine(ades, ((ad % 160) * 2), (ad / 160)); - else { - clsf1(); - if (caff > 99) { - dessine(ades, 60, 33); - boite(118, 32, 291, 121, 15); /* cadre moyen */ - } else if (caff > 69) { - dessine(ades, 112, 48); /* ttes */ - boite(222, 47, 155, 91, 15); - } else { - dessine(ades, 0, 12); - ecrf1(); - if ((caff < 30) || (caff > 32)) { - for (cx = 1; cx <= 6; cx ++) - if (ord(touv[cx]) != 0) aniof(1, ord(touv[cx])); - if (caff == 13) { - if (s.iboul == 141) aniof(1, 7); - if (s.ibag == 159) aniof(1, 6); - } - if ((caff == 14) && (s.icave == 151)) aniof(1, 2); - if ((caff == 17) && (s.ivier == 143)) aniof(1, 1); - if ((caff == 24) && (s.ipuit != 0)) aniof(1, 1); - } - if (caff < 26) musique(1); - } - } -} - - - diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp new file mode 100644 index 0000000000..734cb4806c --- /dev/null +++ b/engines/mortevielle/mor2.cpp @@ -0,0 +1,728 @@ +const array<1, 11, integer> men += {{ + scacher, attacher, defoncer, dormir, + entrer, fermer, frapper, manger, + mettre, ouvrir, sortir + } +}; + +void tinke() { + const char m1[] = "Mince! Vous entendez du bruit..."; + const char d1[] = " | Vous devriez avoir remarqu‚| "; + const char d2[] = "% des indices..."; + const char d3 = '['; + const char d4 = ']'; + const char d5 = '1'; + const char d6[] = "OK"; + integer cx, cy, haz, nh, cf, j, h, m, cd; + varying_string<3> stpo; + boolean am; + + anyone = false; + calch(j, h, m); + if (j != jou) { + jou = j; + cx = 0; + do { + cx = cx + 1; + if (nbrepm[cx] != 0) nbrepm[cx] = nbrepm[cx] - 1; + nbrep[cx] = 0; + } while (!(cx == 8)); + } + if ((h > heu) || ((h == 0) && (heu == 23))) { + heu = h; + min = 0; + pendule(); + cf = 0; + for (cx = 1; cx <= 10; cx ++) if (s.pourc[cx] == '*') cf = cf + 1; + if (cf == 10) stpo = "10"; + else stpo = chr(cf + 48); + stpou = string(d3) + d5 + d4 + d3 + d1 + stpo + '0' + d2 + d4 + d3 + d6 + d4; + } + if (m > min) { + min = 30; + pendule(); + } + if (y_s < 12) return; + if (! blo) { + if ((h == 12) || ((h > 18) && (h < 21)) || ((h >= 0) && (h < 7))) + t = ti2; + else t = ti1; + cf = s.conf; + if ((cf > 33) && (cf < 66)) t = t - (t / 3); + if (cf > 65) t = t - ((t / 3) * 2); + nh = readclock(); + if ((nh - mh) > t) { + am = active_menu; + erase_menu(); + jh = jh + ((nh - mh) / t); + mh = nh; + switch (li) { + case 1: + case 4 : + pl1(cf); + break; + case 2 : + pl2(cf); + break; + case 5 : + pl5(cf); + break; + case 6: + case 8 : + pl6(cf); + break; + case 9 : + pl9(cf); + break; + case 10 : + pl10(cf); + break; + case 11 : + pl11(cf); + break; + case 12 : + pl12(cf); + break; + case 13: + case 14 : + pl13(cf); + break; + case 15: + case 26 : + pl15(cf); + break; + case 20 : + pl20(cf); + break; + } + if ((mpers != 0) && (ipers != 10)) mpers = ipers; + if ((mpers == 0) && (ipers > 0)) + if ((s.mlieu == 13) || (s.mlieu == 14)) cavegre(); + else if (ipers == 10) { + ipers = 0; + if (! brt) { + brt = true; + hdb = readclock(); + haz = hazard(1, 5); + if (haz < 5) { + clsf3(); + ecrf2(); + ecr3(m1); + haz = (hazard(0, 4)) - 2; + parole(1, haz, 1); + clsf3(); + } + } + } + if (am) draw_menu(); + } + } + hfb = readclock(); + if ((brt) && ((hfb - hdb) > 17)) { + nouvp(li, cx); + brt = false; + hdb = 0; + if ((s.mlieu > 0) && (s.mlieu < 10)) anyone = true; + } +} + +void fenat(char ans) { + integer coul; + + hide_mouse(); + if (gd == cga) coul = 2; + else if (gd == her) coul = 1; + else coul = 12; + affcar(gd, 306, 193, coul, ord(ans)); + boite(300, 191, 16, 8, 15); + show_mouse(); +} + + +/* NIVEAU 8 */ +void afdes(integer ad) { + taffich(); + dessin(ad); + okdes = false; +} + +void tkey1(boolean d) { + boolean quest; + integer x, y, c; + integer key; + + hide_mouse(); + fenat('K'); + while (keypressed()) key = testou(); + do { + if (d) tinke(); + quest = keypressed(); + read_pos_mouse(x, y, c); + } while (!(quest || (c != 0) || (d && anyone))); + if (quest) key = testou(); + clic = false; + show_mouse(); +} + +void tmlieu(integer mli) { + integer cx, j, i, tail; + str30 nomp; + phrase st; + + + if (mli == 26) mli = 15; + i = 1; + while ((i < 8) && (v_lieu[i][mli] != 0)) { + cx = v_lieu[i][mli]; + deline(cx + c_tmlieu, st, tail); + nomp = delig; + while (length(nomp) < 30) nomp = nomp + ' '; + menut(depl[i], nomp); + i = i + 1; + } + nomp = "* "; + for (cx = 7; cx >= i; cx --) menut(depl[cx], nomp); +} + + +/* NIVEAU 7 */ +void tlu(integer af, integer ob) { + caff = 32; + afdes(0); + repon(6, ob + 4000); + repon(2, 999); + tkey1(true); + caff = af; + msg[3] = no_choice; + crep = 998; +} + +void delin(integer n) { + phrase s; + integer t; + + deline(n, s, t); +} + +void affrep() { + caff = s.mlieu; + crep = s.mlieu; +} + +void mfouen() + +{ + integer cx; + + tmlieu(s.mlieu); + for (cx = 1; cx <= 11; cx ++) menu_enable(men[cx]); + /* menu_enable( scacher); + menu_enable(menup, attacher); + menu_enable(menup, defoncer); + menu_enable(menup, dormir); + menu_enable(menup, entrer); + menu_enable(menup, fermer); + menu_enable(menup, frapper); + menu_enable(menup, manger); + menu_enable(menup, mettre); + menu_enable(menup, ouvrir); + menu_enable(menup, sortir); */ + menut(sonder, " sonder "); + menut(soulever, " soulever "); +} + +void atf3f8(integer &key) { + do { + key = testou(); + } while (!((key == 61) || (key == 66))); +} + +/* NIVEAU 6 */ + +void tperd() { + integer cx; + + initouv(); + ment = 0; + iouv = 0; + mchai = 0; + mfouen(); + if (! blo) t11(21, cx); + perdu = true; + clsf1(); + boite(60, 35, 400, 50, 15); + repon(9, crep); + clsf2(); + clsf3(); + col = false; + syn = false; + okdes = false; +} + +void tsort() { + integer cx; + + if ((iouv > 0) && (s.mlieu != 0)) + if (s.conf < 50) s.conf = s.conf + 2; + else s.conf = s.conf + (s.conf / 10); + for (cx = 1; cx <= 7; cx ++) touv[cx] = chr(0); + ment = 0; + iouv = 0; + mchai = 0; + debloc(s.mlieu); +} + +void st4(integer ob) { + crep = 997; + switch (ob) { + case 114 : + crep = 109; + break; + case 110 : + crep = 107; + break; + case 158 : + crep = 113; + break; + case RANGE_5(152, 156): + case 150: + case 100: + case 157: + case 160: + case 161 : + tlu(caff, ob); + break; + } +} + +void cherjer(integer ob, boolean &d) { + integer cx; + + d = false; + for (cx = 1; cx <= 6; cx ++) d = (d || (ord(s.sjer[cx]) == ob)); + if (s.derobj == ob) d = true; +} + +void st1sama() { + s.mlieu = 10; + affrep(); +} + +void modinv() { + integer cx, cy, tay, i, r; + phrase nom; + str30 nomp; + + cy = 0; + for (cx = 1; cx <= 6; cx ++) + if (s.sjer[cx] != chr(0)) { + cy = succ(integer, cy); + r = (ord(s.sjer[cx]) + 400); + deline(r - 501 + c_st41, nom, tay); + nomp = delig; + menut(invt[cy], nomp); + menu_enable(invt[cx]); + } + if (cy < 6) + for (cx = cy + 1; cx <= 6; cx ++) { + menut(invt[cx], " "); + menu_disable(invt[cx]); + } +} + +void sparl(long_integer adr, long_integer rep) { + const array<1, 8, integer> haut + = {{0, 1, -3, 6, -2, 2, 7, -1}}; + integer key, ad, tay, repint; + phrase st; + + repint = trunc(rep); + hide_mouse(); + deline(repint + c_paroles, st, tay); + afftex(st, 230, 4, 65, 24, 5); + f3f8(); + /*boite(43,30,90,19,15); + gotoxy(7,5); + write('F3: Encore'); + gotoxy(7,6); + write('F8: Stop');*/ + key = 0; + do { + parole(repint, haut[caff - 69], 0); + atf3f8(key); + } while (!(key == 66)); + hirs(); + show_mouse(); +} + +void finfouil() { + fouil = false; + obpart = false; + cs = 0; + is = 0; + mfouen(); +} + +void mfoudi() { + integer cx; + + for (cx = 1; cx <= 7; cx ++) menu_disable(depl[cx]); + for (cx = 1; cx <= 11; cx ++) menu_disable(men[cx]); + /* menu_disable(menup, scacher); + menu_disable(menup, attacher); + menu_disable(menup, defoncer); + menu_disable(menup, dormir); + menu_disable(menup, entrer); + menu_disable(menup, fermer); + menu_disable(menup, frapper); + menu_disable(menup, manger); + menu_disable(menup, mettre); + menu_disable(menup, ouvrir); + menu_disable(menup, sortir); */ + menut(sonder, " -SUITE- "); + menut(soulever, " -STOP- "); +} + +void mennor() { + menu_up(msg[3]); +} + +void premtet() { + dessine(ades, 10, 80); + boite(18, 79, 155, 91, 15); +} + +/* NIVEAU 5 */ +void ajchai() { + integer cx, cy, lderobj; + + + cy = (acha + pred(integer, pred(integer, mchai) * 10)); + cx = 0; + do { + cx = cx + 1; + } while (!((cx > 9) || (tabdon[cy + cx] == 0))); + if (tabdon[cy + cx] == 0) { + lderobj = s.derobj; + tabdon[cy + cx] = lderobj; + } else crep = 192; +} + +void ajjer(integer ob) { + integer cx; + + cx = 0; + do { + cx = cx + 1; + } while (!((cx > 5) || (ord(s.sjer[cx]) == 0))); + if (ord(s.sjer[cx]) == 0) { + s.sjer[(cx)] = chr(ob); + modinv(); + } else crep = 139; +} + +void t1sama() { /* On entre dans le manoir */ + integer j, h, m; + boolean d; + + calch(j, h, m); + if ((h < 5) && (s.mlieu > 18)) { + cherjer(137, d); + if (! d) { /* On n'a pas les cl‚s et il est tard */ + crep = 1511; + tperd(); + } else st1sama(); + } else if (! s.ipre) { /* c'est votre premiŠre fois ? */ + ipers = 255; + affper(ipers); + caff = 77; + afdes(0); + boite(223, 47, 155, 91, 15); + repon(2, 33); + tkey1(false); + mennor(); + hide_mouse(); + hirs(); + premtet(); + sparl(0, 140); + dessine_rouleau(); + pendule(); + show_mouse(); + s.mlieu = 0; + affrep(); + t5(10); + if (! blo) t11(0, m); + ipers = 0; + mpers = 0; + s.ipre = true; + /*chech;*/ + } else st1sama(); +} + +void t1vier() { + s.mlieu = 17; + affrep(); +} + +void t1neig() { + inei = inei + 1; + if (inei > 2) { + crep = 1506; + tperd(); + } else { + okdes = true; + s.mlieu = 19; + affrep(); + } +} + +void t1deva() { + inei = 0; + s.mlieu = 21; + affrep(); +} + +void t1derr() { + s.mlieu = 22; + affrep(); +} + +void t1deau() { + crep = 1503; + tperd(); +} + +void tctrm() { + repon(2, (3000 + ctrm)); + ctrm = 0; +} + + +void quelquun() + +{ + integer haz, cx; + + if (imen) erase_menu(); + finfouil(); + crep = 997; +L1: + if (! cache) { + if (crep == 997) crep = 138; + repon(2, crep); + if (crep == 138) parole(5, 2, 1); + else parole(4, 4, 1); + if (iouv == 0) s.conf = s.conf + 2; + else if (s.conf < 50) s.conf = s.conf + 4; + else + s.conf = s.conf + (3 * (s.conf / 10)); + tsort(); + tmlieu(15); + tip(ipers, cx); + caff = 69 + cx; + crep = caff; + msg[3] = discut; + msg[4] = disc[cx]; + syn = true; + col = true; + } else { + haz = hazard(1, 3); + if (haz == 2) { + cache = false; + crep = 137; + goto L1; + } else { + repon(2, 136); + haz = (hazard(0, 4)) - 2; + parole(3, haz, 1); + clsf2(); + person(); + debloc(21); + affrep(); + } + } + if (imen) draw_menu(); +} + +void tsuiv() { + integer cx, tbcl; + integer cl, cy; + + cy = acha + ((mchai - 1) * 10) - 1; + cx = 0; + do { + cx = cx + 1; + cs = cs + 1; + cl = cy + cs; + tbcl = tabdon[cl]; + } while (!((tbcl != 0) || (cs > 9))); + if ((tbcl != 0) && (cs < 11)) { + is = is + 1; + caff = tbcl; + crep = caff + 400; + if (ipers != 0) s.conf = s.conf + 2; + } else { + affrep(); + finfouil(); + if (cx > 9) crep = 131; + } +} + +void tfleche() { + boolean qust; + char touch; + integer dummy, cd, xmo, ymo; + + if (num == 9999) return; + fenat(chr(152)); + rect = false; + do { + touch = '\0'; + + do { + mov_mouse(qust, touch); + if (clic) rect = (x_s < 256 * res) && (y_s < 176) && (y_s > 12); + tinke(); + } while (!(qust || rect || anyone)); + + if (qust && (touch == '\103')) dummy = do_alert(stpou, 1); + } while (!((touch == '\73') || ((touch == '\104') && (x != 0) && (y != 0)) || + (anyone) || (rect))); + if (touch == '\73') iesc = true; + if (rect) { + x = x_s; + y = y_s; + } +} + +void tcoord(integer sx) + +{ + integer sy, ix, iy, cb, cy, ib; + integer a, b, atdon; + + + num = 0; + crep = 999; + a = 0; + atdon = amzon + 3; + cy = 0; + while (cy < caff) { + a = a + tabdon[atdon]; + atdon = atdon + 4; + cy = succ(integer, cy); + } + /* for cy:=0 to caff-1 do + a:=a+ tabdon[amzon+3+4*cy]; + b:= peek(amzon+3+4*caff); */ + b = tabdon[atdon]; + if (b == 0) goto L1; + a = a + fleche; + cb = 0; + for (cy = 0; cy <= (sx - 2); cy ++) { + ib = (tabdon[a + cb] << 8) + tabdon[succ(integer, a + cb)]; + cb = cb + (ib * 4) + 2; + } + ib = (tabdon[a + cb] << 8) + tabdon[succ(integer, a + cb)]; + if (ib == 0) goto L1; + cy = 1; + do { + cb = cb + 2; + sx = tabdon[a + cb] * res; + sy = tabdon[succ(integer, a + cb)]; + cb = cb + 2; + ix = tabdon[a + cb] * res; + iy = tabdon[succ(integer, a + cb)]; + cy = cy + 1; + } while (!(((x >= sx) && (x <= ix) && (y >= sy) && (y <= iy)) + || (cy > ib))); + if ((x >= sx) && (x <= ix) && (y >= sy) && (y <= iy)) + + { + num = cy - 1; + return; + } +L1: + crep = 997; +} + + +void st7(integer ob) { + crep = 183; + if ((ob == 116) || (ob == 144)) crep = 104; + if ((ob == 126) || (ob == 111)) crep = 108; + if (ob == 132) crep = 111; + if (ob == 142) crep = 112; + if (crep == 183) st4(ob); +} + +void treg(integer ob) { + integer mdes; + + mdes = caff; + caff = ob; + if (((caff > 29) && (caff < 33)) || (caff == 144) || + (caff == 147) || (caff == 149) || (msg[4] == sregarder)) { + afdes(0); + if ((caff > 29) && (caff < 33)) repon(2, caff); + else repon(2, (caff + 400)); + tkey1(true); + caff = mdes; + msg[3] = 0; + crep = 998; + } else { + obpart = true; + crep = caff + 400; + mfoudi(); + } +} + +void avpoing(integer &ob) { + crep = 999; + if (s.derobj != 0) ajjer(s.derobj); + if (crep != 139) { + modobj(ob + 400); + s.derobj = ob; + ob = 0; + } +} + +void rechai(integer &ch) { + integer cx; + + cx = s.mlieu; + if (s.mlieu == 16) cx = 14; + ch = tabdon[achai + (cx * 7) + pred(integer, num)]; +} + +void t23coul(integer &l) { + boolean d; + + cherjer(143, d); + l = 14; + if (! d) { + crep = 1512; + tperd(); + } +} + +void maivid() { + s.derobj = 0; + modobj(500); +} + +void st13(integer ob) { + if ((ob == 114) || (ob == 116) || (ob == 126) || (ob == 132) || + (ob == 111) || (ob == 106) || (ob == 102) || (ob == 100) || + (ob == 110) || (ob == 153) || (ob == 154) || (ob == 155) || + (ob == 156) || (ob == 157) || (ob == 144) || (ob == 158) || + (ob == 150) || (ob == 152)) crep = 999; + else crep = 105; +} + +void aldepl() { + integer dummy; + + dummy = do_alert("[1][Alors, utilisez le menu DEP...][ok]", 1); +} diff --git a/engines/mortevielle/mor2.h b/engines/mortevielle/mor2.h deleted file mode 100644 index 734cb4806c..0000000000 --- a/engines/mortevielle/mor2.h +++ /dev/null @@ -1,728 +0,0 @@ -const array<1, 11, integer> men -= {{ - scacher, attacher, defoncer, dormir, - entrer, fermer, frapper, manger, - mettre, ouvrir, sortir - } -}; - -void tinke() { - const char m1[] = "Mince! Vous entendez du bruit..."; - const char d1[] = " | Vous devriez avoir remarqu‚| "; - const char d2[] = "% des indices..."; - const char d3 = '['; - const char d4 = ']'; - const char d5 = '1'; - const char d6[] = "OK"; - integer cx, cy, haz, nh, cf, j, h, m, cd; - varying_string<3> stpo; - boolean am; - - anyone = false; - calch(j, h, m); - if (j != jou) { - jou = j; - cx = 0; - do { - cx = cx + 1; - if (nbrepm[cx] != 0) nbrepm[cx] = nbrepm[cx] - 1; - nbrep[cx] = 0; - } while (!(cx == 8)); - } - if ((h > heu) || ((h == 0) && (heu == 23))) { - heu = h; - min = 0; - pendule(); - cf = 0; - for (cx = 1; cx <= 10; cx ++) if (s.pourc[cx] == '*') cf = cf + 1; - if (cf == 10) stpo = "10"; - else stpo = chr(cf + 48); - stpou = string(d3) + d5 + d4 + d3 + d1 + stpo + '0' + d2 + d4 + d3 + d6 + d4; - } - if (m > min) { - min = 30; - pendule(); - } - if (y_s < 12) return; - if (! blo) { - if ((h == 12) || ((h > 18) && (h < 21)) || ((h >= 0) && (h < 7))) - t = ti2; - else t = ti1; - cf = s.conf; - if ((cf > 33) && (cf < 66)) t = t - (t / 3); - if (cf > 65) t = t - ((t / 3) * 2); - nh = readclock(); - if ((nh - mh) > t) { - am = active_menu; - erase_menu(); - jh = jh + ((nh - mh) / t); - mh = nh; - switch (li) { - case 1: - case 4 : - pl1(cf); - break; - case 2 : - pl2(cf); - break; - case 5 : - pl5(cf); - break; - case 6: - case 8 : - pl6(cf); - break; - case 9 : - pl9(cf); - break; - case 10 : - pl10(cf); - break; - case 11 : - pl11(cf); - break; - case 12 : - pl12(cf); - break; - case 13: - case 14 : - pl13(cf); - break; - case 15: - case 26 : - pl15(cf); - break; - case 20 : - pl20(cf); - break; - } - if ((mpers != 0) && (ipers != 10)) mpers = ipers; - if ((mpers == 0) && (ipers > 0)) - if ((s.mlieu == 13) || (s.mlieu == 14)) cavegre(); - else if (ipers == 10) { - ipers = 0; - if (! brt) { - brt = true; - hdb = readclock(); - haz = hazard(1, 5); - if (haz < 5) { - clsf3(); - ecrf2(); - ecr3(m1); - haz = (hazard(0, 4)) - 2; - parole(1, haz, 1); - clsf3(); - } - } - } - if (am) draw_menu(); - } - } - hfb = readclock(); - if ((brt) && ((hfb - hdb) > 17)) { - nouvp(li, cx); - brt = false; - hdb = 0; - if ((s.mlieu > 0) && (s.mlieu < 10)) anyone = true; - } -} - -void fenat(char ans) { - integer coul; - - hide_mouse(); - if (gd == cga) coul = 2; - else if (gd == her) coul = 1; - else coul = 12; - affcar(gd, 306, 193, coul, ord(ans)); - boite(300, 191, 16, 8, 15); - show_mouse(); -} - - -/* NIVEAU 8 */ -void afdes(integer ad) { - taffich(); - dessin(ad); - okdes = false; -} - -void tkey1(boolean d) { - boolean quest; - integer x, y, c; - integer key; - - hide_mouse(); - fenat('K'); - while (keypressed()) key = testou(); - do { - if (d) tinke(); - quest = keypressed(); - read_pos_mouse(x, y, c); - } while (!(quest || (c != 0) || (d && anyone))); - if (quest) key = testou(); - clic = false; - show_mouse(); -} - -void tmlieu(integer mli) { - integer cx, j, i, tail; - str30 nomp; - phrase st; - - - if (mli == 26) mli = 15; - i = 1; - while ((i < 8) && (v_lieu[i][mli] != 0)) { - cx = v_lieu[i][mli]; - deline(cx + c_tmlieu, st, tail); - nomp = delig; - while (length(nomp) < 30) nomp = nomp + ' '; - menut(depl[i], nomp); - i = i + 1; - } - nomp = "* "; - for (cx = 7; cx >= i; cx --) menut(depl[cx], nomp); -} - - -/* NIVEAU 7 */ -void tlu(integer af, integer ob) { - caff = 32; - afdes(0); - repon(6, ob + 4000); - repon(2, 999); - tkey1(true); - caff = af; - msg[3] = no_choice; - crep = 998; -} - -void delin(integer n) { - phrase s; - integer t; - - deline(n, s, t); -} - -void affrep() { - caff = s.mlieu; - crep = s.mlieu; -} - -void mfouen() - -{ - integer cx; - - tmlieu(s.mlieu); - for (cx = 1; cx <= 11; cx ++) menu_enable(men[cx]); - /* menu_enable( scacher); - menu_enable(menup, attacher); - menu_enable(menup, defoncer); - menu_enable(menup, dormir); - menu_enable(menup, entrer); - menu_enable(menup, fermer); - menu_enable(menup, frapper); - menu_enable(menup, manger); - menu_enable(menup, mettre); - menu_enable(menup, ouvrir); - menu_enable(menup, sortir); */ - menut(sonder, " sonder "); - menut(soulever, " soulever "); -} - -void atf3f8(integer &key) { - do { - key = testou(); - } while (!((key == 61) || (key == 66))); -} - -/* NIVEAU 6 */ - -void tperd() { - integer cx; - - initouv(); - ment = 0; - iouv = 0; - mchai = 0; - mfouen(); - if (! blo) t11(21, cx); - perdu = true; - clsf1(); - boite(60, 35, 400, 50, 15); - repon(9, crep); - clsf2(); - clsf3(); - col = false; - syn = false; - okdes = false; -} - -void tsort() { - integer cx; - - if ((iouv > 0) && (s.mlieu != 0)) - if (s.conf < 50) s.conf = s.conf + 2; - else s.conf = s.conf + (s.conf / 10); - for (cx = 1; cx <= 7; cx ++) touv[cx] = chr(0); - ment = 0; - iouv = 0; - mchai = 0; - debloc(s.mlieu); -} - -void st4(integer ob) { - crep = 997; - switch (ob) { - case 114 : - crep = 109; - break; - case 110 : - crep = 107; - break; - case 158 : - crep = 113; - break; - case RANGE_5(152, 156): - case 150: - case 100: - case 157: - case 160: - case 161 : - tlu(caff, ob); - break; - } -} - -void cherjer(integer ob, boolean &d) { - integer cx; - - d = false; - for (cx = 1; cx <= 6; cx ++) d = (d || (ord(s.sjer[cx]) == ob)); - if (s.derobj == ob) d = true; -} - -void st1sama() { - s.mlieu = 10; - affrep(); -} - -void modinv() { - integer cx, cy, tay, i, r; - phrase nom; - str30 nomp; - - cy = 0; - for (cx = 1; cx <= 6; cx ++) - if (s.sjer[cx] != chr(0)) { - cy = succ(integer, cy); - r = (ord(s.sjer[cx]) + 400); - deline(r - 501 + c_st41, nom, tay); - nomp = delig; - menut(invt[cy], nomp); - menu_enable(invt[cx]); - } - if (cy < 6) - for (cx = cy + 1; cx <= 6; cx ++) { - menut(invt[cx], " "); - menu_disable(invt[cx]); - } -} - -void sparl(long_integer adr, long_integer rep) { - const array<1, 8, integer> haut - = {{0, 1, -3, 6, -2, 2, 7, -1}}; - integer key, ad, tay, repint; - phrase st; - - repint = trunc(rep); - hide_mouse(); - deline(repint + c_paroles, st, tay); - afftex(st, 230, 4, 65, 24, 5); - f3f8(); - /*boite(43,30,90,19,15); - gotoxy(7,5); - write('F3: Encore'); - gotoxy(7,6); - write('F8: Stop');*/ - key = 0; - do { - parole(repint, haut[caff - 69], 0); - atf3f8(key); - } while (!(key == 66)); - hirs(); - show_mouse(); -} - -void finfouil() { - fouil = false; - obpart = false; - cs = 0; - is = 0; - mfouen(); -} - -void mfoudi() { - integer cx; - - for (cx = 1; cx <= 7; cx ++) menu_disable(depl[cx]); - for (cx = 1; cx <= 11; cx ++) menu_disable(men[cx]); - /* menu_disable(menup, scacher); - menu_disable(menup, attacher); - menu_disable(menup, defoncer); - menu_disable(menup, dormir); - menu_disable(menup, entrer); - menu_disable(menup, fermer); - menu_disable(menup, frapper); - menu_disable(menup, manger); - menu_disable(menup, mettre); - menu_disable(menup, ouvrir); - menu_disable(menup, sortir); */ - menut(sonder, " -SUITE- "); - menut(soulever, " -STOP- "); -} - -void mennor() { - menu_up(msg[3]); -} - -void premtet() { - dessine(ades, 10, 80); - boite(18, 79, 155, 91, 15); -} - -/* NIVEAU 5 */ -void ajchai() { - integer cx, cy, lderobj; - - - cy = (acha + pred(integer, pred(integer, mchai) * 10)); - cx = 0; - do { - cx = cx + 1; - } while (!((cx > 9) || (tabdon[cy + cx] == 0))); - if (tabdon[cy + cx] == 0) { - lderobj = s.derobj; - tabdon[cy + cx] = lderobj; - } else crep = 192; -} - -void ajjer(integer ob) { - integer cx; - - cx = 0; - do { - cx = cx + 1; - } while (!((cx > 5) || (ord(s.sjer[cx]) == 0))); - if (ord(s.sjer[cx]) == 0) { - s.sjer[(cx)] = chr(ob); - modinv(); - } else crep = 139; -} - -void t1sama() { /* On entre dans le manoir */ - integer j, h, m; - boolean d; - - calch(j, h, m); - if ((h < 5) && (s.mlieu > 18)) { - cherjer(137, d); - if (! d) { /* On n'a pas les cl‚s et il est tard */ - crep = 1511; - tperd(); - } else st1sama(); - } else if (! s.ipre) { /* c'est votre premiŠre fois ? */ - ipers = 255; - affper(ipers); - caff = 77; - afdes(0); - boite(223, 47, 155, 91, 15); - repon(2, 33); - tkey1(false); - mennor(); - hide_mouse(); - hirs(); - premtet(); - sparl(0, 140); - dessine_rouleau(); - pendule(); - show_mouse(); - s.mlieu = 0; - affrep(); - t5(10); - if (! blo) t11(0, m); - ipers = 0; - mpers = 0; - s.ipre = true; - /*chech;*/ - } else st1sama(); -} - -void t1vier() { - s.mlieu = 17; - affrep(); -} - -void t1neig() { - inei = inei + 1; - if (inei > 2) { - crep = 1506; - tperd(); - } else { - okdes = true; - s.mlieu = 19; - affrep(); - } -} - -void t1deva() { - inei = 0; - s.mlieu = 21; - affrep(); -} - -void t1derr() { - s.mlieu = 22; - affrep(); -} - -void t1deau() { - crep = 1503; - tperd(); -} - -void tctrm() { - repon(2, (3000 + ctrm)); - ctrm = 0; -} - - -void quelquun() - -{ - integer haz, cx; - - if (imen) erase_menu(); - finfouil(); - crep = 997; -L1: - if (! cache) { - if (crep == 997) crep = 138; - repon(2, crep); - if (crep == 138) parole(5, 2, 1); - else parole(4, 4, 1); - if (iouv == 0) s.conf = s.conf + 2; - else if (s.conf < 50) s.conf = s.conf + 4; - else - s.conf = s.conf + (3 * (s.conf / 10)); - tsort(); - tmlieu(15); - tip(ipers, cx); - caff = 69 + cx; - crep = caff; - msg[3] = discut; - msg[4] = disc[cx]; - syn = true; - col = true; - } else { - haz = hazard(1, 3); - if (haz == 2) { - cache = false; - crep = 137; - goto L1; - } else { - repon(2, 136); - haz = (hazard(0, 4)) - 2; - parole(3, haz, 1); - clsf2(); - person(); - debloc(21); - affrep(); - } - } - if (imen) draw_menu(); -} - -void tsuiv() { - integer cx, tbcl; - integer cl, cy; - - cy = acha + ((mchai - 1) * 10) - 1; - cx = 0; - do { - cx = cx + 1; - cs = cs + 1; - cl = cy + cs; - tbcl = tabdon[cl]; - } while (!((tbcl != 0) || (cs > 9))); - if ((tbcl != 0) && (cs < 11)) { - is = is + 1; - caff = tbcl; - crep = caff + 400; - if (ipers != 0) s.conf = s.conf + 2; - } else { - affrep(); - finfouil(); - if (cx > 9) crep = 131; - } -} - -void tfleche() { - boolean qust; - char touch; - integer dummy, cd, xmo, ymo; - - if (num == 9999) return; - fenat(chr(152)); - rect = false; - do { - touch = '\0'; - - do { - mov_mouse(qust, touch); - if (clic) rect = (x_s < 256 * res) && (y_s < 176) && (y_s > 12); - tinke(); - } while (!(qust || rect || anyone)); - - if (qust && (touch == '\103')) dummy = do_alert(stpou, 1); - } while (!((touch == '\73') || ((touch == '\104') && (x != 0) && (y != 0)) || - (anyone) || (rect))); - if (touch == '\73') iesc = true; - if (rect) { - x = x_s; - y = y_s; - } -} - -void tcoord(integer sx) - -{ - integer sy, ix, iy, cb, cy, ib; - integer a, b, atdon; - - - num = 0; - crep = 999; - a = 0; - atdon = amzon + 3; - cy = 0; - while (cy < caff) { - a = a + tabdon[atdon]; - atdon = atdon + 4; - cy = succ(integer, cy); - } - /* for cy:=0 to caff-1 do - a:=a+ tabdon[amzon+3+4*cy]; - b:= peek(amzon+3+4*caff); */ - b = tabdon[atdon]; - if (b == 0) goto L1; - a = a + fleche; - cb = 0; - for (cy = 0; cy <= (sx - 2); cy ++) { - ib = (tabdon[a + cb] << 8) + tabdon[succ(integer, a + cb)]; - cb = cb + (ib * 4) + 2; - } - ib = (tabdon[a + cb] << 8) + tabdon[succ(integer, a + cb)]; - if (ib == 0) goto L1; - cy = 1; - do { - cb = cb + 2; - sx = tabdon[a + cb] * res; - sy = tabdon[succ(integer, a + cb)]; - cb = cb + 2; - ix = tabdon[a + cb] * res; - iy = tabdon[succ(integer, a + cb)]; - cy = cy + 1; - } while (!(((x >= sx) && (x <= ix) && (y >= sy) && (y <= iy)) - || (cy > ib))); - if ((x >= sx) && (x <= ix) && (y >= sy) && (y <= iy)) - - { - num = cy - 1; - return; - } -L1: - crep = 997; -} - - -void st7(integer ob) { - crep = 183; - if ((ob == 116) || (ob == 144)) crep = 104; - if ((ob == 126) || (ob == 111)) crep = 108; - if (ob == 132) crep = 111; - if (ob == 142) crep = 112; - if (crep == 183) st4(ob); -} - -void treg(integer ob) { - integer mdes; - - mdes = caff; - caff = ob; - if (((caff > 29) && (caff < 33)) || (caff == 144) || - (caff == 147) || (caff == 149) || (msg[4] == sregarder)) { - afdes(0); - if ((caff > 29) && (caff < 33)) repon(2, caff); - else repon(2, (caff + 400)); - tkey1(true); - caff = mdes; - msg[3] = 0; - crep = 998; - } else { - obpart = true; - crep = caff + 400; - mfoudi(); - } -} - -void avpoing(integer &ob) { - crep = 999; - if (s.derobj != 0) ajjer(s.derobj); - if (crep != 139) { - modobj(ob + 400); - s.derobj = ob; - ob = 0; - } -} - -void rechai(integer &ch) { - integer cx; - - cx = s.mlieu; - if (s.mlieu == 16) cx = 14; - ch = tabdon[achai + (cx * 7) + pred(integer, num)]; -} - -void t23coul(integer &l) { - boolean d; - - cherjer(143, d); - l = 14; - if (! d) { - crep = 1512; - tperd(); - } -} - -void maivid() { - s.derobj = 0; - modobj(500); -} - -void st13(integer ob) { - if ((ob == 114) || (ob == 116) || (ob == 126) || (ob == 132) || - (ob == 111) || (ob == 106) || (ob == 102) || (ob == 100) || - (ob == 110) || (ob == 153) || (ob == 154) || (ob == 155) || - (ob == 156) || (ob == 157) || (ob == 144) || (ob == 158) || - (ob == 150) || (ob == 152)) crep = 999; - else crep = 105; -} - -void aldepl() { - integer dummy; - - dummy = do_alert("[1][Alors, utilisez le menu DEP...][ok]", 1); -} diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp new file mode 100644 index 0000000000..d1de4b79d2 --- /dev/null +++ b/engines/mortevielle/mouse.cpp @@ -0,0 +1,459 @@ +const integer m_arrow = 0; +const integer m_point_hand = 1; + +boolean int_m, + clic; + +integer m_show, + x_s, + y_s, + p_o_s, + mouse_shwn; + +matrix<0, 5, 0, 11, integer> s_s; + + +void init_mouse() { + integer i, j; + registres reg; + + mouse_shwn = 0; + x_s = 0; + y_s = 0; + p_o_s = 0; + /*int_m:= False;*/ + clic = false; + m_show = m_arrow; + if ((memw[0xcc] == 0) && (memw[0xce] == 0)) int_m = false; + if (int_m) { + reg.ax = 0; + intr(0x33, reg); + int_m = (reg.ax == -1); + if (int_m) { + { + reg.ax = 4; + reg.cx = 0; + reg.dx = 0; + } + intr(0x33, reg); + } + } +} + +/*procedure change_mouse( t : integer ); +begin + m_show:= t; +end;*/ + +/*procedure dessine_souris(xf,yf:integer); + var x, xx, y :integer; +begin + case m_show of + m_arrow : begin + affput(2,Gd,xf,yf,0,0); + end; + end; +end; */ + +void hide_mouse() { + integer i, j, k, ps, ds; + boolean imp; + + mouse_shwn = pred(integer, mouse_shwn); + if (mouse_shwn == 0) { + imp = odd(y_s); + j = p_o_s; + switch (gd) { + case cga : { + k = 0; + j = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 2); + do { + memw[0xb000 + j] = s_s[0][k]; + memw[0xb800 + j + 2] = s_s[1][k]; + memw[0xba00 + j] = s_s[2][k]; + memw[0xba00 + j + 2] = s_s[3][k]; + j = j + 80; + k = succ(integer, k); + } while (!(k >= 5)); + } + break; + case ams : { + for (i = 0; i <= 3; i ++) { + port[0x3dd] = 1 << i; + k = 0; + j = p_o_s; + do { + if (imp) { + memw[0xb800 + j] = s_s[i][k]; + j = j + 80 - 0x2000; + } else { + memw[0xb800 + j] = s_s[i][k]; + j = j + 0x2000; + } + imp = ! imp; + k = succ(integer, k); + } while (!(k >= 8)); + } + } + break; + case ega : { + port[0x3c4] = 2; + port[0x3ce] = 8; + port[0x3cf] = 255; + i = 0; + do { + port[0x3c5] = 1 << i; + k = 0; + j = p_o_s; + do { + ps = mem[0xa000 + j]; + mem[0xa000 + j] = lo(s_s[i][k]); + ps = mem[0xa000 + j + 1]; + mem[0xa000 + j + 1] = hi(s_s[i][k]); + j = j + 80; + k = succ(integer, k); + } while (!(k >= 8)); + i = i + 1; + } while (!(i == 4)); + } + break; + case her : { + j = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 3); + for (i = 0; i <= 5; i ++) { + for (k = 0; k <= 3; k ++) memw[0xb000 + k * 0x200 + j] = s_s[i][k]; + j = j + 80; + } + } + break; + case tan : { + j = ((cardinal)y_s >> 2) * 160 + ((cardinal)x_s >> 1); + k = 0; + do { + for (i = 0; i <= 3; i ++) { + memw[0xb800 + 0x200 * i + j] = s_s[k][i + (k << 2)]; + memw[0xb800 + 0x200 * i + j + 2] = s_s[k + 3][i + (k << 2)]; + } + j = j + 160; + k = succ(integer, k); + } while (!(k == 3)); + } + break; + + } /* case Gd */ + } +} + +void show_mouse() { + integer i, j, k, l, + ps, ds; + boolean imp; + char c; + + mouse_shwn = mouse_shwn + 1; + if (mouse_shwn != 1) return; + j = p_o_s; + imp = odd(y_s); + i = x_s & 7; + switch (gd) { + case cga : { + k = 0; + j = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 2); + do { + s_s[0][k] = memw[0xb800 + j]; + s_s[1][k] = memw[0xb800 + j + 2]; + s_s[2][k] = memw[0xba00 + j]; + s_s[3][k] = memw[0xba00 + j + 2]; + j = j + 80; + k = succ(integer, k); + } while (!(k >= 5)); + } + break; + case ams : { + for (i = 0; i <= 3; i ++) { + j = p_o_s; + imp = odd(y_s); + port[0x3de] = i; + k = 0; + do { + if (imp) { + s_s[i][k] = memw[0xb800 + j]; + j = j + 80 - 0x2000; + } else { + s_s[i][k] = memw[0xb800 + j]; + j = j + 0x2000; + } + imp = ! imp; + k = succ(integer, k); + } while (!(k >= 8)); + } + } + break; + case ega : { + port[0x3ce] = 4; + l = 0; + do { + port[0x3cf] = l; + k = 0; + j = p_o_s; + do { + s_s[l][k] = mem[0xa000 + j] + (mem[0xa000 + succ(integer, j)] << 8); + j = j + 80; + k = succ(integer, k); + } while (!(k >= 8)); + l = l + 1; + } while (!(l == 4)); + } + break; + case her : { + j = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 3); + for (i = 0; i <= 5; i ++) { + for (k = 0; k <= 3; k ++) s_s[i][k] = memw[0xb000 + k * 0x200 + j]; + j = j + 80; + } + } + break; + case tan : { + j = ((cardinal)y_s >> 2) * 160 + ((cardinal)x_s >> 1); + k = 0; + do { + for (i = 0; i <= 3; i ++) { + s_s[k][i + (k << 2)] = memw[0xb800 + 0x200 * i + j]; + s_s[k + 3][i + (k << 2)] = memw[0xb800 + 0x200 * i + j + 2]; + } + j = j + 160; + k = succ(integer, k); + } while (!(k == 3)); + } + break; + } /* case Gd */ + affput(2, gd, x_s, y_s, 0, 0); +} + +void pos_mouse(integer x, integer y) { + registres reg; + + if (x > 314 * res) x = 314 * res; + else if (x < 0) x = 0; + if (y > 199) y = 199; + else if (y < 0) y = 0; + if ((x == x_s) && (y == y_s)) return; + if (int_m) { + { + reg.ax = 4; + reg.cx = x; + reg.dx = y; + } + intr(0x33, reg); + } + hide_mouse(); + x_s = x; + y_s = y; + switch (gd) { + case ams : { + p_o_s = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 3) + (y_s & 1) * 0x2000; + } + break; + /*cga : begin + P_O_S:=(Y_S shr 1)*80+X_S shr 2+(Y_S and 1)*$2000; + end;*/ + case ega : { + p_o_s = y_s * 80 + ((cardinal)x_s >> 3); + } + break; + } /* case Gd */ + show_mouse(); +} + +void read_pos_mouse(integer &x, integer &y, integer &c) { + registres reg; + + if (int_m) { + reg.ax = 3; + intr(0x33, reg); + x = reg.cx; + y = reg.dx; + c = reg.bx; + } else { + c = 0; + x = x_s; + y = y_s; + } +} + +void mov_mouse(boolean &funct, char &key) { + boolean p_key; + char in1, in2; + integer x, y, cx, cy, cd; + registres reg; + + if (int_m) { + reg.ax = 3; + intr(0x33, reg); + x = reg.cx; + y = reg.dx; + cd = reg.bx; + pos_mouse(x, y); + if (cd != 0) { + clic = true; + return; + } + } + funct = false; + key = '\377'; + p_key = keypressed(); + while (p_key) { + input >> kbd >> in1; + read_pos_mouse(cx, cy, cd); + switch (upcase(in1)) { + case '4' : + cx = cx - 8; + break; + case '2' : + cy = cy + 8; + break; + case '6' : + cx = cx + 8; + break; + case '8' : + cy = cy - 8; + break; + case '7' : { + cy = 1; + cx = 1; + } + break; + case '1' : { + cx = 1; + cy = 190; + } + break; + case '9' : { + cx = 315 * res; + cy = 1; + } + break; + case '3' : { + cy = 190; + cx = 315 * res; + } + break; + case '5' : { + cy = 100; + cx = 155 * res; + } + break; + case ' ': + case '\15' : { + clic = true; + return; + } + break; + case '\33' : { + p_key = keypressed(); + if (p_key) { + input >> kbd >> in2; + switch (in2) { + case 'K' : + cx = pred(integer, cx); + break; + case 'P' : + cy = succ(integer, cy); + break; + case 'M' : + cx = cx + 2; + break; + case 'H' : + cy = pred(integer, cy); + break; + case RANGE_10(';', 'D') : { + funct = true; + key = in2; + return; + } + break; + case 'G' : { + cx = cx - 1; + cy = cy - 1; + } + break; + case 'I' : { + cx = cx + 1; + cy = cy - 1; + } + break; + case 'O' : { + cx = cx - 1; + cy = cy + 1; + } + break; + case 'Q' : { + cx = cx + 1; + cy = cy + 1; + } + break; + } /* case */ + } + } + break; + case 'I' : { + cx = res * 32; + cy = 8; + } + break; + case 'D' : { + cx = 80 * res; + cy = 8; + } + break; + case 'A' : { + cx = 126 * res; + cy = 8; + } + break; + case 'S' : { + cx = 174 * res; + cy = 8; + } + break; + case 'P' : { + cx = 222 * res; + cy = 8; + } + break; + case 'F' : { + cx = res * 270; + cy = 8; + } + break; + case '\23' : { + sonoff = ! sonoff; + return; + } + break; + case '\26' : { + zuul = true; + return; + } + break; + case '\24' : { /* ^T => mode tandy */ + funct = true; + key = '\11'; + } + break; + case '\10' : { /* ^H => mode Hercule */ + funct = true; + key = '\7'; + } + break; + case '\1': + case '\3': + case '\5' : { + funct = true; + key = in1; + } + break; + } + pos_mouse(cx, cy); + p_key = keypressed(); + } +} diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h deleted file mode 100644 index d1de4b79d2..0000000000 --- a/engines/mortevielle/mouse.h +++ /dev/null @@ -1,459 +0,0 @@ -const integer m_arrow = 0; -const integer m_point_hand = 1; - -boolean int_m, - clic; - -integer m_show, - x_s, - y_s, - p_o_s, - mouse_shwn; - -matrix<0, 5, 0, 11, integer> s_s; - - -void init_mouse() { - integer i, j; - registres reg; - - mouse_shwn = 0; - x_s = 0; - y_s = 0; - p_o_s = 0; - /*int_m:= False;*/ - clic = false; - m_show = m_arrow; - if ((memw[0xcc] == 0) && (memw[0xce] == 0)) int_m = false; - if (int_m) { - reg.ax = 0; - intr(0x33, reg); - int_m = (reg.ax == -1); - if (int_m) { - { - reg.ax = 4; - reg.cx = 0; - reg.dx = 0; - } - intr(0x33, reg); - } - } -} - -/*procedure change_mouse( t : integer ); -begin - m_show:= t; -end;*/ - -/*procedure dessine_souris(xf,yf:integer); - var x, xx, y :integer; -begin - case m_show of - m_arrow : begin - affput(2,Gd,xf,yf,0,0); - end; - end; -end; */ - -void hide_mouse() { - integer i, j, k, ps, ds; - boolean imp; - - mouse_shwn = pred(integer, mouse_shwn); - if (mouse_shwn == 0) { - imp = odd(y_s); - j = p_o_s; - switch (gd) { - case cga : { - k = 0; - j = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 2); - do { - memw[0xb000 + j] = s_s[0][k]; - memw[0xb800 + j + 2] = s_s[1][k]; - memw[0xba00 + j] = s_s[2][k]; - memw[0xba00 + j + 2] = s_s[3][k]; - j = j + 80; - k = succ(integer, k); - } while (!(k >= 5)); - } - break; - case ams : { - for (i = 0; i <= 3; i ++) { - port[0x3dd] = 1 << i; - k = 0; - j = p_o_s; - do { - if (imp) { - memw[0xb800 + j] = s_s[i][k]; - j = j + 80 - 0x2000; - } else { - memw[0xb800 + j] = s_s[i][k]; - j = j + 0x2000; - } - imp = ! imp; - k = succ(integer, k); - } while (!(k >= 8)); - } - } - break; - case ega : { - port[0x3c4] = 2; - port[0x3ce] = 8; - port[0x3cf] = 255; - i = 0; - do { - port[0x3c5] = 1 << i; - k = 0; - j = p_o_s; - do { - ps = mem[0xa000 + j]; - mem[0xa000 + j] = lo(s_s[i][k]); - ps = mem[0xa000 + j + 1]; - mem[0xa000 + j + 1] = hi(s_s[i][k]); - j = j + 80; - k = succ(integer, k); - } while (!(k >= 8)); - i = i + 1; - } while (!(i == 4)); - } - break; - case her : { - j = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 3); - for (i = 0; i <= 5; i ++) { - for (k = 0; k <= 3; k ++) memw[0xb000 + k * 0x200 + j] = s_s[i][k]; - j = j + 80; - } - } - break; - case tan : { - j = ((cardinal)y_s >> 2) * 160 + ((cardinal)x_s >> 1); - k = 0; - do { - for (i = 0; i <= 3; i ++) { - memw[0xb800 + 0x200 * i + j] = s_s[k][i + (k << 2)]; - memw[0xb800 + 0x200 * i + j + 2] = s_s[k + 3][i + (k << 2)]; - } - j = j + 160; - k = succ(integer, k); - } while (!(k == 3)); - } - break; - - } /* case Gd */ - } -} - -void show_mouse() { - integer i, j, k, l, - ps, ds; - boolean imp; - char c; - - mouse_shwn = mouse_shwn + 1; - if (mouse_shwn != 1) return; - j = p_o_s; - imp = odd(y_s); - i = x_s & 7; - switch (gd) { - case cga : { - k = 0; - j = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 2); - do { - s_s[0][k] = memw[0xb800 + j]; - s_s[1][k] = memw[0xb800 + j + 2]; - s_s[2][k] = memw[0xba00 + j]; - s_s[3][k] = memw[0xba00 + j + 2]; - j = j + 80; - k = succ(integer, k); - } while (!(k >= 5)); - } - break; - case ams : { - for (i = 0; i <= 3; i ++) { - j = p_o_s; - imp = odd(y_s); - port[0x3de] = i; - k = 0; - do { - if (imp) { - s_s[i][k] = memw[0xb800 + j]; - j = j + 80 - 0x2000; - } else { - s_s[i][k] = memw[0xb800 + j]; - j = j + 0x2000; - } - imp = ! imp; - k = succ(integer, k); - } while (!(k >= 8)); - } - } - break; - case ega : { - port[0x3ce] = 4; - l = 0; - do { - port[0x3cf] = l; - k = 0; - j = p_o_s; - do { - s_s[l][k] = mem[0xa000 + j] + (mem[0xa000 + succ(integer, j)] << 8); - j = j + 80; - k = succ(integer, k); - } while (!(k >= 8)); - l = l + 1; - } while (!(l == 4)); - } - break; - case her : { - j = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 3); - for (i = 0; i <= 5; i ++) { - for (k = 0; k <= 3; k ++) s_s[i][k] = memw[0xb000 + k * 0x200 + j]; - j = j + 80; - } - } - break; - case tan : { - j = ((cardinal)y_s >> 2) * 160 + ((cardinal)x_s >> 1); - k = 0; - do { - for (i = 0; i <= 3; i ++) { - s_s[k][i + (k << 2)] = memw[0xb800 + 0x200 * i + j]; - s_s[k + 3][i + (k << 2)] = memw[0xb800 + 0x200 * i + j + 2]; - } - j = j + 160; - k = succ(integer, k); - } while (!(k == 3)); - } - break; - } /* case Gd */ - affput(2, gd, x_s, y_s, 0, 0); -} - -void pos_mouse(integer x, integer y) { - registres reg; - - if (x > 314 * res) x = 314 * res; - else if (x < 0) x = 0; - if (y > 199) y = 199; - else if (y < 0) y = 0; - if ((x == x_s) && (y == y_s)) return; - if (int_m) { - { - reg.ax = 4; - reg.cx = x; - reg.dx = y; - } - intr(0x33, reg); - } - hide_mouse(); - x_s = x; - y_s = y; - switch (gd) { - case ams : { - p_o_s = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 3) + (y_s & 1) * 0x2000; - } - break; - /*cga : begin - P_O_S:=(Y_S shr 1)*80+X_S shr 2+(Y_S and 1)*$2000; - end;*/ - case ega : { - p_o_s = y_s * 80 + ((cardinal)x_s >> 3); - } - break; - } /* case Gd */ - show_mouse(); -} - -void read_pos_mouse(integer &x, integer &y, integer &c) { - registres reg; - - if (int_m) { - reg.ax = 3; - intr(0x33, reg); - x = reg.cx; - y = reg.dx; - c = reg.bx; - } else { - c = 0; - x = x_s; - y = y_s; - } -} - -void mov_mouse(boolean &funct, char &key) { - boolean p_key; - char in1, in2; - integer x, y, cx, cy, cd; - registres reg; - - if (int_m) { - reg.ax = 3; - intr(0x33, reg); - x = reg.cx; - y = reg.dx; - cd = reg.bx; - pos_mouse(x, y); - if (cd != 0) { - clic = true; - return; - } - } - funct = false; - key = '\377'; - p_key = keypressed(); - while (p_key) { - input >> kbd >> in1; - read_pos_mouse(cx, cy, cd); - switch (upcase(in1)) { - case '4' : - cx = cx - 8; - break; - case '2' : - cy = cy + 8; - break; - case '6' : - cx = cx + 8; - break; - case '8' : - cy = cy - 8; - break; - case '7' : { - cy = 1; - cx = 1; - } - break; - case '1' : { - cx = 1; - cy = 190; - } - break; - case '9' : { - cx = 315 * res; - cy = 1; - } - break; - case '3' : { - cy = 190; - cx = 315 * res; - } - break; - case '5' : { - cy = 100; - cx = 155 * res; - } - break; - case ' ': - case '\15' : { - clic = true; - return; - } - break; - case '\33' : { - p_key = keypressed(); - if (p_key) { - input >> kbd >> in2; - switch (in2) { - case 'K' : - cx = pred(integer, cx); - break; - case 'P' : - cy = succ(integer, cy); - break; - case 'M' : - cx = cx + 2; - break; - case 'H' : - cy = pred(integer, cy); - break; - case RANGE_10(';', 'D') : { - funct = true; - key = in2; - return; - } - break; - case 'G' : { - cx = cx - 1; - cy = cy - 1; - } - break; - case 'I' : { - cx = cx + 1; - cy = cy - 1; - } - break; - case 'O' : { - cx = cx - 1; - cy = cy + 1; - } - break; - case 'Q' : { - cx = cx + 1; - cy = cy + 1; - } - break; - } /* case */ - } - } - break; - case 'I' : { - cx = res * 32; - cy = 8; - } - break; - case 'D' : { - cx = 80 * res; - cy = 8; - } - break; - case 'A' : { - cx = 126 * res; - cy = 8; - } - break; - case 'S' : { - cx = 174 * res; - cy = 8; - } - break; - case 'P' : { - cx = 222 * res; - cy = 8; - } - break; - case 'F' : { - cx = res * 270; - cy = 8; - } - break; - case '\23' : { - sonoff = ! sonoff; - return; - } - break; - case '\26' : { - zuul = true; - return; - } - break; - case '\24' : { /* ^T => mode tandy */ - funct = true; - key = '\11'; - } - break; - case '\10' : { /* ^H => mode Hercule */ - funct = true; - key = '\7'; - } - break; - case '\1': - case '\3': - case '\5' : { - funct = true; - key = in1; - } - break; - } - pos_mouse(cx, cy); - p_key = keypressed(); - } -} diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp new file mode 100644 index 0000000000..7c8f1c9f5c --- /dev/null +++ b/engines/mortevielle/outtext.cpp @@ -0,0 +1,206 @@ +str255 delig; +const array<0, 31, byte> tabdr += {{ + 32, 101, 115, 97, 114, 105, 110, + 117, 116, 111, 108, 13, 100, 99, + 112, 109, 46, 118, 130, 39, 102, + 98, 44, 113, 104, 103, 33, 76, + 85, 106, 30, 31 + } +}; + + +const array<0, 31, byte> tab30 += {{ + 69, 67, 74, 138, 133, 120, 77, 122, + 121, 68, 65, 63, 73, 80, 83, 82, + 156, 45, 58, 79, 49, 86, 78, 84, + 71, 81, 64, 66, 135, 34, 136, 91 + } +}; + + + +const array<0, 31, byte> tab31 += {{ + 93, 47, 48, 53, 50, 70, 124, 75, + 72, 147, 140, 150, 151, 57, 56, 51, + 107, 139, 55, 89, 131, 37, 54, 88, + 119, 0, 0, 0, 0, 0, 0, 0 + } +}; + +void deline(integer num , phrase &l , integer &tl); + +static void cinq_huit(char &c, integer &ind, byte &pt, boolean &the_end) { + const array<0, 31, char> rap + = {{ ',', ':', '@', '!', '?', '-', '‡', + ' ', '…', '', '‚', 'Š', '', '/', + '‹', 'Ś', '˘', '\47', '“', '"', '—', + '–', '0', '1', '2', '3', '4', '5', + '6', '7', '8', '9' + } + }; + integer oct, ocd; + + /* 5-8 */ + oct = t_mot[ind]; + oct = (cardinal)(oct << (16 - pt)) >> (16 - pt); + if (pt < 6) { + ind = ind + 1; + oct = oct << (5 - pt); + pt = pt + 11; + oct = oct | ((cardinal)t_mot[ind] >> pt); + } else { + pt = pt - 5; + oct = (cardinal)oct >> pt; + } + + switch (oct) { + case 11 : { + c = '$'; + the_end = true; + } + break; + case 30: + case 31 : { + ocd = t_mot[ind]; + ocd = (cardinal)(ocd << (16 - pt)) >> (16 - pt); + if (pt < 6) { + ind = ind + 1; + ocd = ocd << (5 - pt); + pt = pt + 11; + ocd = ocd | ((cardinal)t_mot[ind] >> pt); + } else { + pt = pt - 5; + ocd = (cardinal)ocd >> pt; + } + if (oct == 30) c = chr(tab30[ocd]); + else c = chr(tab31[ocd]); + if (c == '\0') { + the_end = true; + c = '#'; + } + } + break; + default: + c = chr(tabdr[oct]); + } +} /* 5-8 */ + +void deline(integer num , phrase &l , integer &tl) { + integer i, j, ts; + char let; + byte ps, k; + boolean the_end; + + /* DETEX */ + /*debug(' => DeLine');*/ + delig = ""; + ts = t_rec[num].indis; + ps = t_rec[num].point; + i = ts; + tl = 1; + j = 1; + k = ps; + the_end = false; + do { + cinq_huit(let, i, k, the_end); + l[j] = let; + if (j < 254) delig = delig + let; + j = j + 1; + } while (!the_end); + tl = j - 1; + if (tl < 255) delig = copy(delig, 1, tl - 1); /* enleve le $ */ +} /* DETEX */ + + +void afftex(phrase ch, integer x, integer y, integer dx, integer dy, integer typ); + + +static integer l_motsuiv(integer p, phrase &ch, integer &tab) { + integer c; + + integer l_motsuiv_result; + c = p; + while (!(set::of(' ', '$', '@', eos).has(ch[p]))) p = p + 1; + l_motsuiv_result = tab * (p - c); + return l_motsuiv_result; +} + +void afftex(phrase ch, integer x, integer y, integer dx, integer dy, integer typ) { + boolean the_end; + char touch; + integer xf, yf; + integer xc, yc; + integer tab, p; + varying_string<255> s; + integer i, j, nt; + + + /* debug(' .. Afftex');*/ + putxy(x, y); + if (res == 1) tab = 10; + else tab = 6; + dx = dx * 6; + dy = dy * 6; + xc = x; + yc = y; + xf = x + dx; + yf = y + dy; + p = 1; + the_end = (ch[p] == '$'); + s = ""; + while (! the_end) { + switch (ch[p]) { + case '@' : { + writeg(s, typ); + s = ""; + p = p + 1; + xc = x; + yc = yc + 6; + putxy(xc, yc); + } + break; + case ' ' : { + s = s + ' '; + xc = xc + tab; + p = p + 1; + if (l_motsuiv(p, ch, tab) + xc > xf) { + writeg(s, typ); + s = ""; + xc = x; + yc = yc + 6; + if (yc > yf) { + do { + ; + } while (!keypressed()); + i = y; + do { + j = x; + do { + putxy(j, i); + writeg(" ", 0); + j = j + 6; + } while (!(j > xf)); + i = i + 6; + } while (!(i > yf)); + yc = y; + } + putxy(xc, yc); + } + } + break; + case '$' : { + the_end = true; + writeg(s, typ); + } + break; + default: { + s = s + ch[p]; + p = p + 1; + xc = xc + tab; + } + } /* case */ + } +} diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h deleted file mode 100644 index 7c8f1c9f5c..0000000000 --- a/engines/mortevielle/outtext.h +++ /dev/null @@ -1,206 +0,0 @@ -str255 delig; -const array<0, 31, byte> tabdr -= {{ - 32, 101, 115, 97, 114, 105, 110, - 117, 116, 111, 108, 13, 100, 99, - 112, 109, 46, 118, 130, 39, 102, - 98, 44, 113, 104, 103, 33, 76, - 85, 106, 30, 31 - } -}; - - -const array<0, 31, byte> tab30 -= {{ - 69, 67, 74, 138, 133, 120, 77, 122, - 121, 68, 65, 63, 73, 80, 83, 82, - 156, 45, 58, 79, 49, 86, 78, 84, - 71, 81, 64, 66, 135, 34, 136, 91 - } -}; - - - -const array<0, 31, byte> tab31 -= {{ - 93, 47, 48, 53, 50, 70, 124, 75, - 72, 147, 140, 150, 151, 57, 56, 51, - 107, 139, 55, 89, 131, 37, 54, 88, - 119, 0, 0, 0, 0, 0, 0, 0 - } -}; - -void deline(integer num , phrase &l , integer &tl); - -static void cinq_huit(char &c, integer &ind, byte &pt, boolean &the_end) { - const array<0, 31, char> rap - = {{ ',', ':', '@', '!', '?', '-', '‡', - ' ', '…', '', '‚', 'Š', '', '/', - '‹', 'Ś', '˘', '\47', '“', '"', '—', - '–', '0', '1', '2', '3', '4', '5', - '6', '7', '8', '9' - } - }; - integer oct, ocd; - - /* 5-8 */ - oct = t_mot[ind]; - oct = (cardinal)(oct << (16 - pt)) >> (16 - pt); - if (pt < 6) { - ind = ind + 1; - oct = oct << (5 - pt); - pt = pt + 11; - oct = oct | ((cardinal)t_mot[ind] >> pt); - } else { - pt = pt - 5; - oct = (cardinal)oct >> pt; - } - - switch (oct) { - case 11 : { - c = '$'; - the_end = true; - } - break; - case 30: - case 31 : { - ocd = t_mot[ind]; - ocd = (cardinal)(ocd << (16 - pt)) >> (16 - pt); - if (pt < 6) { - ind = ind + 1; - ocd = ocd << (5 - pt); - pt = pt + 11; - ocd = ocd | ((cardinal)t_mot[ind] >> pt); - } else { - pt = pt - 5; - ocd = (cardinal)ocd >> pt; - } - if (oct == 30) c = chr(tab30[ocd]); - else c = chr(tab31[ocd]); - if (c == '\0') { - the_end = true; - c = '#'; - } - } - break; - default: - c = chr(tabdr[oct]); - } -} /* 5-8 */ - -void deline(integer num , phrase &l , integer &tl) { - integer i, j, ts; - char let; - byte ps, k; - boolean the_end; - - /* DETEX */ - /*debug(' => DeLine');*/ - delig = ""; - ts = t_rec[num].indis; - ps = t_rec[num].point; - i = ts; - tl = 1; - j = 1; - k = ps; - the_end = false; - do { - cinq_huit(let, i, k, the_end); - l[j] = let; - if (j < 254) delig = delig + let; - j = j + 1; - } while (!the_end); - tl = j - 1; - if (tl < 255) delig = copy(delig, 1, tl - 1); /* enleve le $ */ -} /* DETEX */ - - -void afftex(phrase ch, integer x, integer y, integer dx, integer dy, integer typ); - - -static integer l_motsuiv(integer p, phrase &ch, integer &tab) { - integer c; - - integer l_motsuiv_result; - c = p; - while (!(set::of(' ', '$', '@', eos).has(ch[p]))) p = p + 1; - l_motsuiv_result = tab * (p - c); - return l_motsuiv_result; -} - -void afftex(phrase ch, integer x, integer y, integer dx, integer dy, integer typ) { - boolean the_end; - char touch; - integer xf, yf; - integer xc, yc; - integer tab, p; - varying_string<255> s; - integer i, j, nt; - - - /* debug(' .. Afftex');*/ - putxy(x, y); - if (res == 1) tab = 10; - else tab = 6; - dx = dx * 6; - dy = dy * 6; - xc = x; - yc = y; - xf = x + dx; - yf = y + dy; - p = 1; - the_end = (ch[p] == '$'); - s = ""; - while (! the_end) { - switch (ch[p]) { - case '@' : { - writeg(s, typ); - s = ""; - p = p + 1; - xc = x; - yc = yc + 6; - putxy(xc, yc); - } - break; - case ' ' : { - s = s + ' '; - xc = xc + tab; - p = p + 1; - if (l_motsuiv(p, ch, tab) + xc > xf) { - writeg(s, typ); - s = ""; - xc = x; - yc = yc + 6; - if (yc > yf) { - do { - ; - } while (!keypressed()); - i = y; - do { - j = x; - do { - putxy(j, i); - writeg(" ", 0); - j = j + 6; - } while (!(j > xf)); - i = i + 6; - } while (!(i > yf)); - yc = y; - } - putxy(xc, yc); - } - } - break; - case '$' : { - the_end = true; - writeg(s, typ); - } - break; - default: { - s = s + ch[p]; - p = p + 1; - xc = xc + tab; - } - } /* case */ - } -} diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp new file mode 100644 index 0000000000..d40f8d39bc --- /dev/null +++ b/engines/mortevielle/ovd1.cpp @@ -0,0 +1,337 @@ +void dem2() { + untyped_file f; + integer k; + + /* -- demande de disk 2 -- */ + while (ioresult != 0); + assign(f, "mort.001"); + /*$i-*/ + reset(f); + while (ioresult != 0) { + show_mouse(); + k = do_alert(al_mess2, 1); + hide_mouse(); + reset(f); + } + close(f); +} + +void ani50() { + crep = animof(1, 1); + pictout(adani, crep, 63, 12); + crep = animof(2, 1); + pictout(adani, crep, 63, 12); + f2_all = (res == 1); + repon(2, c_paroles + 143); +} + +/*overlay procedure apzuul; + begin + if (c_zzz=1) or (c_zzz=2) then + begin + zzuul(adcfiec+161,0,1644); + c_zzz:=succ(c_zzz); + end; + end;*/ + +/* overlay */ void aff50(boolean c) { + integer k; + + caff = 50; + maff = 0; + taffich(); + dessine(ades, 63, 12); + if (c) ani50(); + else repon(2, c_paroles + 142); + f3f8(); +} + +/* overlay */ void init_menu() { + integer i, j, tai; + phrase st; + untyped_file f; + + assign(f, "menufr.mor"); + /*$i-*/ + reset(f, 144); + blockread(f, lettres, 1); + close(f); + /* ---- Demande de changement de disquette ---- */ + dem2(); + + + for (i = 1; i <= 8; i ++) + inv[i] = "* "; + inv[7] = "< -*-*-*-*-*-*-*-*-*- "; + for (i = 1; i <= 7; i ++) + dep[i] = "* "; + i = 1; + do { + deline(i + c_action, st, tai); + act[i] = delig + " "; + if (i < 9) { + if (i < 6) { + deline(i + c_saction, st, tai); + self_[i] = delig + " "; + } + deline(i + c_dis, st, tai); + dis[i] = delig + ' '; + } + i = succ(integer, i); + } while (!(i == 22)); + for (i = 1; i <= 8; i ++) { + disc[i] = 0x500 + i; + if (i < 8) depl[i] = 0x200 + i; + invt[i] = 0x100 + i; + if (i > 6) menu_disable(invt[i]); + } + msg3 = no_choice; + msg4 = no_choice; + msg[3] = no_choice; + msg[4] = no_choice; + clic = false; +} + + +/* overlay */ void charpal() { + file f; + file ft; + integer i, j, k; + file fb; + byte b; + + assign(ft, "fxx.mor"); + /*$i-*/ + reset(ft); + if (ioresult != 0) { + caff = do_alert(err_mess, 1); + exit(0); + } + ft >> l; + close(ft); + assign(f, "plxx.mor"); + reset(f); + for (i = 0; i <= 90; i ++) f >> tabpal[i]; + close(f); + assign(fb, "cxx.mor"); + reset(fb); + for (j = 0; j <= 90; j ++) { + fb >> palcga[j].p; + for (i = 0; i <= 15; i ++) { + nhom &with = palcga[j].a[i]; + + fb >> b; + with.n = (cardinal)b >> 4; + with.hom[0] = ((cardinal)b >> 2) & 3; + with.hom[1] = b & 3; + } + } + palcga[10].a[9] = palcga[10].a[5]; + for (j = 0; j <= 14; j ++) { + fb >> tpt[j].tax; + fb >> tpt[j].tay; + for (i = 1; i <= 20; i ++) + for (k = 1; k <= 20; k ++) + fb >> tpt[j].des[i][k]; + } + close(fb); +} + +/* overlay */ void chartex() { + integer i; + untyped_file fibyte; + phrase s; + + /* debug('o3 chartex'); */ + i = 0; + assign(fibyte, "TXX.INP"); + /*$i-*/ + reset(fibyte); + blockread(fibyte, t_mot, 125); + close(fibyte); + assign(sauv_t, "TXX.NTP"); + reset(sauv_t); + do { + sauv_t >> t_rec[i]; + i = i + 1; + } while (!(eof(sauv_t))); + close(sauv_t); + deline(578, s, i); + al_mess = delig; + deline(579, s, i); + err_mess = delig; + deline(580, s, i); + ind_mess = delig; + deline(581, s, i); + al_mess2 = delig; +} + +/* overlay */ void dialpre() + +{ + integer cy, tay; + phrase st; + real ix; + char ch; + + + /* debug('o3 dialpre'); */ + cy = 0; + clrscr; + textcolor(9); + do { + cy = cy + 1; + deline(cy + c_dialpre, st, tay); + gotoxy(40 - tay / 2, wherey + 1); + output << delig; + } while (!(cy == 20)); + ix = 0; + do { + ix = ix + 1; + } while (!(keypressed() | (ix == 5e5))); + crep = 998; + textcolor(1); + gotoxy(1, 21); + clreol; + gotoxy(1, 23); + output << "CARTE GRAPHIQUE CGA EGA HERCULE/AT&T400 TANDY AMSTRAD1512"; + gotoxy(12, 24); + output << "Ctrl C E H T A"; + do { + input >> kbd >> ch; + } while (!(set::of('\1', '\3', '\5', '\24', '\10', eos).has(ch))); + switch (ch) { + case '\1': + case '\3': + case '\5' : + gd = (cardinal)ord(ch) >> 1; + break; + case '\10' : + gd = her; + break; + case '\24' : + gd = tan; + break; + } + gotoxy(1, 24); + clreol; + gotoxy(1, 23); + clreol; + gotoxy(26, 23); + output << "Jeu au Clavier / … la Souris"; + textcolor(4); + gotoxy(33, 23); + output << 'C'; + gotoxy(48, 23); + output << 'S'; + do { + input >> kbd >> ch; + } while (!(set::of('C', 'S', eos).has(upcase(ch)))); + int_m = (upcase(ch) == 'S'); +} + +/* overlay */ void init_lieu() { + file f_lieu; + + /* debug('o3 init_lieu'); */ + assign(f_lieu, "MXX.mor"); + /*$i-*/ + reset(f_lieu); + f_lieu >> v_lieu; + close(f_lieu); +} + + +/* overlay */ void music() { + untyped_file fic; + integer k; + boolean fin; + char ch; + real x, y; + + + /* debug('o3 music'); */ + if (sonoff) return; + rech_cfiec = true; + assign(fic, "mort.img"); + /*$i-*/ + reset(fic); + blockread(fic, mem[0x3800 + 0], 500); + blockread(fic, mem[0x47a0 + 0], 123); + close(fic); + demus(0x3800, 0x5000, 623); + addfix = (real)((tempo_mus - addv[1])) / 256; + cctable(tbi); + + fin = false; + k = 0; + do { + fin = keypressed(); + musyc(tbi, 9958 , tempo_mus); + k = k + 1; + fin = fin | keypressed() | (k >= 5); + } while (!fin); + while (keypressed()) input >> kbd >> ch; +} + + +/* overlay */ void charge_bruit5() { + untyped_file f; + + assign(f, "bruit5"); + /*$i-*/ + reset(f); + if (ioresult != 0) { + caff = do_alert(err_mess, 1); + exit(0); + } + blockread(f, mem[adbruit5 + 0], 149); + /*blockread(f,mem[$5CB0:0],100); + blockread(f,mem[$3D1F:0],49);*/ + close(f); +} + +/* overlay */ void charge_cfiec() { + untyped_file f; + + assign(f, "cfiec.mor"); + /*$i-*/ + reset(f); + blockread(f, mem[adcfiec + 0], 511); + blockread(f, mem[adcfiec + 4088 + 0], 311); + close(f); + rech_cfiec = false; +} + + +/* overlay */ void charge_cfiph() { + untyped_file f; + + assign(f, "cfiph.mor"); + /*$i-*/ + reset(f, 256); + blockread(f, t_cph, 50); + close(f); +} + + +/* overlay */ void suite() { + varying_string<25> cpr; + + hirs(); + repon(7, 2035); + caff = 51; + taffich(); + teskbd(); + if (newgd != gd) gd = newgd; + hirs(); + dessine(ades, 0, 0); + gotoxy(20 * pred(integer, res) + 8, 24); + textcolor(7); + cpr = "COPYRIGHT 1989 : LANKHOR"; + if (set::of(ega, ams, cga, eos).has(gd)) output << cpr; + else { + putxy(104 + 72 * res, 190); + writeg(cpr, 0); + } +} diff --git a/engines/mortevielle/ovd1.h b/engines/mortevielle/ovd1.h deleted file mode 100644 index d40f8d39bc..0000000000 --- a/engines/mortevielle/ovd1.h +++ /dev/null @@ -1,337 +0,0 @@ -void dem2() { - untyped_file f; - integer k; - - /* -- demande de disk 2 -- */ - while (ioresult != 0); - assign(f, "mort.001"); - /*$i-*/ - reset(f); - while (ioresult != 0) { - show_mouse(); - k = do_alert(al_mess2, 1); - hide_mouse(); - reset(f); - } - close(f); -} - -void ani50() { - crep = animof(1, 1); - pictout(adani, crep, 63, 12); - crep = animof(2, 1); - pictout(adani, crep, 63, 12); - f2_all = (res == 1); - repon(2, c_paroles + 143); -} - -/*overlay procedure apzuul; - begin - if (c_zzz=1) or (c_zzz=2) then - begin - zzuul(adcfiec+161,0,1644); - c_zzz:=succ(c_zzz); - end; - end;*/ - -/* overlay */ void aff50(boolean c) { - integer k; - - caff = 50; - maff = 0; - taffich(); - dessine(ades, 63, 12); - if (c) ani50(); - else repon(2, c_paroles + 142); - f3f8(); -} - -/* overlay */ void init_menu() { - integer i, j, tai; - phrase st; - untyped_file f; - - assign(f, "menufr.mor"); - /*$i-*/ - reset(f, 144); - blockread(f, lettres, 1); - close(f); - /* ---- Demande de changement de disquette ---- */ - dem2(); - - - for (i = 1; i <= 8; i ++) - inv[i] = "* "; - inv[7] = "< -*-*-*-*-*-*-*-*-*- "; - for (i = 1; i <= 7; i ++) - dep[i] = "* "; - i = 1; - do { - deline(i + c_action, st, tai); - act[i] = delig + " "; - if (i < 9) { - if (i < 6) { - deline(i + c_saction, st, tai); - self_[i] = delig + " "; - } - deline(i + c_dis, st, tai); - dis[i] = delig + ' '; - } - i = succ(integer, i); - } while (!(i == 22)); - for (i = 1; i <= 8; i ++) { - disc[i] = 0x500 + i; - if (i < 8) depl[i] = 0x200 + i; - invt[i] = 0x100 + i; - if (i > 6) menu_disable(invt[i]); - } - msg3 = no_choice; - msg4 = no_choice; - msg[3] = no_choice; - msg[4] = no_choice; - clic = false; -} - - -/* overlay */ void charpal() { - file f; - file ft; - integer i, j, k; - file fb; - byte b; - - assign(ft, "fxx.mor"); - /*$i-*/ - reset(ft); - if (ioresult != 0) { - caff = do_alert(err_mess, 1); - exit(0); - } - ft >> l; - close(ft); - assign(f, "plxx.mor"); - reset(f); - for (i = 0; i <= 90; i ++) f >> tabpal[i]; - close(f); - assign(fb, "cxx.mor"); - reset(fb); - for (j = 0; j <= 90; j ++) { - fb >> palcga[j].p; - for (i = 0; i <= 15; i ++) { - nhom &with = palcga[j].a[i]; - - fb >> b; - with.n = (cardinal)b >> 4; - with.hom[0] = ((cardinal)b >> 2) & 3; - with.hom[1] = b & 3; - } - } - palcga[10].a[9] = palcga[10].a[5]; - for (j = 0; j <= 14; j ++) { - fb >> tpt[j].tax; - fb >> tpt[j].tay; - for (i = 1; i <= 20; i ++) - for (k = 1; k <= 20; k ++) - fb >> tpt[j].des[i][k]; - } - close(fb); -} - -/* overlay */ void chartex() { - integer i; - untyped_file fibyte; - phrase s; - - /* debug('o3 chartex'); */ - i = 0; - assign(fibyte, "TXX.INP"); - /*$i-*/ - reset(fibyte); - blockread(fibyte, t_mot, 125); - close(fibyte); - assign(sauv_t, "TXX.NTP"); - reset(sauv_t); - do { - sauv_t >> t_rec[i]; - i = i + 1; - } while (!(eof(sauv_t))); - close(sauv_t); - deline(578, s, i); - al_mess = delig; - deline(579, s, i); - err_mess = delig; - deline(580, s, i); - ind_mess = delig; - deline(581, s, i); - al_mess2 = delig; -} - -/* overlay */ void dialpre() - -{ - integer cy, tay; - phrase st; - real ix; - char ch; - - - /* debug('o3 dialpre'); */ - cy = 0; - clrscr; - textcolor(9); - do { - cy = cy + 1; - deline(cy + c_dialpre, st, tay); - gotoxy(40 - tay / 2, wherey + 1); - output << delig; - } while (!(cy == 20)); - ix = 0; - do { - ix = ix + 1; - } while (!(keypressed() | (ix == 5e5))); - crep = 998; - textcolor(1); - gotoxy(1, 21); - clreol; - gotoxy(1, 23); - output << "CARTE GRAPHIQUE CGA EGA HERCULE/AT&T400 TANDY AMSTRAD1512"; - gotoxy(12, 24); - output << "Ctrl C E H T A"; - do { - input >> kbd >> ch; - } while (!(set::of('\1', '\3', '\5', '\24', '\10', eos).has(ch))); - switch (ch) { - case '\1': - case '\3': - case '\5' : - gd = (cardinal)ord(ch) >> 1; - break; - case '\10' : - gd = her; - break; - case '\24' : - gd = tan; - break; - } - gotoxy(1, 24); - clreol; - gotoxy(1, 23); - clreol; - gotoxy(26, 23); - output << "Jeu au Clavier / … la Souris"; - textcolor(4); - gotoxy(33, 23); - output << 'C'; - gotoxy(48, 23); - output << 'S'; - do { - input >> kbd >> ch; - } while (!(set::of('C', 'S', eos).has(upcase(ch)))); - int_m = (upcase(ch) == 'S'); -} - -/* overlay */ void init_lieu() { - file f_lieu; - - /* debug('o3 init_lieu'); */ - assign(f_lieu, "MXX.mor"); - /*$i-*/ - reset(f_lieu); - f_lieu >> v_lieu; - close(f_lieu); -} - - -/* overlay */ void music() { - untyped_file fic; - integer k; - boolean fin; - char ch; - real x, y; - - - /* debug('o3 music'); */ - if (sonoff) return; - rech_cfiec = true; - assign(fic, "mort.img"); - /*$i-*/ - reset(fic); - blockread(fic, mem[0x3800 + 0], 500); - blockread(fic, mem[0x47a0 + 0], 123); - close(fic); - demus(0x3800, 0x5000, 623); - addfix = (real)((tempo_mus - addv[1])) / 256; - cctable(tbi); - - fin = false; - k = 0; - do { - fin = keypressed(); - musyc(tbi, 9958 , tempo_mus); - k = k + 1; - fin = fin | keypressed() | (k >= 5); - } while (!fin); - while (keypressed()) input >> kbd >> ch; -} - - -/* overlay */ void charge_bruit5() { - untyped_file f; - - assign(f, "bruit5"); - /*$i-*/ - reset(f); - if (ioresult != 0) { - caff = do_alert(err_mess, 1); - exit(0); - } - blockread(f, mem[adbruit5 + 0], 149); - /*blockread(f,mem[$5CB0:0],100); - blockread(f,mem[$3D1F:0],49);*/ - close(f); -} - -/* overlay */ void charge_cfiec() { - untyped_file f; - - assign(f, "cfiec.mor"); - /*$i-*/ - reset(f); - blockread(f, mem[adcfiec + 0], 511); - blockread(f, mem[adcfiec + 4088 + 0], 311); - close(f); - rech_cfiec = false; -} - - -/* overlay */ void charge_cfiph() { - untyped_file f; - - assign(f, "cfiph.mor"); - /*$i-*/ - reset(f, 256); - blockread(f, t_cph, 50); - close(f); -} - - -/* overlay */ void suite() { - varying_string<25> cpr; - - hirs(); - repon(7, 2035); - caff = 51; - taffich(); - teskbd(); - if (newgd != gd) gd = newgd; - hirs(); - dessine(ades, 0, 0); - gotoxy(20 * pred(integer, res) + 8, 24); - textcolor(7); - cpr = "COPYRIGHT 1989 : LANKHOR"; - if (set::of(ega, ams, cga, eos).has(gd)) output << cpr; - else { - putxy(104 + 72 * res, 190); - writeg(cpr, 0); - } -} diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp new file mode 100644 index 0000000000..3b777c3770 --- /dev/null +++ b/engines/mortevielle/parole.cpp @@ -0,0 +1,424 @@ + +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; +*/ + diff --git a/engines/mortevielle/parole.h b/engines/mortevielle/parole.h deleted file mode 100644 index 3b777c3770..0000000000 --- a/engines/mortevielle/parole.h +++ /dev/null @@ -1,424 +0,0 @@ - -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; -*/ - diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp new file mode 100644 index 0000000000..07ac757d77 --- /dev/null +++ b/engines/mortevielle/parole2.cpp @@ -0,0 +1,95 @@ +void rot_chariot() { + c1 = c2; + c2 = c3; + { + c3.val = 32; + c3.code = 9; + } +} + +void init_chariot() { + { + c3.rep = 0; + c3.freq = 0; + c3.acc = 0; + } + rot_chariot(); + rot_chariot(); +} + + +void trait_ph() { + const array<0, 2, integer> deca + = {{300, 30, 40}}; + + ptr_tcph = pred(integer, num_ph); + ledeb = swap(t_cph[ptr_tcph]) + deca[typlec]; + lefin = swap(t_cph[ptr_tcph + 1]) + deca[typlec]; + nb_word = lefin - ledeb; + ptr_tcph = (cardinal)ledeb >> 1; + ptr_word = 0; + do { + memw[adword + ptr_word] = t_cph[ptr_tcph]; + ptr_word = ptr_word + 2; + ptr_tcph = ptr_tcph + 1; + } while (!(ptr_tcph >= ((cardinal)lefin >> 1))); + + ptr_oct = 0; + ptr_word = 0; + init_chariot(); + + do { + rot_chariot(); + charg_car(); + trait_car(); + } while (!(ptr_word >= nb_word)); + + rot_chariot(); + trait_car(); + entroct(ord('#')); +} + + + +void parole(integer rep, integer ht, integer typ) { + array<0, 500, integer> savph; + integer i; + integer tempo; + + + if (sonoff) return; + num_ph = rep; + haut = ht; + typlec = typ; + if (typlec != 0) { + for (i = 0; i <= 500; i ++) savph[i] = t_cph[i]; + tempo = tempo_bruit; + } else if (haut > 5) tempo = tempo_f; + else tempo = tempo_m; + addfix = (real)((tempo - addv[0])) / 256; + cctable(tbi); + switch (typ) { + case 1 : { + charge_bruit(); + /*if zuul then zzuul(adbruit,0,1095);*/ + regenbruit(); + } + break; + case 2 : { + charge_son(); + charge_phbruit(); + } + break; + } + trait_ph(); + litph(tbi, typ, tempo); + if (typlec != 0) + for (i = 0; i <= 500; i ++) { + t_cph[i] = savph[i]; + mlec = typlec; + } + writepal(numpal); +} + + + diff --git a/engines/mortevielle/parole2.h b/engines/mortevielle/parole2.h deleted file mode 100644 index 07ac757d77..0000000000 --- a/engines/mortevielle/parole2.h +++ /dev/null @@ -1,95 +0,0 @@ -void rot_chariot() { - c1 = c2; - c2 = c3; - { - c3.val = 32; - c3.code = 9; - } -} - -void init_chariot() { - { - c3.rep = 0; - c3.freq = 0; - c3.acc = 0; - } - rot_chariot(); - rot_chariot(); -} - - -void trait_ph() { - const array<0, 2, integer> deca - = {{300, 30, 40}}; - - ptr_tcph = pred(integer, num_ph); - ledeb = swap(t_cph[ptr_tcph]) + deca[typlec]; - lefin = swap(t_cph[ptr_tcph + 1]) + deca[typlec]; - nb_word = lefin - ledeb; - ptr_tcph = (cardinal)ledeb >> 1; - ptr_word = 0; - do { - memw[adword + ptr_word] = t_cph[ptr_tcph]; - ptr_word = ptr_word + 2; - ptr_tcph = ptr_tcph + 1; - } while (!(ptr_tcph >= ((cardinal)lefin >> 1))); - - ptr_oct = 0; - ptr_word = 0; - init_chariot(); - - do { - rot_chariot(); - charg_car(); - trait_car(); - } while (!(ptr_word >= nb_word)); - - rot_chariot(); - trait_car(); - entroct(ord('#')); -} - - - -void parole(integer rep, integer ht, integer typ) { - array<0, 500, integer> savph; - integer i; - integer tempo; - - - if (sonoff) return; - num_ph = rep; - haut = ht; - typlec = typ; - if (typlec != 0) { - for (i = 0; i <= 500; i ++) savph[i] = t_cph[i]; - tempo = tempo_bruit; - } else if (haut > 5) tempo = tempo_f; - else tempo = tempo_m; - addfix = (real)((tempo - addv[0])) / 256; - cctable(tbi); - switch (typ) { - case 1 : { - charge_bruit(); - /*if zuul then zzuul(adbruit,0,1095);*/ - regenbruit(); - } - break; - case 2 : { - charge_son(); - charge_phbruit(); - } - break; - } - trait_ph(); - litph(tbi, typ, tempo); - if (typlec != 0) - for (i = 0; i <= 500; i ++) { - t_cph[i] = savph[i]; - mlec = typlec; - } - writepal(numpal); -} - - - diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp new file mode 100644 index 0000000000..7bdea5b850 --- /dev/null +++ b/engines/mortevielle/prog.cpp @@ -0,0 +1,319 @@ +/* overlay */ void change_gd(integer ngd) { + integer i; + + hide_mouse(); + gd = ngd; + hirs(); + init_mouse(); + show_mouse(); + dessine_rouleau(); + tinke(); + pendule(); + if (ipers != 0) affper(ipers); + else person(); + clsf2(); + clsf3(); + maff = 68; + afdes(0); + repon(2, crep); + menu_aff(); +} + +/* overlay */ void antegame() { + integer cx; + registres regs; + array<0, 511, char> buffer; + integer i, j, k; + array<0, 2, boolean> test; + array<0, 7, char> g; + + + hide_mouse(); + imen = false; + g[1] = 'M'; + perdu = true; + anyone = false; + okdes = true; + test[0] = false; + test[1] = false; + g[0] = '\40'; + col = false; + tesok = true; + test[2] = false; + g[7] = g[0]; + g[2] = 'A'; + cache = false; + brt = false; + maff = 68; + g[5] = 'E'; + mnumo = 0; + prebru = 0; + g[4] = 'T'; + x = 0; + y = 0; + num = 0; + hdb = 0; + hfb = 0; + cs = 0; + is = 0; + k = 0; + ment = 0; + syn = true; + fouil = true; + mchai = 0; + inei = 0; + initouv(); + g[3] = 'S'; + g[6] = 'R'; + iouv = 0; + dobj = 0; + affrep(); + stpou = ind_mess; + while ((test[k] == false) && (k < 2)) { + regs.ax = 0; + k = succ(integer, k); + intr(19, regs); + { + regs.ax = 0x201; + regs.cx = 0x1; + regs.dx = 0x100 + k - 1; + regs.es = seg(buffer); + regs.bx = ofs(buffer); + intr(19, regs); + test[k] = ! imen; + i = 0; + while ((test[k]) && (i < 19)) { + regs.ax = 0x201; + syn = false; + regs.cx = 0x2700 + i; + regs.dx = 0x100 + k - 1; + regs.es = seg(buffer); + regs.bx = ofs(buffer); + intr(19, regs); + if (lo(regs.flags) % 2 == 1) test[k] = false; + i = i + 1; + } + okdes = false; + solu = true; + for (j = 0; j <= 7; j ++) if (buffer[j + 504] != g[j]) test[k] = false; + } + perdu = false; + fouil = false; + } + person(); + tinke(); + pendule(); + afdes(0); + repon(2, crep); + clsf3(); + solu = false; + tmlieu(s.mlieu); + modinv(); + if (s.derobj != 0) modobj2(s.derobj + 400, test[1], test[2]); + else tesok = test[1] || test[2]; + show_mouse(); +} + + +/* NIVEAU 3 */ +/* procedure PROGRAMME */ +void tmaj3() { + integer j, h, m; + + calch(j, h, m); + if (m == 30) m = 1; + h = h + (j * 24); + m = m + (h * 2); + s.heure = chr(m); +} + +void tsitu() + +{ + integer h, j, m; + + if (! col) clsf2(); + syn = false; + iesc = false; + if (anyone) goto L1; + if (brt) + if ((msg[3] == depla) || (msg[4] == sortir) || (msg[4] == dormir) || + (msg[4] == manger)) { + ctrm = 4; + goto L2; + } + if (msg[3] == depla) taller(); + if (msg[3] == discut) tparler(); + if (msg[3] == invent) tsprendre(); + if (msg[4] == attacher) tattacher(); + if (msg[4] == attendre) tattendre(); + if (msg[4] == defoncer) tdefoncer(); + if (msg[4] == dormir) tdormir(); + if (msg[4] == ecouter) tecouter(); + if (msg[4] == entrer) tentrer(); + if (msg[4] == fermer) tfermer(); + if (msg[4] == fouiller) tfouiller(); + if (msg[4] == frapper) tfrapper(); + if (msg[4] == gratter) tgratter(); + if (msg[4] == lire) tlire(); + if (msg[4] == manger) tmanger(); + if (msg[4] == mettre) tmettre(); + if (msg[4] == ouvrir) touvrir(); + if (msg[4] == prendre) tprendre(); + if (msg[4] == regarder) tregarder(); + if (msg[4] == sentir) tsentir(); + if (msg[4] == sonder) tsonder(); + if (msg[4] == sortir) tsortir(); + if (msg[4] == soulever) tsoulever(); + if (msg[4] == tourner) ttourner(); + if (msg[4] == scacher) { + tcacher(); + goto L1; + } + if (msg[4] == sfouiller) tsfouiller(); + if (msg[4] == slire) tslire(); + if (msg[4] == sposer) tposer(); + if (msg[4] == sregarder) tsregarder(); + cache = false; +L1: + if (anyone) { + quelquun(); + anyone = false; + goto L2; + } + calch(j, h, m); + if ((((h == 12) || (h == 13) || (h == 19)) && (s.mlieu != 10)) || + ((h > 0) && (h < 6) && (s.mlieu != 0))) s.conf = s.conf + 1; + if (((s.mlieu < 16) || (s.mlieu > 19)) && (s.mlieu != 23) + && (s.mlieu != 0) && (s.derobj != 152) && (! perdu)) { + if ((s.conf > 99) && (h > 8) && (h < 16)) { + crep = 1501; + tperd(); + } + if ((s.conf > 99) && (h > 0) && (h < 9)) { + crep = 1508; + tperd(); + } + if ((j > 1) && (h > 8) && (! perdu)) { + crep = 1502; + tperd(); + } + } +L2: + mennor(); +} + +void sv_game(integer n); + +void ld_game(integer n); + +void tecran() { + const char idem[] = "Idem"; + const integer lim = 20000; + integer temps; + char inkey; + boolean oo, funct; + + clsf3(); + oo = false; + ctrm = 0; + if (! iesc) { + draw_menu(); + imen = true; + temps = 0; + key = 0; + funct = false; + inkey = '.'; + + do { + mdn(); + tinke(); + mov_mouse(funct, inkey); + temps = temps + 1; + } while (!((choisi) || (temps > lim) || (funct) || (anyone))); + + erase_menu(); + imen = false; + if (set::of('\1', '\3', '\5', '\7', '\11', eos).has(inkey)) { + change_gd((cardinal)pred(integer, ord(inkey)) >> 1); + return; + } + if (choisi && (msg[3] == sauve)) sv_game(msg[4] & 7); + if (choisi && (msg[3] == charge)) ld_game(pred(integer, msg[4] & 7)); + if (inkey == '\103') { /* F9 */ + temps = do_alert(stpou, 1); + return; + } else if (inkey == '\77') { + if ((mnumo != no_choice) && ((msg[3] == action) || (msg[3] == saction))) { + msg[4] = mnumo; + ecr3(idem); + } else return; + } else if (inkey == '\104') { + if ((x != 0) && (y != 0)) num = 9999; + return; + } + } + if (inkey == '\73') { + arret = true; + tmaj3(); + } else { + if ((funct) && (inkey != '\77')) return; + if (temps > lim) { + repon(2, 141); + if (num == 9999) num = 0; + } else { + mnumo = msg[3]; + if ((msg[3] == action) || (msg[3] == saction)) mnumo = msg[4]; + if (! anyone) { + if ((fouil) || (obpart)) { + if (y_s < 12) return; + if ((msg[4] == sonder) || (msg[4] == soulever)) { + oo = true; + if ((msg[4] == soulever) || (obpart)) { + finfouil(); + caff = s.mlieu; + crep = 998; + } else tsuiv(); + mennor(); + } + } + } + do { + if (! oo) tsitu(); + if ((ctrm == 0) && (! perdu) && (! solu)) { + taffich(); + if (okdes) { + okdes = false; + dessin(0); + } + if ((! syn) || (col)) repon(2, crep); + } + } while (!(! syn)); + if (ctrm != 0) tctrm(); + } + } +} + +/* NIVEAU 1 */ + +void theure() { + vj = ord(s.heure); + vh = vj % 48; + vj = vj / 48; + vm = vh % 2; + vh = vh / 2; + heu = vh; + if (vm == 1) min = 30; + else min = 0; +} + + +void tjouer() { + antegame(); + do { + tecran(); + } while (!((arret) || (solu) || (perdu))); + if (solu) tmaj1(); + else if (perdu) tencore(); +} + diff --git a/engines/mortevielle/prog.h b/engines/mortevielle/prog.h deleted file mode 100644 index 7bdea5b850..0000000000 --- a/engines/mortevielle/prog.h +++ /dev/null @@ -1,319 +0,0 @@ -/* overlay */ void change_gd(integer ngd) { - integer i; - - hide_mouse(); - gd = ngd; - hirs(); - init_mouse(); - show_mouse(); - dessine_rouleau(); - tinke(); - pendule(); - if (ipers != 0) affper(ipers); - else person(); - clsf2(); - clsf3(); - maff = 68; - afdes(0); - repon(2, crep); - menu_aff(); -} - -/* overlay */ void antegame() { - integer cx; - registres regs; - array<0, 511, char> buffer; - integer i, j, k; - array<0, 2, boolean> test; - array<0, 7, char> g; - - - hide_mouse(); - imen = false; - g[1] = 'M'; - perdu = true; - anyone = false; - okdes = true; - test[0] = false; - test[1] = false; - g[0] = '\40'; - col = false; - tesok = true; - test[2] = false; - g[7] = g[0]; - g[2] = 'A'; - cache = false; - brt = false; - maff = 68; - g[5] = 'E'; - mnumo = 0; - prebru = 0; - g[4] = 'T'; - x = 0; - y = 0; - num = 0; - hdb = 0; - hfb = 0; - cs = 0; - is = 0; - k = 0; - ment = 0; - syn = true; - fouil = true; - mchai = 0; - inei = 0; - initouv(); - g[3] = 'S'; - g[6] = 'R'; - iouv = 0; - dobj = 0; - affrep(); - stpou = ind_mess; - while ((test[k] == false) && (k < 2)) { - regs.ax = 0; - k = succ(integer, k); - intr(19, regs); - { - regs.ax = 0x201; - regs.cx = 0x1; - regs.dx = 0x100 + k - 1; - regs.es = seg(buffer); - regs.bx = ofs(buffer); - intr(19, regs); - test[k] = ! imen; - i = 0; - while ((test[k]) && (i < 19)) { - regs.ax = 0x201; - syn = false; - regs.cx = 0x2700 + i; - regs.dx = 0x100 + k - 1; - regs.es = seg(buffer); - regs.bx = ofs(buffer); - intr(19, regs); - if (lo(regs.flags) % 2 == 1) test[k] = false; - i = i + 1; - } - okdes = false; - solu = true; - for (j = 0; j <= 7; j ++) if (buffer[j + 504] != g[j]) test[k] = false; - } - perdu = false; - fouil = false; - } - person(); - tinke(); - pendule(); - afdes(0); - repon(2, crep); - clsf3(); - solu = false; - tmlieu(s.mlieu); - modinv(); - if (s.derobj != 0) modobj2(s.derobj + 400, test[1], test[2]); - else tesok = test[1] || test[2]; - show_mouse(); -} - - -/* NIVEAU 3 */ -/* procedure PROGRAMME */ -void tmaj3() { - integer j, h, m; - - calch(j, h, m); - if (m == 30) m = 1; - h = h + (j * 24); - m = m + (h * 2); - s.heure = chr(m); -} - -void tsitu() - -{ - integer h, j, m; - - if (! col) clsf2(); - syn = false; - iesc = false; - if (anyone) goto L1; - if (brt) - if ((msg[3] == depla) || (msg[4] == sortir) || (msg[4] == dormir) || - (msg[4] == manger)) { - ctrm = 4; - goto L2; - } - if (msg[3] == depla) taller(); - if (msg[3] == discut) tparler(); - if (msg[3] == invent) tsprendre(); - if (msg[4] == attacher) tattacher(); - if (msg[4] == attendre) tattendre(); - if (msg[4] == defoncer) tdefoncer(); - if (msg[4] == dormir) tdormir(); - if (msg[4] == ecouter) tecouter(); - if (msg[4] == entrer) tentrer(); - if (msg[4] == fermer) tfermer(); - if (msg[4] == fouiller) tfouiller(); - if (msg[4] == frapper) tfrapper(); - if (msg[4] == gratter) tgratter(); - if (msg[4] == lire) tlire(); - if (msg[4] == manger) tmanger(); - if (msg[4] == mettre) tmettre(); - if (msg[4] == ouvrir) touvrir(); - if (msg[4] == prendre) tprendre(); - if (msg[4] == regarder) tregarder(); - if (msg[4] == sentir) tsentir(); - if (msg[4] == sonder) tsonder(); - if (msg[4] == sortir) tsortir(); - if (msg[4] == soulever) tsoulever(); - if (msg[4] == tourner) ttourner(); - if (msg[4] == scacher) { - tcacher(); - goto L1; - } - if (msg[4] == sfouiller) tsfouiller(); - if (msg[4] == slire) tslire(); - if (msg[4] == sposer) tposer(); - if (msg[4] == sregarder) tsregarder(); - cache = false; -L1: - if (anyone) { - quelquun(); - anyone = false; - goto L2; - } - calch(j, h, m); - if ((((h == 12) || (h == 13) || (h == 19)) && (s.mlieu != 10)) || - ((h > 0) && (h < 6) && (s.mlieu != 0))) s.conf = s.conf + 1; - if (((s.mlieu < 16) || (s.mlieu > 19)) && (s.mlieu != 23) - && (s.mlieu != 0) && (s.derobj != 152) && (! perdu)) { - if ((s.conf > 99) && (h > 8) && (h < 16)) { - crep = 1501; - tperd(); - } - if ((s.conf > 99) && (h > 0) && (h < 9)) { - crep = 1508; - tperd(); - } - if ((j > 1) && (h > 8) && (! perdu)) { - crep = 1502; - tperd(); - } - } -L2: - mennor(); -} - -void sv_game(integer n); - -void ld_game(integer n); - -void tecran() { - const char idem[] = "Idem"; - const integer lim = 20000; - integer temps; - char inkey; - boolean oo, funct; - - clsf3(); - oo = false; - ctrm = 0; - if (! iesc) { - draw_menu(); - imen = true; - temps = 0; - key = 0; - funct = false; - inkey = '.'; - - do { - mdn(); - tinke(); - mov_mouse(funct, inkey); - temps = temps + 1; - } while (!((choisi) || (temps > lim) || (funct) || (anyone))); - - erase_menu(); - imen = false; - if (set::of('\1', '\3', '\5', '\7', '\11', eos).has(inkey)) { - change_gd((cardinal)pred(integer, ord(inkey)) >> 1); - return; - } - if (choisi && (msg[3] == sauve)) sv_game(msg[4] & 7); - if (choisi && (msg[3] == charge)) ld_game(pred(integer, msg[4] & 7)); - if (inkey == '\103') { /* F9 */ - temps = do_alert(stpou, 1); - return; - } else if (inkey == '\77') { - if ((mnumo != no_choice) && ((msg[3] == action) || (msg[3] == saction))) { - msg[4] = mnumo; - ecr3(idem); - } else return; - } else if (inkey == '\104') { - if ((x != 0) && (y != 0)) num = 9999; - return; - } - } - if (inkey == '\73') { - arret = true; - tmaj3(); - } else { - if ((funct) && (inkey != '\77')) return; - if (temps > lim) { - repon(2, 141); - if (num == 9999) num = 0; - } else { - mnumo = msg[3]; - if ((msg[3] == action) || (msg[3] == saction)) mnumo = msg[4]; - if (! anyone) { - if ((fouil) || (obpart)) { - if (y_s < 12) return; - if ((msg[4] == sonder) || (msg[4] == soulever)) { - oo = true; - if ((msg[4] == soulever) || (obpart)) { - finfouil(); - caff = s.mlieu; - crep = 998; - } else tsuiv(); - mennor(); - } - } - } - do { - if (! oo) tsitu(); - if ((ctrm == 0) && (! perdu) && (! solu)) { - taffich(); - if (okdes) { - okdes = false; - dessin(0); - } - if ((! syn) || (col)) repon(2, crep); - } - } while (!(! syn)); - if (ctrm != 0) tctrm(); - } - } -} - -/* NIVEAU 1 */ - -void theure() { - vj = ord(s.heure); - vh = vj % 48; - vj = vj / 48; - vm = vh % 2; - vh = vh / 2; - heu = vh; - if (vm == 1) min = 30; - else min = 0; -} - - -void tjouer() { - antegame(); - do { - tecran(); - } while (!((arret) || (solu) || (perdu))); - if (solu) tmaj1(); - else if (perdu) tencore(); -} - diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp new file mode 100644 index 0000000000..87d0c87cd1 --- /dev/null +++ b/engines/mortevielle/ques.cpp @@ -0,0 +1,113 @@ + +/* overlay */ boolean ques() { + const array<1, 10, integer> ta + = {{ + 511, 516, 524, 531, 545, + 552, 559, 563, 570, 576 + } + }; + const array<1, 10, integer> ok + = {{ 4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }}; + + boolean q, func, test; + integer i, j, k, y, memk; + integer tay , tmax; + integer rep, prem, der; + phrase st; + char key; + mult_rect coor; + array<1, 14, str40> chaines; + integer compte; + + + boolean ques_result; + test = false; + i = 0; + compte = 0; + + do { + hide_mouse(); + hirs(); + show_mouse(); + i = i + 1; + deline(ta[i], st, tay); + if (res == 1) y = 29; + else y = 23; + box(15, gd, 0, 14, 630, y, 255); + afftex(st, 20, 15, 100, 2, 0); + if (i != 10) { + prem = ta[i] + 1; + der = ta[i + 1] - 1; + } else { + prem = 503; + der = 510; + } + y = 35; + tmax = 0; + memk = 1; + for (j = prem; j <= der; j ++) { + deline(j, st, tay); + if (tay > tmax) tmax = tay; + afftex(st, 100, y, 100, 1, 0); + chaines[memk] = delig; + memk = memk + 1; + y = y + 8; + } + for (j = 1; j <= succ(integer, der - prem); j ++) { + { + rectangle &with = coor[j]; + + with.x1 = 45 * res; + with.x2 = (tmax * 3 + 55) * res; + with.y1 = 27 + j * 8; + with.y2 = 34 + j * 8; + with.etat = true; + } + while (length(chaines[j]) < tmax) { + chaines[j] = chaines[j] + ' '; + } + } + coor[j + 1].etat = false; + if (res == 1) rep = 10; + else rep = 6; + boite(80, 33, 40 + tmax * rep, (der - prem) * 8 + 16, 15); + rep = 0; + j = 0; + memk = 0; + do { + clic = false; + tesok = false; + mov_mouse(func, key); + k = 1; + while (coor[k].etat && ! dans_rect(coor[k])) k = k + 1; + if (coor[k].etat) { + if ((memk != 0) && (memk != k)) { + /*DeLine(T_rec[ta[i]+memk].indis,T_rec[ta[i]+memk].point,st,tay);*/ + for (j = 1; j <= tmax; j ++) st[j] = chaines[memk][j]; + st[1 + tmax] = '$'; + afftex(st, 100, 27 + memk * 8, 100, 1, 0); + } + if (memk != k) { + /*DeLine(T_rec[pred(prem)+k].indis,T_rec[pred(prem)+k].point,st,tay);*/ + for (j = 1; j <= tmax; j ++) st[j] = chaines[k][j]; + st[1 + tmax] = '$'; + afftex(st, 100, 27 + k * 8, 100, 1, 1); + memk = k; + } + } else if (memk != 0) { + for (j = 1; j <= tmax; j ++) st[j] = chaines[memk][j]; + st[1 + tmax] = '$'; + afftex(st, 100, 27 + memk * 8, 100, 1, 0); + memk = 0; + } + } while (!((memk != 0) && clic)); + if (memk == ok[i]) compte = compte + 1; + else { + if (i == 5) i = i + 1; + if ((i == 7) || (i == 8)) i = 10; + } + if (i == 10) q = /*testprot*/ true; + } while (!(i == 10)); + ques_result = (compte == 10) && q; + return ques_result; +} diff --git a/engines/mortevielle/ques.h b/engines/mortevielle/ques.h deleted file mode 100644 index 87d0c87cd1..0000000000 --- a/engines/mortevielle/ques.h +++ /dev/null @@ -1,113 +0,0 @@ - -/* overlay */ boolean ques() { - const array<1, 10, integer> ta - = {{ - 511, 516, 524, 531, 545, - 552, 559, 563, 570, 576 - } - }; - const array<1, 10, integer> ok - = {{ 4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }}; - - boolean q, func, test; - integer i, j, k, y, memk; - integer tay , tmax; - integer rep, prem, der; - phrase st; - char key; - mult_rect coor; - array<1, 14, str40> chaines; - integer compte; - - - boolean ques_result; - test = false; - i = 0; - compte = 0; - - do { - hide_mouse(); - hirs(); - show_mouse(); - i = i + 1; - deline(ta[i], st, tay); - if (res == 1) y = 29; - else y = 23; - box(15, gd, 0, 14, 630, y, 255); - afftex(st, 20, 15, 100, 2, 0); - if (i != 10) { - prem = ta[i] + 1; - der = ta[i + 1] - 1; - } else { - prem = 503; - der = 510; - } - y = 35; - tmax = 0; - memk = 1; - for (j = prem; j <= der; j ++) { - deline(j, st, tay); - if (tay > tmax) tmax = tay; - afftex(st, 100, y, 100, 1, 0); - chaines[memk] = delig; - memk = memk + 1; - y = y + 8; - } - for (j = 1; j <= succ(integer, der - prem); j ++) { - { - rectangle &with = coor[j]; - - with.x1 = 45 * res; - with.x2 = (tmax * 3 + 55) * res; - with.y1 = 27 + j * 8; - with.y2 = 34 + j * 8; - with.etat = true; - } - while (length(chaines[j]) < tmax) { - chaines[j] = chaines[j] + ' '; - } - } - coor[j + 1].etat = false; - if (res == 1) rep = 10; - else rep = 6; - boite(80, 33, 40 + tmax * rep, (der - prem) * 8 + 16, 15); - rep = 0; - j = 0; - memk = 0; - do { - clic = false; - tesok = false; - mov_mouse(func, key); - k = 1; - while (coor[k].etat && ! dans_rect(coor[k])) k = k + 1; - if (coor[k].etat) { - if ((memk != 0) && (memk != k)) { - /*DeLine(T_rec[ta[i]+memk].indis,T_rec[ta[i]+memk].point,st,tay);*/ - for (j = 1; j <= tmax; j ++) st[j] = chaines[memk][j]; - st[1 + tmax] = '$'; - afftex(st, 100, 27 + memk * 8, 100, 1, 0); - } - if (memk != k) { - /*DeLine(T_rec[pred(prem)+k].indis,T_rec[pred(prem)+k].point,st,tay);*/ - for (j = 1; j <= tmax; j ++) st[j] = chaines[k][j]; - st[1 + tmax] = '$'; - afftex(st, 100, 27 + k * 8, 100, 1, 1); - memk = k; - } - } else if (memk != 0) { - for (j = 1; j <= tmax; j ++) st[j] = chaines[memk][j]; - st[1 + tmax] = '$'; - afftex(st, 100, 27 + memk * 8, 100, 1, 0); - memk = 0; - } - } while (!((memk != 0) && clic)); - if (memk == ok[i]) compte = compte + 1; - else { - if (i == 5) i = i + 1; - if ((i == 7) || (i == 8)) i = 10; - } - if (i == 10) q = /*testprot*/ true; - } while (!(i == 10)); - ques_result = (compte == 10) && q; - return ques_result; -} diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp new file mode 100644 index 0000000000..854fdd6359 --- /dev/null +++ b/engines/mortevielle/sprint.cpp @@ -0,0 +1,54 @@ +void fill_box(integer x, integer y, integer dx) { + box(15, gd, pred(integer, x) << 3, pred(integer, y) << 3, pred(integer, x + dx) << 3, y << 3, 255); +} + +void clear_box(integer x, integer y, integer dx) { + box(0, gd, pred(integer, x) << 3, pred(integer, y) << 3, pred(integer, x + dx) << 3, y << 3, 255); +} + +void writeg(str255 l, integer c) + +{ + integer i, x, xo, yo; + integer cecr; + boolean t; + + /* debug('writeg : '+l);*/ + + if (l == "") return; + hide_mouse(); + xo = xwhere; + yo = ywhere; + if (res == 2) i = 6; + else i = 10; + x = xo + i * length(l); + switch (c) { + case 1: + case 3 : { + cecr = 0; + box(15, gd, xo, yo, x, yo + 7, 255); + } + break; + case 4 : { + cecr = 0; + } + break; + case 5 : { + cecr = 15; + } + break; + case 0: + case 2 : { + cecr = 15; + box(0, gd, xo, yo, x, yo + 7, 255); + } + break; + } + xo = xo + 1; + yo = yo + 1; + for (x = 1; x <= length(l); x ++) { + affcar(gd, xo, yo, cecr, ord(l[x])); + xo = xo + i; + } + show_mouse(); +} diff --git a/engines/mortevielle/sprint.h b/engines/mortevielle/sprint.h deleted file mode 100644 index 854fdd6359..0000000000 --- a/engines/mortevielle/sprint.h +++ /dev/null @@ -1,54 +0,0 @@ -void fill_box(integer x, integer y, integer dx) { - box(15, gd, pred(integer, x) << 3, pred(integer, y) << 3, pred(integer, x + dx) << 3, y << 3, 255); -} - -void clear_box(integer x, integer y, integer dx) { - box(0, gd, pred(integer, x) << 3, pred(integer, y) << 3, pred(integer, x + dx) << 3, y << 3, 255); -} - -void writeg(str255 l, integer c) - -{ - integer i, x, xo, yo; - integer cecr; - boolean t; - - /* debug('writeg : '+l);*/ - - if (l == "") return; - hide_mouse(); - xo = xwhere; - yo = ywhere; - if (res == 2) i = 6; - else i = 10; - x = xo + i * length(l); - switch (c) { - case 1: - case 3 : { - cecr = 0; - box(15, gd, xo, yo, x, yo + 7, 255); - } - break; - case 4 : { - cecr = 0; - } - break; - case 5 : { - cecr = 15; - } - break; - case 0: - case 2 : { - cecr = 15; - box(0, gd, xo, yo, x, yo + 7, 255); - } - break; - } - xo = xo + 1; - yo = yo + 1; - for (x = 1; x <= length(l); x ++) { - affcar(gd, xo, yo, cecr, ord(l[x])); - xo = xo + i; - } - show_mouse(); -} 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;*/ diff --git a/engines/mortevielle/taffich.h b/engines/mortevielle/taffich.h deleted file mode 100644 index 00203118d8..0000000000 --- a/engines/mortevielle/taffich.h +++ /dev/null @@ -1,196 +0,0 @@ -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;*/ diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp new file mode 100644 index 0000000000..bdc6b59eb7 --- /dev/null +++ b/engines/mortevielle/var_mor.cpp @@ -0,0 +1,482 @@ + +/* Constantes, Types et Variables pour le + + M A N O I R DE M O R T E V I E L L E + + ( version Nov 1988 + + + musique & paroles Oct 88 ) + */ + + +/*---------------------------------------------------------------------------*/ +/*------------------------- CONSTANTES ----------------------------------*/ +/*---------------------------------------------------------------------------*/ + +const real freq0 = 1.19318e6; + +const integer seg_syst = 0x6fed; +const integer segmou = 0x6f00; +const integer segdon = 0x6c00; +const integer adani = 0x7314; +const integer adword = 0x4000; +const integer adtroct = 0x406b; +const integer adcfiec = 0x4300; +const integer adbruit = 0x5cb0;/*2C00;*/ +const integer adbruit1 = 0x6924;/*3874;*/ +const integer adbruit2 = 0x6b30;/*3A80;*/ +const integer adbruit3 = 0x6ba6;/*3AF6;*/ +const integer adbruit5 = 0x3b50; +const integer adson = 0x5cb0;/*2C00;*/ +const integer adson2 = 0x60b0;/*3000;*/ +const integer offsetb1 = 6; +const integer offsetb2 = 4; +const integer offsetb3 = 6; + +const integer null = 255; + +const integer tempo_mus = 71; +const integer tempo_bruit = 78; +const integer tempo_f = 80; +const integer tempo_m = 89; + +const integer ti1 = 410; +const integer ti2 = 250; +const integer maxti = 7975; +const integer maxtd = 600; +const integer max_rect = 14; + +const integer ams = 0; +const integer cga = 1; +const integer ega = 2; +const integer her = 3; +const integer tan = 4; + +const integer c_repon = 0; +const integer c_st41 = 186; +const integer c_tparler = 247; +const integer c_paroles = 292; +const integer c_tmlieu = 435; +const integer c_dialpre = 456; +const integer c_action = 476; +const integer c_saction = 497; +const integer c_dis = 502; +const integer c_fin = 510; /* => n'existe pas ; si !! */ + +const integer arega = 0; +const integer asoul = 154; +const integer aouvr = 282; +const integer achai = 387; +const integer acha = 492; +const integer arcf = 1272; +const integer arep = 1314; +const integer amzon = 1650; +const integer fleche = 1758; + +const integer no_choice = 0; +const integer invent = 1; +const integer depla = 2; +const integer action = 3; +const integer saction = 4; +const integer discut = 5; +const integer fichier = 6; +const integer sauve = 7; +const integer charge = 8; + +const integer attacher = 0x301; +const integer attendre = 0x302; +const integer defoncer = 0x303; +const integer dormir = 0x304; +const integer ecouter = 0x305; +const integer entrer = 0x306; +const integer fermer = 0x307; +const integer fouiller = 0x308; +const integer frapper = 0x309; +const integer gratter = 0x30a; +const integer lire = 0x30b; +const integer manger = 0x30c; +const integer mettre = 0x30d; +const integer ouvrir = 0x30e; +const integer prendre = 0x30f; +const integer regarder = 0x310; +const integer sentir = 0x311; +const integer sonder = 0x312; +const integer sortir = 0x313; +const integer soulever = 0x314; +const integer tourner = 0x315; + +const integer scacher = 0x401; +const integer sfouiller = 0x402; +const integer slire = 0x403; +const integer sposer = 0x404; +const integer sregarder = 0x405; + +const array<0, 17, byte> tabdbc += {{7, 23, 7, 14, 13, 9, 14, 9, 5, 12, 6, 12, 13, 4, 0, 4, 5, 9}}; +const array<0, 15, byte> tabdph += {{0, 10, 2, 0, 2, 10, 3, 0, 3, 7, 5, 0, 6, 7, 7, 10}}; +const array<0, 25, byte> typcon += {{0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3}}; +const array<0, 25, byte> intcon += {{1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}}; +const array<0, 363, byte> tnocon += {{ + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + } +}; + + +const matrix<1, 8, 1, 4, byte> don += {{{{ 7, 37, 22, 8}}, + {{19, 33, 23, 7}}, + {{31, 89, 10, 21}}, + {{43, 25, 11, 5}}, + {{55, 37, 5, 8}}, + {{64, 13, 11, 2}}, + {{62, 22, 13, 4}}, + {{62, 25, 13, 5}} + } +}; + +const array<1, 2, varying_string<11> > fic += {{ " Sauvegarde", + " Chargement" + } +}; + +const array<0, 1, byte> addv += {{8, 8}}; + +const char recom[] = " Recommence "; + +const char f3[] = "F3: Encore"; +const char f8[] = "F8: Suite"; + +const integer max_patt = 20; + + +const array<0, 15, byte> rang += {{15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}}; + + +/*---------------------------------------------------------------------------*/ +/*-------------------------------- TYPES --------------------------------*/ +/*---------------------------------------------------------------------------*/ + +typedef varying_string<11> path_chars; +typedef real long_integer; +typedef varying_string<255> str255; +typedef varying_string<125> str125; +typedef varying_string<30> str30; +typedef varying_string<11> str11; +typedef file fichier_byte; +struct sav_chaine { + integer conf; + array<0, 10, char> pourc; + array<0, 42, char> teauto; + array<0, 30, char> sjer; + integer mlieu, iboul, ibag, icave, ivier, ipuit; + integer derobj, iloic, icryp; + boolean ipre; + char heure; +}; +struct registres { + integer ax, bx, cx, dx, bp, si, di, ds, es, flags; +}; +typedef array<1, 1410, char> phrase; +typedef array<0, maxti, integer> tabint; +struct ind { + integer indis; + byte point; +}; +typedef array<0, maxtd, ind> tabind; + +typedef matrix<1, 7, 0, 24, byte> tab_mlieu; + +typedef array<0, 255, real> table; +typedef array<0, 255, integer> tablint; + +typedef integer word1; +struct chariot { + integer val, + code, + acc, + freq, + rep; +}; + +struct doublet { + byte x, y; +}; +typedef array<1, 16, doublet> tabdb; +typedef array<0, 107, integer> tfxx; +struct rectangle { + integer x1, x2, y1, y2; + boolean etat; +}; + +typedef array<1, max_rect, rectangle> mult_rect; +typedef varying_string<40> str40; + +struct pattern { + byte tay, tax; + matrix<1, max_patt, 1, max_patt, byte> des; +}; + + +struct nhom { + byte n; /* numero entre 0 et 32 */ + array<0, 3, byte> hom; +}; + +typedef array<0, 15, nhom> t_nhom; + +struct t_pcga { + byte p; + t_nhom a; +}; + +typedef array<0, 90, t_pcga> pal_cga; + + +/*---------------------------------------------------------------------------*/ +/*------------------------------ VARIABLES ------------------------------*/ +/*---------------------------------------------------------------------------*/ + +boolean blo, + bh1, + bf1, + bh2, + bh4, + bf4, + bh5, + bh6, + bh8, + bt3, + bt7, + bh9, + + sonoff, + main1, + choisi, + test0, + f2_all, + imen, + cache, + iesc, + perdu, + col, + syn, + fouil, + zuul, + tesok, + obpart, + okdes, + solu, + arret, + anyone, + brt, + rect, + rech_cfiec, + active_menu; + + +integer x, + y, + t, + vj, + li, + vh, + vm, + jh, + mh, + cs, + gd, /* Gd = graph device */ + hdb, + hfb, + heu, + jou, + key, + min, + num, + max, + res, + ment, + haut, + caff, + maff, + crep, + ades, + iouv, + inei, + ctrm, + dobj, + msg3, + msg4, + mlec, + newgd, + c_zzz, + mchai, + menup, + ipers, + ledeb, + lefin, + mpers, + mnumo, + xprec, + yprec, + perdep, + prebru, + typlec, + num_ph, + xwhere, + ywhere, + numpal, + lderobj, + nb_word, + ptr_oct, + k_tempo, + ptr_tcph, + ptr_word, + color_txt; + +array<0, 6400, integer> t_cph; +array<0, 4000, byte> tabdon; +/* t_dxx : array[0..121] of integer;*/ +str125 stpou; /* donne le % d'indices */ +byte is; +char mode; +fichier_byte ficdes; +str125 al_mess, + err_mess, + ind_mess, + al_mess2; + +array<1, 8, integer> invt, + nbrep, + nbrepm, + disc; +array<0, 4, integer> msg; +array<1, 7, integer> depl; +array<1, 8, varying_string<22> > inv; +array<1, 7, varying_string<23> > dep; +array<1, 21, varying_string<10> > act; +array<1, 5, varying_string<11> > self_; +array<1, 8, varying_string<5> > dis; +array<1, 7, char> touv; +sav_chaine s, s1; +array<0, 390, byte> bufcha; + +matrix<1, 6, 0, 23, byte> lettres; + +array<0, 15, byte> palher; + +tabint t_mot; +integer tay_tchar; +tabind t_rec; +file sauv_t; +untyped_file fibyte; +tab_mlieu v_lieu; +tfxx l; +tablint tbi; +chariot c1, c2, c3; +real addfix; +pal_cga palsav; +array<0, 90, tabdb> tabpal; +pal_cga palcga; +array<0, 14, pattern> tpt; + + + +/*---------------------------------------------------------------------------*/ +/*-------------------- PROCEDURES ET FONCTIONS ------------------------*/ +/*---------------------------------------------------------------------------*/ + +/* procedure box(c,Gd,xo,yo,xi,yi,patt:integer); external 'c:\mc\boite.com'; */ + +void hirs() { + const array<0, 13, byte> tandy + = {{113, 80, 90, 14, 63, 6, 50, 56, 2, 3, 6, 7, 0, 0}}; + const array<0, 12, byte> herc + = {{50, 40, 41, 9, 103, 3, 100, 100, 2, 3, 0, 0, 0}}; + integer i, j; + + switch (gd) { + case cga : { + graphcolormode; + graphbackground(0); + palette(1); + res = 1; + } + break; + case ams : { + hires; + inline_((real)(0xb8) / 6 / 0 / /* => mov ax,6 */ + 0xcd / 0x10); /* => int 16 */ + port[0x3d9] = 15; + port[0x3df] = 0; + port[0x3dd] = 15; + res = 2; + } + break; + case ega : { + inline_((real)(0xb8) / 14 / 0 / /* MOV AX, 14 ; mode video 14 = 640*200 16 couleurs */ + 0xcd / 0x10); /* INT 16 */ + res = 2; + } + break; + case her : { + port[0x3bf] = 3; + port[0x3b8] = 2; + for (i = 0; i <= 12; i ++) { + port[0x3b4] = i; + port[0x3b5] = herc[i]; + } + inline_((real)(0xfc) / 0xb9 / 0 / 0x80 / 0xb8 / 0 / 0xb0 / 0x8e / 0xc0 / 0x31 / 0xff / 0x31 / 0xc0 / 0xf3 / 0xab); + port[0x3b8] = 10; + res = 2; + } + break; + case tan : { + port[0x3d8] = 0; + port[0x3da] = 3; + port[0x3de] = 0x14; + for (i = 0; i <= 13; i ++) { + port[0x3d4] = i; + port[0x3d5] = tandy[i]; + } + port[0x3da] = 2; + port[0x3de] = 0; + port[0x3d8] = port[0x3d8] | (11 & 0xef); + port[0x3dd] = port[0x3dd] | 1; + port[0x3df] = port[0x3df] | 0xc0; + box(0, gd, 0, 0, 640, 200, 255); + res = 1; + } + break; + } +} + +/* procedure affput(Chx,Gd,x,y,coul,char:integer); external 'c:\mc\divaf.com'; */ + +void affcar(integer gd, integer x, integer y, integer coul, integer char) { + if (res == 1) affput(1, gd, ((cardinal)x >> 1), y, coul, char); + else affput(1, gd, x, y, coul, char); +} + +void putpix(integer gd, integer x, integer y, integer coul) { + affput(0, gd, x, y, coul, 0); +} diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h deleted file mode 100644 index bdc6b59eb7..0000000000 --- a/engines/mortevielle/var_mor.h +++ /dev/null @@ -1,482 +0,0 @@ - -/* Constantes, Types et Variables pour le - - M A N O I R DE M O R T E V I E L L E - - ( version Nov 1988 - + - musique & paroles Oct 88 ) - */ - - -/*---------------------------------------------------------------------------*/ -/*------------------------- CONSTANTES ----------------------------------*/ -/*---------------------------------------------------------------------------*/ - -const real freq0 = 1.19318e6; - -const integer seg_syst = 0x6fed; -const integer segmou = 0x6f00; -const integer segdon = 0x6c00; -const integer adani = 0x7314; -const integer adword = 0x4000; -const integer adtroct = 0x406b; -const integer adcfiec = 0x4300; -const integer adbruit = 0x5cb0;/*2C00;*/ -const integer adbruit1 = 0x6924;/*3874;*/ -const integer adbruit2 = 0x6b30;/*3A80;*/ -const integer adbruit3 = 0x6ba6;/*3AF6;*/ -const integer adbruit5 = 0x3b50; -const integer adson = 0x5cb0;/*2C00;*/ -const integer adson2 = 0x60b0;/*3000;*/ -const integer offsetb1 = 6; -const integer offsetb2 = 4; -const integer offsetb3 = 6; - -const integer null = 255; - -const integer tempo_mus = 71; -const integer tempo_bruit = 78; -const integer tempo_f = 80; -const integer tempo_m = 89; - -const integer ti1 = 410; -const integer ti2 = 250; -const integer maxti = 7975; -const integer maxtd = 600; -const integer max_rect = 14; - -const integer ams = 0; -const integer cga = 1; -const integer ega = 2; -const integer her = 3; -const integer tan = 4; - -const integer c_repon = 0; -const integer c_st41 = 186; -const integer c_tparler = 247; -const integer c_paroles = 292; -const integer c_tmlieu = 435; -const integer c_dialpre = 456; -const integer c_action = 476; -const integer c_saction = 497; -const integer c_dis = 502; -const integer c_fin = 510; /* => n'existe pas ; si !! */ - -const integer arega = 0; -const integer asoul = 154; -const integer aouvr = 282; -const integer achai = 387; -const integer acha = 492; -const integer arcf = 1272; -const integer arep = 1314; -const integer amzon = 1650; -const integer fleche = 1758; - -const integer no_choice = 0; -const integer invent = 1; -const integer depla = 2; -const integer action = 3; -const integer saction = 4; -const integer discut = 5; -const integer fichier = 6; -const integer sauve = 7; -const integer charge = 8; - -const integer attacher = 0x301; -const integer attendre = 0x302; -const integer defoncer = 0x303; -const integer dormir = 0x304; -const integer ecouter = 0x305; -const integer entrer = 0x306; -const integer fermer = 0x307; -const integer fouiller = 0x308; -const integer frapper = 0x309; -const integer gratter = 0x30a; -const integer lire = 0x30b; -const integer manger = 0x30c; -const integer mettre = 0x30d; -const integer ouvrir = 0x30e; -const integer prendre = 0x30f; -const integer regarder = 0x310; -const integer sentir = 0x311; -const integer sonder = 0x312; -const integer sortir = 0x313; -const integer soulever = 0x314; -const integer tourner = 0x315; - -const integer scacher = 0x401; -const integer sfouiller = 0x402; -const integer slire = 0x403; -const integer sposer = 0x404; -const integer sregarder = 0x405; - -const array<0, 17, byte> tabdbc -= {{7, 23, 7, 14, 13, 9, 14, 9, 5, 12, 6, 12, 13, 4, 0, 4, 5, 9}}; -const array<0, 15, byte> tabdph -= {{0, 10, 2, 0, 2, 10, 3, 0, 3, 7, 5, 0, 6, 7, 7, 10}}; -const array<0, 25, byte> typcon -= {{0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3}}; -const array<0, 25, byte> intcon -= {{1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}}; -const array<0, 363, byte> tnocon -= {{ - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - } -}; - - -const matrix<1, 8, 1, 4, byte> don -= {{{{ 7, 37, 22, 8}}, - {{19, 33, 23, 7}}, - {{31, 89, 10, 21}}, - {{43, 25, 11, 5}}, - {{55, 37, 5, 8}}, - {{64, 13, 11, 2}}, - {{62, 22, 13, 4}}, - {{62, 25, 13, 5}} - } -}; - -const array<1, 2, varying_string<11> > fic -= {{ " Sauvegarde", - " Chargement" - } -}; - -const array<0, 1, byte> addv -= {{8, 8}}; - -const char recom[] = " Recommence "; - -const char f3[] = "F3: Encore"; -const char f8[] = "F8: Suite"; - -const integer max_patt = 20; - - -const array<0, 15, byte> rang -= {{15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}}; - - -/*---------------------------------------------------------------------------*/ -/*-------------------------------- TYPES --------------------------------*/ -/*---------------------------------------------------------------------------*/ - -typedef varying_string<11> path_chars; -typedef real long_integer; -typedef varying_string<255> str255; -typedef varying_string<125> str125; -typedef varying_string<30> str30; -typedef varying_string<11> str11; -typedef file fichier_byte; -struct sav_chaine { - integer conf; - array<0, 10, char> pourc; - array<0, 42, char> teauto; - array<0, 30, char> sjer; - integer mlieu, iboul, ibag, icave, ivier, ipuit; - integer derobj, iloic, icryp; - boolean ipre; - char heure; -}; -struct registres { - integer ax, bx, cx, dx, bp, si, di, ds, es, flags; -}; -typedef array<1, 1410, char> phrase; -typedef array<0, maxti, integer> tabint; -struct ind { - integer indis; - byte point; -}; -typedef array<0, maxtd, ind> tabind; - -typedef matrix<1, 7, 0, 24, byte> tab_mlieu; - -typedef array<0, 255, real> table; -typedef array<0, 255, integer> tablint; - -typedef integer word1; -struct chariot { - integer val, - code, - acc, - freq, - rep; -}; - -struct doublet { - byte x, y; -}; -typedef array<1, 16, doublet> tabdb; -typedef array<0, 107, integer> tfxx; -struct rectangle { - integer x1, x2, y1, y2; - boolean etat; -}; - -typedef array<1, max_rect, rectangle> mult_rect; -typedef varying_string<40> str40; - -struct pattern { - byte tay, tax; - matrix<1, max_patt, 1, max_patt, byte> des; -}; - - -struct nhom { - byte n; /* numero entre 0 et 32 */ - array<0, 3, byte> hom; -}; - -typedef array<0, 15, nhom> t_nhom; - -struct t_pcga { - byte p; - t_nhom a; -}; - -typedef array<0, 90, t_pcga> pal_cga; - - -/*---------------------------------------------------------------------------*/ -/*------------------------------ VARIABLES ------------------------------*/ -/*---------------------------------------------------------------------------*/ - -boolean blo, - bh1, - bf1, - bh2, - bh4, - bf4, - bh5, - bh6, - bh8, - bt3, - bt7, - bh9, - - sonoff, - main1, - choisi, - test0, - f2_all, - imen, - cache, - iesc, - perdu, - col, - syn, - fouil, - zuul, - tesok, - obpart, - okdes, - solu, - arret, - anyone, - brt, - rect, - rech_cfiec, - active_menu; - - -integer x, - y, - t, - vj, - li, - vh, - vm, - jh, - mh, - cs, - gd, /* Gd = graph device */ - hdb, - hfb, - heu, - jou, - key, - min, - num, - max, - res, - ment, - haut, - caff, - maff, - crep, - ades, - iouv, - inei, - ctrm, - dobj, - msg3, - msg4, - mlec, - newgd, - c_zzz, - mchai, - menup, - ipers, - ledeb, - lefin, - mpers, - mnumo, - xprec, - yprec, - perdep, - prebru, - typlec, - num_ph, - xwhere, - ywhere, - numpal, - lderobj, - nb_word, - ptr_oct, - k_tempo, - ptr_tcph, - ptr_word, - color_txt; - -array<0, 6400, integer> t_cph; -array<0, 4000, byte> tabdon; -/* t_dxx : array[0..121] of integer;*/ -str125 stpou; /* donne le % d'indices */ -byte is; -char mode; -fichier_byte ficdes; -str125 al_mess, - err_mess, - ind_mess, - al_mess2; - -array<1, 8, integer> invt, - nbrep, - nbrepm, - disc; -array<0, 4, integer> msg; -array<1, 7, integer> depl; -array<1, 8, varying_string<22> > inv; -array<1, 7, varying_string<23> > dep; -array<1, 21, varying_string<10> > act; -array<1, 5, varying_string<11> > self_; -array<1, 8, varying_string<5> > dis; -array<1, 7, char> touv; -sav_chaine s, s1; -array<0, 390, byte> bufcha; - -matrix<1, 6, 0, 23, byte> lettres; - -array<0, 15, byte> palher; - -tabint t_mot; -integer tay_tchar; -tabind t_rec; -file sauv_t; -untyped_file fibyte; -tab_mlieu v_lieu; -tfxx l; -tablint tbi; -chariot c1, c2, c3; -real addfix; -pal_cga palsav; -array<0, 90, tabdb> tabpal; -pal_cga palcga; -array<0, 14, pattern> tpt; - - - -/*---------------------------------------------------------------------------*/ -/*-------------------- PROCEDURES ET FONCTIONS ------------------------*/ -/*---------------------------------------------------------------------------*/ - -/* procedure box(c,Gd,xo,yo,xi,yi,patt:integer); external 'c:\mc\boite.com'; */ - -void hirs() { - const array<0, 13, byte> tandy - = {{113, 80, 90, 14, 63, 6, 50, 56, 2, 3, 6, 7, 0, 0}}; - const array<0, 12, byte> herc - = {{50, 40, 41, 9, 103, 3, 100, 100, 2, 3, 0, 0, 0}}; - integer i, j; - - switch (gd) { - case cga : { - graphcolormode; - graphbackground(0); - palette(1); - res = 1; - } - break; - case ams : { - hires; - inline_((real)(0xb8) / 6 / 0 / /* => mov ax,6 */ - 0xcd / 0x10); /* => int 16 */ - port[0x3d9] = 15; - port[0x3df] = 0; - port[0x3dd] = 15; - res = 2; - } - break; - case ega : { - inline_((real)(0xb8) / 14 / 0 / /* MOV AX, 14 ; mode video 14 = 640*200 16 couleurs */ - 0xcd / 0x10); /* INT 16 */ - res = 2; - } - break; - case her : { - port[0x3bf] = 3; - port[0x3b8] = 2; - for (i = 0; i <= 12; i ++) { - port[0x3b4] = i; - port[0x3b5] = herc[i]; - } - inline_((real)(0xfc) / 0xb9 / 0 / 0x80 / 0xb8 / 0 / 0xb0 / 0x8e / 0xc0 / 0x31 / 0xff / 0x31 / 0xc0 / 0xf3 / 0xab); - port[0x3b8] = 10; - res = 2; - } - break; - case tan : { - port[0x3d8] = 0; - port[0x3da] = 3; - port[0x3de] = 0x14; - for (i = 0; i <= 13; i ++) { - port[0x3d4] = i; - port[0x3d5] = tandy[i]; - } - port[0x3da] = 2; - port[0x3de] = 0; - port[0x3d8] = port[0x3d8] | (11 & 0xef); - port[0x3dd] = port[0x3dd] | 1; - port[0x3df] = port[0x3df] | 0xc0; - box(0, gd, 0, 0, 640, 200, 255); - res = 1; - } - break; - } -} - -/* procedure affput(Chx,Gd,x,y,coul,char:integer); external 'c:\mc\divaf.com'; */ - -void affcar(integer gd, integer x, integer y, integer coul, integer char) { - if (res == 1) affput(1, gd, ((cardinal)x >> 1), y, coul, char); - else affput(1, gd, x, y, coul, char); -} - -void putpix(integer gd, integer x, integer y, integer coul) { - affput(0, gd, x, y, coul, 0); -} -- cgit v1.2.3 From b193c92a6e9e181ecc84fdd0eb652c901d3b27ec Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 26 Dec 2011 17:37:43 +0000 Subject: MORTEVIELLE: Plug the engine into makefiles --- base/plugins.cpp | 3 +++ configure | 1 + engines/mortevielle/module.mk | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 engines/mortevielle/module.mk diff --git a/base/plugins.cpp b/base/plugins.cpp index db8a5d8817..1c4e6f1934 100644 --- a/base/plugins.cpp +++ b/base/plugins.cpp @@ -139,6 +139,9 @@ public: #if PLUGIN_ENABLED_STATIC(MOHAWK) LINK_PLUGIN(MOHAWK) #endif + #if PLUGIN_ENABLED_STATIC(MORTEVIELLE) + LINK_PLUGIN(MORTEVIELLE) + #endif #if PLUGIN_ENABLED_STATIC(PARALLACTION) LINK_PLUGIN(PARALLACTION) #endif diff --git a/configure b/configure index 82620f3afd..7a557df59e 100755 --- a/configure +++ b/configure @@ -101,6 +101,7 @@ add_engine lastexpress "The Last Express" no add_engine lure "Lure of the Temptress" yes add_engine made "MADE" yes add_engine mohawk "Mohawk" yes "cstime myst riven" +add_engine mortevielle "Mortevielle" no add_engine cstime "Where in Time is Carmen Sandiego?" no add_engine riven "Riven: The Sequel to Myst" no add_engine myst "Myst" no diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk new file mode 100644 index 0000000000..6569d7038c --- /dev/null +++ b/engines/mortevielle/module.mk @@ -0,0 +1,32 @@ +MODULE := engines/mortevielle + +MODULE_OBJS := \ + actions.o \ + alert.o \ + boite.o \ + disk.o \ + droite.o \ + keyboard.o \ + level15.o \ + menu.o \ + mor.o \ + mor2.o \ + mort.o \ + mouse.o \ + outtext.o \ + ovd1.o \ + parole.o \ + parole2.o \ + prog.o \ + ques.o \ + sprint.o \ + taffich.o \ + var_mor.o + +# This module can be built as a plugin +ifeq ($(ENABLE_MORTEVIELLE), DYNAMIC_PLUGIN) +PLUGIN := 1 +endif + +# Include common rules +include $(srcdir)/rules.mk -- cgit v1.2.3 From 56d8f2b39c380213e848bb9efc08f4bfa69a3880 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 26 Dec 2011 17:57:54 +0000 Subject: MORTEVIELLE: integer -> int --- engines/mortevielle/actions.cpp | 56 ++++----- engines/mortevielle/alert.cpp | 38 +++--- engines/mortevielle/boite.cpp | 18 +-- engines/mortevielle/disk.cpp | 12 +- engines/mortevielle/droite.cpp | 6 +- engines/mortevielle/keyboard.cpp | 10 +- engines/mortevielle/level15.cpp | 46 +++---- engines/mortevielle/menu.cpp | 34 ++--- engines/mortevielle/mor.cpp | 260 +++++++++++++++++++-------------------- engines/mortevielle/mor2.cpp | 102 +++++++-------- engines/mortevielle/mort.cpp | 2 +- engines/mortevielle/mouse.cpp | 52 ++++---- engines/mortevielle/outtext.cpp | 28 ++--- engines/mortevielle/ovd1.cpp | 18 +-- engines/mortevielle/parole.cpp | 16 +-- engines/mortevielle/parole2.cpp | 12 +- engines/mortevielle/prog.cpp | 26 ++-- engines/mortevielle/ques.cpp | 14 +-- engines/mortevielle/sprint.cpp | 14 +-- engines/mortevielle/taffich.cpp | 18 +-- engines/mortevielle/var_mor.cpp | 240 ++++++++++++++++++------------------ 21 files changed, 511 insertions(+), 511 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 1dd3abe08f..83ad8d4f6b 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -5,7 +5,7 @@ const char stouinon[] = "[2][ ][OUI][NON]"; void taller() { - integer mx, cx, cy; + int mx, cx, cy; if ((s.mlieu == 26) && (msg[4] == depl[6])) { s.mlieu = 15; @@ -94,7 +94,7 @@ L2: } /* overlay */ void tprendre() { - integer cx, cy, cz; + int cx, cy, cz; if (caff > 99) { cx = caff; @@ -115,7 +115,7 @@ L2: obpart = false; affrep(); } else { - tabdon[acha + (pred(integer, mchai) * 10) + pred(integer, cs)] = 0; + tabdon[acha + (pred(int, mchai) * 10) + pred(int, cs)] = 0; tsuiv(); dobj = dobj + 1; if (dobj > 6) { @@ -188,7 +188,7 @@ L2: } /* overlay */ void tsprendre() { - integer cx, cy, cz; + int cx, cy, cz; cx = 0; do { @@ -211,7 +211,7 @@ L2: /* overlay */ void tsoulever() { - integer cx; + int cx; if (! syn) ecr3("soulever"); tfleche(); @@ -230,12 +230,12 @@ L2: cx = s.mlieu; if (s.mlieu == 16) cx = 14; if (s.mlieu == 19) cx = 15; - crep = tabdon[asoul + (cx << 3) + pred(integer, num)]; + crep = tabdon[asoul + (cx << 3) + pred(int, num)]; if (crep == 255) crep = 997; } /* overlay */ void tlire() { - integer iaff; + int iaff; if (caff > 99) st4(caff); else { @@ -254,7 +254,7 @@ L2: } /* overlay */ void tregarder() { - integer cx; + int cx; if (caff > 99) { crep = 103; @@ -297,7 +297,7 @@ L2: if (s.mlieu == 20) cx = 17; if ((s.mlieu > 21) && (s.mlieu < 25)) cx = cx - 4; if (s.mlieu == 26) cx = 21; - crep = tabdon[arega + (cx * 7) + pred(integer, num)]; + crep = tabdon[arega + (cx * 7) + pred(int, num)]; if ((s.mlieu == 13) && (num == 8)) crep = 126; if (s.mlieu == 19) crep = 103; if (crep == 255) crep = 131; @@ -315,7 +315,7 @@ L2: /* overlay */ void tfouiller() { const array<0, 13, byte> r = {{123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}}; - integer cx; + int cx; if (caff > 99) { st7(caff); @@ -386,7 +386,7 @@ L2: } /* overlay */ void touvrir() { - integer cx, haz; + int cx, haz; if (! syn) ecr3("ouvrir"); if (caff == 26) { @@ -432,18 +432,18 @@ L2: } cx = s.mlieu; if (s.mlieu == 16) cx = 14; - crep = tabdon[aouvr + (cx * 7) + pred(integer, num)]; + crep = tabdon[aouvr + (cx * 7) + pred(int, num)]; if (crep == 254) crep = 999; } else crep = 18; } } /* overlay */ void tmettre() { - integer quel; + int quel; boolean entre; phrase st; str255 str_; - integer i, tay; + int i, tay; if (s.derobj == 0) { crep = 186; @@ -542,7 +542,7 @@ L2: } /* overlay */ void ttourner() { - integer quel; + int quel; if (caff > 99) { crep = 149; @@ -608,7 +608,7 @@ L2: } /* overlay */ void tfermer() { - integer cx, chai; + int cx, chai; if (! syn) ecr3("fermer"); if (caff < 26) { @@ -637,7 +637,7 @@ L2: } /* overlay */ void tfrapper() { - integer l, p, haz; + int l, p, haz; if (! syn) ecr3("frapper"); if (s.mlieu == 15) { @@ -669,7 +669,7 @@ L2: } /* overlay */ void tposer() { - integer cx, chai; + int cx, chai; if (! syn) ecr3("poser"); if (s.derobj == 0) crep = 186; @@ -734,7 +734,7 @@ L2: } /* overlay */ void tecouter() { - integer l, p, haz, j, h, m; + int l, p, haz, j, h, m; if (s.mlieu != 26) crep = 101; else { @@ -759,7 +759,7 @@ L2: } /* overlay */ void tmanger() { - integer j, h, m; + int j, h, m; if ((s.mlieu > 15) && (s.mlieu < 26)) crep = 148; @@ -786,7 +786,7 @@ L2: } /* overlay */ void tentrer() { - integer x, z; + int x, z; if ((s.mlieu == 21) || (s.mlieu == 22)) { t1sama(); @@ -840,7 +840,7 @@ L2: /* overlay */ void tdormir() { const char m1[] = "D‚sirez-vous vous r‚veiller?"; - integer z, j, h, m, quel; + int z, j, h, m, quel; if ((s.mlieu > 15) && (s.mlieu < 26)) { crep = 148; @@ -890,7 +890,7 @@ L2: } /* overlay */ void tsortir() { - integer lx; + int lx; tsort(); crep = 0; @@ -915,7 +915,7 @@ L2: } /* overlay */ void tattendre() { - integer quel; + int quel; mpers = 0; clsf3(); @@ -951,7 +951,7 @@ L2: { array<1, 46, boolean> te; - integer ix, cy, cx, max, haz, suj, co, lig, icm, + int ix, cy, cx, max, haz, suj, co, lig, icm, i, tay, choi, x, y, c; char tou; array<1, 46, varying_string<40> > lib; @@ -994,7 +994,7 @@ L2: co = 0; lig = 0; do { - icm = succ(integer, icm); + icm = succ(int, icm); putxy(co, lig); if (s.teauto[icm] == '*') if (te[icm]) writetp(lib[icm], 1); @@ -1014,7 +1014,7 @@ L2: x = x * (3 - res); if (x > 319) cx = 41; else cx = 1; - cy = succ(integer, (cardinal)y >> 3); /* 0-199 => 1-25 */ + cy = succ(int, (cardinal)y >> 3); /* 0-199 => 1-25 */ if ((cy > 23) || ((cx == 41) && (set::of(range(20, 22), eos).has(cy)))) { if (choi != 0) { lig = ((choi - 1) % 23) << 3; @@ -1173,7 +1173,7 @@ L2: } /* overlay */ void tencore() { /* Perdu !!! */ - integer quel; + int quel; clsf2(); musique(0); diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index d059fc3ef3..cec339e29a 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -1,8 +1,8 @@ -/* overlay */ integer do_alert(str255 str_, integer n); +/* overlay */ int do_alert(str255 str_, int n); -const integer nligne = 7; -const matrix<1, 2, 1, 3, integer> coord +const int nligne = 7; +const matrix<1, 2, 1, 3, int> coord = {{ {{150, 72, 103}}, {{143, 107, 183}} } @@ -10,8 +10,8 @@ const matrix<1, 2, 1, 3, integer> coord -static void decod(str255 s, integer &nbc, integer &nbl, integer &col, str255 &c, str30 &cs) { - integer i, k; +static void decod(str255 s, int &nbc, int &nbl, int &col, str255 &c, str30 &cs) { + int i, k; boolean v; val(s[2], nbc, i); @@ -47,18 +47,18 @@ static void decod(str255 s, integer &nbc, integer &nbl, integer &col, str255 &c, -static void posit(integer ji, integer &coldep, integer &esp) { - putxy(coldep + (40 + esp) *pred(integer, ji), 98); +static void posit(int ji, int &coldep, int &esp) { + putxy(coldep + (40 + esp) *pred(int, ji), 98); } -static void fait_boite(integer lidep, integer nli, integer tx) { - integer x, y, xx, yy; +static void fait_boite(int lidep, int nli, int tx) { + int x, y, xx, yy; if (tx > 640) tx = 640; x = 320 - ((cardinal)tx >> 1); - y = pred(integer, lidep) << 3; + y = pred(int, lidep) << 3; xx = x + tx; yy = y + (nli << 3); box(15, gd, x, y, xx, yy, 255); @@ -68,8 +68,8 @@ static void fait_boite(integer lidep, integer nli, integer tx) { -static void fait_choix(str30 c, integer &coldep, integer &nbcase, array<1, 2, varying_string<3> > &s, integer &esp) { - integer i, l, x; +static void fait_choix(str30 c, int &coldep, int &nbcase, array<1, 2, varying_string<3> > &s, int &esp) { + int i, l, x; char ch; i = 1; @@ -89,24 +89,24 @@ static void fait_choix(str30 c, integer &coldep, integer &nbcase, array<1, 2, va } } -integer do_alert(str255 str_, integer n) { - integer coldep, esp, i, l, nbcase, quoi, ix; +int do_alert(str255 str_, int n) { + int coldep, esp, i, l, nbcase, quoi, ix; str255 st, chaine; - matrix<1, 2, 1, 2, integer> limit; + matrix<1, 2, 1, 2, int> limit; char c, dumi; array<1, 2, varying_string<3> > s; - integer cx, cy, cd, nbcol, nblig; + int cx, cy, cd, nbcol, nblig; boolean touch, newaff, test, test1, test2, test3, dum; str30 cas; /*debug('** do_alert **');*/ - integer do_alert_result; + int do_alert_result; hide_mouse(); while (keypressed()) input >> kbd >> dumi; clic = false; decod(str_, nbcase, nblig, nbcol, chaine, cas); - sauvecr(50, succ(integer, nligne) << 4); + sauvecr(50, succ(int, nligne) << 4); i = 0; if (chaine == "") { @@ -190,7 +190,7 @@ integer do_alert(str255 str_, integer n) { posit(n, coldep, esp); writeg(string(' ') + s[n] + ' ', 1); } - charecr(50, succ(integer, nligne) << 4); + charecr(50, succ(int, nligne) << 4); show_mouse(); do_alert_result = quoi; return do_alert_result; diff --git a/engines/mortevielle/boite.cpp b/engines/mortevielle/boite.cpp index 4120f7337f..d1ebe4da38 100644 --- a/engines/mortevielle/boite.cpp +++ b/engines/mortevielle/boite.cpp @@ -1,6 +1,6 @@ -void boite(integer x, integer y, integer dx, integer dy, integer coul) { - integer i; - integer xi, yi, xo, yo; +void boite(int x, int y, int dx, int dy, int coul) { + int i; + int xi, yi, xo, yo; /* debug('boite'); */ hide_mouse(); @@ -15,14 +15,14 @@ void boite(integer x, integer y, integer dx, integer dy, integer coul) { for (i = 0; i <= dx + dy; i ++) { putpix(gd, xi, yi, coul); if (xi == x + dx) { - if (gd != cga) putpix(gd, pred(integer, xi), yi, coul); - yi = succ(integer, yi); - } else xi = succ(integer, xi); + if (gd != cga) putpix(gd, pred(int, xi), yi, coul); + yi = succ(int, yi); + } else xi = succ(int, xi); putpix(gd, xo, yo, coul); - if (yo == y + dy) xo = succ(integer, xo); + if (yo == y + dy) xo = succ(int, xo); else { - if (gd != cga) putpix(gd, succ(integer, xo), yo, coul); - yo = succ(integer, yo); + if (gd != cga) putpix(gd, succ(int, xo), yo, coul); + yo = succ(int, yo); } } show_mouse(); diff --git a/engines/mortevielle/disk.cpp b/engines/mortevielle/disk.cpp index 517d408c87..0e458a5033 100644 --- a/engines/mortevielle/disk.cpp +++ b/engines/mortevielle/disk.cpp @@ -1,7 +1,7 @@ void dem1() { untyped_file f; - integer k; + int k; /* -- demande de disk 1 -- */ assign(f, "mort.005"); @@ -17,9 +17,9 @@ void dem1() { close(f); } -void takesav(integer n) { +void takesav(int n) { untyped_file f; - integer i; + int i; varying_string<10> st; dem1(); @@ -37,7 +37,7 @@ void takesav(integer n) { close(f); } -void ld_game(integer n) { +void ld_game(int n) { hide_mouse(); maivid(); takesav(n); @@ -50,9 +50,9 @@ void ld_game(integer n) { show_mouse(); } -void sv_game(integer n) { +void sv_game(int n) { untyped_file f; - integer i; + int i; hide_mouse(); tmaj3(); diff --git a/engines/mortevielle/droite.cpp b/engines/mortevielle/droite.cpp index 8d254a4afc..0ad212dec1 100644 --- a/engines/mortevielle/droite.cpp +++ b/engines/mortevielle/droite.cpp @@ -1,5 +1,5 @@ -void droite(integer x, integer y, integer xx, integer yy, integer coul) { - integer step, i; +void droite(int x, int y, int xx, int yy, int coul) { + int step, i; real a, b; real xr, yr, xro, yro; @@ -31,4 +31,4 @@ void droite(integer x, integer y, integer xx, integer yy, integer coul) { } while (!(i == xx)); /*writeln(le_file,'Y == ',a:3:3,' * X + ',b:3:3);*/ } -} \ No newline at end of file +} diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index b450e074c1..199d43862f 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -7,10 +7,10 @@ char readkey1() { return readkey1_result; } -integer testou() { +int testou() { char ch; - integer testou_result; + int testou_result; input >> kbd >> ch; switch (ch) { case '\23' : @@ -19,7 +19,7 @@ integer testou() { case '\1': case '\3': case '\5' : { - newgd = (cardinal)pred(integer, ord(ch)) >> 1; + newgd = (cardinal)pred(int, ord(ch)) >> 1; testou_result = 61; return testou_result; } @@ -39,7 +39,7 @@ integer testou() { case '\26' : if (set::of(1, 2, eos).has(c_zzz)) { zzuul(adcfiec + 161, 0, 1644); - c_zzz = succ(integer, c_zzz); + c_zzz = succ(int, c_zzz); testou_result = 61; return testou_result; } @@ -53,7 +53,7 @@ integer testou() { } void teskbd() { - integer dum; + int dum; if (keypressed()) dum = testou(); } diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 2c9b8cdcf4..35de7f439f 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -1,17 +1,17 @@ /* NIVEAU 15 */ void copcha() { - integer i; + int i; i = acha; do { tabdon[i] = tabdon[i + 390]; - i = succ(integer, i); + i = succ(int, i); } while (!(i == acha + 390)); } boolean dans_rect(rectangle r) { - integer x, y, c; + int x, y, c; boolean dans_rect_result; read_pos_mouse(x, y, c); @@ -23,8 +23,8 @@ boolean dans_rect(rectangle r) { return dans_rect_result; } -void outbloc(integer n, pattern p, t_nhom pal) { - integer i, j, ad; +void outbloc(int n, pattern p, t_nhom pal) { + int i, j, ad; ad = n * 404 + 0xd700; { @@ -33,13 +33,13 @@ void outbloc(integer n, pattern p, t_nhom pal) { ad = ad + 4; for (i = 1; i <= p.tax; i ++) for (j = 1; j <= p.tay; j ++) - mem[0x6000 + ad + pred(integer, j)*p.tax + pred(integer, i)] = pal[n].hom[p.des[i][j]]; + mem[0x6000 + ad + pred(int, j)*p.tax + pred(int, i)] = pal[n].hom[p.des[i][j]]; } } -void writepal(integer n) { - integer i; +void writepal(int n) { + int i; t_nhom pal; @@ -49,7 +49,7 @@ void writepal(integer n) { case ams : for (i = 1; i <= 16; i ++) { mem[0x7000 + 2 * i] = tabpal[n][i].x; - mem[0x7000 + succ(integer, 2 * i)] = tabpal[n][i].y; + mem[0x7000 + succ(int, 2 * i)] = tabpal[n][i].y; } break; case cga : { @@ -62,7 +62,7 @@ void writepal(integer n) { } -void pictout(integer seg, integer dep, integer x, integer y) { +void pictout(int seg, int dep, int x, int y) { decomp(seg, dep); if (gd == her) { mem[0x7000 + 2] = 0; @@ -72,45 +72,45 @@ void pictout(integer seg, integer dep, integer x, integer y) { afff(gd, seg, dep, x, y); } -void putxy(integer x, integer y) { +void putxy(int x, int y) { xwhere = x; ywhere = y; } /* -function calad(x,y:integer):integer; +function calad(x,y:int):int; begin calad:=pred(x)+320*pred(y) end; */ -void sauvecr(integer y, integer dy) { +void sauvecr(int y, int dy) { hide_mouse(); s_sauv(gd, y, dy); show_mouse(); } -void charecr(integer y, integer dy) { +void charecr(int y, int dy) { hide_mouse(); s_char(gd, y, dy); show_mouse(); } /* -function peek(ad:integer):integer; +function peek(ad:int):int; begin peek:=tabdon[ad]; end; -function peekw(ad:integer):integer; +function peekw(ad:int):int; begin peekw:=tabdon[ad] shl 8+tabdon[succ(ad)]; end; -function peekl(ad:integer):real; +function peekl(ad:int):real; begin peekl:=tabdon[ad+3]+tabdon[ad+2] shl 8; end; -procedure poke (ad,n:integer); +procedure poke (ad,n:int); begin tabdon[ad]:=lo(n); end; @@ -120,7 +120,7 @@ void adzon() { untyped_file f; file g; byte a; - integer i; + int i; assign(f, "don.mor"); reset(f, 256); @@ -148,10 +148,10 @@ void adzon() { close(f); } -integer animof(integer ouf, integer num) { - integer nani, aux; +int animof(int ouf, int num) { + int nani, aux; - integer animof_result; + int animof_result; nani = mem[adani + 1]; aux = num; if (ouf != 1) aux = aux + nani; @@ -163,7 +163,7 @@ integer animof(integer ouf, integer num) { return animof_result; } -/*procedure affgd(offs,dep,x,y:integer); +/*procedure affgd(offs,dep,x,y:int); begin case Gd of Ams : affams(offs,dep,x,y); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 691ef7c852..9018414d28 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -1,6 +1,6 @@ /* NIVEAU 14*/ -/* overlay */ void menut(integer no, str30 nom) { +/* overlay */ void menut(int no, str30 nom) { byte h, l; str30 s; @@ -33,7 +33,7 @@ } } -/* overlay */ void menu_disable(integer no) { +/* overlay */ void menu_disable(int no) { byte h, l; /* debug('menu_disable'); */ @@ -62,7 +62,7 @@ } } -/* overlay */ void menu_enable(integer no) { +/* overlay */ void menu_enable(int no) { byte h, l; /* debug('menu_disable'); */ @@ -92,9 +92,9 @@ } void menu_aff() { - integer ind_tabl, k, col; + int ind_tabl, k, col; char c; - integer pt, x, y, color, msk, + int pt, x, y, color, msk, num_letr; /* debug('menu_aff'); */ @@ -127,8 +127,8 @@ void menu_aff() { msk = (cardinal)msk >> 1; x = x + 1; } - ind_tabl = succ(integer, ind_tabl); - k = succ(integer, k); + ind_tabl = succ(int, ind_tabl); + k = succ(int, k); } while (!(k == 3)); y = y + 1; } while (!(y == 9)); @@ -149,7 +149,7 @@ void draw_menu() { test0 = false; } -void invers(integer ix) { +void invers(int ix) { varying_string<23> s; /* debug('invers'); */ @@ -186,8 +186,8 @@ void invers(integer ix) { else msg4 = no_choice; } -void util(integer x, integer y) { - integer ymx, dxcar, xmn, xmx, ix; +void util(int x, int y) { + int ymx, dxcar, xmn, xmx, ix; /* debug('util'); */ ymx = (don[msg3][4] << 3) + 16; @@ -197,7 +197,7 @@ void util(integer x, integer y) { else ix = 3; xmx = dxcar * ix * res + xmn + 2; if ((x > xmn) && (x < xmx) && (y < ymx) && (y > 15)) { - ix = pred(integer, (cardinal)y >> 3) + (msg3 << 8); + ix = pred(int, (cardinal)y >> 3) + (msg3 << 8); if (ix != msg4) { invers(1); msg4 = ix; @@ -209,9 +209,9 @@ void util(integer x, integer y) { } } -void menu_down(integer ii) { - integer cx, xcc; - integer xco, nb_lig; +void menu_down(int ii) { + int cx, xcc; + int xco, nb_lig; /* debug('menu_down'); */ xco = don[ii][1]; @@ -228,7 +228,7 @@ void menu_down(integer ii) { putxy(xco, 16); cx = 0; do { - cx = succ(integer, cx); + cx = succ(int, cx); switch (ii) { case 1 : if (inv[cx][1] != '*') writeg(inv[cx], 4); @@ -262,7 +262,7 @@ void menu_down(integer ii) { show_mouse(); } -void menu_up(integer xx) { +void menu_up(int xx) { /* debug('menu_up'); */ if (test0) { charecr(10, succ(byte, don[xx][2]) << 1); @@ -278,7 +278,7 @@ void erase_menu() { } void mdn() { - integer x, y, c, a, ix; + int x, y, c, a, ix; boolean tes; /* debug('mdn'); */ diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index fd4e2f5ffa..cee4e31b93 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -10,12 +10,12 @@ void testfi() { } -integer readclock() { +int readclock() { registres r; - integer s, m, h; + int s, m, h; /* debug('readclock');*/ - integer readclock_result; + int readclock_result; r.ax = 0x2c00; intr(0x21, r); { @@ -29,7 +29,7 @@ integer readclock() { return readclock_result; } -void modif(integer &nu) { +void modif(int &nu) { /* debug('modif'); */ if (nu == 26) nu = 25; if ((nu > 29) && (nu < 36)) nu = nu - 4; @@ -52,7 +52,7 @@ void modif(integer &nu) { } -void dessine(integer ad, integer x, integer y) { +void dessine(int ad, int x, int y) { /* debug('dessine'); */ hide_mouse(); writepal(numpal); @@ -72,17 +72,17 @@ void dessine_rouleau() { } -void text_color(integer c) { +void text_color(int c) { color_txt = c; } /* NIVEAU 13 */ -void text1(integer x, integer y, integer nb, integer m) { +void text1(int x, int y, int nb, int m) { phrase st; - integer tay; - integer co; + int tay; + int co; /* debug('text'); */ @@ -94,7 +94,7 @@ void text1(integer x, integer y, integer nb, integer m) { } void initouv() { - integer cx; + int cx; /* debug('initouv'); */ for (cx = 1; cx <= 7; cx ++) touv[cx] = chr(0); @@ -105,7 +105,7 @@ void ecrf1() { } void clsf1() { - integer i, j; + int i, j; /* debug('clsf1'); */ hide_mouse(); @@ -153,7 +153,7 @@ void clsf1() { } void clsf2() { - integer i, j; + int i, j; /* debug('clsf2'); */ hide_mouse(); @@ -175,34 +175,34 @@ void ecrf2() { } void ecr2(str255 str_) { - integer tab; - integer tlig; + int tab; + int tlig; /* debug('ecr2 : '+str_);*/ if (res == 1) tab = 10; else tab = 6; putxy(8, 177); - tlig = 59 + pred(integer, res) * 36; + tlig = 59 + pred(int, res) * 36; if (length(str_) < tlig) writeg(str_, 5); else if (length(str_) < (tlig << 1)) { putxy(8, 176); - writeg(copy(str_, 1, pred(integer, tlig)), 5); + writeg(copy(str_, 1, pred(int, tlig)), 5); putxy(8, 182); writeg(copy(str_, tlig, tlig << 1), 5); } else { f2_all = true; clsf2(); putxy(8, 176); - writeg(copy(str_, 1, pred(integer, tlig)), 5); + writeg(copy(str_, 1, pred(int, tlig)), 5); putxy(8, 182); - writeg(copy(str_, tlig, pred(integer, tlig << 1)), 5); + writeg(copy(str_, tlig, pred(int, tlig << 1)), 5); putxy(8, 190); writeg(copy(str_, tlig << 1, tlig * 3), 5); } } void clsf3() { - integer i, j; + int i, j; /* debug('clsf3'); */ hide_mouse(); @@ -232,7 +232,7 @@ void ecrf7() { } void clsf10() { - integer co, cod; + int co, cod; varying_string<8> st; /* debug('clsf10'); */ @@ -268,8 +268,8 @@ void stop() { exit(0); } -void paint_rect(integer x, integer y, integer dx, integer dy) { - integer co; +void paint_rect(int x, int y, int dx, int dy) { + int co; /* debug('paint_rect'); */ if (gd == cga) co = 3; @@ -277,20 +277,20 @@ void paint_rect(integer x, integer y, integer dx, integer dy) { box(co, gd, x, y, x + dx, y + dy, 255); } -integer hazard(integer min, integer max) { - integer ha1; +int hazard(int min, int max) { + int ha1; real ha2; /* debug('hazard'); */ - integer hazard_result; + int hazard_result; ha2 = Random(); ha1 = trunc(ha2 * (max - min)); hazard_result = min + ha1; return hazard_result; } -void calch(integer &j, integer &h, integer &m) { - integer th, nh; +void calch(int &j, int &h, int &m) { + int th, nh; /* debug('calch');*/ nh = readclock(); @@ -305,15 +305,15 @@ void calch(integer &j, integer &h, integer &m) { h = h - ((j - vj) * 24); } -void conv(integer x, integer &y) { - integer cx; +void conv(int x, int &y) { + int cx; /* debug('conv'); */ cx = 1; y = 128; while (cx < x) { y = (cardinal)y >> 1; - cx = succ(integer, cx); + cx = succ(int, cx); } } @@ -322,10 +322,10 @@ void okpas() { tesok = true; } -void modobj(integer m) { +void modobj(int m) { phrase str_; str30 strp; - integer i, tay; + int i, tay; /* debug('modobj'); */ strp = ' '; @@ -337,10 +337,10 @@ void modobj(integer m) { menu_disable(invt[8]); } -void modobj2(integer m, boolean t1, boolean t2) { +void modobj2(int m, boolean t1, boolean t2) { phrase str_; str30 strp; - integer i, tay; + int i, tay; /* debug('modobj'); */ strp = ' '; @@ -355,17 +355,17 @@ void modobj2(integer m, boolean t1, boolean t2) { } -void repon(integer f, integer m) { +void repon(int f, int m) { str255 str_; varying_string<40> str1; phrase st; text1 fic; - integer i, xco, dx, caspe, tay; + int i, xco, dx, caspe, tay; /* debug('repon fenetre nř'+chr(f+48));*/ if ((m > 499) && (m < 563)) { deline(m - 501 + c_st41, st, tay); - if (tay > ((58 + pred(integer, res) * 37) << 1)) f2_all = true; + if (tay > ((58 + pred(int, res) * 37) << 1)) f2_all = true; else f2_all = false; clsf2(); afftex(st, 8, 176, 85, 3, 5); @@ -413,7 +413,7 @@ void repon(integer f, integer m) { } void f3f8() { - integer co; + int co; if (res == 1) co = 107; else co = 64; @@ -424,7 +424,7 @@ void f3f8() { boite(0, 42, co, 16, 7); } -void t5(integer cx) { +void t5(int cx) { /* debug('t5'); */ if (cx == 10) blo = false; if (cx != 1) { @@ -444,8 +444,8 @@ void t5(integer cx) { if (cx != 9) bh9 = false; } -void affper(integer per) { - integer cx; +void affper(int per) { + int cx; /* debug('affper'); */ for (cx = 1; cx <= 8; cx ++) menu_disable(disc[cx]); @@ -493,10 +493,10 @@ void affper(integer per) { ipers = per; } -/* overlay */ void choix(integer min, integer max, integer &per) { +/* overlay */ void choix(int min, int max, int &per) { boolean i; - integer haz, cx, cy, cz; - long_integer per2, cz2; + int haz, cx, cy, cz; + long_int per2, cz2; /* debug('o0 choix'); */ haz = hazard(min, max); @@ -518,8 +518,8 @@ void affper(integer per) { i = false; } -/* overlay */ void cpl1(integer &p) { - integer j, h, m; +/* overlay */ void cpl1(int &p) { + int j, h, m; /* debug('o0 cpl1'); */ calch(j, h, m); @@ -533,8 +533,8 @@ void affper(integer per) { mdn(); } -/* overlay */ void cpl2(integer &p) { - integer j, h, m; +/* overlay */ void cpl2(int &p) { + int j, h, m; /* debug('o0 cpl2'); */ calch(j, h, m); @@ -545,8 +545,8 @@ void affper(integer per) { if ((h >= 0) && (h < 8)) p = 50; } -/* overlay */ void cpl3(integer &p) { - integer j, h, m; +/* overlay */ void cpl3(int &p) { + int j, h, m; /* debug('o0 cpl3'); */ calch(j, h, m); @@ -554,8 +554,8 @@ void affper(integer per) { if (((h > 9) && (h < 20)) || ((h >= 0) && (h < 9))) p = 0; } -/* overlay */ void cpl5(integer &p) { - integer j, h, m; +/* overlay */ void cpl5(int &p) { + int j, h, m; /* debug('o0 cpl5'); */ calch(j, h, m); @@ -565,8 +565,8 @@ void affper(integer per) { if ((h >= 0) && (h < 7)) p = 50; } -/* overlay */ void cpl6(integer &p) { - integer j, h, m; +/* overlay */ void cpl6(int &p) { + int j, h, m; /* debug('o0 cpl6'); */ calch(j, h, m); @@ -580,7 +580,7 @@ void person() { const char m1[] = "Vous"; const char m2[] = "tes"; const char m3[] = "SEUL"; - integer cf; + int cf; str255 str_; /* debug('person'); */ @@ -595,22 +595,22 @@ void person() { ipers = 0; } -void chlm(integer &per) { +void chlm(int &per) { /* debug('chlm'); */ per = hazard(1, 2); if (per == 2) per = 128; } void pendule() { - const matrix<1, 2, 1, 12, integer> cv + const matrix<1, 2, 1, 12, int> cv = {{{{ 5, 8, 10, 8, 5, 0, -5, -8, -10, -8, -5, 0}}, {{ -5, -3, 0, 3, 5, 6, 5, 3, 0, -3, -5, -6}} } }; - const integer x = 580; - const integer y = 123; - const integer rg = 9; - integer h, co; + const int x = 580; + const int y = 123; + const int rg = 9; + int h, co; /* debug('pendule'); */ @@ -639,7 +639,7 @@ void pendule() { * NIVEAU 11 * *************/ -void debloc(integer l) { +void debloc(int l) { /* debug('debloc'); */ num = 0; x = 0; @@ -648,8 +648,8 @@ void debloc(integer l) { mpers = ipers; } -/* overlay */ void cpl10(integer &p, integer &h) { - integer j, m; +/* overlay */ void cpl10(int &p, int &h) { + int j, m; /* debug('o1 cpl10'); */ calch(j, h, m); @@ -661,8 +661,8 @@ void debloc(integer l) { if ((h >= 0) && (h < 8)) p = 5; } -/* overlay */ void cpl11(integer &p, integer &h) { - integer j, m; +/* overlay */ void cpl11(int &p, int &h) { + int j, m; /* debug('o1 cpl11'); */ calch(j, h, m); @@ -673,8 +673,8 @@ void debloc(integer l) { if ((h >= 0) && (h < 9)) p = 0; } -/* overlay */ void cpl12(integer &p) { - integer j, h, m; +/* overlay */ void cpl12(int &p) { + int j, h, m; /* debug('o1 cpl12'); */ calch(j, h, m); @@ -684,13 +684,13 @@ void debloc(integer l) { if ((h > 4) && (h < 9)) p = 15; } -/* overlay */ void cpl13(integer &p) { +/* overlay */ void cpl13(int &p) { /* debug('o1 cpl13'); */ p = 0; } -/* overlay */ void cpl15(integer &p) { - integer j, h, m; +/* overlay */ void cpl15(int &p) { + int j, h, m; /* debug('o1 cpl15'); */ calch(j, h, m); @@ -703,8 +703,8 @@ void debloc(integer l) { if ((h >= 0) && (h < 8)) p = -15; } -/* overlay */ void cpl20(integer &p, integer &h) { - integer j, m; +/* overlay */ void cpl20(int &p, int &h) { + int j, m; /* debug('o1 cpl20'); */ calch(j, h, m); @@ -715,8 +715,8 @@ void debloc(integer l) { if ((h > 4) && (h < 10)) p = -5; } -/* overlay */ void quelq1(integer l) { - integer per; +/* overlay */ void quelq1(int l) { + int per; /* debug('o1 quelq1'); */ per = hazard(1, 2); @@ -742,8 +742,8 @@ void debloc(integer l) { ipers = 10; } -/* overlay */ void quelq6(integer l) { - integer per; +/* overlay */ void quelq6(int l) { + int per; /* debug('o1 quelq6'); */ if (l == 6) bh6 = true; @@ -751,8 +751,8 @@ void debloc(integer l) { ipers = 10; } -/* overlay */ void quelq10(integer h, integer &per) { - integer min, max; +/* overlay */ void quelq10(int h, int &per) { + int min, max; /* debug('o1 quelq10'); */ if ((h >= 0) && (h < 8)) chlm(per); @@ -778,8 +778,8 @@ void debloc(integer l) { affper(per); } -/* overlay */ void quelq11(integer h, integer &per) { - integer min, max; +/* overlay */ void quelq11(int h, int &per) { + int min, max; /* debug('o1 quelq11'); */ if ((h >= 0) && (h < 8)) chlm(per); @@ -801,14 +801,14 @@ void debloc(integer l) { affper(per); } -/* overlay */ void quelq12(integer &per) { +/* overlay */ void quelq12(int &per) { /* debug('o1 quelq12'); */ chlm(per); affper(per); } -/* overlay */ void quelq15(integer &per) { - integer cx; +/* overlay */ void quelq15(int &per) { + int cx; boolean test; @@ -831,8 +831,8 @@ void debloc(integer l) { } } -/* overlay */ void quelq20(integer h, integer &per) { - integer min, max; +/* overlay */ void quelq20(int h, int &per) { + int min, max; /* debug('o1 quelq20'); */ if (((h >= 0) && (h < 10)) || ((h > 18) && (h < 24))) chlm(per); @@ -856,7 +856,7 @@ void debloc(integer l) { /* overlay */void frap() { - integer j, h, m, haz; + int j, h, m, haz; /* debug('o1 frap'); */ calch(j, h, m); @@ -868,7 +868,7 @@ void debloc(integer l) { } } -/* overlay */ void nouvp(integer l, integer &p) { +/* overlay */ void nouvp(int l, int &p) { /* debug('o1 nouvp'); */ p = 0; if (l == 1) { @@ -889,7 +889,7 @@ void debloc(integer l) { -/* overlay */ void tip(integer ip, integer &cx) { +/* overlay */ void tip(int ip, int &cx) { /* debug('o1 tip'); */ if (ip == 128) cx = 1; else if (ip == 64) cx = 2; @@ -902,7 +902,7 @@ void debloc(integer l) { } -/* overlay */ void ecfren(integer &p, integer &haz, integer cf, integer l) { +/* overlay */ void ecfren(int &p, int &haz, int cf, int l) { /* debug('o1 ecfren'); */ if (l == 0) person(); p = -500; @@ -921,8 +921,8 @@ void debloc(integer l) { } } -/* overlay */ void becfren(integer l) { - integer haz; +/* overlay */ void becfren(int l) { + int haz; /* debug('o1 becfren'); */ if ((l == 1) || (l == 4)) { @@ -947,24 +947,24 @@ void debloc(integer l) { void init_nbrepm() { const array<1, 8, byte> ipm = {{4, 5, 6, 7, 5, 6, 5, 8}}; - integer i; + int i; /* debug('init_nbrepm'); */ i = 0; do { - i = succ(integer, i); + i = succ(int, i); nbrepm[i] = ipm[i]; } while (!(i == 8)); } -void phaz(integer &haz, integer &p, integer cf) { +void phaz(int &haz, int &p, int cf) { /* debug('phaz'); */ p = p + cf; haz = hazard(1, 100); } /* overlay */ void inzon() { - integer cx; + int cx; /* debug('o2 inzon'); */ copcha(); @@ -1004,8 +1004,8 @@ void phaz(integer &haz, integer &p, integer cf) { mh = readclock(); } -/* overlay */ void pl1(integer cf) { - integer p, haz; +/* overlay */ void pl1(int cf) { + int p, haz; /* debug('o2 pl1'); */ if (((li == 1) && (! bh1) && (! bf1)) @@ -1017,8 +1017,8 @@ void phaz(integer &haz, integer &p, integer cf) { } } -/* overlay */ void pl2(integer cf) { - integer p, haz; +/* overlay */ void pl2(int cf) { + int p, haz; /* debug('o2 pl2'); */ if (! bh2) { @@ -1029,8 +1029,8 @@ void phaz(integer &haz, integer &p, integer cf) { } } -/* overlay */ void pl5(integer cf) { - integer p, haz; +/* overlay */ void pl5(int cf) { + int p, haz; /* debug('o2 pl5'); */ if (! bh5) { @@ -1041,8 +1041,8 @@ void phaz(integer &haz, integer &p, integer cf) { } } -/* overlay */ void pl6(integer cf) { - integer p, haz; +/* overlay */ void pl6(int cf) { + int p, haz; /* debug('o2 pl6'); */ if (((li == 6) && (! bh6)) || ((li == 8) && (! bh8))) { @@ -1053,8 +1053,8 @@ void phaz(integer &haz, integer &p, integer cf) { } } -/* overlayi */ void pl9(integer cf) { - integer p, haz; +/* overlayi */ void pl9(int cf) { + int p, haz; /* debug('o2 pl9'); */ if (! bh9) { @@ -1065,8 +1065,8 @@ void phaz(integer &haz, integer &p, integer cf) { } } -/* overlayi */ void pl10(integer cf) { - integer p, h, haz; +/* overlayi */ void pl10(int cf) { + int p, h, haz; /* debug('o2 pl10'); */ cpl10(p, h); @@ -1075,8 +1075,8 @@ void phaz(integer &haz, integer &p, integer cf) { else quelq10(h, p); } -/* overlay */ void pl11(integer cf) { - integer p, h, haz; +/* overlay */ void pl11(int cf) { + int p, h, haz; /* debug('o2 pl11'); */ cpl11(p, h); @@ -1085,8 +1085,8 @@ void phaz(integer &haz, integer &p, integer cf) { else quelq11(h, p); } -/* overlay */ void pl12(integer cf) { - integer p, haz; +/* overlay */ void pl12(int cf) { + int p, haz; /* debug('o2 pl12'); */ cpl12(p); @@ -1095,8 +1095,8 @@ void phaz(integer &haz, integer &p, integer cf) { else quelq12(p); } -/* overlay */ void pl13(integer cf) { - integer p, haz; +/* overlay */ void pl13(int cf) { + int p, haz; /* debug('o2 pl13'); */ cpl13(p); @@ -1105,8 +1105,8 @@ void phaz(integer &haz, integer &p, integer cf) { else quelq12(p); } -/* overlay */ void pl15(integer cf) { - integer p, haz; +/* overlay */ void pl15(int cf) { + int p, haz; /* debug('o2 pl15'); */ cpl15(p); @@ -1115,8 +1115,8 @@ void phaz(integer &haz, integer &p, integer cf) { else quelq15(p); } -/* overlay */ void pl20(integer cf) { - integer p, h, haz; +/* overlay */ void pl20(int cf) { + int p, h, haz; /* debug('o2 pl20'); */ cpl20(p, h); @@ -1125,8 +1125,8 @@ void phaz(integer &haz, integer &p, integer cf) { else quelq20(h, p); } -/* overlay */ void t11(integer l11, integer &a) { - integer p, haz, h; +/* overlay */ void t11(int l11, int &a) { + int p, haz, h; /* debug('o2 t11'); */ ecfren(p, haz, s.conf, l11); @@ -1169,7 +1169,7 @@ void phaz(integer &haz, integer &p, integer cf) { /* overlay */ void cavegre() { - integer haz; + int haz; /* debug('cavegre'); */ s.conf = s.conf + 2; @@ -1184,12 +1184,12 @@ void phaz(integer &haz, integer &p, integer cf) { person(); } -void writetp(str255 s, integer t) { +void writetp(str255 s, int t) { if (res == 2) writeg(s, t); else writeg(copy(s, 1, 25), t); } -void messint(integer nu) { +void messint(int nu) { /* debug('messint'); */ clsf1(); clsf2(); @@ -1203,8 +1203,8 @@ void messint(integer nu) { repon(7, nu); } -void aniof(integer ouf, integer num) { - integer ad, offset; +void aniof(int ouf, int num) { + int ad, offset; char c; /* debug('aniof'); */ @@ -1221,10 +1221,10 @@ void aniof(integer ouf, integer num) { show_mouse(); } -void musique(integer so) { +void musique(int so) { boolean i; - integer haz; - /* dep: array[1..5] of long_integer;*/ + int haz; + /* dep: array[1..5] of long_int;*/ /* debug('musique'); */ if (so == 0) { /*musik(0)*/ @@ -1275,8 +1275,8 @@ void musique(integer so) { } /* NIVEAU 9 */ -void dessin(integer ad) { - integer cx; +void dessin(int ad) { + int cx; /* debug('dessin'); */ if (ad != 0) dessine(ades, ((ad % 160) * 2), (ad / 160)); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 734cb4806c..48db49b6da 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -1,4 +1,4 @@ -const array<1, 11, integer> men +const array<1, 11, int> men = {{ scacher, attacher, defoncer, dormir, entrer, fermer, frapper, manger, @@ -14,7 +14,7 @@ void tinke() { const char d4 = ']'; const char d5 = '1'; const char d6[] = "OK"; - integer cx, cy, haz, nh, cf, j, h, m, cd; + int cx, cy, haz, nh, cf, j, h, m, cd; varying_string<3> stpo; boolean am; @@ -128,7 +128,7 @@ void tinke() { } void fenat(char ans) { - integer coul; + int coul; hide_mouse(); if (gd == cga) coul = 2; @@ -141,7 +141,7 @@ void fenat(char ans) { /* NIVEAU 8 */ -void afdes(integer ad) { +void afdes(int ad) { taffich(); dessin(ad); okdes = false; @@ -149,8 +149,8 @@ void afdes(integer ad) { void tkey1(boolean d) { boolean quest; - integer x, y, c; - integer key; + int x, y, c; + int key; hide_mouse(); fenat('K'); @@ -165,8 +165,8 @@ void tkey1(boolean d) { show_mouse(); } -void tmlieu(integer mli) { - integer cx, j, i, tail; +void tmlieu(int mli) { + int cx, j, i, tail; str30 nomp; phrase st; @@ -187,7 +187,7 @@ void tmlieu(integer mli) { /* NIVEAU 7 */ -void tlu(integer af, integer ob) { +void tlu(int af, int ob) { caff = 32; afdes(0); repon(6, ob + 4000); @@ -198,9 +198,9 @@ void tlu(integer af, integer ob) { crep = 998; } -void delin(integer n) { +void delin(int n) { phrase s; - integer t; + int t; deline(n, s, t); } @@ -213,7 +213,7 @@ void affrep() { void mfouen() { - integer cx; + int cx; tmlieu(s.mlieu); for (cx = 1; cx <= 11; cx ++) menu_enable(men[cx]); @@ -232,7 +232,7 @@ void mfouen() menut(soulever, " soulever "); } -void atf3f8(integer &key) { +void atf3f8(int &key) { do { key = testou(); } while (!((key == 61) || (key == 66))); @@ -241,7 +241,7 @@ void atf3f8(integer &key) { /* NIVEAU 6 */ void tperd() { - integer cx; + int cx; initouv(); ment = 0; @@ -261,7 +261,7 @@ void tperd() { } void tsort() { - integer cx; + int cx; if ((iouv > 0) && (s.mlieu != 0)) if (s.conf < 50) s.conf = s.conf + 2; @@ -273,7 +273,7 @@ void tsort() { debloc(s.mlieu); } -void st4(integer ob) { +void st4(int ob) { crep = 997; switch (ob) { case 114 : @@ -296,8 +296,8 @@ void st4(integer ob) { } } -void cherjer(integer ob, boolean &d) { - integer cx; +void cherjer(int ob, boolean &d) { + int cx; d = false; for (cx = 1; cx <= 6; cx ++) d = (d || (ord(s.sjer[cx]) == ob)); @@ -310,14 +310,14 @@ void st1sama() { } void modinv() { - integer cx, cy, tay, i, r; + int cx, cy, tay, i, r; phrase nom; str30 nomp; cy = 0; for (cx = 1; cx <= 6; cx ++) if (s.sjer[cx] != chr(0)) { - cy = succ(integer, cy); + cy = succ(int, cy); r = (ord(s.sjer[cx]) + 400); deline(r - 501 + c_st41, nom, tay); nomp = delig; @@ -331,10 +331,10 @@ void modinv() { } } -void sparl(long_integer adr, long_integer rep) { - const array<1, 8, integer> haut +void sparl(long_int adr, long_int rep) { + const array<1, 8, int> haut = {{0, 1, -3, 6, -2, 2, 7, -1}}; - integer key, ad, tay, repint; + int key, ad, tay, repint; phrase st; repint = trunc(rep); @@ -365,7 +365,7 @@ void finfouil() { } void mfoudi() { - integer cx; + int cx; for (cx = 1; cx <= 7; cx ++) menu_disable(depl[cx]); for (cx = 1; cx <= 11; cx ++) menu_disable(men[cx]); @@ -395,10 +395,10 @@ void premtet() { /* NIVEAU 5 */ void ajchai() { - integer cx, cy, lderobj; + int cx, cy, lderobj; - cy = (acha + pred(integer, pred(integer, mchai) * 10)); + cy = (acha + pred(int, pred(int, mchai) * 10)); cx = 0; do { cx = cx + 1; @@ -409,8 +409,8 @@ void ajchai() { } else crep = 192; } -void ajjer(integer ob) { - integer cx; +void ajjer(int ob) { + int cx; cx = 0; do { @@ -423,7 +423,7 @@ void ajjer(integer ob) { } void t1sama() { /* On entre dans le manoir */ - integer j, h, m; + int j, h, m; boolean d; calch(j, h, m); @@ -502,7 +502,7 @@ void tctrm() { void quelquun() { - integer haz, cx; + int haz, cx; if (imen) erase_menu(); finfouil(); @@ -546,8 +546,8 @@ L1: } void tsuiv() { - integer cx, tbcl; - integer cl, cy; + int cx, tbcl; + int cl, cy; cy = acha + ((mchai - 1) * 10) - 1; cx = 0; @@ -572,7 +572,7 @@ void tsuiv() { void tfleche() { boolean qust; char touch; - integer dummy, cd, xmo, ymo; + int dummy, cd, xmo, ymo; if (num == 9999) return; fenat(chr(152)); @@ -596,11 +596,11 @@ void tfleche() { } } -void tcoord(integer sx) +void tcoord(int sx) { - integer sy, ix, iy, cb, cy, ib; - integer a, b, atdon; + int sy, ix, iy, cb, cy, ib; + int a, b, atdon; num = 0; @@ -611,7 +611,7 @@ void tcoord(integer sx) while (cy < caff) { a = a + tabdon[atdon]; atdon = atdon + 4; - cy = succ(integer, cy); + cy = succ(int, cy); } /* for cy:=0 to caff-1 do a:=a+ tabdon[amzon+3+4*cy]; @@ -621,19 +621,19 @@ void tcoord(integer sx) a = a + fleche; cb = 0; for (cy = 0; cy <= (sx - 2); cy ++) { - ib = (tabdon[a + cb] << 8) + tabdon[succ(integer, a + cb)]; + ib = (tabdon[a + cb] << 8) + tabdon[succ(int, a + cb)]; cb = cb + (ib * 4) + 2; } - ib = (tabdon[a + cb] << 8) + tabdon[succ(integer, a + cb)]; + ib = (tabdon[a + cb] << 8) + tabdon[succ(int, a + cb)]; if (ib == 0) goto L1; cy = 1; do { cb = cb + 2; sx = tabdon[a + cb] * res; - sy = tabdon[succ(integer, a + cb)]; + sy = tabdon[succ(int, a + cb)]; cb = cb + 2; ix = tabdon[a + cb] * res; - iy = tabdon[succ(integer, a + cb)]; + iy = tabdon[succ(int, a + cb)]; cy = cy + 1; } while (!(((x >= sx) && (x <= ix) && (y >= sy) && (y <= iy)) || (cy > ib))); @@ -648,7 +648,7 @@ L1: } -void st7(integer ob) { +void st7(int ob) { crep = 183; if ((ob == 116) || (ob == 144)) crep = 104; if ((ob == 126) || (ob == 111)) crep = 108; @@ -657,8 +657,8 @@ void st7(integer ob) { if (crep == 183) st4(ob); } -void treg(integer ob) { - integer mdes; +void treg(int ob) { + int mdes; mdes = caff; caff = ob; @@ -678,7 +678,7 @@ void treg(integer ob) { } } -void avpoing(integer &ob) { +void avpoing(int &ob) { crep = 999; if (s.derobj != 0) ajjer(s.derobj); if (crep != 139) { @@ -688,15 +688,15 @@ void avpoing(integer &ob) { } } -void rechai(integer &ch) { - integer cx; +void rechai(int &ch) { + int cx; cx = s.mlieu; if (s.mlieu == 16) cx = 14; - ch = tabdon[achai + (cx * 7) + pred(integer, num)]; + ch = tabdon[achai + (cx * 7) + pred(int, num)]; } -void t23coul(integer &l) { +void t23coul(int &l) { boolean d; cherjer(143, d); @@ -712,7 +712,7 @@ void maivid() { modobj(500); } -void st13(integer ob) { +void st13(int ob) { if ((ob == 114) || (ob == 116) || (ob == 126) || (ob == 132) || (ob == 111) || (ob == 106) || (ob == 102) || (ob == 100) || (ob == 110) || (ob == 153) || (ob == 154) || (ob == 155) || @@ -722,7 +722,7 @@ void st13(integer ob) { } void aldepl() { - integer dummy; + int dummy; dummy = do_alert("[1][Alors, utilisez le menu DEP...][ok]", 1); } diff --git a/engines/mortevielle/mort.cpp b/engines/mortevielle/mort.cpp index 7d5f33c2ab..c9e1d25d7e 100644 --- a/engines/mortevielle/mort.cpp +++ b/engines/mortevielle/mort.cpp @@ -31,7 +31,7 @@ /* ecrihexa utilitaire */ -void divers(integer np, boolean b) { +void divers(int np, boolean b) { teskbd(); do { parole(np, 0, 0); diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index d1de4b79d2..9ce1788b2c 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -1,20 +1,20 @@ -const integer m_arrow = 0; -const integer m_point_hand = 1; +const int m_arrow = 0; +const int m_point_hand = 1; boolean int_m, clic; -integer m_show, +int m_show, x_s, y_s, p_o_s, mouse_shwn; -matrix<0, 5, 0, 11, integer> s_s; +matrix<0, 5, 0, 11, int> s_s; void init_mouse() { - integer i, j; + int i, j; registres reg; mouse_shwn = 0; @@ -40,13 +40,13 @@ void init_mouse() { } } -/*procedure change_mouse( t : integer ); +/*procedure change_mouse( t : int ); begin m_show:= t; end;*/ -/*procedure dessine_souris(xf,yf:integer); - var x, xx, y :integer; +/*procedure dessine_souris(xf,yf:int); + var x, xx, y :int; begin case m_show of m_arrow : begin @@ -56,10 +56,10 @@ begin end; */ void hide_mouse() { - integer i, j, k, ps, ds; + int i, j, k, ps, ds; boolean imp; - mouse_shwn = pred(integer, mouse_shwn); + mouse_shwn = pred(int, mouse_shwn); if (mouse_shwn == 0) { imp = odd(y_s); j = p_o_s; @@ -73,7 +73,7 @@ void hide_mouse() { memw[0xba00 + j] = s_s[2][k]; memw[0xba00 + j + 2] = s_s[3][k]; j = j + 80; - k = succ(integer, k); + k = succ(int, k); } while (!(k >= 5)); } break; @@ -91,7 +91,7 @@ void hide_mouse() { j = j + 0x2000; } imp = ! imp; - k = succ(integer, k); + k = succ(int, k); } while (!(k >= 8)); } } @@ -111,7 +111,7 @@ void hide_mouse() { ps = mem[0xa000 + j + 1]; mem[0xa000 + j + 1] = hi(s_s[i][k]); j = j + 80; - k = succ(integer, k); + k = succ(int, k); } while (!(k >= 8)); i = i + 1; } while (!(i == 4)); @@ -134,7 +134,7 @@ void hide_mouse() { memw[0xb800 + 0x200 * i + j + 2] = s_s[k + 3][i + (k << 2)]; } j = j + 160; - k = succ(integer, k); + k = succ(int, k); } while (!(k == 3)); } break; @@ -144,7 +144,7 @@ void hide_mouse() { } void show_mouse() { - integer i, j, k, l, + int i, j, k, l, ps, ds; boolean imp; char c; @@ -164,7 +164,7 @@ void show_mouse() { s_s[2][k] = memw[0xba00 + j]; s_s[3][k] = memw[0xba00 + j + 2]; j = j + 80; - k = succ(integer, k); + k = succ(int, k); } while (!(k >= 5)); } break; @@ -183,7 +183,7 @@ void show_mouse() { j = j + 0x2000; } imp = ! imp; - k = succ(integer, k); + k = succ(int, k); } while (!(k >= 8)); } } @@ -196,9 +196,9 @@ void show_mouse() { k = 0; j = p_o_s; do { - s_s[l][k] = mem[0xa000 + j] + (mem[0xa000 + succ(integer, j)] << 8); + s_s[l][k] = mem[0xa000 + j] + (mem[0xa000 + succ(int, j)] << 8); j = j + 80; - k = succ(integer, k); + k = succ(int, k); } while (!(k >= 8)); l = l + 1; } while (!(l == 4)); @@ -221,7 +221,7 @@ void show_mouse() { s_s[k + 3][i + (k << 2)] = memw[0xb800 + 0x200 * i + j + 2]; } j = j + 160; - k = succ(integer, k); + k = succ(int, k); } while (!(k == 3)); } break; @@ -229,7 +229,7 @@ void show_mouse() { affput(2, gd, x_s, y_s, 0, 0); } -void pos_mouse(integer x, integer y) { +void pos_mouse(int x, int y) { registres reg; if (x > 314 * res) x = 314 * res; @@ -264,7 +264,7 @@ void pos_mouse(integer x, integer y) { show_mouse(); } -void read_pos_mouse(integer &x, integer &y, integer &c) { +void read_pos_mouse(int &x, int &y, int &c) { registres reg; if (int_m) { @@ -283,7 +283,7 @@ void read_pos_mouse(integer &x, integer &y, integer &c) { void mov_mouse(boolean &funct, char &key) { boolean p_key; char in1, in2; - integer x, y, cx, cy, cd; + int x, y, cx, cy, cd; registres reg; if (int_m) { @@ -354,16 +354,16 @@ void mov_mouse(boolean &funct, char &key) { input >> kbd >> in2; switch (in2) { case 'K' : - cx = pred(integer, cx); + cx = pred(int, cx); break; case 'P' : - cy = succ(integer, cy); + cy = succ(int, cy); break; case 'M' : cx = cx + 2; break; case 'H' : - cy = pred(integer, cy); + cy = pred(int, cy); break; case RANGE_10(';', 'D') : { funct = true; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 7c8f1c9f5c..ec7728745d 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -30,9 +30,9 @@ const array<0, 31, byte> tab31 } }; -void deline(integer num , phrase &l , integer &tl); +void deline(int num , phrase &l , int &tl); -static void cinq_huit(char &c, integer &ind, byte &pt, boolean &the_end) { +static void cinq_huit(char &c, int &ind, byte &pt, boolean &the_end) { const array<0, 31, char> rap = {{ ',', ':', '@', '!', '?', '-', '‡', ' ', '…', '', '‚', 'Š', '', '/', @@ -41,7 +41,7 @@ static void cinq_huit(char &c, integer &ind, byte &pt, boolean &the_end) { '6', '7', '8', '9' } }; - integer oct, ocd; + int oct, ocd; /* 5-8 */ oct = t_mot[ind]; @@ -88,8 +88,8 @@ static void cinq_huit(char &c, integer &ind, byte &pt, boolean &the_end) { } } /* 5-8 */ -void deline(integer num , phrase &l , integer &tl) { - integer i, j, ts; +void deline(int num , phrase &l , int &tl) { + int i, j, ts; char let; byte ps, k; boolean the_end; @@ -115,27 +115,27 @@ void deline(integer num , phrase &l , integer &tl) { } /* DETEX */ -void afftex(phrase ch, integer x, integer y, integer dx, integer dy, integer typ); +void afftex(phrase ch, int x, int y, int dx, int dy, int typ); -static integer l_motsuiv(integer p, phrase &ch, integer &tab) { - integer c; +static int l_motsuiv(int p, phrase &ch, int &tab) { + int c; - integer l_motsuiv_result; + int l_motsuiv_result; c = p; while (!(set::of(' ', '$', '@', eos).has(ch[p]))) p = p + 1; l_motsuiv_result = tab * (p - c); return l_motsuiv_result; } -void afftex(phrase ch, integer x, integer y, integer dx, integer dy, integer typ) { +void afftex(phrase ch, int x, int y, int dx, int dy, int typ) { boolean the_end; char touch; - integer xf, yf; - integer xc, yc; - integer tab, p; + int xf, yf; + int xc, yc; + int tab, p; varying_string<255> s; - integer i, j, nt; + int i, j, nt; /* debug(' .. Afftex');*/ diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index d40f8d39bc..c2384273f2 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -1,6 +1,6 @@ void dem2() { untyped_file f; - integer k; + int k; /* -- demande de disk 2 -- */ while (ioresult != 0); @@ -35,7 +35,7 @@ void ani50() { end;*/ /* overlay */ void aff50(boolean c) { - integer k; + int k; caff = 50; maff = 0; @@ -47,7 +47,7 @@ void ani50() { } /* overlay */ void init_menu() { - integer i, j, tai; + int i, j, tai; phrase st; untyped_file f; @@ -77,7 +77,7 @@ void ani50() { deline(i + c_dis, st, tai); dis[i] = delig + ' '; } - i = succ(integer, i); + i = succ(int, i); } while (!(i == 22)); for (i = 1; i <= 8; i ++) { disc[i] = 0x500 + i; @@ -96,7 +96,7 @@ void ani50() { /* overlay */ void charpal() { file f; file ft; - integer i, j, k; + int i, j, k; file fb; byte b; @@ -138,7 +138,7 @@ void ani50() { } /* overlay */ void chartex() { - integer i; + int i; untyped_file fibyte; phrase s; @@ -169,7 +169,7 @@ void ani50() { /* overlay */ void dialpre() { - integer cy, tay; + int cy, tay; phrase st; real ix; char ch; @@ -244,7 +244,7 @@ void ani50() { /* overlay */ void music() { untyped_file fic; - integer k; + int k; boolean fin; char ch; real x, y; @@ -326,7 +326,7 @@ void ani50() { if (newgd != gd) gd = newgd; hirs(); dessine(ades, 0, 0); - gotoxy(20 * pred(integer, res) + 8, 24); + gotoxy(20 * pred(int, res) + 8, 24); textcolor(7); cpr = "COPYRIGHT 1989 : LANKHOR"; if (set::of(ega, ams, cga, eos).has(gd)) output << cpr; diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index 3b777c3770..42a46e1209 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -1,5 +1,5 @@ -void spfrac(integer wor) { +void spfrac(int 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))) || @@ -10,7 +10,7 @@ void spfrac(integer wor) { } void charg_car() { - integer wor, int_; + int wor, int_; wor = swap(memw[adword + ptr_word]); int_ = wor & 0x3f; @@ -67,7 +67,7 @@ void veracf(byte b) { } /* overlay */ void cctable(tablint &t) { - integer k; + int k; array<0, 256, real> tb; @@ -79,7 +79,7 @@ void veracf(byte b) { } /* overlay */ void regenbruit() { - integer i, j; + int i, j; i = offsetb3 + 8590; j = 0; @@ -113,7 +113,7 @@ void veracf(byte b) { /* overlay */ void charge_bruit() { untyped_file f; - integer j, i; + int j, i; assign(f, "bruits"); reset(f); @@ -125,7 +125,7 @@ void veracf(byte b) { /* overlay */ void trait_car() { byte d3; - integer d2, i; + int d2, i; switch (c2.code) { case 9 : @@ -388,9 +388,9 @@ void veracf(byte b) { var regs : registres; buffer : array[0..511] of char; - i,j,k : integer; + i,j,k : int; st : phrase; - tay : integer; + tay : int; test : array[0..2] of boolean; const chaine : array[0..7] of char diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index 07ac757d77..02ec4fb908 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -19,10 +19,10 @@ void init_chariot() { void trait_ph() { - const array<0, 2, integer> deca + const array<0, 2, int> deca = {{300, 30, 40}}; - ptr_tcph = pred(integer, num_ph); + ptr_tcph = pred(int, num_ph); ledeb = swap(t_cph[ptr_tcph]) + deca[typlec]; lefin = swap(t_cph[ptr_tcph + 1]) + deca[typlec]; nb_word = lefin - ledeb; @@ -51,10 +51,10 @@ void trait_ph() { -void parole(integer rep, integer ht, integer typ) { - array<0, 500, integer> savph; - integer i; - integer tempo; +void parole(int rep, int ht, int typ) { + array<0, 500, int> savph; + int i; + int tempo; if (sonoff) return; diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 7bdea5b850..62dc99f479 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -1,5 +1,5 @@ -/* overlay */ void change_gd(integer ngd) { - integer i; +/* overlay */ void change_gd(int ngd) { + int i; hide_mouse(); gd = ngd; @@ -20,10 +20,10 @@ } /* overlay */ void antegame() { - integer cx; + int cx; registres regs; array<0, 511, char> buffer; - integer i, j, k; + int i, j, k; array<0, 2, boolean> test; array<0, 7, char> g; @@ -71,7 +71,7 @@ stpou = ind_mess; while ((test[k] == false) && (k < 2)) { regs.ax = 0; - k = succ(integer, k); + k = succ(int, k); intr(19, regs); { regs.ax = 0x201; @@ -118,7 +118,7 @@ /* NIVEAU 3 */ /* procedure PROGRAMME */ void tmaj3() { - integer j, h, m; + int j, h, m; calch(j, h, m); if (m == 30) m = 1; @@ -130,7 +130,7 @@ void tmaj3() { void tsitu() { - integer h, j, m; + int h, j, m; if (! col) clsf2(); syn = false; @@ -203,14 +203,14 @@ L2: mennor(); } -void sv_game(integer n); +void sv_game(int n); -void ld_game(integer n); +void ld_game(int n); void tecran() { const char idem[] = "Idem"; - const integer lim = 20000; - integer temps; + const int lim = 20000; + int temps; char inkey; boolean oo, funct; @@ -235,11 +235,11 @@ void tecran() { erase_menu(); imen = false; if (set::of('\1', '\3', '\5', '\7', '\11', eos).has(inkey)) { - change_gd((cardinal)pred(integer, ord(inkey)) >> 1); + change_gd((cardinal)pred(int, ord(inkey)) >> 1); return; } if (choisi && (msg[3] == sauve)) sv_game(msg[4] & 7); - if (choisi && (msg[3] == charge)) ld_game(pred(integer, msg[4] & 7)); + if (choisi && (msg[3] == charge)) ld_game(pred(int, msg[4] & 7)); if (inkey == '\103') { /* F9 */ temps = do_alert(stpou, 1); return; diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index 87d0c87cd1..6f7a05e0c7 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -1,23 +1,23 @@ /* overlay */ boolean ques() { - const array<1, 10, integer> ta + const array<1, 10, int> ta = {{ 511, 516, 524, 531, 545, 552, 559, 563, 570, 576 } }; - const array<1, 10, integer> ok + const array<1, 10, int> ok = {{ 4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }}; boolean q, func, test; - integer i, j, k, y, memk; - integer tay , tmax; - integer rep, prem, der; + int i, j, k, y, memk; + int tay , tmax; + int rep, prem, der; phrase st; char key; mult_rect coor; array<1, 14, str40> chaines; - integer compte; + int compte; boolean ques_result; @@ -53,7 +53,7 @@ memk = memk + 1; y = y + 8; } - for (j = 1; j <= succ(integer, der - prem); j ++) { + for (j = 1; j <= succ(int, der - prem); j ++) { { rectangle &with = coor[j]; diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp index 854fdd6359..bdb0a1b2fd 100644 --- a/engines/mortevielle/sprint.cpp +++ b/engines/mortevielle/sprint.cpp @@ -1,16 +1,16 @@ -void fill_box(integer x, integer y, integer dx) { - box(15, gd, pred(integer, x) << 3, pred(integer, y) << 3, pred(integer, x + dx) << 3, y << 3, 255); +void fill_box(int x, int y, int dx) { + box(15, gd, pred(int, x) << 3, pred(int, y) << 3, pred(int, x + dx) << 3, y << 3, 255); } -void clear_box(integer x, integer y, integer dx) { - box(0, gd, pred(integer, x) << 3, pred(integer, y) << 3, pred(integer, x + dx) << 3, y << 3, 255); +void clear_box(int x, int y, int dx) { + box(0, gd, pred(int, x) << 3, pred(int, y) << 3, pred(int, x + dx) << 3, y << 3, 255); } -void writeg(str255 l, integer c) +void writeg(str255 l, int c) { - integer i, x, xo, yo; - integer cecr; + int i, x, xo, yo; + int cecr; boolean t; /* debug('writeg : '+l);*/ diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 00203118d8..d1e447de71 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -1,5 +1,5 @@ -void chardes(str11 nom, long_integer passe, integer long_) { - integer i, p, l; +void chardes(str11 nom, long_int passe, int long_) { + int i, p, l; byte b; untyped_file f; @@ -28,8 +28,8 @@ void chardes(str11 nom, long_integer passe, integer long_) { /*$i+*/ } -void charani(str11 nom, long_integer passe, integer long_) { - integer i, p, l; +void charani(str11 nom, long_int passe, int long_) { + int i, p, l; byte b; untyped_file f; @@ -67,12 +67,12 @@ void taffich() { 110, 159, 100, 100 } }; - integer i, m, a, b, cx, handle, + int i, m, a, b, cx, handle, npal; - long_integer lgt, lhandle; + long_int lgt, lhandle; str11 nom; - integer palh, k, j; - array<0, 15, integer> alllum; + int palh, k, j; + array<0, 15, int> alllum; a = caff; @@ -144,7 +144,7 @@ void taffich() { chardes(nom, lgt, handle); if (gd == her) { for (i = 0; i <= 15; i ++) { - palh = memw[0x7000 + (succ(integer, i) << 1)]; + palh = memw[0x7000 + (succ(int, i) << 1)]; alllum[i] = (palh & 15) + (((cardinal)palh >> 12) & 15) + (((cardinal)palh >> 8) & 15); } for (i = 0; i <= 15; i ++) { diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index bdc6b59eb7..d0edc2e8c8 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -15,101 +15,101 @@ const real freq0 = 1.19318e6; -const integer seg_syst = 0x6fed; -const integer segmou = 0x6f00; -const integer segdon = 0x6c00; -const integer adani = 0x7314; -const integer adword = 0x4000; -const integer adtroct = 0x406b; -const integer adcfiec = 0x4300; -const integer adbruit = 0x5cb0;/*2C00;*/ -const integer adbruit1 = 0x6924;/*3874;*/ -const integer adbruit2 = 0x6b30;/*3A80;*/ -const integer adbruit3 = 0x6ba6;/*3AF6;*/ -const integer adbruit5 = 0x3b50; -const integer adson = 0x5cb0;/*2C00;*/ -const integer adson2 = 0x60b0;/*3000;*/ -const integer offsetb1 = 6; -const integer offsetb2 = 4; -const integer offsetb3 = 6; - -const integer null = 255; - -const integer tempo_mus = 71; -const integer tempo_bruit = 78; -const integer tempo_f = 80; -const integer tempo_m = 89; - -const integer ti1 = 410; -const integer ti2 = 250; -const integer maxti = 7975; -const integer maxtd = 600; -const integer max_rect = 14; - -const integer ams = 0; -const integer cga = 1; -const integer ega = 2; -const integer her = 3; -const integer tan = 4; - -const integer c_repon = 0; -const integer c_st41 = 186; -const integer c_tparler = 247; -const integer c_paroles = 292; -const integer c_tmlieu = 435; -const integer c_dialpre = 456; -const integer c_action = 476; -const integer c_saction = 497; -const integer c_dis = 502; -const integer c_fin = 510; /* => n'existe pas ; si !! */ - -const integer arega = 0; -const integer asoul = 154; -const integer aouvr = 282; -const integer achai = 387; -const integer acha = 492; -const integer arcf = 1272; -const integer arep = 1314; -const integer amzon = 1650; -const integer fleche = 1758; - -const integer no_choice = 0; -const integer invent = 1; -const integer depla = 2; -const integer action = 3; -const integer saction = 4; -const integer discut = 5; -const integer fichier = 6; -const integer sauve = 7; -const integer charge = 8; - -const integer attacher = 0x301; -const integer attendre = 0x302; -const integer defoncer = 0x303; -const integer dormir = 0x304; -const integer ecouter = 0x305; -const integer entrer = 0x306; -const integer fermer = 0x307; -const integer fouiller = 0x308; -const integer frapper = 0x309; -const integer gratter = 0x30a; -const integer lire = 0x30b; -const integer manger = 0x30c; -const integer mettre = 0x30d; -const integer ouvrir = 0x30e; -const integer prendre = 0x30f; -const integer regarder = 0x310; -const integer sentir = 0x311; -const integer sonder = 0x312; -const integer sortir = 0x313; -const integer soulever = 0x314; -const integer tourner = 0x315; - -const integer scacher = 0x401; -const integer sfouiller = 0x402; -const integer slire = 0x403; -const integer sposer = 0x404; -const integer sregarder = 0x405; +const int seg_syst = 0x6fed; +const int segmou = 0x6f00; +const int segdon = 0x6c00; +const int adani = 0x7314; +const int adword = 0x4000; +const int adtroct = 0x406b; +const int adcfiec = 0x4300; +const int adbruit = 0x5cb0;/*2C00;*/ +const int adbruit1 = 0x6924;/*3874;*/ +const int adbruit2 = 0x6b30;/*3A80;*/ +const int adbruit3 = 0x6ba6;/*3AF6;*/ +const int adbruit5 = 0x3b50; +const int adson = 0x5cb0;/*2C00;*/ +const int adson2 = 0x60b0;/*3000;*/ +const int offsetb1 = 6; +const int offsetb2 = 4; +const int offsetb3 = 6; + +const int null = 255; + +const int tempo_mus = 71; +const int tempo_bruit = 78; +const int tempo_f = 80; +const int tempo_m = 89; + +const int ti1 = 410; +const int ti2 = 250; +const int maxti = 7975; +const int maxtd = 600; +const int max_rect = 14; + +const int ams = 0; +const int cga = 1; +const int ega = 2; +const int her = 3; +const int tan = 4; + +const int c_repon = 0; +const int c_st41 = 186; +const int c_tparler = 247; +const int c_paroles = 292; +const int c_tmlieu = 435; +const int c_dialpre = 456; +const int c_action = 476; +const int c_saction = 497; +const int c_dis = 502; +const int c_fin = 510; /* => n'existe pas ; si !! */ + +const int arega = 0; +const int asoul = 154; +const int aouvr = 282; +const int achai = 387; +const int acha = 492; +const int arcf = 1272; +const int arep = 1314; +const int amzon = 1650; +const int fleche = 1758; + +const int no_choice = 0; +const int invent = 1; +const int depla = 2; +const int action = 3; +const int saction = 4; +const int discut = 5; +const int fichier = 6; +const int sauve = 7; +const int charge = 8; + +const int attacher = 0x301; +const int attendre = 0x302; +const int defoncer = 0x303; +const int dormir = 0x304; +const int ecouter = 0x305; +const int entrer = 0x306; +const int fermer = 0x307; +const int fouiller = 0x308; +const int frapper = 0x309; +const int gratter = 0x30a; +const int lire = 0x30b; +const int manger = 0x30c; +const int mettre = 0x30d; +const int ouvrir = 0x30e; +const int prendre = 0x30f; +const int regarder = 0x310; +const int sentir = 0x311; +const int sonder = 0x312; +const int sortir = 0x313; +const int soulever = 0x314; +const int tourner = 0x315; + +const int scacher = 0x401; +const int sfouiller = 0x402; +const int slire = 0x403; +const int sposer = 0x404; +const int sregarder = 0x405; const array<0, 17, byte> tabdbc = {{7, 23, 7, 14, 13, 9, 14, 9, 5, 12, 6, 12, 13, 4, 0, 4, 5, 9}}; @@ -165,7 +165,7 @@ const char recom[] = " Recommence "; const char f3[] = "F3: Encore"; const char f8[] = "F8: Suite"; -const integer max_patt = 20; +const int max_patt = 20; const array<0, 15, byte> rang @@ -177,29 +177,29 @@ const array<0, 15, byte> rang /*---------------------------------------------------------------------------*/ typedef varying_string<11> path_chars; -typedef real long_integer; +typedef real long_int; typedef varying_string<255> str255; typedef varying_string<125> str125; typedef varying_string<30> str30; typedef varying_string<11> str11; typedef file fichier_byte; struct sav_chaine { - integer conf; + int conf; array<0, 10, char> pourc; array<0, 42, char> teauto; array<0, 30, char> sjer; - integer mlieu, iboul, ibag, icave, ivier, ipuit; - integer derobj, iloic, icryp; + int mlieu, iboul, ibag, icave, ivier, ipuit; + int derobj, iloic, icryp; boolean ipre; char heure; }; struct registres { - integer ax, bx, cx, dx, bp, si, di, ds, es, flags; + int ax, bx, cx, dx, bp, si, di, ds, es, flags; }; typedef array<1, 1410, char> phrase; -typedef array<0, maxti, integer> tabint; +typedef array<0, maxti, int> tabint; struct ind { - integer indis; + int indis; byte point; }; typedef array<0, maxtd, ind> tabind; @@ -207,11 +207,11 @@ typedef array<0, maxtd, ind> tabind; typedef matrix<1, 7, 0, 24, byte> tab_mlieu; typedef array<0, 255, real> table; -typedef array<0, 255, integer> tablint; +typedef array<0, 255, int> tablint; -typedef integer word1; +typedef int word1; struct chariot { - integer val, + int val, code, acc, freq, @@ -222,9 +222,9 @@ struct doublet { byte x, y; }; typedef array<1, 16, doublet> tabdb; -typedef array<0, 107, integer> tfxx; +typedef array<0, 107, int> tfxx; struct rectangle { - integer x1, x2, y1, y2; + int x1, x2, y1, y2; boolean etat; }; @@ -294,7 +294,7 @@ boolean blo, active_menu; -integer x, +int x, y, t, vj, @@ -353,9 +353,9 @@ integer x, ptr_word, color_txt; -array<0, 6400, integer> t_cph; +array<0, 6400, int> t_cph; array<0, 4000, byte> tabdon; -/* t_dxx : array[0..121] of integer;*/ +/* t_dxx : array[0..121] of int;*/ str125 stpou; /* donne le % d'indices */ byte is; char mode; @@ -365,12 +365,12 @@ str125 al_mess, ind_mess, al_mess2; -array<1, 8, integer> invt, +array<1, 8, int> invt, nbrep, nbrepm, disc; -array<0, 4, integer> msg; -array<1, 7, integer> depl; +array<0, 4, int> msg; +array<1, 7, int> depl; array<1, 8, varying_string<22> > inv; array<1, 7, varying_string<23> > dep; array<1, 21, varying_string<10> > act; @@ -385,7 +385,7 @@ matrix<1, 6, 0, 23, byte> lettres; array<0, 15, byte> palher; tabint t_mot; -integer tay_tchar; +int tay_tchar; tabind t_rec; file sauv_t; untyped_file fibyte; @@ -405,14 +405,14 @@ array<0, 14, pattern> tpt; /*-------------------- PROCEDURES ET FONCTIONS ------------------------*/ /*---------------------------------------------------------------------------*/ -/* procedure box(c,Gd,xo,yo,xi,yi,patt:integer); external 'c:\mc\boite.com'; */ +/* procedure box(c,Gd,xo,yo,xi,yi,patt:int); external 'c:\mc\boite.com'; */ void hirs() { const array<0, 13, byte> tandy = {{113, 80, 90, 14, 63, 6, 50, 56, 2, 3, 6, 7, 0, 0}}; const array<0, 12, byte> herc = {{50, 40, 41, 9, 103, 3, 100, 100, 2, 3, 0, 0, 0}}; - integer i, j; + int i, j; switch (gd) { case cga : { @@ -470,13 +470,13 @@ void hirs() { } } -/* procedure affput(Chx,Gd,x,y,coul,char:integer); external 'c:\mc\divaf.com'; */ +/* procedure affput(Chx,Gd,x,y,coul,char:int); external 'c:\mc\divaf.com'; */ -void affcar(integer gd, integer x, integer y, integer coul, integer char) { +void affcar(int gd, int x, int y, int coul, int char) { if (res == 1) affput(1, gd, ((cardinal)x >> 1), y, coul, char); else affput(1, gd, x, y, coul, char); } -void putpix(integer gd, integer x, integer y, integer coul) { +void putpix(int gd, int x, int y, int coul) { affput(0, gd, x, y, coul, 0); } -- cgit v1.2.3 From 321b86339fcad0b18f1c709692420b63bc4497ee Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 26 Dec 2011 18:09:38 +0000 Subject: MORTEVIELLE: Register engine at engines.mk --- engines/engines.mk | 5 +++++ engines/mortevielle/module.mk | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/engines/engines.mk b/engines/engines.mk index 9939506b86..ec5845df76 100644 --- a/engines/engines.mk +++ b/engines/engines.mk @@ -125,6 +125,11 @@ DEFINES += -DENABLE_RIVEN endif endif +ifdef ENABLE_MORTEVIELLE +DEFINES += -DENABLE_MORTEVIELLE=$(ENABLE_MORTEVIELLE) +MODULES += engines/mortevielle +endif + ifdef ENABLE_PARALLACTION DEFINES += -DENABLE_PARALLACTION=$(ENABLE_PARALLACTION) MODULES += engines/parallaction diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 6569d7038c..3213d15b49 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -1,5 +1,5 @@ MODULE := engines/mortevielle - + MODULE_OBJS := \ actions.o \ alert.o \ @@ -22,11 +22,11 @@ MODULE_OBJS := \ sprint.o \ taffich.o \ var_mor.o - + # This module can be built as a plugin ifeq ($(ENABLE_MORTEVIELLE), DYNAMIC_PLUGIN) PLUGIN := 1 endif - + # Include common rules include $(srcdir)/rules.mk -- cgit v1.2.3 From b36a336203e0f18278d72ded1974a0ddf911b783 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 26 Dec 2011 18:18:34 +0000 Subject: MORTEVIELLE: real -> float --- engines/mortevielle/droite.cpp | 8 ++++---- engines/mortevielle/mor.cpp | 2 +- engines/mortevielle/ovd1.cpp | 6 +++--- engines/mortevielle/parole.cpp | 2 +- engines/mortevielle/parole2.cpp | 2 +- engines/mortevielle/var_mor.cpp | 14 +++++++------- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/engines/mortevielle/droite.cpp b/engines/mortevielle/droite.cpp index 0ad212dec1..20899ced8b 100644 --- a/engines/mortevielle/droite.cpp +++ b/engines/mortevielle/droite.cpp @@ -1,7 +1,7 @@ void droite(int x, int y, int xx, int yy, int coul) { int step, i; - real a, b; - real xr, yr, xro, yro; + float a, b; + float xr, yr, xro, yro; xr = x; yr = y; @@ -9,7 +9,7 @@ void droite(int x, int y, int xx, int yy, int coul) { yro = yy; /*writeln(le_file,'(',x:4,',',y:4,') ==> (',xx:4,',',yy:4,')');*/ if (abs(y - yy) > abs(x - xx)) { - a = (real)((x - xx)) / (y - yy); + a = (float)((x - xx)) / (y - yy); b = (yr * xro - yro * xr) / (y - yy); i = y; if (y > yy) step = -1; @@ -20,7 +20,7 @@ void droite(int x, int y, int xx, int yy, int coul) { } while (!(i == yy)); /*writeln(le_file,'X == ',a:3:3,' * Y + ',b:3:3);*/ } else { - a = (real)((y - yy)) / (x - xx); + a = (float)((y - yy)) / (x - xx); b = ((yro * xr) - (yr * xro)) / (x - xx); i = x; if (x > xx) step = -1; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index cee4e31b93..1ec2332edb 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -279,7 +279,7 @@ void paint_rect(int x, int y, int dx, int dy) { int hazard(int min, int max) { int ha1; - real ha2; + float ha2; /* debug('hazard'); */ int hazard_result; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index c2384273f2..8545fae233 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -171,7 +171,7 @@ void ani50() { { int cy, tay; phrase st; - real ix; + float ix; char ch; @@ -247,7 +247,7 @@ void ani50() { int k; boolean fin; char ch; - real x, y; + float x, y; /* debug('o3 music'); */ @@ -260,7 +260,7 @@ void ani50() { blockread(fic, mem[0x47a0 + 0], 123); close(fic); demus(0x3800, 0x5000, 623); - addfix = (real)((tempo_mus - addv[1])) / 256; + addfix = (float)((tempo_mus - addv[1])) / 256; cctable(tbi); fin = false; diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index 42a46e1209..03940f5235 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -68,7 +68,7 @@ void veracf(byte b) { /* overlay */ void cctable(tablint &t) { int k; - array<0, 256, real> tb; + array<0, 256, float> tb; tb[0] = 0; diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index 02ec4fb908..eec9798ada 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -66,7 +66,7 @@ void parole(int rep, int ht, int typ) { tempo = tempo_bruit; } else if (haut > 5) tempo = tempo_f; else tempo = tempo_m; - addfix = (real)((tempo - addv[0])) / 256; + addfix = (float)((tempo - addv[0])) / 256; cctable(tbi); switch (typ) { case 1 : { diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index d0edc2e8c8..ffd7dcb602 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -13,7 +13,7 @@ /*------------------------- CONSTANTES ----------------------------------*/ /*---------------------------------------------------------------------------*/ -const real freq0 = 1.19318e6; +const float freq0 = 1.19318e6; const int seg_syst = 0x6fed; const int segmou = 0x6f00; @@ -177,7 +177,7 @@ const array<0, 15, byte> rang /*---------------------------------------------------------------------------*/ typedef varying_string<11> path_chars; -typedef real long_int; +typedef float long_int; typedef varying_string<255> str255; typedef varying_string<125> str125; typedef varying_string<30> str30; @@ -206,7 +206,7 @@ typedef array<0, maxtd, ind> tabind; typedef matrix<1, 7, 0, 24, byte> tab_mlieu; -typedef array<0, 255, real> table; +typedef array<0, 255, float> table; typedef array<0, 255, int> tablint; typedef int word1; @@ -393,7 +393,7 @@ tab_mlieu v_lieu; tfxx l; tablint tbi; chariot c1, c2, c3; -real addfix; +float addfix; pal_cga palsav; array<0, 90, tabdb> tabpal; pal_cga palcga; @@ -424,7 +424,7 @@ void hirs() { break; case ams : { hires; - inline_((real)(0xb8) / 6 / 0 / /* => mov ax,6 */ + inline_((float)(0xb8) / 6 / 0 / /* => mov ax,6 */ 0xcd / 0x10); /* => int 16 */ port[0x3d9] = 15; port[0x3df] = 0; @@ -433,7 +433,7 @@ void hirs() { } break; case ega : { - inline_((real)(0xb8) / 14 / 0 / /* MOV AX, 14 ; mode video 14 = 640*200 16 couleurs */ + inline_((float)(0xb8) / 14 / 0 / /* MOV AX, 14 ; mode video 14 = 640*200 16 couleurs */ 0xcd / 0x10); /* INT 16 */ res = 2; } @@ -445,7 +445,7 @@ void hirs() { port[0x3b4] = i; port[0x3b5] = herc[i]; } - inline_((real)(0xfc) / 0xb9 / 0 / 0x80 / 0xb8 / 0 / 0xb0 / 0x8e / 0xc0 / 0x31 / 0xff / 0x31 / 0xc0 / 0xf3 / 0xab); + inline_((float)(0xfc) / 0xb9 / 0 / 0x80 / 0xb8 / 0 / 0xb0 / 0x8e / 0xc0 / 0x31 / 0xff / 0x31 / 0xc0 / 0xf3 / 0xab); port[0x3b8] = 10; res = 2; } -- cgit v1.2.3 From fa3738db3249e13d472c1e974aa89c8d61e98ed7 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 26 Dec 2011 18:35:14 +0000 Subject: MORTEVIELLE: Transformed some array to C arrays --- engines/mortevielle/var_mor.cpp | 42 ++++++++++++++--------------------------- 1 file changed, 14 insertions(+), 28 deletions(-) diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index ffd7dcb602..0fb4eb0225 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -111,16 +111,11 @@ const int slire = 0x403; const int sposer = 0x404; const int sregarder = 0x405; -const array<0, 17, byte> tabdbc -= {{7, 23, 7, 14, 13, 9, 14, 9, 5, 12, 6, 12, 13, 4, 0, 4, 5, 9}}; -const array<0, 15, byte> tabdph -= {{0, 10, 2, 0, 2, 10, 3, 0, 3, 7, 5, 0, 6, 7, 7, 10}}; -const array<0, 25, byte> typcon -= {{0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3}}; -const array<0, 25, byte> intcon -= {{1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}}; -const array<0, 363, byte> tnocon -= {{ +const byte tabdbc[18] = {7, 23, 7, 14, 13, 9, 14, 9, 5, 12, 6, 12, 13, 4, 0, 4, 5, 9}; +const byte tabdph[16] = {0, 10, 2, 0, 2, 10, 3, 0, 3, 7, 5, 0, 6, 7, 7, 10}; +const byte typcon[26] = {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3}; +const byte intcon[26] = {1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}; +const byte tnocon[364] = { 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -135,7 +130,6 @@ const array<0, 363, byte> tnocon 0, 0, 0, 0, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - } }; @@ -168,8 +162,7 @@ const char f8[] = "F8: Suite"; const int max_patt = 20; -const array<0, 15, byte> rang -= {{15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}}; +const byte rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; /*---------------------------------------------------------------------------*/ @@ -185,9 +178,9 @@ typedef varying_string<11> str11; typedef file fichier_byte; struct sav_chaine { int conf; - array<0, 10, char> pourc; - array<0, 42, char> teauto; - array<0, 30, char> sjer; + char pourc[11]; + char teauto[43]; + char sjer[31]; int mlieu, iboul, ibag, icave, ivier, ipuit; int derobj, iloic, icryp; boolean ipre; @@ -197,7 +190,6 @@ struct registres { int ax, bx, cx, dx, bp, si, di, ds, es, flags; }; typedef array<1, 1410, char> phrase; -typedef array<0, maxti, int> tabint; struct ind { int indis; byte point; @@ -206,9 +198,6 @@ typedef array<0, maxtd, ind> tabind; typedef matrix<1, 7, 0, 24, byte> tab_mlieu; -typedef array<0, 255, float> table; -typedef array<0, 255, int> tablint; - typedef int word1; struct chariot { int val, @@ -222,7 +211,6 @@ struct doublet { byte x, y; }; typedef array<1, 16, doublet> tabdb; -typedef array<0, 107, int> tfxx; struct rectangle { int x1, x2, y1, y2; boolean etat; @@ -384,14 +372,14 @@ matrix<1, 6, 0, 23, byte> lettres; array<0, 15, byte> palher; -tabint t_mot; +int t_mot[maxti + 1]; int tay_tchar; tabind t_rec; file sauv_t; untyped_file fibyte; tab_mlieu v_lieu; -tfxx l; -tablint tbi; +int l[108]; +int tbi[256]; chariot c1, c2, c3; float addfix; pal_cga palsav; @@ -408,10 +396,8 @@ array<0, 14, pattern> tpt; /* procedure box(c,Gd,xo,yo,xi,yi,patt:int); external 'c:\mc\boite.com'; */ void hirs() { - const array<0, 13, byte> tandy - = {{113, 80, 90, 14, 63, 6, 50, 56, 2, 3, 6, 7, 0, 0}}; - const array<0, 12, byte> herc - = {{50, 40, 41, 9, 103, 3, 100, 100, 2, 3, 0, 0, 0}}; + const byte tandy[14] = {113, 80, 90, 14, 63, 6, 50, 56, 2, 3, 6, 7, 0, 0}; + const byte herc[13] = {50, 40, 41, 9, 103, 3, 100, 100, 2, 3, 0, 0, 0}; int i, j; switch (gd) { -- cgit v1.2.3 From cc3573bc018f1ef339365ff940072949bffb6996 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 26 Dec 2011 18:38:38 +0000 Subject: MORTEVIELLE: str* -> Common::String --- engines/mortevielle/actions.cpp | 2 +- engines/mortevielle/alert.cpp | 12 ++++++------ engines/mortevielle/menu.cpp | 4 ++-- engines/mortevielle/mor.cpp | 14 +++++++------- engines/mortevielle/mor2.cpp | 4 ++-- engines/mortevielle/outtext.cpp | 2 +- engines/mortevielle/ques.cpp | 2 +- engines/mortevielle/sprint.cpp | 2 +- engines/mortevielle/taffich.cpp | 6 +++--- engines/mortevielle/var_mor.cpp | 10 ++-------- 10 files changed, 26 insertions(+), 32 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 83ad8d4f6b..bdb4827ee8 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -442,7 +442,7 @@ L2: int quel; boolean entre; phrase st; - str255 str_; + Common::String str_; int i, tay; if (s.derobj == 0) { diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index cec339e29a..f1c69efe64 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -1,4 +1,4 @@ -/* overlay */ int do_alert(str255 str_, int n); +/* overlay */ int do_alert(Common::String str_, int n); const int nligne = 7; @@ -10,7 +10,7 @@ const matrix<1, 2, 1, 3, int> coord -static void decod(str255 s, int &nbc, int &nbl, int &col, str255 &c, str30 &cs) { +static void decod(Common::String s, int &nbc, int &nbl, int &col, Common::String &c, Common::String &cs) { int i, k; boolean v; @@ -68,7 +68,7 @@ static void fait_boite(int lidep, int nli, int tx) { -static void fait_choix(str30 c, int &coldep, int &nbcase, array<1, 2, varying_string<3> > &s, int &esp) { +static void fait_choix(Common::String c, int &coldep, int &nbcase, array<1, 2, varying_string<3> > &s, int &esp) { int i, l, x; char ch; @@ -89,15 +89,15 @@ static void fait_choix(str30 c, int &coldep, int &nbcase, array<1, 2, varying_st } } -int do_alert(str255 str_, int n) { +int do_alert(Common::String str_, int n) { int coldep, esp, i, l, nbcase, quoi, ix; - str255 st, chaine; + Common::String st, chaine; matrix<1, 2, 1, 2, int> limit; char c, dumi; array<1, 2, varying_string<3> > s; int cx, cy, cd, nbcol, nblig; boolean touch, newaff, test, test1, test2, test3, dum; - str30 cas; + Common::String cas; /*debug('** do_alert **');*/ diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 9018414d28..cd72d7b87b 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -1,8 +1,8 @@ /* NIVEAU 14*/ -/* overlay */ void menut(int no, str30 nom) { +/* overlay */ void menut(int no, Common::String nom) { byte h, l; - str30 s; + Common::String s; /* debug('menut'); */ diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 1ec2332edb..f32ca9672e 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -174,7 +174,7 @@ void ecrf2() { /*boite(0,175,630,15,15);*/ } -void ecr2(str255 str_) { +void ecr2(Common::String str_) { int tab; int tlig; @@ -211,7 +211,7 @@ void clsf3() { show_mouse(); } -void ecr3(str255 text) { +void ecr3(Common::String text) { /* debug('ecr3 : '+text);*/ clsf3(); putxy(8, 192); @@ -324,7 +324,7 @@ void okpas() { void modobj(int m) { phrase str_; - str30 strp; + Common::String strp; int i, tay; /* debug('modobj'); */ @@ -339,7 +339,7 @@ void modobj(int m) { void modobj2(int m, boolean t1, boolean t2) { phrase str_; - str30 strp; + Common::String strp; int i, tay; /* debug('modobj'); */ @@ -356,7 +356,7 @@ void modobj2(int m, boolean t1, boolean t2) { void repon(int f, int m) { - str255 str_; + Common::String str_; varying_string<40> str1; phrase st; text1 fic; @@ -581,7 +581,7 @@ void person() { const char m2[] = "tes"; const char m3[] = "SEUL"; int cf; - str255 str_; + Common::String str_; /* debug('person'); */ for (cf = 1; cf <= 8; cf ++) menu_disable(disc[cf]); @@ -1184,7 +1184,7 @@ void phaz(int &haz, int &p, int cf) { person(); } -void writetp(str255 s, int t) { +void writetp(Common::String s, int t) { if (res == 2) writeg(s, t); else writeg(copy(s, 1, 25), t); } diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 48db49b6da..d4bb50b253 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -167,7 +167,7 @@ void tkey1(boolean d) { void tmlieu(int mli) { int cx, j, i, tail; - str30 nomp; + Common::String nomp; phrase st; @@ -312,7 +312,7 @@ void st1sama() { void modinv() { int cx, cy, tay, i, r; phrase nom; - str30 nomp; + Common::String nomp; cy = 0; for (cx = 1; cx <= 6; cx ++) diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index ec7728745d..7c504232aa 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -1,4 +1,4 @@ -str255 delig; +Common::String delig; const array<0, 31, byte> tabdr = {{ 32, 101, 115, 97, 114, 105, 110, diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index 6f7a05e0c7..b109340f96 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -16,7 +16,7 @@ phrase st; char key; mult_rect coor; - array<1, 14, str40> chaines; + array<1, 14, Common::String> chaines; int compte; diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp index bdb0a1b2fd..d0b1e7cf66 100644 --- a/engines/mortevielle/sprint.cpp +++ b/engines/mortevielle/sprint.cpp @@ -6,7 +6,7 @@ void clear_box(int x, int y, int dx) { box(0, gd, pred(int, x) << 3, pred(int, y) << 3, pred(int, x + dx) << 3, y << 3, 255); } -void writeg(str255 l, int c) +void writeg(Common::String l, int c) { int i, x, xo, yo; diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index d1e447de71..fad09df9f7 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -1,4 +1,4 @@ -void chardes(str11 nom, long_int passe, int long_) { +void chardes(Common::String nom, long_int passe, int long_) { int i, p, l; byte b; untyped_file f; @@ -28,7 +28,7 @@ void chardes(str11 nom, long_int passe, int long_) { /*$i+*/ } -void charani(str11 nom, long_int passe, int long_) { +void charani(Common::String nom, long_int passe, int long_) { int i, p, l; byte b; untyped_file f; @@ -70,7 +70,7 @@ void taffich() { int i, m, a, b, cx, handle, npal; long_int lgt, lhandle; - str11 nom; + Common::String nom; int palh, k, j; array<0, 15, int> alllum; diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 0fb4eb0225..fa897f515d 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -169,12 +169,7 @@ const byte rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; /*-------------------------------- TYPES --------------------------------*/ /*---------------------------------------------------------------------------*/ -typedef varying_string<11> path_chars; typedef float long_int; -typedef varying_string<255> str255; -typedef varying_string<125> str125; -typedef varying_string<30> str30; -typedef varying_string<11> str11; typedef file fichier_byte; struct sav_chaine { int conf; @@ -217,7 +212,6 @@ struct rectangle { }; typedef array<1, max_rect, rectangle> mult_rect; -typedef varying_string<40> str40; struct pattern { byte tay, tax; @@ -344,11 +338,11 @@ int x, array<0, 6400, int> t_cph; array<0, 4000, byte> tabdon; /* t_dxx : array[0..121] of int;*/ -str125 stpou; /* donne le % d'indices */ +Common::String stpou; /* donne le % d'indices */ byte is; char mode; fichier_byte ficdes; -str125 al_mess, +Common::String al_mess, err_mess, ind_mess, al_mess2; -- cgit v1.2.3 From 4edebbe11174e9cd82c9d4495aece84b65f0adcf Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 26 Dec 2011 18:50:43 +0000 Subject: MORTEVIELLE: Converted more arrays into C style arrays --- engines/mortevielle/actions.cpp | 6 ++--- engines/mortevielle/outtext.cpp | 51 ++++++++++++++++++----------------------- engines/mortevielle/parole.cpp | 41 +-------------------------------- engines/mortevielle/parole2.cpp | 5 ++-- engines/mortevielle/prog.cpp | 8 +++---- engines/mortevielle/taffich.cpp | 2 +- engines/mortevielle/var_mor.cpp | 28 +++++++++------------- 7 files changed, 43 insertions(+), 98 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index bdb4827ee8..712a1148f7 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -2,9 +2,7 @@ const char stouinon[] = "[2][ ][OUI][NON]"; /* overlay */ -void taller() - -{ +void taller() { int mx, cx, cy; if ((s.mlieu == 26) && (msg[4] == depl[6])) { @@ -314,7 +312,7 @@ L2: } /* overlay */ void tfouiller() { - const array<0, 13, byte> r = {{123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}}; + const byte[14] r = {123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}; int cx; if (caff > 99) { diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 7c504232aa..4975185c37 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -1,45 +1,38 @@ Common::String delig; -const array<0, 31, byte> tabdr -= {{ - 32, 101, 115, 97, 114, 105, 110, - 117, 116, 111, 108, 13, 100, 99, - 112, 109, 46, 118, 130, 39, 102, - 98, 44, 113, 104, 103, 33, 76, - 85, 106, 30, 31 - } +const byte tabdr[32] = { + 32, 101, 115, 97, 114, 105, 110, + 117, 116, 111, 108, 13, 100, 99, + 112, 109, 46, 118, 130, 39, 102, + 98, 44, 113, 104, 103, 33, 76, + 85, 106, 30, 31 }; -const array<0, 31, byte> tab30 -= {{ - 69, 67, 74, 138, 133, 120, 77, 122, - 121, 68, 65, 63, 73, 80, 83, 82, - 156, 45, 58, 79, 49, 86, 78, 84, - 71, 81, 64, 66, 135, 34, 136, 91 - } +const byte tab30[32] = { + 69, 67, 74, 138, 133, 120, 77, 122, + 121, 68, 65, 63, 73, 80, 83, 82, + 156, 45, 58, 79, 49, 86, 78, 84, + 71, 81, 64, 66, 135, 34, 136, 91 }; -const array<0, 31, byte> tab31 -= {{ - 93, 47, 48, 53, 50, 70, 124, 75, - 72, 147, 140, 150, 151, 57, 56, 51, - 107, 139, 55, 89, 131, 37, 54, 88, - 119, 0, 0, 0, 0, 0, 0, 0 - } +const byte tab31[32]= { + 93, 47, 48, 53, 50, 70, 124, 75, + 72, 147, 140, 150, 151, 57, 56, 51, + 107, 139, 55, 89, 131, 37, 54, 88, + 119, 0, 0, 0, 0, 0, 0, 0 }; void deline(int num , phrase &l , int &tl); static void cinq_huit(char &c, int &ind, byte &pt, boolean &the_end) { - const array<0, 31, char> rap - = {{ ',', ':', '@', '!', '?', '-', '‡', - ' ', '…', '', '‚', 'Š', '', '/', - '‹', 'Ś', '˘', '\47', '“', '"', '—', - '–', '0', '1', '2', '3', '4', '5', - '6', '7', '8', '9' - } + const unsigned char rap[32] = { + ',', ':', '@', '!', '?', '-', '\207', + '\240', '\205', '\203', '\202', '\212', '\210', '/', + '\213', '\214', '\242', '\047', '\223', '"', '\227', + '\226', '0', '1', '2', '3', '4', '5', + '6', '7', '8', '9' }; int oct, ocd; diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index 03940f5235..082b53ec7b 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -68,7 +68,7 @@ void veracf(byte b) { /* overlay */ void cctable(tablint &t) { int k; - array<0, 256, float> tb; + float tb[257]; tb[0] = 0; @@ -383,42 +383,3 @@ void veracf(byte b) { break; } /* case c2.code */ } - -/*overlay function testprot : boolean; -var - regs : registres; - buffer : array[0..511] of char; - i,j,k : int; - st : phrase; - tay : int; - 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; -*/ - diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index eec9798ada..1b894ff6e6 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -19,8 +19,7 @@ void init_chariot() { void trait_ph() { - const array<0, 2, int> deca - = {{300, 30, 40}}; + const int deca[3] = {300, 30, 40}; ptr_tcph = pred(int, num_ph); ledeb = swap(t_cph[ptr_tcph]) + deca[typlec]; @@ -52,7 +51,7 @@ void trait_ph() { void parole(int rep, int ht, int typ) { - array<0, 500, int> savph; + int savph[501]; int i; int tempo; diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 62dc99f479..fd909a3164 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -22,10 +22,10 @@ /* overlay */ void antegame() { int cx; registres regs; - array<0, 511, char> buffer; + char buffer[512]; int i, j, k; - array<0, 2, boolean> test; - array<0, 7, char> g; + boolean test[3]; + char g[8]; hide_mouse(); @@ -36,7 +36,7 @@ okdes = true; test[0] = false; test[1] = false; - g[0] = '\40'; + g[0] = '\040'; col = false; tesok = true; test[2] = false; diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index fad09df9f7..058af875d7 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -72,7 +72,7 @@ void taffich() { long_int lgt, lhandle; Common::String nom; int palh, k, j; - array<0, 15, int> alllum; + int alllum[16]; a = caff; diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index fa897f515d..e245781736 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -151,8 +151,7 @@ const array<1, 2, varying_string<11> > fic } }; -const array<0, 1, byte> addv -= {{8, 8}}; +const byte addv[2] = {8, 8}; const char recom[] = " Recommence "; @@ -221,19 +220,14 @@ struct pattern { struct nhom { byte n; /* numero entre 0 et 32 */ - array<0, 3, byte> hom; + byte hom[4]; }; -typedef array<0, 15, nhom> t_nhom; - struct t_pcga { byte p; - t_nhom a; + nhom a[16]; }; -typedef array<0, 90, t_pcga> pal_cga; - - /*---------------------------------------------------------------------------*/ /*------------------------------ VARIABLES ------------------------------*/ /*---------------------------------------------------------------------------*/ @@ -335,8 +329,8 @@ int x, ptr_word, color_txt; -array<0, 6400, int> t_cph; -array<0, 4000, byte> tabdon; +int t_cph[6401]; +byte tabdon[4001]; /* t_dxx : array[0..121] of int;*/ Common::String stpou; /* donne le % d'indices */ byte is; @@ -351,7 +345,7 @@ array<1, 8, int> invt, nbrep, nbrepm, disc; -array<0, 4, int> msg; +int msg[5]; array<1, 7, int> depl; array<1, 8, varying_string<22> > inv; array<1, 7, varying_string<23> > dep; @@ -360,11 +354,11 @@ array<1, 5, varying_string<11> > self_; array<1, 8, varying_string<5> > dis; array<1, 7, char> touv; sav_chaine s, s1; -array<0, 390, byte> bufcha; +byte bufcha[391]; matrix<1, 6, 0, 23, byte> lettres; -array<0, 15, byte> palher; +byte palher[16]; int t_mot[maxti + 1]; int tay_tchar; @@ -376,10 +370,10 @@ int l[108]; int tbi[256]; chariot c1, c2, c3; float addfix; -pal_cga palsav; +t_pcga palsav[91]; array<0, 90, tabdb> tabpal; -pal_cga palcga; -array<0, 14, pattern> tpt; +t_pcga palcga[91]; +pattern tpt[15]; -- cgit v1.2.3 From 1c441062a05c9ff256100179a746a84baa153c88 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 26 Dec 2011 21:30:46 +0100 Subject: MORTEVIELLE: Add namespace and standard header --- engines/mortevielle/actions.cpp | 31 +++++++++++++++++++++++++++++++ engines/mortevielle/alert.cpp | 31 +++++++++++++++++++++++++++++++ engines/mortevielle/boite.cpp | 31 +++++++++++++++++++++++++++++++ engines/mortevielle/disk.cpp | 32 +++++++++++++++++++++++++++++--- engines/mortevielle/droite.cpp | 31 +++++++++++++++++++++++++++++++ engines/mortevielle/keyboard.cpp | 30 ++++++++++++++++++++++++++++++ engines/mortevielle/level15.cpp | 30 ++++++++++++++++++++++++++++++ engines/mortevielle/menu.cpp | 30 ++++++++++++++++++++++++++++++ engines/mortevielle/mor.cpp | 32 ++++++++++++++++++++++++++++++-- engines/mortevielle/mor2.cpp | 31 +++++++++++++++++++++++++++++++ engines/mortevielle/mort.cpp | 30 +++++++++++++++++++++++++++++- engines/mortevielle/mouse.cpp | 31 +++++++++++++++++++++++++++++++ engines/mortevielle/outtext.cpp | 31 +++++++++++++++++++++++++++++++ engines/mortevielle/ovd1.cpp | 31 +++++++++++++++++++++++++++++++ engines/mortevielle/parole.cpp | 30 ++++++++++++++++++++++++++++++ engines/mortevielle/parole2.cpp | 32 ++++++++++++++++++++++++++++++-- engines/mortevielle/prog.cpp | 30 ++++++++++++++++++++++++++++++ engines/mortevielle/ques.cpp | 30 ++++++++++++++++++++++++++++++ engines/mortevielle/sprint.cpp | 31 +++++++++++++++++++++++++++++++ engines/mortevielle/taffich.cpp | 31 +++++++++++++++++++++++++++++++ engines/mortevielle/var_mor.cpp | 30 ++++++++++++++++++++++++++++++ 21 files changed, 638 insertions(+), 8 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 712a1148f7..e03a7a1627 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -1,3 +1,32 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { + /* NIVEAU 4 */ const char stouinon[] = "[2][ ][OUI][NON]"; @@ -1189,3 +1218,5 @@ L2: quel = do_alert(stouinon, 1); arret = (quel != 1); } + +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index f1c69efe64..8372c2f9e3 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -1,3 +1,32 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { + /* overlay */ int do_alert(Common::String str_, int n); @@ -195,3 +224,5 @@ int do_alert(Common::String str_, int n) { do_alert_result = quoi; return do_alert_result; } + +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/boite.cpp b/engines/mortevielle/boite.cpp index d1ebe4da38..20deae4950 100644 --- a/engines/mortevielle/boite.cpp +++ b/engines/mortevielle/boite.cpp @@ -1,3 +1,32 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { + void boite(int x, int y, int dx, int dy, int coul) { int i; int xi, yi, xo, yo; @@ -27,3 +56,5 @@ void boite(int x, int y, int dx, int dy, int coul) { } show_mouse(); } + +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/disk.cpp b/engines/mortevielle/disk.cpp index 0e458a5033..e81e905d25 100644 --- a/engines/mortevielle/disk.cpp +++ b/engines/mortevielle/disk.cpp @@ -1,3 +1,31 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { void dem1() { untyped_file f; @@ -69,6 +97,4 @@ void sv_game(int n) { show_mouse(); } - - - +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/droite.cpp b/engines/mortevielle/droite.cpp index 20899ced8b..fcdfaeddfe 100644 --- a/engines/mortevielle/droite.cpp +++ b/engines/mortevielle/droite.cpp @@ -1,3 +1,32 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { + void droite(int x, int y, int xx, int yy, int coul) { int step, i; float a, b; @@ -32,3 +61,5 @@ void droite(int x, int y, int xx, int yy, int coul) { /*writeln(le_file,'Y == ',a:3:3,' * X + ',b:3:3);*/ } } + +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index 199d43862f..f1d514bc68 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -1,3 +1,32 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { + char readkey1() { char c; @@ -58,3 +87,4 @@ void teskbd() { if (keypressed()) dum = testou(); } +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 35de7f439f..ce41c37f5c 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -1,3 +1,31 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { /* NIVEAU 15 */ void copcha() { @@ -173,3 +201,5 @@ begin Tan : afftan(offs,dep,x,y); end; end;*/ + +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index cd72d7b87b..655e635d6f 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -1,3 +1,32 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { + /* NIVEAU 14*/ /* overlay */ void menut(int no, Common::String nom) { @@ -332,3 +361,4 @@ void mdn() { } } +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index f32ca9672e..4129b24233 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -1,3 +1,32 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { + /* Niveau 14 suite */ const char m1[] = "quelqu'un entre, parait ‚tonn‚ mais ne dit rien"; @@ -1307,5 +1336,4 @@ void dessin(int ad) { } } - - +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index d4bb50b253..cff21a5c10 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -1,3 +1,32 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { + const array<1, 11, int> men = {{ scacher, attacher, defoncer, dormir, @@ -726,3 +755,5 @@ void aldepl() { dummy = do_alert("[1][Alors, utilisez le menu DEP...][ok]", 1); } + +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/mort.cpp b/engines/mortevielle/mort.cpp index c9e1d25d7e..5ed621f6b8 100644 --- a/engines/mortevielle/mort.cpp +++ b/engines/mortevielle/mort.cpp @@ -1,6 +1,33 @@ -#include "ptoc.h" +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#include "ptoc.h" +namespace MORTEVIELLE { /*$v-*/ /*$k-*/ @@ -121,3 +148,4 @@ int main(int argc, const char *argv[]) { return EXIT_SUCCESS; } +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 9ce1788b2c..a2102b6146 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -1,3 +1,32 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { + const int m_arrow = 0; const int m_point_hand = 1; @@ -457,3 +486,5 @@ void mov_mouse(boolean &funct, char &key) { p_key = keypressed(); } } + +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 4975185c37..b2ef115704 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -1,3 +1,32 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { + Common::String delig; const byte tabdr[32] = { 32, 101, 115, 97, 114, 105, 110, @@ -197,3 +226,5 @@ void afftex(phrase ch, int x, int y, int dx, int dy, int typ) { } /* case */ } } + +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 8545fae233..f8c7bafb9c 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -1,3 +1,32 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { + void dem2() { untyped_file f; int k; @@ -335,3 +364,5 @@ void ani50() { writeg(cpr, 0); } } + +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index 082b53ec7b..63ede52cb2 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -1,3 +1,31 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { void spfrac(int wor) { c3.rep = (cardinal)wor >> 12; @@ -383,3 +411,5 @@ void veracf(byte b) { break; } /* case c2.code */ } + +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index 1b894ff6e6..c7516d17aa 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -1,3 +1,32 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { + void rot_chariot() { c1 = c2; c2 = c3; @@ -90,5 +119,4 @@ void parole(int rep, int ht, int typ) { writepal(numpal); } - - +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index fd909a3164..b08be5cd3d 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -1,3 +1,32 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { + /* overlay */ void change_gd(int ngd) { int i; @@ -317,3 +346,4 @@ void tjouer() { else if (perdu) tencore(); } +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index b109340f96..40a6e87c57 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -1,3 +1,31 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { /* overlay */ boolean ques() { const array<1, 10, int> ta @@ -111,3 +139,5 @@ ques_result = (compte == 10) && q; return ques_result; } + +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp index d0b1e7cf66..2723d913ea 100644 --- a/engines/mortevielle/sprint.cpp +++ b/engines/mortevielle/sprint.cpp @@ -1,3 +1,32 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { + void fill_box(int x, int y, int dx) { box(15, gd, pred(int, x) << 3, pred(int, y) << 3, pred(int, x + dx) << 3, y << 3, 255); } @@ -52,3 +81,5 @@ void writeg(Common::String l, int c) } show_mouse(); } + +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 058af875d7..8e4562e499 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -1,3 +1,32 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { + void chardes(Common::String nom, long_int passe, int long_) { int i, p, l; byte b; @@ -194,3 +223,5 @@ void taffich() { Alllum[k]:=-1; end; end;*/ + +} // End of namespace MORTEVIELLE diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index e245781736..027dfb2d68 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -1,3 +1,31 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +namespace MORTEVIELLE { /* Constantes, Types et Variables pour le @@ -454,3 +482,5 @@ void affcar(int gd, int x, int y, int coul, int char) { void putpix(int gd, int x, int y, int coul) { affput(0, gd, x, y, coul, 0); } + +} // End of namespace MORTEVIELLE -- cgit v1.2.3 From 674e35d14ad27c5f6b9043a2d2256181b4e98f46 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 26 Dec 2011 21:42:55 +0100 Subject: MORTEVIELLE: Add an an include for string, move boolean to bool --- engines/mortevielle/alert.cpp | 4 +++- engines/mortevielle/menu.cpp | 2 ++ engines/mortevielle/mor.cpp | 2 ++ engines/mortevielle/mor2.cpp | 2 +- engines/mortevielle/outtext.cpp | 2 +- engines/mortevielle/prog.cpp | 2 +- engines/mortevielle/ques.cpp | 2 ++ engines/mortevielle/sprint.cpp | 4 +++- engines/mortevielle/taffich.cpp | 2 ++ engines/mortevielle/var_mor.cpp | 2 ++ 10 files changed, 19 insertions(+), 5 deletions(-) diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index 8372c2f9e3..43ea6c09fb 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/str.h" + namespace MORTEVIELLE { /* overlay */ int do_alert(Common::String str_, int n); @@ -41,7 +43,7 @@ const matrix<1, 2, 1, 3, int> coord static void decod(Common::String s, int &nbc, int &nbl, int &col, Common::String &c, Common::String &cs) { int i, k; - boolean v; + bool v; val(s[2], nbc, i); c = ""; diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 655e635d6f..54d8804d63 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/str.h" + namespace MORTEVIELLE { /* NIVEAU 14*/ diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 4129b24233..ba99ffc16c 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/str.h" + namespace MORTEVIELLE { /* Niveau 14 suite */ diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index cff21a5c10..bc14b61f27 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -45,7 +45,7 @@ void tinke() { const char d6[] = "OK"; int cx, cy, haz, nh, cf, j, h, m, cd; varying_string<3> stpo; - boolean am; + bool am; anyone = false; calch(j, h, m); diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index b2ef115704..ec7fabd3da 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -114,7 +114,7 @@ void deline(int num , phrase &l , int &tl) { int i, j, ts; char let; byte ps, k; - boolean the_end; + bool the_end; /* DETEX */ /*debug(' => DeLine');*/ diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index b08be5cd3d..baf5883d81 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -53,7 +53,7 @@ namespace MORTEVIELLE { registres regs; char buffer[512]; int i, j, k; - boolean test[3]; + bool test[3]; char g[8]; diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index 40a6e87c57..86567f5209 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/str.h" + namespace MORTEVIELLE { /* overlay */ boolean ques() { diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp index 2723d913ea..03e6040b59 100644 --- a/engines/mortevielle/sprint.cpp +++ b/engines/mortevielle/sprint.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/str.h" + namespace MORTEVIELLE { void fill_box(int x, int y, int dx) { @@ -40,7 +42,7 @@ void writeg(Common::String l, int c) { int i, x, xo, yo; int cecr; - boolean t; + bool t; /* debug('writeg : '+l);*/ diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 8e4562e499..d6fcdfd470 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/str.h" + namespace MORTEVIELLE { void chardes(Common::String nom, long_int passe, int long_) { diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 027dfb2d68..b4c17e651a 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/str.h" + namespace MORTEVIELLE { /* Constantes, Types et Variables pour le -- cgit v1.2.3 From 7571d4e1868dc0cb867b9fe2d7f10a386b0820fe Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 26 Dec 2011 22:08:18 +0100 Subject: MORTEVIELLE: rename namespace --- engines/mortevielle/actions.cpp | 4 ++-- engines/mortevielle/alert.cpp | 4 ++-- engines/mortevielle/boite.cpp | 4 ++-- engines/mortevielle/disk.cpp | 4 ++-- engines/mortevielle/droite.cpp | 4 ++-- engines/mortevielle/keyboard.cpp | 4 ++-- engines/mortevielle/level15.cpp | 4 ++-- engines/mortevielle/menu.cpp | 4 ++-- engines/mortevielle/mor.cpp | 4 ++-- engines/mortevielle/mor2.cpp | 4 ++-- engines/mortevielle/mort.cpp | 4 ++-- engines/mortevielle/mouse.cpp | 4 ++-- engines/mortevielle/outtext.cpp | 4 ++-- engines/mortevielle/ovd1.cpp | 4 ++-- engines/mortevielle/parole.cpp | 4 ++-- engines/mortevielle/parole2.cpp | 4 ++-- engines/mortevielle/prog.cpp | 4 ++-- engines/mortevielle/ques.cpp | 4 ++-- engines/mortevielle/sprint.cpp | 4 ++-- engines/mortevielle/taffich.cpp | 4 ++-- engines/mortevielle/var_mor.cpp | 4 ++-- 21 files changed, 42 insertions(+), 42 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index e03a7a1627..6ad0cc0401 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -25,7 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ -namespace MORTEVIELLE { +namespace Mortevielle { /* NIVEAU 4 */ const char stouinon[] = "[2][ ][OUI][NON]"; @@ -1219,4 +1219,4 @@ L2: arret = (quel != 1); } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index 43ea6c09fb..345867ff0d 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -27,7 +27,7 @@ #include "common/str.h" -namespace MORTEVIELLE { +namespace Mortevielle { /* overlay */ int do_alert(Common::String str_, int n); @@ -227,4 +227,4 @@ int do_alert(Common::String str_, int n) { return do_alert_result; } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/boite.cpp b/engines/mortevielle/boite.cpp index 20deae4950..cc3230db4f 100644 --- a/engines/mortevielle/boite.cpp +++ b/engines/mortevielle/boite.cpp @@ -25,7 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ -namespace MORTEVIELLE { +namespace Mortevielle { void boite(int x, int y, int dx, int dy, int coul) { int i; @@ -57,4 +57,4 @@ void boite(int x, int y, int dx, int dy, int coul) { show_mouse(); } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/disk.cpp b/engines/mortevielle/disk.cpp index e81e905d25..a88f63a1ce 100644 --- a/engines/mortevielle/disk.cpp +++ b/engines/mortevielle/disk.cpp @@ -25,7 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ -namespace MORTEVIELLE { +namespace Mortevielle { void dem1() { untyped_file f; @@ -97,4 +97,4 @@ void sv_game(int n) { show_mouse(); } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/droite.cpp b/engines/mortevielle/droite.cpp index fcdfaeddfe..312ed69c1a 100644 --- a/engines/mortevielle/droite.cpp +++ b/engines/mortevielle/droite.cpp @@ -25,7 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ -namespace MORTEVIELLE { +namespace Mortevielle { void droite(int x, int y, int xx, int yy, int coul) { int step, i; @@ -62,4 +62,4 @@ void droite(int x, int y, int xx, int yy, int coul) { } } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index f1d514bc68..20fb38c870 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -25,7 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ -namespace MORTEVIELLE { +namespace Mortevielle { char readkey1() { char c; @@ -87,4 +87,4 @@ void teskbd() { if (keypressed()) dum = testou(); } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index ce41c37f5c..2da371b3c7 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -25,7 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ -namespace MORTEVIELLE { +namespace Mortevielle { /* NIVEAU 15 */ void copcha() { @@ -202,4 +202,4 @@ begin end; end;*/ -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 54d8804d63..97b0cfcb71 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -27,7 +27,7 @@ #include "common/str.h" -namespace MORTEVIELLE { +namespace Mortevielle { /* NIVEAU 14*/ @@ -363,4 +363,4 @@ void mdn() { } } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index ba99ffc16c..a0aad53cf1 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -27,7 +27,7 @@ #include "common/str.h" -namespace MORTEVIELLE { +namespace Mortevielle { /* Niveau 14 suite */ const char m1[] = "quelqu'un entre, parait ‚tonn‚ mais ne dit rien"; @@ -1338,4 +1338,4 @@ void dessin(int ad) { } } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index bc14b61f27..94fcfde07e 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -25,7 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ -namespace MORTEVIELLE { +namespace Mortevielle { const array<1, 11, int> men = {{ @@ -756,4 +756,4 @@ void aldepl() { dummy = do_alert("[1][Alors, utilisez le menu DEP...][ok]", 1); } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/mort.cpp b/engines/mortevielle/mort.cpp index 5ed621f6b8..928804b46e 100644 --- a/engines/mortevielle/mort.cpp +++ b/engines/mortevielle/mort.cpp @@ -27,7 +27,7 @@ #include "ptoc.h" -namespace MORTEVIELLE { +namespace Mortevielle { /*$v-*/ /*$k-*/ @@ -148,4 +148,4 @@ int main(int argc, const char *argv[]) { return EXIT_SUCCESS; } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index a2102b6146..6f4eaa2f4b 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -25,7 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ -namespace MORTEVIELLE { +namespace Mortevielle { const int m_arrow = 0; const int m_point_hand = 1; @@ -487,4 +487,4 @@ void mov_mouse(boolean &funct, char &key) { } } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index ec7fabd3da..047421941f 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -25,7 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ -namespace MORTEVIELLE { +namespace Mortevielle { Common::String delig; const byte tabdr[32] = { @@ -227,4 +227,4 @@ void afftex(phrase ch, int x, int y, int dx, int dy, int typ) { } } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index f8c7bafb9c..608b429848 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -25,7 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ -namespace MORTEVIELLE { +namespace Mortevielle { void dem2() { untyped_file f; @@ -365,4 +365,4 @@ void ani50() { } } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index 63ede52cb2..bfa36b06f3 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -25,7 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ -namespace MORTEVIELLE { +namespace Mortevielle { void spfrac(int wor) { c3.rep = (cardinal)wor >> 12; @@ -412,4 +412,4 @@ void veracf(byte b) { } /* case c2.code */ } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index c7516d17aa..90e9495477 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -25,7 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ -namespace MORTEVIELLE { +namespace Mortevielle { void rot_chariot() { c1 = c2; @@ -119,4 +119,4 @@ void parole(int rep, int ht, int typ) { writepal(numpal); } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index baf5883d81..43448691f3 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -25,7 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ -namespace MORTEVIELLE { +namespace Mortevielle { /* overlay */ void change_gd(int ngd) { int i; @@ -346,4 +346,4 @@ void tjouer() { else if (perdu) tencore(); } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index 86567f5209..583221c252 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -27,7 +27,7 @@ #include "common/str.h" -namespace MORTEVIELLE { +namespace Mortevielle { /* overlay */ boolean ques() { const array<1, 10, int> ta @@ -142,4 +142,4 @@ namespace MORTEVIELLE { return ques_result; } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp index 03e6040b59..a72ef12c16 100644 --- a/engines/mortevielle/sprint.cpp +++ b/engines/mortevielle/sprint.cpp @@ -27,7 +27,7 @@ #include "common/str.h" -namespace MORTEVIELLE { +namespace Mortevielle { void fill_box(int x, int y, int dx) { box(15, gd, pred(int, x) << 3, pred(int, y) << 3, pred(int, x + dx) << 3, y << 3, 255); @@ -84,4 +84,4 @@ void writeg(Common::String l, int c) show_mouse(); } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index d6fcdfd470..eab78c8f4c 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -27,7 +27,7 @@ #include "common/str.h" -namespace MORTEVIELLE { +namespace Mortevielle { void chardes(Common::String nom, long_int passe, int long_) { int i, p, l; @@ -226,4 +226,4 @@ void taffich() { end; end;*/ -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index b4c17e651a..25a8c59acc 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -27,7 +27,7 @@ #include "common/str.h" -namespace MORTEVIELLE { +namespace Mortevielle { /* Constantes, Types et Variables pour le @@ -485,4 +485,4 @@ void putpix(int gd, int x, int y, int coul) { affput(0, gd, x, y, coul, 0); } -} // End of namespace MORTEVIELLE +} // End of namespace Mortevielle -- cgit v1.2.3 From 911d136f9f5fb8d4b7eb1fa5d125a48e4af84e39 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 26 Dec 2011 23:36:52 +0100 Subject: MORTEVIELLE: Add header files --- engines/mortevielle/actions.h | 68 ++++++++++++++++++++++ engines/mortevielle/alert.h | 41 ++++++++++++++ engines/mortevielle/boite.h | 36 ++++++++++++ engines/mortevielle/disk.h | 39 +++++++++++++ engines/mortevielle/droite.h | 36 ++++++++++++ engines/mortevielle/keyboard.h | 38 +++++++++++++ engines/mortevielle/level15.h | 52 +++++++++++++++++ engines/mortevielle/menu.h | 47 ++++++++++++++++ engines/mortevielle/mor.h | 125 +++++++++++++++++++++++++++++++++++++++++ engines/mortevielle/mor2.h | 81 ++++++++++++++++++++++++++ engines/mortevielle/mort.h | 38 +++++++++++++ engines/mortevielle/mouse.h | 43 ++++++++++++++ engines/mortevielle/outtext.h | 39 +++++++++++++ engines/mortevielle/ovd1.h | 49 ++++++++++++++++ engines/mortevielle/parole.h | 45 +++++++++++++++ engines/mortevielle/parole2.h | 40 +++++++++++++ engines/mortevielle/prog.h | 47 ++++++++++++++++ engines/mortevielle/ques.h | 38 +++++++++++++ engines/mortevielle/sprint.h | 39 +++++++++++++ engines/mortevielle/taffich.h | 40 +++++++++++++ engines/mortevielle/var_mor.h | 43 ++++++++++++++ 21 files changed, 1024 insertions(+) create mode 100644 engines/mortevielle/actions.h create mode 100644 engines/mortevielle/alert.h create mode 100644 engines/mortevielle/boite.h create mode 100644 engines/mortevielle/disk.h create mode 100644 engines/mortevielle/droite.h create mode 100644 engines/mortevielle/keyboard.h create mode 100644 engines/mortevielle/level15.h create mode 100644 engines/mortevielle/menu.h create mode 100644 engines/mortevielle/mor.h create mode 100644 engines/mortevielle/mor2.h create mode 100644 engines/mortevielle/mort.h create mode 100644 engines/mortevielle/mouse.h create mode 100644 engines/mortevielle/outtext.h create mode 100644 engines/mortevielle/ovd1.h create mode 100644 engines/mortevielle/parole.h create mode 100644 engines/mortevielle/parole2.h create mode 100644 engines/mortevielle/prog.h create mode 100644 engines/mortevielle/ques.h create mode 100644 engines/mortevielle/sprint.h create mode 100644 engines/mortevielle/taffich.h create mode 100644 engines/mortevielle/var_mor.h diff --git a/engines/mortevielle/actions.h b/engines/mortevielle/actions.h new file mode 100644 index 0000000000..690de1d80e --- /dev/null +++ b/engines/mortevielle/actions.h @@ -0,0 +1,68 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_ACTIONS_H +#define MORTEVIELLE_ACTIONS_H + +namespace Mortevielle { + +/* NIVEAU 4 */ +void taller(); +void tprendre(); +void tsprendre(); +void tsoulever(); +void tlire(); +void tslire(); +void tregarder(); +void tsregarder(); +void tfouiller(); +void tsfouiller(); +void touvrir(); +void tmettre(); +void ttourner(); +void tcacher(); +void tattacher(); +void tfermer(); +void tfrapper(); +void tposer(); +void tecouter(); +void tmanger(); +void tentrer(); +void tdormir(); +void tdefoncer(); +void tsortir(); +void tattendre(); +void tsonder(); +void tparler(); +void tsentir(); +void tgratter(); +/* NIVEAU 2 */ +void tmaj1(); +void tencore(); + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/alert.h b/engines/mortevielle/alert.h new file mode 100644 index 0000000000..23351318a5 --- /dev/null +++ b/engines/mortevielle/alert.h @@ -0,0 +1,41 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_ALERT_H +#define MORTEVIELLE_ALERT_H + +namespace Mortevielle { + +int do_alert(Common::String str_, int n); +void decod(Common::String s, int &nbc, int &nbl, int &col, Common::String &c, Common::String &cs); +static void posit(int ji, int &coldep, int &esp); +static void fait_boite(int lidep, int nli, int tx); +static void fait_choix(Common::String c, int &coldep, int &nbcase, array<1, 2, varying_string<3> > &s, int &esp); +int do_alert(Common::String str_, int n); + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/boite.h b/engines/mortevielle/boite.h new file mode 100644 index 0000000000..d0e7b0e2e3 --- /dev/null +++ b/engines/mortevielle/boite.h @@ -0,0 +1,36 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_BOITE_H +#define MORTEVIELLE_BOITE_H + +namespace Mortevielle { + +void boite(int x, int y, int dx, int dy, int coul); + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/disk.h b/engines/mortevielle/disk.h new file mode 100644 index 0000000000..464c3b7e1a --- /dev/null +++ b/engines/mortevielle/disk.h @@ -0,0 +1,39 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_DISK_H +#define MORTEVIELLE_DISK_H + +namespace Mortevielle { + +void dem1(); +void takesav(int n); +void ld_game(int n); +void sv_game(int n); + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/droite.h b/engines/mortevielle/droite.h new file mode 100644 index 0000000000..73ed30d1ad --- /dev/null +++ b/engines/mortevielle/droite.h @@ -0,0 +1,36 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_DROITE_H +#define MORTEVIELLE_DROITE_H + +namespace Mortevielle { + +void droite(int x, int y, int xx, int yy, int coul); + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/keyboard.h b/engines/mortevielle/keyboard.h new file mode 100644 index 0000000000..fbef23feb0 --- /dev/null +++ b/engines/mortevielle/keyboard.h @@ -0,0 +1,38 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_KEYBOARD_H +#define MORTEVIELLE_KEYBOARD_H + +namespace Mortevielle { + +char readkey1(); +int testou(); +void teskbd(); + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/level15.h b/engines/mortevielle/level15.h new file mode 100644 index 0000000000..73a9d3f32b --- /dev/null +++ b/engines/mortevielle/level15.h @@ -0,0 +1,52 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_LEVEL15_H +#define MORTEVIELLE_LEVEL15_H + +namespace Mortevielle { + +/* NIVEAU 15 */ +void copcha(); +bool dans_rect(rectangle r); +void outbloc(int n, pattern p, t_nhom pal); +void writepal(int n); +void pictout(int seg, int dep, int x, int y); +void putxy(int x, int y); +// int calad(int x, int y); +void sauvecr(int y, int dy); +void charecr(int y, int dy); +// int peek(int ad); +// int peekw(int ad); +// real peekl(int ad); +// void procedure poke(int ad, int n); +void adzon(); +int animof(int ouf, int num); +// void affgd(int offs, int dep, int x, int y); + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h new file mode 100644 index 0000000000..451e96718c --- /dev/null +++ b/engines/mortevielle/menu.h @@ -0,0 +1,47 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_MENU_H +#define MORTEVIELLE_MENU_H + +namespace Mortevielle { + +/* NIVEAU 14*/ +void menut(int no, Common::String nom); +void menu_disable(int no); +void menu_enable(int no); +void menu_aff(); +void draw_menu(); +void invers(int ix); +void util(int x, int y); +void menu_down(int ii); +void menu_up(int xx); +void erase_menu(); +void mdn(); + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h new file mode 100644 index 0000000000..1211d215ae --- /dev/null +++ b/engines/mortevielle/mor.h @@ -0,0 +1,125 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_MOR_H +#define MORTEVIELLE_MOR_H + +namespace Mortevielle { + +/* Niveau 14 suite */ +void testfi(); +int readclock(); +void modif(int &nu); +void dessine(int ad, int x, int y); +void dessine_rouleau(); +void text_color(int c); +/* NIVEAU 13 */ +void text1(int x, int y, int nb, int m); +void initouv(); +void ecrf1(); +void clsf1(); +void clsf2(); +void ecrf2(); +void ecr2(Common::String str_); +void clsf3(); +void ecr3(Common::String text); +void ecrf6(); +void ecrf7(); +void clsf10(); +void stop(); +void paint_rect(int x, int y, int dx, int dy); +int hazard(int min, int max); +void calch(int &j, int &h, int &m); +void conv(int x, int &y); +/* NIVEAU 12 */ +void okpas(); +void modobj(int m); +void modobj2(int m, boolean t1, boolean t2); +void repon(int f, int m); +void f3f8(); +void t5(int cx); +void affper(int per); +void choix(int min, int max, int &per); +void cpl1(int &p); +void cpl2(int &p); +void cpl3(int &p); +void cpl5(int &p); +void cpl6(int &p); +void person(); +void chlm(int &per); +void pendule(); +/************* + * NIVEAU 11 * + *************/ +void debloc(int l); +void cpl10(int &p, int &h); +void cpl11(int &p, int &h); +void cpl12(int &p); +void cpl13(int &p); +void cpl15(int &p); +void cpl20(int &p, int &h); +void quelq1(int l); +void quelq2(); +void quelq5(); +void quelq6(int l); +void quelq10(int h, int &per); +void quelq11(int h, int &per); +void quelq12(int &per); +void quelq15(int &per); +void quelq20(int h, int &per); +void frap(); +void nouvp(int l, int &p); +void tip(int ip, int &cx); +void ecfren(int &p, int &haz, int cf, int l); +void becfren(int l); +/* NIVEAU 10 */ +void init_nbrepm(); +void phaz(int &haz, int &p, int cf); +void inzon(); +void dprog(); +void pl1(int cf); +void pl2(int cf); +void pl5(int cf); +void pl6(int cf); +void pl9(int cf); +void pl10(int cf); +void pl11(int cf); +void pl12(int cf); +void pl13(int cf); +void pl15(int cf); +void pl20(int cf); +void t11(int l11, int &a); +void cavegre(); +void writetp(Common::String s, int t); +void messint(int nu); +void aniof(int ouf, int num); +void musique(int so); +/* NIVEAU 9 */ +void dessin(int ad); + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/mor2.h b/engines/mortevielle/mor2.h new file mode 100644 index 0000000000..bad43320c5 --- /dev/null +++ b/engines/mortevielle/mor2.h @@ -0,0 +1,81 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_MOR2_H +#define MORTEVIELLE_MOR2_H + +namespace Mortevielle { + +void tinke(); +void fenat(char ans); +/* NIVEAU 8 */ +void afdes(int ad); +void tkey1(bool d); +void tmlieu(int mli); +/* NIVEAU 7 */ +void tlu(int af, int ob); +void delin(int n); +void affrep(); +void mfouen() +void atf3f8(int &key); +/* NIVEAU 6 */ +void tperd(); +void tsort(); +void st4(int ob); +void cherjer(int ob, boolean &d); +void st1sama(); +void modinv(); +void sparl(long_int adr, long_int rep); +void finfouil(); +void mfoudi(); +void mennor(); +void premtet(); +/* NIVEAU 5 */ +void ajchai(); +void ajjer(int ob); +void t1sama(); +void t1vier(); +void t1neig(); +void t1deva(); +void t1derr(); +void t1deau(); +void tctrm(); +void quelquun(); +void tsuiv(); +void tfleche(); +void tcoord(int sx); +void st7(int ob); +void treg(int ob); +void avpoing(int &ob); +void rechai(int &ch); +void t23coul(int &l); +void maivid(); +void st13(int ob); +void aldepl(); + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/mort.h b/engines/mortevielle/mort.h new file mode 100644 index 0000000000..0b78deb028 --- /dev/null +++ b/engines/mortevielle/mort.h @@ -0,0 +1,38 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_MORT_H +#define MORTEVIELLE_MORT_H + +namespace Mortevielle { + +void divers(int np, bool b); +/* NIVEAU 0 */ +int main(int argc, const char *argv[]); +} // End of namespace Mortevielle + +#endif diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h new file mode 100644 index 0000000000..62fdf1bfe4 --- /dev/null +++ b/engines/mortevielle/mouse.h @@ -0,0 +1,43 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_MOUSE_H +#define MORTEVIELLE_MOUSE_H + +namespace Mortevielle { + +void init_mouse(); +//void change_mouse(int t); +//void dessine_souris(int xf, int yf); +void hide_mouse(); +void show_mouse(); +void pos_mouse(int x, int y); +void read_pos_mouse(int &x, int &y, int &c); +void mov_mouse(boolean &funct, char &key); + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h new file mode 100644 index 0000000000..fcf4822ab5 --- /dev/null +++ b/engines/mortevielle/outtext.h @@ -0,0 +1,39 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_OUTTEXT_H +#define MORTEVIELLE_OUTTEXT_H + +namespace Mortevielle { + +static void cinq_huit(char &c, int &ind, byte &pt, boolean &the_end); +void deline(int num , phrase &l , int &tl); +static int l_motsuiv(int p, phrase &ch, int &tab); +void afftex(phrase ch, int x, int y, int dx, int dy, int typ); + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/ovd1.h b/engines/mortevielle/ovd1.h new file mode 100644 index 0000000000..339ee69f9f --- /dev/null +++ b/engines/mortevielle/ovd1.h @@ -0,0 +1,49 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_OVD1_H +#define MORTEVIELLE_OVD1_H + +namespace Mortevielle { + +void dem2(); +void ani50(); +//void apzuul(); +void aff50(boolean c); +void init_menu(); +void charpal(); +void chartex(); +void dialpre(); +void init_lieu(); +void music(); +void charge_bruit5(); +void charge_cfiec(); +void charge_cfiph(); +void suite(); + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/parole.h b/engines/mortevielle/parole.h new file mode 100644 index 0000000000..b0282e15bd --- /dev/null +++ b/engines/mortevielle/parole.h @@ -0,0 +1,45 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_PAROLE_H +#define MORTEVIELLE_PAROLE_H + +namespace Mortevielle { + +void spfrac(int wor); +void charg_car(); +void entroct(byte o); +void veracf(byte b); +void cctable(tablint &t); +void regenbruit(); +void charge_son(); +void charge_phbruit(); +void charge_bruit(); +void trait_car(); + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/parole2.h b/engines/mortevielle/parole2.h new file mode 100644 index 0000000000..ed7108f3b8 --- /dev/null +++ b/engines/mortevielle/parole2.h @@ -0,0 +1,40 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_PAROLE2_H +#define MORTEVIELLE_PAROLE2_H + +namespace Mortevielle { + +void rot_chariot(); +void init_chariot(); +void trait_ph(); +void parole(int rep, int ht, int typ); + +} // End of namespace Mortevielle + +#endif diff --git a/engines/mortevielle/prog.h b/engines/mortevielle/prog.h new file mode 100644 index 0000000000..4fccca4f65 --- /dev/null +++ b/engines/mortevielle/prog.h @@ -0,0 +1,47 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_PROG_H +#define MORTEVIELLE_PROG_H + +namespace Mortevielle { + +void change_gd(int ngd); +void antegame(); + +/* NIVEAU 3 */ +/* procedure PROGRAMME */ +void tmaj3(); +void tsitu(); +void tecran(); + +/* NIVEAU 1 */ +void theure(); +void tjouer(); + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/ques.h b/engines/mortevielle/ques.h new file mode 100644 index 0000000000..f748d3e0b5 --- /dev/null +++ b/engines/mortevielle/ques.h @@ -0,0 +1,38 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_QUES_H +#define MORTEVIELLE_QUES_H + +#include "common/str.h" + +namespace Mortevielle { + +bool ques(); + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/sprint.h b/engines/mortevielle/sprint.h new file mode 100644 index 0000000000..42259f0593 --- /dev/null +++ b/engines/mortevielle/sprint.h @@ -0,0 +1,39 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_SPRINT_H +#define MORTEVIELLE_SPRINT_H + +#include "common/str.h" + +namespace Mortevielle { + +void fill_box(int x, int y, int dx); +void clear_box(int x, int y, int dx); +void writeg(Common::String l, int c); +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/taffich.h b/engines/mortevielle/taffich.h new file mode 100644 index 0000000000..ccc64bf2c5 --- /dev/null +++ b/engines/mortevielle/taffich.h @@ -0,0 +1,40 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_TAFFICH_H +#define MORTEVIELLE_TAFFICH_H + +#include "common/str.h" + +namespace Mortevielle { + +void chardes(Common::String nom, long_int passe, int long_); +void charani(Common::String nom, long_int passe, int long_); +void taffich(); +} // End of namespace Mortevielle + +#endif \ No newline at end of file diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h new file mode 100644 index 0000000000..86bb296ee2 --- /dev/null +++ b/engines/mortevielle/var_mor.h @@ -0,0 +1,43 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_VAR_H +#define MORTEVIELLE_VAR_H + +namespace Mortevielle { + +/*---------------------------------------------------------------------------*/ +/*------------------- PROCEDURES AND FONCTIONS ------------------------*/ +/*---------------------------------------------------------------------------*/ + +void hirs(); +void affcar(int gd, int x, int y, int coul, int char); +void putpix(int gd, int x, int y, int coul); + +} // End of namespace Mortevielle + +#endif -- cgit v1.2.3 From d7a64060cafda862276047e95a83b6967defb565 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 26 Dec 2011 23:50:26 +0100 Subject: MORTEVIELLE: Start including header files --- engines/mortevielle/actions.cpp | 2 ++ engines/mortevielle/alert.cpp | 1 + engines/mortevielle/boite.cpp | 2 ++ engines/mortevielle/disk.cpp | 2 ++ engines/mortevielle/droite.cpp | 2 ++ engines/mortevielle/keyboard.cpp | 2 ++ engines/mortevielle/level15.cpp | 2 ++ engines/mortevielle/menu.cpp | 1 + engines/mortevielle/mor.cpp | 1 + engines/mortevielle/mor2.cpp | 2 ++ engines/mortevielle/mort.cpp | 1 + engines/mortevielle/mouse.cpp | 2 ++ engines/mortevielle/outtext.cpp | 2 ++ engines/mortevielle/ovd1.cpp | 2 ++ engines/mortevielle/parole.cpp | 2 ++ engines/mortevielle/parole2.cpp | 2 ++ engines/mortevielle/prog.cpp | 2 ++ engines/mortevielle/ques.cpp | 1 + engines/mortevielle/sprint.cpp | 1 + engines/mortevielle/taffich.cpp | 1 + engines/mortevielle/var_mor.cpp | 1 + 21 files changed, 34 insertions(+) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 6ad0cc0401..54f3972081 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/actions.h" + namespace Mortevielle { /* NIVEAU 4 */ diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index 345867ff0d..614271356c 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/alert.h" #include "common/str.h" namespace Mortevielle { diff --git a/engines/mortevielle/boite.cpp b/engines/mortevielle/boite.cpp index cc3230db4f..cfda996e10 100644 --- a/engines/mortevielle/boite.cpp +++ b/engines/mortevielle/boite.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/boite.h" + namespace Mortevielle { void boite(int x, int y, int dx, int dy, int coul) { diff --git a/engines/mortevielle/disk.cpp b/engines/mortevielle/disk.cpp index a88f63a1ce..a18bdd8a6f 100644 --- a/engines/mortevielle/disk.cpp +++ b/engines/mortevielle/disk.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/disk.h" + namespace Mortevielle { void dem1() { diff --git a/engines/mortevielle/droite.cpp b/engines/mortevielle/droite.cpp index 312ed69c1a..3f582e8cb2 100644 --- a/engines/mortevielle/droite.cpp +++ b/engines/mortevielle/droite.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/droite.h" + namespace Mortevielle { void droite(int x, int y, int xx, int yy, int coul) { diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index 20fb38c870..cce1bdeb32 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/keyboard.h" + namespace Mortevielle { char readkey1() { diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 2da371b3c7..c7a8344230 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/level15.h" + namespace Mortevielle { /* NIVEAU 15 */ diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 97b0cfcb71..f91eda12ee 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/menu.h" #include "common/str.h" namespace Mortevielle { diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index a0aad53cf1..bf417dbf7e 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/mor.h" #include "common/str.h" namespace Mortevielle { diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 94fcfde07e..69637761d2 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/mor2.h" + namespace Mortevielle { const array<1, 11, int> men diff --git a/engines/mortevielle/mort.cpp b/engines/mortevielle/mort.cpp index 928804b46e..28562c774e 100644 --- a/engines/mortevielle/mort.cpp +++ b/engines/mortevielle/mort.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/mort.h" #include "ptoc.h" namespace Mortevielle { diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 6f4eaa2f4b..e894e086af 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/mouse.h" + namespace Mortevielle { const int m_arrow = 0; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 047421941f..072fe5cea1 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/outtext.h" + namespace Mortevielle { Common::String delig; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 608b429848..d18af48e96 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/ovd1.h" + namespace Mortevielle { void dem2() { diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index bfa36b06f3..3f92d78671 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/parole.h" + namespace Mortevielle { void spfrac(int wor) { diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index 90e9495477..8685feb39f 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/parole2.h" + namespace Mortevielle { void rot_chariot() { diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 43448691f3..9ff2b665c3 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -25,6 +25,8 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/prog.h" + namespace Mortevielle { /* overlay */ void change_gd(int ngd) { diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index 583221c252..4080453083 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/ques.h" #include "common/str.h" namespace Mortevielle { diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp index a72ef12c16..92ff49f768 100644 --- a/engines/mortevielle/sprint.cpp +++ b/engines/mortevielle/sprint.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/sprint.h" #include "common/str.h" namespace Mortevielle { diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index eab78c8f4c..df5580786f 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/taffich.h" #include "common/str.h" namespace Mortevielle { diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 25a8c59acc..c2ce4b3a75 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/var_mor.h" #include "common/str.h" namespace Mortevielle { -- cgit v1.2.3 From 6e171f7de12d078c7f6c6a64c63eeb1625e84a53 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 26 Dec 2011 23:54:01 +0100 Subject: MORTEVIELLE: fix several old includes --- engines/mortevielle/mort.cpp | 52 ++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/engines/mortevielle/mort.cpp b/engines/mortevielle/mort.cpp index 28562c774e..2d4f127b09 100644 --- a/engines/mortevielle/mort.cpp +++ b/engines/mortevielle/mort.cpp @@ -25,40 +25,34 @@ * Copyright (c) 1988-1989 Lankhor */ -#include "mortevielle/mort.h" #include "ptoc.h" -namespace Mortevielle { - -/*$v-*/ -/*$k-*/ -/*$x-*/ -/*$c-*/ - -#include "var_mor.h" /* les variables */ -#include "keyboard.h" /* la gestion du clavier */ -#include "mouse.h" /* la souris */ -#include "level15.h" /* les fonctions de base */ -#include "droite.h" /* pour faire une droite */ -#include "boite.h" -#include "sprint.h" /* l'affichage des textes */ -#include "outtext.h" /* fonctions sup‚rieures d'affichage */ -#include "parole.h" /* les fonctions de la parole */ -#include "alert.h" -#include "parole2.h" /* les fonctions de la parole */ +#include "mortevielle/mort.h" +#include "mortevielle/var_mor.h" /* les variables */ +#include "mortevielle/keyboard.h" /* la gestion du clavier */ +#include "mortevielle/mouse.h" /* la souris */ +#include "mortevielle/level15.h" /* les fonctions de base */ +#include "mortevielle/droite.h" /* pour faire une droite */ +#include "mortevielle/boite.h" +#include "mortevielle/sprint.h" /* l'affichage des textes */ +#include "mortevielle/outtext.h" /* fonctions sup‚rieures d'affichage */ +#include "mortevielle/parole.h" /* les fonctions de la parole */ +#include "mortevielle/alert.h" +#include "mortevielle/parole2.h" /* les fonctions de la parole */ /* debug le debugging */ -#include "ques.h" /* les questions */ -#include "menu.h" /* les fonctions du menu */ -#include "mor.h" /* divers */ -#include "taffich.h" /* chargement des dessins */ -#include "ovd1.h" /* les fonctions sur disque 1 */ -#include "mor2.h" /* divers */ -#include "actions.h" /* les actions */ -#include "prog.h" /* fonctions toplevel */ -#include "disk.h" /* chargements et sauvegardes */ - +#include "mortevielle/ques.h" /* les questions */ +#include "mortevielle/menu.h" /* les fonctions du menu */ +#include "mortevielle/mor.h" /* divers */ +#include "mortevielle/taffich.h" /* chargement des dessins */ +#include "mortevielle/ovd1.h" /* les fonctions sur disque 1 */ +#include "mortevielle/mor2.h" /* divers */ +#include "mortevielle/actions.h" /* les actions */ +#include "mortevielle/prog.h" /* fonctions toplevel */ +#include "mortevielle/disk.h" /* chargements et sauvegardes */ /* ecrihexa utilitaire */ +namespace Mortevielle { + void divers(int np, boolean b) { teskbd(); do { -- cgit v1.2.3 From 2792e4069d404f12f5329e1ce4989158096af860 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 26 Dec 2011 23:56:30 +0100 Subject: MORTEVIELLE: use bool instead of boolean --- engines/mortevielle/actions.cpp | 6 +++--- engines/mortevielle/alert.cpp | 2 +- engines/mortevielle/level15.cpp | 4 ++-- engines/mortevielle/menu.cpp | 2 +- engines/mortevielle/mor.cpp | 8 ++++---- engines/mortevielle/mor.h | 2 +- engines/mortevielle/mor2.cpp | 12 ++++++------ engines/mortevielle/mor2.h | 2 +- engines/mortevielle/mort.cpp | 2 +- engines/mortevielle/mouse.cpp | 10 +++++----- engines/mortevielle/mouse.h | 2 +- engines/mortevielle/outtext.cpp | 4 ++-- engines/mortevielle/outtext.h | 2 +- engines/mortevielle/ovd1.cpp | 4 ++-- engines/mortevielle/ovd1.h | 2 +- engines/mortevielle/prog.cpp | 2 +- engines/mortevielle/ques.cpp | 6 +++--- engines/mortevielle/var_mor.cpp | 6 +++--- 18 files changed, 39 insertions(+), 39 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 54f3972081..27598feea9 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -469,7 +469,7 @@ L2: /* overlay */ void tmettre() { int quel; - boolean entre; + bool entre; phrase st; Common::String str_; int i, tay; @@ -979,13 +979,13 @@ L2: /* overlay */ void tparler() { - array<1, 46, boolean> te; + array<1, 46, bool> te; int ix, cy, cx, max, haz, suj, co, lig, icm, i, tay, choi, x, y, c; char tou; array<1, 46, varying_string<40> > lib; phrase st; - boolean f; + bool f; diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index 614271356c..1d5901bcd1 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -128,7 +128,7 @@ int do_alert(Common::String str_, int n) { char c, dumi; array<1, 2, varying_string<3> > s; int cx, cy, cd, nbcol, nblig; - boolean touch, newaff, test, test1, test2, test3, dum; + bool touch, newaff, test, test1, test2, test3, dum; Common::String cas; diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index c7a8344230..6f5f001d74 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -40,10 +40,10 @@ void copcha() { } while (!(i == acha + 390)); } -boolean dans_rect(rectangle r) { +bool dans_rect(rectangle r) { int x, y, c; - boolean dans_rect_result; + bool dans_rect_result; read_pos_mouse(x, y, c); if ((x > r.x1) && (x < r.x2) && diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index f91eda12ee..82783277ce 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -311,7 +311,7 @@ void erase_menu() { void mdn() { int x, y, c, a, ix; - boolean tes; + bool tes; /* debug('mdn'); */ if (! active_menu) return; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index bf417dbf7e..5b8058898d 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -369,7 +369,7 @@ void modobj(int m) { menu_disable(invt[8]); } -void modobj2(int m, boolean t1, boolean t2) { +void modobj2(int m, bool t1, bool t2) { phrase str_; Common::String strp; int i, tay; @@ -526,7 +526,7 @@ void affper(int per) { } /* overlay */ void choix(int min, int max, int &per) { - boolean i; + bool i; int haz, cx, cy, cz; long_int per2, cz2; @@ -841,7 +841,7 @@ void debloc(int l) { /* overlay */ void quelq15(int &per) { int cx; - boolean test; + bool test; /* debug('o1 quelq15'); */ @@ -1254,7 +1254,7 @@ void aniof(int ouf, int num) { } void musique(int so) { - boolean i; + bool i; int haz; /* dep: array[1..5] of long_int;*/ diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 1211d215ae..82f8004400 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -58,7 +58,7 @@ void conv(int x, int &y); /* NIVEAU 12 */ void okpas(); void modobj(int m); -void modobj2(int m, boolean t1, boolean t2); +void modobj2(int m, bool t1, bool t2); void repon(int f, int m); void f3f8(); void t5(int cx); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 69637761d2..45146c1bce 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -178,8 +178,8 @@ void afdes(int ad) { okdes = false; } -void tkey1(boolean d) { - boolean quest; +void tkey1(bool d) { + bool quest; int x, y, c; int key; @@ -327,7 +327,7 @@ void st4(int ob) { } } -void cherjer(int ob, boolean &d) { +void cherjer(int ob, bool &d) { int cx; d = false; @@ -455,7 +455,7 @@ void ajjer(int ob) { void t1sama() { /* On entre dans le manoir */ int j, h, m; - boolean d; + bool d; calch(j, h, m); if ((h < 5) && (s.mlieu > 18)) { @@ -601,7 +601,7 @@ void tsuiv() { } void tfleche() { - boolean qust; + bool qust; char touch; int dummy, cd, xmo, ymo; @@ -728,7 +728,7 @@ void rechai(int &ch) { } void t23coul(int &l) { - boolean d; + bool d; cherjer(143, d); l = 14; diff --git a/engines/mortevielle/mor2.h b/engines/mortevielle/mor2.h index bad43320c5..46181c5e9a 100644 --- a/engines/mortevielle/mor2.h +++ b/engines/mortevielle/mor2.h @@ -46,7 +46,7 @@ void atf3f8(int &key); void tperd(); void tsort(); void st4(int ob); -void cherjer(int ob, boolean &d); +void cherjer(int ob, bool &d); void st1sama(); void modinv(); void sparl(long_int adr, long_int rep); diff --git a/engines/mortevielle/mort.cpp b/engines/mortevielle/mort.cpp index 2d4f127b09..2555b83232 100644 --- a/engines/mortevielle/mort.cpp +++ b/engines/mortevielle/mort.cpp @@ -53,7 +53,7 @@ namespace Mortevielle { -void divers(int np, boolean b) { +void divers(int np, bool b) { teskbd(); do { parole(np, 0, 0); diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index e894e086af..8b4fcaa84a 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -32,7 +32,7 @@ namespace Mortevielle { const int m_arrow = 0; const int m_point_hand = 1; -boolean int_m, +bool int_m, clic; int m_show, @@ -88,7 +88,7 @@ end; */ void hide_mouse() { int i, j, k, ps, ds; - boolean imp; + bool imp; mouse_shwn = pred(int, mouse_shwn); if (mouse_shwn == 0) { @@ -177,7 +177,7 @@ void hide_mouse() { void show_mouse() { int i, j, k, l, ps, ds; - boolean imp; + bool imp; char c; mouse_shwn = mouse_shwn + 1; @@ -311,8 +311,8 @@ void read_pos_mouse(int &x, int &y, int &c) { } } -void mov_mouse(boolean &funct, char &key) { - boolean p_key; +void mov_mouse(bool &funct, char &key) { + bool p_key; char in1, in2; int x, y, cx, cy, cd; registres reg; diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index 62fdf1bfe4..90fe91e373 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -37,7 +37,7 @@ void hide_mouse(); void show_mouse(); void pos_mouse(int x, int y); void read_pos_mouse(int &x, int &y, int &c); -void mov_mouse(boolean &funct, char &key); +void mov_mouse(bool &funct, char &key); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 072fe5cea1..749bc13d1c 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -57,7 +57,7 @@ const byte tab31[32]= { void deline(int num , phrase &l , int &tl); -static void cinq_huit(char &c, int &ind, byte &pt, boolean &the_end) { +static void cinq_huit(char &c, int &ind, byte &pt, bool &the_end) { const unsigned char rap[32] = { ',', ':', '@', '!', '?', '-', '\207', '\240', '\205', '\203', '\202', '\212', '\210', '/', @@ -153,7 +153,7 @@ static int l_motsuiv(int p, phrase &ch, int &tab) { } void afftex(phrase ch, int x, int y, int dx, int dy, int typ) { - boolean the_end; + bool the_end; char touch; int xf, yf; int xc, yc; diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index fcf4822ab5..b9a239bff6 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -30,7 +30,7 @@ namespace Mortevielle { -static void cinq_huit(char &c, int &ind, byte &pt, boolean &the_end); +static void cinq_huit(char &c, int &ind, byte &pt, bool &the_end); void deline(int num , phrase &l , int &tl); static int l_motsuiv(int p, phrase &ch, int &tab); void afftex(phrase ch, int x, int y, int dx, int dy, int typ); diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index d18af48e96..570d548887 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -65,7 +65,7 @@ void ani50() { end; end;*/ -/* overlay */ void aff50(boolean c) { +/* overlay */ void aff50(bool c) { int k; caff = 50; @@ -276,7 +276,7 @@ void ani50() { /* overlay */ void music() { untyped_file fic; int k; - boolean fin; + bool fin; char ch; float x, y; diff --git a/engines/mortevielle/ovd1.h b/engines/mortevielle/ovd1.h index 339ee69f9f..4cad37c0ab 100644 --- a/engines/mortevielle/ovd1.h +++ b/engines/mortevielle/ovd1.h @@ -33,7 +33,7 @@ namespace Mortevielle { void dem2(); void ani50(); //void apzuul(); -void aff50(boolean c); +void aff50(bool c); void init_menu(); void charpal(); void chartex(); diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 9ff2b665c3..ddf9e4d36b 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -243,7 +243,7 @@ void tecran() { const int lim = 20000; int temps; char inkey; - boolean oo, funct; + bool oo, funct; clsf3(); oo = false; diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index 4080453083..a802516795 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -30,7 +30,7 @@ namespace Mortevielle { -/* overlay */ boolean ques() { +/* overlay */ bool ques() { const array<1, 10, int> ta = {{ 511, 516, 524, 531, 545, @@ -40,7 +40,7 @@ namespace Mortevielle { const array<1, 10, int> ok = {{ 4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }}; - boolean q, func, test; + bool q, func, test; int i, j, k, y, memk; int tay , tmax; int rep, prem, der; @@ -51,7 +51,7 @@ namespace Mortevielle { int compte; - boolean ques_result; + bool ques_result; test = false; i = 0; compte = 0; diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index c2ce4b3a75..2f9928738d 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -208,7 +208,7 @@ struct sav_chaine { char sjer[31]; int mlieu, iboul, ibag, icave, ivier, ipuit; int derobj, iloic, icryp; - boolean ipre; + bool ipre; char heure; }; struct registres { @@ -238,7 +238,7 @@ struct doublet { typedef array<1, 16, doublet> tabdb; struct rectangle { int x1, x2, y1, y2; - boolean etat; + bool etat; }; typedef array<1, max_rect, rectangle> mult_rect; @@ -263,7 +263,7 @@ struct t_pcga { /*------------------------------ VARIABLES ------------------------------*/ /*---------------------------------------------------------------------------*/ -boolean blo, +bool blo, bh1, bf1, bh2, -- cgit v1.2.3 From 4281423abbfb6b0d1bc878d0d85f5af2b8f950c2 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 27 Dec 2011 00:15:50 +0100 Subject: MORTEVIELLE: Fix some errors by including str.h --- engines/mortevielle/alert.h | 2 ++ engines/mortevielle/menu.h | 2 ++ engines/mortevielle/mor.h | 2 ++ engines/mortevielle/outtext.cpp | 1 + 4 files changed, 7 insertions(+) diff --git a/engines/mortevielle/alert.h b/engines/mortevielle/alert.h index 23351318a5..6c66a20e6a 100644 --- a/engines/mortevielle/alert.h +++ b/engines/mortevielle/alert.h @@ -28,6 +28,8 @@ #ifndef MORTEVIELLE_ALERT_H #define MORTEVIELLE_ALERT_H +#include "common/str.h" + namespace Mortevielle { int do_alert(Common::String str_, int n); diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index 451e96718c..2b548a2f35 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -28,6 +28,8 @@ #ifndef MORTEVIELLE_MENU_H #define MORTEVIELLE_MENU_H +#include "common/str.h" + namespace Mortevielle { /* NIVEAU 14*/ diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 82f8004400..88e718b853 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -28,6 +28,8 @@ #ifndef MORTEVIELLE_MOR_H #define MORTEVIELLE_MOR_H +#include "common/str.h" + namespace Mortevielle { /* Niveau 14 suite */ diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 749bc13d1c..13dd824a5f 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -26,6 +26,7 @@ */ #include "mortevielle/outtext.h" +#include "common/str.h" namespace Mortevielle { -- cgit v1.2.3 From 646408bb38e8144de06b43d571fb3f2f87b7e277 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 27 Dec 2011 00:46:44 +0100 Subject: MORTEVIELLE: Fix several errors, add some includes --- engines/mortevielle/actions.cpp | 2 + engines/mortevielle/alert.h | 2 +- engines/mortevielle/boite.cpp | 2 + engines/mortevielle/droite.cpp | 1 + engines/mortevielle/level15.cpp | 1 + engines/mortevielle/mor2.h | 2 +- engines/mortevielle/prog.cpp | 1 + engines/mortevielle/ques.cpp | 10 +- engines/mortevielle/sprint.cpp | 1 + engines/mortevielle/var_mor.cpp | 382 +--------------------------------------- engines/mortevielle/var_mor.h | 380 +++++++++++++++++++++++++++++++++++++++ 11 files changed, 393 insertions(+), 391 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 27598feea9..6e28c173e6 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -26,6 +26,8 @@ */ #include "mortevielle/actions.h" +#include "mortevielle/mor.h" +#include "mortevielle/mor2.h" namespace Mortevielle { diff --git a/engines/mortevielle/alert.h b/engines/mortevielle/alert.h index 6c66a20e6a..6419e814cf 100644 --- a/engines/mortevielle/alert.h +++ b/engines/mortevielle/alert.h @@ -33,7 +33,7 @@ namespace Mortevielle { int do_alert(Common::String str_, int n); -void decod(Common::String s, int &nbc, int &nbl, int &col, Common::String &c, Common::String &cs); +static void decod(Common::String s, int &nbc, int &nbl, int &col, Common::String &c, Common::String &cs); static void posit(int ji, int &coldep, int &esp); static void fait_boite(int lidep, int nli, int tx); static void fait_choix(Common::String c, int &coldep, int &nbcase, array<1, 2, varying_string<3> > &s, int &esp); diff --git a/engines/mortevielle/boite.cpp b/engines/mortevielle/boite.cpp index cfda996e10..0a37cc7af2 100644 --- a/engines/mortevielle/boite.cpp +++ b/engines/mortevielle/boite.cpp @@ -26,6 +26,8 @@ */ #include "mortevielle/boite.h" +#include "mortevielle/mouse.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/droite.cpp b/engines/mortevielle/droite.cpp index 3f582e8cb2..9def04add5 100644 --- a/engines/mortevielle/droite.cpp +++ b/engines/mortevielle/droite.cpp @@ -26,6 +26,7 @@ */ #include "mortevielle/droite.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 6f5f001d74..42219ee943 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -26,6 +26,7 @@ */ #include "mortevielle/level15.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/mor2.h b/engines/mortevielle/mor2.h index 46181c5e9a..adfbff9d26 100644 --- a/engines/mortevielle/mor2.h +++ b/engines/mortevielle/mor2.h @@ -40,7 +40,7 @@ void tmlieu(int mli); void tlu(int af, int ob); void delin(int n); void affrep(); -void mfouen() +void mfouen(); void atf3f8(int &key); /* NIVEAU 6 */ void tperd(); diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index ddf9e4d36b..08b63fe3aa 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/mor2.h" #include "mortevielle/prog.h" namespace Mortevielle { diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index a802516795..8ea4e4c49c 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -31,14 +31,8 @@ namespace Mortevielle { /* overlay */ bool ques() { - const array<1, 10, int> ta - = {{ - 511, 516, 524, 531, 545, - 552, 559, 563, 570, 576 - } - }; - const array<1, 10, int> ok - = {{ 4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }}; + const int ta[10] = {511, 516, 524, 531, 545, 552, 559, 563, 570, 576}; + const int ok[10] = {4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }; bool q, func, test; int i, j, k, y, memk; diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp index 92ff49f768..6209b08f7d 100644 --- a/engines/mortevielle/sprint.cpp +++ b/engines/mortevielle/sprint.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/mouse.h" #include "mortevielle/sprint.h" #include "common/str.h" diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 2f9928738d..25789e29b3 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -30,390 +30,10 @@ namespace Mortevielle { -/* Constantes, Types et Variables pour le - - M A N O I R DE M O R T E V I E L L E - - ( version Nov 1988 - + - musique & paroles Oct 88 ) - */ - - -/*---------------------------------------------------------------------------*/ -/*------------------------- CONSTANTES ----------------------------------*/ -/*---------------------------------------------------------------------------*/ - -const float freq0 = 1.19318e6; - -const int seg_syst = 0x6fed; -const int segmou = 0x6f00; -const int segdon = 0x6c00; -const int adani = 0x7314; -const int adword = 0x4000; -const int adtroct = 0x406b; -const int adcfiec = 0x4300; -const int adbruit = 0x5cb0;/*2C00;*/ -const int adbruit1 = 0x6924;/*3874;*/ -const int adbruit2 = 0x6b30;/*3A80;*/ -const int adbruit3 = 0x6ba6;/*3AF6;*/ -const int adbruit5 = 0x3b50; -const int adson = 0x5cb0;/*2C00;*/ -const int adson2 = 0x60b0;/*3000;*/ -const int offsetb1 = 6; -const int offsetb2 = 4; -const int offsetb3 = 6; - -const int null = 255; - -const int tempo_mus = 71; -const int tempo_bruit = 78; -const int tempo_f = 80; -const int tempo_m = 89; - -const int ti1 = 410; -const int ti2 = 250; -const int maxti = 7975; -const int maxtd = 600; -const int max_rect = 14; - -const int ams = 0; -const int cga = 1; -const int ega = 2; -const int her = 3; -const int tan = 4; - -const int c_repon = 0; -const int c_st41 = 186; -const int c_tparler = 247; -const int c_paroles = 292; -const int c_tmlieu = 435; -const int c_dialpre = 456; -const int c_action = 476; -const int c_saction = 497; -const int c_dis = 502; -const int c_fin = 510; /* => n'existe pas ; si !! */ - -const int arega = 0; -const int asoul = 154; -const int aouvr = 282; -const int achai = 387; -const int acha = 492; -const int arcf = 1272; -const int arep = 1314; -const int amzon = 1650; -const int fleche = 1758; - -const int no_choice = 0; -const int invent = 1; -const int depla = 2; -const int action = 3; -const int saction = 4; -const int discut = 5; -const int fichier = 6; -const int sauve = 7; -const int charge = 8; - -const int attacher = 0x301; -const int attendre = 0x302; -const int defoncer = 0x303; -const int dormir = 0x304; -const int ecouter = 0x305; -const int entrer = 0x306; -const int fermer = 0x307; -const int fouiller = 0x308; -const int frapper = 0x309; -const int gratter = 0x30a; -const int lire = 0x30b; -const int manger = 0x30c; -const int mettre = 0x30d; -const int ouvrir = 0x30e; -const int prendre = 0x30f; -const int regarder = 0x310; -const int sentir = 0x311; -const int sonder = 0x312; -const int sortir = 0x313; -const int soulever = 0x314; -const int tourner = 0x315; - -const int scacher = 0x401; -const int sfouiller = 0x402; -const int slire = 0x403; -const int sposer = 0x404; -const int sregarder = 0x405; - -const byte tabdbc[18] = {7, 23, 7, 14, 13, 9, 14, 9, 5, 12, 6, 12, 13, 4, 0, 4, 5, 9}; -const byte tabdph[16] = {0, 10, 2, 0, 2, 10, 3, 0, 3, 7, 5, 0, 6, 7, 7, 10}; -const byte typcon[26] = {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3}; -const byte intcon[26] = {1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}; -const byte tnocon[364] = { - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - - -const matrix<1, 8, 1, 4, byte> don -= {{{{ 7, 37, 22, 8}}, - {{19, 33, 23, 7}}, - {{31, 89, 10, 21}}, - {{43, 25, 11, 5}}, - {{55, 37, 5, 8}}, - {{64, 13, 11, 2}}, - {{62, 22, 13, 4}}, - {{62, 25, 13, 5}} - } -}; - -const array<1, 2, varying_string<11> > fic -= {{ " Sauvegarde", - " Chargement" - } -}; - -const byte addv[2] = {8, 8}; - -const char recom[] = " Recommence "; - -const char f3[] = "F3: Encore"; -const char f8[] = "F8: Suite"; - -const int max_patt = 20; - - -const byte rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; - - /*---------------------------------------------------------------------------*/ -/*-------------------------------- TYPES --------------------------------*/ +/*-------------------- PROCEDURES AND FONCTIONS -----------------------*/ /*---------------------------------------------------------------------------*/ -typedef float long_int; -typedef file fichier_byte; -struct sav_chaine { - int conf; - char pourc[11]; - char teauto[43]; - char sjer[31]; - int mlieu, iboul, ibag, icave, ivier, ipuit; - int derobj, iloic, icryp; - bool ipre; - char heure; -}; -struct registres { - int ax, bx, cx, dx, bp, si, di, ds, es, flags; -}; -typedef array<1, 1410, char> phrase; -struct ind { - int indis; - byte point; -}; -typedef array<0, maxtd, ind> tabind; - -typedef matrix<1, 7, 0, 24, byte> tab_mlieu; - -typedef int word1; -struct chariot { - int val, - code, - acc, - freq, - rep; -}; - -struct doublet { - byte x, y; -}; -typedef array<1, 16, doublet> tabdb; -struct rectangle { - int x1, x2, y1, y2; - bool etat; -}; - -typedef array<1, max_rect, rectangle> mult_rect; - -struct pattern { - byte tay, tax; - matrix<1, max_patt, 1, max_patt, byte> des; -}; - - -struct nhom { - byte n; /* numero entre 0 et 32 */ - byte hom[4]; -}; - -struct t_pcga { - byte p; - nhom a[16]; -}; - -/*---------------------------------------------------------------------------*/ -/*------------------------------ VARIABLES ------------------------------*/ -/*---------------------------------------------------------------------------*/ - -bool blo, - bh1, - bf1, - bh2, - bh4, - bf4, - bh5, - bh6, - bh8, - bt3, - bt7, - bh9, - - sonoff, - main1, - choisi, - test0, - f2_all, - imen, - cache, - iesc, - perdu, - col, - syn, - fouil, - zuul, - tesok, - obpart, - okdes, - solu, - arret, - anyone, - brt, - rect, - rech_cfiec, - active_menu; - - -int x, - y, - t, - vj, - li, - vh, - vm, - jh, - mh, - cs, - gd, /* Gd = graph device */ - hdb, - hfb, - heu, - jou, - key, - min, - num, - max, - res, - ment, - haut, - caff, - maff, - crep, - ades, - iouv, - inei, - ctrm, - dobj, - msg3, - msg4, - mlec, - newgd, - c_zzz, - mchai, - menup, - ipers, - ledeb, - lefin, - mpers, - mnumo, - xprec, - yprec, - perdep, - prebru, - typlec, - num_ph, - xwhere, - ywhere, - numpal, - lderobj, - nb_word, - ptr_oct, - k_tempo, - ptr_tcph, - ptr_word, - color_txt; - -int t_cph[6401]; -byte tabdon[4001]; -/* t_dxx : array[0..121] of int;*/ -Common::String stpou; /* donne le % d'indices */ -byte is; -char mode; -fichier_byte ficdes; -Common::String al_mess, - err_mess, - ind_mess, - al_mess2; - -array<1, 8, int> invt, - nbrep, - nbrepm, - disc; -int msg[5]; -array<1, 7, int> depl; -array<1, 8, varying_string<22> > inv; -array<1, 7, varying_string<23> > dep; -array<1, 21, varying_string<10> > act; -array<1, 5, varying_string<11> > self_; -array<1, 8, varying_string<5> > dis; -array<1, 7, char> touv; -sav_chaine s, s1; -byte bufcha[391]; - -matrix<1, 6, 0, 23, byte> lettres; - -byte palher[16]; - -int t_mot[maxti + 1]; -int tay_tchar; -tabind t_rec; -file sauv_t; -untyped_file fibyte; -tab_mlieu v_lieu; -int l[108]; -int tbi[256]; -chariot c1, c2, c3; -float addfix; -t_pcga palsav[91]; -array<0, 90, tabdb> tabpal; -t_pcga palcga[91]; -pattern tpt[15]; - - - -/*---------------------------------------------------------------------------*/ -/*-------------------- PROCEDURES ET FONCTIONS ------------------------*/ -/*---------------------------------------------------------------------------*/ - -/* procedure box(c,Gd,xo,yo,xi,yi,patt:int); external 'c:\mc\boite.com'; */ - void hirs() { const byte tandy[14] = {113, 80, 90, 14, 63, 6, 50, 56, 2, 3, 6, 7, 0, 0}; const byte herc[13] = {50, 40, 41, 9, 103, 3, 100, 100, 2, 3, 0, 0, 0}; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 86bb296ee2..4a526a32f1 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -28,8 +28,388 @@ #ifndef MORTEVIELLE_VAR_H #define MORTEVIELLE_VAR_H +#include "common/str.h" + namespace Mortevielle { +/* Constantes, Types et Variables pour le + + M A N O I R DE M O R T E V I E L L E + + ( version Nov 1988 + + + musique & paroles Oct 88 ) + */ + + +/*---------------------------------------------------------------------------*/ +/*------------------------- CONSTANTES ----------------------------------*/ +/*---------------------------------------------------------------------------*/ + +const float freq0 = 1.19318e6; + +const int seg_syst = 0x6fed; +const int segmou = 0x6f00; +const int segdon = 0x6c00; +const int adani = 0x7314; +const int adword = 0x4000; +const int adtroct = 0x406b; +const int adcfiec = 0x4300; +const int adbruit = 0x5cb0;/*2C00;*/ +const int adbruit1 = 0x6924;/*3874;*/ +const int adbruit2 = 0x6b30;/*3A80;*/ +const int adbruit3 = 0x6ba6;/*3AF6;*/ +const int adbruit5 = 0x3b50; +const int adson = 0x5cb0;/*2C00;*/ +const int adson2 = 0x60b0;/*3000;*/ +const int offsetb1 = 6; +const int offsetb2 = 4; +const int offsetb3 = 6; + +const int null = 255; + +const int tempo_mus = 71; +const int tempo_bruit = 78; +const int tempo_f = 80; +const int tempo_m = 89; + +const int ti1 = 410; +const int ti2 = 250; +const int maxti = 7975; +const int maxtd = 600; +const int max_rect = 14; + +const int ams = 0; +const int cga = 1; +const int ega = 2; +const int her = 3; +const int tan = 4; + +const int c_repon = 0; +const int c_st41 = 186; +const int c_tparler = 247; +const int c_paroles = 292; +const int c_tmlieu = 435; +const int c_dialpre = 456; +const int c_action = 476; +const int c_saction = 497; +const int c_dis = 502; +const int c_fin = 510; /* => n'existe pas ; si !! */ + +const int arega = 0; +const int asoul = 154; +const int aouvr = 282; +const int achai = 387; +const int acha = 492; +const int arcf = 1272; +const int arep = 1314; +const int amzon = 1650; +const int fleche = 1758; + +const int no_choice = 0; +const int invent = 1; +const int depla = 2; +const int action = 3; +const int saction = 4; +const int discut = 5; +const int fichier = 6; +const int sauve = 7; +const int charge = 8; + +const int attacher = 0x301; +const int attendre = 0x302; +const int defoncer = 0x303; +const int dormir = 0x304; +const int ecouter = 0x305; +const int entrer = 0x306; +const int fermer = 0x307; +const int fouiller = 0x308; +const int frapper = 0x309; +const int gratter = 0x30a; +const int lire = 0x30b; +const int manger = 0x30c; +const int mettre = 0x30d; +const int ouvrir = 0x30e; +const int prendre = 0x30f; +const int regarder = 0x310; +const int sentir = 0x311; +const int sonder = 0x312; +const int sortir = 0x313; +const int soulever = 0x314; +const int tourner = 0x315; + +const int scacher = 0x401; +const int sfouiller = 0x402; +const int slire = 0x403; +const int sposer = 0x404; +const int sregarder = 0x405; + +const byte tabdbc[18] = {7, 23, 7, 14, 13, 9, 14, 9, 5, 12, 6, 12, 13, 4, 0, 4, 5, 9}; +const byte tabdph[16] = {0, 10, 2, 0, 2, 10, 3, 0, 3, 7, 5, 0, 6, 7, 7, 10}; +const byte typcon[26] = {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3}; +const byte intcon[26] = {1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}; +const byte tnocon[364] = { + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + + +const matrix<1, 8, 1, 4, byte> don += {{{{ 7, 37, 22, 8}}, + {{19, 33, 23, 7}}, + {{31, 89, 10, 21}}, + {{43, 25, 11, 5}}, + {{55, 37, 5, 8}}, + {{64, 13, 11, 2}}, + {{62, 22, 13, 4}}, + {{62, 25, 13, 5}} + } +}; + +const array<1, 2, varying_string<11> > fic += {{ " Sauvegarde", + " Chargement" + } +}; + +const byte addv[2] = {8, 8}; + +const char recom[] = " Recommence "; + +const char f3[] = "F3: Encore"; +const char f8[] = "F8: Suite"; + +const int max_patt = 20; + + +const byte rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; + + +/*---------------------------------------------------------------------------*/ +/*-------------------------------- TYPES --------------------------------*/ +/*---------------------------------------------------------------------------*/ + +typedef float long_int; +typedef file fichier_byte; +struct sav_chaine { + int conf; + char pourc[11]; + char teauto[43]; + char sjer[31]; + int mlieu, iboul, ibag, icave, ivier, ipuit; + int derobj, iloic, icryp; + bool ipre; + char heure; +}; +struct registres { + int ax, bx, cx, dx, bp, si, di, ds, es, flags; +}; +typedef char[1410] phrase; +struct ind { + int indis; + byte point; +}; +typedef ind[maxtd + 1] tabind; + +typedef matrix<1, 7, 0, 24, byte> tab_mlieu; + +typedef int word1; +struct chariot { + int val, + code, + acc, + freq, + rep; +}; + +struct doublet { + byte x, y; +}; + +typedef doublet[16] tabdb; + +struct rectangle { + int x1, x2, y1, y2; + bool etat; +}; + +typedef rectangle[max_rect] mult_rect; + +struct pattern { + byte tay, tax; + matrix<1, max_patt, 1, max_patt, byte> des; +}; + + +struct nhom { + byte n; /* numero entre 0 et 32 */ + byte hom[4]; +}; + +struct t_pcga { + byte p; + nhom a[16]; +}; + +/*---------------------------------------------------------------------------*/ +/*------------------------------ VARIABLES ------------------------------*/ +/*---------------------------------------------------------------------------*/ + +bool blo, + bh1, + bf1, + bh2, + bh4, + bf4, + bh5, + bh6, + bh8, + bt3, + bt7, + bh9, + + sonoff, + main1, + choisi, + test0, + f2_all, + imen, + cache, + iesc, + perdu, + col, + syn, + fouil, + zuul, + tesok, + obpart, + okdes, + solu, + arret, + anyone, + brt, + rect, + rech_cfiec, + active_menu; + + +int x, + y, + t, + vj, + li, + vh, + vm, + jh, + mh, + cs, + gd, /* Gd = graph device */ + hdb, + hfb, + heu, + jou, + key, + min, + num, + max, + res, + ment, + haut, + caff, + maff, + crep, + ades, + iouv, + inei, + ctrm, + dobj, + msg3, + msg4, + mlec, + newgd, + c_zzz, + mchai, + menup, + ipers, + ledeb, + lefin, + mpers, + mnumo, + xprec, + yprec, + perdep, + prebru, + typlec, + num_ph, + xwhere, + ywhere, + numpal, + lderobj, + nb_word, + ptr_oct, + k_tempo, + ptr_tcph, + ptr_word, + color_txt; + +int t_cph[6401]; +byte tabdon[4001]; +/* t_dxx : array[0..121] of int;*/ +Common::String stpou; /* donne le % d'indices */ +byte is; +char mode; +fichier_byte ficdes; +Common::String al_mess, + err_mess, + ind_mess, + al_mess2; + +int invt[8]; +int nbrep[8]; +int nbrepm[8]; +int disc[8] +int msg[5]; +int depl[7]; +array<1, 8, varying_string<22> > inv; +array<1, 7, varying_string<23> > dep; +array<1, 21, varying_string<10> > act; +array<1, 5, varying_string<11> > self_; +array<1, 8, varying_string<5> > dis; +char touv[7]; +sav_chaine s, s1; +byte bufcha[391]; + +matrix<1, 6, 0, 23, byte> lettres; + +byte palher[16]; + +int t_mot[maxti + 1]; +int tay_tchar; +tabind t_rec; +file sauv_t; +untyped_file fibyte; +tab_mlieu v_lieu; +int l[108]; +int tbi[256]; +chariot c1, c2, c3; +float addfix; +t_pcga palsav[91]; +tabdb tabpal[91]; +t_pcga palcga[91]; +pattern tpt[15]; + /*---------------------------------------------------------------------------*/ /*------------------- PROCEDURES AND FONCTIONS ------------------------*/ /*---------------------------------------------------------------------------*/ -- cgit v1.2.3 From 3cefe699949e00e9faf4e7d2a8af65daafc2f125 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 27 Dec 2011 08:20:55 +0100 Subject: MORTEVIELLE: Enlarge two arrays in order to fix pascal access --- engines/mortevielle/ques.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index 8ea4e4c49c..9a1280c769 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -31,8 +31,8 @@ namespace Mortevielle { /* overlay */ bool ques() { - const int ta[10] = {511, 516, 524, 531, 545, 552, 559, 563, 570, 576}; - const int ok[10] = {4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }; + const int ta[11] = {0, 511, 516, 524, 531, 545, 552, 559, 563, 570, 576}; + const int ok[11] = {0, 4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }; bool q, func, test; int i, j, k, y, memk; -- cgit v1.2.3 From cd596ffb9b43bc2b251eeade7c7e89a158856fb1 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 27 Dec 2011 08:34:47 +0100 Subject: MORTEVIELLE: Fix some more errors by adding includes --- engines/mortevielle/actions.cpp | 4 ++++ engines/mortevielle/mor.cpp | 3 +++ engines/mortevielle/outtext.cpp | 1 + engines/mortevielle/outtext.h | 2 ++ engines/mortevielle/ovd1.cpp | 1 + engines/mortevielle/ques.cpp | 1 + 6 files changed, 12 insertions(+) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 6e28c173e6..4370947a09 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -26,8 +26,12 @@ */ #include "mortevielle/actions.h" +#include "mortevielle/alert.h" #include "mortevielle/mor.h" #include "mortevielle/mor2.h" +#include "mortevielle/mouse.h" +#include "mortevielle/outtext.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 5b8058898d..eca3021ec2 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -25,7 +25,10 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/alert.h" #include "mortevielle/mor.h" +#include "mortevielle/outtext.h" +#include "mortevielle/var_mor.h" #include "common/str.h" namespace Mortevielle { diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 13dd824a5f..f474766ee4 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -26,6 +26,7 @@ */ #include "mortevielle/outtext.h" +#include "mortevielle/var_mor.h" #include "common/str.h" namespace Mortevielle { diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index b9a239bff6..27f9c6c617 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -28,6 +28,8 @@ #ifndef MORTEVIELLE_OUTTEXT_H #define MORTEVIELLE_OUTTEXT_H +#include "mortevielle/var_mor.h" + namespace Mortevielle { static void cinq_huit(char &c, int &ind, byte &pt, bool &the_end); diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 570d548887..dbb0977c56 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -26,6 +26,7 @@ */ #include "mortevielle/ovd1.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index 9a1280c769..db44ce33ea 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/outtext.h" #include "mortevielle/ques.h" #include "common/str.h" -- cgit v1.2.3 From a61fb2cf25e49b03f99432b798855015c67d1efc Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 27 Dec 2011 23:13:54 +0000 Subject: MORTEVIELLE: long_int -> float --- engines/mortevielle/mor.cpp | 4 ++-- engines/mortevielle/mor2.cpp | 2 +- engines/mortevielle/mor2.h | 2 +- engines/mortevielle/taffich.cpp | 6 +++--- engines/mortevielle/taffich.h | 6 +++--- engines/mortevielle/var_mor.h | 1 - 6 files changed, 10 insertions(+), 11 deletions(-) diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index eca3021ec2..e55b4ed435 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -531,7 +531,7 @@ void affper(int per) { /* overlay */ void choix(int min, int max, int &per) { bool i; int haz, cx, cy, cz; - long_int per2, cz2; + float per2, cz2; /* debug('o0 choix'); */ haz = hazard(min, max); @@ -1259,7 +1259,7 @@ void aniof(int ouf, int num) { void musique(int so) { bool i; int haz; - /* dep: array[1..5] of long_int;*/ + /* dep: array[1..5] of float;*/ /* debug('musique'); */ if (so == 0) { /*musik(0)*/ diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 45146c1bce..dea21bde0a 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -362,7 +362,7 @@ void modinv() { } } -void sparl(long_int adr, long_int rep) { +void sparl(float adr, float rep) { const array<1, 8, int> haut = {{0, 1, -3, 6, -2, 2, 7, -1}}; int key, ad, tay, repint; diff --git a/engines/mortevielle/mor2.h b/engines/mortevielle/mor2.h index adfbff9d26..a1732a16d4 100644 --- a/engines/mortevielle/mor2.h +++ b/engines/mortevielle/mor2.h @@ -49,7 +49,7 @@ void st4(int ob); void cherjer(int ob, bool &d); void st1sama(); void modinv(); -void sparl(long_int adr, long_int rep); +void sparl(float adr, float rep); void finfouil(); void mfoudi(); void mennor(); diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index df5580786f..0a19301173 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -30,7 +30,7 @@ namespace Mortevielle { -void chardes(Common::String nom, long_int passe, int long_) { +void chardes(Common::String nom, float passe, int long_) { int i, p, l; byte b; untyped_file f; @@ -60,7 +60,7 @@ void chardes(Common::String nom, long_int passe, int long_) { /*$i+*/ } -void charani(Common::String nom, long_int passe, int long_) { +void charani(Common::String nom, float passe, int long_) { int i, p, l; byte b; untyped_file f; @@ -101,7 +101,7 @@ void taffich() { }; int i, m, a, b, cx, handle, npal; - long_int lgt, lhandle; + float lgt, lhandle; Common::String nom; int palh, k, j; int alllum[16]; diff --git a/engines/mortevielle/taffich.h b/engines/mortevielle/taffich.h index ccc64bf2c5..41f0612a4f 100644 --- a/engines/mortevielle/taffich.h +++ b/engines/mortevielle/taffich.h @@ -32,9 +32,9 @@ namespace Mortevielle { -void chardes(Common::String nom, long_int passe, int long_); -void charani(Common::String nom, long_int passe, int long_); +void chardes(Common::String nom, float passe, int long_); +void charani(Common::String nom, float passe, int long_); void taffich(); } // End of namespace Mortevielle -#endif \ No newline at end of file +#endif diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 4a526a32f1..42f95d5615 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -201,7 +201,6 @@ const byte rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; /*-------------------------------- TYPES --------------------------------*/ /*---------------------------------------------------------------------------*/ -typedef float long_int; typedef file fichier_byte; struct sav_chaine { int conf; -- cgit v1.2.3 From 34f9d3024549c1c9543a556ae423d88c1cc6bc7e Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Tue, 27 Dec 2011 23:27:37 +0000 Subject: MORTEVIELLE: COnvert more arrays and data types --- engines/mortevielle/actions.cpp | 4 ++-- engines/mortevielle/menu.cpp | 2 +- engines/mortevielle/mor.cpp | 8 ++++---- engines/mortevielle/mor2.cpp | 8 ++++---- engines/mortevielle/outtext.cpp | 10 +++++----- engines/mortevielle/outtext.h | 6 +++--- engines/mortevielle/ovd1.cpp | 6 +++--- engines/mortevielle/ques.cpp | 2 +- engines/mortevielle/var_mor.h | 32 +++++++++++++++----------------- 9 files changed, 38 insertions(+), 40 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 4370947a09..25d9af0c24 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -476,7 +476,7 @@ L2: /* overlay */ void tmettre() { int quel; bool entre; - phrase st; + char st[1410]; Common::String str_; int i, tay; @@ -990,7 +990,7 @@ L2: i, tay, choi, x, y, c; char tou; array<1, 46, varying_string<40> > lib; - phrase st; + char st[1410]; bool f; diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 82783277ce..d790bf25e8 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -182,7 +182,7 @@ void draw_menu() { } void invers(int ix) { - varying_string<23> s; + Common::String s; /* debug('invers'); */ if (msg4 == no_choice) return; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index e55b4ed435..ea57e209ce 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -115,7 +115,7 @@ void text_color(int c) { void text1(int x, int y, int nb, int m) { - phrase st; + char st[1410]; int tay; int co; @@ -358,7 +358,7 @@ void okpas() { } void modobj(int m) { - phrase str_; + char str_[1410]; Common::String strp; int i, tay; @@ -373,7 +373,7 @@ void modobj(int m) { } void modobj2(int m, bool t1, bool t2) { - phrase str_; + char str_[1410]; Common::String strp; int i, tay; @@ -393,7 +393,7 @@ void modobj2(int m, bool t1, bool t2) { void repon(int f, int m) { Common::String str_; varying_string<40> str1; - phrase st; + char st[1410]; text1 fic; int i, xco, dx, caspe, tay; diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index dea21bde0a..7fc280aeae 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -199,7 +199,7 @@ void tkey1(bool d) { void tmlieu(int mli) { int cx, j, i, tail; Common::String nomp; - phrase st; + char st[1410]; if (mli == 26) mli = 15; @@ -230,7 +230,7 @@ void tlu(int af, int ob) { } void delin(int n) { - phrase s; + char s[1410]; int t; deline(n, s, t); @@ -342,7 +342,7 @@ void st1sama() { void modinv() { int cx, cy, tay, i, r; - phrase nom; + char nom[1410]; Common::String nomp; cy = 0; @@ -366,7 +366,7 @@ void sparl(float adr, float rep) { const array<1, 8, int> haut = {{0, 1, -3, 6, -2, 2, 7, -1}}; int key, ad, tay, repint; - phrase st; + char st[1410]; repint = trunc(rep); hide_mouse(); diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index f474766ee4..1137f9001e 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -57,7 +57,7 @@ const byte tab31[32]= { 119, 0, 0, 0, 0, 0, 0, 0 }; -void deline(int num , phrase &l , int &tl); +void deline(int num , char *l , int &tl); static void cinq_huit(char &c, int &ind, byte &pt, bool &the_end) { const unsigned char rap[32] = { @@ -114,7 +114,7 @@ static void cinq_huit(char &c, int &ind, byte &pt, bool &the_end) { } } /* 5-8 */ -void deline(int num , phrase &l , int &tl) { +void deline(int num , char *l , int &tl) { int i, j, ts; char let; byte ps, k; @@ -141,10 +141,10 @@ void deline(int num , phrase &l , int &tl) { } /* DETEX */ -void afftex(phrase ch, int x, int y, int dx, int dy, int typ); +void afftex(char *ch, int x, int y, int dx, int dy, int typ); -static int l_motsuiv(int p, phrase &ch, int &tab) { +static int l_motsuiv(int p, char *ch, int &tab) { int c; int l_motsuiv_result; @@ -154,7 +154,7 @@ static int l_motsuiv(int p, phrase &ch, int &tab) { return l_motsuiv_result; } -void afftex(phrase ch, int x, int y, int dx, int dy, int typ) { +void afftex(char *ch, int x, int y, int dx, int dy, int typ) { bool the_end; char touch; int xf, yf; diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index 27f9c6c617..14ef8c6c7e 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -33,9 +33,9 @@ namespace Mortevielle { static void cinq_huit(char &c, int &ind, byte &pt, bool &the_end); -void deline(int num , phrase &l , int &tl); -static int l_motsuiv(int p, phrase &ch, int &tab); -void afftex(phrase ch, int x, int y, int dx, int dy, int typ); +void deline(int num , char *l , int &tl); +static int l_motsuiv(int p, char *ch, int &tab); +void afftex(char *ch, int x, int y, int dx, int dy, int typ); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index dbb0977c56..ab669e121a 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -80,7 +80,7 @@ void ani50() { /* overlay */ void init_menu() { int i, j, tai; - phrase st; + char st[1410]; untyped_file f; assign(f, "menufr.mor"); @@ -172,7 +172,7 @@ void ani50() { /* overlay */ void chartex() { int i; untyped_file fibyte; - phrase s; + char s[1410]; /* debug('o3 chartex'); */ i = 0; @@ -202,7 +202,7 @@ void ani50() { { int cy, tay; - phrase st; + char st[1410]; float ix; char ch; diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index db44ce33ea..50490dfd27 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -39,7 +39,7 @@ namespace Mortevielle { int i, j, k, y, memk; int tay , tmax; int rep, prem, der; - phrase st; + char st[1410]; char key; mult_rect coor; array<1, 14, Common::String> chaines; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 42f95d5615..44a78e1529 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -166,22 +166,22 @@ const byte tnocon[364] = { }; -const matrix<1, 8, 1, 4, byte> don -= {{{{ 7, 37, 22, 8}}, - {{19, 33, 23, 7}}, - {{31, 89, 10, 21}}, - {{43, 25, 11, 5}}, - {{55, 37, 5, 8}}, - {{64, 13, 11, 2}}, - {{62, 22, 13, 4}}, - {{62, 25, 13, 5}} - } +const byte don[9][5] = { + { 0, 0, 0, 0, 0}, + { 0, 7, 37, 22, 8}, + {0, 19, 33, 23, 7}, + {0, 31, 89, 10, 21}, + {0, 43, 25, 11, 5}, + {0, 55, 37, 5, 8}, + {0, 64, 13, 11, 2}, + {0, 62, 22, 13, 4}, + {0, 62, 25, 13, 5} }; -const array<1, 2, varying_string<11> > fic -= {{ " Sauvegarde", - " Chargement" - } +const char *fic[3] = { + "", + " Sauvegarde", + " Chargement" }; const byte addv[2] = {8, 8}; @@ -201,7 +201,6 @@ const byte rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; /*-------------------------------- TYPES --------------------------------*/ /*---------------------------------------------------------------------------*/ -typedef file fichier_byte; struct sav_chaine { int conf; char pourc[11]; @@ -215,7 +214,7 @@ struct sav_chaine { struct registres { int ax, bx, cx, dx, bp, si, di, ds, es, flags; }; -typedef char[1410] phrase; + struct ind { int indis; byte point; @@ -369,7 +368,6 @@ byte tabdon[4001]; Common::String stpou; /* donne le % d'indices */ byte is; char mode; -fichier_byte ficdes; Common::String al_mess, err_mess, ind_mess, -- cgit v1.2.3 From 38b1cc473988db5f7f95e1a1c464844052171ca9 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 29 Dec 2011 21:03:56 +0000 Subject: MORTEVIELLE: More compilation fixes --- engines/mortevielle/alert.h | 4 ---- engines/mortevielle/ques.cpp | 2 +- engines/mortevielle/var_mor.cpp | 6 +++--- engines/mortevielle/var_mor.h | 35 ++++++++++++++--------------------- 4 files changed, 18 insertions(+), 29 deletions(-) diff --git a/engines/mortevielle/alert.h b/engines/mortevielle/alert.h index 6419e814cf..4c53b14416 100644 --- a/engines/mortevielle/alert.h +++ b/engines/mortevielle/alert.h @@ -33,10 +33,6 @@ namespace Mortevielle { int do_alert(Common::String str_, int n); -static void decod(Common::String s, int &nbc, int &nbl, int &col, Common::String &c, Common::String &cs); -static void posit(int ji, int &coldep, int &esp); -static void fait_boite(int lidep, int nli, int tx); -static void fait_choix(Common::String c, int &coldep, int &nbcase, array<1, 2, varying_string<3> > &s, int &esp); int do_alert(Common::String str_, int n); } // End of namespace Mortevielle diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index 50490dfd27..d52d89e53e 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -41,7 +41,7 @@ namespace Mortevielle { int rep, prem, der; char st[1410]; char key; - mult_rect coor; + rectangle coor[max_rect]; array<1, 14, Common::String> chaines; int compte; diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 25789e29b3..34c1607cbc 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -97,9 +97,9 @@ void hirs() { /* procedure affput(Chx,Gd,x,y,coul,char:int); external 'c:\mc\divaf.com'; */ -void affcar(int gd, int x, int y, int coul, int char) { - if (res == 1) affput(1, gd, ((cardinal)x >> 1), y, coul, char); - else affput(1, gd, x, y, coul, char); +void affcar(int gd, int x, int y, int coul, int chr) { + if (res == 1) affput(1, gd, ((cardinal)x >> 1), y, coul, chr); + else affput(1, gd, x, y, coul, chr); } void putpix(int gd, int x, int y, int coul) { diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 44a78e1529..f912789b34 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -219,9 +219,6 @@ struct ind { int indis; byte point; }; -typedef ind[maxtd + 1] tabind; - -typedef matrix<1, 7, 0, 24, byte> tab_mlieu; typedef int word1; struct chariot { @@ -236,18 +233,14 @@ struct doublet { byte x, y; }; -typedef doublet[16] tabdb; - struct rectangle { int x1, x2, y1, y2; bool etat; }; -typedef rectangle[max_rect] mult_rect; - struct pattern { byte tay, tax; - matrix<1, max_patt, 1, max_patt, byte> des; + byte des[max_patt+1][max_patt+1]; }; @@ -376,34 +369,34 @@ Common::String al_mess, int invt[8]; int nbrep[8]; int nbrepm[8]; -int disc[8] +int disc[8]; int msg[5]; int depl[7]; -array<1, 8, varying_string<22> > inv; -array<1, 7, varying_string<23> > dep; -array<1, 21, varying_string<10> > act; -array<1, 5, varying_string<11> > self_; -array<1, 8, varying_string<5> > dis; +Common::String inv[9]; +Common::String dep[8]; +Common::String act[22]; +Common::String self_[6]; +Common::String dis[9]; char touv[7]; sav_chaine s, s1; byte bufcha[391]; -matrix<1, 6, 0, 23, byte> lettres; +byte lettres[7][24]; byte palher[16]; int t_mot[maxti + 1]; int tay_tchar; -tabind t_rec; -file sauv_t; -untyped_file fibyte; -tab_mlieu v_lieu; +ind t_rec[maxtd + 1]; +//file sauv_t; +//untyped_file fibyte; +byte v_lieu[8][25]; int l[108]; int tbi[256]; chariot c1, c2, c3; float addfix; t_pcga palsav[91]; -tabdb tabpal[91]; +doublet tabpal[91][16]; t_pcga palcga[91]; pattern tpt[15]; @@ -412,7 +405,7 @@ pattern tpt[15]; /*---------------------------------------------------------------------------*/ void hirs(); -void affcar(int gd, int x, int y, int coul, int char); +void affcar(int gd, int x, int y, int coul, int chr); void putpix(int gd, int x, int y, int coul); } // End of namespace Mortevielle -- cgit v1.2.3 From 98ea43b7c58bf8c5dbc113dcdb8cc78366a167ba Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 30 Dec 2011 21:34:33 +1100 Subject: MORTEVIELLE: Converted remaining varying_string instances to Common::String --- engines/mortevielle/actions.cpp | 2 +- engines/mortevielle/alert.cpp | 4 ++-- engines/mortevielle/disk.cpp | 2 +- engines/mortevielle/mor.cpp | 4 ++-- engines/mortevielle/mor2.cpp | 2 +- engines/mortevielle/outtext.cpp | 2 +- engines/mortevielle/ovd1.cpp | 2 +- engines/mortevielle/ques.cpp | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 25d9af0c24..ab3481d2e3 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -989,7 +989,7 @@ L2: int ix, cy, cx, max, haz, suj, co, lig, icm, i, tay, choi, x, y, c; char tou; - array<1, 46, varying_string<40> > lib; + Common::String lib[47]; char st[1410]; bool f; diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index 1d5901bcd1..ec7c5f0721 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -100,7 +100,7 @@ static void fait_boite(int lidep, int nli, int tx) { -static void fait_choix(Common::String c, int &coldep, int &nbcase, array<1, 2, varying_string<3> > &s, int &esp) { +static void fait_choix(Common::String c, int &coldep, int &nbcase, Common::String[] &s, int &esp) { int i, l, x; char ch; @@ -126,7 +126,7 @@ int do_alert(Common::String str_, int n) { Common::String st, chaine; matrix<1, 2, 1, 2, int> limit; char c, dumi; - array<1, 2, varying_string<3> > s; + Common::String s[3]; int cx, cy, cd, nbcol, nblig; bool touch, newaff, test, test1, test2, test3, dum; Common::String cas; diff --git a/engines/mortevielle/disk.cpp b/engines/mortevielle/disk.cpp index a18bdd8a6f..89d01c59c9 100644 --- a/engines/mortevielle/disk.cpp +++ b/engines/mortevielle/disk.cpp @@ -50,7 +50,7 @@ void dem1() { void takesav(int n) { untyped_file f; int i; - varying_string<10> st; + Common::String st; dem1(); /* -- chargement du fichier 'sauve#n.mor' -- */ diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index ea57e209ce..083187ea9d 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -268,7 +268,7 @@ void ecrf7() { void clsf10() { int co, cod; - varying_string<8> st; + Common::String st; /* debug('clsf10'); */ hide_mouse(); @@ -392,7 +392,7 @@ void modobj2(int m, bool t1, bool t2) { void repon(int f, int m) { Common::String str_; - varying_string<40> str1; + Common::String str1; char st[1410]; text1 fic; int i, xco, dx, caspe, tay; diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 7fc280aeae..d41f480246 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -46,7 +46,7 @@ void tinke() { const char d5 = '1'; const char d6[] = "OK"; int cx, cy, haz, nh, cf, j, h, m, cd; - varying_string<3> stpo; + Common::String stpo; bool am; anyone = false; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 1137f9001e..84149699fd 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -160,7 +160,7 @@ void afftex(char *ch, int x, int y, int dx, int dy, int typ) { int xf, yf; int xc, yc; int tab, p; - varying_string<255> s; + Common::String s; int i, j, nt; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index ab669e121a..5198d7f6e8 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -348,7 +348,7 @@ void ani50() { /* overlay */ void suite() { - varying_string<25> cpr; + Common::String cpr; hirs(); repon(7, 2035); diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index d52d89e53e..870f8b7435 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -42,7 +42,7 @@ namespace Mortevielle { char st[1410]; char key; rectangle coor[max_rect]; - array<1, 14, Common::String> chaines; + Common::String chaines[15]; int compte; -- cgit v1.2.3 From c8774837efabfea71051fbffddfc715d0d9c6f9a Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 30 Dec 2011 22:04:20 +1100 Subject: MORTEVIELLE: Fixed variable usage in var_mor.h and var_mor.cpp --- engines/mortevielle/mor2.cpp | 1 + engines/mortevielle/mouse.cpp | 1 + engines/mortevielle/var_mor.cpp | 199 ++++++++++++++++++++++++++++++++++++++++ engines/mortevielle/var_mor.h | 149 ++++++++++++------------------ 4 files changed, 260 insertions(+), 90 deletions(-) diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index d41f480246..b6c3ee93fe 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -26,6 +26,7 @@ */ #include "mortevielle/mor2.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 8b4fcaa84a..0a00cc3c76 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -26,6 +26,7 @@ */ #include "mortevielle/mouse.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 34c1607cbc..89ebda43e1 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -30,6 +30,205 @@ namespace Mortevielle { +/*---------------------------------------------------------------------------*/ +/*------------------------------ CONSTANTS ------------------------------*/ +/*---------------------------------------------------------------------------*/ + +const byte tabdbc[18] = {7, 23, 7, 14, 13, 9, 14, 9, 5, 12, 6, 12, 13, 4, 0, 4, 5, 9}; +const byte tabdph[16] = {0, 10, 2, 0, 2, 10, 3, 0, 3, 7, 5, 0, 6, 7, 7, 10}; +const byte typcon[26] = {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3}; +const byte intcon[26] = {1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}; +const byte tnocon[364] = { + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + + +const byte don[9][5] = { + { 0, 0, 0, 0, 0}, + { 0, 7, 37, 22, 8}, + {0, 19, 33, 23, 7}, + {0, 31, 89, 10, 21}, + {0, 43, 25, 11, 5}, + {0, 55, 37, 5, 8}, + {0, 64, 13, 11, 2}, + {0, 62, 22, 13, 4}, + {0, 62, 25, 13, 5} +}; + +const char *fic[3] = { + "", + " Sauvegarde", + " Chargement" +}; + +const byte addv[2] = {8, 8}; + +const char recom[] = " Recommence "; + +const char f3[] = "F3: Encore"; +const char f8[] = "F8: Suite"; + +const byte rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; + +/*---------------------------------------------------------------------------*/ +/*------------------------------ VARIABLES ------------------------------*/ +/*---------------------------------------------------------------------------*/ + +bool blo, + bh1, + bf1, + bh2, + bh4, + bf4, + bh5, + bh6, + bh8, + bt3, + bt7, + bh9, + + sonoff, + main1, + choisi, + test0, + f2_all, + imen, + cache, + iesc, + perdu, + col, + syn, + fouil, + zuul, + tesok, + obpart, + okdes, + solu, + arret, + anyone, + brt, + rect, + rech_cfiec, + active_menu; + + +int x, + y, + t, + vj, + li, + vh, + vm, + jh, + mh, + cs, + gd, /* Gd = graph device */ + hdb, + hfb, + heu, + jou, + key, + min, + num, + max, + res, + ment, + haut, + caff, + maff, + crep, + ades, + iouv, + inei, + ctrm, + dobj, + msg3, + msg4, + mlec, + newgd, + c_zzz, + mchai, + menup, + ipers, + ledeb, + lefin, + mpers, + mnumo, + xprec, + yprec, + perdep, + prebru, + typlec, + num_ph, + xwhere, + ywhere, + numpal, + lderobj, + nb_word, + ptr_oct, + k_tempo, + ptr_tcph, + ptr_word, + color_txt; + +int t_cph[6401]; +byte tabdon[4001]; +/* t_dxx : array[0..121] of int;*/ +Common::String stpou; /* donne le % d'indices */ +byte is; +char mode; +Common::String al_mess, + err_mess, + ind_mess, + al_mess2; + +int invt[8]; +int nbrep[8]; +int nbrepm[8]; +int disc[8]; +int msg[5]; +int depl[7]; +Common::String inv[9]; +Common::String dep[8]; +Common::String act[22]; +Common::String self_[6]; +Common::String dis[9]; +char touv[7]; +sav_chaine s, s1; +byte bufcha[391]; + +byte lettres[7][24]; + +byte palher[16]; + +int t_mot[maxti + 1]; +int tay_tchar; +ind t_rec[maxtd + 1]; +//file sauv_t; +//untyped_file fibyte; +byte v_lieu[8][25]; +int l[108]; +int tbi[256]; +chariot c1, c2, c3; +float addfix; +t_pcga palsav[91]; +doublet tabpal[91][16]; +t_pcga palcga[91]; +pattern tpt[15]; + /*---------------------------------------------------------------------------*/ /*-------------------- PROCEDURES AND FONCTIONS -----------------------*/ /*---------------------------------------------------------------------------*/ diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index f912789b34..59d98fe58e 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -43,7 +43,7 @@ namespace Mortevielle { /*---------------------------------------------------------------------------*/ -/*------------------------- CONSTANTES ----------------------------------*/ +/*------------------------- CONSTANTS ----------------------------------*/ /*---------------------------------------------------------------------------*/ const float freq0 = 1.19318e6; @@ -79,12 +79,6 @@ const int maxti = 7975; const int maxtd = 600; const int max_rect = 14; -const int ams = 0; -const int cga = 1; -const int ega = 2; -const int her = 3; -const int tan = 4; - const int c_repon = 0; const int c_st41 = 186; const int c_tparler = 247; @@ -144,57 +138,26 @@ const int slire = 0x403; const int sposer = 0x404; const int sregarder = 0x405; -const byte tabdbc[18] = {7, 23, 7, 14, 13, 9, 14, 9, 5, 12, 6, 12, 13, 4, 0, 4, 5, 9}; -const byte tabdph[16] = {0, 10, 2, 0, 2, 10, 3, 0, 3, 7, 5, 0, 6, 7, 7, 10}; -const byte typcon[26] = {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3}; -const byte intcon[26] = {1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}; -const byte tnocon[364] = { - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - - -const byte don[9][5] = { - { 0, 0, 0, 0, 0}, - { 0, 7, 37, 22, 8}, - {0, 19, 33, 23, 7}, - {0, 31, 89, 10, 21}, - {0, 43, 25, 11, 5}, - {0, 55, 37, 5, 8}, - {0, 64, 13, 11, 2}, - {0, 62, 22, 13, 4}, - {0, 62, 25, 13, 5} -}; +const int max_patt = 20; -const char *fic[3] = { - "", - " Sauvegarde", - " Chargement" -}; +extern const byte tabdbc[18]; +extern const byte tabdph[16]; +extern const byte typcon[26]; +extern const byte intcon[26]; +extern const byte tnocon[364]; -const byte addv[2] = {8, 8}; +extern const byte don[9][5]; -const char recom[] = " Recommence "; +extern const char *fic[3]; -const char f3[] = "F3: Encore"; -const char f8[] = "F8: Suite"; +extern const byte addv[2]; -const int max_patt = 20; +extern const char recom[]; +extern const char f3[]; +extern const char f8[]; -const byte rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; +extern const byte rang[16]; /*---------------------------------------------------------------------------*/ @@ -254,11 +217,17 @@ struct t_pcga { nhom a[16]; }; +/*---------------------------------------------------------------------------*/ +/*------------------------------ ENUMS ------------------------------*/ +/*---------------------------------------------------------------------------*/ + +enum GraphicModes { ams = 0, cga = 1, ega = 2, her = 3, tan = 4 }; + /*---------------------------------------------------------------------------*/ /*------------------------------ VARIABLES ------------------------------*/ /*---------------------------------------------------------------------------*/ -bool blo, +extern bool blo, bh1, bf1, bh2, @@ -296,7 +265,7 @@ bool blo, active_menu; -int x, +extern int x, y, t, vj, @@ -355,50 +324,50 @@ int x, ptr_word, color_txt; -int t_cph[6401]; -byte tabdon[4001]; +extern int t_cph[6401]; +extern byte tabdon[4001]; /* t_dxx : array[0..121] of int;*/ -Common::String stpou; /* donne le % d'indices */ -byte is; -char mode; -Common::String al_mess, +extern Common::String stpou; /* donne le % d'indices */ +extern byte is; +extern char mode; +extern Common::String al_mess, err_mess, ind_mess, al_mess2; -int invt[8]; -int nbrep[8]; -int nbrepm[8]; -int disc[8]; -int msg[5]; -int depl[7]; -Common::String inv[9]; -Common::String dep[8]; -Common::String act[22]; -Common::String self_[6]; -Common::String dis[9]; -char touv[7]; -sav_chaine s, s1; -byte bufcha[391]; - -byte lettres[7][24]; - -byte palher[16]; - -int t_mot[maxti + 1]; -int tay_tchar; -ind t_rec[maxtd + 1]; +extern int invt[8]; +extern int nbrep[8]; +extern int nbrepm[8]; +extern int disc[8]; +extern int msg[5]; +extern int depl[7]; +extern Common::String inv[9]; +extern Common::String dep[8]; +extern Common::String act[22]; +extern Common::String self_[6]; +extern Common::String dis[9]; +extern char touv[7]; +extern sav_chaine s, s1; +extern byte bufcha[391]; + +extern byte lettres[7][24]; + +extern byte palher[16]; + +extern int t_mot[maxti + 1]; +extern int tay_tchar; +extern ind t_rec[maxtd + 1]; //file sauv_t; //untyped_file fibyte; -byte v_lieu[8][25]; -int l[108]; -int tbi[256]; -chariot c1, c2, c3; -float addfix; -t_pcga palsav[91]; -doublet tabpal[91][16]; -t_pcga palcga[91]; -pattern tpt[15]; +extern byte v_lieu[8][25]; +extern int l[108]; +extern int tbi[256]; +extern chariot c1, c2, c3; +extern float addfix; +extern t_pcga palsav[91]; +extern doublet tabpal[91][16]; +extern t_pcga palcga[91]; +extern pattern tpt[15]; /*---------------------------------------------------------------------------*/ /*------------------- PROCEDURES AND FONCTIONS ------------------------*/ -- cgit v1.2.3 From c1ead19c5d68df4d4acb52426162cd67e84d003b Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 30 Dec 2011 22:09:59 +1100 Subject: MORTEVIELLE: cardinal -> uint --- engines/mortevielle/actions.cpp | 2 +- engines/mortevielle/alert.cpp | 10 +++++----- engines/mortevielle/boite.cpp | 4 ++-- engines/mortevielle/keyboard.cpp | 2 +- engines/mortevielle/menu.cpp | 4 ++-- engines/mortevielle/mor.cpp | 16 ++++++++-------- engines/mortevielle/mouse.cpp | 16 ++++++++-------- engines/mortevielle/outtext.cpp | 12 ++++++------ engines/mortevielle/ovd1.cpp | 6 +++--- engines/mortevielle/parole.cpp | 6 +++--- engines/mortevielle/parole2.cpp | 4 ++-- engines/mortevielle/prog.cpp | 2 +- engines/mortevielle/taffich.cpp | 2 +- engines/mortevielle/var_mor.cpp | 2 +- 14 files changed, 44 insertions(+), 44 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index ab3481d2e3..ddfd432237 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -1049,7 +1049,7 @@ L2: x = x * (3 - res); if (x > 319) cx = 41; else cx = 1; - cy = succ(int, (cardinal)y >> 3); /* 0-199 => 1-25 */ + cy = succ(int, (uint)y >> 3); /* 0-199 => 1-25 */ if ((cy > 23) || ((cx == 41) && (set::of(range(20, 22), eos).has(cy)))) { if (choi != 0) { lig = ((choi - 1) % 23) << 3; diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index ec7c5f0721..c939da6f9c 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -89,7 +89,7 @@ static void fait_boite(int lidep, int nli, int tx) { int x, y, xx, yy; if (tx > 640) tx = 640; - x = 320 - ((cardinal)tx >> 1); + x = 320 - ((uint)tx >> 1); y = pred(int, lidep) << 3; xx = x + tx; yy = y + (nli << 3); @@ -163,15 +163,15 @@ int do_alert(Common::String str_, int n) { } while (!(chaine[i] == ']')); } if (nbcase == 1) esp = nbcol - 40; - else esp = (cardinal)(nbcol - nbcase * 40) >> 1; - coldep = 320 - ((cardinal)nbcol >> 1) + ((cardinal)esp >> 1); + else esp = (uint)(nbcol - nbcase * 40) >> 1; + coldep = 320 - ((uint)nbcol >> 1) + ((uint)esp >> 1); fait_choix(cas, coldep, nbcase, s, esp); - limit[1][1] = ((cardinal)(coldep) >> 1) * res; + limit[1][1] = ((uint)(coldep) >> 1) * res; limit[1][2] = limit[1][1] + 40; if (nbcase == 1) { limit[2][1] = limit[2][2]; } else { - limit[2][1] = ((cardinal)(320 + ((cardinal)esp >> 1)) >> 1) * res; + limit[2][1] = ((uint)(320 + ((uint)esp >> 1)) >> 1) * res; limit[2][2] = (limit[2][1]) + 40; } show_mouse(); diff --git a/engines/mortevielle/boite.cpp b/engines/mortevielle/boite.cpp index 0a37cc7af2..0a3b5dac23 100644 --- a/engines/mortevielle/boite.cpp +++ b/engines/mortevielle/boite.cpp @@ -38,8 +38,8 @@ void boite(int x, int y, int dx, int dy, int coul) { /* debug('boite'); */ hide_mouse(); if (res == 1) { - x = (cardinal)x >> 1; - dx = (cardinal)dx >> 1; + x = (uint)x >> 1; + dx = (uint)dx >> 1; } xi = x; yi = y; diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index cce1bdeb32..ddb78cbf74 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -50,7 +50,7 @@ int testou() { case '\1': case '\3': case '\5' : { - newgd = (cardinal)pred(int, ord(ch)) >> 1; + newgd = (uint)pred(int, ord(ch)) >> 1; testou_result = 61; return testou_result; } diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index d790bf25e8..e00d8b9fe3 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -156,7 +156,7 @@ void menu_aff() { putpix(gd, x, y + 1, 0); putpix(gd, x, y, color); } - msk = (cardinal)msk >> 1; + msk = (uint)msk >> 1; x = x + 1; } ind_tabl = succ(int, ind_tabl); @@ -229,7 +229,7 @@ void util(int x, int y) { else ix = 3; xmx = dxcar * ix * res + xmn + 2; if ((x > xmn) && (x < xmx) && (y < ymx) && (y > 15)) { - ix = pred(int, (cardinal)y >> 3) + (msg3 << 8); + ix = pred(int, (uint)y >> 3) + (msg3 << 8); if (ix != msg4) { invers(1); msg4 = ix; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 083187ea9d..75add66e6a 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -54,9 +54,9 @@ int readclock() { r.ax = 0x2c00; intr(0x21, r); { - h = (cardinal)r.cx >> 8; + h = (uint)r.cx >> 8; m = r.cx % 256; - s = (cardinal)r.dx >> 8; + s = (uint)r.dx >> 8; } m = m * 60; h = h * 3600; @@ -285,7 +285,7 @@ void clsf10() { else if (s.conf > 65) st = "Malsaine"; if (res == 1) co = 10; else co = 6; - co = 574 - ((cardinal)co * length(st) >> 1); + co = 574 - ((uint)co * length(st) >> 1); putxy(co, 92); writeg(st, 4); if (res == 1) co = 620; @@ -331,7 +331,7 @@ void calch(int &j, int &h, int &m) { nh = readclock(); th = jh + ((nh - mh) / t); m = ((th % 2) + vm) * 30; - h = ((cardinal)th >> 1) + vh; + h = ((uint)th >> 1) + vh; if (m == 60) { m = 0; h = h + 1; @@ -347,7 +347,7 @@ void conv(int x, int &y) { cx = 1; y = 128; while (cx < x) { - y = (cardinal)y >> 1; + y = (uint)y >> 1; cx = succ(int, cx); } } @@ -656,12 +656,12 @@ void pendule() { paint_rect(578, 114, 6, 18); if (set::of(cga, her, eos).has(gd)) co = 0; else co = 1; - if (min == 0) droite(((cardinal)x >> 1)*res, y, ((cardinal)x >> 1)*res, (y - rg), co); - else droite(((cardinal)x >> 1)*res, y, ((cardinal)x >> 1)*res, (y + rg), co); + if (min == 0) droite(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y - rg), co); + else droite(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y + rg), co); h = heu; if (h > 12) h = h - 12; if (h == 0) h = 12; - droite(((cardinal)x >> 1)*res, y, ((cardinal)(x + cv[1][h]) >> 1)*res, y + cv[2][h], co); + droite(((uint)x >> 1)*res, y, ((uint)(x + cv[1][h]) >> 1)*res, y + cv[2][h], co); show_mouse(); putxy(568, 154); if (heu > 11) writeg("PM ", 1); diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 0a00cc3c76..791920f845 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -98,7 +98,7 @@ void hide_mouse() { switch (gd) { case cga : { k = 0; - j = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 2); + j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); do { memw[0xb000 + j] = s_s[0][k]; memw[0xb800 + j + 2] = s_s[1][k]; @@ -150,7 +150,7 @@ void hide_mouse() { } break; case her : { - j = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 3); + j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); for (i = 0; i <= 5; i ++) { for (k = 0; k <= 3; k ++) memw[0xb000 + k * 0x200 + j] = s_s[i][k]; j = j + 80; @@ -158,7 +158,7 @@ void hide_mouse() { } break; case tan : { - j = ((cardinal)y_s >> 2) * 160 + ((cardinal)x_s >> 1); + j = ((uint)y_s >> 2) * 160 + ((uint)x_s >> 1); k = 0; do { for (i = 0; i <= 3; i ++) { @@ -189,7 +189,7 @@ void show_mouse() { switch (gd) { case cga : { k = 0; - j = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 2); + j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); do { s_s[0][k] = memw[0xb800 + j]; s_s[1][k] = memw[0xb800 + j + 2]; @@ -237,7 +237,7 @@ void show_mouse() { } break; case her : { - j = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 3); + j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); for (i = 0; i <= 5; i ++) { for (k = 0; k <= 3; k ++) s_s[i][k] = memw[0xb000 + k * 0x200 + j]; j = j + 80; @@ -245,7 +245,7 @@ void show_mouse() { } break; case tan : { - j = ((cardinal)y_s >> 2) * 160 + ((cardinal)x_s >> 1); + j = ((uint)y_s >> 2) * 160 + ((uint)x_s >> 1); k = 0; do { for (i = 0; i <= 3; i ++) { @@ -282,14 +282,14 @@ void pos_mouse(int x, int y) { y_s = y; switch (gd) { case ams : { - p_o_s = ((cardinal)y_s >> 1) * 80 + ((cardinal)x_s >> 3) + (y_s & 1) * 0x2000; + p_o_s = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3) + (y_s & 1) * 0x2000; } break; /*cga : begin P_O_S:=(Y_S shr 1)*80+X_S shr 2+(Y_S and 1)*$2000; end;*/ case ega : { - p_o_s = y_s * 80 + ((cardinal)x_s >> 3); + p_o_s = y_s * 80 + ((uint)x_s >> 3); } break; } /* case Gd */ diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 84149699fd..adb094235b 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -71,15 +71,15 @@ static void cinq_huit(char &c, int &ind, byte &pt, bool &the_end) { /* 5-8 */ oct = t_mot[ind]; - oct = (cardinal)(oct << (16 - pt)) >> (16 - pt); + oct = (uint)(oct << (16 - pt)) >> (16 - pt); if (pt < 6) { ind = ind + 1; oct = oct << (5 - pt); pt = pt + 11; - oct = oct | ((cardinal)t_mot[ind] >> pt); + oct = oct | ((uint)t_mot[ind] >> pt); } else { pt = pt - 5; - oct = (cardinal)oct >> pt; + oct = (uint)oct >> pt; } switch (oct) { @@ -91,15 +91,15 @@ static void cinq_huit(char &c, int &ind, byte &pt, bool &the_end) { case 30: case 31 : { ocd = t_mot[ind]; - ocd = (cardinal)(ocd << (16 - pt)) >> (16 - pt); + ocd = (uint)(ocd << (16 - pt)) >> (16 - pt); if (pt < 6) { ind = ind + 1; ocd = ocd << (5 - pt); pt = pt + 11; - ocd = ocd | ((cardinal)t_mot[ind] >> pt); + ocd = ocd | ((uint)t_mot[ind] >> pt); } else { pt = pt - 5; - ocd = (cardinal)ocd >> pt; + ocd = (uint)ocd >> pt; } if (oct == 30) c = chr(tab30[ocd]); else c = chr(tab31[ocd]); diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 5198d7f6e8..09855440e5 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -153,8 +153,8 @@ void ani50() { nhom &with = palcga[j].a[i]; fb >> b; - with.n = (cardinal)b >> 4; - with.hom[0] = ((cardinal)b >> 2) & 3; + with.n = (uint)b >> 4; + with.hom[0] = ((uint)b >> 2) & 3; with.hom[1] = b & 3; } } @@ -236,7 +236,7 @@ void ani50() { case '\1': case '\3': case '\5' : - gd = (cardinal)ord(ch) >> 1; + gd = (uint)ord(ch) >> 1; break; case '\10' : gd = her; diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index 3f92d78671..c2c9222592 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -30,13 +30,13 @@ namespace Mortevielle { void spfrac(int wor) { - c3.rep = (cardinal)wor >> 12; + c3.rep = (uint)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; + c3.freq = ((uint)wor >> 6) & 7; + c3.acc = ((uint)wor >> 9) & 7; } void charg_car() { diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index 8685feb39f..ead95762eb 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -56,13 +56,13 @@ void trait_ph() { ledeb = swap(t_cph[ptr_tcph]) + deca[typlec]; lefin = swap(t_cph[ptr_tcph + 1]) + deca[typlec]; nb_word = lefin - ledeb; - ptr_tcph = (cardinal)ledeb >> 1; + ptr_tcph = (uint)ledeb >> 1; ptr_word = 0; do { memw[adword + ptr_word] = t_cph[ptr_tcph]; ptr_word = ptr_word + 2; ptr_tcph = ptr_tcph + 1; - } while (!(ptr_tcph >= ((cardinal)lefin >> 1))); + } while (!(ptr_tcph >= ((uint)lefin >> 1))); ptr_oct = 0; ptr_word = 0; diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 08b63fe3aa..42977c47b5 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -267,7 +267,7 @@ void tecran() { erase_menu(); imen = false; if (set::of('\1', '\3', '\5', '\7', '\11', eos).has(inkey)) { - change_gd((cardinal)pred(int, ord(inkey)) >> 1); + change_gd((uint)pred(int, ord(inkey)) >> 1); return; } if (choisi && (msg[3] == sauve)) sv_game(msg[4] & 7); diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 0a19301173..6a937e2e93 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -177,7 +177,7 @@ void taffich() { if (gd == her) { for (i = 0; i <= 15; i ++) { palh = memw[0x7000 + (succ(int, i) << 1)]; - alllum[i] = (palh & 15) + (((cardinal)palh >> 12) & 15) + (((cardinal)palh >> 8) & 15); + alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); } for (i = 0; i <= 15; i ++) { k = 0; diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 89ebda43e1..9bd43beb05 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -297,7 +297,7 @@ void hirs() { /* procedure affput(Chx,Gd,x,y,coul,char:int); external 'c:\mc\divaf.com'; */ void affcar(int gd, int x, int y, int coul, int chr) { - if (res == 1) affput(1, gd, ((cardinal)x >> 1), y, coul, chr); + if (res == 1) affput(1, gd, ((uint)x >> 1), y, coul, chr); else affput(1, gd, x, y, coul, chr); } -- cgit v1.2.3 From b4934ea1bf3cdb6703749b33dddf758d8a399e0b Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 30 Dec 2011 22:27:14 +1100 Subject: MORTEVIELLE: Compilation fixes and extern prefixes to header file method declarations --- engines/mortevielle/actions.h | 62 ++++++++-------- engines/mortevielle/alert.cpp | 3 +- engines/mortevielle/alert.h | 4 +- engines/mortevielle/boite.h | 2 +- engines/mortevielle/disk.h | 8 +- engines/mortevielle/droite.h | 2 +- engines/mortevielle/keyboard.h | 6 +- engines/mortevielle/level15.h | 34 +++++---- engines/mortevielle/menu.h | 22 +++--- engines/mortevielle/mor.h | 164 ++++++++++++++++++++--------------------- engines/mortevielle/mor2.h | 84 ++++++++++----------- engines/mortevielle/mort.h | 4 +- engines/mortevielle/mouse.cpp | 15 ++-- engines/mortevielle/mouse.h | 14 ++-- engines/mortevielle/outtext.h | 8 +- engines/mortevielle/ovd1.h | 28 +++---- engines/mortevielle/parole.h | 20 ++--- engines/mortevielle/parole2.h | 8 +- engines/mortevielle/prog.h | 14 ++-- engines/mortevielle/ques.h | 2 +- engines/mortevielle/sprint.h | 7 +- engines/mortevielle/taffich.h | 7 +- engines/mortevielle/var_mor.h | 6 ++ 23 files changed, 268 insertions(+), 256 deletions(-) diff --git a/engines/mortevielle/actions.h b/engines/mortevielle/actions.h index 690de1d80e..904a58d87c 100644 --- a/engines/mortevielle/actions.h +++ b/engines/mortevielle/actions.h @@ -31,38 +31,38 @@ namespace Mortevielle { /* NIVEAU 4 */ -void taller(); -void tprendre(); -void tsprendre(); -void tsoulever(); -void tlire(); -void tslire(); -void tregarder(); -void tsregarder(); -void tfouiller(); -void tsfouiller(); -void touvrir(); -void tmettre(); -void ttourner(); -void tcacher(); -void tattacher(); -void tfermer(); -void tfrapper(); -void tposer(); -void tecouter(); -void tmanger(); -void tentrer(); -void tdormir(); -void tdefoncer(); -void tsortir(); -void tattendre(); -void tsonder(); -void tparler(); -void tsentir(); -void tgratter(); +extern void taller(); +extern void tprendre(); +extern void tsprendre(); +extern void tsoulever(); +extern void tlire(); +extern void tslire(); +extern void tregarder(); +extern void tsregarder(); +extern void tfouiller(); +extern void tsfouiller(); +extern void touvrir(); +extern void tmettre(); +extern void ttourner(); +extern void tcacher(); +extern void tattacher(); +extern void tfermer(); +extern void tfrapper(); +extern void tposer(); +extern void tecouter(); +extern void tmanger(); +extern void tentrer(); +extern void tdormir(); +extern void tdefoncer(); +extern void tsortir(); +extern void tattendre(); +extern void tsonder(); +extern void tparler(); +extern void tsentir(); +extern void tgratter(); /* NIVEAU 2 */ -void tmaj1(); -void tencore(); +extern void tmaj1(); +extern void tencore(); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index c939da6f9c..45c1b355a2 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -25,8 +25,9 @@ * Copyright (c) 1988-1989 Lankhor */ -#include "mortevielle/alert.h" #include "common/str.h" +#include "mortevielle/alert.h" +#include "mortevielle/level15.h" namespace Mortevielle { diff --git a/engines/mortevielle/alert.h b/engines/mortevielle/alert.h index 4c53b14416..f7a9e7d1c1 100644 --- a/engines/mortevielle/alert.h +++ b/engines/mortevielle/alert.h @@ -32,8 +32,8 @@ namespace Mortevielle { -int do_alert(Common::String str_, int n); -int do_alert(Common::String str_, int n); +extern int do_alert(Common::String str_, int n); +extern int do_alert(Common::String str_, int n); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/boite.h b/engines/mortevielle/boite.h index d0e7b0e2e3..d4a1d1e45f 100644 --- a/engines/mortevielle/boite.h +++ b/engines/mortevielle/boite.h @@ -30,7 +30,7 @@ namespace Mortevielle { -void boite(int x, int y, int dx, int dy, int coul); +extern void boite(int x, int y, int dx, int dy, int coul); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/disk.h b/engines/mortevielle/disk.h index 464c3b7e1a..06df8e029a 100644 --- a/engines/mortevielle/disk.h +++ b/engines/mortevielle/disk.h @@ -30,10 +30,10 @@ namespace Mortevielle { -void dem1(); -void takesav(int n); -void ld_game(int n); -void sv_game(int n); +extern void dem1(); +extern void takesav(int n); +extern void ld_game(int n); +extern void sv_game(int n); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/droite.h b/engines/mortevielle/droite.h index 73ed30d1ad..6017f481cd 100644 --- a/engines/mortevielle/droite.h +++ b/engines/mortevielle/droite.h @@ -30,7 +30,7 @@ namespace Mortevielle { -void droite(int x, int y, int xx, int yy, int coul); +extern void droite(int x, int y, int xx, int yy, int coul); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/keyboard.h b/engines/mortevielle/keyboard.h index fbef23feb0..7b2510fe06 100644 --- a/engines/mortevielle/keyboard.h +++ b/engines/mortevielle/keyboard.h @@ -30,9 +30,9 @@ namespace Mortevielle { -char readkey1(); -int testou(); -void teskbd(); +extern char readkey1(); +extern int testou(); +extern void teskbd(); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/level15.h b/engines/mortevielle/level15.h index 73a9d3f32b..aee94c9c09 100644 --- a/engines/mortevielle/level15.h +++ b/engines/mortevielle/level15.h @@ -28,25 +28,27 @@ #ifndef MORTEVIELLE_LEVEL15_H #define MORTEVIELLE_LEVEL15_H +#include "mortevielle/var_mor.h" + namespace Mortevielle { /* NIVEAU 15 */ -void copcha(); -bool dans_rect(rectangle r); -void outbloc(int n, pattern p, t_nhom pal); -void writepal(int n); -void pictout(int seg, int dep, int x, int y); -void putxy(int x, int y); -// int calad(int x, int y); -void sauvecr(int y, int dy); -void charecr(int y, int dy); -// int peek(int ad); -// int peekw(int ad); -// real peekl(int ad); -// void procedure poke(int ad, int n); -void adzon(); -int animof(int ouf, int num); -// void affgd(int offs, int dep, int x, int y); +extern void copcha(); +extern bool dans_rect(rectangle r); +extern void outbloc(int n, pattern p, t_nhom pal); +extern void writepal(int n); +extern void pictout(int seg, int dep, int x, int y); +extern void putxy(int x, int y); +// extern int calad(int x, int y); +extern void sauvecr(int y, int dy); +extern void charecr(int y, int dy); +// extern int peek(int ad); +// extern int peekw(int ad); +// extern real peekl(int ad); +// extern void procedure poke(int ad, int n); +extern void adzon(); +extern int animof(int ouf, int num); +// extern void affgd(int offs, int dep, int x, int y); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index 2b548a2f35..1ea6931c0e 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -33,17 +33,17 @@ namespace Mortevielle { /* NIVEAU 14*/ -void menut(int no, Common::String nom); -void menu_disable(int no); -void menu_enable(int no); -void menu_aff(); -void draw_menu(); -void invers(int ix); -void util(int x, int y); -void menu_down(int ii); -void menu_up(int xx); -void erase_menu(); -void mdn(); +extern void menut(int no, Common::String nom); +extern void menu_disable(int no); +extern void menu_enable(int no); +extern void menu_aff(); +extern void draw_menu(); +extern void invers(int ix); +extern void util(int x, int y); +extern void menu_down(int ii); +extern void menu_up(int xx); +extern void erase_menu(); +extern void mdn(); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 88e718b853..cabc3c4e92 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -33,95 +33,95 @@ namespace Mortevielle { /* Niveau 14 suite */ -void testfi(); -int readclock(); -void modif(int &nu); -void dessine(int ad, int x, int y); -void dessine_rouleau(); -void text_color(int c); +extern void testfi(); +extern int readclock(); +extern void modif(int &nu); +extern void dessine(int ad, int x, int y); +extern void dessine_rouleau(); +extern void text_color(int c); /* NIVEAU 13 */ -void text1(int x, int y, int nb, int m); -void initouv(); -void ecrf1(); -void clsf1(); -void clsf2(); -void ecrf2(); -void ecr2(Common::String str_); -void clsf3(); -void ecr3(Common::String text); -void ecrf6(); -void ecrf7(); -void clsf10(); -void stop(); -void paint_rect(int x, int y, int dx, int dy); -int hazard(int min, int max); -void calch(int &j, int &h, int &m); -void conv(int x, int &y); +extern void text1(int x, int y, int nb, int m); +extern void initouv(); +extern void ecrf1(); +extern void clsf1(); +extern void clsf2(); +extern void ecrf2(); +extern void ecr2(Common::String str_); +extern void clsf3(); +extern void ecr3(Common::String text); +extern void ecrf6(); +extern void ecrf7(); +extern void clsf10(); +extern void stop(); +extern void paint_rect(int x, int y, int dx, int dy); +extern int hazard(int min, int max); +extern void calch(int &j, int &h, int &m); +extern void conv(int x, int &y); /* NIVEAU 12 */ -void okpas(); -void modobj(int m); -void modobj2(int m, bool t1, bool t2); -void repon(int f, int m); -void f3f8(); -void t5(int cx); -void affper(int per); -void choix(int min, int max, int &per); -void cpl1(int &p); -void cpl2(int &p); -void cpl3(int &p); -void cpl5(int &p); -void cpl6(int &p); -void person(); -void chlm(int &per); -void pendule(); +extern void okpas(); +extern void modobj(int m); +extern void modobj2(int m, bool t1, bool t2); +extern void repon(int f, int m); +extern void f3f8(); +extern void t5(int cx); +extern void affper(int per); +extern void choix(int min, int max, int &per); +extern void cpl1(int &p); +extern void cpl2(int &p); +extern void cpl3(int &p); +extern void cpl5(int &p); +extern void cpl6(int &p); +extern void person(); +extern void chlm(int &per); +extern void pendule(); /************* * NIVEAU 11 * *************/ -void debloc(int l); -void cpl10(int &p, int &h); -void cpl11(int &p, int &h); -void cpl12(int &p); -void cpl13(int &p); -void cpl15(int &p); -void cpl20(int &p, int &h); -void quelq1(int l); -void quelq2(); -void quelq5(); -void quelq6(int l); -void quelq10(int h, int &per); -void quelq11(int h, int &per); -void quelq12(int &per); -void quelq15(int &per); -void quelq20(int h, int &per); -void frap(); -void nouvp(int l, int &p); -void tip(int ip, int &cx); -void ecfren(int &p, int &haz, int cf, int l); -void becfren(int l); +extern void debloc(int l); +extern void cpl10(int &p, int &h); +extern void cpl11(int &p, int &h); +extern void cpl12(int &p); +extern void cpl13(int &p); +extern void cpl15(int &p); +extern void cpl20(int &p, int &h); +extern void quelq1(int l); +extern void quelq2(); +extern void quelq5(); +extern void quelq6(int l); +extern void quelq10(int h, int &per); +extern void quelq11(int h, int &per); +extern void quelq12(int &per); +extern void quelq15(int &per); +extern void quelq20(int h, int &per); +extern void frap(); +extern void nouvp(int l, int &p); +extern void tip(int ip, int &cx); +extern void ecfren(int &p, int &haz, int cf, int l); +extern void becfren(int l); /* NIVEAU 10 */ -void init_nbrepm(); -void phaz(int &haz, int &p, int cf); -void inzon(); -void dprog(); -void pl1(int cf); -void pl2(int cf); -void pl5(int cf); -void pl6(int cf); -void pl9(int cf); -void pl10(int cf); -void pl11(int cf); -void pl12(int cf); -void pl13(int cf); -void pl15(int cf); -void pl20(int cf); -void t11(int l11, int &a); -void cavegre(); -void writetp(Common::String s, int t); -void messint(int nu); -void aniof(int ouf, int num); -void musique(int so); +extern void init_nbrepm(); +extern void phaz(int &haz, int &p, int cf); +extern void inzon(); +extern void dprog(); +extern void pl1(int cf); +extern void pl2(int cf); +extern void pl5(int cf); +extern void pl6(int cf); +extern void pl9(int cf); +extern void pl10(int cf); +extern void pl11(int cf); +extern void pl12(int cf); +extern void pl13(int cf); +extern void pl15(int cf); +extern void pl20(int cf); +extern void t11(int l11, int &a); +extern void cavegre(); +extern void writetp(Common::String s, int t); +extern void messint(int nu); +extern void aniof(int ouf, int num); +extern void musique(int so); /* NIVEAU 9 */ -void dessin(int ad); +extern void dessin(int ad); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/mor2.h b/engines/mortevielle/mor2.h index a1732a16d4..6668d54113 100644 --- a/engines/mortevielle/mor2.h +++ b/engines/mortevielle/mor2.h @@ -30,52 +30,52 @@ namespace Mortevielle { -void tinke(); -void fenat(char ans); +extern void tinke(); +extern void fenat(char ans); /* NIVEAU 8 */ -void afdes(int ad); -void tkey1(bool d); -void tmlieu(int mli); +extern void afdes(int ad); +extern void tkey1(bool d); +extern void tmlieu(int mli); /* NIVEAU 7 */ -void tlu(int af, int ob); -void delin(int n); -void affrep(); -void mfouen(); -void atf3f8(int &key); +extern void tlu(int af, int ob); +extern void delin(int n); +extern void affrep(); +extern void mfouen(); +extern void atf3f8(int &key); /* NIVEAU 6 */ -void tperd(); -void tsort(); -void st4(int ob); -void cherjer(int ob, bool &d); -void st1sama(); -void modinv(); -void sparl(float adr, float rep); -void finfouil(); -void mfoudi(); -void mennor(); -void premtet(); +extern void tperd(); +extern void tsort(); +extern void st4(int ob); +extern void cherjer(int ob, bool &d); +extern void st1sama(); +extern void modinv(); +extern void sparl(float adr, float rep); +extern void finfouil(); +extern void mfoudi(); +extern void mennor(); +extern void premtet(); /* NIVEAU 5 */ -void ajchai(); -void ajjer(int ob); -void t1sama(); -void t1vier(); -void t1neig(); -void t1deva(); -void t1derr(); -void t1deau(); -void tctrm(); -void quelquun(); -void tsuiv(); -void tfleche(); -void tcoord(int sx); -void st7(int ob); -void treg(int ob); -void avpoing(int &ob); -void rechai(int &ch); -void t23coul(int &l); -void maivid(); -void st13(int ob); -void aldepl(); +extern void ajchai(); +extern void ajjer(int ob); +extern void t1sama(); +extern void t1vier(); +extern void t1neig(); +extern void t1deva(); +extern void t1derr(); +extern void t1deau(); +extern void tctrm(); +extern void quelquun(); +extern void tsuiv(); +extern void tfleche(); +extern void tcoord(int sx); +extern void st7(int ob); +extern void treg(int ob); +extern void avpoing(int &ob); +extern void rechai(int &ch); +extern void t23coul(int &l); +extern void maivid(); +extern void st13(int ob); +extern void aldepl(); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/mort.h b/engines/mortevielle/mort.h index 0b78deb028..fa42288963 100644 --- a/engines/mortevielle/mort.h +++ b/engines/mortevielle/mort.h @@ -30,9 +30,9 @@ namespace Mortevielle { -void divers(int np, bool b); +extern void divers(int np, bool b); /* NIVEAU 0 */ -int main(int argc, const char *argv[]); +extern int main(int argc, const char *argv[]); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 791920f845..a6b1768b96 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -336,7 +336,7 @@ void mov_mouse(bool &funct, char &key) { while (p_key) { input >> kbd >> in1; read_pos_mouse(cx, cy, cd); - switch (upcase(in1)) { + switch (toupper(in1)) { case '4' : cx = cx - 8; break; @@ -382,6 +382,13 @@ void mov_mouse(bool &funct, char &key) { break; case '\33' : { p_key = keypressed(); + + if ((p_key >= ';') && (p_key <= 'D')) { + funct = true; + key = in2; + return; + } + if (p_key) { input >> kbd >> in2; switch (in2) { @@ -397,12 +404,6 @@ void mov_mouse(bool &funct, char &key) { case 'H' : cy = pred(int, cy); break; - case RANGE_10(';', 'D') : { - funct = true; - key = in2; - return; - } - break; case 'G' : { cx = cx - 1; cy = cy - 1; diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index 90fe91e373..33fd280561 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -31,13 +31,13 @@ namespace Mortevielle { void init_mouse(); -//void change_mouse(int t); -//void dessine_souris(int xf, int yf); -void hide_mouse(); -void show_mouse(); -void pos_mouse(int x, int y); -void read_pos_mouse(int &x, int &y, int &c); -void mov_mouse(bool &funct, char &key); +//extern void change_mouse(int t); +//extern void dessine_souris(int xf, int yf); +extern void hide_mouse(); +extern void show_mouse(); +extern void pos_mouse(int x, int y); +extern void read_pos_mouse(int &x, int &y, int &c); +extern void mov_mouse(bool &funct, char &key); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index 14ef8c6c7e..45b5745bbf 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -32,10 +32,10 @@ namespace Mortevielle { -static void cinq_huit(char &c, int &ind, byte &pt, bool &the_end); -void deline(int num , char *l , int &tl); -static int l_motsuiv(int p, char *ch, int &tab); -void afftex(char *ch, int x, int y, int dx, int dy, int typ); +//static void cinq_huit(char &c, int &ind, byte &pt, bool &the_end); +extern void deline(int num , char *l , int &tl); +//static int l_motsuiv(int p, char *ch, int &tab); +extern void afftex(char *ch, int x, int y, int dx, int dy, int typ); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/ovd1.h b/engines/mortevielle/ovd1.h index 4cad37c0ab..96239ed3d5 100644 --- a/engines/mortevielle/ovd1.h +++ b/engines/mortevielle/ovd1.h @@ -30,20 +30,20 @@ namespace Mortevielle { -void dem2(); -void ani50(); -//void apzuul(); -void aff50(bool c); -void init_menu(); -void charpal(); -void chartex(); -void dialpre(); -void init_lieu(); -void music(); -void charge_bruit5(); -void charge_cfiec(); -void charge_cfiph(); -void suite(); +extern void dem2(); +extern void ani50(); +//extern void apzuul(); +extern void aff50(bool c); +extern void init_menu(); +extern void charpal(); +extern void chartex(); +extern void dialpre(); +extern void init_lieu(); +extern void music(); +extern void charge_bruit5(); +extern void charge_cfiec(); +extern void charge_cfiph(); +extern void suite(); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/parole.h b/engines/mortevielle/parole.h index b0282e15bd..daea40cbf0 100644 --- a/engines/mortevielle/parole.h +++ b/engines/mortevielle/parole.h @@ -30,16 +30,16 @@ namespace Mortevielle { -void spfrac(int wor); -void charg_car(); -void entroct(byte o); -void veracf(byte b); -void cctable(tablint &t); -void regenbruit(); -void charge_son(); -void charge_phbruit(); -void charge_bruit(); -void trait_car(); +extern void spfrac(int wor); +extern void charg_car(); +extern void entroct(byte o); +extern void veracf(byte b); +extern void cctable(tablint &t); +extern void regenbruit(); +extern void charge_son(); +extern void charge_phbruit(); +extern void charge_bruit(); +extern void trait_car(); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/parole2.h b/engines/mortevielle/parole2.h index ed7108f3b8..01cf277422 100644 --- a/engines/mortevielle/parole2.h +++ b/engines/mortevielle/parole2.h @@ -30,10 +30,10 @@ namespace Mortevielle { -void rot_chariot(); -void init_chariot(); -void trait_ph(); -void parole(int rep, int ht, int typ); +extern void rot_chariot(); +extern void init_chariot(); +extern void trait_ph(); +extern void parole(int rep, int ht, int typ); } // End of namespace Mortevielle diff --git a/engines/mortevielle/prog.h b/engines/mortevielle/prog.h index 4fccca4f65..fbcd92f469 100644 --- a/engines/mortevielle/prog.h +++ b/engines/mortevielle/prog.h @@ -30,18 +30,18 @@ namespace Mortevielle { -void change_gd(int ngd); -void antegame(); +extern void change_gd(int ngd); +extern void antegame(); /* NIVEAU 3 */ /* procedure PROGRAMME */ -void tmaj3(); -void tsitu(); -void tecran(); +extern void tmaj3(); +extern void tsitu(); +extern void tecran(); /* NIVEAU 1 */ -void theure(); -void tjouer(); +extern void theure(); +extern void tjouer(); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/ques.h b/engines/mortevielle/ques.h index f748d3e0b5..7260bfa6a2 100644 --- a/engines/mortevielle/ques.h +++ b/engines/mortevielle/ques.h @@ -32,7 +32,7 @@ namespace Mortevielle { -bool ques(); +extern bool ques(); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/sprint.h b/engines/mortevielle/sprint.h index 42259f0593..8484214fa3 100644 --- a/engines/mortevielle/sprint.h +++ b/engines/mortevielle/sprint.h @@ -32,8 +32,9 @@ namespace Mortevielle { -void fill_box(int x, int y, int dx); -void clear_box(int x, int y, int dx); -void writeg(Common::String l, int c); +extern void fill_box(int x, int y, int dx); +extern void clear_box(int x, int y, int dx); +extern void writeg(Common::String l, int c); + } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/taffich.h b/engines/mortevielle/taffich.h index 41f0612a4f..bea3c09f2a 100644 --- a/engines/mortevielle/taffich.h +++ b/engines/mortevielle/taffich.h @@ -32,9 +32,10 @@ namespace Mortevielle { -void chardes(Common::String nom, float passe, int long_); -void charani(Common::String nom, float passe, int long_); -void taffich(); +extern void chardes(Common::String nom, float passe, int long_); +extern void charani(Common::String nom, float passe, int long_); +extern void taffich(); + } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 59d98fe58e..6b4ae2f70a 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -41,6 +41,12 @@ namespace Mortevielle { musique & paroles Oct 88 ) */ +/*---------------------------------------------------------------------------*/ +/*------------------------- DEFINES ----------------------------------*/ +/*---------------------------------------------------------------------------*/ + +#define pred(type, v) (v - 1) +#define succ(type, v) (v + 1) /*---------------------------------------------------------------------------*/ /*------------------------- CONSTANTS ----------------------------------*/ -- cgit v1.2.3 From 1a0e3b571af1f21c6a03b0e789c3fea7dc8a93d6 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 30 Dec 2011 22:40:45 +1100 Subject: MORTEVIELLE: Compilation fixes based on adding appropriate #include files --- engines/mortevielle/actions.cpp | 3 ++- engines/mortevielle/alert.cpp | 10 +++++----- engines/mortevielle/keyboard.cpp | 1 + engines/mortevielle/menu.cpp | 7 +++++-- engines/mortevielle/mor.cpp | 7 ++++--- engines/mortevielle/parole.h | 2 ++ engines/mortevielle/parole2.cpp | 1 + engines/mortevielle/prog.cpp | 1 + engines/mortevielle/sprint.cpp | 3 ++- engines/mortevielle/var_mor.h | 4 ++++ 10 files changed, 27 insertions(+), 12 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index ddfd432237..146542a5f7 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/scummsys.h" #include "mortevielle/actions.h" #include "mortevielle/alert.h" #include "mortevielle/mor.h" @@ -349,7 +350,7 @@ L2: } /* overlay */ void tfouiller() { - const byte[14] r = {123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}; + const byte r[14] = {123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}; int cx; if (caff > 99) { diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index 45c1b355a2..1c7ae91995 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -101,23 +101,23 @@ static void fait_boite(int lidep, int nli, int tx) { -static void fait_choix(Common::String c, int &coldep, int &nbcase, Common::String[] &s, int &esp) { +static void fait_choix(Common::String c, int &coldep, int &nbcase, Common::String *&str, int &esp) { int i, l, x; char ch; i = 1; x = coldep; for (l = 1; l <= nbcase; l ++) { - s[l] = ""; + str[l] = ""; do { i = i + 1; ch = c[i]; - s[l] = s[l] + ch; + str[l] = str[l] + ch; } while (!(c[i + 1] == ']')); i = i + 2; - while (length(s[l]) < 3) s[l] = s[l] + ' '; + while (length(str[l]) < 3) str[l] = str[l] + ' '; putxy(x, 98); - writeg(string(' ') + s[l] + ' ', 0); + writeg(string(' ') + str[l] + ' ', 0); x = x + esp + 40; } } diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index ddb78cbf74..44af5223a1 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -26,6 +26,7 @@ */ #include "mortevielle/keyboard.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index e00d8b9fe3..69fc651e70 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -25,8 +25,11 @@ * Copyright (c) 1988-1989 Lankhor */ -#include "mortevielle/menu.h" +#include "common/scummsys.h" #include "common/str.h" +#include "common/textconsole.h" +#include "mortevielle/menu.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { @@ -43,7 +46,7 @@ namespace Mortevielle { s = nom; if (! tesok) { clrscr; - exit(0); + mortevielle_exit(0); } while (length(s) < 30) s = s + ' '; switch (h) { diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 75add66e6a..195c626e95 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -25,11 +25,12 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/str.h" +#include "common/textconsole.h" #include "mortevielle/alert.h" #include "mortevielle/mor.h" #include "mortevielle/outtext.h" #include "mortevielle/var_mor.h" -#include "common/str.h" namespace Mortevielle { @@ -40,7 +41,7 @@ const char m1[] = "quelqu'un entre, parait void testfi() { if (ioresult != 0) { caff = do_alert(err_mess, 1); - exit(0); + mortevielle_exit(0); } } @@ -300,7 +301,7 @@ void stop() { hirs(); gd = ams; hirs(); - exit(0); + mortevielle_exit(0); } void paint_rect(int x, int y, int dx, int dy) { diff --git a/engines/mortevielle/parole.h b/engines/mortevielle/parole.h index daea40cbf0..a1467dcad8 100644 --- a/engines/mortevielle/parole.h +++ b/engines/mortevielle/parole.h @@ -28,6 +28,8 @@ #ifndef MORTEVIELLE_PAROLE_H #define MORTEVIELLE_PAROLE_H +#include "common/scummsys.h" + namespace Mortevielle { extern void spfrac(int wor); diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index ead95762eb..b5079f957d 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -26,6 +26,7 @@ */ #include "mortevielle/parole2.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 42977c47b5..f7f1e0e818 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -27,6 +27,7 @@ #include "mortevielle/mor2.h" #include "mortevielle/prog.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp index 6209b08f7d..9df1a1894c 100644 --- a/engines/mortevielle/sprint.cpp +++ b/engines/mortevielle/sprint.cpp @@ -25,9 +25,10 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/str.h" #include "mortevielle/mouse.h" #include "mortevielle/sprint.h" -#include "common/str.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 6b4ae2f70a..fa25962909 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -47,6 +47,10 @@ namespace Mortevielle { #define pred(type, v) (v - 1) #define succ(type, v) (v + 1) +#define ord(v) ((int) v) + +// TODO: Replace with a cleaner shutdown mechanism +#define mortevielle_exit(ret) error("Exit the game") /*---------------------------------------------------------------------------*/ /*------------------------- CONSTANTS ----------------------------------*/ -- cgit v1.2.3 From 6998d530dcf5e691c2624dcb401345743e4c7ed7 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 30 Dec 2011 22:52:56 +1100 Subject: MORTEVIELLE: Further bugfixes to include files and added includes --- engines/mortevielle/actions.cpp | 2 +- engines/mortevielle/mor2.cpp | 2 ++ engines/mortevielle/mouse.h | 2 ++ engines/mortevielle/outtext.h | 2 ++ engines/mortevielle/taffich.cpp | 3 ++- engines/mortevielle/var_mor.h | 5 ++++- 6 files changed, 13 insertions(+), 3 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 146542a5f7..359857eeb4 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -986,7 +986,7 @@ L2: /* overlay */ void tparler() { - array<1, 46, bool> te; + bool te[47]; int ix, cy, cx, max, haz, suj, co, lig, icm, i, tay, choi, x, y, c; char tou; diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index b6c3ee93fe..50d12452a5 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -27,6 +27,8 @@ #include "mortevielle/mor2.h" #include "mortevielle/var_mor.h" +#include "mortevielle/mouse.h" +#include "mortevielle/outtext.h" namespace Mortevielle { diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index 33fd280561..2a22d04e4c 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -30,6 +30,8 @@ namespace Mortevielle { +extern bool clic; + void init_mouse(); //extern void change_mouse(int t); //extern void dessine_souris(int xf, int yf); diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index 45b5745bbf..ad69ca9109 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -32,6 +32,8 @@ namespace Mortevielle { +extern Common::String delig; + //static void cinq_huit(char &c, int &ind, byte &pt, bool &the_end); extern void deline(int num , char *l , int &tl); //static int l_motsuiv(int p, char *ch, int &tab); diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 6a937e2e93..85b2157b6e 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -25,8 +25,9 @@ * Copyright (c) 1988-1989 Lankhor */ -#include "mortevielle/taffich.h" #include "common/str.h" +#include "mortevielle/taffich.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index fa25962909..88b42a845f 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -49,8 +49,9 @@ namespace Mortevielle { #define succ(type, v) (v + 1) #define ord(v) ((int) v) -// TODO: Replace with a cleaner shutdown mechanism +// TODO: Replace the following with proper implementations #define mortevielle_exit(ret) error("Exit the game") +#define clrscr {} /*---------------------------------------------------------------------------*/ /*------------------------- CONSTANTS ----------------------------------*/ @@ -222,6 +223,8 @@ struct nhom { byte hom[4]; }; +typedef nhom t_nhom[16]; + struct t_pcga { byte p; nhom a[16]; -- cgit v1.2.3 From c7a1bd48bd3226cfb8ccd92ff7bea1a43210b44b Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 30 Dec 2011 23:09:21 +1100 Subject: MORTEVIELLE: Replaced all set::of forms with proper C if statements --- engines/mortevielle/actions.cpp | 2 +- engines/mortevielle/alert.cpp | 2 +- engines/mortevielle/keyboard.cpp | 2 +- engines/mortevielle/menu.cpp | 5 +++-- engines/mortevielle/mor.cpp | 8 +++++--- engines/mortevielle/outtext.cpp | 3 ++- engines/mortevielle/ovd1.cpp | 7 ++++--- engines/mortevielle/parole.cpp | 8 ++++---- engines/mortevielle/prog.cpp | 2 +- engines/mortevielle/taffich.cpp | 6 ++++-- 10 files changed, 26 insertions(+), 19 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 359857eeb4..ff986a946a 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -1051,7 +1051,7 @@ L2: if (x > 319) cx = 41; else cx = 1; cy = succ(int, (uint)y >> 3); /* 0-199 => 1-25 */ - if ((cy > 23) || ((cx == 41) && (set::of(range(20, 22), eos).has(cy)))) { + if ((cy > 23) || ((cx == 41) && ((cy >= 20) && (cy <= 22)))) { if (choi != 0) { lig = ((choi - 1) % 23) << 3; if (choi > 23) co = 320; diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index 1c7ae91995..d003ccbc12 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -151,7 +151,7 @@ int do_alert(Common::String str_, int n) { do { cx = 320; st = ""; - while (!(set::of('\174', '\135', eos).has(chaine[i + 1]))) { + while ((chaine[i + 1] != '\174') && (chaine[i + 1] != '\135')) { i = i + 1; st = st + chaine[i]; if (res == 2) cx = cx - 3; diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index 44af5223a1..701f99cec7 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -69,7 +69,7 @@ int testou() { } break; case '\26' : - if (set::of(1, 2, eos).has(c_zzz)) { + if ((c_zzz == 1) && (c_zzz == 2)) { zzuul(adcfiec + 161, 0, 1644); c_zzz = succ(int, c_zzz); testou_result = 61; diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 69fc651e70..df4085671b 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -327,7 +327,8 @@ void mdn() { xprec = x; yprec = y; } - tes = (y < 11) && ((set::of(range(28 * res, 28 * res + 24), range(76 * res, 76 * res + 24), eos).has(x)) + tes = (y < 11) && ((x >= (28 * res) && x <= (28 * res + 24)) + || (x >= (76 * res) && x <= (76 * res + 24)) || ((x > 124 * res) && (x < 124 * res + 24)) || ((x > 172 * res) && (x < 172 * res + 24)) || ((x > 220 * res) && (x < 220 * res + 24)) @@ -340,7 +341,7 @@ void mdn() { else if (x < 268 * res) ix = discut; else ix = fichier; if ((ix != msg3) || (! test0)) - if (!((ix == fichier) && (set::of(sauve, charge, eos).has(msg3)))) { + if (!((ix == fichier) && ((msg3 == sauve) || (msg3 == charge)))) { menu_up(msg3); menu_down(ix); msg3 = ix; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 195c626e95..f8454e6446 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -422,7 +422,7 @@ void repon(int f, int m) { } } } - if (set::of(6, 9, eos).has(f)) { + if ((f >= 6) && (f <= 9)) { deline(m, st, tay); if (f == 6) i = 4; else i = 5; @@ -655,7 +655,8 @@ void pendule() { paint_rect(577,114,6,20);*/ paint_rect(570, 118, 20, 10); paint_rect(578, 114, 6, 18); - if (set::of(cga, her, eos).has(gd)) co = 0; + if ((gd == cga) || (gd == her)) + co = 0; else co = 1; if (min == 0) droite(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y - rg), co); else droite(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y + rg), co); @@ -668,7 +669,8 @@ void pendule() { if (heu > 11) writeg("PM ", 1); else writeg("AM ", 1); putxy(550, 160); - if (set::of(range(0, 8), eos).has(jou)) writeg(string(chr(jou + 49)) + "& jour", 1); + if ((jou >= 0) && (jou <= 8)) + writeg(string(chr(jou + 49)) + "& jour", 1); } /************* diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index adb094235b..ba0c956c1a 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -149,7 +149,8 @@ static int l_motsuiv(int p, char *ch, int &tab) { int l_motsuiv_result; c = p; - while (!(set::of(' ', '$', '@', eos).has(ch[p]))) p = p + 1; + while ((ch[p] != ' ') && (ch[p] != '$') && (ch[p] != '@')) + ++p; l_motsuiv_result = tab * (p - c); return l_motsuiv_result; } diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 09855440e5..906600f44c 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -231,7 +231,7 @@ void ani50() { output << "Ctrl C E H T A"; do { input >> kbd >> ch; - } while (!(set::of('\1', '\3', '\5', '\24', '\10', eos).has(ch))); + } while ((ch != '\1') && (ch != '\3') && (ch != '\5') && (ch != '\24') && (ch != '\10')); switch (ch) { case '\1': case '\3': @@ -258,7 +258,7 @@ void ani50() { output << 'S'; do { input >> kbd >> ch; - } while (!(set::of('C', 'S', eos).has(upcase(ch)))); + } while ((ch != 'C') && (ch != 'S')); int_m = (upcase(ch) == 'S'); } @@ -361,7 +361,8 @@ void ani50() { gotoxy(20 * pred(int, res) + 8, 24); textcolor(7); cpr = "COPYRIGHT 1989 : LANKHOR"; - if (set::of(ega, ams, cga, eos).has(gd)) output << cpr; + if ((gd == ega) || (gd == ams) || (gd == cga)) + output << cpr; else { putxy(104 + 72 * res, 190); writeg(cpr, 0); diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index c2c9222592..6c8f598fd4 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -32,8 +32,8 @@ namespace Mortevielle { void spfrac(int wor) { c3.rep = (uint)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)))) + if (((c3.code > 4) && (c3.val != 20) && ((c3.rep != 3) && (c3.rep != 6) && (c3.rep != 9)) || + ((c3.code < 5) && ((c3.rep != 19) && (c3.rep != 22) && (c3.rep != 4) && (c3.rep != 9))))) { c3.rep = c3.rep + 1; c3.freq = ((uint)wor >> 6) & 7; c3.acc = ((uint)wor >> 9) & 7; @@ -346,7 +346,7 @@ void veracf(byte b) { entroct(d3); entroct(c2.val); entroct(5); - } else if (!(set::of(range(0, 1), 4, eos).has(c3.code))) { + } else if ((c3.code != 0) && (c3.code != 1) && (c3.code != 4)) { veracf(c3.acc); switch (c3.code) { case 3 : @@ -388,7 +388,7 @@ void veracf(byte b) { entroct(2); entroct(c2.val); entroct(5); - } else if (!(set::of(range(0, 1), 4, eos).has(c3.code))) { + } else if ((c3.code != 0) && (c3.code != 1) && (c3.code != 4)) { veracf(c3.acc); switch (c3.code) { case 3 : diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index f7f1e0e818..d5004cdec8 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -267,7 +267,7 @@ void tecran() { erase_menu(); imen = false; - if (set::of('\1', '\3', '\5', '\7', '\11', eos).has(inkey)) { + if ((inkey == '\1') || (inkey == '\3') || (inkey == '\5') || (inkey == '\7') || (inkey == '\11')) { change_gd((uint)pred(int, ord(inkey)) >> 1); return; } diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 85b2157b6e..6d6df692cd 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -109,8 +109,10 @@ void taffich() { 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]; + if ((a >= 153) && (a <= 161)) + a = tran2[a]; + else if ((a >= 136) && (a <= 140)) + a = tran1[a]; b = a; if (maff == a) return; if (a == 16) { -- cgit v1.2.3 From fd243358d3e2aaa48da4d4ea8a1080b1ecdd6f15 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 30 Dec 2011 23:42:28 +1100 Subject: MORTEVIELLE: More addition of needed #include lines and other compilation fixes --- engines/mortevielle/actions.cpp | 2 ++ engines/mortevielle/alert.cpp | 13 +++++++------ engines/mortevielle/level15.cpp | 1 + engines/mortevielle/menu.cpp | 4 +++- engines/mortevielle/mor.cpp | 23 ++++++++++++++--------- engines/mortevielle/mor2.cpp | 8 +++++++- engines/mortevielle/mouse.cpp | 2 +- engines/mortevielle/mouse.h | 6 ++++++ engines/mortevielle/outtext.cpp | 1 + engines/mortevielle/prog.cpp | 4 ++++ engines/mortevielle/ques.cpp | 3 ++- engines/mortevielle/sprint.cpp | 4 ++-- engines/mortevielle/taffich.cpp | 1 + engines/mortevielle/var_mor.h | 4 ++++ 14 files changed, 55 insertions(+), 21 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index ff986a946a..b9626b3e6b 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -28,10 +28,12 @@ #include "common/scummsys.h" #include "mortevielle/actions.h" #include "mortevielle/alert.h" +#include "mortevielle/level15.h" #include "mortevielle/mor.h" #include "mortevielle/mor2.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" +#include "mortevielle/parole2.h" #include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index d003ccbc12..c35ba4f62e 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -28,6 +28,7 @@ #include "common/str.h" #include "mortevielle/alert.h" #include "mortevielle/level15.h" +#include "mortevielle/mouse.h" namespace Mortevielle { @@ -35,12 +36,12 @@ namespace Mortevielle { const int nligne = 7; -const matrix<1, 2, 1, 3, int> coord -= {{ {{150, 72, 103}}, - {{143, 107, 183}} - } -}; +const int coord[3][4] = { + {0, 0, 0, 0}, + {0, 150, 72, 103), + {0, 143, 107, 183} +}; static void decod(Common::String s, int &nbc, int &nbl, int &col, Common::String &c, Common::String &cs) { @@ -115,7 +116,7 @@ static void fait_choix(Common::String c, int &coldep, int &nbcase, Common::Strin str[l] = str[l] + ch; } while (!(c[i + 1] == ']')); i = i + 2; - while (length(str[l]) < 3) str[l] = str[l] + ' '; + while (str[l].size() < 3) str[l] = str[l] + ' '; putxy(x, 98); writeg(string(' ') + str[l] + ' ', 0); x = x + esp + 40; diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 42219ee943..e7a9c2116b 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -27,6 +27,7 @@ #include "mortevielle/level15.h" #include "mortevielle/var_mor.h" +#include "mortevielle/mouse.h" namespace Mortevielle { diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index df4085671b..083a16d07a 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -28,7 +28,9 @@ #include "common/scummsys.h" #include "common/str.h" #include "common/textconsole.h" +#include "mortevielle/level15.h" #include "mortevielle/menu.h" +#include "mortevielle/mouse.h" #include "mortevielle/var_mor.h" namespace Mortevielle { @@ -48,7 +50,7 @@ namespace Mortevielle { clrscr; mortevielle_exit(0); } - while (length(s) < 30) s = s + ' '; + while (s.size() < 30) s = s + ' '; switch (h) { case invent : if (l != 7) inv[l] = string(' ') + s; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index f8454e6446..b4e3fb3082 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -28,8 +28,14 @@ #include "common/str.h" #include "common/textconsole.h" #include "mortevielle/alert.h" +#include "mortevielle/boite.h" +#include "mortevielle/droite.h +#include "mortevielle/level15.h" +#include "mortevielle/menu.h" #include "mortevielle/mor.h" +#include "mortevielle/mouse.h" #include "mortevielle/outtext.h" +#include "mortevielle/parole2.h" #include "mortevielle/var_mor.h" namespace Mortevielle { @@ -219,8 +225,8 @@ void ecr2(Common::String str_) { else tab = 6; putxy(8, 177); tlig = 59 + pred(int, res) * 36; - if (length(str_) < tlig) writeg(str_, 5); - else if (length(str_) < (tlig << 1)) { + if (str_.size() < tlig) writeg(str_, 5); + else if (str_.size() < (tlig << 1)) { putxy(8, 176); writeg(copy(str_, 1, pred(int, tlig)), 5); putxy(8, 182); @@ -286,7 +292,7 @@ void clsf10() { else if (s.conf > 65) st = "Malsaine"; if (res == 1) co = 10; else co = 6; - co = 574 - ((uint)co * length(st) >> 1); + co = 574 - ((uint)co * st.size() >> 1); putxy(co, 92); writeg(st, 4); if (res == 1) co = 620; @@ -638,10 +644,10 @@ void chlm(int &per) { } void pendule() { - const matrix<1, 2, 1, 12, int> cv - = {{{{ 5, 8, 10, 8, 5, 0, -5, -8, -10, -8, -5, 0}}, - {{ -5, -3, 0, 3, 5, 6, 5, 3, 0, -3, -5, -6}} - } + const int cv[3][13] = { + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0, 5, 8, 10, 8, 5, 0, -5, -8, -10, -8, -5, 0 }, + { 0, -5, -3, 0, 3, 5, 6, 5, 3, 0, -3, -5, -6 } }; const int x = 580; const int y = 123; @@ -983,8 +989,7 @@ void debloc(int l) { /* NIVEAU 10 */ void init_nbrepm() { - const array<1, 8, byte> ipm - = {{4, 5, 6, 7, 5, 6, 5, 8}}; + const byte ipm[9] = { 0, 4, 5, 6, 7, 5, 6, 5, 8 }; int i; /* debug('init_nbrepm'); */ diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 50d12452a5..9b9fa68768 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -26,9 +26,15 @@ */ #include "mortevielle/mor2.h" +#include "mortevielle/alert.h" +#include "mortevielle/boite.h" #include "mortevielle/var_mor.h" +#include "mortevielle/menu.h" +#include "mortevielle/mor.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" +#include "mortevielle/parole2.h" +#include "mortevielle/taffich.h" namespace Mortevielle { @@ -211,7 +217,7 @@ void tmlieu(int mli) { cx = v_lieu[i][mli]; deline(cx + c_tmlieu, st, tail); nomp = delig; - while (length(nomp) < 30) nomp = nomp + ' '; + while (nomp.size() < 30) nomp = nomp + ' '; menut(depl[i], nomp); i = i + 1; } diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index a6b1768b96..708865ee1a 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -42,7 +42,7 @@ int m_show, p_o_s, mouse_shwn; -matrix<0, 5, 0, 11, int> s_s; +int s_s[12][6]; void init_mouse() { diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index 2a22d04e4c..0923c71866 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -32,6 +32,12 @@ namespace Mortevielle { extern bool clic; +extern int m_show, + x_s, + y_s, + p_o_s, + mouse_shwn; + void init_mouse(); //extern void change_mouse(int t); //extern void dessine_souris(int xf, int yf); diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index ba0c956c1a..6ec3f8930e 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -26,6 +26,7 @@ */ #include "mortevielle/outtext.h" +#include "mortevielle/level15.h" #include "mortevielle/var_mor.h" #include "common/str.h" diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index d5004cdec8..d7f95f49eb 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -25,9 +25,13 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/actions.h" +#include "mortevielle/menu.h" +#include "mortevielle/mor.h" #include "mortevielle/mor2.h" #include "mortevielle/prog.h" #include "mortevielle/var_mor.h" +#include "mortevielle/mouse.h" namespace Mortevielle { diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index 870f8b7435..2a200fb823 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/ques.h" #include "common/str.h" @@ -89,7 +90,7 @@ namespace Mortevielle { with.y2 = 34 + j * 8; with.etat = true; } - while (length(chaines[j]) < tmax) { + while (chaines[j].size() < tmax) { chaines[j] = chaines[j] + ' '; } } diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp index 9df1a1894c..406d7bccb4 100644 --- a/engines/mortevielle/sprint.cpp +++ b/engines/mortevielle/sprint.cpp @@ -55,7 +55,7 @@ void writeg(Common::String l, int c) yo = ywhere; if (res == 2) i = 6; else i = 10; - x = xo + i * length(l); + x = xo + i * l.size(); switch (c) { case 1: case 3 : { @@ -80,7 +80,7 @@ void writeg(Common::String l, int c) } xo = xo + 1; yo = yo + 1; - for (x = 1; x <= length(l); x ++) { + for (x = 1; x <= l.size(); x ++) { affcar(gd, xo, yo, cecr, ord(l[x])); xo = xo + i; } diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 6d6df692cd..6969cf6aea 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -26,6 +26,7 @@ */ #include "common/str.h" +#include "mortevielle/mouse.h" #include "mortevielle/taffich.h" #include "mortevielle/var_mor.h" diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 88b42a845f..4f8e0fe523 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -48,6 +48,10 @@ namespace Mortevielle { #define pred(type, v) (v - 1) #define succ(type, v) (v + 1) #define ord(v) ((int) v) +#define chr(v) ((char) v) +#define lo(v) (v & 0xff) +#define hi(v) ((v >> 8) & 0xff) +#define odd(v) ((v % 2) == 1) // TODO: Replace the following with proper implementations #define mortevielle_exit(ret) error("Exit the game") -- cgit v1.2.3 From 4837636386e1bcad9fb33e1b16d7345c28047d3c Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 31 Dec 2011 16:36:09 +1100 Subject: MORTEVIELLE: Converted some of the file accesses to use Common::File --- engines/mortevielle/alert.cpp | 4 +- engines/mortevielle/disk.cpp | 69 ++++++++++++++++++++++++-------- engines/mortevielle/level15.cpp | 31 ++++++++------- engines/mortevielle/mor.cpp | 2 +- engines/mortevielle/mor2.cpp | 6 ++- engines/mortevielle/ovd1.cpp | 88 ++++++++++++++++++++++------------------- engines/mortevielle/taffich.cpp | 35 +++++++++------- 7 files changed, 144 insertions(+), 91 deletions(-) diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index c35ba4f62e..1a1356747a 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -39,7 +39,7 @@ const int nligne = 7; const int coord[3][4] = { {0, 0, 0, 0}, - {0, 150, 72, 103), + {0, 150, 72, 103}, {0, 143, 107, 183} }; @@ -126,7 +126,7 @@ static void fait_choix(Common::String c, int &coldep, int &nbcase, Common::Strin int do_alert(Common::String str_, int n) { int coldep, esp, i, l, nbcase, quoi, ix; Common::String st, chaine; - matrix<1, 2, 1, 2, int> limit; + int limit[3][3]; char c, dumi; Common::String s[3]; int cx, cy, cd, nbcol, nblig; diff --git a/engines/mortevielle/disk.cpp b/engines/mortevielle/disk.cpp index 89d01c59c9..daf25d21e9 100644 --- a/engines/mortevielle/disk.cpp +++ b/engines/mortevielle/disk.cpp @@ -25,17 +25,25 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/file.h" +#include "common/system.h" +#include "common/savefile.h" +#include "common/serializer.h" #include "mortevielle/disk.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { +/** + * Ensure disk 1 data is available + */ void dem1() { - untyped_file f; int k; - /* -- demande de disk 1 -- */ +/* Deprecated in ScummVM + // -- demande de disk 1 -- assign(f, "mort.005"); - /*$i-*/ + //*$i-* k = ioresult; reset(f); while (ioresult != 0) { @@ -45,26 +53,47 @@ void dem1() { reset(f); } close(f); + */ +} + +static void sync_save(Common::Serializer &sz) { + sz.syncAsSint16LE(s1.conf); + sz.syncBytes((byte *)&s1.pourc[0], 11); + sz.syncBytes((byte *)&s1.teauto[0], 43); + sz.syncBytes((byte *)&s1.sjer[0], 31); + sz.syncAsSint16LE(s1.mlieu); + sz.syncAsSint16LE(s1.iboul); + sz.syncAsSint16LE(s1.ibag); + sz.syncAsSint16LE(s1.icave); + sz.syncAsSint16LE(s1.ivier); + sz.syncAsSint16LE(s1.ipuit); + sz.syncAsSint16LE(s1.derobj); + sz.syncAsSint16LE(s1.iloic); + sz.syncAsSint16LE(s1.icryp); + sz.syncAsSint16LE(s1.ipre); + sz.syncAsSint16LE(s1.heure); } void takesav(int n) { - untyped_file f; int i; Common::String st; dem1(); - /* -- chargement du fichier 'sauve#n.mor' -- */ - st = string("sav") + chr(n + 48) + ".mor"; - assign(f, st); - reset(f, 497); - blockread(f, s1, 1); - if (ioresult != 0) { + // -- Load the file 'sauve#n.mor' + Common::String saveName = Common::String::format("sav%d.mor", n); + Common::InSaveFile *f = g_system->getSaveManager().openForLoading(st); + + Common::Serializer sz(f, NULL); + sync_save(sz); + + if (f.err()) { i = do_alert(err_mess, 1); - exit(0); + mortevielle_exit(0); } s = s1; for (i = 0; i <= 389; i ++) tabdon[i + acha] = bufcha[i]; - close(f); + + delete f; } void ld_game(int n) { @@ -81,7 +110,7 @@ void ld_game(int n) { } void sv_game(int n) { - untyped_file f; + Common::OutSaveFile *f; int i; hide_mouse(); @@ -91,10 +120,16 @@ void sv_game(int n) { for (i = 0; i <= 389; i ++) bufcha[i] = tabdon[i + acha]; s1 = s; if (s1.mlieu == 26) s1.mlieu = 15; - assign(f, string("sav") + chr(n + 48) + ".mor"); - rewrite(f, 497); - blockwrite(f, s1, 1); - close(f); + + Common::String saveName = Common::String::format("sav%d.mor", n); + f = g_system->getSaveFileManager().openForSaving(saveName); + + Common::Serializer sz(NULL, f); + sync_save(sz); + + f->finalize(); + delete f; + dem2(); show_mouse(); } diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index e7a9c2116b..b655b7a23e 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/file.h" #include "mortevielle/level15.h" #include "mortevielle/var_mor.h" #include "mortevielle/mouse.h" @@ -149,35 +150,37 @@ end; */ void adzon() { - untyped_file f; - file g; + Common::File f; +// Common::File g; byte a; int i; - assign(f, "don.mor"); - reset(f, 256); - blockread(f, tabdon, 7); - close(f); - assign(f, "bmor.mor"); - reset(f, 1916); - blockread(f, tabdon[fleche], 1); + if (!f.open("don.mor")) + error("Missing file - don.mor"); + f.read(tabdon, 7); + f.close(); + + if (!f.open("bmor.mor")) + error("Missing file - bmor.mor"); + f.read(&tabdon[fleche], 1); /*i:=fleche; repeat read(g,a); tabdon[i]:=a; i:=succ(i); until i=fleche + 1916;*/ - close(f); - assign(f, "dec.mor"); - reset(f, 1664); - blockread(f, mem[0x73a2 + 0], 1); + f.close(); + + if (!f.open("dec.mor")) + error("Missing files - dec.moir"); + f.read(mem[0x73a2 + 0], 1); /*i:=0; repeat read(g,a); mem[$73A2:i]:=a; i:=succ(i); until eof(g);*/ - close(f); + f.close(); } int animof(int ouf, int num) { diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index b4e3fb3082..2938834f9e 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -29,7 +29,7 @@ #include "common/textconsole.h" #include "mortevielle/alert.h" #include "mortevielle/boite.h" -#include "mortevielle/droite.h +#include "mortevielle/droite.h" #include "mortevielle/level15.h" #include "mortevielle/menu.h" #include "mortevielle/mor.h" diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 9b9fa68768..bdf207fb5c 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -325,7 +325,11 @@ void st4(int ob) { case 158 : crep = 113; break; - case RANGE_5(152, 156): + case 152: + case 153: + case 154: + case 155: + case 156: case 150: case 100: case 157: diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 906600f44c..1a73b34267 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -25,19 +25,22 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/file.h" #include "mortevielle/ovd1.h" #include "mortevielle/var_mor.h" namespace Mortevielle { void dem2() { + /* Deprecated check for disk 2 + untyped_file f; int k; - /* -- demande de disk 2 -- */ + // -- demande de disk 2 -- while (ioresult != 0); assign(f, "mort.001"); - /*$i-*/ + //$i- reset(f); while (ioresult != 0) { show_mouse(); @@ -46,6 +49,7 @@ void dem2() { reset(f); } close(f); + */ } void ani50() { @@ -81,13 +85,14 @@ void ani50() { /* overlay */ void init_menu() { int i, j, tai; char st[1410]; - untyped_file f; + Common::File f; + + if (!f.open("menufr.mor")) + error("Missing file - menufr.mor"); + + f.read(lettres, 7 * 24); + f.close(); - assign(f, "menufr.mor"); - /*$i-*/ - reset(f, 144); - blockread(f, lettres, 1); - close(f); /* ---- Demande de changement de disquette ---- */ dem2(); @@ -171,15 +176,16 @@ void ani50() { /* overlay */ void chartex() { int i; - untyped_file fibyte; + Common::File fibyte; char s[1410]; /* debug('o3 chartex'); */ i = 0; - assign(fibyte, "TXX.INP"); - /*$i-*/ - reset(fibyte); - blockread(fibyte, t_mot, 125); + if (!fibyte.open("TXX.INP")) + error("missing file - TXX.INP"); + + fibyte.read(&t_mot, 125); + close(fibyte); assign(sauv_t, "TXX.NTP"); reset(sauv_t); @@ -275,7 +281,7 @@ void ani50() { /* overlay */ void music() { - untyped_file fic; + Common::File fic; int k; bool fin; char ch; @@ -285,12 +291,14 @@ void ani50() { /* debug('o3 music'); */ if (sonoff) return; rech_cfiec = true; - assign(fic, "mort.img"); - /*$i-*/ - reset(fic); - blockread(fic, mem[0x3800 + 0], 500); - blockread(fic, mem[0x47a0 + 0], 123); - close(fic); + + if (!f.open("mort.img")) + error("Missing file - mort.img"); + + fic.read(mem[0x3800 + 0], 500); + fic.read(mem[0x47a0 + 0], 123); + f.close(); + demus(0x3800, 0x5000, 623); addfix = (float)((tempo_mus - addv[1])) / 256; cctable(tbi); @@ -308,41 +316,39 @@ void ani50() { /* overlay */ void charge_bruit5() { - untyped_file f; + Common::File f; - assign(f, "bruit5"); - /*$i-*/ - reset(f); - if (ioresult != 0) { - caff = do_alert(err_mess, 1); - exit(0); - } - blockread(f, mem[adbruit5 + 0], 149); + if (!f.open("bruit5")) + error("Missing file - bruit5"); + + f.read(mem[adbruit5 + 0], 149); /*blockread(f,mem[$5CB0:0],100); blockread(f,mem[$3D1F:0],49);*/ - close(f); + f.close(); } /* overlay */ void charge_cfiec() { - untyped_file f; + Common::File f; + + if (!f.open("cfiec.mor")) + error("Missing file - cfiec.mor"); - assign(f, "cfiec.mor"); /*$i-*/ - reset(f); - blockread(f, mem[adcfiec + 0], 511); - blockread(f, mem[adcfiec + 4088 + 0], 311); - close(f); + f.read(mem[adcfiec + 0], 511); + f.read(mem[adcfiec + 4088 + 0], 311); + f.close(); + rech_cfiec = false; } /* overlay */ void charge_cfiph() { - untyped_file f; + Common::File f; - assign(f, "cfiph.mor"); - /*$i-*/ - reset(f, 256); - blockread(f, t_cph, 50); + if (!f.open("cfiph.mor")) + error("Missing file - cfiph.mor"); + + f.read(t_cph, 50); close(f); } diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 6969cf6aea..1a20a1b9f9 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/file.h" #include "common/str.h" #include "mortevielle/mouse.h" #include "mortevielle/taffich.h" @@ -35,29 +36,31 @@ namespace Mortevielle { void chardes(Common::String nom, float passe, int long_) { int i, p, l; byte b; - untyped_file f; + Common::File f; /* debug('chardes'); */ - assign(f, nom); - /*$i-*/ - reset(f); + if (!f.open(nom)) + error("Missing file %s", nom.c_str()); + testfi(); p = 0; while (passe > 127) { p = p + 1; passe = passe - 128; } - if (p != 0) seek(f, p); + if (p != 0) + f.seek(p); p = trunc(passe); l = long_ + p; i = 0; while (l > 0) { - blockread(f, mem[0x6000 + i], 1); + f.read(mem[0x6000 + i], 1); testfi(); l = l - 128; i = i + 128; } - close(f); + f.close(); + for (i = p; i <= long_ + p; i ++) mem[0x7000 + i - p] = mem[0x6000 + i]; /*$i+*/ } @@ -65,31 +68,33 @@ void chardes(Common::String nom, float passe, int long_) { void charani(Common::String nom, float passe, int long_) { int i, p, l; byte b; - untyped_file f; + Common::File f; /* debug('charani'); */ - assign(f, nom); - /*$i-*/ - reset(f); + if (!f.open(nom)) + error("Missing file - %s", nom.c_str()); + testfi(); p = 0; while (passe > 127) { passe = passe - 128; p = p + 1; } - if (p != 0) seek(f, p); + if (p != 0) + f.seek(p); + p = trunc(passe); l = long_ + p; i = 0; while (l > 0) { - blockread(f, mem[0x6000 + i], 1); + f.read(mem[0x6000 + i], 1); testfi(); l = l - 128; i = i + 128; } - close(f); + f.close(); + for (i = p; i <= long_ + p; i ++) mem[0x7314 + i - p] = mem[0x6000 + i]; - /*$i+*/ } void taffich() { -- cgit v1.2.3 From 4dd8bce651f43f4f84dccc3655eb598cb9de97cc Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 31 Dec 2011 17:11:37 +1100 Subject: MORTEVIELLE: Converted string() usage to Common::String --- engines/mortevielle/alert.cpp | 32 +++++++++++++++++++++++++++----- engines/mortevielle/menu.cpp | 5 ++++- engines/mortevielle/mor.cpp | 7 +++++-- engines/mortevielle/mor2.cpp | 3 ++- 4 files changed, 38 insertions(+), 9 deletions(-) diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index 1a1356747a..c088502284 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -118,7 +118,12 @@ static void fait_choix(Common::String c, int &coldep, int &nbcase, Common::Strin i = i + 2; while (str[l].size() < 3) str[l] = str[l] + ' '; putxy(x, 98); - writeg(string(' ') + str[l] + ' ', 0); + + Common::String tmp(" "); + tmp += str[l]; + tmp += " "; + + writeg(tmp, 0); x = x + esp + 40; } } @@ -198,10 +203,19 @@ int do_alert(Common::String str_, int n) { hide_mouse(); if (quoi != 0) { posit(quoi, coldep, esp); - writeg(string(' ') + s[quoi] + ' ', 0); + + Common::String tmp(" "); + tmp += s[quoi]; + tmp += " "; + writeg(tmp, 0); } posit(ix, coldep, esp); - writeg(string(' ') + s[ix] + ' ', 1); + + Common::String tmp2 = " "; + tmp2 += s[ix]; + tmp2 += " "; + writeg(tmp2, 1); + quoi = ix; show_mouse(); } @@ -210,7 +224,12 @@ int do_alert(Common::String str_, int n) { if ((quoi != 0) && ! newaff) { hide_mouse(); posit(quoi, coldep, esp); - writeg(string(' ') + s[quoi] + ' ', 0); + + Common::String tmp3(" "); + tmp3 += s[quoi]; + tmp3 += " "; + writeg(tmp3, 0); + quoi = 0; show_mouse(); } @@ -222,7 +241,10 @@ int do_alert(Common::String str_, int n) { if (! test3) { quoi = n; posit(n, coldep, esp); - writeg(string(' ') + s[n] + ' ', 1); + Common::String tmp4(" "); + tmp4 += s[n]; + tmp4 += " "; + writeg(tmp4, 1); } charecr(50, succ(int, nligne) << 4); show_mouse(); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 083a16d07a..412ab551f7 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -53,7 +53,10 @@ namespace Mortevielle { while (s.size() < 30) s = s + ' '; switch (h) { case invent : - if (l != 7) inv[l] = string(' ') + s; + if (l != 7) { + inv[l] = s; + inv[l].insertChar(' ', 0); + } break; case depla : dep[l] = s; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 2938834f9e..83cd3595f3 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -675,8 +675,11 @@ void pendule() { if (heu > 11) writeg("PM ", 1); else writeg("AM ", 1); putxy(550, 160); - if ((jou >= 0) && (jou <= 8)) - writeg(string(chr(jou + 49)) + "& jour", 1); + if ((jou >= 0) && (jou <= 8)) { + Common::String tmp("& jour"); + tmp.insertChar((char)(jou + 49), 0); + writeg(tmp, 1); + } } /************* diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index bdf207fb5c..3a895939d2 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -77,7 +77,8 @@ void tinke() { for (cx = 1; cx <= 10; cx ++) if (s.pourc[cx] == '*') cf = cf + 1; if (cf == 10) stpo = "10"; else stpo = chr(cf + 48); - stpou = string(d3) + d5 + d4 + d3 + d1 + stpo + '0' + d2 + d4 + d3 + d6 + d4; + + stpou = Common::String(d3) + d5 + d4 + d3 + d1 + stpo + '0' + d2 + d4 + d3 + d6 + d4; } if (m > min) { min = 30; -- cgit v1.2.3 From ab089af889567e54fa3dda7483c42a294e1aa2f9 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 31 Dec 2011 18:21:02 +1100 Subject: MORTEVIELLE: More compilation fixes --- engines/mortevielle/actions.cpp | 9 ++++++--- engines/mortevielle/alert.cpp | 8 ++++++-- engines/mortevielle/boite.h | 1 + engines/mortevielle/disk.cpp | 3 +++ engines/mortevielle/level15.cpp | 2 +- engines/mortevielle/menu.cpp | 36 +++++++++++++++++++----------------- engines/mortevielle/mor.cpp | 9 ++++++--- engines/mortevielle/mor2.cpp | 12 +++++------- engines/mortevielle/mort.cpp | 2 -- engines/mortevielle/outtext.cpp | 14 ++++++++------ engines/mortevielle/ovd1.cpp | 35 +++++++++++++++++++++++------------ engines/mortevielle/parole2.cpp | 1 + engines/mortevielle/prog.cpp | 2 ++ engines/mortevielle/ques.cpp | 4 +++- engines/mortevielle/sprint.cpp | 6 ++++++ engines/mortevielle/sprint.h | 1 + engines/mortevielle/taffich.cpp | 16 ++++++---------- engines/mortevielle/var_mor.cpp | 36 +++++++++++++++++++++++++++++++++--- engines/mortevielle/var_mor.h | 22 ++++++++++++++++++---- 19 files changed, 148 insertions(+), 71 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index b9626b3e6b..8e4a5fe229 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -33,6 +33,7 @@ #include "mortevielle/mor2.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" +#include "mortevielle/ques.h" #include "mortevielle/parole2.h" #include "mortevielle/var_mor.h" @@ -43,7 +44,8 @@ const char stouinon[] = "[2][ ][OUI][NON]"; /* overlay */ void taller() { - int mx, cx, cy; + //int mx, cx, cy; + int cx; if ((s.mlieu == 26) && (msg[4] == depl[6])) { s.mlieu = 15; @@ -132,7 +134,8 @@ L2: } /* overlay */ void tprendre() { - int cx, cy, cz; + //int cx, cy, cz; + int cx; if (caff > 99) { cx = caff; @@ -273,7 +276,7 @@ L2: } /* overlay */ void tlire() { - int iaff; +// int iaff; if (caff > 99) st4(caff); else { diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index c088502284..4ba287dcde 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -29,6 +29,7 @@ #include "mortevielle/alert.h" #include "mortevielle/level15.h" #include "mortevielle/mouse.h" +#include "mortevielle/sprint.h" namespace Mortevielle { @@ -48,7 +49,10 @@ static void decod(Common::String s, int &nbc, int &nbl, int &col, Common::String int i, k; bool v; - val(s[2], nbc, i); + //val(s[2], nbc, i); + sscanf(s.c_str() + 1, "%d", nbc); + i = 0; + c = ""; nbl = 0; i = 5; @@ -102,7 +106,7 @@ static void fait_boite(int lidep, int nli, int tx) { -static void fait_choix(Common::String c, int &coldep, int &nbcase, Common::String *&str, int &esp) { +static void fait_choix(Common::String c, int &coldep, int &nbcase, Common::String[3] &str, int &esp) { int i, l, x; char ch; diff --git a/engines/mortevielle/boite.h b/engines/mortevielle/boite.h index d4a1d1e45f..bff3e82d55 100644 --- a/engines/mortevielle/boite.h +++ b/engines/mortevielle/boite.h @@ -32,5 +32,6 @@ namespace Mortevielle { extern void boite(int x, int y, int dx, int dy, int coul); + } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/disk.cpp b/engines/mortevielle/disk.cpp index daf25d21e9..0c19bddf6e 100644 --- a/engines/mortevielle/disk.cpp +++ b/engines/mortevielle/disk.cpp @@ -29,7 +29,10 @@ #include "common/system.h" #include "common/savefile.h" #include "common/serializer.h" +#include "mortevielle/alert.h" +#include "mortevielle/ovd1.h" #include "mortevielle/disk.h" +#include "mortevielle/mouse.h" #include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index b655b7a23e..882bea57c5 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -27,8 +27,8 @@ #include "common/file.h" #include "mortevielle/level15.h" -#include "mortevielle/var_mor.h" #include "mortevielle/mouse.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 412ab551f7..2a055767f2 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -31,6 +31,7 @@ #include "mortevielle/level15.h" #include "mortevielle/menu.h" #include "mortevielle/mouse.h" +#include "mortevielle/sprint.h" #include "mortevielle/var_mor.h" namespace Mortevielle { @@ -82,22 +83,22 @@ namespace Mortevielle { switch (h) { case invent : { if (l > 6) { - inv[l][1] = '<'; - inv[l][22] = '>'; - } else inv[l][1] = '*'; + inv[l].setChar('<', 1); + inv[l].setChar('>', 22); + } else inv[l].setChar('*', 1); } break; case depla : - dep[l][1] = '*'; + dep[l].setChar('*', 1); break; case action : - act[l][1] = '*'; + act[l].setChar('*', 1); break; case saction : - self_[l][1] = '*'; + self_[l].setChar('*', 1); break; case discut : - dis[l][1] = '*'; + dis[l].setChar('*', 1); break; } } @@ -110,30 +111,30 @@ namespace Mortevielle { l = lo(no); switch (h) { case invent : { - inv[l][1] = ' '; - inv[l][22] = ' '; + inv[l].setChar(' ', 1); + inv[l].setChar(' ', 22); } break; case depla : - dep[l][1] = ' '; + dep[l].setChar(' ', 1); break; case action : - act[l][1] = ' '; + act[l].setChar(' ', 1); break; case saction : { - self_[l][1] = ' '; - self_[l][1] = ' '; + self_[l].setChar(' ', 1); + self_[l].setChar(' ', 1); } break; case discut : - dis[l][1] = ' '; + dis[l].setChar(' ', 1); break; } } void menu_aff() { int ind_tabl, k, col; - char c; +// char c; int pt, x, y, color, msk, num_letr; @@ -237,7 +238,7 @@ void util(int x, int y) { else ix = 3; xmx = dxcar * ix * res + xmn + 2; if ((x > xmn) && (x < xmx) && (y < ymx) && (y > 15)) { - ix = pred(int, (uint)y >> 3) + (msg3 << 8); + ix = pred(int, ((uint)y >> 3)) + (msg3 << 8); if (ix != msg4) { invers(1); msg4 = ix; @@ -318,7 +319,8 @@ void erase_menu() { } void mdn() { - int x, y, c, a, ix; + //int x, y, c, a, ix; + int x, y, ix; bool tes; /* debug('mdn'); */ diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 83cd3595f3..39a45d4665 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -36,6 +36,7 @@ #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/parole2.h" +#include "mortevielle/sprint.h" #include "mortevielle/var_mor.h" namespace Mortevielle { @@ -43,6 +44,8 @@ namespace Mortevielle { /* Niveau 14 suite */ const char m1[] = "quelqu'un entre, parait ‚tonn‚ mais ne dit rien"; +// For ScummVM, we need to do check for file errors where we do the file access +const int ioresult = 0; void testfi() { if (ioresult != 0) { @@ -225,8 +228,8 @@ void ecr2(Common::String str_) { else tab = 6; putxy(8, 177); tlig = 59 + pred(int, res) * 36; - if (str_.size() < tlig) writeg(str_, 5); - else if (str_.size() < (tlig << 1)) { + if ((int)str_.size() < tlig) writeg(str_, 5); + else if ((int)str_.size() < (tlig << 1)) { putxy(8, 176); writeg(copy(str_, 1, pred(int, tlig)), 5); putxy(8, 182); @@ -237,7 +240,7 @@ void ecr2(Common::String str_) { putxy(8, 176); writeg(copy(str_, 1, pred(int, tlig)), 5); putxy(8, 182); - writeg(copy(str_, tlig, pred(int, tlig << 1)), 5); + writeg(copy(str_, tlig, pred(int, (tlig << 1))), 5); putxy(8, 190); writeg(copy(str_, tlig << 1, tlig * 3), 5); } diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 3a895939d2..649d770fcf 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -28,22 +28,21 @@ #include "mortevielle/mor2.h" #include "mortevielle/alert.h" #include "mortevielle/boite.h" -#include "mortevielle/var_mor.h" +#include "mortevielle/keyboard.h" #include "mortevielle/menu.h" #include "mortevielle/mor.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/parole2.h" #include "mortevielle/taffich.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { -const array<1, 11, int> men -= {{ - scacher, attacher, defoncer, dormir, +const int men[12] = { 0, + scacher, attacher, defoncer, dormir, entrer, fermer, frapper, manger, mettre, ouvrir, sortir - } }; void tinke() { @@ -377,8 +376,7 @@ void modinv() { } void sparl(float adr, float rep) { - const array<1, 8, int> haut - = {{0, 1, -3, 6, -2, 2, 7, -1}}; + const int haut[9] = { 0, 0, 1, -3, 6, -2, 2, 7, -1 }; int key, ad, tay, repint; char st[1410]; diff --git a/engines/mortevielle/mort.cpp b/engines/mortevielle/mort.cpp index 2555b83232..68eb2178f2 100644 --- a/engines/mortevielle/mort.cpp +++ b/engines/mortevielle/mort.cpp @@ -25,8 +25,6 @@ * Copyright (c) 1988-1989 Lankhor */ -#include "ptoc.h" - #include "mortevielle/mort.h" #include "mortevielle/var_mor.h" /* les variables */ #include "mortevielle/keyboard.h" /* la gestion du clavier */ diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 6ec3f8930e..08fb9db053 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -27,6 +27,7 @@ #include "mortevielle/outtext.h" #include "mortevielle/level15.h" +#include "mortevielle/sprint.h" #include "mortevielle/var_mor.h" #include "common/str.h" @@ -59,14 +60,15 @@ const byte tab31[32]= { }; void deline(int num , char *l , int &tl); +typedef unsigned char uchar; static void cinq_huit(char &c, int &ind, byte &pt, bool &the_end) { - const unsigned char rap[32] = { - ',', ':', '@', '!', '?', '-', '\207', - '\240', '\205', '\203', '\202', '\212', '\210', '/', - '\213', '\214', '\242', '\047', '\223', '"', '\227', - '\226', '0', '1', '2', '3', '4', '5', - '6', '7', '8', '9' + const uchar rap[32] = { + (uchar)',', (uchar)':', (uchar)'@', (uchar)'!', (uchar)'?', (uchar)'-', (uchar)'\207', + (uchar)'\240', (uchar)'\205', (uchar)'\203', (uchar)'\202', (uchar)'\212', (uchar)'\210', (uchar)'/', + (uchar)'\213', (uchar)'\214', (uchar)'\242', (uchar)'\047', (uchar)'\223', (uchar)'"', (uchar)'\227', + (uchar)'\226', (uchar)'0', (uchar)'1', (uchar)'2', (uchar)'3', (uchar)'4', (uchar)'5', + (uchar)'6', (uchar)'7', (uchar)'8', (uchar)'9' }; int oct, ocd; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 1a73b34267..d34a6eea16 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -26,11 +26,19 @@ */ #include "common/file.h" +#include "mortevielle/alert.h" +#include "mortevielle/level15.h" +#include "mortevielle/mor.h" +#include "mortevielle/outtext.h" #include "mortevielle/ovd1.h" +#include "mortevielle/traffich.h" #include "mortevielle/var_mor.h" namespace Mortevielle { +// For ScummVM, we need to do check for file errors where we do the file access +const int ioresult = 0; + void dem2() { /* Deprecated check for disk 2 @@ -142,7 +150,7 @@ void ani50() { reset(ft); if (ioresult != 0) { caff = do_alert(err_mess, 1); - exit(0); + mortevielle_exit(0); } ft >> l; close(ft); @@ -176,24 +184,27 @@ void ani50() { /* overlay */ void chartex() { int i; - Common::File fibyte; + Common::File f; char s[1410]; /* debug('o3 chartex'); */ i = 0; - if (!fibyte.open("TXX.INP")) - error("missing file - TXX.INP"); + if (!f.open("TXX.INP")) + error("Missing file - TXX.INP"); - fibyte.read(&t_mot, 125); + f.read(&t_mot, 125); + f.close(); - close(fibyte); - assign(sauv_t, "TXX.NTP"); - reset(sauv_t); + if (!f.open("TXX.NTP")) + error("Missing file - TXX.NTP"); do { - sauv_t >> t_rec[i]; + t_rec[i].indis = f.readSint16LE(); + t_rec[i].point = f.readByte(); + i = i + 1; - } while (!(eof(sauv_t))); - close(sauv_t); + } while (!f.eos()); + f.close(); + deline(578, s, i); al_mess = delig; deline(579, s, i); @@ -265,7 +276,7 @@ void ani50() { do { input >> kbd >> ch; } while ((ch != 'C') && (ch != 'S')); - int_m = (upcase(ch) == 'S'); + int_m = (toupper(ch) == 'S'); } /* overlay */ void init_lieu() { diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index b5079f957d..22ed01c0b5 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -26,6 +26,7 @@ */ #include "mortevielle/parole2.h" +#include "mortevielle/parole.h" #include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index d7f95f49eb..3366e56db7 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -26,10 +26,12 @@ */ #include "mortevielle/actions.h" +#include "mortevielle/alert.h" #include "mortevielle/menu.h" #include "mortevielle/mor.h" #include "mortevielle/mor2.h" #include "mortevielle/prog.h" +#include "mortevielle/traffich.h" #include "mortevielle/var_mor.h" #include "mortevielle/mouse.h" diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index 2a200fb823..4ee0342a66 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -25,10 +25,12 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/str.h" +#include "mortevielle/boite.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/ques.h" -#include "common/str.h" +#include "mortevielle/sprint.h" namespace Mortevielle { diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp index 406d7bccb4..374ac24b3e 100644 --- a/engines/mortevielle/sprint.cpp +++ b/engines/mortevielle/sprint.cpp @@ -26,6 +26,7 @@ */ #include "common/str.h" +#include "common/textconsole.h" #include "mortevielle/mouse.h" #include "mortevielle/sprint.h" #include "mortevielle/var_mor.h" @@ -87,4 +88,9 @@ void writeg(Common::String l, int c) show_mouse(); } +void box(int c, int Gd, int xo, int yo, int xi, int yi, int patt) { + warning("TODO: box method not yet implemented"); +} + + } // End of namespace Mortevielle diff --git a/engines/mortevielle/sprint.h b/engines/mortevielle/sprint.h index 8484214fa3..60614bfda5 100644 --- a/engines/mortevielle/sprint.h +++ b/engines/mortevielle/sprint.h @@ -35,6 +35,7 @@ namespace Mortevielle { extern void fill_box(int x, int y, int dx); extern void clear_box(int x, int y, int dx); extern void writeg(Common::String l, int c); +extern void box(int c, int Gd, int xo, int yo, int xi, int yi, int patt); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 1a20a1b9f9..d98a600c92 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -27,6 +27,7 @@ #include "common/file.h" #include "common/str.h" +#include "mortevielle/mor.h" #include "mortevielle/mouse.h" #include "mortevielle/taffich.h" #include "mortevielle/var_mor.h" @@ -98,14 +99,9 @@ void charani(Common::String nom, float passe, int long_) { } 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 - } - }; + byte tran1[] = { 121, 121, 138, 139, 120 }; // array<136, 140, byte> + byte tran2[] = { 150, 150, 152, 152, 100, 110, 159, 100, 100 }; // array<153, 161, byte> + int i, m, a, b, cx, handle, npal; float lgt, lhandle; @@ -116,9 +112,9 @@ void taffich() { a = caff; if ((a >= 153) && (a <= 161)) - a = tran2[a]; + a = tran2[a - 153]; else if ((a >= 136) && (a <= 140)) - a = tran1[a]; + a = tran1[a - 136]; b = a; if (maff == a) return; if (a == 16) { diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 9bd43beb05..8ab06e8c79 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -25,8 +25,10 @@ * Copyright (c) 1988-1989 Lankhor */ -#include "mortevielle/var_mor.h" #include "common/str.h" +#include "common/textconsole.h" +#include "mortevielle/sprint.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { @@ -248,11 +250,13 @@ void hirs() { break; case ams : { hires; - inline_((float)(0xb8) / 6 / 0 / /* => mov ax,6 */ - 0xcd / 0x10); /* => int 16 */ + /* + inline_((float)(0xb8) / 6 / 0 / // => mov ax,6 + 0xcd / 0x10); // => int 16 port[0x3d9] = 15; port[0x3df] = 0; port[0x3dd] = 15; + */ res = 2; } break; @@ -295,6 +299,9 @@ void hirs() { } /* procedure affput(Chx,Gd,x,y,coul,char:int); external 'c:\mc\divaf.com'; */ +void affput(int Chx, int Gd, int x, int y, int coul, int char_) { + warning("TODO: Implement affput"); +} void affcar(int gd, int x, int y, int coul, int chr) { if (res == 1) affput(1, gd, ((uint)x >> 1), y, coul, chr); @@ -305,4 +312,27 @@ void putpix(int gd, int x, int y, int coul) { affput(0, gd, x, y, coul, 0); } +/** + * Returns a substring of the given string + * @param s Source string + * @param idx Starting index (1 based) + * @param size Number of characters to return + */ +Common::String copy(const Common::String &s, int idx, size_t size) { + // Copy the substring into a temporary buffer + char *tmp = new char[size + 1]; + strncpy(tmp, s.c_str() + idx - 1, size); + tmp[size] = '\0'; + + Common::String result(tmp); + delete tmp; + return result; +} + +/*---------------------------------------------------------------------------*/ +/*------------------------------ STUBS ------------------------------*/ +/*---------------------------------------------------------------------------*/ + +int port[0xfff]; + } // End of namespace Mortevielle diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 4f8e0fe523..fe0c3c5b67 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -51,12 +51,9 @@ namespace Mortevielle { #define chr(v) ((char) v) #define lo(v) (v & 0xff) #define hi(v) ((v >> 8) & 0xff) +#define swap(v) (((lo(v)) << 8) | ((hi(v)) >> 8)) #define odd(v) ((v % 2) == 1) -// TODO: Replace the following with proper implementations -#define mortevielle_exit(ret) error("Exit the game") -#define clrscr {} - /*---------------------------------------------------------------------------*/ /*------------------------- CONSTANTS ----------------------------------*/ /*---------------------------------------------------------------------------*/ @@ -393,6 +390,23 @@ extern pattern tpt[15]; void hirs(); void affcar(int gd, int x, int y, int coul, int chr); void putpix(int gd, int x, int y, int coul); +Common::String copy(const Common::String &s, int idx, size_t size); +void Val(const Common::String &s, int &V, int Code); +void affput(int Chx, int Gd, int x, int y, int coul, int char_); + +/*---------------------------------------------------------------------------*/ +/*------------------------------ STUBS ------------------------------*/ +/*---------------------------------------------------------------------------*/ +// TODO: Replace the following with proper implementations, or refactor out the code using them + +extern int port[0xfff]; + +#define hires {} + +#define mortevielle_exit(ret) error("Exit the game") +// Text screen functions not relevant for ScummVM +#define clrscr {} +#define gotoxy(x,y) {} } // End of namespace Mortevielle -- cgit v1.2.3 From ef3c2715440d8a842f18d4c92ade17d319c5448e Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 31 Dec 2011 21:29:41 +1100 Subject: MORTEVIELLE: Lots of compilation fixes --- engines/mortevielle/actions.cpp | 8 ++-- engines/mortevielle/alert.cpp | 4 +- engines/mortevielle/disk.cpp | 15 ++++--- engines/mortevielle/droite.cpp | 4 +- engines/mortevielle/level15.cpp | 9 ++-- engines/mortevielle/mor.cpp | 4 +- engines/mortevielle/mor2.cpp | 4 +- engines/mortevielle/mort.cpp | 2 +- engines/mortevielle/mouse.cpp | 10 ++--- engines/mortevielle/mouse.h | 2 +- engines/mortevielle/outtext.cpp | 16 ++++--- engines/mortevielle/ovd1.cpp | 96 +++++++++++++++++++++-------------------- engines/mortevielle/parole.cpp | 2 + engines/mortevielle/parole.h | 1 + engines/mortevielle/prog.cpp | 10 ++--- engines/mortevielle/sprint.cpp | 5 --- engines/mortevielle/sprint.h | 1 - engines/mortevielle/var_mor.cpp | 50 +++++++++++++++++++++ engines/mortevielle/var_mor.h | 32 +++++++++++++- 19 files changed, 180 insertions(+), 95 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 8e4a5fe229..5b420fba22 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -29,12 +29,14 @@ #include "mortevielle/actions.h" #include "mortevielle/alert.h" #include "mortevielle/level15.h" +#include "mortevielle/menu.h" #include "mortevielle/mor.h" #include "mortevielle/mor2.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/ques.h" #include "mortevielle/parole2.h" +#include "mortevielle/taffich.h" #include "mortevielle/var_mor.h" namespace Mortevielle { @@ -827,7 +829,7 @@ L2: } /* overlay */ void tentrer() { - int x, z; + int x, z = 0; if ((s.mlieu == 21) || (s.mlieu == 22)) { t1sama(); @@ -931,7 +933,7 @@ L2: } /* overlay */ void tsortir() { - int lx; + int lx = 0; tsort(); crep = 0; @@ -1055,7 +1057,7 @@ L2: x = x * (3 - res); if (x > 319) cx = 41; else cx = 1; - cy = succ(int, (uint)y >> 3); /* 0-199 => 1-25 */ + cy = succ(int, ((uint)y >> 3)); /* 0-199 => 1-25 */ if ((cy > 23) || ((cx == 41) && ((cy >= 20) && (cy <= 22)))) { if (choi != 0) { lig = ((choi - 1) % 23) << 3; diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index 4ba287dcde..5f35e6ef65 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -106,7 +106,7 @@ static void fait_boite(int lidep, int nli, int tx) { -static void fait_choix(Common::String c, int &coldep, int &nbcase, Common::String[3] &str, int &esp) { +static void fait_choix(Common::String c, int &coldep, int &nbcase, Common::String *str, int &esp) { int i, l, x; char ch; @@ -176,7 +176,7 @@ int do_alert(Common::String str_, int n) { if (nbcase == 1) esp = nbcol - 40; else esp = (uint)(nbcol - nbcase * 40) >> 1; coldep = 320 - ((uint)nbcol >> 1) + ((uint)esp >> 1); - fait_choix(cas, coldep, nbcase, s, esp); + fait_choix(cas, coldep, nbcase, &s[0], esp); limit[1][1] = ((uint)(coldep) >> 1) * res; limit[1][2] = limit[1][1] + 40; if (nbcase == 1) { diff --git a/engines/mortevielle/disk.cpp b/engines/mortevielle/disk.cpp index 0c19bddf6e..e2b1b9ab2b 100644 --- a/engines/mortevielle/disk.cpp +++ b/engines/mortevielle/disk.cpp @@ -30,9 +30,12 @@ #include "common/savefile.h" #include "common/serializer.h" #include "mortevielle/alert.h" -#include "mortevielle/ovd1.h" #include "mortevielle/disk.h" +#include "mortevielle/mor.h" +#include "mortevielle/mor2.h" #include "mortevielle/mouse.h" +#include "mortevielle/ovd1.h" +#include "mortevielle/prog.h" #include "mortevielle/var_mor.h" namespace Mortevielle { @@ -41,9 +44,9 @@ namespace Mortevielle { * Ensure disk 1 data is available */ void dem1() { +/* Deprecated in ScummVM int k; -/* Deprecated in ScummVM // -- demande de disk 1 -- assign(f, "mort.005"); //*$i-* @@ -83,13 +86,13 @@ void takesav(int n) { dem1(); // -- Load the file 'sauve#n.mor' - Common::String saveName = Common::String::format("sav%d.mor", n); - Common::InSaveFile *f = g_system->getSaveManager().openForLoading(st); + Common::String saveName = Common::String::format("sav%d.mor", n); + Common::InSaveFile *f = g_system->getSavefileManager()->openForLoading(saveName); Common::Serializer sz(f, NULL); sync_save(sz); - if (f.err()) { + if (f->err()) { i = do_alert(err_mess, 1); mortevielle_exit(0); } @@ -125,7 +128,7 @@ void sv_game(int n) { if (s1.mlieu == 26) s1.mlieu = 15; Common::String saveName = Common::String::format("sav%d.mor", n); - f = g_system->getSaveFileManager().openForSaving(saveName); + f = g_system->getSavefileManager()->openForSaving(saveName); Common::Serializer sz(NULL, f); sync_save(sz); diff --git a/engines/mortevielle/droite.cpp b/engines/mortevielle/droite.cpp index 9def04add5..54d788b6eb 100644 --- a/engines/mortevielle/droite.cpp +++ b/engines/mortevielle/droite.cpp @@ -47,7 +47,7 @@ void droite(int x, int y, int xx, int yy, int coul) { if (y > yy) step = -1; else step = 1; do { - putpix(gd, trunc(a * i + b), i, coul); + putpix(gd, abs((int)(a * i + b)), i, coul); i = i + step; } while (!(i == yy)); /*writeln(le_file,'X == ',a:3:3,' * Y + ',b:3:3);*/ @@ -58,7 +58,7 @@ void droite(int x, int y, int xx, int yy, int coul) { if (x > xx) step = -1; else step = 1; do { - putpix(gd, i, trunc(a * i + b), coul); + putpix(gd, i, abs((int)(a * i + b)), coul); i = i + step; } while (!(i == xx)); /*writeln(le_file,'Y == ',a:3:3,' * X + ',b:3:3);*/ diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 882bea57c5..a2d5432b50 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -86,7 +86,8 @@ void writepal(int n) { } break; case cga : { - pal = palcga[n].a; + warning("TODO: If this code is needed, resolve the incompatible types"); +// pal = palcga[n].a; if (n < 89) palette(palcga[n].p); for (i = 0; i <= 15; i ++) outbloc(i, tpt[pal[i].n], pal); } @@ -152,8 +153,8 @@ end; void adzon() { Common::File f; // Common::File g; - byte a; - int i; +// byte a; +// int i; if (!f.open("don.mor")) error("Missing file - don.mor"); @@ -173,7 +174,7 @@ void adzon() { if (!f.open("dec.mor")) error("Missing files - dec.moir"); - f.read(mem[0x73a2 + 0], 1); + f.read(&mem[0x73a2 + 0], 1); /*i:=0; repeat read(g,a); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 39a45d4665..6518f20f8c 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -329,7 +329,7 @@ int hazard(int min, int max) { /* debug('hazard'); */ int hazard_result; ha2 = Random(); - ha1 = trunc(ha2 * (max - min)); + ha1 = abs((int)(ha2 * (max - min))); hazard_result = min + ha1; return hazard_result; } @@ -404,7 +404,7 @@ void repon(int f, int m) { Common::String str_; Common::String str1; char st[1410]; - text1 fic; +// text1 fic; int i, xco, dx, caspe, tay; /* debug('repon fenetre nř'+chr(f+48));*/ diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 649d770fcf..42f679a0c6 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -53,7 +53,7 @@ void tinke() { const char d4 = ']'; const char d5 = '1'; const char d6[] = "OK"; - int cx, cy, haz, nh, cf, j, h, m, cd; + int cx, haz, nh, cf, j, h, m; Common::String stpo; bool am; @@ -380,7 +380,7 @@ void sparl(float adr, float rep) { int key, ad, tay, repint; char st[1410]; - repint = trunc(rep); + repint = abs((int)rep); hide_mouse(); deline(repint + c_paroles, st, tay); afftex(st, 230, 4, 65, 24, 5); diff --git a/engines/mortevielle/mort.cpp b/engines/mortevielle/mort.cpp index 68eb2178f2..f3b0ac73ab 100644 --- a/engines/mortevielle/mort.cpp +++ b/engines/mortevielle/mort.cpp @@ -69,7 +69,7 @@ void divers(int np, bool b) { int main(int argc, const char *argv[]) { /*init_debug;*/ /* ecri_seg;*/ - pio_initialize(argc, argv); + //pio_initialize(argc, argv); gd = cga; newgd = gd; zuul = false; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 708865ee1a..926a7bfceb 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -46,7 +46,7 @@ int s_s[12][6]; void init_mouse() { - int i, j; +// int i, j; registres reg; mouse_shwn = 0; @@ -88,7 +88,7 @@ begin end; */ void hide_mouse() { - int i, j, k, ps, ds; + int i, j, k, ps;; bool imp; mouse_shwn = pred(int, mouse_shwn); @@ -176,10 +176,8 @@ void hide_mouse() { } void show_mouse() { - int i, j, k, l, - ps, ds; + int i, j, k, l; bool imp; - char c; mouse_shwn = mouse_shwn + 1; if (mouse_shwn != 1) return; @@ -383,7 +381,7 @@ void mov_mouse(bool &funct, char &key) { case '\33' : { p_key = keypressed(); - if ((p_key >= ';') && (p_key <= 'D')) { + if ((in2 >= ';') && (in2 <= 'D')) { funct = true; key = in2; return; diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index 0923c71866..a981d521ac 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -30,7 +30,7 @@ namespace Mortevielle { -extern bool clic; +extern bool clic, int_m; extern int m_show, x_s, diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 08fb9db053..6048efb02a 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -62,7 +62,8 @@ const byte tab31[32]= { void deline(int num , char *l , int &tl); typedef unsigned char uchar; -static void cinq_huit(char &c, int &ind, byte &pt, bool &the_end) { +static void cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { +/* const uchar rap[32] = { (uchar)',', (uchar)':', (uchar)'@', (uchar)'!', (uchar)'?', (uchar)'-', (uchar)'\207', (uchar)'\240', (uchar)'\205', (uchar)'\203', (uchar)'\202', (uchar)'\212', (uchar)'\210', (uchar)'/', @@ -70,16 +71,17 @@ static void cinq_huit(char &c, int &ind, byte &pt, bool &the_end) { (uchar)'\226', (uchar)'0', (uchar)'1', (uchar)'2', (uchar)'3', (uchar)'4', (uchar)'5', (uchar)'6', (uchar)'7', (uchar)'8', (uchar)'9' }; +*/ int oct, ocd; /* 5-8 */ - oct = t_mot[ind]; + oct = t_mot[idx]; oct = (uint)(oct << (16 - pt)) >> (16 - pt); if (pt < 6) { - ind = ind + 1; + idx = idx + 1; oct = oct << (5 - pt); pt = pt + 11; - oct = oct | ((uint)t_mot[ind] >> pt); + oct = oct | ((uint)t_mot[idx] >> pt); } else { pt = pt - 5; oct = (uint)oct >> pt; @@ -93,13 +95,13 @@ static void cinq_huit(char &c, int &ind, byte &pt, bool &the_end) { break; case 30: case 31 : { - ocd = t_mot[ind]; + ocd = t_mot[idx]; ocd = (uint)(ocd << (16 - pt)) >> (16 - pt); if (pt < 6) { - ind = ind + 1; + idx = idx + 1; ocd = ocd << (5 - pt); pt = pt + 11; - ocd = ocd | ((uint)t_mot[ind] >> pt); + ocd = ocd | ((uint)t_mot[idx] >> pt); } else { pt = pt - 5; ocd = (uint)ocd >> pt; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index d34a6eea16..b30acea8b9 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -27,11 +27,15 @@ #include "common/file.h" #include "mortevielle/alert.h" +#include "mortevielle/keyboard.h" #include "mortevielle/level15.h" +#include "mortevielle/menu.h" #include "mortevielle/mor.h" +#include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/ovd1.h" -#include "mortevielle/traffich.h" +#include "mortevielle/parole.h" +#include "mortevielle/taffich.h" #include "mortevielle/var_mor.h" namespace Mortevielle { @@ -79,8 +83,6 @@ void ani50() { end;*/ /* overlay */ void aff50(bool c) { - int k; - caff = 50; maff = 0; taffich(); @@ -91,7 +93,7 @@ void ani50() { } /* overlay */ void init_menu() { - int i, j, tai; + int i, tai; char st[1410]; Common::File f; @@ -139,33 +141,33 @@ void ani50() { /* overlay */ void charpal() { - file f; - file ft; + Common::File f; // tabdb records + Common::File ft; // tfxx int i, j, k; - file fb; + Common::File fb; // byte values byte b; - assign(ft, "fxx.mor"); - /*$i-*/ - reset(ft); - if (ioresult != 0) { - caff = do_alert(err_mess, 1); - mortevielle_exit(0); - } - ft >> l; - close(ft); - assign(f, "plxx.mor"); - reset(f); - for (i = 0; i <= 90; i ++) f >> tabpal[i]; - close(f); - assign(fb, "cxx.mor"); - reset(fb); + if (!ft.open("fxx.mor")) + error("Missing file - fxx.mor"); + for (int i = 1; i < 108; ++i) + l[i] = ft.readSint16LE(); + ft.close(); + + if (!f.open("plxx.mor")) + error("Missing file - plxx.mor"); + for (i = 0; i <= 90; i ++) + tabpal[i] = f.readSint16LE(); + f.close(); + + if (!fb.open("cxx.mor")) + error("Missing file - cxx.mor"); + for (j = 0; j <= 90; j ++) { - fb >> palcga[j].p; + palcga[j].p = fb.readByte(); for (i = 0; i <= 15; i ++) { nhom &with = palcga[j].a[i]; - fb >> b; + b = fb.readByte(); with.n = (uint)b >> 4; with.hom[0] = ((uint)b >> 2) & 3; with.hom[1] = b & 3; @@ -173,13 +175,13 @@ void ani50() { } palcga[10].a[9] = palcga[10].a[5]; for (j = 0; j <= 14; j ++) { - fb >> tpt[j].tax; - fb >> tpt[j].tay; + tpt[j].tax = fb.readByte(); + tpt[j].tay = fb.readByte(); for (i = 1; i <= 20; i ++) for (k = 1; k <= 20; k ++) - fb >> tpt[j].des[i][k]; + tpt[j].des[i][k] = fb.readByte(); } - close(fb); + fb.close(); } /* overlay */ void chartex() { @@ -243,9 +245,9 @@ void ani50() { gotoxy(1, 21); clreol; gotoxy(1, 23); - output << "CARTE GRAPHIQUE CGA EGA HERCULE/AT&T400 TANDY AMSTRAD1512"; + output("CARTE GRAPHIQUE CGA EGA HERCULE/AT&T400 TANDY AMSTRAD1512"); gotoxy(12, 24); - output << "Ctrl C E H T A"; + output("Ctrl C E H T A"); do { input >> kbd >> ch; } while ((ch != '\1') && (ch != '\3') && (ch != '\5') && (ch != '\24') && (ch != '\10')); @@ -267,12 +269,12 @@ void ani50() { gotoxy(1, 23); clreol; gotoxy(26, 23); - output << "Jeu au Clavier / … la Souris"; + output("Jeu au Clavier / … la Souris"); textcolor(4); gotoxy(33, 23); - output << 'C'; + output("C"); gotoxy(48, 23); - output << 'S'; + output("S"); do { input >> kbd >> ch; } while ((ch != 'C') && (ch != 'S')); @@ -280,14 +282,16 @@ void ani50() { } /* overlay */ void init_lieu() { - file f_lieu; + Common::File f_lieu; // tab_mlieu /* debug('o3 init_lieu'); */ - assign(f_lieu, "MXX.mor"); - /*$i-*/ - reset(f_lieu); - f_lieu >> v_lieu; - close(f_lieu); + if (!f_lieu.open("MXX.mor")) + error("Missing file - MXX.mor"); + + for (int i = 1; i < 8; ++i) + f_lieu.read(&v_lieu[i][1], 24); + + f.close(); } @@ -306,8 +310,8 @@ void ani50() { if (!f.open("mort.img")) error("Missing file - mort.img"); - fic.read(mem[0x3800 + 0], 500); - fic.read(mem[0x47a0 + 0], 123); + fic.read(&mem[0x3800 + 0], 500); + fic.read(&mem[0x47a0 + 0], 123); f.close(); demus(0x3800, 0x5000, 623); @@ -332,7 +336,7 @@ void ani50() { if (!f.open("bruit5")) error("Missing file - bruit5"); - f.read(mem[adbruit5 + 0], 149); + f.read(&mem[adbruit5 + 0], 149); /*blockread(f,mem[$5CB0:0],100); blockread(f,mem[$3D1F:0],49);*/ f.close(); @@ -345,8 +349,8 @@ void ani50() { error("Missing file - cfiec.mor"); /*$i-*/ - f.read(mem[adcfiec + 0], 511); - f.read(mem[adcfiec + 4088 + 0], 311); + f.read(&mem[adcfiec + 0], 511); + f.read(&mem[adcfiec + 4088 + 0], 311); f.close(); rech_cfiec = false; @@ -360,7 +364,7 @@ void ani50() { error("Missing file - cfiph.mor"); f.read(t_cph, 50); - close(f); + f.close(); } @@ -379,7 +383,7 @@ void ani50() { textcolor(7); cpr = "COPYRIGHT 1989 : LANKHOR"; if ((gd == ega) || (gd == ams) || (gd == cga)) - output << cpr; + output(cpr); else { putxy(104 + 72 * res, 190); writeg(cpr, 0); diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index 6c8f598fd4..4a3734f363 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -35,6 +35,8 @@ void spfrac(int wor) { if (((c3.code > 4) && (c3.val != 20) && ((c3.rep != 3) && (c3.rep != 6) && (c3.rep != 9)) || ((c3.code < 5) && ((c3.rep != 19) && (c3.rep != 22) && (c3.rep != 4) && (c3.rep != 9))))) { c3.rep = c3.rep + 1; + } + c3.freq = ((uint)wor >> 6) & 7; c3.acc = ((uint)wor >> 9) & 7; } diff --git a/engines/mortevielle/parole.h b/engines/mortevielle/parole.h index a1467dcad8..4168187a24 100644 --- a/engines/mortevielle/parole.h +++ b/engines/mortevielle/parole.h @@ -29,6 +29,7 @@ #define MORTEVIELLE_PAROLE_H #include "common/scummsys.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 3366e56db7..e493e760e8 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -31,7 +31,7 @@ #include "mortevielle/mor.h" #include "mortevielle/mor2.h" #include "mortevielle/prog.h" -#include "mortevielle/traffich.h" +#include "mortevielle/taffich.h" #include "mortevielle/var_mor.h" #include "mortevielle/mouse.h" @@ -116,8 +116,8 @@ namespace Mortevielle { regs.ax = 0x201; regs.cx = 0x1; regs.dx = 0x100 + k - 1; - regs.es = seg(buffer); - regs.bx = ofs(buffer); + //regs.es = seg(buffer); + //regs.bx = ofs(buffer); intr(19, regs); test[k] = ! imen; i = 0; @@ -126,8 +126,8 @@ namespace Mortevielle { syn = false; regs.cx = 0x2700 + i; regs.dx = 0x100 + k - 1; - regs.es = seg(buffer); - regs.bx = ofs(buffer); + //regs.es = seg(buffer); + //regs.bx = ofs(buffer); intr(19, regs); if (lo(regs.flags) % 2 == 1) test[k] = false; i = i + 1; diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp index 374ac24b3e..0523651ad9 100644 --- a/engines/mortevielle/sprint.cpp +++ b/engines/mortevielle/sprint.cpp @@ -88,9 +88,4 @@ void writeg(Common::String l, int c) show_mouse(); } -void box(int c, int Gd, int xo, int yo, int xi, int yi, int patt) { - warning("TODO: box method not yet implemented"); -} - - } // End of namespace Mortevielle diff --git a/engines/mortevielle/sprint.h b/engines/mortevielle/sprint.h index 60614bfda5..8484214fa3 100644 --- a/engines/mortevielle/sprint.h +++ b/engines/mortevielle/sprint.h @@ -35,7 +35,6 @@ namespace Mortevielle { extern void fill_box(int x, int y, int dx); extern void clear_box(int x, int y, int dx); extern void writeg(Common::String l, int c); -extern void box(int c, int Gd, int xo, int yo, int xi, int yi, int patt); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 8ab06e8c79..f92202c364 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -334,5 +334,55 @@ Common::String copy(const Common::String &s, int idx, size_t size) { /*---------------------------------------------------------------------------*/ int port[0xfff]; +byte mem[0xffff]; +int memw[0xffff]; +int wherey; + +void gotoxy(int x, int y) { +} +void textcolor(int c) { +} +void output(const Common::String &s) { +} +void intr(int intNum, registres ®s) { +} + +void palette(int v1) { + warning("TODO: s_sauv"); +} + +// (* external 'c:\mc\charecr.com'; *) +void s_char(int Gd, int y, int dy) { + warning("TODO: s_char"); +} + +// (* external 'c:\mc\sauvecr.com'; *) +void s_sauv(int Gd, int y, int dy) { + warning("TODO: s_sauv"); +} + +// (* external 'c:\mc\boite.com'; *) +void box(int c, int Gd, int xo, int yo, int xi, int yi, int patt) { + warning("TODO: box method not yet implemented"); +} + +// (* external 'c:\mc\zuul.com'; *) +void zzuul(int ad, int seg, int tai) { + warning("TODO: zzuul"); +} + +// (* external 'c:\mc\decomp.com'; *) +void decomp(int seg, int dep) { + warning("TODO: decomp"); +} + +// (* external 'c:\mc\affich.com'; *) +void afff(int Gd, int seg, int dep, int x, int y) { + warning("TODO: afff"); +} +// (* external 'c:\mc\reusint.com'; *) +void musyc(tablint &tb, int nbseg, int att) { + warning("TODO: musyc"); +} } // End of namespace Mortevielle diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index fe0c3c5b67..4cb40caaaa 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -231,6 +231,10 @@ struct t_pcga { nhom a[16]; }; +typedef int tablint[256]; +typedef doublet tabdb[17]; +typedef int tfxx[108]; + /*---------------------------------------------------------------------------*/ /*------------------------------ ENUMS ------------------------------*/ /*---------------------------------------------------------------------------*/ @@ -400,13 +404,37 @@ void affput(int Chx, int Gd, int x, int y, int coul, int char_); // TODO: Replace the following with proper implementations, or refactor out the code using them extern int port[0xfff]; +extern byte mem[0xffff]; +extern int memw[0xffff]; #define hires {} - #define mortevielle_exit(ret) error("Exit the game") + // Text screen functions not relevant for ScummVM #define clrscr {} -#define gotoxy(x,y) {} +#define clreol {} +extern void gotoxy(int x, int y); +extern void textcolor(int c); +extern void output(const Common::String &s); +extern int wherey; + +extern void palette(int v1); +extern void intr(int intNum, registres ®s); + +// (* external 'c:\mc\charecr.com'; *) +extern void s_char(int Gd, int y, int dy); +// (* external 'c:\mc\sauvecr.com'; *) +extern void s_sauv(int Gd, int y, int dy); +// (* external 'c:\mc\boite.com'; *) +extern void box(int c, int Gd, int xo, int yo, int xi, int yi, int patt); +// (* external 'c:\mc\zuul.com'; *) +extern void zzuul(int ad, int seg, int tai); +// (* external 'c:\mc\decomp.com'; *) +extern void decomp(int seg, int dep); +// (* external 'c:\mc\affich.com'; *) +extern void afff(int Gd, int seg, int dep, int x, int y); +// (* external 'c:\mc\reusint.com'; *) +extern void musyc(tablint &tb, int nbseg, int att); } // End of namespace Mortevielle -- cgit v1.2.3 From 09928318f545f7b42bcf5bfba888ffc1c3761a69 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 31 Dec 2011 22:07:25 +1100 Subject: MORTEVIELLE: Added stubs for remaining functions needed by the project --- engines/mortevielle/alert.cpp | 13 +++-- engines/mortevielle/keyboard.cpp | 6 +-- engines/mortevielle/mor.cpp | 31 ++++-------- engines/mortevielle/mor2.cpp | 8 +-- engines/mortevielle/mouse.cpp | 75 ++++++++++++++-------------- engines/mortevielle/outtext.cpp | 3 +- engines/mortevielle/ovd1.cpp | 25 ++++++---- engines/mortevielle/parole.cpp | 103 ++++++++++++++++++++------------------- engines/mortevielle/parole2.cpp | 3 +- engines/mortevielle/prog.cpp | 9 ++-- engines/mortevielle/ques.cpp | 3 +- engines/mortevielle/taffich.cpp | 13 ++--- engines/mortevielle/var_mor.cpp | 38 +++++++++++++-- engines/mortevielle/var_mor.h | 13 ++++- 14 files changed, 192 insertions(+), 151 deletions(-) diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index 5f35e6ef65..804e0f41f0 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -133,20 +133,23 @@ static void fait_choix(Common::String c, int &coldep, int &nbcase, Common::Strin } int do_alert(Common::String str_, int n) { - int coldep, esp, i, l, nbcase, quoi, ix; + int coldep, esp, i, nbcase, quoi, ix; Common::String st, chaine; int limit[3][3]; - char c, dumi; + char dumi; Common::String s[3]; - int cx, cy, cd, nbcol, nblig; - bool touch, newaff, test, test1, test2, test3, dum; + int cx, cy, nbcol, nblig; + bool newaff, test, test1, test2, test3, dum; Common::String cas; /*debug('** do_alert **');*/ + memset(&limit[0][0], 0, sizeof(int) * 3 * 3); int do_alert_result; hide_mouse(); - while (keypressed()) input >> kbd >> dumi; + while (keypressed()) + dumi = get_ch(); // input >> kbd >> dumi; + clic = false; decod(str_, nbcase, nblig, nbcol, chaine, cas); sauvecr(50, succ(int, nligne) << 4); diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index 701f99cec7..992a268b01 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -34,7 +34,7 @@ char readkey1() { char c; char readkey1_result; - input >> kbd >> c; + c = get_ch(); // input >> kbd >> c; readkey1_result = c; return readkey1_result; } @@ -43,7 +43,7 @@ int testou() { char ch; int testou_result; - input >> kbd >> ch; + ch = get_ch(); // input >> kbd >> ch; switch (ch) { case '\23' : sonoff = ! sonoff; @@ -77,7 +77,7 @@ int testou() { } break; case '\33' : - if (keypressed()) input >> kbd >> ch; + if (keypressed()) ch = get_ch(); // input >> kbd >> ch; break; } testou_result = ord(ch); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 6518f20f8c..556c7b4e14 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -150,7 +150,7 @@ void ecrf1() { } void clsf1() { - int i, j; +// int i, j; /* debug('clsf1'); */ hide_mouse(); @@ -198,7 +198,7 @@ void clsf1() { } void clsf2() { - int i, j; +// int i, j; /* debug('clsf2'); */ hide_mouse(); @@ -247,7 +247,7 @@ void ecr2(Common::String str_) { } void clsf3() { - int i, j; +// int i, j; /* debug('clsf3'); */ hide_mouse(); @@ -323,15 +323,8 @@ void paint_rect(int x, int y, int dx, int dy) { } int hazard(int min, int max) { - int ha1; - float ha2; - /* debug('hazard'); */ - int hazard_result; - ha2 = Random(); - ha1 = abs((int)(ha2 * (max - min))); - hazard_result = min + ha1; - return hazard_result; + return get_random_number(min, max); } void calch(int &j, int &h, int &m) { @@ -370,7 +363,7 @@ void okpas() { void modobj(int m) { char str_[1410]; Common::String strp; - int i, tay; + int tay; /* debug('modobj'); */ strp = ' '; @@ -385,7 +378,7 @@ void modobj(int m) { void modobj2(int m, bool t1, bool t2) { char str_[1410]; Common::String strp; - int i, tay; + int tay; /* debug('modobj'); */ strp = ' '; @@ -541,7 +534,6 @@ void affper(int per) { /* overlay */ void choix(int min, int max, int &per) { bool i; int haz, cx, cy, cz; - float per2, cz2; /* debug('o0 choix'); */ haz = hazard(min, max); @@ -793,8 +785,6 @@ void debloc(int l) { } /* overlay */ void quelq6(int l) { - int per; - /* debug('o1 quelq6'); */ if (l == 6) bh6 = true; if (l == 8) bh8 = true; @@ -802,7 +792,7 @@ void debloc(int l) { } /* overlay */ void quelq10(int h, int &per) { - int min, max; + int min = 0, max = 0; /* debug('o1 quelq10'); */ if ((h >= 0) && (h < 8)) chlm(per); @@ -829,7 +819,7 @@ void debloc(int l) { } /* overlay */ void quelq11(int h, int &per) { - int min, max; + int min = 0, max = 0; /* debug('o1 quelq11'); */ if ((h >= 0) && (h < 8)) chlm(per); @@ -882,7 +872,7 @@ void debloc(int l) { } /* overlay */ void quelq20(int h, int &per) { - int min, max; + int min = 0, max = 0; /* debug('o1 quelq20'); */ if (((h >= 0) && (h < 10)) || ((h > 18) && (h < 24))) chlm(per); @@ -1175,7 +1165,7 @@ void phaz(int &haz, int &p, int cf) { } /* overlay */ void t11(int l11, int &a) { - int p, haz, h; + int p, haz, h = 0; /* debug('o2 t11'); */ ecfren(p, haz, s.conf, l11); @@ -1254,7 +1244,6 @@ void messint(int nu) { void aniof(int ouf, int num) { int ad, offset; - char c; /* debug('aniof'); */ if ((caff == 7) && ((num == 4) || (num == 5))) return; diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 42f679a0c6..c650002a57 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -206,7 +206,7 @@ void tkey1(bool d) { } void tmlieu(int mli) { - int cx, j, i, tail; + int cx, i, tail; Common::String nomp; char st[1410]; @@ -354,7 +354,7 @@ void st1sama() { } void modinv() { - int cx, cy, tay, i, r; + int cx, cy, tay, r; char nom[1410]; Common::String nomp; @@ -377,7 +377,7 @@ void modinv() { void sparl(float adr, float rep) { const int haut[9] = { 0, 0, 1, -3, 6, -2, 2, 7, -1 }; - int key, ad, tay, repint; + int key, tay, repint; char st[1410]; repint = abs((int)rep); @@ -615,7 +615,7 @@ void tsuiv() { void tfleche() { bool qust; char touch; - int dummy, cd, xmo, ymo; + int dummy; if (num == 9999) return; fenat(chr(152)); diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 926a7bfceb..1aaea06d68 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -332,7 +332,7 @@ void mov_mouse(bool &funct, char &key) { key = '\377'; p_key = keypressed(); while (p_key) { - input >> kbd >> in1; + in1 = get_ch(); // input >> kbd >> in1; read_pos_mouse(cx, cy, cd); switch (toupper(in1)) { case '4' : @@ -381,48 +381,49 @@ void mov_mouse(bool &funct, char &key) { case '\33' : { p_key = keypressed(); - if ((in2 >= ';') && (in2 <= 'D')) { - funct = true; - key = in2; - return; - } - if (p_key) { - input >> kbd >> in2; - switch (in2) { - case 'K' : - cx = pred(int, cx); + in2 = get_ch(); // input >> kbd >> in2; + + if ((in2 >= ';') && (in2 <= 'D')) { + funct = true; + key = in2; + return; + } else { + switch (in2) { + case 'K' : + cx = pred(int, cx); + break; + case 'P' : + cy = succ(int, cy); + break; + case 'M' : + cx = cx + 2; + break; + case 'H' : + cy = pred(int, cy); + break; + case 'G' : { + cx = cx - 1; + cy = cy - 1; + } break; - case 'P' : - cy = succ(int, cy); + case 'I' : { + cx = cx + 1; + cy = cy - 1; + } break; - case 'M' : - cx = cx + 2; + case 'O' : { + cx = cx - 1; + cy = cy + 1; + } break; - case 'H' : - cy = pred(int, cy); + case 'Q' : { + cx = cx + 1; + cy = cy + 1; + } break; - case 'G' : { - cx = cx - 1; - cy = cy - 1; - } - break; - case 'I' : { - cx = cx + 1; - cy = cy - 1; - } - break; - case 'O' : { - cx = cx - 1; - cy = cy + 1; - } - break; - case 'Q' : { - cx = cx + 1; - cy = cy + 1; + } /* case */ } - break; - } /* case */ } } break; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 6048efb02a..c9bdcc7292 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -162,12 +162,11 @@ static int l_motsuiv(int p, char *ch, int &tab) { void afftex(char *ch, int x, int y, int dx, int dy, int typ) { bool the_end; - char touch; int xf, yf; int xc, yc; int tab, p; Common::String s; - int i, j, nt; + int i, j; /* debug(' .. Afftex');*/ diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index b30acea8b9..e33f3e406a 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -35,6 +35,7 @@ #include "mortevielle/outtext.h" #include "mortevielle/ovd1.h" #include "mortevielle/parole.h" +#include "mortevielle/sprint.h" #include "mortevielle/taffich.h" #include "mortevielle/var_mor.h" @@ -155,8 +156,12 @@ void ani50() { if (!f.open("plxx.mor")) error("Missing file - plxx.mor"); - for (i = 0; i <= 90; i ++) - tabpal[i] = f.readSint16LE(); + for (i = 0; i <= 90; ++i) { + for (j = 1; j <= 16; ++j) { + tabpal[i][j].x = f.readByte(); + tabpal[i][j].y = f.readByte(); + } + } f.close(); if (!fb.open("cxx.mor")) @@ -234,7 +239,7 @@ void ani50() { cy = cy + 1; deline(cy + c_dialpre, st, tay); gotoxy(40 - tay / 2, wherey + 1); - output << delig; + output(delig); } while (!(cy == 20)); ix = 0; do { @@ -249,7 +254,7 @@ void ani50() { gotoxy(12, 24); output("Ctrl C E H T A"); do { - input >> kbd >> ch; + ch = get_ch(); // input >> kbd >> ch; } while ((ch != '\1') && (ch != '\3') && (ch != '\5') && (ch != '\24') && (ch != '\10')); switch (ch) { case '\1': @@ -276,7 +281,7 @@ void ani50() { gotoxy(48, 23); output("S"); do { - input >> kbd >> ch; + ch = get_ch(); // input >> kbd >> ch; } while ((ch != 'C') && (ch != 'S')); int_m = (toupper(ch) == 'S'); } @@ -291,7 +296,7 @@ void ani50() { for (int i = 1; i < 8; ++i) f_lieu.read(&v_lieu[i][1], 24); - f.close(); + f_lieu.close(); } @@ -300,19 +305,19 @@ void ani50() { int k; bool fin; char ch; - float x, y; +// float x, y; /* debug('o3 music'); */ if (sonoff) return; rech_cfiec = true; - if (!f.open("mort.img")) + if (!fic.open("mort.img")) error("Missing file - mort.img"); fic.read(&mem[0x3800 + 0], 500); fic.read(&mem[0x47a0 + 0], 123); - f.close(); + fic.close(); demus(0x3800, 0x5000, 623); addfix = (float)((tempo_mus - addv[1])) / 256; @@ -326,7 +331,7 @@ void ani50() { k = k + 1; fin = fin | keypressed() | (k >= 5); } while (!fin); - while (keypressed()) input >> kbd >> ch; + while (keypressed()) ch = get_ch(); // input >> kbd >> ch; } diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index 4a3734f363..3c78b04f00 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/file.h" #include "mortevielle/parole.h" namespace Mortevielle { @@ -46,44 +47,40 @@ void charg_car() { 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) : { + + if ((int_ >= 0) && (int_ <= 13)) { + c3.val = int_; + c3.code = 5; + } else if ((int_ >= 14) && (int_ <= 21)) { + c3.val = int_; + c3.code = 6; + } else if ((int_ >= 22) && (int_ <= 47)) { int_ = int_ - 22; c3.val = int_; c3.code = typcon[int_]; - } - break; - case RANGE_9(48, 56) : { + } else if ((int_ >= 48) && (int_ <= 56)) { c3.val = int_ - 22; c3.code = 4; + } else { + 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; + } } - 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; } @@ -106,7 +103,7 @@ void veracf(byte b) { tb[0] = 0; for (k = 0; k <= 255; k ++) { tb[k + 1] = addfix + tb[k]; - t[255 - k] = trunc(tb[k]) + 1; + t[255 - k] = abs((int)tb[k] + 1); } } @@ -123,36 +120,42 @@ void veracf(byte b) { } /* overlay */ void charge_son() { - untyped_file f; + Common::File f; - assign(f, "sonmus.mor"); - reset(f); - blockread(f, mem[0x7414 + 0], 273); + if (!f.open("sonmus.mor")) + error("Missing file - sonmus.mor"); + + f.read(&mem[0x7414 + 0], 273); /*blockread(f,mem[adson+0],300); blockread(f,mem[adson+2400+0],245);*/ demus(0x7414, adson, 273); - close(f); + f.close(); } /* overlay */ void charge_phbruit() { - untyped_file f; + Common::File f; - assign(f, "phbrui.mor"); - reset(f); - blockread(f, t_cph, 3); - close(f); + if (!f.open("phbrui.mor")) + error("Missing file - phbrui.mor"); + + for (int i = 1; i <= 3; ++i) + t_cph[i] = f.readSint16LE(); + + f.close(); } /* overlay */ void charge_bruit() { - untyped_file f; - int j, i; + Common::File f; + int i; - assign(f, "bruits"); - reset(f); - blockread(f, mem[adbruit + 0], 250); + if (!f.open("bruits")) + error("Missing file - bruits"); + + f.read(&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); + f.read(&mem[adbruit1 + offsetb1], 149); + + f.close(); } /* overlay */ void trait_car() { diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index 22ed01c0b5..be8c17bf3b 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/level15.h" #include "mortevielle/parole2.h" #include "mortevielle/parole.h" #include "mortevielle/var_mor.h" @@ -64,7 +65,7 @@ void trait_ph() { memw[adword + ptr_word] = t_cph[ptr_tcph]; ptr_word = ptr_word + 2; ptr_tcph = ptr_tcph + 1; - } while (!(ptr_tcph >= ((uint)lefin >> 1))); + } while (!(ptr_tcph >= (int)((uint)lefin >> 1))); ptr_oct = 0; ptr_word = 0; diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index e493e760e8..760560eb53 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -38,8 +38,6 @@ namespace Mortevielle { /* overlay */ void change_gd(int ngd) { - int i; - hide_mouse(); gd = ngd; hirs(); @@ -59,7 +57,6 @@ namespace Mortevielle { } /* overlay */ void antegame() { - int cx; registres regs; char buffer[512]; int i, j, k; @@ -249,9 +246,9 @@ void ld_game(int n); void tecran() { const char idem[] = "Idem"; const int lim = 20000; - int temps; - char inkey; - bool oo, funct; + int temps = 0; + char inkey = '\0'; + bool oo, funct = 0; clsf3(); oo = false; diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index 4ee0342a66..c9154acc59 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -27,6 +27,7 @@ #include "common/str.h" #include "mortevielle/boite.h" +#include "mortevielle/level15.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/ques.h" @@ -92,7 +93,7 @@ namespace Mortevielle { with.y2 = 34 + j * 8; with.etat = true; } - while (chaines[j].size() < tmax) { + while ((int)chaines[j].size() < tmax) { chaines[j] = chaines[j] + ' '; } } diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index d98a600c92..3cde8eb015 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -27,6 +27,7 @@ #include "common/file.h" #include "common/str.h" +#include "mortevielle/level15.h" #include "mortevielle/mor.h" #include "mortevielle/mouse.h" #include "mortevielle/taffich.h" @@ -36,7 +37,7 @@ namespace Mortevielle { void chardes(Common::String nom, float passe, int long_) { int i, p, l; - byte b; +// byte b; Common::File f; /* debug('chardes'); */ @@ -51,11 +52,11 @@ void chardes(Common::String nom, float passe, int long_) { } if (p != 0) f.seek(p); - p = trunc(passe); + p = abs((int)passe); l = long_ + p; i = 0; while (l > 0) { - f.read(mem[0x6000 + i], 1); + f.read(&mem[0x6000 + i], 1); testfi(); l = l - 128; i = i + 128; @@ -68,7 +69,7 @@ void chardes(Common::String nom, float passe, int long_) { void charani(Common::String nom, float passe, int long_) { int i, p, l; - byte b; +// byte b; Common::File f; /* debug('charani'); */ @@ -84,11 +85,11 @@ void charani(Common::String nom, float passe, int long_) { if (p != 0) f.seek(p); - p = trunc(passe); + p = abs((int)passe); l = long_ + p; i = 0; while (l > 0) { - f.read(mem[0x6000 + i], 1); + f.read(&mem[0x6000 + i], 1); testfi(); l = l - 128; i = i + 128; diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index f92202c364..33ddfe64cc 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -227,7 +227,7 @@ int tbi[256]; chariot c1, c2, c3; float addfix; t_pcga palsav[91]; -doublet tabpal[91][16]; +doublet tabpal[91][17]; t_pcga palcga[91]; pattern tpt[15]; @@ -238,7 +238,7 @@ pattern tpt[15]; void hirs() { const byte tandy[14] = {113, 80, 90, 14, 63, 6, 50, 56, 2, 3, 6, 7, 0, 0}; const byte herc[13] = {50, 40, 41, 9, 103, 3, 100, 100, 2, 3, 0, 0, 0}; - int i, j; + int i; switch (gd) { case cga : { @@ -261,8 +261,10 @@ void hirs() { } break; case ega : { - inline_((float)(0xb8) / 14 / 0 / /* MOV AX, 14 ; mode video 14 = 640*200 16 couleurs */ - 0xcd / 0x10); /* INT 16 */ + /* + inline_((float)(0xb8) / 14 / 0 / // MOV AX, 14 ; mode video 14 = 640*200 16 couleurs + 0xcd / 0x10); // INT 16 + */ res = 2; } break; @@ -273,7 +275,9 @@ void hirs() { port[0x3b4] = i; port[0x3b5] = herc[i]; } + /* inline_((float)(0xfc) / 0xb9 / 0 / 0x80 / 0xb8 / 0 / 0xb0 / 0x8e / 0xc0 / 0x31 / 0xff / 0x31 / 0xc0 / 0xf3 / 0xab); + */ port[0x3b8] = 10; res = 2; } @@ -344,9 +348,24 @@ void textcolor(int c) { } void output(const Common::String &s) { } +void graphbackground(int c) { +} + void intr(int intNum, registres ®s) { } +int get_random_number(int minval, int maxval) { + // TODO: Replace with a proper random source in the engine + return minval; +} + +bool keypressed() { + return false; // Hardcoded currently for no keypress pending +} +char get_ch() { + return '\0'; // hardcoded currently for no keypress +} + void palette(int v1) { warning("TODO: s_sauv"); } @@ -380,9 +399,20 @@ void decomp(int seg, int dep) { void afff(int Gd, int seg, int dep, int x, int y) { warning("TODO: afff"); } + // (* external 'c:\mc\reusint.com'; *) void musyc(tablint &tb, int nbseg, int att) { warning("TODO: musyc"); } +// (* external 'c:\mc\demus.com'; *) +void demus(int Src, int Dst, int Tay) { + warning("TODO: demus"); +} + +// (* external 'c:\mc\phint.com'; *) +void litph(tablint &t, int typ, int tempo) { + warning("TODO: litph"); +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 4cb40caaaa..4427bc03bf 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -383,7 +383,7 @@ extern int tbi[256]; extern chariot c1, c2, c3; extern float addfix; extern t_pcga palsav[91]; -extern doublet tabpal[91][16]; +extern doublet tabpal[91][17]; extern t_pcga palcga[91]; extern pattern tpt[15]; @@ -413,13 +413,20 @@ extern int memw[0xffff]; // Text screen functions not relevant for ScummVM #define clrscr {} #define clreol {} +#define graphcolormode {} extern void gotoxy(int x, int y); extern void textcolor(int c); extern void output(const Common::String &s); +extern void graphbackground(int c); extern int wherey; +// Stubs for input functions +extern bool keypressed(); +extern char get_ch(); + extern void palette(int v1); extern void intr(int intNum, registres ®s); +extern int get_random_number(int minval, int maxval); // (* external 'c:\mc\charecr.com'; *) extern void s_char(int Gd, int y, int dy); @@ -435,6 +442,10 @@ extern void decomp(int seg, int dep); extern void afff(int Gd, int seg, int dep, int x, int y); // (* external 'c:\mc\reusint.com'; *) extern void musyc(tablint &tb, int nbseg, int att); +// (* external 'c:\mc\demus.com'; *) +extern void demus(int Src, int Dst, int Tay); +// (* external 'c:\mc\phint.com'; *) +extern void litph(tablint &t, int typ, int tempo); } // End of namespace Mortevielle -- cgit v1.2.3 From 0766140a4e3f6b4c8e3dc206e0b361d1cbf82f33 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 31 Dec 2011 22:53:24 +1100 Subject: MORTEVIELLE: Added stub engine implementation. Engine is now compilable. --- engines/mortevielle/detection.cpp | 70 ++++++++++++++++++++++++++++++++++ engines/mortevielle/detection_tables.h | 38 ++++++++++++++++++ engines/mortevielle/module.mk | 2 + engines/mortevielle/mort.cpp | 2 +- engines/mortevielle/mort.h | 3 +- engines/mortevielle/mortevielle.cpp | 47 +++++++++++++++++++++++ engines/mortevielle/mortevielle.h | 55 ++++++++++++++++++++++++++ 7 files changed, 215 insertions(+), 2 deletions(-) create mode 100644 engines/mortevielle/detection.cpp create mode 100644 engines/mortevielle/detection_tables.h create mode 100644 engines/mortevielle/mortevielle.cpp create mode 100644 engines/mortevielle/mortevielle.h diff --git a/engines/mortevielle/detection.cpp b/engines/mortevielle/detection.cpp new file mode 100644 index 0000000000..df8a6df407 --- /dev/null +++ b/engines/mortevielle/detection.cpp @@ -0,0 +1,70 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +#include "base/plugins.h" +#include "engines/advancedDetector.h" + +#include "mortevielle/mortevielle.h" +#include "mortevielle/detection_tables.h" + +namespace Mortevielle { +uint32 MortevielleEngine::getGameFlags() const { return _gameDescription->flags; } +} + +static const PlainGameDescriptor MortevielleGame[] = { + {"mortevielle", "Mortville Manor"}, + {0, 0} +}; + +class MortevielleMetaEngine : public AdvancedMetaEngine { +public: + MortevielleMetaEngine() : AdvancedMetaEngine(Mortevielle::gameDescriptions, sizeof(ADGameDescription), + MortevielleGame) { + } + virtual const char *getName() const { + return "Mortevielle"; + } + + virtual const char *getOriginalCopyright() const { + return "Mortville Manor (C) 1988 Lankhor"; + } + + virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const; + virtual bool hasFeature(MetaEngineFeature f) const; +}; + +bool MortevielleMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const { + if (desc) { + *engine = new Mortevielle::MortevielleEngine(syst, desc); + } + return desc != 0; +} + +bool MortevielleMetaEngine::hasFeature(MetaEngineFeature f) const { + return false; +} + +#if PLUGIN_ENABLED_DYNAMIC(MORTEVIELLE) + REGISTER_PLUGIN_DYNAMIC(MORTEVIELLE, PLUGIN_TYPE_ENGINE, MortevielleMetaEngine); +#else + REGISTER_PLUGIN_STATIC(MORTEVIELLE, PLUGIN_TYPE_ENGINE, MortevielleMetaEngine); +#endif diff --git a/engines/mortevielle/detection_tables.h b/engines/mortevielle/detection_tables.h new file mode 100644 index 0000000000..4ea062b2b2 --- /dev/null +++ b/engines/mortevielle/detection_tables.h @@ -0,0 +1,38 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +namespace Mortevielle { + +static const ADGameDescription gameDescriptions[] = { + { + "mortevielle", + "", + AD_ENTRY1s("mortvielle.txt", "d41d8cd98f00b204e9800998ecf8427e", 0), + Common::FR_FRA, + Common::kPlatformPC, + ADGF_UNSTABLE, + GUIO1(GUIO_NOASPECT) + }, + AD_TABLE_END_MARKER +}; + +} // End of namespace Mortevielle diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 3213d15b49..50ec3f0197 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -4,6 +4,7 @@ MODULE_OBJS := \ actions.o \ alert.o \ boite.o \ + detection.o \ disk.o \ droite.o \ keyboard.o \ @@ -12,6 +13,7 @@ MODULE_OBJS := \ mor.o \ mor2.o \ mort.o \ + mortevielle.o \ mouse.o \ outtext.o \ ovd1.o \ diff --git a/engines/mortevielle/mort.cpp b/engines/mortevielle/mort.cpp index f3b0ac73ab..3a4df46ea5 100644 --- a/engines/mortevielle/mort.cpp +++ b/engines/mortevielle/mort.cpp @@ -66,7 +66,7 @@ void divers(int np, bool b) { /* NIVEAU 0 */ -int main(int argc, const char *argv[]) { +int mortevielle_main(int argc, const char *argv[]) { /*init_debug;*/ /* ecri_seg;*/ //pio_initialize(argc, argv); diff --git a/engines/mortevielle/mort.h b/engines/mortevielle/mort.h index fa42288963..8523774da6 100644 --- a/engines/mortevielle/mort.h +++ b/engines/mortevielle/mort.h @@ -32,7 +32,8 @@ namespace Mortevielle { extern void divers(int np, bool b); /* NIVEAU 0 */ -extern int main(int argc, const char *argv[]); +extern int mortevielle_main(int argc, const char *argv[]); + } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp new file mode 100644 index 0000000000..dd93555ee3 --- /dev/null +++ b/engines/mortevielle/mortevielle.cpp @@ -0,0 +1,47 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +#include "mortevielle/mortevielle.h" +#include "mortevielle/mort.h" + +namespace Mortevielle { + +MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc): + Engine(system), _gameDescription(gameDesc) { +} + +MortevielleEngine::~MortevielleEngine() { +} + +bool MortevielleEngine::hasFeature(EngineFeature f) const { + return false; +} + +Common::Error MortevielleEngine::run() { + // Dispatch to the game's main routine + const char *argv[] = { "" }; + mortevielle_main(1, argv); + + return Common::kNoError; +} + +} // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h new file mode 100644 index 0000000000..406f8fe6d2 --- /dev/null +++ b/engines/mortevielle/mortevielle.h @@ -0,0 +1,55 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +#ifndef MORTEVIELLE_H +#define MORTEVIELLE_H + +#include "engines/advancedDetector.h" +#include "engines/engine.h" +#include "common/error.h" + +namespace Mortevielle { + +enum { + kMortevielleCore = 1 << 0 +}; + +#define SCREEN_WIDTH 320 +#define SCREEN_HEIGHT 200 + +class MortevielleEngine : public Engine { +private: + const ADGameDescription *_gameDescription; +public: + MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc); + ~MortevielleEngine(); + virtual bool hasFeature(EngineFeature f) const; + virtual Common::Error run(); + + uint32 getGameFlags() const; +}; + +extern MortevielleEngine *g_vm; + +} // End of namespace Mortevielle + +#endif -- cgit v1.2.3 From 44002e9293a023976535da62206763a1ff9aab0a Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 1 Jan 2012 01:01:20 +1100 Subject: MORTEVIELLE: Fix data loading in chartex method --- engines/mortevielle/ovd1.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index e33f3e406a..3c532d0f22 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -199,7 +199,9 @@ void ani50() { if (!f.open("TXX.INP")) error("Missing file - TXX.INP"); - f.read(&t_mot, 125); + for (int i = 0; i < 125; ++i) + t_mot[i] = f.readSint16LE(); + f.close(); if (!f.open("TXX.NTP")) -- cgit v1.2.3 From fb216b263c5d97f1dcb4df5b4b45357be27fc1b9 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 1 Jan 2012 03:51:29 +0100 Subject: MORTEVIELLE: Add a couple of detection entries --- engines/mortevielle/detection.cpp | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/detection.cpp b/engines/mortevielle/detection.cpp index df8a6df407..53d4292392 100644 --- a/engines/mortevielle/detection.cpp +++ b/engines/mortevielle/detection.cpp @@ -35,17 +35,49 @@ static const PlainGameDescriptor MortevielleGame[] = { {0, 0} }; +static const ADGameDescription MortevielleGameDescriptions[] = { + { + "mortevielle", + "", + { + {"menufr.mor", 0, "e413f36b9e14eef16130adc347a9391f", 144}, + {"dxx.mor", 0, "949e68e829ecd5ad29e36a00347a9e7e", 207744}, + AD_LISTEND + }, + Common::FR_FRA, + Common::kPlatformPC, + ADGF_NO_FLAGS, + GUIO0() + }, + { + "mortevielle", + "", + { + {"menual.mor", 0, "792aea282b07a1d74c4a4abeabc90c19", 144}, + {"dxx.mor", 0, "949e68e829ecd5ad29e36a00347a9e7e", 207744}, + AD_LISTEND + }, + Common::DE_DEU, + Common::kPlatformPC, + ADGF_NO_FLAGS, + GUIO0() + }, + AD_TABLE_END_MARKER +}; + class MortevielleMetaEngine : public AdvancedMetaEngine { public: - MortevielleMetaEngine() : AdvancedMetaEngine(Mortevielle::gameDescriptions, sizeof(ADGameDescription), + MortevielleMetaEngine() : AdvancedMetaEngine(MortevielleGameDescriptions, sizeof(ADGameDescription), MortevielleGame) { + _md5Bytes = 512; + _singleid = "mortevielle"; } virtual const char *getName() const { return "Mortevielle"; } virtual const char *getOriginalCopyright() const { - return "Mortville Manor (C) 1988 Lankhor"; + return "Mortville Manor (C) 1988-89 Lankhor"; } virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const; -- cgit v1.2.3 From 015565677c743fdbe00df5d114e7d3aa3d90e485 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 1 Jan 2012 21:17:45 +1100 Subject: MORTEVIELLE: Bugfix for loading data in chartex() --- engines/mortevielle/ovd1.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 3c532d0f22..99b2e28df1 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -199,19 +199,22 @@ void ani50() { if (!f.open("TXX.INP")) error("Missing file - TXX.INP"); - for (int i = 0; i < 125; ++i) + assert(f.size() <= (maxti * 2)); + for (i = 0; i < f.size() / 2; ++i) t_mot[i] = f.readSint16LE(); f.close(); if (!f.open("TXX.NTP")) error("Missing file - TXX.NTP"); - do { + + assert(f.size() <= (maxtd * 4)); + for (i = 0; i < (f.size() + 3) / 4; ++i) { t_rec[i].indis = f.readSint16LE(); t_rec[i].point = f.readByte(); + f.readByte(); + } - i = i + 1; - } while (!f.eos()); f.close(); deline(578, s, i); -- cgit v1.2.3 From e76460e3628fb2855fc27dbbf2e8c684bd74f552 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 1 Jan 2012 22:31:38 +1100 Subject: MORTEVIELLE: Bugfix for loading data in charpal() --- engines/mortevielle/ovd1.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 99b2e28df1..751a0993f8 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -150,7 +150,7 @@ void ani50() { if (!ft.open("fxx.mor")) error("Missing file - fxx.mor"); - for (int i = 1; i < 108; ++i) + for (int i = 0; i < 108; ++i) l[i] = ft.readSint16LE(); ft.close(); -- cgit v1.2.3 From e3facc3f6c1f325b02f36eee8c3db08634206d61 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 1 Jan 2012 22:38:50 +1100 Subject: MORTEVIELLE: Bugfix for loading data in charge_cfiph() --- engines/mortevielle/ovd1.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 751a0993f8..6d17fccf5a 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -373,7 +373,9 @@ void ani50() { if (!f.open("cfiph.mor")) error("Missing file - cfiph.mor"); - f.read(t_cph, 50); + for (int i = 0; i < (f.size() / 2); ++i) + t_cph[i] = f.readSint16LE(); + f.close(); } -- cgit v1.2.3 From 1d2460523969db2270efb8d1a2358c1eb36cb2ec Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 1 Jan 2012 13:50:07 +0100 Subject: MORTEVIELLE: Add some comments with translated strings --- engines/mortevielle/actions.cpp | 44 +++++++++++++++---------------- engines/mortevielle/boite.cpp | 1 + engines/mortevielle/disk.cpp | 8 +++--- engines/mortevielle/mor.cpp | 16 ++++++------ engines/mortevielle/mor2.cpp | 14 +++++----- engines/mortevielle/mort.cpp | 42 ++++++++++++++--------------- engines/mortevielle/outtext.cpp | 2 +- engines/mortevielle/ovd1.cpp | 3 ++- engines/mortevielle/parole.cpp | 6 ++--- engines/mortevielle/prog.cpp | 58 ++++++++++++++++++++--------------------- engines/mortevielle/var_mor.cpp | 12 ++++----- engines/mortevielle/var_mor.h | 7 +++-- 12 files changed, 109 insertions(+), 104 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 5b420fba22..81042c4ce2 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -42,7 +42,7 @@ namespace Mortevielle { /* NIVEAU 4 */ -const char stouinon[] = "[2][ ][OUI][NON]"; +const char stouinon[] = "[2][ ][OUI][NON]"; //Translation: [2] [ ] [YES] [NO] /* overlay */ void taller() { @@ -56,7 +56,7 @@ void taller() { repon(2, s.mlieu); } if ((s.mlieu == 15) && (msg[4] == depl[6])) { - if (! syn) ecr3("aller"); + if (! syn) ecr3("aller"); //Translation: Go to tfleche(); if (iesc) okdes = false; if ((anyone) || (iesc)) return; @@ -169,7 +169,7 @@ L2: } return; } - if (! syn) ecr3("prendre"); + if (! syn) ecr3("prendre"); //Translation: Take tfleche(); if ((anyone) || (iesc)) return; if (caff == 3) { @@ -256,7 +256,7 @@ L2: { int cx; - if (! syn) ecr3("soulever"); + if (! syn) ecr3("soulever"); //Translation: Lift tfleche(); if ((anyone) || (iesc)) return; tcoord(3); @@ -282,7 +282,7 @@ L2: if (caff > 99) st4(caff); else { - if (! syn) ecr3("lire"); + if (! syn) ecr3("lire"); //Translation: Read tfleche(); if (!(anyone) && !(iesc)) { tcoord(4); @@ -303,7 +303,7 @@ L2: crep = 103; return; } - if (! syn) ecr3("regarder"); + if (! syn) ecr3("regarder"); //Translation: Look tfleche(); if ((anyone) || (iesc)) return; tcoord(5); @@ -364,7 +364,7 @@ L2: st7(caff); return; } - if (! syn) ecr3("fouiller"); + if (! syn) ecr3("fouiller"); //Translation: Search tfleche(); if (anyone || iesc) return; if (s.mlieu == 23) { @@ -431,7 +431,7 @@ L2: /* overlay */ void touvrir() { int cx, haz; - if (! syn) ecr3("ouvrir"); + if (! syn) ecr3("ouvrir"); //Translation: Open if (caff == 26) { if (ment != 0) { msg[4] = entrer; @@ -492,7 +492,7 @@ L2: crep = 186; return; } - if (! syn) ecr3("mettre"); + if (! syn) ecr3("mettre"); //Translation: Put tfleche(); if (iesc) crep = 998; if ((anyone) || (iesc)) return; @@ -591,7 +591,7 @@ L2: crep = 149; return; } - if (! syn) ecr3("tourner"); + if (! syn) ecr3("tourner"); //Translation: Turn tfleche(); if ((anyone) || (iesc)) return; tcoord(9); @@ -618,7 +618,7 @@ L2: } /* overlay */ void tcacher() { - if (! syn) ecr3("se cacher"); + if (! syn) ecr3("se cacher"); //Translation: Hide self tfleche(); if (!(anyone) && !(iesc)) { tcoord(10); @@ -633,7 +633,7 @@ L2: /* overlay */ void tattacher() { if (s.derobj == 0) crep = 186; else { - if (! syn) ecr3("attacher"); + if (! syn) ecr3("attacher"); //Translation: Tie tfleche(); if (!(anyone) && !(iesc)) { tcoord(8); @@ -653,7 +653,7 @@ L2: /* overlay */ void tfermer() { int cx, chai; - if (! syn) ecr3("fermer"); + if (! syn) ecr3("fermer"); //Translation: Close if (caff < 26) { tfleche(); if (iesc) crep = 998; @@ -682,9 +682,9 @@ L2: /* overlay */ void tfrapper() { int l, p, haz; - if (! syn) ecr3("frapper"); + if (! syn) ecr3("frapper"); //Translation: Hit if (s.mlieu == 15) { - l = do_alert("[1][ | Avant, utilisez le menu DEP...][ok]", 1); + l = do_alert("[1][ | Avant, utilisez le menu DEP...][ok]", 1); //Translation: [1] [ | Before, use the DEP menu...] [Ok] return; } if (s.mlieu < 25) { @@ -882,7 +882,7 @@ L2: } /* overlay */ void tdormir() { - const char m1[] = "D‚sirez-vous vous r‚veiller?"; + const char m1[] = "D‚sirez-vous vous r‚veiller?"; //Translation: Do you want to wake up? int z, j, h, m, quel; if ((s.mlieu > 15) && (s.mlieu < 26)) { @@ -922,7 +922,7 @@ L2: } /* overlay */ void tdefoncer() { - if (! syn) ecr3("d‚foncer"); + if (! syn) ecr3("d‚foncer"); //Translation: Smash if (caff < 25) tfleche(); if ((! anyone) && (! iesc)) if (s.mlieu != 26) crep = 997; @@ -982,7 +982,7 @@ L2: } /* overlay */ void tsonder() { - if (! syn) ecr3("sonder"); + if (! syn) ecr3("sonder"); //Translation: Probe if (caff < 27) { tfleche(); if (!(anyone) && (! iesc)) crep = 145; @@ -1166,7 +1166,7 @@ L2: /* overlay */ void tsentir() { crep = 119; if (caff < 26) { - if (! syn) ecr3("sentir"); + if (! syn) ecr3("sentir"); //Translation: Smell tfleche(); if (!(anyone) && !(iesc)) if (caff == 16) crep = 153; @@ -1177,14 +1177,14 @@ L2: /* overlay */ void tgratter() { crep = 155; if (caff < 27) { - if (! syn) ecr3("gratter"); + if (! syn) ecr3("gratter"); //Translation: Scratch tfleche(); } num = 0; } /* NIVEAU 2 */ -/* overlay */ void tmaj1() { /* Le jeu est termin‚ !!! */ +/* overlay */ void tmaj1() { /* Le jeu est termin‚ !!! */ //Translation: The game is over!!! arret = true; tlu(13, 152); maivid(); @@ -1215,7 +1215,7 @@ L2: inzon(); } -/* overlay */ void tencore() { /* Perdu !!! */ +/* overlay */ void tencore() { /* Perdu !!! */ //Translation: You lost! int quel; clsf2(); diff --git a/engines/mortevielle/boite.cpp b/engines/mortevielle/boite.cpp index 0a3b5dac23..6e2976964d 100644 --- a/engines/mortevielle/boite.cpp +++ b/engines/mortevielle/boite.cpp @@ -31,6 +31,7 @@ namespace Mortevielle { +//Translation: box() void boite(int x, int y, int dx, int dy, int coul) { int i; int xi, yi, xo, yo; diff --git a/engines/mortevielle/disk.cpp b/engines/mortevielle/disk.cpp index e2b1b9ab2b..8a889f2130 100644 --- a/engines/mortevielle/disk.cpp +++ b/engines/mortevielle/disk.cpp @@ -47,7 +47,7 @@ void dem1() { /* Deprecated in ScummVM int k; - // -- demande de disk 1 -- + // -- demande de disk 1 -- //Translation: Ask for disk #1 assign(f, "mort.005"); //*$i-* k = ioresult; @@ -106,9 +106,9 @@ void ld_game(int n) { hide_mouse(); maivid(); takesav(n); - /* -- disquette 2 -- */ + /* -- disquette 2 -- */ //Translation: Floppy #2 dem2(); - /* -- mises en place -- */ + /* -- mises en place -- */ //Translation: Initialization theure(); dprog(); antegame(); @@ -122,7 +122,7 @@ void sv_game(int n) { hide_mouse(); tmaj3(); dem1(); - /* -- sauvegarde du fichier 'sauve#n.mor' -- */ + /* -- sauvegarde du fichier 'sauve#n.mor' -- */ //Translation: save file 'sauve%d.mor' for (i = 0; i <= 389; i ++) bufcha[i] = tabdon[i + acha]; s1 = s; if (s1.mlieu == 26) s1.mlieu = 15; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 556c7b4e14..47430ba220 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -42,7 +42,7 @@ namespace Mortevielle { /* Niveau 14 suite */ -const char m1[] = "quelqu'un entre, parait ‚tonn‚ mais ne dit rien"; +const char m1[] = "quelqu'un entre, parait ‚tonn‚ mais ne dit rien"; //Translation: Someone enters, looks surised, but says nothing // For ScummVM, we need to do check for file errors where we do the file access const int ioresult = 0; @@ -146,7 +146,7 @@ void initouv() { } void ecrf1() { - boite(0, 11, 512, 163, 15); /* grand dessin */ + boite(0, 11, 512, 163, 15); /* grand dessin */ //Translation: Large drawing } void clsf1() { @@ -614,9 +614,9 @@ void affper(int per) { } void person() { - const char m1[] = "Vous"; - const char m2[] = "tes"; - const char m3[] = "SEUL"; + const char m1[] = "Vous"; //Translation: You + const char m2[] = "tes"; //Translation: are + const char m3[] = "SEUL"; //Translation: ALONE int cf; Common::String str_; @@ -671,7 +671,7 @@ void pendule() { else writeg("AM ", 1); putxy(550, 160); if ((jou >= 0) && (jou <= 8)) { - Common::String tmp("& jour"); + Common::String tmp("& jour"); //Translation: Day tmp.insertChar((char)(jou + 49), 0); writeg(tmp, 1); } @@ -1322,9 +1322,9 @@ void dessin(int ad) { clsf1(); if (caff > 99) { dessine(ades, 60, 33); - boite(118, 32, 291, 121, 15); /* cadre moyen */ + boite(118, 32, 291, 121, 15); /* cadre moyen */ //Translation: Medium box } else if (caff > 69) { - dessine(ades, 112, 48); /* ttes */ + dessine(ades, 112, 48); /* ttes */ //Translation: Heads boite(222, 47, 155, 91, 15); } else { dessine(ades, 0, 12); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index c650002a57..1c2936d188 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -46,9 +46,9 @@ const int men[12] = { 0, }; void tinke() { - const char m1[] = "Mince! Vous entendez du bruit..."; - const char d1[] = " | Vous devriez avoir remarqu‚| "; - const char d2[] = "% des indices..."; + const char m1[] = "Mince! Vous entendez du bruit..."; //Translation: Gosh! You hear some noise... + const char d1[] = " | Vous devriez avoir remarqu‚| "; //Translation: You should have noticed + const char d2[] = "% des indices..."; //Translation: %s of hints const char d3 = '['; const char d4 = ']'; const char d5 = '1'; @@ -465,18 +465,18 @@ void ajjer(int ob) { } else crep = 139; } -void t1sama() { /* On entre dans le manoir */ +void t1sama() { /* On entre dans le manoir */ //Translation: Entering manor int j, h, m; bool d; calch(j, h, m); if ((h < 5) && (s.mlieu > 18)) { cherjer(137, d); - if (! d) { /* On n'a pas les cl‚s et il est tard */ + if (! d) { /* On n'a pas les cl‚s et il est tard */ //Translation: You don't have the keys, and it's late crep = 1511; tperd(); } else st1sama(); - } else if (! s.ipre) { /* c'est votre premiŠre fois ? */ + } else if (! s.ipre) { /* c'est votre premiŠre fois ? */ //Translation: Is it your first time? ipers = 255; affper(ipers); caff = 77; @@ -767,7 +767,7 @@ void st13(int ob) { void aldepl() { int dummy; - dummy = do_alert("[1][Alors, utilisez le menu DEP...][ok]", 1); + dummy = do_alert("[1][Alors, utilisez le menu DEP...][ok]", 1); //Translation: [1] [So, use the DEP menu] [Ok] } } // End of namespace Mortevielle diff --git a/engines/mortevielle/mort.cpp b/engines/mortevielle/mort.cpp index 3a4df46ea5..5975bde459 100644 --- a/engines/mortevielle/mort.cpp +++ b/engines/mortevielle/mort.cpp @@ -26,28 +26,28 @@ */ #include "mortevielle/mort.h" -#include "mortevielle/var_mor.h" /* les variables */ -#include "mortevielle/keyboard.h" /* la gestion du clavier */ -#include "mortevielle/mouse.h" /* la souris */ -#include "mortevielle/level15.h" /* les fonctions de base */ -#include "mortevielle/droite.h" /* pour faire une droite */ -#include "mortevielle/boite.h" -#include "mortevielle/sprint.h" /* l'affichage des textes */ -#include "mortevielle/outtext.h" /* fonctions sup‚rieures d'affichage */ -#include "mortevielle/parole.h" /* les fonctions de la parole */ +#include "mortevielle/var_mor.h" /* les variables */ //Translation: Variables +#include "mortevielle/keyboard.h" /* la gestion du clavier */ //Translation: Keyboard manager +#include "mortevielle/mouse.h" /* la souris */ //Translation: Mouse +#include "mortevielle/level15.h" /* les fonctions de base */ //Translation: Lowlevel functions +#include "mortevielle/droite.h" /* pour faire une droite */ //Translation: Display a lign +#include "mortevielle/boite.h" //Translation: Box +#include "mortevielle/sprint.h" /* l'affichage des textes */ //Translation: Display texts +#include "mortevielle/outtext.h" /* fonctions sup‚rieures d'affichage */ //Translation: Highlevel display functions +#include "mortevielle/parole.h" /* les fonctions de la parole */ //Translation: Speech functions #include "mortevielle/alert.h" -#include "mortevielle/parole2.h" /* les fonctions de la parole */ -/* debug le debugging */ -#include "mortevielle/ques.h" /* les questions */ -#include "mortevielle/menu.h" /* les fonctions du menu */ -#include "mortevielle/mor.h" /* divers */ -#include "mortevielle/taffich.h" /* chargement des dessins */ -#include "mortevielle/ovd1.h" /* les fonctions sur disque 1 */ -#include "mortevielle/mor2.h" /* divers */ -#include "mortevielle/actions.h" /* les actions */ -#include "mortevielle/prog.h" /* fonctions toplevel */ -#include "mortevielle/disk.h" /* chargements et sauvegardes */ -/* ecrihexa utilitaire */ +#include "mortevielle/parole2.h" /* les fonctions de la parole */ //Translation: Speech functions +/* debug le debugging */ //Translation: Debugger +#include "mortevielle/ques.h" /* les questions */ //Translation: Questions +#include "mortevielle/menu.h" /* les fonctions du menu */ //Translation: Menu functions +#include "mortevielle/mor.h" /* divers */ //Translation: Misc +#include "mortevielle/taffich.h" /* chargement des dessins */ //Translation: pictures loader +#include "mortevielle/ovd1.h" /* les fonctions sur disque 1 */ //Translation: Disk functions +#include "mortevielle/mor2.h" /* divers */ //Translation: Misc +#include "mortevielle/actions.h" /* les actions */ //Translation: Actions +#include "mortevielle/prog.h" /* fonctions toplevel */ //Translation: toplevel functions +#include "mortevielle/disk.h" /* chargements et sauvegardes */ //Translation: Load/Save +/* ecrihexa utilitaire */ //Translation: Toolbox namespace Mortevielle { diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index c9bdcc7292..e70ee10c6e 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -142,7 +142,7 @@ void deline(int num , char *l , int &tl) { j = j + 1; } while (!the_end); tl = j - 1; - if (tl < 255) delig = copy(delig, 1, tl - 1); /* enleve le $ */ + if (tl < 255) delig = copy(delig, 1, tl - 1); /* enleve le $ */ //Translation: Remove '$' } /* DETEX */ diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 6d17fccf5a..cc094082c8 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -104,7 +104,7 @@ void ani50() { f.read(lettres, 7 * 24); f.close(); - /* ---- Demande de changement de disquette ---- */ + // Ask to swap floppy dem2(); @@ -279,6 +279,7 @@ void ani50() { gotoxy(1, 23); clreol; gotoxy(26, 23); + // "Play using keyboard / ... mouse" output("Jeu au Clavier / … la Souris"); textcolor(4); gotoxy(33, 23); diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index 3c78b04f00..fa71a1e500 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -148,7 +148,7 @@ void veracf(byte b) { Common::File f; int i; - if (!f.open("bruits")) + if (!f.open("bruits")) //Translation: "noise" error("Missing file - bruits"); f.read(&mem[adbruit + 0], 250); @@ -263,7 +263,7 @@ void veracf(byte b) { case 2: case 3 : { - d3 = c2.code + 5; /* 7 ou 8 => voyelle correspondante */ + d3 = c2.code + 5; /* 7 ou 8 => voyelle correspondante */ //Translation: Corresponding vowel if (c1.code > 4) { veracf(c2.acc); if (c1.code == 9) { @@ -318,7 +318,7 @@ void veracf(byte b) { else d3 = 6; if (c2.rep >= 5) { c2.rep = c2.rep - 5; - d3 = 8 - d3; /* echange 2 et 6 */ + d3 = 8 - d3; /* echange 2 et 6 */ //Translation: swap 2 and 6 } if (c2.code == 0) { i = c2.rep; diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 760560eb53..236e785199 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -178,38 +178,38 @@ void tsitu() ctrm = 4; goto L2; } - if (msg[3] == depla) taller(); - if (msg[3] == discut) tparler(); - if (msg[3] == invent) tsprendre(); - if (msg[4] == attacher) tattacher(); - if (msg[4] == attendre) tattendre(); - if (msg[4] == defoncer) tdefoncer(); - if (msg[4] == dormir) tdormir(); - if (msg[4] == ecouter) tecouter(); - if (msg[4] == entrer) tentrer(); - if (msg[4] == fermer) tfermer(); - if (msg[4] == fouiller) tfouiller(); - if (msg[4] == frapper) tfrapper(); - if (msg[4] == gratter) tgratter(); - if (msg[4] == lire) tlire(); - if (msg[4] == manger) tmanger(); - if (msg[4] == mettre) tmettre(); - if (msg[4] == ouvrir) touvrir(); - if (msg[4] == prendre) tprendre(); - if (msg[4] == regarder) tregarder(); - if (msg[4] == sentir) tsentir(); - if (msg[4] == sonder) tsonder(); - if (msg[4] == sortir) tsortir(); - if (msg[4] == soulever) tsoulever(); - if (msg[4] == tourner) ttourner(); - if (msg[4] == scacher) { + if (msg[3] == depla) taller(); //Translation: go to + if (msg[3] == discut) tparler(); //Translation: talk + if (msg[3] == invent) tsprendre(); //Translation: inventory/take + if (msg[4] == attacher) tattacher(); //Translation: tie + if (msg[4] == attendre) tattendre(); //Translation: wait + if (msg[4] == defoncer) tdefoncer(); //Translation: smash + if (msg[4] == dormir) tdormir(); //Translation: sleep + if (msg[4] == ecouter) tecouter(); //Translation: listen + if (msg[4] == entrer) tentrer(); //Translation: enter + if (msg[4] == fermer) tfermer(); //Translation: close + if (msg[4] == fouiller) tfouiller(); //Translation: search + if (msg[4] == frapper) tfrapper(); //Translation: hit + if (msg[4] == gratter) tgratter(); //Translation: scratch + if (msg[4] == lire) tlire(); //Translation: read + if (msg[4] == manger) tmanger(); //Translation: eat + if (msg[4] == mettre) tmettre(); //Translation: put + if (msg[4] == ouvrir) touvrir(); //Translation: open + if (msg[4] == prendre) tprendre(); //Translation: take + if (msg[4] == regarder) tregarder(); //Translation: look + if (msg[4] == sentir) tsentir(); //Translation: smell + if (msg[4] == sonder) tsonder(); //Translation: probe + if (msg[4] == sortir) tsortir(); //Translation: exit + if (msg[4] == soulever) tsoulever(); //Translation: lift + if (msg[4] == tourner) ttourner(); //Translation: turn + if (msg[4] == scacher) { //Translation: hide tcacher(); goto L1; } - if (msg[4] == sfouiller) tsfouiller(); - if (msg[4] == slire) tslire(); - if (msg[4] == sposer) tposer(); - if (msg[4] == sregarder) tsregarder(); + if (msg[4] == sfouiller) tsfouiller();//Translation: search + if (msg[4] == slire) tslire(); //Translation: read + if (msg[4] == sposer) tposer(); //Translation: put + if (msg[4] == sregarder) tsregarder();//Translation: look cache = false; L1: if (anyone) { diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 33ddfe64cc..1a4a88e4ea 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -72,16 +72,16 @@ const byte don[9][5] = { const char *fic[3] = { "", - " Sauvegarde", - " Chargement" + " Sauvegarde", // Translation: "Save" + " Chargement" // Translation: "Load" }; const byte addv[2] = {8, 8}; -const char recom[] = " Recommence "; +const char recom[] = " Recommence "; // Translation: "Restart" -const char f3[] = "F3: Encore"; -const char f8[] = "F8: Suite"; +const char f3[] = "F3: Encore"; // Translation: "F3: More" +const char f8[] = "F8: Suite"; // Translation: "F8: Next" const byte rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; @@ -189,7 +189,7 @@ int x, int t_cph[6401]; byte tabdon[4001]; /* t_dxx : array[0..121] of int;*/ -Common::String stpou; /* donne le % d'indices */ +Common::String stpou; /* donne le % d'indices */ //Translation: "Provides the % of hints" byte is; char mode; Common::String al_mess, diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 4427bc03bf..5fda6ae2d9 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -32,6 +32,9 @@ namespace Mortevielle { +// Constants, types and variables used by Mortville Manor. +// version Nov.'88, Music and speech Oct.'88 + /* Constantes, Types et Variables pour le M A N O I R DE M O R T E V I E L L E @@ -100,7 +103,7 @@ const int c_dialpre = 456; const int c_action = 476; const int c_saction = 497; const int c_dis = 502; -const int c_fin = 510; /* => n'existe pas ; si !! */ +const int c_fin = 510; /* => n'existe pas ; si !! */ // Translation: "=> doesn't exist ; yes !!" const int arega = 0; const int asoul = 154; @@ -345,7 +348,7 @@ extern int x, extern int t_cph[6401]; extern byte tabdon[4001]; /* t_dxx : array[0..121] of int;*/ -extern Common::String stpou; /* donne le % d'indices */ +extern Common::String stpou; /* donne le % d'indices */ // Translation: "provides the % of hints" extern byte is; extern char mode; extern Common::String al_mess, -- cgit v1.2.3 From 2277f8f122f20227658d82b41b52bda8a2cdc85f Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 2 Jan 2012 12:18:57 +1100 Subject: MORTEVIELLE: Reimplemented the zzuul assembly routine in C code --- engines/mortevielle/asm.cpp | 52 +++++++++++++++++++++++++++++++++++++++++++ engines/mortevielle/asm.h | 36 ++++++++++++++++++++++++++++++ engines/mortevielle/module.mk | 1 + 3 files changed, 89 insertions(+) create mode 100644 engines/mortevielle/asm.cpp create mode 100644 engines/mortevielle/asm.h diff --git a/engines/mortevielle/asm.cpp b/engines/mortevielle/asm.cpp new file mode 100644 index 0000000000..2d057a38f9 --- /dev/null +++ b/engines/mortevielle/asm.cpp @@ -0,0 +1,52 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#include "common/scummsys.h" + +namespace Mortevielle { + +/** + * Decodes a number of 64 byte blocks + * @param pStart Start of data + * @param count Number of 64 byte blocks + */ +void zzuul(byte *pStart, int count) { + while (count-- > 0) { + for (int idx = 0; idx < 64; ++pStart, ++idx) { + uint16 v = ((*pStart - 0x80) << 1) + 0x80; + + if (v & 0x8000) + *pStart = 0; + else if (v & 0xff00) + *pStart = 0xff; + else + *pStart = (byte)v; + } + } +} + +} // End of namespace Mortevielle diff --git a/engines/mortevielle/asm.h b/engines/mortevielle/asm.h new file mode 100644 index 0000000000..11793b3d46 --- /dev/null +++ b/engines/mortevielle/asm.h @@ -0,0 +1,36 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_ASM_H +#define MORTEVIELLE_ASM_H + +namespace Mortevielle { + +extern void zzuul(byte *pStart, int count); + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 50ec3f0197..21cb02587a 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -3,6 +3,7 @@ MODULE := engines/mortevielle MODULE_OBJS := \ actions.o \ alert.o \ + asm.o \ boite.o \ detection.o \ disk.o \ -- cgit v1.2.3 From 45f75c901cee61ffcc0c5f34de3d4399fb4dc877 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 2 Jan 2012 12:20:34 +1100 Subject: MORTEVIELLE: Reimplemented the loading of cfiec.mor more cleanly This includes changing the absolute memory address loading to an array buffer, and changing calls to the zzuul method to use the reimplemented version. --- engines/mortevielle/keyboard.cpp | 3 ++- engines/mortevielle/mort.cpp | 6 ++++-- engines/mortevielle/ovd1.cpp | 4 +--- engines/mortevielle/var_mor.cpp | 7 ++----- engines/mortevielle/var_mor.h | 13 ++++--------- 5 files changed, 13 insertions(+), 20 deletions(-) diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index 992a268b01..dae117e110 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -27,6 +27,7 @@ #include "mortevielle/keyboard.h" #include "mortevielle/var_mor.h" +#include "mortevielle/asm.h" namespace Mortevielle { @@ -70,7 +71,7 @@ int testou() { break; case '\26' : if ((c_zzz == 1) && (c_zzz == 2)) { - zzuul(adcfiec + 161, 0, 1644); + zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); c_zzz = succ(int, c_zzz); testou_result = 61; return testou_result; diff --git a/engines/mortevielle/mort.cpp b/engines/mortevielle/mort.cpp index 5975bde459..ea8cbcb663 100644 --- a/engines/mortevielle/mort.cpp +++ b/engines/mortevielle/mort.cpp @@ -27,6 +27,7 @@ #include "mortevielle/mort.h" #include "mortevielle/var_mor.h" /* les variables */ //Translation: Variables +#include "mortevielle/asm.h" #include "mortevielle/keyboard.h" /* la gestion du clavier */ //Translation: Keyboard manager #include "mortevielle/mouse.h" /* la souris */ //Translation: Mouse #include "mortevielle/level15.h" /* les fonctions de base */ //Translation: Lowlevel functions @@ -78,7 +79,7 @@ int mortevielle_main(int argc, const char *argv[]) { charpal(); charge_cfiph(); charge_cfiec(); - zzuul(adcfiec + 161, 0, 1644); + zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); c_zzz = 1; init_nbrepm(); init_mouse(); @@ -123,7 +124,8 @@ int mortevielle_main(int argc, const char *argv[]) { adzon(); takesav(0); if (rech_cfiec) charge_cfiec(); - for (crep = 1; crep <= c_zzz; crep ++) zzuul(adcfiec + 161, 0, 1644); + for (crep = 1; crep <= c_zzz; crep ++) + zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); charge_bruit5(); init_menu(); diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index cc094082c8..6400463a18 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -359,9 +359,7 @@ void ani50() { if (!f.open("cfiec.mor")) error("Missing file - cfiec.mor"); - /*$i-*/ - f.read(&mem[adcfiec + 0], 511); - f.read(&mem[adcfiec + 4088 + 0], 311); + f.read(&adcfiec[0], 822 * 128); f.close(); rech_cfiec = false; diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 1a4a88e4ea..a017e55c0d 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -231,6 +231,8 @@ doublet tabpal[91][17]; t_pcga palcga[91]; pattern tpt[15]; +byte adcfiec[(4088 * 16) + (311 * 0x80)]; + /*---------------------------------------------------------------------------*/ /*-------------------- PROCEDURES AND FONCTIONS -----------------------*/ /*---------------------------------------------------------------------------*/ @@ -385,11 +387,6 @@ void box(int c, int Gd, int xo, int yo, int xi, int yi, int patt) { warning("TODO: box method not yet implemented"); } -// (* external 'c:\mc\zuul.com'; *) -void zzuul(int ad, int seg, int tai) { - warning("TODO: zzuul"); -} - // (* external 'c:\mc\decomp.com'; *) void decomp(int seg, int dep) { warning("TODO: decomp"); diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 5fda6ae2d9..c75fc78081 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -32,9 +32,6 @@ namespace Mortevielle { -// Constants, types and variables used by Mortville Manor. -// version Nov.'88, Music and speech Oct.'88 - /* Constantes, Types et Variables pour le M A N O I R DE M O R T E V I E L L E @@ -69,7 +66,6 @@ const int segdon = 0x6c00; const int adani = 0x7314; const int adword = 0x4000; const int adtroct = 0x406b; -const int adcfiec = 0x4300; const int adbruit = 0x5cb0;/*2C00;*/ const int adbruit1 = 0x6924;/*3874;*/ const int adbruit2 = 0x6b30;/*3A80;*/ @@ -103,7 +99,7 @@ const int c_dialpre = 456; const int c_action = 476; const int c_saction = 497; const int c_dis = 502; -const int c_fin = 510; /* => n'existe pas ; si !! */ // Translation: "=> doesn't exist ; yes !!" +const int c_fin = 510; /* => n'existe pas ; si !! */ const int arega = 0; const int asoul = 154; @@ -174,7 +170,6 @@ extern const char f8[]; extern const byte rang[16]; - /*---------------------------------------------------------------------------*/ /*-------------------------------- TYPES --------------------------------*/ /*---------------------------------------------------------------------------*/ @@ -348,7 +343,7 @@ extern int x, extern int t_cph[6401]; extern byte tabdon[4001]; /* t_dxx : array[0..121] of int;*/ -extern Common::String stpou; /* donne le % d'indices */ // Translation: "provides the % of hints" +extern Common::String stpou; /* donne le % d'indices */ extern byte is; extern char mode; extern Common::String al_mess, @@ -390,6 +385,8 @@ extern doublet tabpal[91][17]; extern t_pcga palcga[91]; extern pattern tpt[15]; +extern byte adcfiec[822 * 128]; + /*---------------------------------------------------------------------------*/ /*------------------- PROCEDURES AND FONCTIONS ------------------------*/ /*---------------------------------------------------------------------------*/ @@ -437,8 +434,6 @@ extern void s_char(int Gd, int y, int dy); extern void s_sauv(int Gd, int y, int dy); // (* external 'c:\mc\boite.com'; *) extern void box(int c, int Gd, int xo, int yo, int xi, int yi, int patt); -// (* external 'c:\mc\zuul.com'; *) -extern void zzuul(int ad, int seg, int tai); // (* external 'c:\mc\decomp.com'; *) extern void decomp(int seg, int dep); // (* external 'c:\mc\affich.com'; *) -- cgit v1.2.3 From 39190ac009ba7139b170376b05e35048fcfe4cbb Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 2 Jan 2012 12:22:52 +1100 Subject: MORTEVIELLE: Fixed some compiler warnings --- engines/mortevielle/sprint.cpp | 5 ++--- engines/mortevielle/taffich.cpp | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp index 0523651ad9..b35bff9dc1 100644 --- a/engines/mortevielle/sprint.cpp +++ b/engines/mortevielle/sprint.cpp @@ -45,8 +45,7 @@ void writeg(Common::String l, int c) { int i, x, xo, yo; - int cecr; - bool t; + int cecr = 0; /* debug('writeg : '+l);*/ @@ -81,7 +80,7 @@ void writeg(Common::String l, int c) } xo = xo + 1; yo = yo + 1; - for (x = 1; x <= l.size(); x ++) { + for (x = 1; x <= (int)l.size(); x ++) { affcar(gd, xo, yo, cecr, ord(l[x])); xo = xo + i; } diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 3cde8eb015..1a126d02b1 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -105,7 +105,7 @@ void taffich() { int i, m, a, b, cx, handle, npal; - float lgt, lhandle; + float lgt; Common::String nom; int palh, k, j; int alllum[16]; -- cgit v1.2.3 From 3e0b4d3774c282ee2e31a3abb2b5d614da0ca311 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 2 Jan 2012 12:29:22 +1100 Subject: MORTEVIELLE: Cleaned up the init_nbrepm method --- engines/mortevielle/mor.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 47430ba220..bfb8655df5 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -989,11 +989,8 @@ void init_nbrepm() { int i; /* debug('init_nbrepm'); */ - i = 0; - do { - i = succ(int, i); - nbrepm[i] = ipm[i]; - } while (!(i == 8)); + for (int idx = 0; idx < 9; ++idx) + nbrepm[idx] = ipm[idx]; } void phaz(int &haz, int &p, int cf) { -- cgit v1.2.3 From 9957819311af589fd24958c66147b32e03b26c47 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 2 Jan 2012 12:37:23 +1100 Subject: MORTEVIELLE: Bugfix for loading data in init_lieu method --- engines/mortevielle/ovd1.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 6400463a18..eb0bd8b20b 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -300,7 +300,8 @@ void ani50() { error("Missing file - MXX.mor"); for (int i = 1; i < 8; ++i) - f_lieu.read(&v_lieu[i][1], 24); + for (int j = 0; j < 25; ++j) + v_lieu[i][j] = f_lieu.readByte(); f_lieu.close(); } -- cgit v1.2.3 From 2a6ec0eaa6d46b66ae05574f18ff79c0a0c18ed0 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 2 Jan 2012 21:29:11 +1100 Subject: MORTEVIELLE: Correct loading of the text data index, and fixed decoding of text lines --- engines/mortevielle/outtext.cpp | 14 +++++++++----- engines/mortevielle/ovd1.cpp | 7 +++---- engines/mortevielle/var_mor.cpp | 4 +++- engines/mortevielle/var_mor.h | 2 +- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index e70ee10c6e..b42aa481ba 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -72,11 +72,11 @@ static void cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { (uchar)'6', (uchar)'7', (uchar)'8', (uchar)'9' }; */ - int oct, ocd; + uint16 oct, ocd; /* 5-8 */ oct = t_mot[idx]; - oct = (uint)(oct << (16 - pt)) >> (16 - pt); + oct = ((uint16)(oct << (16 - pt))) >> (16 - pt); if (pt < 6) { idx = idx + 1; oct = oct << (5 - pt); @@ -96,7 +96,7 @@ static void cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { case 30: case 31 : { ocd = t_mot[idx]; - ocd = (uint)(ocd << (16 - pt)) >> (16 - pt); + ocd = (uint16)(ocd << (16 - pt)) >> (16 - pt); if (pt < 6) { idx = idx + 1; ocd = ocd << (5 - pt); @@ -119,7 +119,10 @@ static void cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { } } /* 5-8 */ -void deline(int num , char *l , int &tl) { +/** + * Decode and extract the line with the given Id + */ +void deline(int num, char *l , int &tl) { int i, j, ts; char let; byte ps, k; @@ -142,7 +145,8 @@ void deline(int num , char *l , int &tl) { j = j + 1; } while (!the_end); tl = j - 1; - if (tl < 255) delig = copy(delig, 1, tl - 1); /* enleve le $ */ //Translation: Remove '$' + if (tl < 255) + delig.deleteLastChar(); // Remove trailing '$' } /* DETEX */ diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index eb0bd8b20b..4eb990c7f6 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -201,18 +201,17 @@ void ani50() { assert(f.size() <= (maxti * 2)); for (i = 0; i < f.size() / 2; ++i) - t_mot[i] = f.readSint16LE(); + t_mot[i] = f.readUint16LE(); f.close(); if (!f.open("TXX.NTP")) error("Missing file - TXX.NTP"); - assert(f.size() <= (maxtd * 4)); - for (i = 0; i < (f.size() + 3) / 4; ++i) { + assert(f.size() <= (maxtd * 3)); + for (i = 0; i < (f.size() / 3); ++i) { t_rec[i].indis = f.readSint16LE(); t_rec[i].point = f.readByte(); - f.readByte(); } f.close(); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index a017e55c0d..0d3f88dcdc 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/debug.h" #include "common/str.h" #include "common/textconsole.h" #include "mortevielle/sprint.h" @@ -216,7 +217,7 @@ byte lettres[7][24]; byte palher[16]; -int t_mot[maxti + 1]; +uint16 t_mot[maxti + 1]; int tay_tchar; ind t_rec[maxtd + 1]; //file sauv_t; @@ -349,6 +350,7 @@ void gotoxy(int x, int y) { void textcolor(int c) { } void output(const Common::String &s) { + debug(s.c_str()); } void graphbackground(int c) { } diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index c75fc78081..63d3112760 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -370,7 +370,7 @@ extern byte lettres[7][24]; extern byte palher[16]; -extern int t_mot[maxti + 1]; +extern uint16 t_mot[maxti + 1]; extern int tay_tchar; extern ind t_rec[maxtd + 1]; //file sauv_t; -- cgit v1.2.3 From de974c908feded56b39ff514e34f15b57b862ef2 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 3 Jan 2012 20:47:05 +1100 Subject: MORTEVIELLE: Initialise graphics, and hardcode game mode to EGA graphics with mouse enabled --- engines/mortevielle/mortevielle.cpp | 4 ++++ engines/mortevielle/mortevielle.h | 4 ++-- engines/mortevielle/ovd1.cpp | 12 ++++++++++-- engines/mortevielle/var_mor.cpp | 23 ++++++++++++----------- 4 files changed, 28 insertions(+), 15 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index dd93555ee3..68b8dbeeb4 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -20,6 +20,7 @@ * */ +#include "engines/util.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mort.h" @@ -37,6 +38,9 @@ bool MortevielleEngine::hasFeature(EngineFeature f) const { } Common::Error MortevielleEngine::run() { + // Initialise graphics mode + initGraphics(SCREEN_WIDTH, SCREEN_HEIGHT, true); + // Dispatch to the game's main routine const char *argv[] = { "" }; mortevielle_main(1, argv); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 406f8fe6d2..14bee28a03 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -33,8 +33,8 @@ enum { kMortevielleCore = 1 << 0 }; -#define SCREEN_WIDTH 320 -#define SCREEN_HEIGHT 200 +#define SCREEN_WIDTH 640 +#define SCREEN_HEIGHT 400 class MortevielleEngine : public Engine { private: diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 4eb990c7f6..a1a47a2913 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -232,7 +232,7 @@ void ani50() { int cy, tay; char st[1410]; float ix; - char ch; +// char ch; /* debug('o3 dialpre'); */ @@ -257,6 +257,8 @@ void ani50() { output("CARTE GRAPHIQUE CGA EGA HERCULE/AT&T400 TANDY AMSTRAD1512"); gotoxy(12, 24); output("Ctrl C E H T A"); + +/* do { ch = get_ch(); // input >> kbd >> ch; } while ((ch != '\1') && (ch != '\3') && (ch != '\5') && (ch != '\24') && (ch != '\10')); @@ -272,7 +274,10 @@ void ani50() { case '\24' : gd = tan; break; - } + }*/ + // Hardcode display mode to EGA + gd = ega; + gotoxy(1, 24); clreol; gotoxy(1, 23); @@ -285,10 +290,13 @@ void ani50() { output("C"); gotoxy(48, 23); output("S"); + /* do { ch = get_ch(); // input >> kbd >> ch; } while ((ch != 'C') && (ch != 'S')); int_m = (toupper(ch) == 'S'); + */ + int_m = true; } /* overlay */ void init_lieu() { diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 0d3f88dcdc..a8b10c1201 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -239,6 +239,8 @@ byte adcfiec[(4088 * 16) + (311 * 0x80)]; /*---------------------------------------------------------------------------*/ void hirs() { + /* Deprecated set graphics + const byte tandy[14] = {113, 80, 90, 14, 63, 6, 50, 56, 2, 3, 6, 7, 0, 0}; const byte herc[13] = {50, 40, 41, 9, 103, 3, 100, 100, 2, 3, 0, 0, 0}; int i; @@ -253,21 +255,19 @@ void hirs() { break; case ams : { hires; - /* - inline_((float)(0xb8) / 6 / 0 / // => mov ax,6 - 0xcd / 0x10); // => int 16 + //inline_((float)(0xb8) / 6 / 0 / // => mov ax,6 + // 0xcd / 0x10); // => int 16 port[0x3d9] = 15; port[0x3df] = 0; port[0x3dd] = 15; - */ + res = 2; } break; case ega : { - /* - inline_((float)(0xb8) / 14 / 0 / // MOV AX, 14 ; mode video 14 = 640*200 16 couleurs - 0xcd / 0x10); // INT 16 - */ + //inline_((float)(0xb8) / 14 / 0 / // MOV AX, 14 ; mode video 14 = 640*200 16 couleurs + // 0xcd / 0x10); // INT 16 + res = 2; } break; @@ -278,9 +278,9 @@ void hirs() { port[0x3b4] = i; port[0x3b5] = herc[i]; } - /* - inline_((float)(0xfc) / 0xb9 / 0 / 0x80 / 0xb8 / 0 / 0xb0 / 0x8e / 0xc0 / 0x31 / 0xff / 0x31 / 0xc0 / 0xf3 / 0xab); - */ + + //inline_((float)(0xfc) / 0xb9 / 0 / 0x80 / 0xb8 / 0 / 0xb0 / 0x8e / 0xc0 / 0x31 / 0xff / 0x31 / 0xc0 / 0xf3 / 0xab); + port[0x3b8] = 10; res = 2; } @@ -303,6 +303,7 @@ void hirs() { } break; } + */ } /* procedure affput(Chx,Gd,x,y,coul,char:int); external 'c:\mc\divaf.com'; */ -- cgit v1.2.3 From 2e95ac70b29ee420aebf532ae1b28e1803b91b0a Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 3 Jan 2012 20:54:25 +1100 Subject: MORTEVIELLE: Fix character indexing in writeg() --- engines/mortevielle/sprint.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp index b35bff9dc1..e6a172b821 100644 --- a/engines/mortevielle/sprint.cpp +++ b/engines/mortevielle/sprint.cpp @@ -81,7 +81,7 @@ void writeg(Common::String l, int c) xo = xo + 1; yo = yo + 1; for (x = 1; x <= (int)l.size(); x ++) { - affcar(gd, xo, yo, cecr, ord(l[x])); + affcar(gd, xo, yo, cecr, ord(l[x - 1])); xo = xo + i; } show_mouse(); -- cgit v1.2.3 From 60f287c85d146c0bc8eca96fb9570036426c4ec1 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Wed, 4 Jan 2012 22:59:21 +1100 Subject: MORTEVIELLE: New create_mortdat project to create a mort.dat data file At the moment, this extracts needed font data from the mort.com executable. --- devtools/create_mortdat/create_mortdat.cpp | 152 +++++++++++++++++++++++++++++ devtools/create_mortdat/module.mk | 11 +++ dists/engine-data/mort.dat | Bin 0 -> 736 bytes 3 files changed, 163 insertions(+) create mode 100644 devtools/create_mortdat/create_mortdat.cpp create mode 100644 devtools/create_mortdat/module.mk create mode 100644 dists/engine-data/mort.dat diff --git a/devtools/create_mortdat/create_mortdat.cpp b/devtools/create_mortdat/create_mortdat.cpp new file mode 100644 index 0000000000..62b81806bc --- /dev/null +++ b/devtools/create_mortdat/create_mortdat.cpp @@ -0,0 +1,152 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + * This is a utility for extracting needed resource data from different language + * version of the Lure of the Temptress lure.exe executable files into a new file + * lure.dat - this file is required for the ScummVM Lure of the Temptress module + * to work properly + */ + +// Disable symbol overrides so that we can use system headers. +#define FORBIDDEN_SYMBOL_ALLOW_ALL + +// HACK to allow building with the SDL backend on MinGW +// see bug #1800764 "TOOLS: MinGW tools building broken" +#ifdef main +#undef main +#endif // main + +#include +#include +#include + +#include "common/endian.h" + +enum AccessMode { + kFileReadMode = 1, + kFileWriteMode = 2 +}; + +class File { +private: + FILE *f; +public: + bool open(const char *filename, AccessMode mode = kFileReadMode) { + f = fopen(filename, (mode == kFileReadMode) ? "rb" : "wb"); + return (f != NULL); + } + void close() { + fclose(f); + f = NULL; + } + int seek(int32 offset, int whence = SEEK_SET) { + return fseek(f, offset, whence); + } + long read(void *buffer, int len) { + return fread(buffer, 1, len, f); + } + void write(const void *buffer, int len) { + fwrite(buffer, 1, len, f); + } + byte readByte() { + byte v; + read(&v, sizeof(byte)); + return v; + } + uint16 readWord() { + uint16 v; + read(&v, sizeof(uint16)); + return FROM_LE_16(v); + } + uint32 readLong() { + uint32 v; + read(&v, sizeof(uint32)); + return FROM_LE_32(v); + } + void writeByte(byte v) { + write(&v, sizeof(byte)); + } + void writeWord(uint16 v) { + uint16 vTemp = TO_LE_16(v); + write(&vTemp, sizeof(uint16)); + } + void writeLong(uint32 v) { + uint32 vTemp = TO_LE_32(v); + write(&vTemp, sizeof(uint32)); + } + uint32 pos() { + return ftell(f); + } +}; + +File outputFile, mortCom; + +/*-------------------------------------------------------------------------*/ + +#define VERSION_MAJOR 1 +#define VERSION_MINOR 0 + +void openOutputFile(const char *outFilename) { + outputFile.open(outFilename, kFileWriteMode); + + // Write header + outputFile.write("mort", 4); + outputFile.writeByte(VERSION_MAJOR); + outputFile.writeByte(VERSION_MINOR); +} + +void process() { + byte checkBuffer[7]; + byte fontBuffer[121 * 6]; + + // Move to just prior the font data and verify that we're reading the known mort.com + mortCom.seek(0x36b0); + mortCom.read(checkBuffer, 7); + + if ((checkBuffer[0] != 0x59) || (checkBuffer[1] != 0x5B) || (checkBuffer[2] != 0x58) || + (checkBuffer[3] != 0xC3) || (checkBuffer[4] != 0xE8) || (checkBuffer[5] != 0xD6) || + (checkBuffer[6] != 0x02)) { + printf("Invalid mort.com input file"); + exit(0); + } + + // Read in the data + mortCom.read(fontBuffer, 121 * 6); + + // Write out a section header to the output file and the font data + char fontHeader[4] = { 'F', 'O', 'N', 'T' }; + outputFile.write(fontHeader, 4); + outputFile.write(fontBuffer, 121 * 6); +} + +int main(int argc, char *argv[]) { + if (argc != 3) { + printf("Format: input_filename output_filename\n", argv[0]); + exit(0); + } + + mortCom.open(argv[1], kFileReadMode); + openOutputFile(argv[2]); + + process(); + + mortCom.close(); + outputFile.close(); +} diff --git a/devtools/create_mortdat/module.mk b/devtools/create_mortdat/module.mk new file mode 100644 index 0000000000..86b14d8284 --- /dev/null +++ b/devtools/create_mortdat/module.mk @@ -0,0 +1,11 @@ + +MODULE := devtools/create_mortdat + +MODULE_OBJS := \ + create_mortdat.o \ + +# Set the name of the executable +TOOL_EXECUTABLE := create_mortdat + +# Include common rules +include $(srcdir)/rules.mk diff --git a/dists/engine-data/mort.dat b/dists/engine-data/mort.dat new file mode 100644 index 0000000000..ce4e5bb1c8 Binary files /dev/null and b/dists/engine-data/mort.dat differ -- cgit v1.2.3 From 1727798a8ea95574ecf6d43ec2fc071b6cb87d0b Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Thu, 5 Jan 2012 07:56:45 +1100 Subject: MORTEVIELLE: Implemented loading of the font data, and rewrote drawing routines to use it. --- devtools/create_mortdat/create_mortdat.cpp | 6 +- dists/engine-data/mort.dat | Bin 736 -> 738 bytes engines/mortevielle/mortevielle.cpp | 136 ++++++++++++++++++++++++++++- engines/mortevielle/mortevielle.h | 22 ++++- engines/mortevielle/mouse.cpp | 3 +- engines/mortevielle/ovd1.cpp | 2 - engines/mortevielle/sprint.cpp | 4 + engines/mortevielle/var_mor.cpp | 20 +++-- engines/mortevielle/var_mor.h | 3 +- 9 files changed, 182 insertions(+), 14 deletions(-) diff --git a/devtools/create_mortdat/create_mortdat.cpp b/devtools/create_mortdat/create_mortdat.cpp index 62b81806bc..aa7da0169a 100644 --- a/devtools/create_mortdat/create_mortdat.cpp +++ b/devtools/create_mortdat/create_mortdat.cpp @@ -107,7 +107,7 @@ void openOutputFile(const char *outFilename) { outputFile.open(outFilename, kFileWriteMode); // Write header - outputFile.write("mort", 4); + outputFile.write("MORT", 4); outputFile.writeByte(VERSION_MAJOR); outputFile.writeByte(VERSION_MINOR); } @@ -132,7 +132,9 @@ void process() { // Write out a section header to the output file and the font data char fontHeader[4] = { 'F', 'O', 'N', 'T' }; - outputFile.write(fontHeader, 4); + outputFile.write(fontHeader, 4); // Section Id + outputFile.writeWord(121 * 6); // Section size + outputFile.write(fontBuffer, 121 * 6); } diff --git a/dists/engine-data/mort.dat b/dists/engine-data/mort.dat index ce4e5bb1c8..ebfb8a8e0e 100644 Binary files a/dists/engine-data/mort.dat and b/dists/engine-data/mort.dat differ diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 68b8dbeeb4..43534a6ae0 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -20,14 +20,22 @@ * */ +#include "common/system.h" #include "engines/util.h" +#include "engines/engine.h" +#include "graphics/palette.h" +#include "graphics/pixelformat.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mort.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { +MortevielleEngine *g_vm; + MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc): Engine(system), _gameDescription(gameDesc) { + g_vm = this; } MortevielleEngine::~MortevielleEngine() { @@ -37,10 +45,136 @@ bool MortevielleEngine::hasFeature(EngineFeature f) const { return false; } -Common::Error MortevielleEngine::run() { +Common::ErrorCode MortevielleEngine::initialise() { // Initialise graphics mode initGraphics(SCREEN_WIDTH, SCREEN_HEIGHT, true); + // Set up an intermediate screen surface + _screenSurface.create(SCREEN_WIDTH, SCREEN_HEIGHT, Graphics::PixelFormat::createFormatCLUT8()); + + // Set the screen mode + gd = ega; + res = 2; + + // Load the mort.dat resource + return loadMortDat(); +} + +/** + * Loads the contents of the Mort.dat data file + */ +Common::ErrorCode MortevielleEngine::loadMortDat() { + Common::File f; + + // Open the mort.dat file + if (!f.open(MORT_DAT)) { + GUIErrorMessage("Could not locate Mort.dat file"); + return Common::kReadingFailed; + } + + // Validate the data file header + char fileId[4]; + f.read(fileId, 4); + if (strncmp(fileId, "MORT", 4) != 0) { + GUIErrorMessage("The located mort.dat data file is invalid"); + return Common::kReadingFailed; + } + + // Check the version + if (f.readByte() < MORT_DAT_REQUIRED_VERSION) { + GUIErrorMessage("The located mort.dat data file is too a version"); + return Common::kReadingFailed; + } + f.readByte(); // Minor version + + // Loop to load resources from the data file + while (f.pos() < f.size()) { + // Get the Id and size of the next resource + char dataType[4]; + int dataSize; + f.read(dataType, 4); + dataSize = f.readUint16LE(); + + if (!strncmp(dataType, "FONT", 4)) { + // Font resource + assert(dataSize == (FONT_NUM_CHARS * FONT_HEIGHT)); + f.read(_fontData, FONT_NUM_CHARS * FONT_HEIGHT); + } else { + // Unknown section + f.skip(dataSize); + } + } + + f.close(); + return Common::kNoError; +} + +/*-------------------------------------------------------------------------*/ + +/** + * Update the physical screen + */ +void MortevielleEngine::updateScreen() { + g_system->copyRectToScreen((const byte *)_screenSurface.getBasePtr(0, 0), + SCREEN_WIDTH, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); + g_system->updateScreen(); +} +/** + * Draws a character at the specified co-ordinates + * @remarks Because the ScummVM surface is using a double height 640x200 surface to + * simulate the original 640x200 surface, all Y values have to be doubled + */ +void MortevielleEngine::writeCharacter(const Common::Point &pt, unsigned char ch, + int palIndex, Graphics::Surface *surface) { + if (surface == NULL) + surface = &_screenSurface; + + // Get the start of the character to use + assert((ch >= ' ') && (ch <= (unsigned char)(32 + FONT_NUM_CHARS))); + const byte *charData = &_fontData[((int)ch - 32) * FONT_HEIGHT]; + + // Loop through decoding each character's data + for (int yp = 0; yp < FONT_HEIGHT; ++yp) { + byte *lineP = (byte *)surface->getBasePtr(pt.x, (pt.y + yp) * 2); + byte byteVal = *charData++; + + for (int xp = 0; xp < 8; ++xp, ++lineP, byteVal <<= 1) { + if (byteVal & 0x80) { + *lineP = palIndex; + *(lineP + SCREEN_WIDTH) = palIndex; + } + } + } +} + +/** + * Sets a single pixel at the specified co-ordinates + * @remarks Because the ScummVM surface is using a double height 640x200 surface to + * simulate the original 640x200 surface, all Y values have to be doubled + */ +void MortevielleEngine::setPixel(const Common::Point &pt, int palIndex, + Graphics::Surface *surface) { + if (surface == NULL) + surface = &_screenSurface; + + byte *destP = (byte *)surface->getBasePtr(pt.x, pt.y * 2); + *destP = palIndex; + *(destP + SCREEN_WIDTH) = palIndex; +} + + +/*-------------------------------------------------------------------------*/ + +Common::Error MortevielleEngine::run() { + // Initialise the game + Common::ErrorCode err = initialise(); + if (err != Common::kNoError) + return err; + + // TODO: Remove once palette loading is correctly done + uint32 white = 0xffffffff; + g_system->getPaletteManager()->setPalette((const byte *)&white, 15, 1); + // Dispatch to the game's main routine const char *argv[] = { "" }; mortevielle_main(1, argv); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 14bee28a03..b9d8265385 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -23,9 +23,12 @@ #ifndef MORTEVIELLE_H #define MORTEVIELLE_H +#include "common/file.h" +#include "common/rect.h" #include "engines/advancedDetector.h" #include "engines/engine.h" #include "common/error.h" +#include "graphics/surface.h" namespace Mortevielle { @@ -35,17 +38,34 @@ enum { #define SCREEN_WIDTH 640 #define SCREEN_HEIGHT 400 +#define MORT_DAT_REQUIRED_VERSION 1 +#define MORT_DAT "mort.dat" + +#define FONT_WIDTH 8 +#define FONT_HEIGHT 6 +#define FONT_NUM_CHARS 121 class MortevielleEngine : public Engine { private: const ADGameDescription *_gameDescription; + + Common::ErrorCode initialise(); + Common::ErrorCode loadMortDat(); + void loadFont(Common::File &f); +public: + Graphics::Surface _screenSurface; + byte _fontData[FONT_NUM_CHARS * FONT_HEIGHT]; public: MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc); ~MortevielleEngine(); virtual bool hasFeature(EngineFeature f) const; virtual Common::Error run(); - uint32 getGameFlags() const; + + void updateScreen(); + void writeCharacter(const Common::Point &pt, + unsigned char ch, int palIndex, Graphics::Surface *surface = NULL); + void setPixel(const Common::Point &pt, int palIndex, Graphics::Surface *surface = NULL); }; extern MortevielleEngine *g_vm; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 1aaea06d68..d78b458816 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/rect.h" #include "mortevielle/mouse.h" #include "mortevielle/var_mor.h" @@ -256,7 +257,7 @@ void show_mouse() { } break; } /* case Gd */ - affput(2, gd, x_s, y_s, 0, 0); + affput(Common::Point(x_s, y_s), 0, 0); } void pos_mouse(int x, int y) { diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index a1a47a2913..3aa942c7e2 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -275,8 +275,6 @@ void ani50() { gd = tan; break; }*/ - // Hardcode display mode to EGA - gd = ega; gotoxy(1, 24); clreol; diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp index e6a172b821..67bd3ab119 100644 --- a/engines/mortevielle/sprint.cpp +++ b/engines/mortevielle/sprint.cpp @@ -27,6 +27,7 @@ #include "common/str.h" #include "common/textconsole.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/sprint.h" #include "mortevielle/var_mor.h" @@ -85,6 +86,9 @@ void writeg(Common::String l, int c) xo = xo + i; } show_mouse(); + + // TODO: Move screen updates to main loop once constructed + g_vm->updateScreen(); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index a8b10c1201..e07a7359ac 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -28,6 +28,7 @@ #include "common/debug.h" #include "common/str.h" #include "common/textconsole.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/sprint.h" #include "mortevielle/var_mor.h" @@ -306,18 +307,25 @@ void hirs() { */ } -/* procedure affput(Chx,Gd,x,y,coul,char:int); external 'c:\mc\divaf.com'; */ -void affput(int Chx, int Gd, int x, int y, int coul, int char_) { - warning("TODO: Implement affput"); +/** + * Draws either a single pixel or a character to the screen + */ +void affput(const Common::Point &pt, int palIndex, int ch) { + if (ch == 0) + g_vm->setPixel(pt, palIndex); + else + g_vm->writeCharacter(pt, ch, palIndex); } void affcar(int gd, int x, int y, int coul, int chr) { - if (res == 1) affput(1, gd, ((uint)x >> 1), y, coul, chr); - else affput(1, gd, x, y, coul, chr); + if (res == 1) + affput(Common::Point(((uint)x >> 1), y), coul, chr); + else + affput(Common::Point(x, y), coul, chr); } void putpix(int gd, int x, int y, int coul) { - affput(0, gd, x, y, coul, 0); + affput(Common::Point(x, y), coul, 0); } /** diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 63d3112760..f9c29e20f6 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -28,6 +28,7 @@ #ifndef MORTEVIELLE_VAR_H #define MORTEVIELLE_VAR_H +#include "common/rect.h" #include "common/str.h" namespace Mortevielle { @@ -396,7 +397,7 @@ void affcar(int gd, int x, int y, int coul, int chr); void putpix(int gd, int x, int y, int coul); Common::String copy(const Common::String &s, int idx, size_t size); void Val(const Common::String &s, int &V, int Code); -void affput(int Chx, int Gd, int x, int y, int coul, int char_); +void affput(const Common::Point &pt, int palIndex, int ch); /*---------------------------------------------------------------------------*/ /*------------------------------ STUBS ------------------------------*/ -- cgit v1.2.3 From c45e7c5d94fc5bee5b638029470aedd4b8f7eaf3 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 8 Jan 2012 11:09:40 +1100 Subject: MORTEVIELLE: Change mem array to be 640Kb, and correct segment offsets using the array --- engines/mortevielle/level15.cpp | 14 +++++++------- engines/mortevielle/mor.cpp | 2 +- engines/mortevielle/mouse.cpp | 10 +++++----- engines/mortevielle/ovd1.cpp | 6 +++--- engines/mortevielle/parole.cpp | 14 +++++++------- engines/mortevielle/taffich.cpp | 10 +++++----- engines/mortevielle/var_mor.cpp | 2 +- engines/mortevielle/var_mor.h | 2 +- 8 files changed, 30 insertions(+), 30 deletions(-) diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index a2d5432b50..5195e7c2a4 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -66,7 +66,7 @@ void outbloc(int n, pattern p, t_nhom pal) { ad = ad + 4; for (i = 1; i <= p.tax; i ++) for (j = 1; j <= p.tay; j ++) - mem[0x6000 + ad + pred(int, j)*p.tax + pred(int, i)] = pal[n].hom[p.des[i][j]]; + mem[0x6000 * 16 + ad + pred(int, j)*p.tax + pred(int, i)] = pal[n].hom[p.des[i][j]]; } } @@ -81,8 +81,8 @@ void writepal(int n) { case ega: case ams : for (i = 1; i <= 16; i ++) { - mem[0x7000 + 2 * i] = tabpal[n][i].x; - mem[0x7000 + succ(int, 2 * i)] = tabpal[n][i].y; + mem[0x7000 * 16 + 2 * i] = tabpal[n][i].x; + mem[0x7000 * 16 + succ(int, 2 * i)] = tabpal[n][i].y; } break; case cga : { @@ -99,8 +99,8 @@ void writepal(int n) { void pictout(int seg, int dep, int x, int y) { decomp(seg, dep); if (gd == her) { - mem[0x7000 + 2] = 0; - mem[0x7000 + 32] = 15; + mem[0x7000 * 16 + 2] = 0; + mem[0x7000 * 16 + 32] = 15; } if ((caff != 51) && (memw[0x7000 + 0x4138] > 0x100)) memw[0x7000 + 0x4138] = 0x100; afff(gd, seg, dep, x, y); @@ -174,7 +174,7 @@ void adzon() { if (!f.open("dec.mor")) error("Missing files - dec.moir"); - f.read(&mem[0x73a2 + 0], 1); + f.read(&mem[0x73a2 * 16 + 0], 1); /*i:=0; repeat read(g,a); @@ -188,7 +188,7 @@ int animof(int ouf, int num) { int nani, aux; int animof_result; - nani = mem[adani + 1]; + nani = mem[adani * 16 + 1]; aux = num; if (ouf != 1) aux = aux + nani; animof_result = (nani << 2) + 2 + swap(memw[adani + (aux << 1)]); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index bfb8655df5..4af3967eae 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -109,7 +109,7 @@ void dessine_rouleau() { /* debug('dessine_rouleau'); */ writepal(89); if (gd == her) { - mem[0x7000 + 14] = 15; + mem[0x7000 * 16 + 14] = 15; } hide_mouse(); pictout(0x73a2, 0, 0, 0); diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index d78b458816..1ae04417bf 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -139,10 +139,10 @@ void hide_mouse() { k = 0; j = p_o_s; do { - ps = mem[0xa000 + j]; - mem[0xa000 + j] = lo(s_s[i][k]); - ps = mem[0xa000 + j + 1]; - mem[0xa000 + j + 1] = hi(s_s[i][k]); + ps = mem[0xa000 * 16 + j]; + mem[0xa000 * 16 + j] = lo(s_s[i][k]); + ps = mem[0xa000 * 16 + j + 1]; + mem[0xa000 * 16 + j + 1] = hi(s_s[i][k]); j = j + 80; k = succ(int, k); } while (!(k >= 8)); @@ -227,7 +227,7 @@ void show_mouse() { k = 0; j = p_o_s; do { - s_s[l][k] = mem[0xa000 + j] + (mem[0xa000 + succ(int, j)] << 8); + s_s[l][k] = mem[0xa000 * 16 + j] + (mem[0xa000 + succ(int, j)] << 8); j = j + 80; k = succ(int, k); } while (!(k >= 8)); diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 3aa942c7e2..89dde415df 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -327,8 +327,8 @@ void ani50() { if (!fic.open("mort.img")) error("Missing file - mort.img"); - fic.read(&mem[0x3800 + 0], 500); - fic.read(&mem[0x47a0 + 0], 123); + fic.read(&mem[0x3800 * 16 + 0], 500); + fic.read(&mem[0x47a0 * 16 + 0], 123); fic.close(); demus(0x3800, 0x5000, 623); @@ -353,7 +353,7 @@ void ani50() { if (!f.open("bruit5")) error("Missing file - bruit5"); - f.read(&mem[adbruit5 + 0], 149); + f.read(&mem[adbruit5 * 16 + 0], 149); /*blockread(f,mem[$5CB0:0],100); blockread(f,mem[$3D1F:0],49);*/ f.close(); diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index fa71a1e500..7f8476da80 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -87,7 +87,7 @@ void charg_car() { void entroct(byte o) { - mem[adtroct + ptr_oct] = o; + mem[adtroct * 16 + ptr_oct] = o; ptr_oct = ptr_oct + 1; } @@ -125,9 +125,9 @@ void veracf(byte b) { if (!f.open("sonmus.mor")) error("Missing file - sonmus.mor"); - f.read(&mem[0x7414 + 0], 273); - /*blockread(f,mem[adson+0],300); - blockread(f,mem[adson+2400+0],245);*/ + f.read(&mem[0x7414 * 16 + 0], 273); + /*blockread(f,mem[adson * 16+0],300); + blockread(f,mem[adson * 16+2400+0],245);*/ demus(0x7414, adson, 273); f.close(); } @@ -151,9 +151,9 @@ void veracf(byte b) { if (!f.open("bruits")) //Translation: "noise" error("Missing file - bruits"); - f.read(&mem[adbruit + 0], 250); - for (i = 0; i <= 19013; i ++) mem[adbruit + 32000 + i] = mem[adbruit5 + i]; - f.read(&mem[adbruit1 + offsetb1], 149); + f.read(&mem[adbruit * 16 + 0], 250); + for (i = 0; i <= 19013; i ++) mem[adbruit * 16 + 32000 + i] = mem[adbruit5 + i]; + f.read(&mem[adbruit1 * 16 + offsetb1], 149); f.close(); } diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 1a126d02b1..449e003394 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -56,14 +56,14 @@ void chardes(Common::String nom, float passe, int long_) { l = long_ + p; i = 0; while (l > 0) { - f.read(&mem[0x6000 + i], 1); + f.read(&mem[0x6000 * 16 + i], 1); testfi(); l = l - 128; i = i + 128; } f.close(); - for (i = p; i <= long_ + p; i ++) mem[0x7000 + i - p] = mem[0x6000 + i]; + for (i = p; i <= long_ + p; i ++) mem[0x7000 * 16 + i - p] = mem[0x6000 + i]; /*$i+*/ } @@ -89,14 +89,14 @@ void charani(Common::String nom, float passe, int long_) { l = long_ + p; i = 0; while (l > 0) { - f.read(&mem[0x6000 + i], 1); + f.read(&mem[0x6000 * 16 + i], 1); testfi(); l = l - 128; i = i + 128; } f.close(); - for (i = p; i <= long_ + p; i ++) mem[0x7314 + i - p] = mem[0x6000 + i]; + for (i = p; i <= long_ + p; i ++) mem[0x7314 * 16 + i - p] = mem[0x6000 + i]; } void taffich() { @@ -188,7 +188,7 @@ void taffich() { 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]; + mem[0x7000 * 16 + 2 + (k << 1)] = rang[i]; alllum[k] = -1; } } diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index e07a7359ac..589a0bbac5 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -350,7 +350,7 @@ Common::String copy(const Common::String &s, int idx, size_t size) { /*---------------------------------------------------------------------------*/ int port[0xfff]; -byte mem[0xffff]; +byte mem[65536 * 16]; int memw[0xffff]; int wherey; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index f9c29e20f6..fbd324b548 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -405,7 +405,7 @@ void affput(const Common::Point &pt, int palIndex, int ch); // TODO: Replace the following with proper implementations, or refactor out the code using them extern int port[0xfff]; -extern byte mem[0xffff]; +extern byte mem[65536 * 16]; extern int memw[0xffff]; #define hires {} -- cgit v1.2.3 From c72eed79806b0dca804b7cea6ae2ae73d6069ccd Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 8 Jan 2012 11:21:11 +1100 Subject: MORTEVIELLE: Converted memw[] usage to use mem[] array with endian macros This is better for now, since mem and memw share the same memory space. --- engines/mortevielle/level15.cpp | 13 +++++++------ engines/mortevielle/mor.cpp | 5 +++-- engines/mortevielle/mort.cpp | 6 +++--- engines/mortevielle/mouse.cpp | 41 ++++++++++++++++++++++------------------- engines/mortevielle/parole.cpp | 4 ++-- engines/mortevielle/parole2.cpp | 3 ++- engines/mortevielle/taffich.cpp | 4 ++-- engines/mortevielle/var_mor.cpp | 1 - engines/mortevielle/var_mor.h | 1 - 9 files changed, 41 insertions(+), 37 deletions(-) diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 5195e7c2a4..bd908b47c4 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -61,8 +61,8 @@ void outbloc(int n, pattern p, t_nhom pal) { ad = n * 404 + 0xd700; { - memw[0x6000 + ad] = p.tax; - memw[0x6000 + ad + 2] = p.tay; + WRITE_LE_UINT16(&mem[0x6000 + ad], p.tax); + WRITE_LE_UINT16(&mem[0x6000 + ad + 2], p.tay); ad = ad + 4; for (i = 1; i <= p.tax; i ++) for (j = 1; j <= p.tay; j ++) @@ -102,7 +102,8 @@ void pictout(int seg, int dep, int x, int y) { mem[0x7000 * 16 + 2] = 0; mem[0x7000 * 16 + 32] = 15; } - if ((caff != 51) && (memw[0x7000 + 0x4138] > 0x100)) memw[0x7000 + 0x4138] = 0x100; + if ((caff != 51) && (READ_LE_UINT16(&mem[0x7000 + 0x4138]) > 0x100)) + WRITE_LE_UINT16(&mem[0x7000 + 0x4138], 0x100); afff(gd, seg, dep, x, y); } @@ -191,10 +192,10 @@ int animof(int ouf, int num) { nani = mem[adani * 16 + 1]; aux = num; if (ouf != 1) aux = aux + nani; - animof_result = (nani << 2) + 2 + swap(memw[adani + (aux << 1)]); + animof_result = (nani << 2) + 2 + swap(READ_LE_UINT16(&mem[adani + (aux << 1)])); /*aux:= nani shl 2 + 2; - if ouf=1 then aux:= aux+ swap(memw[adani: num shl 1]) - else aux:= aux+ swap(memw[adani: (nani+num) shl 1]); + if ouf=1 then aux:= aux+ swap(WRITE_LE_UINT16(&mem[adani: num shl 1]) + else aux:= aux+ swap(WRITE_LE_UINT16(&mem[adani: (nani+num) shl 1]); animof:=aux;*/ return animof_result; } diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 4af3967eae..ede69a5765 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/endian.h" #include "common/str.h" #include "common/textconsole.h" #include "mortevielle/alert.h" @@ -1231,8 +1232,8 @@ void messint(int nu) { clsf2(); clsf3(); decomp(0x73a2, 1008); - memw[0x7413 + 12] = 80; - memw[0x7413 + 14] = 40; + WRITE_LE_UINT16(&mem[0x7413 + 12], 80); + WRITE_LE_UINT16(&mem[0x7413 + 14], 40); writepal(90); afff(gd, 0x73a2, 1008, 0, 0); afff(gd, 0x73a2, 1008, 0, 70); diff --git a/engines/mortevielle/mort.cpp b/engines/mortevielle/mort.cpp index ea8cbcb663..9b05196ab9 100644 --- a/engines/mortevielle/mort.cpp +++ b/engines/mortevielle/mort.cpp @@ -83,9 +83,9 @@ int mortevielle_main(int argc, const char *argv[]) { c_zzz = 1; init_nbrepm(); init_mouse(); - /* crep:=memw[$7f00:0]; - memw[$7f00:0]:= crep+1; - if (memw[$7f00:0]<> crep+1) then + /* crep:=WRITE_LE_UINT16(&mem[$7f00:0]; + WRITE_LE_UINT16(&mem[$7f00:0]:= crep+1; + if (WRITE_LE_UINT16(&mem[$7f00:0]<> crep+1) then begin hirs; show_mouse; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 1ae04417bf..e7eb225edf 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/endian.h" #include "common/rect.h" #include "mortevielle/mouse.h" #include "mortevielle/var_mor.h" @@ -57,7 +58,7 @@ void init_mouse() { /*int_m:= False;*/ clic = false; m_show = m_arrow; - if ((memw[0xcc] == 0) && (memw[0xce] == 0)) int_m = false; + if ((READ_LE_UINT16(&mem[0xcc]) == 0) && (READ_LE_UINT16(&mem[0xce]) == 0)) int_m = false; if (int_m) { reg.ax = 0; intr(0x33, reg); @@ -101,10 +102,10 @@ void hide_mouse() { k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); do { - memw[0xb000 + j] = s_s[0][k]; - memw[0xb800 + j + 2] = s_s[1][k]; - memw[0xba00 + j] = s_s[2][k]; - memw[0xba00 + j + 2] = s_s[3][k]; + WRITE_LE_UINT16(&mem[0xb000 + j], s_s[0][k]); + WRITE_LE_UINT16(&mem[0xb800 + j + 2], s_s[1][k]); + WRITE_LE_UINT16(&mem[0xba00 + j], s_s[2][k]); + WRITE_LE_UINT16(&mem[0xba00 + j + 2], s_s[3][k]); j = j + 80; k = succ(int, k); } while (!(k >= 5)); @@ -117,10 +118,10 @@ void hide_mouse() { j = p_o_s; do { if (imp) { - memw[0xb800 + j] = s_s[i][k]; + WRITE_LE_UINT16(&mem[0xb800 + j], s_s[i][k]); j = j + 80 - 0x2000; } else { - memw[0xb800 + j] = s_s[i][k]; + WRITE_LE_UINT16(&mem[0xb800 + j], s_s[i][k]); j = j + 0x2000; } imp = ! imp; @@ -153,7 +154,8 @@ void hide_mouse() { case her : { j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); for (i = 0; i <= 5; i ++) { - for (k = 0; k <= 3; k ++) memw[0xb000 + k * 0x200 + j] = s_s[i][k]; + for (k = 0; k <= 3; k ++) + WRITE_LE_UINT16(&mem[0xb000 + k * 0x200 + j], s_s[i][k]); j = j + 80; } } @@ -163,8 +165,8 @@ void hide_mouse() { k = 0; do { for (i = 0; i <= 3; i ++) { - memw[0xb800 + 0x200 * i + j] = s_s[k][i + (k << 2)]; - memw[0xb800 + 0x200 * i + j + 2] = s_s[k + 3][i + (k << 2)]; + WRITE_LE_UINT16(&mem[0xb800 + 0x200 * i + j], s_s[k][i + (k << 2)]); + WRITE_LE_UINT16(&mem[0xb800 + 0x200 * i + j + 2], s_s[k + 3][i + (k << 2)]); } j = j + 160; k = succ(int, k); @@ -190,10 +192,10 @@ void show_mouse() { k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); do { - s_s[0][k] = memw[0xb800 + j]; - s_s[1][k] = memw[0xb800 + j + 2]; - s_s[2][k] = memw[0xba00 + j]; - s_s[3][k] = memw[0xba00 + j + 2]; + s_s[0][k] = READ_LE_UINT16(&mem[0xb800 + j]); + s_s[1][k] = READ_LE_UINT16(&mem[0xb800 + j + 2]); + s_s[2][k] = READ_LE_UINT16(&mem[0xba00 + j]); + s_s[3][k] = READ_LE_UINT16(&mem[0xba00 + j + 2]); j = j + 80; k = succ(int, k); } while (!(k >= 5)); @@ -207,10 +209,10 @@ void show_mouse() { k = 0; do { if (imp) { - s_s[i][k] = memw[0xb800 + j]; + s_s[i][k] = READ_LE_UINT16(&mem[0xb800 + j]); j = j + 80 - 0x2000; } else { - s_s[i][k] = memw[0xb800 + j]; + s_s[i][k] = READ_LE_UINT16(&mem[0xb800 + j]); j = j + 0x2000; } imp = ! imp; @@ -238,7 +240,8 @@ void show_mouse() { case her : { j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); for (i = 0; i <= 5; i ++) { - for (k = 0; k <= 3; k ++) s_s[i][k] = memw[0xb000 + k * 0x200 + j]; + for (k = 0; k <= 3; k ++) + s_s[i][k] = READ_LE_UINT16(&mem[0xb000 + k * 0x200 + j]); j = j + 80; } } @@ -248,8 +251,8 @@ void show_mouse() { k = 0; do { for (i = 0; i <= 3; i ++) { - s_s[k][i + (k << 2)] = memw[0xb800 + 0x200 * i + j]; - s_s[k + 3][i + (k << 2)] = memw[0xb800 + 0x200 * i + j + 2]; + s_s[k][i + (k << 2)] = READ_LE_UINT16(&mem[0xb800 + 0x200 * i + j]); + s_s[k + 3][i + (k << 2)] = READ_LE_UINT16(&mem[0xb800 + 0x200 * i + j + 2]); } j = j + 160; k = succ(int, k); diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index 7f8476da80..76d6c9a177 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -45,7 +45,7 @@ void spfrac(int wor) { void charg_car() { int wor, int_; - wor = swap(memw[adword + ptr_word]); + wor = swap(READ_LE_UINT16(&mem[adword + ptr_word])); int_ = wor & 0x3f; if ((int_ >= 0) && (int_ <= 13)) { @@ -113,7 +113,7 @@ void veracf(byte b) { i = offsetb3 + 8590; j = 0; do { - t_cph[j] = memw[adbruit3 + i]; + t_cph[j] = READ_LE_UINT16(&mem[adbruit3 + i]); i = i + 2; j = j + 1; } while (!(i >= offsetb3 + 8790)); diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index be8c17bf3b..cba5588ffc 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/endian.h" #include "mortevielle/level15.h" #include "mortevielle/parole2.h" #include "mortevielle/parole.h" @@ -62,7 +63,7 @@ void trait_ph() { ptr_tcph = (uint)ledeb >> 1; ptr_word = 0; do { - memw[adword + ptr_word] = t_cph[ptr_tcph]; + WRITE_LE_UINT16(&mem[adword + ptr_word], t_cph[ptr_tcph]); ptr_word = ptr_word + 2; ptr_tcph = ptr_tcph + 1; } while (!(ptr_tcph >= (int)((uint)lefin >> 1))); diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 449e003394..1cb0f76325 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -182,7 +182,7 @@ void taffich() { chardes(nom, lgt, handle); if (gd == her) { for (i = 0; i <= 15; i ++) { - palh = memw[0x7000 + (succ(int, i) << 1)]; + palh = READ_LE_UINT16(&mem[0x7000 + (succ(int, i) << 1)]); alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); } for (i = 0; i <= 15; i ++) { @@ -221,7 +221,7 @@ void taffich() { /* begin for i:=0 to 15 do begin - PalH:=memw[$7000:succ(i) shl 1]; + PalH:=WRITE_LE_UINT16(&mem[$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 diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 589a0bbac5..5166f201c4 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -351,7 +351,6 @@ Common::String copy(const Common::String &s, int idx, size_t size) { int port[0xfff]; byte mem[65536 * 16]; -int memw[0xffff]; int wherey; void gotoxy(int x, int y) { diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index fbd324b548..16ab044569 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -406,7 +406,6 @@ void affput(const Common::Point &pt, int palIndex, int ch); extern int port[0xfff]; extern byte mem[65536 * 16]; -extern int memw[0xffff]; #define hires {} #define mortevielle_exit(ret) error("Exit the game") -- cgit v1.2.3 From ca55d928b6cd39287ac37ab3b220ffc0d9e41035 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 8 Jan 2012 11:22:03 +1100 Subject: MORTEVIELLE: Fixed compiler warning --- engines/mortevielle/mor.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index ede69a5765..e9366b0506 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -987,7 +987,6 @@ void debloc(int l) { /* NIVEAU 10 */ void init_nbrepm() { const byte ipm[9] = { 0, 4, 5, 6, 7, 5, 6, 5, 8 }; - int i; /* debug('init_nbrepm'); */ for (int idx = 0; idx < 9; ++idx) -- cgit v1.2.3 From cd1c72cd9b831013a7c35163259b3ee8db9d6d84 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 8 Jan 2012 10:55:13 +0000 Subject: MORTEVIELLE: Fix memory offsets in rest of the places --- engines/mortevielle/level15.cpp | 10 +++++----- engines/mortevielle/mor.cpp | 4 ++-- engines/mortevielle/mouse.cpp | 38 +++++++++++++++++++------------------- engines/mortevielle/taffich.cpp | 6 +++--- 4 files changed, 29 insertions(+), 29 deletions(-) diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index bd908b47c4..d7193bfc61 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -61,8 +61,8 @@ void outbloc(int n, pattern p, t_nhom pal) { ad = n * 404 + 0xd700; { - WRITE_LE_UINT16(&mem[0x6000 + ad], p.tax); - WRITE_LE_UINT16(&mem[0x6000 + ad + 2], p.tay); + WRITE_LE_UINT16(&mem[0x6000 * 16 + ad], p.tax); + WRITE_LE_UINT16(&mem[0x6000 * 16 + ad + 2], p.tay); ad = ad + 4; for (i = 1; i <= p.tax; i ++) for (j = 1; j <= p.tay; j ++) @@ -102,8 +102,8 @@ void pictout(int seg, int dep, int x, int y) { mem[0x7000 * 16 + 2] = 0; mem[0x7000 * 16 + 32] = 15; } - if ((caff != 51) && (READ_LE_UINT16(&mem[0x7000 + 0x4138]) > 0x100)) - WRITE_LE_UINT16(&mem[0x7000 + 0x4138], 0x100); + if ((caff != 51) && (READ_LE_UINT16(&mem[0x7000 * 16 + 0x4138]) > 0x100)) + WRITE_LE_UINT16(&mem[0x7000 * 16 + 0x4138], 0x100); afff(gd, seg, dep, x, y); } @@ -192,7 +192,7 @@ int animof(int ouf, int num) { nani = mem[adani * 16 + 1]; aux = num; if (ouf != 1) aux = aux + nani; - animof_result = (nani << 2) + 2 + swap(READ_LE_UINT16(&mem[adani + (aux << 1)])); + animof_result = (nani << 2) + 2 + swap(READ_LE_UINT16(&mem[adani * 16 + (aux << 1)])); /*aux:= nani shl 2 + 2; if ouf=1 then aux:= aux+ swap(WRITE_LE_UINT16(&mem[adani: num shl 1]) else aux:= aux+ swap(WRITE_LE_UINT16(&mem[adani: (nani+num) shl 1]); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index e9366b0506..373a80029a 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -1231,8 +1231,8 @@ void messint(int nu) { clsf2(); clsf3(); decomp(0x73a2, 1008); - WRITE_LE_UINT16(&mem[0x7413 + 12], 80); - WRITE_LE_UINT16(&mem[0x7413 + 14], 40); + WRITE_LE_UINT16(&mem[0x7413 * 16 + 12], 80); + WRITE_LE_UINT16(&mem[0x7413 * 16 + 14], 40); writepal(90); afff(gd, 0x73a2, 1008, 0, 0); afff(gd, 0x73a2, 1008, 0, 70); diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index e7eb225edf..2fc6e1033b 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -102,10 +102,10 @@ void hide_mouse() { k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); do { - WRITE_LE_UINT16(&mem[0xb000 + j], s_s[0][k]); - WRITE_LE_UINT16(&mem[0xb800 + j + 2], s_s[1][k]); - WRITE_LE_UINT16(&mem[0xba00 + j], s_s[2][k]); - WRITE_LE_UINT16(&mem[0xba00 + j + 2], s_s[3][k]); + WRITE_LE_UINT16(&mem[0xb000 * 16 + j], s_s[0][k]); + WRITE_LE_UINT16(&mem[0xb800 * 16 + j + 2], s_s[1][k]); + WRITE_LE_UINT16(&mem[0xba00 * 16 + j], s_s[2][k]); + WRITE_LE_UINT16(&mem[0xba00 * 16 + j + 2], s_s[3][k]); j = j + 80; k = succ(int, k); } while (!(k >= 5)); @@ -118,10 +118,10 @@ void hide_mouse() { j = p_o_s; do { if (imp) { - WRITE_LE_UINT16(&mem[0xb800 + j], s_s[i][k]); + WRITE_LE_UINT16(&mem[0xb800 * 16 + j], s_s[i][k]); j = j + 80 - 0x2000; } else { - WRITE_LE_UINT16(&mem[0xb800 + j], s_s[i][k]); + WRITE_LE_UINT16(&mem[0xb800 * 16 + j], s_s[i][k]); j = j + 0x2000; } imp = ! imp; @@ -155,7 +155,7 @@ void hide_mouse() { j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); for (i = 0; i <= 5; i ++) { for (k = 0; k <= 3; k ++) - WRITE_LE_UINT16(&mem[0xb000 + k * 0x200 + j], s_s[i][k]); + WRITE_LE_UINT16(&mem[0xb000 * 16 + k * 0x200 + j], s_s[i][k]); j = j + 80; } } @@ -165,8 +165,8 @@ void hide_mouse() { k = 0; do { for (i = 0; i <= 3; i ++) { - WRITE_LE_UINT16(&mem[0xb800 + 0x200 * i + j], s_s[k][i + (k << 2)]); - WRITE_LE_UINT16(&mem[0xb800 + 0x200 * i + j + 2], s_s[k + 3][i + (k << 2)]); + WRITE_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j], s_s[k][i + (k << 2)]); + WRITE_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j + 2], s_s[k + 3][i + (k << 2)]); } j = j + 160; k = succ(int, k); @@ -192,10 +192,10 @@ void show_mouse() { k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); do { - s_s[0][k] = READ_LE_UINT16(&mem[0xb800 + j]); - s_s[1][k] = READ_LE_UINT16(&mem[0xb800 + j + 2]); - s_s[2][k] = READ_LE_UINT16(&mem[0xba00 + j]); - s_s[3][k] = READ_LE_UINT16(&mem[0xba00 + j + 2]); + s_s[0][k] = READ_LE_UINT16(&mem[0xb800 * 16 + j]); + s_s[1][k] = READ_LE_UINT16(&mem[0xb800 * 16 + j + 2]); + s_s[2][k] = READ_LE_UINT16(&mem[0xba00 * 16 + j]); + s_s[3][k] = READ_LE_UINT16(&mem[0xba00 * 16 + j + 2]); j = j + 80; k = succ(int, k); } while (!(k >= 5)); @@ -209,10 +209,10 @@ void show_mouse() { k = 0; do { if (imp) { - s_s[i][k] = READ_LE_UINT16(&mem[0xb800 + j]); + s_s[i][k] = READ_LE_UINT16(&mem[0xb800 * 16 + j]); j = j + 80 - 0x2000; } else { - s_s[i][k] = READ_LE_UINT16(&mem[0xb800 + j]); + s_s[i][k] = READ_LE_UINT16(&mem[0xb800 * 16 + j]); j = j + 0x2000; } imp = ! imp; @@ -229,7 +229,7 @@ void show_mouse() { k = 0; j = p_o_s; do { - s_s[l][k] = mem[0xa000 * 16 + j] + (mem[0xa000 + succ(int, j)] << 8); + s_s[l][k] = mem[0xa000 * 16 + j] + (mem[0xa000 * 16 + succ(int, j)] << 8); j = j + 80; k = succ(int, k); } while (!(k >= 8)); @@ -241,7 +241,7 @@ void show_mouse() { j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); for (i = 0; i <= 5; i ++) { for (k = 0; k <= 3; k ++) - s_s[i][k] = READ_LE_UINT16(&mem[0xb000 + k * 0x200 + j]); + s_s[i][k] = READ_LE_UINT16(&mem[0xb000 * 16 + k * 0x200 + j]); j = j + 80; } } @@ -251,8 +251,8 @@ void show_mouse() { k = 0; do { for (i = 0; i <= 3; i ++) { - s_s[k][i + (k << 2)] = READ_LE_UINT16(&mem[0xb800 + 0x200 * i + j]); - s_s[k + 3][i + (k << 2)] = READ_LE_UINT16(&mem[0xb800 + 0x200 * i + j + 2]); + s_s[k][i + (k << 2)] = READ_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j]); + s_s[k + 3][i + (k << 2)] = READ_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j + 2]); } j = j + 160; k = succ(int, k); diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 1cb0f76325..619cf7a89a 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -63,7 +63,7 @@ void chardes(Common::String nom, float passe, int long_) { } f.close(); - for (i = p; i <= long_ + p; i ++) mem[0x7000 * 16 + i - p] = mem[0x6000 + i]; + for (i = p; i <= long_ + p; i ++) mem[0x7000 * 16 + i - p] = mem[0x6000 * 16 + i]; /*$i+*/ } @@ -96,7 +96,7 @@ void charani(Common::String nom, float passe, int long_) { } f.close(); - for (i = p; i <= long_ + p; i ++) mem[0x7314 * 16 + i - p] = mem[0x6000 + i]; + for (i = p; i <= long_ + p; i ++) mem[0x7314 * 16 + i - p] = mem[0x6000 * 16 + i]; } void taffich() { @@ -182,7 +182,7 @@ void taffich() { chardes(nom, lgt, handle); if (gd == her) { for (i = 0; i <= 15; i ++) { - palh = READ_LE_UINT16(&mem[0x7000 + (succ(int, i) << 1)]); + palh = READ_LE_UINT16(&mem[0x7000 * 16 + (succ(int, i) << 1)]); alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); } for (i = 0; i <= 15; i ++) { -- cgit v1.2.3 From fd490f3aebabc99a225bcd25b67770abe6caf032 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 10 Jan 2012 20:41:06 +1100 Subject: MORTEVIELLE: Fixed loading in chardes() method --- engines/mortevielle/taffich.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 619cf7a89a..8e8e3de6b6 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -56,14 +56,15 @@ void chardes(Common::String nom, float passe, int long_) { l = long_ + p; i = 0; while (l > 0) { - f.read(&mem[0x6000 * 16 + i], 1); + f.read(&mem[0x6000 * 16 + i], 128); testfi(); l = l - 128; i = i + 128; } f.close(); - for (i = p; i <= long_ + p; i ++) mem[0x7000 * 16 + i - p] = mem[0x6000 * 16 + i]; + for (i = p; i <= long_ + p; i ++) + mem[0x7000 * 16 + i - p] = mem[0x6000 * 16 + i]; /*$i+*/ } -- cgit v1.2.3 From 41ddc9958ae4d1256f392b9e92fff241566ab930 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 10 Jan 2012 20:42:07 +1100 Subject: MORTEVIELLE: Fix data loading in charani() method --- engines/mortevielle/level15.cpp | 5 +++++ engines/mortevielle/taffich.cpp | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index d7193bfc61..86319e0e07 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -26,6 +26,7 @@ */ #include "common/file.h" +#include "mortevielle/graphics.h" #include "mortevielle/level15.h" #include "mortevielle/mouse.h" #include "mortevielle/var_mor.h" @@ -97,6 +98,10 @@ void writepal(int n) { void pictout(int seg, int dep, int x, int y) { + GfxSurface surface; + surface.decode(&mem[0x7000 * 16]); + +warning("TODO: complete picture decoding"); decomp(seg, dep); if (gd == her) { mem[0x7000 * 16 + 2] = 0; diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 8e8e3de6b6..78eccbbaf1 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -90,7 +90,7 @@ void charani(Common::String nom, float passe, int long_) { l = long_ + p; i = 0; while (l > 0) { - f.read(&mem[0x6000 * 16 + i], 1); + f.read(&mem[0x6000 * 16 + i], 128); testfi(); l = l - 128; i = i + 128; -- cgit v1.2.3 From e183f9f055c121d745a130d84dea0fa84a58fc66 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Thu, 12 Jan 2012 22:23:57 +1100 Subject: MORTEVIELLE: Beginnings of code for picture decoding --- engines/mortevielle/graphics.cpp | 261 +++++++++++++++++++++++++++++++++++++++ engines/mortevielle/graphics.h | 54 ++++++++ engines/mortevielle/level15.cpp | 3 +- engines/mortevielle/module.mk | 1 + engines/mortevielle/mort.cpp | 2 +- 5 files changed, 319 insertions(+), 2 deletions(-) create mode 100644 engines/mortevielle/graphics.cpp create mode 100644 engines/mortevielle/graphics.h diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp new file mode 100644 index 0000000000..3df9001c3b --- /dev/null +++ b/engines/mortevielle/graphics.cpp @@ -0,0 +1,261 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +#include "mortevielle/graphics.h" + +namespace Mortevielle { + +#define INCR_TAIX { if (_xSize & 1) ++_xSize; } + +void GfxSurface::decode(const byte *pSrc) { + _width = _height = 0; + _var1 = *pSrc++; + _entryCount = *pSrc++; + pSrc += 2; + + if (!_var1) + pSrc += 30; + + // First run through the data to calculate starting offsets + const byte *p = pSrc; + int xOffset = 0xffff, yOffset = 0xffff; + + for (int idx = 0; idx < _entryCount; ++idx) { + _xp = READ_BE_UINT16(p + 4); + if (_xp < xOffset) + _xOffset = _xp; + + _yp = READ_BE_UINT16(p + 6); + if (_yp < _yOffset) + _yOffset = _yp; + + // Move to next entry + int size = READ_BE_UINT16(p) + READ_BE_UINT16(p + 2); + if ((size % 2) == 1) + ++size; + + p += size + 14; + } + + // Temporary output buffer + byte outputBuffer[65536]; + byte *pDest = &outputBuffer[0]; + const byte *pSrcStart = pSrc; + + byte table4140[256]; + byte table7110[256]; + + // Main processing loop + do { + _var4 = READ_BE_UINT16(pSrc); + _var6 = READ_BE_UINT16(pSrc + 2); + _xp = READ_BE_UINT16(pSrc + 4) - _xOffset; + _yp = READ_BE_UINT16(pSrc + 6) - _yOffset; + pSrc += 8; + + _varC = READ_BE_UINT16(pSrc); + _xSize = READ_BE_UINT16(pSrc + 2) + 1; + _ySize = READ_BE_UINT16(pSrc + 4) + 1; + majTtxTty(); + + _var15 = _var18 = 0; + + int decomIndex = 0; + if (_varC >> 8) { + // Build up reference table + int tableOffset = 0; + + if (_varC & 1) { + do { + _var12 = desanalyse(pSrc); + _var14 = desanalyse(pSrc); + + int savedVar15 = _var15; + int savedVar18 = _var18; + + do { + const byte *pTemp = pSrc; + _var15 = savedVar15; + _var18 = savedVar18; + + assert(_var14 < 256); + for (int idx = 0; idx < _var14; ++idx, ++tableOffset) + table4140[tableOffset] = suiv(pTemp); + } while (--_var12 > 0); + } while (_var18 < (_var4 - 1)); + + } else { + assert(_var4 < 256); + for (int idx = 0; idx < _var4; ++idx) + table4140[idx] = suiv(pSrc); + } + + if (_var15) { + ++pSrc; + _var15 = 0; + } + if ((_var4 + _var6) & 1) + ++pSrc; + + tableOffset = 0; + _var18 = 0; + + if (_varC & 2) { + do { + _var12 = desanalyse(pSrc); + _var18 = _var14 = desanalyse(pSrc); + if (_var15 & 1) { + ++pSrc; + ++_var18; + _var15 = 0; + } + + const byte *pStart = pSrc; + do { + pSrc = pStart; + for (int idx = 0; idx < _var14; ++idx) { + table7110[tableOffset++] = *pSrc++; + } + } while (--_var12 > 0); + } while (_var18 < (_var6 - 1)); + } else { + assert(_var6 < 256); + for (int idx = 0; idx < _var4; ++idx) + table7110[idx] = *pSrc++; + } + + if (_var15) + ++pSrc; + + pSrcStart = pSrc; + pDest = &outputBuffer[_yp * SCREEN_WIDTH + _xp]; + pSrc = &table7110[0]; + _var1A = _var18 = _var15 = 0; + decomIndex = _varC; + } + + // Main decompression switch + switch (decomIndex) { + case 0: + // Draw rect at pos + pDest = &outputBuffer[_yp * SCREEN_WIDTH + _xp]; + pSrcStart = pSrc; + INCR_TAIX; + + for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDest += SCREEN_WIDTH) { + byte *pDestLine = pDest; + for (int xCtr = 0; xCtr < _xSize; ++xCtr) { + *pDestLine++ = suiv(pSrc); + } + } + + pSrc = pSrcStart + _var4 + ((_var4 & 1) ? 1 : 0); + break; + + case 1: + // Draw rect alternating left to right, right to left + INCR_TAIX; + for (int yCtr = 0; yCtr < _ySize; ++yCtr) { + if (yCtr % 2) { + for (int xCtr = 0; xCtr < _xSize; ++xCtr) { + *pDest++ = suiv(pSrc); + } + } else { + for (int xCtr = 0; xCtr < _xSize; ++xCtr) { + *--pDest = suiv(pSrc); + } + } + pDest += SCREEN_WIDTH; + } + break; + + case 2: + // Draw rect alternating top to bottom, bottom to top + INCR_TAIX; + for (int xCtr = 0; xCtr < _xSize; ++xCtr) { + if (xCtr % 2) { + for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDest += SCREEN_WIDTH) { + *pDest = suiv(pSrc); + } + } else { + for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDest -= SCREEN_WIDTH) { + *pDest = suiv(pSrc); + } + } + ++pDest; + } + break; + + case 3: + // Draw horizontal line? + _var1C = 2; + horizontal(pSrc, pDest); + break; + } + + pSrc = pSrcStart; + } while (--_entryCount > 0); +} + +void GfxSurface::majTtxTty() { + if (!_yp) + _width += _xSize; + + if (!_xp) + _height += _ySize; +} + +byte GfxSurface::suiv(const byte *&pSrc) { + int v = *pSrc; + if (_var15) { + ++pSrc; + ++_var18; + _var15 = 0; + return v & 0xf; + } else { + _var15 = ~(v >> 8); + return v >> 4; + } +} + +int GfxSurface::desanalyse(const byte *&pSrc) { + int total = 0; + int v = suiv(pSrc); + if (!v) { + int v2; + do { + v2 = suiv(pSrc); + } while (v2 == 15); + + total *= 15; + v = suiv(pSrc); + } + + total += v; + return total; +} + +void GfxSurface::horizontal(const byte *&pSrc, byte *&pDest) { + +} + +} // End of namespace Mortevielle diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h new file mode 100644 index 0000000000..d3f64a01fe --- /dev/null +++ b/engines/mortevielle/graphics.h @@ -0,0 +1,54 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +#ifndef MORTEVIELLE_GRAPHICS_H +#define MORTEVIELLE_GRAPHICS_H + +#include "graphics/surface.h" +#include "mortevielle/mortevielle.h" + +namespace Mortevielle { + +class GfxSurface: public Graphics::Surface { +private: + int _var1; + int _entryCount; + int _var4, _var6; + int _xp, _yp; + int _varC, _xSize, _ySize, _var12; + int _var14, _var15, _var18, _var1A; + int _var1C, _var1E, _var20, _var22; + int _var24, _var26, _var28; + int _width, _height; + int _xOffset, _yOffset; + + void majTtxTty(); + byte suiv(const byte *&pSrc); + int desanalyse(const byte *&pSrc); + void horizontal(const byte *&pSrc, byte *&pDest); +public: + void decode(const byte *pSrc); +}; + +} // End of namespace Mortevielle + +#endif diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 86319e0e07..073b93fd96 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -98,10 +98,11 @@ void writepal(int n) { void pictout(int seg, int dep, int x, int y) { +#ifdef DEBUG GfxSurface surface; surface.decode(&mem[0x7000 * 16]); +#endif -warning("TODO: complete picture decoding"); decomp(seg, dep); if (gd == her) { mem[0x7000 * 16 + 2] = 0; diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 21cb02587a..327c4ba3c9 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -8,6 +8,7 @@ MODULE_OBJS := \ detection.o \ disk.o \ droite.o \ + graphics.o \ keyboard.o \ level15.o \ menu.o \ diff --git a/engines/mortevielle/mort.cpp b/engines/mortevielle/mort.cpp index 9b05196ab9..e24e9b58f9 100644 --- a/engines/mortevielle/mort.cpp +++ b/engines/mortevielle/mort.cpp @@ -71,7 +71,7 @@ int mortevielle_main(int argc, const char *argv[]) { /*init_debug;*/ /* ecri_seg;*/ //pio_initialize(argc, argv); - gd = cga; + gd = ega; newgd = gd; zuul = false; tesok = false; -- cgit v1.2.3 From abc2f60edfc0f3dca8d5a871a70728998045a5e5 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 14 Jan 2012 11:35:08 +1100 Subject: MORTEVIELLE: Implemented more of the image decompression code --- engines/mortevielle/graphics.cpp | 417 +++++++++++++++++++++++++++++++++----- engines/mortevielle/graphics.h | 16 +- engines/mortevielle/mortevielle.h | 3 +- 3 files changed, 372 insertions(+), 64 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 3df9001c3b..9b06972232 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -25,11 +25,13 @@ namespace Mortevielle { #define INCR_TAIX { if (_xSize & 1) ++_xSize; } +#define DEFAULT_WIDTH 320 +#define BUFFER_SIZE 8192 void GfxSurface::decode(const byte *pSrc) { _width = _height = 0; _var1 = *pSrc++; - _entryCount = *pSrc++; + int entryCount = *pSrc++; pSrc += 2; if (!_var1) @@ -37,11 +39,12 @@ void GfxSurface::decode(const byte *pSrc) { // First run through the data to calculate starting offsets const byte *p = pSrc; - int xOffset = 0xffff, yOffset = 0xffff; + _xOffset = _yOffset = 0xffff; - for (int idx = 0; idx < _entryCount; ++idx) { + assert(entryCount > 0); + for (int idx = 0; idx < entryCount; ++idx) { _xp = READ_BE_UINT16(p + 4); - if (_xp < xOffset) + if (_xp < _xOffset) _xOffset = _xp; _yp = READ_BE_UINT16(p + 6); @@ -60,131 +63,146 @@ void GfxSurface::decode(const byte *pSrc) { byte outputBuffer[65536]; byte *pDest = &outputBuffer[0]; const byte *pSrcStart = pSrc; + const byte *pLookup = NULL; - byte table4140[256]; - byte table7110[256]; + byte lookupTable[BUFFER_SIZE]; + byte srcBuffer[BUFFER_SIZE]; // Main processing loop do { - _var4 = READ_BE_UINT16(pSrc); - _var6 = READ_BE_UINT16(pSrc + 2); + int lookupBytes = READ_BE_UINT16(pSrc); + int srcSize = READ_BE_UINT16(pSrc + 2); _xp = READ_BE_UINT16(pSrc + 4) - _xOffset; _yp = READ_BE_UINT16(pSrc + 6) - _yOffset; pSrc += 8; - _varC = READ_BE_UINT16(pSrc); + int decomCode = READ_BE_UINT16(pSrc); _xSize = READ_BE_UINT16(pSrc + 2) + 1; _ySize = READ_BE_UINT16(pSrc + 4) + 1; majTtxTty(); + + pSrc += 6; + pDest = &outputBuffer[0]; - _var15 = _var18 = 0; + _var18 = 0; + _nibbleFlag = false; int decomIndex = 0; - if (_varC >> 8) { + if (decomCode >> 8) { // Build up reference table int tableOffset = 0; - if (_varC & 1) { + if (decomCode & 1) { + // Handle decompression of the pattern lookup table do { _var12 = desanalyse(pSrc); _var14 = desanalyse(pSrc); - int savedVar15 = _var15; + bool savedVar15 = _nibbleFlag; int savedVar18 = _var18; do { const byte *pTemp = pSrc; - _var15 = savedVar15; + _nibbleFlag = savedVar15; _var18 = savedVar18; assert(_var14 < 256); for (int idx = 0; idx < _var14; ++idx, ++tableOffset) - table4140[tableOffset] = suiv(pTemp); + assert(tableOffset < BUFFER_SIZE); + lookupTable[tableOffset] = suiv(pTemp); } while (--_var12 > 0); - } while (_var18 < (_var4 - 1)); + } while (_var18 < (lookupBytes - 1)); } else { - assert(_var4 < 256); - for (int idx = 0; idx < _var4; ++idx) - table4140[idx] = suiv(pSrc); + assert(lookupBytes < BUFFER_SIZE); + for (int idx = 0; idx < (lookupBytes * 2); ++idx) + lookupTable[idx] = suiv(pSrc); } - if (_var15) { + if (_nibbleFlag) { ++pSrc; - _var15 = 0; + _nibbleFlag = false; } - if ((_var4 + _var6) & 1) + if ((lookupBytes + srcSize) & 1) ++pSrc; tableOffset = 0; _var18 = 0; - if (_varC & 2) { + if (decomCode & 2) { + // Handle decompression of the temporary source buffer do { _var12 = desanalyse(pSrc); - _var18 = _var14 = desanalyse(pSrc); - if (_var15 & 1) { + _var14 = desanalyse(pSrc); + _var18 += _var14; + + if (_nibbleFlag) { ++pSrc; ++_var18; - _var15 = 0; + _nibbleFlag = false; } const byte *pStart = pSrc; do { pSrc = pStart; for (int idx = 0; idx < _var14; ++idx) { - table7110[tableOffset++] = *pSrc++; + assert(tableOffset < BUFFER_SIZE); + srcBuffer[tableOffset++] = *pSrc++; } } while (--_var12 > 0); - } while (_var18 < (_var6 - 1)); + } while (_var18 < (srcSize - 1)); } else { - assert(_var6 < 256); - for (int idx = 0; idx < _var4; ++idx) - table7110[idx] = *pSrc++; + assert(srcSize < BUFFER_SIZE); + for (int idx = 0; idx < srcSize; ++idx) + srcBuffer[idx] = *pSrc++; } - if (_var15) + if (_nibbleFlag) ++pSrc; + // Switch over to using the decompressed source and lookup buffers pSrcStart = pSrc; - pDest = &outputBuffer[_yp * SCREEN_WIDTH + _xp]; - pSrc = &table7110[0]; - _var1A = _var18 = _var15 = 0; - decomIndex = _varC; + pDest = &outputBuffer[_yp * DEFAULT_WIDTH + _xp]; + pSrc = &srcBuffer[0]; + pLookup = &lookupTable[0] - 1; + + _lookupValue = _var18 = 0; + _nibbleFlag = false; + decomIndex = decomCode >> 8; } // Main decompression switch switch (decomIndex) { case 0: // Draw rect at pos - pDest = &outputBuffer[_yp * SCREEN_WIDTH + _xp]; + pDest = &outputBuffer[_yp * DEFAULT_WIDTH + _xp]; pSrcStart = pSrc; INCR_TAIX; - for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDest += SCREEN_WIDTH) { + for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDest += DEFAULT_WIDTH) { byte *pDestLine = pDest; for (int xCtr = 0; xCtr < _xSize; ++xCtr) { *pDestLine++ = suiv(pSrc); } } - pSrc = pSrcStart + _var4 + ((_var4 & 1) ? 1 : 0); + pSrc = pSrcStart + lookupBytes + ((lookupBytes & 1) ? 1 : 0); break; case 1: // Draw rect alternating left to right, right to left INCR_TAIX; for (int yCtr = 0; yCtr < _ySize; ++yCtr) { - if (yCtr % 2) { + if ((yCtr % 2) == 0) { for (int xCtr = 0; xCtr < _xSize; ++xCtr) { - *pDest++ = suiv(pSrc); + *pDest++ = csuiv(pSrc, pLookup); } } else { for (int xCtr = 0; xCtr < _xSize; ++xCtr) { - *--pDest = suiv(pSrc); + *--pDest = csuiv(pSrc, pLookup); } } - pDest += SCREEN_WIDTH; + pDest += DEFAULT_WIDTH; } break; @@ -193,12 +211,12 @@ void GfxSurface::decode(const byte *pSrc) { INCR_TAIX; for (int xCtr = 0; xCtr < _xSize; ++xCtr) { if (xCtr % 2) { - for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDest += SCREEN_WIDTH) { - *pDest = suiv(pSrc); + for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDest += DEFAULT_WIDTH) { + *pDest = csuiv(pSrc, pLookup); } } else { - for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDest -= SCREEN_WIDTH) { - *pDest = suiv(pSrc); + for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDest -= DEFAULT_WIDTH) { + *pDest = csuiv(pSrc, pLookup); } } ++pDest; @@ -206,14 +224,141 @@ void GfxSurface::decode(const byte *pSrc) { break; case 3: - // Draw horizontal line? - _var1C = 2; - horizontal(pSrc, pDest); + // Draw horizontal area? + _thickness = 2; + horizontal(pSrc, pDest, pLookup); + break; + + case 4: + // Draw vertical area? + _thickness = 2; + vertical(pSrc, pDest, pLookup); + break; + + case 5: + _thickness = 3; + horizontal(pSrc, pDest, pLookup); + break; + + case 6: + _thickness = 4; + vertical(pSrc, pDest, pLookup); + break; + + case 7: + // Draw box + INCR_TAIX; + for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDest += DEFAULT_WIDTH) { + byte *pDestLine = pDest; + for (int xCtr = 0; xCtr < _xSize; ++xCtr, ++pDestLine) + *pDestLine++ = csuiv(pSrc, pLookup); + } + break; + + case 8: + // Draw box + for (int xCtr = 0; xCtr < _xSize; ++xCtr, ++pDest) { + byte *pDestLine = pDest; + for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDestLine += DEFAULT_WIDTH) + *pDestLine = csuiv(pSrc, pLookup); + } + break; + + case 9: + _thickness = 4; + horizontal(pSrc, pDest, pLookup); + break; + + case 10: + _thickness = 6; + horizontal(pSrc, pDest, pLookup); + break; + + case 11: + warning("TODO: Switch 11"); + break; + + case 12: + INCR_TAIX; + _thickness = _var22 = 1; + _var1E = 320; + _var20 = _ySize; + _var24 = _xSize; + diag(); + break; + + case 13: + INCR_TAIX; + _thickness = _xSize; + _var1E = 1; + _var20 = _xSize; + _var22 = 320; + _var24 = _ySize; + diag(); + break; + + case 14: + _thickness = _var1E = 1; + _var20 = _xSize; + _var22 = 320; + _var24 = _ySize; + diag(); + break; + + case 15: + INCR_TAIX; + _thickness = 2; + _var1E = 320; + _var20 = _ySize; + _var22 = 1; + _var24 = _xSize; + diag(); + break; + + case 16: + _thickness = 3; + _var1E = 1; + _var20 = _xSize; + _var22 = 320; + _var24 = _ySize; + diag(); + break; + + case 17: + INCR_TAIX; + _thickness = 3; + _var1E = 320; + _var20 = _ySize; + _var22 = 1; + _var24 = _xSize; + diag(); + break; + + case 18: + INCR_TAIX; + _thickness = 5; + _var1E = 320; + _var20 = _ySize; + _var22 = 1; + _var24 = _xSize; + diag(); break; } pSrc = pSrcStart; - } while (--_entryCount > 0); + } while (--entryCount > 0); + + // At this point, the outputBuffer has the data for the image. The pitch is + // 320 pixels, the _xOffset and _yOffset represent the top left of the image data, + // and the _xSize and _ySize fields indicate the image size + create(_xOffset + _xSize, _yOffset + _ySize, Graphics::PixelFormat::createFormatCLUT8()); + + for (int yCtr = 0; yCtr < _ySize; ++yCtr) { + const byte *copySrc = &outputBuffer[yCtr * DEFAULT_WIDTH]; + byte *copyDest = (byte *)getBasePtr(_xOffset, yCtr + _yOffset); + + Common::copy(copySrc, copySrc + _xSize, copyDest); + } } void GfxSurface::majTtxTty() { @@ -226,24 +371,41 @@ void GfxSurface::majTtxTty() { byte GfxSurface::suiv(const byte *&pSrc) { int v = *pSrc; - if (_var15) { + if (_nibbleFlag) { ++pSrc; ++_var18; - _var15 = 0; + _nibbleFlag = false; return v & 0xf; } else { - _var15 = ~(v >> 8); + _nibbleFlag = !_nibbleFlag; return v >> 4; } } +byte GfxSurface::csuiv(const byte *&pSrc, const byte *&pLookup) { + assert(pLookup); + + while (!_lookupValue) { + int v; + do { + v = suiv(pSrc) & 0xff; + _lookupValue += v; + } while (v == 0xf); + ++pLookup; + } + + --_lookupValue; + return *pLookup; +} + int GfxSurface::desanalyse(const byte *&pSrc) { int total = 0; int v = suiv(pSrc); - if (!v) { + if (v == 15) { int v2; do { v2 = suiv(pSrc); + total += v2; } while (v2 == 15); total *= 15; @@ -254,8 +416,151 @@ int GfxSurface::desanalyse(const byte *&pSrc) { return total; } -void GfxSurface::horizontal(const byte *&pSrc, byte *&pDest) { +void GfxSurface::horizontal(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { + INCR_TAIX; + byte *pDestEnd = pDest + (_ySize - 1) * DEFAULT_WIDTH + _xSize; + + for (;;) { + // If position is past end point, then skip this line + if (((_thickness - 1) * DEFAULT_WIDTH) + pDest >= pDestEnd) { + if (--_thickness == 0) break; + continue; + } + + bool continueFlag = false; + do { + for (int xIndex = 0; xIndex < _xSize; ++xIndex, ++pDest) { + if ((xIndex % 2) == 0) { + // Write out vertical slice top to bottom + for (int yIndex = 0; yIndex < _thickness; ++yIndex, pDest += DEFAULT_WIDTH) + *pDest = csuiv(pSrc, pLookup); + } else { + // Write out vertical slice bottom to top + for (int yIndex = 0; yIndex < _thickness; ++yIndex, pDest -= DEFAULT_WIDTH) + *pDest = csuiv(pSrc, pLookup); + } + } + + if ((_xSize % 2) == 0) { + int blockSize = _thickness * DEFAULT_WIDTH; + pDest += blockSize; + blockSize -= DEFAULT_WIDTH; + + if (pDestEnd < (pDest + blockSize)) { + do { + if (--_thickness == 0) + return; + } while ((pDest + (_thickness - 1) * DEFAULT_WIDTH) >= pDestEnd); + } + } else { + while ((pDest + (_thickness - 1) * DEFAULT_WIDTH) >= pDestEnd) { + if (--_thickness == 0) + return; + } + } + + for (int xIndex = 0; xIndex < _xSize; ++xIndex, --pDest) { + if ((xIndex % 2) == 0) { + // Write out vertical slice top to bottom + for (int yIndex = 0; yIndex < _thickness; ++yIndex, pDest += DEFAULT_WIDTH) + *pDest = csuiv(pSrc, pLookup); + } else { + // Write out vertical slice top to bottom + for (int yIndex = 0; yIndex < _thickness; ++yIndex, pDest -= DEFAULT_WIDTH) + *pDest = csuiv(pSrc, pLookup); + } + } + + if ((_xSize % 2) == 1) { + ++pDest; + + if ((pDest + (_thickness - 1) * DEFAULT_WIDTH) < pDestEnd) { + continueFlag = true; + break; + } + } else { + pDest += _thickness * DEFAULT_WIDTH + 1; + continueFlag = true; + break; + } + + ++pDest; + } while (((_thickness - 1) * DEFAULT_WIDTH + pDest) < pDestEnd); + + if (continueFlag) + continue; + + // Move to next line + if (--_thickness == 0) + break; + } +} + +void GfxSurface::vertical(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { +// byte *pDestEnd = pDest + (_ySize - 1) * DEFAULT_WIDTH + _xSize; + int var28 = 0; + + for (;;) { + // Reduce thickness as necessary + while ((var28 + _thickness) >= _xSize) { + if (--_thickness == 0) + return; + } + + // Loop + for (int idx = 0; idx < _thickness; ++idx) { + if ((idx % 2) == 0) { + if (idx > 0) + pDest -= DEFAULT_WIDTH; + + // Write out horizontal slice left to right + var28 += _thickness; + for (int xIndex = 0; xIndex < _thickness; ++xIndex) + *pDest++ = suiv(pSrc); + } else { + // Write out horizontal slice right to left + pDest += DEFAULT_WIDTH; + var28 -= _thickness; + for (int xIndex = 0; xIndex < _thickness; ++xIndex) + *pDest-- = csuiv(pSrc, pLookup); + } + } + if ((_thickness % 2) == 0) { + pDest += _thickness; + var28 += _thickness; + } + + // Reduce thickness as necessary + while ((var28 + _thickness) < _xSize) { + if (--_thickness == 0) + return; + } + + for (int yIndex = 0; yIndex < _ySize; ++yIndex) { + if ((yIndex % 2) == 0) { + if (yIndex > 0) + pDest -= DEFAULT_WIDTH; + + // Draw horizontal slice + var28 += _thickness; + + for (int xIndex = 0; xIndex < _thickness; ++xIndex) + *pDest++ = suiv(pSrc); + } else { + pDest -= DEFAULT_WIDTH; + var28 -= _thickness; + + for (int xIndex = 0; xIndex < _thickness; ++xIndex) + *pDest-- = csuiv(pSrc, pLookup); + } + } + } +} +void GfxSurface::diag() { + // The diag method in the original source doesn't seem to have any exit point, + // which if the case, means the routine may not be used by the game + error("Non-exitable method diag() called"); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index d3f64a01fe..4e7db305ca 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -31,20 +31,22 @@ namespace Mortevielle { class GfxSurface: public Graphics::Surface { private: int _var1; - int _entryCount; - int _var4, _var6; int _xp, _yp; - int _varC, _xSize, _ySize, _var12; - int _var14, _var15, _var18, _var1A; - int _var1C, _var1E, _var20, _var22; - int _var24, _var26, _var28; + int _xSize, _ySize, _var12; + int _var14, _var18, _lookupValue; + bool _nibbleFlag; + int _thickness, _var1E, _var20, _var22; + int _var24, _var26; int _width, _height; int _xOffset, _yOffset; void majTtxTty(); byte suiv(const byte *&pSrc); + byte csuiv(const byte *&pSrc, const byte *&pLookup); int desanalyse(const byte *&pSrc); - void horizontal(const byte *&pSrc, byte *&pDest); + void horizontal(const byte *&pSrc, byte *&pDest, const byte *&pLookup); + void vertical(const byte *&pSrc, byte *&pDest, const byte *&pLookup); + void diag(); public: void decode(const byte *pSrc); }; diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index b9d8265385..0e72090ec3 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -33,7 +33,8 @@ namespace Mortevielle { enum { - kMortevielleCore = 1 << 0 + kMortevielleCore = 1 << 0, + kMortevielleGraphics = 1 << 1 }; #define SCREEN_WIDTH 640 -- cgit v1.2.3 From 6c6c0f0ce5ffa2046fdd89f38f91582874d70799 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 14 Jan 2012 22:41:30 +1100 Subject: MORTEVIELLE: Bugfixes for image decoding. Decoding types 1 and 7 are now working, so the first scene is partially decoding correctly. --- engines/mortevielle/graphics.cpp | 31 ++++++++++++++++--------------- engines/mortevielle/level15.cpp | 6 ++++++ engines/mortevielle/mortevielle.cpp | 6 ++++-- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 9b06972232..86cce5de9d 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -25,7 +25,7 @@ namespace Mortevielle { #define INCR_TAIX { if (_xSize & 1) ++_xSize; } -#define DEFAULT_WIDTH 320 +#define DEFAULT_WIDTH (SCREEN_WIDTH / 2) #define BUFFER_SIZE 8192 void GfxSurface::decode(const byte *pSrc) { @@ -98,18 +98,20 @@ void GfxSurface::decode(const byte *pSrc) { _var12 = desanalyse(pSrc); _var14 = desanalyse(pSrc); - bool savedVar15 = _nibbleFlag; + const byte *pSrcSaved = pSrc; + bool savedNibbleFlag = _nibbleFlag; int savedVar18 = _var18; do { - const byte *pTemp = pSrc; - _nibbleFlag = savedVar15; + pSrc = pSrcSaved; + _nibbleFlag = savedNibbleFlag; _var18 = savedVar18; assert(_var14 < 256); - for (int idx = 0; idx < _var14; ++idx, ++tableOffset) + for (int idx = 0; idx < _var14; ++idx, ++tableOffset) { assert(tableOffset < BUFFER_SIZE); - lookupTable[tableOffset] = suiv(pTemp); + lookupTable[tableOffset] = suiv(pSrc); + } } while (--_var12 > 0); } while (_var18 < (lookupBytes - 1)); @@ -190,7 +192,7 @@ void GfxSurface::decode(const byte *pSrc) { break; case 1: - // Draw rect alternating left to right, right to left + // Draw rect using horizontal lines alternating left to right, then right to left INCR_TAIX; for (int yCtr = 0; yCtr < _ySize; ++yCtr) { if ((yCtr % 2) == 0) { @@ -246,11 +248,11 @@ void GfxSurface::decode(const byte *pSrc) { break; case 7: - // Draw box + // Draw rect using horizontal lines left to right INCR_TAIX; for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDest += DEFAULT_WIDTH) { byte *pDestLine = pDest; - for (int xCtr = 0; xCtr < _xSize; ++xCtr, ++pDestLine) + for (int xCtr = 0; xCtr < _xSize; ++xCtr) *pDestLine++ = csuiv(pSrc, pLookup); } break; @@ -348,16 +350,15 @@ void GfxSurface::decode(const byte *pSrc) { pSrc = pSrcStart; } while (--entryCount > 0); - // At this point, the outputBuffer has the data for the image. The pitch is - // 320 pixels, the _xOffset and _yOffset represent the top left of the image data, - // and the _xSize and _ySize fields indicate the image size - create(_xOffset + _xSize, _yOffset + _ySize, Graphics::PixelFormat::createFormatCLUT8()); + // At this point, the outputBuffer has the data for the image. Initialise the surface + // with the calculated size for the full image, and copy the lines to the surface + create(_xOffset + _width, _yOffset + _height, Graphics::PixelFormat::createFormatCLUT8()); - for (int yCtr = 0; yCtr < _ySize; ++yCtr) { + for (int yCtr = 0; yCtr < _height; ++yCtr) { const byte *copySrc = &outputBuffer[yCtr * DEFAULT_WIDTH]; byte *copyDest = (byte *)getBasePtr(_xOffset, yCtr + _yOffset); - Common::copy(copySrc, copySrc + _xSize, copyDest); + Common::copy(copySrc, copySrc + _width, copyDest); } } diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 073b93fd96..7e1f47d668 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/system.h" #include "common/file.h" #include "mortevielle/graphics.h" #include "mortevielle/level15.h" @@ -101,6 +102,11 @@ void pictout(int seg, int dep, int x, int y) { #ifdef DEBUG GfxSurface surface; surface.decode(&mem[0x7000 * 16]); + + g_system->copyRectToScreen((const byte *)surface.pixels, surface.pitch, 0, 0, + surface.w, surface.h); + g_system->updateScreen(); + #endif decomp(seg, dep); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 43534a6ae0..bba22f1ba5 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -172,8 +172,10 @@ Common::Error MortevielleEngine::run() { return err; // TODO: Remove once palette loading is correctly done - uint32 white = 0xffffffff; - g_system->getPaletteManager()->setPalette((const byte *)&white, 15, 1); + for (int idx = 0; idx < 16; ++idx) { + uint32 c = 0x111111 * idx; + g_system->getPaletteManager()->setPalette((const byte *)&c, idx, 1); + } // Dispatch to the game's main routine const char *argv[] = { "" }; -- cgit v1.2.3 From 7698c8c523c91b84d24cce8d64e11276bc3c8878 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 15 Jan 2012 00:58:24 +1100 Subject: MORTEVIELLE: Implemented the remaining image decoding mode 11 --- engines/mortevielle/graphics.cpp | 115 ++++++++++++++++++++++++++++++++++++++- engines/mortevielle/graphics.h | 6 +- 2 files changed, 117 insertions(+), 4 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 86cce5de9d..f0dfdd2c8c 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -212,7 +212,7 @@ void GfxSurface::decode(const byte *pSrc) { // Draw rect alternating top to bottom, bottom to top INCR_TAIX; for (int xCtr = 0; xCtr < _xSize; ++xCtr) { - if (xCtr % 2) { + if ((xCtr % 2) == 0) { for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDest += DEFAULT_WIDTH) { *pDest = csuiv(pSrc, pLookup); } @@ -277,7 +277,7 @@ void GfxSurface::decode(const byte *pSrc) { break; case 11: - warning("TODO: Switch 11"); + decom11(pSrc, pDest, pLookup); break; case 12: @@ -430,11 +430,16 @@ void GfxSurface::horizontal(const byte *&pSrc, byte *&pDest, const byte *&pLooku bool continueFlag = false; do { - for (int xIndex = 0; xIndex < _xSize; ++xIndex, ++pDest) { + for (int xIndex = 0; xIndex < _xSize; ++xIndex) { if ((xIndex % 2) == 0) { + if (xIndex != 0) + ++pDest; + // Write out vertical slice top to bottom for (int yIndex = 0; yIndex < _thickness; ++yIndex, pDest += DEFAULT_WIDTH) *pDest = csuiv(pSrc, pLookup); + + ++pDest; } else { // Write out vertical slice bottom to top for (int yIndex = 0; yIndex < _thickness; ++yIndex, pDest -= DEFAULT_WIDTH) @@ -558,6 +563,110 @@ void GfxSurface::vertical(const byte *&pSrc, byte *&pDest, const byte *&pLookup) } } +void GfxSurface::decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { + int var26 = 0, var28 = 0; + _var1E = DEFAULT_WIDTH; + _var22 = -1; + --_xSize; + --_ySize; + + int areaNum = 0; + while (areaNum != -1) { + switch (areaNum) { + case 0: + *pDest = csuiv(pSrc, pLookup); + areaNum = 1; + break; + + case 1: + increments(pDest); + + if (!var28) { + NIH(); + NIV(); + + if (var26 == _ySize) { + increments(pDest); + ++var28; + } else { + ++var26; + } + + *++pDest = csuiv(pSrc, pLookup); + areaNum = 2; + } else if (var26 != _ySize) { + ++var26; + --var28; + areaNum = 0; + } else { + NIH(); + NIV(); + increments(pDest); + ++var28; + + *++pDest = csuiv(pSrc, pLookup); + + if (var28 == _xSize) { + areaNum = -1; + } else { + areaNum = 2; + } + } + break; + + case 2: + increments(pDest); + + if (!var26) { + NIH(); + NIV(); + + if (var28 == _xSize) { + increments(pDest); + ++var26; + } else { + ++var28; + } + + pDest += DEFAULT_WIDTH; + areaNum = 0; + } else if (var28 != _xSize) { + ++var28; + --var26; + + *pDest = csuiv(pSrc, pLookup); + areaNum = 2; + } else { + pDest += DEFAULT_WIDTH; + ++var26; + NIH(); + NIV(); + increments(pDest); + + *pDest = csuiv(pSrc, pLookup); + + if (var26 == _ySize) + areaNum = -1; + else + areaNum = 1; + } + break; + } + } +} + +void GfxSurface::increments(byte *&pDest) { + pDest += _var22 + _var1E; +} + +void GfxSurface::NIH() { + _var22 = -_var22; +} + +void GfxSurface::NIV() { + _var1E = -_var1E; +} + void GfxSurface::diag() { // The diag method in the original source doesn't seem to have any exit point, // which if the case, means the routine may not be used by the game diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 4e7db305ca..0c322df732 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -36,7 +36,7 @@ private: int _var14, _var18, _lookupValue; bool _nibbleFlag; int _thickness, _var1E, _var20, _var22; - int _var24, _var26; + int _var24; int _width, _height; int _xOffset, _yOffset; @@ -46,6 +46,10 @@ private: int desanalyse(const byte *&pSrc); void horizontal(const byte *&pSrc, byte *&pDest, const byte *&pLookup); void vertical(const byte *&pSrc, byte *&pDest, const byte *&pLookup); + void decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup); + void increments(byte *&pDest); + void NIH(); + void NIV(); void diag(); public: void decode(const byte *pSrc); -- cgit v1.2.3 From 833e46d18a963054949944571e5b07d3e74f2953 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 15 Jan 2012 09:13:40 +1100 Subject: MORTEVIELLE: Completed the diag() method used in image decoding. The first image now completely decodes. --- engines/mortevielle/graphics.cpp | 123 +++++++++++++++++++++++++++++++++++---- engines/mortevielle/graphics.h | 5 +- 2 files changed, 116 insertions(+), 12 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index f0dfdd2c8c..2d09b6b7fc 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -286,7 +286,7 @@ void GfxSurface::decode(const byte *pSrc) { _var1E = 320; _var20 = _ySize; _var24 = _xSize; - diag(); + diag(pSrc, pDest, pLookup); break; case 13: @@ -296,7 +296,7 @@ void GfxSurface::decode(const byte *pSrc) { _var20 = _xSize; _var22 = 320; _var24 = _ySize; - diag(); + diag(pSrc, pDest, pLookup); break; case 14: @@ -304,7 +304,7 @@ void GfxSurface::decode(const byte *pSrc) { _var20 = _xSize; _var22 = 320; _var24 = _ySize; - diag(); + diag(pSrc, pDest, pLookup); break; case 15: @@ -314,7 +314,7 @@ void GfxSurface::decode(const byte *pSrc) { _var20 = _ySize; _var22 = 1; _var24 = _xSize; - diag(); + diag(pSrc, pDest, pLookup); break; case 16: @@ -323,7 +323,7 @@ void GfxSurface::decode(const byte *pSrc) { _var20 = _xSize; _var22 = 320; _var24 = _ySize; - diag(); + diag(pSrc, pDest, pLookup); break; case 17: @@ -333,7 +333,7 @@ void GfxSurface::decode(const byte *pSrc) { _var20 = _ySize; _var22 = 1; _var24 = _xSize; - diag(); + diag(pSrc, pDest, pLookup); break; case 18: @@ -343,7 +343,7 @@ void GfxSurface::decode(const byte *pSrc) { _var20 = _ySize; _var22 = 1; _var24 = _xSize; - diag(); + diag(pSrc, pDest, pLookup); break; } @@ -655,6 +655,87 @@ void GfxSurface::decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup) } } +void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { + int var26 = 0, var28 = 0; + --_var24; + + while (!TFP(var26)) { + for (;;) { + NIH(); + for (int idx = 0; idx <= _thickness; ++idx) { + *pDest = csuiv(pSrc, pLookup); + NIH(); + increments(pDest); + } + + NIV(); + pDest += _var1E; + + for (int idx = 0; idx <= _thickness; ++idx) { + *pDest = csuiv(pSrc, pLookup); + NIH(); + increments(pDest); + } + + NIH(); + NIV(); + increments(pDest); + + ++var28; + if (_var24 < (var28 + 1)) { + TF1(pDest, var26); + break; + } + + pDest += _var22; + if (_var24 < (var28 + 1)) { + TF2(pSrc, pDest, pLookup, var26); + break; + } + } + + if (TFP(var26)) + return; + + for (;;) { + for (int idx = 0; idx <= _thickness; ++idx) { + *pDest = csuiv(pSrc, pLookup); + NIH(); + increments(pDest); + } + + NIV(); + + for (int idx = 0; idx <= _thickness; ++idx) { + *pDest = csuiv(pSrc, pLookup); + NIH(); + increments(pDest); + } + + NIH(); + NIV(); + increments(pDest); + + if (--var28 == 0) { + TF1(pDest, var26); + NIH(); + break; + } else { + pDest += _var22; + + if (--var28 == 0) { + TF2(pSrc, pDest, pLookup, var26); + NIH(); + break; + } + } + + NIH(); + } + } +} + + void GfxSurface::increments(byte *&pDest) { pDest += _var22 + _var1E; } @@ -667,10 +748,30 @@ void GfxSurface::NIV() { _var1E = -_var1E; } -void GfxSurface::diag() { - // The diag method in the original source doesn't seem to have any exit point, - // which if the case, means the routine may not be used by the game - error("Non-exitable method diag() called"); +bool GfxSurface::TFP(int v) { + int diff = _var20 - v; + if (!diff) + // Time to finish loop in outer method + return true; + + if (diff < (_thickness + 1)) + _thickness = diff - 1; + + return false; +} + +void GfxSurface::TF1(byte *&pDest, int &v) { + v += _thickness + 1; + pDest += (_thickness + 1) * _var1E; +} + +void GfxSurface::TF2(const byte *&pSrc, byte *&pDest, const byte *&pLookup, int &v) { + v += _thickness + 1; + + for (int idx = 0; idx <= _thickness; ++idx) { + *pDest = csuiv(pSrc, pLookup); + pDest += _var1E; + } } } // End of namespace Mortevielle diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 0c322df732..ce11fd8245 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -47,10 +47,13 @@ private: void horizontal(const byte *&pSrc, byte *&pDest, const byte *&pLookup); void vertical(const byte *&pSrc, byte *&pDest, const byte *&pLookup); void decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup); + void diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup); void increments(byte *&pDest); void NIH(); void NIV(); - void diag(); + bool TFP(int v); + void TF1(byte *&pDest, int &v); + void TF2(const byte *&pSrc, byte *&pDest, const byte *&pLookup, int &v); public: void decode(const byte *pSrc); }; -- cgit v1.2.3 From 2416583449699ea6940acdfaac77d15bc1b012d9 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 16 Jan 2012 09:19:50 +1100 Subject: MORTEVIELLE: Implemented a screen surface class to hold all the graphics functionality. This includes moving the already created pixel and character functions into it, as well as a new method for drawing decoded graphic images. --- engines/mortevielle/graphics.cpp | 144 ++++++++++++++++++++++++++++++++++++ engines/mortevielle/graphics.h | 25 ++++++- engines/mortevielle/level15.cpp | 12 +-- engines/mortevielle/mortevielle.cpp | 57 +------------- engines/mortevielle/mortevielle.h | 13 +--- engines/mortevielle/sprint.cpp | 2 +- engines/mortevielle/var_mor.cpp | 4 +- 7 files changed, 177 insertions(+), 80 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 2d09b6b7fc..5099504536 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -20,10 +20,21 @@ * */ +#include "common/endian.h" +#include "common/system.h" #include "mortevielle/graphics.h" +#include "mortevielle/mortevielle.h" namespace Mortevielle { +/*-------------------------------------------------------------------------* + * Image decoding + * + * The code in this section is responsible for decoding image resources. + * Images are broken down into rectangular sections, which can use one + * of 18 different encoding methods. + *-------------------------------------------------------------------------*/ + #define INCR_TAIX { if (_xSize & 1) ++_xSize; } #define DEFAULT_WIDTH (SCREEN_WIDTH / 2) #define BUFFER_SIZE 8192 @@ -774,4 +785,137 @@ void GfxSurface::TF2(const byte *&pSrc, byte *&pDest, const byte *&pLookup, int } } +/*-------------------------------------------------------------------------*/ + +GfxSurface::~GfxSurface() { + free(); +} + +/*-------------------------------------------------------------------------* + * Screen surface + *-------------------------------------------------------------------------*/ + +/** + * Called to populate the font data from the passed file + */ +void ScreenSurface::readFontData(Common::File &f, int dataSize) { + assert(dataSize == (FONT_NUM_CHARS * FONT_HEIGHT)); + f.read(_fontData, FONT_NUM_CHARS * FONT_HEIGHT); +} + +/** + * Returns a graphics surface representing a subset of the screen. The affected area + * is also marked as dirty + */ +Graphics::Surface ScreenSurface::lockArea(const Common::Rect &bounds) { + _dirtyRects.push_back(bounds); + + Graphics::Surface s; + s.pixels = getBasePtr(bounds.left, bounds.top); + s.pitch = pitch; + s.w = bounds.width(); + s.h = bounds.height(); + + return s; +} + +/** + * Updates the affected areas of the surface to the underlying physical screen + */ +void ScreenSurface::updateScreen() { + // Iterate through copying dirty areas to the screen + for (Common::List::iterator i = _dirtyRects.begin(); i != _dirtyRects.end(); ++i) { + Common::Rect r = *i; + g_system->copyRectToScreen((const byte *)getBasePtr(r.left, r.top), pitch, + r.left, r.top, r.width(), r.height()); + } + _dirtyRects.clear(); + + // Update the screen + g_system->updateScreen(); +} + +/** + * Draws a decoded picture on the screen + * @remarks Because the ScummVM surface is using a double height 640x200 surface to + * simulate the original 640x200 surface, all Y values have to be doubled. + * Also, image resources are stored at 320x200, so when drawn onto the screen every + * other column is interpolated. + */ +void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { + // Lock the affected area of the surface to write to + Graphics::Surface destSurface = lockArea(Common::Rect(x, y, + x + surface.w * 2, y + surface.h * 2)); + + // Loop through writing + for (int yp = 0; yp < surface.h; ++yp) { + if (((y + yp) < 0) || ((y + yp) >= 200)) + continue; + + const byte *pSrc = (const byte *)surface.getBasePtr(0, yp); + byte *pDest = (byte *)destSurface.getBasePtr(0, yp * 2); + + for (int xp = 0; xp < surface.w; ++xp, ++pSrc) { + // Draw pixel from source image + *pDest = *pSrc; + *(pDest + SCREEN_WIDTH) = *pSrc; + ++pDest; + + // TODO: I'm not sure what algorithm the original uses to calculate + // which pixel to use on the alternate columns, so for now I'm doing + // a simple output of null values. This should be revisited once we've + // got the palette loading so we can compare palettes. In fact, the + // original had the alternate columns very noticablely striped. With + // the larger 256 colour palette, it may be worthwhile to offer a + // better blended graphics mode as an option. + *pDest = 0; + *(pDest + SCREEN_WIDTH) = 0; + ++pDest; + } + } + + // TODO: Remove this once we have a proper game loop + updateScreen(); +} + +/** + * Draws a character at the specified co-ordinates + * @remarks Because the ScummVM surface is using a double height 640x200 surface to + * simulate the original 640x200 surface, all Y values have to be doubled + */ +void ScreenSurface::writeCharacter(const Common::Point &pt, unsigned char ch, int palIndex) { + Graphics::Surface destSurface = lockArea(Common::Rect(pt.x, pt.y * 2, + pt.x + FONT_WIDTH, (pt.y + FONT_HEIGHT) * 2)); + + // Get the start of the character to use + assert((ch >= ' ') && (ch <= (unsigned char)(32 + FONT_NUM_CHARS))); + const byte *charData = &_fontData[((int)ch - 32) * FONT_HEIGHT]; + + // Loop through decoding each character's data + for (int yp = 0; yp < FONT_HEIGHT; ++yp) { + byte *lineP = (byte *)destSurface.getBasePtr(0, yp * 2); + byte byteVal = *charData++; + + for (int xp = 0; xp < FONT_WIDTH; ++xp, ++lineP, byteVal <<= 1) { + if (byteVal & 0x80) { + *lineP = palIndex; + *(lineP + SCREEN_WIDTH) = palIndex; + } + } + } +} + +/** + * Sets a single pixel at the specified co-ordinates + * @remarks Because the ScummVM surface is using a double height 640x200 surface to + * simulate the original 640x200 surface, all Y values have to be doubled + */ +void ScreenSurface::setPixel(const Common::Point &pt, int palIndex) { + Graphics::Surface destSurface = lockArea(Common::Rect(pt.x, pt.y * 2, pt.x + 1, (pt.y + 1) * 2)); + + byte *destP = (byte *)destSurface.pixels; + *destP = palIndex; + *(destP + SCREEN_WIDTH) = palIndex; +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index ce11fd8245..c733cbc501 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -23,11 +23,17 @@ #ifndef MORTEVIELLE_GRAPHICS_H #define MORTEVIELLE_GRAPHICS_H +#include "common/file.h" +#include "common/list.h" +#include "common/rect.h" #include "graphics/surface.h" -#include "mortevielle/mortevielle.h" namespace Mortevielle { +#define FONT_WIDTH 8 +#define FONT_HEIGHT 6 +#define FONT_NUM_CHARS 121 + class GfxSurface: public Graphics::Surface { private: int _var1; @@ -55,9 +61,26 @@ private: void TF1(byte *&pDest, int &v); void TF2(const byte *&pSrc, byte *&pDest, const byte *&pLookup, int &v); public: + ~GfxSurface(); + void decode(const byte *pSrc); }; +class ScreenSurface: public Graphics::Surface { +private: + Common::List _dirtyRects; + byte _fontData[FONT_NUM_CHARS * FONT_HEIGHT]; +public: + void readFontData(Common::File &f, int dataSize); + Graphics::Surface lockArea(const Common::Rect &bounds); + void updateScreen(); + void drawPicture(GfxSurface &surface, int x, int y); + void writeCharacter(const Common::Point &pt, unsigned char ch, int palIndex); + + // TODO: Refactor code to remove this method, for increased performance + void setPixel(const Common::Point &pt, int palIndex); +}; + } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 7e1f47d668..8b8dbcf02f 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -29,6 +29,7 @@ #include "common/file.h" #include "mortevielle/graphics.h" #include "mortevielle/level15.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/var_mor.h" @@ -99,15 +100,8 @@ void writepal(int n) { void pictout(int seg, int dep, int x, int y) { -#ifdef DEBUG GfxSurface surface; - surface.decode(&mem[0x7000 * 16]); - - g_system->copyRectToScreen((const byte *)surface.pixels, surface.pitch, 0, 0, - surface.w, surface.h); - g_system->updateScreen(); - -#endif + surface.decode(&mem[seg * 16 + dep]); decomp(seg, dep); if (gd == her) { @@ -116,7 +110,7 @@ void pictout(int seg, int dep, int x, int y) { } if ((caff != 51) && (READ_LE_UINT16(&mem[0x7000 * 16 + 0x4138]) > 0x100)) WRITE_LE_UINT16(&mem[0x7000 * 16 + 0x4138], 0x100); - afff(gd, seg, dep, x, y); + g_vm->_screenSurface.drawPicture(surface, x, y); } void putxy(int x, int y) { diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index bba22f1ba5..cdeb412625 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -97,8 +97,7 @@ Common::ErrorCode MortevielleEngine::loadMortDat() { if (!strncmp(dataType, "FONT", 4)) { // Font resource - assert(dataSize == (FONT_NUM_CHARS * FONT_HEIGHT)); - f.read(_fontData, FONT_NUM_CHARS * FONT_HEIGHT); + _screenSurface.readFontData(f, dataSize); } else { // Unknown section f.skip(dataSize); @@ -109,60 +108,6 @@ Common::ErrorCode MortevielleEngine::loadMortDat() { return Common::kNoError; } -/*-------------------------------------------------------------------------*/ - -/** - * Update the physical screen - */ -void MortevielleEngine::updateScreen() { - g_system->copyRectToScreen((const byte *)_screenSurface.getBasePtr(0, 0), - SCREEN_WIDTH, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); - g_system->updateScreen(); -} -/** - * Draws a character at the specified co-ordinates - * @remarks Because the ScummVM surface is using a double height 640x200 surface to - * simulate the original 640x200 surface, all Y values have to be doubled - */ -void MortevielleEngine::writeCharacter(const Common::Point &pt, unsigned char ch, - int palIndex, Graphics::Surface *surface) { - if (surface == NULL) - surface = &_screenSurface; - - // Get the start of the character to use - assert((ch >= ' ') && (ch <= (unsigned char)(32 + FONT_NUM_CHARS))); - const byte *charData = &_fontData[((int)ch - 32) * FONT_HEIGHT]; - - // Loop through decoding each character's data - for (int yp = 0; yp < FONT_HEIGHT; ++yp) { - byte *lineP = (byte *)surface->getBasePtr(pt.x, (pt.y + yp) * 2); - byte byteVal = *charData++; - - for (int xp = 0; xp < 8; ++xp, ++lineP, byteVal <<= 1) { - if (byteVal & 0x80) { - *lineP = palIndex; - *(lineP + SCREEN_WIDTH) = palIndex; - } - } - } -} - -/** - * Sets a single pixel at the specified co-ordinates - * @remarks Because the ScummVM surface is using a double height 640x200 surface to - * simulate the original 640x200 surface, all Y values have to be doubled - */ -void MortevielleEngine::setPixel(const Common::Point &pt, int palIndex, - Graphics::Surface *surface) { - if (surface == NULL) - surface = &_screenSurface; - - byte *destP = (byte *)surface->getBasePtr(pt.x, pt.y * 2); - *destP = palIndex; - *(destP + SCREEN_WIDTH) = palIndex; -} - - /*-------------------------------------------------------------------------*/ Common::Error MortevielleEngine::run() { diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 0e72090ec3..bcd6f666d0 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -29,6 +29,7 @@ #include "engines/engine.h" #include "common/error.h" #include "graphics/surface.h" +#include "mortevielle/graphics.h" namespace Mortevielle { @@ -42,10 +43,6 @@ enum { #define MORT_DAT_REQUIRED_VERSION 1 #define MORT_DAT "mort.dat" -#define FONT_WIDTH 8 -#define FONT_HEIGHT 6 -#define FONT_NUM_CHARS 121 - class MortevielleEngine : public Engine { private: const ADGameDescription *_gameDescription; @@ -54,19 +51,13 @@ private: Common::ErrorCode loadMortDat(); void loadFont(Common::File &f); public: - Graphics::Surface _screenSurface; - byte _fontData[FONT_NUM_CHARS * FONT_HEIGHT]; + ScreenSurface _screenSurface; public: MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc); ~MortevielleEngine(); virtual bool hasFeature(EngineFeature f) const; virtual Common::Error run(); uint32 getGameFlags() const; - - void updateScreen(); - void writeCharacter(const Common::Point &pt, - unsigned char ch, int palIndex, Graphics::Surface *surface = NULL); - void setPixel(const Common::Point &pt, int palIndex, Graphics::Surface *surface = NULL); }; extern MortevielleEngine *g_vm; diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp index 67bd3ab119..027d74791a 100644 --- a/engines/mortevielle/sprint.cpp +++ b/engines/mortevielle/sprint.cpp @@ -88,7 +88,7 @@ void writeg(Common::String l, int c) show_mouse(); // TODO: Move screen updates to main loop once constructed - g_vm->updateScreen(); + g_vm->_screenSurface.updateScreen(); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 5166f201c4..5cca06f011 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -312,9 +312,9 @@ void hirs() { */ void affput(const Common::Point &pt, int palIndex, int ch) { if (ch == 0) - g_vm->setPixel(pt, palIndex); + g_vm->_screenSurface.setPixel(pt, palIndex); else - g_vm->writeCharacter(pt, ch, palIndex); + g_vm->_screenSurface.writeCharacter(pt, ch, palIndex); } void affcar(int gd, int x, int y, int coul, int chr) { -- cgit v1.2.3 From c33f25cffbfab2a0875ee27e0e931b776cda9ff6 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 17 Jan 2012 01:09:11 +1100 Subject: MORTEVIELLE: Fix remaining issues when decoding first image --- engines/mortevielle/graphics.cpp | 110 +++++++++++++++++++----------------- engines/mortevielle/graphics.h | 2 +- engines/mortevielle/mortevielle.cpp | 5 ++ 3 files changed, 65 insertions(+), 52 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 5099504536..4be270ffa6 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -72,6 +72,8 @@ void GfxSurface::decode(const byte *pSrc) { // Temporary output buffer byte outputBuffer[65536]; + Common::fill(&outputBuffer[0], &outputBuffer[65536], 0); + byte *pDest = &outputBuffer[0]; const byte *pSrcStart = pSrc; const byte *pLookup = NULL; @@ -80,7 +82,7 @@ void GfxSurface::decode(const byte *pSrc) { byte srcBuffer[BUFFER_SIZE]; // Main processing loop - do { + for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex) { int lookupBytes = READ_BE_UINT16(pSrc); int srcSize = READ_BE_UINT16(pSrc + 2); _xp = READ_BE_UINT16(pSrc + 4) - _xOffset; @@ -228,7 +230,8 @@ void GfxSurface::decode(const byte *pSrc) { *pDest = csuiv(pSrc, pLookup); } } else { - for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDest -= DEFAULT_WIDTH) { + for (int yCtr = 0; yCtr < _ySize; ++yCtr) { + pDest -= DEFAULT_WIDTH; *pDest = csuiv(pSrc, pLookup); } } @@ -293,8 +296,8 @@ void GfxSurface::decode(const byte *pSrc) { case 12: INCR_TAIX; - _thickness = _var22 = 1; - _var1E = 320; + _thickness = _xInc = 1; + _yInc = DEFAULT_WIDTH; _var20 = _ySize; _var24 = _xSize; diag(pSrc, pDest, pLookup); @@ -303,17 +306,17 @@ void GfxSurface::decode(const byte *pSrc) { case 13: INCR_TAIX; _thickness = _xSize; - _var1E = 1; + _yInc = 1; _var20 = _xSize; - _var22 = 320; + _xInc = DEFAULT_WIDTH; _var24 = _ySize; diag(pSrc, pDest, pLookup); break; case 14: - _thickness = _var1E = 1; + _thickness = _yInc = 1; _var20 = _xSize; - _var22 = 320; + _xInc = DEFAULT_WIDTH; _var24 = _ySize; diag(pSrc, pDest, pLookup); break; @@ -321,18 +324,18 @@ void GfxSurface::decode(const byte *pSrc) { case 15: INCR_TAIX; _thickness = 2; - _var1E = 320; + _yInc = DEFAULT_WIDTH; _var20 = _ySize; - _var22 = 1; + _xInc = 1; _var24 = _xSize; diag(pSrc, pDest, pLookup); break; case 16: _thickness = 3; - _var1E = 1; + _yInc = 1; _var20 = _xSize; - _var22 = 320; + _xInc = DEFAULT_WIDTH; _var24 = _ySize; diag(pSrc, pDest, pLookup); break; @@ -340,9 +343,9 @@ void GfxSurface::decode(const byte *pSrc) { case 17: INCR_TAIX; _thickness = 3; - _var1E = 320; + _yInc = DEFAULT_WIDTH; _var20 = _ySize; - _var22 = 1; + _xInc = 1; _var24 = _xSize; diag(pSrc, pDest, pLookup); break; @@ -350,16 +353,18 @@ void GfxSurface::decode(const byte *pSrc) { case 18: INCR_TAIX; _thickness = 5; - _var1E = 320; + _yInc = DEFAULT_WIDTH; _var20 = _ySize; - _var22 = 1; + _xInc = 1; _var24 = _xSize; diag(pSrc, pDest, pLookup); break; } pSrc = pSrcStart; - } while (--entryCount > 0); + debugC(1, kMortevielleGraphics, "Decoding image block %d position %d,%d size %d,%d method %d", + entryIndex + 1, _xp, _yp, _width, _height, decomIndex); + } // At this point, the outputBuffer has the data for the image. Initialise the surface // with the calculated size for the full image, and copy the lines to the surface @@ -519,65 +524,66 @@ void GfxSurface::vertical(const byte *&pSrc, byte *&pDest, const byte *&pLookup) for (;;) { // Reduce thickness as necessary - while ((var28 + _thickness) >= _xSize) { + while ((var28 + _thickness) > _xSize) { if (--_thickness == 0) return; } // Loop - for (int idx = 0; idx < _thickness; ++idx) { - if ((idx % 2) == 0) { - if (idx > 0) - pDest -= DEFAULT_WIDTH; + for (int yCtr = 0; yCtr < _ySize; ++yCtr) { + if ((yCtr % 2) == 0) { + if (yCtr > 0) + pDest += DEFAULT_WIDTH; - // Write out horizontal slice left to right var28 += _thickness; - for (int xIndex = 0; xIndex < _thickness; ++xIndex) - *pDest++ = suiv(pSrc); + for (int xCtr = 0; xCtr < _thickness; ++xCtr) + *pDest++ = csuiv(pSrc, pLookup); } else { - // Write out horizontal slice right to left pDest += DEFAULT_WIDTH; var28 -= _thickness; - for (int xIndex = 0; xIndex < _thickness; ++xIndex) - *pDest-- = csuiv(pSrc, pLookup); + for (int xCtr = 0; xCtr < _thickness; ++xCtr) + *--pDest = csuiv(pSrc, pLookup); } } - if ((_thickness % 2) == 0) { + if ((_ySize % 2) == 0) { pDest += _thickness; var28 += _thickness; } - - // Reduce thickness as necessary - while ((var28 + _thickness) < _xSize) { + + while (_xSize < (var28 + _thickness)) { if (--_thickness == 0) return; } - for (int yIndex = 0; yIndex < _ySize; ++yIndex) { - if ((yIndex % 2) == 0) { - if (yIndex > 0) + // Loop + for (int yCtr = 0; yCtr < _ySize; ++yCtr) { + if ((yCtr % 2) == 0) { + if (yCtr > 0) pDest -= DEFAULT_WIDTH; - // Draw horizontal slice var28 += _thickness; - for (int xIndex = 0; xIndex < _thickness; ++xIndex) - *pDest++ = suiv(pSrc); + for (int xCtr = 0; xCtr < _thickness; ++xCtr) + *pDest++ = csuiv(pSrc, pLookup); } else { pDest -= DEFAULT_WIDTH; var28 -= _thickness; - for (int xIndex = 0; xIndex < _thickness; ++xIndex) - *pDest-- = csuiv(pSrc, pLookup); + for (int xCtr = 0; xCtr < _thickness; ++xCtr) + *--pDest = csuiv(pSrc, pLookup); } + } + if ((_ySize % 2) == 0) { + pDest += _thickness; + var28 += _thickness; } } } void GfxSurface::decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { int var26 = 0, var28 = 0; - _var1E = DEFAULT_WIDTH; - _var22 = -1; + _yInc = DEFAULT_WIDTH; + _xInc = -1; --_xSize; --_ySize; @@ -680,7 +686,7 @@ void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { } NIV(); - pDest += _var1E; + pDest += _yInc; for (int idx = 0; idx <= _thickness; ++idx) { *pDest = csuiv(pSrc, pLookup); @@ -698,7 +704,8 @@ void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { break; } - pDest += _var22; + pDest += _xInc; + ++var28; if (_var24 < (var28 + 1)) { TF2(pSrc, pDest, pLookup, var26); break; @@ -706,7 +713,7 @@ void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { } if (TFP(var26)) - return; + break; for (;;) { for (int idx = 0; idx <= _thickness; ++idx) { @@ -716,6 +723,7 @@ void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { } NIV(); + pDest += _yInc; for (int idx = 0; idx <= _thickness; ++idx) { *pDest = csuiv(pSrc, pLookup); @@ -732,7 +740,7 @@ void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { NIH(); break; } else { - pDest += _var22; + pDest += _xInc; if (--var28 == 0) { TF2(pSrc, pDest, pLookup, var26); @@ -748,15 +756,15 @@ void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { void GfxSurface::increments(byte *&pDest) { - pDest += _var22 + _var1E; + pDest += _xInc + _yInc; } void GfxSurface::NIH() { - _var22 = -_var22; + _xInc = -_xInc; } void GfxSurface::NIV() { - _var1E = -_var1E; + _yInc = -_yInc; } bool GfxSurface::TFP(int v) { @@ -773,7 +781,7 @@ bool GfxSurface::TFP(int v) { void GfxSurface::TF1(byte *&pDest, int &v) { v += _thickness + 1; - pDest += (_thickness + 1) * _var1E; + pDest += (_thickness + 1) * _yInc; } void GfxSurface::TF2(const byte *&pSrc, byte *&pDest, const byte *&pLookup, int &v) { @@ -781,7 +789,7 @@ void GfxSurface::TF2(const byte *&pSrc, byte *&pDest, const byte *&pLookup, int for (int idx = 0; idx <= _thickness; ++idx) { *pDest = csuiv(pSrc, pLookup); - pDest += _var1E; + pDest += _yInc; } } diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index c733cbc501..8f21cde86f 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -41,7 +41,7 @@ private: int _xSize, _ySize, _var12; int _var14, _var18, _lookupValue; bool _nibbleFlag; - int _thickness, _var1E, _var20, _var22; + int _thickness, _yInc, _var20, _xInc; int _var24; int _width, _height; int _xOffset, _yOffset; diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index cdeb412625..c302bfed78 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -21,6 +21,7 @@ */ #include "common/system.h" +#include "common/debug-channels.h" #include "engines/util.h" #include "engines/engine.h" #include "graphics/palette.h" @@ -49,6 +50,10 @@ Common::ErrorCode MortevielleEngine::initialise() { // Initialise graphics mode initGraphics(SCREEN_WIDTH, SCREEN_HEIGHT, true); + // Set debug channels + DebugMan.addDebugChannel(kMortevielleCore, "core", "Core debugging"); + DebugMan.addDebugChannel(kMortevielleGraphics, "graphics", "Graphics debugging"); + // Set up an intermediate screen surface _screenSurface.create(SCREEN_WIDTH, SCREEN_HEIGHT, Graphics::PixelFormat::createFormatCLUT8()); -- cgit v1.2.3 From 33f70da53cc9e5d060610c030a0a4dd76292525d Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 17 Jan 2012 09:12:27 +1100 Subject: MORTEVIELLE: Added an optimised drawBox routine --- engines/mortevielle/boite.cpp | 32 ++++---------------------------- engines/mortevielle/graphics.cpp | 39 +++++++++++++++++++++++++++++++++------ engines/mortevielle/graphics.h | 2 +- 3 files changed, 38 insertions(+), 35 deletions(-) diff --git a/engines/mortevielle/boite.cpp b/engines/mortevielle/boite.cpp index 6e2976964d..e2b8200adc 100644 --- a/engines/mortevielle/boite.cpp +++ b/engines/mortevielle/boite.cpp @@ -25,41 +25,17 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/textconsole.h" #include "mortevielle/boite.h" -#include "mortevielle/mouse.h" -#include "mortevielle/var_mor.h" +#include "mortevielle/mortevielle.h" namespace Mortevielle { //Translation: box() void boite(int x, int y, int dx, int dy, int coul) { - int i; - int xi, yi, xo, yo; + warning("TODO: boite is deprecated in favour of ScreenSurface::drawBox"); - /* debug('boite'); */ - hide_mouse(); - if (res == 1) { - x = (uint)x >> 1; - dx = (uint)dx >> 1; - } - xi = x; - yi = y; - xo = x; - yo = y; - for (i = 0; i <= dx + dy; i ++) { - putpix(gd, xi, yi, coul); - if (xi == x + dx) { - if (gd != cga) putpix(gd, pred(int, xi), yi, coul); - yi = succ(int, yi); - } else xi = succ(int, xi); - putpix(gd, xo, yo, coul); - if (yo == y + dy) xo = succ(int, xo); - else { - if (gd != cga) putpix(gd, succ(int, xo), yo, coul); - yo = succ(int, yo); - } - } - show_mouse(); + g_vm->_screenSurface.drawBox(x, y, dx, dy, coul); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 4be270ffa6..851e5df391 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -24,6 +24,8 @@ #include "common/system.h" #include "mortevielle/graphics.h" #include "mortevielle/mortevielle.h" +#include "mortevielle/mouse.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { @@ -819,6 +821,7 @@ Graphics::Surface ScreenSurface::lockArea(const Common::Rect &bounds) { _dirtyRects.push_back(bounds); Graphics::Surface s; + s.format = format; s.pixels = getBasePtr(bounds.left, bounds.top); s.pitch = pitch; s.w = bounds.width(); @@ -845,8 +848,8 @@ void ScreenSurface::updateScreen() { /** * Draws a decoded picture on the screen - * @remarks Because the ScummVM surface is using a double height 640x200 surface to - * simulate the original 640x200 surface, all Y values have to be doubled. + * @remarks Because the ScummVM surface is using a double height 640x400 surface to + * simulate the original 640x400 surface, all Y values have to be doubled. * Also, image resources are stored at 320x200, so when drawn onto the screen every * other column is interpolated. */ @@ -888,8 +891,8 @@ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { /** * Draws a character at the specified co-ordinates - * @remarks Because the ScummVM surface is using a double height 640x200 surface to - * simulate the original 640x200 surface, all Y values have to be doubled + * @remarks Because the ScummVM surface is using a double height 640x400 surface to + * simulate the original 640x400 surface, all Y values have to be doubled */ void ScreenSurface::writeCharacter(const Common::Point &pt, unsigned char ch, int palIndex) { Graphics::Surface destSurface = lockArea(Common::Rect(pt.x, pt.y * 2, @@ -913,10 +916,34 @@ void ScreenSurface::writeCharacter(const Common::Point &pt, unsigned char ch, in } } +/** + * Draws a box at the specified position and size + * @remarks Because the ScummVM surface is using a double height 640x400 surface to + * simulate the original 640x400 surface, all Y values have to be doubled + */ +void ScreenSurface::drawBox(int x, int y, int dx, int dy, int col) { + if (res == 1) { + x = (uint)x >> 1; + dx = (uint)dx >> 1; + } + + Graphics::Surface destSurface = lockArea(Common::Rect(x, y * 2, x + dx, (y + dy) * 2)); + + destSurface.hLine(0, 0, dx, col); + destSurface.hLine(0, 1, dx, col); + destSurface.hLine(0, destSurface.h - 1, dx, col); + destSurface.hLine(0, destSurface.h - 2, dx, col); + destSurface.vLine(0, 2, destSurface.h - 3, col); + destSurface.vLine(1, 2, destSurface.h - 3, col); + destSurface.vLine(dx - 1, 2, destSurface.h - 3, col); + destSurface.vLine(dx - 2, 2, destSurface.h - 3, col); +} + + /** * Sets a single pixel at the specified co-ordinates - * @remarks Because the ScummVM surface is using a double height 640x200 surface to - * simulate the original 640x200 surface, all Y values have to be doubled + * @remarks Because the ScummVM surface is using a double height 640x400 surface to + * simulate the original 640x400 surface, all Y values have to be doubled */ void ScreenSurface::setPixel(const Common::Point &pt, int palIndex) { Graphics::Surface destSurface = lockArea(Common::Rect(pt.x, pt.y * 2, pt.x + 1, (pt.y + 1) * 2)); diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 8f21cde86f..78c1637e58 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -76,7 +76,7 @@ public: void updateScreen(); void drawPicture(GfxSurface &surface, int x, int y); void writeCharacter(const Common::Point &pt, unsigned char ch, int palIndex); - + void drawBox(int x, int y, int dx, int dy, int col); // TODO: Refactor code to remove this method, for increased performance void setPixel(const Common::Point &pt, int palIndex); }; -- cgit v1.2.3 From 6ac925fb1f05636c4d10aee5fdb17e1aef3f5020 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 17 Jan 2012 09:16:01 +1100 Subject: MORTEVIELLE: Correct horizontal display of images --- engines/mortevielle/graphics.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 851e5df391..d7ed056ef7 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -848,15 +848,17 @@ void ScreenSurface::updateScreen() { /** * Draws a decoded picture on the screen - * @remarks Because the ScummVM surface is using a double height 640x400 surface to + * @remarks - Because the ScummVM surface is using a double height 640x400 surface to * simulate the original 640x400 surface, all Y values have to be doubled. - * Also, image resources are stored at 320x200, so when drawn onto the screen every + * - Image resources are stored at 320x200, so when drawn onto the screen every * other column is interpolated. + * - Because the original game supported 320 width resolutions, the X coordinate + * also needs to be doubled for EGA mode */ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { // Lock the affected area of the surface to write to - Graphics::Surface destSurface = lockArea(Common::Rect(x, y, - x + surface.w * 2, y + surface.h * 2)); + Graphics::Surface destSurface = lockArea(Common::Rect(x * 2, y, + (x + surface.w) * 2, y + surface.h * 2)); // Loop through writing for (int yp = 0; yp < surface.h; ++yp) { -- cgit v1.2.3 From 8c423fd790cfb200852d5de4a707817f07489195 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 17 Jan 2012 22:30:00 +1100 Subject: MORTEVIELLE: Create a basic palette manager class --- engines/mortevielle/graphics.cpp | 50 +++++++++++++++++++++++++++++++++++++ engines/mortevielle/graphics.h | 6 +++++ engines/mortevielle/mortevielle.cpp | 7 ++---- engines/mortevielle/mortevielle.h | 1 + 4 files changed, 59 insertions(+), 5 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index d7ed056ef7..8e4ad338df 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -22,6 +22,7 @@ #include "common/endian.h" #include "common/system.h" +#include "graphics/palette.h" #include "mortevielle/graphics.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" @@ -29,6 +30,52 @@ namespace Mortevielle { +/*-------------------------------------------------------------------------* + * Palette Manager + * + *-------------------------------------------------------------------------*/ + +/** + * Set palette entries from the 64 colour available EGA palette + */ +void PaletteManager::setPalette(const int *palette, uint idx, uint size) { + assert((idx + size) <= 16); + + // Build up the EGA palette + byte egaPalette[64 * 3]; + + byte *p = &egaPalette[0]; + for (int i = 0; i < 64; i++) { + *p++ = (i >> 2 & 1) * 42 + (i >> 5 & 1) * 21; + *p++ = (i >> 1 & 1) * 42 + (i >> 4 & 1) * 21; + *p++ = (i & 1) * 42 + (i >> 3 & 1) * 21; + } + + // Loop through setting palette colours based on the passed indexes + for (; size > 0; --size, ++idx) { + int palIndex = palette[idx]; + assert(palIndex < 64); + + const byte *pRgb = (const byte *)&egaPalette[palIndex]; + g_system->getPaletteManager()->setPalette(pRgb, idx, 1); + } +} + +/** + * Set the default EGA palette + */ +void PaletteManager::setDefaultPalette() { +/* + int defaultPalette[16] = { 0, 1, 2, 3, 4, 5, 7, 20, 56, 57, 58, 59, 60, 61, 62, 63 }; + setPalette(defaultPalette, 0, 16); +*/ + // TODO: Replace with proper palette + for (int idx = 0; idx < 16; ++idx) { + uint32 c = 0x111111 * idx; + g_system->getPaletteManager()->setPalette((const byte *)&c, idx, 1); + } +} + /*-------------------------------------------------------------------------* * Image decoding * @@ -939,6 +986,9 @@ void ScreenSurface::drawBox(int x, int y, int dx, int dy, int col) { destSurface.vLine(1, 2, destSurface.h - 3, col); destSurface.vLine(dx - 1, 2, destSurface.h - 3, col); destSurface.vLine(dx - 2, 2, destSurface.h - 3, col); + + // TODO: Remove this once we have a proper game loop + updateScreen(); } diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 78c1637e58..f5c2207a12 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -30,6 +30,12 @@ namespace Mortevielle { +class PaletteManager { +public: + void setPalette(const int *palette, uint idx, uint size); + void setDefaultPalette(); +}; + #define FONT_WIDTH 8 #define FONT_HEIGHT 6 #define FONT_NUM_CHARS 121 diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index c302bfed78..8346c3f9e7 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -121,11 +121,8 @@ Common::Error MortevielleEngine::run() { if (err != Common::kNoError) return err; - // TODO: Remove once palette loading is correctly done - for (int idx = 0; idx < 16; ++idx) { - uint32 c = 0x111111 * idx; - g_system->getPaletteManager()->setPalette((const byte *)&c, idx, 1); - } + // Set default palette + _paletteManager.setDefaultPalette(); // Dispatch to the game's main routine const char *argv[] = { "" }; diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index bcd6f666d0..816a4360cc 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -52,6 +52,7 @@ private: void loadFont(Common::File &f); public: ScreenSurface _screenSurface; + PaletteManager _paletteManager; public: MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc); ~MortevielleEngine(); -- cgit v1.2.3 From d0129ad88bda4d1aa39f8e778c42343b4c0030f6 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 17 Jan 2012 23:52:36 +1100 Subject: MORTEVIELLE: Implemented a basic event handler. --- engines/mortevielle/graphics.cpp | 8 +--- engines/mortevielle/keyboard.cpp | 2 + engines/mortevielle/mor2.cpp | 3 ++ engines/mortevielle/mort.cpp | 12 +++--- engines/mortevielle/mort.h | 2 +- engines/mortevielle/mortevielle.cpp | 77 ++++++++++++++++++++++++++++++++++++- engines/mortevielle/mortevielle.h | 12 ++++++ engines/mortevielle/ovd1.cpp | 3 +- engines/mortevielle/var_mor.cpp | 4 +- 9 files changed, 105 insertions(+), 18 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 8e4ad338df..e6035bb114 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -66,7 +66,7 @@ void PaletteManager::setPalette(const int *palette, uint idx, uint size) { */ void PaletteManager::setDefaultPalette() { /* - int defaultPalette[16] = { 0, 1, 2, 3, 4, 5, 7, 20, 56, 57, 58, 59, 60, 61, 62, 63 }; + int defaultPalette[16] = { 0, 1, 2, 3, 4, 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63 }; setPalette(defaultPalette, 0, 16); */ // TODO: Replace with proper palette @@ -933,9 +933,6 @@ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { ++pDest; } } - - // TODO: Remove this once we have a proper game loop - updateScreen(); } /** @@ -986,9 +983,6 @@ void ScreenSurface::drawBox(int x, int y, int dx, int dy, int col) { destSurface.vLine(1, 2, destSurface.h - 3, col); destSurface.vLine(dx - 1, 2, destSurface.h - 3, col); destSurface.vLine(dx - 2, 2, destSurface.h - 3, col); - - // TODO: Remove this once we have a proper game loop - updateScreen(); } diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index dae117e110..4eba4c4a0d 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -49,6 +49,7 @@ int testou() { case '\23' : sonoff = ! sonoff; break; + /* Prevent changing graphics mode case '\1': case '\3': case '\5' : { @@ -69,6 +70,7 @@ int testou() { return testou_result; } break; + */ case '\26' : if ((c_zzz == 1) && (c_zzz == 2)) { zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 1c2936d188..2f0793643c 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -31,6 +31,7 @@ #include "mortevielle/keyboard.h" #include "mortevielle/menu.h" #include "mortevielle/mor.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/parole2.h" @@ -275,6 +276,7 @@ void mfouen() void atf3f8(int &key) { do { key = testou(); + CHECK_QUIT; } while (!((key == 61) || (key == 66))); } @@ -394,6 +396,7 @@ void sparl(float adr, float rep) { do { parole(repint, haut[caff - 69], 0); atf3f8(key); + CHECK_QUIT; } while (!(key == 66)); hirs(); show_mouse(); diff --git a/engines/mortevielle/mort.cpp b/engines/mortevielle/mort.cpp index e24e9b58f9..fc592f98fe 100644 --- a/engines/mortevielle/mort.cpp +++ b/engines/mortevielle/mort.cpp @@ -26,6 +26,7 @@ */ #include "mortevielle/mort.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/var_mor.h" /* les variables */ //Translation: Variables #include "mortevielle/asm.h" #include "mortevielle/keyboard.h" /* la gestion du clavier */ //Translation: Keyboard manager @@ -57,6 +58,8 @@ void divers(int np, bool b) { do { parole(np, 0, 0); atf3f8(key); + CHECK_QUIT; + if (newgd != gd) { gd = newgd; hirs(); @@ -67,7 +70,7 @@ void divers(int np, bool b) { /* NIVEAU 0 */ -int mortevielle_main(int argc, const char *argv[]) { +void mortevielle_main() { /*init_debug;*/ /* ecri_seg;*/ //pio_initialize(argc, argv); @@ -116,9 +119,12 @@ int mortevielle_main(int argc, const char *argv[]) { aff50(false); mlec = 0; divers(142, false); + CHECK_QUIT; ani50(); divers(143, true); + CHECK_QUIT; + suite(); music(); adzon(); @@ -137,10 +143,6 @@ int mortevielle_main(int argc, const char *argv[]) { do { tjouer(); } while (!arret); - hide_mouse(); - clrscr; - /*out_debug;*/ - return EXIT_SUCCESS; } } // End of namespace Mortevielle diff --git a/engines/mortevielle/mort.h b/engines/mortevielle/mort.h index 8523774da6..d313e32b78 100644 --- a/engines/mortevielle/mort.h +++ b/engines/mortevielle/mort.h @@ -32,7 +32,7 @@ namespace Mortevielle { extern void divers(int np, bool b); /* NIVEAU 0 */ -extern int mortevielle_main(int argc, const char *argv[]); +extern void mortevielle_main(); } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 8346c3f9e7..6797a7e649 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -28,6 +28,7 @@ #include "graphics/pixelformat.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mort.h" +#include "mortevielle/mouse.h" #include "mortevielle/var_mor.h" namespace Mortevielle { @@ -37,6 +38,7 @@ MortevielleEngine *g_vm; MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc): Engine(system), _gameDescription(gameDesc) { g_vm = this; + _lastGameFrame = 0; } MortevielleEngine::~MortevielleEngine() { @@ -113,6 +115,78 @@ Common::ErrorCode MortevielleEngine::loadMortDat() { return Common::kNoError; } +bool MortevielleEngine::keyPressed() { + // Check for any pending key presses + handleEvents(); + + // Check if it's time to draw the next frame + if (g_system->getMillis() > (_lastGameFrame + GAME_FRAME_DELAY)) { + _lastGameFrame = g_system->getMillis(); + + g_vm->_screenSurface.updateScreen(); + } + + // Delay briefly to keep CPU usage down + g_system->delayMillis(5); + + // Return if there are any pending key presses + return !_keypresses.empty(); +} + +int MortevielleEngine::getChar() { + // If there isn't any pending keypress, wait until there is + while (!shouldQuit() && _keypresses.empty()) { + keypressed(); + } + + // Return the top keypress + return shouldQuit() ? 0 : _keypresses.pop(); +} + +bool MortevielleEngine::handleEvents() { + Common::Event event; + if (!g_system->getEventManager()->pollEvent(event)) + return false; + + switch (event.type) { + case Common::EVENT_LBUTTONDOWN: + case Common::EVENT_LBUTTONUP: + case Common::EVENT_RBUTTONDOWN: + case Common::EVENT_RBUTTONUP: + case Common::EVENT_MBUTTONDOWN: + case Common::EVENT_MBUTTONUP: + case Common::EVENT_MOUSEMOVE: + x_s = event.mouse.x; + y_s = event.mouse.y; + break; + + case Common::EVENT_KEYDOWN: + addKeypress(event); + break; + default: + break; + } + + return true; +} + +/** + * Add the specified key to the event queue + */ +void MortevielleEngine::addKeypress(Common::Event &evt) { + // Check for control keypresses + if (evt.kbd.hasFlags(Common::KBD_CTRL) && (evt.kbd.keycode >= Common::KEYCODE_a) && + (evt.kbd.keycode <= Common::KEYCODE_z)) { + _keypresses.push(evt.kbd.keycode - Common::KEYCODE_a + 1); + return; + } + + // Handle function keys + if ((evt.kbd.keycode >= Common::KEYCODE_F1) && (evt.kbd.keycode <= Common::KEYCODE_F12)) { + _keypresses.push(59 + evt.kbd.keycode - Common::KEYCODE_F1); + } +} + /*-------------------------------------------------------------------------*/ Common::Error MortevielleEngine::run() { @@ -125,8 +199,7 @@ Common::Error MortevielleEngine::run() { _paletteManager.setDefaultPalette(); // Dispatch to the game's main routine - const char *argv[] = { "" }; - mortevielle_main(1, argv); + mortevielle_main(); return Common::kNoError; } diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 816a4360cc..c00561d54d 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -23,8 +23,10 @@ #ifndef MORTEVIELLE_H #define MORTEVIELLE_H +#include "common/events.h" #include "common/file.h" #include "common/rect.h" +#include "common/stack.h" #include "engines/advancedDetector.h" #include "engines/engine.h" #include "common/error.h" @@ -42,14 +44,19 @@ enum { #define SCREEN_HEIGHT 400 #define MORT_DAT_REQUIRED_VERSION 1 #define MORT_DAT "mort.dat" +#define GAME_FRAME_DELAY (1000 / 50) class MortevielleEngine : public Engine { private: const ADGameDescription *_gameDescription; + Common::Stack _keypresses; + uint32 _lastGameFrame; Common::ErrorCode initialise(); Common::ErrorCode loadMortDat(); void loadFont(Common::File &f); + bool handleEvents(); + void addKeypress(Common::Event &evt); public: ScreenSurface _screenSurface; PaletteManager _paletteManager; @@ -59,10 +66,15 @@ public: virtual bool hasFeature(EngineFeature f) const; virtual Common::Error run(); uint32 getGameFlags() const; + + bool keyPressed(); + int getChar(); }; extern MortevielleEngine *g_vm; +#define CHECK_QUIT if (g_vm->shouldQuit()) { return; } + } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 89dde415df..50d7e0fe54 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -246,9 +246,10 @@ void ani50() { output(delig); } while (!(cy == 20)); ix = 0; - do { +/* do { ix = ix + 1; } while (!(keypressed() | (ix == 5e5))); +*/ crep = 998; textcolor(1); gotoxy(1, 21); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 5cca06f011..1b742a75e2 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -372,10 +372,10 @@ int get_random_number(int minval, int maxval) { } bool keypressed() { - return false; // Hardcoded currently for no keypress pending + return g_vm->keyPressed(); } char get_ch() { - return '\0'; // hardcoded currently for no keypress + return g_vm->getChar(); } void palette(int v1) { -- cgit v1.2.3 From 1d8ec4c3724a257c6f69210e0c02c77e8517be49 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Wed, 18 Jan 2012 21:16:07 +1100 Subject: MORTEVIELLE: Properly handle image offsets when drawing images --- engines/mortevielle/graphics.cpp | 47 +++++++++++++++++++--------------------- engines/mortevielle/graphics.h | 4 +++- 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index e6035bb114..64e1256f8a 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -46,9 +46,9 @@ void PaletteManager::setPalette(const int *palette, uint idx, uint size) { byte *p = &egaPalette[0]; for (int i = 0; i < 64; i++) { - *p++ = (i >> 2 & 1) * 42 + (i >> 5 & 1) * 21; - *p++ = (i >> 1 & 1) * 42 + (i >> 4 & 1) * 21; - *p++ = (i & 1) * 42 + (i >> 3 & 1) * 21; + *p++ = (i >> 2 & 1) * 0xaa + (i >> 5 & 1) * 0x55; + *p++ = (i >> 1 & 1) * 0xaa + (i >> 4 & 1) * 0x55; + *p++ = (i & 1) * 0xaa + (i >> 3 & 1) * 0x55; } // Loop through setting palette colours based on the passed indexes @@ -56,7 +56,7 @@ void PaletteManager::setPalette(const int *palette, uint idx, uint size) { int palIndex = palette[idx]; assert(palIndex < 64); - const byte *pRgb = (const byte *)&egaPalette[palIndex]; + const byte *pRgb = (const byte *)&egaPalette[palIndex * 3]; g_system->getPaletteManager()->setPalette(pRgb, idx, 1); } } @@ -65,15 +65,8 @@ void PaletteManager::setPalette(const int *palette, uint idx, uint size) { * Set the default EGA palette */ void PaletteManager::setDefaultPalette() { -/* int defaultPalette[16] = { 0, 1, 2, 3, 4, 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63 }; setPalette(defaultPalette, 0, 16); -*/ - // TODO: Replace with proper palette - for (int idx = 0; idx < 16; ++idx) { - uint32 c = 0x111111 * idx; - g_system->getPaletteManager()->setPalette((const byte *)&c, idx, 1); - } } /*-------------------------------------------------------------------------* @@ -86,7 +79,7 @@ void PaletteManager::setDefaultPalette() { #define INCR_TAIX { if (_xSize & 1) ++_xSize; } #define DEFAULT_WIDTH (SCREEN_WIDTH / 2) -#define BUFFER_SIZE 8192 +#define BUFFER_SIZE 65536 void GfxSurface::decode(const byte *pSrc) { _width = _height = 0; @@ -99,17 +92,17 @@ void GfxSurface::decode(const byte *pSrc) { // First run through the data to calculate starting offsets const byte *p = pSrc; - _xOffset = _yOffset = 0xffff; + _offset.x = _offset.y = 999; assert(entryCount > 0); for (int idx = 0; idx < entryCount; ++idx) { _xp = READ_BE_UINT16(p + 4); - if (_xp < _xOffset) - _xOffset = _xp; + if (_xp < _offset.x) + _offset.x = _xp; _yp = READ_BE_UINT16(p + 6); - if (_yp < _yOffset) - _yOffset = _yp; + if (_yp < _offset.y) + _offset.y = _yp; // Move to next entry int size = READ_BE_UINT16(p) + READ_BE_UINT16(p + 2); @@ -134,8 +127,8 @@ void GfxSurface::decode(const byte *pSrc) { for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex) { int lookupBytes = READ_BE_UINT16(pSrc); int srcSize = READ_BE_UINT16(pSrc + 2); - _xp = READ_BE_UINT16(pSrc + 4) - _xOffset; - _yp = READ_BE_UINT16(pSrc + 6) - _yOffset; + _xp = READ_BE_UINT16(pSrc + 4) - _offset.x; + _yp = READ_BE_UINT16(pSrc + 6) - _offset.y; pSrc += 8; int decomCode = READ_BE_UINT16(pSrc); @@ -169,7 +162,6 @@ void GfxSurface::decode(const byte *pSrc) { _nibbleFlag = savedNibbleFlag; _var18 = savedVar18; - assert(_var14 < 256); for (int idx = 0; idx < _var14; ++idx, ++tableOffset) { assert(tableOffset < BUFFER_SIZE); lookupTable[tableOffset] = suiv(pSrc); @@ -416,12 +408,12 @@ void GfxSurface::decode(const byte *pSrc) { } // At this point, the outputBuffer has the data for the image. Initialise the surface - // with the calculated size for the full image, and copy the lines to the surface - create(_xOffset + _width, _yOffset + _height, Graphics::PixelFormat::createFormatCLUT8()); + // with the calculated size, and copy the lines to the surface + create(_width, _height, Graphics::PixelFormat::createFormatCLUT8()); for (int yCtr = 0; yCtr < _height; ++yCtr) { const byte *copySrc = &outputBuffer[yCtr * DEFAULT_WIDTH]; - byte *copyDest = (byte *)getBasePtr(_xOffset, yCtr + _yOffset); + byte *copyDest = (byte *)getBasePtr(0, yCtr); Common::copy(copySrc, copySrc + _width, copyDest); } @@ -903,9 +895,13 @@ void ScreenSurface::updateScreen() { * also needs to be doubled for EGA mode */ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { + // Adjust the draw position by the draw offset + x += surface._offset.x; + y += surface._offset.y; + // Lock the affected area of the surface to write to - Graphics::Surface destSurface = lockArea(Common::Rect(x * 2, y, - (x + surface.w) * 2, y + surface.h * 2)); + Graphics::Surface destSurface = lockArea(Common::Rect(x * 2, y * 2, + (x + surface.w) * 2, (y + surface.h) * 2)); // Loop through writing for (int yp = 0; yp < surface.h; ++yp) { @@ -933,6 +929,7 @@ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { ++pDest; } } + g_vm->_screenSurface.updateScreen(); } /** diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index f5c2207a12..ec6a19e949 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -50,7 +50,6 @@ private: int _thickness, _yInc, _var20, _xInc; int _var24; int _width, _height; - int _xOffset, _yOffset; void majTtxTty(); byte suiv(const byte *&pSrc); @@ -66,6 +65,9 @@ private: bool TFP(int v); void TF1(byte *&pDest, int &v); void TF2(const byte *&pSrc, byte *&pDest, const byte *&pLookup, int &v); +public: + // Specifies offset when drawing the image + Common::Point _offset; public: ~GfxSurface(); -- cgit v1.2.3 From 3d667ba670486359165ec95f61f3fc9d17e39bf0 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Wed, 18 Jan 2012 21:45:11 +1100 Subject: MORTEVIELLE: Fix decoding glitch in the first image --- engines/mortevielle/graphics.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 64e1256f8a..95988d32c1 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -499,8 +499,10 @@ void GfxSurface::horizontal(const byte *&pSrc, byte *&pDest, const byte *&pLooku ++pDest; } else { // Write out vertical slice bottom to top - for (int yIndex = 0; yIndex < _thickness; ++yIndex, pDest -= DEFAULT_WIDTH) + for (int yIndex = 0; yIndex < _thickness; ++yIndex) { + pDest -= DEFAULT_WIDTH; *pDest = csuiv(pSrc, pLookup); + } } } @@ -529,8 +531,10 @@ void GfxSurface::horizontal(const byte *&pSrc, byte *&pDest, const byte *&pLooku *pDest = csuiv(pSrc, pLookup); } else { // Write out vertical slice top to bottom - for (int yIndex = 0; yIndex < _thickness; ++yIndex, pDest -= DEFAULT_WIDTH) + for (int yIndex = 0; yIndex < _thickness; ++yIndex) { + pDest -= DEFAULT_WIDTH; *pDest = csuiv(pSrc, pLookup); + } } } -- cgit v1.2.3 From 55f5adeff3550695d6da84adce8db698ef2f1514 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Wed, 18 Jan 2012 22:15:55 +1100 Subject: MORTEVIELLE: Give generic variables in image decoder proper names --- engines/mortevielle/graphics.cpp | 155 +++++++++++++++++++-------------------- engines/mortevielle/graphics.h | 7 +- 2 files changed, 80 insertions(+), 82 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 95988d32c1..dda2974228 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -83,11 +83,11 @@ void PaletteManager::setDefaultPalette() { void GfxSurface::decode(const byte *pSrc) { _width = _height = 0; - _var1 = *pSrc++; + bool offsetFlag = *pSrc++ == 0; int entryCount = *pSrc++; pSrc += 2; - if (!_var1) + if (offsetFlag) pSrc += 30; // First run through the data to calculate starting offsets @@ -139,7 +139,7 @@ void GfxSurface::decode(const byte *pSrc) { pSrc += 6; pDest = &outputBuffer[0]; - _var18 = 0; + _lookupIndex = 0; _nibbleFlag = false; int decomIndex = 0; @@ -150,24 +150,24 @@ void GfxSurface::decode(const byte *pSrc) { if (decomCode & 1) { // Handle decompression of the pattern lookup table do { - _var12 = desanalyse(pSrc); - _var14 = desanalyse(pSrc); + int outerCount = desanalyse(pSrc); + int innerCount = desanalyse(pSrc); const byte *pSrcSaved = pSrc; bool savedNibbleFlag = _nibbleFlag; - int savedVar18 = _var18; + int savedLookupIndex = _lookupIndex; do { pSrc = pSrcSaved; _nibbleFlag = savedNibbleFlag; - _var18 = savedVar18; + _lookupIndex = savedLookupIndex; - for (int idx = 0; idx < _var14; ++idx, ++tableOffset) { + for (int idx = 0; idx < innerCount; ++idx, ++tableOffset) { assert(tableOffset < BUFFER_SIZE); lookupTable[tableOffset] = suiv(pSrc); } - } while (--_var12 > 0); - } while (_var18 < (lookupBytes - 1)); + } while (--outerCount > 0); + } while (_lookupIndex < (lookupBytes - 1)); } else { assert(lookupBytes < BUFFER_SIZE); @@ -183,30 +183,30 @@ void GfxSurface::decode(const byte *pSrc) { ++pSrc; tableOffset = 0; - _var18 = 0; + _lookupIndex = 0; if (decomCode & 2) { // Handle decompression of the temporary source buffer do { - _var12 = desanalyse(pSrc); - _var14 = desanalyse(pSrc); - _var18 += _var14; + int outerCount = desanalyse(pSrc); + int innerCount = desanalyse(pSrc); + _lookupIndex += innerCount; if (_nibbleFlag) { ++pSrc; - ++_var18; + ++_lookupIndex; _nibbleFlag = false; } const byte *pStart = pSrc; do { pSrc = pStart; - for (int idx = 0; idx < _var14; ++idx) { + for (int idx = 0; idx < innerCount; ++idx) { assert(tableOffset < BUFFER_SIZE); srcBuffer[tableOffset++] = *pSrc++; } - } while (--_var12 > 0); - } while (_var18 < (srcSize - 1)); + } while (--outerCount > 0); + } while (_lookupIndex < (srcSize - 1)); } else { assert(srcSize < BUFFER_SIZE); for (int idx = 0; idx < srcSize; ++idx) @@ -222,7 +222,7 @@ void GfxSurface::decode(const byte *pSrc) { pSrc = &srcBuffer[0]; pLookup = &lookupTable[0] - 1; - _lookupValue = _var18 = 0; + _lookupValue = _lookupIndex = 0; _nibbleFlag = false; decomIndex = decomCode >> 8; } @@ -339,8 +339,8 @@ void GfxSurface::decode(const byte *pSrc) { INCR_TAIX; _thickness = _xInc = 1; _yInc = DEFAULT_WIDTH; - _var20 = _ySize; - _var24 = _xSize; + _yEnd = _ySize; + _xEnd = _xSize; diag(pSrc, pDest, pLookup); break; @@ -348,17 +348,17 @@ void GfxSurface::decode(const byte *pSrc) { INCR_TAIX; _thickness = _xSize; _yInc = 1; - _var20 = _xSize; + _yEnd = _xSize; _xInc = DEFAULT_WIDTH; - _var24 = _ySize; + _xEnd = _ySize; diag(pSrc, pDest, pLookup); break; case 14: _thickness = _yInc = 1; - _var20 = _xSize; + _yEnd = _xSize; _xInc = DEFAULT_WIDTH; - _var24 = _ySize; + _xEnd = _ySize; diag(pSrc, pDest, pLookup); break; @@ -366,18 +366,18 @@ void GfxSurface::decode(const byte *pSrc) { INCR_TAIX; _thickness = 2; _yInc = DEFAULT_WIDTH; - _var20 = _ySize; + _yEnd = _ySize; _xInc = 1; - _var24 = _xSize; + _xEnd = _xSize; diag(pSrc, pDest, pLookup); break; case 16: _thickness = 3; _yInc = 1; - _var20 = _xSize; + _yEnd = _xSize; _xInc = DEFAULT_WIDTH; - _var24 = _ySize; + _xEnd = _ySize; diag(pSrc, pDest, pLookup); break; @@ -385,9 +385,9 @@ void GfxSurface::decode(const byte *pSrc) { INCR_TAIX; _thickness = 3; _yInc = DEFAULT_WIDTH; - _var20 = _ySize; + _yEnd = _ySize; _xInc = 1; - _var24 = _xSize; + _xEnd = _xSize; diag(pSrc, pDest, pLookup); break; @@ -395,9 +395,9 @@ void GfxSurface::decode(const byte *pSrc) { INCR_TAIX; _thickness = 5; _yInc = DEFAULT_WIDTH; - _var20 = _ySize; + _yEnd = _ySize; _xInc = 1; - _var24 = _xSize; + _xEnd = _xSize; diag(pSrc, pDest, pLookup); break; } @@ -431,7 +431,7 @@ byte GfxSurface::suiv(const byte *&pSrc) { int v = *pSrc; if (_nibbleFlag) { ++pSrc; - ++_var18; + ++_lookupIndex; _nibbleFlag = false; return v & 0xf; } else { @@ -564,12 +564,11 @@ void GfxSurface::horizontal(const byte *&pSrc, byte *&pDest, const byte *&pLooku } void GfxSurface::vertical(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { -// byte *pDestEnd = pDest + (_ySize - 1) * DEFAULT_WIDTH + _xSize; - int var28 = 0; + int drawIndex = 0; for (;;) { // Reduce thickness as necessary - while ((var28 + _thickness) > _xSize) { + while ((drawIndex + _thickness) > _xSize) { if (--_thickness == 0) return; } @@ -580,22 +579,22 @@ void GfxSurface::vertical(const byte *&pSrc, byte *&pDest, const byte *&pLookup) if (yCtr > 0) pDest += DEFAULT_WIDTH; - var28 += _thickness; + drawIndex += _thickness; for (int xCtr = 0; xCtr < _thickness; ++xCtr) *pDest++ = csuiv(pSrc, pLookup); } else { pDest += DEFAULT_WIDTH; - var28 -= _thickness; + drawIndex -= _thickness; for (int xCtr = 0; xCtr < _thickness; ++xCtr) *--pDest = csuiv(pSrc, pLookup); } } if ((_ySize % 2) == 0) { pDest += _thickness; - var28 += _thickness; + drawIndex += _thickness; } - while (_xSize < (var28 + _thickness)) { + while (_xSize < (drawIndex + _thickness)) { if (--_thickness == 0) return; } @@ -606,13 +605,13 @@ void GfxSurface::vertical(const byte *&pSrc, byte *&pDest, const byte *&pLookup) if (yCtr > 0) pDest -= DEFAULT_WIDTH; - var28 += _thickness; + drawIndex += _thickness; for (int xCtr = 0; xCtr < _thickness; ++xCtr) *pDest++ = csuiv(pSrc, pLookup); } else { pDest -= DEFAULT_WIDTH; - var28 -= _thickness; + drawIndex -= _thickness; for (int xCtr = 0; xCtr < _thickness; ++xCtr) *--pDest = csuiv(pSrc, pLookup); @@ -620,13 +619,13 @@ void GfxSurface::vertical(const byte *&pSrc, byte *&pDest, const byte *&pLookup) } if ((_ySize % 2) == 0) { pDest += _thickness; - var28 += _thickness; + drawIndex += _thickness; } } } void GfxSurface::decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { - int var26 = 0, var28 = 0; + int yPos = 0, drawIndex = 0; _yInc = DEFAULT_WIDTH; _xInc = -1; --_xSize; @@ -643,32 +642,32 @@ void GfxSurface::decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup) case 1: increments(pDest); - if (!var28) { + if (!drawIndex) { NIH(); NIV(); - if (var26 == _ySize) { + if (yPos == _ySize) { increments(pDest); - ++var28; + ++drawIndex; } else { - ++var26; + ++yPos; } *++pDest = csuiv(pSrc, pLookup); areaNum = 2; - } else if (var26 != _ySize) { - ++var26; - --var28; + } else if (yPos != _ySize) { + ++yPos; + --drawIndex; areaNum = 0; } else { NIH(); NIV(); increments(pDest); - ++var28; + ++drawIndex; *++pDest = csuiv(pSrc, pLookup); - if (var28 == _xSize) { + if (drawIndex == _xSize) { areaNum = -1; } else { areaNum = 2; @@ -679,35 +678,35 @@ void GfxSurface::decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup) case 2: increments(pDest); - if (!var26) { + if (!yPos) { NIH(); NIV(); - if (var28 == _xSize) { + if (drawIndex == _xSize) { increments(pDest); - ++var26; + ++yPos; } else { - ++var28; + ++drawIndex; } pDest += DEFAULT_WIDTH; areaNum = 0; - } else if (var28 != _xSize) { - ++var28; - --var26; + } else if (drawIndex != _xSize) { + ++drawIndex; + --yPos; *pDest = csuiv(pSrc, pLookup); areaNum = 2; } else { pDest += DEFAULT_WIDTH; - ++var26; + ++yPos; NIH(); NIV(); increments(pDest); *pDest = csuiv(pSrc, pLookup); - if (var26 == _ySize) + if (yPos == _ySize) areaNum = -1; else areaNum = 1; @@ -718,10 +717,10 @@ void GfxSurface::decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup) } void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { - int var26 = 0, var28 = 0; - --_var24; + int diagIndex = 0, drawIndex = 0; + --_xEnd; - while (!TFP(var26)) { + while (!TFP(diagIndex)) { for (;;) { NIH(); for (int idx = 0; idx <= _thickness; ++idx) { @@ -743,21 +742,21 @@ void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { NIV(); increments(pDest); - ++var28; - if (_var24 < (var28 + 1)) { - TF1(pDest, var26); + ++drawIndex; + if (_xEnd < (drawIndex + 1)) { + TF1(pDest, diagIndex); break; } pDest += _xInc; - ++var28; - if (_var24 < (var28 + 1)) { - TF2(pSrc, pDest, pLookup, var26); + ++drawIndex; + if (_xEnd < (drawIndex + 1)) { + TF2(pSrc, pDest, pLookup, diagIndex); break; } } - if (TFP(var26)) + if (TFP(diagIndex)) break; for (;;) { @@ -780,15 +779,15 @@ void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { NIV(); increments(pDest); - if (--var28 == 0) { - TF1(pDest, var26); + if (--drawIndex == 0) { + TF1(pDest, diagIndex); NIH(); break; } else { pDest += _xInc; - if (--var28 == 0) { - TF2(pSrc, pDest, pLookup, var26); + if (--drawIndex == 0) { + TF2(pSrc, pDest, pLookup, diagIndex); NIH(); break; } @@ -813,7 +812,7 @@ void GfxSurface::NIV() { } bool GfxSurface::TFP(int v) { - int diff = _var20 - v; + int diff = _yEnd - v; if (!diff) // Time to finish loop in outer method return true; diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index ec6a19e949..f3d09858bd 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -42,13 +42,12 @@ public: class GfxSurface: public Graphics::Surface { private: - int _var1; int _xp, _yp; int _xSize, _ySize, _var12; - int _var14, _var18, _lookupValue; + int _var14, _lookupIndex, _lookupValue; bool _nibbleFlag; - int _thickness, _yInc, _var20, _xInc; - int _var24; + int _thickness; + int _yInc, _yEnd, _xInc, _xEnd; int _width, _height; void majTtxTty(); -- cgit v1.2.3 From 45083e7c94508d09e8e96e8e90c452218e2a07bc Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Wed, 18 Jan 2012 23:09:31 +1100 Subject: MORTEVIELLE: Added needed palette remapping to drawPicture() The remapping allows the first image to now display using the correct colours. --- engines/mortevielle/graphics.cpp | 25 +++++++++++-------------- engines/mortevielle/level15.cpp | 1 - engines/mortevielle/var_mor.cpp | 2 +- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index dda2974228..44bd58dfb5 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -892,8 +892,8 @@ void ScreenSurface::updateScreen() { * Draws a decoded picture on the screen * @remarks - Because the ScummVM surface is using a double height 640x400 surface to * simulate the original 640x400 surface, all Y values have to be doubled. - * - Image resources are stored at 320x200, so when drawn onto the screen every - * other column is interpolated. + * - Image resources are stored at 320x200, so when drawn onto the screen a single pixel + * from the source image is drawn using the two pixels at the given index in the palette map * - Because the original game supported 320 width resolutions, the X coordinate * also needs to be doubled for EGA mode */ @@ -906,6 +906,9 @@ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { Graphics::Surface destSurface = lockArea(Common::Rect(x * 2, y * 2, (x + surface.w) * 2, (y + surface.h) * 2)); + // Get a lookup for the palette mapping + const byte *paletteMap = &mem[0x7000 * 16 + 2]; + // Loop through writing for (int yp = 0; yp < surface.h; ++yp) { if (((y + yp) < 0) || ((y + yp) >= 200)) @@ -915,20 +918,14 @@ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { byte *pDest = (byte *)destSurface.getBasePtr(0, yp * 2); for (int xp = 0; xp < surface.w; ++xp, ++pSrc) { - // Draw pixel from source image - *pDest = *pSrc; - *(pDest + SCREEN_WIDTH) = *pSrc; + // Draw the pixel using the specified index in the palette map + *pDest = paletteMap[*pSrc * 2]; + *(pDest + SCREEN_WIDTH) = paletteMap[*pSrc * 2]; ++pDest; - // TODO: I'm not sure what algorithm the original uses to calculate - // which pixel to use on the alternate columns, so for now I'm doing - // a simple output of null values. This should be revisited once we've - // got the palette loading so we can compare palettes. In fact, the - // original had the alternate columns very noticablely striped. With - // the larger 256 colour palette, it may be worthwhile to offer a - // better blended graphics mode as an option. - *pDest = 0; - *(pDest + SCREEN_WIDTH) = 0; + // Use the secondary mapping value to draw the secondary column pixel + *pDest = paletteMap[*pSrc * 2 + 1]; + *(pDest + SCREEN_WIDTH) = paletteMap[*pSrc * 2 + 1]; ++pDest; } } diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 8b8dbcf02f..42e4393527 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -103,7 +103,6 @@ void pictout(int seg, int dep, int x, int y) { GfxSurface surface; surface.decode(&mem[seg * 16 + dep]); - decomp(seg, dep); if (gd == her) { mem[0x7000 * 16 + 2] = 0; mem[0x7000 * 16 + 32] = 15; diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 1b742a75e2..0b004a163a 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -399,7 +399,7 @@ void box(int c, int Gd, int xo, int yo, int xi, int yi, int patt) { // (* external 'c:\mc\decomp.com'; *) void decomp(int seg, int dep) { - warning("TODO: decomp"); + warning("TODO: decomp deprecated in faovur of GfxSurface::decode"); } // (* external 'c:\mc\affich.com'; *) -- cgit v1.2.3 From 78a653b24583506c1229b080000643e70685b065 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Thu, 19 Jan 2012 08:51:18 +1100 Subject: MORTEVIELLE: Implement ScreenSurface::fillBox method --- engines/mortevielle/graphics.cpp | 16 ++++++++++++++++ engines/mortevielle/graphics.h | 2 ++ engines/mortevielle/var_mor.cpp | 3 ++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 44bd58dfb5..0c2872f226 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -982,6 +982,22 @@ void ScreenSurface::drawBox(int x, int y, int dx, int dy, int col) { destSurface.vLine(dx - 2, 2, destSurface.h - 3, col); } +/** + * Fills an area with the specified colour + * @remarks Because the ScummVM surface is using a double height 640x400 surface to + * simulate the original 640x400 surface, all Y values have to be doubled + */ +void ScreenSurface::fillBox(int colour, const Common::Rect &bounds, int patt) { + Graphics::Surface destSurface = lockArea(Common::Rect(bounds.left, bounds.top * 2, + bounds.right, bounds.bottom * 2)); + + // Fill the area + destSurface.fillRect(Common::Rect(0, 0, destSurface.w, destSurface.h), 0); + + // TODO: Figure out what effect patterns of other than '0xff' have + if (patt != 0xff) + warning("TODO: Figure out operation of ScreenSurface::box when pattern is %xh", patt); +} /** * Sets a single pixel at the specified co-ordinates diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index f3d09858bd..4f3956bdcf 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -84,6 +84,8 @@ public: void drawPicture(GfxSurface &surface, int x, int y); void writeCharacter(const Common::Point &pt, unsigned char ch, int palIndex); void drawBox(int x, int y, int dx, int dy, int col); + void fillBox(int colour, const Common::Rect &bounds, int patt); + // TODO: Refactor code to remove this method, for increased performance void setPixel(const Common::Point &pt, int palIndex); }; diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 0b004a163a..2b20173174 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -394,7 +394,8 @@ void s_sauv(int Gd, int y, int dy) { // (* external 'c:\mc\boite.com'; *) void box(int c, int Gd, int xo, int yo, int xi, int yi, int patt) { - warning("TODO: box method not yet implemented"); + warning("TODO: box deprecated in favour of GfxSurface::fillBox"); + g_vm->_screenSurface.fillBox(c, Common::Rect(xo, yo, xi, yi), patt); } // (* external 'c:\mc\decomp.com'; *) -- cgit v1.2.3 From c2ce0cff4446435a013627e42d7ef16b16d6e81b Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Thu, 19 Jan 2012 22:07:56 +1100 Subject: MORTEVIELLE: Fix the calculation in the animof method --- engines/mortevielle/level15.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 42e4393527..9243426c33 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -190,6 +190,9 @@ void adzon() { f.close(); } +/** + * Returns the offset within the compressed image data resource of the desired image + */ int animof(int ouf, int num) { int nani, aux; @@ -197,11 +200,8 @@ int animof(int ouf, int num) { nani = mem[adani * 16 + 1]; aux = num; if (ouf != 1) aux = aux + nani; - animof_result = (nani << 2) + 2 + swap(READ_LE_UINT16(&mem[adani * 16 + (aux << 1)])); - /*aux:= nani shl 2 + 2; - if ouf=1 then aux:= aux+ swap(WRITE_LE_UINT16(&mem[adani: num shl 1]) - else aux:= aux+ swap(WRITE_LE_UINT16(&mem[adani: (nani+num) shl 1]); - animof:=aux;*/ + animof_result = (nani << 2) + 2 + READ_BE_UINT16(&mem[adani * 16 + (aux << 1)]); + return animof_result; } -- cgit v1.2.3 From 32a16af052580cdb64c751f7330eb77f26ef35d7 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Thu, 19 Jan 2012 22:10:06 +1100 Subject: MORTEVIELLE: Started some notes of the original memory map --- engines/mortevielle/var_mor.h | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 16ab044569..a96329f477 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -42,6 +42,21 @@ namespace Mortevielle { musique & paroles Oct 88 ) */ +/*---------------------------------------------------------------------------*/ +/*------------------- MEMORY MAP ------------------------*/ +/*---------------------------------------------------------------------------*/ +/* The following is a list of physical addresses in memory currently used + * by the game. + * + * Address + * ------- + * 6000:0 - Decompressed current image + * 7000:0+ - Compressed images + * 7000:2 - 16 words representing palette map + * 7000:4138 - width, height, x/y offset of decoded image + */ + + /*---------------------------------------------------------------------------*/ /*------------------------- DEFINES ----------------------------------*/ /*---------------------------------------------------------------------------*/ @@ -411,7 +426,7 @@ extern byte mem[65536 * 16]; #define mortevielle_exit(ret) error("Exit the game") // Text screen functions not relevant for ScummVM -#define clrscr {} +#define clrscr { warning("ClrScr"); } #define clreol {} #define graphcolormode {} extern void gotoxy(int x, int y); -- cgit v1.2.3 From 1bc0028ab970ee837d4adfe72d47f8e2d13bf37a Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Thu, 19 Jan 2012 22:40:35 +1100 Subject: MORTEVIELLE: Fix another graphic glitch in the image decoder --- engines/mortevielle/graphics.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 0c2872f226..44b5921560 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -264,7 +264,6 @@ void GfxSurface::decode(const byte *pSrc) { case 2: // Draw rect alternating top to bottom, bottom to top - INCR_TAIX; for (int xCtr = 0; xCtr < _xSize; ++xCtr) { if ((xCtr % 2) == 0) { for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDest += DEFAULT_WIDTH) { @@ -929,7 +928,6 @@ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { ++pDest; } } - g_vm->_screenSurface.updateScreen(); } /** -- cgit v1.2.3 From 18e1193d700e13f262b8d05090140e557bb3ad21 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 09:47:40 +1100 Subject: MORTEVIELLE: Fix seeking in chardes and charani --- engines/mortevielle/taffich.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 78eccbbaf1..77733b8829 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -51,7 +51,7 @@ void chardes(Common::String nom, float passe, int long_) { passe = passe - 128; } if (p != 0) - f.seek(p); + f.seek(p * 0x80); p = abs((int)passe); l = long_ + p; i = 0; @@ -84,7 +84,7 @@ void charani(Common::String nom, float passe, int long_) { p = p + 1; } if (p != 0) - f.seek(p); + f.seek(p * 0x80); p = abs((int)passe); l = long_ + p; -- cgit v1.2.3 From 1244e3c7ad1eccdbf8ac5e3bfb46f4fa98d0be4b Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 09:50:08 +1100 Subject: MORTEVIELLE: Reduce the decoding lookup buffer sizes --- engines/mortevielle/graphics.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 44b5921560..89fd123617 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -79,7 +79,7 @@ void PaletteManager::setDefaultPalette() { #define INCR_TAIX { if (_xSize & 1) ++_xSize; } #define DEFAULT_WIDTH (SCREEN_WIDTH / 2) -#define BUFFER_SIZE 65536 +#define BUFFER_SIZE 8192 void GfxSurface::decode(const byte *pSrc) { _width = _height = 0; -- cgit v1.2.3 From 64c0600c3c78c2c4b6d7855386bf4e000478cd5d Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 10:06:50 +1100 Subject: MORTEVIELLE: Add ScreenSurface::clearScreen method --- engines/mortevielle/graphics.cpp | 8 +++++ engines/mortevielle/graphics.h | 1 + engines/mortevielle/var_mor.cpp | 71 ++++------------------------------------ 3 files changed, 15 insertions(+), 65 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 89fd123617..0bc3b77804 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -997,6 +997,14 @@ void ScreenSurface::fillBox(int colour, const Common::Rect &bounds, int patt) { warning("TODO: Figure out operation of ScreenSurface::box when pattern is %xh", patt); } +/** + * Clears the screen + */ +void ScreenSurface::clearScreen() { + Graphics::Surface destSurface = lockArea(Common::Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)); + destSurface.fillRect(Common::Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT), 0); +} + /** * Sets a single pixel at the specified co-ordinates * @remarks Because the ScummVM surface is using a double height 640x400 surface to diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 4f3956bdcf..376b9e5e85 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -85,6 +85,7 @@ public: void writeCharacter(const Common::Point &pt, unsigned char ch, int palIndex); void drawBox(int x, int y, int dx, int dy, int col); void fillBox(int colour, const Common::Rect &bounds, int patt); + void clearScreen(); // TODO: Refactor code to remove this method, for increased performance void setPixel(const Common::Point &pt, int palIndex); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 2b20173174..301d0893a7 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -240,71 +240,12 @@ byte adcfiec[(4088 * 16) + (311 * 0x80)]; /*---------------------------------------------------------------------------*/ void hirs() { - /* Deprecated set graphics - - const byte tandy[14] = {113, 80, 90, 14, 63, 6, 50, 56, 2, 3, 6, 7, 0, 0}; - const byte herc[13] = {50, 40, 41, 9, 103, 3, 100, 100, 2, 3, 0, 0, 0}; - int i; - - switch (gd) { - case cga : { - graphcolormode; - graphbackground(0); - palette(1); - res = 1; - } - break; - case ams : { - hires; - //inline_((float)(0xb8) / 6 / 0 / // => mov ax,6 - // 0xcd / 0x10); // => int 16 - port[0x3d9] = 15; - port[0x3df] = 0; - port[0x3dd] = 15; - - res = 2; - } - break; - case ega : { - //inline_((float)(0xb8) / 14 / 0 / // MOV AX, 14 ; mode video 14 = 640*200 16 couleurs - // 0xcd / 0x10); // INT 16 - - res = 2; - } - break; - case her : { - port[0x3bf] = 3; - port[0x3b8] = 2; - for (i = 0; i <= 12; i ++) { - port[0x3b4] = i; - port[0x3b5] = herc[i]; - } - - //inline_((float)(0xfc) / 0xb9 / 0 / 0x80 / 0xb8 / 0 / 0xb0 / 0x8e / 0xc0 / 0x31 / 0xff / 0x31 / 0xc0 / 0xf3 / 0xab); - - port[0x3b8] = 10; - res = 2; - } - break; - case tan : { - port[0x3d8] = 0; - port[0x3da] = 3; - port[0x3de] = 0x14; - for (i = 0; i <= 13; i ++) { - port[0x3d4] = i; - port[0x3d5] = tandy[i]; - } - port[0x3da] = 2; - port[0x3de] = 0; - port[0x3d8] = port[0x3d8] | (11 & 0xef); - port[0x3dd] = port[0x3dd] | 1; - port[0x3df] = port[0x3df] | 0xc0; - box(0, gd, 0, 0, 640, 200, 255); - res = 1; - } - break; - } - */ + // Note: The original used this to set the graphics mode and clear the screen, both at + // the start of the game, and whenever the screen need to be cleared. As such, this + // method is deprecated in favour of clearing the screen + warning("TODO: hirs is deprecated in favour of ScreenSurface::clearScreen"); + + g_vm->_screenSurface.clearScreen(); } /** -- cgit v1.2.3 From 0790b3f24a334c7a3b0fdbf631b786fe973f2d60 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 10:53:54 +1100 Subject: MORTEVIELLE: Fix savegame loading to allow to read from the data folder This is needed so that the initial game state can be correctly read from slot 0. --- engines/mortevielle/disk.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/engines/mortevielle/disk.cpp b/engines/mortevielle/disk.cpp index 8a889f2130..41868d42fa 100644 --- a/engines/mortevielle/disk.cpp +++ b/engines/mortevielle/disk.cpp @@ -87,19 +87,28 @@ void takesav(int n) { dem1(); // -- Load the file 'sauve#n.mor' Common::String saveName = Common::String::format("sav%d.mor", n); - Common::InSaveFile *f = g_system->getSavefileManager()->openForLoading(saveName); - Common::Serializer sz(f, NULL); - sync_save(sz); + // Try loading first from the save area + Common::SeekableReadStream *stream = g_system->getSavefileManager()->openForLoading(saveName); + + // If not present, try loading from the program folder + Common::File f; + if (stream == NULL) { + if (!f.open(saveName)) + error("Unable to open save file '%s'", saveName); - if (f->err()) { - i = do_alert(err_mess, 1); - mortevielle_exit(0); + stream = f.readStream(f.size()); + f.close(); } + + Common::Serializer sz(stream, NULL); + sync_save(sz); + s = s1; for (i = 0; i <= 389; i ++) tabdon[i + acha] = bufcha[i]; - delete f; + // Close the stream + delete stream; } void ld_game(int n) { -- cgit v1.2.3 From 8f32aa48aae89e6ebd0d14a8beea380fb32d5f78 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 11:04:22 +1100 Subject: MORTEVIELLE: Fix loading of data in charge_bruit5() --- engines/mortevielle/ovd1.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 50d7e0fe54..d6713908dc 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -354,9 +354,7 @@ void ani50() { if (!f.open("bruit5")) error("Missing file - bruit5"); - f.read(&mem[adbruit5 * 16 + 0], 149); - /*blockread(f,mem[$5CB0:0],100); - blockread(f,mem[$3D1F:0],49);*/ + f.read(&mem[adbruit5 * 16 + 0], 149 * 128); f.close(); } -- cgit v1.2.3 From 1c1f58ec5d3fc75eb420bbfbbd405b1e56092137 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 12:04:13 +1100 Subject: MORTEVIELLE: Fixed data reading in adzon() --- engines/mortevielle/level15.cpp | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 9243426c33..b0ed953aa4 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -158,35 +158,20 @@ end; void adzon() { Common::File f; -// Common::File g; -// byte a; -// int i; if (!f.open("don.mor")) error("Missing file - don.mor"); - f.read(tabdon, 7); + f.read(tabdon, 7 * 256); f.close(); if (!f.open("bmor.mor")) error("Missing file - bmor.mor"); - f.read(&tabdon[fleche], 1); - /*i:=fleche; - repeat - read(g,a); - tabdon[i]:=a; - i:=succ(i); - until i=fleche + 1916;*/ + f.read(&tabdon[fleche], 1 * 1916); f.close(); if (!f.open("dec.mor")) - error("Missing files - dec.moir"); - f.read(&mem[0x73a2 * 16 + 0], 1); - /*i:=0; - repeat - read(g,a); - mem[$73A2:i]:=a; - i:=succ(i); - until eof(g);*/ + error("Missing file - dec.mor"); + f.read(&mem[0x73a2 * 16 + 0], 1 * 1664); f.close(); } -- cgit v1.2.3 From e3308ce3b54732197049461183194f2532c4c5bb Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 12:21:41 +1100 Subject: MORTEVIELLE: Correct ScreenSurface::fillBox to use the passed colour --- engines/mortevielle/graphics.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 0bc3b77804..f751bc2422 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -990,7 +990,7 @@ void ScreenSurface::fillBox(int colour, const Common::Rect &bounds, int patt) { bounds.right, bounds.bottom * 2)); // Fill the area - destSurface.fillRect(Common::Rect(0, 0, destSurface.w, destSurface.h), 0); + destSurface.fillRect(Common::Rect(0, 0, destSurface.w, destSurface.h), colour); // TODO: Figure out what effect patterns of other than '0xff' have if (patt != 0xff) -- cgit v1.2.3 From 5ecb0d4eea46fa89b89152d33c9c95ee87be60c0 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 15:10:40 +1100 Subject: MORTEVIELLE: Changed deprecated warnings to use debugC instead --- engines/mortevielle/boite.cpp | 2 +- engines/mortevielle/graphics.cpp | 2 +- engines/mortevielle/var_mor.cpp | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/engines/mortevielle/boite.cpp b/engines/mortevielle/boite.cpp index e2b8200adc..7072085c23 100644 --- a/engines/mortevielle/boite.cpp +++ b/engines/mortevielle/boite.cpp @@ -33,7 +33,7 @@ namespace Mortevielle { //Translation: box() void boite(int x, int y, int dx, int dy, int coul) { - warning("TODO: boite is deprecated in favour of ScreenSurface::drawBox"); + debugC(1, kMortevielleCore, "TODO: boite is deprecated in favour of ScreenSurface::drawBox"); g_vm->_screenSurface.drawBox(x, y, dx, dy, coul); } diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index f751bc2422..27595992c7 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -402,7 +402,7 @@ void GfxSurface::decode(const byte *pSrc) { } pSrc = pSrcStart; - debugC(1, kMortevielleGraphics, "Decoding image block %d position %d,%d size %d,%d method %d", + debugC(2, kMortevielleGraphics, "Decoding image block %d position %d,%d size %d,%d method %d", entryIndex + 1, _xp, _yp, _width, _height, decomIndex); } diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 301d0893a7..9de3d94137 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -243,7 +243,7 @@ void hirs() { // Note: The original used this to set the graphics mode and clear the screen, both at // the start of the game, and whenever the screen need to be cleared. As such, this // method is deprecated in favour of clearing the screen - warning("TODO: hirs is deprecated in favour of ScreenSurface::clearScreen"); + debugC(1, kMortevielleCore, "TODO: hirs is deprecated in favour of ScreenSurface::clearScreen"); g_vm->_screenSurface.clearScreen(); } @@ -335,13 +335,13 @@ void s_sauv(int Gd, int y, int dy) { // (* external 'c:\mc\boite.com'; *) void box(int c, int Gd, int xo, int yo, int xi, int yi, int patt) { - warning("TODO: box deprecated in favour of GfxSurface::fillBox"); + debugC(1, kMortevielleCore, "TODO: box deprecated in favour of GfxSurface::fillBox"); g_vm->_screenSurface.fillBox(c, Common::Rect(xo, yo, xi, yi), patt); } // (* external 'c:\mc\decomp.com'; *) void decomp(int seg, int dep) { - warning("TODO: decomp deprecated in faovur of GfxSurface::decode"); + debugC(1, kMortevielleCore, "TODO: decomp deprecated in faovur of GfxSurface::decode"); } // (* external 'c:\mc\affich.com'; *) -- cgit v1.2.3 From 3caa20a61879e683b834521be0110941ae9dce47 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 16:31:15 +1100 Subject: MORTEVIELLE: Set up default mouse cursor --- engines/mortevielle/mortevielle.cpp | 43 +++++++++++++++++++++++++++++++++---- engines/mortevielle/mortevielle.h | 1 + 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 6797a7e649..97d36e9a34 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -24,6 +24,7 @@ #include "common/debug-channels.h" #include "engines/util.h" #include "engines/engine.h" +#include "graphics/cursorman.h" #include "graphics/palette.h" #include "graphics/pixelformat.h" #include "mortevielle/mortevielle.h" @@ -64,7 +65,17 @@ Common::ErrorCode MortevielleEngine::initialise() { res = 2; // Load the mort.dat resource - return loadMortDat(); + Common::ErrorCode result = loadMortDat(); + if (result != Common::kNoError) + return result; + + // Set default EGA palette + _paletteManager.setDefaultPalette(); + + // Setup the mouse cursor + initMouse(); + + return Common::kNoError; } /** @@ -187,6 +198,33 @@ void MortevielleEngine::addKeypress(Common::Event &evt) { } } +static byte CURSOR_ARROW_DATA[16 * 16] = { + 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x0f, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + +/** + * Initialise the mouse + */ +void MortevielleEngine::initMouse() { + CursorMan.replaceCursor(CURSOR_ARROW_DATA, 16, 16, 0, 0, 0xff); + CursorMan.showMouse(true); +} + /*-------------------------------------------------------------------------*/ Common::Error MortevielleEngine::run() { @@ -195,9 +233,6 @@ Common::Error MortevielleEngine::run() { if (err != Common::kNoError) return err; - // Set default palette - _paletteManager.setDefaultPalette(); - // Dispatch to the game's main routine mortevielle_main(); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index c00561d54d..2ea48c63b8 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -57,6 +57,7 @@ private: void loadFont(Common::File &f); bool handleEvents(); void addKeypress(Common::Event &evt); + void initMouse(); public: ScreenSurface _screenSurface; PaletteManager _paletteManager; -- cgit v1.2.3 From 5c628fedd2a21d4aee5f984dd1a1a4bcfc63024e Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 17:12:14 +1100 Subject: MORTEVIELLE: Expand on the mouse/keyboard handling code --- engines/mortevielle/mortevielle.cpp | 74 +++++++++++++++++++++++++++++++------ engines/mortevielle/mortevielle.h | 5 +++ engines/mortevielle/mouse.cpp | 62 ++++++------------------------- 3 files changed, 79 insertions(+), 62 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 97d36e9a34..0e6db5447f 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -40,6 +40,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g Engine(system), _gameDescription(gameDesc) { g_vm = this; _lastGameFrame = 0; + _mouseButtons = 0; } MortevielleEngine::~MortevielleEngine() { @@ -164,11 +165,19 @@ bool MortevielleEngine::handleEvents() { case Common::EVENT_LBUTTONUP: case Common::EVENT_RBUTTONDOWN: case Common::EVENT_RBUTTONUP: - case Common::EVENT_MBUTTONDOWN: - case Common::EVENT_MBUTTONUP: case Common::EVENT_MOUSEMOVE: + _mousePos = event.mouse; x_s = event.mouse.x; y_s = event.mouse.y; + + if (event.type == Common::EVENT_LBUTTONDOWN) + _mouseButtons |= 1; + else if (event.type == Common::EVENT_LBUTTONUP) + _mouseButtons &= ~1; + else if (event.type == Common::EVENT_RBUTTONDOWN) + _mouseButtons |= 2; + else if (event.type == Common::EVENT_RBUTTONUP) + _mouseButtons &= ~2; break; case Common::EVENT_KEYDOWN: @@ -182,20 +191,57 @@ bool MortevielleEngine::handleEvents() { } /** - * Add the specified key to the event queue + * Add the specified key to the pending keypress stack */ void MortevielleEngine::addKeypress(Common::Event &evt) { - // Check for control keypresses - if (evt.kbd.hasFlags(Common::KBD_CTRL) && (evt.kbd.keycode >= Common::KEYCODE_a) && - (evt.kbd.keycode <= Common::KEYCODE_z)) { - _keypresses.push(evt.kbd.keycode - Common::KEYCODE_a + 1); - return; + // Character to add + char ch = evt.kbd.ascii; + + // Handle alphabetic keys + if ((evt.kbd.keycode >= Common::KEYCODE_a) && (evt.kbd.keycode <= Common::KEYCODE_z)) { + if (evt.kbd.hasFlags(Common::KBD_CTRL)) + ch = evt.kbd.keycode - Common::KEYCODE_a + 1; + else + ch = evt.kbd.keycode - Common::KEYCODE_a + 'A'; + } else if ((evt.kbd.keycode >= Common::KEYCODE_F1) && (evt.kbd.keycode <= Common::KEYCODE_F12)) { + // Handle function keys + ch = 59 + evt.kbd.keycode - Common::KEYCODE_F1; + } else { + // Series of special cases + switch (evt.kbd.keycode) { + case Common::KEYCODE_KP4: + case Common::KEYCODE_LEFT: + ch = '4'; + case Common::KEYCODE_KP2: + case Common::KEYCODE_DOWN: + ch = '2'; + case Common::KEYCODE_KP6: + case Common::KEYCODE_RIGHT: + ch = '6'; + case Common::KEYCODE_KP8: + case Common::KEYCODE_UP: + ch = '8'; + case Common::KEYCODE_KP7: + ch = '7'; + case Common::KEYCODE_KP1: + ch = '1'; + case Common::KEYCODE_KP9: + ch = '9'; + case Common::KEYCODE_KP3: + ch = '3'; + case Common::KEYCODE_KP5: + ch = '5'; + case Common::KEYCODE_RETURN: + ch = '\13'; + case Common::KEYCODE_ESCAPE: + ch = '\33'; + default: + break; + } } - // Handle function keys - if ((evt.kbd.keycode >= Common::KEYCODE_F1) && (evt.kbd.keycode <= Common::KEYCODE_F12)) { - _keypresses.push(59 + evt.kbd.keycode - Common::KEYCODE_F1); - } + if (ch != 0) + _keypresses.push(ch); } static byte CURSOR_ARROW_DATA[16 * 16] = { @@ -225,6 +271,10 @@ void MortevielleEngine::initMouse() { CursorMan.showMouse(true); } +void MortevielleEngine::setMousePos(const Common::Point &pt) { + _mousePos = pt; +} + /*-------------------------------------------------------------------------*/ Common::Error MortevielleEngine::run() { diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 2ea48c63b8..3010ae8664 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -51,6 +51,8 @@ private: const ADGameDescription *_gameDescription; Common::Stack _keypresses; uint32 _lastGameFrame; + int _mouseButtons; + Common::Point _mousePos; Common::ErrorCode initialise(); Common::ErrorCode loadMortDat(); @@ -70,6 +72,9 @@ public: bool keyPressed(); int getChar(); + Common::Point getMousePos() const { return _mousePos; } + void setMousePos(const Common::Point &pt); + int getMouseButtons() const { return _mouseButtons; } }; extern MortevielleEngine *g_vm; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 2fc6e1033b..2ea8434a1c 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -28,6 +28,7 @@ #include "common/endian.h" #include "common/rect.h" #include "mortevielle/mouse.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/var_mor.h" namespace Mortevielle { @@ -271,67 +272,28 @@ void pos_mouse(int x, int y) { if (y > 199) y = 199; else if (y < 0) y = 0; if ((x == x_s) && (y == y_s)) return; - if (int_m) { - { - reg.ax = 4; - reg.cx = x; - reg.dx = y; - } - intr(0x33, reg); - } - hide_mouse(); - x_s = x; - y_s = y; - switch (gd) { - case ams : { - p_o_s = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3) + (y_s & 1) * 0x2000; - } - break; - /*cga : begin - P_O_S:=(Y_S shr 1)*80+X_S shr 2+(Y_S and 1)*$2000; - end;*/ - case ega : { - p_o_s = y_s * 80 + ((uint)x_s >> 3); - } - break; - } /* case Gd */ - show_mouse(); + + // Set the new position + g_vm->setMousePos(Common::Point(x, y)); } void read_pos_mouse(int &x, int &y, int &c) { - registres reg; - - if (int_m) { - reg.ax = 3; - intr(0x33, reg); - x = reg.cx; - y = reg.dx; - c = reg.bx; - } else { - c = 0; - x = x_s; - y = y_s; - } + x = g_vm->getMousePos().x; + y = g_vm->getMousePos().y; + c = g_vm->getMouseButtons(); } void mov_mouse(bool &funct, char &key) { bool p_key; char in1, in2; int x, y, cx, cy, cd; - registres reg; - if (int_m) { - reg.ax = 3; - intr(0x33, reg); - x = reg.cx; - y = reg.dx; - cd = reg.bx; - pos_mouse(x, y); - if (cd != 0) { - clic = true; - return; - } + // If mouse button clicked, return it + if (g_vm->getMouseButtons() != 0) { + clic = true; + return; } + funct = false; key = '\377'; p_key = keypressed(); -- cgit v1.2.3 From 412124baa66628c1d2b6804db0ce748b45e5a4cc Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 17:18:38 +1100 Subject: MORTEVIELLE: Fix compiler warnings and added assert --- engines/mortevielle/graphics.cpp | 1 + engines/mortevielle/mortevielle.h | 1 + engines/mortevielle/mouse.cpp | 4 +--- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 27595992c7..ee9c63228b 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -1011,6 +1011,7 @@ void ScreenSurface::clearScreen() { * simulate the original 640x400 surface, all Y values have to be doubled */ void ScreenSurface::setPixel(const Common::Point &pt, int palIndex) { + assert((pt.x >= 0) && (pt.y >= 0) && (pt.x <= SCREEN_WIDTH) && (pt.y <= SCREEN_ORIG_HEIGHT)); Graphics::Surface destSurface = lockArea(Common::Rect(pt.x, pt.y * 2, pt.x + 1, (pt.y + 1) * 2)); byte *destP = (byte *)destSurface.pixels; diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 3010ae8664..0555f302ab 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -42,6 +42,7 @@ enum { #define SCREEN_WIDTH 640 #define SCREEN_HEIGHT 400 +#define SCREEN_ORIG_HEIGHT 200 #define MORT_DAT_REQUIRED_VERSION 1 #define MORT_DAT "mort.dat" #define GAME_FRAME_DELAY (1000 / 50) diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 2ea8434a1c..04b6c116e0 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -265,8 +265,6 @@ void show_mouse() { } void pos_mouse(int x, int y) { - registres reg; - if (x > 314 * res) x = 314 * res; else if (x < 0) x = 0; if (y > 199) y = 199; @@ -286,7 +284,7 @@ void read_pos_mouse(int &x, int &y, int &c) { void mov_mouse(bool &funct, char &key) { bool p_key; char in1, in2; - int x, y, cx, cy, cd; + int cx, cy, cd; // If mouse button clicked, return it if (g_vm->getMouseButtons() != 0) { -- cgit v1.2.3 From 7d6b859df58f5ac9cf126e50ff5b0c25cd57850a Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 17:22:54 +1100 Subject: MORTEVIELLE: Added explicit quit checks to the main game loops --- engines/mortevielle/mort.cpp | 1 + engines/mortevielle/mouse.cpp | 3 +++ engines/mortevielle/prog.cpp | 3 +++ 3 files changed, 7 insertions(+) diff --git a/engines/mortevielle/mort.cpp b/engines/mortevielle/mort.cpp index fc592f98fe..766ae3c429 100644 --- a/engines/mortevielle/mort.cpp +++ b/engines/mortevielle/mort.cpp @@ -142,6 +142,7 @@ void mortevielle_main() { show_mouse(); do { tjouer(); + CHECK_QUIT; } while (!arret); } diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 04b6c116e0..e79086ed2c 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -295,7 +295,10 @@ void mov_mouse(bool &funct, char &key) { funct = false; key = '\377'; p_key = keypressed(); + while (p_key) { + CHECK_QUIT; + in1 = get_ch(); // input >> kbd >> in1; read_pos_mouse(cx, cy, cd); switch (toupper(in1)) { diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 236e785199..41615219d4 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -30,6 +30,7 @@ #include "mortevielle/menu.h" #include "mortevielle/mor.h" #include "mortevielle/mor2.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/prog.h" #include "mortevielle/taffich.h" #include "mortevielle/var_mor.h" @@ -265,6 +266,7 @@ void tecran() { mdn(); tinke(); mov_mouse(funct, inkey); + CHECK_QUIT; temps = temps + 1; } while (!((choisi) || (temps > lim) || (funct) || (anyone))); @@ -348,6 +350,7 @@ void tjouer() { antegame(); do { tecran(); + CHECK_QUIT; } while (!((arret) || (solu) || (perdu))); if (solu) tmaj1(); else if (perdu) tencore(); -- cgit v1.2.3 From 6c97ac2e4326a1dfb4564a4daa5ba8aa6c7b14fc Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 17:41:50 +1100 Subject: MORTEVIELLE: Correctly handle keyboard keys for moving mouse --- engines/mortevielle/mortevielle.cpp | 35 ++++++++++++++++++++++++++++++++--- engines/mortevielle/mouse.cpp | 14 ++++++++------ 2 files changed, 40 insertions(+), 9 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 0e6db5447f..f3ad46894d 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -155,6 +155,11 @@ int MortevielleEngine::getChar() { return shouldQuit() ? 0 : _keypresses.pop(); } +/** + * Handle pending events + * @remarks Since the ScummVM screen surface is double height to handle 640x200 using 640x400, + * the mouse Y position is divided by 2 to keep the game thinking the Y goes from 0 - 199 + */ bool MortevielleEngine::handleEvents() { Common::Event event; if (!g_system->getEventManager()->pollEvent(event)) @@ -166,9 +171,9 @@ bool MortevielleEngine::handleEvents() { case Common::EVENT_RBUTTONDOWN: case Common::EVENT_RBUTTONUP: case Common::EVENT_MOUSEMOVE: - _mousePos = event.mouse; + _mousePos = Common::Point(event.mouse.x, event.mouse.y / 2); x_s = event.mouse.x; - y_s = event.mouse.y; + y_s = event.mouse.y / 2; if (event.type == Common::EVENT_LBUTTONDOWN) _mouseButtons |= 1; @@ -212,29 +217,40 @@ void MortevielleEngine::addKeypress(Common::Event &evt) { case Common::KEYCODE_KP4: case Common::KEYCODE_LEFT: ch = '4'; + break; case Common::KEYCODE_KP2: case Common::KEYCODE_DOWN: ch = '2'; + break; case Common::KEYCODE_KP6: case Common::KEYCODE_RIGHT: ch = '6'; + break; case Common::KEYCODE_KP8: case Common::KEYCODE_UP: ch = '8'; + break; case Common::KEYCODE_KP7: ch = '7'; + break; case Common::KEYCODE_KP1: ch = '1'; + break; case Common::KEYCODE_KP9: ch = '9'; + break; case Common::KEYCODE_KP3: ch = '3'; + break; case Common::KEYCODE_KP5: ch = '5'; + break; case Common::KEYCODE_RETURN: ch = '\13'; + break; case Common::KEYCODE_ESCAPE: ch = '\33'; + break; default: break; } @@ -271,8 +287,21 @@ void MortevielleEngine::initMouse() { CursorMan.showMouse(true); } +/** + * Sets the mouse position + * @remarks Since the ScummVM screen surface is double height to handle 640x200 using 640x400, + * the mouse Y position is doubled to convert from 0-199 to 0-399 + */ void MortevielleEngine::setMousePos(const Common::Point &pt) { - _mousePos = pt; + // Adjust the passed position from simulated 640x200 to 640x400 co-ordinates + Common::Point newPoint(pt.x, (pt.y == 199) ? 399 : pt.y * 2); + + if (newPoint != _mousePos) + // Warp the mouse to the new position + g_system->warpMouse(newPoint.x, newPoint.y); + + // Save the new position + _mousePos = newPoint; } /*-------------------------------------------------------------------------*/ diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index e79086ed2c..2e945287ba 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -286,20 +286,22 @@ void mov_mouse(bool &funct, char &key) { char in1, in2; int cx, cy, cd; + // Set defaults and check pending events + funct = false; + key = '\377'; + p_key = keypressed(); + // If mouse button clicked, return it if (g_vm->getMouseButtons() != 0) { clic = true; return; } - funct = false; - key = '\377'; - p_key = keypressed(); - + // Handle any pending keypresses while (p_key) { CHECK_QUIT; - in1 = get_ch(); // input >> kbd >> in1; + in1 = get_ch(); read_pos_mouse(cx, cy, cd); switch (toupper(in1)) { case '4' : @@ -349,7 +351,7 @@ void mov_mouse(bool &funct, char &key) { p_key = keypressed(); if (p_key) { - in2 = get_ch(); // input >> kbd >> in2; + in2 = get_ch(); if ((in2 >= ';') && (in2 <= 'D')) { funct = true; -- cgit v1.2.3 From e9b10db262f76b1b8486bd96d7a3010cb08e3b45 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 19:11:07 +1100 Subject: MORTEVIELLE: Fix display of action tabs --- engines/mortevielle/menu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 2a055767f2..8c6561e097 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -160,7 +160,7 @@ void menu_aff() { do { /* ligne par ligne */ msk = 0x80; for (pt = 0; pt <= 7; pt ++) { - if ((lettres[num_letr][ind_tabl] & msk) != 0) { + if ((lettres[num_letr - 1][ind_tabl] & msk) != 0) { putpix(gd, x + 1, y + 1, 0); putpix(gd, x, y + 1, 0); putpix(gd, x, y, color); -- cgit v1.2.3 From 9a79a5e059812c50d35b27139950bac38b8eb3fd Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 20:24:57 +1100 Subject: MORTEVIELLE: Formatting fixes for game menu display --- engines/mortevielle/menu.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 8c6561e097..a43372063e 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -51,7 +51,7 @@ namespace Mortevielle { clrscr; mortevielle_exit(0); } - while (s.size() < 30) s = s + ' '; + while (s.size() < 20) s = s + ' '; switch (h) { case invent : if (l != 7) { @@ -83,22 +83,22 @@ namespace Mortevielle { switch (h) { case invent : { if (l > 6) { - inv[l].setChar('<', 1); - inv[l].setChar('>', 22); + inv[l].setChar('<', 0); + inv[l].setChar('>', 21); } else inv[l].setChar('*', 1); } break; case depla : - dep[l].setChar('*', 1); + dep[l].setChar('*', 0); break; case action : - act[l].setChar('*', 1); + act[l].setChar('*', 0); break; case saction : - self_[l].setChar('*', 1); + self_[l].setChar('*', 0); break; case discut : - dis[l].setChar('*', 1); + dis[l].setChar('*', 0); break; } } @@ -111,23 +111,23 @@ namespace Mortevielle { l = lo(no); switch (h) { case invent : { - inv[l].setChar(' ', 1); - inv[l].setChar(' ', 22); + inv[l].setChar(' ', 0); + inv[l].setChar(' ', 21); } break; case depla : - dep[l].setChar(' ', 1); + dep[l].setChar(' ', 0); break; case action : - act[l].setChar(' ', 1); + act[l].setChar(' ', 0); break; case saction : { - self_[l].setChar(' ', 1); - self_[l].setChar(' ', 1); + self_[l].setChar(' ', 0); + self_[l].setChar(' ', 0); } break; case discut : - dis[l].setChar(' ', 1); + dis[l].setChar(' ', 0); break; } } -- cgit v1.2.3 From 1017159802176ad449dbf6d1eaa4ab3ad61ddbb8 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 20:51:59 +1100 Subject: MORTEVIELLE: More game menu formatting fixes --- engines/mortevielle/mor2.cpp | 2 +- engines/mortevielle/ovd1.cpp | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 2f0793643c..4b8a9ae25a 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -218,7 +218,7 @@ void tmlieu(int mli) { cx = v_lieu[i][mli]; deline(cx + c_tmlieu, st, tail); nomp = delig; - while (nomp.size() < 30) nomp = nomp + ' '; + while (nomp.size() < 20) nomp = nomp + ' '; menut(depl[i], nomp); i = i + 1; } diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index d6713908dc..f01937667a 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -116,11 +116,16 @@ void ani50() { i = 1; do { deline(i + c_action, st, tai); - act[i] = delig + " "; + act[i] = delig; + while (act[i].size() < 10) + act[i] += ' '; + if (i < 9) { if (i < 6) { deline(i + c_saction, st, tai); - self_[i] = delig + " "; + self_[i] = delig; + while (self_[i].size() < 10) + self_[i] += ' '; } deline(i + c_dis, st, tai); dis[i] = delig + ' '; -- cgit v1.2.3 From f5af2b407c12c39d7e0855413fb1fb2ce7dff354 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 22:13:36 +1100 Subject: MORTEVIELLE: Restore background area when a menu is removed --- engines/mortevielle/menu.cpp | 18 ++++++++++++++++++ engines/mortevielle/mortevielle.h | 1 + engines/mortevielle/var_mor.cpp | 15 +++++++++------ 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index a43372063e..11c7c34b00 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -30,6 +30,7 @@ #include "common/textconsole.h" #include "mortevielle/level15.h" #include "mortevielle/menu.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/sprint.h" #include "mortevielle/var_mor.h" @@ -255,6 +256,11 @@ void menu_down(int ii) { int xco, nb_lig; /* debug('menu_down'); */ + + // Make a copy of the current screen surface for later restore + g_vm->_backgroundSurface.copyFrom(g_vm->_screenSurface); + + // Draw the menu xco = don[ii][1]; nb_lig = don[ii][4]; hide_mouse(); @@ -307,6 +313,18 @@ void menu_up(int xx) { /* debug('menu_up'); */ if (test0) { charecr(10, succ(byte, don[xx][2]) << 1); + + /* Restore the background area */ + assert(g_vm->_screenSurface.pitch == g_vm->_backgroundSurface.pitch); + + // Get a pointer to the source and destination of the area to restore + const byte *pSrc = (const byte *)g_vm->_backgroundSurface.getBasePtr(0, 10); + Graphics::Surface destArea = g_vm->_screenSurface.lockArea(Common::Rect(0, 10, SCREEN_WIDTH, SCREEN_HEIGHT)); + byte *pDest = (byte *)destArea.getBasePtr(0, 0); + + // Copy the data + Common::copy(pSrc, pSrc + (400 - 10) * SCREEN_WIDTH, pDest); + test0 = false; } } diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 0555f302ab..9974d1c40e 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -64,6 +64,7 @@ private: public: ScreenSurface _screenSurface; PaletteManager _paletteManager; + GfxSurface _backgroundSurface; public: MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc); ~MortevielleEngine(); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 9de3d94137..444d9c6d5d 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -319,8 +319,16 @@ char get_ch() { return g_vm->getChar(); } +/** + * Restore a screen sectio + */ +void s_sauv(int Gd, int y, int dy) { + // Note: May no longer be necessary, since the backgorund restore code + // is being handled slightly differently now in the menu_up() method +} + void palette(int v1) { - warning("TODO: s_sauv"); + warning("TODO: palette"); } // (* external 'c:\mc\charecr.com'; *) @@ -328,11 +336,6 @@ void s_char(int Gd, int y, int dy) { warning("TODO: s_char"); } -// (* external 'c:\mc\sauvecr.com'; *) -void s_sauv(int Gd, int y, int dy) { - warning("TODO: s_sauv"); -} - // (* external 'c:\mc\boite.com'; *) void box(int c, int Gd, int xo, int yo, int xi, int yi, int patt) { debugC(1, kMortevielleCore, "TODO: box deprecated in favour of GfxSurface::fillBox"); -- cgit v1.2.3 From 84ef8f5a7f8b5f35e105ed908d96c56d9d17f2d9 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 22:28:13 +1100 Subject: MORTEVIELLE: Formatting fix for savegame list --- engines/mortevielle/menu.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 11c7c34b00..b14aacf4fa 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -295,12 +295,22 @@ void menu_down(int ii) { case 6 : writeg(fic[cx], 4); break; - case 7 : - writeg(fic[1] + ' ' + chr(48 + cx), 4); + case 7 : { + Common::String s = fic[1]; + s += ' '; + s += (char)(48 + cx); + writeg(s, 4); break; + } case 8 : - if (cx == 1) writeg(recom, 4); - else writeg(fic[2] + ' ' + chr(47 + cx), 4); + if (cx == 1) + writeg(recom, 4); + else { + Common::String s = fic[2]; + s += ' '; + s += (char)(47 + cx); + writeg(s, 4); + } break; } putxy(xco, ywhere + 8); -- cgit v1.2.3 From 6ee67ca7b7ba1e747df7c5a4be6a1051ef1a12a6 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 22:44:38 +1100 Subject: MORTEVIELLE: Remove old drive boot sector read code in game startup. I presume that this may have been part of original game copy protection. --- engines/mortevielle/prog.cpp | 39 +++++++++------------------------------ 1 file changed, 9 insertions(+), 30 deletions(-) diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 41615219d4..41d72b5ee0 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -58,9 +58,7 @@ namespace Mortevielle { } /* overlay */ void antegame() { - registres regs; - char buffer[512]; - int i, j, k; + int k; bool test[3]; char g[8]; @@ -107,33 +105,14 @@ namespace Mortevielle { affrep(); stpou = ind_mess; while ((test[k] == false) && (k < 2)) { - regs.ax = 0; - k = succ(int, k); - intr(19, regs); - { - regs.ax = 0x201; - regs.cx = 0x1; - regs.dx = 0x100 + k - 1; - //regs.es = seg(buffer); - //regs.bx = ofs(buffer); - intr(19, regs); - test[k] = ! imen; - i = 0; - while ((test[k]) && (i < 19)) { - regs.ax = 0x201; - syn = false; - regs.cx = 0x2700 + i; - regs.dx = 0x100 + k - 1; - //regs.es = seg(buffer); - //regs.bx = ofs(buffer); - intr(19, regs); - if (lo(regs.flags) % 2 == 1) test[k] = false; - i = i + 1; - } - okdes = false; - solu = true; - for (j = 0; j <= 7; j ++) if (buffer[j + 504] != g[j]) test[k] = false; - } + ++k; + + // Original read in the boot sector here of each drive and did some calculations - + // presumably for copy protection. This has been replaced with hardcoded success + test[k] = true; + + okdes = false; + solu = true; perdu = false; fouil = false; } -- cgit v1.2.3 From 962069f9371317b61a12e87b2618d75f98e43f91 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 22:56:56 +1100 Subject: MORTEVIELLE: Fix conversion of string to integer in room changes --- engines/mortevielle/alert.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index 804e0f41f0..36170361c3 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -50,7 +50,7 @@ static void decod(Common::String s, int &nbc, int &nbl, int &col, Common::String bool v; //val(s[2], nbc, i); - sscanf(s.c_str() + 1, "%d", nbc); + nbc = atoi(s.c_str() + 1); i = 0; c = ""; -- cgit v1.2.3 From 37386cdf7ce39f7241dc21fd3bf3db7d3c60e14d Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 20 Jan 2012 23:08:35 +1100 Subject: MORTEVIELLE: Properly implement get_random_number method --- engines/mortevielle/mortevielle.cpp | 2 +- engines/mortevielle/mortevielle.h | 2 ++ engines/mortevielle/var_mor.cpp | 6 ++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index f3ad46894d..bdb5b710c8 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -37,7 +37,7 @@ namespace Mortevielle { MortevielleEngine *g_vm; MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc): - Engine(system), _gameDescription(gameDesc) { + Engine(system), _gameDescription(gameDesc), _randomSource("mortevielle") { g_vm = this; _lastGameFrame = 0; _mouseButtons = 0; diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 9974d1c40e..b0e7343d0e 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -25,6 +25,7 @@ #include "common/events.h" #include "common/file.h" +#include "common/random.h" #include "common/rect.h" #include "common/stack.h" #include "engines/advancedDetector.h" @@ -65,6 +66,7 @@ public: ScreenSurface _screenSurface; PaletteManager _paletteManager; GfxSurface _backgroundSurface; + Common::RandomSource _randomSource; public: MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc); ~MortevielleEngine(); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 444d9c6d5d..92f20a4442 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -307,9 +307,11 @@ void graphbackground(int c) { void intr(int intNum, registres ®s) { } +/** + * Get a random number between two values + */ int get_random_number(int minval, int maxval) { - // TODO: Replace with a proper random source in the engine - return minval; + return g_vm->_randomSource.getRandomNumber(maxval - minval) + minval; } bool keypressed() { -- cgit v1.2.3 From 35b502612bebeec8007385f6eb1496b5755b4f31 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 21 Jan 2012 09:24:24 +1100 Subject: MORTEVIELLE: Added missing variable to savegame synchronization --- engines/mortevielle/disk.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/engines/mortevielle/disk.cpp b/engines/mortevielle/disk.cpp index 41868d42fa..a22c8f4bb0 100644 --- a/engines/mortevielle/disk.cpp +++ b/engines/mortevielle/disk.cpp @@ -62,6 +62,9 @@ void dem1() { */ } +/** + * Handle saving or loading savegame data + */ static void sync_save(Common::Serializer &sz) { sz.syncAsSint16LE(s1.conf); sz.syncBytes((byte *)&s1.pourc[0], 11); @@ -78,6 +81,8 @@ static void sync_save(Common::Serializer &sz) { sz.syncAsSint16LE(s1.icryp); sz.syncAsSint16LE(s1.ipre); sz.syncAsSint16LE(s1.heure); + + sz.syncBytes(bufcha, 390); } void takesav(int n) { -- cgit v1.2.3 From 90e076a36a25e79262848d0820f04d4fe1e5cc8f Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 21 Jan 2012 20:06:08 +1100 Subject: MORTEVIELLE: Merge the _mouseButtons and clic variables The original separate implementation was causing problems with the mouse click variable remaining set too long. --- engines/mortevielle/actions.cpp | 5 +++-- engines/mortevielle/alert.cpp | 7 ++++--- engines/mortevielle/graphics.cpp | 2 +- engines/mortevielle/menu.cpp | 19 ++++++++++++------- engines/mortevielle/mor2.cpp | 5 +++-- engines/mortevielle/mortevielle.cpp | 12 +++--------- engines/mortevielle/mortevielle.h | 5 +++-- engines/mortevielle/mouse.cpp | 10 ++++------ engines/mortevielle/mouse.h | 2 +- engines/mortevielle/ovd1.cpp | 3 ++- engines/mortevielle/ques.cpp | 5 +++-- 11 files changed, 39 insertions(+), 36 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 81042c4ce2..9c1a6b738c 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -32,6 +32,7 @@ #include "mortevielle/menu.h" #include "mortevielle/mor.h" #include "mortevielle/mor2.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/ques.h" @@ -1094,8 +1095,8 @@ L2: } else choi = 0; } } - } while (!((tou == '\15') || (((c != 0) || clic) && (choi != 0)))); - clic = false; + } while (!((tou == '\15') || (((c != 0) || g_vm->getMouseClick()) && (choi != 0)))); + g_vm->setMouseClick(false); if (choi != 46) { ix = choi - 1; if (col) { diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index 36170361c3..6a380b2155 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -28,6 +28,7 @@ #include "common/str.h" #include "mortevielle/alert.h" #include "mortevielle/level15.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/sprint.h" @@ -150,7 +151,7 @@ int do_alert(Common::String str_, int n) { while (keypressed()) dumi = get_ch(); // input >> kbd >> dumi; - clic = false; + g_vm->setMouseClick(false); decod(str_, nbcase, nblig, nbcol, chaine, cas); sauvecr(50, succ(int, nligne) << 4); @@ -242,8 +243,8 @@ int do_alert(Common::String str_, int n) { } test3 = (cy > 95) && (cy < 105) && (((cx > limit[1][1]) && (cx < limit[1][2])) || ((cx > limit[2][1]) && (cx < limit[2][2]))); - } while (!clic); - clic = false; + } while (!g_vm->getMouseClick()); + g_vm->setMouseClick(false); hide_mouse(); if (! test3) { quoi = n; diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index ee9c63228b..034a60c505 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -79,7 +79,7 @@ void PaletteManager::setDefaultPalette() { #define INCR_TAIX { if (_xSize & 1) ++_xSize; } #define DEFAULT_WIDTH (SCREEN_WIDTH / 2) -#define BUFFER_SIZE 8192 +#define BUFFER_SIZE 40000 void GfxSurface::decode(const byte *pSrc) { _width = _height = 0; diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index b14aacf4fa..f24062a000 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -187,7 +187,7 @@ void draw_menu() { msg4 = no_choice; msg3 = no_choice; choisi = false; - clic = false; + g_vm->setMouseClick(false); test0 = false; } @@ -342,7 +342,7 @@ void menu_up(int xx) { void erase_menu() { /* debug('erase_menu'); */ active_menu = false; - clic = false; + g_vm->setMouseClick(false); menu_up(msg3); } @@ -355,7 +355,7 @@ void mdn() { if (! active_menu) return; x = x_s; y = y_s; - if (! clic) { + if (!g_vm->getMouseClick()) { if ((x == xprec) && (y == yprec)) return; else { @@ -385,21 +385,26 @@ void mdn() { } else { /* Not in the MenuTitle line */ if ((y > 11) && (test0)) util(x, y); } - } else /* il y a eu 'clic' */ + } else /* There was a click */ if ((msg3 == fichier) && (msg4 != no_choice)) { - clic = false; + // Another menu to be displayed + g_vm->setMouseClick(false); menu_up(msg3); if (lo(msg4) == 1) msg3 = 7; else msg3 = 8; menu_down(msg3); - } else { /* il y a eu clic sur un autre menu */ + + g_vm->setMouseClick(false); + } else { + // A menu was clicked on choisi = (test0) && (msg4 != no_choice); menu_up(msg3); msg[4] = msg4; msg[3] = msg3; msg3 = no_choice; msg4 = no_choice; - clic = false; + + g_vm->setMouseClick(false); } } diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 4b8a9ae25a..1c27ef3f04 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -202,7 +202,7 @@ void tkey1(bool d) { read_pos_mouse(x, y, c); } while (!(quest || (c != 0) || (d && anyone))); if (quest) key = testou(); - clic = false; + g_vm->setMouseClick(false); show_mouse(); } @@ -628,7 +628,8 @@ void tfleche() { do { mov_mouse(qust, touch); - if (clic) rect = (x_s < 256 * res) && (y_s < 176) && (y_s > 12); + if (g_vm->getMouseClick()) + rect = (x_s < 256 * res) && (y_s < 176) && (y_s > 12); tinke(); } while (!(qust || rect || anyone)); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index bdb5b710c8..88a3ecd9e5 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -40,7 +40,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g Engine(system), _gameDescription(gameDesc), _randomSource("mortevielle") { g_vm = this; _lastGameFrame = 0; - _mouseButtons = 0; + _mouseClick = false; } MortevielleEngine::~MortevielleEngine() { @@ -168,21 +168,15 @@ bool MortevielleEngine::handleEvents() { switch (event.type) { case Common::EVENT_LBUTTONDOWN: case Common::EVENT_LBUTTONUP: - case Common::EVENT_RBUTTONDOWN: - case Common::EVENT_RBUTTONUP: case Common::EVENT_MOUSEMOVE: _mousePos = Common::Point(event.mouse.x, event.mouse.y / 2); x_s = event.mouse.x; y_s = event.mouse.y / 2; if (event.type == Common::EVENT_LBUTTONDOWN) - _mouseButtons |= 1; + _mouseClick = true; else if (event.type == Common::EVENT_LBUTTONUP) - _mouseButtons &= ~1; - else if (event.type == Common::EVENT_RBUTTONDOWN) - _mouseButtons |= 2; - else if (event.type == Common::EVENT_RBUTTONUP) - _mouseButtons &= ~2; + _mouseClick = false; break; case Common::EVENT_KEYDOWN: diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index b0e7343d0e..4c755a1f5e 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -53,7 +53,7 @@ private: const ADGameDescription *_gameDescription; Common::Stack _keypresses; uint32 _lastGameFrame; - int _mouseButtons; + bool _mouseClick; Common::Point _mousePos; Common::ErrorCode initialise(); @@ -78,7 +78,8 @@ public: int getChar(); Common::Point getMousePos() const { return _mousePos; } void setMousePos(const Common::Point &pt); - int getMouseButtons() const { return _mouseButtons; } + bool getMouseClick() const { return _mouseClick; } + void setMouseClick(bool v) { _mouseClick = v; } }; extern MortevielleEngine *g_vm; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 2e945287ba..98429cc04e 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -57,7 +57,7 @@ void init_mouse() { y_s = 0; p_o_s = 0; /*int_m:= False;*/ - clic = false; + g_vm->setMouseClick(false); m_show = m_arrow; if ((READ_LE_UINT16(&mem[0xcc]) == 0) && (READ_LE_UINT16(&mem[0xce]) == 0)) int_m = false; if (int_m) { @@ -278,7 +278,7 @@ void pos_mouse(int x, int y) { void read_pos_mouse(int &x, int &y, int &c) { x = g_vm->getMousePos().x; y = g_vm->getMousePos().y; - c = g_vm->getMouseButtons(); + c = g_vm->getMouseClick() ? 1 : 0; } void mov_mouse(bool &funct, char &key) { @@ -292,10 +292,8 @@ void mov_mouse(bool &funct, char &key) { p_key = keypressed(); // If mouse button clicked, return it - if (g_vm->getMouseButtons() != 0) { - clic = true; + if (g_vm->getMouseClick()) return; - } // Handle any pending keypresses while (p_key) { @@ -343,7 +341,7 @@ void mov_mouse(bool &funct, char &key) { break; case ' ': case '\15' : { - clic = true; + g_vm->setMouseClick(true); return; } break; diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index a981d521ac..32fba0420f 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -30,7 +30,7 @@ namespace Mortevielle { -extern bool clic, int_m; +extern bool int_m; extern int m_show, x_s, diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index f01937667a..283756948c 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -31,6 +31,7 @@ #include "mortevielle/level15.h" #include "mortevielle/menu.h" #include "mortevielle/mor.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/ovd1.h" @@ -142,7 +143,7 @@ void ani50() { msg4 = no_choice; msg[3] = no_choice; msg[4] = no_choice; - clic = false; + g_vm->setMouseClick(false); } diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index c9154acc59..e7ae1b30ec 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -28,6 +28,7 @@ #include "common/str.h" #include "mortevielle/boite.h" #include "mortevielle/level15.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/ques.h" @@ -105,7 +106,7 @@ namespace Mortevielle { j = 0; memk = 0; do { - clic = false; + g_vm->setMouseClick(false); tesok = false; mov_mouse(func, key); k = 1; @@ -130,7 +131,7 @@ namespace Mortevielle { afftex(st, 100, 27 + memk * 8, 100, 1, 0); memk = 0; } - } while (!((memk != 0) && clic)); + } while (!((memk != 0) && g_vm->getMouseClick())); if (memk == ok[i]) compte = compte + 1; else { if (i == 5) i = i + 1; -- cgit v1.2.3 From 3fa59e95199002ec4ed6e4285be4f7234c257da0 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 21 Jan 2012 20:47:08 +1100 Subject: MORTEVIELLE: Bugfix for image block decoding method #0 --- engines/mortevielle/graphics.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 034a60c505..3683afc57b 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -129,6 +129,7 @@ void GfxSurface::decode(const byte *pSrc) { int srcSize = READ_BE_UINT16(pSrc + 2); _xp = READ_BE_UINT16(pSrc + 4) - _offset.x; _yp = READ_BE_UINT16(pSrc + 6) - _offset.y; + assert((_xp >= 0) && (_yp >= 0) && (_xp < SCREEN_WIDTH) && (_yp < SCREEN_ORIG_HEIGHT)); pSrc += 8; int decomCode = READ_BE_UINT16(pSrc); @@ -242,7 +243,7 @@ void GfxSurface::decode(const byte *pSrc) { } } - pSrc = pSrcStart + lookupBytes + ((lookupBytes & 1) ? 1 : 0); + pSrcStart += lookupBytes + ((lookupBytes & 1) ? 1 : 0); break; case 1: @@ -399,6 +400,9 @@ void GfxSurface::decode(const byte *pSrc) { _xEnd = _xSize; diag(pSrc, pDest, pLookup); break; + + default: + error("Unknown decompression block type %d", decomIndex); } pSrc = pSrcStart; -- cgit v1.2.3 From e578c4d6480d310de77aea0a4415faa9fc67be0b Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 21 Jan 2012 21:22:33 +1100 Subject: MORTEVIELLE: Fix for displaying savegame menus correctly --- engines/mortevielle/menu.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index f24062a000..819a2e7c55 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -217,15 +217,24 @@ void invers(int ix) { s = fic[lo(msg4)]; break; case 7 : - s = fic[1] + ' ' + chr(48 + lo(msg4)); + s = fic[1]; + s += ' '; + s += (char)(48 + lo(msg4)); break; case 8 : - if (lo(msg4) == 1) s = recom; - else s = fic[2] + ' ' + chr(47 + lo(msg4)); + if (lo(msg4) == 1) { + s = recom; + } else { + s = fic[2]; + s += ' '; + s += (char)(47 + lo(msg4)); + } break; } - if ((s[1] != '*') && (s[1] != '<')) writeg(s, ix); - else msg4 = no_choice; + if ((s[1] != '*') && (s[1] != '<')) + writeg(s, ix); + else + msg4 = no_choice; } void util(int x, int y) { -- cgit v1.2.3 From 6205e89e501e2ddd67e6eabe864637faef7023c2 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 21 Jan 2012 21:27:50 +1100 Subject: MORTEVIELLE: Fix some string indexing --- engines/mortevielle/menu.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 819a2e7c55..dc9e7e0e15 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -231,7 +231,7 @@ void invers(int ix) { } break; } - if ((s[1] != '*') && (s[1] != '<')) + if ((s[0] != '*') && (s[0] != '<')) writeg(s, ix); else msg4 = no_choice; @@ -287,19 +287,19 @@ void menu_down(int ii) { cx = succ(int, cx); switch (ii) { case 1 : - if (inv[cx][1] != '*') writeg(inv[cx], 4); + if (inv[cx][0] != '*') writeg(inv[cx], 4); break; case 2 : - if (dep[cx][1] != '*') writeg(dep[cx], 4); + if (dep[cx][0] != '*') writeg(dep[cx], 4); break; case 3 : - if (act[cx][1] != '*') writeg(act[cx], 4); + if (act[cx][0] != '*') writeg(act[cx], 4); break; case 4 : - if (self_[cx][1] != '*') writeg(self_[cx], 4); + if (self_[cx][0] != '*') writeg(self_[cx], 4); break; case 5 : - if (dis[cx][1] != '*') writeg(dis[cx], 4); + if (dis[cx][0] != '*') writeg(dis[cx], 4); break; case 6 : writeg(fic[cx], 4); -- cgit v1.2.3 From 73834c756354501dc6ccb982e6d228929ee8a6ce Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 21 Jan 2012 21:49:58 +1100 Subject: MORTEVIELLE: Changed readclock() method to use ScummVM functionality --- engines/mortevielle/mor.cpp | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 373a80029a..17dd83a7ee 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -27,6 +27,7 @@ #include "common/endian.h" #include "common/str.h" +#include "common/system.h" #include "common/textconsole.h" #include "mortevielle/alert.h" #include "mortevielle/boite.h" @@ -55,24 +56,19 @@ void testfi() { } } - +/** + * Read the current system time + */ int readclock() { - registres r; - int s, m, h; + int m, h; /* debug('readclock');*/ - int readclock_result; - r.ax = 0x2c00; - intr(0x21, r); - { - h = (uint)r.cx >> 8; - m = r.cx % 256; - s = (uint)r.dx >> 8; - } - m = m * 60; - h = h * 3600; - readclock_result = h + m + s; - return readclock_result; + TimeDate dateTime; + g_system->getTimeAndDate(dateTime); + + m = dateTime.tm_min * 60; + h = dateTime.tm_hour * 3600; + return h + m + dateTime.tm_sec; } void modif(int &nu) { -- cgit v1.2.3 From e9f59153dbd47a83fdd3b305b6dfb6b1378823be Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 21 Jan 2012 22:34:42 +1100 Subject: MORTEVIELLE: Correct synchronisation of savegame data --- engines/mortevielle/disk.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/disk.cpp b/engines/mortevielle/disk.cpp index a22c8f4bb0..e7c9801f4b 100644 --- a/engines/mortevielle/disk.cpp +++ b/engines/mortevielle/disk.cpp @@ -79,8 +79,8 @@ static void sync_save(Common::Serializer &sz) { sz.syncAsSint16LE(s1.derobj); sz.syncAsSint16LE(s1.iloic); sz.syncAsSint16LE(s1.icryp); - sz.syncAsSint16LE(s1.ipre); - sz.syncAsSint16LE(s1.heure); + sz.syncAsByte(s1.ipre); + sz.syncAsByte(s1.heure); sz.syncBytes(bufcha, 390); } -- cgit v1.2.3 From e4a9586d74bb9c4ec8add26b63adf2a6ebe27d14 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 21 Jan 2012 22:38:23 +1100 Subject: MORTEVIELLE: Change float parameters in chardes/charani to int32 The original used this to handle 32-bit values. So it's cleaner to use int32 explicitly. --- engines/mortevielle/taffich.cpp | 10 +++++----- engines/mortevielle/taffich.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 77733b8829..55fdbb7442 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -35,7 +35,7 @@ namespace Mortevielle { -void chardes(Common::String nom, float passe, int long_) { +void chardes(Common::String nom, int32 passe, int long_) { int i, p, l; // byte b; Common::File f; @@ -52,7 +52,7 @@ void chardes(Common::String nom, float passe, int long_) { } if (p != 0) f.seek(p * 0x80); - p = abs((int)passe); + p = abs(passe); l = long_ + p; i = 0; while (l > 0) { @@ -68,7 +68,7 @@ void chardes(Common::String nom, float passe, int long_) { /*$i+*/ } -void charani(Common::String nom, float passe, int long_) { +void charani(Common::String nom, int32 passe, int long_) { int i, p, l; // byte b; Common::File f; @@ -86,7 +86,7 @@ void charani(Common::String nom, float passe, int long_) { if (p != 0) f.seek(p * 0x80); - p = abs((int)passe); + p = abs(passe); l = long_ + p; i = 0; while (l > 0) { @@ -106,7 +106,7 @@ void taffich() { int i, m, a, b, cx, handle, npal; - float lgt; + int32 lgt; Common::String nom; int palh, k, j; int alllum[16]; diff --git a/engines/mortevielle/taffich.h b/engines/mortevielle/taffich.h index bea3c09f2a..a6acce21eb 100644 --- a/engines/mortevielle/taffich.h +++ b/engines/mortevielle/taffich.h @@ -32,8 +32,8 @@ namespace Mortevielle { -extern void chardes(Common::String nom, float passe, int long_); -extern void charani(Common::String nom, float passe, int long_); +extern void chardes(Common::String nom, int32 passe, int long_); +extern void charani(Common::String nom, int32 passe, int long_); extern void taffich(); } // End of namespace Mortevielle -- cgit v1.2.3 From 5fb491070e8ac80e2bb8601c664ad5d22be97c1a Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 21 Jan 2012 23:40:01 +1100 Subject: MORTEVIELLE: Bugfixes for saving/loading savegames --- engines/mortevielle/disk.cpp | 2 +- engines/mortevielle/prog.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/engines/mortevielle/disk.cpp b/engines/mortevielle/disk.cpp index e7c9801f4b..25bf7faca3 100644 --- a/engines/mortevielle/disk.cpp +++ b/engines/mortevielle/disk.cpp @@ -82,7 +82,7 @@ static void sync_save(Common::Serializer &sz) { sz.syncAsByte(s1.ipre); sz.syncAsByte(s1.heure); - sz.syncBytes(bufcha, 390); + sz.syncBytes(bufcha, 391); } void takesav(int n) { diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 41d72b5ee0..5f2fd3cb65 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -255,8 +255,10 @@ void tecran() { change_gd((uint)pred(int, ord(inkey)) >> 1); return; } - if (choisi && (msg[3] == sauve)) sv_game(msg[4] & 7); - if (choisi && (msg[3] == charge)) ld_game(pred(int, msg[4] & 7)); + if (choisi && (msg[3] == sauve)) + sv_game(msg[4] & 7); + if (choisi && (msg[3] == charge)) + ld_game((msg[4] & 7) - 1); if (inkey == '\103') { /* F9 */ temps = do_alert(stpou, 1); return; -- cgit v1.2.3 From 9ae61553d4c5fab40b025824072b250770cb5b2b Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 22 Jan 2012 08:13:45 +1100 Subject: MORTEVIELLE: Visual fix for the inventory menu --- engines/mortevielle/menu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index dc9e7e0e15..9c50777cec 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -86,7 +86,7 @@ namespace Mortevielle { if (l > 6) { inv[l].setChar('<', 0); inv[l].setChar('>', 21); - } else inv[l].setChar('*', 1); + } else inv[l].setChar('*', 0); } break; case depla : -- cgit v1.2.3 From 85b7c1cef73a5a64e99c8e6405c8ccbd7630cf41 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 22 Jan 2012 08:25:00 +1100 Subject: MORTEVIELLE: Add extra parenthesis to defines for operation safety --- engines/mortevielle/var_mor.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index a96329f477..89f05f121e 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -61,14 +61,14 @@ namespace Mortevielle { /*------------------------- DEFINES ----------------------------------*/ /*---------------------------------------------------------------------------*/ -#define pred(type, v) (v - 1) -#define succ(type, v) (v + 1) +#define pred(type, v) ((v) - 1) +#define succ(type, v) ((v) + 1) #define ord(v) ((int) v) #define chr(v) ((char) v) -#define lo(v) (v & 0xff) -#define hi(v) ((v >> 8) & 0xff) +#define lo(v) ((v) & 0xff) +#define hi(v) (((v) >> 8) & 0xff) #define swap(v) (((lo(v)) << 8) | ((hi(v)) >> 8)) -#define odd(v) ((v % 2) == 1) +#define odd(v) (((v) % 2) == 1) /*---------------------------------------------------------------------------*/ /*------------------------- CONSTANTS ----------------------------------*/ -- cgit v1.2.3 From f875622ef63ab86ba248ada0c917bd6b97c80736 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 22 Jan 2012 08:50:44 +1100 Subject: MORTEVIELLE: Fix sizes of several arrays --- engines/mortevielle/var_mor.cpp | 14 +++++++------- engines/mortevielle/var_mor.h | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 92f20a4442..34dc742144 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -199,18 +199,18 @@ Common::String al_mess, ind_mess, al_mess2; -int invt[8]; -int nbrep[8]; -int nbrepm[8]; -int disc[8]; +int invt[9]; +int nbrep[9]; +int nbrepm[9]; +int disc[9]; int msg[5]; -int depl[7]; +int depl[8]; Common::String inv[9]; Common::String dep[8]; Common::String act[22]; -Common::String self_[6]; +Common::String self_[7]; Common::String dis[9]; -char touv[7]; +char touv[8]; sav_chaine s, s1; byte bufcha[391]; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 89f05f121e..642ecefb2b 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -367,18 +367,18 @@ extern Common::String al_mess, ind_mess, al_mess2; -extern int invt[8]; -extern int nbrep[8]; -extern int nbrepm[8]; -extern int disc[8]; +extern int invt[9]; +extern int nbrep[9]; +extern int nbrepm[9]; +extern int disc[9]; extern int msg[5]; -extern int depl[7]; +extern int depl[8]; extern Common::String inv[9]; extern Common::String dep[8]; extern Common::String act[22]; -extern Common::String self_[6]; +extern Common::String self_[7]; extern Common::String dis[9]; -extern char touv[7]; +extern char touv[8]; extern sav_chaine s, s1; extern byte bufcha[391]; -- cgit v1.2.3 From 02f2088d43adc2514895fd845bc9dce17fd1a36b Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 22 Jan 2012 09:16:41 +1100 Subject: MORTEVIELLE: Added extra quit checks to event loops --- engines/mortevielle/actions.cpp | 2 ++ engines/mortevielle/alert.cpp | 2 ++ engines/mortevielle/mor2.cpp | 2 ++ engines/mortevielle/mortevielle.h | 1 + engines/mortevielle/ques.cpp | 2 ++ 5 files changed, 9 insertions(+) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 9c1a6b738c..7e5143328d 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -1053,6 +1053,8 @@ L2: tou = '\0'; do { mov_mouse(f, tou); + CHECK_QUIT; + /* if keypressed then read(kbd,tou);*/ read_pos_mouse(x, y, c); x = x * (3 - res); diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index 6a380b2155..3895bad7fd 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -195,6 +195,8 @@ int do_alert(Common::String str_, int n) { do { dumi = '\377'; mov_mouse(dum, dumi); + CHECK_QUIT0; + cx = x_s; cy = y_s; test = (cy > 95) && (cy < 105); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 1c27ef3f04..10fe6e9937 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -628,6 +628,8 @@ void tfleche() { do { mov_mouse(qust, touch); + CHECK_QUIT; + if (g_vm->getMouseClick()) rect = (x_s < 256 * res) && (y_s < 176) && (y_s > 12); tinke(); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 4c755a1f5e..75aaeda580 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -85,6 +85,7 @@ public: extern MortevielleEngine *g_vm; #define CHECK_QUIT if (g_vm->shouldQuit()) { return; } +#define CHECK_QUIT0 if (g_vm->shouldQuit()) { return 0; } } // End of namespace Mortevielle diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index e7ae1b30ec..a223e4956f 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -109,6 +109,8 @@ namespace Mortevielle { g_vm->setMouseClick(false); tesok = false; mov_mouse(func, key); + CHECK_QUIT0; + k = 1; while (coor[k].etat && ! dans_rect(coor[k])) k = k + 1; if (coor[k].etat) { -- cgit v1.2.3 From 08b3b91f0f47c5a51e2cec4d3f7ede5a0152563a Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 23 Jan 2012 00:15:19 +1100 Subject: MORTEVIELLE: Converted the demus assembly code to C++ --- engines/mortevielle/module.mk | 1 + engines/mortevielle/ovd1.cpp | 3 ++- engines/mortevielle/parole.cpp | 3 ++- engines/mortevielle/sound.cpp | 56 +++++++++++++++++++++++++++++++++++++++++ engines/mortevielle/sound.h | 37 +++++++++++++++++++++++++++ engines/mortevielle/var_mor.cpp | 5 ---- engines/mortevielle/var_mor.h | 3 +-- 7 files changed, 99 insertions(+), 9 deletions(-) create mode 100644 engines/mortevielle/sound.cpp create mode 100644 engines/mortevielle/sound.h diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 327c4ba3c9..b977c25273 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -23,6 +23,7 @@ MODULE_OBJS := \ parole2.o \ prog.o \ ques.o \ + sound.o \ sprint.o \ taffich.o \ var_mor.o diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 283756948c..3c23a62b28 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -36,6 +36,7 @@ #include "mortevielle/outtext.h" #include "mortevielle/ovd1.h" #include "mortevielle/parole.h" +#include "mortevielle/sound.h" #include "mortevielle/sprint.h" #include "mortevielle/taffich.h" #include "mortevielle/var_mor.h" @@ -338,7 +339,7 @@ void ani50() { fic.read(&mem[0x47a0 * 16 + 0], 123); fic.close(); - demus(0x3800, 0x5000, 623); + demus(&mem[0x3800 * 16], &mem[0x5000 * 16], 623); addfix = (float)((tempo_mus - addv[1])) / 256; cctable(tbi); diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index 76d6c9a177..768b021454 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -27,6 +27,7 @@ #include "common/file.h" #include "mortevielle/parole.h" +#include "mortevielle/sound.h" namespace Mortevielle { @@ -128,7 +129,7 @@ void veracf(byte b) { f.read(&mem[0x7414 * 16 + 0], 273); /*blockread(f,mem[adson * 16+0],300); blockread(f,mem[adson * 16+2400+0],245);*/ - demus(0x7414, adson, 273); + demus(&mem[0x7414 * 16], &mem[adson * 16], 273); f.close(); } diff --git a/engines/mortevielle/sound.cpp b/engines/mortevielle/sound.cpp new file mode 100644 index 0000000000..f2b70cf8ee --- /dev/null +++ b/engines/mortevielle/sound.cpp @@ -0,0 +1,56 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#include "common/scummsys.h" +#include "mortevielle/sound.h" + +namespace Mortevielle { + +const int tab[16] = { -96, -72, -48, -32, -20, -12, -8, -4, 0, 4, 8, 12, 20, 32, 48, 72 }; + +/** + * Decode music data + */ +void demus(const byte *PSrc, byte *PDest, int NbreSeg) { + int seed = 128; + int v; + + for (int idx1 = 0; idx1 < (NbreSeg * 2); ++idx1) { + for (int idx2 = 0; idx2 < 64; ++idx2) { + byte srcByte = *PSrc++; + v = tab[srcByte >> 4]; + seed += v; + *PDest++ = seed & 0xff; + + v = tab[srcByte & 0xf]; + seed += v; + *PDest++ = seed & 0xff; + } + } +} + +} // End of namespace Mortevielle diff --git a/engines/mortevielle/sound.h b/engines/mortevielle/sound.h new file mode 100644 index 0000000000..6e4f7b2a4d --- /dev/null +++ b/engines/mortevielle/sound.h @@ -0,0 +1,37 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_SOUND_H +#define MORTEVIELLE_SOUND_H + +namespace Mortevielle { + +extern void demus(const byte *PSrc, byte *PDest, int NbreSeg); + +} // End of namespace Mortevielle + +#endif diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 34dc742144..38a374e82b 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -359,11 +359,6 @@ void musyc(tablint &tb, int nbseg, int att) { warning("TODO: musyc"); } -// (* external 'c:\mc\demus.com'; *) -void demus(int Src, int Dst, int Tay) { - warning("TODO: demus"); -} - // (* external 'c:\mc\phint.com'; *) void litph(tablint &t, int typ, int tempo) { warning("TODO: litph"); diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 642ecefb2b..b8a18a1253 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -50,6 +50,7 @@ namespace Mortevielle { * * Address * ------- + * 5000:0 - Music data * 6000:0 - Decompressed current image * 7000:0+ - Compressed images * 7000:2 - 16 words representing palette map @@ -455,8 +456,6 @@ extern void decomp(int seg, int dep); extern void afff(int Gd, int seg, int dep, int x, int y); // (* external 'c:\mc\reusint.com'; *) extern void musyc(tablint &tb, int nbseg, int att); -// (* external 'c:\mc\demus.com'; *) -extern void demus(int Src, int Dst, int Tay); // (* external 'c:\mc\phint.com'; *) extern void litph(tablint &t, int typ, int tempo); -- cgit v1.2.3 From 82381d6a19038800f85e4a10d6ab232c48555baa Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 23 Jan 2012 22:31:36 +1100 Subject: MORTEVIELLE: Fix for erasing alert dialogs when done --- engines/mortevielle/alert.cpp | 6 ++++++ engines/mortevielle/graphics.cpp | 17 +++++++++++++++++ engines/mortevielle/graphics.h | 1 + 3 files changed, 24 insertions(+) diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index 3895bad7fd..36a51b07ed 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -143,6 +143,8 @@ int do_alert(Common::String str_, int n) { bool newaff, test, test1, test2, test3, dum; Common::String cas; + // Make a copy of the current screen surface for later restore + g_vm->_backgroundSurface.copyFrom(g_vm->_screenSurface); /*debug('** do_alert **');*/ memset(&limit[0][0], 0, sizeof(int) * 3 * 3); @@ -258,6 +260,10 @@ int do_alert(Common::String str_, int n) { } charecr(50, succ(int, nligne) << 4); show_mouse(); + + /* Restore the background area */ + g_vm->_screenSurface.copyFrom(g_vm->_backgroundSurface, 0, 0); + do_alert_result = quoi; return do_alert_result; } diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 3683afc57b..3450d41cf5 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -934,6 +934,23 @@ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { } } +/** + * Copys a given surface to the given position + */ +void ScreenSurface::copyFrom(Graphics::Surface &src, int x, int y) { + Graphics::Surface destSurface = lockArea(Common::Rect(x, y, x + src.w, y + src.h)); + + // Loop through writing + for (int yp = 0; yp < src.h; ++yp) { + if (((y + yp) < 0) || ((y + yp) >= SCREEN_HEIGHT)) + continue; + + const byte *pSrc = (const byte *)src.getBasePtr(0, yp); + byte *pDest = (byte *)getBasePtr(0, yp); + Common::copy(pSrc, pSrc + src.w, pDest); + } +} + /** * Draws a character at the specified co-ordinates * @remarks Because the ScummVM surface is using a double height 640x400 surface to diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 376b9e5e85..0b265469df 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -82,6 +82,7 @@ public: Graphics::Surface lockArea(const Common::Rect &bounds); void updateScreen(); void drawPicture(GfxSurface &surface, int x, int y); + void copyFrom(Graphics::Surface &src, int x, int y); void writeCharacter(const Common::Point &pt, unsigned char ch, int palIndex); void drawBox(int x, int y, int dx, int dy, int col); void fillBox(int colour, const Common::Rect &bounds, int patt); -- cgit v1.2.3 From 74d6a7bd01133d89ffde196dfcd339679ac8ee14 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 29 Jan 2012 21:17:12 +1100 Subject: MORTEVIELLE: Creation of a tool to extract game strings --- devtools/extract_mort/extract_mort.cpp | 373 +++++++++++++++++++++++++++++++++ devtools/extract_mort/module.mk | 11 + 2 files changed, 384 insertions(+) create mode 100644 devtools/extract_mort/extract_mort.cpp create mode 100644 devtools/extract_mort/module.mk diff --git a/devtools/extract_mort/extract_mort.cpp b/devtools/extract_mort/extract_mort.cpp new file mode 100644 index 0000000000..9e5641759b --- /dev/null +++ b/devtools/extract_mort/extract_mort.cpp @@ -0,0 +1,373 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + * This is a utility for extracting needed resource data from different language + * version of the Lure of the Temptress lure.exe executable files into a new file + * lure.dat - this file is required for the ScummVM Lure of the Temptress module + * to work properly + */ + +// Disable symbol overrides so that we can use system headers. +#define FORBIDDEN_SYMBOL_ALLOW_ALL + +// HACK to allow building with the SDL backend on MinGW +// see bug #1800764 "TOOLS: MinGW tools building broken" +#ifdef main +#undef main +#endif // main + +#include +#include +#include + +#include "common/endian.h" + +enum AccessMode { + kFileReadMode = 1, + kFileWriteMode = 2 +}; + +class File { +private: + FILE *f; +public: + bool open(const char *filename, AccessMode mode = kFileReadMode) { + f = fopen(filename, (mode == kFileReadMode) ? "rb" : "wb"); + return (f != NULL); + } + void close() { + fclose(f); + f = NULL; + } + int seek(int32 offset, int whence = SEEK_SET) { + return fseek(f, offset, whence); + } + long read(void *buffer, int len) { + return fread(buffer, 1, len, f); + } + void write(const void *buffer, int len) { + fwrite(buffer, 1, len, f); + } + byte readByte() { + byte v; + read(&v, sizeof(byte)); + return v; + } + uint16 readWord() { + uint16 v; + read(&v, sizeof(uint16)); + return FROM_LE_16(v); + } + uint32 readLong() { + uint32 v; + read(&v, sizeof(uint32)); + return FROM_LE_32(v); + } + void readString(char *sLine) { + while ((*sLine = readByte()) != '\n') + ++sLine; + + *sLine = '\0'; + } + void writeByte(byte v) { + write(&v, sizeof(byte)); + } + void writeWord(uint16 v) { + uint16 vTemp = TO_LE_16(v); + write(&vTemp, sizeof(uint16)); + } + void writeLong(uint32 v) { + uint32 vTemp = TO_LE_32(v); + write(&vTemp, sizeof(uint32)); + } + void writeString(const char *s) { + fprintf(f, "%s", s); + } + uint32 pos() { + return ftell(f); + } + uint32 size() { + int pos = ftell(f); + fseek (f, 0, SEEK_END); + int end = ftell (f); + fseek (f, pos, SEEK_SET); + + return end; + } +}; + +File textFile, txxInp, txxNtp; + +/*-------------------------------------------------------------------------*/ + +#define BUFFER_SIZE 32768 + +const byte tabdr[32] = { + 32, 101, 115, 97, 114, 105, 110, + 117, 116, 111, 108, 13, 100, 99, + 112, 109, 46, 118, 130, 39, 102, + 98, 44, 113, 104, 103, 33, 76, + 85, 106, 30, 31 +}; + +const byte tab30[32] = { + 69, 67, 74, 138, 133, 120, 77, 122, + 121, 68, 65, 63, 73, 80, 83, 82, + 156, 45, 58, 79, 49, 86, 78, 84, + 71, 81, 64, 66, 135, 34, 136, 91 +}; + +const byte tab31[32]= { + 93, 47, 48, 53, 50, 70, 124, 75, + 72, 147, 140, 150, 151, 57, 56, 51, + 107, 139, 55, 89, 131, 37, 54, 88, + 119, 0, 0, 0, 0, 0, 0, 0 +}; + +/** + * Extracts a single character from the game data + */ +static void extractCharacter(unsigned char &c, int &idx, int &pt, bool &the_end, const uint16 *strData) { + uint16 oct, ocd; + + /* 5-8 */ + oct = FROM_LE_16(strData[idx]); + + oct = ((uint16)(oct << (16 - pt))) >> (16 - pt); + if (pt < 6) { + idx = idx + 1; + oct = oct << (5 - pt); + pt = pt + 11; + oct = oct | (FROM_LE_16(strData[idx]) >> pt); + } else { + pt = pt - 5; + oct = (uint)oct >> pt; + } + + switch (oct) { + case 11 : { + c = '$'; + the_end = true; + } + break; + case 30: + case 31 : { + ocd = FROM_LE_16(strData[idx]); + ocd = (uint16)(ocd << (16 - pt)) >> (16 - pt); + if (pt < 6) { + idx = idx + 1; + ocd = ocd << (5 - pt); + pt = pt + 11; + ocd = ocd | (FROM_LE_16(strData[idx]) >> pt); + } else { + pt = pt - 5; + ocd = (uint)ocd >> pt; + } + if (oct == 30) + c = (char)tab30[ocd]; + else + c = (char)tab31[ocd]; + + if (c == '\0') { + the_end = true; + } + } + break; + default: + c = (char)tabdr[oct]; + } +} + +/** + * Puts a compressed 5-bit value into the string data buffer + */ +static void addCompressedValue(int oct, int &indis, int &point, uint16 *strData) { + // Write out the part of the value that fits into the current word + if (point < 5) + strData[indis] |= oct >> (5 - point); + else + strData[indis] |= oct << (point - 5); + + // Handling of there's any overlap into the next word + if (point < 5) { + // Overlapping into next word + ++indis; + + // Get the bits that fall into the next word and set it + int remainder = oct & ((1 << (5 - point)) - 1); + strData[indis] |= remainder << (16 - (5 - point)); + + point += -5 + 16; + } else { + point -= 5; + if (point == 0) { + point = 16; + ++indis; + } + } +} + +/** + * Compresses a single passed character and stores it in the compressed strings buffer + */ +static void compressCharacter(unsigned char ch, int &indis, int &point, uint16 *strData) { + if (ch == '$') { + // End of string + addCompressedValue(11, indis, point, strData); + return; + } + + // Scan through the tabdr array for a match + for (int idx = 0; idx < 30; ++idx) { + if ((idx != 11) && (tabdr[idx] == ch)) { + addCompressedValue(idx, indis, point, strData); + return; + } + } + + // Scan through the tab30 array + for (int idx = 0; idx < 32; ++idx) { + if (tab30[idx] == ch) { + addCompressedValue(30, indis, point, strData); + addCompressedValue(idx, indis, point, strData); + return; + } + } + + // Scan through the tab31 array + for (int idx = 0; idx < 32; ++idx) { + if (tab31[idx] == ch) { + addCompressedValue(31, indis, point, strData); + addCompressedValue(idx, indis, point, strData); + return; + } + } + + printf("Encountered invalid character '%c' when compressing strings\n", ch); + exit(1); +} + +/** + * string extractor + */ +static void export_strings(const char *textFilename) { + char buffer[BUFFER_SIZE]; + uint16 *strData; + + // Open input and output files + txxInp.open("TXX.INP", kFileReadMode); + txxNtp.open("TXX.NTP", kFileReadMode); + textFile.open(textFilename, kFileWriteMode); + + // Read all the compressed string data into a buffer + strData = (uint16 *)malloc(txxInp.size()); + txxInp.read(strData, txxInp.size()); + + // Loop through getting each string + for (unsigned int strIndex = 0; strIndex < (txxNtp.size() / 3); ++strIndex) { + int indis = txxNtp.readWord(); + int point = txxNtp.readByte(); + + // Extract the string + int charIndex = 0; + unsigned char ch; + bool endFlag = false; + do { + extractCharacter(ch, indis, point, endFlag, strData); + buffer[charIndex++] = ch; + if (ch == BUFFER_SIZE) { + printf("Extracted string exceeded allowed buffer size.\n"); + exit(1); + } + } while (!endFlag); + + // Write out the string + buffer[charIndex++] = '\n'; + buffer[charIndex] = '\0'; + textFile.writeString(buffer); + } + + // Close the files and free the buffer + free(strData); + txxInp.close(); + txxNtp.close(); + textFile.close(); +} + +/** + * string importer + */ +static void import_strings(const char *textFilename) { + // Open input and output files + txxInp.open("TXX.INP", kFileWriteMode); + txxNtp.open("TXX.NTP", kFileWriteMode); + textFile.open(textFilename, kFileReadMode); + + // Set up a buffer for the output compressed strings + uint16 strData[BUFFER_SIZE]; + memset(strData, 0, BUFFER_SIZE); + char sLine[BUFFER_SIZE]; + + int indis = 0; + int point = 16; + + while (textFile.pos() < textFile.size()) { + // Read in the next source line + textFile.readString(sLine); + + // Write out the index entry for the string + txxNtp.writeWord(indis); + txxNtp.writeByte(point); + + // Loop through writing out the characters to the compressed data buffer + char *s = sLine; + while (*s) { + compressCharacter(*s, indis, point, strData); + ++s; + } + } + + // Write out the compressed data + if (point != 16) + ++indis; + txxInp.write(strData, indis); + + // Close the files + txxInp.close(); + txxNtp.close(); + textFile.close(); +} + + +int main(int argc, char *argv[]) { + if (argc != 3) { + printf("Format: %s export|import output_file\n", argv[0]); + printf("The program must be run from the directory with the Mortville Manor game files.\n"); + exit(0); + } + + // Do the processing + if (!strcmp(argv[1], "export")) + export_strings(argv[2]); + else if (!strcmp(argv[1], "import")) + import_strings(argv[2]); + else + printf("Unknown operation specified\n"); +} diff --git a/devtools/extract_mort/module.mk b/devtools/extract_mort/module.mk new file mode 100644 index 0000000000..cbdcd251d9 --- /dev/null +++ b/devtools/extract_mort/module.mk @@ -0,0 +1,11 @@ + +MODULE := devtools/extract_mort + +MODULE_OBJS := \ + extract_mort.o \ + +# Set the name of the executable +TOOL_EXECUTABLE := extract_mort + +# Include common rules +include $(srcdir)/rules.mk -- cgit v1.2.3 From 42ff1a89db077ede823425c75339ad235f047916 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 29 Jan 2012 22:16:15 +1100 Subject: MORTEVIELLE: Minor bugfixes to string extraction tool --- devtools/extract_mort/extract_mort.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/devtools/extract_mort/extract_mort.cpp b/devtools/extract_mort/extract_mort.cpp index 9e5641759b..192ea50723 100644 --- a/devtools/extract_mort/extract_mort.cpp +++ b/devtools/extract_mort/extract_mort.cpp @@ -296,6 +296,9 @@ static void export_strings(const char *textFilename) { printf("Extracted string exceeded allowed buffer size.\n"); exit(1); } + + if (indis >= (txxInp.size() / 2)) + endFlag = true; } while (!endFlag); // Write out the string @@ -347,7 +350,7 @@ static void import_strings(const char *textFilename) { // Write out the compressed data if (point != 16) ++indis; - txxInp.write(strData, indis); + txxInp.write(strData, indis * 2); // Close the files txxInp.close(); -- cgit v1.2.3 From 3a2cd5a223bb7097acddc7acda95298db20bf1f5 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 5 Feb 2012 11:02:29 +1100 Subject: MORTEVIELLE: In progress implementation of PC Speaker music player --- engines/mortevielle/mortevielle.cpp | 19 ++++- engines/mortevielle/mortevielle.h | 3 + engines/mortevielle/ovd1.cpp | 4 +- engines/mortevielle/parole.cpp | 3 +- engines/mortevielle/parole2.cpp | 4 +- engines/mortevielle/sound.cpp | 144 +++++++++++++++++++++++++++++++++++- engines/mortevielle/sound.h | 76 ++++++++++++++++++- engines/mortevielle/var_mor.cpp | 5 -- engines/mortevielle/var_mor.h | 4 - 9 files changed, 246 insertions(+), 16 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 88a3ecd9e5..fde3d424c5 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -37,7 +37,8 @@ namespace Mortevielle { MortevielleEngine *g_vm; MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc): - Engine(system), _gameDescription(gameDesc), _randomSource("mortevielle") { + Engine(system), _gameDescription(gameDesc), _randomSource("mortevielle"), + _soundManager(_mixer) { g_vm = this; _lastGameFrame = 0; _mouseClick = false; @@ -298,6 +299,22 @@ void MortevielleEngine::setMousePos(const Common::Point &pt) { _mousePos = newPoint; } +/** + * Delay by a given amount + */ +void MortevielleEngine::delay(int amount) { + uint32 endTime = g_system->getMillis() + amount; + + while (g_system->getMillis() < endTime) { + if (g_system->getMillis() > (_lastGameFrame + GAME_FRAME_DELAY)) { + _lastGameFrame = g_system->getMillis(); + g_vm->_screenSurface.updateScreen(); + } + + g_system->delayMillis(10); + } +} + /*-------------------------------------------------------------------------*/ Common::Error MortevielleEngine::run() { diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 75aaeda580..86ec947200 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -33,6 +33,7 @@ #include "common/error.h" #include "graphics/surface.h" #include "mortevielle/graphics.h" +#include "mortevielle/sound.h" namespace Mortevielle { @@ -67,6 +68,7 @@ public: PaletteManager _paletteManager; GfxSurface _backgroundSurface; Common::RandomSource _randomSource; + SoundManager _soundManager; public: MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc); ~MortevielleEngine(); @@ -80,6 +82,7 @@ public: void setMousePos(const Common::Point &pt); bool getMouseClick() const { return _mouseClick; } void setMouseClick(bool v) { _mouseClick = v; } + void delay(int amount); }; extern MortevielleEngine *g_vm; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 3c23a62b28..bfa6f47790 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -339,7 +339,7 @@ void ani50() { fic.read(&mem[0x47a0 * 16 + 0], 123); fic.close(); - demus(&mem[0x3800 * 16], &mem[0x5000 * 16], 623); + g_vm->_soundManager.demus(&mem[0x3800 * 16], &mem[0x5000 * 16], 623); addfix = (float)((tempo_mus - addv[1])) / 256; cctable(tbi); @@ -347,7 +347,7 @@ void ani50() { k = 0; do { fin = keypressed(); - musyc(tbi, 9958 , tempo_mus); + g_vm->_soundManager.musyc(tbi, 9958 , tempo_mus); k = k + 1; fin = fin | keypressed() | (k >= 5); } while (!fin); diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index 768b021454..ba43b5955d 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -28,6 +28,7 @@ #include "common/file.h" #include "mortevielle/parole.h" #include "mortevielle/sound.h" +#include "mortevielle/mortevielle.h" namespace Mortevielle { @@ -129,7 +130,7 @@ void veracf(byte b) { f.read(&mem[0x7414 * 16 + 0], 273); /*blockread(f,mem[adson * 16+0],300); blockread(f,mem[adson * 16+2400+0],245);*/ - demus(&mem[0x7414 * 16], &mem[adson * 16], 273); + g_vm->_soundManager.demus(&mem[0x7414 * 16], &mem[adson * 16], 273); f.close(); } diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index cba5588ffc..e0aaf83af0 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -29,6 +29,8 @@ #include "mortevielle/level15.h" #include "mortevielle/parole2.h" #include "mortevielle/parole.h" +#include "mortevielle/mortevielle.h" +#include "mortevielle/sound.h" #include "mortevielle/var_mor.h" namespace Mortevielle { @@ -116,7 +118,7 @@ void parole(int rep, int ht, int typ) { break; } trait_ph(); - litph(tbi, typ, tempo); + g_vm->_soundManager.litph(tbi, typ, tempo); if (typlec != 0) for (i = 0; i <= 500; i ++) { t_cph[i] = savph[i]; diff --git a/engines/mortevielle/sound.cpp b/engines/mortevielle/sound.cpp index f2b70cf8ee..08dbe0ba02 100644 --- a/engines/mortevielle/sound.cpp +++ b/engines/mortevielle/sound.cpp @@ -27,15 +27,125 @@ #include "common/scummsys.h" #include "mortevielle/sound.h" +#include "mortevielle/mortevielle.h" namespace Mortevielle { +/** + * Constructor + */ +PCSpeaker::PCSpeaker(int rate) { + _rate = rate; + _oscLength = 0; + _oscSamples = 0; + _remainingSamples = 0; + _volume = 255; +} + +/** + * Destructor + */ +PCSpeaker::~PCSpeaker() { +} + +/** + * Adds a new note to the queue of notes to be played. + */ +void PCSpeaker::play(int freq, uint32 length) { + assert((freq > 0) && (length > 0)); + Common::StackLock lock(_mutex); + + _pendingNotes.push(SpeakerNote(freq, length)); +} + +/** + * Stops the currently playing song + */ +void PCSpeaker::stop() { + Common::StackLock lock(_mutex); + + _remainingSamples = 0; + _pendingNotes.clear(); +} + +void PCSpeaker::setVolume(byte volume) { + _volume = volume; +} + +/** + * Return true if a song is currently playing + */ +bool PCSpeaker::isPlaying() const { + return !_pendingNotes.empty() || (_remainingSamples != 0); +} + +/** + * Method used by the mixer to pull off pending samples to play + */ +int PCSpeaker::readBuffer(int16 *buffer, const int numSamples) { + Common::StackLock lock(_mutex); + + int i; + + for (i = 0; (_remainingSamples || !_pendingNotes.empty()) && (i < numSamples); i++) { + if (!_remainingSamples) + // Used up the current note, so queue the next one + dequeueNote(); + + buffer[i] = generateSquare(_oscSamples, _oscLength) * _volume; + if (_oscSamples++ >= _oscLength) + _oscSamples = 0; + + _remainingSamples--; + } + + // Clear the rest of the buffer + if (i < numSamples) + memset(buffer + i, 0, (numSamples - i) * sizeof(int16)); + + return numSamples; +} + +/** + * Dequeues a note from the pending note list + */ +void PCSpeaker::dequeueNote() { + SpeakerNote note = _pendingNotes.pop(); + + _oscLength = _rate / note.freq; + _oscSamples = 0; + _remainingSamples = (_rate * note.length) / 1000000; + assert((_oscLength > 0) && (_remainingSamples > 0)); +} + +/** + * Support method for generating a square wave + */ +int8 PCSpeaker::generateSquare(uint32 x, uint32 oscLength) { + return (x < (oscLength / 2)) ? 127 : -128; +} + +/*-------------------------------------------------------------------------*/ + const int tab[16] = { -96, -72, -48, -32, -20, -12, -8, -4, 0, 4, 8, 12, 20, 32, 48, 72 }; +SoundManager::SoundManager(Audio::Mixer *mixer) { + _mixer = mixer; + _speakerStream = new PCSpeaker(mixer->getOutputRate()); + _mixer->playStream(Audio::Mixer::kSFXSoundType, &_speakerHandle, + _speakerStream, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO, true); +} + +SoundManager::~SoundManager() { + _mixer->stopHandle(_speakerHandle); + delete _speakerStream; + +} + /** * Decode music data */ -void demus(const byte *PSrc, byte *PDest, int NbreSeg) { +void SoundManager::demus(const byte *PSrc, byte *PDest, int NbreSeg) { int seed = 128; int v; @@ -53,4 +163,36 @@ void demus(const byte *PSrc, byte *PDest, int NbreSeg) { } } +void SoundManager::litph(tablint &t, int typ, int tempo) { + return; +} + +void SoundManager::playNote(int frequency, int32 length) { + _speakerStream->play(frequency, length); +} + + +void SoundManager::musyc(tablint &tb, int nbseg, int att) { +#ifdef DEBUG + const byte *pSrc = &mem[0x5000 * 16]; + + // Convert the countdown amount to a tempo rate, and then to note length in microseconds + int tempo = 1193180 / att; + int length = 1000000 / tempo; + + for (int noteIndex = 0; noteIndex < (nbseg * 16); ++noteIndex) { + int lookupValue = *pSrc++; + int noteCountdown = tb[lookupValue]; + int noteFrequency = 1193180 / noteCountdown; + + playNote(noteFrequency, length); + } + + // Keep waiting until the song has been finished + while (_speakerStream->isPlaying() && !g_vm->shouldQuit()) { + g_vm->delay(10); + } +#endif +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/sound.h b/engines/mortevielle/sound.h index 6e4f7b2a4d..f089974c6b 100644 --- a/engines/mortevielle/sound.h +++ b/engines/mortevielle/sound.h @@ -28,9 +28,83 @@ #ifndef MORTEVIELLE_SOUND_H #define MORTEVIELLE_SOUND_H +#include "audio/audiostream.h" +#include "audio/mixer.h" +#include "common/mutex.h" +#include "common/queue.h" +#include "mortevielle/var_mor.h" + namespace Mortevielle { -extern void demus(const byte *PSrc, byte *PDest, int NbreSeg); +/** + * Structure used to store pending notes to play + */ +struct SpeakerNote { + int freq; + uint32 length; + + SpeakerNote(int noteFreq, uint32 noteLength) { + freq = noteFreq; + length = noteLength; + } +}; + +/** + * This is a modified PC Speaker class that allows the queueing of an entire song + * sequence one note at a time. + */ +class PCSpeaker : public Audio::AudioStream { +private: + Common::Queue _pendingNotes; + Common::Mutex _mutex; + + int _rate; + uint32 _oscLength; + uint32 _oscSamples; + uint32 _remainingSamples; + uint32 _mixedSamples; + byte _volume; + + void dequeueNote(); +protected: + static int8 generateSquare(uint32 x, uint32 oscLength); +public: + PCSpeaker(int rate = 44100); + ~PCSpeaker(); + + /** Play a note for length microseconds. + */ + void play(int freq, uint32 length); + /** Stop the currently playing sequence */ + void stop(); + /** Adjust the volume. */ + void setVolume(byte volume); + + bool isPlaying() const; + + int readBuffer(int16 *buffer, const int numSamples); + + bool isStereo() const { return false; } + bool endOfData() const { return false; } + bool endOfStream() const { return false; } + int getRate() const { return _rate; } +}; + +class SoundManager { +private: + Audio::Mixer *_mixer; + PCSpeaker *_speakerStream; + Audio::SoundHandle _speakerHandle; +public: + SoundManager(Audio::Mixer *mixer); + ~SoundManager(); + + void playNote(int frequency, int32 length); + + void demus(const byte *PSrc, byte *PDest, int NbreSeg); + void litph(tablint &t, int typ, int tempo); + void musyc(tablint &tb, int nbseg, int att); +}; } // End of namespace Mortevielle diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 38a374e82b..bd432124db 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -359,9 +359,4 @@ void musyc(tablint &tb, int nbseg, int att) { warning("TODO: musyc"); } -// (* external 'c:\mc\phint.com'; *) -void litph(tablint &t, int typ, int tempo) { - warning("TODO: litph"); -} - } // End of namespace Mortevielle diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index b8a18a1253..5d62e77a1c 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -454,10 +454,6 @@ extern void box(int c, int Gd, int xo, int yo, int xi, int yi, int patt); extern void decomp(int seg, int dep); // (* external 'c:\mc\affich.com'; *) extern void afff(int Gd, int seg, int dep, int x, int y); -// (* external 'c:\mc\reusint.com'; *) -extern void musyc(tablint &tb, int nbseg, int att); -// (* external 'c:\mc\phint.com'; *) -extern void litph(tablint &t, int typ, int tempo); } // End of namespace Mortevielle -- cgit v1.2.3 From 4a34f4036544c9cb137237dbf5f23d8a5d2eafa1 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 6 Feb 2012 21:17:12 +1100 Subject: MORTEVIELLE: Replace timer chip frequency values with a constant --- engines/mortevielle/sound.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/sound.cpp b/engines/mortevielle/sound.cpp index 08dbe0ba02..0a6e7e8d8d 100644 --- a/engines/mortevielle/sound.cpp +++ b/engines/mortevielle/sound.cpp @@ -129,6 +129,9 @@ int8 PCSpeaker::generateSquare(uint32 x, uint32 oscLength) { const int tab[16] = { -96, -72, -48, -32, -20, -12, -8, -4, 0, 4, 8, 12, 20, 32, 48, 72 }; +// The PC timer chip works at a frequency of 1.19318Mhz +#define TIMER_FREQUENCY 1193180 + SoundManager::SoundManager(Audio::Mixer *mixer) { _mixer = mixer; _speakerStream = new PCSpeaker(mixer->getOutputRate()); @@ -177,13 +180,13 @@ void SoundManager::musyc(tablint &tb, int nbseg, int att) { const byte *pSrc = &mem[0x5000 * 16]; // Convert the countdown amount to a tempo rate, and then to note length in microseconds - int tempo = 1193180 / att; + int tempo = TIMER_FREQUENCY / att; int length = 1000000 / tempo; for (int noteIndex = 0; noteIndex < (nbseg * 16); ++noteIndex) { int lookupValue = *pSrc++; int noteCountdown = tb[lookupValue]; - int noteFrequency = 1193180 / noteCountdown; + int noteFrequency = TIMER_FREQUENCY / noteCountdown; playNote(noteFrequency, length); } -- cgit v1.2.3 From 3d9da88539bdd776d77b6accce6e77daffb72067 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 7 Feb 2012 22:40:06 +1100 Subject: MORTEVIELLE: Merged mort.cpp into mortevielle.cpp, and split up intro from main game --- engines/mortevielle/module.mk | 1 - engines/mortevielle/mort.cpp | 149 ------------------------------------ engines/mortevielle/mort.h | 39 ---------- engines/mortevielle/mortevielle.cpp | 102 +++++++++++++++++++++++- engines/mortevielle/mortevielle.h | 3 + 5 files changed, 102 insertions(+), 192 deletions(-) delete mode 100644 engines/mortevielle/mort.cpp delete mode 100644 engines/mortevielle/mort.h diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index b977c25273..2d16106e0c 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -14,7 +14,6 @@ MODULE_OBJS := \ menu.o \ mor.o \ mor2.o \ - mort.o \ mortevielle.o \ mouse.o \ outtext.o \ diff --git a/engines/mortevielle/mort.cpp b/engines/mortevielle/mort.cpp deleted file mode 100644 index 766ae3c429..0000000000 --- a/engines/mortevielle/mort.cpp +++ /dev/null @@ -1,149 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "mortevielle/mort.h" -#include "mortevielle/mortevielle.h" -#include "mortevielle/var_mor.h" /* les variables */ //Translation: Variables -#include "mortevielle/asm.h" -#include "mortevielle/keyboard.h" /* la gestion du clavier */ //Translation: Keyboard manager -#include "mortevielle/mouse.h" /* la souris */ //Translation: Mouse -#include "mortevielle/level15.h" /* les fonctions de base */ //Translation: Lowlevel functions -#include "mortevielle/droite.h" /* pour faire une droite */ //Translation: Display a lign -#include "mortevielle/boite.h" //Translation: Box -#include "mortevielle/sprint.h" /* l'affichage des textes */ //Translation: Display texts -#include "mortevielle/outtext.h" /* fonctions sup‚rieures d'affichage */ //Translation: Highlevel display functions -#include "mortevielle/parole.h" /* les fonctions de la parole */ //Translation: Speech functions -#include "mortevielle/alert.h" -#include "mortevielle/parole2.h" /* les fonctions de la parole */ //Translation: Speech functions -/* debug le debugging */ //Translation: Debugger -#include "mortevielle/ques.h" /* les questions */ //Translation: Questions -#include "mortevielle/menu.h" /* les fonctions du menu */ //Translation: Menu functions -#include "mortevielle/mor.h" /* divers */ //Translation: Misc -#include "mortevielle/taffich.h" /* chargement des dessins */ //Translation: pictures loader -#include "mortevielle/ovd1.h" /* les fonctions sur disque 1 */ //Translation: Disk functions -#include "mortevielle/mor2.h" /* divers */ //Translation: Misc -#include "mortevielle/actions.h" /* les actions */ //Translation: Actions -#include "mortevielle/prog.h" /* fonctions toplevel */ //Translation: toplevel functions -#include "mortevielle/disk.h" /* chargements et sauvegardes */ //Translation: Load/Save -/* ecrihexa utilitaire */ //Translation: Toolbox - -namespace Mortevielle { - -void divers(int np, bool b) { - teskbd(); - do { - parole(np, 0, 0); - atf3f8(key); - CHECK_QUIT; - - if (newgd != gd) { - gd = newgd; - hirs(); - aff50(b); - } - } while (!(key == 66)); -} - -/* NIVEAU 0 */ - -void mortevielle_main() { - /*init_debug;*/ - /* ecri_seg;*/ - //pio_initialize(argc, argv); - gd = ega; - newgd = gd; - zuul = false; - tesok = false; - chartex(); - charpal(); - charge_cfiph(); - charge_cfiec(); - zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); - c_zzz = 1; - init_nbrepm(); - init_mouse(); - /* crep:=WRITE_LE_UINT16(&mem[$7f00:0]; - WRITE_LE_UINT16(&mem[$7f00:0]:= crep+1; - if (WRITE_LE_UINT16(&mem[$7f00:0]<> crep+1) then - begin - hirs; - show_mouse; - crep:=do_alert('[1][ 512 k minimum requis !!][OK]',1); - clrscr; - halt; - end; - if (Dseg+$1000>adbruit5) then - begin - hirs; - show_mouse; - crep:=do_alert('[1][ Il ne reste pas assez de |place m‚moire !!][OK]',1); - clrscr; - halt; - end;*/ - init_lieu(); - arret = false; - sonoff = false; - f2_all = false; - textcolor(9); - teskbd(); - dialpre(); - newgd = gd; - teskbd(); - if (newgd != gd) gd = newgd; - hirs(); - ades = 0x7000; - aff50(false); - mlec = 0; - divers(142, false); - CHECK_QUIT; - - ani50(); - divers(143, true); - CHECK_QUIT; - - suite(); - music(); - adzon(); - takesav(0); - if (rech_cfiec) charge_cfiec(); - for (crep = 1; crep <= c_zzz; crep ++) - zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); - charge_bruit5(); - init_menu(); - - theure(); - dprog(); - hirs(); - dessine_rouleau(); - show_mouse(); - do { - tjouer(); - CHECK_QUIT; - } while (!arret); -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/mort.h b/engines/mortevielle/mort.h deleted file mode 100644 index d313e32b78..0000000000 --- a/engines/mortevielle/mort.h +++ /dev/null @@ -1,39 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_MORT_H -#define MORTEVIELLE_MORT_H - -namespace Mortevielle { - -extern void divers(int np, bool b); -/* NIVEAU 0 */ -extern void mortevielle_main(); - -} // End of namespace Mortevielle - -#endif diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index fde3d424c5..35d71c92aa 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -28,8 +28,16 @@ #include "graphics/palette.h" #include "graphics/pixelformat.h" #include "mortevielle/mortevielle.h" -#include "mortevielle/mort.h" +#include "mortevielle/asm.h" +#include "mortevielle/disk.h" +#include "mortevielle/keyboard.h" +#include "mortevielle/level15.h" +#include "mortevielle/mor.h" +#include "mortevielle/mor2.h" #include "mortevielle/mouse.h" +#include "mortevielle/ovd1.h" +#include "mortevielle/parole2.h" +#include "mortevielle/prog.h" #include "mortevielle/var_mor.h" namespace Mortevielle { @@ -77,6 +85,36 @@ Common::ErrorCode MortevielleEngine::initialise() { // Setup the mouse cursor initMouse(); + /*init_debug;*/ + /* ecri_seg;*/ + //pio_initialize(argc, argv); + gd = ega; + newgd = gd; + zuul = false; + tesok = false; + chartex(); + charpal(); + charge_cfiph(); + charge_cfiec(); + zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); + c_zzz = 1; + init_nbrepm(); + init_mouse(); + + init_lieu(); + arret = false; + sonoff = false; + f2_all = false; + textcolor(9); + teskbd(); + dialpre(); + newgd = gd; + teskbd(); + if (newgd != gd) + gd = newgd; + hirs(); + ades = 0x7000; + return Common::kNoError; } @@ -323,10 +361,68 @@ Common::Error MortevielleEngine::run() { if (err != Common::kNoError) return err; - // Dispatch to the game's main routine - mortevielle_main(); + // Show the game introduction + showIntroduction(); + + adzon(); + takesav(0); + + mainGame(); return Common::kNoError; } +/** + * Show the game introduction + */ +void MortevielleEngine::showIntroduction() { + aff50(false); + mlec = 0; + divers(142, false); + CHECK_QUIT; + + ani50(); + divers(143, true); + CHECK_QUIT; + + suite(); + music(); +} + +void MortevielleEngine::divers(int np, bool b) { + teskbd(); + do { + parole(np, 0, 0); + atf3f8(key); + CHECK_QUIT; + + if (newgd != gd) { + gd = newgd; + hirs(); + aff50(b); + } + } while (!(key == 66)); +} + +/** + * Main game loop + */ +void MortevielleEngine::mainGame() { + if (rech_cfiec) charge_cfiec(); + for (crep = 1; crep <= c_zzz; crep ++) + zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); + charge_bruit5(); + init_menu(); + + theure(); + dprog(); + hirs(); + dessine_rouleau(); + show_mouse(); + do { + tjouer(); + CHECK_QUIT; + } while (!arret); +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 86ec947200..863cbdb95e 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -63,6 +63,9 @@ private: bool handleEvents(); void addKeypress(Common::Event &evt); void initMouse(); + void showIntroduction(); + void mainGame(); + void divers(int np, bool b); public: ScreenSurface _screenSurface; PaletteManager _paletteManager; -- cgit v1.2.3 From 80302552e830c043f16b1860573ee8cc47232385 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 7 Feb 2012 22:48:16 +1100 Subject: MORTEVIELLE: Moved the game detection entries to detection_tables.h --- engines/mortevielle/detection.cpp | 32 +------------------------------- engines/mortevielle/detection_tables.h | 25 +++++++++++++++++++++---- 2 files changed, 22 insertions(+), 35 deletions(-) diff --git a/engines/mortevielle/detection.cpp b/engines/mortevielle/detection.cpp index 53d4292392..ec0b01622a 100644 --- a/engines/mortevielle/detection.cpp +++ b/engines/mortevielle/detection.cpp @@ -35,39 +35,9 @@ static const PlainGameDescriptor MortevielleGame[] = { {0, 0} }; -static const ADGameDescription MortevielleGameDescriptions[] = { - { - "mortevielle", - "", - { - {"menufr.mor", 0, "e413f36b9e14eef16130adc347a9391f", 144}, - {"dxx.mor", 0, "949e68e829ecd5ad29e36a00347a9e7e", 207744}, - AD_LISTEND - }, - Common::FR_FRA, - Common::kPlatformPC, - ADGF_NO_FLAGS, - GUIO0() - }, - { - "mortevielle", - "", - { - {"menual.mor", 0, "792aea282b07a1d74c4a4abeabc90c19", 144}, - {"dxx.mor", 0, "949e68e829ecd5ad29e36a00347a9e7e", 207744}, - AD_LISTEND - }, - Common::DE_DEU, - Common::kPlatformPC, - ADGF_NO_FLAGS, - GUIO0() - }, - AD_TABLE_END_MARKER -}; - class MortevielleMetaEngine : public AdvancedMetaEngine { public: - MortevielleMetaEngine() : AdvancedMetaEngine(MortevielleGameDescriptions, sizeof(ADGameDescription), + MortevielleMetaEngine() : AdvancedMetaEngine(Mortevielle::MortevielleGameDescriptions, sizeof(ADGameDescription), MortevielleGame) { _md5Bytes = 512; _singleid = "mortevielle"; diff --git a/engines/mortevielle/detection_tables.h b/engines/mortevielle/detection_tables.h index 4ea062b2b2..7ceb40d524 100644 --- a/engines/mortevielle/detection_tables.h +++ b/engines/mortevielle/detection_tables.h @@ -22,15 +22,32 @@ namespace Mortevielle { -static const ADGameDescription gameDescriptions[] = { +static const ADGameDescription MortevielleGameDescriptions[] = { { "mortevielle", "", - AD_ENTRY1s("mortvielle.txt", "d41d8cd98f00b204e9800998ecf8427e", 0), + { + {"menufr.mor", 0, "e413f36b9e14eef16130adc347a9391f", 144}, + {"dxx.mor", 0, "949e68e829ecd5ad29e36a00347a9e7e", 207744}, + AD_LISTEND + }, Common::FR_FRA, Common::kPlatformPC, - ADGF_UNSTABLE, - GUIO1(GUIO_NOASPECT) + ADGF_NO_FLAGS, + GUIO0() + }, + { + "mortevielle", + "", + { + {"menual.mor", 0, "792aea282b07a1d74c4a4abeabc90c19", 144}, + {"dxx.mor", 0, "949e68e829ecd5ad29e36a00347a9e7e", 207744}, + AD_LISTEND + }, + Common::DE_DEU, + Common::kPlatformPC, + ADGF_NO_FLAGS, + GUIO0() }, AD_TABLE_END_MARKER }; -- cgit v1.2.3 From bae25fc2aab4fe0438b59dba4ac507ce6462a0e1 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 12:34:51 +1100 Subject: MORTEVIELLE: Implemented ScummVM savegame functionality with metadata --- engines/mortevielle/detection.cpp | 27 ++- engines/mortevielle/disk.cpp | 157 ------------------ engines/mortevielle/disk.h | 39 ----- engines/mortevielle/module.mk | 2 +- engines/mortevielle/mortevielle.cpp | 181 +++++++++++++++++++- engines/mortevielle/mortevielle.h | 9 + engines/mortevielle/prog.cpp | 105 ------------ engines/mortevielle/prog.h | 2 - engines/mortevielle/saveload.cpp | 318 ++++++++++++++++++++++++++++++++++++ engines/mortevielle/saveload.h | 66 ++++++++ 10 files changed, 596 insertions(+), 310 deletions(-) delete mode 100644 engines/mortevielle/disk.cpp delete mode 100644 engines/mortevielle/disk.h create mode 100644 engines/mortevielle/saveload.cpp create mode 100644 engines/mortevielle/saveload.h diff --git a/engines/mortevielle/detection.cpp b/engines/mortevielle/detection.cpp index ec0b01622a..35e5cada81 100644 --- a/engines/mortevielle/detection.cpp +++ b/engines/mortevielle/detection.cpp @@ -25,6 +25,7 @@ #include "mortevielle/mortevielle.h" #include "mortevielle/detection_tables.h" +#include "mortevielle/saveload.h" namespace Mortevielle { uint32 MortevielleEngine::getGameFlags() const { return _gameDescription->flags; } @@ -52,6 +53,9 @@ public: virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const; virtual bool hasFeature(MetaEngineFeature f) const; + virtual int getMaximumSaveSlot() const; + virtual SaveStateList listSaves(const char *target) const; + virtual SaveStateDescriptor querySaveMetaInfos(const char *target, int slot) const; }; bool MortevielleMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const { @@ -62,9 +66,30 @@ bool MortevielleMetaEngine::createInstance(OSystem *syst, Engine **engine, const } bool MortevielleMetaEngine::hasFeature(MetaEngineFeature f) const { - return false; + switch (f) { + case kSupportsListSaves: + case kSupportsDeleteSave: + case kSupportsLoadingDuringStartup: + case kSavesSupportMetaInfo: + case kSavesSupportThumbnail: + case kSavesSupportCreationDate: + return true; + default: + return false; + } +} + +int MortevielleMetaEngine::getMaximumSaveSlot() const { return 99; } + +SaveStateList MortevielleMetaEngine::listSaves(const char *target) const { + return Mortevielle::SavegameManager::listSaves(target); } +SaveStateDescriptor MortevielleMetaEngine::querySaveMetaInfos(const char *target, int slot) const { + return Mortevielle::SavegameManager::querySaveMetaInfos(slot); +} + + #if PLUGIN_ENABLED_DYNAMIC(MORTEVIELLE) REGISTER_PLUGIN_DYNAMIC(MORTEVIELLE, PLUGIN_TYPE_ENGINE, MortevielleMetaEngine); #else diff --git a/engines/mortevielle/disk.cpp b/engines/mortevielle/disk.cpp deleted file mode 100644 index 25bf7faca3..0000000000 --- a/engines/mortevielle/disk.cpp +++ /dev/null @@ -1,157 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "common/file.h" -#include "common/system.h" -#include "common/savefile.h" -#include "common/serializer.h" -#include "mortevielle/alert.h" -#include "mortevielle/disk.h" -#include "mortevielle/mor.h" -#include "mortevielle/mor2.h" -#include "mortevielle/mouse.h" -#include "mortevielle/ovd1.h" -#include "mortevielle/prog.h" -#include "mortevielle/var_mor.h" - -namespace Mortevielle { - -/** - * Ensure disk 1 data is available - */ -void dem1() { -/* Deprecated in ScummVM - int k; - - // -- demande de disk 1 -- //Translation: Ask for disk #1 - assign(f, "mort.005"); - //*$i-* - k = ioresult; - reset(f); - while (ioresult != 0) { - show_mouse(); - k = do_alert(al_mess, 1); - hide_mouse(); - reset(f); - } - close(f); - */ -} - -/** - * Handle saving or loading savegame data - */ -static void sync_save(Common::Serializer &sz) { - sz.syncAsSint16LE(s1.conf); - sz.syncBytes((byte *)&s1.pourc[0], 11); - sz.syncBytes((byte *)&s1.teauto[0], 43); - sz.syncBytes((byte *)&s1.sjer[0], 31); - sz.syncAsSint16LE(s1.mlieu); - sz.syncAsSint16LE(s1.iboul); - sz.syncAsSint16LE(s1.ibag); - sz.syncAsSint16LE(s1.icave); - sz.syncAsSint16LE(s1.ivier); - sz.syncAsSint16LE(s1.ipuit); - sz.syncAsSint16LE(s1.derobj); - sz.syncAsSint16LE(s1.iloic); - sz.syncAsSint16LE(s1.icryp); - sz.syncAsByte(s1.ipre); - sz.syncAsByte(s1.heure); - - sz.syncBytes(bufcha, 391); -} - -void takesav(int n) { - int i; - Common::String st; - - dem1(); - // -- Load the file 'sauve#n.mor' - Common::String saveName = Common::String::format("sav%d.mor", n); - - // Try loading first from the save area - Common::SeekableReadStream *stream = g_system->getSavefileManager()->openForLoading(saveName); - - // If not present, try loading from the program folder - Common::File f; - if (stream == NULL) { - if (!f.open(saveName)) - error("Unable to open save file '%s'", saveName); - - stream = f.readStream(f.size()); - f.close(); - } - - Common::Serializer sz(stream, NULL); - sync_save(sz); - - s = s1; - for (i = 0; i <= 389; i ++) tabdon[i + acha] = bufcha[i]; - - // Close the stream - delete stream; -} - -void ld_game(int n) { - hide_mouse(); - maivid(); - takesav(n); - /* -- disquette 2 -- */ //Translation: Floppy #2 - dem2(); - /* -- mises en place -- */ //Translation: Initialization - theure(); - dprog(); - antegame(); - show_mouse(); -} - -void sv_game(int n) { - Common::OutSaveFile *f; - int i; - - hide_mouse(); - tmaj3(); - dem1(); - /* -- sauvegarde du fichier 'sauve#n.mor' -- */ //Translation: save file 'sauve%d.mor' - for (i = 0; i <= 389; i ++) bufcha[i] = tabdon[i + acha]; - s1 = s; - if (s1.mlieu == 26) s1.mlieu = 15; - - Common::String saveName = Common::String::format("sav%d.mor", n); - f = g_system->getSavefileManager()->openForSaving(saveName); - - Common::Serializer sz(NULL, f); - sync_save(sz); - - f->finalize(); - delete f; - - dem2(); - show_mouse(); -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/disk.h b/engines/mortevielle/disk.h deleted file mode 100644 index 06df8e029a..0000000000 --- a/engines/mortevielle/disk.h +++ /dev/null @@ -1,39 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_DISK_H -#define MORTEVIELLE_DISK_H - -namespace Mortevielle { - -extern void dem1(); -extern void takesav(int n); -extern void ld_game(int n); -extern void sv_game(int n); - -} // End of namespace Mortevielle -#endif diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 2d16106e0c..28c6c7fc6d 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -6,7 +6,6 @@ MODULE_OBJS := \ asm.o \ boite.o \ detection.o \ - disk.o \ droite.o \ graphics.o \ keyboard.o \ @@ -22,6 +21,7 @@ MODULE_OBJS := \ parole2.o \ prog.o \ ques.o \ + saveload.o \ sound.o \ sprint.o \ taffich.o \ diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 35d71c92aa..cbe2613716 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -21,6 +21,7 @@ */ #include "common/system.h" +#include "common/config-manager.h" #include "common/debug-channels.h" #include "engines/util.h" #include "engines/engine.h" @@ -28,16 +29,20 @@ #include "graphics/palette.h" #include "graphics/pixelformat.h" #include "mortevielle/mortevielle.h" +#include "mortevielle/actions.h" +#include "mortevielle/alert.h" #include "mortevielle/asm.h" -#include "mortevielle/disk.h" #include "mortevielle/keyboard.h" #include "mortevielle/level15.h" +#include "mortevielle/menu.h" #include "mortevielle/mor.h" #include "mortevielle/mor2.h" #include "mortevielle/mouse.h" #include "mortevielle/ovd1.h" #include "mortevielle/parole2.h" #include "mortevielle/prog.h" +#include "mortevielle/saveload.h" +#include "mortevielle/taffich.h" #include "mortevielle/var_mor.h" namespace Mortevielle { @@ -50,15 +55,58 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g g_vm = this; _lastGameFrame = 0; _mouseClick = false; + _inMainGameLoop = false; } MortevielleEngine::~MortevielleEngine() { } +/** + * Specifies whether the engine supports given features + */ bool MortevielleEngine::hasFeature(EngineFeature f) const { - return false; + return + (f == kSupportsRTL) || + (f == kSupportsLoadingDuringRuntime) || + (f == kSupportsSavingDuringRuntime); +} + +/** + * Return true if a game can currently be loaded + */ +bool MortevielleEngine::canLoadGameStateCurrently() { + // Saving is only allowed in the main game event loop + return _inMainGameLoop; } +/** + * Return true if a game can currently be saved + */ +bool MortevielleEngine::canSaveGameStateCurrently() { + // Loading is only allowed in the main game event loop + return _inMainGameLoop; +} + +/** + * Load in a savegame at the specified slot number + */ +Common::Error MortevielleEngine::loadGameState(int slot) { + return _savegameManager.loadGame(slot); +} + +/** + * Save the current game + */ +Common::Error MortevielleEngine::saveGameState(int slot, const Common::String &desc) { + if (slot == 0) + return Common::kWritingFailed; + + return _savegameManager.saveGame(slot, desc); +} + +/** + * Initialise the game state + */ Common::ErrorCode MortevielleEngine::initialise() { // Initialise graphics mode initGraphics(SCREEN_WIDTH, SCREEN_HEIGHT, true); @@ -361,12 +409,23 @@ Common::Error MortevielleEngine::run() { if (err != Common::kNoError) return err; - // Show the game introduction - showIntroduction(); + // Check for a savegame + int loadSlot = 0; + if (ConfMan.hasKey("save_slot")) { + int gameToLoad = ConfMan.getInt("save_slot"); + if (gameToLoad >= 1 && gameToLoad <= 999) + loadSlot = gameToLoad; + } + + if (loadSlot == 0) + // Show the game introduction + showIntroduction(); + // Either load the initial game state savegame, or the specified savegame number adzon(); - takesav(0); + _savegameManager.takesav(loadSlot); + // Run the main game loop mainGame(); return Common::kNoError; @@ -425,4 +484,116 @@ void MortevielleEngine::mainGame() { } while (!arret); } +/** + * This method handles repeatedly calling a sub-method to wait for a user action and then handling it + */ +void MortevielleEngine::tjouer() { + antegame(); + do { + tecran(); + CHECK_QUIT; + } while (!((arret) || (solu) || (perdu))); + if (solu) + tmaj1(); + else if (perdu) + tencore(); +} + +/** + * Waits for the user to select an action, and then handles it + */ +void MortevielleEngine::tecran() { + const char idem[] = "Idem"; + const int lim = 20000; + int temps = 0; + char inkey = '\0'; + bool oo, funct = 0; + + clsf3(); + oo = false; + ctrm = 0; + if (! iesc) { + draw_menu(); + imen = true; + temps = 0; + key = 0; + funct = false; + inkey = '.'; + + _inMainGameLoop = true; + do { + mdn(); + tinke(); + mov_mouse(funct, inkey); + CHECK_QUIT; + temps = temps + 1; + } while (!((choisi) || (temps > lim) || (funct) || (anyone))); + _inMainGameLoop = false; + + erase_menu(); + imen = false; + if ((inkey == '\1') || (inkey == '\3') || (inkey == '\5') || (inkey == '\7') || (inkey == '\11')) { + change_gd((uint)pred(int, ord(inkey)) >> 1); + return; + } + if (choisi && (msg[3] == sauve)) { + Common::String saveName = Common::String::format("Savegame #%d", msg[4] & 7); + g_vm->_savegameManager.saveGame(msg[4] & 7, saveName); + } + if (choisi && (msg[3] == charge)) + g_vm->_savegameManager.loadGame((msg[4] & 7) - 1); + if (inkey == '\103') { /* F9 */ + temps = do_alert(stpou, 1); + return; + } else if (inkey == '\77') { + if ((mnumo != no_choice) && ((msg[3] == action) || (msg[3] == saction))) { + msg[4] = mnumo; + ecr3(idem); + } else return; + } else if (inkey == '\104') { + if ((x != 0) && (y != 0)) num = 9999; + return; + } + } + if (inkey == '\73') { + arret = true; + tmaj3(); + } else { + if ((funct) && (inkey != '\77')) return; + if (temps > lim) { + repon(2, 141); + if (num == 9999) num = 0; + } else { + mnumo = msg[3]; + if ((msg[3] == action) || (msg[3] == saction)) mnumo = msg[4]; + if (! anyone) { + if ((fouil) || (obpart)) { + if (y_s < 12) return; + if ((msg[4] == sonder) || (msg[4] == soulever)) { + oo = true; + if ((msg[4] == soulever) || (obpart)) { + finfouil(); + caff = s.mlieu; + crep = 998; + } else tsuiv(); + mennor(); + } + } + } + do { + if (! oo) tsitu(); + if ((ctrm == 0) && (! perdu) && (! solu)) { + taffich(); + if (okdes) { + okdes = false; + dessin(0); + } + if ((! syn) || (col)) repon(2, crep); + } + } while (!(! syn)); + if (ctrm != 0) tctrm(); + } + } +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 863cbdb95e..6dad5a0a79 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -33,6 +33,7 @@ #include "common/error.h" #include "graphics/surface.h" #include "mortevielle/graphics.h" +#include "mortevielle/saveload.h" #include "mortevielle/sound.h" namespace Mortevielle { @@ -56,6 +57,7 @@ private: uint32 _lastGameFrame; bool _mouseClick; Common::Point _mousePos; + bool _inMainGameLoop; Common::ErrorCode initialise(); Common::ErrorCode loadMortDat(); @@ -65,6 +67,8 @@ private: void initMouse(); void showIntroduction(); void mainGame(); + void tjouer(); + void tecran(); void divers(int np, bool b); public: ScreenSurface _screenSurface; @@ -72,10 +76,15 @@ public: GfxSurface _backgroundSurface; Common::RandomSource _randomSource; SoundManager _soundManager; + SavegameManager _savegameManager; public: MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc); ~MortevielleEngine(); virtual bool hasFeature(EngineFeature f) const; + virtual bool canLoadGameStateCurrently(); + virtual bool canSaveGameStateCurrently(); + virtual Common::Error loadGameState(int slot); + virtual Common::Error saveGameState(int slot, const Common::String &desc); virtual Common::Error run(); uint32 getGameFlags() const; diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 5f2fd3cb65..ba2c4ded91 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -219,100 +219,6 @@ L2: mennor(); } -void sv_game(int n); - -void ld_game(int n); - -void tecran() { - const char idem[] = "Idem"; - const int lim = 20000; - int temps = 0; - char inkey = '\0'; - bool oo, funct = 0; - - clsf3(); - oo = false; - ctrm = 0; - if (! iesc) { - draw_menu(); - imen = true; - temps = 0; - key = 0; - funct = false; - inkey = '.'; - - do { - mdn(); - tinke(); - mov_mouse(funct, inkey); - CHECK_QUIT; - temps = temps + 1; - } while (!((choisi) || (temps > lim) || (funct) || (anyone))); - - erase_menu(); - imen = false; - if ((inkey == '\1') || (inkey == '\3') || (inkey == '\5') || (inkey == '\7') || (inkey == '\11')) { - change_gd((uint)pred(int, ord(inkey)) >> 1); - return; - } - if (choisi && (msg[3] == sauve)) - sv_game(msg[4] & 7); - if (choisi && (msg[3] == charge)) - ld_game((msg[4] & 7) - 1); - if (inkey == '\103') { /* F9 */ - temps = do_alert(stpou, 1); - return; - } else if (inkey == '\77') { - if ((mnumo != no_choice) && ((msg[3] == action) || (msg[3] == saction))) { - msg[4] = mnumo; - ecr3(idem); - } else return; - } else if (inkey == '\104') { - if ((x != 0) && (y != 0)) num = 9999; - return; - } - } - if (inkey == '\73') { - arret = true; - tmaj3(); - } else { - if ((funct) && (inkey != '\77')) return; - if (temps > lim) { - repon(2, 141); - if (num == 9999) num = 0; - } else { - mnumo = msg[3]; - if ((msg[3] == action) || (msg[3] == saction)) mnumo = msg[4]; - if (! anyone) { - if ((fouil) || (obpart)) { - if (y_s < 12) return; - if ((msg[4] == sonder) || (msg[4] == soulever)) { - oo = true; - if ((msg[4] == soulever) || (obpart)) { - finfouil(); - caff = s.mlieu; - crep = 998; - } else tsuiv(); - mennor(); - } - } - } - do { - if (! oo) tsitu(); - if ((ctrm == 0) && (! perdu) && (! solu)) { - taffich(); - if (okdes) { - okdes = false; - dessin(0); - } - if ((! syn) || (col)) repon(2, crep); - } - } while (!(! syn)); - if (ctrm != 0) tctrm(); - } - } -} - /* NIVEAU 1 */ void theure() { @@ -326,15 +232,4 @@ void theure() { else min = 0; } - -void tjouer() { - antegame(); - do { - tecran(); - CHECK_QUIT; - } while (!((arret) || (solu) || (perdu))); - if (solu) tmaj1(); - else if (perdu) tencore(); -} - } // End of namespace Mortevielle diff --git a/engines/mortevielle/prog.h b/engines/mortevielle/prog.h index fbcd92f469..f51b2214b7 100644 --- a/engines/mortevielle/prog.h +++ b/engines/mortevielle/prog.h @@ -37,11 +37,9 @@ extern void antegame(); /* procedure PROGRAMME */ extern void tmaj3(); extern void tsitu(); -extern void tecran(); /* NIVEAU 1 */ extern void theure(); -extern void tjouer(); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp new file mode 100644 index 0000000000..d0cd603845 --- /dev/null +++ b/engines/mortevielle/saveload.cpp @@ -0,0 +1,318 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#include "common/file.h" +#include "common/system.h" +#include "mortevielle/alert.h" +#include "mortevielle/mor.h" +#include "mortevielle/mor2.h" +#include "mortevielle/mortevielle.h" +#include "mortevielle/mouse.h" +#include "mortevielle/ovd1.h" +#include "mortevielle/prog.h" +#include "mortevielle/saveload.h" +#include "mortevielle/var_mor.h" + +namespace Mortevielle { + +static const char SAVEGAME_ID[4] = { 'M', 'O', 'R', 'T' }; + +Common::String SavegameManager::generateSaveName(int slotNumber) { + return Common::String::format("sav%d.mor", slotNumber); +} + +/** + * Handle saving or loading savegame data + */ +void SavegameManager::sync_save(Common::Serializer &sz) { + sz.syncAsSint16LE(s1.conf); + sz.syncBytes((byte *)&s1.pourc[0], 11); + sz.syncBytes((byte *)&s1.teauto[0], 43); + sz.syncBytes((byte *)&s1.sjer[0], 31); + sz.syncAsSint16LE(s1.mlieu); + sz.syncAsSint16LE(s1.iboul); + sz.syncAsSint16LE(s1.ibag); + sz.syncAsSint16LE(s1.icave); + sz.syncAsSint16LE(s1.ivier); + sz.syncAsSint16LE(s1.ipuit); + sz.syncAsSint16LE(s1.derobj); + sz.syncAsSint16LE(s1.iloic); + sz.syncAsSint16LE(s1.icryp); + sz.syncAsByte(s1.ipre); + sz.syncAsByte(s1.heure); + + sz.syncBytes(bufcha, 391); +} + +/** + * Inner code for loading a saved game + */ +void SavegameManager::takesav(int n) { + int i; + Common::String st; + + // -- Load the file + Common::String filename = generateSaveName(n); + + // Try loading first from the save area + Common::SeekableReadStream *stream = g_system->getSavefileManager()->openForLoading(filename); + + // If not present, try loading from the program folder + Common::File f; + if (stream == NULL) { + if (!f.open(filename)) + error("Unable to open save file '%s'", filename); + + stream = f.readStream(f.size()); + f.close(); + } + + // Check whether it's a ScummVM saved game + char buffer[4]; + stream->read(buffer, 4); + if (!strncmp(&buffer[0], &SAVEGAME_ID[0], 4)) { + // Yes, it is, so skip over the savegame header + SavegameHeader header; + readSavegameHeader(stream, header); + delete header.thumbnail; + } else { + stream->seek(0); + } + + // Read the game contents + Common::Serializer sz(stream, NULL); + sync_save(sz); + + s = s1; + for (i = 0; i <= 389; i ++) tabdon[i + acha] = bufcha[i]; + + // Close the stream + delete stream; +} + +/** + * Load a saved game + */ +Common::Error SavegameManager::loadGame(int n) { + hide_mouse(); + maivid(); + takesav(n); + + /* Initialization */ + theure(); + dprog(); + antegame(); + show_mouse(); + return Common::kNoError; +} + +/** + * Save the game + */ +Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { + Common::OutSaveFile *f; + int i; + + hide_mouse(); + tmaj3(); + + for (i = 0; i <= 389; i ++) + bufcha[i] = tabdon[i + acha]; + s1 = s; + if (s1.mlieu == 26) + s1.mlieu = 15; + + Common::String filename = generateSaveName(n); + f = g_system->getSavefileManager()->openForSaving(filename); + + // Write out the savegame header + f->write(&SAVEGAME_ID[0], 4); + + // Write out the header + SavegameHeader header; + writeSavegameHeader(f, saveName); + + // Write out the savegame contents + Common::Serializer sz(NULL, f); + sync_save(sz); + + // Close the save file + f->finalize(); + delete f; + + dem2(); + show_mouse(); + return Common::kNoError; +} + +void SavegameManager::writeSavegameHeader(Common::OutSaveFile *out, const Common::String &saveName) { + // Write out a savegame header + out->writeByte(SAVEGAME_VERSION); + + // Write savegame name + out->writeString(saveName); + out->writeByte(0); + + // Get the active palette + uint8 thumbPalette[256 * 3]; + g_system->getPaletteManager()->grabPalette(thumbPalette, 0, 256); + + // Create a thumbnail and save it + Graphics::Surface *thumb = new Graphics::Surface(); + Graphics::Surface s = g_vm->_screenSurface.lockArea(Common::Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)); + + ::createThumbnail(thumb, (const byte *)s.pixels, SCREEN_WIDTH, SCREEN_HEIGHT, thumbPalette); + Graphics::saveThumbnail(*out, *thumb); + thumb->free(); + delete thumb; + + // Write out the save date/time + TimeDate td; + g_system->getTimeAndDate(td); + out->writeSint16LE(td.tm_year + 1900); + out->writeSint16LE(td.tm_mon + 1); + out->writeSint16LE(td.tm_mday); + out->writeSint16LE(td.tm_hour); + out->writeSint16LE(td.tm_min); +} + +bool SavegameManager::readSavegameHeader(Common::InSaveFile *in, SavegameHeader &header) { + header.thumbnail = NULL; + + // Get the savegame version + header.version = in->readByte(); + + // Read in the save name + header.saveName.clear(); + char ch; + while ((ch = (char)in->readByte()) != '\0') + header.saveName += ch; + + // Get the thumbnail + header.thumbnail = Graphics::loadThumbnail(*in); + if (!header.thumbnail) + return false; + + // Read in save date/time + header.saveYear = in->readSint16LE(); + header.saveMonth = in->readSint16LE(); + header.saveDay = in->readSint16LE(); + header.saveHour = in->readSint16LE(); + header.saveMinutes = in->readSint16LE(); + + return true; +} + +SaveStateList SavegameManager::listSaves(const char *target) { + Common::String pattern = "sav*.mor"; + Common::StringArray files = g_system->getSavefileManager()->listSavefiles(pattern); + sort(files.begin(), files.end()); // Sort (hopefully ensuring we are sorted numerically..) + + SaveStateList saveList; + for (Common::StringArray::const_iterator file = files.begin(); file != files.end(); ++file) { + // Obtain the last 3 digits of the filename, since they correspond to the save slot + const Common::String &fname = *file; + int slotNumber = atoi(fname.c_str() + 3); + + Common::InSaveFile *in = g_system->getSavefileManager()->openForLoading(fname); + if (in) { + // There can be two types of savegames: original interpreter savegames, and ScummVM savegames. + // Original interpreter savegames are 497 bytes, and still need to be supported because the + // initial game state is stored as a savegame + bool validFlag = false; + Common::String saveDescription; + + char buffer[4]; + in->read(buffer, 4); + if (!strncmp(&buffer[0], &SAVEGAME_ID[0], 4)) { + // ScummVm savegame. Read in the header to get the savegame name + SavegameHeader header; + validFlag = readSavegameHeader(in, header); + + if (validFlag) { + delete header.thumbnail; + saveDescription = header.saveName; + } + } else if (file->size() == 497) { + // Form an appropriate savegame name + saveDescription = (slotNumber == 0) ? "Initial game state" : + Common::String::format("Savegame #%d", slotNumber); + validFlag = true; + } + + if (validFlag) + // Got a valid savegame + saveList.push_back(SaveStateDescriptor(slotNumber, saveDescription)); + + delete in; + } + } + + return saveList; +} + +SaveStateDescriptor SavegameManager::querySaveMetaInfos(int slot) { + Common::String fileName = Mortevielle::SavegameManager::generateSaveName(slot); + Common::InSaveFile *f = g_system->getSavefileManager()->openForLoading(fileName); + + if (f) { + // Check to see if it's a ScummVM savegame or not + char buffer[4]; + f->read(buffer, 4); + + bool hasHeader = !strncmp(&buffer[0], &SAVEGAME_ID[0], 4); + + if (!hasHeader) { + // Original savegame perhaps? + delete f; + + SaveStateDescriptor desc(slot, Common::String::format("Savegame #%d", slot)); + desc.setDeletableFlag(slot != 0); + desc.setWriteProtectedFlag(slot == 0); + return desc; + } else { + // Get the savegame header information + SavegameHeader header; + readSavegameHeader(f, header); + delete f; + + // Create the return descriptor + SaveStateDescriptor desc(slot, header.saveName); + desc.setDeletableFlag(true); + desc.setWriteProtectedFlag(false); + desc.setThumbnail(header.thumbnail); + desc.setSaveDate(header.saveYear, header.saveMonth, header.saveDay); + desc.setSaveTime(header.saveHour, header.saveMinutes); + + return desc; + } + } + + return SaveStateDescriptor(); +} + +} // End of namespace Mortevielle diff --git a/engines/mortevielle/saveload.h b/engines/mortevielle/saveload.h new file mode 100644 index 0000000000..7f2edd8b53 --- /dev/null +++ b/engines/mortevielle/saveload.h @@ -0,0 +1,66 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_SAVELOAD_H +#define MORTEVIELLE_SAVELOAD_H + +#include "common/savefile.h" +#include "common/serializer.h" +#include "graphics/palette.h" +#include "graphics/scaler.h" +#include "graphics/thumbnail.h" + +#define SAVEGAME_VERSION 1 + +namespace Mortevielle { + +struct SavegameHeader { + uint8 version; + Common::String saveName; + Graphics::Surface *thumbnail; + int saveYear, saveMonth, saveDay; + int saveHour, saveMinutes; + int totalFrames; +}; + +class SavegameManager { +private: + void sync_save(Common::Serializer &sz); +public: + void takesav(int n); + Common::Error loadGame(int n); + Common::Error saveGame(int n, const Common::String &saveName); + + static void writeSavegameHeader(Common::OutSaveFile *out, const Common::String &saveName); + static bool readSavegameHeader(Common::InSaveFile *in, SavegameHeader &header); + static Common::String generateSaveName(int slotNumber); + static SaveStateList listSaves(const char *target); + static SaveStateDescriptor querySaveMetaInfos(int slot); +}; + +} // End of namespace Mortevielle +#endif -- cgit v1.2.3 From 231315420b0ac7b199237a9221cae1445edf80a9 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 14:22:56 +1100 Subject: MORTEVIELLE: Renamed main loop methods, along with quit/end/lose variables --- engines/mortevielle/actions.cpp | 20 +++++++++++++------ engines/mortevielle/actions.h | 4 ++-- engines/mortevielle/mor2.cpp | 5 +++-- engines/mortevielle/mortevielle.cpp | 39 ++++++++++++++++++++++--------------- engines/mortevielle/mortevielle.h | 14 ++++++++++--- engines/mortevielle/prog.cpp | 18 ++++++++++------- engines/mortevielle/prog.h | 1 - engines/mortevielle/saveload.cpp | 2 +- engines/mortevielle/var_mor.cpp | 2 -- engines/mortevielle/var_mor.h | 3 --- 10 files changed, 65 insertions(+), 43 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 7e5143328d..fe0e8f4d89 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -602,7 +602,8 @@ L2: repon(2, 167); parole(7, 9, 1); quel = do_alert(stouinon, 1); - if (quel == 1) solu = true; + if (quel == 1) + g_vm->_endGame = true; else crep = 168; } if ((s.mlieu == 17) && (s.ivier == 143)) { @@ -1186,9 +1187,12 @@ L2: num = 0; } -/* NIVEAU 2 */ -/* overlay */ void tmaj1() { /* Le jeu est termin‚ !!! */ //Translation: The game is over!!! - arret = true; +/** + * The game is over + * @remarks Originally called 'tmaj1' + */ +void MortevielleEngine::endGame() { + _quitGame = true; tlu(13, 152); maivid(); clsf1(); @@ -1218,7 +1222,11 @@ L2: inzon(); } -/* overlay */ void tencore() { /* Perdu !!! */ //Translation: You lost! +/** + * You lost! + * @remarks Originally called 'tencore' + */ +void MortevielleEngine::loseGame() { int quel; clsf2(); @@ -1235,7 +1243,7 @@ L2: jou = 0; repon(2, 180); quel = do_alert(stouinon, 1); - arret = (quel != 1); + _quitGame = (quel != 1); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/actions.h b/engines/mortevielle/actions.h index 904a58d87c..196e5a5de6 100644 --- a/engines/mortevielle/actions.h +++ b/engines/mortevielle/actions.h @@ -61,8 +61,8 @@ extern void tparler(); extern void tsentir(); extern void tgratter(); /* NIVEAU 2 */ -extern void tmaj1(); -extern void tencore(); +extern void endGame(); +extern void loseGame(); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 10fe6e9937..c71c850286 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -290,8 +290,9 @@ void tperd() { iouv = 0; mchai = 0; mfouen(); - if (! blo) t11(21, cx); - perdu = true; + if (!blo) + t11(21, cx); + g_vm->_loseGame = true; clsf1(); boite(60, 35, 400, 50, 15); repon(9, crep); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index cbe2613716..eed4b5156b 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -56,6 +56,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _lastGameFrame = 0; _mouseClick = false; _inMainGameLoop = false; + _quitGame = false; } MortevielleEngine::~MortevielleEngine() { @@ -150,7 +151,6 @@ Common::ErrorCode MortevielleEngine::initialise() { init_mouse(); init_lieu(); - arret = false; sonoff = false; f2_all = false; textcolor(9); @@ -464,7 +464,8 @@ void MortevielleEngine::divers(int np, bool b) { } /** - * Main game loop + * Main game loop. Handles potentially playing the game multiple times, such as if the player + * loses, and chooses to start playing the game again. */ void MortevielleEngine::mainGame() { if (rech_cfiec) charge_cfiec(); @@ -478,31 +479,37 @@ void MortevielleEngine::mainGame() { hirs(); dessine_rouleau(); show_mouse(); + + // Loop to play the game do { - tjouer(); + playGame(); CHECK_QUIT; - } while (!arret); + } while (!_quitGame); } /** - * This method handles repeatedly calling a sub-method to wait for a user action and then handling it + * This method handles playing a loaded game + * @remarks Originally called tojouer */ -void MortevielleEngine::tjouer() { - antegame(); +void MortevielleEngine::playGame() { + gameLoaded(); + + // Loop handling actions until the game has to be quit, or show the lose or end sequence do { - tecran(); + handleAction(); CHECK_QUIT; - } while (!((arret) || (solu) || (perdu))); - if (solu) - tmaj1(); - else if (perdu) - tencore(); + } while (!((_quitGame) || (_endGame) || (_loseGame))); + if (_endGame) + endGame(); + else if (_loseGame) + loseGame(); } /** * Waits for the user to select an action, and then handles it + * @remarks Originally called tecran */ -void MortevielleEngine::tecran() { +void MortevielleEngine::handleAction() { const char idem[] = "Idem"; const int lim = 20000; int temps = 0; @@ -556,7 +563,7 @@ void MortevielleEngine::tecran() { } } if (inkey == '\73') { - arret = true; + _quitGame = true; tmaj3(); } else { if ((funct) && (inkey != '\77')) return; @@ -582,7 +589,7 @@ void MortevielleEngine::tecran() { } do { if (! oo) tsitu(); - if ((ctrm == 0) && (! perdu) && (! solu)) { + if ((ctrm == 0) && (! _loseGame) && (! _endGame)) { taffich(); if (okdes) { okdes = false; diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 6dad5a0a79..9ca8258b8d 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -57,7 +57,7 @@ private: uint32 _lastGameFrame; bool _mouseClick; Common::Point _mousePos; - bool _inMainGameLoop; + bool _inMainGameLoop; // Flag when the main game loop is active Common::ErrorCode initialise(); Common::ErrorCode loadMortDat(); @@ -67,8 +67,8 @@ private: void initMouse(); void showIntroduction(); void mainGame(); - void tjouer(); - void tecran(); + void playGame(); + void handleAction(); void divers(int np, bool b); public: ScreenSurface _screenSurface; @@ -77,6 +77,10 @@ public: Common::RandomSource _randomSource; SoundManager _soundManager; SavegameManager _savegameManager; + + bool _quitGame; // Quit game flag. Originally called 'arret' + bool _endGame; // End game flag. Originally called 'solu' + bool _loseGame; // Lose game flag. Originally called 'perdu' public: MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc); ~MortevielleEngine(); @@ -95,6 +99,10 @@ public: bool getMouseClick() const { return _mouseClick; } void setMouseClick(bool v) { _mouseClick = v; } void delay(int amount); + + void endGame(); + void loseGame(); + void gameLoaded(); }; extern MortevielleEngine *g_vm; diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index ba2c4ded91..9d8b8f91a1 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -57,7 +57,11 @@ namespace Mortevielle { menu_aff(); } -/* overlay */ void antegame() { +/** + * Called when a savegame has been loaded. + * @remarks Originally called 'antegame' + */ +void MortevielleEngine::gameLoaded() { int k; bool test[3]; char g[8]; @@ -66,7 +70,7 @@ namespace Mortevielle { hide_mouse(); imen = false; g[1] = 'M'; - perdu = true; + _loseGame = true; anyone = false; okdes = true; test[0] = false; @@ -112,8 +116,8 @@ namespace Mortevielle { test[k] = true; okdes = false; - solu = true; - perdu = false; + _endGame = true; + _loseGame = false; fouil = false; } person(); @@ -122,7 +126,7 @@ namespace Mortevielle { afdes(0); repon(2, crep); clsf3(); - solu = false; + _endGame = false; tmlieu(s.mlieu); modinv(); if (s.derobj != 0) modobj2(s.derobj + 400, test[1], test[2]); @@ -201,7 +205,7 @@ L1: if ((((h == 12) || (h == 13) || (h == 19)) && (s.mlieu != 10)) || ((h > 0) && (h < 6) && (s.mlieu != 0))) s.conf = s.conf + 1; if (((s.mlieu < 16) || (s.mlieu > 19)) && (s.mlieu != 23) - && (s.mlieu != 0) && (s.derobj != 152) && (! perdu)) { + && (s.mlieu != 0) && (s.derobj != 152) && (!g_vm->_loseGame)) { if ((s.conf > 99) && (h > 8) && (h < 16)) { crep = 1501; tperd(); @@ -210,7 +214,7 @@ L1: crep = 1508; tperd(); } - if ((j > 1) && (h > 8) && (! perdu)) { + if ((j > 1) && (h > 8) && (!g_vm->_loseGame)) { crep = 1502; tperd(); } diff --git a/engines/mortevielle/prog.h b/engines/mortevielle/prog.h index f51b2214b7..e88b943307 100644 --- a/engines/mortevielle/prog.h +++ b/engines/mortevielle/prog.h @@ -31,7 +31,6 @@ namespace Mortevielle { extern void change_gd(int ngd); -extern void antegame(); /* NIVEAU 3 */ /* procedure PROGRAMME */ diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index d0cd603845..4f37c2839b 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -125,7 +125,7 @@ Common::Error SavegameManager::loadGame(int n) { /* Initialization */ theure(); dprog(); - antegame(); + g_vm->gameLoaded(); show_mouse(); return Common::kNoError; } diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index bd432124db..5ace0614bb 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -112,7 +112,6 @@ bool blo, imen, cache, iesc, - perdu, col, syn, fouil, @@ -120,7 +119,6 @@ bool blo, tesok, obpart, okdes, - solu, arret, anyone, brt, diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 5d62e77a1c..eea89947b4 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -281,7 +281,6 @@ extern bool blo, imen, cache, iesc, - perdu, col, syn, fouil, @@ -289,8 +288,6 @@ extern bool blo, tesok, obpart, okdes, - solu, - arret, anyone, brt, rect, -- cgit v1.2.3 From e57a6a8c07bac4d9b69d89baca638beda34485d6 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 19:36:13 +1100 Subject: MORTEVIELLE: Added list of static executable strings to create_mortdat tool --- devtools/create_mortdat/create_mortdat.cpp | 164 ++++++++++++++++++++++++++++- dists/engine-data/mort.dat | Bin 738 -> 1797 bytes 2 files changed, 163 insertions(+), 1 deletion(-) diff --git a/devtools/create_mortdat/create_mortdat.cpp b/devtools/create_mortdat/create_mortdat.cpp index aa7da0169a..773ddaeeed 100644 --- a/devtools/create_mortdat/create_mortdat.cpp +++ b/devtools/create_mortdat/create_mortdat.cpp @@ -91,6 +91,9 @@ public: uint32 vTemp = TO_LE_32(v); write(&vTemp, sizeof(uint32)); } + void writeString(const char *s) { + write(s, strlen(s) + 1); + } uint32 pos() { return ftell(f); } @@ -112,7 +115,10 @@ void openOutputFile(const char *outFilename) { outputFile.writeByte(VERSION_MINOR); } -void process() { +/** + * Write out the data for the font + */ +void writeFontBlock() { byte checkBuffer[7]; byte fontBuffer[121 * 6]; @@ -138,6 +144,162 @@ void process() { outputFile.write(fontBuffer, 121 * 6); } +void writeStaticStrings(const char **strings, int languageId) { + // Write out a section header + char sStaticStrings[4] = { 'S', 'S', 'T', 'R' }; + outputFile.write(sStaticStrings, 4); + + // Figure out the block size + int blockSize = 1; + const char **s = &strings[0]; + while (*s) { + blockSize += strlen(*s) + 1; + ++s; + } + + outputFile.writeWord(blockSize); + + // Write out a byte indicating the language for this block + outputFile.writeByte(languageId); + + // Write out each of the strings + s = &strings[0]; + while (*s) { + outputFile.writeString(*s); + ++s; + } +} + +/** + * Write out the French strings previously hard-coded into the application + */ +void writeEnglishStaticStrings() { + const char *string_list[] = { + "[2][ ][YES][NO]", + "Go to", + "Someone enters, looks surised, but says nothing", + "Cool", + " Lourde ", + "Malsaine", + "Idem", + "You", + "are", + "Alone", + + "Gosh! You hear some noise...", + " | You should have noticed, | ", + "% of hints...", + "Do you want to wake up?", + "OK", + "", + " Save", + + " Load", + " Restart ", + "F3: More", + "F8: Restart", + "Hide self", + "take", + " probe ", + " raise ", + " -SUITE- ", + " -STOP- ", + "[1] [So, use the DEP menu] [Ok]", + "lift", + "read", + + "look", + "search", + "open", + "put", + "turn", + "tie", + "close", + "hit", + "pose", + "smash", + + "smell", + "scratch", + "probe", + "[1] [ | Before, use the DEP menu...] [Ok]", + "& day", + NULL + }; + + writeStaticStrings(string_list, 1); +} + +/** + * Write out the French strings previously hard-coded into the application + */ +void writeFrenchStaticStrings() { + const char *string_list[] = { + "[2][ ][OUI][NON]", + "aller", + "quelqu'un entre, parait ‚tonn‚ mais ne dit rien", + "Cool", + " Lourde ", + "Malsaine", + "Idem", + "Vous", + "tes", + "SEUL", + + "Mince! Vous entendez du bruit...", + " | Vous devriez avoir remarqu‚| ", + "% des indices...", + "D‚sirez-vous vous r‚veiller?", + "OK", + "", + " Sauvegarde", + + " Chargement", + " Recommence ", + "F3: Encore", + "F8: Suite", + "se cacher", + + "prendre", + " sonder ", + "soulever", + " -SUITE- ", + " -STOP- ", + "[1][Alors, utilisez le menu DEP...][ok]", + "soulever", + "lire", + + "regarder", + "fouiller", + "ouvrir", + "mettre", + "tourner", + "attacher", + "fermer", + "frapper", + "poser", + "d‚foncer", + + "sentir", + "gratter", + "sonder", + "[1][ | Avant, utilisez le menu DEP...][ok]", + "& jour", + NULL + }; + + writeStaticStrings(string_list, 0); +} + +void process() { + writeFontBlock(); + writeEnglishStaticStrings(); + writeFrenchStaticStrings(); +} + +/** + * Main method + */ int main(int argc, char *argv[]) { if (argc != 3) { printf("Format: input_filename output_filename\n", argv[0]); diff --git a/dists/engine-data/mort.dat b/dists/engine-data/mort.dat index ebfb8a8e0e..8e0171fe5a 100644 Binary files a/dists/engine-data/mort.dat and b/dists/engine-data/mort.dat differ -- cgit v1.2.3 From c81b81692b62c5fefe54e8d4399cd0a106c53921 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 19:40:03 +1100 Subject: MORTEVIELLE: Added support for using the static string list added to mort.dat --- engines/mortevielle/actions.cpp | 77 ++++++++++++++++++++-------------- engines/mortevielle/detection.cpp | 3 ++ engines/mortevielle/detection_tables.h | 20 +++++++++ engines/mortevielle/menu.cpp | 16 +++---- engines/mortevielle/mor.cpp | 43 +++++++++---------- engines/mortevielle/mor2.cpp | 32 +++++++++----- engines/mortevielle/mortevielle.cpp | 38 ++++++++++++++++- engines/mortevielle/mortevielle.h | 25 +++++++++++ engines/mortevielle/var_mor.cpp | 11 ----- engines/mortevielle/var_mor.h | 7 ---- 10 files changed, 181 insertions(+), 91 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index fe0e8f4d89..cd3a7b0df8 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -42,9 +42,6 @@ namespace Mortevielle { -/* NIVEAU 4 */ -const char stouinon[] = "[2][ ][OUI][NON]"; //Translation: [2] [ ] [YES] [NO] - /* overlay */ void taller() { //int mx, cx, cy; @@ -57,7 +54,8 @@ void taller() { repon(2, s.mlieu); } if ((s.mlieu == 15) && (msg[4] == depl[6])) { - if (! syn) ecr3("aller"); //Translation: Go to + if (!syn) + ecr3(g_vm->getString(S_GO_TO)); tfleche(); if (iesc) okdes = false; if ((anyone) || (iesc)) return; @@ -170,7 +168,8 @@ L2: } return; } - if (! syn) ecr3("prendre"); //Translation: Take + if (!syn) + ecr3(g_vm->getString(S_TAKE)); tfleche(); if ((anyone) || (iesc)) return; if (caff == 3) { @@ -257,7 +256,8 @@ L2: { int cx; - if (! syn) ecr3("soulever"); //Translation: Lift + if (!syn) + ecr3(g_vm->getString(S_LIFT)); tfleche(); if ((anyone) || (iesc)) return; tcoord(3); @@ -283,11 +283,13 @@ L2: if (caff > 99) st4(caff); else { - if (! syn) ecr3("lire"); //Translation: Read + if (!syn) + ecr3(g_vm->getString(S_READ)); tfleche(); if (!(anyone) && !(iesc)) { tcoord(4); - if (num != 0) crep = 107; + if (num != 0) + crep = 107; } } } @@ -304,7 +306,8 @@ L2: crep = 103; return; } - if (! syn) ecr3("regarder"); //Translation: Look + if (!syn) + ecr3(g_vm->getString(S_LOOK)); tfleche(); if ((anyone) || (iesc)) return; tcoord(5); @@ -365,7 +368,8 @@ L2: st7(caff); return; } - if (! syn) ecr3("fouiller"); //Translation: Search + if (!syn) + ecr3(g_vm->getString(S_SEARCH)); tfleche(); if (anyone || iesc) return; if (s.mlieu == 23) { @@ -432,7 +436,8 @@ L2: /* overlay */ void touvrir() { int cx, haz; - if (! syn) ecr3("ouvrir"); //Translation: Open + if (!syn) + ecr3(g_vm->getString(S_OPEN)); if (caff == 26) { if (ment != 0) { msg[4] = entrer; @@ -493,7 +498,8 @@ L2: crep = 186; return; } - if (! syn) ecr3("mettre"); //Translation: Put + if (!syn) + ecr3(g_vm->getString(S_PUT)); tfleche(); if (iesc) crep = 998; if ((anyone) || (iesc)) return; @@ -523,7 +529,7 @@ L2: repon(2, 165); maivid(); parole(6, -9, 1); - quel = do_alert(stouinon, 1); + quel = do_alert(g_vm->getString(S_YES_NO), 1); if (quel == 1) { deline(582, st, tay); i = do_alert(delig, 1); @@ -592,7 +598,8 @@ L2: crep = 149; return; } - if (! syn) ecr3("tourner"); //Translation: Turn + if (!syn) + ecr3(g_vm->getString(S_TURN)); tfleche(); if ((anyone) || (iesc)) return; tcoord(9); @@ -601,7 +608,7 @@ L2: if ((s.mlieu == 13) && (s.ibag == 159) && (s.iboul == 141)) { repon(2, 167); parole(7, 9, 1); - quel = do_alert(stouinon, 1); + quel = do_alert(g_vm->getString(S_YES_NO), 1); if (quel == 1) g_vm->_endGame = true; else crep = 168; @@ -610,7 +617,7 @@ L2: repon(2, 175); clsf3(); parole(6, -9, 1); - quel = do_alert(stouinon, 1); + quel = do_alert(g_vm->getString(S_YES_NO), 1); if (quel == 1) { s.mlieu = 16; affrep(); @@ -620,7 +627,8 @@ L2: } /* overlay */ void tcacher() { - if (! syn) ecr3("se cacher"); //Translation: Hide self + if (!syn) + ecr3(g_vm->getString(S_HIDE_SELF)); tfleche(); if (!(anyone) && !(iesc)) { tcoord(10); @@ -635,7 +643,8 @@ L2: /* overlay */ void tattacher() { if (s.derobj == 0) crep = 186; else { - if (! syn) ecr3("attacher"); //Translation: Tie + if (!syn) + ecr3(g_vm->getString(S_TIE)); tfleche(); if (!(anyone) && !(iesc)) { tcoord(8); @@ -655,7 +664,8 @@ L2: /* overlay */ void tfermer() { int cx, chai; - if (! syn) ecr3("fermer"); //Translation: Close + if (!syn) + ecr3(g_vm->getString(S_CLOSE)); if (caff < 26) { tfleche(); if (iesc) crep = 998; @@ -684,9 +694,10 @@ L2: /* overlay */ void tfrapper() { int l, p, haz; - if (! syn) ecr3("frapper"); //Translation: Hit + if (!syn) + ecr3(g_vm->getString(S_HIT)); if (s.mlieu == 15) { - l = do_alert("[1][ | Avant, utilisez le menu DEP...][ok]", 1); //Translation: [1] [ | Before, use the DEP menu...] [Ok] + l = do_alert(g_vm->getString(S_BEFORE_USE_DEP_MENU), 1); return; } if (s.mlieu < 25) { @@ -716,7 +727,8 @@ L2: /* overlay */ void tposer() { int cx, chai; - if (! syn) ecr3("poser"); + if (!syn) + ecr3(g_vm->getString(S_POSE)); if (s.derobj == 0) crep = 186; else { if (caff > 99) { @@ -884,7 +896,6 @@ L2: } /* overlay */ void tdormir() { - const char m1[] = "D‚sirez-vous vous r‚veiller?"; //Translation: Do you want to wake up? int z, j, h, m, quel; if ((s.mlieu > 15) && (s.mlieu < 26)) { @@ -902,7 +913,7 @@ L2: clsf3(); clsf2(); ecrf2(); - ecr2(m1); + ecr2(g_vm->getString(S_WANT_TO_WAKE_UP)); calch(j, h, m); do { if (h < 8) { @@ -916,7 +927,7 @@ L2: h = h + 1; if (h > 23) h = 0; tinke(); - quel = do_alert(stouinon, 1); + quel = do_alert(g_vm->getString(S_YES_NO), 1); anyone = false; } while (!(quel == 1)); crep = 998; @@ -924,7 +935,8 @@ L2: } /* overlay */ void tdefoncer() { - if (! syn) ecr3("d‚foncer"); //Translation: Smash + if (!syn) + ecr3(g_vm->getString(S_SMASH)); if (caff < 25) tfleche(); if ((! anyone) && (! iesc)) if (s.mlieu != 26) crep = 997; @@ -977,14 +989,15 @@ L2: return; } repon(2, 102); - quel = do_alert(stouinon, 1); + quel = do_alert(g_vm->getString(S_YES_NO), 1); } while (!(quel == 2)); crep = 998; if (! anyone) tinke(); } /* overlay */ void tsonder() { - if (! syn) ecr3("sonder"); //Translation: Probe + if (!syn) + ecr3(g_vm->getString(S_PROBE2)); if (caff < 27) { tfleche(); if (!(anyone) && (! iesc)) crep = 145; @@ -1170,7 +1183,8 @@ L2: /* overlay */ void tsentir() { crep = 119; if (caff < 26) { - if (! syn) ecr3("sentir"); //Translation: Smell + if (!syn) + ecr3(g_vm->getString(S_SMELL)); tfleche(); if (!(anyone) && !(iesc)) if (caff == 16) crep = 153; @@ -1181,7 +1195,8 @@ L2: /* overlay */ void tgratter() { crep = 155; if (caff < 27) { - if (! syn) ecr3("gratter"); //Translation: Scratch + if (!syn) + ecr3(g_vm->getString(S_SCRATCH)); tfleche(); } num = 0; @@ -1242,7 +1257,7 @@ void MortevielleEngine::loseGame() { heu = 10; jou = 0; repon(2, 180); - quel = do_alert(stouinon, 1); + quel = do_alert(g_vm->getString(S_YES_NO), 1); _quitGame = (quel != 1); } diff --git a/engines/mortevielle/detection.cpp b/engines/mortevielle/detection.cpp index 35e5cada81..5997b4c349 100644 --- a/engines/mortevielle/detection.cpp +++ b/engines/mortevielle/detection.cpp @@ -29,6 +29,9 @@ namespace Mortevielle { uint32 MortevielleEngine::getGameFlags() const { return _gameDescription->flags; } + +Common::Language MortevielleEngine::getLanguage() const { return _gameDescription->language; } + } static const PlainGameDescriptor MortevielleGame[] = { diff --git a/engines/mortevielle/detection_tables.h b/engines/mortevielle/detection_tables.h index 7ceb40d524..307d125156 100644 --- a/engines/mortevielle/detection_tables.h +++ b/engines/mortevielle/detection_tables.h @@ -23,6 +23,7 @@ namespace Mortevielle { static const ADGameDescription MortevielleGameDescriptions[] = { + // French { "mortevielle", "", @@ -36,6 +37,8 @@ static const ADGameDescription MortevielleGameDescriptions[] = { ADGF_NO_FLAGS, GUIO0() }, + + // German { "mortevielle", "", @@ -49,6 +52,23 @@ static const ADGameDescription MortevielleGameDescriptions[] = { ADGF_NO_FLAGS, GUIO0() }, + + // English. Note that this is technically the French version, but English strings in mort.dat + // will automatically replace all the French strings + { + "mortevielle", + "", + { + {"menufr.mor", 0, "e413f36b9e14eef16130adc347a9391f", 144}, + {"dxx.mor", 0, "949e68e829ecd5ad29e36a00347a9e7e", 207744}, + AD_LISTEND + }, + Common::EN_ANY, + Common::kPlatformPC, + ADGF_NO_FLAGS, + GUIO0() + }, + AD_TABLE_END_MARKER }; diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 9c50777cec..bc74a379e5 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -214,18 +214,18 @@ void invers(int ix) { s = dis[lo(msg4)]; break; case 6 : - s = fic[lo(msg4)]; + s = g_vm->getString(S_SAVE_LOAD + lo(msg4)); break; case 7 : - s = fic[1]; + s = g_vm->getString(S_SAVE_LOAD + 1); s += ' '; s += (char)(48 + lo(msg4)); break; case 8 : if (lo(msg4) == 1) { - s = recom; + s = g_vm->getString(S_RESTART); } else { - s = fic[2]; + s = g_vm->getString(S_SAVE_LOAD + 2); s += ' '; s += (char)(47 + lo(msg4)); } @@ -302,10 +302,10 @@ void menu_down(int ii) { if (dis[cx][0] != '*') writeg(dis[cx], 4); break; case 6 : - writeg(fic[cx], 4); + writeg(g_vm->getString(S_SAVE_LOAD + cx), 4); break; case 7 : { - Common::String s = fic[1]; + Common::String s = g_vm->getString(S_SAVE_LOAD + 1); s += ' '; s += (char)(48 + cx); writeg(s, 4); @@ -313,9 +313,9 @@ void menu_down(int ii) { } case 8 : if (cx == 1) - writeg(recom, 4); + writeg(g_vm->getString(S_RESTART), 4); else { - Common::String s = fic[2]; + Common::String s = g_vm->getString(S_SAVE_LOAD + 2); s += ' '; s += (char)(47 + cx); writeg(s, 4); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 17dd83a7ee..ae303e99fd 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -35,6 +35,7 @@ #include "mortevielle/level15.h" #include "mortevielle/menu.h" #include "mortevielle/mor.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/parole2.h" @@ -43,9 +44,6 @@ namespace Mortevielle { -/* Niveau 14 suite */ -const char m1[] = "quelqu'un entre, parait ‚tonn‚ mais ne dit rien"; //Translation: Someone enters, looks surised, but says nothing - // For ScummVM, we need to do check for file errors where we do the file access const int ioresult = 0; @@ -287,10 +285,14 @@ void clsf10() { cod = 544; } box(15, gd, cod, 93, co, 98, 255); - if (s.conf < 33) st = "Cool"; - else if (s.conf < 66) st = " Lourde "; - else if (s.conf > 65) st = "Malsaine"; - if (res == 1) co = 10; + if (s.conf < 33) + st = g_vm->getString(S_COOL); + else if (s.conf < 66) + st = g_vm->getString(S_LOURDE); + else if (s.conf > 65) + st = g_vm->getString(S_MALSAINE); + if (res == 1) + co = 10; else co = 6; co = 574 - ((uint)co * st.size() >> 1); putxy(co, 92); @@ -453,9 +455,9 @@ void f3f8() { if (res == 1) co = 107; else co = 64; putxy(3, 44); - writeg(f3, 5); + writeg(g_vm->getString(S_F3), 5); ywhere = 51; - writeg(f8, 5); + writeg(g_vm->getString(S_F8), 5); boite(0, 42, co, 16, 7); } @@ -610,22 +612,21 @@ void affper(int per) { if ((h >= 0) && (h < 8)) p = 60; } +/** + * Shows the you are alone message in the status area on the right hand side of the screen + */ void person() { - const char m1[] = "Vous"; //Translation: You - const char m2[] = "tes"; //Translation: are - const char m3[] = "SEUL"; //Translation: ALONE - int cf; - Common::String str_; - /* debug('person'); */ - for (cf = 1; cf <= 8; cf ++) menu_disable(disc[cf]); + for (int cf = 1; cf <= 8; cf ++) + menu_disable(disc[cf]); + clsf10(); putxy(560, 30); - writeg(m1, 4); + writeg(g_vm->getString(S_YOU), 4); putxy(560, 50); - writeg(m2, 4); + writeg(g_vm->getString(S_ARE), 4); putxy(560, 70); - writeg(m3, 4); + writeg(g_vm->getString(S_ALONE), 4); ipers = 0; } @@ -668,7 +669,7 @@ void pendule() { else writeg("AM ", 1); putxy(550, 160); if ((jou >= 0) && (jou <= 8)) { - Common::String tmp("& jour"); //Translation: Day + Common::String tmp = g_vm->getString(S_DAY); tmp.insertChar((char)(jou + 49), 0); writeg(tmp, 1); } @@ -1208,7 +1209,7 @@ void phaz(int &haz, int &p, int cf) { if (s.conf > 69) s.conf = s.conf + (s.conf / 10); clsf3(); ecrf2(); - ecr3(m1); + ecr3(g_vm->getString(S_SOMEONE_ENTERS)); haz = (hazard(0, 4)) - 2; parole(2, haz, 1); for (haz = 0; haz <= 3000; haz ++); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index c71c850286..b8b76c1928 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -47,13 +47,12 @@ const int men[12] = { 0, }; void tinke() { - const char m1[] = "Mince! Vous entendez du bruit..."; //Translation: Gosh! You hear some noise... - const char d1[] = " | Vous devriez avoir remarqu‚| "; //Translation: You should have noticed - const char d2[] = "% des indices..."; //Translation: %s of hints + Common::String d1 = g_vm->getString(S_SHOULD_HAVE_NOTICED); + Common::String d2 = g_vm->getString(S_NUMBER_OF_HINTS); const char d3 = '['; const char d4 = ']'; const char d5 = '1'; - const char d6[] = "OK"; + Common::String d6 = g_vm->getString(S_OK); int cx, haz, nh, cf, j, h, m; Common::String stpo; bool am; @@ -78,7 +77,18 @@ void tinke() { if (cf == 10) stpo = "10"; else stpo = chr(cf + 48); - stpou = Common::String(d3) + d5 + d4 + d3 + d1 + stpo + '0' + d2 + d4 + d3 + d6 + d4; + stpou = Common::String(d3); + stpou += d5; + stpou += d4; + stpou += d3; + stpou += d1; + stpou += stpo; + stpou += '0'; + stpou += d2; + stpou += d4; + stpou += d3; + stpou += d6; + stpou += d4; } if (m > min) { min = 30; @@ -149,7 +159,7 @@ void tinke() { if (haz < 5) { clsf3(); ecrf2(); - ecr3(m1); + ecr3(g_vm->getString(S_HEAR_NOISE)); haz = (hazard(0, 4)) - 2; parole(1, haz, 1); clsf3(); @@ -269,8 +279,8 @@ void mfouen() menu_enable(menup, mettre); menu_enable(menup, ouvrir); menu_enable(menup, sortir); */ - menut(sonder, " sonder "); - menut(soulever, " soulever "); + menut(sonder, g_vm->getString(S_PROBE)); + menut(soulever, g_vm->getString(S_RAISE)); } void atf3f8(int &key) { @@ -427,8 +437,8 @@ void mfoudi() { menu_disable(menup, mettre); menu_disable(menup, ouvrir); menu_disable(menup, sortir); */ - menut(sonder, " -SUITE- "); - menut(soulever, " -STOP- "); + menut(sonder, g_vm->getString(S_SUITE)); + menut(soulever, g_vm->getString(S_STOP)); } void mennor() { @@ -774,7 +784,7 @@ void st13(int ob) { void aldepl() { int dummy; - dummy = do_alert("[1][Alors, utilisez le menu DEP...][ok]", 1); //Translation: [1] [So, use the DEP menu] [Ok] + dummy = do_alert(g_vm->getString(S_USE_DEP_MENU), 1); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index eed4b5156b..1fc20cfbae 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -204,16 +204,51 @@ Common::ErrorCode MortevielleEngine::loadMortDat() { if (!strncmp(dataType, "FONT", 4)) { // Font resource _screenSurface.readFontData(f, dataSize); + } else if (!strncmp(dataType, "SSTR", 4)) { + readStaticStrings(f, dataSize); } else { // Unknown section f.skip(dataSize); } } + // Close the file f.close(); + + assert(_staticStrings.size() > 0); return Common::kNoError; } +/** + * Read in a static strings block, and if the language matches, load up the static strings + */ +void MortevielleEngine::readStaticStrings(Common::File &f, int dataSize) { + // Figure out what language Id is needed + byte desiredLanguageId = (getLanguage() == Common::EN_ANY) ? LANG_ENGLISH : LANG_FRENCH; + + // Read in the language + byte languageId = f.readByte(); + --dataSize; + + // If the language isn't correct, then skip the entire block + if (languageId != desiredLanguageId) { + f.skip(dataSize); + return; + } + + // Load in each of the strings + while (dataSize > 0) { + Common::String s; + char ch; + while ((ch = (char)f.readByte()) != '\0') + s += ch; + + _staticStrings.push_back(s); + dataSize -= s.size() + 1; + } + assert(dataSize == 0); +} + bool MortevielleEngine::keyPressed() { // Check for any pending key presses handleEvents(); @@ -510,7 +545,6 @@ void MortevielleEngine::playGame() { * @remarks Originally called tecran */ void MortevielleEngine::handleAction() { - const char idem[] = "Idem"; const int lim = 20000; int temps = 0; char inkey = '\0'; @@ -555,7 +589,7 @@ void MortevielleEngine::handleAction() { } else if (inkey == '\77') { if ((mnumo != no_choice) && ((msg[3] == action) || (msg[3] == saction))) { msg[4] = mnumo; - ecr3(idem); + ecr3(g_vm->getString(S_IDEM)); } else return; } else if (inkey == '\104') { if ((x != 0) && (y != 0)) num = 9999; diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 9ca8258b8d..94640ba8a9 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -38,11 +38,32 @@ namespace Mortevielle { +// Debug channels enum { kMortevielleCore = 1 << 0, kMortevielleGraphics = 1 << 1 }; +// Game languages +enum { + LANG_FRENCH = 0, + LANG_ENGLISH = 1 +}; + +// Static string list +enum { + S_YES_NO = 0, S_GO_TO = 1, S_SOMEONE_ENTERS = 2, S_COOL = 3, S_LOURDE = 4, + S_MALSAINE = 5, S_IDEM = 6, S_YOU = 7, S_ARE = 8, S_ALONE = 9, + S_HEAR_NOISE = 10, S_SHOULD_HAVE_NOTICED = 11, S_NUMBER_OF_HINTS = 12, + S_WANT_TO_WAKE_UP = 13, S_OK = 14, S_SAVE_LOAD = 15, S_RESTART = 18, S_F3 = 19, + S_F8 = 20, S_HIDE_SELF = 21, S_TAKE = 22, S_PROBE = 23, S_RAISE = 24, S_SUITE = 25, + S_STOP = 26, S_USE_DEP_MENU = 27, S_LIFT = 28, S_READ = 29, + S_LOOK = 30, S_SEARCH = 31, S_OPEN = 32, S_PUT = 33, S_TURN = 34, S_TIE = 35, S_CLOSE = 36, + S_HIT = 37, S_POSE = 38, S_SMASH = 39, + + S_SMELL = 40, S_SCRATCH = 41, S_PROBE2 = 42, S_BEFORE_USE_DEP_MENU = 43, S_DAY = 44 +}; + #define SCREEN_WIDTH 640 #define SCREEN_HEIGHT 400 #define SCREEN_ORIG_HEIGHT 200 @@ -58,9 +79,11 @@ private: bool _mouseClick; Common::Point _mousePos; bool _inMainGameLoop; // Flag when the main game loop is active + Common::StringArray _staticStrings; Common::ErrorCode initialise(); Common::ErrorCode loadMortDat(); + void readStaticStrings(Common::File &f, int dataSize); void loadFont(Common::File &f); bool handleEvents(); void addKeypress(Common::Event &evt); @@ -91,6 +114,7 @@ public: virtual Common::Error saveGameState(int slot, const Common::String &desc); virtual Common::Error run(); uint32 getGameFlags() const; + Common::Language getLanguage() const; bool keyPressed(); int getChar(); @@ -99,6 +123,7 @@ public: bool getMouseClick() const { return _mouseClick; } void setMouseClick(bool v) { _mouseClick = v; } void delay(int amount); + Common::String getString(int idx) const { return _staticStrings[idx]; } void endGame(); void loseGame(); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 5ace0614bb..cd84b934a1 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -72,19 +72,8 @@ const byte don[9][5] = { {0, 62, 25, 13, 5} }; -const char *fic[3] = { - "", - " Sauvegarde", // Translation: "Save" - " Chargement" // Translation: "Load" -}; - const byte addv[2] = {8, 8}; -const char recom[] = " Recommence "; // Translation: "Restart" - -const char f3[] = "F3: Encore"; // Translation: "F3: More" -const char f8[] = "F8: Suite"; // Translation: "F8: Next" - const byte rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; /*---------------------------------------------------------------------------*/ diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index eea89947b4..2e2bf539f2 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -176,15 +176,8 @@ extern const byte tnocon[364]; extern const byte don[9][5]; -extern const char *fic[3]; - extern const byte addv[2]; -extern const char recom[]; - -extern const char f3[]; -extern const char f8[]; - extern const byte rang[16]; /*---------------------------------------------------------------------------*/ -- cgit v1.2.3 From 46427cb61893e2fdb262d1a11a90dcc4d34f411a Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 20:04:16 +1100 Subject: MORTEVIELLE: Removed text screen output, and fixed copyright to display on title screen. Note: The original used Pascal text display functions to show the copyright on the title screen. To avoid a lot of code needing to be added for just that line, I'm using the existing graphic text display code. The resulting copyright text isn't identical to the original, but I consider it close enough. --- engines/mortevielle/mortevielle.cpp | 2 + engines/mortevielle/ovd1.cpp | 90 +++++-------------------------------- 2 files changed, 12 insertions(+), 80 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 1fc20cfbae..4cbc2b4ee3 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -479,7 +479,9 @@ void MortevielleEngine::showIntroduction() { divers(143, true); CHECK_QUIT; + // TODO: Once music is implemented, only use the below delay if music is turned off suite(); + delay(3000); music(); } diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index bfa6f47790..8fb45b5ca3 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -233,75 +233,13 @@ void ani50() { al_mess2 = delig; } -/* overlay */ void dialpre() - -{ - int cy, tay; - char st[1410]; - float ix; -// char ch; - - +/** + * The original engine used this method to display a starting text screen letting the palyer + * select the graphics mode to use + */ +void dialpre() { /* debug('o3 dialpre'); */ - cy = 0; - clrscr; - textcolor(9); - do { - cy = cy + 1; - deline(cy + c_dialpre, st, tay); - gotoxy(40 - tay / 2, wherey + 1); - output(delig); - } while (!(cy == 20)); - ix = 0; -/* do { - ix = ix + 1; - } while (!(keypressed() | (ix == 5e5))); -*/ crep = 998; - textcolor(1); - gotoxy(1, 21); - clreol; - gotoxy(1, 23); - output("CARTE GRAPHIQUE CGA EGA HERCULE/AT&T400 TANDY AMSTRAD1512"); - gotoxy(12, 24); - output("Ctrl C E H T A"); - -/* - do { - ch = get_ch(); // input >> kbd >> ch; - } while ((ch != '\1') && (ch != '\3') && (ch != '\5') && (ch != '\24') && (ch != '\10')); - switch (ch) { - case '\1': - case '\3': - case '\5' : - gd = (uint)ord(ch) >> 1; - break; - case '\10' : - gd = her; - break; - case '\24' : - gd = tan; - break; - }*/ - - gotoxy(1, 24); - clreol; - gotoxy(1, 23); - clreol; - gotoxy(26, 23); - // "Play using keyboard / ... mouse" - output("Jeu au Clavier / … la Souris"); - textcolor(4); - gotoxy(33, 23); - output("C"); - gotoxy(48, 23); - output("S"); - /* - do { - ch = get_ch(); // input >> kbd >> ch; - } while ((ch != 'C') && (ch != 'S')); - int_m = (toupper(ch) == 'S'); - */ int_m = true; } @@ -390,10 +328,7 @@ void ani50() { f.close(); } - -/* overlay */ void suite() { - Common::String cpr; - +void suite() { hirs(); repon(7, 2035); caff = 51; @@ -402,15 +337,10 @@ void ani50() { if (newgd != gd) gd = newgd; hirs(); dessine(ades, 0, 0); - gotoxy(20 * pred(int, res) + 8, 24); - textcolor(7); - cpr = "COPYRIGHT 1989 : LANKHOR"; - if ((gd == ega) || (gd == ams) || (gd == cga)) - output(cpr); - else { - putxy(104 + 72 * res, 190); - writeg(cpr, 0); - } + + Common::String cpr = "COPYRIGHT 1989 : LANKHOR"; + putxy(104 + 72 * res, 185); + writeg(cpr, 0); } } // End of namespace Mortevielle -- cgit v1.2.3 From e9c5437c3ba66dff9ada2a9f05fb6635e0d1a55b Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 20:33:54 +1100 Subject: MORTEVIELLE: Removed redundant gfx functions, and moved others into ScreenSurface class. --- engines/mortevielle/actions.cpp | 10 ++-- engines/mortevielle/alert.cpp | 22 ++++----- engines/mortevielle/droite.cpp | 6 ++- engines/mortevielle/graphics.cpp | 55 +++++++++++++++++++++ engines/mortevielle/graphics.h | 4 ++ engines/mortevielle/level15.cpp | 4 -- engines/mortevielle/level15.h | 1 - engines/mortevielle/menu.cpp | 37 ++++++++------ engines/mortevielle/mor.cpp | 103 ++++++++++++++++++++------------------- engines/mortevielle/mor2.cpp | 12 +++-- engines/mortevielle/mouse.cpp | 1 - engines/mortevielle/outtext.cpp | 18 ++++--- engines/mortevielle/ovd1.cpp | 4 +- engines/mortevielle/sprint.cpp | 49 ------------------- engines/mortevielle/sprint.h | 1 - engines/mortevielle/var_mor.cpp | 23 --------- engines/mortevielle/var_mor.h | 5 -- 17 files changed, 174 insertions(+), 181 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index cd3a7b0df8..f3bc31b637 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -1053,7 +1053,7 @@ L2: lig = 0; do { icm = succ(int, icm); - putxy(co, lig); + g_vm->_screenSurface.putxy(co, lig); if (s.teauto[icm] == '*') if (te[icm]) writetp(lib[icm], 1); else writetp(lib[icm], 0); @@ -1062,7 +1062,7 @@ L2: co = 320; } else lig = lig + 8; } while (!(icm == 42)); - putxy(320, 176); + g_vm->_screenSurface.putxy(320, 176); writetp(lib[46], 0); tou = '\0'; do { @@ -1080,7 +1080,7 @@ L2: lig = ((choi - 1) % 23) << 3; if (choi > 23) co = 320; else co = 0; - putxy(co, lig); + g_vm->_screenSurface.putxy(co, lig); if (te[choi]) writetp(lib[choi], 0); else writetp(lib[choi], 1); te[choi] = ! te[choi]; @@ -1094,7 +1094,7 @@ L2: lig = ((choi - 1) % 23) << 3; if (choi > 23) co = 320; else co = 0; - putxy(co, lig); + g_vm->_screenSurface.putxy(co, lig); if (te[choi]) writetp(lib[choi], 0); else writetp(lib[choi], 1); te[choi] = ! te[choi]; @@ -1103,7 +1103,7 @@ L2: lig = ((ix - 1) % 23) << 3; if (ix > 23) co = 320; else co = 0; - putxy(co, lig); + g_vm->_screenSurface.putxy(co, lig); if (te[ix]) writetp(lib[ix], 0); else writetp(lib[ix], 1); te[ix] = ! te[ix]; diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index 36a51b07ed..73befd9196 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -87,7 +87,7 @@ static void decod(Common::String s, int &nbc, int &nbl, int &col, Common::String static void posit(int ji, int &coldep, int &esp) { - putxy(coldep + (40 + esp) *pred(int, ji), 98); + g_vm->_screenSurface.putxy(coldep + (40 + esp) *pred(int, ji), 98); } @@ -122,13 +122,13 @@ static void fait_choix(Common::String c, int &coldep, int &nbcase, Common::Strin } while (!(c[i + 1] == ']')); i = i + 2; while (str[l].size() < 3) str[l] = str[l] + ' '; - putxy(x, 98); + g_vm->_screenSurface.putxy(x, 98); Common::String tmp(" "); tmp += str[l]; tmp += " "; - writeg(tmp, 0); + g_vm->_screenSurface.writeg(tmp, 0); x = x + esp + 40; } } @@ -163,7 +163,7 @@ int do_alert(Common::String str_, int n) { } else { fait_boite(8, 7, nbcol); i = 0; - ywhere = 70; + g_vm->_screenSurface._textPos.y = 70; do { cx = 320; st = ""; @@ -173,9 +173,9 @@ int do_alert(Common::String str_, int n) { if (res == 2) cx = cx - 3; else cx = cx - 5; } - putxy(cx, ywhere); - ywhere = ywhere + 6; - writeg(st, 4); + g_vm->_screenSurface.putxy(cx, g_vm->_screenSurface._textPos.y); + g_vm->_screenSurface._textPos.y += 6; + g_vm->_screenSurface.writeg(st, 4); i = i + 1; } while (!(chaine[i] == ']')); } @@ -219,14 +219,14 @@ int do_alert(Common::String str_, int n) { Common::String tmp(" "); tmp += s[quoi]; tmp += " "; - writeg(tmp, 0); + g_vm->_screenSurface.writeg(tmp, 0); } posit(ix, coldep, esp); Common::String tmp2 = " "; tmp2 += s[ix]; tmp2 += " "; - writeg(tmp2, 1); + g_vm->_screenSurface.writeg(tmp2, 1); quoi = ix; show_mouse(); @@ -240,7 +240,7 @@ int do_alert(Common::String str_, int n) { Common::String tmp3(" "); tmp3 += s[quoi]; tmp3 += " "; - writeg(tmp3, 0); + g_vm->_screenSurface.writeg(tmp3, 0); quoi = 0; show_mouse(); @@ -256,7 +256,7 @@ int do_alert(Common::String str_, int n) { Common::String tmp4(" "); tmp4 += s[n]; tmp4 += " "; - writeg(tmp4, 1); + g_vm->_screenSurface.writeg(tmp4, 1); } charecr(50, succ(int, nligne) << 4); show_mouse(); diff --git a/engines/mortevielle/droite.cpp b/engines/mortevielle/droite.cpp index 54d788b6eb..c0a48a51aa 100644 --- a/engines/mortevielle/droite.cpp +++ b/engines/mortevielle/droite.cpp @@ -26,6 +26,8 @@ */ #include "mortevielle/droite.h" +#include "mortevielle/graphics.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/var_mor.h" namespace Mortevielle { @@ -47,7 +49,7 @@ void droite(int x, int y, int xx, int yy, int coul) { if (y > yy) step = -1; else step = 1; do { - putpix(gd, abs((int)(a * i + b)), i, coul); + g_vm->_screenSurface.setPixel(Common::Point(abs((int)(a * i + b)), i), coul); i = i + step; } while (!(i == yy)); /*writeln(le_file,'X == ',a:3:3,' * Y + ',b:3:3);*/ @@ -58,7 +60,7 @@ void droite(int x, int y, int xx, int yy, int coul) { if (x > xx) step = -1; else step = 1; do { - putpix(gd, i, abs((int)(a * i + b)), coul); + g_vm->_screenSurface.setPixel(Common::Point(i, abs((int)(a * i + b))), coul); i = i + step; } while (!(i == xx)); /*writeln(le_file,'Y == ',a:3:3,' * X + ',b:3:3);*/ diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 3450d41cf5..e9c8c1e7e9 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -1040,4 +1040,59 @@ void ScreenSurface::setPixel(const Common::Point &pt, int palIndex) { *(destP + SCREEN_WIDTH) = palIndex; } +/** + * Write out a string + */ +void ScreenSurface::writeg(const Common::String &l, int c) { + int i, x; + Common::Point pt; + int cecr = 0; + + /* debug('writeg : '+l);*/ + + if (l == "") + return; + hide_mouse(); + pt = _textPos; + + if (res == 2) + i = 6; + else + i = 10; + x = pt.x + i * l.size(); + + switch (c) { + case 1: + case 3 : { + cecr = 0; + box(15, gd, pt.x, pt.y, x, pt.y + 7, 255); + } + break; + case 4 : { + cecr = 0; + } + break; + case 5 : { + cecr = 15; + } + break; + case 0: + case 2 : { + cecr = 15; + box(0, gd, pt.x, pt.y, x, pt.y + 7, 255); + } + break; + } + pt.x += 1; + pt.y += 1; + for (x = 1; x <= (int)l.size(); ++x) { + g_vm->_screenSurface.writeCharacter(Common::Point(pt.x, pt.y), ord(l[x - 1]), cecr); + pt.x += i; + } + show_mouse(); + + // TODO: Move screen updates to main loop once constructed + g_vm->_screenSurface.updateScreen(); +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 0b265469df..258f4cfacc 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -77,6 +77,8 @@ class ScreenSurface: public Graphics::Surface { private: Common::List _dirtyRects; byte _fontData[FONT_NUM_CHARS * FONT_HEIGHT]; +public: + Common::Point _textPos; // Original called xwhere/ywhere public: void readFontData(Common::File &f, int dataSize); Graphics::Surface lockArea(const Common::Rect &bounds); @@ -87,6 +89,8 @@ public: void drawBox(int x, int y, int dx, int dy, int col); void fillBox(int colour, const Common::Rect &bounds, int patt); void clearScreen(); + void putxy(int x, int y) { _textPos = Common::Point(x, y); } + void writeg(const Common::String &l, int c); // TODO: Refactor code to remove this method, for increased performance void setPixel(const Common::Point &pt, int palIndex); diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index b0ed953aa4..c017bf24d3 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -112,10 +112,6 @@ void pictout(int seg, int dep, int x, int y) { g_vm->_screenSurface.drawPicture(surface, x, y); } -void putxy(int x, int y) { - xwhere = x; - ywhere = y; -} /* function calad(x,y:int):int; begin diff --git a/engines/mortevielle/level15.h b/engines/mortevielle/level15.h index aee94c9c09..c3df5e5d6c 100644 --- a/engines/mortevielle/level15.h +++ b/engines/mortevielle/level15.h @@ -38,7 +38,6 @@ extern bool dans_rect(rectangle r); extern void outbloc(int n, pattern p, t_nhom pal); extern void writepal(int n); extern void pictout(int seg, int dep, int x, int y); -extern void putxy(int x, int y); // extern int calad(int x, int y); extern void sauvecr(int y, int dy); extern void charecr(int y, int dy); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index bc74a379e5..07626b3894 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -162,9 +162,9 @@ void menu_aff() { msk = 0x80; for (pt = 0; pt <= 7; pt ++) { if ((lettres[num_letr - 1][ind_tabl] & msk) != 0) { - putpix(gd, x + 1, y + 1, 0); - putpix(gd, x, y + 1, 0); - putpix(gd, x, y, color); + g_vm->_screenSurface.setPixel(Common::Point(x + 1, y + 1), 0); + g_vm->_screenSurface.setPixel(Common::Point(x, y + 1), 0); + g_vm->_screenSurface.setPixel(Common::Point(x, y), color); } msk = (uint)msk >> 1; x = x + 1; @@ -196,7 +196,7 @@ void invers(int ix) { /* debug('invers'); */ if (msg4 == no_choice) return; - putxy(don[msg3][1] << 3, succ(void, lo(msg4)) << 3); + g_vm->_screenSurface.putxy(don[msg3][1] << 3, succ(void, lo(msg4)) << 3); switch (msg3) { case 1 : s = inv[lo(msg4)]; @@ -232,7 +232,7 @@ void invers(int ix) { break; } if ((s[0] != '*') && (s[0] != '<')) - writeg(s, ix); + g_vm->_screenSurface.writeg(s, ix); else msg4 = no_choice; } @@ -281,48 +281,53 @@ void menu_down(int ii) { box(15, gd, xco, 12, xcc, 10 + (don[ii][2] << 1), 255); box(0, gd, xcc, 12, xcc + 4, 10 + (don[ii][2] << 1), 255); box(0, gd, xco, 8 + (don[ii][2] << 1), xcc + 4, 12 + (don[ii][2] << 1), 255); - putxy(xco, 16); + g_vm->_screenSurface.putxy(xco, 16); cx = 0; do { cx = succ(int, cx); switch (ii) { case 1 : - if (inv[cx][0] != '*') writeg(inv[cx], 4); + if (inv[cx][0] != '*') + g_vm->_screenSurface.writeg(inv[cx], 4); break; case 2 : - if (dep[cx][0] != '*') writeg(dep[cx], 4); + if (dep[cx][0] != '*') + g_vm->_screenSurface.writeg(dep[cx], 4); break; case 3 : - if (act[cx][0] != '*') writeg(act[cx], 4); + if (act[cx][0] != '*') + g_vm->_screenSurface.writeg(act[cx], 4); break; case 4 : - if (self_[cx][0] != '*') writeg(self_[cx], 4); + if (self_[cx][0] != '*') + g_vm->_screenSurface.writeg(self_[cx], 4); break; case 5 : - if (dis[cx][0] != '*') writeg(dis[cx], 4); + if (dis[cx][0] != '*') + g_vm->_screenSurface.writeg(dis[cx], 4); break; case 6 : - writeg(g_vm->getString(S_SAVE_LOAD + cx), 4); + g_vm->_screenSurface.writeg(g_vm->getString(S_SAVE_LOAD + cx), 4); break; case 7 : { Common::String s = g_vm->getString(S_SAVE_LOAD + 1); s += ' '; s += (char)(48 + cx); - writeg(s, 4); + g_vm->_screenSurface.writeg(s, 4); break; } case 8 : if (cx == 1) - writeg(g_vm->getString(S_RESTART), 4); + g_vm->_screenSurface.writeg(g_vm->getString(S_RESTART), 4); else { Common::String s = g_vm->getString(S_SAVE_LOAD + 2); s += ' '; s += (char)(47 + cx); - writeg(s, 4); + g_vm->_screenSurface.writeg(s, 4); } break; } - putxy(xco, ywhere + 8); + g_vm->_screenSurface.putxy(xco, g_vm->_screenSurface._textPos.y + 8); } while (!(cx == nb_lig)); test0 = true; show_mouse(); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index ae303e99fd..89787312d0 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -221,23 +221,24 @@ void ecr2(Common::String str_) { /* debug('ecr2 : '+str_);*/ if (res == 1) tab = 10; else tab = 6; - putxy(8, 177); + g_vm->_screenSurface.putxy(8, 177); tlig = 59 + pred(int, res) * 36; - if ((int)str_.size() < tlig) writeg(str_, 5); + if ((int)str_.size() < tlig) + g_vm->_screenSurface.writeg(str_, 5); else if ((int)str_.size() < (tlig << 1)) { - putxy(8, 176); - writeg(copy(str_, 1, pred(int, tlig)), 5); - putxy(8, 182); - writeg(copy(str_, tlig, tlig << 1), 5); + g_vm->_screenSurface.putxy(8, 176); + g_vm->_screenSurface.writeg(copy(str_, 1, pred(int, tlig)), 5); + g_vm->_screenSurface.putxy(8, 182); + g_vm->_screenSurface.writeg(copy(str_, tlig, tlig << 1), 5); } else { f2_all = true; clsf2(); - putxy(8, 176); - writeg(copy(str_, 1, pred(int, tlig)), 5); - putxy(8, 182); - writeg(copy(str_, tlig, pred(int, (tlig << 1))), 5); - putxy(8, 190); - writeg(copy(str_, tlig << 1, tlig * 3), 5); + g_vm->_screenSurface.putxy(8, 176); + g_vm->_screenSurface.writeg(copy(str_, 1, pred(int, tlig)), 5); + g_vm->_screenSurface.putxy(8, 182); + g_vm->_screenSurface.writeg(copy(str_, tlig, pred(int, (tlig << 1))), 5); + g_vm->_screenSurface.putxy(8, 190); + g_vm->_screenSurface.writeg(copy(str_, tlig << 1, tlig * 3), 5); } } @@ -254,8 +255,8 @@ void clsf3() { void ecr3(Common::String text) { /* debug('ecr3 : '+text);*/ clsf3(); - putxy(8, 192); - writeg(text, 5); + g_vm->_screenSurface.putxy(8, 192); + g_vm->_screenSurface.writeg(text, 5); } void ecrf6() { @@ -295,8 +296,8 @@ void clsf10() { co = 10; else co = 6; co = 574 - ((uint)co * st.size() >> 1); - putxy(co, 92); - writeg(st, 4); + g_vm->_screenSurface.putxy(co, 92); + g_vm->_screenSurface.writeg(st, 4); if (res == 1) co = 620; else co = 584; box(15, gd, 560, 24, co, 86, 255); @@ -454,10 +455,10 @@ void f3f8() { if (res == 1) co = 107; else co = 64; - putxy(3, 44); - writeg(g_vm->getString(S_F3), 5); - ywhere = 51; - writeg(g_vm->getString(S_F8), 5); + g_vm->_screenSurface.putxy(3, 44); + g_vm->_screenSurface.writeg(g_vm->getString(S_F3), 5); + g_vm->_screenSurface._textPos.y = 51; + g_vm->_screenSurface.writeg(g_vm->getString(S_F8), 5); boite(0, 42, co, 16, 7); } @@ -488,43 +489,43 @@ void affper(int per) { for (cx = 1; cx <= 8; cx ++) menu_disable(disc[cx]); clsf10(); if ((per & 128) == 128) { - putxy(560, 24); - writeg("LEO", 4); + g_vm->_screenSurface.putxy(560, 24); + g_vm->_screenSurface.writeg("LEO", 4); menu_enable(disc[1]); } if ((per & 64) == 64) { - putxy(560, 32); - writeg("PAT", 4); + g_vm->_screenSurface.putxy(560, 32); + g_vm->_screenSurface.writeg("PAT", 4); menu_enable(disc[2]); } if ((per & 32) == 32) { - putxy(560, 40); - writeg("GUY", 4); + g_vm->_screenSurface.putxy(560, 40); + g_vm->_screenSurface.writeg("GUY", 4); menu_enable(disc[3]); } if ((per & 16) == 16) { - putxy(560, 48); - writeg("EVA", 4); + g_vm->_screenSurface.putxy(560, 48); + g_vm->_screenSurface.writeg("EVA", 4); menu_enable(disc[4]); } if ((per & 8) == 8) { - putxy(560, 56); - writeg("BOB", 4); + g_vm->_screenSurface.putxy(560, 56); + g_vm->_screenSurface.writeg("BOB", 4); menu_enable(disc[5]); } if ((per & 4) == 4) { - putxy(560, 64); - writeg("LUC", 4); + g_vm->_screenSurface.putxy(560, 64); + g_vm->_screenSurface.writeg("LUC", 4); menu_enable(disc[6]); } if ((per & 2) == 2) { - putxy(560, 72); - writeg("IDA", 4); + g_vm->_screenSurface.putxy(560, 72); + g_vm->_screenSurface.writeg("IDA", 4); menu_enable(disc[7]); } if ((per & 1) == 1) { - putxy(560, 80); - writeg("MAX", 4); + g_vm->_screenSurface.putxy(560, 80); + g_vm->_screenSurface.writeg("MAX", 4); menu_enable(disc[8]); } ipers = per; @@ -621,12 +622,12 @@ void person() { menu_disable(disc[cf]); clsf10(); - putxy(560, 30); - writeg(g_vm->getString(S_YOU), 4); - putxy(560, 50); - writeg(g_vm->getString(S_ARE), 4); - putxy(560, 70); - writeg(g_vm->getString(S_ALONE), 4); + g_vm->_screenSurface.putxy(560, 30); + g_vm->_screenSurface.writeg(g_vm->getString(S_YOU), 4); + g_vm->_screenSurface.putxy(560, 50); + g_vm->_screenSurface.writeg(g_vm->getString(S_ARE), 4); + g_vm->_screenSurface.putxy(560, 70); + g_vm->_screenSurface.writeg(g_vm->getString(S_ALONE), 4); ipers = 0; } @@ -664,14 +665,16 @@ void pendule() { if (h == 0) h = 12; droite(((uint)x >> 1)*res, y, ((uint)(x + cv[1][h]) >> 1)*res, y + cv[2][h], co); show_mouse(); - putxy(568, 154); - if (heu > 11) writeg("PM ", 1); - else writeg("AM ", 1); - putxy(550, 160); + g_vm->_screenSurface.putxy(568, 154); + if (heu > 11) + g_vm->_screenSurface.writeg("PM ", 1); + else + g_vm->_screenSurface.writeg("AM ", 1); + g_vm->_screenSurface.putxy(550, 160); if ((jou >= 0) && (jou <= 8)) { Common::String tmp = g_vm->getString(S_DAY); tmp.insertChar((char)(jou + 49), 0); - writeg(tmp, 1); + g_vm->_screenSurface.writeg(tmp, 1); } } @@ -1218,8 +1221,10 @@ void phaz(int &haz, int &p, int cf) { } void writetp(Common::String s, int t) { - if (res == 2) writeg(s, t); - else writeg(copy(s, 1, 25), t); + if (res == 2) + g_vm->_screenSurface.writeg(s, t); + else + g_vm->_screenSurface.writeg(copy(s, 1, 25), t); } void messint(int nu) { diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index b8b76c1928..515fd836f6 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -182,10 +182,14 @@ void fenat(char ans) { int coul; hide_mouse(); - if (gd == cga) coul = 2; - else if (gd == her) coul = 1; - else coul = 12; - affcar(gd, 306, 193, coul, ord(ans)); + if (gd == cga) + coul = 2; + else if (gd == her) + coul = 1; + else + coul = 12; + + g_vm->_screenSurface.writeCharacter(Common::Point(306, 193), ord(ans), coul); boite(300, 191, 16, 8, 15); show_mouse(); } diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 98429cc04e..631be60cf8 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -261,7 +261,6 @@ void show_mouse() { } break; } /* case Gd */ - affput(Common::Point(x_s, y_s), 0, 0); } void pos_mouse(int x, int y) { diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index b42aa481ba..e7d75517be 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -26,7 +26,9 @@ */ #include "mortevielle/outtext.h" +#include "mortevielle/graphics.h" #include "mortevielle/level15.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/sprint.h" #include "mortevielle/var_mor.h" #include "common/str.h" @@ -174,7 +176,7 @@ void afftex(char *ch, int x, int y, int dx, int dy, int typ) { /* debug(' .. Afftex');*/ - putxy(x, y); + g_vm->_screenSurface.putxy(x, y); if (res == 1) tab = 10; else tab = 6; dx = dx * 6; @@ -189,12 +191,12 @@ void afftex(char *ch, int x, int y, int dx, int dy, int typ) { while (! the_end) { switch (ch[p]) { case '@' : { - writeg(s, typ); + g_vm->_screenSurface.writeg(s, typ); s = ""; p = p + 1; xc = x; yc = yc + 6; - putxy(xc, yc); + g_vm->_screenSurface.putxy(xc, yc); } break; case ' ' : { @@ -202,7 +204,7 @@ void afftex(char *ch, int x, int y, int dx, int dy, int typ) { xc = xc + tab; p = p + 1; if (l_motsuiv(p, ch, tab) + xc > xf) { - writeg(s, typ); + g_vm->_screenSurface.writeg(s, typ); s = ""; xc = x; yc = yc + 6; @@ -214,21 +216,21 @@ void afftex(char *ch, int x, int y, int dx, int dy, int typ) { do { j = x; do { - putxy(j, i); - writeg(" ", 0); + g_vm->_screenSurface.putxy(j, i); + g_vm->_screenSurface.writeg(" ", 0); j = j + 6; } while (!(j > xf)); i = i + 6; } while (!(i > yf)); yc = y; } - putxy(xc, yc); + g_vm->_screenSurface.putxy(xc, yc); } } break; case '$' : { the_end = true; - writeg(s, typ); + g_vm->_screenSurface.writeg(s, typ); } break; default: { diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 8fb45b5ca3..7deda53d7b 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -339,8 +339,8 @@ void suite() { dessine(ades, 0, 0); Common::String cpr = "COPYRIGHT 1989 : LANKHOR"; - putxy(104 + 72 * res, 185); - writeg(cpr, 0); + g_vm->_screenSurface.putxy(104 + 72 * res, 185); + g_vm->_screenSurface.writeg(cpr, 0); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp index 027d74791a..6a52b2cdb2 100644 --- a/engines/mortevielle/sprint.cpp +++ b/engines/mortevielle/sprint.cpp @@ -42,53 +42,4 @@ void clear_box(int x, int y, int dx) { box(0, gd, pred(int, x) << 3, pred(int, y) << 3, pred(int, x + dx) << 3, y << 3, 255); } -void writeg(Common::String l, int c) - -{ - int i, x, xo, yo; - int cecr = 0; - - /* debug('writeg : '+l);*/ - - if (l == "") return; - hide_mouse(); - xo = xwhere; - yo = ywhere; - if (res == 2) i = 6; - else i = 10; - x = xo + i * l.size(); - switch (c) { - case 1: - case 3 : { - cecr = 0; - box(15, gd, xo, yo, x, yo + 7, 255); - } - break; - case 4 : { - cecr = 0; - } - break; - case 5 : { - cecr = 15; - } - break; - case 0: - case 2 : { - cecr = 15; - box(0, gd, xo, yo, x, yo + 7, 255); - } - break; - } - xo = xo + 1; - yo = yo + 1; - for (x = 1; x <= (int)l.size(); x ++) { - affcar(gd, xo, yo, cecr, ord(l[x - 1])); - xo = xo + i; - } - show_mouse(); - - // TODO: Move screen updates to main loop once constructed - g_vm->_screenSurface.updateScreen(); -} - } // End of namespace Mortevielle diff --git a/engines/mortevielle/sprint.h b/engines/mortevielle/sprint.h index 8484214fa3..09d5758f63 100644 --- a/engines/mortevielle/sprint.h +++ b/engines/mortevielle/sprint.h @@ -34,7 +34,6 @@ namespace Mortevielle { extern void fill_box(int x, int y, int dx); extern void clear_box(int x, int y, int dx); -extern void writeg(Common::String l, int c); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index cd84b934a1..77da4a50a0 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -164,8 +164,6 @@ int x, prebru, typlec, num_ph, - xwhere, - ywhere, numpal, lderobj, nb_word, @@ -235,27 +233,6 @@ void hirs() { g_vm->_screenSurface.clearScreen(); } -/** - * Draws either a single pixel or a character to the screen - */ -void affput(const Common::Point &pt, int palIndex, int ch) { - if (ch == 0) - g_vm->_screenSurface.setPixel(pt, palIndex); - else - g_vm->_screenSurface.writeCharacter(pt, ch, palIndex); -} - -void affcar(int gd, int x, int y, int coul, int chr) { - if (res == 1) - affput(Common::Point(((uint)x >> 1), y), coul, chr); - else - affput(Common::Point(x, y), coul, chr); -} - -void putpix(int gd, int x, int y, int coul) { - affput(Common::Point(x, y), coul, 0); -} - /** * Returns a substring of the given string * @param s Source string diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 2e2bf539f2..739934277c 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -336,8 +336,6 @@ extern int x, prebru, typlec, num_ph, - xwhere, - ywhere, numpal, lderobj, nb_word, @@ -399,11 +397,8 @@ extern byte adcfiec[822 * 128]; /*---------------------------------------------------------------------------*/ void hirs(); -void affcar(int gd, int x, int y, int coul, int chr); -void putpix(int gd, int x, int y, int coul); Common::String copy(const Common::String &s, int idx, size_t size); void Val(const Common::String &s, int &V, int Code); -void affput(const Common::Point &pt, int palIndex, int ch); /*---------------------------------------------------------------------------*/ /*------------------------------ STUBS ------------------------------*/ -- cgit v1.2.3 From 85df261941c562ae9bdcaba82f8a8b8b8ae4215a Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 20:49:04 +1100 Subject: MORTEVIELLE: Removed boite() stab and remap calls to ScreenSurface::drawBox --- engines/mortevielle/boite.cpp | 41 ----------------------------------------- engines/mortevielle/boite.h | 37 ------------------------------------- engines/mortevielle/module.mk | 1 - engines/mortevielle/mor.cpp | 20 ++++++++++---------- engines/mortevielle/mor2.cpp | 11 +++++------ engines/mortevielle/ques.cpp | 3 +-- 6 files changed, 16 insertions(+), 97 deletions(-) delete mode 100644 engines/mortevielle/boite.cpp delete mode 100644 engines/mortevielle/boite.h diff --git a/engines/mortevielle/boite.cpp b/engines/mortevielle/boite.cpp deleted file mode 100644 index 7072085c23..0000000000 --- a/engines/mortevielle/boite.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "common/textconsole.h" -#include "mortevielle/boite.h" -#include "mortevielle/mortevielle.h" - -namespace Mortevielle { - -//Translation: box() -void boite(int x, int y, int dx, int dy, int coul) { - debugC(1, kMortevielleCore, "TODO: boite is deprecated in favour of ScreenSurface::drawBox"); - - g_vm->_screenSurface.drawBox(x, y, dx, dy, coul); -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/boite.h b/engines/mortevielle/boite.h deleted file mode 100644 index bff3e82d55..0000000000 --- a/engines/mortevielle/boite.h +++ /dev/null @@ -1,37 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_BOITE_H -#define MORTEVIELLE_BOITE_H - -namespace Mortevielle { - -extern void boite(int x, int y, int dx, int dy, int coul); - - -} // End of namespace Mortevielle -#endif diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 28c6c7fc6d..4d2072a913 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -4,7 +4,6 @@ MODULE_OBJS := \ actions.o \ alert.o \ asm.o \ - boite.o \ detection.o \ droite.o \ graphics.o \ diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 89787312d0..6e2d1057cb 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -30,7 +30,6 @@ #include "common/system.h" #include "common/textconsole.h" #include "mortevielle/alert.h" -#include "mortevielle/boite.h" #include "mortevielle/droite.h" #include "mortevielle/level15.h" #include "mortevielle/menu.h" @@ -141,7 +140,8 @@ void initouv() { } void ecrf1() { - boite(0, 11, 512, 163, 15); /* grand dessin */ //Translation: Large drawing + // Large drawing + g_vm->_screenSurface.drawBox(0, 11, 512, 163, 15); } void clsf1() { @@ -199,11 +199,11 @@ void clsf2() { hide_mouse(); if (f2_all) { box(0, gd, 1, 176, 633, 199, 255); - boite(0, 175, 634, 24, 15); + g_vm->_screenSurface.drawBox(0, 175, 634, 24, 15); f2_all = false; } else { box(0, gd, 1, 176, 633, 190, 255); - boite(0, 175, 634, 15, 15); + g_vm->_screenSurface.drawBox(0, 175, 634, 15, 15); } show_mouse(); } @@ -211,7 +211,7 @@ void clsf2() { void ecrf2() { /* debug('ecrf2'); */ text_color(5); - /*boite(0,175,630,15,15);*/ + /*g_vm->_screenSurface.drawBox(0,175,630,15,15);*/ } void ecr2(Common::String str_) { @@ -248,7 +248,7 @@ void clsf3() { /* debug('clsf3'); */ hide_mouse(); box(0, gd, 1, 192, 633, 199, 255); - boite(0, 191, 634, 8, 15); + g_vm->_screenSurface.drawBox(0, 191, 634, 8, 15); show_mouse(); } @@ -262,7 +262,7 @@ void ecr3(Common::String text) { void ecrf6() { /* debug('ecrf6'); */ text_color(5); - boite(62, 33, 363, 80, 15); + g_vm->_screenSurface.drawBox(62, 33, 363, 80, 15); } void ecrf7() { @@ -459,7 +459,7 @@ void f3f8() { g_vm->_screenSurface.writeg(g_vm->getString(S_F3), 5); g_vm->_screenSurface._textPos.y = 51; g_vm->_screenSurface.writeg(g_vm->getString(S_F8), 5); - boite(0, 42, co, 16, 7); + g_vm->_screenSurface.drawBox(0, 42, co, 16, 7); } void t5(int cx) { @@ -1321,10 +1321,10 @@ void dessin(int ad) { clsf1(); if (caff > 99) { dessine(ades, 60, 33); - boite(118, 32, 291, 121, 15); /* cadre moyen */ //Translation: Medium box + g_vm->_screenSurface.drawBox(118, 32, 291, 121, 15); /* cadre moyen */ //Translation: Medium box } else if (caff > 69) { dessine(ades, 112, 48); /* ttes */ //Translation: Heads - boite(222, 47, 155, 91, 15); + g_vm->_screenSurface.drawBox(222, 47, 155, 91, 15); } else { dessine(ades, 0, 12); ecrf1(); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 515fd836f6..496ce64f92 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -27,7 +27,6 @@ #include "mortevielle/mor2.h" #include "mortevielle/alert.h" -#include "mortevielle/boite.h" #include "mortevielle/keyboard.h" #include "mortevielle/menu.h" #include "mortevielle/mor.h" @@ -190,7 +189,7 @@ void fenat(char ans) { coul = 12; g_vm->_screenSurface.writeCharacter(Common::Point(306, 193), ord(ans), coul); - boite(300, 191, 16, 8, 15); + g_vm->_screenSurface.drawBox(300, 191, 16, 8, 15); show_mouse(); } @@ -308,7 +307,7 @@ void tperd() { t11(21, cx); g_vm->_loseGame = true; clsf1(); - boite(60, 35, 400, 50, 15); + g_vm->_screenSurface.drawBox(60, 35, 400, 50, 15); repon(9, crep); clsf2(); clsf3(); @@ -402,7 +401,7 @@ void sparl(float adr, float rep) { deline(repint + c_paroles, st, tay); afftex(st, 230, 4, 65, 24, 5); f3f8(); - /*boite(43,30,90,19,15); + /*g_vm->_screenSurface.drawBox(43,30,90,19,15); gotoxy(7,5); write('F3: Encore'); gotoxy(7,6); @@ -451,7 +450,7 @@ void mennor() { void premtet() { dessine(ades, 10, 80); - boite(18, 79, 155, 91, 15); + g_vm->_screenSurface.drawBox(18, 79, 155, 91, 15); } /* NIVEAU 5 */ @@ -499,7 +498,7 @@ void t1sama() { /* On entre dans le manoir */ //Translation: affper(ipers); caff = 77; afdes(0); - boite(223, 47, 155, 91, 15); + g_vm->_screenSurface.drawBox(223, 47, 155, 91, 15); repon(2, 33); tkey1(false); mennor(); diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index a223e4956f..924b378e14 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -26,7 +26,6 @@ */ #include "common/str.h" -#include "mortevielle/boite.h" #include "mortevielle/level15.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" @@ -101,7 +100,7 @@ namespace Mortevielle { coor[j + 1].etat = false; if (res == 1) rep = 10; else rep = 6; - boite(80, 33, 40 + tmax * rep, (der - prem) * 8 + 16, 15); + g_vm->_screenSurface.drawBox(80, 33, 40 + tmax * rep, (der - prem) * 8 + 16, 15); rep = 0; j = 0; memk = 0; -- cgit v1.2.3 From 855fed35d0c7548c43ceb9a77f811c15c60ea325 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 21:06:41 +1100 Subject: MORTEVIELLE: Fixed English strings for F3 and F8 --- devtools/create_mortdat/create_mortdat.cpp | 4 ++-- dists/engine-data/mort.dat | Bin 1797 -> 1799 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/devtools/create_mortdat/create_mortdat.cpp b/devtools/create_mortdat/create_mortdat.cpp index 773ddaeeed..aff67dc949 100644 --- a/devtools/create_mortdat/create_mortdat.cpp +++ b/devtools/create_mortdat/create_mortdat.cpp @@ -196,8 +196,8 @@ void writeEnglishStaticStrings() { " Load", " Restart ", - "F3: More", - "F8: Restart", + "F3: Repeat", + "F8: Proceed", "Hide self", "take", " probe ", diff --git a/dists/engine-data/mort.dat b/dists/engine-data/mort.dat index 8e0171fe5a..b2caafee96 100644 Binary files a/dists/engine-data/mort.dat and b/dists/engine-data/mort.dat differ -- cgit v1.2.3 From 5448664f8bcae2d8aca4bdfb85f0d51563a76428 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 21:08:12 +1100 Subject: MORTEVIELLE: Fixed the F3/F8 box width to adjust to the text size --- engines/mortevielle/graphics.cpp | 10 ++++++++-- engines/mortevielle/graphics.h | 1 + engines/mortevielle/mor.cpp | 18 ++++++++++++------ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index e9c8c1e7e9..ad421988d4 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -1090,9 +1090,15 @@ void ScreenSurface::writeg(const Common::String &l, int c) { pt.x += i; } show_mouse(); +} + +/** + * Gets the width in pixels of the specified string + */ +int ScreenSurface::getStringWidth(const Common::String &s) { + int charWidth = (res == 2) ? 6 : 10; - // TODO: Move screen updates to main loop once constructed - g_vm->_screenSurface.updateScreen(); + return s.size() * charWidth; } } // End of namespace Mortevielle diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 258f4cfacc..b196fce7f9 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -91,6 +91,7 @@ public: void clearScreen(); void putxy(int x, int y) { _textPos = Common::Point(x, y); } void writeg(const Common::String &l, int c); + int getStringWidth(const Common::String &s); // TODO: Refactor code to remove this method, for increased performance void setPixel(const Common::Point &pt, int palIndex); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 6e2d1057cb..ba480ce125 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -451,15 +451,21 @@ void repon(int f, int m) { } void f3f8() { - int co; + Common::String f3 = g_vm->getString(S_F3); + Common::String f8 = g_vm->getString(S_F8); - if (res == 1) co = 107; - else co = 64; + // Write the F3 and F8 text strings g_vm->_screenSurface.putxy(3, 44); - g_vm->_screenSurface.writeg(g_vm->getString(S_F3), 5); + g_vm->_screenSurface.writeg(f3, 5); g_vm->_screenSurface._textPos.y = 51; - g_vm->_screenSurface.writeg(g_vm->getString(S_F8), 5); - g_vm->_screenSurface.drawBox(0, 42, co, 16, 7); + g_vm->_screenSurface.writeg(f8, 5); + + // Get the width of the written text strings + int f3Width = g_vm->_screenSurface.getStringWidth(f3); + int f8Width = g_vm->_screenSurface.getStringWidth(f8); + + // Write out the bounding box + g_vm->_screenSurface.drawBox(0, 42, MAX(f3Width, f8Width) + 6, 16, 7); } void t5(int cx) { -- cgit v1.2.3 From bbc8ba9ad61430a8449bcfc04bd483cbc219f194 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 21:38:27 +1100 Subject: MORTEVIELLE: Replace old calls to afff to use new decode/drawPicture methods --- engines/mortevielle/mor.cpp | 28 ++++++++++++++++++++-------- engines/mortevielle/var_mor.cpp | 5 ----- engines/mortevielle/var_mor.h | 2 -- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index ba480ce125..dbecbc9e7d 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -1233,18 +1233,29 @@ void writetp(Common::String s, int t) { g_vm->_screenSurface.writeg(copy(s, 1, 25), t); } +/** + * Shows the waiting message when changing scenes. + * @remarks Because modern computesr are so much quicker. There's no point in showing + * a waiting message between scenes. + */ void messint(int nu) { - /* debug('messint'); */ + /* Method is deprecated clsf1(); clsf2(); clsf3(); - decomp(0x73a2, 1008); + + GfxSurface surface; + surface.decode(&mem[0x73a2 * 16 + 1008]); + WRITE_LE_UINT16(&mem[0x7413 * 16 + 12], 80); WRITE_LE_UINT16(&mem[0x7413 * 16 + 14], 40); writepal(90); - afff(gd, 0x73a2, 1008, 0, 0); - afff(gd, 0x73a2, 1008, 0, 70); + + g_vm->_screenSurface.drawPicture(surface, 0, 0); + g_vm->_screenSurface.drawPicture(surface, 0, 70); + repon(7, nu); + */ } void aniof(int ouf, int num) { @@ -1257,11 +1268,12 @@ void aniof(int ouf, int num) { else if (num == 4) num = 3; ad = adani; offset = animof(ouf, num); - decomp(ad, offset); - hide_mouse(); - afff(gd, ad, offset, 0, 12); + + GfxSurface surface; + surface.decode(&mem[ad * 16 + offset]); + g_vm->_screenSurface.drawPicture(surface, 0, 12); + ecrf1(); - show_mouse(); } void musique(int so) { diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 77da4a50a0..487231673a 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -313,11 +313,6 @@ void decomp(int seg, int dep) { debugC(1, kMortevielleCore, "TODO: decomp deprecated in faovur of GfxSurface::decode"); } -// (* external 'c:\mc\affich.com'; *) -void afff(int Gd, int seg, int dep, int x, int y) { - warning("TODO: afff"); -} - // (* external 'c:\mc\reusint.com'; *) void musyc(tablint &tb, int nbseg, int att) { warning("TODO: musyc"); diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 739934277c..e0b0480d53 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -437,8 +437,6 @@ extern void s_sauv(int Gd, int y, int dy); extern void box(int c, int Gd, int xo, int yo, int xi, int yi, int patt); // (* external 'c:\mc\decomp.com'; *) extern void decomp(int seg, int dep); -// (* external 'c:\mc\affich.com'; *) -extern void afff(int Gd, int seg, int dep, int x, int y); } // End of namespace Mortevielle -- cgit v1.2.3 From ec2d9d6d77a5f59d8a2332973d407c3fb02379d2 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 21:42:23 +1100 Subject: MORTEVIELLE: Added CHECK_QUIT to afdes() event loop --- engines/mortevielle/mor2.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 496ce64f92..71546e943b 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -213,6 +213,7 @@ void tkey1(bool d) { if (d) tinke(); quest = keypressed(); read_pos_mouse(x, y, c); + CHECK_QUIT; } while (!(quest || (c != 0) || (d && anyone))); if (quest) key = testou(); g_vm->setMouseClick(false); -- cgit v1.2.3 From 459ef933395e9f7108c6047c7d07b2a22351a315 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 21:52:59 +1100 Subject: MORTEVIELLE: Add comments to the deprecated s_char method --- engines/mortevielle/var_mor.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 487231673a..9b735bdeda 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -297,9 +297,13 @@ void palette(int v1) { warning("TODO: palette"); } -// (* external 'c:\mc\charecr.com'; *) +/** + * Restore a screen area + * @remarks Currently implemented differently in ScummVM, so this method is redundant. + * Original assembly was present in 'charecr.asm' + */ void s_char(int Gd, int y, int dy) { - warning("TODO: s_char"); + debugC(1, kMortevielleCore, "s_char called"); } // (* external 'c:\mc\boite.com'; *) -- cgit v1.2.3 From a29bd180f730ba79e380d9c04a140ab8303c5d77 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 22:03:50 +1100 Subject: MORTEVIELLE: Replaced all box() calls with ScreenSurface::fillBox --- engines/mortevielle/alert.cpp | 6 +++--- engines/mortevielle/graphics.cpp | 10 +++------- engines/mortevielle/graphics.h | 2 +- engines/mortevielle/menu.cpp | 8 ++++---- engines/mortevielle/mor.cpp | 14 +++++++------- engines/mortevielle/ques.cpp | 2 +- engines/mortevielle/sprint.cpp | 6 ++++-- engines/mortevielle/var_mor.cpp | 11 ----------- engines/mortevielle/var_mor.h | 4 ---- 9 files changed, 23 insertions(+), 40 deletions(-) diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index 73befd9196..8f2ff4ffd3 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -100,9 +100,9 @@ static void fait_boite(int lidep, int nli, int tx) { y = pred(int, lidep) << 3; xx = x + tx; yy = y + (nli << 3); - box(15, gd, x, y, xx, yy, 255); - box(0, gd, x, y + 2, xx, y + 4, 255); - box(0, gd, x, yy - 4, xx, yy - 2, 255); + g_vm->_screenSurface.fillBox(15, Common::Rect(x, y, xx, yy)); + g_vm->_screenSurface.fillBox(0, Common::Rect(x, y + 2, xx, y + 4)); + g_vm->_screenSurface.fillBox(0, Common::Rect(x, yy - 4, xx, yy - 2)); } diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index ad421988d4..3ac08cfea1 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -1006,16 +1006,12 @@ void ScreenSurface::drawBox(int x, int y, int dx, int dy, int col) { * @remarks Because the ScummVM surface is using a double height 640x400 surface to * simulate the original 640x400 surface, all Y values have to be doubled */ -void ScreenSurface::fillBox(int colour, const Common::Rect &bounds, int patt) { +void ScreenSurface::fillBox(int colour, const Common::Rect &bounds) { Graphics::Surface destSurface = lockArea(Common::Rect(bounds.left, bounds.top * 2, bounds.right, bounds.bottom * 2)); // Fill the area destSurface.fillRect(Common::Rect(0, 0, destSurface.w, destSurface.h), colour); - - // TODO: Figure out what effect patterns of other than '0xff' have - if (patt != 0xff) - warning("TODO: Figure out operation of ScreenSurface::box when pattern is %xh", patt); } /** @@ -1065,7 +1061,7 @@ void ScreenSurface::writeg(const Common::String &l, int c) { case 1: case 3 : { cecr = 0; - box(15, gd, pt.x, pt.y, x, pt.y + 7, 255); + g_vm->_screenSurface.fillBox(15, Common::Rect(pt.x, pt.y, x, pt.y + 7)); } break; case 4 : { @@ -1079,7 +1075,7 @@ void ScreenSurface::writeg(const Common::String &l, int c) { case 0: case 2 : { cecr = 15; - box(0, gd, pt.x, pt.y, x, pt.y + 7, 255); + g_vm->_screenSurface.fillBox(0, Common::Rect(pt.x, pt.y, x, pt.y + 7)); } break; } diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index b196fce7f9..38f2ac3068 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -87,7 +87,7 @@ public: void copyFrom(Graphics::Surface &src, int x, int y); void writeCharacter(const Common::Point &pt, unsigned char ch, int palIndex); void drawBox(int x, int y, int dx, int dy, int col); - void fillBox(int colour, const Common::Rect &bounds, int patt); + void fillBox(int colour, const Common::Rect &bounds); void clearScreen(); void putxy(int x, int y) { _textPos = Common::Point(x, y); } void writeg(const Common::String &l, int c); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 07626b3894..71b0ccf407 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -146,7 +146,7 @@ void menu_aff() { clrscr; halt; end;*/ - box(7, gd, 0, 0, 639, 10, 255); + g_vm->_screenSurface.fillBox(7, Common::Rect(0, 0, 639, 10)); col = 28 * res; if (gd == cga) color = 1; else color = 9; @@ -278,9 +278,9 @@ void menu_down(int ii) { if (res == 1) cx = 10; else cx = 6; xcc = xco + (don[ii][3] * cx) + 6; - box(15, gd, xco, 12, xcc, 10 + (don[ii][2] << 1), 255); - box(0, gd, xcc, 12, xcc + 4, 10 + (don[ii][2] << 1), 255); - box(0, gd, xco, 8 + (don[ii][2] << 1), xcc + 4, 12 + (don[ii][2] << 1), 255); + g_vm->_screenSurface.fillBox(15, Common::Rect(xco, 12, xcc, 10 + (don[ii][2] << 1))); + g_vm->_screenSurface.fillBox(0, Common::Rect(xcc, 12, xcc + 4, 10 + (don[ii][2] << 1))); + g_vm->_screenSurface.fillBox(0, Common::Rect(xco, 8 + (don[ii][2] << 1), xcc + 4, 12 + (don[ii][2] << 1))); g_vm->_screenSurface.putxy(xco, 16); cx = 0; do { diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index dbecbc9e7d..ea9012e49e 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -149,7 +149,7 @@ void clsf1() { /* debug('clsf1'); */ hide_mouse(); - box(0, gd, 0, 11, 514, 175, 255); + g_vm->_screenSurface.fillBox(0, Common::Rect(0, 11, 514, 175)); /* if Gd=ams then port[$3DD]:=15; case Gd of ams, @@ -198,11 +198,11 @@ void clsf2() { /* debug('clsf2'); */ hide_mouse(); if (f2_all) { - box(0, gd, 1, 176, 633, 199, 255); + g_vm->_screenSurface.fillBox(0, Common::Rect(1, 176, 633, 199)); g_vm->_screenSurface.drawBox(0, 175, 634, 24, 15); f2_all = false; } else { - box(0, gd, 1, 176, 633, 190, 255); + g_vm->_screenSurface.fillBox(0, Common::Rect(1, 176, 633, 190)); g_vm->_screenSurface.drawBox(0, 175, 634, 15, 15); } show_mouse(); @@ -247,7 +247,7 @@ void clsf3() { /* debug('clsf3'); */ hide_mouse(); - box(0, gd, 1, 192, 633, 199, 255); + g_vm->_screenSurface.fillBox(0, Common::Rect(1, 192, 633, 199)); g_vm->_screenSurface.drawBox(0, 191, 634, 8, 15); show_mouse(); } @@ -285,7 +285,7 @@ void clsf10() { co = 600; cod = 544; } - box(15, gd, cod, 93, co, 98, 255); + g_vm->_screenSurface.fillBox(15, Common::Rect(cod, 93, co, 98)); if (s.conf < 33) st = g_vm->getString(S_COOL); else if (s.conf < 66) @@ -300,7 +300,7 @@ void clsf10() { g_vm->_screenSurface.writeg(st, 4); if (res == 1) co = 620; else co = 584; - box(15, gd, 560, 24, co, 86, 255); + g_vm->_screenSurface.fillBox(15, Common::Rect(560, 24, co, 86)); /* rempli(69,12,32,5,255);*/ show_mouse(); } @@ -319,7 +319,7 @@ void paint_rect(int x, int y, int dx, int dy) { /* debug('paint_rect'); */ if (gd == cga) co = 3; else co = 11; - box(co, gd, x, y, x + dx, y + dy, 255); + g_vm->_screenSurface.fillBox(co, Common::Rect(x, y, x + dx, y + dy)); } int hazard(int min, int max) { diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index 924b378e14..5453500fcd 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -63,7 +63,7 @@ namespace Mortevielle { deline(ta[i], st, tay); if (res == 1) y = 29; else y = 23; - box(15, gd, 0, 14, 630, y, 255); + g_vm->_screenSurface.fillBox(15, Common::Rect(0, 14, 630, y)); afftex(st, 20, 15, 100, 2, 0); if (i != 10) { prem = ta[i] + 1; diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp index 6a52b2cdb2..e6d00358d5 100644 --- a/engines/mortevielle/sprint.cpp +++ b/engines/mortevielle/sprint.cpp @@ -35,11 +35,13 @@ namespace Mortevielle { void fill_box(int x, int y, int dx) { - box(15, gd, pred(int, x) << 3, pred(int, y) << 3, pred(int, x + dx) << 3, y << 3, 255); + g_vm->_screenSurface.fillBox(15, Common::Rect(pred(int, x) << 3, pred(int, y) << 3, + pred(int, x + dx) << 3, y << 3)); } void clear_box(int x, int y, int dx) { - box(0, gd, pred(int, x) << 3, pred(int, y) << 3, pred(int, x + dx) << 3, y << 3, 255); + g_vm->_screenSurface.fillBox(0, Common::Rect(pred(int, x) << 3, pred(int, y) << 3, + pred(int, x + dx) << 3, y << 3)); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 9b735bdeda..1fc18e70d0 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -306,17 +306,6 @@ void s_char(int Gd, int y, int dy) { debugC(1, kMortevielleCore, "s_char called"); } -// (* external 'c:\mc\boite.com'; *) -void box(int c, int Gd, int xo, int yo, int xi, int yi, int patt) { - debugC(1, kMortevielleCore, "TODO: box deprecated in favour of GfxSurface::fillBox"); - g_vm->_screenSurface.fillBox(c, Common::Rect(xo, yo, xi, yi), patt); -} - -// (* external 'c:\mc\decomp.com'; *) -void decomp(int seg, int dep) { - debugC(1, kMortevielleCore, "TODO: decomp deprecated in faovur of GfxSurface::decode"); -} - // (* external 'c:\mc\reusint.com'; *) void musyc(tablint &tb, int nbseg, int att) { warning("TODO: musyc"); diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index e0b0480d53..5f13a254dd 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -433,10 +433,6 @@ extern int get_random_number(int minval, int maxval); extern void s_char(int Gd, int y, int dy); // (* external 'c:\mc\sauvecr.com'; *) extern void s_sauv(int Gd, int y, int dy); -// (* external 'c:\mc\boite.com'; *) -extern void box(int c, int Gd, int xo, int yo, int xi, int yi, int patt); -// (* external 'c:\mc\decomp.com'; *) -extern void decomp(int seg, int dep); } // End of namespace Mortevielle -- cgit v1.2.3 From 4cd9be9f2f23631255ac4c748f5e01f8fc4e5518 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 22:21:14 +1100 Subject: MORTEVIELLE: Removed unused clear_box() and fill_box(), and renamed fillBox to fillRect --- engines/mortevielle/alert.cpp | 7 +++--- engines/mortevielle/graphics.cpp | 6 ++--- engines/mortevielle/graphics.h | 2 +- engines/mortevielle/menu.cpp | 9 ++++---- engines/mortevielle/module.mk | 1 - engines/mortevielle/mor.cpp | 15 ++++++------- engines/mortevielle/outtext.cpp | 1 - engines/mortevielle/ovd1.cpp | 1 - engines/mortevielle/ques.cpp | 3 +-- engines/mortevielle/sprint.cpp | 47 ---------------------------------------- engines/mortevielle/sprint.h | 39 --------------------------------- engines/mortevielle/var_mor.cpp | 1 - 12 files changed, 19 insertions(+), 113 deletions(-) delete mode 100644 engines/mortevielle/sprint.cpp delete mode 100644 engines/mortevielle/sprint.h diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index 8f2ff4ffd3..6eb7d5e912 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -30,7 +30,6 @@ #include "mortevielle/level15.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" -#include "mortevielle/sprint.h" namespace Mortevielle { @@ -100,9 +99,9 @@ static void fait_boite(int lidep, int nli, int tx) { y = pred(int, lidep) << 3; xx = x + tx; yy = y + (nli << 3); - g_vm->_screenSurface.fillBox(15, Common::Rect(x, y, xx, yy)); - g_vm->_screenSurface.fillBox(0, Common::Rect(x, y + 2, xx, y + 4)); - g_vm->_screenSurface.fillBox(0, Common::Rect(x, yy - 4, xx, yy - 2)); + g_vm->_screenSurface.fillRect(15, Common::Rect(x, y, xx, yy)); + g_vm->_screenSurface.fillRect(0, Common::Rect(x, y + 2, xx, y + 4)); + g_vm->_screenSurface.fillRect(0, Common::Rect(x, yy - 4, xx, yy - 2)); } diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 3ac08cfea1..bdf6c86daa 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -1006,7 +1006,7 @@ void ScreenSurface::drawBox(int x, int y, int dx, int dy, int col) { * @remarks Because the ScummVM surface is using a double height 640x400 surface to * simulate the original 640x400 surface, all Y values have to be doubled */ -void ScreenSurface::fillBox(int colour, const Common::Rect &bounds) { +void ScreenSurface::fillRect(int colour, const Common::Rect &bounds) { Graphics::Surface destSurface = lockArea(Common::Rect(bounds.left, bounds.top * 2, bounds.right, bounds.bottom * 2)); @@ -1061,7 +1061,7 @@ void ScreenSurface::writeg(const Common::String &l, int c) { case 1: case 3 : { cecr = 0; - g_vm->_screenSurface.fillBox(15, Common::Rect(pt.x, pt.y, x, pt.y + 7)); + g_vm->_screenSurface.fillRect(15, Common::Rect(pt.x, pt.y, x, pt.y + 7)); } break; case 4 : { @@ -1075,7 +1075,7 @@ void ScreenSurface::writeg(const Common::String &l, int c) { case 0: case 2 : { cecr = 15; - g_vm->_screenSurface.fillBox(0, Common::Rect(pt.x, pt.y, x, pt.y + 7)); + g_vm->_screenSurface.fillRect(0, Common::Rect(pt.x, pt.y, x, pt.y + 7)); } break; } diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 38f2ac3068..1daad5720b 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -87,7 +87,7 @@ public: void copyFrom(Graphics::Surface &src, int x, int y); void writeCharacter(const Common::Point &pt, unsigned char ch, int palIndex); void drawBox(int x, int y, int dx, int dy, int col); - void fillBox(int colour, const Common::Rect &bounds); + void fillRect(int colour, const Common::Rect &bounds); void clearScreen(); void putxy(int x, int y) { _textPos = Common::Point(x, y); } void writeg(const Common::String &l, int c); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 71b0ccf407..12ccbe3ff5 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -32,7 +32,6 @@ #include "mortevielle/menu.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" -#include "mortevielle/sprint.h" #include "mortevielle/var_mor.h" namespace Mortevielle { @@ -146,7 +145,7 @@ void menu_aff() { clrscr; halt; end;*/ - g_vm->_screenSurface.fillBox(7, Common::Rect(0, 0, 639, 10)); + g_vm->_screenSurface.fillRect(7, Common::Rect(0, 0, 639, 10)); col = 28 * res; if (gd == cga) color = 1; else color = 9; @@ -278,9 +277,9 @@ void menu_down(int ii) { if (res == 1) cx = 10; else cx = 6; xcc = xco + (don[ii][3] * cx) + 6; - g_vm->_screenSurface.fillBox(15, Common::Rect(xco, 12, xcc, 10 + (don[ii][2] << 1))); - g_vm->_screenSurface.fillBox(0, Common::Rect(xcc, 12, xcc + 4, 10 + (don[ii][2] << 1))); - g_vm->_screenSurface.fillBox(0, Common::Rect(xco, 8 + (don[ii][2] << 1), xcc + 4, 12 + (don[ii][2] << 1))); + g_vm->_screenSurface.fillRect(15, Common::Rect(xco, 12, xcc, 10 + (don[ii][2] << 1))); + g_vm->_screenSurface.fillRect(0, Common::Rect(xcc, 12, xcc + 4, 10 + (don[ii][2] << 1))); + g_vm->_screenSurface.fillRect(0, Common::Rect(xco, 8 + (don[ii][2] << 1), xcc + 4, 12 + (don[ii][2] << 1))); g_vm->_screenSurface.putxy(xco, 16); cx = 0; do { diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 4d2072a913..0688fd5ac0 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -22,7 +22,6 @@ MODULE_OBJS := \ ques.o \ saveload.o \ sound.o \ - sprint.o \ taffich.o \ var_mor.o diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index ea9012e49e..2f48999638 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -38,7 +38,6 @@ #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/parole2.h" -#include "mortevielle/sprint.h" #include "mortevielle/var_mor.h" namespace Mortevielle { @@ -149,7 +148,7 @@ void clsf1() { /* debug('clsf1'); */ hide_mouse(); - g_vm->_screenSurface.fillBox(0, Common::Rect(0, 11, 514, 175)); + g_vm->_screenSurface.fillRect(0, Common::Rect(0, 11, 514, 175)); /* if Gd=ams then port[$3DD]:=15; case Gd of ams, @@ -198,11 +197,11 @@ void clsf2() { /* debug('clsf2'); */ hide_mouse(); if (f2_all) { - g_vm->_screenSurface.fillBox(0, Common::Rect(1, 176, 633, 199)); + g_vm->_screenSurface.fillRect(0, Common::Rect(1, 176, 633, 199)); g_vm->_screenSurface.drawBox(0, 175, 634, 24, 15); f2_all = false; } else { - g_vm->_screenSurface.fillBox(0, Common::Rect(1, 176, 633, 190)); + g_vm->_screenSurface.fillRect(0, Common::Rect(1, 176, 633, 190)); g_vm->_screenSurface.drawBox(0, 175, 634, 15, 15); } show_mouse(); @@ -247,7 +246,7 @@ void clsf3() { /* debug('clsf3'); */ hide_mouse(); - g_vm->_screenSurface.fillBox(0, Common::Rect(1, 192, 633, 199)); + g_vm->_screenSurface.fillRect(0, Common::Rect(1, 192, 633, 199)); g_vm->_screenSurface.drawBox(0, 191, 634, 8, 15); show_mouse(); } @@ -285,7 +284,7 @@ void clsf10() { co = 600; cod = 544; } - g_vm->_screenSurface.fillBox(15, Common::Rect(cod, 93, co, 98)); + g_vm->_screenSurface.fillRect(15, Common::Rect(cod, 93, co, 98)); if (s.conf < 33) st = g_vm->getString(S_COOL); else if (s.conf < 66) @@ -300,7 +299,7 @@ void clsf10() { g_vm->_screenSurface.writeg(st, 4); if (res == 1) co = 620; else co = 584; - g_vm->_screenSurface.fillBox(15, Common::Rect(560, 24, co, 86)); + g_vm->_screenSurface.fillRect(15, Common::Rect(560, 24, co, 86)); /* rempli(69,12,32,5,255);*/ show_mouse(); } @@ -319,7 +318,7 @@ void paint_rect(int x, int y, int dx, int dy) { /* debug('paint_rect'); */ if (gd == cga) co = 3; else co = 11; - g_vm->_screenSurface.fillBox(co, Common::Rect(x, y, x + dx, y + dy)); + g_vm->_screenSurface.fillRect(co, Common::Rect(x, y, x + dx, y + dy)); } int hazard(int min, int max) { diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index e7d75517be..4f2cadef74 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -29,7 +29,6 @@ #include "mortevielle/graphics.h" #include "mortevielle/level15.h" #include "mortevielle/mortevielle.h" -#include "mortevielle/sprint.h" #include "mortevielle/var_mor.h" #include "common/str.h" diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 7deda53d7b..df79b72a6b 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -37,7 +37,6 @@ #include "mortevielle/ovd1.h" #include "mortevielle/parole.h" #include "mortevielle/sound.h" -#include "mortevielle/sprint.h" #include "mortevielle/taffich.h" #include "mortevielle/var_mor.h" diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index 5453500fcd..17921951cf 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -31,7 +31,6 @@ #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/ques.h" -#include "mortevielle/sprint.h" namespace Mortevielle { @@ -63,7 +62,7 @@ namespace Mortevielle { deline(ta[i], st, tay); if (res == 1) y = 29; else y = 23; - g_vm->_screenSurface.fillBox(15, Common::Rect(0, 14, 630, y)); + g_vm->_screenSurface.fillRect(15, Common::Rect(0, 14, 630, y)); afftex(st, 20, 15, 100, 2, 0); if (i != 10) { prem = ta[i] + 1; diff --git a/engines/mortevielle/sprint.cpp b/engines/mortevielle/sprint.cpp deleted file mode 100644 index e6d00358d5..0000000000 --- a/engines/mortevielle/sprint.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "common/str.h" -#include "common/textconsole.h" -#include "mortevielle/mortevielle.h" -#include "mortevielle/mouse.h" -#include "mortevielle/sprint.h" -#include "mortevielle/var_mor.h" - -namespace Mortevielle { - -void fill_box(int x, int y, int dx) { - g_vm->_screenSurface.fillBox(15, Common::Rect(pred(int, x) << 3, pred(int, y) << 3, - pred(int, x + dx) << 3, y << 3)); -} - -void clear_box(int x, int y, int dx) { - g_vm->_screenSurface.fillBox(0, Common::Rect(pred(int, x) << 3, pred(int, y) << 3, - pred(int, x + dx) << 3, y << 3)); -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/sprint.h b/engines/mortevielle/sprint.h deleted file mode 100644 index 09d5758f63..0000000000 --- a/engines/mortevielle/sprint.h +++ /dev/null @@ -1,39 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_SPRINT_H -#define MORTEVIELLE_SPRINT_H - -#include "common/str.h" - -namespace Mortevielle { - -extern void fill_box(int x, int y, int dx); -extern void clear_box(int x, int y, int dx); - -} // End of namespace Mortevielle -#endif diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 1fc18e70d0..7b6156263c 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -29,7 +29,6 @@ #include "common/str.h" #include "common/textconsole.h" #include "mortevielle/mortevielle.h" -#include "mortevielle/sprint.h" #include "mortevielle/var_mor.h" namespace Mortevielle { -- cgit v1.2.3 From b1b7bd8501c7e474317c5ad8d8e8e9244e960a12 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 22:35:50 +1100 Subject: MORTEVIELLE: Removed all the code that was commented out in the original source --- engines/mortevielle/keyboard.cpp | 22 --------------------- engines/mortevielle/level15.cpp | 39 ------------------------------------- engines/mortevielle/mor.cpp | 29 ++------------------------- engines/mortevielle/mor2.cpp | 4 +--- engines/mortevielle/mortevielle.cpp | 3 --- engines/mortevielle/mouse.cpp | 18 +---------------- engines/mortevielle/ovd1.cpp | 31 ++++------------------------- engines/mortevielle/parole.cpp | 3 +-- engines/mortevielle/ques.cpp | 2 -- engines/mortevielle/var_mor.cpp | 2 +- 10 files changed, 10 insertions(+), 143 deletions(-) diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index 4eba4c4a0d..a330a382d9 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -49,28 +49,6 @@ int testou() { case '\23' : sonoff = ! sonoff; break; - /* Prevent changing graphics mode - case '\1': - case '\3': - case '\5' : { - newgd = (uint)pred(int, ord(ch)) >> 1; - testou_result = 61; - return testou_result; - } - break; - case '\10' : { - newgd = her; - testou_result = 61; - return testou_result; - } - break; - case '\24' : { - newgd = tan; - testou_result = 61; - return testou_result; - } - break; - */ case '\26' : if ((c_zzz == 1) && (c_zzz == 2)) { zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index c017bf24d3..8d89767e91 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -112,12 +112,6 @@ void pictout(int seg, int dep, int x, int y) { g_vm->_screenSurface.drawPicture(surface, x, y); } -/* -function calad(x,y:int):int; - begin - calad:=pred(x)+320*pred(y) - end; - */ void sauvecr(int y, int dy) { hide_mouse(); s_sauv(gd, y, dy); @@ -129,28 +123,6 @@ void charecr(int y, int dy) { s_char(gd, y, dy); show_mouse(); } -/* -function peek(ad:int):int; -begin - peek:=tabdon[ad]; -end; - -function peekw(ad:int):int; -begin - peekw:=tabdon[ad] shl 8+tabdon[succ(ad)]; -end; - -function peekl(ad:int):real; -begin - peekl:=tabdon[ad+3]+tabdon[ad+2] shl 8; -end; - - -procedure poke (ad,n:int); -begin - tabdon[ad]:=lo(n); -end; - */ void adzon() { Common::File f; @@ -186,15 +158,4 @@ int animof(int ouf, int num) { return animof_result; } -/*procedure affgd(offs,dep,x,y:int); -begin - case Gd of - Ams : affams(offs,dep,x,y); - Cga : affcga(offs,dep,x,y); - Ega : affega(offs,dep,x,y); - Her : affher(offs,dep,x,y); - Tan : afftan(offs,dep,x,y); - end; -end;*/ - } // End of namespace Mortevielle diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 2f48999638..36e23bf653 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -656,8 +656,7 @@ void pendule() { /* debug('pendule'); */ hide_mouse(); - /*paint_rect(572,114,18,20); - paint_rect(577,114,6,20);*/ + paint_rect(570, 118, 20, 10); paint_rect(578, 114, 6, 18); if ((gd == cga) || (gd == her)) @@ -1238,23 +1237,7 @@ void writetp(Common::String s, int t) { * a waiting message between scenes. */ void messint(int nu) { - /* Method is deprecated - clsf1(); - clsf2(); - clsf3(); - - GfxSurface surface; - surface.decode(&mem[0x73a2 * 16 + 1008]); - - WRITE_LE_UINT16(&mem[0x7413 * 16 + 12], 80); - WRITE_LE_UINT16(&mem[0x7413 * 16 + 14], 40); - writepal(90); - - g_vm->_screenSurface.drawPicture(surface, 0, 0); - g_vm->_screenSurface.drawPicture(surface, 0, 70); - - repon(7, nu); - */ + // Method is deprecated } void aniof(int ouf, int num) { @@ -1278,7 +1261,6 @@ void aniof(int ouf, int num) { void musique(int so) { bool i; int haz; - /* dep: array[1..5] of float;*/ /* debug('musique'); */ if (so == 0) { /*musik(0)*/ @@ -1315,13 +1297,6 @@ void musique(int so) { i = true; } if (! i) { - /* dep[1]:= 1416; - dep[2]:= 1512; - dep[3]:= 1692; - dep[4]:= 1884; - dep[5]:= 2046; - haz:= hazard(1,5); - musik(dep[haz]);*/ haz = hazard(1, 17); parole(haz, 1, 2); } diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 71546e943b..5d9d9b24e2 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -677,9 +677,7 @@ void tcoord(int sx) atdon = atdon + 4; cy = succ(int, cy); } - /* for cy:=0 to caff-1 do - a:=a+ tabdon[amzon+3+4*cy]; - b:= peek(amzon+3+4*caff); */ + b = tabdon[atdon]; if (b == 0) goto L1; a = a + fleche; diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 4cbc2b4ee3..026f17d718 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -134,9 +134,6 @@ Common::ErrorCode MortevielleEngine::initialise() { // Setup the mouse cursor initMouse(); - /*init_debug;*/ - /* ecri_seg;*/ - //pio_initialize(argc, argv); gd = ega; newgd = gd; zuul = false; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 631be60cf8..51af36b5f0 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -49,14 +49,13 @@ int s_s[12][6]; void init_mouse() { -// int i, j; registres reg; mouse_shwn = 0; x_s = 0; y_s = 0; p_o_s = 0; - /*int_m:= False;*/ + g_vm->setMouseClick(false); m_show = m_arrow; if ((READ_LE_UINT16(&mem[0xcc]) == 0) && (READ_LE_UINT16(&mem[0xce]) == 0)) int_m = false; @@ -75,21 +74,6 @@ void init_mouse() { } } -/*procedure change_mouse( t : int ); -begin - m_show:= t; -end;*/ - -/*procedure dessine_souris(xf,yf:int); - var x, xx, y :int; -begin - case m_show of - m_arrow : begin - affput(2,Gd,xf,yf,0,0); - end; - end; -end; */ - void hide_mouse() { int i, j, k, ps;; bool imp; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index df79b72a6b..6650dd04b2 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -45,25 +45,11 @@ namespace Mortevielle { // For ScummVM, we need to do check for file errors where we do the file access const int ioresult = 0; +/** + * Check for disk 2 being in the drive + */ void dem2() { - /* Deprecated check for disk 2 - - untyped_file f; - int k; - - // -- demande de disk 2 -- - while (ioresult != 0); - assign(f, "mort.001"); - //$i- - reset(f); - while (ioresult != 0) { - show_mouse(); - k = do_alert(al_mess2, 1); - hide_mouse(); - reset(f); - } - close(f); - */ + // Deprecated under ScummVM } void ani50() { @@ -75,15 +61,6 @@ void ani50() { repon(2, c_paroles + 143); } -/*overlay procedure apzuul; - begin - if (c_zzz=1) or (c_zzz=2) then - begin - zzuul(adcfiec+161,0,1644); - c_zzz:=succ(c_zzz); - end; - end;*/ - /* overlay */ void aff50(bool c) { caff = 50; maff = 0; diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index ba43b5955d..2a8984195a 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -128,8 +128,7 @@ void veracf(byte b) { error("Missing file - sonmus.mor"); f.read(&mem[0x7414 * 16 + 0], 273); - /*blockread(f,mem[adson * 16+0],300); - blockread(f,mem[adson * 16+2400+0],245);*/ + g_vm->_soundManager.demus(&mem[0x7414 * 16], &mem[adson * 16], 273); f.close(); } diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index 17921951cf..aadedbd9cc 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -113,13 +113,11 @@ namespace Mortevielle { while (coor[k].etat && ! dans_rect(coor[k])) k = k + 1; if (coor[k].etat) { if ((memk != 0) && (memk != k)) { - /*DeLine(T_rec[ta[i]+memk].indis,T_rec[ta[i]+memk].point,st,tay);*/ for (j = 1; j <= tmax; j ++) st[j] = chaines[memk][j]; st[1 + tmax] = '$'; afftex(st, 100, 27 + memk * 8, 100, 1, 0); } if (memk != k) { - /*DeLine(T_rec[pred(prem)+k].indis,T_rec[pred(prem)+k].point,st,tay);*/ for (j = 1; j <= tmax; j ++) st[j] = chaines[k][j]; st[1 + tmax] = '$'; afftex(st, 100, 27 + k * 8, 100, 1, 1); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 7b6156263c..5c72961630 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -174,7 +174,7 @@ int x, int t_cph[6401]; byte tabdon[4001]; -/* t_dxx : array[0..121] of int;*/ + Common::String stpou; /* donne le % d'indices */ //Translation: "Provides the % of hints" byte is; char mode; -- cgit v1.2.3 From 0fa68f3406d3f6a5f31546ca2f91547fac04cd7a Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 22:47:45 +1100 Subject: MORTEVIELLE: Remove more code that had been commented out in the original source --- engines/mortevielle/actions.cpp | 5 ++--- engines/mortevielle/droite.cpp | 4 +--- engines/mortevielle/mor.cpp | 47 +---------------------------------------- engines/mortevielle/mor2.cpp | 24 ++++++--------------- engines/mortevielle/taffich.cpp | 15 ------------- engines/mortevielle/var_mor.h | 2 +- 6 files changed, 11 insertions(+), 86 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index f3bc31b637..adcb17b5ed 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -862,7 +862,7 @@ L2: x = (hazard(0, 10)) - 5; parole(7, x, 1); aniof(1, 1); - /* tkey(5,32000);*/ + tip(z, x); s.conf = s.conf + 1; s.mlieu = 15; @@ -882,7 +882,7 @@ L2: x = (hazard(0, 10)) - 5; parole(7, x, 1); aniof(1, 1); - /* tkey(1,32000);*/ + s.mlieu = ment; affrep(); debloc(s.mlieu); @@ -1069,7 +1069,6 @@ L2: mov_mouse(f, tou); CHECK_QUIT; - /* if keypressed then read(kbd,tou);*/ read_pos_mouse(x, y, c); x = x * (3 - res); if (x > 319) cx = 41; diff --git a/engines/mortevielle/droite.cpp b/engines/mortevielle/droite.cpp index c0a48a51aa..fc52ff7bd3 100644 --- a/engines/mortevielle/droite.cpp +++ b/engines/mortevielle/droite.cpp @@ -41,7 +41,7 @@ void droite(int x, int y, int xx, int yy, int coul) { yr = y; xro = xx; yro = yy; - /*writeln(le_file,'(',x:4,',',y:4,') ==> (',xx:4,',',yy:4,')');*/ + if (abs(y - yy) > abs(x - xx)) { a = (float)((x - xx)) / (y - yy); b = (yr * xro - yro * xr) / (y - yy); @@ -52,7 +52,6 @@ void droite(int x, int y, int xx, int yy, int coul) { g_vm->_screenSurface.setPixel(Common::Point(abs((int)(a * i + b)), i), coul); i = i + step; } while (!(i == yy)); - /*writeln(le_file,'X == ',a:3:3,' * Y + ',b:3:3);*/ } else { a = (float)((y - yy)) / (x - xx); b = ((yro * xr) - (yr * xro)) / (x - xx); @@ -63,7 +62,6 @@ void droite(int x, int y, int xx, int yy, int coul) { g_vm->_screenSurface.setPixel(Common::Point(i, abs((int)(a * i + b))), coul); i = i + step; } while (!(i == xx)); - /*writeln(le_file,'Y == ',a:3:3,' * X + ',b:3:3);*/ } } diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 36e23bf653..2d4df26e46 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -144,50 +144,10 @@ void ecrf1() { } void clsf1() { -// int i, j; - /* debug('clsf1'); */ hide_mouse(); g_vm->_screenSurface.fillRect(0, Common::Rect(0, 11, 514, 175)); - /* if Gd=ams then port[$3DD]:=15; - case Gd of - ams, - cga : begin - for j:=0 to 63 do - begin - for i:=6 to 86 do - begin - mem[$B800:i*80+j]:=0; - mem[$Ba00:i*80+j]:=0; - end; - mem[$b800:6960+j]:=0; - mem[$ba00:400+j]:=0; - end; - end; - ega : begin - port[$3C4]:= 2; - port[$3C5]:= 15; - port[$3CE]:= 8; - port[$3CF]:= 255; - for j:=0 to 63 do - for i:=11 to 174 do - mem[$A000:i*80+j]:=0; - end; - tan : begin - for j:=0 to 128 do - begin - for i:=3 to 43 do - begin - mem[$B800:i*160+j]:=0; - mem[$Ba00:i*160+j]:=0; - mem[$bc00:i*160+j]:=0; - if i<>43 then mem[$be00:i*160+j]:=0; - end; - mem[$be00:320+j]:=0; - end; - end; - end; - droite(256*res,11,256*res,175,0);*/ + show_mouse(); } @@ -208,9 +168,7 @@ void clsf2() { } void ecrf2() { - /* debug('ecrf2'); */ text_color(5); - /*g_vm->_screenSurface.drawBox(0,175,630,15,15);*/ } void ecr2(Common::String str_) { @@ -266,9 +224,6 @@ void ecrf6() { void ecrf7() { text_color(4); - /* draw_mode(2); - text_height(4*res); - text_style(normal);*/ } void clsf10() { diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 5d9d9b24e2..5d33175a60 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -402,11 +402,7 @@ void sparl(float adr, float rep) { deline(repint + c_paroles, st, tay); afftex(st, 230, 4, 65, 24, 5); f3f8(); - /*g_vm->_screenSurface.drawBox(43,30,90,19,15); - gotoxy(7,5); - write('F3: Encore'); - gotoxy(7,6); - write('F8: Stop');*/ + key = 0; do { parole(repint, haut[caff - 69], 0); @@ -428,19 +424,11 @@ void finfouil() { void mfoudi() { int cx; - for (cx = 1; cx <= 7; cx ++) menu_disable(depl[cx]); - for (cx = 1; cx <= 11; cx ++) menu_disable(men[cx]); - /* menu_disable(menup, scacher); - menu_disable(menup, attacher); - menu_disable(menup, defoncer); - menu_disable(menup, dormir); - menu_disable(menup, entrer); - menu_disable(menup, fermer); - menu_disable(menup, frapper); - menu_disable(menup, manger); - menu_disable(menup, mettre); - menu_disable(menup, ouvrir); - menu_disable(menup, sortir); */ + for (cx = 1; cx <= 7; cx ++) + menu_disable(depl[cx]); + for (cx = 1; cx <= 11; cx ++) + menu_disable(men[cx]); + menut(sonder, g_vm->getString(S_SUITE)); menut(soulever, g_vm->getString(S_STOP)); } diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 55fdbb7442..a9f727a41b 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -219,19 +219,4 @@ void taffich() { } } -/* begin - for i:=0 to 15 do - begin - PalH:=WRITE_LE_UINT16(&mem[$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;*/ - } // End of namespace Mortevielle diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 5f13a254dd..a872af199b 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -347,7 +347,7 @@ extern int x, extern int t_cph[6401]; extern byte tabdon[4001]; -/* t_dxx : array[0..121] of int;*/ + extern Common::String stpou; /* donne le % d'indices */ extern byte is; extern char mode; -- cgit v1.2.3 From 9f99fabaa8c15c561907ed6ae9498634b4adc4d3 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 22:50:13 +1100 Subject: MORTEVIELLE: Remove all the overlay comments --- engines/mortevielle/actions.cpp | 58 ++++++++++++++--------------- engines/mortevielle/alert.cpp | 2 +- engines/mortevielle/menu.cpp | 6 +-- engines/mortevielle/mor.cpp | 82 ++++++++++++++++++++--------------------- engines/mortevielle/ovd1.cpp | 18 ++++----- engines/mortevielle/parole.cpp | 12 +++--- engines/mortevielle/prog.cpp | 2 +- engines/mortevielle/ques.cpp | 2 +- 8 files changed, 91 insertions(+), 91 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index adcb17b5ed..5b2f43786a 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -42,7 +42,7 @@ namespace Mortevielle { -/* overlay */ + void taller() { //int mx, cx, cy; int cx; @@ -134,7 +134,7 @@ L2: tmlieu(s.mlieu); } -/* overlay */ void tprendre() { +void tprendre() { //int cx, cy, cz; int cx; @@ -230,7 +230,7 @@ L2: } } -/* overlay */ void tsprendre() { +void tsprendre() { int cx, cy, cz; cx = 0; @@ -251,7 +251,7 @@ L2: clsf2(); } -/* overlay */ void tsoulever() +void tsoulever() { int cx; @@ -278,7 +278,7 @@ L2: if (crep == 255) crep = 997; } -/* overlay */ void tlire() { +void tlire() { // int iaff; if (caff > 99) st4(caff); @@ -294,12 +294,12 @@ L2: } } -/* overlay */ void tslire() { +void tslire() { if (s.derobj == 0) crep = 186; else st4(s.derobj); } -/* overlay */ void tregarder() { +void tregarder() { int cx; if (caff > 99) { @@ -355,12 +355,12 @@ L2: if ((s.mlieu == 10) && (num == 3)) treg(31); } -/* overlay */ void tsregarder() { +void tsregarder() { if (s.derobj != 0) treg(s.derobj); else crep = 186; } -/* overlay */ void tfouiller() { +void tfouiller() { const byte r[14] = {123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}; int cx; @@ -428,12 +428,12 @@ L2: } } -/* overlay */ void tsfouiller() { +void tsfouiller() { if (s.derobj != 0) st7(s.derobj); else crep = 186; } -/* overlay */ void touvrir() { +void touvrir() { int cx, haz; if (!syn) @@ -487,7 +487,7 @@ L2: } } -/* overlay */ void tmettre() { +void tmettre() { int quel; bool entre; char st[1410]; @@ -591,7 +591,7 @@ L2: } } -/* overlay */ void ttourner() { +void ttourner() { int quel; if (caff > 99) { @@ -626,7 +626,7 @@ L2: } } -/* overlay */ void tcacher() { +void tcacher() { if (!syn) ecr3(g_vm->getString(S_HIDE_SELF)); tfleche(); @@ -640,7 +640,7 @@ L2: } } -/* overlay */ void tattacher() { +void tattacher() { if (s.derobj == 0) crep = 186; else { if (!syn) @@ -661,7 +661,7 @@ L2: } } -/* overlay */ void tfermer() { +void tfermer() { int cx, chai; if (!syn) @@ -691,7 +691,7 @@ L2: if (caff == 26) crep = 999; } -/* overlay */ void tfrapper() { +void tfrapper() { int l, p, haz; if (!syn) @@ -724,7 +724,7 @@ L2: } } -/* overlay */ void tposer() { +void tposer() { int cx, chai; if (!syn) @@ -790,7 +790,7 @@ L2: } } -/* overlay */ void tecouter() { +void tecouter() { int l, p, haz, j, h, m; if (s.mlieu != 26) crep = 101; @@ -815,7 +815,7 @@ L2: } } -/* overlay */ void tmanger() { +void tmanger() { int j, h, m; if ((s.mlieu > 15) && (s.mlieu < 26)) @@ -842,7 +842,7 @@ L2: } } -/* overlay */ void tentrer() { +void tentrer() { int x, z = 0; if ((s.mlieu == 21) || (s.mlieu == 22)) { @@ -895,7 +895,7 @@ L2: } } -/* overlay */ void tdormir() { +void tdormir() { int z, j, h, m, quel; if ((s.mlieu > 15) && (s.mlieu < 26)) { @@ -934,7 +934,7 @@ L2: num = 0; } -/* overlay */ void tdefoncer() { +void tdefoncer() { if (!syn) ecr3(g_vm->getString(S_SMASH)); if (caff < 25) tfleche(); @@ -946,7 +946,7 @@ L2: } } -/* overlay */ void tsortir() { +void tsortir() { int lx = 0; tsort(); @@ -971,7 +971,7 @@ L2: } } -/* overlay */ void tattendre() { +void tattendre() { int quel; mpers = 0; @@ -995,7 +995,7 @@ L2: if (! anyone) tinke(); } -/* overlay */ void tsonder() { +void tsonder() { if (!syn) ecr3(g_vm->getString(S_PROBE2)); if (caff < 27) { @@ -1005,7 +1005,7 @@ L2: } } -/* overlay */ void tparler() +void tparler() { bool te[47]; @@ -1179,7 +1179,7 @@ L2: clsf3(); } -/* overlay */ void tsentir() { +void tsentir() { crep = 119; if (caff < 26) { if (!syn) @@ -1191,7 +1191,7 @@ L2: num = 0; } -/* overlay */ void tgratter() { +void tgratter() { crep = 155; if (caff < 27) { if (!syn) diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp index 6eb7d5e912..a3787a09b3 100644 --- a/engines/mortevielle/alert.cpp +++ b/engines/mortevielle/alert.cpp @@ -33,7 +33,7 @@ namespace Mortevielle { -/* overlay */ int do_alert(Common::String str_, int n); +int do_alert(Common::String str_, int n); const int nligne = 7; diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 12ccbe3ff5..fbe3ff2ac0 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -38,7 +38,7 @@ namespace Mortevielle { /* NIVEAU 14*/ -/* overlay */ void menut(int no, Common::String nom) { +void menut(int no, Common::String nom) { byte h, l; Common::String s; @@ -74,7 +74,7 @@ namespace Mortevielle { } } -/* overlay */ void menu_disable(int no) { +void menu_disable(int no) { byte h, l; /* debug('menu_disable'); */ @@ -103,7 +103,7 @@ namespace Mortevielle { } } -/* overlay */ void menu_enable(int no) { +void menu_enable(int no) { byte h, l; /* debug('menu_disable'); */ diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 2d4df26e46..4699575849 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -491,7 +491,7 @@ void affper(int per) { ipers = per; } -/* overlay */ void choix(int min, int max, int &per) { +void choix(int min, int max, int &per) { bool i; int haz, cx, cy, cz; @@ -515,7 +515,7 @@ void affper(int per) { i = false; } -/* overlay */ void cpl1(int &p) { +void cpl1(int &p) { int j, h, m; /* debug('o0 cpl1'); */ @@ -530,7 +530,7 @@ void affper(int per) { mdn(); } -/* overlay */ void cpl2(int &p) { +void cpl2(int &p) { int j, h, m; /* debug('o0 cpl2'); */ @@ -542,7 +542,7 @@ void affper(int per) { if ((h >= 0) && (h < 8)) p = 50; } -/* overlay */ void cpl3(int &p) { +void cpl3(int &p) { int j, h, m; /* debug('o0 cpl3'); */ @@ -551,7 +551,7 @@ void affper(int per) { if (((h > 9) && (h < 20)) || ((h >= 0) && (h < 9))) p = 0; } -/* overlay */ void cpl5(int &p) { +void cpl5(int &p) { int j, h, m; /* debug('o0 cpl5'); */ @@ -562,7 +562,7 @@ void affper(int per) { if ((h >= 0) && (h < 7)) p = 50; } -/* overlay */ void cpl6(int &p) { +void cpl6(int &p) { int j, h, m; /* debug('o0 cpl6'); */ @@ -650,7 +650,7 @@ void debloc(int l) { mpers = ipers; } -/* overlay */ void cpl10(int &p, int &h) { +void cpl10(int &p, int &h) { int j, m; /* debug('o1 cpl10'); */ @@ -663,7 +663,7 @@ void debloc(int l) { if ((h >= 0) && (h < 8)) p = 5; } -/* overlay */ void cpl11(int &p, int &h) { +void cpl11(int &p, int &h) { int j, m; /* debug('o1 cpl11'); */ @@ -675,7 +675,7 @@ void debloc(int l) { if ((h >= 0) && (h < 9)) p = 0; } -/* overlay */ void cpl12(int &p) { +void cpl12(int &p) { int j, h, m; /* debug('o1 cpl12'); */ @@ -686,12 +686,12 @@ void debloc(int l) { if ((h > 4) && (h < 9)) p = 15; } -/* overlay */ void cpl13(int &p) { +void cpl13(int &p) { /* debug('o1 cpl13'); */ p = 0; } -/* overlay */ void cpl15(int &p) { +void cpl15(int &p) { int j, h, m; /* debug('o1 cpl15'); */ @@ -705,7 +705,7 @@ void debloc(int l) { if ((h >= 0) && (h < 8)) p = -15; } -/* overlay */ void cpl20(int &p, int &h) { +void cpl20(int &p, int &h) { int j, m; /* debug('o1 cpl20'); */ @@ -717,7 +717,7 @@ void debloc(int l) { if ((h > 4) && (h < 10)) p = -5; } -/* overlay */ void quelq1(int l) { +void quelq1(int l) { int per; /* debug('o1 quelq1'); */ @@ -731,27 +731,27 @@ void debloc(int l) { ipers = 10; } -/* overlay */ void quelq2() { +void quelq2() { /* debug('o1 quelq2'); */ if (li == 2) bh2 = true; else bh9 = true; ipers = 10; } -/* overlay */ void quelq5() { +void quelq5() { /* debug('o1 quelq5'); */ bh5 = true; ipers = 10; } -/* overlay */ void quelq6(int l) { +void quelq6(int l) { /* debug('o1 quelq6'); */ if (l == 6) bh6 = true; if (l == 8) bh8 = true; ipers = 10; } -/* overlay */ void quelq10(int h, int &per) { +void quelq10(int h, int &per) { int min = 0, max = 0; /* debug('o1 quelq10'); */ @@ -778,7 +778,7 @@ void debloc(int l) { affper(per); } -/* overlay */ void quelq11(int h, int &per) { +void quelq11(int h, int &per) { int min = 0, max = 0; /* debug('o1 quelq11'); */ @@ -801,13 +801,13 @@ void debloc(int l) { affper(per); } -/* overlay */ void quelq12(int &per) { +void quelq12(int &per) { /* debug('o1 quelq12'); */ chlm(per); affper(per); } -/* overlay */ void quelq15(int &per) { +void quelq15(int &per) { int cx; bool test; @@ -831,7 +831,7 @@ void debloc(int l) { } } -/* overlay */ void quelq20(int h, int &per) { +void quelq20(int h, int &per) { int min = 0, max = 0; /* debug('o1 quelq20'); */ @@ -855,7 +855,7 @@ void debloc(int l) { } -/* overlay */void frap() { +void frap() { int j, h, m, haz; /* debug('o1 frap'); */ @@ -868,7 +868,7 @@ void debloc(int l) { } } -/* overlay */ void nouvp(int l, int &p) { +void nouvp(int l, int &p) { /* debug('o1 nouvp'); */ p = 0; if (l == 1) { @@ -889,7 +889,7 @@ void debloc(int l) { -/* overlay */ void tip(int ip, int &cx) { +void tip(int ip, int &cx) { /* debug('o1 tip'); */ if (ip == 128) cx = 1; else if (ip == 64) cx = 2; @@ -902,7 +902,7 @@ void debloc(int l) { } -/* overlay */ void ecfren(int &p, int &haz, int cf, int l) { +void ecfren(int &p, int &haz, int cf, int l) { /* debug('o1 ecfren'); */ if (l == 0) person(); p = -500; @@ -921,7 +921,7 @@ void debloc(int l) { } } -/* overlay */ void becfren(int l) { +void becfren(int l) { int haz; /* debug('o1 becfren'); */ @@ -958,7 +958,7 @@ void phaz(int &haz, int &p, int cf) { haz = hazard(1, 100); } -/* overlay */ void inzon() { +void inzon() { int cx; /* debug('o2 inzon'); */ @@ -989,7 +989,7 @@ void phaz(int &haz, int &p, int cf) { init_nbrepm(); } -/* overlay */ void dprog() { +void dprog() { /* debug('o2 dprog'); */ li = 21; /* jh:= t_settime(0);*/ @@ -999,7 +999,7 @@ void phaz(int &haz, int &p, int cf) { mh = readclock(); } -/* overlay */ void pl1(int cf) { +void pl1(int cf) { int p, haz; /* debug('o2 pl1'); */ @@ -1012,7 +1012,7 @@ void phaz(int &haz, int &p, int cf) { } } -/* overlay */ void pl2(int cf) { +void pl2(int cf) { int p, haz; /* debug('o2 pl2'); */ @@ -1024,7 +1024,7 @@ void phaz(int &haz, int &p, int cf) { } } -/* overlay */ void pl5(int cf) { +void pl5(int cf) { int p, haz; /* debug('o2 pl5'); */ @@ -1036,7 +1036,7 @@ void phaz(int &haz, int &p, int cf) { } } -/* overlay */ void pl6(int cf) { +void pl6(int cf) { int p, haz; /* debug('o2 pl6'); */ @@ -1048,7 +1048,7 @@ void phaz(int &haz, int &p, int cf) { } } -/* overlayi */ void pl9(int cf) { +void pl9(int cf) { int p, haz; /* debug('o2 pl9'); */ @@ -1060,7 +1060,7 @@ void phaz(int &haz, int &p, int cf) { } } -/* overlayi */ void pl10(int cf) { +void pl10(int cf) { int p, h, haz; /* debug('o2 pl10'); */ @@ -1070,7 +1070,7 @@ void phaz(int &haz, int &p, int cf) { else quelq10(h, p); } -/* overlay */ void pl11(int cf) { +void pl11(int cf) { int p, h, haz; /* debug('o2 pl11'); */ @@ -1080,7 +1080,7 @@ void phaz(int &haz, int &p, int cf) { else quelq11(h, p); } -/* overlay */ void pl12(int cf) { +void pl12(int cf) { int p, haz; /* debug('o2 pl12'); */ @@ -1090,7 +1090,7 @@ void phaz(int &haz, int &p, int cf) { else quelq12(p); } -/* overlay */ void pl13(int cf) { +void pl13(int cf) { int p, haz; /* debug('o2 pl13'); */ @@ -1100,7 +1100,7 @@ void phaz(int &haz, int &p, int cf) { else quelq12(p); } -/* overlay */ void pl15(int cf) { +void pl15(int cf) { int p, haz; /* debug('o2 pl15'); */ @@ -1110,7 +1110,7 @@ void phaz(int &haz, int &p, int cf) { else quelq15(p); } -/* overlay */ void pl20(int cf) { +void pl20(int cf) { int p, h, haz; /* debug('o2 pl20'); */ @@ -1120,7 +1120,7 @@ void phaz(int &haz, int &p, int cf) { else quelq20(h, p); } -/* overlay */ void t11(int l11, int &a) { +void t11(int l11, int &a) { int p, haz, h = 0; /* debug('o2 t11'); */ @@ -1161,7 +1161,7 @@ void phaz(int &haz, int &p, int cf) { } } -/* overlay */ void cavegre() +void cavegre() { int haz; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 6650dd04b2..94f89c3401 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -61,7 +61,7 @@ void ani50() { repon(2, c_paroles + 143); } -/* overlay */ void aff50(bool c) { +void aff50(bool c) { caff = 50; maff = 0; taffich(); @@ -71,7 +71,7 @@ void ani50() { f3f8(); } -/* overlay */ void init_menu() { +void init_menu() { int i, tai; char st[1410]; Common::File f; @@ -124,7 +124,7 @@ void ani50() { } -/* overlay */ void charpal() { +void charpal() { Common::File f; // tabdb records Common::File ft; // tfxx int i, j, k; @@ -172,7 +172,7 @@ void ani50() { fb.close(); } -/* overlay */ void chartex() { +void chartex() { int i; Common::File f; char s[1410]; @@ -219,7 +219,7 @@ void dialpre() { int_m = true; } -/* overlay */ void init_lieu() { +void init_lieu() { Common::File f_lieu; // tab_mlieu /* debug('o3 init_lieu'); */ @@ -234,7 +234,7 @@ void dialpre() { } -/* overlay */ void music() { +void music() { Common::File fic; int k; bool fin; @@ -269,7 +269,7 @@ void dialpre() { } -/* overlay */ void charge_bruit5() { +void charge_bruit5() { Common::File f; if (!f.open("bruit5")) @@ -279,7 +279,7 @@ void dialpre() { f.close(); } -/* overlay */ void charge_cfiec() { +void charge_cfiec() { Common::File f; if (!f.open("cfiec.mor")) @@ -292,7 +292,7 @@ void dialpre() { } -/* overlay */ void charge_cfiph() { +void charge_cfiph() { Common::File f; if (!f.open("cfiph.mor")) diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index 2a8984195a..70bbd72e06 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -97,7 +97,7 @@ void veracf(byte b) { ; } -/* overlay */ void cctable(tablint &t) { +void cctable(tablint &t) { int k; float tb[257]; @@ -109,7 +109,7 @@ void veracf(byte b) { } } -/* overlay */ void regenbruit() { +void regenbruit() { int i, j; i = offsetb3 + 8590; @@ -121,7 +121,7 @@ void veracf(byte b) { } while (!(i >= offsetb3 + 8790)); } -/* overlay */ void charge_son() { + void charge_son() { Common::File f; if (!f.open("sonmus.mor")) @@ -133,7 +133,7 @@ void veracf(byte b) { f.close(); } -/* overlay */ void charge_phbruit() { + void charge_phbruit() { Common::File f; if (!f.open("phbrui.mor")) @@ -145,7 +145,7 @@ void veracf(byte b) { f.close(); } -/* overlay */ void charge_bruit() { + void charge_bruit() { Common::File f; int i; @@ -159,7 +159,7 @@ void veracf(byte b) { f.close(); } -/* overlay */ void trait_car() { + void trait_car() { byte d3; int d2, i; diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 9d8b8f91a1..db8b2e9cbd 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -38,7 +38,7 @@ namespace Mortevielle { -/* overlay */ void change_gd(int ngd) { +void change_gd(int ngd) { hide_mouse(); gd = ngd; hirs(); diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp index aadedbd9cc..e8c568d398 100644 --- a/engines/mortevielle/ques.cpp +++ b/engines/mortevielle/ques.cpp @@ -34,7 +34,7 @@ namespace Mortevielle { -/* overlay */ bool ques() { +bool ques() { const int ta[11] = {0, 511, 516, 524, 531, 545, 552, 559, 563, 570, 576}; const int ok[11] = {0, 4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }; -- cgit v1.2.3 From ce42caf57c28bebb263510f2266c9f401b3cda84 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 22:54:41 +1100 Subject: MORTEVIELLE: Removed all the remaining text mode function stubs --- engines/mortevielle/menu.cpp | 1 - engines/mortevielle/mor.cpp | 1 - engines/mortevielle/mortevielle.cpp | 2 +- engines/mortevielle/var_mor.cpp | 11 ----------- engines/mortevielle/var_mor.h | 10 ---------- 5 files changed, 1 insertion(+), 24 deletions(-) diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index fbe3ff2ac0..35caac31ac 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -48,7 +48,6 @@ void menut(int no, Common::String nom) { l = lo(no); s = nom; if (! tesok) { - clrscr; mortevielle_exit(0); } while (s.size() < 20) s = s + ' '; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 4699575849..22816dc738 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -260,7 +260,6 @@ void clsf10() { } void stop() { - clrscr; hirs(); gd = ams; hirs(); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 026f17d718..130449a2b7 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -150,7 +150,7 @@ Common::ErrorCode MortevielleEngine::initialise() { init_lieu(); sonoff = false; f2_all = false; - textcolor(9); + teskbd(); dialpre(); newgd = gd; diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 5c72961630..1b19d5ca11 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -255,17 +255,6 @@ Common::String copy(const Common::String &s, int idx, size_t size) { int port[0xfff]; byte mem[65536 * 16]; -int wherey; - -void gotoxy(int x, int y) { -} -void textcolor(int c) { -} -void output(const Common::String &s) { - debug(s.c_str()); -} -void graphbackground(int c) { -} void intr(int intNum, registres ®s) { } diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index a872af199b..9bc10b30f2 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -411,16 +411,6 @@ extern byte mem[65536 * 16]; #define hires {} #define mortevielle_exit(ret) error("Exit the game") -// Text screen functions not relevant for ScummVM -#define clrscr { warning("ClrScr"); } -#define clreol {} -#define graphcolormode {} -extern void gotoxy(int x, int y); -extern void textcolor(int c); -extern void output(const Common::String &s); -extern void graphbackground(int c); -extern int wherey; - // Stubs for input functions extern bool keypressed(); extern char get_ch(); -- cgit v1.2.3 From b4bed3cba36ac90bc78a8550390481aa394e9e68 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 22:57:15 +1100 Subject: MORTEVIELLE: Replaced stub calls to mortevielle_exit with Engine::quitGame --- engines/mortevielle/menu.cpp | 2 +- engines/mortevielle/mor.cpp | 4 ++-- engines/mortevielle/var_mor.h | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 35caac31ac..d8c1b6050b 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -48,7 +48,7 @@ void menut(int no, Common::String nom) { l = lo(no); s = nom; if (! tesok) { - mortevielle_exit(0); + g_vm->quitGame(); } while (s.size() < 20) s = s + ' '; switch (h) { diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 22816dc738..05fe6c2a8c 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -48,7 +48,7 @@ const int ioresult = 0; void testfi() { if (ioresult != 0) { caff = do_alert(err_mess, 1); - mortevielle_exit(0); + g_vm->quitGame(); } } @@ -263,7 +263,7 @@ void stop() { hirs(); gd = ams; hirs(); - mortevielle_exit(0); + g_vm->quitGame(); } void paint_rect(int x, int y, int dx, int dy) { diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 9bc10b30f2..3e496df9ff 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -409,7 +409,6 @@ extern int port[0xfff]; extern byte mem[65536 * 16]; #define hires {} -#define mortevielle_exit(ret) error("Exit the game") // Stubs for input functions extern bool keypressed(); -- cgit v1.2.3 From 2fb94dfa01e7673358aef3ef67022f29e74c1b3b Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 12 Feb 2012 23:05:08 +1100 Subject: MORTEVIELLE: Moved DROITE() into the ScreenSurface class --- engines/mortevielle/droite.cpp | 68 ---------------------------------------- engines/mortevielle/droite.h | 36 --------------------- engines/mortevielle/graphics.cpp | 33 +++++++++++++++++++ engines/mortevielle/graphics.h | 1 + engines/mortevielle/module.mk | 1 - engines/mortevielle/mor.cpp | 10 +++--- 6 files changed, 40 insertions(+), 109 deletions(-) delete mode 100644 engines/mortevielle/droite.cpp delete mode 100644 engines/mortevielle/droite.h diff --git a/engines/mortevielle/droite.cpp b/engines/mortevielle/droite.cpp deleted file mode 100644 index fc52ff7bd3..0000000000 --- a/engines/mortevielle/droite.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "mortevielle/droite.h" -#include "mortevielle/graphics.h" -#include "mortevielle/mortevielle.h" -#include "mortevielle/var_mor.h" - -namespace Mortevielle { - -void droite(int x, int y, int xx, int yy, int coul) { - int step, i; - float a, b; - float xr, yr, xro, yro; - - xr = x; - yr = y; - xro = xx; - yro = yy; - - if (abs(y - yy) > abs(x - xx)) { - a = (float)((x - xx)) / (y - yy); - b = (yr * xro - yro * xr) / (y - yy); - i = y; - if (y > yy) step = -1; - else step = 1; - do { - g_vm->_screenSurface.setPixel(Common::Point(abs((int)(a * i + b)), i), coul); - i = i + step; - } while (!(i == yy)); - } else { - a = (float)((y - yy)) / (x - xx); - b = ((yro * xr) - (yr * xro)) / (x - xx); - i = x; - if (x > xx) step = -1; - else step = 1; - do { - g_vm->_screenSurface.setPixel(Common::Point(i, abs((int)(a * i + b))), coul); - i = i + step; - } while (!(i == xx)); - } -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/droite.h b/engines/mortevielle/droite.h deleted file mode 100644 index 6017f481cd..0000000000 --- a/engines/mortevielle/droite.h +++ /dev/null @@ -1,36 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_DROITE_H -#define MORTEVIELLE_DROITE_H - -namespace Mortevielle { - -extern void droite(int x, int y, int xx, int yy, int coul); - -} // End of namespace Mortevielle -#endif diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index bdf6c86daa..0fab9de965 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -1097,4 +1097,37 @@ int ScreenSurface::getStringWidth(const Common::String &s) { return s.size() * charWidth; } +void ScreenSurface::droite(int x, int y, int xx, int yy, int coul) { + int step, i; + float a, b; + float xr, yr, xro, yro; + + xr = x; + yr = y; + xro = xx; + yro = yy; + + if (abs(y - yy) > abs(x - xx)) { + a = (float)((x - xx)) / (y - yy); + b = (yr * xro - yro * xr) / (y - yy); + i = y; + if (y > yy) step = -1; + else step = 1; + do { + g_vm->_screenSurface.setPixel(Common::Point(abs((int)(a * i + b)), i), coul); + i = i + step; + } while (!(i == yy)); + } else { + a = (float)((y - yy)) / (x - xx); + b = ((yro * xr) - (yr * xro)) / (x - xx); + i = x; + if (x > xx) step = -1; + else step = 1; + do { + g_vm->_screenSurface.setPixel(Common::Point(i, abs((int)(a * i + b))), coul); + i = i + step; + } while (!(i == xx)); + } +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 1daad5720b..1aab4cf34b 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -92,6 +92,7 @@ public: void putxy(int x, int y) { _textPos = Common::Point(x, y); } void writeg(const Common::String &l, int c); int getStringWidth(const Common::String &s); + void droite(int x, int y, int xx, int yy, int coul); // TODO: Refactor code to remove this method, for increased performance void setPixel(const Common::Point &pt, int palIndex); diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 0688fd5ac0..67ca57dbb4 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -5,7 +5,6 @@ MODULE_OBJS := \ alert.o \ asm.o \ detection.o \ - droite.o \ graphics.o \ keyboard.o \ level15.o \ diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 05fe6c2a8c..895e18362d 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -30,7 +30,7 @@ #include "common/system.h" #include "common/textconsole.h" #include "mortevielle/alert.h" -#include "mortevielle/droite.h" +#include "mortevielle/graphics.h" #include "mortevielle/level15.h" #include "mortevielle/menu.h" #include "mortevielle/mor.h" @@ -616,12 +616,14 @@ void pendule() { if ((gd == cga) || (gd == her)) co = 0; else co = 1; - if (min == 0) droite(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y - rg), co); - else droite(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y + rg), co); + if (min == 0) + g_vm->_screenSurface.droite(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y - rg), co); + else + g_vm->_screenSurface.droite(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y + rg), co); h = heu; if (h > 12) h = h - 12; if (h == 0) h = 12; - droite(((uint)x >> 1)*res, y, ((uint)(x + cv[1][h]) >> 1)*res, y + cv[2][h], co); + g_vm->_screenSurface.droite(((uint)x >> 1)*res, y, ((uint)(x + cv[1][h]) >> 1)*res, y + cv[2][h], co); show_mouse(); g_vm->_screenSurface.putxy(568, 154); if (heu > 11) -- cgit v1.2.3 From c3a63e04ee9a3cc5f70906638b41bf2fae7d13bc Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 13 Feb 2012 00:02:03 +1100 Subject: MORTEVIELLE: Convert menu code to a class --- engines/mortevielle/actions.cpp | 9 ++-- engines/mortevielle/menu.cpp | 95 ++++++++++++++++++++++--------------- engines/mortevielle/menu.h | 27 ++++++----- engines/mortevielle/mor.cpp | 31 ++++++------ engines/mortevielle/mor2.cpp | 53 ++++++++++----------- engines/mortevielle/mortevielle.cpp | 6 +-- engines/mortevielle/mortevielle.h | 2 + engines/mortevielle/ovd1.cpp | 3 +- engines/mortevielle/prog.cpp | 2 +- engines/mortevielle/var_mor.cpp | 2 +- 10 files changed, 126 insertions(+), 104 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 5b2f43786a..b84857162c 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -543,9 +543,12 @@ void tmettre() { show_mouse(); tinke(); pendule(); - if (ipers != 0) affper(ipers); - else person(); - menu_aff(); + if (ipers != 0) + affper(ipers); + else + person(); + + g_vm->_menu.menu_aff(); if (entre) { s.mlieu = 17; tmlieu(17); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index d8c1b6050b..d6475c99d0 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -38,19 +38,22 @@ namespace Mortevielle { /* NIVEAU 14*/ -void menut(int no, Common::String nom) { +/** + * Setup a menu's contents + */ +void Menu::menut(int no, Common::String nom) { byte h, l; Common::String s; - - /* debug('menut'); */ h = hi(no); l = lo(no); s = nom; if (! tesok) { g_vm->quitGame(); } - while (s.size() < 20) s = s + ' '; + while (s.size() < 20) + s = s + ' '; + switch (h) { case invent : if (l != 7) { @@ -73,10 +76,13 @@ void menut(int no, Common::String nom) { } } -void menu_disable(int no) { +/** + * Disable a menu item + * @param no Hi byte represents menu number, lo byte reprsents item index + */ +void Menu::disableMenuItem(int no) { byte h, l; - /* debug('menu_disable'); */ h = hi(no); l = lo(no); switch (h) { @@ -84,7 +90,8 @@ void menu_disable(int no) { if (l > 6) { inv[l].setChar('<', 0); inv[l].setChar('>', 21); - } else inv[l].setChar('*', 0); + } else + inv[l].setChar('*', 0); } break; case depla : @@ -102,10 +109,13 @@ void menu_disable(int no) { } } -void menu_enable(int no) { +/** + * Enable a menu item + * @param no Hi byte represents menu number, lo byte reprsents item index + */ +void Menu::enableMenuItem(int no) { byte h, l; - /* debug('menu_disable'); */ h = hi(no); l = lo(no); switch (h) { @@ -131,19 +141,13 @@ void menu_enable(int no) { } } -void menu_aff() { +void Menu::menu_aff() { int ind_tabl, k, col; -// char c; - int pt, x, y, color, msk, - num_letr; - /* debug('menu_aff'); */ + int pt, x, y, color, msk, num_letr; + hide_mouse(); - /*if not tesok then - begin - clrscr; - halt; - end;*/ + g_vm->_screenSurface.fillRect(7, Common::Rect(0, 0, 639, 10)); col = 28 * res; if (gd == cga) color = 1; @@ -177,9 +181,10 @@ void menu_aff() { show_mouse(); } - -void draw_menu() { - /* debug('draw_menu'); */ +/** + * Show the menu + */ +void Menu::drawMenu() { menu_aff(); active_menu = true; msg4 = no_choice; @@ -189,10 +194,9 @@ void draw_menu() { test0 = false; } -void invers(int ix) { +void Menu::invers(int ix) { Common::String s; - /* debug('invers'); */ if (msg4 == no_choice) return; g_vm->_screenSurface.putxy(don[msg3][1] << 3, succ(void, lo(msg4)) << 3); switch (msg3) { @@ -235,7 +239,7 @@ void invers(int ix) { msg4 = no_choice; } -void util(int x, int y) { +void Menu::util(int x, int y) { int ymx, dxcar, xmn, xmx, ix; /* debug('util'); */ @@ -258,11 +262,14 @@ void util(int x, int y) { } } -void menu_down(int ii) { +/** + * Draw a menu + */ +void Menu::menuDown(int ii) { int cx, xcc; int xco, nb_lig; - /* debug('menu_down'); */ + /* debug('menuDown'); */ // Make a copy of the current screen surface for later restore g_vm->_backgroundSurface.copyFrom(g_vm->_screenSurface); @@ -331,8 +338,11 @@ void menu_down(int ii) { show_mouse(); } -void menu_up(int xx) { - /* debug('menu_up'); */ +/** + * Menu is being removed, so restore the previous background area. + */ +void Menu::menuUp(int xx) { + /* debug('menuUp'); */ if (test0) { charecr(10, succ(byte, don[xx][2]) << 1); @@ -351,14 +361,20 @@ void menu_up(int xx) { } } -void erase_menu() { - /* debug('erase_menu'); */ +/** + * Erase the menu + */ +void Menu::eraseMenu() { + /* debug('eraseMenu'); */ active_menu = false; g_vm->setMouseClick(false); - menu_up(msg3); + menuUp(msg3); } -void mdn() { +/** + * Handle updates to the menu + */ +void Menu::mdn() { //int x, y, c, a, ix; int x, y, ix; bool tes; @@ -389,28 +405,28 @@ void mdn() { else ix = fichier; if ((ix != msg3) || (! test0)) if (!((ix == fichier) && ((msg3 == sauve) || (msg3 == charge)))) { - menu_up(msg3); - menu_down(ix); + menuUp(msg3); + menuDown(ix); msg3 = ix; msg4 = no_choice; } } else { /* Not in the MenuTitle line */ if ((y > 11) && (test0)) util(x, y); } - } else /* There was a click */ + } else { /* There was a click */ if ((msg3 == fichier) && (msg4 != no_choice)) { // Another menu to be displayed g_vm->setMouseClick(false); - menu_up(msg3); + menuUp(msg3); if (lo(msg4) == 1) msg3 = 7; else msg3 = 8; - menu_down(msg3); + menuDown(msg3); g_vm->setMouseClick(false); } else { // A menu was clicked on choisi = (test0) && (msg4 != no_choice); - menu_up(msg3); + menuUp(msg3); msg[4] = msg4; msg[3] = msg3; msg3 = no_choice; @@ -418,6 +434,7 @@ void mdn() { g_vm->setMouseClick(false); } + } } } // End of namespace Mortevielle diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index 1ea6931c0e..6ab020dbd9 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -32,18 +32,21 @@ namespace Mortevielle { -/* NIVEAU 14*/ -extern void menut(int no, Common::String nom); -extern void menu_disable(int no); -extern void menu_enable(int no); -extern void menu_aff(); -extern void draw_menu(); -extern void invers(int ix); -extern void util(int x, int y); -extern void menu_down(int ii); -extern void menu_up(int xx); -extern void erase_menu(); -extern void mdn(); +class Menu { +private: + void util(int x, int y); + void invers(int ix); + void menuDown(int ii); +public: + void menut(int no, Common::String nom); + void disableMenuItem(int no); + void enableMenuItem(int no); + void menu_aff(); + void drawMenu(); + void menuUp(int xx); + void eraseMenu(); + void mdn(); +}; } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 895e18362d..d4461be3cd 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -324,8 +324,8 @@ void modobj(int m) { deline(m - 501 + c_st41, str_, tay); strp = delig; } - menut(invt[8], strp); - menu_disable(invt[8]); + g_vm->_menu.menut(invt[8], strp); + g_vm->_menu.disableMenuItem(invt[8]); } void modobj2(int m, bool t1, bool t2) { @@ -341,8 +341,8 @@ void modobj2(int m, bool t1, bool t2) { deline(m - 501 + c_st41, str_, tay); strp = delig; } - menut(invt[8], strp); - menu_disable(invt[8]); + g_vm->_menu.menut(invt[8], strp); + g_vm->_menu.disableMenuItem(invt[8]); } @@ -445,47 +445,48 @@ void affper(int per) { int cx; /* debug('affper'); */ - for (cx = 1; cx <= 8; cx ++) menu_disable(disc[cx]); + for (cx = 1; cx <= 8; cx ++) + g_vm->_menu.disableMenuItem(disc[cx]); clsf10(); if ((per & 128) == 128) { g_vm->_screenSurface.putxy(560, 24); g_vm->_screenSurface.writeg("LEO", 4); - menu_enable(disc[1]); + g_vm->_menu.enableMenuItem(disc[1]); } if ((per & 64) == 64) { g_vm->_screenSurface.putxy(560, 32); g_vm->_screenSurface.writeg("PAT", 4); - menu_enable(disc[2]); + g_vm->_menu.enableMenuItem(disc[2]); } if ((per & 32) == 32) { g_vm->_screenSurface.putxy(560, 40); g_vm->_screenSurface.writeg("GUY", 4); - menu_enable(disc[3]); + g_vm->_menu.enableMenuItem(disc[3]); } if ((per & 16) == 16) { g_vm->_screenSurface.putxy(560, 48); g_vm->_screenSurface.writeg("EVA", 4); - menu_enable(disc[4]); + g_vm->_menu.enableMenuItem(disc[4]); } if ((per & 8) == 8) { g_vm->_screenSurface.putxy(560, 56); g_vm->_screenSurface.writeg("BOB", 4); - menu_enable(disc[5]); + g_vm->_menu.enableMenuItem(disc[5]); } if ((per & 4) == 4) { g_vm->_screenSurface.putxy(560, 64); g_vm->_screenSurface.writeg("LUC", 4); - menu_enable(disc[6]); + g_vm->_menu.enableMenuItem(disc[6]); } if ((per & 2) == 2) { g_vm->_screenSurface.putxy(560, 72); g_vm->_screenSurface.writeg("IDA", 4); - menu_enable(disc[7]); + g_vm->_menu.enableMenuItem(disc[7]); } if ((per & 1) == 1) { g_vm->_screenSurface.putxy(560, 80); g_vm->_screenSurface.writeg("MAX", 4); - menu_enable(disc[8]); + g_vm->_menu.enableMenuItem(disc[8]); } ipers = per; } @@ -526,7 +527,7 @@ void cpl1(int &p) { if ((h > 17) && (h < 22)) p = 35; if ((h > 21) && (h < 24)) p = 50; if ((h >= 0) && (h < 8)) p = 70; - mdn(); + g_vm->_menu.mdn(); } void cpl2(int &p) { @@ -578,7 +579,7 @@ void cpl6(int &p) { void person() { /* debug('person'); */ for (int cf = 1; cf <= 8; cf ++) - menu_disable(disc[cf]); + g_vm->_menu.disableMenuItem(disc[cf]); clsf10(); g_vm->_screenSurface.putxy(560, 30); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 5d33175a60..557ca0679b 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -104,7 +104,7 @@ void tinke() { nh = readclock(); if ((nh - mh) > t) { am = active_menu; - erase_menu(); + g_vm->_menu.eraseMenu(); jh = jh + ((nh - mh) / t); mh = nh; switch (li) { @@ -165,7 +165,8 @@ void tinke() { } } } - if (am) draw_menu(); + if (am) + g_vm->_menu.drawMenu(); } } hfb = readclock(); @@ -233,11 +234,12 @@ void tmlieu(int mli) { deline(cx + c_tmlieu, st, tail); nomp = delig; while (nomp.size() < 20) nomp = nomp + ' '; - menut(depl[i], nomp); + g_vm->_menu.menut(depl[i], nomp); i = i + 1; } nomp = "* "; - for (cx = 7; cx >= i; cx --) menut(depl[cx], nomp); + for (cx = 7; cx >= i; cx --) + g_vm->_menu.menut(depl[cx], nomp); } @@ -271,20 +273,11 @@ void mfouen() int cx; tmlieu(s.mlieu); - for (cx = 1; cx <= 11; cx ++) menu_enable(men[cx]); - /* menu_enable( scacher); - menu_enable(menup, attacher); - menu_enable(menup, defoncer); - menu_enable(menup, dormir); - menu_enable(menup, entrer); - menu_enable(menup, fermer); - menu_enable(menup, frapper); - menu_enable(menup, manger); - menu_enable(menup, mettre); - menu_enable(menup, ouvrir); - menu_enable(menup, sortir); */ - menut(sonder, g_vm->getString(S_PROBE)); - menut(soulever, g_vm->getString(S_RAISE)); + for (cx = 1; cx <= 11; cx ++) + g_vm->_menu.enableMenuItem(men[cx]); + + g_vm->_menu.menut(sonder, g_vm->getString(S_PROBE)); + g_vm->_menu.menut(soulever, g_vm->getString(S_RAISE)); } void atf3f8(int &key) { @@ -382,13 +375,13 @@ void modinv() { r = (ord(s.sjer[cx]) + 400); deline(r - 501 + c_st41, nom, tay); nomp = delig; - menut(invt[cy], nomp); - menu_enable(invt[cx]); + g_vm->_menu.menut(invt[cy], nomp); + g_vm->_menu.enableMenuItem(invt[cx]); } if (cy < 6) for (cx = cy + 1; cx <= 6; cx ++) { - menut(invt[cx], " "); - menu_disable(invt[cx]); + g_vm->_menu.menut(invt[cx], " "); + g_vm->_menu.disableMenuItem(invt[cx]); } } @@ -425,16 +418,16 @@ void mfoudi() { int cx; for (cx = 1; cx <= 7; cx ++) - menu_disable(depl[cx]); + g_vm->_menu.disableMenuItem(depl[cx]); for (cx = 1; cx <= 11; cx ++) - menu_disable(men[cx]); + g_vm->_menu.disableMenuItem(men[cx]); - menut(sonder, g_vm->getString(S_SUITE)); - menut(soulever, g_vm->getString(S_STOP)); + g_vm->_menu.menut(sonder, g_vm->getString(S_SUITE)); + g_vm->_menu.menut(soulever, g_vm->getString(S_STOP)); } void mennor() { - menu_up(msg[3]); + g_vm->_menu.menuUp(msg[3]); } void premtet() { @@ -553,7 +546,8 @@ void quelquun() { int haz, cx; - if (imen) erase_menu(); + if (imen) + g_vm->_menu.eraseMenu(); finfouil(); crep = 997; L1: @@ -591,7 +585,8 @@ L1: affrep(); } } - if (imen) draw_menu(); + if (imen) + g_vm->_menu.drawMenu(); } void tsuiv() { diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 130449a2b7..29a9d5bb46 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -553,7 +553,7 @@ void MortevielleEngine::handleAction() { oo = false; ctrm = 0; if (! iesc) { - draw_menu(); + g_vm->_menu.drawMenu(); imen = true; temps = 0; key = 0; @@ -562,7 +562,7 @@ void MortevielleEngine::handleAction() { _inMainGameLoop = true; do { - mdn(); + g_vm->_menu.mdn(); tinke(); mov_mouse(funct, inkey); CHECK_QUIT; @@ -570,7 +570,7 @@ void MortevielleEngine::handleAction() { } while (!((choisi) || (temps > lim) || (funct) || (anyone))); _inMainGameLoop = false; - erase_menu(); + g_vm->_menu.eraseMenu(); imen = false; if ((inkey == '\1') || (inkey == '\3') || (inkey == '\5') || (inkey == '\7') || (inkey == '\11')) { change_gd((uint)pred(int, ord(inkey)) >> 1); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 94640ba8a9..371dd40b38 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -33,6 +33,7 @@ #include "common/error.h" #include "graphics/surface.h" #include "mortevielle/graphics.h" +#include "mortevielle/menu.h" #include "mortevielle/saveload.h" #include "mortevielle/sound.h" @@ -100,6 +101,7 @@ public: Common::RandomSource _randomSource; SoundManager _soundManager; SavegameManager _savegameManager; + Menu _menu; bool _quitGame; // Quit game flag. Originally called 'arret' bool _endGame; // End game flag. Originally called 'solu' diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 94f89c3401..5bdb54f262 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -114,7 +114,8 @@ void init_menu() { disc[i] = 0x500 + i; if (i < 8) depl[i] = 0x200 + i; invt[i] = 0x100 + i; - if (i > 6) menu_disable(invt[i]); + if (i > 6) + g_vm->_menu.disableMenuItem(invt[i]); } msg3 = no_choice; msg4 = no_choice; diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index db8b2e9cbd..7f61b79185 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -54,7 +54,7 @@ void change_gd(int ngd) { maff = 68; afdes(0); repon(2, crep); - menu_aff(); + g_vm->_menu.menu_aff(); } /** diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 1b19d5ca11..62b14575de 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -278,7 +278,7 @@ char get_ch() { */ void s_sauv(int Gd, int y, int dy) { // Note: May no longer be necessary, since the backgorund restore code - // is being handled slightly differently now in the menu_up() method + // is being handled slightly differently now in the menuUp() method } void palette(int v1) { -- cgit v1.2.3 From a764471c4cc32bf034d9491af26a6d01743efb84 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 13 Feb 2012 09:07:48 +1100 Subject: MORTEVIELLE: Converted menu functions into it's own class --- engines/mortevielle/actions.cpp | 12 +-- engines/mortevielle/menu.cpp | 166 ++++++++++++++++++++++++------------ engines/mortevielle/menu.h | 16 ++++ engines/mortevielle/mor.cpp | 28 +++--- engines/mortevielle/mor2.cpp | 22 +++-- engines/mortevielle/mortevielle.cpp | 2 +- engines/mortevielle/ovd1.cpp | 54 ------------ engines/mortevielle/ovd1.h | 1 - engines/mortevielle/var_mor.cpp | 11 +-- engines/mortevielle/var_mor.h | 19 +---- 10 files changed, 160 insertions(+), 171 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index b84857162c..dfd0811086 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -47,13 +47,13 @@ void taller() { //int mx, cx, cy; int cx; - if ((s.mlieu == 26) && (msg[4] == depl[6])) { + if ((s.mlieu == 26) && (msg[4] == g_vm->_menu._depl[6])) { s.mlieu = 15; caff = s.mlieu; afdes(0); repon(2, s.mlieu); } - if ((s.mlieu == 15) && (msg[4] == depl[6])) { + if ((s.mlieu == 15) && (msg[4] == g_vm->_menu._depl[6])) { if (!syn) ecr3(g_vm->getString(S_GO_TO)); tfleche(); @@ -78,7 +78,7 @@ void taller() { cx = 0; do { cx = cx + 1; - } while (!(depl[cx] == msg[4])); + } while (!(g_vm->_menu._depl[cx] == msg[4])); if (s.mlieu == 19) { if (cx == 1) t1deva(); if (cx == 2) t1neig(); @@ -236,7 +236,7 @@ void tsprendre() { cx = 0; do { cx = cx + 1; - } while (!(invt[cx] == msg[4])); + } while (!(g_vm->_menu._invt[cx] == msg[4])); cz = 0; cy = 0; do { @@ -870,7 +870,7 @@ void tentrer() { s.conf = s.conf + 1; s.mlieu = 15; msg[3] = discut; - msg[4] = disc[x]; + msg[4] = g_vm->_menu._disc[x]; syn = true; if (ment == 9) { col = true; @@ -1027,7 +1027,7 @@ void tparler() cx = 0; do { cx = cx + 1; - } while (!(disc[cx] == msg[4])); + } while (!(g_vm->_menu._disc[cx] == msg[4])); caff = 69 + cx; afdes(0); repon(2, caff); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index d6475c99d0..2fc558a7fb 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -2,14 +2,14 @@ * * ScummVM is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. + * file _distributed with this source _distribution. * - * This program is free software; you can redistribute it and/or + * This program is free software; you can re_distribute 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, + * 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. @@ -32,6 +32,8 @@ #include "mortevielle/menu.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" +#include "mortevielle/outtext.h" +#include "mortevielle/ovd1.h" #include "mortevielle/var_mor.h" namespace Mortevielle { @@ -57,27 +59,27 @@ void Menu::menut(int no, Common::String nom) { switch (h) { case invent : if (l != 7) { - inv[l] = s; - inv[l].insertChar(' ', 0); + _inv[l] = s; + _inv[l].insertChar(' ', 0); } break; - case depla : - dep[l] = s; + case depla: + _dep[l] = s; break; - case action : - act[l] = s; + case action: + _act[l] = s; break; - case saction : - self_[l] = s; + case saction: + _self[l] = s; break; - case discut : - dis[l] = s; + case discut: + _dis[l] = s; break; } } /** - * Disable a menu item + * _disable a menu item * @param no Hi byte represents menu number, lo byte reprsents item index */ void Menu::disableMenuItem(int no) { @@ -88,23 +90,23 @@ void Menu::disableMenuItem(int no) { switch (h) { case invent : { if (l > 6) { - inv[l].setChar('<', 0); - inv[l].setChar('>', 21); + _inv[l].setChar('<', 0); + _inv[l].setChar('>', 21); } else - inv[l].setChar('*', 0); + _inv[l].setChar('*', 0); } break; - case depla : - dep[l].setChar('*', 0); + case depla: + _dep[l].setChar('*', 0); break; - case action : - act[l].setChar('*', 0); + case action: + _act[l].setChar('*', 0); break; - case saction : - self_[l].setChar('*', 0); + case saction: + _self[l].setChar('*', 0); break; - case discut : - dis[l].setChar('*', 0); + case discut: + _dis[l].setChar('*', 0); break; } } @@ -120,23 +122,23 @@ void Menu::enableMenuItem(int no) { l = lo(no); switch (h) { case invent : { - inv[l].setChar(' ', 0); - inv[l].setChar(' ', 21); + _inv[l].setChar(' ', 0); + _inv[l].setChar(' ', 21); } break; - case depla : - dep[l].setChar(' ', 0); + case depla: + _dep[l].setChar(' ', 0); break; - case action : - act[l].setChar(' ', 0); + case action: + _act[l].setChar(' ', 0); break; - case saction : { - self_[l].setChar(' ', 0); - self_[l].setChar(' ', 0); + case saction: { + _self[l].setChar(' ', 0); + _self[l].setChar(' ', 0); } break; - case discut : - dis[l].setChar(' ', 0); + case discut: + _dis[l].setChar(' ', 0); break; } } @@ -186,7 +188,7 @@ void Menu::menu_aff() { */ void Menu::drawMenu() { menu_aff(); - active_menu = true; + _menuActive = true; msg4 = no_choice; msg3 = no_choice; choisi = false; @@ -201,19 +203,19 @@ void Menu::invers(int ix) { g_vm->_screenSurface.putxy(don[msg3][1] << 3, succ(void, lo(msg4)) << 3); switch (msg3) { case 1 : - s = inv[lo(msg4)]; + s = _inv[lo(msg4)]; break; case 2 : - s = dep[lo(msg4)]; + s = _dep[lo(msg4)]; break; case 3 : - s = act[lo(msg4)]; + s = _act[lo(msg4)]; break; case 4 : - s = self_[lo(msg4)]; + s = _self[lo(msg4)]; break; case 5 : - s = dis[lo(msg4)]; + s = _dis[lo(msg4)]; break; case 6 : s = g_vm->getString(S_SAVE_LOAD + lo(msg4)); @@ -292,24 +294,24 @@ void Menu::menuDown(int ii) { cx = succ(int, cx); switch (ii) { case 1 : - if (inv[cx][0] != '*') - g_vm->_screenSurface.writeg(inv[cx], 4); + if (_inv[cx][0] != '*') + g_vm->_screenSurface.writeg(_inv[cx], 4); break; case 2 : - if (dep[cx][0] != '*') - g_vm->_screenSurface.writeg(dep[cx], 4); + if (_dep[cx][0] != '*') + g_vm->_screenSurface.writeg(_dep[cx], 4); break; case 3 : - if (act[cx][0] != '*') - g_vm->_screenSurface.writeg(act[cx], 4); + if (_act[cx][0] != '*') + g_vm->_screenSurface.writeg(_act[cx], 4); break; case 4 : - if (self_[cx][0] != '*') - g_vm->_screenSurface.writeg(self_[cx], 4); + if (_self[cx][0] != '*') + g_vm->_screenSurface.writeg(_self[cx], 4); break; case 5 : - if (dis[cx][0] != '*') - g_vm->_screenSurface.writeg(dis[cx], 4); + if (_dis[cx][0] != '*') + g_vm->_screenSurface.writeg(_dis[cx], 4); break; case 6 : g_vm->_screenSurface.writeg(g_vm->getString(S_SAVE_LOAD + cx), 4); @@ -366,7 +368,7 @@ void Menu::menuUp(int xx) { */ void Menu::eraseMenu() { /* debug('eraseMenu'); */ - active_menu = false; + _menuActive = false; g_vm->setMouseClick(false); menuUp(msg3); } @@ -380,7 +382,8 @@ void Menu::mdn() { bool tes; /* debug('mdn'); */ - if (! active_menu) return; + if (!_menuActive) + return; x = x_s; y = y_s; if (!g_vm->getMouseClick()) { @@ -415,7 +418,7 @@ void Menu::mdn() { } } else { /* There was a click */ if ((msg3 == fichier) && (msg4 != no_choice)) { - // Another menu to be displayed + // Another menu to be _displayed g_vm->setMouseClick(false); menuUp(msg3); if (lo(msg4) == 1) msg3 = 7; @@ -437,4 +440,57 @@ void Menu::mdn() { } } +void Menu::initMenu() { + int i, tai; + char st[1410]; + Common::File f; + + if (!f.open("menufr.mor")) + error("Missing file - menufr.mor"); + + f.read(lettres, 7 * 24); + f.close(); + + // Ask to swap floppy + dem2(); + + for (i = 1; i <= 8; i ++) + _inv[i] = "* "; + _inv[7] = "< -*-*-*-*-*-*-*-*-*- "; + for (i = 1; i <= 7; i ++) + _dep[i] = "* "; + i = 1; + do { + deline(i + c_action, st, tai); + _act[i] = delig; + while (_act[i].size() < 10) + _act[i] += ' '; + + if (i < 9) { + if (i < 6) { + deline(i + c_saction, st, tai); + _self[i] = delig; + while (_self[i].size() < 10) + _self[i] += ' '; + } + deline(i + c_dis, st, tai); + _dis[i] = delig + ' '; + } + i = succ(int, i); + } while (!(i == 22)); + for (i = 1; i <= 8; i ++) { + _disc[i] = 0x500 + i; + if (i < 8) + _depl[i] = 0x200 + i; + _invt[i] = 0x100 + i; + if (i > 6) + g_vm->_menu.disableMenuItem(_invt[i]); + } + msg3 = no_choice; + msg4 = no_choice; + msg[3] = no_choice; + msg[4] = no_choice; + g_vm->setMouseClick(false); +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index 6ab020dbd9..8779d51298 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -37,6 +37,16 @@ private: void util(int x, int y); void invers(int ix); void menuDown(int ii); +public: + bool _menuActive; + Common::String _inv[9]; + Common::String _dep[8]; + Common::String _act[22]; + Common::String _self[7]; + Common::String _dis[9]; + int _disc[9]; + int _invt[9]; + int _depl[8]; public: void menut(int no, Common::String nom); void disableMenuItem(int no); @@ -46,6 +56,12 @@ public: void menuUp(int xx); void eraseMenu(); void mdn(); + void initMenu(); +}; + +enum { + invent = 1, depla = 2, action = 3, saction = 4, + discut = 5, fichier = 6, sauve = 7, charge = 8 }; } // End of namespace Mortevielle diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index d4461be3cd..013f69437d 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -324,8 +324,8 @@ void modobj(int m) { deline(m - 501 + c_st41, str_, tay); strp = delig; } - g_vm->_menu.menut(invt[8], strp); - g_vm->_menu.disableMenuItem(invt[8]); + g_vm->_menu.menut(g_vm->_menu._invt[8], strp); + g_vm->_menu.disableMenuItem(g_vm->_menu._invt[8]); } void modobj2(int m, bool t1, bool t2) { @@ -341,8 +341,8 @@ void modobj2(int m, bool t1, bool t2) { deline(m - 501 + c_st41, str_, tay); strp = delig; } - g_vm->_menu.menut(invt[8], strp); - g_vm->_menu.disableMenuItem(invt[8]); + g_vm->_menu.menut(g_vm->_menu._invt[8], strp); + g_vm->_menu.disableMenuItem(g_vm->_menu._invt[8]); } @@ -446,47 +446,47 @@ void affper(int per) { /* debug('affper'); */ for (cx = 1; cx <= 8; cx ++) - g_vm->_menu.disableMenuItem(disc[cx]); + g_vm->_menu.disableMenuItem(g_vm->_menu._disc[cx]); clsf10(); if ((per & 128) == 128) { g_vm->_screenSurface.putxy(560, 24); g_vm->_screenSurface.writeg("LEO", 4); - g_vm->_menu.enableMenuItem(disc[1]); + g_vm->_menu.enableMenuItem(g_vm->_menu._disc[1]); } if ((per & 64) == 64) { g_vm->_screenSurface.putxy(560, 32); g_vm->_screenSurface.writeg("PAT", 4); - g_vm->_menu.enableMenuItem(disc[2]); + g_vm->_menu.enableMenuItem(g_vm->_menu._disc[2]); } if ((per & 32) == 32) { g_vm->_screenSurface.putxy(560, 40); g_vm->_screenSurface.writeg("GUY", 4); - g_vm->_menu.enableMenuItem(disc[3]); + g_vm->_menu.enableMenuItem(g_vm->_menu._disc[3]); } if ((per & 16) == 16) { g_vm->_screenSurface.putxy(560, 48); g_vm->_screenSurface.writeg("EVA", 4); - g_vm->_menu.enableMenuItem(disc[4]); + g_vm->_menu.enableMenuItem(g_vm->_menu._disc[4]); } if ((per & 8) == 8) { g_vm->_screenSurface.putxy(560, 56); g_vm->_screenSurface.writeg("BOB", 4); - g_vm->_menu.enableMenuItem(disc[5]); + g_vm->_menu.enableMenuItem(g_vm->_menu._disc[5]); } if ((per & 4) == 4) { g_vm->_screenSurface.putxy(560, 64); g_vm->_screenSurface.writeg("LUC", 4); - g_vm->_menu.enableMenuItem(disc[6]); + g_vm->_menu.enableMenuItem(g_vm->_menu._disc[6]); } if ((per & 2) == 2) { g_vm->_screenSurface.putxy(560, 72); g_vm->_screenSurface.writeg("IDA", 4); - g_vm->_menu.enableMenuItem(disc[7]); + g_vm->_menu.enableMenuItem(g_vm->_menu._disc[7]); } if ((per & 1) == 1) { g_vm->_screenSurface.putxy(560, 80); g_vm->_screenSurface.writeg("MAX", 4); - g_vm->_menu.enableMenuItem(disc[8]); + g_vm->_menu.enableMenuItem(g_vm->_menu._disc[8]); } ipers = per; } @@ -579,7 +579,7 @@ void cpl6(int &p) { void person() { /* debug('person'); */ for (int cf = 1; cf <= 8; cf ++) - g_vm->_menu.disableMenuItem(disc[cf]); + g_vm->_menu.disableMenuItem(g_vm->_menu._disc[cf]); clsf10(); g_vm->_screenSurface.putxy(560, 30); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 557ca0679b..9a1d2712db 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -103,7 +103,7 @@ void tinke() { if (cf > 65) t = t - ((t / 3) * 2); nh = readclock(); if ((nh - mh) > t) { - am = active_menu; + am = g_vm->_menu._menuActive; g_vm->_menu.eraseMenu(); jh = jh + ((nh - mh) / t); mh = nh; @@ -234,12 +234,12 @@ void tmlieu(int mli) { deline(cx + c_tmlieu, st, tail); nomp = delig; while (nomp.size() < 20) nomp = nomp + ' '; - g_vm->_menu.menut(depl[i], nomp); + g_vm->_menu.menut(g_vm->_menu._depl[i], nomp); i = i + 1; } nomp = "* "; for (cx = 7; cx >= i; cx --) - g_vm->_menu.menut(depl[cx], nomp); + g_vm->_menu.menut(g_vm->_menu._depl[cx], nomp); } @@ -375,13 +375,13 @@ void modinv() { r = (ord(s.sjer[cx]) + 400); deline(r - 501 + c_st41, nom, tay); nomp = delig; - g_vm->_menu.menut(invt[cy], nomp); - g_vm->_menu.enableMenuItem(invt[cx]); + g_vm->_menu.menut(g_vm->_menu._invt[cy], nomp); + g_vm->_menu.enableMenuItem(g_vm->_menu._invt[cx]); } if (cy < 6) for (cx = cy + 1; cx <= 6; cx ++) { - g_vm->_menu.menut(invt[cx], " "); - g_vm->_menu.disableMenuItem(invt[cx]); + g_vm->_menu.menut(g_vm->_menu._invt[cx], " "); + g_vm->_menu.disableMenuItem(g_vm->_menu._invt[cx]); } } @@ -418,7 +418,7 @@ void mfoudi() { int cx; for (cx = 1; cx <= 7; cx ++) - g_vm->_menu.disableMenuItem(depl[cx]); + g_vm->_menu.disableMenuItem(g_vm->_menu._depl[cx]); for (cx = 1; cx <= 11; cx ++) g_vm->_menu.disableMenuItem(men[cx]); @@ -541,9 +541,7 @@ void tctrm() { } -void quelquun() - -{ +void quelquun() { int haz, cx; if (imen) @@ -566,7 +564,7 @@ L1: caff = 69 + cx; crep = caff; msg[3] = discut; - msg[4] = disc[cx]; + msg[4] = g_vm->_menu._disc[cx]; syn = true; col = true; } else { diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 29a9d5bb46..6a7f84c18c 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -506,7 +506,7 @@ void MortevielleEngine::mainGame() { for (crep = 1; crep <= c_zzz; crep ++) zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); charge_bruit5(); - init_menu(); + _menu.initMenu(); theure(); dprog(); diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 5bdb54f262..53237f7100 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -71,60 +71,6 @@ void aff50(bool c) { f3f8(); } -void init_menu() { - int i, tai; - char st[1410]; - Common::File f; - - if (!f.open("menufr.mor")) - error("Missing file - menufr.mor"); - - f.read(lettres, 7 * 24); - f.close(); - - // Ask to swap floppy - dem2(); - - - for (i = 1; i <= 8; i ++) - inv[i] = "* "; - inv[7] = "< -*-*-*-*-*-*-*-*-*- "; - for (i = 1; i <= 7; i ++) - dep[i] = "* "; - i = 1; - do { - deline(i + c_action, st, tai); - act[i] = delig; - while (act[i].size() < 10) - act[i] += ' '; - - if (i < 9) { - if (i < 6) { - deline(i + c_saction, st, tai); - self_[i] = delig; - while (self_[i].size() < 10) - self_[i] += ' '; - } - deline(i + c_dis, st, tai); - dis[i] = delig + ' '; - } - i = succ(int, i); - } while (!(i == 22)); - for (i = 1; i <= 8; i ++) { - disc[i] = 0x500 + i; - if (i < 8) depl[i] = 0x200 + i; - invt[i] = 0x100 + i; - if (i > 6) - g_vm->_menu.disableMenuItem(invt[i]); - } - msg3 = no_choice; - msg4 = no_choice; - msg[3] = no_choice; - msg[4] = no_choice; - g_vm->setMouseClick(false); -} - - void charpal() { Common::File f; // tabdb records Common::File ft; // tfxx diff --git a/engines/mortevielle/ovd1.h b/engines/mortevielle/ovd1.h index 96239ed3d5..6bb553a041 100644 --- a/engines/mortevielle/ovd1.h +++ b/engines/mortevielle/ovd1.h @@ -34,7 +34,6 @@ extern void dem2(); extern void ani50(); //extern void apzuul(); extern void aff50(bool c); -extern void init_menu(); extern void charpal(); extern void chartex(); extern void dialpre(); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 62b14575de..27eb5bb0b6 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -111,8 +111,7 @@ bool blo, anyone, brt, rect, - rech_cfiec, - active_menu; + rech_cfiec; int x, @@ -183,17 +182,9 @@ Common::String al_mess, ind_mess, al_mess2; -int invt[9]; int nbrep[9]; int nbrepm[9]; -int disc[9]; int msg[5]; -int depl[8]; -Common::String inv[9]; -Common::String dep[8]; -Common::String act[22]; -Common::String self_[7]; -Common::String dis[9]; char touv[8]; sav_chaine s, s1; byte bufcha[391]; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 3e496df9ff..b810033f0a 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -129,14 +129,6 @@ const int amzon = 1650; const int fleche = 1758; const int no_choice = 0; -const int invent = 1; -const int depla = 2; -const int action = 3; -const int saction = 4; -const int discut = 5; -const int fichier = 6; -const int sauve = 7; -const int charge = 8; const int attacher = 0x301; const int attendre = 0x302; @@ -284,8 +276,7 @@ extern bool blo, anyone, brt, rect, - rech_cfiec, - active_menu; + rech_cfiec; extern int x, @@ -356,17 +347,9 @@ extern Common::String al_mess, ind_mess, al_mess2; -extern int invt[9]; extern int nbrep[9]; extern int nbrepm[9]; -extern int disc[9]; extern int msg[5]; -extern int depl[8]; -extern Common::String inv[9]; -extern Common::String dep[8]; -extern Common::String act[22]; -extern Common::String self_[7]; -extern Common::String dis[9]; extern char touv[8]; extern sav_chaine s, s1; extern byte bufcha[391]; -- cgit v1.2.3 From d738576f1c966d4e515c3a3ee64bd0972b3efdca Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 13 Feb 2012 20:51:36 +1100 Subject: MORTEVIELLE: Convert f3/f8 dialog, alert dialog, and ques dialogs into classes --- engines/mortevielle/actions.cpp | 23 +- engines/mortevielle/alert.cpp | 270 ---------------------- engines/mortevielle/alert.h | 39 ---- engines/mortevielle/dialogs.cpp | 447 ++++++++++++++++++++++++++++++++++++ engines/mortevielle/dialogs.h | 60 +++++ engines/mortevielle/module.mk | 3 +- engines/mortevielle/mor.cpp | 22 +- engines/mortevielle/mor.h | 1 - engines/mortevielle/mor2.cpp | 17 +- engines/mortevielle/mor2.h | 1 - engines/mortevielle/mortevielle.cpp | 27 +-- engines/mortevielle/mortevielle.h | 1 - engines/mortevielle/ovd1.cpp | 21 +- engines/mortevielle/ovd1.h | 2 - engines/mortevielle/prog.cpp | 2 +- engines/mortevielle/ques.cpp | 144 ------------ engines/mortevielle/ques.h | 38 --- engines/mortevielle/saveload.cpp | 2 +- 18 files changed, 535 insertions(+), 585 deletions(-) delete mode 100644 engines/mortevielle/alert.cpp delete mode 100644 engines/mortevielle/alert.h create mode 100644 engines/mortevielle/dialogs.cpp create mode 100644 engines/mortevielle/dialogs.h delete mode 100644 engines/mortevielle/ques.cpp delete mode 100644 engines/mortevielle/ques.h diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index dfd0811086..02c7b6a90f 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -27,7 +27,7 @@ #include "common/scummsys.h" #include "mortevielle/actions.h" -#include "mortevielle/alert.h" +#include "mortevielle/dialogs.h" #include "mortevielle/level15.h" #include "mortevielle/menu.h" #include "mortevielle/mor.h" @@ -35,7 +35,6 @@ #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" -#include "mortevielle/ques.h" #include "mortevielle/parole2.h" #include "mortevielle/taffich.h" #include "mortevielle/var_mor.h" @@ -529,12 +528,12 @@ void tmettre() { repon(2, 165); maivid(); parole(6, -9, 1); - quel = do_alert(g_vm->getString(S_YES_NO), 1); + quel = Alert::show(g_vm->getString(S_YES_NO), 1); if (quel == 1) { deline(582, st, tay); - i = do_alert(delig, 1); + i = Alert::show(delig, 1); tesok = false; - entre = ques(); + entre = Ques::show(); hide_mouse(); hirs(); dessine_rouleau(); @@ -559,7 +558,7 @@ void tmettre() { aniof(1, 2); aniof(1, 1); deline(577, st, tay); - i = do_alert(delig, 1); + i = Alert::show(delig, 1); aniof(2, 1); crep = 166; } @@ -611,7 +610,7 @@ void ttourner() { if ((s.mlieu == 13) && (s.ibag == 159) && (s.iboul == 141)) { repon(2, 167); parole(7, 9, 1); - quel = do_alert(g_vm->getString(S_YES_NO), 1); + quel = Alert::show(g_vm->getString(S_YES_NO), 1); if (quel == 1) g_vm->_endGame = true; else crep = 168; @@ -620,7 +619,7 @@ void ttourner() { repon(2, 175); clsf3(); parole(6, -9, 1); - quel = do_alert(g_vm->getString(S_YES_NO), 1); + quel = Alert::show(g_vm->getString(S_YES_NO), 1); if (quel == 1) { s.mlieu = 16; affrep(); @@ -700,7 +699,7 @@ void tfrapper() { if (!syn) ecr3(g_vm->getString(S_HIT)); if (s.mlieu == 15) { - l = do_alert(g_vm->getString(S_BEFORE_USE_DEP_MENU), 1); + l = Alert::show(g_vm->getString(S_BEFORE_USE_DEP_MENU), 1); return; } if (s.mlieu < 25) { @@ -930,7 +929,7 @@ void tdormir() { h = h + 1; if (h > 23) h = 0; tinke(); - quel = do_alert(g_vm->getString(S_YES_NO), 1); + quel = Alert::show(g_vm->getString(S_YES_NO), 1); anyone = false; } while (!(quel == 1)); crep = 998; @@ -992,7 +991,7 @@ void tattendre() { return; } repon(2, 102); - quel = do_alert(g_vm->getString(S_YES_NO), 1); + quel = Alert::show(g_vm->getString(S_YES_NO), 1); } while (!(quel == 2)); crep = 998; if (! anyone) tinke(); @@ -1259,7 +1258,7 @@ void MortevielleEngine::loseGame() { heu = 10; jou = 0; repon(2, 180); - quel = do_alert(g_vm->getString(S_YES_NO), 1); + quel = Alert::show(g_vm->getString(S_YES_NO), 1); _quitGame = (quel != 1); } diff --git a/engines/mortevielle/alert.cpp b/engines/mortevielle/alert.cpp deleted file mode 100644 index a3787a09b3..0000000000 --- a/engines/mortevielle/alert.cpp +++ /dev/null @@ -1,270 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "common/str.h" -#include "mortevielle/alert.h" -#include "mortevielle/level15.h" -#include "mortevielle/mortevielle.h" -#include "mortevielle/mouse.h" - -namespace Mortevielle { - -int do_alert(Common::String str_, int n); - - -const int nligne = 7; - -const int coord[3][4] = { - {0, 0, 0, 0}, - {0, 150, 72, 103}, - {0, 143, 107, 183} -}; - - -static void decod(Common::String s, int &nbc, int &nbl, int &col, Common::String &c, Common::String &cs) { - int i, k; - bool v; - - //val(s[2], nbc, i); - nbc = atoi(s.c_str() + 1); - i = 0; - - c = ""; - nbl = 0; - i = 5; - k = 0; - v = true; - col = 0; - - while (s[i] != ']') { - c = c + s[i]; - if ((s[i] == '|') || (s[i + 1] == ']')) { - if (k > col) col = k; - k = 0; - nbl = nbl + 1; - } else if (s[i] != ' ') v = false; - i = i + 1; - k = k + 1; - } - if (v) { - c = ""; - col = 20; - } else { - c = c + ']'; - col = col + 6; - } - i = i + 1; - cs = copy(s, i, 30); - if (res == 2) col = col * 6; - else col = col * 10; -} - - - -static void posit(int ji, int &coldep, int &esp) { - g_vm->_screenSurface.putxy(coldep + (40 + esp) *pred(int, ji), 98); -} - - - -static void fait_boite(int lidep, int nli, int tx) { - int x, y, xx, yy; - - if (tx > 640) tx = 640; - x = 320 - ((uint)tx >> 1); - y = pred(int, lidep) << 3; - xx = x + tx; - yy = y + (nli << 3); - g_vm->_screenSurface.fillRect(15, Common::Rect(x, y, xx, yy)); - g_vm->_screenSurface.fillRect(0, Common::Rect(x, y + 2, xx, y + 4)); - g_vm->_screenSurface.fillRect(0, Common::Rect(x, yy - 4, xx, yy - 2)); -} - - - -static void fait_choix(Common::String c, int &coldep, int &nbcase, Common::String *str, int &esp) { - int i, l, x; - char ch; - - i = 1; - x = coldep; - for (l = 1; l <= nbcase; l ++) { - str[l] = ""; - do { - i = i + 1; - ch = c[i]; - str[l] = str[l] + ch; - } while (!(c[i + 1] == ']')); - i = i + 2; - while (str[l].size() < 3) str[l] = str[l] + ' '; - g_vm->_screenSurface.putxy(x, 98); - - Common::String tmp(" "); - tmp += str[l]; - tmp += " "; - - g_vm->_screenSurface.writeg(tmp, 0); - x = x + esp + 40; - } -} - -int do_alert(Common::String str_, int n) { - int coldep, esp, i, nbcase, quoi, ix; - Common::String st, chaine; - int limit[3][3]; - char dumi; - Common::String s[3]; - int cx, cy, nbcol, nblig; - bool newaff, test, test1, test2, test3, dum; - Common::String cas; - - // Make a copy of the current screen surface for later restore - g_vm->_backgroundSurface.copyFrom(g_vm->_screenSurface); - - /*debug('** do_alert **');*/ - memset(&limit[0][0], 0, sizeof(int) * 3 * 3); - int do_alert_result; - hide_mouse(); - while (keypressed()) - dumi = get_ch(); // input >> kbd >> dumi; - - g_vm->setMouseClick(false); - decod(str_, nbcase, nblig, nbcol, chaine, cas); - sauvecr(50, succ(int, nligne) << 4); - - i = 0; - if (chaine == "") { - fait_boite(10, 5, nbcol); - } else { - fait_boite(8, 7, nbcol); - i = 0; - g_vm->_screenSurface._textPos.y = 70; - do { - cx = 320; - st = ""; - while ((chaine[i + 1] != '\174') && (chaine[i + 1] != '\135')) { - i = i + 1; - st = st + chaine[i]; - if (res == 2) cx = cx - 3; - else cx = cx - 5; - } - g_vm->_screenSurface.putxy(cx, g_vm->_screenSurface._textPos.y); - g_vm->_screenSurface._textPos.y += 6; - g_vm->_screenSurface.writeg(st, 4); - i = i + 1; - } while (!(chaine[i] == ']')); - } - if (nbcase == 1) esp = nbcol - 40; - else esp = (uint)(nbcol - nbcase * 40) >> 1; - coldep = 320 - ((uint)nbcol >> 1) + ((uint)esp >> 1); - fait_choix(cas, coldep, nbcase, &s[0], esp); - limit[1][1] = ((uint)(coldep) >> 1) * res; - limit[1][2] = limit[1][1] + 40; - if (nbcase == 1) { - limit[2][1] = limit[2][2]; - } else { - limit[2][1] = ((uint)(320 + ((uint)esp >> 1)) >> 1) * res; - limit[2][2] = (limit[2][1]) + 40; - } - show_mouse(); - quoi = 0; - dum = false; - do { - dumi = '\377'; - mov_mouse(dum, dumi); - CHECK_QUIT0; - - cx = x_s; - cy = y_s; - test = (cy > 95) && (cy < 105); - newaff = false; - if (test) { - test1 = (cx > limit[1][1]) && (cx < limit[1][2]); - test2 = test1; - if (nbcase > 1) test2 = test1 || ((cx > limit[2][1]) && (cx < limit[2][2])); - if (test2) { - newaff = true; - if (test1) ix = 1; - else ix = 2; - if (ix != quoi) { - hide_mouse(); - if (quoi != 0) { - posit(quoi, coldep, esp); - - Common::String tmp(" "); - tmp += s[quoi]; - tmp += " "; - g_vm->_screenSurface.writeg(tmp, 0); - } - posit(ix, coldep, esp); - - Common::String tmp2 = " "; - tmp2 += s[ix]; - tmp2 += " "; - g_vm->_screenSurface.writeg(tmp2, 1); - - quoi = ix; - show_mouse(); - } - } - } - if ((quoi != 0) && ! newaff) { - hide_mouse(); - posit(quoi, coldep, esp); - - Common::String tmp3(" "); - tmp3 += s[quoi]; - tmp3 += " "; - g_vm->_screenSurface.writeg(tmp3, 0); - - quoi = 0; - show_mouse(); - } - test3 = (cy > 95) && (cy < 105) && (((cx > limit[1][1]) && (cx < limit[1][2])) - || ((cx > limit[2][1]) && (cx < limit[2][2]))); - } while (!g_vm->getMouseClick()); - g_vm->setMouseClick(false); - hide_mouse(); - if (! test3) { - quoi = n; - posit(n, coldep, esp); - Common::String tmp4(" "); - tmp4 += s[n]; - tmp4 += " "; - g_vm->_screenSurface.writeg(tmp4, 1); - } - charecr(50, succ(int, nligne) << 4); - show_mouse(); - - /* Restore the background area */ - g_vm->_screenSurface.copyFrom(g_vm->_backgroundSurface, 0, 0); - - do_alert_result = quoi; - return do_alert_result; -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/alert.h b/engines/mortevielle/alert.h deleted file mode 100644 index f7a9e7d1c1..0000000000 --- a/engines/mortevielle/alert.h +++ /dev/null @@ -1,39 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_ALERT_H -#define MORTEVIELLE_ALERT_H - -#include "common/str.h" - -namespace Mortevielle { - -extern int do_alert(Common::String str_, int n); -extern int do_alert(Common::String str_, int n); - -} // End of namespace Mortevielle -#endif diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp new file mode 100644 index 0000000000..3efa80efdd --- /dev/null +++ b/engines/mortevielle/dialogs.cpp @@ -0,0 +1,447 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#include "common/str.h" +#include "mortevielle/dialogs.h" +#include "mortevielle/keyboard.h" +#include "mortevielle/level15.h" +#include "mortevielle/mortevielle.h" +#include "mortevielle/mor.h" +#include "mortevielle/mouse.h" +#include "mortevielle/outtext.h" +#include "mortevielle/parole2.h" +#include "mortevielle/taffich.h" + +namespace Mortevielle { + +static const int nligne = 7; + +/* +static const int coord[3][4] = { + {0, 0, 0, 0}, + {0, 150, 72, 103}, + {0, 143, 107, 183} +}; +*/ + +int Alert::show(const Common::String &msg, int n) { + int coldep, esp, i, nbcase, quoi, ix; + Common::String st, chaine; + int limit[3][3]; + char dumi; + Common::String s[3]; + int cx, cy, nbcol, nblig; + bool newaff, test, test1, test2, test3, dum; + Common::String cas; + + // Make a copy of the current screen surface for later restore + g_vm->_backgroundSurface.copyFrom(g_vm->_screenSurface); + + /*debug('** do_alert **');*/ + memset(&limit[0][0], 0, sizeof(int) * 3 * 3); + int do_alert_result; + hide_mouse(); + while (keypressed()) + dumi = get_ch(); // input >> kbd >> dumi; + + g_vm->setMouseClick(false); + decod(msg, nbcase, nblig, nbcol, chaine, cas); + sauvecr(50, succ(int, nligne) << 4); + + i = 0; + if (chaine == "") { + fait_boite(10, 5, nbcol); + } else { + fait_boite(8, 7, nbcol); + i = 0; + g_vm->_screenSurface._textPos.y = 70; + do { + cx = 320; + st = ""; + while ((chaine[i + 1] != '\174') && (chaine[i + 1] != '\135')) { + i = i + 1; + st = st + chaine[i]; + if (res == 2) cx = cx - 3; + else cx = cx - 5; + } + g_vm->_screenSurface.putxy(cx, g_vm->_screenSurface._textPos.y); + g_vm->_screenSurface._textPos.y += 6; + g_vm->_screenSurface.writeg(st, 4); + i = i + 1; + } while (!(chaine[i] == ']')); + } + if (nbcase == 1) esp = nbcol - 40; + else esp = (uint)(nbcol - nbcase * 40) >> 1; + coldep = 320 - ((uint)nbcol >> 1) + ((uint)esp >> 1); + fait_choix(cas, coldep, nbcase, &s[0], esp); + limit[1][1] = ((uint)(coldep) >> 1) * res; + limit[1][2] = limit[1][1] + 40; + if (nbcase == 1) { + limit[2][1] = limit[2][2]; + } else { + limit[2][1] = ((uint)(320 + ((uint)esp >> 1)) >> 1) * res; + limit[2][2] = (limit[2][1]) + 40; + } + show_mouse(); + quoi = 0; + dum = false; + do { + dumi = '\377'; + mov_mouse(dum, dumi); + CHECK_QUIT0; + + cx = x_s; + cy = y_s; + test = (cy > 95) && (cy < 105); + newaff = false; + if (test) { + test1 = (cx > limit[1][1]) && (cx < limit[1][2]); + test2 = test1; + if (nbcase > 1) test2 = test1 || ((cx > limit[2][1]) && (cx < limit[2][2])); + if (test2) { + newaff = true; + if (test1) ix = 1; + else ix = 2; + if (ix != quoi) { + hide_mouse(); + if (quoi != 0) { + setPosition(quoi, coldep, esp); + + Common::String tmp(" "); + tmp += s[quoi]; + tmp += " "; + g_vm->_screenSurface.writeg(tmp, 0); + } + setPosition(ix, coldep, esp); + + Common::String tmp2 = " "; + tmp2 += s[ix]; + tmp2 += " "; + g_vm->_screenSurface.writeg(tmp2, 1); + + quoi = ix; + show_mouse(); + } + } + } + if ((quoi != 0) && ! newaff) { + hide_mouse(); + setPosition(quoi, coldep, esp); + + Common::String tmp3(" "); + tmp3 += s[quoi]; + tmp3 += " "; + g_vm->_screenSurface.writeg(tmp3, 0); + + quoi = 0; + show_mouse(); + } + test3 = (cy > 95) && (cy < 105) && (((cx > limit[1][1]) && (cx < limit[1][2])) + || ((cx > limit[2][1]) && (cx < limit[2][2]))); + } while (!g_vm->getMouseClick()); + g_vm->setMouseClick(false); + hide_mouse(); + if (! test3) { + quoi = n; + setPosition(n, coldep, esp); + Common::String tmp4(" "); + tmp4 += s[n]; + tmp4 += " "; + g_vm->_screenSurface.writeg(tmp4, 1); + } + charecr(50, succ(int, nligne) << 4); + show_mouse(); + + /* Restore the background area */ + g_vm->_screenSurface.copyFrom(g_vm->_backgroundSurface, 0, 0); + + do_alert_result = quoi; + return do_alert_result; +} + +void Alert::decod(Common::String s, int &nbc, int &nbl, int &col, Common::String &c, Common::String &cs) { + int i, k; + bool v; + + //val(s[2], nbc, i); + nbc = atoi(s.c_str() + 1); + i = 0; + + c = ""; + nbl = 0; + i = 5; + k = 0; + v = true; + col = 0; + + while (s[i] != ']') { + c = c + s[i]; + if ((s[i] == '|') || (s[i + 1] == ']')) { + if (k > col) col = k; + k = 0; + nbl = nbl + 1; + } else if (s[i] != ' ') v = false; + i = i + 1; + k = k + 1; + } + if (v) { + c = ""; + col = 20; + } else { + c = c + ']'; + col = col + 6; + } + i = i + 1; + cs = copy(s, i, 30); + if (res == 2) col = col * 6; + else col = col * 10; +} + +void Alert::setPosition(int ji, int coldep, int esp) { + g_vm->_screenSurface.putxy(coldep + (40 + esp) *pred(int, ji), 98); +} + +void Alert::fait_boite(int lidep, int nli, int tx) { + int x, y, xx, yy; + + if (tx > 640) tx = 640; + x = 320 - ((uint)tx >> 1); + y = pred(int, lidep) << 3; + xx = x + tx; + yy = y + (nli << 3); + g_vm->_screenSurface.fillRect(15, Common::Rect(x, y, xx, yy)); + g_vm->_screenSurface.fillRect(0, Common::Rect(x, y + 2, xx, y + 4)); + g_vm->_screenSurface.fillRect(0, Common::Rect(x, yy - 4, xx, yy - 2)); +} + + + +void Alert::fait_choix(Common::String c, int coldep, int nbcase, Common::String *str, int esp) { + int i, l, x; + char ch; + + i = 1; + x = coldep; + for (l = 1; l <= nbcase; l ++) { + str[l] = ""; + do { + i = i + 1; + ch = c[i]; + str[l] = str[l] + ch; + } while (!(c[i + 1] == ']')); + i = i + 2; + while (str[l].size() < 3) str[l] = str[l] + ' '; + g_vm->_screenSurface.putxy(x, 98); + + Common::String tmp(" "); + tmp += str[l]; + tmp += " "; + + g_vm->_screenSurface.writeg(tmp, 0); + x = x + esp + 40; + } +} + +/*------------------------------------------------------------------------*/ + +bool Ques::show() { + const int ta[11] = {0, 511, 516, 524, 531, 545, 552, 559, 563, 570, 576}; + const int ok[11] = {0, 4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }; + + bool q, func, test; + int i, j, k, y, memk; + int tay , tmax; + int rep, prem, der; + char st[1410]; + char key; + rectangle coor[max_rect]; + Common::String chaines[15]; + int compte; + + + bool ques_result; + test = false; + i = 0; + compte = 0; + + do { + hide_mouse(); + hirs(); + show_mouse(); + i = i + 1; + deline(ta[i], st, tay); + if (res == 1) y = 29; + else y = 23; + g_vm->_screenSurface.fillRect(15, Common::Rect(0, 14, 630, y)); + afftex(st, 20, 15, 100, 2, 0); + if (i != 10) { + prem = ta[i] + 1; + der = ta[i + 1] - 1; + } else { + prem = 503; + der = 510; + } + y = 35; + tmax = 0; + memk = 1; + for (j = prem; j <= der; j ++) { + deline(j, st, tay); + if (tay > tmax) tmax = tay; + afftex(st, 100, y, 100, 1, 0); + chaines[memk] = delig; + memk = memk + 1; + y = y + 8; + } + for (j = 1; j <= succ(int, der - prem); j ++) { + { + rectangle &with = coor[j]; + + with.x1 = 45 * res; + with.x2 = (tmax * 3 + 55) * res; + with.y1 = 27 + j * 8; + with.y2 = 34 + j * 8; + with.etat = true; + } + while ((int)chaines[j].size() < tmax) { + chaines[j] = chaines[j] + ' '; + } + } + coor[j + 1].etat = false; + if (res == 1) rep = 10; + else rep = 6; + g_vm->_screenSurface.drawBox(80, 33, 40 + tmax * rep, (der - prem) * 8 + 16, 15); + rep = 0; + j = 0; + memk = 0; + do { + g_vm->setMouseClick(false); + tesok = false; + mov_mouse(func, key); + CHECK_QUIT0; + + k = 1; + while (coor[k].etat && ! dans_rect(coor[k])) k = k + 1; + if (coor[k].etat) { + if ((memk != 0) && (memk != k)) { + for (j = 1; j <= tmax; j ++) st[j] = chaines[memk][j]; + st[1 + tmax] = '$'; + afftex(st, 100, 27 + memk * 8, 100, 1, 0); + } + if (memk != k) { + for (j = 1; j <= tmax; j ++) st[j] = chaines[k][j]; + st[1 + tmax] = '$'; + afftex(st, 100, 27 + k * 8, 100, 1, 1); + memk = k; + } + } else if (memk != 0) { + for (j = 1; j <= tmax; j ++) st[j] = chaines[memk][j]; + st[1 + tmax] = '$'; + afftex(st, 100, 27 + memk * 8, 100, 1, 0); + memk = 0; + } + } while (!((memk != 0) && g_vm->getMouseClick())); + if (memk == ok[i]) compte = compte + 1; + else { + if (i == 5) i = i + 1; + if ((i == 7) || (i == 8)) i = 10; + } + if (i == 10) q = /*testprot*/ true; + } while (!(i == 10)); + ques_result = (compte == 10) && q; + return ques_result; +} + +/*------------------------------------------------------------------------*/ + +/** + * Draw the F3/F8 dialog + */ +void f3f8::draw() { + Common::String f3 = g_vm->getString(S_F3); + Common::String f8 = g_vm->getString(S_F8); + + // Write the F3 and F8 text strings + g_vm->_screenSurface.putxy(3, 44); + g_vm->_screenSurface.writeg(f3, 5); + g_vm->_screenSurface._textPos.y = 51; + g_vm->_screenSurface.writeg(f8, 5); + + // Get the width of the written text strings + int f3Width = g_vm->_screenSurface.getStringWidth(f3); + int f8Width = g_vm->_screenSurface.getStringWidth(f8); + + // Write out the bounding box + g_vm->_screenSurface.drawBox(0, 42, MAX(f3Width, f8Width) + 6, 16, 7); +} + +void f3f8::divers(int np, bool b) { + teskbd(); + do { + parole(np, 0, 0); + atf3f8(key); + CHECK_QUIT; + + if (newgd != gd) { + gd = newgd; + hirs(); + aff50(b); + } + } while (!(key == 66)); +} + +void f3f8::atf3f8(int &key) { + do { + key = testou(); + CHECK_QUIT; + } while (!((key == 61) || (key == 66))); +} + +void f3f8::aff50(bool c) { + caff = 50; + maff = 0; + taffich(); + dessine(ades, 63, 12); + if (c) + ani50(); + else + repon(2, c_paroles + 142); + + // Draw the f3/f8 dialog + draw(); +} + +void f3f8::ani50() { + crep = animof(1, 1); + pictout(adani, crep, 63, 12); + crep = animof(2, 1); + pictout(adani, crep, 63, 12); + f2_all = (res == 1); + repon(2, c_paroles + 143); +} + + +} // End of namespace Mortevielle diff --git a/engines/mortevielle/dialogs.h b/engines/mortevielle/dialogs.h new file mode 100644 index 0000000000..260f355e8f --- /dev/null +++ b/engines/mortevielle/dialogs.h @@ -0,0 +1,60 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_ALERT_H +#define MORTEVIELLE_ALERT_H + +#include "common/str.h" + +namespace Mortevielle { + +class Alert { +private: + static void decod(Common::String s, int &nbc, int &nbl, int &col, Common::String &c, Common::String &cs); + static void setPosition(int ji, int coldep, int esp); + static void fait_boite(int lidep, int nli, int tx); + static void fait_choix(Common::String c, int coldep, int nbcase, Common::String *str, int esp); +public: + static int show(const Common::String &s, int n); +}; + +class Ques { +public: + static bool show(); +}; + +class f3f8 { +public: + static void draw(); + static void divers(int np, bool b); + static void atf3f8(int &key); + static void aff50(bool c); + static void ani50(); +}; + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 67ca57dbb4..16f56bc5b0 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -2,9 +2,9 @@ MODULE := engines/mortevielle MODULE_OBJS := \ actions.o \ - alert.o \ asm.o \ detection.o \ + dialogs.o \ graphics.o \ keyboard.o \ level15.o \ @@ -18,7 +18,6 @@ MODULE_OBJS := \ parole.o \ parole2.o \ prog.o \ - ques.o \ saveload.o \ sound.o \ taffich.o \ diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 013f69437d..eb900d1515 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -29,7 +29,7 @@ #include "common/str.h" #include "common/system.h" #include "common/textconsole.h" -#include "mortevielle/alert.h" +#include "mortevielle/dialogs.h" #include "mortevielle/graphics.h" #include "mortevielle/level15.h" #include "mortevielle/menu.h" @@ -47,7 +47,7 @@ const int ioresult = 0; void testfi() { if (ioresult != 0) { - caff = do_alert(err_mess, 1); + caff = Alert::show(err_mess, 1); g_vm->quitGame(); } } @@ -403,24 +403,6 @@ void repon(int f, int m) { } } -void f3f8() { - Common::String f3 = g_vm->getString(S_F3); - Common::String f8 = g_vm->getString(S_F8); - - // Write the F3 and F8 text strings - g_vm->_screenSurface.putxy(3, 44); - g_vm->_screenSurface.writeg(f3, 5); - g_vm->_screenSurface._textPos.y = 51; - g_vm->_screenSurface.writeg(f8, 5); - - // Get the width of the written text strings - int f3Width = g_vm->_screenSurface.getStringWidth(f3); - int f8Width = g_vm->_screenSurface.getStringWidth(f8); - - // Write out the bounding box - g_vm->_screenSurface.drawBox(0, 42, MAX(f3Width, f8Width) + 6, 16, 7); -} - void t5(int cx) { /* debug('t5'); */ if (cx == 10) blo = false; diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index cabc3c4e92..22879246f6 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -62,7 +62,6 @@ extern void okpas(); extern void modobj(int m); extern void modobj2(int m, bool t1, bool t2); extern void repon(int f, int m); -extern void f3f8(); extern void t5(int cx); extern void affper(int per); extern void choix(int min, int max, int &per); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 9a1d2712db..c388c4a937 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -26,7 +26,7 @@ */ #include "mortevielle/mor2.h" -#include "mortevielle/alert.h" +#include "mortevielle/dialogs.h" #include "mortevielle/keyboard.h" #include "mortevielle/menu.h" #include "mortevielle/mor.h" @@ -280,13 +280,6 @@ void mfouen() g_vm->_menu.menut(soulever, g_vm->getString(S_RAISE)); } -void atf3f8(int &key) { - do { - key = testou(); - CHECK_QUIT; - } while (!((key == 61) || (key == 66))); -} - /* NIVEAU 6 */ void tperd() { @@ -394,12 +387,12 @@ void sparl(float adr, float rep) { hide_mouse(); deline(repint + c_paroles, st, tay); afftex(st, 230, 4, 65, 24, 5); - f3f8(); + f3f8::draw(); key = 0; do { parole(repint, haut[caff - 69], 0); - atf3f8(key); + f3f8::atf3f8(key); CHECK_QUIT; } while (!(key == 66)); hirs(); @@ -631,7 +624,7 @@ void tfleche() { tinke(); } while (!(qust || rect || anyone)); - if (qust && (touch == '\103')) dummy = do_alert(stpou, 1); + if (qust && (touch == '\103')) dummy = Alert::show(stpou, 1); } while (!((touch == '\73') || ((touch == '\104') && (x != 0) && (y != 0)) || (anyone) || (rect))); if (touch == '\73') iesc = true; @@ -767,7 +760,7 @@ void st13(int ob) { void aldepl() { int dummy; - dummy = do_alert(g_vm->getString(S_USE_DEP_MENU), 1); + dummy = Alert::show(g_vm->getString(S_USE_DEP_MENU), 1); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/mor2.h b/engines/mortevielle/mor2.h index 6668d54113..1d66548ffa 100644 --- a/engines/mortevielle/mor2.h +++ b/engines/mortevielle/mor2.h @@ -41,7 +41,6 @@ extern void tlu(int af, int ob); extern void delin(int n); extern void affrep(); extern void mfouen(); -extern void atf3f8(int &key); /* NIVEAU 6 */ extern void tperd(); extern void tsort(); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 6a7f84c18c..b35e98611c 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -30,7 +30,7 @@ #include "graphics/pixelformat.h" #include "mortevielle/mortevielle.h" #include "mortevielle/actions.h" -#include "mortevielle/alert.h" +#include "mortevielle/dialogs.h" #include "mortevielle/asm.h" #include "mortevielle/keyboard.h" #include "mortevielle/level15.h" @@ -467,13 +467,13 @@ Common::Error MortevielleEngine::run() { * Show the game introduction */ void MortevielleEngine::showIntroduction() { - aff50(false); + f3f8::aff50(false); mlec = 0; - divers(142, false); + f3f8::divers(142, false); CHECK_QUIT; - ani50(); - divers(143, true); + f3f8::ani50(); + f3f8::divers(143, true); CHECK_QUIT; // TODO: Once music is implemented, only use the below delay if music is turned off @@ -482,21 +482,6 @@ void MortevielleEngine::showIntroduction() { music(); } -void MortevielleEngine::divers(int np, bool b) { - teskbd(); - do { - parole(np, 0, 0); - atf3f8(key); - CHECK_QUIT; - - if (newgd != gd) { - gd = newgd; - hirs(); - aff50(b); - } - } while (!(key == 66)); -} - /** * Main game loop. Handles potentially playing the game multiple times, such as if the player * loses, and chooses to start playing the game again. @@ -583,7 +568,7 @@ void MortevielleEngine::handleAction() { if (choisi && (msg[3] == charge)) g_vm->_savegameManager.loadGame((msg[4] & 7) - 1); if (inkey == '\103') { /* F9 */ - temps = do_alert(stpou, 1); + temps = Alert::show(stpou, 1); return; } else if (inkey == '\77') { if ((mnumo != no_choice) && ((msg[3] == action) || (msg[3] == saction))) { diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 371dd40b38..b0f1c4cffe 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -93,7 +93,6 @@ private: void mainGame(); void playGame(); void handleAction(); - void divers(int np, bool b); public: ScreenSurface _screenSurface; PaletteManager _paletteManager; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 53237f7100..33f879d61b 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -26,7 +26,7 @@ */ #include "common/file.h" -#include "mortevielle/alert.h" +#include "mortevielle/dialogs.h" #include "mortevielle/keyboard.h" #include "mortevielle/level15.h" #include "mortevielle/menu.h" @@ -52,25 +52,6 @@ void dem2() { // Deprecated under ScummVM } -void ani50() { - crep = animof(1, 1); - pictout(adani, crep, 63, 12); - crep = animof(2, 1); - pictout(adani, crep, 63, 12); - f2_all = (res == 1); - repon(2, c_paroles + 143); -} - -void aff50(bool c) { - caff = 50; - maff = 0; - taffich(); - dessine(ades, 63, 12); - if (c) ani50(); - else repon(2, c_paroles + 142); - f3f8(); -} - void charpal() { Common::File f; // tabdb records Common::File ft; // tfxx diff --git a/engines/mortevielle/ovd1.h b/engines/mortevielle/ovd1.h index 6bb553a041..13a8f5db2e 100644 --- a/engines/mortevielle/ovd1.h +++ b/engines/mortevielle/ovd1.h @@ -31,9 +31,7 @@ namespace Mortevielle { extern void dem2(); -extern void ani50(); //extern void apzuul(); -extern void aff50(bool c); extern void charpal(); extern void chartex(); extern void dialpre(); diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 7f61b79185..8d905af326 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -26,7 +26,7 @@ */ #include "mortevielle/actions.h" -#include "mortevielle/alert.h" +#include "mortevielle/dialogs.h" #include "mortevielle/menu.h" #include "mortevielle/mor.h" #include "mortevielle/mor2.h" diff --git a/engines/mortevielle/ques.cpp b/engines/mortevielle/ques.cpp deleted file mode 100644 index e8c568d398..0000000000 --- a/engines/mortevielle/ques.cpp +++ /dev/null @@ -1,144 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "common/str.h" -#include "mortevielle/level15.h" -#include "mortevielle/mortevielle.h" -#include "mortevielle/mouse.h" -#include "mortevielle/outtext.h" -#include "mortevielle/ques.h" - -namespace Mortevielle { - -bool ques() { - const int ta[11] = {0, 511, 516, 524, 531, 545, 552, 559, 563, 570, 576}; - const int ok[11] = {0, 4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }; - - bool q, func, test; - int i, j, k, y, memk; - int tay , tmax; - int rep, prem, der; - char st[1410]; - char key; - rectangle coor[max_rect]; - Common::String chaines[15]; - int compte; - - - bool ques_result; - test = false; - i = 0; - compte = 0; - - do { - hide_mouse(); - hirs(); - show_mouse(); - i = i + 1; - deline(ta[i], st, tay); - if (res == 1) y = 29; - else y = 23; - g_vm->_screenSurface.fillRect(15, Common::Rect(0, 14, 630, y)); - afftex(st, 20, 15, 100, 2, 0); - if (i != 10) { - prem = ta[i] + 1; - der = ta[i + 1] - 1; - } else { - prem = 503; - der = 510; - } - y = 35; - tmax = 0; - memk = 1; - for (j = prem; j <= der; j ++) { - deline(j, st, tay); - if (tay > tmax) tmax = tay; - afftex(st, 100, y, 100, 1, 0); - chaines[memk] = delig; - memk = memk + 1; - y = y + 8; - } - for (j = 1; j <= succ(int, der - prem); j ++) { - { - rectangle &with = coor[j]; - - with.x1 = 45 * res; - with.x2 = (tmax * 3 + 55) * res; - with.y1 = 27 + j * 8; - with.y2 = 34 + j * 8; - with.etat = true; - } - while ((int)chaines[j].size() < tmax) { - chaines[j] = chaines[j] + ' '; - } - } - coor[j + 1].etat = false; - if (res == 1) rep = 10; - else rep = 6; - g_vm->_screenSurface.drawBox(80, 33, 40 + tmax * rep, (der - prem) * 8 + 16, 15); - rep = 0; - j = 0; - memk = 0; - do { - g_vm->setMouseClick(false); - tesok = false; - mov_mouse(func, key); - CHECK_QUIT0; - - k = 1; - while (coor[k].etat && ! dans_rect(coor[k])) k = k + 1; - if (coor[k].etat) { - if ((memk != 0) && (memk != k)) { - for (j = 1; j <= tmax; j ++) st[j] = chaines[memk][j]; - st[1 + tmax] = '$'; - afftex(st, 100, 27 + memk * 8, 100, 1, 0); - } - if (memk != k) { - for (j = 1; j <= tmax; j ++) st[j] = chaines[k][j]; - st[1 + tmax] = '$'; - afftex(st, 100, 27 + k * 8, 100, 1, 1); - memk = k; - } - } else if (memk != 0) { - for (j = 1; j <= tmax; j ++) st[j] = chaines[memk][j]; - st[1 + tmax] = '$'; - afftex(st, 100, 27 + memk * 8, 100, 1, 0); - memk = 0; - } - } while (!((memk != 0) && g_vm->getMouseClick())); - if (memk == ok[i]) compte = compte + 1; - else { - if (i == 5) i = i + 1; - if ((i == 7) || (i == 8)) i = 10; - } - if (i == 10) q = /*testprot*/ true; - } while (!(i == 10)); - ques_result = (compte == 10) && q; - return ques_result; -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/ques.h b/engines/mortevielle/ques.h deleted file mode 100644 index 7260bfa6a2..0000000000 --- a/engines/mortevielle/ques.h +++ /dev/null @@ -1,38 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_QUES_H -#define MORTEVIELLE_QUES_H - -#include "common/str.h" - -namespace Mortevielle { - -extern bool ques(); - -} // End of namespace Mortevielle -#endif diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 4f37c2839b..0b3946af0b 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -27,7 +27,7 @@ #include "common/file.h" #include "common/system.h" -#include "mortevielle/alert.h" +#include "mortevielle/dialogs.h" #include "mortevielle/mor.h" #include "mortevielle/mor2.h" #include "mortevielle/mortevielle.h" -- cgit v1.2.3 From 94d881b141bc239f67490f542a1414654f54461c Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Wed, 15 Feb 2012 22:28:07 +1100 Subject: MORTEVIELLE: Fix the 'You Are Alone' to be properly justified with English text --- engines/mortevielle/mor.cpp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index eb900d1515..de784471f8 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -246,10 +246,8 @@ void clsf10() { st = g_vm->getString(S_LOURDE); else if (s.conf > 65) st = g_vm->getString(S_MALSAINE); - if (res == 1) - co = 10; - else co = 6; - co = 574 - ((uint)co * st.size() >> 1); + + co = 580 - (g_vm->_screenSurface.getStringWidth(st) / 2); g_vm->_screenSurface.putxy(co, 92); g_vm->_screenSurface.writeg(st, 4); if (res == 1) co = 620; @@ -563,13 +561,18 @@ void person() { for (int cf = 1; cf <= 8; cf ++) g_vm->_menu.disableMenuItem(g_vm->_menu._disc[cf]); + Common::String sYou = g_vm->getString(S_YOU); + Common::String sAre = g_vm->getString(S_ARE); + Common::String sAlone = g_vm->getString(S_ALONE); + clsf10(); - g_vm->_screenSurface.putxy(560, 30); - g_vm->_screenSurface.writeg(g_vm->getString(S_YOU), 4); - g_vm->_screenSurface.putxy(560, 50); - g_vm->_screenSurface.writeg(g_vm->getString(S_ARE), 4); - g_vm->_screenSurface.putxy(560, 70); - g_vm->_screenSurface.writeg(g_vm->getString(S_ALONE), 4); + g_vm->_screenSurface.putxy(580 - (g_vm->_screenSurface.getStringWidth(sYou) / 2), 30); + g_vm->_screenSurface.writeg(sYou, 4); + g_vm->_screenSurface.putxy(580 - (g_vm->_screenSurface.getStringWidth(sAre) / 2), 50); + g_vm->_screenSurface.writeg(sAre, 4); + g_vm->_screenSurface.putxy(580 - (g_vm->_screenSurface.getStringWidth(sAlone) / 2), 70); + g_vm->_screenSurface.writeg(sAlone, 4); + ipers = 0; } -- cgit v1.2.3 From 3529fec5a9ceda657faffa1c9e403aff841388ba Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 18 Feb 2012 13:55:07 +0100 Subject: TOOLS: Add header files to create_mortdat, remove second parameter --- devtools/create_mortdat/create_mortdat.cpp | 197 ++--------------------------- devtools/create_mortdat/create_mortdat.h | 90 +++++++++++++ devtools/create_mortdat/enginetext.h | 136 ++++++++++++++++++++ 3 files changed, 236 insertions(+), 187 deletions(-) create mode 100644 devtools/create_mortdat/create_mortdat.h create mode 100644 devtools/create_mortdat/enginetext.h diff --git a/devtools/create_mortdat/create_mortdat.cpp b/devtools/create_mortdat/create_mortdat.cpp index aff67dc949..2f1539822d 100644 --- a/devtools/create_mortdat/create_mortdat.cpp +++ b/devtools/create_mortdat/create_mortdat.cpp @@ -38,74 +38,11 @@ #include #include "common/endian.h" - -enum AccessMode { - kFileReadMode = 1, - kFileWriteMode = 2 -}; - -class File { -private: - FILE *f; -public: - bool open(const char *filename, AccessMode mode = kFileReadMode) { - f = fopen(filename, (mode == kFileReadMode) ? "rb" : "wb"); - return (f != NULL); - } - void close() { - fclose(f); - f = NULL; - } - int seek(int32 offset, int whence = SEEK_SET) { - return fseek(f, offset, whence); - } - long read(void *buffer, int len) { - return fread(buffer, 1, len, f); - } - void write(const void *buffer, int len) { - fwrite(buffer, 1, len, f); - } - byte readByte() { - byte v; - read(&v, sizeof(byte)); - return v; - } - uint16 readWord() { - uint16 v; - read(&v, sizeof(uint16)); - return FROM_LE_16(v); - } - uint32 readLong() { - uint32 v; - read(&v, sizeof(uint32)); - return FROM_LE_32(v); - } - void writeByte(byte v) { - write(&v, sizeof(byte)); - } - void writeWord(uint16 v) { - uint16 vTemp = TO_LE_16(v); - write(&vTemp, sizeof(uint16)); - } - void writeLong(uint32 v) { - uint32 vTemp = TO_LE_32(v); - write(&vTemp, sizeof(uint32)); - } - void writeString(const char *s) { - write(s, strlen(s) + 1); - } - uint32 pos() { - return ftell(f); - } -}; - -File outputFile, mortCom; +#include "create_mortdat.h" +#include "enginetext.h" /*-------------------------------------------------------------------------*/ -#define VERSION_MAJOR 1 -#define VERSION_MINOR 0 - void openOutputFile(const char *outFilename) { outputFile.open(outFilename, kFileWriteMode); @@ -171,143 +108,29 @@ void writeStaticStrings(const char **strings, int languageId) { } /** - * Write out the French strings previously hard-coded into the application - */ -void writeEnglishStaticStrings() { - const char *string_list[] = { - "[2][ ][YES][NO]", - "Go to", - "Someone enters, looks surised, but says nothing", - "Cool", - " Lourde ", - "Malsaine", - "Idem", - "You", - "are", - "Alone", - - "Gosh! You hear some noise...", - " | You should have noticed, | ", - "% of hints...", - "Do you want to wake up?", - "OK", - "", - " Save", - - " Load", - " Restart ", - "F3: Repeat", - "F8: Proceed", - "Hide self", - "take", - " probe ", - " raise ", - " -SUITE- ", - " -STOP- ", - "[1] [So, use the DEP menu] [Ok]", - "lift", - "read", - - "look", - "search", - "open", - "put", - "turn", - "tie", - "close", - "hit", - "pose", - "smash", - - "smell", - "scratch", - "probe", - "[1] [ | Before, use the DEP menu...] [Ok]", - "& day", - NULL - }; - - writeStaticStrings(string_list, 1); -} - -/** - * Write out the French strings previously hard-coded into the application + * Write out the strings previously hard-coded into the engine */ -void writeFrenchStaticStrings() { - const char *string_list[] = { - "[2][ ][OUI][NON]", - "aller", - "quelqu'un entre, parait ‚tonn‚ mais ne dit rien", - "Cool", - " Lourde ", - "Malsaine", - "Idem", - "Vous", - "tes", - "SEUL", - - "Mince! Vous entendez du bruit...", - " | Vous devriez avoir remarqu‚| ", - "% des indices...", - "D‚sirez-vous vous r‚veiller?", - "OK", - "", - " Sauvegarde", - - " Chargement", - " Recommence ", - "F3: Encore", - "F8: Suite", - "se cacher", - - "prendre", - " sonder ", - "soulever", - " -SUITE- ", - " -STOP- ", - "[1][Alors, utilisez le menu DEP...][ok]", - "soulever", - "lire", - - "regarder", - "fouiller", - "ouvrir", - "mettre", - "tourner", - "attacher", - "fermer", - "frapper", - "poser", - "d‚foncer", - - "sentir", - "gratter", - "sonder", - "[1][ | Avant, utilisez le menu DEP...][ok]", - "& jour", - NULL - }; - - writeStaticStrings(string_list, 0); +void writeEngineStrings() { + writeStaticStrings(engineDataEn, 1); + writeStaticStrings(engineDataFr, 0); } void process() { writeFontBlock(); - writeEnglishStaticStrings(); - writeFrenchStaticStrings(); + writeEngineStrings(); } /** * Main method */ int main(int argc, char *argv[]) { - if (argc != 3) { - printf("Format: input_filename output_filename\n", argv[0]); + if (argc != 2) { + printf("Usage:\n%s input_filename\nWhere input_filename is the name of the Mortevielle DOS executable", argv[0]); exit(0); } mortCom.open(argv[1], kFileReadMode); - openOutputFile(argv[2]); + openOutputFile("mort.dat"); process(); diff --git a/devtools/create_mortdat/create_mortdat.h b/devtools/create_mortdat/create_mortdat.h new file mode 100644 index 0000000000..c46ad8aa26 --- /dev/null +++ b/devtools/create_mortdat/create_mortdat.h @@ -0,0 +1,90 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + * This is a utility for extracting needed resource data from different language + * version of the Mortevielle executable files into a new file mort.dat - this + * is required for the ScummVM Mortevielle module to work properly + */ + +#define VERSION_MAJOR 1 +#define VERSION_MINOR 0 + +enum AccessMode { + kFileReadMode = 1, + kFileWriteMode = 2 +}; + +class File { +private: + FILE *f; +public: + bool open(const char *filename, AccessMode mode = kFileReadMode) { + f = fopen(filename, (mode == kFileReadMode) ? "rb" : "wb"); + return (f != NULL); + } + void close() { + fclose(f); + f = NULL; + } + int seek(int32 offset, int whence = SEEK_SET) { + return fseek(f, offset, whence); + } + long read(void *buffer, int len) { + return fread(buffer, 1, len, f); + } + void write(const void *buffer, int len) { + fwrite(buffer, 1, len, f); + } + byte readByte() { + byte v; + read(&v, sizeof(byte)); + return v; + } + uint16 readWord() { + uint16 v; + read(&v, sizeof(uint16)); + return FROM_LE_16(v); + } + uint32 readLong() { + uint32 v; + read(&v, sizeof(uint32)); + return FROM_LE_32(v); + } + void writeByte(byte v) { + write(&v, sizeof(byte)); + } + void writeWord(uint16 v) { + uint16 vTemp = TO_LE_16(v); + write(&vTemp, sizeof(uint16)); + } + void writeLong(uint32 v) { + uint32 vTemp = TO_LE_32(v); + write(&vTemp, sizeof(uint32)); + } + void writeString(const char *s) { + write(s, strlen(s) + 1); + } + uint32 pos() { + return ftell(f); + } +}; + +File outputFile, mortCom; + diff --git a/devtools/create_mortdat/enginetext.h b/devtools/create_mortdat/enginetext.h new file mode 100644 index 0000000000..fb4d12d966 --- /dev/null +++ b/devtools/create_mortdat/enginetext.h @@ -0,0 +1,136 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + * This is a utility for extracting needed resource data from different language + * version of the Mortevielle executable files into a new file mort.dat - this + * is required for the ScummVM Mortevielle module to work properly + */ + +#ifndef ENGINEDATA_H +#define ENGINEDATA_H + +const char *engineDataEn[] = { + "[2][ ][YES][NO]", + "Go to", + "Someone enters, looks surised, but says nothing", + "Cool", + " Lourde ", + "Malsaine", + "Idem", + "You", + "are", + "Alone", + + "Gosh! You hear some noise...", + " | You should have noticed, | ", + "% of hints...", + "Do you want to wake up?", + "OK", + "", + " Save", + + " Load", + " Restart ", + "F3: Repeat", + "F8: Proceed", + "Hide self", + "take", + " probe ", + " raise ", + " -SUITE- ", + " -STOP- ", + "[1] [So, use the DEP menu] [Ok]", + "lift", + "read", + + "look", + "search", + "open", + "put", + "turn", + "tie", + "close", + "hit", + "pose", + "smash", + + "smell", + "scratch", + "probe", + "[1] [ | Before, use the DEP menu...] [Ok]", + "& day", + NULL +}; + +const char *engineDataFr[] = { + "[2][ ][OUI][NON]", + "aller", + "quelqu'un entre, parait ‚tonn‚ mais ne dit rien", + "Cool", + " Lourde ", + "Malsaine", + "Idem", + "Vous", + "tes", + "SEUL", + + "Mince! Vous entendez du bruit...", + " | Vous devriez avoir remarqu‚| ", + "% des indices...", + "D‚sirez-vous vous r‚veiller?", + "OK", + "", + " Sauvegarde", + + " Chargement", + " Recommence ", + "F3: Encore", + "F8: Suite", + "se cacher", + + "prendre", + " sonder ", + "soulever", + " -SUITE- ", + " -STOP- ", + "[1][Alors, utilisez le menu DEP...][ok]", + "soulever", + "lire", + + "regarder", + "fouiller", + "ouvrir", + "mettre", + "tourner", + "attacher", + "fermer", + "frapper", + "poser", + "d‚foncer", + + "sentir", + "gratter", + "sonder", + "[1][ | Avant, utilisez le menu DEP...][ok]", + "& jour", + NULL +}; + +#endif -- cgit v1.2.3 From 13692fc18fa85fd05c47b58d55e1a38f05c000ce Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 18 Feb 2012 18:02:25 +0100 Subject: TOOL: Use a define for output name --- devtools/create_mortdat/create_mortdat.cpp | 2 +- devtools/create_mortdat/create_mortdat.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/devtools/create_mortdat/create_mortdat.cpp b/devtools/create_mortdat/create_mortdat.cpp index 2f1539822d..eb476c187a 100644 --- a/devtools/create_mortdat/create_mortdat.cpp +++ b/devtools/create_mortdat/create_mortdat.cpp @@ -130,7 +130,7 @@ int main(int argc, char *argv[]) { } mortCom.open(argv[1], kFileReadMode); - openOutputFile("mort.dat"); + openOutputFile(MORT_DAT); process(); diff --git a/devtools/create_mortdat/create_mortdat.h b/devtools/create_mortdat/create_mortdat.h index c46ad8aa26..d9c7561d93 100644 --- a/devtools/create_mortdat/create_mortdat.h +++ b/devtools/create_mortdat/create_mortdat.h @@ -31,6 +31,8 @@ enum AccessMode { kFileWriteMode = 2 }; +#define MORT_DAT "mort.dat" + class File { private: FILE *f; -- cgit v1.2.3 From 45fb3b9153af98216a2fa9add347a3446d7bf1b3 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 18 Feb 2012 19:32:59 +0100 Subject: TOOLS: Add ingame text. This will allow us to get an English version, and will help when we'll try to support Atari/Amiga version using hardcoded ingame texts --- devtools/create_mortdat/create_mortdat.cpp | 10 + devtools/create_mortdat/gametext.h | 1206 ++++++++++++++++++++++++++++ 2 files changed, 1216 insertions(+) create mode 100644 devtools/create_mortdat/gametext.h diff --git a/devtools/create_mortdat/create_mortdat.cpp b/devtools/create_mortdat/create_mortdat.cpp index eb476c187a..de4bb415d4 100644 --- a/devtools/create_mortdat/create_mortdat.cpp +++ b/devtools/create_mortdat/create_mortdat.cpp @@ -40,6 +40,7 @@ #include "common/endian.h" #include "create_mortdat.h" #include "enginetext.h" +#include "gametext.h" /*-------------------------------------------------------------------------*/ @@ -115,9 +116,18 @@ void writeEngineStrings() { writeStaticStrings(engineDataFr, 0); } +/** + * Write out the strings used in the game + */ +void writeGameStrings() { + writeStaticStrings(gameDataEn, 1); + writeStaticStrings(gameDataFr, 0); +} + void process() { writeFontBlock(); writeEngineStrings(); + writeGameStrings(); } /** diff --git a/devtools/create_mortdat/gametext.h b/devtools/create_mortdat/gametext.h new file mode 100644 index 0000000000..6905fdf7c6 --- /dev/null +++ b/devtools/create_mortdat/gametext.h @@ -0,0 +1,1206 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + * This is a utility for extracting needed resource data from different language + * version of the Mortevielle executable files into a new file mort.dat - this + * is required for the ScummVM Mortevielle module to work properly + */ + +#ifndef GAMEDATA_H +#define GAMEDATA_H + +const char *gameDataEn[] = { + "Calm within the storm$", + "Discussed in colours$", + "Your mauve!$", + "Be kind enough to leave the room...$", + "If you're NOT overdrawn...$", + "If you're feeling blue...$", + "Read what's on the walls?$", + "Water sports$", + "Room for envy?$", + "A glance at the forbidden$", + "Smell of a woodfire and tobacco$", + "Tobacco and old books$", + "Onions, cinnamon and spirits$", + "A place seldom visited$", + "Humidity and decay$", + "Sorry, no ""door to door""$", + "Rotting corpse: deady cryptomania$", + "And what's more, there are disused traps$", + "It's already open$", + "Danger: avalanches$", + "Proper Charlie's place?$", + "An imposing building$", + "The other side of the mystery$", + "Strange horoscope$", + "Look out... but she wishes well?$", + "An oak door$", + "A photograph$", + "The coat of arms$", + "$", + "Max, the servant, welcomes you and shows you to your room$", + "Mortville 6/2/51@ My dear Jerome@Regarding my telegram, I must tell you the reason for my wor-@ries. A year ago, Murielle, my lady companion, disappeared. The de@part may have had something to do@with the financial success of themanor, or... A silence hard to un@derstand for my son Guy. Not ha@ving been able to see the light of day over this affair, I count @on you to sort things out. If my state of health doesn't improve, @take the decisions that you feel @are apropriate.@ Kind regards, Julia DEFRANCK$", + "Later, Guy will inform you of Leo's suicide after a@heavy bet at the races$", + "F3: AGAIN F8: STOP$", + "The master of the premises$", + "The future heir$", + "JULIA's son$", + "A pretty picture$", + "Superman!$", + "Ida's husband$", + "Interesting remarks?$", + "Service included!$", + "Nothing underneath$", + "You could hear a pin drop$", + "Half an hour passes: nothing! Wait any longer?$", + "Admire! Contemplate!$", + "No! Nothing!$", + "Impossible$", + "That stains!$", + "A treatise on the history of the area$", + "A few coins...$", + "First commandment...$", + "Pleasing to the nostrils!$", + "Spades, Hearts...$", + "Just a spoonful of sugar...$", + "A romantic novel$", + "Worth more than a penny, (whistle)$", + "Just needs a little patience$", + "Watch the sharp bends$", + "Deep and dark$", + "Normal sensations$", + "Sniff!$", + "Not discreet! Be content to watch!$", + "Bless you! Dusty!$", + "The canvas is signed, the wallpaper is not!$", + "Nothing, Unlucky!$", + "Be more discreet!$", + "The shutters are closed$", + "Snow! And more snow!$", + "Brilliant! The work of a master!$", + "No doubt at all! A genuine fake!$", + "Hmm! A cheap reproduction!$", + "A rare and valuable piece$", + "Nothing special$", + "Linen, personal belongings...$", + "Not just anywhere!$", + "It's not time!$", + "One doesn't speak with ones mouth full!$", + "Someone comes in, messes about then goes out again$", + "Someone's approaching your hiding-place$", + "Someone surprises you!$", + "Impossible! You're too loaded!$", + "Try again!$", + "Still puzzled!?$", + "You leave Mortville.In Paris a message awaits you...$", + "You hurt yourself$", + "Nothing more here$", + "The sound seems normal$", + "It doesn't move$", + "You are answered$", + "Not the right moment!$", + "The same matter, from another angle!$", + "The reflection is tarnished, but the frame is gold!$", + "Bric-a-brac$", + "Face to face with failure!$", + "Smells like something you'd rather not see!$", + "Cleaning products$", + "Got an itch?$", + "It's stuck, frozen. Brrr!$", + "All the locks are jammed!$", + "Papers$", + "No! Father christmas hasn't got himself stuck!$", + "It leads onto a corridor$", + "China, silverware...$", + "No! It's not Julia's remains!$", + "An old engraving$", + "You find a deep diamond-shaped opening$", + "The wall slides open! A passage! Do you follow it?$", + "The passageway closes$", + "A secret drawer: a notebook! Do you read it?$", + "The drawer shuts$", + "Nothing! Flesh and blood stuck to the stone$", + "Certain details lead you to believe death was not immediate!$", + "A rotten affair!$", + "Did she cling to dear life with just one finger?$", + "Has the treasure packed its trunk?$", + "A slot the size of a coin$", + "Part of the stone wall pivots.A crypt! Do you enter?$", + "The ring turns, the wall closes$", + "A stone column behind the altar$", + "There is a noise!$", + "Occupied!$", + "Take another chance?$", + "Too deep!$", + "The cellar wall pivots$", + "Nothing$", + "The one and only!$", + "The object slides to the bottom$", + "You have nothing in hand$", + "It is not open$", + "There is already something$", + "The door is locked$", + "No reply$", + "A solid wooden ball$", + "There's no more space$", + "A wooden ball pierced through the side$", + "? ?$", + "Your move$", + "OK !$", + "Suddenly Max arrives with your suitcase: \"Thank you for your @visit!\".Mister discreet \"private eye\" (in need of a private optici@an!). Thoroughly demoralised, you@leave the manor. You are useless!$", + "Leo interrupts: \"The storm has died down,I am going into town in@1 hour. Get ready\". You have lost@time...but not your life$", + "Congestion, the deadly flu... You@are stuck here! Your whole case@sinks slowly beneath the water$", + "The water is rising fast,freezing your last illusions. Before you@have time to react...you are dead$", + "As soon as you reach the bottom of the well, a hand cuts the rope@Farewell sweet life!$", + "The storm covers your footprints.A wall of silence falls heavily@on your shoulders. Slowly you succumb to frosbite...$", + "You're not completely alone! A cold blade plunges into your backup@In future, be more care!$", + "You don't know what implication Leo may have had in Murielle's@death. Was she dead outright? In@any case,the family problems thatyou have uncovered in the course@of your enquiries would explain Leo's behaviour. You're not sure@that's the reason Julia had asked@for your help, but that's reason enough for you!Out of respect for@her, after taking certain precau-@tions you have a revealing talk with Leo.$", + "$", + "You don't have the keys to the manor. Your cries rest unheard@You're going to catch... your death!$", + "With a circular movement, the sword slices across you. Guts and@intestines spill out all over. A sorry state of affairs!$", + "Home, Sweet home !$", + "The mystery behind a closed door$", + "Bewitching charm of these old rooms$", + "An empty stomach$", + "Closer to heaven? Not so sure$", + "Afraid of the dark?$", + "Old rugs and a glint of gold$", + "Anguish!$", + "Safe? Perhaps not!$", + "A little ill at ease, eh!?$", + "Always further$", + "Your way of the cross!$", + "On the trail of...$", + "Watch what's hiding$", + "The road down to hell$", + "Feeling well? You look a little pale$", + "What lurks behind...?$", + "Close-up on:$", + "You notice, amongst other things$", + "And...$", + "That's all!$", + "A bit of reading$", + "The adventure awaits, you set off!$", + "Don't mess up YOUR next ADVENTURE!$", + "I don't understand$", + "There is an easier way$", + "No, not just now$", + "Too late$", + "$", + "Like a deep stony stare, a solitary eye that points towards the@stars; the artery that links hea-ven and hell. You must fathom@these depths keeping hold of that@which is, and will become. Monday, Tuesday, Wednesday, Sunday, from@Monday 1st to Sunday 1st,plunging from one day to the next your@\"IS\" or \"WILL BECOME\". Carrying your burden with love and light,@the smallest oversight will seal your fate.$", + "10/1/51: We think we've solved the mystery of the manuscript and@located the crypt. Is it the idea@of success in what seems like a dream that disturbs me so? I feel@I have committed myself rather too much, as far as Leo is concer@ned... No! I should go on. @I should have put Guy in the pic-ture but for a week now, I've had@no news of him$", + "Take your prayers as you would to the holy place. From the pillar@of wisdom, bring the sun to his@knees. Thus will it show you the place to offer alms of another@kind and like young Arthur, open the way of darkness.White is your@colour, golden your hearth. So@advance with caution Orpheus and light your way unto the sad@virgin. Offer her the circle of the man with three faces. That he@may regain the world and turn with it to its original@inglory!$", + "The mountains are the fangs in a monstrous mouth opening on the@finity of a celestial orgy, grin-ding the stars as we grind our@teeth into dust. You will drop your chord of stone at your feet.@The laugh of silence at the@highest pitch, and in your right hand, the measure of genius. Thus@will you pass between the two crescents beyond the abyss of the@wall of silence. The key to the melody is within your grasp. It@suffices to find the note that clashes.$", + " 9/12 INTER. 518 3/13 EXPENS. 23@ 9/12 SALES 1203 7/12 CHEQUE 1598@ TOTAL 1721 TOTAL 1721$", + " 5/1/51@@ Luc, my love@ Guy knows about us. After an argument I told him everything! I@think only of you. Max keeps pes-tering me, but it's finished with @him. He should stick to his pots and pans! When can you and I be alone together? For you I would@get a divorce.@I love you.@ Eva$", + " Mortville, 10/2/51@@ Pat@ I recall you owe me 50000 frs that I lent you for your business@I need that money, can you repay me quickly?@ Guy$", + " Mortville, 15/2/51@ Dear Sir@ I am writing to you on the sub-ject of our business deal. I have@decided to go all the way in the certainty that my partner, Pat@DEFRANCK, has been forging the accounts. @In spite of$", + "A pipe$", + "A pen$", + "A lighter$", + "A retort$", + "A shaving brush$", + "A tin of paint$", + "A flute$", + "An expensive ring$", + "A reel of thread$", + "An old book$", + "A wallet$", + "A dagger$", + "A pistol$", + "A bible$", + "A candle$", + "A jewellery box$", + "An iron$", + "A photo$", + "A pocket watch$", + "A rope$", + "Keys$", + "A pearl necklace$", + "A bottle of perfume$", + "Binoculars$", + "Glasses$", + "A leather purse$", + "A tennis ball$", + "Ammunition$", + "A cut-throat razor$", + "A hairbrush$", + "A clothes brush$", + "A pack of cards$", + "A shoe horn$", + "A screwdriver$", + "A hammer$", + "Keys$", + "Keys$", + "An ashtray$", + "A paintbrush$", + "A rope$", + "A wooden object$", + "Sleeping pills$", + "A gold ring$", + "A jewellery box$", + "An alarm clock$", + "A coat of armour$", + "A candlestick$", + "A pair of gloves$", + "A engraved goblet$", + "A parchment$", + "A dagger$", + "A dossier$", + "A parchment$", + "A parchment$", + "A dossier$", + "A dossier$", + "A letter$", + "A novel$", + "A wooden rod$", + "An envelope$", + "A letter$", + "An envelope$", + "Julia$", + "Julia's death$", + "Julia's relationships$", + "A message from Julia$", + "Julia's inheritance$", + "Julia's final actions$", + "Julia's gifts$", + "Julia's bedroom$", + "The photo at Julia's home$", + "Julia and yourself...$", + "L‚o's occupations$", + "Pat's occupations$", + "Guy's occupations$", + "Bob's occupations$", + "Eva's occupations$", + "Luc's occupations$", + "Ida's occupations$", + "Max's occupations$", + "Your occupations$", + "L‚o's relationships$", + "Pat's relationships$", + "Guy's relationships$", + "Bob's relationships$", + "Eva's relationships$", + "Luc's relationships$", + "Ida's relationships$", + "Max's relationships$", + "Your relationships$", + "Murielle$", + "Murielle's relationships$", + "Murielle and yourself...$", + "Murielle's disappearance$", + "The wall of silence$", + "The manuscripts$", + "The coat of arms$", + "Engravings in the cellar$", + "The well$", + "The secret passages$", + "The chapel$", + "The paintings$", + "The photo of the attic$", + "The body in the crypt$", + "$", + "$", + "END OF THE CONVERSATION$", + "TBT - Les vieux appelaient ainsi la chaine de montagne qui se dresse au pied du manoir !$", + "TBT - C'est le massif montagneux que l'on aper‡oit devant le manoir$", + "TBT - Je n'en sais rien !$", + "TBT - Elle est morte d'une embolie pulmonaire$", + "TBT - Ma m‚re est morte soudainement . Son ‚tat semblait pourtant s'tre am‚lior‚$", + "TBT - Madame DEFRANCK est morte d'un coup de froid$", + "TBT - Elle est morte d'une embolie pulmonaire$", + "TBT - Pardonnez moi mais je pr‚fŠre, actuellement garder le silence$", + "TBT - Ce sont toujours les meilleurs qui partent les premiers$", + "TBT - J'aimais beaucoup ma mŠre . Je regrette seulement qu'elle soit morte dans le manoir des DEFRANCK$", + "TBT - C'est une r‚gion qui a un pass‚ charg‚ et j'ai largement de quoi m'occuper . Et puis j'aime beaucoup les chevaux..$", + "TBT - C'est un passionn‚ d'histoire et un joueur inv‚t‚r‚ . D'ailleurs, voici un an il a gagn‚ une grosse somme$", + "TBT - Il a d‚j… beaucoup a faire avec la gestion et l'entretien du manoir ...$", + "TBT - Je suis PDG d'une petite soci‚t‚ de parfums . Mais quand je suis ici, je me repose$", + "TBT - C'est un homme dynamique qui a r‚ussi dans le parfum$", + "TBT - Lui ! C'est un arriviste v‚reux ! Les parfums ont du endormir son bon sens . D'ailleurs ici il passe ses soir‚es dans sa chambre$", + "TBT - J'ai ‚t‚ trŠs pr‚occup‚ par la sant‚ de ma mŠre, et maintenant je n'ai plus go–t … rien$", + "TBT - Il aurait mieux fait de s'occuper un peu plus de moi et un peu moins de sa mŠre$", + "TBT - Ce sont ses affaires ...$", + "TBT - Il n'a pas trop de chance en ce moment bien que ses affaires soient satisfaisantes$", + "TBT - Je travaille avec Pat mais ‡a ne va pas trŠs fort en ce moment$", + "TBT - Ah oui ?! Il a des occupations ? Il ferait bien de s'en occuper s‚rieusement alors$", + "TBT - Lui et Pat sont associ‚s . Je crois que ‡a ne va pas trop mal$", + "TBT - Je m'occupe de moi et c'est d‚j… beaucoup . Et vous ?$", + "TBT - Oh ‡a ! Je lui fais confiance . Elle sait s'occuper$", + "TBT - Mais ! Vous n'avez pas encore d‚couvert son occupation principale ..?$", + "TBT - Elle fait dans la d‚coration avec beaucoup dego–t d'ailleurs . Elle est toujours trŠs bien habill‚e$", + "TBT - Si les bijoux vous interessent, j'ai quelques affaires interessantes … saisir rapidement$", + "TBT - Les bijoux ...$", + "TBT - Je ne sais pas, mais j'aimerais bien qu'il s'occupe un peu moins de mes affaires !$", + "TBT - Quand on est une femme d'int‚rieur on trouve toujours de quoi s'occuper...$", + "TBT - Elle pourrait rester sans rien faire, mais non ! Elle coud, elle lit ...$", + "TBT - Elle n'a s–rement pas des occupations trŠs ‚panouissantes ...$", + "TBT - Une femme comme il n'y en a plus : Elle s'interesse a tout !$", + "TBT - Entre la cuisine et le m‚nage, je n'ai pas beaucoup de temps … vous accorder$", + "TBT - Je ne sais pas comment il s'y prend pour tout faire . C'est merveilleux !$", + "TBT - Il en ferait plus si il s'occupait moins des rag“ts et de la bouteille$", + "TBT - Je suis trŠs ind‚pendant . Tant qu'on ne s'occupe pas de mes affaires : Pas de problŠme$", + "TBT - C'est un ‚go‹ste . Je me demande si il aime autre chose que ses chevaux et ses grimoires$", + "TBT - Je crois qu'il s'entend bien avec tout le monde, mis … part, peut tre, avec Guy$", + "TBT - C'est un homme de caractŠre . Il faut savoir le prendre ..$", + "TBT - Les affaires sont les affaires . Quant … la famille, je la laisse pour ce qu'elle est ...$", + "TBT - Relations ? Relations amicales ? Relations financiŠres sans doute$", + "TBT - Moi je n'ai rien … lui reprocher$", + "TBT - C'est un homme d'affaire d‚brouillard . Il nage parfois … contre-courant mais ... il s'en sortira toujours$", + "TBT - Ils m'ennuient tous .. Non ! Ce n'est mme pas ‡a .. Quoique .. certains ..$", + "TBT - A l'inverse de sa mŠre, c'est une personne trŠs renferm‚e ! Alors question relations ..$", + "TBT - Il doit sans doute faire beaucoup d'effort pour rester agr‚able malgr‚ tous ses ennuis$", + "TBT - Ses relations amoureuses : C'est termin‚ . Ses relations avec moi : Pas vraiment commenc‚es . Quant aux autres : Je ne suis pas les \"autres\"$", + "TBT - J'aime bien tout le monde, tant qu'on ne m'escroque pas$", + "TBT - Il ne suffit pas d'avoir un peu d'argent et d'tre beau parleur pour plaire … tout le monde$", + "TBT - Sans histoire .. C'est quelqu'un d'agr‚able et g‚n‚reux . De plus, il ne manque pas d'humour$", + "TBT - Actuellement je m'entends plut“t bien avec tout le monde . Mais, ici, je ne vais pas m'‚tendre sur le sujet$", + "TBT - Beau plumage, mais ‡a ne vole pas haut ... Parlez en … son mari$", + "TBT - C'est pour un rendez-vous ?$", + "TBT - Elle est trŠs vivante ! Elle ne s'embarrasse pas de pr‚jug‚s stupides$", + "TBT - Dans mon m‚tier, on c“toit surtout des belles femmes et des truands$", + "TBT - La seule valeur s–re chez lui, c'est ses bijoux .. Et sa femme, mais ‡a il ne s'en rend pas compte$", + "TBT - C'est quelqu'un d'interessant . De pas toujours facile … comprendre, mais qui m‚rite le d‚tour$", + "TBT - Je ne d‚teste personne, mais j'aime les choses et les gens quand ils sont … leur place$", + "TBT - C'est entre nous . Mais voyez : quand je parle avec elle, je me sens vite … l'‚troit !$", + "TBT - Pour ne pas s'entendre avec elle, faut y mettre de la mauvaise volont‚$", + "TBT - Vous savez dans mon m‚tier on entend tout mais on ne retient rien, et le service est bien fait$", + "TBT - C'est un hypocrite, un larbin ! Personnellement je ne lui fais pas confiance$", + "TBT - Je ne connait pas le fond de sa pens‚e mais c'est quelqu'un de toujours trŠs correct et impeccable$", + "TBT - C'‚tait une personne qui a v‚cu au manoir, il y a un an .. peut tre plus$", + "TBT - C'‚tait plus qu'une amie pour ma mŠre . En ces moments, j'aurais aim‚ qu'elle soit … mes cot‚s$", + "TBT - Murielle a ‚t‚ la dame de compagnie de Julia$", + "TBT - Elle aussi, faisait des recherches ...$", + "TBT - C'‚tait une femme trŠs cultiv‚e . Son brusque d‚part, il y a un an, m'a surpris et beaucoup chagrin‚$", + "TBT - Elle partageait avec L‚o sa passion de l'histoire et de la r‚gion$", + "TBT - Je crois que tout le monde l'aimait bien$", + "TBT - Elle s'entendait bien avec tout le monde . Elle aimait beaucoup son fils . Quant aux relations belle-mŠre, belle-fille ..$", + "TBT - A part L‚o, elle avait de trŠs bon rapport avec Max ...$", + "TBT - Bien que vos relations furent peu soutenues, J‚r“me, elle vous portait toujours dans son coeur ...$", + "TBT - A part sa famille, pas grand monde$", + "TBT - Ah oui ! Je crois qu'elle a beaucoup regrett‚ le d‚part de cette amie .. euh ! Marielle .. ou Mireille ...$", + "TBT - Non rien !$", + "TBT - Non ... Pas que le sache$", + "TBT - J'ai connu Julia en achetant le manoir . C'‚tait son seul bien . Mais toute ma fortune ‚tait la sienne ...$", + "TBT - Si ce n'est quelques objets personnels, je crois qu'elle n'avait plus rien … elle$", + "TBT - Je crois que toute sa fortune venait de L‚o . Alors, Pfuuut !$", + "TBT - A part la lettre pour vous que j'ai post‚, rien de bien important !$", + "TBT - J'ai ‚t‚ trŠs heureuse qu'elle m'offre sa bible reli‚e$", + "TBT - Ca a ‚t‚ rapide et elle n'a pas eu le temps de prendre des dispositions particuliŠres$", + "TBT - Son dernier pr‚sent m'a surpris$", + "TBT - Quel cadeau ?$", + "TBT - Un chandellier ...$", + "TBT - Oui, j'ai eu un cadeau . Ma femme a mme eu une bible$", + "TBT - Et bien oui ! Comme tout le monde, je crois$", + "TBT - Un poignard$", + "TBT - Je n'ai jamais ‚t‚ fouiller dans le grenier !$", + "TBT - Vous avez un don de double-vue ou un passe-partout$", + "TBT - Le portrait d'une jeune fille : C'est Murielle ...$", + "TBT - Vous savez, je la connaissais assez peu$", + "TBT - Elle ‚tait trŠs charmante, mais c'‚tait surtout la dame de compagnie de Julia$", + "TBT - C'est la seule femme vraiment interessante que j'ai rencontr‚$", + "TBT - Elle avait de grandes connaissances historiques, et la consulter ‚tait trŠs enrichissant$", + "TBT - Je me suis toujours demand‚ ce que certains pouvaient lui trouver !$", + "TBT - Si la chambre est ferm‚e, demandez … L‚o$", + "TBT - J'ai ferm‚ sa chambre aprŠs sa mort et j'aimerais qu'il en soit ainsi encore un certain temps$", + "TBT - Vous savez ce que c'est : Des relations familiales$", + "TBT - Durant toutes ces ann‚es, je ne l'ai jamais servie … contre-coeur$", + "TBT - Je l'aimais autant qu'elle m'aimais, je crois$", + "TBT - De quel droit avez-vous p‚n‚tr‚ dans la chambre de ma femme ?!!$", + "TBT - C'est sans doute la photo de Murielle avec le filleul de Julia$", + "TBT - Je ne me rappelle pas$", + "TBT - C'est Murielle . C'est moi qui l'ai prise. et d'ailleurs elle est tir‚e … l'envers$", + "TBT - Vous tes bien curieux !... C'est sans valeur$", + "TBT - Grimoires, parchemins et manuscrits : C'est le domaine de L‚o$", + "TBT - Dommage que la devise soit manquante ...$", + "TBT - C'est trŠs beau ... Et trŠs vieux ...$", + "TBT - Tiens ! C'est un endroit que je n'ai jamais visit‚$", + "TBT - D'apr‚s L‚o, il semblerait que les Lunes soient plus r‚centes$", + "TBT - Mme par ce temps, vous avez d‚nich‚ un soleil ...$", + "TBT - Profond et inqui‚tant : Le progrŠs a du bon$", + "TBT - Ca reste pour moi le plus grand des mystŠres$", + "TBT - Les derniers temps elle parlait d'un voyage . Et puis ...$", + "TBT - Il y a un peu plus d'un an, un soir, elle a d‚cid‚ de partir ...$", + "TBT - De toutes fa‡ons elle n'‚tait pas faite pour vivre ici$", + "TBT - Quoi ?! Quel corps ? Quel crypte ?$", + "TBT - Si il y en a, je ne les ai jamais trouv‚ ...$", + "TBT - Bien s–r ! ... Et des fant“mes aussi ...$", + "TBT - C'est la plus vielle de la r‚gion : Elle date du XI eme siŠcle$", + "TBT - Elle fut l‚gŠrement restaur‚e aprŠs la r‚volution$", + "TBT - Julia aimait beaucoup la peinture$", + "TBT - Ils ont diff‚rents styles, mais n'ont pas tous une trŠs grande valeur$", + "TBT - Que faites-vous l… ?$", + "TBT - Je suis s–r que vous cherchez quelque chose ici$", + "TBT - Je vous ‚coute$", + "TBT - Que d‚sirez-vous ?$", + "TBT - Oui ?$", + "TBT - Je suis … vous ...$", + "TBT - C'est pourquoi ?$", + "TBT - Allez-y$", + "TBT - C'est … quel sujet ?$", + "TBT - Max : … votre service, monsieur$", + "TBT - De toutes fa‡ons vous n'avez rien … faire ici ! Sortez !!$", + "TBT - Vous tes trop curieux !$", + "TBT - J‚r“me ! Il y a longtemps ... Quelle tristesse, Julia est morte . Sa famille est ici : Guy, son fils . Eva, sa brue . L‚o, son mari bien s–r . Son beau fils, Pat . Des cousins : Bob, Ida, Luc . La tempŠte redouble, il vous faut rester . Les repas sont … 12h et 19h et il y a un recueillement … la chapelle tous les jours … 10h$", + "TBT - En vous voyant j'ai compris que vous decouvririez la v‚rit‚ ... Car je savais pourquoi vous veniez : J'avais retrouv‚ le brouillon de la lettre de Julia . Mais je suis trŠs joueur, alors ... Elle n'avait pas voulu que votre tche soit trop facile, pour me prot‚ger, sans doute, mais elle n'a pu mourir avec cette incertitude sur la conscience . Avez vous d‚couvert que le mur du silence est le nom que les ma‡ons ont donn‚ au mur qui porte ce blason, lors de la construction du manoir ? .. Et ces cadeaux que Julia a laiss‚ avant de mourir ‚taient autant de faux indices qui ne servaient qu'… faire ressortir l'importance des parchemins ... Effectivement, il y a plus d'un an, je travailais avec Murielle au d‚cryptage de ces manuscrits que je venais de trouver . Ma femme a fait la relation entre notre travail et la disparition de Murielle mais elle n'a jamais eu de preuves . Si ce n'est cette bague qu'elle a retrouv‚ un jour dans mes affaires . Une nuit, nous nous sommes aventur‚s dans le passage secret que nous avions d‚couvert . Murielle est morte par accident dans la piŠce de la vierge . J'ai r‚cup‚r‚ la bague rapidement, trouv‚ le tr‚sor et me suis enfuis . Je ne pensais pas qu'elle vivait encore, et je n'ai rien dit car j'avais besoin d'argent . J'ai fait passer cette somme sur le compte des courses de chevaux ...Partez maintenant, puisque vous n'tes pas de la police . Laissez moi seul !$", + "TBT - F‚vrier 1951 ... Profession : detective priv‚ . Le froid figeait Paris et mes affaires lorsque ...$", + "TBT - Une lettre, un appel, des souvenirs d'une enfance encore proche . Que de jeux dans les piŠces d‚labr‚es du manoir de Mortevielle . Julia, une vieille femme a pr‚sent .$", + "to the bureau$", + "to the kitchen$", + "to the cellar$", + "to the landing$", + "outside$", + "to the dining room$", + "inside the manor$", + "front of the manor$", + "to the chapel$", + "to the weel$", + "north$", + "behind the manor$", + "south$", + "east$", + "west$", + "towards the manor$", + "further$", + "in the water$", + "out of the weel$", + "in the weel$", + "choice on screen$", + "In the MYSTERY series...$", + "MORTVILLE MANOR$", + "$", + "From an original idea of...$", + "Bernard GRELAUD and Bruno GOURIER$", + "$", + "Directed by: KYILKHOR CREATION and LANGLOIS$", + "$", + "With the cooperation of...$", + "B‚atrice et Jean_Luc LANGLOIS$", + "for the music and the voices,$", + "Bernard GRELAUD for the graphic conception,$", + "MARIA-DOLORES for the graphic direction,$", + "Bruno GOURIER for the technical direction,$", + "Mick ANDON for the translation. $", + "$", + "Publisher: KYILKHOR and B&JL LANGLOIS $", + "COPYRIGHT 1987: KYILKHOR and B&JL LANGLOIS$", + "$", + "YOUR MOVE$", + "attach$", + "wait$", + "force$", + "sleep$", + "listen$", + "enter$", + "close$", + "search$", + "knock$", + "scratch$", + "read$", + "eat$", + "place$", + "open$", + "take$", + "look$", + "smell$", + "sound$", + "leave$", + "lift$", + "turn$", + "hide yourself$", + "search$", + "read$", + "put$", + "look$", + "Leo$", + "Pat$", + "Guy$", + "Eva$", + "Bob$", + "Luc$", + "Ida$", + "Max$", + "JULIA...$", + "- Did she commit suicide?$", + "- Was she murdered?$", + "- Did she die by accident?$", + "- Did she die of natural causes?$", + "Where did the money come from@for the restoration of the manor?$", + "- Blackmail$", + "- Honest work$", + "- Inheritance$", + "- Races$", + "- Rents$", + "- Hold-up$", + "- Other$", + "What is Leo's hobby?$", + "- Historical research$", + "- Politics$", + "- Painting$", + "- Drugs$", + "- Occult sciences$", + "- Management of a sect$", + "Julia left several clues that are@represented in one place. Which?$", + "- Chapel$", + "- Outside$", + "- Cellar$", + "- Attic$", + "- Kitchen$", + "- Dining room$", + "- Julia's room$", + "- Leo's room$", + "- Pat's room$", + "- Bob's room$", + "- Max's room$", + "- Luc/Ida's room$", + "- Guy/Eva's room$", + "The main clue that leads you@to the underground door is:$", + "- A dagger$", + "- A ring$", + "- A book$", + "- A parchment$", + "- A letter$", + "- A pendulum$", + "How many parchments were there in the manor?$", + "- 0$", + "- 1$", + "- 2$", + "- 3$", + "- 4$", + "- 5$", + "How many persons are involved in@this story?@(Julia included, but not yourself)$", + "- 9$", + "- 10$", + "- 11$", + "What was the first name@of the unknown character?$", + "- Mireille$", + "- Françoise$", + "- Maguy$", + "- Emilie$", + "- Murielle$", + "- Sophie$", + "Wo did Murielle have an affair with?$", + "- Bob$", + "- Luc$", + "- Guy$", + "- Leo$", + "- Max$", + "Murielle shared an occupation@with one other person. Who?$", + "[1][You realize that certain elements of|this investigation remain a mystery for you.|Therefore, you decide first to learn|more before undertaking new risks..][ok]$", + "[3][ | insert disk 1 | in drive A ][ok]$", + "[1][ | Disk error | All stop... ][ok]$", + "[1][ | You should have noticed |00% of the clues ][ok]$", + "[3][ | insert disk 2 | in drive A ][ok]$", + "TBT - [1][|Avant d'aller plus loin, vous faites|un point sur l'‚tat de vos connaissances][ok]$", + "TBT - MASTER .$", + "TBT - rorL$", + NULL +}; + +const char *gameDataFr[] = { + "Le calme dans la tourmente$", + "Des go—ts et des couleurs!$", + "Mauve qui peut!$", + "PriŠre de laisser en sortant...$", + "Trou noir troublant$", + "Bleu... comme \"peur bleue\"!$", + "Chambre de \"Saigneur\"!$", + "Histoire d'eaux$", + "Vert nid$", + "Coup d'oeil sur l'interdit$", + "Odeur de feux de bois et de tabac$", + "Tabac et vieux bouquins$", + "Oignons, cannelle et spiritueux$", + "Un endroit bien peu visit‚$", + "Humidit‚ et moisissure$", + "Avis aux colporteurs...$", + "Corps putr‚fi‚ : cryptomanie mortelle!$", + "Et en plus... des piŠges d‚samorc‚s!$", + "C'est d‚j… ouvert$", + "Danger : avalanches$", + "Une odeur de saintet‚!$", + "Une btisse imposante$", + "L'envers du mystŠre!$", + "Dr“le d'horoscope!$", + "Tant va la cruche...$", + "Une porte en chŠne$", + "Une photo$", + "Les armoiries$", + "$", + "Max, le domestique, vous accueille puis vous conduit … votre chambre$", + "Mortevielle, le 16/2/51@ Mon cher J‚r“me,@ Suite … mon t‚l‚gramme, je vous fais part des raisons de mon inqui‚tude :il y a un an, Murielle, ma dame de compagnie, disparaissait . D‚part ayant rapport avec le renouveau financier du Manoir, ou... Silence difficile … comprendre, surtout pour mon fils Guy . N'ayant pu jusqu'… pr‚sent, faire le jour sur cette affaire, je compte sur vous pour la mener … bien . Si mon ‚tat de sant‚ ne s'am‚liorait pas, prenez les d‚cisions qui vous sembleront le plus appropri‚es...@ Amiti‚s. JULIA DEFRANCK$", + "Plus tard, Guy vous apprendra le suicide de L‚o... aprŠs un pari insens‚ aux courses!$", + "F3: encore@F8: suite$", + "Le maŚtre des lieux$", + "Le futur h‚ritier$", + "Le fils de JULIA$", + "Joli brin!!!$", + "Superman!$", + "Le mari d'Ida$", + "Propos int‚ressants?$", + "Service compris...$", + "Rien dessous!$", + "Un ange passe...$", + "Une 1/2 h passe: rien! Attendez-vous encore?$", + "Admirez! Contemplez!$", + "Non ! Rien !$", + "Impossible$", + "‡a tache !$", + "Un trait‚ sur l'histoire de la r‚gion$", + "Quelques piŠces$", + "Premier commandement...$", + "Des p‚tales plein les narines !$", + "Pique, Coeur...$", + "‡a ne manque pas de cachets !$", + "Un roman d'amour$", + "Souffler n'est pas jouer$", + "Pas une r‚ussite!$", + "Gare aux rebondissements !$", + "Sombre et profond...$", + "Sensations normales$", + "Sniff!$", + "Pas discret ! Contentez-vous de regarder !$", + "Atchoum! De la p... poussiŠre$", + "La toile est sign‚e... pas le papier peint !$", + "Pas de chance, rien !$", + "Soyez plus discret !$", + "Les volets sont clos$", + "De la neige, encore de la neige !$", + "G‚nial : une toile de maŚtre !$", + "Aucun doute : une v‚ritable imitation$", + "Hum ! Vous tiquez : de l'antique en toc !$", + "Une piŠce rare de valeur !$", + "Rien de remarquable$", + "Linge, objets personnels...$", + "Pas n'importe o— !$", + "Ce n'est pas l'heure !$", + "On ne parle pas la bouche pleine ! Donc, une fois le repas termin‚...$", + "Quelqu'un entre, s'affaire, ressort...$", + "On s'approche de votre cachette !$", + "On vous surprend !$", + "Non : vous tes trop charg‚ !$", + "Essayez de nouveau$", + "Vous restez perplexe !?$", + "Vous quittez le Manoir. A Paris, un message vous attend...$", + "A‹e, a‹e, a‹e !$", + "Rien de plus$", + "Le son paraŚt normal$", + "Ca ne bouge pas$", + "On vous r‚pond$", + "Pas le moment !$", + "Mme matiŠre, autre face !$", + "Le reflet est piqu‚, mais le cadre est d'or$", + "Bibelots, babioles...$", + "Vous essuyez un ‚chec !$", + "Il est des odeurs... qu'il vaut mieux ne pas voir !$", + "Des produits m‚nagers$", + "‡a vous d‚mange ?$", + "C'est coinc‚, gel‚ ! Brrrr...$", + "Les huisseries sont bloqu‚es !$", + "Des papiers...$", + "Non ! Le pŠre Nol n'est pas coinc‚ !$", + "‡a donne sur un couloir$", + "Vaisselle, argenterie...$", + "Non ! Ce ne sont pas les restes de Julia !$", + "Une gravure ancienne$", + "Il y a une profonde ouverture en losange$", + "Le mur coulisse... Un passage ! L'empruntez-vous ?$", + "Le passage se ferme$", + "Un tiroir secret... Un livret ! Le lisez-vous ?$", + "Le tiroir se referme$", + "Rien ! Sang et chairs collent … la pierre !$", + "Des d‚tails vous font supposer que... la mort ne fut pas imm‚diate !$", + "Des projets v‚reux ?$", + "Sa vie n'aurait-elle tenu qu'… un doigt ?$", + "Un tr‚sor se serait-il fait la malle ?$", + "Une fente de la taille d'une piŠce !$", + "Quelques pierres pivotent... Une crypte ! Y p‚n‚trez-vous ?$", + "La bague tourne, le mur se referme...$", + "Une colonne de pierres derriŠre l'autel$", + "Il y a du bruit...$", + "Occup‚ !$", + "Retentez-vous votre chance ?$", + "Trop profond !$", + "Le mur de la cave pivote$", + "Nothing !$", + "L'unique !$", + "L'objet glisse au fond...$", + "Vous n'avez rien en main$", + "Ce n'est pas ouvert$", + "Il y a d‚j… quelque chose$", + "La porte est ferm‚e$", + "Pas de r‚ponse$", + "Une boule de bois pleine$", + "Il n'y a plus de place$", + "Une boule de bois perc‚e par le travers$", + "? ?$", + "A vous de jouer$", + "OK !$", + "Soudain Max survient avec votre valise : \"Merci de votre visite ! D‚tective \"priv‚\"... de bon sens et de discr‚tion sans doute\" . D‚‡u d‚moralis‚, vous quittez le manoir@Vous Štes NUL !$", + "L‚o vous interrompt : \"la tempŠte est calm‚e. Je pars en ville dans 1 heure. Tenez-vous prt!\"... Bon... Vous avez perdu du temps... mais pas la vie$", + "Congestion, grippe fatale : vous y restez ! Votre enquŠte tombe … l'eau$", + "L'eau monte trŠs vite et refroidit vos derniŠres illusions... Avant que vous n'ayez eu le temps de r‚agir, vous Štes mort!$", + "A peine Štes-vous au fond du puits qu'une main tranche la corde... Adieu la vie!$", + "La tempŠte recouvre vos traces . Un mur de silence s'abat sur vos ‚paules . Lentement vous succombez … la morsure du froid !$", + "Pas si seul que ‡a ! Une lame glac‚e s'enfonce dans votre dos. A l'avenir, soyez plus prudent!$", + "Vous ignorez la responsabilit‚ exacte de L‚o dans la mort de Murielle... Est-elle morte sur le coup ? De toutes fa‡ons les problŠmes familiaux d‚couverts lors de votre enquŠte justifient l'attitude de L‚o... Vous n'Štes pas s—r que Julia vous ait appel‚ pour ‡a mais c'est suffisant pour vous ! Par respect pour elle, et aprŠs certaines pr‚cautions, vous avez une entrevue r‚v‚latrice avec L‚o$", + "$", + "Vous n'avez pas les clefs du Manoir . Vos appels restent sans r‚ponse . Vous allez attraper... la mort !$", + "D'un mouvement circulaire, l'‚p‚e vous fend par le travers : tripes et boyaux … l'air, bonjour les vers!$", + "Home, Sweet home !$", + "MystŠre d'une porte close$", + "Charme envo—tant de vieilles piŠces$", + "La faim au ventre$", + "Plus prŠs du ciel? Pas s—r !$", + "Peur du noir?$", + "Vieux tapis et reflets d'or$", + "Angoisse !$", + "Sauv‚ ? Pas certain !$", + "Mal … l'aise, hein !$", + "Toujours plus loin !$", + "Votre chemin de croix !$", + "A la d‚couverte de...$", + "Attention … ce que cache...$", + "Une descente aux Enfers !$", + "Si ce n'est pas dans vos cordes :@ ne soyez pas sot!$", + "Avant la mise en piŠce !$", + "Gros plan sur :$", + "Vous remarquez particuliŠrement...$", + "Et encore...$", + "C'est fini !$", + "Un peu de lecture$", + "L'aventure vous attend, vous partez...$", + "Ne ratez pas VOTRE prochaine AVENTURE...$", + "Je ne comprends pas$", + "Il y a plus simple$", + "Non ! Pas ce coup-ci$", + "Trop tard$", + "$", + "Comme un regard profond tout couvert de peaux-pierres, pointant son oeil obscur aux astres de lumiŠre, il est la gorge reliant le ciel et les enfers . Il faut aller au fond de cette artŠre comme un rat au coeur mme de la terre !@Lundi, Mardi, Mercredi, Dimanche du 1e lundi au 1e dimanche, tu installeras \"ce rat\" entre chacun des jours . N'omets rien car ta venue serait ta retenue !@Porte ton fardeau comme un oeuf nouveau et donne lui le jour avec force et amour.$", + "10/1/50: Nous avons r‚solu le mystŠre du manuscrit et localis‚ la crypte . Est-ce l'id‚e d'aboutir dans ce qui n'‚tait qu'un \"rŠve\" qui me rend si anxieuse ?@Je regrette de m'tre engag‚e vis … vis de L‚o . Non! je dois continuer ! J'aurais d— mettre Guy au courant... mais, depuis une semaine, je n'ai aucune nouvelle .$", + "Porte ta priŠre au lieu saint qui se doit, changes-en l'air, tu auras la matiŠre !@Du pilier de la haute sagesse, le soleil aux genoux te montrera l'espace par lequel ton …me s'ouvrira un chemin et gagnera son Šre . Avance comme un Orph‚e peu soucieux des t‚nŠbres : le blanc est ta couleur, l'or ta demeure . Eclaire ton chemin jusqu'… la myst‚rieuse . Offre-lui le cercle de l'homme aux trois facettes . Qu'il regagne le monde et qu'il tourne avec lui dans la richesse premiŠre.$", + "Les montagnes sont les crocs d'une gueule dantesque ouverte … l'infini de quelqu' orgie c‚leste, mastiquant des ‚toiles comme nous broyons du noir .@Tu d‚poseras l'accord de pierre … tes pieds, le rire du silence sur la gamme d'en haut et dans ta main droite, une toile d'un mŠtre . Tu passeras ainsi entre les deux croissants, par del… les abŚmes du Mur du Silence . La Cl‚ des champs est … ta port‚e, tu n'as qu'… retrouver la note qui d‚note.$", + " DECEMBRE@ 9 REMISE 518 13 AGIOS 23@ 19 VIREMENT 1203 17 TRESOR 1598@ TOTAL 1721 TOTAL 1721$", + " Le 5/01/51@@ Luc, mon amour@ Guy connaŚt notre liaison . A la suite d'une dispute, je lui ai tout dit . Je ne pense qu'… toi ! Max me relance mais j'ai d‚finitivement rompu avec lui . Qu'il reste … ses gamelles . Quand pourrons-nous nous voir seuls ? Pour toi je divorcerai... Je t'aime .@ ton Eva$", + " Mortevielle, le 10/2/51@@ Pat,@ Je te rappelle que tu me dois 50000 F que je t'ai pr‚t‚s pour ton affaire . J'en ai besoin, peux-tu me les rendre assez vite?@ Guy$", + " Mortevielle, le 15/2/51@ MaŚtre,@ Je vous ‚cris au sujet de notre affaire. Je suis d‚cid‚ … aller jusqu'au bout, certain que mon associ‚, Pat DEFRANCK, a falsifi‚ un livre de comptes . Malgr‚$", + "Une pipe$", + "Un stylo … plume$", + "Un briquet … essence$", + "Une cornue$", + "Un blaireau$", + "Un pot de peinture$", + "Une flute$", + "Une bague de valeur$", + "Une bobine de fil$", + "Un vieux bouquin$", + "Un porte-monnaie$", + "Un poignard$", + "Un r‚volver$", + "Une bible$", + "Une bougie$", + "Un coffret … bijoux$", + "Un fer … repasser$", + "Une photo$", + "Une montre … gousset$", + "Une corde$", + "Des clefs$", + "Un collier de perles$", + "Un flacon de parfum$", + "Des jumelles$", + "Des lunettes$", + "Une bourse en cuir$", + "Une balle de tennis$", + "Des munitions$", + "Un rasoir … main$", + "Une brosse … cheveux$", + "Une brosse … linge$", + "Un jeu de cartes$", + "Un chausse pied$", + "Un tournevis$", + "Un marteau$", + "Des clefs$", + "Des clefs$", + "Un cendrier$", + "Un pinceau$", + "Une corde$", + "Un objet en bois$", + "Des somnifŠres$", + "Une bague en or$", + "Un coffret … bijoux$", + "Un r‚veil matin$", + "Une cotte de mailles$", + "Un chandellier$", + "Une paire de gants$", + "Une coupe cisel‚e$", + "Un parchemin$", + "Un poignard$", + "Un dossier$", + "Un parchemin$", + "Un parchemin$", + "Un dossier$", + "Un dossier$", + "Une lettre$", + "Un roman$", + "Une baguette en bois$", + "Une enveloppe$", + "Une lettre$", + "Une enveloppe$", + "Julia$", + "La mort de Julia$", + "Les relations de Julia$", + "Un message de Julia$", + "L'h‚ritage de Julia$", + "Derniers actes de Julia$", + "Les cadeaux de Julia$", + "La chambre de Julia$", + "La photo chez Julia$", + "Julia et vous...$", + "Les occupations de L‚o$", + "Les occupations de Pat$", + "Les occupations de Guy$", + "Les occupations de Bob$", + "Les occupations d'Eva$", + "Les occupations de Luc$", + "Les occupations d'Ida$", + "Les occupations de Max$", + "Vos occupations$", + "Les relations de L‚o$", + "Les relations de Pat$", + "Les relations de Guy$", + "Les relations de Bob$", + "Les relations d'Eva$", + "Les relations de Luc$", + "Les relations d'Ida$", + "Les relations de Max$", + "Vos relations$", + "Murielle$", + "Les relations de Murielle$", + "Murielle et vous...$", + "Disparition de Murielle$", + "Le mur du silence$", + "Les manuscrits$", + "Le blason$", + "Les gravures dans la cave$", + "Le puits$", + "Les passages secrets$", + "La chapelle$", + "Les tableaux$", + "La photo du grenier$", + "Le corps dans la crypte$", + "$", + "$", + "FIN DE LA CONVERSATION$", + "Les vieux appelaient ainsi la chaine de montagne qui se dresse au pied du manoir !$", + "C'est le massif montagneux que l'on aper‡oit devant le manoir$", + "Je n'en sais rien !$", + "Elle est morte d'une embolie pulmonaire$", + "Ma m‚re est morte soudainement . Son ‚tat semblait pourtant s'tre am‚lior‚$", + "Madame DEFRANCK est morte d'un coup de froid$", + "Elle est morte d'une embolie pulmonaire$", + "Pardonnez moi mais je pr‚fŠre, actuellement garder le silence$", + "Ce sont toujours les meilleurs qui partent les premiers$", + "J'aimais beaucoup ma mŠre . Je regrette seulement qu'elle soit morte dans le manoir des DEFRANCK$", + "C'est une r‚gion qui a un pass‚ charg‚ et j'ai largement de quoi m'occuper . Et puis j'aime beaucoup les chevaux..$", + "C'est un passionn‚ d'histoire et un joueur inv‚t‚r‚ . D'ailleurs, voici un an il a gagn‚ une grosse somme$", + "Il a d‚j… beaucoup a faire avec la gestion et l'entretien du manoir ...$", + "Je suis PDG d'une petite soci‚t‚ de parfums . Mais quand je suis ici, je me repose$", + "C'est un homme dynamique qui a r‚ussi dans le parfum$", + "Lui ! C'est un arriviste v‚reux ! Les parfums ont du endormir son bon sens . D'ailleurs ici il passe ses soir‚es dans sa chambre$", + "J'ai ‚t‚ trŠs pr‚occup‚ par la sant‚ de ma mŠre, et maintenant je n'ai plus go–t … rien$", + "Il aurait mieux fait de s'occuper un peu plus de moi et un peu moins de sa mŠre$", + "Ce sont ses affaires ...$", + "Il n'a pas trop de chance en ce moment bien que ses affaires soient satisfaisantes$", + "Je travaille avec Pat mais ‡a ne va pas trŠs fort en ce moment$", + "Ah oui ?! Il a des occupations ? Il ferait bien de s'en occuper s‚rieusement alors$", + "Lui et Pat sont associ‚s . Je crois que ‡a ne va pas trop mal$", + "Je m'occupe de moi et c'est d‚j… beaucoup . Et vous ?$", + "Oh ‡a ! Je lui fais confiance . Elle sait s'occuper$", + "Mais ! Vous n'avez pas encore d‚couvert son occupation principale ..?$", + "Elle fait dans la d‚coration avec beaucoup dego–t d'ailleurs . Elle est toujours trŠs bien habill‚e$", + "Si les bijoux vous interessent, j'ai quelques affaires interessantes … saisir rapidement$", + "Les bijoux ...$", + "Je ne sais pas, mais j'aimerais bien qu'il s'occupe un peu moins de mes affaires !$", + "Quand on est une femme d'int‚rieur on trouve toujours de quoi s'occuper...$", + "Elle pourrait rester sans rien faire, mais non ! Elle coud, elle lit ...$", + "Elle n'a s–rement pas des occupations trŠs ‚panouissantes ...$", + "Une femme comme il n'y en a plus : Elle s'interesse a tout !$", + "Entre la cuisine et le m‚nage, je n'ai pas beaucoup de temps … vous accorder$", + "Je ne sais pas comment il s'y prend pour tout faire . C'est merveilleux !$", + "Il en ferait plus si il s'occupait moins des rag“ts et de la bouteille$", + "Je suis trŠs ind‚pendant . Tant qu'on ne s'occupe pas de mes affaires : Pas de problŠme$", + "C'est un ‚go‹ste . Je me demande si il aime autre chose que ses chevaux et ses grimoires$", + "Je crois qu'il s'entend bien avec tout le monde, mis … part, peut tre, avec Guy$", + "C'est un homme de caractŠre . Il faut savoir le prendre ..$", + "Les affaires sont les affaires . Quant … la famille, je la laisse pour ce qu'elle est ...$", + "Relations ? Relations amicales ? Relations financiŠres sans doute$", + "Moi je n'ai rien … lui reprocher$", + "C'est un homme d'affaire d‚brouillard . Il nage parfois … contre-courant mais ... il s'en sortira toujours$", + "Ils m'ennuient tous .. Non ! Ce n'est mme pas ‡a .. Quoique .. certains ..$", + "A l'inverse de sa mŠre, c'est une personne trŠs renferm‚e ! Alors question relations ..$", + "Il doit sans doute faire beaucoup d'effort pour rester agr‚able malgr‚ tous ses ennuis$", + "Ses relations amoureuses : C'est termin‚ . Ses relations avec moi : Pas vraiment commenc‚es . Quant aux autres : Je ne suis pas les \"autres\"$", + "J'aime bien tout le monde, tant qu'on ne m'escroque pas$", + "Il ne suffit pas d'avoir un peu d'argent et d'tre beau parleur pour plaire … tout le monde$", + "Sans histoire .. C'est quelqu'un d'agr‚able et g‚n‚reux . De plus, il ne manque pas d'humour$", + "Actuellement je m'entends plut“t bien avec tout le monde . Mais, ici, je ne vais pas m'‚tendre sur le sujet$", + "Beau plumage, mais ‡a ne vole pas haut ... Parlez en … son mari$", + "C'est pour un rendez-vous ?$", + "Elle est trŠs vivante ! Elle ne s'embarrasse pas de pr‚jug‚s stupides$", + "Dans mon m‚tier, on c“toit surtout des belles femmes et des truands$", + "La seule valeur s–re chez lui, c'est ses bijoux .. Et sa femme, mais ‡a il ne s'en rend pas compte$", + "C'est quelqu'un d'interessant . De pas toujours facile … comprendre, mais qui m‚rite le d‚tour$", + "Je ne d‚teste personne, mais j'aime les choses et les gens quand ils sont … leur place$", + "C'est entre nous . Mais voyez : quand je parle avec elle, je me sens vite … l'‚troit !$", + "Pour ne pas s'entendre avec elle, faut y mettre de la mauvaise volont‚$", + "Vous savez dans mon m‚tier on entend tout mais on ne retient rien, et le service est bien fait$", + "C'est un hypocrite, un larbin ! Personnellement je ne lui fais pas confiance$", + "Je ne connait pas le fond de sa pens‚e mais c'est quelqu'un de toujours trŠs correct et impeccable$", + "C'‚tait une personne qui a v‚cu au manoir, il y a un an .. peut tre plus$", + "C'‚tait plus qu'une amie pour ma mŠre . En ces moments, j'aurais aim‚ qu'elle soit … mes cot‚s$", + "Murielle a ‚t‚ la dame de compagnie de Julia$", + "Elle aussi, faisait des recherches ...$", + "C'‚tait une femme trŠs cultiv‚e . Son brusque d‚part, il y a un an, m'a surpris et beaucoup chagrin‚$", + "Elle partageait avec L‚o sa passion de l'histoire et de la r‚gion$", + "Je crois que tout le monde l'aimait bien$", + "Elle s'entendait bien avec tout le monde . Elle aimait beaucoup son fils . Quant aux relations belle-mŠre, belle-fille ..$", + "A part L‚o, elle avait de trŠs bon rapport avec Max ...$", + "Bien que vos relations furent peu soutenues, J‚r“me, elle vous portait toujours dans son coeur ...$", + "A part sa famille, pas grand monde$", + "Ah oui ! Je crois qu'elle a beaucoup regrett‚ le d‚part de cette amie .. euh ! Marielle .. ou Mireille ...$", + "Non rien !$", + "Non ... Pas que le sache$", + "J'ai connu Julia en achetant le manoir . C'‚tait son seul bien . Mais toute ma fortune ‚tait la sienne ...$", + "Si ce n'est quelques objets personnels, je crois qu'elle n'avait plus rien … elle$", + "Je crois que toute sa fortune venait de L‚o . Alors, Pfuuut !$", + "A part la lettre pour vous que j'ai post‚, rien de bien important !$", + "J'ai ‚t‚ trŠs heureuse qu'elle m'offre sa bible reli‚e$", + "Ca a ‚t‚ rapide et elle n'a pas eu le temps de prendre des dispositions particuliŠres$", + "Son dernier pr‚sent m'a surpris$", + "Quel cadeau ?$", + "Un chandellier ...$", + "Oui, j'ai eu un cadeau . Ma femme a mme eu une bible$", + "Et bien oui ! Comme tout le monde, je crois$", + "Un poignard$", + "Je n'ai jamais ‚t‚ fouiller dans le grenier !$", + "Vous avez un don de double-vue ou un passe-partout$", + "Le portrait d'une jeune fille : C'est Murielle ...$", + "Vous savez, je la connaissais assez peu$", + "Elle ‚tait trŠs charmante, mais c'‚tait surtout la dame de compagnie de Julia$", + "C'est la seule femme vraiment interessante que j'ai rencontr‚$", + "Elle avait de grandes connaissances historiques, et la consulter ‚tait trŠs enrichissant$", + "Je me suis toujours demand‚ ce que certains pouvaient lui trouver !$", + "Si la chambre est ferm‚e, demandez … L‚o$", + "J'ai ferm‚ sa chambre aprŠs sa mort et j'aimerais qu'il en soit ainsi encore un certain temps$", + "Vous savez ce que c'est : Des relations familiales$", + "Durant toutes ces ann‚es, je ne l'ai jamais servie … contre-coeur$", + "Je l'aimais autant qu'elle m'aimais, je crois$", + "De quel droit avez-vous p‚n‚tr‚ dans la chambre de ma femme ?!!$", + "C'est sans doute la photo de Murielle avec le filleul de Julia$", + "Je ne me rappelle pas$", + "C'est Murielle . C'est moi qui l'ai prise. et d'ailleurs elle est tir‚e … l'envers$", + "Vous tes bien curieux !... C'est sans valeur$", + "Grimoires, parchemins et manuscrits : C'est le domaine de L‚o$", + "Dommage que la devise soit manquante ...$", + "C'est trŠs beau ... Et trŠs vieux ...$", + "Tiens ! C'est un endroit que je n'ai jamais visit‚$", + "D'apr‚s L‚o, il semblerait que les Lunes soient plus r‚centes$", + "Mme par ce temps, vous avez d‚nich‚ un soleil ...$", + "Profond et inqui‚tant : Le progrŠs a du bon$", + "Ca reste pour moi le plus grand des mystŠres$", + "Les derniers temps elle parlait d'un voyage . Et puis ...$", + "Il y a un peu plus d'un an, un soir, elle a d‚cid‚ de partir ...$", + "De toutes fa‡ons elle n'‚tait pas faite pour vivre ici$", + "Quoi ?! Quel corps ? Quel crypte ?$", + "Si il y en a, je ne les ai jamais trouv‚ ...$", + "Bien s–r ! ... Et des fant“mes aussi ...$", + "C'est la plus vielle de la r‚gion : Elle date du XI eme siŠcle$", + "Elle fut l‚gŠrement restaur‚e aprŠs la r‚volution$", + "Julia aimait beaucoup la peinture$", + "Ils ont diff‚rents styles, mais n'ont pas tous une trŠs grande valeur$", + "Que faites-vous l… ?$", + "Je suis s–r que vous cherchez quelque chose ici$", + "Je vous ‚coute$", + "Que d‚sirez-vous ?$", + "Oui ?$", + "Je suis … vous ...$", + "C'est pourquoi ?$", + "Allez-y$", + "C'est … quel sujet ?$", + "Max : … votre service, monsieur$", + "De toutes fa‡ons vous n'avez rien … faire ici ! Sortez !!$", + "Vous tes trop curieux !$", + "J‚r“me ! Il y a longtemps ... Quelle tristesse, Julia est morte . Sa famille est ici : Guy, son fils . Eva, sa brue . L‚o, son mari bien s–r . Son beau fils, Pat . Des cousins : Bob, Ida, Luc . La tempŠte redouble, il vous faut rester . Les repas sont … 12h et 19h et il y a un recueillement … la chapelle tous les jours … 10h$", + "En vous voyant j'ai compris que vous decouvririez la v‚rit‚ ... Car je savais pourquoi vous veniez : J'avais retrouv‚ le brouillon de la lettre de Julia . Mais je suis trŠs joueur, alors ... Elle n'avait pas voulu que votre tche soit trop facile, pour me prot‚ger, sans doute, mais elle n'a pu mourir avec cette incertitude sur la conscience . Avez vous d‚couvert que le mur du silence est le nom que les ma‡ons ont donn‚ au mur qui porte ce blason, lors de la construction du manoir ? .. Et ces cadeaux que Julia a laiss‚ avant de mourir ‚taient autant de faux indices qui ne servaient qu'… faire ressortir l'importance des parchemins ... Effectivement, il y a plus d'un an, je travailais avec Murielle au d‚cryptage de ces manuscrits que je venais de trouver . Ma femme a fait la relation entre notre travail et la disparition de Murielle mais elle n'a jamais eu de preuves . Si ce n'est cette bague qu'elle a retrouv‚ un jour dans mes affaires . Une nuit, nous nous sommes aventur‚s dans le passage secret que nous avions d‚couvert . Murielle est morte par accident dans la piŠce de la vierge . J'ai r‚cup‚r‚ la bague rapidement, trouv‚ le tr‚sor et me suis enfuis . Je ne pensais pas qu'elle vivait encore, et je n'ai rien dit car j'avais besoin d'argent . J'ai fait passer cette somme sur le compte des courses de chevaux ...Partez maintenant, puisque vous n'tes pas de la police . Laissez moi seul !$", + "F‚vrier 1951 ... Profession : detective priv‚ . Le froid figeait Paris et mes affaires lorsque ...$", + "Une lettre, un appel, des souvenirs d'une enfance encore proche . Que de jeux dans les piŠces d‚labr‚es du manoir de Mortevielle . Julia, une vieille femme a pr‚sent .$", + " au bureau$", + " … la cuisine$", + " … la cave$", + " dans le couloir$", + " dehors$", + " la salle … manger$", + " dans le manoir$", + " devant le manoir$", + " … la chapelle$", + " devant le puits$", + " au nord$", + " derriŠre le manoir$", + " au sud$", + " … l'est$", + " … l'ouest$", + " vers le manoir$", + " plus loin$", + " dans l'eau$", + " hors du puits$", + " dans le puits$", + " choix sur ‚cran$", + " Dans la serie MYSTERE...$", + " LE MANOIR DE MORTEVIELLE$", + "$", + " Sur une idee de...$", + " Bernard GRELAUD et Bruno GOURIER$", + "$", + " Realisation: LANKHOR$", + "$", + " Avec la participation de...$", + " Beatrice et Jean-Luc LANGLOIS$", + " pour la musique et les voix,$", + " Bernard GRELAUD pour la conception graphique,$", + " MARIA-DOLORES pour la realisation graphique,$", + " Bruno GOURIER pour la realisation technique,$", + " Clement ROQUES pour l'adaptation sur IBM PC et compatibles .$", + "$", + " Edition: LANKHOR$", + " COPYRIGHT 1988: LANKHOR$", + "$", + " A VOUS DE JOUER$", + " attacher$", + " attendre$", + " d‚foncer$", + " dormir$", + " ‚couter$", + " entrer$", + " fermer$", + " fouiller$", + " frapper$", + " gratter$", + " lire$", + " manger$", + " mettre$", + " ouvrir$", + " prendre$", + " regarder$", + " sentir$", + " sonder$", + " sortir$", + " soulever$", + " tourner$", + " se cacher$", + " fouiller$", + " lire$", + " poser$", + " regarder$", + " L‚o$", + " Pat$", + " Guy$", + " Eva$", + " Bob$", + " Luc$", + " Ida$", + " Max$", + "Comment Julia est-elle morte ?$", + "Elle s'est suicid‚e$", + "Elle est morte assassin‚e$", + "Elle est morte accidentellement$", + "Elle est morte naturellement$", + "D'o— provenait l'argent qui a permis la restauration du manoir ?$", + "chantage$", + "travail$", + "h‚ritage$", + "courses$", + "rentes$", + "hold-up$", + "d‚couverte$", + "Quel est le hobby de L‚o ?$", + "recherches historiques$", + "politique$", + "peinture$", + "drogue$", + "sciences occultes$", + "direction d'une secte$", + "Julia a laiss‚ une s‚rie d'indices . Ceux-ci sont repr‚sent‚s en un seul lieu . Lequel ?$", + "Chapelle$", + "Ext‚rieur$", + "Cave$", + "Grenier$", + "Cuisine$", + "Salle … manger$", + "Chambre Julia$", + "Chambre L‚o$", + "Chambre Pat$", + "Chambre Bob$", + "Chambre Max$", + "Chambre Luc/Ida$", + "Chambre Guy/Eva$", + "L'indice principal qui vous a permis d'arriver … la porte du souterrain est :$", + "Un poignard$", + "Une bague$", + "Un livre$", + "Un parchemin$", + "Une lettre$", + "Un pendule$", + "Combien y avait-il de parchemin dans le manoir ?$", + "Aucun$", + "Un seul$", + "Deux$", + "Trois$", + "Quatre$", + "Cinq$", + "Combien de personnes sont m‚l‚es … cette histoire - Julia y comprise, vous except‚ - ?$", + "Neuf$", + "Dix$", + "Onze$", + "Quel ‚tait le pr‚nom de la personne inconnue ?$", + "Mireille$", + "Fran‡oise$", + "Maguy$", + "Emilie$", + "Murielle$", + "Sophie$", + "De qui Murielle ‚tait-elle la maŚtresse ?$", + "Bob$", + "Luc$", + "Guy$", + "L‚o$", + "Max$", + "Murielle partageait une occupation avec une autre personne . Qui ?$", + "[1][|Seul le hazard vous a permis d'arriver ici . Vous pr‚f‚rez|retourner enqu‚ter afin de mieux comprendre ...][ok]$", + "[1][|Ins‚rez la disquette 1 dans le lecteur A][ok]$", + "[1][|! ERREUR DISQUETTE !|On arrete tout][ok]$", + "[1][|Vous devriez avoir remarqu‚|00% des indices][ok]$", + "[1][|Ins‚rez la disquette 2 dans le lecteur A][ok]$", + "[1][|Avant d'aller plus loin, vous faites|un point sur l'‚tat de vos connaissances][ok]$", + " MASTER .$", + " rorL$", +}; + +#endif -- cgit v1.2.3 From ecda7b6b8f1b3105686bd99e262ca26cce4e22fe Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 19 Feb 2012 11:12:17 +0100 Subject: TOOLS: Mortevielle - Remove extra spaces in one of the words --- devtools/create_mortdat/enginetext.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devtools/create_mortdat/enginetext.h b/devtools/create_mortdat/enginetext.h index fb4d12d966..d9b3b05e2b 100644 --- a/devtools/create_mortdat/enginetext.h +++ b/devtools/create_mortdat/enginetext.h @@ -106,7 +106,7 @@ const char *engineDataFr[] = { "se cacher", "prendre", - " sonder ", + "sonder", "soulever", " -SUITE- ", " -STOP- ", -- cgit v1.2.3 From b12f8bf5ad72290bddf9d5b9c50bc1c4aa516005 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 19 Feb 2012 11:28:19 +0100 Subject: MORTEVIELLE: Start cleaning taffich.cpp --- engines/mortevielle/dialogs.cpp | 2 +- engines/mortevielle/prog.cpp | 4 +- engines/mortevielle/taffich.cpp | 181 +++++++++++++++++++++++----------------- engines/mortevielle/taffich.h | 4 +- engines/mortevielle/var_mor.cpp | 2 +- engines/mortevielle/var_mor.h | 2 +- 6 files changed, 110 insertions(+), 85 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 3efa80efdd..3cb8192283 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -422,7 +422,7 @@ void f3f8::atf3f8(int &key) { void f3f8::aff50(bool c) { caff = 50; - maff = 0; + _maff = 0; taffich(); dessine(ades, 63, 12); if (c) diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 8d905af326..f0a95ff108 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -51,7 +51,7 @@ void change_gd(int ngd) { else person(); clsf2(); clsf3(); - maff = 68; + _maff = 68; afdes(0); repon(2, crep); g_vm->_menu.menu_aff(); @@ -83,7 +83,7 @@ void MortevielleEngine::gameLoaded() { g[2] = 'A'; cache = false; brt = false; - maff = 68; + _maff = 68; g[5] = 'E'; mnumo = 0; prebru = 0; diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index a9f727a41b..e654d1adf0 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -35,69 +35,63 @@ namespace Mortevielle { -void chardes(Common::String nom, int32 passe, int long_) { - int i, p, l; -// byte b; +void chardes(Common::String filename, int32 skipSize, int length) { Common::File f; - - /* debug('chardes'); */ - if (!f.open(nom)) - error("Missing file %s", nom.c_str()); + if (!f.open(filename)) + error("Missing file %s", filename.c_str()); testfi(); - p = 0; - while (passe > 127) { - p = p + 1; - passe = passe - 128; + int skipBlock = 0; + while (skipSize > 127) { + ++skipBlock; + skipSize -= 128; } - if (p != 0) - f.seek(p * 0x80); - p = abs(passe); - l = long_ + p; - i = 0; - while (l > 0) { - f.read(&mem[0x6000 * 16 + i], 128); + if (skipBlock != 0) + f.seek(skipBlock * 0x80); + + int remainingSkipSize = abs(skipSize); + int totalLength = length + remainingSkipSize; + int memIndx = 0x6000 * 16; + while (totalLength > 0) { + f.read(&mem[memIndx], 128); testfi(); - l = l - 128; - i = i + 128; + totalLength -= 128; + memIndx += 128; } f.close(); - for (i = p; i <= long_ + p; i ++) - mem[0x7000 * 16 + i - p] = mem[0x6000 * 16 + i]; - /*$i+*/ + for (int i = remainingSkipSize; i <= length + remainingSkipSize; i ++) + mem[0x7000 * 16 + i - remainingSkipSize] = mem[0x6000 * 16 + i]; } -void charani(Common::String nom, int32 passe, int long_) { - int i, p, l; -// byte b; +void charani(Common::String filename, int32 skipSize, int length) { Common::File f; - /* debug('charani'); */ - if (!f.open(nom)) - error("Missing file - %s", nom.c_str()); + if (!f.open(filename)) + error("Missing file - %s", filename.c_str()); testfi(); - p = 0; - while (passe > 127) { - passe = passe - 128; - p = p + 1; + int skipBlock = 0; + while (skipSize > 127) { + skipSize = skipSize - 128; + ++skipBlock; } - if (p != 0) - f.seek(p * 0x80); - - p = abs(passe); - l = long_ + p; - i = 0; - while (l > 0) { - f.read(&mem[0x6000 * 16 + i], 128); + if (skipBlock != 0) + f.seek(skipBlock * 0x80); + + int remainingSkipSize = abs(skipSize); + int fullLength = length + remainingSkipSize; + int memIndx = 0x6000 * 16; + while (fullLength > 0) { + f.read(&mem[memIndx], 128); testfi(); - l = l - 128; - i = i + 128; + fullLength -= 128; + memIndx += 128; } f.close(); - for (i = p; i <= long_ + p; i ++) mem[0x7314 * 16 + i - p] = mem[0x6000 * 16 + i]; + for (int i = remainingSkipSize; i <= length + remainingSkipSize; i ++) + mem[0x7314 * 16 + i - remainingSkipSize] = mem[0x6000 * 16 + i]; } void taffich() { @@ -107,7 +101,6 @@ void taffich() { int i, m, a, b, cx, handle, npal; int32 lgt; - Common::String nom; int palh, k, j; int alllum[16]; @@ -118,69 +111,101 @@ void taffich() { else if ((a >= 136) && (a <= 140)) a = tran1[a - 136]; b = a; - if (maff == a) return; - if (a == 16) { + if (_maff == a) + return; + + switch (a) { + case 16: s.pourc[9] = '*'; s.teauto[42] = '*'; - } - if (a == 20) { + break; + case 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) { + break; + case 24: + s.teauto[37] = '*'; + break; + case 30: + s.teauto[9] = '*'; + break; + case 31: s.pourc[4] = '*'; s.teauto[35] = '*'; + break; + case 118: + s.teauto[41] = '*'; + break; + case 143: + s.pourc[1] = '*'; + break; + case 150: + s.teauto[34] = '*'; + break; + case 151: + s.pourc[2] = '*'; + break; + default: + break; } - 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; + Common::String filename; + 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 == 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; + 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; + _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]; + + for (cx = 0; cx <= (a - 1); cx ++) + lgt = lgt + l[cx]; handle = l[a]; - nom = "DXX.mor"; + + filename = "DXX.mor"; } else { - nom = "DZZ.mor"; + filename = "DZZ.mor"; handle = l[87]; if (a == 51) { lgt = handle; handle = l[88]; } - maff = a; + _maff = a; npal = a + 37; } - chardes(nom, lgt, handle); + chardes(filename, lgt, handle); if (gd == her) { for (i = 0; i <= 15; i ++) { palh = READ_LE_UINT16(&mem[0x7000 * 16 + (succ(int, i) << 1)]); @@ -204,15 +229,15 @@ void taffich() { 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"; + filename = "AXX.mor"; } else if (b == 50) { - nom = "AZZ.mor"; + filename = "AZZ.mor"; handle = 1260; } - charani(nom, lgt, handle); + charani(filename, lgt, handle); } show_mouse(); - if ((a < 27) && ((maff < 27) || (s.mlieu == 15)) && (msg[4] != entrer)) { + 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; diff --git a/engines/mortevielle/taffich.h b/engines/mortevielle/taffich.h index a6acce21eb..4bb5e77de1 100644 --- a/engines/mortevielle/taffich.h +++ b/engines/mortevielle/taffich.h @@ -32,8 +32,8 @@ namespace Mortevielle { -extern void chardes(Common::String nom, int32 passe, int long_); -extern void charani(Common::String nom, int32 passe, int long_); +extern void chardes(Common::String filename, int32 passe, int long_); +extern void charani(Common::String filename, int32 skipSize, int length); extern void taffich(); } // End of namespace Mortevielle diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 27eb5bb0b6..0caadadbff 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -137,7 +137,7 @@ int x, ment, haut, caff, - maff, + _maff, crep, ades, iouv, diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index b810033f0a..bfccd66e34 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -302,7 +302,7 @@ extern int x, ment, haut, caff, - maff, + _maff, crep, ades, iouv, -- cgit v1.2.3 From d8686819760db1e8fec28a99ef989c98f116c77a Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 19 Feb 2012 21:15:57 +0100 Subject: MORTEVIELLE: Rename mouse functions, various formatting fixes --- engines/mortevielle/actions.cpp | 32 ++--- engines/mortevielle/dialogs.cpp | 24 ++-- engines/mortevielle/graphics.cpp | 4 +- engines/mortevielle/level15.cpp | 10 +- engines/mortevielle/menu.cpp | 8 +- engines/mortevielle/mor.cpp | 28 ++-- engines/mortevielle/mor2.cpp | 20 +-- engines/mortevielle/mortevielle.cpp | 6 +- engines/mortevielle/mouse.cpp | 247 +++++++++++++++++++----------------- engines/mortevielle/mouse.h | 12 +- engines/mortevielle/prog.cpp | 10 +- engines/mortevielle/saveload.cpp | 8 +- engines/mortevielle/taffich.cpp | 51 +++++--- 13 files changed, 240 insertions(+), 220 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 02c7b6a90f..fe9d3a4dda 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -534,12 +534,12 @@ void tmettre() { i = Alert::show(delig, 1); tesok = false; entre = Ques::show(); - hide_mouse(); + hideMouse(); hirs(); dessine_rouleau(); clsf2(); clsf3(); - show_mouse(); + showMouse(); tinke(); pendule(); if (ipers != 0) @@ -1034,7 +1034,7 @@ void tparler() } tkey1(false); mennor(); - hide_mouse(); + hideMouse(); hirs(); premtet(); sparl(0, suj); @@ -1047,7 +1047,7 @@ void tparler() } lib[46] = lib[45]; lib[45] = ' '; - show_mouse(); + showMouse(); do { choi = 0; icm = 0; @@ -1068,10 +1068,10 @@ void tparler() writetp(lib[46], 0); tou = '\0'; do { - mov_mouse(f, tou); + moveMouse(f, tou); CHECK_QUIT; - read_pos_mouse(x, y, c); + getMousePos(x, y, c); x = x * (3 - res); if (x > 319) cx = 41; else cx = 1; @@ -1135,11 +1135,11 @@ void tparler() s.conf = s.conf + 3; suj = 139; } - hide_mouse(); + hideMouse(); hirs(); premtet(); sparl(0, suj); - show_mouse(); + showMouse(); if ((suj == 84) || (suj == 86)) { s.pourc[5] = '*'; s.teauto[7] = '*'; @@ -1152,26 +1152,26 @@ void tparler() s.pourc[8] = '*'; s.teauto[32] = '*'; } - hide_mouse(); + hideMouse(); hirs(); - show_mouse(); + showMouse(); } } while (!((choi == 46) || (suj == 138))); if (col) { s.conf = s.conf + (3 * (s.conf / 10)); - hide_mouse(); + hideMouse(); hirs(); premtet(); sparl(0, 138); - show_mouse(); + showMouse(); col = false; s.mlieu = 15; } ctrm = 0; - hide_mouse(); + hideMouse(); hirs(); dessine_rouleau(); - show_mouse(); + showMouse(); affper(ipers); tinke(); pendule(); @@ -1216,13 +1216,13 @@ void MortevielleEngine::endGame() { clsf3(); repon(9, 1509); tkey1(false); - hide_mouse(); + hideMouse(); caff = 70; taffich(); hirs(); premtet(); sparl(0, 141); - show_mouse(); + showMouse(); clsf1(); repon(9, 1509); repon(2, 142); diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 3cb8192283..bccbb10f56 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -64,7 +64,7 @@ int Alert::show(const Common::String &msg, int n) { /*debug('** do_alert **');*/ memset(&limit[0][0], 0, sizeof(int) * 3 * 3); int do_alert_result; - hide_mouse(); + hideMouse(); while (keypressed()) dumi = get_ch(); // input >> kbd >> dumi; @@ -106,12 +106,12 @@ int Alert::show(const Common::String &msg, int n) { limit[2][1] = ((uint)(320 + ((uint)esp >> 1)) >> 1) * res; limit[2][2] = (limit[2][1]) + 40; } - show_mouse(); + showMouse(); quoi = 0; dum = false; do { dumi = '\377'; - mov_mouse(dum, dumi); + moveMouse(dum, dumi); CHECK_QUIT0; cx = x_s; @@ -127,7 +127,7 @@ int Alert::show(const Common::String &msg, int n) { if (test1) ix = 1; else ix = 2; if (ix != quoi) { - hide_mouse(); + hideMouse(); if (quoi != 0) { setPosition(quoi, coldep, esp); @@ -144,12 +144,12 @@ int Alert::show(const Common::String &msg, int n) { g_vm->_screenSurface.writeg(tmp2, 1); quoi = ix; - show_mouse(); + showMouse(); } } } if ((quoi != 0) && ! newaff) { - hide_mouse(); + hideMouse(); setPosition(quoi, coldep, esp); Common::String tmp3(" "); @@ -158,13 +158,13 @@ int Alert::show(const Common::String &msg, int n) { g_vm->_screenSurface.writeg(tmp3, 0); quoi = 0; - show_mouse(); + showMouse(); } test3 = (cy > 95) && (cy < 105) && (((cx > limit[1][1]) && (cx < limit[1][2])) || ((cx > limit[2][1]) && (cx < limit[2][2]))); } while (!g_vm->getMouseClick()); g_vm->setMouseClick(false); - hide_mouse(); + hideMouse(); if (! test3) { quoi = n; setPosition(n, coldep, esp); @@ -174,7 +174,7 @@ int Alert::show(const Common::String &msg, int n) { g_vm->_screenSurface.writeg(tmp4, 1); } charecr(50, succ(int, nligne) << 4); - show_mouse(); + showMouse(); /* Restore the background area */ g_vm->_screenSurface.copyFrom(g_vm->_backgroundSurface, 0, 0); @@ -289,9 +289,9 @@ bool Ques::show() { compte = 0; do { - hide_mouse(); + hideMouse(); hirs(); - show_mouse(); + showMouse(); i = i + 1; deline(ta[i], st, tay); if (res == 1) y = 29; @@ -340,7 +340,7 @@ bool Ques::show() { do { g_vm->setMouseClick(false); tesok = false; - mov_mouse(func, key); + moveMouse(func, key); CHECK_QUIT0; k = 1; diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 0fab9de965..62f13dac5e 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -1048,7 +1048,7 @@ void ScreenSurface::writeg(const Common::String &l, int c) { if (l == "") return; - hide_mouse(); + hideMouse(); pt = _textPos; if (res == 2) @@ -1085,7 +1085,7 @@ void ScreenSurface::writeg(const Common::String &l, int c) { g_vm->_screenSurface.writeCharacter(Common::Point(pt.x, pt.y), ord(l[x - 1]), cecr); pt.x += i; } - show_mouse(); + showMouse(); } /** diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 8d89767e91..374851f7f0 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -50,7 +50,7 @@ bool dans_rect(rectangle r) { int x, y, c; bool dans_rect_result; - read_pos_mouse(x, y, c); + getMousePos(x, y, c); if ((x > r.x1) && (x < r.x2) && (y > r.y1) && @@ -113,15 +113,15 @@ void pictout(int seg, int dep, int x, int y) { } void sauvecr(int y, int dy) { - hide_mouse(); + hideMouse(); s_sauv(gd, y, dy); - show_mouse(); + showMouse(); } void charecr(int y, int dy) { - hide_mouse(); + hideMouse(); s_char(gd, y, dy); - show_mouse(); + showMouse(); } void adzon() { diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 2fc558a7fb..7da2eefb0f 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -148,7 +148,7 @@ void Menu::menu_aff() { int pt, x, y, color, msk, num_letr; - hide_mouse(); + hideMouse(); g_vm->_screenSurface.fillRect(7, Common::Rect(0, 0, 639, 10)); col = 28 * res; @@ -180,7 +180,7 @@ void Menu::menu_aff() { } while (!(y == 9)); col = col + 48 * res; } while (!(num_letr == 6)); - show_mouse(); + showMouse(); } /** @@ -279,7 +279,7 @@ void Menu::menuDown(int ii) { // Draw the menu xco = don[ii][1]; nb_lig = don[ii][4]; - hide_mouse(); + hideMouse(); sauvecr(10, succ(byte, don[ii][2]) << 1); xco = xco << 3; if (res == 1) cx = 10; @@ -337,7 +337,7 @@ void Menu::menuDown(int ii) { g_vm->_screenSurface.putxy(xco, g_vm->_screenSurface._textPos.y + 8); } while (!(cx == nb_lig)); test0 = true; - show_mouse(); + showMouse(); } /** diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index de784471f8..78e577a3f5 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -92,10 +92,10 @@ void modif(int &nu) { void dessine(int ad, int x, int y) { /* debug('dessine'); */ - hide_mouse(); + hideMouse(); writepal(numpal); pictout(ad, 0, x, y); - show_mouse(); + showMouse(); } void dessine_rouleau() { @@ -104,9 +104,9 @@ void dessine_rouleau() { if (gd == her) { mem[0x7000 * 16 + 14] = 15; } - hide_mouse(); + hideMouse(); pictout(0x73a2, 0, 0, 0); - show_mouse(); + showMouse(); } @@ -145,17 +145,17 @@ void ecrf1() { void clsf1() { /* debug('clsf1'); */ - hide_mouse(); + hideMouse(); g_vm->_screenSurface.fillRect(0, Common::Rect(0, 11, 514, 175)); - show_mouse(); + showMouse(); } void clsf2() { // int i, j; /* debug('clsf2'); */ - hide_mouse(); + hideMouse(); if (f2_all) { g_vm->_screenSurface.fillRect(0, Common::Rect(1, 176, 633, 199)); g_vm->_screenSurface.drawBox(0, 175, 634, 24, 15); @@ -164,7 +164,7 @@ void clsf2() { g_vm->_screenSurface.fillRect(0, Common::Rect(1, 176, 633, 190)); g_vm->_screenSurface.drawBox(0, 175, 634, 15, 15); } - show_mouse(); + showMouse(); } void ecrf2() { @@ -203,10 +203,10 @@ void clsf3() { // int i, j; /* debug('clsf3'); */ - hide_mouse(); + hideMouse(); g_vm->_screenSurface.fillRect(0, Common::Rect(1, 192, 633, 199)); g_vm->_screenSurface.drawBox(0, 191, 634, 8, 15); - show_mouse(); + showMouse(); } void ecr3(Common::String text) { @@ -231,7 +231,7 @@ void clsf10() { Common::String st; /* debug('clsf10'); */ - hide_mouse(); + hideMouse(); if (res == 1) { co = 634; cod = 534; @@ -254,7 +254,7 @@ void clsf10() { else co = 584; g_vm->_screenSurface.fillRect(15, Common::Rect(560, 24, co, 86)); /* rempli(69,12,32,5,255);*/ - show_mouse(); + showMouse(); } void stop() { @@ -595,7 +595,7 @@ void pendule() { /* debug('pendule'); */ - hide_mouse(); + hideMouse(); paint_rect(570, 118, 20, 10); paint_rect(578, 114, 6, 18); @@ -610,7 +610,7 @@ void pendule() { if (h > 12) h = h - 12; if (h == 0) h = 12; g_vm->_screenSurface.droite(((uint)x >> 1)*res, y, ((uint)(x + cv[1][h]) >> 1)*res, y + cv[2][h], co); - show_mouse(); + showMouse(); g_vm->_screenSurface.putxy(568, 154); if (heu > 11) g_vm->_screenSurface.writeg("PM ", 1); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index c388c4a937..7a49456197 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -181,7 +181,7 @@ void tinke() { void fenat(char ans) { int coul; - hide_mouse(); + hideMouse(); if (gd == cga) coul = 2; else if (gd == her) @@ -191,7 +191,7 @@ void fenat(char ans) { g_vm->_screenSurface.writeCharacter(Common::Point(306, 193), ord(ans), coul); g_vm->_screenSurface.drawBox(300, 191, 16, 8, 15); - show_mouse(); + showMouse(); } @@ -207,18 +207,18 @@ void tkey1(bool d) { int x, y, c; int key; - hide_mouse(); + hideMouse(); fenat('K'); while (keypressed()) key = testou(); do { if (d) tinke(); quest = keypressed(); - read_pos_mouse(x, y, c); + getMousePos(x, y, c); CHECK_QUIT; } while (!(quest || (c != 0) || (d && anyone))); if (quest) key = testou(); g_vm->setMouseClick(false); - show_mouse(); + showMouse(); } void tmlieu(int mli) { @@ -384,7 +384,7 @@ void sparl(float adr, float rep) { char st[1410]; repint = abs((int)rep); - hide_mouse(); + hideMouse(); deline(repint + c_paroles, st, tay); afftex(st, 230, 4, 65, 24, 5); f3f8::draw(); @@ -396,7 +396,7 @@ void sparl(float adr, float rep) { CHECK_QUIT; } while (!(key == 66)); hirs(); - show_mouse(); + showMouse(); } void finfouil() { @@ -477,13 +477,13 @@ void t1sama() { /* On entre dans le manoir */ //Translation: repon(2, 33); tkey1(false); mennor(); - hide_mouse(); + hideMouse(); hirs(); premtet(); sparl(0, 140); dessine_rouleau(); pendule(); - show_mouse(); + showMouse(); s.mlieu = 0; affrep(); t5(10); @@ -616,7 +616,7 @@ void tfleche() { touch = '\0'; do { - mov_mouse(qust, touch); + moveMouse(qust, touch); CHECK_QUIT; if (g_vm->getMouseClick()) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index b35e98611c..256b8551ed 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -145,7 +145,7 @@ Common::ErrorCode MortevielleEngine::initialise() { zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); c_zzz = 1; init_nbrepm(); - init_mouse(); + initMouse(); init_lieu(); sonoff = false; @@ -497,7 +497,7 @@ void MortevielleEngine::mainGame() { dprog(); hirs(); dessine_rouleau(); - show_mouse(); + showMouse(); // Loop to play the game do { @@ -549,7 +549,7 @@ void MortevielleEngine::handleAction() { do { g_vm->_menu.mdn(); tinke(); - mov_mouse(funct, inkey); + moveMouse(funct, inkey); CHECK_QUIT; temps = temps + 1; } while (!((choisi) || (temps > lim) || (funct) || (anyone))); diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 51af36b5f0..d99163cc6f 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -47,8 +47,11 @@ int m_show, int s_s[12][6]; - -void init_mouse() { +/** + * Initialize the mouse + * @remarks Originally called 'init_mouse' + */ +void initMouse() { registres reg; mouse_shwn = 0; @@ -58,23 +61,28 @@ void init_mouse() { g_vm->setMouseClick(false); m_show = m_arrow; - if ((READ_LE_UINT16(&mem[0xcc]) == 0) && (READ_LE_UINT16(&mem[0xce]) == 0)) int_m = false; + if ((READ_LE_UINT16(&mem[0xcc]) == 0) && (READ_LE_UINT16(&mem[0xce]) == 0)) + int_m = false; + if (int_m) { reg.ax = 0; intr(0x33, reg); int_m = (reg.ax == -1); if (int_m) { - { - reg.ax = 4; - reg.cx = 0; - reg.dx = 0; - } + reg.ax = 4; + reg.cx = 0; + reg.dx = 0; + intr(0x33, reg); } } } -void hide_mouse() { +/** + * Hide the mouse + * @remarks Originally called 'hide_mouse' + */ +void hideMouse() { int i, j, k, ps;; bool imp; @@ -83,7 +91,7 @@ void hide_mouse() { imp = odd(y_s); j = p_o_s; switch (gd) { - case cga : { + case cga: { k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); do { @@ -91,12 +99,12 @@ void hide_mouse() { WRITE_LE_UINT16(&mem[0xb800 * 16 + j + 2], s_s[1][k]); WRITE_LE_UINT16(&mem[0xba00 * 16 + j], s_s[2][k]); WRITE_LE_UINT16(&mem[0xba00 * 16 + j + 2], s_s[3][k]); - j = j + 80; + j += 80; k = succ(int, k); } while (!(k >= 5)); } break; - case ams : { + case ams: { for (i = 0; i <= 3; i ++) { port[0x3dd] = 1 << i; k = 0; @@ -104,10 +112,10 @@ void hide_mouse() { do { if (imp) { WRITE_LE_UINT16(&mem[0xb800 * 16 + j], s_s[i][k]); - j = j + 80 - 0x2000; + j += 80 - 0x2000; } else { WRITE_LE_UINT16(&mem[0xb800 * 16 + j], s_s[i][k]); - j = j + 0x2000; + j += 0x2000; } imp = ! imp; k = succ(int, k); @@ -115,7 +123,7 @@ void hide_mouse() { } } break; - case ega : { + case ega: { port[0x3c4] = 2; port[0x3ce] = 8; port[0x3cf] = 255; @@ -129,23 +137,23 @@ void hide_mouse() { mem[0xa000 * 16 + j] = lo(s_s[i][k]); ps = mem[0xa000 * 16 + j + 1]; mem[0xa000 * 16 + j + 1] = hi(s_s[i][k]); - j = j + 80; + j += 80; k = succ(int, k); } while (!(k >= 8)); - i = i + 1; + ++i; } while (!(i == 4)); } break; - case her : { + case her: { j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); for (i = 0; i <= 5; i ++) { for (k = 0; k <= 3; k ++) WRITE_LE_UINT16(&mem[0xb000 * 16 + k * 0x200 + j], s_s[i][k]); - j = j + 80; + j += 80; } } break; - case tan : { + case tan: { j = ((uint)y_s >> 2) * 160 + ((uint)x_s >> 1); k = 0; do { @@ -153,7 +161,7 @@ void hide_mouse() { WRITE_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j], s_s[k][i + (k << 2)]); WRITE_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j + 2], s_s[k + 3][i + (k << 2)]); } - j = j + 160; + j += 160; k = succ(int, k); } while (!(k == 3)); } @@ -163,7 +171,11 @@ void hide_mouse() { } } -void show_mouse() { +/** + * Show mouse + * @remarks Originally called 'show_mouse' + */ +void showMouse() { int i, j, k, l; bool imp; @@ -173,7 +185,7 @@ void show_mouse() { imp = odd(y_s); i = x_s & 7; switch (gd) { - case cga : { + case cga: { k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); do { @@ -181,12 +193,12 @@ void show_mouse() { s_s[1][k] = READ_LE_UINT16(&mem[0xb800 * 16 + j + 2]); s_s[2][k] = READ_LE_UINT16(&mem[0xba00 * 16 + j]); s_s[3][k] = READ_LE_UINT16(&mem[0xba00 * 16 + j + 2]); - j = j + 80; + j += 80; k = succ(int, k); } while (!(k >= 5)); } break; - case ams : { + case ams: { for (i = 0; i <= 3; i ++) { j = p_o_s; imp = odd(y_s); @@ -195,10 +207,10 @@ void show_mouse() { do { if (imp) { s_s[i][k] = READ_LE_UINT16(&mem[0xb800 * 16 + j]); - j = j + 80 - 0x2000; + j += 80 - 0x2000; } else { s_s[i][k] = READ_LE_UINT16(&mem[0xb800 * 16 + j]); - j = j + 0x2000; + j += 0x2000; } imp = ! imp; k = succ(int, k); @@ -206,7 +218,7 @@ void show_mouse() { } } break; - case ega : { + case ega: { port[0x3ce] = 4; l = 0; do { @@ -215,14 +227,14 @@ void show_mouse() { j = p_o_s; do { s_s[l][k] = mem[0xa000 * 16 + j] + (mem[0xa000 * 16 + succ(int, j)] << 8); - j = j + 80; + j += 80; k = succ(int, k); } while (!(k >= 8)); - l = l + 1; + ++l; } while (!(l == 4)); } break; - case her : { + case her: { j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); for (i = 0; i <= 5; i ++) { for (k = 0; k <= 3; k ++) @@ -231,7 +243,7 @@ void show_mouse() { } } break; - case tan : { + case tan: { j = ((uint)y_s >> 2) * 160 + ((uint)x_s >> 1); k = 0; do { @@ -239,7 +251,7 @@ void show_mouse() { s_s[k][i + (k << 2)] = READ_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j]); s_s[k + 3][i + (k << 2)] = READ_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j + 2]); } - j = j + 160; + j += 160; k = succ(int, k); } while (!(k == 3)); } @@ -247,24 +259,41 @@ void show_mouse() { } /* case Gd */ } -void pos_mouse(int x, int y) { - if (x > 314 * res) x = 314 * res; - else if (x < 0) x = 0; - if (y > 199) y = 199; - else if (y < 0) y = 0; - if ((x == x_s) && (y == y_s)) return; +/** + * Set mouse position + * @remarks Originally called 'pos_mouse' + */ +void setMousePos(int x, int y) { + if (x > 314 * res) + x = 314 * res; + else if (x < 0) + x = 0; + if (y > 199) + y = 199; + else if (y < 0) + y = 0; + if ((x == x_s) && (y == y_s)) + return; // Set the new position g_vm->setMousePos(Common::Point(x, y)); } -void read_pos_mouse(int &x, int &y, int &c) { +/** + * Get mouse poisition + * @remarks Originally called 'read_pos_mouse' + */ +void getMousePos(int &x, int &y, int &c) { x = g_vm->getMousePos().x; y = g_vm->getMousePos().y; c = g_vm->getMouseClick() ? 1 : 0; } -void mov_mouse(bool &funct, char &key) { +/** + * Move mouse + * @remarks Originally called 'mov_mouse' + */ +void moveMouse(bool &funct, char &key) { bool p_key; char in1, in2; int cx, cy, cd; @@ -283,52 +312,46 @@ void mov_mouse(bool &funct, char &key) { CHECK_QUIT; in1 = get_ch(); - read_pos_mouse(cx, cy, cd); + getMousePos(cx, cy, cd); switch (toupper(in1)) { - case '4' : + case '4': cx = cx - 8; break; - case '2' : + case '2': cy = cy + 8; break; - case '6' : + case '6': cx = cx + 8; break; - case '8' : + case '8': cy = cy - 8; break; - case '7' : { + case '7': cy = 1; cx = 1; - } - break; - case '1' : { + break; + case '1': cx = 1; cy = 190; - } - break; - case '9' : { + break; + case '9': cx = 315 * res; cy = 1; - } - break; - case '3' : { + break; + case '3': cy = 190; cx = 315 * res; - } - break; - case '5' : { + break; + case '5': cy = 100; cx = 155 * res; - } - break; + break; case ' ': - case '\15' : { + case '\15': g_vm->setMouseClick(true); return; - } - break; - case '\33' : { + break; + case '\33': p_key = keypressed(); if (p_key) { @@ -340,102 +363,90 @@ void mov_mouse(bool &funct, char &key) { return; } else { switch (in2) { - case 'K' : + case 'K': cx = pred(int, cx); break; - case 'P' : + case 'P': cy = succ(int, cy); break; - case 'M' : + case 'M': cx = cx + 2; break; - case 'H' : + case 'H': cy = pred(int, cy); break; - case 'G' : { + case 'G': cx = cx - 1; cy = cy - 1; - } - break; - case 'I' : { + break; + case 'I': cx = cx + 1; cy = cy - 1; - } - break; - case 'O' : { + break; + case 'O': cx = cx - 1; cy = cy + 1; - } - break; - case 'Q' : { + break; + case 'Q': cx = cx + 1; cy = cy + 1; - } - break; - } /* case */ + break; + default: + break; + } // case } } - } - break; - case 'I' : { + break; + case 'I': cx = res * 32; cy = 8; - } - break; - case 'D' : { + break; + case 'D': cx = 80 * res; cy = 8; - } - break; - case 'A' : { + break; + case 'A': cx = 126 * res; cy = 8; - } - break; - case 'S' : { + break; + case 'S': cx = 174 * res; cy = 8; - } - break; - case 'P' : { + break; + case 'P': cx = 222 * res; cy = 8; - } - break; - case 'F' : { + break; + case 'F': cx = res * 270; cy = 8; - } - break; - case '\23' : { + break; + case '\23': sonoff = ! sonoff; return; - } - break; - case '\26' : { + break; + case '\26': zuul = true; return; - } - break; - case '\24' : { /* ^T => mode tandy */ + break; + case '\24': // ^T => mode tandy funct = true; key = '\11'; - } - break; - case '\10' : { /* ^H => mode Hercule */ + break; + case '\10': // ^H => mode Hercule funct = true; key = '\7'; - } - break; + break; case '\1': case '\3': - case '\5' : { + case '\5': funct = true; key = in1; + break; + default: + break; } - break; - } - pos_mouse(cx, cy); + setMousePos(cx, cy); p_key = keypressed(); } } diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index 32fba0420f..d17654c19e 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -38,14 +38,14 @@ extern int m_show, p_o_s, mouse_shwn; -void init_mouse(); +void initMouse(); //extern void change_mouse(int t); //extern void dessine_souris(int xf, int yf); -extern void hide_mouse(); -extern void show_mouse(); -extern void pos_mouse(int x, int y); -extern void read_pos_mouse(int &x, int &y, int &c); -extern void mov_mouse(bool &funct, char &key); +extern void hideMouse(); +extern void showMouse(); +extern void setMousePos(int x, int y); +extern void getMousePos(int &x, int &y, int &c); +extern void moveMouse(bool &funct, char &key); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index f0a95ff108..737ec6602e 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -39,11 +39,11 @@ namespace Mortevielle { void change_gd(int ngd) { - hide_mouse(); + hideMouse(); gd = ngd; hirs(); - init_mouse(); - show_mouse(); + initMouse(); + showMouse(); dessine_rouleau(); tinke(); pendule(); @@ -67,7 +67,7 @@ void MortevielleEngine::gameLoaded() { char g[8]; - hide_mouse(); + hideMouse(); imen = false; g[1] = 'M'; _loseGame = true; @@ -131,7 +131,7 @@ void MortevielleEngine::gameLoaded() { modinv(); if (s.derobj != 0) modobj2(s.derobj + 400, test[1], test[2]); else tesok = test[1] || test[2]; - show_mouse(); + showMouse(); } diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 0b3946af0b..c2c43953d0 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -118,7 +118,7 @@ void SavegameManager::takesav(int n) { * Load a saved game */ Common::Error SavegameManager::loadGame(int n) { - hide_mouse(); + hideMouse(); maivid(); takesav(n); @@ -126,7 +126,7 @@ Common::Error SavegameManager::loadGame(int n) { theure(); dprog(); g_vm->gameLoaded(); - show_mouse(); + showMouse(); return Common::kNoError; } @@ -137,7 +137,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { Common::OutSaveFile *f; int i; - hide_mouse(); + hideMouse(); tmaj3(); for (i = 0; i <= 389; i ++) @@ -165,7 +165,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { delete f; dem2(); - show_mouse(); + showMouse(); return Common::kNoError; } diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index e654d1adf0..9402f3fec5 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -40,7 +40,6 @@ void chardes(Common::String filename, int32 skipSize, int length) { if (!f.open(filename)) error("Missing file %s", filename.c_str()); - testfi(); int skipBlock = 0; while (skipSize > 127) { ++skipBlock; @@ -66,11 +65,9 @@ void chardes(Common::String filename, int32 skipSize, int length) { void charani(Common::String filename, int32 skipSize, int length) { Common::File f; - if (!f.open(filename)) error("Missing file - %s", filename.c_str()); - testfi(); int skipBlock = 0; while (skipSize > 127) { skipSize = skipSize - 128; @@ -153,23 +150,29 @@ void taffich() { } okdes = true; - hide_mouse(); + hideMouse(); lgt = 0; Common::String filename; 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 ((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; + 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) @@ -224,10 +227,14 @@ void taffich() { 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]; + 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]; filename = "AXX.mor"; } else if (b == 50) { @@ -236,10 +243,12 @@ void taffich() { } charani(filename, lgt, handle); } - show_mouse(); + showMouse(); if ((a < 27) && ((_maff < 27) || (s.mlieu == 15)) && (msg[4] != entrer)) { - if ((a == 13) || (a == 14)) person(); - else if (! blo) t11(s.mlieu, cx); + if ((a == 13) || (a == 14)) + person(); + else if (! blo) + t11(s.mlieu, cx); mpers = 0; } } -- cgit v1.2.3 From b5cbc1b8a56fa6841680d34e4a439eae7af0e3e3 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 19 Feb 2012 21:56:29 +0100 Subject: MORTEVIELLE: Some more code formatting in mouse --- engines/mortevielle/mouse.cpp | 92 ++++++++++++++++++++----------------------- 1 file changed, 43 insertions(+), 49 deletions(-) diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index d99163cc6f..d724fe652b 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -36,8 +36,7 @@ namespace Mortevielle { const int m_arrow = 0; const int m_point_hand = 1; -bool int_m, - clic; +bool int_m, clic; int m_show, x_s, @@ -91,7 +90,7 @@ void hideMouse() { imp = odd(y_s); j = p_o_s; switch (gd) { - case cga: { + case cga: k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); do { @@ -102,9 +101,8 @@ void hideMouse() { j += 80; k = succ(int, k); } while (!(k >= 5)); - } - break; - case ams: { + break; + case ams: for (i = 0; i <= 3; i ++) { port[0x3dd] = 1 << i; k = 0; @@ -117,13 +115,12 @@ void hideMouse() { WRITE_LE_UINT16(&mem[0xb800 * 16 + j], s_s[i][k]); j += 0x2000; } - imp = ! imp; + imp = !imp; k = succ(int, k); } while (!(k >= 8)); } - } - break; - case ega: { + break; + case ega: port[0x3c4] = 2; port[0x3ce] = 8; port[0x3cf] = 255; @@ -142,18 +139,16 @@ void hideMouse() { } while (!(k >= 8)); ++i; } while (!(i == 4)); - } - break; - case her: { + break; + case her: j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); for (i = 0; i <= 5; i ++) { for (k = 0; k <= 3; k ++) WRITE_LE_UINT16(&mem[0xb000 * 16 + k * 0x200 + j], s_s[i][k]); j += 80; } - } - break; - case tan: { + break; + case tan: j = ((uint)y_s >> 2) * 160 + ((uint)x_s >> 1); k = 0; do { @@ -164,10 +159,10 @@ void hideMouse() { j += 160; k = succ(int, k); } while (!(k == 3)); - } - break; - - } /* case Gd */ + break; + default: + break; + } // case Gd } } @@ -180,12 +175,13 @@ void showMouse() { bool imp; mouse_shwn = mouse_shwn + 1; - if (mouse_shwn != 1) return; + if (mouse_shwn != 1) + return; j = p_o_s; imp = odd(y_s); i = x_s & 7; switch (gd) { - case cga: { + case cga: k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); do { @@ -196,9 +192,8 @@ void showMouse() { j += 80; k = succ(int, k); } while (!(k >= 5)); - } - break; - case ams: { + break; + case ams: for (i = 0; i <= 3; i ++) { j = p_o_s; imp = odd(y_s); @@ -212,13 +207,12 @@ void showMouse() { s_s[i][k] = READ_LE_UINT16(&mem[0xb800 * 16 + j]); j += 0x2000; } - imp = ! imp; + imp = !imp; k = succ(int, k); } while (!(k >= 8)); } - } - break; - case ega: { + break; + case ega: port[0x3ce] = 4; l = 0; do { @@ -232,18 +226,16 @@ void showMouse() { } while (!(k >= 8)); ++l; } while (!(l == 4)); - } - break; - case her: { + break; + case her: j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); for (i = 0; i <= 5; i ++) { for (k = 0; k <= 3; k ++) s_s[i][k] = READ_LE_UINT16(&mem[0xb000 * 16 + k * 0x200 + j]); - j = j + 80; + j += 80; } - } - break; - case tan: { + break; + case tan: j = ((uint)y_s >> 2) * 160 + ((uint)x_s >> 1); k = 0; do { @@ -254,9 +246,10 @@ void showMouse() { j += 160; k = succ(int, k); } while (!(k == 3)); - } - break; - } /* case Gd */ + break; + default: + break; + } // case Gd } /** @@ -370,26 +363,26 @@ void moveMouse(bool &funct, char &key) { cy = succ(int, cy); break; case 'M': - cx = cx + 2; + cx += 2; break; case 'H': cy = pred(int, cy); break; case 'G': - cx = cx - 1; - cy = cy - 1; + --cx; + --cy; break; case 'I': - cx = cx + 1; - cy = cy - 1; + ++cx; + --cy; break; case 'O': - cx = cx - 1; - cy = cy + 1; + --cx; + ++cy; break; case 'Q': - cx = cx + 1; - cy = cy + 1; + ++cx; + ++cy; break; default: break; @@ -422,7 +415,7 @@ void moveMouse(bool &funct, char &key) { cy = 8; break; case '\23': - sonoff = ! sonoff; + sonoff = !sonoff; return; break; case '\26': @@ -446,6 +439,7 @@ void moveMouse(bool &funct, char &key) { default: break; } + setMousePos(cx, cy); p_key = keypressed(); } -- cgit v1.2.3 From 6150e9583853b333dfa362c4eb24c3848f20580d Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 19 Feb 2012 23:17:22 +0100 Subject: MORTEVIELLE: Apply coding conventions to actions.cpp --- engines/mortevielle/actions.cpp | 822 +++++++++++++++++++++++++--------------- 1 file changed, 515 insertions(+), 307 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index fe9d3a4dda..5aa91f80df 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -56,69 +56,106 @@ void taller() { if (!syn) ecr3(g_vm->getString(S_GO_TO)); tfleche(); - if (iesc) okdes = false; - if ((anyone) || (iesc)) return; + if (iesc) + okdes = false; + if ((anyone) || (iesc)) + return; tcoord(1); - if (num == 0) return; + if (num == 0) + return; if (num == 1) { s.mlieu = 0; tmlieu(0); } else if (num == 7) { s.mlieu = 13; tmlieu(13); - } else if (num != 6) s.mlieu = 26; - if ((num > 1) && (num < 6)) ment = num - 1; - if (num > 7) ment = num - 3; - if (num != 6) affrep(); - else aldepl(); + } else if (num != 6) + s.mlieu = 26; + if ((num > 1) && (num < 6)) + ment = num - 1; + if (num > 7) + ment = num - 3; + if (num != 6) + affrep(); + else + aldepl(); return; } tsort(); cx = 0; do { - cx = cx + 1; + ++cx; } while (!(g_vm->_menu._depl[cx] == msg[4])); if (s.mlieu == 19) { - if (cx == 1) t1deva(); - if (cx == 2) t1neig(); + if (cx == 1) + t1deva(); + if (cx == 2) + t1neig(); goto L2; } if (s.mlieu == 23) { - if (cx == 1) t1deau(); - if (cx == 2) t1derr(); + if (cx == 1) + t1deau(); + if (cx == 2) + t1derr(); goto L2; } - if ((s.mlieu == 11) && (cx == 1)) cx = 6; + if ((s.mlieu == 11) && (cx == 1)) + cx = 6; if (s.mlieu == 12) { - if (cx == 2) cx = 6; - if (cx == 5) cx = 16; + if (cx == 2) + cx = 6; + if (cx == 5) + cx = 16; } - if ((s.mlieu == 14) && (cx == 3)) cx = 6; - if (((s.mlieu == 15) || (s.mlieu == 26)) && (cx == 4)) cx = 6; - if ((s.mlieu > 19) && (s.mlieu != 26)) cx = cx + 10; - if ((s.mlieu == 20) && (cx == 13)) cx = 16; + if ((s.mlieu == 14) && (cx == 3)) + cx = 6; + if (((s.mlieu == 15) || (s.mlieu == 26)) && (cx == 4)) + cx = 6; + if ((s.mlieu > 19) && (s.mlieu != 26)) + cx += 10; + if ((s.mlieu == 20) && (cx == 13)) + cx = 16; if (s.mlieu == 21) { - if (cx == 12) cx = 16; - else if (cx > 13) cx = 15; + if (cx == 12) + cx = 16; + else if (cx > 13) + cx = 15; } - if ((s.mlieu == 22) && (cx > 14)) cx = 15; + if ((s.mlieu == 22) && (cx > 14)) + cx = 15; if ((s.mlieu == 24) && (cx != 17)) - if (cx > 13) cx = 15; - if (cx == 1) s.mlieu = 11; - else if (cx == 2) s.mlieu = 12; - else if (cx == 3) s.mlieu = 14; - else if (cx == 4) s.mlieu = 15; - else if (cx == 5) cx = 12; - if (cx == 6) cx = 11; - if (cx == 11) t1sama(); - else if (cx == 12) t1deva(); - else if (cx == 13) s.mlieu = 20; - else if (cx == 14) s.mlieu = 24; - else if (cx == 15) t1neig(); - else if (cx == 16) t1derr(); + if (cx > 13) + cx = 15; + if (cx == 1) + s.mlieu = 11; + else if (cx == 2) + s.mlieu = 12; + else if (cx == 3) + s.mlieu = 14; + else if (cx == 4) + s.mlieu = 15; + else if (cx == 5) + cx = 12; + if (cx == 6) + cx = 11; + if (cx == 11) + t1sama(); + else if (cx == 12) + t1deva(); + else if (cx == 13) + s.mlieu = 20; + else if (cx == 14) + s.mlieu = 24; + else if (cx == 15) + t1neig(); + else if (cx == 16) + t1derr(); else if (cx == 17) { - if ((s.ipuit != 120) && (s.ipuit != 140)) crep = 997; - else if (s.ipuit == 120) crep = 181; + if ((s.ipuit != 120) && (s.ipuit != 140)) + crep = 997; + else if (s.ipuit == 120) + crep = 181; else if (s.conf > 80) { crep = 1505; tperd(); @@ -127,7 +164,8 @@ void taller() { affrep(); } } - if ((cx < 5) || (cx == 13) || (cx == 14)) affrep(); + if ((cx < 5) || (cx == 13) || (cx == 14)) + affrep(); debloc(s.mlieu); L2: tmlieu(s.mlieu); @@ -141,26 +179,34 @@ void tprendre() { cx = caff; avpoing(cx); if (crep != 139) { - if (ipers > 0) s.conf = s.conf + 3; + if (ipers > 0) + s.conf += 3; if (obpart) { - if (s.mlieu == 2) s.iloic = 0; + if (s.mlieu == 2) + s.iloic = 0; if (s.mlieu == 13) { - if (s.iboul == caff) s.iboul = 0; - if (s.ibag == caff) s.ibag = 0; + if (s.iboul == caff) + s.iboul = 0; + if (s.ibag == caff) + s.ibag = 0; } - if (s.mlieu == 14) s.icave = 0; - if (s.mlieu == 16) s.icryp = 0; - if (s.mlieu == 17) s.ivier = 0; - if (s.mlieu == 24) s.ipuit = 0; + if (s.mlieu == 14) + s.icave = 0; + if (s.mlieu == 16) + s.icryp = 0; + if (s.mlieu == 17) + s.ivier = 0; + if (s.mlieu == 24) + s.ipuit = 0; mfouen(); obpart = false; affrep(); } else { tabdon[acha + (pred(int, mchai) * 10) + pred(int, cs)] = 0; tsuiv(); - dobj = dobj + 1; + ++dobj; if (dobj > 6) { - s.conf = s.conf + 2; + s.conf += 2; dobj = 0; } } @@ -170,7 +216,8 @@ void tprendre() { if (!syn) ecr3(g_vm->getString(S_TAKE)); tfleche(); - if ((anyone) || (iesc)) return; + if ((anyone) || (iesc)) + return; if (caff == 3) { tcoord(2); if (num == 1) { @@ -182,22 +229,28 @@ void tprendre() { if ((num == 0) || ((num == 1) && (s.mlieu == 16))) { tcoord(8); if (num != 0) { - if (ipers > 0) s.conf = s.conf + 3; + if (ipers > 0) + s.conf += 3; crep = 997; - if ((s.mlieu == 2) && (s.iloic != 0)) avpoing(s.iloic); + if ((s.mlieu == 2) && (s.iloic != 0)) + avpoing(s.iloic); if ((s.mlieu == 13) && (num == 1) && (s.iboul != 0)) { avpoing(s.iboul); - if ((crep != 997) && (crep != 139)) aniof(2, 7); + if ((crep != 997) && (crep != 139)) + aniof(2, 7); } if ((s.mlieu == 13) && (num == 2) && (s.ibag != 0)) { avpoing(s.ibag); - if ((crep != 997) && (crep != 139)) aniof(2, 6); + if ((crep != 997) && (crep != 139)) + aniof(2, 6); } if ((s.mlieu == 14) && (s.icave != 0)) { avpoing(s.icave); - if ((crep != 997) && (crep != 139)) aniof(2, 2); + if ((crep != 997) && (crep != 139)) + aniof(2, 2); } - if ((s.mlieu == 16) && (s.icryp != 0)) avpoing(s.icryp); + if ((s.mlieu == 16) && (s.icryp != 0)) + avpoing(s.icryp); if ((s.mlieu == 17) && (s.ivier != 0)) { avpoing(s.ivier); if ((crep != 997) && (crep != 139)) { @@ -207,25 +260,26 @@ void tprendre() { } if ((s.mlieu == 24) && (s.ipuit != 0)) { avpoing(s.ipuit); - if ((crep != 997) && (crep != 139)) aniof(2, 1); + if ((crep != 997) && (crep != 139)) + aniof(2, 1); } - if ((crep != 997) && (crep != 182) && (crep != 139)) crep = 999; + if ((crep != 997) && (crep != 182) && (crep != 139)) + crep = 999; } } else { - if (((s.mlieu == 0) && (num == 3)) || ((s.mlieu == 1) && (num == 4)) - || ((s.mlieu == 2) && (num == 1)) || ((s.mlieu == 4) && (num == 3)) - || ((s.mlieu == 5) && (num == 6)) || ((s.mlieu == 6) && (num == 2)) - || ((s.mlieu == 7) && (num == 6)) || ((s.mlieu == 8) && (num == 4)) - || ((s.mlieu == 9) && (num == 4)) || ((s.mlieu == 10) && (num > 2)) - || ((s.mlieu == 11) && (num == 7)) || ((s.mlieu == 12) && (num == 6)) - || ((s.mlieu == 13) && (num > 4)) || ((s.mlieu > 13) - && (s.mlieu != 23))) crep = 997; - else { - if (s.mlieu == 23) { - crep = 1504; - tperd(); - } else crep = 120; - } + if ( ((s.mlieu == 0) && (num == 3)) || ((s.mlieu == 1) && (num == 4)) + || ((s.mlieu == 2) && (num == 1)) || ((s.mlieu == 4) && (num == 3)) + || ((s.mlieu == 5) && (num == 6)) || ((s.mlieu == 6) && (num == 2)) + || ((s.mlieu == 7) && (num == 6)) || ((s.mlieu == 8) && (num == 4)) + || ((s.mlieu == 9) && (num == 4)) || ((s.mlieu == 10) && (num > 2)) + || ((s.mlieu == 11) && (num == 7)) || ((s.mlieu == 12) && (num == 6)) + || ((s.mlieu == 13) && (num > 4)) || ((s.mlieu > 13) && (s.mlieu != 23)) ) + crep = 997; + else if (s.mlieu == 23) { + crep = 1504; + tperd(); + } else + crep = 120; } } @@ -234,13 +288,14 @@ void tsprendre() { cx = 0; do { - cx = cx + 1; + ++cx; } while (!(g_vm->_menu._invt[cx] == msg[4])); cz = 0; cy = 0; do { - cy = cy + 1; - if (ord(s.sjer[cy]) != 0) cz = cz + 1; + ++cy; + if (ord(s.sjer[cy]) != 0) + ++cz; } while (!(cz == cx)); cz = ord(s.sjer[cy]); s.sjer[cy] = chr(0); @@ -250,37 +305,43 @@ void tsprendre() { clsf2(); } -void tsoulever() - -{ +void tsoulever() { int cx; if (!syn) ecr3(g_vm->getString(S_LIFT)); tfleche(); - if ((anyone) || (iesc)) return; + if ((anyone) || (iesc)) + return; tcoord(3); if (num == 0) { tcoord(8); if (num != 0) { - if (ipers > 0) s.conf = s.conf + 1; + if (ipers > 0) + ++s.conf; crep = 997; - if ((s.mlieu == 2) && (s.iloic != 0)) treg(s.iloic); + if ((s.mlieu == 2) && (s.iloic != 0)) + treg(s.iloic); } return; } - if (ipers > 0) s.conf = s.conf + 1; + if (ipers > 0) + ++s.conf; cx = s.mlieu; - if (s.mlieu == 16) cx = 14; - if (s.mlieu == 19) cx = 15; + if (s.mlieu == 16) + cx = 14; + else if (s.mlieu == 19) + cx = 15; crep = tabdon[asoul + (cx << 3) + pred(int, num)]; - if (crep == 255) crep = 997; + if (crep == 255) + crep = 997; } void tlire() { // int iaff; - if (caff > 99) st4(caff); + if (caff > 99) + st4(caff); else { if (!syn) ecr3(g_vm->getString(S_READ)); @@ -294,8 +355,10 @@ void tlire() { } void tslire() { - if (s.derobj == 0) crep = 186; - else st4(s.derobj); + if (s.derobj == 0) + crep = 186; + else + st4(s.derobj); } void tregarder() { @@ -308,7 +371,8 @@ void tregarder() { if (!syn) ecr3(g_vm->getString(S_LOOK)); tfleche(); - if ((anyone) || (iesc)) return; + if ((anyone) || (iesc)) + return; tcoord(5); if (num == 0) { tcoord(8); @@ -317,46 +381,65 @@ void tregarder() { if (s.mlieu == 13) { if (num == 1) { crep = 164; - if (s.ibag != 0) treg(s.ibag); - else if (s.iboul != 0) treg(s.iboul); + if (s.ibag != 0) + treg(s.ibag); + else if (s.iboul != 0) + treg(s.iboul); } else { crep = 193; - if (s.ibag != 0) treg(s.ibag); + if (s.ibag != 0) + treg(s.ibag); } } if (s.mlieu == 14) { crep = 164; - if (s.icave != 0) treg(s.icave); + if (s.icave != 0) + treg(s.icave); } if (s.mlieu == 17) { crep = 174; - if (s.ivier != 0) treg(s.ivier); + if (s.ivier != 0) + treg(s.ivier); } if (s.mlieu == 24) { crep = 131; - if (s.ipuit != 0) treg(s.ipuit); + if (s.ipuit != 0) + treg(s.ipuit); } } return; } cx = s.mlieu; - if (s.mlieu == 20) cx = 17; - if ((s.mlieu > 21) && (s.mlieu < 25)) cx = cx - 4; - if (s.mlieu == 26) cx = 21; + if (s.mlieu == 20) + cx = 17; + if ((s.mlieu > 21) && (s.mlieu < 25)) + cx -= 4; + if (s.mlieu == 26) + cx = 21; crep = tabdon[arega + (cx * 7) + pred(int, num)]; - if ((s.mlieu == 13) && (num == 8)) crep = 126; - if (s.mlieu == 19) crep = 103; - if (crep == 255) crep = 131; - if ((s.mlieu == 1) && (num == 1)) treg(144); - if ((s.mlieu == 5) && (num == 3)) treg(147); - if ((s.mlieu == 8) && (num == 3)) treg(149); - if ((s.mlieu == 9) && (num == 2)) treg(30); - if ((s.mlieu == 10) && (num == 3)) treg(31); + if ((s.mlieu == 13) && (num == 8)) + crep = 126; + if (s.mlieu == 19) + crep = 103; + if (crep == 255) + crep = 131; + if ((s.mlieu == 1) && (num == 1)) + treg(144); + if ((s.mlieu == 5) && (num == 3)) + treg(147); + if ((s.mlieu == 8) && (num == 3)) + treg(149); + if ((s.mlieu == 9) && (num == 2)) + treg(30); + if ((s.mlieu == 10) && (num == 3)) + treg(31); } void tsregarder() { - if (s.derobj != 0) treg(s.derobj); - else crep = 186; + if (s.derobj != 0) + treg(s.derobj); + else + crep = 186; } void tfouiller() { @@ -370,7 +453,8 @@ void tfouiller() { if (!syn) ecr3(g_vm->getString(S_SEARCH)); tfleche(); - if (anyone || iesc) return; + if (anyone || iesc) + return; if (s.mlieu == 23) { crep = 1504; tperd(); @@ -382,11 +466,13 @@ void tfouiller() { if (num != 0) { cx = 0; do { - cx = cx + 1; + ++cx; } while (!((cx > 6) || (num == ord(touv[cx])))); - if (num != ord(touv[cx])) crep = 187; + if (num != ord(touv[cx])) + crep = 187; else { - if (ipers > 0) s.conf = s.conf + 3; + if (ipers > 0) + s.conf += 3; rechai(mchai); if (mchai != 0) { cs = 0; @@ -394,42 +480,55 @@ void tfouiller() { fouil = true; mfoudi(); tsuiv(); - } else crep = 997; + } else + crep = 997; } } else { tcoord(8); crep = 997; if (num != 0) { - if (ipers > 0) s.conf = s.conf + 3; + if (ipers > 0) + s.conf += 3; if ((s.mlieu != 24) && (s.mlieu != 17) && (s.mlieu != 13)) { if (s.mlieu == 2) { crep = 123; - if (s.iloic != 0) treg(s.iloic); + if (s.iloic != 0) + treg(s.iloic); } if (s.mlieu == 16) { crep = 123; - if (s.icryp != 0) treg(s.icryp); + if (s.icryp != 0) + treg(s.icryp); } } } } } else { - if (ipers > 0) s.conf = s.conf + 3; + if (ipers > 0) + s.conf += 3; crep = 997; - if (s.mlieu < 14) crep = r[s.mlieu]; - if ((s.mlieu == 3) && (num == 2)) crep = 162; + if (s.mlieu < 14) + crep = r[s.mlieu]; + if ((s.mlieu == 3) && (num == 2)) + crep = 162; if (s.mlieu == 12) { - if ((num == 3) || (num == 4)) crep = 162; - if (num == 5) crep = 159; + if ((num == 3) || (num == 4)) + crep = 162; + else if (num == 5) + crep = 159; } - if (s.mlieu == 19) crep = 104; - if (s.mlieu == 16) crep = 155; + if (s.mlieu == 19) + crep = 104; + else if (s.mlieu == 16) + crep = 155; } } void tsfouiller() { - if (s.derobj != 0) st7(s.derobj); - else crep = 186; + if (s.derobj != 0) + st7(s.derobj); + else + crep = 186; } void touvrir() { @@ -441,7 +540,8 @@ void touvrir() { if (ment != 0) { msg[4] = entrer; syn = true; - } else crep = 997; + } else + crep = 997; return; } if (caff == 15) { @@ -449,40 +549,42 @@ void touvrir() { return; } tfleche(); - if ((anyone) || (iesc)) return; + if ((anyone) || (iesc)) + return; tcoord(7); if (num != 0) { - if (ipers > 0) s.conf = s.conf + 2; - iouv = iouv + 1; + if (ipers > 0) + s.conf += 2; + ++iouv; cx = 0; do { - cx = cx + 1; + ++cx; } while (!((cx > 6) || (ord(touv[cx]) == 0) || (ord(touv[cx]) == num))); if (ord(touv[cx]) != num) { - if (! - ( - ((num == 3) && ((s.mlieu == 0) || (s.mlieu == 9) || (s.mlieu == 5) || (s.mlieu == 7))) - || - ((num == 4) && ((s.mlieu == 1) || (s.mlieu == 2) || (s.mlieu == 6))) || - ((s.mlieu == 4) && (num == 5)) || - ((num == 6) && ((s.mlieu == 7) || (s.mlieu == 10) || - (s.mlieu == 8) || (s.mlieu == 13))) || - ((s.mlieu == 8) && (num == 2)) || - ((s.mlieu == 12) && (num == 7)))) { - if (((s.mlieu > 10) && (s.mlieu < 14)) || - ((s.mlieu > 6) && (s.mlieu < 10)) || - (s.mlieu == 0) || (s.mlieu == 2) || (s.mlieu == 5)) { + if (!( ((num == 3) && ((s.mlieu == 0) || (s.mlieu == 9) || (s.mlieu == 5) || (s.mlieu == 7))) + || ((num == 4) && ((s.mlieu == 1) || (s.mlieu == 2) || (s.mlieu == 6))) + || ((s.mlieu == 4) && (num == 5)) + || ((num == 6) && ((s.mlieu == 7) || (s.mlieu == 10) || (s.mlieu == 8) || (s.mlieu == 13))) + || ((s.mlieu == 8) && (num == 2)) + || ((s.mlieu == 12) && (num == 7))) ) { + if ( ((s.mlieu > 10) && (s.mlieu < 14)) + || ((s.mlieu > 6) && (s.mlieu < 10)) + || (s.mlieu == 0) || (s.mlieu == 2) || (s.mlieu == 5)) { haz = hazard(1, 4); - if (haz == 3) parole(7, 9, 1); + if (haz == 3) + parole(7, 9, 1); } touv[cx] = chr(num); aniof(1, num); } cx = s.mlieu; - if (s.mlieu == 16) cx = 14; + if (s.mlieu == 16) + cx = 14; crep = tabdon[aouvr + (cx * 7) + pred(int, num)]; - if (crep == 254) crep = 999; - } else crep = 18; + if (crep == 254) + crep = 999; + } else + crep = 18; } } @@ -500,26 +602,33 @@ void tmettre() { if (!syn) ecr3(g_vm->getString(S_PUT)); tfleche(); - if (iesc) crep = 998; - if ((anyone) || (iesc)) return; + if (iesc) + crep = 998; + if ((anyone) || (iesc)) + return; tcoord(8); if (num != 0) { crep = 999; if (caff == 13) { if (num == 1) { - if (s.iboul != 0) crep = 188; + if (s.iboul != 0) + crep = 188; else { s.iboul = s.derobj; - if (s.derobj == 141) aniof(1, 7); + if (s.derobj == 141) + aniof(1, 7); } - } else if (s.ibag != 0) crep = 188; + } else if (s.ibag != 0) + crep = 188; else { s.ibag = s.derobj; - if (s.derobj == 159) aniof(1, 6); + if (s.derobj == 159) + aniof(1, 6); } } if (caff == 14) - if (s.icave != 0) crep = 188; + if (s.icave != 0) + crep = 188; else { s.icave = s.derobj; if (s.derobj == 151) { @@ -572,10 +681,13 @@ void tmettre() { } } if (caff == 16) - if (s.icryp == 0) s.icryp = s.derobj; - else crep = 188; + if (s.icryp == 0) + s.icryp = s.derobj; + else + crep = 188; if (caff == 17) - if (s.ivier != 0) crep = 188; + if (s.ivier != 0) + crep = 188; else if (s.derobj == 143) { s.ivier = 143; aniof(1, 1); @@ -584,12 +696,15 @@ void tmettre() { tperd(); } if (caff == 24) - if (s.ipuit != 0) crep = 188; + if (s.ipuit != 0) + crep = 188; else if ((s.derobj == 140) || (s.derobj == 120)) { s.ipuit = s.derobj; aniof(1, 1); - } else crep = 185; - if (crep != 188) maivid(); + } else + crep = 185; + if (crep != 188) + maivid(); } } @@ -603,7 +718,8 @@ void ttourner() { if (!syn) ecr3(g_vm->getString(S_TURN)); tfleche(); - if ((anyone) || (iesc)) return; + if ((anyone) || (iesc)) + return; tcoord(9); if (num != 0) { crep = 997; @@ -613,7 +729,8 @@ void ttourner() { quel = Alert::show(g_vm->getString(S_YES_NO), 1); if (quel == 1) g_vm->_endGame = true; - else crep = 168; + else + crep = 168; } if ((s.mlieu == 17) && (s.ivier == 143)) { repon(2, 175); @@ -623,7 +740,8 @@ void ttourner() { if (quel == 1) { s.mlieu = 16; affrep(); - } else crep = 176; + } else + crep = 176; } } } @@ -634,7 +752,8 @@ void tcacher() { tfleche(); if (!(anyone) && !(iesc)) { tcoord(10); - if (num == 0) cache = false; + if (num == 0) + cache = false; else { cache = true; crep = 999; @@ -643,7 +762,8 @@ void tcacher() { } void tattacher() { - if (s.derobj == 0) crep = 186; + if (s.derobj == 0) + crep = 186; else { if (!syn) ecr3(g_vm->getString(S_TIE)); @@ -656,7 +776,8 @@ void tattacher() { if ((s.derobj == 120) || (s.derobj == 140)) { s.ipuit = s.derobj; aniof(1, 1); - } else crep = 185; + } else + crep = 185; maivid(); } } @@ -670,27 +791,32 @@ void tfermer() { ecr3(g_vm->getString(S_CLOSE)); if (caff < 26) { tfleche(); - if (iesc) crep = 998; - if ((anyone) || (iesc)) return; + if (iesc) + crep = 998; + if ((anyone) || (iesc)) + return; tcoord(7); if (num != 0) { cx = 0; do { - cx = cx + 1; + ++cx; } while (!((cx > 6) || (num == ord(touv[cx])))); if (num == ord(touv[cx])) { aniof(2, num); crep = 998; touv[cx] = chr(0); iouv = iouv - 1; - if (iouv < 0) iouv = 0; + if (iouv < 0) + iouv = 0; chai = 9999; rechai(chai); - if (mchai == chai) mchai = 0; + if (mchai == chai) + mchai = 0; } else crep = 187; } } - if (caff == 26) crep = 999; + if (caff == 26) + crep = 999; } void tfrapper() { @@ -705,8 +831,10 @@ void tfrapper() { if (s.mlieu < 25) { tfleche(); if (!(anyone) && !(iesc)) - if ((s.mlieu < 19) && (s.mlieu != 15)) crep = 133; - else crep = 997; + if ((s.mlieu < 19) && (s.mlieu != 15)) + crep = 133; + else + crep = 997; return; } if (s.mlieu == 26) { @@ -716,13 +844,16 @@ void tfrapper() { l = ment; if (l != 0) if (p != -500) { - if (haz > p) crep = 190; + if (haz > p) + crep = 190; else { becfren(l); frap(); } - } else frap(); - if (ment == 8) crep = 190; + } else + frap(); + if (ment == 8) + crep = 190; } } @@ -731,27 +862,32 @@ void tposer() { if (!syn) ecr3(g_vm->getString(S_POSE)); - if (s.derobj == 0) crep = 186; + if (s.derobj == 0) + crep = 186; else { if (caff > 99) { crep = 999; ajchai(); - if (crep != 192) maivid(); + if (crep != 192) + maivid(); return; } tfleche(); - if ((anyone) || (iesc)) return; + if ((anyone) || (iesc)) + return; tcoord(7); crep = 124; if (num != 0) { rechai(chai); - if (chai == 0) crep = 997; + if (chai == 0) + crep = 997; else { cx = 0; do { - cx = cx + 1; + ++cx; } while (!((cx > 6) || (num == ord(touv[cx])))); - if (num != ord(touv[cx])) crep = 187; + if (num != ord(touv[cx])) + crep = 187; else { mchai = chai; crep = 999; @@ -762,32 +898,46 @@ void tposer() { if (num != 0) { crep = 998; if (caff == 2) - if (s.iloic != 0) crep = 188; - else s.iloic = s.derobj; + if (s.iloic != 0) + crep = 188; + else + s.iloic = s.derobj; if (caff == 13) { if (num == 1) { - if (s.iboul != 0) crep = 188; - else s.iboul = s.derobj; - } else if (s.ibag != 0) crep = 188; - else s.ibag = s.derobj; + if (s.iboul != 0) + crep = 188; + else + s.iboul = s.derobj; + } else if (s.ibag != 0) + crep = 188; + else + s.ibag = s.derobj; } if (caff == 16) - if (s.icryp != 0) crep = 188; - else s.icryp = s.derobj; - if (caff == 24) crep = 185; - if ((caff == 14) || (caff == 17)) crep = 124; + if (s.icryp != 0) + crep = 188; + else + s.icryp = s.derobj; + if (caff == 24) + crep = 185; + if ((caff == 14) || (caff == 17)) + crep = 124; } else { crep = 124; if (caff == 24) { tcoord(5); - if (num != 0) crep = 185; + if (num != 0) + crep = 185; } } } - if (caff == 23) crep = 185; + if (caff == 23) + crep = 185; if ((crep == 999) || (crep == 185) || (crep == 998)) { - if (crep == 999) ajchai(); - if (crep != 192) maivid(); + if (crep == 999) + ajchai(); + if (crep != 192) + maivid(); } } } @@ -795,25 +945,34 @@ void tposer() { void tecouter() { int l, p, haz, j, h, m; - if (s.mlieu != 26) crep = 101; + if (s.mlieu != 26) + crep = 101; else { - if (ipers != 0) s.conf = s.conf + 1; + if (ipers != 0) + ++s.conf; ecfren(p, haz, s.conf, ment); l = ment; - if (l != 0) + if (l != 0) { if (p != -500) { - if (haz > p) crep = 101; + if (haz > p) + crep = 101; else { becfren(l); calch(j, h, m); haz = hazard(1, 100); if ((h >= 0) && (h < 8)) { - if (haz > 30) crep = 101; - else crep = 178; - } else if (haz > 70) crep = 101; - else crep = 178; + if (haz > 30) + crep = 101; + else + crep = 178; + } else if (haz > 70) + crep = 101; + else + crep = 178; } - } else crep = 178; + } else + crep = 178; + } } } @@ -832,15 +991,20 @@ void tmanger() { if ((h == 12) || (h == 13) || (h == 19)) { s.conf = s.conf - (s.conf / 7); if (h == 12) - if (m == 0) h = 4; - else h = 3; + if (m == 0) + h = 4; + else + h = 3; if ((h == 13) || (h == 19)) - if (m == 0) h = 2; - else h = 1; - jh = jh + h; + if (m == 0) + h = 2; + else + h = 1; + jh += h; crep = 135; tinke(); - } else crep = 134; + } else + crep = 134; } } @@ -850,49 +1014,52 @@ void tentrer() { if ((s.mlieu == 21) || (s.mlieu == 22)) { t1sama(); tmlieu(s.mlieu); - } else if (s.mlieu == 15) aldepl(); - else if (ment == 0) crep = 997; - else { - if ((ment == 9) && (s.derobj != 136)) { + } else if (s.mlieu == 15) + aldepl(); + else if (ment == 0) + crep = 997; + else if ((ment == 9) && (s.derobj != 136)) { crep = 189; s.teauto[8] = '*'; - } else { - if (! blo) t11(ment, z); - if (z != 0) { - if ((ment == 3) || (ment == 7)) crep = 179; - else { - x = (hazard(0, 10)) - 5; - parole(7, x, 1); - aniof(1, 1); - - tip(z, x); - s.conf = s.conf + 1; - s.mlieu = 15; - msg[3] = discut; - msg[4] = g_vm->_menu._disc[x]; - syn = true; - if (ment == 9) { - col = true; - caff = 70; - afdes(0); - repon(2, caff); - } else col = false; - debloc(ment); - ment = 0; - } - } else { + } else { + if (! blo) + t11(ment, z); + if (z != 0) { + if ((ment == 3) || (ment == 7)) + crep = 179; + else { x = (hazard(0, 10)) - 5; parole(7, x, 1); aniof(1, 1); - s.mlieu = ment; - affrep(); - debloc(s.mlieu); - tmlieu(s.mlieu); + tip(z, x); + ++s.conf; + s.mlieu = 15; + msg[3] = discut; + msg[4] = g_vm->_menu._disc[x]; + syn = true; + if (ment == 9) { + col = true; + caff = 70; + afdes(0); + repon(2, caff); + } else + col = false; + debloc(ment); ment = 0; - mpers = 0; - ipers = 0; } + } else { + x = (hazard(0, 10)) - 5; + parole(7, x, 1); + aniof(1, 1); + + s.mlieu = ment; + affrep(); + debloc(s.mlieu); + tmlieu(s.mlieu); + ment = 0; + mpers = 0; + ipers = 0; } } } @@ -921,13 +1088,15 @@ void tdormir() { if (h < 8) { s.conf = s.conf - (s.conf / 20); z = (7 - h) * 2; - if (m == 30) z = z - 1; - jh = jh + z; + if (m == 30) + --z; + jh += z; h = 7; } - jh = jh + 2; - h = h + 1; - if (h > 23) h = 0; + jh += 2; + ++h; + if (h > 23) + h = 0; tinke(); quel = Alert::show(g_vm->getString(S_YES_NO), 1); anyone = false; @@ -939,12 +1108,14 @@ void tdormir() { void tdefoncer() { if (!syn) ecr3(g_vm->getString(S_SMASH)); - if (caff < 25) tfleche(); + if (caff < 25) + tfleche(); if ((! anyone) && (! iesc)) - if (s.mlieu != 26) crep = 997; + if (s.mlieu != 26) + crep = 997; else { crep = 143; - s.conf = s.conf + 2; + s.conf += 2; } } @@ -953,21 +1124,28 @@ void tsortir() { tsort(); crep = 0; - if ((s.mlieu == 19) || (s.mlieu == 21) || (s.mlieu == 22) - || (s.mlieu == 24)) crep = 997; + if ((s.mlieu == 19) || (s.mlieu == 21) || (s.mlieu == 22) || (s.mlieu == 24)) + crep = 997; else { - if ((s.mlieu < 16) || (s.mlieu == 26)) lx = 10; - if ((s.mlieu == 10) || (s.mlieu == 20)) lx = 21; - if ((s.mlieu < 10) || (s.mlieu == 13)) lx = 15; + if ((s.mlieu < 16) || (s.mlieu == 26)) + lx = 10; + if ((s.mlieu == 10) || (s.mlieu == 20)) + lx = 21; + if ((s.mlieu < 10) || (s.mlieu == 13)) + lx = 15; if (s.mlieu == 16) { lx = 17; crep = 176; } - if (s.mlieu == 17) t23coul(lx); - if (s.mlieu == 23) lx = 24; - if (crep != 997) s.mlieu = lx; + if (s.mlieu == 17) + t23coul(lx); + if (s.mlieu == 23) + lx = 24; + if (crep != 997) + s.mlieu = lx; caff = lx; - if (crep == 0) crep = lx; + if (crep == 0) + crep = lx; debloc(lx); tmlieu(lx); } @@ -979,22 +1157,27 @@ void tattendre() { mpers = 0; clsf3(); do { - jh = jh + 1; + ++jh; tinke(); - if (! blo) t11(s.mlieu, quel); + if (!blo) + t11(s.mlieu, quel); if ((ipers != 0) && (mpers == 0)) { crep = 998; - if ((s.mlieu == 13) || (s.mlieu == 14)) cavegre(); - if ((s.mlieu > 0) && (s.mlieu < 10)) anyone = true; + if ((s.mlieu == 13) || (s.mlieu == 14)) + cavegre(); + if ((s.mlieu > 0) && (s.mlieu < 10)) + anyone = true; mpers = ipers; - if (! anyone) tinke(); + if (!anyone) + tinke(); return; } repon(2, 102); quel = Alert::show(g_vm->getString(S_YES_NO), 1); } while (!(quel == 2)); crep = 998; - if (! anyone) tinke(); + if (!anyone) + tinke(); } void tsonder() { @@ -1002,14 +1185,13 @@ void tsonder() { ecr3(g_vm->getString(S_PROBE2)); if (caff < 27) { tfleche(); - if (!(anyone) && (! iesc)) crep = 145; + if (!(anyone) && (!iesc)) + crep = 145; num = 0; } } -void tparler() - -{ +void tparler() { bool te[47]; int ix, cy, cx, max, haz, suj, co, lig, icm, i, tay, choi, x, y, c; @@ -1018,14 +1200,13 @@ void tparler() char st[1410]; bool f; - - finfouil(); - if (col) suj = 128; + if (col) + suj = 128; else { cx = 0; do { - cx = cx + 1; + ++cx; } while (!(g_vm->_menu._disc[cx] == msg[4])); caff = 69 + cx; afdes(0); @@ -1039,11 +1220,13 @@ void tparler() premtet(); sparl(0, suj); hirs(); - for (ix = 1; ix <= 46; ix ++) te[ix] = false; - for (ix = 1; ix <= 45; ix ++) { + for (ix = 1; ix <= 46; ++ix) + te[ix] = false; + for (ix = 1; ix <= 45; ++ix) { deline(ix + c_tparler, st, tay); lib[ix] = delig; - for (i = tay; i <= 40; i ++) lib[ix] = lib[ix] + ' '; + for (i = tay; i <= 40; ++i) + lib[ix] = lib[ix] + ' '; } lib[46] = lib[45]; lib[45] = ' '; @@ -1057,12 +1240,15 @@ void tparler() icm = succ(int, icm); g_vm->_screenSurface.putxy(co, lig); if (s.teauto[icm] == '*') - if (te[icm]) writetp(lib[icm], 1); - else writetp(lib[icm], 0); + if (te[icm]) + writetp(lib[icm], 1); + else + writetp(lib[icm], 0); if (icm == 23) { lig = 0; co = 320; - } else lig = lig + 8; + } else + lig = lig + 8; } while (!(icm == 42)); g_vm->_screenSurface.putxy(320, 176); writetp(lib[46], 0); @@ -1073,43 +1259,59 @@ void tparler() getMousePos(x, y, c); x = x * (3 - res); - if (x > 319) cx = 41; - else cx = 1; + if (x > 319) + cx = 41; + else + cx = 1; cy = succ(int, ((uint)y >> 3)); /* 0-199 => 1-25 */ if ((cy > 23) || ((cx == 41) && ((cy >= 20) && (cy <= 22)))) { if (choi != 0) { lig = ((choi - 1) % 23) << 3; - if (choi > 23) co = 320; - else co = 0; + if (choi > 23) + co = 320; + else + co = 0; g_vm->_screenSurface.putxy(co, lig); - if (te[choi]) writetp(lib[choi], 0); - else writetp(lib[choi], 1); - te[choi] = ! te[choi]; + if (te[choi]) + writetp(lib[choi], 0); + else + writetp(lib[choi], 1); + te[choi] = !te[choi]; choi = 0; } } else { ix = cy; - if (cx == 41) ix = ix + 23; + if (cx == 41) + ix = ix + 23; if (ix != choi) { if (choi != 0) { lig = ((choi - 1) % 23) << 3; - if (choi > 23) co = 320; - else co = 0; + if (choi > 23) + co = 320; + else + co = 0; g_vm->_screenSurface.putxy(co, lig); - if (te[choi]) writetp(lib[choi], 0); - else writetp(lib[choi], 1); + if (te[choi]) + writetp(lib[choi], 0); + else + writetp(lib[choi], 1); te[choi] = ! te[choi]; } if ((s.teauto[ix] == '*') || (ix == 46)) { lig = ((ix - 1) % 23) << 3; - if (ix > 23) co = 320; - else co = 0; + if (ix > 23) + co = 320; + else + co = 0; g_vm->_screenSurface.putxy(co, lig); - if (te[ix]) writetp(lib[ix], 0); - else writetp(lib[ix], 1); + if (te[ix]) + writetp(lib[ix], 0); + else + writetp(lib[ix], 1); te[ix] = ! te[ix]; choi = ix; - } else choi = 0; + } else + choi = 0; } } } while (!((tou == '\15') || (((c != 0) || g_vm->getMouseClick()) && (choi != 0)))); @@ -1119,10 +1321,13 @@ void tparler() if (col) { col = false; s.mlieu = 15; - if (iouv > 0) max = 8; - else max = 4; + if (iouv > 0) + max = 8; + else + max = 4; haz = hazard(1, max); - if (haz == 2) suj = 129; + if (haz == 2) + suj = 129; else { suj = 138; s.conf = s.conf + (3 * (s.conf / 10)); @@ -1145,7 +1350,8 @@ void tparler() s.teauto[7] = '*'; } if ((suj == 106) || (suj == 108) || (suj == 94)) { - for (ix = 29; ix <= 31; ix ++) s.teauto[ix] = '*'; + for (ix = 29; ix <= 31; ++ix) + s.teauto[ix] = '*'; s.pourc[7] = '*'; } if (suj == 70) { @@ -1188,8 +1394,10 @@ void tsentir() { ecr3(g_vm->getString(S_SMELL)); tfleche(); if (!(anyone) && !(iesc)) - if (caff == 16) crep = 153; - } else if (caff == 123) crep = 110; + if (caff == 16) + crep = 153; + } else if (caff == 123) + crep = 110; num = 0; } -- cgit v1.2.3 From d0ec6e9b32249a81606594c4d77c5baf29061550 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 20 Feb 2012 08:28:06 +0100 Subject: MORTEVIELLE: rename verbs and associated opcodes, use enum for opcodes --- engines/mortevielle/actions.cpp | 140 +++++++++++++++++++++++++++++------- engines/mortevielle/actions.h | 46 ++++++------ engines/mortevielle/menu.cpp | 38 +++++----- engines/mortevielle/menu.h | 2 +- engines/mortevielle/mor2.cpp | 18 ++--- engines/mortevielle/mortevielle.cpp | 6 +- engines/mortevielle/prog.cpp | 73 ++++++++++++------- engines/mortevielle/taffich.cpp | 2 +- engines/mortevielle/var_mor.h | 35 +++------ 9 files changed, 229 insertions(+), 131 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 5aa91f80df..caaeb07638 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -42,7 +42,11 @@ namespace Mortevielle { -void taller() { +/** + * Engine function - Move + * @remarks Originally called 'taller' + */ +void fctMove() { //int mx, cx, cy; int cx; @@ -171,7 +175,11 @@ L2: tmlieu(s.mlieu); } -void tprendre() { +/** + * Engine function - Take + * @remarks Originally called 'tprendre' + */ +void fctTake() { //int cx, cy, cz; int cx; @@ -305,7 +313,11 @@ void tsprendre() { clsf2(); } -void tsoulever() { +/** + * Engine function - Lift + * @remarks Originally called 'tsoulever' + */ +void fctLift() { int cx; if (!syn) @@ -337,7 +349,11 @@ void tsoulever() { crep = 997; } -void tlire() { +/** + * Engine function - Read + * @remarks Originally called 'tlire' + */ +void fctRead() { // int iaff; if (caff > 99) @@ -361,7 +377,11 @@ void tslire() { st4(s.derobj); } -void tregarder() { +/** + * Engine function - Look + * @remarks Originally called 'tregarder' + */ +void fctLook() { int cx; if (caff > 99) { @@ -442,7 +462,11 @@ void tsregarder() { crep = 186; } -void tfouiller() { +/** + * Engine function - Search + * @remarks Originally called 'tfouiller' + */ +void fctSearch() { const byte r[14] = {123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}; int cx; @@ -531,14 +555,18 @@ void tsfouiller() { crep = 186; } -void touvrir() { +/** + * Engine function - Open + * @remarks Originally called 'touvrir' + */ +void fctOpen() { int cx, haz; if (!syn) ecr3(g_vm->getString(S_OPEN)); if (caff == 26) { if (ment != 0) { - msg[4] = entrer; + msg[4] = OPCODE_ENTER; syn = true; } else crep = 997; @@ -588,7 +616,11 @@ void touvrir() { } } -void tmettre() { +/** + * Engine function - Place + * @remarks Originally called 'tmettre' + */ +void fctPlace() { int quel; bool entre; char st[1410]; @@ -708,7 +740,11 @@ void tmettre() { } } -void ttourner() { +/** + * Engine function - Turn + * @remarks Originally called 'ttourner' + */ +void fctTurn() { int quel; if (caff > 99) { @@ -746,7 +782,11 @@ void ttourner() { } } -void tcacher() { +/** + * Engine function - Hide Self + * @remarks Originally called 'tcacher' + */ +void fctHideSelf() { if (!syn) ecr3(g_vm->getString(S_HIDE_SELF)); tfleche(); @@ -761,7 +801,11 @@ void tcacher() { } } -void tattacher() { +/** + * Engine function - Attach + * @remarks Originally called 'tattacher' + */ +void fctAttach() { if (s.derobj == 0) crep = 186; else { @@ -784,7 +828,11 @@ void tattacher() { } } -void tfermer() { +/** + * Engine function - Close + * @remarks Originally called 'tfermer' + */ +void fctClose() { int cx, chai; if (!syn) @@ -819,7 +867,11 @@ void tfermer() { crep = 999; } -void tfrapper() { +/** + * Engine function - Knock + * @remarks Originally called 'tfrapper' + */ +void fctKnock() { int l, p, haz; if (!syn) @@ -942,7 +994,11 @@ void tposer() { } } -void tecouter() { +/** + * Engine function - Listen + * @remarks Originally called 'tecouter' + */ +void fctListen() { int l, p, haz, j, h, m; if (s.mlieu != 26) @@ -976,7 +1032,11 @@ void tecouter() { } } -void tmanger() { +/** + * Engine function - Eat + * @remarks Originally called 'tmanger' + */ +void fctEat() { int j, h, m; if ((s.mlieu > 15) && (s.mlieu < 26)) @@ -1008,7 +1068,11 @@ void tmanger() { } } -void tentrer() { +/** + * Engine function - Enter + * @remarks Originally called 'tentrer' + */ +void fctEnter() { int x, z = 0; if ((s.mlieu == 21) || (s.mlieu == 22)) { @@ -1064,7 +1128,11 @@ void tentrer() { } } -void tdormir() { +/** + * Engine function - Sleep + * @remarks Originally called 'tdormir' + */ +void fctSleep() { int z, j, h, m, quel; if ((s.mlieu > 15) && (s.mlieu < 26)) { @@ -1105,7 +1173,11 @@ void tdormir() { num = 0; } -void tdefoncer() { +/** + * Engine function - Force + * @remarks Originally called 'tdefoncer' + */ +void fctForce() { if (!syn) ecr3(g_vm->getString(S_SMASH)); if (caff < 25) @@ -1119,7 +1191,11 @@ void tdefoncer() { } } -void tsortir() { +/** + * Engine function - Leave + * @remarks Originally called 'tsortir' + */ +void fctLeave() { int lx = 0; tsort(); @@ -1151,7 +1227,11 @@ void tsortir() { } } -void tattendre() { +/** + * Engine function - Wait + * @remarks Originally called 'tattendre' + */ +void fctWait() { int quel; mpers = 0; @@ -1180,7 +1260,11 @@ void tattendre() { tinke(); } -void tsonder() { +/** + * Engine function - Sound + * @remarks Originally called 'tsonder' + */ +void fctSound() { if (!syn) ecr3(g_vm->getString(S_PROBE2)); if (caff < 27) { @@ -1387,7 +1471,11 @@ void tparler() { clsf3(); } -void tsentir() { +/** + * Engine function - Smell + * @remarks Originally called 'tsentir' + */ +void fctSmell() { crep = 119; if (caff < 26) { if (!syn) @@ -1401,7 +1489,11 @@ void tsentir() { num = 0; } -void tgratter() { +/** + * Engine function - Scratch + * @remarks Originally called 'tgratter' + */ +void fctScratch() { crep = 155; if (caff < 27) { if (!syn) diff --git a/engines/mortevielle/actions.h b/engines/mortevielle/actions.h index 196e5a5de6..d96b712835 100644 --- a/engines/mortevielle/actions.h +++ b/engines/mortevielle/actions.h @@ -31,35 +31,35 @@ namespace Mortevielle { /* NIVEAU 4 */ -extern void taller(); -extern void tprendre(); +extern void fctMove(); +extern void fctTake(); extern void tsprendre(); -extern void tsoulever(); -extern void tlire(); +extern void fctLift(); +extern void fctRead(); extern void tslire(); -extern void tregarder(); +extern void fctLook(); extern void tsregarder(); -extern void tfouiller(); +extern void fctSearch(); extern void tsfouiller(); -extern void touvrir(); -extern void tmettre(); -extern void ttourner(); -extern void tcacher(); -extern void tattacher(); -extern void tfermer(); -extern void tfrapper(); +extern void fctOpen(); +extern void fctPlace(); +extern void fctTurn(); +extern void fctHideSelf(); +extern void fctAttach(); +extern void fctClose(); +extern void fctKnock(); extern void tposer(); -extern void tecouter(); -extern void tmanger(); -extern void tentrer(); -extern void tdormir(); -extern void tdefoncer(); -extern void tsortir(); -extern void tattendre(); -extern void tsonder(); +extern void fctListen(); +extern void fctEat(); +extern void fctEnter(); +extern void fctSleep(); +extern void fctForce(); +extern void fctLeave(); +extern void fctWait(); +extern void fctSound(); extern void tparler(); -extern void tsentir(); -extern void tgratter(); +extern void fctSmell(); +extern void fctScratch(); /* NIVEAU 2 */ extern void endGame(); extern void loseGame(); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 7da2eefb0f..51fad3f651 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -63,7 +63,7 @@ void Menu::menut(int no, Common::String nom) { _inv[l].insertChar(' ', 0); } break; - case depla: + case MENU_MOVE: _dep[l] = s; break; case action: @@ -96,7 +96,7 @@ void Menu::disableMenuItem(int no) { _inv[l].setChar('*', 0); } break; - case depla: + case MENU_MOVE: _dep[l].setChar('*', 0); break; case action: @@ -126,7 +126,7 @@ void Menu::enableMenuItem(int no) { _inv[l].setChar(' ', 21); } break; - case depla: + case MENU_MOVE: _dep[l].setChar(' ', 0); break; case action: @@ -189,8 +189,8 @@ void Menu::menu_aff() { void Menu::drawMenu() { menu_aff(); _menuActive = true; - msg4 = no_choice; - msg3 = no_choice; + msg4 = OPCODE_NONE; + msg3 = OPCODE_NONE; choisi = false; g_vm->setMouseClick(false); test0 = false; @@ -199,7 +199,7 @@ void Menu::drawMenu() { void Menu::invers(int ix) { Common::String s; - if (msg4 == no_choice) return; + if (msg4 == OPCODE_NONE) return; g_vm->_screenSurface.putxy(don[msg3][1] << 3, succ(void, lo(msg4)) << 3); switch (msg3) { case 1 : @@ -238,7 +238,7 @@ void Menu::invers(int ix) { if ((s[0] != '*') && (s[0] != '<')) g_vm->_screenSurface.writeg(s, ix); else - msg4 = no_choice; + msg4 = OPCODE_NONE; } void Menu::util(int x, int y) { @@ -258,9 +258,9 @@ void Menu::util(int x, int y) { msg4 = ix; invers(0); } - } else if (msg4 != no_choice) { + } else if (msg4 != OPCODE_NONE) { invers(1); - msg4 = no_choice; + msg4 = OPCODE_NONE; } } @@ -401,7 +401,7 @@ void Menu::mdn() { || ((x > 268 * res) && (x < 268 * res + 24))); if (tes) { if (x < 76 * res) ix = invent; - else if (x < 124 * res) ix = depla; + else if (x < 124 * res) ix = MENU_MOVE; else if (x < 172 * res) ix = action; else if (x < 220 * res) ix = saction; else if (x < 268 * res) ix = discut; @@ -411,13 +411,13 @@ void Menu::mdn() { menuUp(msg3); menuDown(ix); msg3 = ix; - msg4 = no_choice; + msg4 = OPCODE_NONE; } } else { /* Not in the MenuTitle line */ if ((y > 11) && (test0)) util(x, y); } } else { /* There was a click */ - if ((msg3 == fichier) && (msg4 != no_choice)) { + if ((msg3 == fichier) && (msg4 != OPCODE_NONE)) { // Another menu to be _displayed g_vm->setMouseClick(false); menuUp(msg3); @@ -428,12 +428,12 @@ void Menu::mdn() { g_vm->setMouseClick(false); } else { // A menu was clicked on - choisi = (test0) && (msg4 != no_choice); + choisi = (test0) && (msg4 != OPCODE_NONE); menuUp(msg3); msg[4] = msg4; msg[3] = msg3; - msg3 = no_choice; - msg4 = no_choice; + msg3 = OPCODE_NONE; + msg4 = OPCODE_NONE; g_vm->setMouseClick(false); } @@ -486,10 +486,10 @@ void Menu::initMenu() { if (i > 6) g_vm->_menu.disableMenuItem(_invt[i]); } - msg3 = no_choice; - msg4 = no_choice; - msg[3] = no_choice; - msg[4] = no_choice; + msg3 = OPCODE_NONE; + msg4 = OPCODE_NONE; + msg[3] = OPCODE_NONE; + msg[4] = OPCODE_NONE; g_vm->setMouseClick(false); } diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index 8779d51298..d4aecbcbd9 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -60,7 +60,7 @@ public: }; enum { - invent = 1, depla = 2, action = 3, saction = 4, + invent = 1, MENU_MOVE = 2, action = 3, saction = 4, discut = 5, fichier = 6, sauve = 7, charge = 8 }; diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 7a49456197..15d413d119 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -39,10 +39,10 @@ namespace Mortevielle { -const int men[12] = { 0, - scacher, attacher, defoncer, dormir, - entrer, fermer, frapper, manger, - mettre, ouvrir, sortir +const int men[12] = { OPCODE_NONE, + OPCODE_HIDE_SELF, OPCODE_ATTACH, OPCODE_FORCE, OPCODE_SLEEP, + OPCODE_ENTER, OPCODE_CLOSE, OPCODE_KNOCK, OPCODE_EAT, + OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE }; void tinke() { @@ -251,7 +251,7 @@ void tlu(int af, int ob) { repon(2, 999); tkey1(true); caff = af; - msg[3] = no_choice; + msg[3] = OPCODE_NONE; crep = 998; } @@ -276,8 +276,8 @@ void mfouen() for (cx = 1; cx <= 11; cx ++) g_vm->_menu.enableMenuItem(men[cx]); - g_vm->_menu.menut(sonder, g_vm->getString(S_PROBE)); - g_vm->_menu.menut(soulever, g_vm->getString(S_RAISE)); + g_vm->_menu.menut(OPCODE_SOUND, g_vm->getString(S_PROBE)); + g_vm->_menu.menut(OPCODE_LIFT, g_vm->getString(S_RAISE)); } /* NIVEAU 6 */ @@ -415,8 +415,8 @@ void mfoudi() { for (cx = 1; cx <= 11; cx ++) g_vm->_menu.disableMenuItem(men[cx]); - g_vm->_menu.menut(sonder, g_vm->getString(S_SUITE)); - g_vm->_menu.menut(soulever, g_vm->getString(S_STOP)); + g_vm->_menu.menut(OPCODE_SOUND, g_vm->getString(S_SUITE)); + g_vm->_menu.menut(OPCODE_LIFT, g_vm->getString(S_STOP)); } void mennor() { diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 256b8551ed..82eb1179f1 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -571,7 +571,7 @@ void MortevielleEngine::handleAction() { temps = Alert::show(stpou, 1); return; } else if (inkey == '\77') { - if ((mnumo != no_choice) && ((msg[3] == action) || (msg[3] == saction))) { + if ((mnumo != OPCODE_NONE) && ((msg[3] == action) || (msg[3] == saction))) { msg[4] = mnumo; ecr3(g_vm->getString(S_IDEM)); } else return; @@ -594,9 +594,9 @@ void MortevielleEngine::handleAction() { if (! anyone) { if ((fouil) || (obpart)) { if (y_s < 12) return; - if ((msg[4] == sonder) || (msg[4] == soulever)) { + if ((msg[4] == OPCODE_SOUND) || (msg[4] == OPCODE_LIFT)) { oo = true; - if ((msg[4] == soulever) || (obpart)) { + if ((msg[4] == OPCODE_LIFT) || (obpart)) { finfouil(); caff = s.mlieu; crep = 998; diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 737ec6602e..2ee26a9392 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -157,37 +157,58 @@ void tsitu() iesc = false; if (anyone) goto L1; if (brt) - if ((msg[3] == depla) || (msg[4] == sortir) || (msg[4] == dormir) || - (msg[4] == manger)) { + if ((msg[3] == MENU_MOVE) || (msg[4] == OPCODE_LEAVE) || (msg[4] == OPCODE_SLEEP) || (msg[4] == OPCODE_EAT)) { ctrm = 4; goto L2; } - if (msg[3] == depla) taller(); //Translation: go to + if (msg[3] == MENU_MOVE) + fctMove(); if (msg[3] == discut) tparler(); //Translation: talk if (msg[3] == invent) tsprendre(); //Translation: inventory/take - if (msg[4] == attacher) tattacher(); //Translation: tie - if (msg[4] == attendre) tattendre(); //Translation: wait - if (msg[4] == defoncer) tdefoncer(); //Translation: smash - if (msg[4] == dormir) tdormir(); //Translation: sleep - if (msg[4] == ecouter) tecouter(); //Translation: listen - if (msg[4] == entrer) tentrer(); //Translation: enter - if (msg[4] == fermer) tfermer(); //Translation: close - if (msg[4] == fouiller) tfouiller(); //Translation: search - if (msg[4] == frapper) tfrapper(); //Translation: hit - if (msg[4] == gratter) tgratter(); //Translation: scratch - if (msg[4] == lire) tlire(); //Translation: read - if (msg[4] == manger) tmanger(); //Translation: eat - if (msg[4] == mettre) tmettre(); //Translation: put - if (msg[4] == ouvrir) touvrir(); //Translation: open - if (msg[4] == prendre) tprendre(); //Translation: take - if (msg[4] == regarder) tregarder(); //Translation: look - if (msg[4] == sentir) tsentir(); //Translation: smell - if (msg[4] == sonder) tsonder(); //Translation: probe - if (msg[4] == sortir) tsortir(); //Translation: exit - if (msg[4] == soulever) tsoulever(); //Translation: lift - if (msg[4] == tourner) ttourner(); //Translation: turn - if (msg[4] == scacher) { //Translation: hide - tcacher(); + if (msg[4] == OPCODE_ATTACH) + fctAttach(); + if (msg[4] == OPCODE_WAIT) + fctWait(); + if (msg[4] == OPCODE_FORCE) + fctForce(); + if (msg[4] == OPCODE_SLEEP) + fctSleep(); + if (msg[4] == OPCODE_LISTEN) + fctListen(); + if (msg[4] == OPCODE_ENTER) + fctEnter(); + if (msg[4] == OPCODE_CLOSE) + fctClose(); + if (msg[4] == OPCODE_SEARCH) + fctSearch(); + if (msg[4] == OPCODE_KNOCK) + fctKnock(); + if (msg[4] == OPCODE_SCRATCH) + fctScratch(); + if (msg[4] == OPCODE_READ) + fctRead(); + if (msg[4] == OPCODE_EAT) + fctEat(); + if (msg[4] == OPCODE_PLACE) + fctPlace(); + if (msg[4] == OPCODE_OPEN) + fctOpen(); + if (msg[4] == OPCODE_TAKE) + fctTake(); + if (msg[4] == OPCODE_LOOK) + fctLook(); + if (msg[4] == OPCODE_SMELL) + fctSmell(); + if (msg[4] == OPCODE_SOUND) + fctSound(); + if (msg[4] == OPCODE_LEAVE) + fctLeave(); + if (msg[4] == OPCODE_LIFT) + fctLift(); + if (msg[4] == OPCODE_TURN) + fctTurn(); + if (msg[4] == OPCODE_HIDE_SELF) { //Translation: hide + fctHideSelf(); goto L1; } if (msg[4] == sfouiller) tsfouiller();//Translation: search diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 9402f3fec5..08aaa2a1f1 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -244,7 +244,7 @@ void taffich() { charani(filename, lgt, handle); } showMouse(); - if ((a < 27) && ((_maff < 27) || (s.mlieu == 15)) && (msg[4] != entrer)) { + if ((a < 27) && ((_maff < 27) || (s.mlieu == 15)) && (msg[4] != OPCODE_ENTER)) { if ((a == 13) || (a == 14)) person(); else if (! blo) diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index bfccd66e34..7a3249dee0 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -128,31 +128,16 @@ const int arep = 1314; const int amzon = 1650; const int fleche = 1758; -const int no_choice = 0; - -const int attacher = 0x301; -const int attendre = 0x302; -const int defoncer = 0x303; -const int dormir = 0x304; -const int ecouter = 0x305; -const int entrer = 0x306; -const int fermer = 0x307; -const int fouiller = 0x308; -const int frapper = 0x309; -const int gratter = 0x30a; -const int lire = 0x30b; -const int manger = 0x30c; -const int mettre = 0x30d; -const int ouvrir = 0x30e; -const int prendre = 0x30f; -const int regarder = 0x310; -const int sentir = 0x311; -const int sonder = 0x312; -const int sortir = 0x313; -const int soulever = 0x314; -const int tourner = 0x315; - -const int scacher = 0x401; +const int OPCODE_NONE = 0; + +enum verbs {OPCODE_ATTACH = 0x301, OPCODE_WAIT = 0x302, OPCODE_FORCE = 0x303, OPCODE_SLEEP = 0x304, OPCODE_LISTEN = 0x305, + OPCODE_ENTER = 0x306, OPCODE_CLOSE = 0x307, OPCODE_SEARCH = 0x308, OPCODE_KNOCK = 0x309, OPCODE_SCRATCH = 0x30a, + OPCODE_READ = 0x30b, OPCODE_EAT = 0x30c, OPCODE_PLACE = 0x30d, OPCODE_OPEN = 0x30e, OPCODE_TAKE = 0x30f, + OPCODE_LOOK = 0x310, OPCODE_SMELL = 0x311, OPCODE_SOUND = 0x312, OPCODE_LEAVE = 0x313, OPCODE_LIFT = 0x314, + OPCODE_TURN = 0x315}; + +enum verbs2 {OPCODE_HIDE_SELF = 0x401}; + const int sfouiller = 0x402; const int slire = 0x403; const int sposer = 0x404; -- cgit v1.2.3 From acd636dc2ca6d7828c350fe3af9af657ad890e76 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 20 Feb 2012 23:56:32 +0100 Subject: MORTEVIELLE: Some more cleanup, renaming, plus a couple of crash fixes in deline and writeg --- engines/mortevielle/actions.cpp | 14 +- engines/mortevielle/actions.h | 4 +- engines/mortevielle/dialogs.cpp | 130 +++--- engines/mortevielle/graphics.cpp | 5 +- engines/mortevielle/keyboard.cpp | 29 +- engines/mortevielle/level15.cpp | 39 +- engines/mortevielle/menu.cpp | 114 ++--- engines/mortevielle/menu.h | 2 +- engines/mortevielle/mor.cpp | 886 +++++++++++++++++++++++---------------- engines/mortevielle/mor2.cpp | 289 ++++++++----- engines/mortevielle/outtext.cpp | 5 + engines/mortevielle/prog.cpp | 6 +- engines/mortevielle/var_mor.h | 3 +- 13 files changed, 905 insertions(+), 621 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index caaeb07638..66215170ce 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -909,7 +909,11 @@ void fctKnock() { } } -void tposer() { +/** + * Engine function - Put + * @remarks Originally called 'tposer' + */ +void fctPut() { int cx, chai; if (!syn) @@ -1099,7 +1103,7 @@ void fctEnter() { tip(z, x); ++s.conf; s.mlieu = 15; - msg[3] = discut; + msg[3] = MENU_DISCUSS; msg[4] = g_vm->_menu._disc[x]; syn = true; if (ment == 9) { @@ -1275,7 +1279,11 @@ void fctSound() { } } -void tparler() { +/** + * Engine function - Discuss + * @remarks Originally called 'tparler' + */ +void fctDiscuss() { bool te[47]; int ix, cy, cx, max, haz, suj, co, lig, icm, i, tay, choi, x, y, c; diff --git a/engines/mortevielle/actions.h b/engines/mortevielle/actions.h index d96b712835..e73dc080f5 100644 --- a/engines/mortevielle/actions.h +++ b/engines/mortevielle/actions.h @@ -48,7 +48,7 @@ extern void fctHideSelf(); extern void fctAttach(); extern void fctClose(); extern void fctKnock(); -extern void tposer(); +extern void fctPut(); extern void fctListen(); extern void fctEat(); extern void fctEnter(); @@ -57,7 +57,7 @@ extern void fctForce(); extern void fctLeave(); extern void fctWait(); extern void fctSound(); -extern void tparler(); +extern void fctDiscuss(); extern void fctSmell(); extern void fctScratch(); /* NIVEAU 2 */ diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index bccbb10f56..89658452e8 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -83,19 +83,23 @@ int Alert::show(const Common::String &msg, int n) { cx = 320; st = ""; while ((chaine[i + 1] != '\174') && (chaine[i + 1] != '\135')) { - i = i + 1; + ++i; st = st + chaine[i]; - if (res == 2) cx = cx - 3; - else cx = cx - 5; + if (res == 2) + cx -= 3; + else + cx -= 5; } g_vm->_screenSurface.putxy(cx, g_vm->_screenSurface._textPos.y); g_vm->_screenSurface._textPos.y += 6; g_vm->_screenSurface.writeg(st, 4); - i = i + 1; + ++i; } while (!(chaine[i] == ']')); } - if (nbcase == 1) esp = nbcol - 40; - else esp = (uint)(nbcol - nbcase * 40) >> 1; + if (nbcase == 1) + esp = nbcol - 40; + else + esp = (uint)(nbcol - nbcase * 40) >> 1; coldep = 320 - ((uint)nbcol >> 1) + ((uint)esp >> 1); fait_choix(cas, coldep, nbcase, &s[0], esp); limit[1][1] = ((uint)(coldep) >> 1) * res; @@ -121,11 +125,14 @@ int Alert::show(const Common::String &msg, int n) { if (test) { test1 = (cx > limit[1][1]) && (cx < limit[1][2]); test2 = test1; - if (nbcase > 1) test2 = test1 || ((cx > limit[2][1]) && (cx < limit[2][2])); + if (nbcase > 1) + test2 = test1 || ((cx > limit[2][1]) && (cx < limit[2][2])); if (test2) { newaff = true; - if (test1) ix = 1; - else ix = 2; + if (test1) + ix = 1; + else + ix = 2; if (ix != quoi) { hideMouse(); if (quoi != 0) { @@ -165,7 +172,7 @@ int Alert::show(const Common::String &msg, int n) { } while (!g_vm->getMouseClick()); g_vm->setMouseClick(false); hideMouse(); - if (! test3) { + if (!test3) { quoi = n; setPosition(n, coldep, esp); Common::String tmp4(" "); @@ -199,26 +206,30 @@ void Alert::decod(Common::String s, int &nbc, int &nbl, int &col, Common::String col = 0; while (s[i] != ']') { - c = c + s[i]; + c += s[i]; if ((s[i] == '|') || (s[i + 1] == ']')) { - if (k > col) col = k; + if (k > col) + col = k; k = 0; nbl = nbl + 1; - } else if (s[i] != ' ') v = false; - i = i + 1; - k = k + 1; + } else if (s[i] != ' ') + v = false; + ++i; + ++k; } if (v) { c = ""; col = 20; } else { - c = c + ']'; - col = col + 6; + c += ']'; + col += 6; } - i = i + 1; + ++i; cs = copy(s, i, 30); - if (res == 2) col = col * 6; - else col = col * 10; + if (res == 2) + col *= 6; + else + col *= 10; } void Alert::setPosition(int ji, int coldep, int esp) { @@ -228,7 +239,8 @@ void Alert::setPosition(int ji, int coldep, int esp) { void Alert::fait_boite(int lidep, int nli, int tx) { int x, y, xx, yy; - if (tx > 640) tx = 640; + if (tx > 640) + tx = 640; x = 320 - ((uint)tx >> 1); y = pred(int, lidep) << 3; xx = x + tx; @@ -249,12 +261,13 @@ void Alert::fait_choix(Common::String c, int coldep, int nbcase, Common::String for (l = 1; l <= nbcase; l ++) { str[l] = ""; do { - i = i + 1; + ++i; ch = c[i]; - str[l] = str[l] + ch; + str[l] += ch; } while (!(c[i + 1] == ']')); i = i + 2; - while (str[l].size() < 3) str[l] = str[l] + ' '; + while (str[l].size() < 3) + str[l] += ' '; g_vm->_screenSurface.putxy(x, 98); Common::String tmp(" "); @@ -262,7 +275,7 @@ void Alert::fait_choix(Common::String c, int coldep, int nbcase, Common::String tmp += " "; g_vm->_screenSurface.writeg(tmp, 0); - x = x + esp + 40; + x += esp + 40; } } @@ -292,10 +305,12 @@ bool Ques::show() { hideMouse(); hirs(); showMouse(); - i = i + 1; + ++i; deline(ta[i], st, tay); - if (res == 1) y = 29; - else y = 23; + if (res == 1) + y = 29; + else + y = 23; g_vm->_screenSurface.fillRect(15, Common::Rect(0, 14, 630, y)); afftex(st, 20, 15, 100, 2, 0); if (i != 10) { @@ -310,29 +325,31 @@ bool Ques::show() { memk = 1; for (j = prem; j <= der; j ++) { deline(j, st, tay); - if (tay > tmax) tmax = tay; + if (tay > tmax) + tmax = tay; afftex(st, 100, y, 100, 1, 0); chaines[memk] = delig; - memk = memk + 1; - y = y + 8; + ++memk; + y += 8; } - for (j = 1; j <= succ(int, der - prem); j ++) { - { - rectangle &with = coor[j]; - - with.x1 = 45 * res; - with.x2 = (tmax * 3 + 55) * res; - with.y1 = 27 + j * 8; - with.y2 = 34 + j * 8; - with.etat = true; - } + for (j = 1; j <= succ(int, der - prem); j++) { + rectangle &with = coor[j]; + + with.x1 = 45 * res; + with.x2 = (tmax * 3 + 55) * res; + with.y1 = 27 + j * 8; + with.y2 = 34 + j * 8; + with.etat = true; + while ((int)chaines[j].size() < tmax) { - chaines[j] = chaines[j] + ' '; + chaines[j] += ' '; } } coor[j + 1].etat = false; - if (res == 1) rep = 10; - else rep = 6; + if (res == 1) + rep = 10; + else + rep = 6; g_vm->_screenSurface.drawBox(80, 33, 40 + tmax * rep, (der - prem) * 8 + 16, 15); rep = 0; j = 0; @@ -347,29 +364,40 @@ bool Ques::show() { while (coor[k].etat && ! dans_rect(coor[k])) k = k + 1; if (coor[k].etat) { if ((memk != 0) && (memk != k)) { - for (j = 1; j <= tmax; j ++) st[j] = chaines[memk][j]; +// for (j = 1; j <= tmax; j ++) +// st[j] = chaines[memk][j]; + strncpy(st, chaines[memk].c_str(), tmax); +// st[1 + tmax] = '$'; afftex(st, 100, 27 + memk * 8, 100, 1, 0); } if (memk != k) { - for (j = 1; j <= tmax; j ++) st[j] = chaines[k][j]; +// for (j = 1; j <= tmax; j ++) +// st[j] = chaines[k][j]; + strncpy(st, chaines[k].c_str(), tmax); st[1 + tmax] = '$'; afftex(st, 100, 27 + k * 8, 100, 1, 1); memk = k; } } else if (memk != 0) { - for (j = 1; j <= tmax; j ++) st[j] = chaines[memk][j]; +// for (j = 1; j <= tmax; j ++) +// st[j] = chaines[memk][j]; + strncpy(st, chaines[memk].c_str(), tmax); st[1 + tmax] = '$'; afftex(st, 100, 27 + memk * 8, 100, 1, 0); memk = 0; } } while (!((memk != 0) && g_vm->getMouseClick())); - if (memk == ok[i]) compte = compte + 1; + if (memk == ok[i]) + ++compte; else { - if (i == 5) i = i + 1; - if ((i == 7) || (i == 8)) i = 10; + if (i == 5) + ++i; + if ((i == 7) || (i == 8)) + i = 10; } - if (i == 10) q = /*testprot*/ true; + if (i == 10) + q = /*testprot*/ true; } while (!(i == 10)); ques_result = (compte == 10) && q; return ques_result; diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 62f13dac5e..1c0a4fa0a3 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -484,7 +484,8 @@ void GfxSurface::horizontal(const byte *&pSrc, byte *&pDest, const byte *&pLooku for (;;) { // If position is past end point, then skip this line if (((_thickness - 1) * DEFAULT_WIDTH) + pDest >= pDestEnd) { - if (--_thickness == 0) break; + if (--_thickness == 0) + break; continue; } @@ -1081,7 +1082,7 @@ void ScreenSurface::writeg(const Common::String &l, int c) { } pt.x += 1; pt.y += 1; - for (x = 1; x <= (int)l.size(); ++x) { + for (x = 1; (x <= (int)l.size()) && (l[x - 1] != 0); ++x) { g_vm->_screenSurface.writeCharacter(Common::Point(pt.x, pt.y), ord(l[x - 1]), cecr); pt.x += i; } diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index a330a382d9..abf8c26346 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -32,43 +32,38 @@ namespace Mortevielle { char readkey1() { - char c; + char c = get_ch(); - char readkey1_result; - c = get_ch(); // input >> kbd >> c; - readkey1_result = c; - return readkey1_result; + return c; } int testou() { - char ch; + char ch = get_ch(); - int testou_result; - ch = get_ch(); // input >> kbd >> ch; switch (ch) { case '\23' : - sonoff = ! sonoff; + sonoff = !sonoff; break; case '\26' : if ((c_zzz == 1) && (c_zzz == 2)) { zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); c_zzz = succ(int, c_zzz); - testou_result = 61; - return testou_result; + + return 61; } break; case '\33' : - if (keypressed()) ch = get_ch(); // input >> kbd >> ch; + if (keypressed()) + ch = get_ch(); break; } - testou_result = ord(ch); - return testou_result; + + return ord(ch); } void teskbd() { - int dum; - - if (keypressed()) dum = testou(); + if (keypressed()) + testou(); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 374851f7f0..571abfa18d 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -37,9 +37,7 @@ namespace Mortevielle { /* NIVEAU 15 */ void copcha() { - int i; - - i = acha; + int i = acha; do { tabdon[i] = tabdon[i + 390]; i = succ(int, i); @@ -54,8 +52,11 @@ bool dans_rect(rectangle r) { if ((x > r.x1) && (x < r.x2) && (y > r.y1) && - (y < r.y2)) dans_rect_result = true; - else dans_rect_result = false; + (y < r.y2)) + dans_rect_result = true; + else + dans_rect_result = false; + return dans_rect_result; } @@ -63,27 +64,24 @@ void outbloc(int n, pattern p, t_nhom pal) { int i, j, ad; ad = n * 404 + 0xd700; - { - WRITE_LE_UINT16(&mem[0x6000 * 16 + ad], p.tax); - WRITE_LE_UINT16(&mem[0x6000 * 16 + ad + 2], p.tay); - ad = ad + 4; - for (i = 1; i <= p.tax; i ++) - for (j = 1; j <= p.tay; j ++) - mem[0x6000 * 16 + ad + pred(int, j)*p.tax + pred(int, i)] = pal[n].hom[p.des[i][j]]; - } -} + WRITE_LE_UINT16(&mem[0x6000 * 16 + ad], p.tax); + WRITE_LE_UINT16(&mem[0x6000 * 16 + ad + 2], p.tay); + ad = ad + 4; + for (i = 1; i <= p.tax; i ++) + for (j = 1; j <= p.tay; j ++) + mem[0x6000 * 16 + ad + pred(int, j)*p.tax + pred(int, i)] = pal[n].hom[p.des[i][j]]; +} void writepal(int n) { int i; t_nhom pal; - switch (gd) { case tan: case ega: case ams : - for (i = 1; i <= 16; i ++) { + for (i = 1; i <= 16; i++) { mem[0x7000 * 16 + 2 * i] = tabpal[n][i].x; mem[0x7000 * 16 + succ(int, 2 * i)] = tabpal[n][i].y; } @@ -91,8 +89,10 @@ void writepal(int n) { case cga : { warning("TODO: If this code is needed, resolve the incompatible types"); // pal = palcga[n].a; - if (n < 89) palette(palcga[n].p); - for (i = 0; i <= 15; i ++) outbloc(i, tpt[pal[i].n], pal); + if (n < 89) + palette(palcga[n].p); + for (i = 0; i <= 15; i++) + outbloc(i, tpt[pal[i].n], pal); } break; } @@ -152,7 +152,8 @@ int animof(int ouf, int num) { int animof_result; nani = mem[adani * 16 + 1]; aux = num; - if (ouf != 1) aux = aux + nani; + if (ouf != 1) + aux += nani; animof_result = (nani << 2) + 2 + READ_BE_UINT16(&mem[adani * 16 + (aux << 1)]); return animof_result; diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 51fad3f651..97ba083d77 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -44,20 +44,19 @@ namespace Mortevielle { * Setup a menu's contents */ void Menu::menut(int no, Common::String nom) { - byte h, l; - Common::String s; + byte h = hi(no); + byte l = lo(no); + Common::String s = nom; - h = hi(no); - l = lo(no); - s = nom; if (! tesok) { g_vm->quitGame(); } + while (s.size() < 20) - s = s + ' '; + s += ' '; switch (h) { - case invent : + case invent: if (l != 7) { _inv[l] = s; _inv[l].insertChar(' ', 0); @@ -72,7 +71,7 @@ void Menu::menut(int no, Common::String nom) { case saction: _self[l] = s; break; - case discut: + case MENU_DISCUSS: _dis[l] = s; break; } @@ -83,13 +82,12 @@ void Menu::menut(int no, Common::String nom) { * @param no Hi byte represents menu number, lo byte reprsents item index */ void Menu::disableMenuItem(int no) { - byte h, l; + byte h = hi(no); + byte l = lo(no); - h = hi(no); - l = lo(no); switch (h) { case invent : { - if (l > 6) { + if (l > 6) { _inv[l].setChar('<', 0); _inv[l].setChar('>', 21); } else @@ -105,7 +103,7 @@ void Menu::disableMenuItem(int no) { case saction: _self[l].setChar('*', 0); break; - case discut: + case MENU_DISCUSS: _dis[l].setChar('*', 0); break; } @@ -116,28 +114,25 @@ void Menu::disableMenuItem(int no) { * @param no Hi byte represents menu number, lo byte reprsents item index */ void Menu::enableMenuItem(int no) { - byte h, l; + byte h = hi(no); + byte l = lo(no); - h = hi(no); - l = lo(no); switch (h) { - case invent : { + case invent : _inv[l].setChar(' ', 0); _inv[l].setChar(' ', 21); - } - break; + break; case MENU_MOVE: _dep[l].setChar(' ', 0); break; case action: _act[l].setChar(' ', 0); break; - case saction: { + case saction: _self[l].setChar(' ', 0); _self[l].setChar(' ', 0); - } - break; - case discut: + break; + case MENU_DISCUSS: _dis[l].setChar(' ', 0); break; } @@ -152,17 +147,19 @@ void Menu::menu_aff() { g_vm->_screenSurface.fillRect(7, Common::Rect(0, 0, 639, 10)); col = 28 * res; - if (gd == cga) color = 1; - else color = 9; + if (gd == cga) + color = 1; + else + color = 9; num_letr = 0; - do { /* lettre par lettre */ - num_letr = num_letr + 1; + do { // One character after the other + ++num_letr; ind_tabl = 0; y = 1; - do { /* colonne par colonne */ + do { // One column after the other k = 0; x = col; - do { /* ligne par ligne */ + do { // One line after the other msk = 0x80; for (pt = 0; pt <= 7; pt ++) { if ((lettres[num_letr - 1][ind_tabl] & msk) != 0) { @@ -171,14 +168,14 @@ void Menu::menu_aff() { g_vm->_screenSurface.setPixel(Common::Point(x, y), color); } msk = (uint)msk >> 1; - x = x + 1; + ++x; } ind_tabl = succ(int, ind_tabl); k = succ(int, k); } while (!(k == 3)); - y = y + 1; + ++y; } while (!(y == 9)); - col = col + 48 * res; + col += 48 * res; } while (!(num_letr == 6)); showMouse(); } @@ -199,7 +196,9 @@ void Menu::drawMenu() { void Menu::invers(int ix) { Common::String s; - if (msg4 == OPCODE_NONE) return; + if (msg4 == OPCODE_NONE) + return; + g_vm->_screenSurface.putxy(don[msg3][1] << 3, succ(void, lo(msg4)) << 3); switch (msg3) { case 1 : @@ -248,8 +247,10 @@ void Menu::util(int x, int y) { ymx = (don[msg3][4] << 3) + 16; dxcar = don[msg3][3]; xmn = (don[msg3][1] << 2) * res; - if (res == 1) ix = 5; - else ix = 3; + if (res == 1) + ix = 5; + else + ix = 3; xmx = dxcar * ix * res + xmn + 2; if ((x > xmn) && (x < xmx) && (y < ymx) && (y > 15)) { ix = pred(int, ((uint)y >> 3)) + (msg3 << 8); @@ -282,8 +283,10 @@ void Menu::menuDown(int ii) { hideMouse(); sauvecr(10, succ(byte, don[ii][2]) << 1); xco = xco << 3; - if (res == 1) cx = 10; - else cx = 6; + if (res == 1) + cx = 10; + else + cx = 6; xcc = xco + (don[ii][3] * cx) + 6; g_vm->_screenSurface.fillRect(15, Common::Rect(xco, 12, xcc, 10 + (don[ii][2] << 1))); g_vm->_screenSurface.fillRect(0, Common::Rect(xcc, 12, xcc + 4, 10 + (don[ii][2] << 1))); @@ -384,11 +387,12 @@ void Menu::mdn() { /* debug('mdn'); */ if (!_menuActive) return; + x = x_s; y = y_s; if (!g_vm->getMouseClick()) { - if ((x == xprec) && - (y == yprec)) return; + if ((x == xprec) && (y == yprec)) + return; else { xprec = x; yprec = y; @@ -400,12 +404,19 @@ void Menu::mdn() { || ((x > 220 * res) && (x < 220 * res + 24)) || ((x > 268 * res) && (x < 268 * res + 24))); if (tes) { - if (x < 76 * res) ix = invent; - else if (x < 124 * res) ix = MENU_MOVE; - else if (x < 172 * res) ix = action; - else if (x < 220 * res) ix = saction; - else if (x < 268 * res) ix = discut; - else ix = fichier; + if (x < 76 * res) + ix = invent; + else if (x < 124 * res) + ix = MENU_MOVE; + else if (x < 172 * res) + ix = action; + else if (x < 220 * res) + ix = saction; + else if (x < 268 * res) + ix = MENU_DISCUSS; + else + ix = fichier; + if ((ix != msg3) || (! test0)) if (!((ix == fichier) && ((msg3 == sauve) || (msg3 == charge)))) { menuUp(msg3); @@ -413,16 +424,19 @@ void Menu::mdn() { msg3 = ix; msg4 = OPCODE_NONE; } - } else { /* Not in the MenuTitle line */ - if ((y > 11) && (test0)) util(x, y); + } else { // Not in the MenuTitle line + if ((y > 11) && (test0)) + util(x, y); } - } else { /* There was a click */ + } else { // There was a click if ((msg3 == fichier) && (msg4 != OPCODE_NONE)) { // Another menu to be _displayed g_vm->setMouseClick(false); menuUp(msg3); - if (lo(msg4) == 1) msg3 = 7; - else msg3 = 8; + if (lo(msg4) == 1) + msg3 = 7; + else + msg3 = 8; menuDown(msg3); g_vm->setMouseClick(false); diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index d4aecbcbd9..1fb8ad45c6 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -61,7 +61,7 @@ public: enum { invent = 1, MENU_MOVE = 2, action = 3, saction = 4, - discut = 5, fichier = 6, sauve = 7, charge = 8 + MENU_DISCUSS = 5, fichier = 6, sauve = 7, charge = 8 }; } // End of namespace Mortevielle diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 78e577a3f5..bf9a480af7 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -56,42 +56,55 @@ void testfi() { * Read the current system time */ int readclock() { - int m, h; - - /* debug('readclock');*/ TimeDate dateTime; g_system->getTimeAndDate(dateTime); - m = dateTime.tm_min * 60; - h = dateTime.tm_hour * 3600; + int m = dateTime.tm_min * 60; + int h = dateTime.tm_hour * 3600; return h + m + dateTime.tm_sec; } void modif(int &nu) { - /* debug('modif'); */ - if (nu == 26) nu = 25; - if ((nu > 29) && (nu < 36)) nu = nu - 4; - if ((nu > 69) && (nu < 78)) nu = nu - 37; - if ((nu > 99) && (nu < 194)) nu = nu - 59; - if ((nu > 996) && (nu < 1000)) nu = nu - 862; - if ((nu > 1500) && (nu < 1507)) nu = nu - 1363; - if ((nu > 1507) && (nu < 1513)) nu = nu - 1364; - if ((nu > 1999) && (nu < 2002)) nu = nu - 1851; - if (nu == 2010) nu = 151; - if ((nu > 2011) && (nu < 2025)) nu = nu - 1860; - if (nu == 2026) nu = 165; - if ((nu > 2029) && (nu < 2037)) nu = nu - 1864; - if ((nu > 3000) && (nu < 3005)) nu = nu - 2828; - if (nu == 4100) nu = 177; - if (nu == 4150) nu = 178; - if ((nu > 4151) && (nu < 4156)) nu = nu - 3973; - if (nu == 4157) nu = 183; - if ((nu == 4160) || (nu == 4161)) nu = nu - 3976; + if (nu == 26) + nu = 25; + else if ((nu > 29) && (nu < 36)) + nu -= 4; + else if ((nu > 69) && (nu < 78)) + nu -= 37; + else if ((nu > 99) && (nu < 194)) + nu -= 59; + else if ((nu > 996) && (nu < 1000)) + nu -= 862; + else if ((nu > 1500) && (nu < 1507)) + nu -= 1363; + else if ((nu > 1507) && (nu < 1513)) + nu -= 1364; + else if ((nu > 1999) && (nu < 2002)) + nu -= 1851; + else if (nu == 2010) + nu = 151; + else if ((nu > 2011) && (nu < 2025)) + nu -= 1860; + else if (nu == 2026) + nu = 165; + else if ((nu > 2029) && (nu < 2037)) + nu -= 1864; + else if ((nu > 3000) && (nu < 3005)) + nu -= 2828; + else if (nu == 4100) + nu = 177; + else if (nu == 4150) + nu = 178; + else if ((nu > 4151) && (nu < 4156)) + nu -= 3973; + else if (nu == 4157) + nu = 183; + else if ((nu == 4160) || (nu == 4161)) + nu -= 3976; } void dessine(int ad, int x, int y) { - /* debug('dessine'); */ hideMouse(); writepal(numpal); pictout(ad, 0, x, y); @@ -99,7 +112,6 @@ void dessine(int ad, int x, int y) { } void dessine_rouleau() { - /* debug('dessine_rouleau'); */ writepal(89); if (gd == her) { mem[0x7000 * 16 + 14] = 15; @@ -124,18 +136,19 @@ void text1(int x, int y, int nb, int m) { /* debug('text'); */ - if (res == 1) co = 10; - else co = 6; + if (res == 1) + co = 10; + else + co = 6; deline(m, st, tay); - if ((y == 182) && (tay * co > nb * 6)) y = 176; + if ((y == 182) && (tay * co > nb * 6)) + y = 176; afftex(st, x, y, nb, 20, color_txt); } void initouv() { - int cx; - - /* debug('initouv'); */ - for (cx = 1; cx <= 7; cx ++) touv[cx] = chr(0); + for (int cx = 1; cx <= 7; cx++) + touv[cx] = chr(0); } void ecrf1() { @@ -144,7 +157,6 @@ void ecrf1() { } void clsf1() { - /* debug('clsf1'); */ hideMouse(); g_vm->_screenSurface.fillRect(0, Common::Rect(0, 11, 514, 175)); @@ -152,9 +164,6 @@ void clsf1() { } void clsf2() { -// int i, j; - - /* debug('clsf2'); */ hideMouse(); if (f2_all) { g_vm->_screenSurface.fillRect(0, Common::Rect(1, 176, 633, 199)); @@ -173,13 +182,13 @@ void ecrf2() { void ecr2(Common::String str_) { int tab; - int tlig; - /* debug('ecr2 : '+str_);*/ - if (res == 1) tab = 10; - else tab = 6; + if (res == 1) + tab = 10; + else + tab = 6; g_vm->_screenSurface.putxy(8, 177); - tlig = 59 + pred(int, res) * 36; + int tlig = 59 + pred(int, res) * 36; if ((int)str_.size() < tlig) g_vm->_screenSurface.writeg(str_, 5); else if ((int)str_.size() < (tlig << 1)) { @@ -200,9 +209,6 @@ void ecr2(Common::String str_) { } void clsf3() { -// int i, j; - - /* debug('clsf3'); */ hideMouse(); g_vm->_screenSurface.fillRect(0, Common::Rect(1, 192, 633, 199)); g_vm->_screenSurface.drawBox(0, 191, 634, 8, 15); @@ -210,14 +216,12 @@ void clsf3() { } void ecr3(Common::String text) { - /* debug('ecr3 : '+text);*/ clsf3(); g_vm->_screenSurface.putxy(8, 192); g_vm->_screenSurface.writeg(text, 5); } void ecrf6() { - /* debug('ecrf6'); */ text_color(5); g_vm->_screenSurface.drawBox(62, 33, 363, 80, 15); } @@ -230,7 +234,6 @@ void clsf10() { int co, cod; Common::String st; - /* debug('clsf10'); */ hideMouse(); if (res == 1) { co = 634; @@ -250,8 +253,12 @@ void clsf10() { co = 580 - (g_vm->_screenSurface.getStringWidth(st) / 2); g_vm->_screenSurface.putxy(co, 92); g_vm->_screenSurface.writeg(st, 4); - if (res == 1) co = 620; - else co = 584; + + if (res == 1) + co = 620; + else + co = 584; + g_vm->_screenSurface.fillRect(15, Common::Rect(560, 24, co, 86)); /* rempli(69,12,32,5,255);*/ showMouse(); @@ -267,23 +274,20 @@ void stop() { void paint_rect(int x, int y, int dx, int dy) { int co; - /* debug('paint_rect'); */ - if (gd == cga) co = 3; - else co = 11; + if (gd == cga) + co = 3; + else + co = 11; g_vm->_screenSurface.fillRect(co, Common::Rect(x, y, x + dx, y + dy)); } int hazard(int min, int max) { - /* debug('hazard'); */ return get_random_number(min, max); } void calch(int &j, int &h, int &m) { - int th, nh; - - /* debug('calch');*/ - nh = readclock(); - th = jh + ((nh - mh) / t); + int nh = readclock(); + int th = jh + ((nh - mh) / t); m = ((th % 2) + vm) * 30; h = ((uint)th >> 1) + vh; if (m == 60) { @@ -295,10 +299,7 @@ void calch(int &j, int &h, int &m) { } void conv(int x, int &y) { - int cx; - - /* debug('conv'); */ - cx = 1; + int cx = 1; y = 128; while (cx < x) { y = (uint)y >> 1; @@ -313,11 +314,9 @@ void okpas() { void modobj(int m) { char str_[1410]; - Common::String strp; int tay; - /* debug('modobj'); */ - strp = ' '; + Common::String strp = Common::String(' '); if (m != 500) { deline(m - 501 + c_st41, str_, tay); strp = delig; @@ -328,13 +327,13 @@ void modobj(int m) { void modobj2(int m, bool t1, bool t2) { char str_[1410]; - Common::String strp; int tay; - /* debug('modobj'); */ - strp = ' '; - if (t1 || t2) okpas(); - else tesok = false;; + Common::String strp = Common::String(' '); + if (t1 || t2) + okpas(); + else + tesok = false;; if (m != 500) { deline(m - 501 + c_st41, str_, tay); strp = delig; @@ -348,25 +347,28 @@ void repon(int f, int m) { Common::String str_; Common::String str1; char st[1410]; -// text1 fic; int i, xco, dx, caspe, tay; - /* debug('repon fenetre nř'+chr(f+48));*/ if ((m > 499) && (m < 563)) { deline(m - 501 + c_st41, st, tay); - if (tay > ((58 + pred(int, res) * 37) << 1)) f2_all = true; - else f2_all = false; + if (tay > ((58 + pred(int, res) * 37) << 1)) + f2_all = true; + else + f2_all = false; clsf2(); afftex(st, 8, 176, 85, 3, 5); } else { modif(m); - if (f == 8) f = 2; - if (f == 1) f = 6; + if (f == 8) + f = 2; + if (f == 1) + f = 6; if (f == 2) { clsf2(); ecrf2(); text1(8, 182, 103, m); - if ((m == 68) || (m == 69)) s.teauto[40] = '*'; + if ((m == 68) || (m == 69)) + s.teauto[40] = '*'; if ((m == 104) && (caff == 14)) { s.teauto[36] = '*'; if (s.teauto[39] == '*') { @@ -377,11 +379,15 @@ void repon(int f, int m) { } if ((f >= 6) && (f <= 9)) { deline(m, st, tay); - if (f == 6) i = 4; - else i = 5; + if (f == 6) + i = 4; + else + i = 5; afftex(st, 80, 40, 60, 25, i); - if (m == 180) s.pourc[6] = '*'; - if (m == 179) s.pourc[10] = '*'; + if (m == 180) + s.pourc[6] = '*'; + if (m == 179) + s.pourc[10] = '*'; } if (f == 7) { /* messint */ ecrf7(); @@ -395,30 +401,43 @@ void repon(int f, int m) { caspe = 144; dx = 50; } - if (tay < 40) afftex(st, xco, 86, dx, 3, 5); - else afftex(st, caspe, 86, dx, 3, 5); + if (tay < 40) + afftex(st, xco, 86, dx, 3, 5); + else + afftex(st, caspe, 86, dx, 3, 5); } } } void t5(int cx) { - /* debug('t5'); */ - if (cx == 10) blo = false; + if (cx == 10) + blo = false; + if (cx != 1) { bh1 = false; bf1 = false; } - if (cx != 2) bh2 = false; + + if (cx != 2) + bh2 = false; + if (cx != 4) { bh4 = false; bf4 = false; } - if (cx != 5) bh5 = false; - if (cx != 6) bh6 = false; - if (cx != 8) bh8 = false; - if (cx != 3) bt3 = false; - if (cx != 7) bt7 = false; - if (cx != 9) bh9 = false; + + if (cx != 5) + bh5 = false; + if (cx != 6) + bh6 = false; + if (cx != 8) + bh8 = false; + if (cx != 3) + bt3 = false; + if (cx != 7) + bt7 = false; + if (cx != 9) + bh9 = false; } void affper(int per) { @@ -473,91 +492,109 @@ void affper(int per) { void choix(int min, int max, int &per) { bool i; - int haz, cx, cy, cz; + int cz; - /* debug('o0 choix'); */ - haz = hazard(min, max); + int haz = hazard(min, max); if (haz > 4) { haz = 8 - haz; i = true; - } else i = false; - cx = 0; + } else + i = false; + + int cx = 0; per = 0; while (cx < haz) { - cy = hazard(1, 8); + int cy = hazard(1, 8); conv(cy, cz); if ((per & cz) != cz) { - cx = cx + 1; - per = (per | cz); + ++cx; + per |= cz; } } - if (i) per = 255 - per; - i = false; + if (i) + per = 255 - per; } void cpl1(int &p) { int j, h, m; - /* debug('o0 cpl1'); */ calch(j, h, m); - if ((h > 7) || (h < 11)) p = 25; - if ((h > 10) && (h < 14)) p = 35; - if ((h > 13) && (h < 16)) p = 50; - if ((h > 15) && (h < 18)) p = 5; - if ((h > 17) && (h < 22)) p = 35; - if ((h > 21) && (h < 24)) p = 50; - if ((h >= 0) && (h < 8)) p = 70; + if ((h > 7) || (h < 11)) + p = 25; + else if ((h > 10) && (h < 14)) + p = 35; + else if ((h > 13) && (h < 16)) + p = 50; + else if ((h > 15) && (h < 18)) + p = 5; + else if ((h > 17) && (h < 22)) + p = 35; + else if ((h > 21) && (h < 24)) + p = 50; + else if ((h >= 0) && (h < 8)) + p = 70; + g_vm->_menu.mdn(); } void cpl2(int &p) { int j, h, m; - /* debug('o0 cpl2'); */ calch(j, h, m); - if ((h > 7) && (h < 11)) p = -2; - if (h == 11) p = 100; - if ((h > 11) && (h < 23)) p = 10; - if (h == 23) p = 20; - if ((h >= 0) && (h < 8)) p = 50; + if ((h > 7) && (h < 11)) + p = -2; + if (h == 11) + p = 100; + if ((h > 11) && (h < 23)) + p = 10; + if (h == 23) + p = 20; + if ((h >= 0) && (h < 8)) + p = 50; } void cpl3(int &p) { int j, h, m; - /* debug('o0 cpl3'); */ calch(j, h, m); - if (((h > 8) && (h < 10)) || ((h > 19) && (h < 24))) p = 34; - if (((h > 9) && (h < 20)) || ((h >= 0) && (h < 9))) p = 0; + if (((h > 8) && (h < 10)) || ((h > 19) && (h < 24))) + p = 34; + if (((h > 9) && (h < 20)) || ((h >= 0) && (h < 9))) + p = 0; } void cpl5(int &p) { int j, h, m; - /* debug('o0 cpl5'); */ calch(j, h, m); - if ((h > 6) && (h < 10)) p = 0; - if (h == 10) p = 100; - if ((h > 10) && (h < 24)) p = 15; - if ((h >= 0) && (h < 7)) p = 50; + if ((h > 6) && (h < 10)) + p = 0; + if (h == 10) + p = 100; + if ((h > 10) && (h < 24)) + p = 15; + if ((h >= 0) && (h < 7)) + p = 50; } void cpl6(int &p) { int j, h, m; - /* debug('o0 cpl6'); */ calch(j, h, m); - if (((h > 7) && (h < 13)) || ((h > 17) && (h < 20))) p = -2; - if (((h > 12) && (h < 17)) || ((h > 19) && (h < 24))) p = 35; - if (h == 17) p = 100; - if ((h >= 0) && (h < 8)) p = 60; + if (((h > 7) && (h < 13)) || ((h > 17) && (h < 20))) + p = -2; + if (((h > 12) && (h < 17)) || ((h > 19) && (h < 24))) + p = 35; + if (h == 17) + p = 100; + if ((h >= 0) && (h < 8)) + p = 60; } /** * Shows the you are alone message in the status area on the right hand side of the screen */ void person() { - /* debug('person'); */ for (int cf = 1; cf <= 8; cf ++) g_vm->_menu.disableMenuItem(g_vm->_menu._disc[cf]); @@ -577,7 +614,6 @@ void person() { } void chlm(int &per) { - /* debug('chlm'); */ per = hazard(1, 2); if (per == 2) per = 128; } @@ -594,7 +630,6 @@ void pendule() { int h, co; - /* debug('pendule'); */ hideMouse(); paint_rect(570, 118, 20, 10); @@ -602,20 +637,27 @@ void pendule() { if ((gd == cga) || (gd == her)) co = 0; else co = 1; + if (min == 0) g_vm->_screenSurface.droite(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y - rg), co); else g_vm->_screenSurface.droite(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y + rg), co); + h = heu; - if (h > 12) h = h - 12; - if (h == 0) h = 12; + if (h > 12) + h -= 12; + if (h == 0) + h = 12; + g_vm->_screenSurface.droite(((uint)x >> 1)*res, y, ((uint)(x + cv[1][h]) >> 1)*res, y + cv[2][h], co); showMouse(); g_vm->_screenSurface.putxy(568, 154); + if (heu > 11) g_vm->_screenSurface.writeg("PM ", 1); else g_vm->_screenSurface.writeg("AM ", 1); + g_vm->_screenSurface.putxy(550, 160); if ((jou >= 0) && (jou <= 8)) { Common::String tmp = g_vm->getString(S_DAY); @@ -629,134 +671,158 @@ void pendule() { *************/ void debloc(int l) { - /* debug('debloc'); */ num = 0; x = 0; y = 0; - if ((l != 26) && (l != 15)) t5(l); + if ((l != 26) && (l != 15)) + t5(l); mpers = ipers; } void cpl10(int &p, int &h) { int j, m; - /* debug('o1 cpl10'); */ calch(j, h, m); - if (((h > 7) && (h < 11)) || ((h > 11) && (h < 14)) - || ((h > 18) && (h < 21))) p = 100; - if ((h == 11) || ((h > 20) && (h < 24))) p = 45; - if (((h > 13) && (h < 17)) || (h == 18)) p = 35; - if (h == 17) p = 60; - if ((h >= 0) && (h < 8)) p = 5; + if (((h > 7) && (h < 11)) || ((h > 11) && (h < 14)) || ((h > 18) && (h < 21))) + p = 100; + if ((h == 11) || ((h > 20) && (h < 24))) + p = 45; + if (((h > 13) && (h < 17)) || (h == 18)) + p = 35; + if (h == 17) + p = 60; + if ((h >= 0) && (h < 8)) + p = 5; } void cpl11(int &p, int &h) { int j, m; - /* debug('o1 cpl11'); */ calch(j, h, m); - if (((h > 8) && (h < 12)) || ((h > 20) && (h < 24))) p = 25; - if (((h > 11) && (h < 14)) || ((h > 18) && (h < 21))) p = 5; - if ((h > 13) && (h < 17)) p = 55; - if ((h > 16) && (h < 19)) p = 45; - if ((h >= 0) && (h < 9)) p = 0; + if (((h > 8) && (h < 12)) || ((h > 20) && (h < 24))) + p = 25; + if (((h > 11) && (h < 14)) || ((h > 18) && (h < 21))) + p = 5; + if ((h > 13) && (h < 17)) + p = 55; + if ((h > 16) && (h < 19)) + p = 45; + if ((h >= 0) && (h < 9)) + p = 0; } void cpl12(int &p) { int j, h, m; - /* debug('o1 cpl12'); */ calch(j, h, m); - if (((h > 8) && (h < 15)) || ((h > 16) && (h < 22))) p = 55; - if (((h > 14) && (h < 17)) || ((h > 21) && (h < 24))) p = 25; - if ((h >= 0) && (h < 5)) p = 0; - if ((h > 4) && (h < 9)) p = 15; + if (((h > 8) && (h < 15)) || ((h > 16) && (h < 22))) + p = 55; + if (((h > 14) && (h < 17)) || ((h > 21) && (h < 24))) + p = 25; + if ((h >= 0) && (h < 5)) + p = 0; + if ((h > 4) && (h < 9)) + p = 15; } void cpl13(int &p) { - /* debug('o1 cpl13'); */ p = 0; } void cpl15(int &p) { int j, h, m; - /* debug('o1 cpl15'); */ calch(j, h, m); - if ((h > 7) && (h < 12)) p = 25; - if ((h > 11) && (h < 14)) p = 0; - if ((h > 13) && (h < 18)) p = 10; - if ((h > 17) && (h < 20)) p = 55; - if ((h > 19) && (h < 22)) p = 5; - if ((h > 21) && (h < 24)) p = 15; - if ((h >= 0) && (h < 8)) p = -15; + if ((h > 7) && (h < 12)) + p = 25; + else if ((h > 11) && (h < 14)) + p = 0; + else if ((h > 13) && (h < 18)) + p = 10; + else if ((h > 17) && (h < 20)) + p = 55; + else if ((h > 19) && (h < 22)) + p = 5; + else if ((h > 21) && (h < 24)) + p = 15; + else if ((h >= 0) && (h < 8)) + p = -15; } void cpl20(int &p, int &h) { int j, m; - /* debug('o1 cpl20'); */ calch(j, h, m); - if (h == 10) p = 65; - if ((h > 10) && (h < 21)) p = 5; - if ((h > 20) && (h < 24)) p = -15; - if ((h >= 0) && (h < 5)) p = -300; - if ((h > 4) && (h < 10)) p = -5; + if (h == 10) + p = 65; + else if ((h > 10) && (h < 21)) + p = 5; + else if ((h > 20) && (h < 24)) + p = -15; + else if ((h >= 0) && (h < 5)) + p = -300; + else if ((h > 4) && (h < 10)) + p = -5; } void quelq1(int l) { int per; - /* debug('o1 quelq1'); */ per = hazard(1, 2); - if (l == 1) - if (per == 1) bh1 = true; - else bf1 = true; - if (l == 4) - if (per == 1) bh4 = true; - else bf4 = true; + if (l == 1) { + if (per == 1) + bh1 = true; + else + bf1 = true; + } else if (l == 4) { + if (per == 1) + bh4 = true; + else + bf4 = true; + } + ipers = 10; } void quelq2() { - /* debug('o1 quelq2'); */ - if (li == 2) bh2 = true; - else bh9 = true; + if (li == 2) + bh2 = true; + else + bh9 = true; + ipers = 10; } void quelq5() { - /* debug('o1 quelq5'); */ bh5 = true; ipers = 10; } void quelq6(int l) { - /* debug('o1 quelq6'); */ - if (l == 6) bh6 = true; - if (l == 8) bh8 = true; + if (l == 6) + bh6 = true; + else if (l == 8) + bh8 = true; + ipers = 10; } void quelq10(int h, int &per) { int min = 0, max = 0; - /* debug('o1 quelq10'); */ - if ((h >= 0) && (h < 8)) chlm(per); + if ((h >= 0) && (h < 8)) + chlm(per); else { if ((h > 7) && (h < 10)) { min = 5; max = 7; - } - if ((h > 9) && (h < 12)) { + } else if ((h > 9) && (h < 12)) { min = 1; max = 4; - } - if (((h > 11) && (h < 15)) || ((h > 18) && (h < 21))) { + } else if (((h > 11) && (h < 15)) || ((h > 18) && (h < 21))) { min = 6; max = 8; - } - if (((h > 14) && (h < 19)) || ((h > 20) && (h < 24))) { + } else if (((h > 14) && (h < 19)) || ((h > 20) && (h < 24))) { min = 1; max = 5; } @@ -768,18 +834,16 @@ void quelq10(int h, int &per) { void quelq11(int h, int &per) { int min = 0, max = 0; - /* debug('o1 quelq11'); */ - if ((h >= 0) && (h < 8)) chlm(per); + if ((h >= 0) && (h < 8)) + chlm(per); else { if (((h > 7) && (h < 10)) || ((h > 20) && (h < 24))) { min = 1; max = 3; - } - if (((h > 9) && (h < 12)) || ((h > 13) && (h < 19))) { + } else if (((h > 9) && (h < 12)) || ((h > 13) && (h < 19))) { min = 1; max = 4; - } - if (((h > 11) && (h < 14)) || ((h > 18) && (h < 21))) { + } else if (((h > 11) && (h < 14)) || ((h > 18) && (h < 21))) { min = 1; max = 2; } @@ -789,7 +853,6 @@ void quelq11(int h, int &per) { } void quelq12(int &per) { - /* debug('o1 quelq12'); */ chlm(per); affper(per); } @@ -798,41 +861,37 @@ void quelq15(int &per) { int cx; bool test; - - /* debug('o1 quelq15'); */ per = 0; - if (per == 0) { - do { - cx = hazard(1, 8); - test = (((cx == 1) && (bh2 || bh9)) || - ((cx == 2) && bh8) || - ((cx == 3) && bh4) || - ((cx == 4) && bf4) || - ((cx == 5) && bh6) || - ((cx == 6) && bh1) || - ((cx == 7) && bf1) || - ((cx == 8) && bh5)); - } while (!(! test)); - conv(cx, per); - affper(per); - } + + do { + cx = hazard(1, 8); + test = (((cx == 1) && (bh2 || bh9)) || + ((cx == 2) && bh8) || + ((cx == 3) && bh4) || + ((cx == 4) && bf4) || + ((cx == 5) && bh6) || + ((cx == 6) && bh1) || + ((cx == 7) && bf1) || + ((cx == 8) && bh5)); + } while (!(! test)); + + conv(cx, per); + affper(per); } void quelq20(int h, int &per) { int min = 0, max = 0; - /* debug('o1 quelq20'); */ - if (((h >= 0) && (h < 10)) || ((h > 18) && (h < 24))) chlm(per); + if (((h >= 0) && (h < 10)) || ((h > 18) && (h < 24))) + chlm(per); else { if ((h > 9) && (h < 12)) { min = 3; max = 7; - } - if ((h > 11) && (h < 18)) { + } else if ((h > 11) && (h < 18)) { min = 1; max = 2; - } - if (h == 18) { + } else if (h == 18) { min = 2; max = 4; } @@ -847,61 +906,86 @@ void frap() { /* debug('o1 frap'); */ calch(j, h, m); - if ((h >= 0) && (h < 8)) crep = 190; + if ((h >= 0) && (h < 8)) + crep = 190; else { haz = hazard(1, 100); - if (haz > 70) crep = 190; - else crep = 147; + if (haz > 70) + crep = 190; + else + crep = 147; } } void nouvp(int l, int &p) { - /* debug('o1 nouvp'); */ p = 0; if (l == 1) { - if (bh1) p = 4; - if (bf1) p = 2; - } - if (((l == 2) && (bh2)) || ((l == 9) && (bh9))) p = 128; - if (l == 4) { - if (bh4) p = 32; - if (bf4) p = 16; - } - if ((l == 5) && (bh5)) p = 1; - if ((l == 6) && (bh6)) p = 8; - if ((l == 8) && (bh8)) p = 64; - if (((l == 3) && (bt3)) || ((l == 7) && (bt7))) p = 9; - if (p != 9) affper(p); + if (bh1) + p = 4; + if (bf1) + p = 2; + } else if (((l == 2) && (bh2)) || ((l == 9) && (bh9))) + p = 128; + else if (l == 4) { + if (bh4) + p = 32; + if (bf4) + p = 16; + } else if ((l == 5) && (bh5)) + p = 1; + else if ((l == 6) && (bh6)) + p = 8; + else if ((l == 8) && (bh8)) + p = 64; + else if (((l == 3) && (bt3)) || ((l == 7) && (bt7))) + p = 9; + + if (p != 9) + affper(p); } void tip(int ip, int &cx) { - /* debug('o1 tip'); */ - if (ip == 128) cx = 1; - else if (ip == 64) cx = 2; - else if (ip == 32) cx = 3; - else if (ip == 16) cx = 4; - else if (ip == 8) cx = 5; - else if (ip == 4) cx = 6; - else if (ip == 2) cx = 7; - else if (ip == 1) cx = 8; + if (ip == 128) + cx = 1; + else if (ip == 64) + cx = 2; + else if (ip == 32) + cx = 3; + else if (ip == 16) + cx = 4; + else if (ip == 8) + cx = 5; + else if (ip == 4) + cx = 6; + else if (ip == 2) + cx = 7; + else if (ip == 1) + cx = 8; } void ecfren(int &p, int &haz, int cf, int l) { /* debug('o1 ecfren'); */ - if (l == 0) person(); + if (l == 0) + person(); p = -500; haz = 0; - if (((l == 1) && (! bh1) && (! bf1)) - || ((l == 4) && (! bh4) && (! bf4))) cpl1(p); - if ((l == 2) && (! bh2) && (! bh9)) cpl2(p); - if (((l == 3) && (! bt3)) || ((l == 7) && (! bt7))) cpl3(p); - if ((l == 5) && (! bh5)) cpl5(p); - if (((l == 6) && (! bh6)) || ((l == 8) && (! bh8))) cpl6(p); - if ((l == 9) && (! bh9) && (! bh2)) p = 10; - if (((l == 2) && (bh9)) || ((l == 9) && (bh2))) p = -400; + if (((l == 1) && (! bh1) && (! bf1)) || ((l == 4) && (! bh4) && (! bf4))) + cpl1(p); + if ((l == 2) && (! bh2) && (! bh9)) + cpl2(p); + if (((l == 3) && (! bt3)) || ((l == 7) && (! bt7))) + cpl3(p); + if ((l == 5) && (! bh5)) + cpl5(p); + if (((l == 6) && (! bh6)) || ((l == 8) && (! bh8))) + cpl6(p); + if ((l == 9) && (! bh9) && (! bh2)) + p = 10; + if (((l == 2) && (bh9)) || ((l == 9) && (bh2))) + p = -400; if (p != -500) { p = p + cf; haz = hazard(1, 100); @@ -915,19 +999,29 @@ void becfren(int l) { if ((l == 1) || (l == 4)) { haz = hazard(1, 2); if (l == 1) - if (haz == 1) bh1 = true; - else bf1 = true; + if (haz == 1) + bh1 = true; + else + bf1 = true; if (l == 4) - if (haz == 1) bh4 = true; - else bf4 = true; - } - if (l == 2) bh2 = true; - else if (l == 3) bt3 = true; - else if (l == 5) bh5 = true; - else if (l == 6) bh6 = true; - else if (l == 7) bt7 = true; - else if (l == 8) bh8 = true; - else if (l == 9) bh9 = true; + if (haz == 1) + bh4 = true; + else + bf4 = true; + } else if (l == 2) + bh2 = true; + else if (l == 3) + bt3 = true; + else if (l == 5) + bh5 = true; + else if (l == 6) + bh6 = true; + else if (l == 7) + bt7 = true; + else if (l == 8) + bh8 = true; + else if (l == 9) + bh9 = true; } /* NIVEAU 10 */ @@ -941,7 +1035,7 @@ void init_nbrepm() { void phaz(int &haz, int &p, int cf) { /* debug('phaz'); */ - p = p + cf; + p += cf; haz = hazard(1, 100); } @@ -950,29 +1044,45 @@ void inzon() { /* debug('o2 inzon'); */ copcha(); - { - s.ipre = false; - s.derobj = 0; - s.icave = 0; - s.iboul = 0; - s.ibag = 0; - s.ipuit = 0; - s.ivier = 0; - s.iloic = 136; - s.icryp = 141; - s.conf = hazard(4, 10); - s.mlieu = 21; - for (cx = 2; cx <= 6; cx ++) s.sjer[cx] = chr(0); - s.sjer[1] = chr(113); - s.heure = chr(20); - for (cx = 1; cx <= 10; cx ++) s.pourc[cx] = ' '; - for (cx = 1; cx <= 6; cx ++) s.teauto[cx] = '*'; - for (cx = 7; cx <= 9; cx ++) s.teauto[cx] = ' '; - for (cx = 10; cx <= 28; cx ++) s.teauto[cx] = '*'; - for (cx = 29; cx <= 42; cx ++) s.teauto[cx] = ' '; - s.teauto[33] = '*'; - } - for (cx = 1; cx <= 8; cx ++) nbrep[cx] = 0; + + s.ipre = false; + s.derobj = 0; + s.icave = 0; + s.iboul = 0; + s.ibag = 0; + s.ipuit = 0; + s.ivier = 0; + s.iloic = 136; + s.icryp = 141; + s.conf = hazard(4, 10); + s.mlieu = 21; + + for (cx = 2; cx <= 6; cx ++) + s.sjer[cx] = chr(0); + + s.sjer[1] = chr(113); + s.heure = chr(20); + + for (cx = 1; cx <= 10; cx ++) + s.pourc[cx] = ' '; + + for (cx = 1; cx <= 6; cx ++) + s.teauto[cx] = '*'; + + for (cx = 7; cx <= 9; cx ++) + s.teauto[cx] = ' '; + + for (cx = 10; cx <= 28; cx ++) + s.teauto[cx] = '*'; + + for (cx = 29; cx <= 42; cx ++) + s.teauto[cx] = ' '; + + s.teauto[33] = '*'; + + for (cx = 1; cx <= 8; cx ++) + nbrep[cx] = 0; + init_nbrepm(); } @@ -981,7 +1091,8 @@ void dprog() { li = 21; /* jh:= t_settime(0);*/ jh = 0; - if (! s.ipre) blo = true; + if (! s.ipre) + blo = true; t = ti1; mh = readclock(); } @@ -990,12 +1101,13 @@ void pl1(int cf) { int p, haz; /* debug('o2 pl1'); */ - if (((li == 1) && (! bh1) && (! bf1)) - || ((li == 4) && (! bh4) && (! bf4))) { + if (((li == 1) && (! bh1) && (! bf1)) || ((li == 4) && (! bh4) && (! bf4))) { cpl1(p); phaz(haz, p, cf); - if (haz > p) person(); - else quelq1(li); + if (haz > p) + person(); + else + quelq1(li); } } @@ -1006,8 +1118,10 @@ void pl2(int cf) { if (! bh2) { cpl2(p); phaz(haz, p, cf); - if (haz > p) person(); - else quelq2(); + if (haz > p) + person(); + else + quelq2(); } } @@ -1018,8 +1132,10 @@ void pl5(int cf) { if (! bh5) { cpl5(p); phaz(haz, p, cf); - if (haz > p) person(); - else quelq5(); + if (haz > p) + person(); + else + quelq5(); } } @@ -1030,8 +1146,10 @@ void pl6(int cf) { if (((li == 6) && (! bh6)) || ((li == 8) && (! bh8))) { cpl6(p); phaz(haz, p, cf); - if (haz > p) person(); - else quelq6(li); + if (haz > p) + person(); + else + quelq6(li); } } @@ -1042,8 +1160,10 @@ void pl9(int cf) { if (! bh9) { cf = -10; phaz(haz, p, cf); - if (haz > p) person(); - else quelq2(); + if (haz > p) + person(); + else + quelq2(); } } @@ -1053,8 +1173,10 @@ void pl10(int cf) { /* debug('o2 pl10'); */ cpl10(p, h); phaz(haz, p, cf); - if (haz > p) person(); - else quelq10(h, p); + if (haz > p) + person(); + else + quelq10(h, p); } void pl11(int cf) { @@ -1063,8 +1185,10 @@ void pl11(int cf) { /* debug('o2 pl11'); */ cpl11(p, h); phaz(haz, p, cf); - if (haz > p) person(); - else quelq11(h, p); + if (haz > p) + person(); + else + quelq11(h, p); } void pl12(int cf) { @@ -1073,8 +1197,10 @@ void pl12(int cf) { /* debug('o2 pl12'); */ cpl12(p); phaz(haz, p, cf); - if (haz > p) person(); - else quelq12(p); + if (haz > p) + person(); + else + quelq12(p); } void pl13(int cf) { @@ -1083,8 +1209,10 @@ void pl13(int cf) { /* debug('o2 pl13'); */ cpl13(p); phaz(haz, p, cf); - if (haz > p) person(); - else quelq12(p); + if (haz > p) + person(); + else + quelq12(p); } void pl15(int cf) { @@ -1093,8 +1221,10 @@ void pl15(int cf) { /* debug('o2 pl15'); */ cpl15(p); phaz(haz, p, cf); - if (haz > p) person(); - else quelq15(p); + if (haz > p) + person(); + else + quelq15(p); } void pl20(int cf) { @@ -1103,8 +1233,10 @@ void pl20(int cf) { /* debug('o2 pl20'); */ cpl20(p, h); phaz(haz, p, cf); - if (haz > p) person(); - else quelq20(h, p); + if (haz > p) + person(); + else + quelq20(h, p); } void t11(int l11, int &a) { @@ -1113,7 +1245,7 @@ void t11(int l11, int &a) { /* debug('o2 t11'); */ ecfren(p, haz, s.conf, l11); li = l11; - if ((l11 > 0) && (l11 < 10)) + if ((l11 > 0) && (l11 < 10)) { if (p != -500) { if (haz > p) { person(); @@ -1122,46 +1254,63 @@ void t11(int l11, int &a) { becfren(li); nouvp(li, a); } - } else nouvp(li, a); - if (l11 > 9) - if ((l11 > 15) && (l11 != 20) && (l11 != 26)) person(); + } else + nouvp(li, a); + } + + if (l11 > 9) { + if ((l11 > 15) && (l11 != 20) && (l11 != 26)) + person(); else { - if (l11 == 10) cpl10(p, h); - if (l11 == 11) cpl11(p, h); - if (l11 == 12) cpl12(p); - if ((l11 == 13) || (l11 == 14)) cpl13(p); - if ((l11 == 15) || (l11 == 26)) cpl15(p); - if (l11 == 20) cpl20(p, h); + if (l11 == 10) + cpl10(p, h); + if (l11 == 11) + cpl11(p, h); + if (l11 == 12) + cpl12(p); + if ((l11 == 13) || (l11 == 14)) + cpl13(p); + if ((l11 == 15) || (l11 == 26)) + cpl15(p); + if (l11 == 20) + cpl20(p, h); p = p + s.conf; haz = hazard(1, 100); if (haz > p) { person(); a = 0; } else { - if (l11 == 10) quelq10(h, p); - if (l11 == 11) quelq11(h, p); - if ((l11 == 12) || (l11 == 13) || (l11 == 14)) quelq12(p); - if ((l11 == 15) || (l11 == 26)) quelq15(p); - if (l11 == 20) quelq20(h, p); + if (l11 == 10) + quelq10(h, p); + if (l11 == 11) + quelq11(h, p); + if ((l11 == 12) || (l11 == 13) || (l11 == 14)) + quelq12(p); + if ((l11 == 15) || (l11 == 26)) + quelq15(p); + if (l11 == 20) + quelq20(h, p); a = p; } } + } } -void cavegre() - -{ +void cavegre() { int haz; /* debug('cavegre'); */ s.conf = s.conf + 2; - if (s.conf > 69) s.conf = s.conf + (s.conf / 10); + if (s.conf > 69) + s.conf += (s.conf / 10); clsf3(); ecrf2(); ecr3(g_vm->getString(S_SOMEONE_ENTERS)); haz = (hazard(0, 4)) - 2; parole(2, haz, 1); - for (haz = 0; haz <= 3000; haz ++); + + // Useless? + for (haz = 0; haz <= 3000; haz++); clsf3(); person(); } @@ -1183,15 +1332,21 @@ void messint(int nu) { } void aniof(int ouf, int num) { - int ad, offset; + if ((caff == 7) && ((num == 4) || (num == 5))) + return; + + if ((caff == 10) && (num == 7)) + num = 6; + + if (caff == 12) { + if (num == 3) + num = 4; + else if (num == 4) + num = 3; + } - /* debug('aniof'); */ - if ((caff == 7) && ((num == 4) || (num == 5))) return; - if ((caff == 10) && (num == 7)) num = 6; - if (caff == 12) if (num == 3) num = 4; - else if (num == 4) num = 3; - ad = adani; - offset = animof(ouf, num); + int ad = adani; + int offset = animof(ouf, num); GfxSurface surface; surface.decode(&mem[ad * 16 + offset]); @@ -1209,7 +1364,7 @@ void musique(int so) { ; } else if ((prebru == 0) && (! s.ipre)) { parole(10, 1, 1); - prebru = prebru + 1; + ++prebru; } else { i = false; if ((s.mlieu == 19) || (s.mlieu == 21) || (s.mlieu == 22)) { @@ -1247,15 +1402,13 @@ void musique(int so) { /* NIVEAU 9 */ void dessin(int ad) { - int cx; - - /* debug('dessin'); */ - if (ad != 0) dessine(ades, ((ad % 160) * 2), (ad / 160)); + if (ad != 0) + dessine(ades, ((ad % 160) * 2), (ad / 160)); else { clsf1(); if (caff > 99) { dessine(ades, 60, 33); - g_vm->_screenSurface.drawBox(118, 32, 291, 121, 15); /* cadre moyen */ //Translation: Medium box + g_vm->_screenSurface.drawBox(118, 32, 291, 121, 15); // Medium box } else if (caff > 69) { dessine(ades, 112, 48); /* ttes */ //Translation: Heads g_vm->_screenSurface.drawBox(222, 47, 155, 91, 15); @@ -1263,17 +1416,30 @@ void dessin(int ad) { dessine(ades, 0, 12); ecrf1(); if ((caff < 30) || (caff > 32)) { - for (cx = 1; cx <= 6; cx ++) - if (ord(touv[cx]) != 0) aniof(1, ord(touv[cx])); + for (int cx = 1; cx <= 6; cx ++) { + if (ord(touv[cx]) != 0) + aniof(1, ord(touv[cx])); + } + if (caff == 13) { - if (s.iboul == 141) aniof(1, 7); - if (s.ibag == 159) aniof(1, 6); + if (s.iboul == 141) + aniof(1, 7); + + if (s.ibag == 159) + aniof(1, 6); } - if ((caff == 14) && (s.icave == 151)) aniof(1, 2); - if ((caff == 17) && (s.ivier == 143)) aniof(1, 1); - if ((caff == 24) && (s.ipuit != 0)) aniof(1, 1); + if ((caff == 14) && (s.icave == 151)) + aniof(1, 2); + + if ((caff == 17) && (s.ivier == 143)) + aniof(1, 1); + + if ((caff == 24) && (s.ipuit != 0)) + aniof(1, 1); } - if (caff < 26) musique(1); + + if (caff < 26) + musique(1); } } } diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 15d413d119..73259aa7a0 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -62,8 +62,9 @@ void tinke() { jou = j; cx = 0; do { - cx = cx + 1; - if (nbrepm[cx] != 0) nbrepm[cx] = nbrepm[cx] - 1; + ++cx; + if (nbrepm[cx] != 0) + --nbrepm[cx]; nbrep[cx] = 0; } while (!(cx == 8)); } @@ -72,9 +73,15 @@ void tinke() { min = 0; pendule(); cf = 0; - for (cx = 1; cx <= 10; cx ++) if (s.pourc[cx] == '*') cf = cf + 1; - if (cf == 10) stpo = "10"; - else stpo = chr(cf + 48); + for (cx = 1; cx <= 10; cx ++) { + if (s.pourc[cx] == '*') + ++cf; + } + + if (cf == 10) + stpo = "10"; + else + stpo = chr(cf + 48); stpou = Common::String(d3); stpou += d5; @@ -93,14 +100,21 @@ void tinke() { min = 30; pendule(); } - if (y_s < 12) return; + if (y_s < 12) + return; + if (! blo) { if ((h == 12) || ((h > 18) && (h < 21)) || ((h >= 0) && (h < 7))) t = ti2; - else t = ti1; + else + t = ti1; cf = s.conf; - if ((cf > 33) && (cf < 66)) t = t - (t / 3); - if (cf > 65) t = t - ((t / 3) * 2); + if ((cf > 33) && (cf < 66)) + t = t - (t / 3); + + if (cf > 65) + t = t - ((t / 3) * 2); + nh = readclock(); if ((nh - mh) > t) { am = g_vm->_menu._menuActive; @@ -146,9 +160,12 @@ void tinke() { pl20(cf); break; } - if ((mpers != 0) && (ipers != 10)) mpers = ipers; + if ((mpers != 0) && (ipers != 10)) + mpers = ipers; + if ((mpers == 0) && (ipers > 0)) - if ((s.mlieu == 13) || (s.mlieu == 14)) cavegre(); + if ((s.mlieu == 13) || (s.mlieu == 14)) + cavegre(); else if (ipers == 10) { ipers = 0; if (! brt) { @@ -174,7 +191,8 @@ void tinke() { nouvp(li, cx); brt = false; hdb = 0; - if ((s.mlieu > 0) && (s.mlieu < 10)) anyone = true; + if ((s.mlieu > 0) && (s.mlieu < 10)) + anyone = true; } } @@ -209,14 +227,18 @@ void tkey1(bool d) { hideMouse(); fenat('K'); - while (keypressed()) key = testou(); + while (keypressed()) + key = testou(); + do { - if (d) tinke(); + if (d) + tinke(); quest = keypressed(); getMousePos(x, y, c); CHECK_QUIT; } while (!(quest || (c != 0) || (d && anyone))); - if (quest) key = testou(); + if (quest) + key = testou(); g_vm->setMouseClick(false); showMouse(); } @@ -227,18 +249,21 @@ void tmlieu(int mli) { char st[1410]; - if (mli == 26) mli = 15; + if (mli == 26) + mli = 15; + i = 1; while ((i < 8) && (v_lieu[i][mli] != 0)) { cx = v_lieu[i][mli]; deline(cx + c_tmlieu, st, tail); nomp = delig; - while (nomp.size() < 20) nomp = nomp + ' '; + while (nomp.size() < 20) + nomp += ' '; g_vm->_menu.menut(g_vm->_menu._depl[i], nomp); - i = i + 1; + ++i; } nomp = "* "; - for (cx = 7; cx >= i; cx --) + for (cx = 7; cx >= i; cx--) g_vm->_menu.menut(g_vm->_menu._depl[cx], nomp); } @@ -267,9 +292,7 @@ void affrep() { crep = s.mlieu; } -void mfouen() - -{ +void mfouen() { int cx; tmlieu(s.mlieu); @@ -304,12 +327,16 @@ void tperd() { } void tsort() { - int cx; - if ((iouv > 0) && (s.mlieu != 0)) - if (s.conf < 50) s.conf = s.conf + 2; - else s.conf = s.conf + (s.conf / 10); - for (cx = 1; cx <= 7; cx ++) touv[cx] = chr(0); + if ((iouv > 0) && (s.mlieu != 0)) { + if (s.conf < 50) + s.conf += 2; + else + s.conf += (s.conf / 10); + } + + for (int cx = 1; cx <= 7; cx ++) + touv[cx] = chr(0); ment = 0; iouv = 0; mchai = 0; @@ -318,6 +345,7 @@ void tsort() { void st4(int ob) { crep = 997; + switch (ob) { case 114 : crep = 109; @@ -340,6 +368,8 @@ void st4(int ob) { case 161 : tlu(caff, ob); break; + default: + break; } } @@ -347,8 +377,11 @@ void cherjer(int ob, bool &d) { int cx; d = false; - for (cx = 1; cx <= 6; cx ++) d = (d || (ord(s.sjer[cx]) == ob)); - if (s.derobj == ob) d = true; + for (cx = 1; cx <= 6; cx++) + d = (d || (ord(s.sjer[cx]) == ob)); + + if (s.derobj == ob) + d = true; } void st1sama() { @@ -357,12 +390,12 @@ void st1sama() { } void modinv() { - int cx, cy, tay, r; + int tay, r; char nom[1410]; Common::String nomp; - cy = 0; - for (cx = 1; cx <= 6; cx ++) + int cy = 0; + for (int cx = 1; cx <= 6; cx++) if (s.sjer[cx] != chr(0)) { cy = succ(int, cy); r = (ord(s.sjer[cx]) + 400); @@ -372,7 +405,7 @@ void modinv() { g_vm->_menu.enableMenuItem(g_vm->_menu._invt[cx]); } if (cy < 6) - for (cx = cy + 1; cx <= 6; cx ++) { + for (int cx = cy + 1; cx <= 6; cx++) { g_vm->_menu.menut(g_vm->_menu._invt[cx], " "); g_vm->_menu.disableMenuItem(g_vm->_menu._invt[cx]); } @@ -408,11 +441,10 @@ void finfouil() { } void mfoudi() { - int cx; - - for (cx = 1; cx <= 7; cx ++) + for (int cx = 1; cx <= 7; cx++) g_vm->_menu.disableMenuItem(g_vm->_menu._depl[cx]); - for (cx = 1; cx <= 11; cx ++) + + for (int cx = 1; cx <= 11; cx++) g_vm->_menu.disableMenuItem(men[cx]); g_vm->_menu.menut(OPCODE_SOUND, g_vm->getString(S_SUITE)); @@ -430,45 +462,47 @@ void premtet() { /* NIVEAU 5 */ void ajchai() { - int cx, cy, lderobj; - cy = (acha + pred(int, pred(int, mchai) * 10)); - cx = 0; + int cy = (acha + pred(int, pred(int, mchai) * 10)); + int cx = 0; do { - cx = cx + 1; + ++cx; } while (!((cx > 9) || (tabdon[cy + cx] == 0))); + if (tabdon[cy + cx] == 0) { - lderobj = s.derobj; + int lderobj = s.derobj; tabdon[cy + cx] = lderobj; - } else crep = 192; + } else + crep = 192; } void ajjer(int ob) { - int cx; - - cx = 0; + int cx = 0; do { - cx = cx + 1; + ++cx; } while (!((cx > 5) || (ord(s.sjer[cx]) == 0))); + if (ord(s.sjer[cx]) == 0) { s.sjer[(cx)] = chr(ob); modinv(); - } else crep = 139; + } else + crep = 139; } -void t1sama() { /* On entre dans le manoir */ //Translation: Entering manor +void t1sama() { //Entering manor int j, h, m; bool d; calch(j, h, m); if ((h < 5) && (s.mlieu > 18)) { cherjer(137, d); - if (! d) { /* On n'a pas les cl‚s et il est tard */ //Translation: You don't have the keys, and it's late + if (!d) { /* On n'a pas les cl‚s et il est tard */ //Translation: You don't have the keys, and it's late crep = 1511; tperd(); - } else st1sama(); - } else if (! s.ipre) { /* c'est votre premiŠre fois ? */ //Translation: Is it your first time? + } else + st1sama(); + } else if (!s.ipre) { /* c'est votre premiŠre fois ? */ //Translation: Is it your first time? ipers = 255; affper(ipers); caff = 77; @@ -487,12 +521,14 @@ void t1sama() { /* On entre dans le manoir */ //Translation: s.mlieu = 0; affrep(); t5(10); - if (! blo) t11(0, m); + if (! blo) + t11(0, m); ipers = 0; mpers = 0; s.ipre = true; /*chech;*/ - } else st1sama(); + } else + st1sama(); } void t1vier() { @@ -501,7 +537,7 @@ void t1vier() { } void t1neig() { - inei = inei + 1; + ++inei; if (inei > 2) { crep = 1506; tperd(); @@ -543,20 +579,26 @@ void quelquun() { crep = 997; L1: if (! cache) { - if (crep == 997) crep = 138; + if (crep == 997) + crep = 138; repon(2, crep); - if (crep == 138) parole(5, 2, 1); - else parole(4, 4, 1); - if (iouv == 0) s.conf = s.conf + 2; - else if (s.conf < 50) s.conf = s.conf + 4; + if (crep == 138) + parole(5, 2, 1); else - s.conf = s.conf + (3 * (s.conf / 10)); + parole(4, 4, 1); + + if (iouv == 0) + s.conf += 2; + else if (s.conf < 50) + s.conf += 4; + else + s.conf += 3 * (s.conf / 10); tsort(); tmlieu(15); tip(ipers, cx); caff = 69 + cx; crep = caff; - msg[3] = discut; + msg[3] = MENU_DISCUSS; msg[4] = g_vm->_menu._disc[cx]; syn = true; col = true; @@ -581,35 +623,39 @@ L1: } void tsuiv() { - int cx, tbcl; - int cl, cy; + int tbcl; + int cl; - cy = acha + ((mchai - 1) * 10) - 1; - cx = 0; + int cy = acha + ((mchai - 1) * 10) - 1; + int cx = 0; do { cx = cx + 1; cs = cs + 1; cl = cy + cs; tbcl = tabdon[cl]; } while (!((tbcl != 0) || (cs > 9))); + if ((tbcl != 0) && (cs < 11)) { is = is + 1; caff = tbcl; crep = caff + 400; - if (ipers != 0) s.conf = s.conf + 2; + if (ipers != 0) + s.conf = s.conf + 2; } else { affrep(); finfouil(); - if (cx > 9) crep = 131; + if (cx > 9) + crep = 131; } } void tfleche() { bool qust; char touch; - int dummy; - if (num == 9999) return; + if (num == 9999) + return; + fenat(chr(152)); rect = false; do { @@ -624,19 +670,20 @@ void tfleche() { tinke(); } while (!(qust || rect || anyone)); - if (qust && (touch == '\103')) dummy = Alert::show(stpou, 1); - } while (!((touch == '\73') || ((touch == '\104') && (x != 0) && (y != 0)) || - (anyone) || (rect))); - if (touch == '\73') iesc = true; + if (qust && (touch == '\103')) + Alert::show(stpou, 1); + } while (!((touch == '\73') || ((touch == '\104') && (x != 0) && (y != 0)) || (anyone) || (rect))); + + if (touch == '\73') + iesc = true; + if (rect) { x = x_s; y = y_s; } } -void tcoord(int sx) - -{ +void tcoord(int sx) { int sy, ix, iy, cb, cy, ib; int a, b, atdon; @@ -647,50 +694,65 @@ void tcoord(int sx) atdon = amzon + 3; cy = 0; while (cy < caff) { - a = a + tabdon[atdon]; - atdon = atdon + 4; + a += tabdon[atdon]; + atdon += 4; cy = succ(int, cy); } b = tabdon[atdon]; - if (b == 0) goto L1; - a = a + fleche; + if (b == 0) + goto L1; + a += fleche; cb = 0; - for (cy = 0; cy <= (sx - 2); cy ++) { + for (cy = 0; cy <= (sx - 2); cy++) { ib = (tabdon[a + cb] << 8) + tabdon[succ(int, a + cb)]; - cb = cb + (ib * 4) + 2; + cb += (ib * 4) + 2; } ib = (tabdon[a + cb] << 8) + tabdon[succ(int, a + cb)]; - if (ib == 0) goto L1; + if (ib == 0) + goto L1; + cy = 1; do { - cb = cb + 2; + cb += 2; sx = tabdon[a + cb] * res; sy = tabdon[succ(int, a + cb)]; - cb = cb + 2; + cb += 2; ix = tabdon[a + cb] * res; iy = tabdon[succ(int, a + cb)]; - cy = cy + 1; - } while (!(((x >= sx) && (x <= ix) && (y >= sy) && (y <= iy)) - || (cy > ib))); - if ((x >= sx) && (x <= ix) && (y >= sy) && (y <= iy)) + ++cy; + } while (!(((x >= sx) && (x <= ix) && (y >= sy) && (y <= iy)) || (cy > ib))); - { + if ((x >= sx) && (x <= ix) && (y >= sy) && (y <= iy)) { num = cy - 1; return; } + L1: crep = 997; } void st7(int ob) { - crep = 183; - if ((ob == 116) || (ob == 144)) crep = 104; - if ((ob == 126) || (ob == 111)) crep = 108; - if (ob == 132) crep = 111; - if (ob == 142) crep = 112; - if (crep == 183) st4(ob); + switch (ob) { + case 116: + case 144: + crep = 104; + break; + case 126: + case 111: + crep = 108; + break; + case 132: + crep = 111; + break; + case 142: + crep = 112; + break; + default: + crep = 183; + st4(ob); + } } void treg(int ob) { @@ -698,11 +760,12 @@ void treg(int ob) { mdes = caff; caff = ob; - if (((caff > 29) && (caff < 33)) || (caff == 144) || - (caff == 147) || (caff == 149) || (msg[4] == sregarder)) { + if (((caff > 29) && (caff < 33)) || (caff == 144) || (caff == 147) || (caff == 149) || (msg[4] == sregarder)) { afdes(0); - if ((caff > 29) && (caff < 33)) repon(2, caff); - else repon(2, (caff + 400)); + if ((caff > 29) && (caff < 33)) + repon(2, caff); + else + repon(2, (caff + 400)); tkey1(true); caff = mdes; msg[3] = 0; @@ -716,7 +779,8 @@ void treg(int ob) { void avpoing(int &ob) { crep = 999; - if (s.derobj != 0) ajjer(s.derobj); + if (s.derobj != 0) + ajjer(s.derobj); if (crep != 139) { modobj(ob + 400); s.derobj = ob; @@ -728,7 +792,8 @@ void rechai(int &ch) { int cx; cx = s.mlieu; - if (s.mlieu == 16) cx = 14; + if (s.mlieu == 16) + cx = 14; ch = tabdon[achai + (cx * 7) + pred(int, num)]; } @@ -737,7 +802,7 @@ void t23coul(int &l) { cherjer(143, d); l = 14; - if (! d) { + if (!d) { crep = 1512; tperd(); } @@ -750,17 +815,17 @@ void maivid() { void st13(int ob) { if ((ob == 114) || (ob == 116) || (ob == 126) || (ob == 132) || - (ob == 111) || (ob == 106) || (ob == 102) || (ob == 100) || - (ob == 110) || (ob == 153) || (ob == 154) || (ob == 155) || - (ob == 156) || (ob == 157) || (ob == 144) || (ob == 158) || - (ob == 150) || (ob == 152)) crep = 999; - else crep = 105; + (ob == 111) || (ob == 106) || (ob == 102) || (ob == 100) || + (ob == 110) || (ob == 153) || (ob == 154) || (ob == 155) || + (ob == 156) || (ob == 157) || (ob == 144) || (ob == 158) || + (ob == 150) || (ob == 152)) + crep = 999; + else + crep = 105; } void aldepl() { - int dummy; - - dummy = Alert::show(g_vm->getString(S_USE_DEP_MENU), 1); + Alert::show(g_vm->getString(S_USE_DEP_MENU), 1); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 4f2cadef74..82b8ad37fd 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -129,6 +129,11 @@ void deline(int num, char *l , int &tl) { byte ps, k; bool the_end; + if (num < 0) { + warning("deline: num < 0! Skipping"); + return; + } + /* DETEX */ /*debug(' => DeLine');*/ delig = ""; diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 2ee26a9392..f478fc0d39 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -163,7 +163,8 @@ void tsitu() } if (msg[3] == MENU_MOVE) fctMove(); - if (msg[3] == discut) tparler(); //Translation: talk + if (msg[3] == MENU_DISCUSS) + fctDiscuss(); if (msg[3] == invent) tsprendre(); //Translation: inventory/take if (msg[4] == OPCODE_ATTACH) fctAttach(); @@ -213,7 +214,8 @@ void tsitu() } if (msg[4] == sfouiller) tsfouiller();//Translation: search if (msg[4] == slire) tslire(); //Translation: read - if (msg[4] == sposer) tposer(); //Translation: put + if (msg[4] == OPCODE_PUT) + fctPut(); if (msg[4] == sregarder) tsregarder();//Translation: look cache = false; L1: diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 7a3249dee0..e8f9282df3 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -136,11 +136,10 @@ enum verbs {OPCODE_ATTACH = 0x301, OPCODE_WAIT = 0x302, OPCODE_FORCE = 0x303, OPCODE_LOOK = 0x310, OPCODE_SMELL = 0x311, OPCODE_SOUND = 0x312, OPCODE_LEAVE = 0x313, OPCODE_LIFT = 0x314, OPCODE_TURN = 0x315}; -enum verbs2 {OPCODE_HIDE_SELF = 0x401}; +enum verbs2 {OPCODE_HIDE_SELF = 0x401, OPCODE_PUT = 0x404}; const int sfouiller = 0x402; const int slire = 0x403; -const int sposer = 0x404; const int sregarder = 0x405; const int max_patt = 20; -- cgit v1.2.3 From 3904af5306cdd88247165f77b4b98f5909b2f902 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 21 Feb 2012 00:33:48 +0100 Subject: MORTEVIELLE: Rename some more variables and functions --- engines/mortevielle/actions.cpp | 45 ++++++++++++++++++++-------------------- engines/mortevielle/graphics.cpp | 2 +- engines/mortevielle/graphics.h | 2 +- engines/mortevielle/mor.cpp | 18 ++++++++-------- engines/mortevielle/mor.h | 2 +- engines/mortevielle/mor2.cpp | 26 +++++++++++------------ engines/mortevielle/prog.cpp | 12 ++++++----- engines/mortevielle/var_mor.cpp | 6 +++--- engines/mortevielle/var_mor.h | 6 +++--- 9 files changed, 61 insertions(+), 58 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 66215170ce..975992ee2a 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -621,7 +621,6 @@ void fctOpen() { * @remarks Originally called 'tmettre' */ void fctPlace() { - int quel; bool entre; char st[1410]; Common::String str_; @@ -669,8 +668,8 @@ void fctPlace() { repon(2, 165); maivid(); parole(6, -9, 1); - quel = Alert::show(g_vm->getString(S_YES_NO), 1); - if (quel == 1) { + int answer = Alert::show(g_vm->getString(S_YES_NO), 1); + if (answer== 1) { deline(582, st, tay); i = Alert::show(delig, 1); tesok = false; @@ -682,7 +681,7 @@ void fctPlace() { clsf3(); showMouse(); tinke(); - pendule(); + drawClock(); if (ipers != 0) affper(ipers); else @@ -745,8 +744,6 @@ void fctPlace() { * @remarks Originally called 'ttourner' */ void fctTurn() { - int quel; - if (caff > 99) { crep = 149; return; @@ -762,8 +759,8 @@ void fctTurn() { if ((s.mlieu == 13) && (s.ibag == 159) && (s.iboul == 141)) { repon(2, 167); parole(7, 9, 1); - quel = Alert::show(g_vm->getString(S_YES_NO), 1); - if (quel == 1) + int answer = Alert::show(g_vm->getString(S_YES_NO), 1); + if (answer == 1) g_vm->_endGame = true; else crep = 168; @@ -772,8 +769,8 @@ void fctTurn() { repon(2, 175); clsf3(); parole(6, -9, 1); - quel = Alert::show(g_vm->getString(S_YES_NO), 1); - if (quel == 1) { + int answer = Alert::show(g_vm->getString(S_YES_NO), 1); + if (answer == 1) { s.mlieu = 16; affrep(); } else @@ -1137,7 +1134,7 @@ void fctEnter() { * @remarks Originally called 'tdormir' */ void fctSleep() { - int z, j, h, m, quel; + int z, j, h, m; if ((s.mlieu > 15) && (s.mlieu < 26)) { crep = 148; @@ -1156,6 +1153,8 @@ void fctSleep() { ecrf2(); ecr2(g_vm->getString(S_WANT_TO_WAKE_UP)); calch(j, h, m); + + int answer; do { if (h < 8) { s.conf = s.conf - (s.conf / 20); @@ -1170,9 +1169,9 @@ void fctSleep() { if (h > 23) h = 0; tinke(); - quel = Alert::show(g_vm->getString(S_YES_NO), 1); + answer = Alert::show(g_vm->getString(S_YES_NO), 1); anyone = false; - } while (!(quel == 1)); + } while (!(answer == 1)); crep = 998; num = 0; } @@ -1240,6 +1239,8 @@ void fctWait() { mpers = 0; clsf3(); + + int answer; do { ++jh; tinke(); @@ -1257,8 +1258,8 @@ void fctWait() { return; } repon(2, 102); - quel = Alert::show(g_vm->getString(S_YES_NO), 1); - } while (!(quel == 2)); + answer = Alert::show(g_vm->getString(S_YES_NO), 1); + } while (!(answer == 2)); crep = 998; if (!anyone) tinke(); @@ -1472,7 +1473,7 @@ void fctDiscuss() { showMouse(); affper(ipers); tinke(); - pendule(); + drawClock(); affrep(); /* chech;*/ tmlieu(s.mlieu); @@ -1551,7 +1552,7 @@ void MortevielleEngine::endGame() { * @remarks Originally called 'tencore' */ void MortevielleEngine::loseGame() { - int quel; + int answer; clsf2(); musique(0); @@ -1562,12 +1563,12 @@ void MortevielleEngine::loseGame() { vh = 10; vm = 0; vj = 0; - min = 0; - heu = 10; - jou = 0; + _minute = 0; + _hour = 10; + _day = 0; repon(2, 180); - quel = Alert::show(g_vm->getString(S_YES_NO), 1); - _quitGame = (quel != 1); + answer = Alert::show(g_vm->getString(S_YES_NO), 1); + _quitGame = (answer != 1); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 1c0a4fa0a3..e26901bc8e 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -1098,7 +1098,7 @@ int ScreenSurface::getStringWidth(const Common::String &s) { return s.size() * charWidth; } -void ScreenSurface::droite(int x, int y, int xx, int yy, int coul) { +void ScreenSurface::drawLine(int x, int y, int xx, int yy, int coul) { int step, i; float a, b; float xr, yr, xro, yro; diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 1aab4cf34b..28a9d64b7c 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -92,7 +92,7 @@ public: void putxy(int x, int y) { _textPos = Common::Point(x, y); } void writeg(const Common::String &l, int c); int getStringWidth(const Common::String &s); - void droite(int x, int y, int xx, int yy, int coul); + void drawLine(int x, int y, int xx, int yy, int coul); // TODO: Refactor code to remove this method, for increased performance void setPixel(const Common::Point &pt, int palIndex); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index bf9a480af7..a4283407c5 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -618,7 +618,7 @@ void chlm(int &per) { if (per == 2) per = 128; } -void pendule() { +void drawClock() { const int cv[3][13] = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 5, 8, 10, 8, 5, 0, -5, -8, -10, -8, -5, 0 }, @@ -638,30 +638,30 @@ void pendule() { co = 0; else co = 1; - if (min == 0) - g_vm->_screenSurface.droite(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y - rg), co); + if (_minute == 0) + g_vm->_screenSurface.drawLine(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y - rg), co); else - g_vm->_screenSurface.droite(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y + rg), co); + g_vm->_screenSurface.drawLine(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y + rg), co); - h = heu; + h = _hour; if (h > 12) h -= 12; if (h == 0) h = 12; - g_vm->_screenSurface.droite(((uint)x >> 1)*res, y, ((uint)(x + cv[1][h]) >> 1)*res, y + cv[2][h], co); + g_vm->_screenSurface.drawLine(((uint)x >> 1)*res, y, ((uint)(x + cv[1][h]) >> 1)*res, y + cv[2][h], co); showMouse(); g_vm->_screenSurface.putxy(568, 154); - if (heu > 11) + if (_hour > 11) g_vm->_screenSurface.writeg("PM ", 1); else g_vm->_screenSurface.writeg("AM ", 1); g_vm->_screenSurface.putxy(550, 160); - if ((jou >= 0) && (jou <= 8)) { + if ((_day >= 0) && (_day <= 8)) { Common::String tmp = g_vm->getString(S_DAY); - tmp.insertChar((char)(jou + 49), 0); + tmp.insertChar((char)(_day + 49), 0); g_vm->_screenSurface.writeg(tmp, 1); } } diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 22879246f6..0351bd0b7c 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -72,7 +72,7 @@ extern void cpl5(int &p); extern void cpl6(int &p); extern void person(); extern void chlm(int &per); -extern void pendule(); +extern void drawClock(); /************* * NIVEAU 11 * *************/ diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 73259aa7a0..9dcbb85b0e 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -58,8 +58,8 @@ void tinke() { anyone = false; calch(j, h, m); - if (j != jou) { - jou = j; + if (j != _day) { + _day = j; cx = 0; do { ++cx; @@ -68,10 +68,10 @@ void tinke() { nbrep[cx] = 0; } while (!(cx == 8)); } - if ((h > heu) || ((h == 0) && (heu == 23))) { - heu = h; - min = 0; - pendule(); + if ((h > _hour) || ((h == 0) && (_hour == 23))) { + _hour = h; + _minute = 0; + drawClock(); cf = 0; for (cx = 1; cx <= 10; cx ++) { if (s.pourc[cx] == '*') @@ -96,9 +96,9 @@ void tinke() { stpou += d6; stpou += d4; } - if (m > min) { - min = 30; - pendule(); + if (m > _minute) { + _minute = 30; + drawClock(); } if (y_s < 12) return; @@ -110,16 +110,16 @@ void tinke() { t = ti1; cf = s.conf; if ((cf > 33) && (cf < 66)) - t = t - (t / 3); + t -= (t / 3); if (cf > 65) - t = t - ((t / 3) * 2); + t -= ((t / 3) * 2); nh = readclock(); if ((nh - mh) > t) { am = g_vm->_menu._menuActive; g_vm->_menu.eraseMenu(); - jh = jh + ((nh - mh) / t); + jh += ((nh - mh) / t); mh = nh; switch (li) { case 1: @@ -516,7 +516,7 @@ void t1sama() { //Entering manor premtet(); sparl(0, 140); dessine_rouleau(); - pendule(); + drawClock(); showMouse(); s.mlieu = 0; affrep(); diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index f478fc0d39..e6fd9b7f45 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -46,7 +46,7 @@ void change_gd(int ngd) { showMouse(); dessine_rouleau(); tinke(); - pendule(); + drawClock(); if (ipers != 0) affper(ipers); else person(); clsf2(); @@ -122,7 +122,7 @@ void MortevielleEngine::gameLoaded() { } person(); tinke(); - pendule(); + drawClock(); afdes(0); repon(2, crep); clsf3(); @@ -254,9 +254,11 @@ void theure() { vj = vj / 48; vm = vh % 2; vh = vh / 2; - heu = vh; - if (vm == 1) min = 30; - else min = 0; + _hour = vh; + if (vm == 1) + _minute = 30; + else + _minute = 0; } } // End of namespace Mortevielle diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 0caadadbff..6f88d8db9a 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -127,10 +127,10 @@ int x, gd, /* Gd = graph device */ hdb, hfb, - heu, - jou, + _hour, + _day, key, - min, + _minute, num, max, res, diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index e8f9282df3..f5cd3afdc3 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -276,10 +276,10 @@ extern int x, gd, /* Gd = graph device */ hdb, hfb, - heu, - jou, + _hour, + _day, key, - min, + _minute, num, max, res, -- cgit v1.2.3 From a54dfa48457750a22d744beabe5d6f9e12542621 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 21 Feb 2012 18:51:44 +0100 Subject: MORTEVIELLE: Some more code formatting, rename sonoff --- engines/mortevielle/dialogs.cpp | 12 +- engines/mortevielle/graphics.cpp | 4 +- engines/mortevielle/keyboard.cpp | 2 +- engines/mortevielle/level15.cpp | 54 ++++----- engines/mortevielle/menu.cpp | 87 ++++++++------ engines/mortevielle/mortevielle.cpp | 2 +- engines/mortevielle/mouse.cpp | 18 +-- engines/mortevielle/outtext.cpp | 141 +++++++++++----------- engines/mortevielle/outtext.h | 2 - engines/mortevielle/ovd1.cpp | 32 ++--- engines/mortevielle/parole.cpp | 231 ++++++++++++++++++++---------------- engines/mortevielle/parole2.cpp | 41 ++++--- engines/mortevielle/prog.cpp | 51 ++++---- engines/mortevielle/saveload.cpp | 5 +- engines/mortevielle/taffich.cpp | 27 +++-- engines/mortevielle/var_mor.cpp | 2 +- engines/mortevielle/var_mor.h | 2 +- 17 files changed, 378 insertions(+), 335 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 89658452e8..9f90f4c48a 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -258,7 +258,7 @@ void Alert::fait_choix(Common::String c, int coldep, int nbcase, Common::String i = 1; x = coldep; - for (l = 1; l <= nbcase; l ++) { + for (l = 1; l <= nbcase; ++l) { str[l] = ""; do { ++i; @@ -323,7 +323,7 @@ bool Ques::show() { y = 35; tmax = 0; memk = 1; - for (j = prem; j <= der; j ++) { + for (j = prem; j <= der; ++j) { deline(j, st, tay); if (tay > tmax) tmax = tay; @@ -332,7 +332,7 @@ bool Ques::show() { ++memk; y += 8; } - for (j = 1; j <= succ(int, der - prem); j++) { + for (j = 1; j <= succ(int, der - prem); ++j) { rectangle &with = coor[j]; with.x1 = 45 * res; @@ -364,7 +364,7 @@ bool Ques::show() { while (coor[k].etat && ! dans_rect(coor[k])) k = k + 1; if (coor[k].etat) { if ((memk != 0) && (memk != k)) { -// for (j = 1; j <= tmax; j ++) +// for (j = 1; j <= tmax; ++j) // st[j] = chaines[memk][j]; strncpy(st, chaines[memk].c_str(), tmax); // @@ -372,7 +372,7 @@ bool Ques::show() { afftex(st, 100, 27 + memk * 8, 100, 1, 0); } if (memk != k) { -// for (j = 1; j <= tmax; j ++) +// for (j = 1; j <= tmax; ++j) // st[j] = chaines[k][j]; strncpy(st, chaines[k].c_str(), tmax); st[1 + tmax] = '$'; @@ -380,7 +380,7 @@ bool Ques::show() { memk = k; } } else if (memk != 0) { -// for (j = 1; j <= tmax; j ++) +// for (j = 1; j <= tmax; ++j) // st[j] = chaines[memk][j]; strncpy(st, chaines[memk].c_str(), tmax); st[1 + tmax] = '$'; diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index e26901bc8e..acc2bb0d34 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -45,11 +45,11 @@ void PaletteManager::setPalette(const int *palette, uint idx, uint size) { byte egaPalette[64 * 3]; byte *p = &egaPalette[0]; - for (int i = 0; i < 64; i++) { + for (int i = 0; i < 64; ++i) { *p++ = (i >> 2 & 1) * 0xaa + (i >> 5 & 1) * 0x55; *p++ = (i >> 1 & 1) * 0xaa + (i >> 4 & 1) * 0x55; *p++ = (i & 1) * 0xaa + (i >> 3 & 1) * 0x55; - } + } // Loop through setting palette colours based on the passed indexes for (; size > 0; --size, ++idx) { diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index abf8c26346..bd7ad2c8aa 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -42,7 +42,7 @@ int testou() { switch (ch) { case '\23' : - sonoff = !sonoff; + _soundOff = !_soundOff; break; case '\26' : if ((c_zzz == 1) && (c_zzz == 2)) { diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 571abfa18d..d297529470 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -47,54 +47,47 @@ void copcha() { bool dans_rect(rectangle r) { int x, y, c; - bool dans_rect_result; getMousePos(x, y, c); - if ((x > r.x1) && - (x < r.x2) && - (y > r.y1) && - (y < r.y2)) - dans_rect_result = true; - else - dans_rect_result = false; - - return dans_rect_result; + if ((x > r.x1) && (x < r.x2) && (y > r.y1) && (y < r.y2)) + return true; + + return false; } void outbloc(int n, pattern p, t_nhom pal) { - int i, j, ad; - - ad = n * 404 + 0xd700; + int ad = n * 404 + 0xd700; WRITE_LE_UINT16(&mem[0x6000 * 16 + ad], p.tax); WRITE_LE_UINT16(&mem[0x6000 * 16 + ad + 2], p.tay); - ad = ad + 4; - for (i = 1; i <= p.tax; i ++) - for (j = 1; j <= p.tay; j ++) + ad += 4; + for (int i = 1; i <= p.tax; ++i) + for (int j = 1; j <= p.tay; ++j) mem[0x6000 * 16 + ad + pred(int, j)*p.tax + pred(int, i)] = pal[n].hom[p.des[i][j]]; } void writepal(int n) { - int i; t_nhom pal; switch (gd) { case tan: case ega: - case ams : - for (i = 1; i <= 16; i++) { + case ams: + for (int i = 1; i <= 16; ++i) { mem[0x7000 * 16 + 2 * i] = tabpal[n][i].x; mem[0x7000 * 16 + succ(int, 2 * i)] = tabpal[n][i].y; } break; - case cga : { + case cga: warning("TODO: If this code is needed, resolve the incompatible types"); // pal = palcga[n].a; if (n < 89) palette(palcga[n].p); - for (i = 0; i <= 15; i++) + + for (int i = 0; i <= 15; ++i) outbloc(i, tpt[pal[i].n], pal); - } - break; + break; + default: + break; } } @@ -107,8 +100,10 @@ void pictout(int seg, int dep, int x, int y) { mem[0x7000 * 16 + 2] = 0; mem[0x7000 * 16 + 32] = 15; } + if ((caff != 51) && (READ_LE_UINT16(&mem[0x7000 * 16 + 0x4138]) > 0x100)) WRITE_LE_UINT16(&mem[0x7000 * 16 + 0x4138], 0x100); + g_vm->_screenSurface.drawPicture(surface, x, y); } @@ -129,16 +124,19 @@ void adzon() { if (!f.open("don.mor")) error("Missing file - don.mor"); + f.read(tabdon, 7 * 256); f.close(); if (!f.open("bmor.mor")) error("Missing file - bmor.mor"); + f.read(&tabdon[fleche], 1 * 1916); f.close(); if (!f.open("dec.mor")) error("Missing file - dec.mor"); + f.read(&mem[0x73a2 * 16 + 0], 1 * 1664); f.close(); } @@ -147,14 +145,12 @@ void adzon() { * Returns the offset within the compressed image data resource of the desired image */ int animof(int ouf, int num) { - int nani, aux; - - int animof_result; - nani = mem[adani * 16 + 1]; - aux = num; + int nani = mem[adani * 16 + 1]; + int aux = num; if (ouf != 1) aux += nani; - animof_result = (nani << 2) + 2 + READ_BE_UINT16(&mem[adani * 16 + (aux << 1)]); + + int animof_result = (nani << 2) + 2 + READ_BE_UINT16(&mem[adani * 16 + (aux << 1)]); return animof_result; } diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 97ba083d77..b585177f19 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -48,9 +48,9 @@ void Menu::menut(int no, Common::String nom) { byte l = lo(no); Common::String s = nom; - if (! tesok) { + if (! tesok) g_vm->quitGame(); - } + while (s.size() < 20) s += ' '; @@ -74,6 +74,8 @@ void Menu::menut(int no, Common::String nom) { case MENU_DISCUSS: _dis[l] = s; break; + default: + break; } } @@ -86,14 +88,13 @@ void Menu::disableMenuItem(int no) { byte l = lo(no); switch (h) { - case invent : { + case invent: if (l > 6) { _inv[l].setChar('<', 0); _inv[l].setChar('>', 21); } else _inv[l].setChar('*', 0); - } - break; + break; case MENU_MOVE: _dep[l].setChar('*', 0); break; @@ -106,6 +107,8 @@ void Menu::disableMenuItem(int no) { case MENU_DISCUSS: _dis[l].setChar('*', 0); break; + default: + break; } } @@ -135,6 +138,8 @@ void Menu::enableMenuItem(int no) { case MENU_DISCUSS: _dis[l].setChar(' ', 0); break; + default: + break; } } @@ -161,7 +166,7 @@ void Menu::menu_aff() { x = col; do { // One line after the other msk = 0x80; - for (pt = 0; pt <= 7; pt ++) { + for (pt = 0; pt <= 7; ++pt) { if ((lettres[num_letr - 1][ind_tabl] & msk) != 0) { g_vm->_screenSurface.setPixel(Common::Point(x + 1, y + 1), 0); g_vm->_screenSurface.setPixel(Common::Point(x, y + 1), 0); @@ -201,30 +206,30 @@ void Menu::invers(int ix) { g_vm->_screenSurface.putxy(don[msg3][1] << 3, succ(void, lo(msg4)) << 3); switch (msg3) { - case 1 : + case 1: s = _inv[lo(msg4)]; break; - case 2 : + case 2: s = _dep[lo(msg4)]; break; - case 3 : + case 3: s = _act[lo(msg4)]; break; - case 4 : + case 4: s = _self[lo(msg4)]; break; - case 5 : + case 5: s = _dis[lo(msg4)]; break; - case 6 : + case 6: s = g_vm->getString(S_SAVE_LOAD + lo(msg4)); break; - case 7 : + case 7: s = g_vm->getString(S_SAVE_LOAD + 1); s += ' '; s += (char)(48 + lo(msg4)); break; - case 8 : + case 8: if (lo(msg4) == 1) { s = g_vm->getString(S_RESTART); } else { @@ -233,6 +238,8 @@ void Menu::invers(int ix) { s += (char)(47 + lo(msg4)); } break; + default: + break; } if ((s[0] != '*') && (s[0] != '<')) g_vm->_screenSurface.writeg(s, ix); @@ -241,17 +248,17 @@ void Menu::invers(int ix) { } void Menu::util(int x, int y) { - int ymx, dxcar, xmn, xmx, ix; - /* debug('util'); */ - ymx = (don[msg3][4] << 3) + 16; - dxcar = don[msg3][3]; - xmn = (don[msg3][1] << 2) * res; + int ymx = (don[msg3][4] << 3) + 16; + int dxcar = don[msg3][3]; + int xmn = (don[msg3][1] << 2) * res; + + int ix; if (res == 1) ix = 5; else ix = 3; - xmx = dxcar * ix * res + xmn + 2; + int xmx = dxcar * ix * res + xmn + 2; if ((x > xmn) && (x < xmx) && (y < ymx) && (y > 15)) { ix = pred(int, ((uint)y >> 3)) + (msg3 << 8); if (ix != msg4) { @@ -296,37 +303,37 @@ void Menu::menuDown(int ii) { do { cx = succ(int, cx); switch (ii) { - case 1 : + case 1: if (_inv[cx][0] != '*') g_vm->_screenSurface.writeg(_inv[cx], 4); break; - case 2 : + case 2: if (_dep[cx][0] != '*') g_vm->_screenSurface.writeg(_dep[cx], 4); break; - case 3 : + case 3: if (_act[cx][0] != '*') g_vm->_screenSurface.writeg(_act[cx], 4); break; - case 4 : + case 4: if (_self[cx][0] != '*') g_vm->_screenSurface.writeg(_self[cx], 4); break; - case 5 : + case 5: if (_dis[cx][0] != '*') g_vm->_screenSurface.writeg(_dis[cx], 4); break; - case 6 : + case 6: g_vm->_screenSurface.writeg(g_vm->getString(S_SAVE_LOAD + cx), 4); break; - case 7 : { + case 7: { Common::String s = g_vm->getString(S_SAVE_LOAD + 1); s += ' '; s += (char)(48 + cx); g_vm->_screenSurface.writeg(s, 4); + } break; - } - case 8 : + case 8: if (cx == 1) g_vm->_screenSurface.writeg(g_vm->getString(S_RESTART), 4); else { @@ -336,6 +343,8 @@ void Menu::menuDown(int ii) { g_vm->_screenSurface.writeg(s, 4); } break; + default: + break; } g_vm->_screenSurface.putxy(xco, g_vm->_screenSurface._textPos.y + 8); } while (!(cx == nb_lig)); @@ -397,12 +406,14 @@ void Menu::mdn() { xprec = x; yprec = y; } - tes = (y < 11) && ((x >= (28 * res) && x <= (28 * res + 24)) - || (x >= (76 * res) && x <= (76 * res + 24)) - || ((x > 124 * res) && (x < 124 * res + 24)) - || ((x > 172 * res) && (x < 172 * res + 24)) - || ((x > 220 * res) && (x < 220 * res + 24)) - || ((x > 268 * res) && (x < 268 * res + 24))); + + tes = (y < 11) + && ((x >= (28 * res) && x <= (28 * res + 24)) + || (x >= (76 * res) && x <= (76 * res + 24)) + || ((x > 124 * res) && (x < 124 * res + 24)) + || ((x > 172 * res) && (x < 172 * res + 24)) + || ((x > 220 * res) && (x < 220 * res + 24)) + || ((x > 268 * res) && (x < 268 * res + 24))); if (tes) { if (x < 76 * res) ix = invent; @@ -468,10 +479,10 @@ void Menu::initMenu() { // Ask to swap floppy dem2(); - for (i = 1; i <= 8; i ++) + for (i = 1; i <= 8; ++i) _inv[i] = "* "; _inv[7] = "< -*-*-*-*-*-*-*-*-*- "; - for (i = 1; i <= 7; i ++) + for (i = 1; i <= 7; ++i) _dep[i] = "* "; i = 1; do { @@ -492,7 +503,7 @@ void Menu::initMenu() { } i = succ(int, i); } while (!(i == 22)); - for (i = 1; i <= 8; i ++) { + for (i = 1; i <= 8; ++i) { _disc[i] = 0x500 + i; if (i < 8) _depl[i] = 0x200 + i; diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 82eb1179f1..4112073cde 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -148,7 +148,7 @@ Common::ErrorCode MortevielleEngine::initialise() { initMouse(); init_lieu(); - sonoff = false; + _soundOff = false; f2_all = false; teskbd(); diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index d724fe652b..44b254fe41 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -103,7 +103,7 @@ void hideMouse() { } while (!(k >= 5)); break; case ams: - for (i = 0; i <= 3; i ++) { + for (i = 0; i <= 3; ++i) { port[0x3dd] = 1 << i; k = 0; j = p_o_s; @@ -142,8 +142,8 @@ void hideMouse() { break; case her: j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); - for (i = 0; i <= 5; i ++) { - for (k = 0; k <= 3; k ++) + for (i = 0; i <= 5; ++i) { + for (k = 0; k <= 3; ++k) WRITE_LE_UINT16(&mem[0xb000 * 16 + k * 0x200 + j], s_s[i][k]); j += 80; } @@ -152,7 +152,7 @@ void hideMouse() { j = ((uint)y_s >> 2) * 160 + ((uint)x_s >> 1); k = 0; do { - for (i = 0; i <= 3; i ++) { + for (i = 0; i <= 3; ++i) { WRITE_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j], s_s[k][i + (k << 2)]); WRITE_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j + 2], s_s[k + 3][i + (k << 2)]); } @@ -194,7 +194,7 @@ void showMouse() { } while (!(k >= 5)); break; case ams: - for (i = 0; i <= 3; i ++) { + for (i = 0; i <= 3; ++i) { j = p_o_s; imp = odd(y_s); port[0x3de] = i; @@ -229,8 +229,8 @@ void showMouse() { break; case her: j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); - for (i = 0; i <= 5; i ++) { - for (k = 0; k <= 3; k ++) + for (i = 0; i <= 5; ++i) { + for (k = 0; k <= 3; ++k) s_s[i][k] = READ_LE_UINT16(&mem[0xb000 * 16 + k * 0x200 + j]); j += 80; } @@ -239,7 +239,7 @@ void showMouse() { j = ((uint)y_s >> 2) * 160 + ((uint)x_s >> 1); k = 0; do { - for (i = 0; i <= 3; i ++) { + for (i = 0; i <= 3; ++i) { s_s[k][i + (k << 2)] = READ_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j]); s_s[k + 3][i + (k << 2)] = READ_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j + 2]); } @@ -415,7 +415,7 @@ void moveMouse(bool &funct, char &key) { cy = 8; break; case '\23': - sonoff = !sonoff; + _soundOff = !_soundOff; return; break; case '\26': diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 82b8ad37fd..95ccc3baef 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -79,44 +79,47 @@ static void cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { oct = t_mot[idx]; oct = ((uint16)(oct << (16 - pt))) >> (16 - pt); if (pt < 6) { - idx = idx + 1; + ++idx; oct = oct << (5 - pt); - pt = pt + 11; + pt += 11; oct = oct | ((uint)t_mot[idx] >> pt); } else { - pt = pt - 5; + pt -= 5; oct = (uint)oct >> pt; } switch (oct) { - case 11 : { + case 11: c = '$'; the_end = true; - } - break; + break; case 30: - case 31 : { + case 31: ocd = t_mot[idx]; ocd = (uint16)(ocd << (16 - pt)) >> (16 - pt); if (pt < 6) { - idx = idx + 1; + ++idx; ocd = ocd << (5 - pt); - pt = pt + 11; + pt += 11; ocd = ocd | ((uint)t_mot[idx] >> pt); } else { - pt = pt - 5; + pt -= 5; ocd = (uint)ocd >> pt; } - if (oct == 30) c = chr(tab30[ocd]); - else c = chr(tab31[ocd]); + + if (oct == 30) + c = chr(tab30[ocd]); + else + c = chr(tab31[ocd]); + if (c == '\0') { the_end = true; c = '#'; } - } - break; + break; default: c = chr(tabdr[oct]); + break; } } /* 5-8 */ @@ -124,94 +127,88 @@ static void cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { * Decode and extract the line with the given Id */ void deline(int num, char *l , int &tl) { - int i, j, ts; - char let; - byte ps, k; - bool the_end; - if (num < 0) { warning("deline: num < 0! Skipping"); return; } - /* DETEX */ - /*debug(' => DeLine');*/ + // DETEX delig = ""; - ts = t_rec[num].indis; - ps = t_rec[num].point; - i = ts; + int ts = t_rec[num].indis; + byte ps = t_rec[num].point; + int i = ts; tl = 1; - j = 1; - k = ps; - the_end = false; + int j = 1; + byte k = ps; + bool endFl = false; + char let; do { - cinq_huit(let, i, k, the_end); + cinq_huit(let, i, k, endFl); l[j] = let; - if (j < 254) delig = delig + let; - j = j + 1; - } while (!the_end); + if (j < 254) + delig += let; + ++j; + } while (!endFl); tl = j - 1; if (tl < 255) - delig.deleteLastChar(); // Remove trailing '$' -} /* DETEX */ + // Remove trailing '$' + delig.deleteLastChar(); +} void afftex(char *ch, int x, int y, int dx, int dy, int typ); static int l_motsuiv(int p, char *ch, int &tab) { - int c; + int c = p; - int l_motsuiv_result; - c = p; while ((ch[p] != ' ') && (ch[p] != '$') && (ch[p] != '@')) ++p; - l_motsuiv_result = tab * (p - c); - return l_motsuiv_result; + + return tab * (p - c); } void afftex(char *ch, int x, int y, int dx, int dy, int typ) { bool the_end; - int xf, yf; - int xc, yc; - int tab, p; + int tab; Common::String s; int i, j; /* debug(' .. Afftex');*/ g_vm->_screenSurface.putxy(x, y); - if (res == 1) tab = 10; - else tab = 6; - dx = dx * 6; - dy = dy * 6; - xc = x; - yc = y; - xf = x + dx; - yf = y + dy; - p = 1; + if (res == 1) + tab = 10; + else + tab = 6; + dx *= 6; + dy *= 6; + int xc = x; + int yc = y; + int xf = x + dx; + int yf = y + dy; + int p = 1; the_end = (ch[p] == '$'); s = ""; - while (! the_end) { + while (!the_end) { switch (ch[p]) { - case '@' : { + case '@': g_vm->_screenSurface.writeg(s, typ); s = ""; - p = p + 1; + ++p; xc = x; - yc = yc + 6; + yc += 6; g_vm->_screenSurface.putxy(xc, yc); - } - break; - case ' ' : { - s = s + ' '; - xc = xc + tab; - p = p + 1; + break; + case ' ': + s += ' '; + xc += tab; + ++p; if (l_motsuiv(p, ch, tab) + xc > xf) { g_vm->_screenSurface.writeg(s, typ); s = ""; xc = x; - yc = yc + 6; + yc += 6; if (yc > yf) { do { ; @@ -222,26 +219,24 @@ void afftex(char *ch, int x, int y, int dx, int dy, int typ) { do { g_vm->_screenSurface.putxy(j, i); g_vm->_screenSurface.writeg(" ", 0); - j = j + 6; + j += 6; } while (!(j > xf)); - i = i + 6; + i += 6; } while (!(i > yf)); yc = y; } g_vm->_screenSurface.putxy(xc, yc); } - } - break; - case '$' : { + break; + case '$': the_end = true; g_vm->_screenSurface.writeg(s, typ); - } - break; - default: { - s = s + ch[p]; - p = p + 1; - xc = xc + tab; - } + break; + default: + s += ch[p]; + ++p; + xc += tab; + break; } /* case */ } } diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index ad69ca9109..470479a81b 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -34,9 +34,7 @@ namespace Mortevielle { extern Common::String delig; -//static void cinq_huit(char &c, int &ind, byte &pt, bool &the_end); extern void deline(int num , char *l , int &tl); -//static int l_motsuiv(int p, char *ch, int &tab); extern void afftex(char *ch, int x, int y, int dx, int dy, int typ); } // End of namespace Mortevielle diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 33f879d61b..0177d3e5c1 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -55,7 +55,6 @@ void dem2() { void charpal() { Common::File f; // tabdb records Common::File ft; // tfxx - int i, j, k; Common::File fb; // byte values byte b; @@ -67,8 +66,8 @@ void charpal() { if (!f.open("plxx.mor")) error("Missing file - plxx.mor"); - for (i = 0; i <= 90; ++i) { - for (j = 1; j <= 16; ++j) { + for (int i = 0; i <= 90; ++i) { + for (int j = 1; j <= 16; ++j) { tabpal[i][j].x = f.readByte(); tabpal[i][j].y = f.readByte(); } @@ -78,9 +77,9 @@ void charpal() { if (!fb.open("cxx.mor")) error("Missing file - cxx.mor"); - for (j = 0; j <= 90; j ++) { + for (int j = 0; j <= 90; ++j) { palcga[j].p = fb.readByte(); - for (i = 0; i <= 15; i ++) { + for (int i = 0; i <= 15; ++i) { nhom &with = palcga[j].a[i]; b = fb.readByte(); @@ -90,28 +89,26 @@ void charpal() { } } palcga[10].a[9] = palcga[10].a[5]; - for (j = 0; j <= 14; j ++) { + for (int j = 0; j <= 14; ++j) { tpt[j].tax = fb.readByte(); tpt[j].tay = fb.readByte(); - for (i = 1; i <= 20; i ++) - for (k = 1; k <= 20; k ++) + for (int i = 1; i <= 20; ++i) + for (int k = 1; k <= 20; ++k) tpt[j].des[i][k] = fb.readByte(); } fb.close(); } void chartex() { - int i; Common::File f; char s[1410]; /* debug('o3 chartex'); */ - i = 0; if (!f.open("TXX.INP")) error("Missing file - TXX.INP"); assert(f.size() <= (maxti * 2)); - for (i = 0; i < f.size() / 2; ++i) + for (int i = 0; i < f.size() / 2; ++i) t_mot[i] = f.readUint16LE(); f.close(); @@ -120,6 +117,7 @@ void chartex() { error("Missing file - TXX.NTP"); assert(f.size() <= (maxtd * 3)); + int i; for (i = 0; i < (f.size() / 3); ++i) { t_rec[i].indis = f.readSint16LE(); t_rec[i].point = f.readByte(); @@ -171,7 +169,9 @@ void music() { /* debug('o3 music'); */ - if (sonoff) return; + if (_soundOff) + return; + rech_cfiec = true; if (!fic.open("mort.img")) @@ -190,10 +190,11 @@ void music() { do { fin = keypressed(); g_vm->_soundManager.musyc(tbi, 9958 , tempo_mus); - k = k + 1; + ++k; fin = fin | keypressed() | (k >= 5); } while (!fin); - while (keypressed()) ch = get_ch(); // input >> kbd >> ch; + while (keypressed()) + ch = get_ch(); // input >> kbd >> ch; } @@ -238,7 +239,8 @@ void suite() { caff = 51; taffich(); teskbd(); - if (newgd != gd) gd = newgd; + if (newgd != gd) + gd = newgd; hirs(); dessine(ades, 0, 0); diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index 70bbd72e06..02f298e8f6 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -37,7 +37,7 @@ void spfrac(int wor) { if ((typlec == 0) && (c3.code != 9)) if (((c3.code > 4) && (c3.val != 20) && ((c3.rep != 3) && (c3.rep != 6) && (c3.rep != 9)) || ((c3.code < 5) && ((c3.rep != 19) && (c3.rep != 22) && (c3.rep != 4) && (c3.rep != 9))))) { - c3.rep = c3.rep + 1; + ++c3.rep; } c3.freq = ((uint)wor >> 6) & 7; @@ -65,21 +65,19 @@ void charg_car() { c3.code = 4; } else { switch (int_) { - case 60 : { + case 60: c3.val = 32; /* " " */ c3.code = 9; - } - break; - case 61 : { + break; + case 61: c3.val = 46; /* "." */ c3.code = 9; - } - break; - case 62 : { + break; + case 62: c3.val = 35; /* "#" */ c3.code = 9; - } - break; + default: + break; } } @@ -90,7 +88,7 @@ void charg_car() { void entroct(byte o) { mem[adtroct * 16 + ptr_oct] = o; - ptr_oct = ptr_oct + 1; + ++ptr_oct; } void veracf(byte b) { @@ -98,30 +96,26 @@ void veracf(byte b) { } void cctable(tablint &t) { - int k; float tb[257]; - tb[0] = 0; - for (k = 0; k <= 255; k ++) { + for (int k = 0; k <= 255; ++k) { tb[k + 1] = addfix + tb[k]; t[255 - k] = abs((int)tb[k] + 1); } } void regenbruit() { - int i, j; - - i = offsetb3 + 8590; - j = 0; + int i = offsetb3 + 8590; + int j = 0; do { t_cph[j] = READ_LE_UINT16(&mem[adbruit3 + i]); - i = i + 2; - j = j + 1; + i += 2; + ++j; } while (!(i >= offsetb3 + 8790)); } - void charge_son() { +void charge_son() { Common::File f; if (!f.open("sonmus.mor")) @@ -133,7 +127,7 @@ void regenbruit() { f.close(); } - void charge_phbruit() { +void charge_phbruit() { Common::File f; if (!f.open("phbrui.mor")) @@ -145,7 +139,7 @@ void regenbruit() { f.close(); } - void charge_bruit() { +void charge_bruit() { Common::File f; int i; @@ -153,54 +147,67 @@ void regenbruit() { error("Missing file - bruits"); f.read(&mem[adbruit * 16 + 0], 250); - for (i = 0; i <= 19013; i ++) mem[adbruit * 16 + 32000 + i] = mem[adbruit5 + i]; + for (i = 0; i <= 19013; ++i) + mem[adbruit * 16 + 32000 + i] = mem[adbruit5 + i]; f.read(&mem[adbruit1 * 16 + offsetb1], 149); f.close(); } - void trait_car() { +void trait_car() { byte d3; int d2, i; switch (c2.code) { - case 9 : - if (c2.val != ord('#')) for (i = 0; i <= c2.rep; i ++) entroct(c2.val); + 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; + 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); + if (d3 == null) + entroct(c2.val); + else + entroct(d3); entroct(22); } } + switch (c2.rep) { - case 0 : { + 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; + 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 : { + case 6: if (c2.rep != 4) { i = c2.rep - 5; do { - i = i - 1; + --i; entroct(0); - if (d3 == null) entroct(c2.val); - else entroct(d3); + if (d3 == null) + entroct(c2.val); + else + entroct(d3); entroct(3); } while (!(i < 0)); } @@ -213,18 +220,19 @@ void regenbruit() { entroct(c2.val); entroct(3); } - } - break; + break; case 7: case 8: - case 9 : { + case 9: if (c2.rep != 7) { i = c2.rep - 8; do { - i = i - 1; + --i; entroct(0); - if (d3 == null) entroct(c2.val); - else entroct(d3); + if (d3 == null) + entroct(c2.val); + else + entroct(d3); entroct(3); } while (!(i < 0)); } @@ -237,34 +245,37 @@ void regenbruit() { entroct(c2.val); entroct(0); } - } - break; + break; case 1: case 2: - case 3 : { + case 3: if (c2.rep != 1) { i = c2.rep - 2; do { - i = i - 1; + --i; entroct(0); - if (d3 == null) entroct(c2.val); - else entroct(d3); + 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); - } + if (c3.code == 9) + entroct(0); + else + entroct(1); + break; + default: + break; + } // switch c2.rep break; - } /* case c2.rep */ - } - break; case 2: - case 3 : { - d3 = c2.code + 5; /* 7 ou 8 => voyelle correspondante */ //Translation: Corresponding vowel + case 3: + d3 = c2.code + 5; // 7 ou 8 => Corresponding vowel if (c1.code > 4) { veracf(c2.acc); if (c1.code == 9) { @@ -274,9 +285,10 @@ void regenbruit() { } } i = c2.rep; + assert(i >= 0); if (i != 0) { do { - i = i - 1; + --i; entroct(0); entroct(d3); entroct(3); @@ -289,43 +301,47 @@ void regenbruit() { entroct(c2.val); } else { entroct(4); - if (c3.val == 4) entroct(3); - else entroct(c3.val); + if (c3.val == 4) + entroct(3); + else + entroct(c3.val); entroct(c2.val); } - } - break; + break; case 0: - case 1 : { + case 1: veracf(c2.acc); switch (c3.code) { - case 2 : + case 2: d2 = 7; break; - case 3 : + case 3: d2 = 8; break; - case 6 : + case 6: d2 = tabdph[(c3.val - 14) << 1]; break; - case 5 : + case 5: d2 = c3.val; break; default: d2 = 10; - } /* case c3.code */ + break; + } // switch c3.code d2 = d2 * 26 + c2.val; - if (tnocon[d2] == 0) d3 = 2; - else d3 = 6; + 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 */ //Translation: swap 2 and 6 + d3 = 8 - d3; // Swap 2 and 6 } if (c2.code == 0) { i = c2.rep; if (i != 0) { do { - i = i - 1; + --i; entroct(d3); entroct(c2.val); entroct(3); @@ -341,7 +357,7 @@ void regenbruit() { i = c2.rep; if (i != 0) { do { - i = i - 1; + --i; entroct(d3); entroct(c2.val); entroct(4); @@ -355,33 +371,40 @@ void regenbruit() { } else if ((c3.code != 0) && (c3.code != 1) && (c3.code != 4)) { veracf(c3.acc); switch (c3.code) { - case 3 : + case 3: d2 = 8; break; - case 6 : + case 6: d2 = tabdph[(c3.val - 14) << 1]; break; - case 5 : + 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; + break; + } // switch c3.code + if (d2 == 4) + d2 = 3; + + if (intcon[c2.val] != 0) + ++c2.val; + + if ((c2.val == 17) || (c2.val == 18)) + c2.val = 16; + entroct(4); entroct(d2); entroct(c2.val); } - } - break; - case 4 : { + + break; + case 4: veracf(c2.acc); i = c2.rep; if (i != 0) { do { - i = i - 1; + --i; entroct(2); entroct(c2.val); entroct(3); @@ -397,27 +420,35 @@ void regenbruit() { } else if ((c3.code != 0) && (c3.code != 1) && (c3.code != 4)) { veracf(c3.acc); switch (c3.code) { - case 3 : + case 3: d2 = 8; break; - case 6 : + case 6: d2 = tabdph[(c3.val - 14) << 1]; break; - case 5 : + 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; + break; + } // switch c3.code + + if (d2 == 4) + d2 = 3; + + if (intcon[c2.val] != 0) + ++c2.val; + entroct(4); entroct(d2); entroct(tabdbc[((c2.val - 26) << 1) + 1]); } - } - break; - } /* case c2.code */ + + break; + default: + break; + } // switch c2.code } } // End of namespace Mortevielle diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index e0aaf83af0..785e49acaa 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -38,18 +38,14 @@ namespace Mortevielle { void rot_chariot() { c1 = c2; c2 = c3; - { - c3.val = 32; - c3.code = 9; - } + c3.val = 32; + c3.code = 9; } void init_chariot() { - { - c3.rep = 0; - c3.freq = 0; - c3.acc = 0; - } + c3.rep = 0; + c3.freq = 0; + c3.acc = 0; rot_chariot(); rot_chariot(); } @@ -89,38 +85,41 @@ void trait_ph() { void parole(int rep, int ht, int typ) { int savph[501]; - int i; int tempo; + if (_soundOff) + return; - if (sonoff) return; num_ph = rep; haut = ht; typlec = typ; if (typlec != 0) { - for (i = 0; i <= 500; i ++) savph[i] = t_cph[i]; + for (int i = 0; i <= 500; ++i) + savph[i] = t_cph[i]; tempo = tempo_bruit; - } else if (haut > 5) tempo = tempo_f; - else tempo = tempo_m; + } else if (haut > 5) + tempo = tempo_f; + else + tempo = tempo_m; addfix = (float)((tempo - addv[0])) / 256; cctable(tbi); switch (typ) { - case 1 : { + case 1: charge_bruit(); /*if zuul then zzuul(adbruit,0,1095);*/ regenbruit(); - } - break; - case 2 : { + break; + case 2: charge_son(); charge_phbruit(); - } - break; + break; + default: + break; } trait_ph(); g_vm->_soundManager.litph(tbi, typ, tempo); if (typlec != 0) - for (i = 0; i <= 500; i ++) { + for (int i = 0; i <= 500; ++i) { t_cph[i] = savph[i]; mlec = typlec; } diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index e6fd9b7f45..fa83b822d0 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -47,8 +47,10 @@ void change_gd(int ngd) { dessine_rouleau(); tinke(); drawClock(); - if (ipers != 0) affper(ipers); - else person(); + if (ipers != 0) + affper(ipers); + else + person(); clsf2(); clsf3(); _maff = 68; @@ -66,7 +68,6 @@ void MortevielleEngine::gameLoaded() { bool test[3]; char g[8]; - hideMouse(); imen = false; g[1] = 'M'; @@ -129,8 +130,10 @@ void MortevielleEngine::gameLoaded() { _endGame = false; tmlieu(s.mlieu); modinv(); - if (s.derobj != 0) modobj2(s.derobj + 400, test[1], test[2]); - else tesok = test[1] || test[2]; + if (s.derobj != 0) + modobj2(s.derobj + 400, test[1], test[2]); + else + tesok = test[1] || test[2]; showMouse(); } @@ -141,21 +144,22 @@ void tmaj3() { int j, h, m; calch(j, h, m); - if (m == 30) m = 1; - h = h + (j * 24); - m = m + (h * 2); + if (m == 30) + m = 1; + h += j * 24; + m += h * 2; s.heure = chr(m); } -void tsitu() - -{ +void tsitu() { int h, j, m; - if (! col) clsf2(); + if (! col) + clsf2(); syn = false; iesc = false; - if (anyone) goto L1; + if (anyone) + goto L1; if (brt) if ((msg[3] == MENU_MOVE) || (msg[4] == OPCODE_LEAVE) || (msg[4] == OPCODE_SLEEP) || (msg[4] == OPCODE_EAT)) { ctrm = 4; @@ -165,7 +169,8 @@ void tsitu() fctMove(); if (msg[3] == MENU_DISCUSS) fctDiscuss(); - if (msg[3] == invent) tsprendre(); //Translation: inventory/take + if (msg[3] == invent) + tsprendre(); //Translation: inventory/take if (msg[4] == OPCODE_ATTACH) fctAttach(); if (msg[4] == OPCODE_WAIT) @@ -208,15 +213,18 @@ void tsitu() fctLift(); if (msg[4] == OPCODE_TURN) fctTurn(); - if (msg[4] == OPCODE_HIDE_SELF) { //Translation: hide + if (msg[4] == OPCODE_HIDE_SELF) { fctHideSelf(); goto L1; } - if (msg[4] == sfouiller) tsfouiller();//Translation: search - if (msg[4] == slire) tslire(); //Translation: read + if (msg[4] == sfouiller) + tsfouiller();//Translation: search + if (msg[4] == slire) + tslire(); //Translation: read if (msg[4] == OPCODE_PUT) fctPut(); - if (msg[4] == sregarder) tsregarder();//Translation: look + if (msg[4] == sregarder) + tsregarder();//Translation: look cache = false; L1: if (anyone) { @@ -226,7 +234,8 @@ L1: } calch(j, h, m); if ((((h == 12) || (h == 13) || (h == 19)) && (s.mlieu != 10)) || - ((h > 0) && (h < 6) && (s.mlieu != 0))) s.conf = s.conf + 1; + ((h > 0) && (h < 6) && (s.mlieu != 0))) + s.conf = s.conf + 1; if (((s.mlieu < 16) || (s.mlieu > 19)) && (s.mlieu != 23) && (s.mlieu != 0) && (s.derobj != 152) && (!g_vm->_loseGame)) { if ((s.conf > 99) && (h > 8) && (h < 16)) { @@ -251,9 +260,9 @@ L2: void theure() { vj = ord(s.heure); vh = vj % 48; - vj = vj / 48; + vj /= 48; vm = vh % 2; - vh = vh / 2; + vh /= 2; _hour = vh; if (vm == 1) _minute = 30; diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index c2c43953d0..929b0880f6 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -108,7 +108,8 @@ void SavegameManager::takesav(int n) { sync_save(sz); s = s1; - for (i = 0; i <= 389; i ++) tabdon[i + acha] = bufcha[i]; + for (i = 0; i <= 389; ++i) + tabdon[i + acha] = bufcha[i]; // Close the stream delete stream; @@ -140,7 +141,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { hideMouse(); tmaj3(); - for (i = 0; i <= 389; i ++) + for (i = 0; i <= 389; ++i) bufcha[i] = tabdon[i + acha]; s1 = s; if (s1.mlieu == 26) diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 08aaa2a1f1..4da3ef0c32 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -59,7 +59,7 @@ void chardes(Common::String filename, int32 skipSize, int length) { } f.close(); - for (int i = remainingSkipSize; i <= length + remainingSkipSize; i ++) + for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) mem[0x7000 * 16 + i - remainingSkipSize] = mem[0x6000 * 16 + i]; } @@ -87,7 +87,7 @@ void charani(Common::String filename, int32 skipSize, int length) { } f.close(); - for (int i = remainingSkipSize; i <= length + remainingSkipSize; i ++) + for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) mem[0x7314 * 16 + i - remainingSkipSize] = mem[0x6000 * 16 + i]; } @@ -95,19 +95,18 @@ void taffich() { byte tran1[] = { 121, 121, 138, 139, 120 }; // array<136, 140, byte> byte tran2[] = { 150, 150, 152, 152, 100, 110, 159, 100, 100 }; // array<153, 161, byte> - int i, m, a, b, cx, handle, - npal; + int i, m, cx, handle, npal; int32 lgt; int palh, k, j; int alllum[16]; - a = caff; + int a = caff; if ((a >= 153) && (a <= 161)) a = tran2[a - 153]; else if ((a >= 136) && (a <= 140)) a = tran1[a - 136]; - b = a; + int b = a; if (_maff == a) return; @@ -193,7 +192,7 @@ void taffich() { a = a - 1; npal = a; - for (cx = 0; cx <= (a - 1); cx ++) + for (cx = 0; cx <= (a - 1); ++cx) lgt = lgt + l[cx]; handle = l[a]; @@ -210,13 +209,15 @@ void taffich() { } chardes(filename, lgt, handle); if (gd == her) { - for (i = 0; i <= 15; i ++) { + for (i = 0; i <= 15; ++i) { palh = READ_LE_UINT16(&mem[0x7000 * 16 + (succ(int, i) << 1)]); alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); } - for (i = 0; i <= 15; i ++) { + for (i = 0; i <= 15; ++i) { k = 0; - for (j = 0; j <= 15; j ++) if (alllum[j] > alllum[k]) k = j; + for (j = 0; j <= 15; ++j) + if (alllum[j] > alllum[k]) + k = j; mem[0x7000 * 16 + 2 + (k << 1)] = rang[i]; alllum[k] = -1; } @@ -232,9 +233,9 @@ void taffich() { 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]; + --b; + for (cx = 0; cx <= (b - 1); ++cx) + lgt += l[cx + 89]; handle = l[b + 89]; filename = "AXX.mor"; } else if (b == 50) { diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 6f88d8db9a..efd84cca76 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -92,7 +92,7 @@ bool blo, bt7, bh9, - sonoff, + _soundOff, main1, choisi, test0, diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index f5cd3afdc3..a77586ca2b 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -242,7 +242,7 @@ extern bool blo, bt7, bh9, - sonoff, + _soundOff, main1, choisi, test0, -- cgit v1.2.3 From 20e61b40d05b35c55038311a1a617b70f0790837 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 21 Feb 2012 21:15:36 +0100 Subject: MORTEVIELLE: Rename Alert functions --- engines/mortevielle/dialogs.cpp | 65 ++++++++++++++++++++--------------------- engines/mortevielle/dialogs.h | 6 ++-- 2 files changed, 35 insertions(+), 36 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 9f90f4c48a..991bda4bd4 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -40,21 +40,13 @@ namespace Mortevielle { static const int nligne = 7; -/* -static const int coord[3][4] = { - {0, 0, 0, 0}, - {0, 150, 72, 103}, - {0, 143, 107, 183} -}; -*/ - int Alert::show(const Common::String &msg, int n) { - int coldep, esp, i, nbcase, quoi, ix; + int coldep, esp, i, caseNumb, quoi, ix; Common::String st, chaine; int limit[3][3]; char dumi; Common::String s[3]; - int cx, cy, nbcol, nblig; + int cx, cy, nbcol, lignNumb; bool newaff, test, test1, test2, test3, dum; Common::String cas; @@ -69,14 +61,14 @@ int Alert::show(const Common::String &msg, int n) { dumi = get_ch(); // input >> kbd >> dumi; g_vm->setMouseClick(false); - decod(msg, nbcase, nblig, nbcol, chaine, cas); - sauvecr(50, succ(int, nligne) << 4); + decodeAlertDetails(msg, caseNumb, lignNumb, nbcol, chaine, cas); + sauvecr(50, (nligne + 1) << 4); i = 0; if (chaine == "") { - fait_boite(10, 5, nbcol); + drawAlertBox(10, 5, nbcol); } else { - fait_boite(8, 7, nbcol); + drawAlertBox(8, 7, nbcol); i = 0; g_vm->_screenSurface._textPos.y = 70; do { @@ -96,15 +88,15 @@ int Alert::show(const Common::String &msg, int n) { ++i; } while (!(chaine[i] == ']')); } - if (nbcase == 1) + if (caseNumb == 1) esp = nbcol - 40; else - esp = (uint)(nbcol - nbcase * 40) >> 1; + esp = (uint)(nbcol - caseNumb * 40) >> 1; coldep = 320 - ((uint)nbcol >> 1) + ((uint)esp >> 1); - fait_choix(cas, coldep, nbcase, &s[0], esp); + setButtonText(cas, coldep, caseNumb, &s[0], esp); limit[1][1] = ((uint)(coldep) >> 1) * res; limit[1][2] = limit[1][1] + 40; - if (nbcase == 1) { + if (caseNumb == 1) { limit[2][1] = limit[2][2]; } else { limit[2][1] = ((uint)(320 + ((uint)esp >> 1)) >> 1) * res; @@ -125,7 +117,7 @@ int Alert::show(const Common::String &msg, int n) { if (test) { test1 = (cx > limit[1][1]) && (cx < limit[1][2]); test2 = test1; - if (nbcase > 1) + if (caseNumb > 1) test2 = test1 || ((cx > limit[2][1]) && (cx < limit[2][2])); if (test2) { newaff = true; @@ -190,7 +182,7 @@ int Alert::show(const Common::String &msg, int n) { return do_alert_result; } -void Alert::decod(Common::String s, int &nbc, int &nbl, int &col, Common::String &c, Common::String &cs) { +void Alert::decodeAlertDetails(Common::String s, int &nbc, int &lineNumb, int &col, Common::String &c, Common::String &cs) { int i, k; bool v; @@ -199,7 +191,7 @@ void Alert::decod(Common::String s, int &nbc, int &nbl, int &col, Common::String i = 0; c = ""; - nbl = 0; + lineNumb = 0; i = 5; k = 0; v = true; @@ -211,7 +203,7 @@ void Alert::decod(Common::String s, int &nbc, int &nbl, int &col, Common::String if (k > col) col = k; k = 0; - nbl = nbl + 1; + ++lineNumb; } else if (s[i] != ' ') v = false; ++i; @@ -236,23 +228,28 @@ void Alert::setPosition(int ji, int coldep, int esp) { g_vm->_screenSurface.putxy(coldep + (40 + esp) *pred(int, ji), 98); } -void Alert::fait_boite(int lidep, int nli, int tx) { - int x, y, xx, yy; - +/** + * Alert function - Draw Alert Box + * @remarks Originally called 'fait_boite' + */ +void Alert::drawAlertBox(int lidep, int nli, int tx) { if (tx > 640) tx = 640; - x = 320 - ((uint)tx >> 1); - y = pred(int, lidep) << 3; - xx = x + tx; - yy = y + (nli << 3); + int x = 320 - ((uint)tx >> 1); + int y = pred(int, lidep) << 3; + int xx = x + tx; + int yy = y + (nli << 3); g_vm->_screenSurface.fillRect(15, Common::Rect(x, y, xx, yy)); g_vm->_screenSurface.fillRect(0, Common::Rect(x, y + 2, xx, y + 4)); g_vm->_screenSurface.fillRect(0, Common::Rect(x, yy - 4, xx, yy - 2)); } - -void Alert::fait_choix(Common::String c, int coldep, int nbcase, Common::String *str, int esp) { +/** + * Alert function - Set Button Text + * @remarks Originally called 'fait_choix' + */ +void Alert::setButtonText(Common::String c, int coldep, int nbcase, Common::String *str, int esp) { int i, l, x; char ch; @@ -265,9 +262,11 @@ void Alert::fait_choix(Common::String c, int coldep, int nbcase, Common::String ch = c[i]; str[l] += ch; } while (!(c[i + 1] == ']')); - i = i + 2; + i += 2; + while (str[l].size() < 3) - str[l] += ' '; + str[l] += ' '; + g_vm->_screenSurface.putxy(x, 98); Common::String tmp(" "); diff --git a/engines/mortevielle/dialogs.h b/engines/mortevielle/dialogs.h index 260f355e8f..76b824eab0 100644 --- a/engines/mortevielle/dialogs.h +++ b/engines/mortevielle/dialogs.h @@ -34,10 +34,10 @@ namespace Mortevielle { class Alert { private: - static void decod(Common::String s, int &nbc, int &nbl, int &col, Common::String &c, Common::String &cs); + static void decodeAlertDetails(Common::String s, int &nbc, int &nbl, int &col, Common::String &c, Common::String &cs); static void setPosition(int ji, int coldep, int esp); - static void fait_boite(int lidep, int nli, int tx); - static void fait_choix(Common::String c, int coldep, int nbcase, Common::String *str, int esp); + static void drawAlertBox(int lidep, int nli, int tx); + static void setButtonText(Common::String c, int coldep, int nbcase, Common::String *str, int esp); public: static int show(const Common::String &s, int n); }; -- cgit v1.2.3 From 77f9e706e50e11d711575a90e18522381d5bac73 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 21 Feb 2012 22:14:22 +0100 Subject: MORTEVIELLE: Rename F3F8 functions, rename everything related to Graphical Device --- engines/mortevielle/dialogs.cpp | 38 ++++++++++++++++++++++++++----------- engines/mortevielle/dialogs.h | 6 +++--- engines/mortevielle/keyboard.cpp | 2 ++ engines/mortevielle/level15.cpp | 8 ++++---- engines/mortevielle/menu.cpp | 2 +- engines/mortevielle/mor.cpp | 11 ++++++----- engines/mortevielle/mor2.cpp | 6 +++--- engines/mortevielle/mortevielle.cpp | 18 +++++++++--------- engines/mortevielle/mouse.cpp | 4 ++-- engines/mortevielle/ovd1.cpp | 4 ++-- engines/mortevielle/prog.cpp | 8 ++++++-- engines/mortevielle/prog.h | 2 +- engines/mortevielle/taffich.cpp | 2 +- engines/mortevielle/var_mor.cpp | 4 ++-- engines/mortevielle/var_mor.h | 4 ++-- 15 files changed, 71 insertions(+), 48 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 991bda4bd4..93b556ea68 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -40,6 +40,10 @@ namespace Mortevielle { static const int nligne = 7; +/** + * Alert function - Show + * @remarks Originally called 'do_alert' + */ int Alert::show(const Common::String &msg, int n) { int coldep, esp, i, caseNumb, quoi, ix; Common::String st, chaine; @@ -182,6 +186,10 @@ int Alert::show(const Common::String &msg, int n) { return do_alert_result; } +/** + * Alert function - Decode Alert Details + * @remarks Originally called 'decod' + */ void Alert::decodeAlertDetails(Common::String s, int &nbc, int &lineNumb, int &col, Common::String &c, Common::String &cs) { int i, k; bool v; @@ -244,7 +252,6 @@ void Alert::drawAlertBox(int lidep, int nli, int tx) { g_vm->_screenSurface.fillRect(0, Common::Rect(x, yy - 4, xx, yy - 2)); } - /** * Alert function - Set Button Text * @remarks Originally called 'fait_choix' @@ -425,34 +432,43 @@ void f3f8::draw() { g_vm->_screenSurface.drawBox(0, 42, MAX(f3Width, f8Width) + 6, 16, 7); } -void f3f8::divers(int np, bool b) { +/** + * Alert function - Loop until F8 is pressed, update + * Graphical Device if modified + * @remarks Originally called 'diver' + */ +void f3f8::checkForF8(int SpeechNum, bool drawAni50Fl) { teskbd(); do { - parole(np, 0, 0); - atf3f8(key); + parole(SpeechNum, 0, 0); + waitForF3F8(key); CHECK_QUIT; - if (newgd != gd) { - gd = newgd; + if (_newGraphicalDevice != _currGraphicalDevice) { + _currGraphicalDevice = _newGraphicalDevice; hirs(); - aff50(b); + aff50(drawAni50Fl); } - } while (!(key == 66)); + } while (!(key == 66)); // keycode for F8 } -void f3f8::atf3f8(int &key) { +/** + * Alert function - Loop until F3 or F8 is pressed + * @remarks Originally called 'atf3f8' + */ +void f3f8::waitForF3F8(int &key) { do { key = testou(); CHECK_QUIT; } while (!((key == 61) || (key == 66))); } -void f3f8::aff50(bool c) { +void f3f8::aff50(bool drawAni50Fl) { caff = 50; _maff = 0; taffich(); dessine(ades, 63, 12); - if (c) + if (drawAni50Fl) ani50(); else repon(2, c_paroles + 142); diff --git a/engines/mortevielle/dialogs.h b/engines/mortevielle/dialogs.h index 76b824eab0..a8c0cb7cf7 100644 --- a/engines/mortevielle/dialogs.h +++ b/engines/mortevielle/dialogs.h @@ -50,9 +50,9 @@ public: class f3f8 { public: static void draw(); - static void divers(int np, bool b); - static void atf3f8(int &key); - static void aff50(bool c); + static void checkForF8(int SpeechNum, bool drawAni50Fl); + static void waitForF3F8(int &key); + static void aff50(bool drawAni50Fl); static void ani50(); }; diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index bd7ad2c8aa..679264bff9 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -56,6 +56,8 @@ int testou() { if (keypressed()) ch = get_ch(); break; + default: + break; } return ord(ch); diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index d297529470..eff7172235 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -68,7 +68,7 @@ void outbloc(int n, pattern p, t_nhom pal) { void writepal(int n) { t_nhom pal; - switch (gd) { + switch (_currGraphicalDevice) { case tan: case ega: case ams: @@ -96,7 +96,7 @@ void pictout(int seg, int dep, int x, int y) { GfxSurface surface; surface.decode(&mem[seg * 16 + dep]); - if (gd == her) { + if (_currGraphicalDevice == her) { mem[0x7000 * 16 + 2] = 0; mem[0x7000 * 16 + 32] = 15; } @@ -109,13 +109,13 @@ void pictout(int seg, int dep, int x, int y) { void sauvecr(int y, int dy) { hideMouse(); - s_sauv(gd, y, dy); + s_sauv(_currGraphicalDevice, y, dy); showMouse(); } void charecr(int y, int dy) { hideMouse(); - s_char(gd, y, dy); + s_char(_currGraphicalDevice, y, dy); showMouse(); } diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index b585177f19..9f2e83f967 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -152,7 +152,7 @@ void Menu::menu_aff() { g_vm->_screenSurface.fillRect(7, Common::Rect(0, 0, 639, 10)); col = 28 * res; - if (gd == cga) + if (_currGraphicalDevice == cga) color = 1; else color = 9; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index a4283407c5..76ba080c22 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -113,7 +113,7 @@ void dessine(int ad, int x, int y) { void dessine_rouleau() { writepal(89); - if (gd == her) { + if (_currGraphicalDevice == her) { mem[0x7000 * 16 + 14] = 15; } hideMouse(); @@ -266,7 +266,7 @@ void clsf10() { void stop() { hirs(); - gd = ams; + _currGraphicalDevice = ams; hirs(); g_vm->quitGame(); } @@ -274,7 +274,7 @@ void stop() { void paint_rect(int x, int y, int dx, int dy) { int co; - if (gd == cga) + if (_currGraphicalDevice == cga) co = 3; else co = 11; @@ -634,9 +634,10 @@ void drawClock() { paint_rect(570, 118, 20, 10); paint_rect(578, 114, 6, 18); - if ((gd == cga) || (gd == her)) + if ((_currGraphicalDevice == cga) || (_currGraphicalDevice == her)) co = 0; - else co = 1; + else + co = 1; if (_minute == 0) g_vm->_screenSurface.drawLine(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y - rg), co); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 9dcbb85b0e..fff6917907 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -200,9 +200,9 @@ void fenat(char ans) { int coul; hideMouse(); - if (gd == cga) + if (_currGraphicalDevice == cga) coul = 2; - else if (gd == her) + else if (_currGraphicalDevice == her) coul = 1; else coul = 12; @@ -425,7 +425,7 @@ void sparl(float adr, float rep) { key = 0; do { parole(repint, haut[caff - 69], 0); - f3f8::atf3f8(key); + f3f8::waitForF3F8(key); CHECK_QUIT; } while (!(key == 66)); hirs(); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 4112073cde..e6ecbde4d3 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -120,7 +120,7 @@ Common::ErrorCode MortevielleEngine::initialise() { _screenSurface.create(SCREEN_WIDTH, SCREEN_HEIGHT, Graphics::PixelFormat::createFormatCLUT8()); // Set the screen mode - gd = ega; + _currGraphicalDevice = ega; res = 2; // Load the mort.dat resource @@ -134,8 +134,8 @@ Common::ErrorCode MortevielleEngine::initialise() { // Setup the mouse cursor initMouse(); - gd = ega; - newgd = gd; + _currGraphicalDevice = ega; + _newGraphicalDevice = _currGraphicalDevice; zuul = false; tesok = false; chartex(); @@ -153,10 +153,10 @@ Common::ErrorCode MortevielleEngine::initialise() { teskbd(); dialpre(); - newgd = gd; + _newGraphicalDevice = _currGraphicalDevice; teskbd(); - if (newgd != gd) - gd = newgd; + if (_newGraphicalDevice != _currGraphicalDevice) + _currGraphicalDevice = _newGraphicalDevice; hirs(); ades = 0x7000; @@ -469,11 +469,11 @@ Common::Error MortevielleEngine::run() { void MortevielleEngine::showIntroduction() { f3f8::aff50(false); mlec = 0; - f3f8::divers(142, false); + f3f8::checkForF8(142, false); CHECK_QUIT; f3f8::ani50(); - f3f8::divers(143, true); + f3f8::checkForF8(143, true); CHECK_QUIT; // TODO: Once music is implemented, only use the below delay if music is turned off @@ -558,7 +558,7 @@ void MortevielleEngine::handleAction() { g_vm->_menu.eraseMenu(); imen = false; if ((inkey == '\1') || (inkey == '\3') || (inkey == '\5') || (inkey == '\7') || (inkey == '\11')) { - change_gd((uint)pred(int, ord(inkey)) >> 1); + changeGraphicalDevice((uint)pred(int, ord(inkey)) >> 1); return; } if (choisi && (msg[3] == sauve)) { diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 44b254fe41..2a4ab76efb 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -89,7 +89,7 @@ void hideMouse() { if (mouse_shwn == 0) { imp = odd(y_s); j = p_o_s; - switch (gd) { + switch (_currGraphicalDevice) { case cga: k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); @@ -180,7 +180,7 @@ void showMouse() { j = p_o_s; imp = odd(y_s); i = x_s & 7; - switch (gd) { + switch (_currGraphicalDevice) { case cga: k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 0177d3e5c1..fb893570ff 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -239,8 +239,8 @@ void suite() { caff = 51; taffich(); teskbd(); - if (newgd != gd) - gd = newgd; + if (_newGraphicalDevice != _currGraphicalDevice) + _currGraphicalDevice = _newGraphicalDevice; hirs(); dessine(ades, 0, 0); diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index fa83b822d0..0c05e81cdb 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -38,9 +38,13 @@ namespace Mortevielle { -void change_gd(int ngd) { +/** + * Engine function - Change Graphical Device + * @remarks Originally called 'change_gd' + */ +void changeGraphicalDevice(int newDevice) { hideMouse(); - gd = ngd; + _currGraphicalDevice = newDevice; hirs(); initMouse(); showMouse(); diff --git a/engines/mortevielle/prog.h b/engines/mortevielle/prog.h index e88b943307..c6ccca8920 100644 --- a/engines/mortevielle/prog.h +++ b/engines/mortevielle/prog.h @@ -30,7 +30,7 @@ namespace Mortevielle { -extern void change_gd(int ngd); +extern void changeGraphicalDevice(int newDevice); /* NIVEAU 3 */ /* procedure PROGRAMME */ diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 4da3ef0c32..1306f7f1b1 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -208,7 +208,7 @@ void taffich() { npal = a + 37; } chardes(filename, lgt, handle); - if (gd == her) { + if (_currGraphicalDevice == her) { for (i = 0; i <= 15; ++i) { palh = READ_LE_UINT16(&mem[0x7000 * 16 + (succ(int, i) << 1)]); alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index efd84cca76..759c29ab9b 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -124,7 +124,7 @@ int x, jh, mh, cs, - gd, /* Gd = graph device */ + _currGraphicalDevice, hdb, hfb, _hour, @@ -147,7 +147,7 @@ int x, msg3, msg4, mlec, - newgd, + _newGraphicalDevice, c_zzz, mchai, menup, diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index a77586ca2b..179c92d6bc 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -273,7 +273,7 @@ extern int x, jh, mh, cs, - gd, /* Gd = graph device */ + _currGraphicalDevice, hdb, hfb, _hour, @@ -296,7 +296,7 @@ extern int x, msg3, msg4, mlec, - newgd, + _newGraphicalDevice, c_zzz, mchai, menup, -- cgit v1.2.3 From a988c467a4ef50ee405657ded1fc1c49db061ade Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 21 Feb 2012 22:36:45 +0100 Subject: MORTEVIELLE: Rename graphical mode constants --- engines/mortevielle/level15.cpp | 10 ++++---- engines/mortevielle/menu.cpp | 2 +- engines/mortevielle/mor.cpp | 8 +++---- engines/mortevielle/mor2.cpp | 4 ++-- engines/mortevielle/mortevielle.cpp | 46 +++++++++++++++++++++++++------------ engines/mortevielle/mouse.cpp | 20 ++++++++-------- engines/mortevielle/taffich.cpp | 2 +- engines/mortevielle/var_mor.h | 2 +- 8 files changed, 55 insertions(+), 39 deletions(-) diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index eff7172235..e1bba275e7 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -69,15 +69,15 @@ void writepal(int n) { t_nhom pal; switch (_currGraphicalDevice) { - case tan: - case ega: - case ams: + case MODE_TANDY: + case MODE_EGA: + case MODE_AMSTRAD1512: for (int i = 1; i <= 16; ++i) { mem[0x7000 * 16 + 2 * i] = tabpal[n][i].x; mem[0x7000 * 16 + succ(int, 2 * i)] = tabpal[n][i].y; } break; - case cga: + case MODE_CGA: warning("TODO: If this code is needed, resolve the incompatible types"); // pal = palcga[n].a; if (n < 89) @@ -96,7 +96,7 @@ void pictout(int seg, int dep, int x, int y) { GfxSurface surface; surface.decode(&mem[seg * 16 + dep]); - if (_currGraphicalDevice == her) { + if (_currGraphicalDevice == MODE_HERCULES) { mem[0x7000 * 16 + 2] = 0; mem[0x7000 * 16 + 32] = 15; } diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 9f2e83f967..78d9449b03 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -152,7 +152,7 @@ void Menu::menu_aff() { g_vm->_screenSurface.fillRect(7, Common::Rect(0, 0, 639, 10)); col = 28 * res; - if (_currGraphicalDevice == cga) + if (_currGraphicalDevice == MODE_CGA) color = 1; else color = 9; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 76ba080c22..6707587184 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -113,7 +113,7 @@ void dessine(int ad, int x, int y) { void dessine_rouleau() { writepal(89); - if (_currGraphicalDevice == her) { + if (_currGraphicalDevice == MODE_HERCULES) { mem[0x7000 * 16 + 14] = 15; } hideMouse(); @@ -266,7 +266,7 @@ void clsf10() { void stop() { hirs(); - _currGraphicalDevice = ams; + _currGraphicalDevice = MODE_AMSTRAD1512; hirs(); g_vm->quitGame(); } @@ -274,7 +274,7 @@ void stop() { void paint_rect(int x, int y, int dx, int dy) { int co; - if (_currGraphicalDevice == cga) + if (_currGraphicalDevice == MODE_CGA) co = 3; else co = 11; @@ -634,7 +634,7 @@ void drawClock() { paint_rect(570, 118, 20, 10); paint_rect(578, 114, 6, 18); - if ((_currGraphicalDevice == cga) || (_currGraphicalDevice == her)) + if ((_currGraphicalDevice == MODE_CGA) || (_currGraphicalDevice == MODE_HERCULES)) co = 0; else co = 1; diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index fff6917907..9ded5a16f9 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -200,9 +200,9 @@ void fenat(char ans) { int coul; hideMouse(); - if (_currGraphicalDevice == cga) + if (_currGraphicalDevice == MODE_CGA) coul = 2; - else if (_currGraphicalDevice == her) + else if (_currGraphicalDevice == MODE_HERCULES) coul = 1; else coul = 12; diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index e6ecbde4d3..67621d036d 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -120,7 +120,7 @@ Common::ErrorCode MortevielleEngine::initialise() { _screenSurface.create(SCREEN_WIDTH, SCREEN_HEIGHT, Graphics::PixelFormat::createFormatCLUT8()); // Set the screen mode - _currGraphicalDevice = ega; + _currGraphicalDevice = MODE_EGA; res = 2; // Load the mort.dat resource @@ -134,7 +134,7 @@ Common::ErrorCode MortevielleEngine::initialise() { // Setup the mouse cursor initMouse(); - _currGraphicalDevice = ega; + _currGraphicalDevice = MODE_EGA; _newGraphicalDevice = _currGraphicalDevice; zuul = false; tesok = false; @@ -296,8 +296,8 @@ bool MortevielleEngine::handleEvents() { _mouseClick = true; else if (event.type == Common::EVENT_LBUTTONUP) _mouseClick = false; - break; + break; case Common::EVENT_KEYDOWN: addKeypress(event); break; @@ -445,7 +445,7 @@ Common::Error MortevielleEngine::run() { int loadSlot = 0; if (ConfMan.hasKey("save_slot")) { int gameToLoad = ConfMan.getInt("save_slot"); - if (gameToLoad >= 1 && gameToLoad <= 999) + if ((gameToLoad >= 1) && (gameToLoad <= 999)) loadSlot = gameToLoad; } @@ -487,9 +487,12 @@ void MortevielleEngine::showIntroduction() { * loses, and chooses to start playing the game again. */ void MortevielleEngine::mainGame() { - if (rech_cfiec) charge_cfiec(); + if (rech_cfiec) + charge_cfiec(); + for (crep = 1; crep <= c_zzz; crep ++) zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); + charge_bruit5(); _menu.initMenu(); @@ -518,6 +521,7 @@ void MortevielleEngine::playGame() { handleAction(); CHECK_QUIT; } while (!((_quitGame) || (_endGame) || (_loseGame))); + if (_endGame) endGame(); else if (_loseGame) @@ -574,9 +578,11 @@ void MortevielleEngine::handleAction() { if ((mnumo != OPCODE_NONE) && ((msg[3] == action) || (msg[3] == saction))) { msg[4] = mnumo; ecr3(g_vm->getString(S_IDEM)); - } else return; + } else + return; } else if (inkey == '\104') { - if ((x != 0) && (y != 0)) num = 9999; + if ((x != 0) && (y != 0)) + num = 9999; return; } } @@ -584,39 +590,49 @@ void MortevielleEngine::handleAction() { _quitGame = true; tmaj3(); } else { - if ((funct) && (inkey != '\77')) return; + if ((funct) && (inkey != '\77')) + return; if (temps > lim) { repon(2, 141); - if (num == 9999) num = 0; + if (num == 9999) + num = 0; } else { mnumo = msg[3]; - if ((msg[3] == action) || (msg[3] == saction)) mnumo = msg[4]; + if ((msg[3] == action) || (msg[3] == saction)) + mnumo = msg[4]; if (! anyone) { if ((fouil) || (obpart)) { - if (y_s < 12) return; + if (y_s < 12) + return; + if ((msg[4] == OPCODE_SOUND) || (msg[4] == OPCODE_LIFT)) { oo = true; if ((msg[4] == OPCODE_LIFT) || (obpart)) { finfouil(); caff = s.mlieu; crep = 998; - } else tsuiv(); + } else + tsuiv(); mennor(); } } } do { - if (! oo) tsitu(); + if (! oo) + tsitu(); + if ((ctrm == 0) && (! _loseGame) && (! _endGame)) { taffich(); if (okdes) { okdes = false; dessin(0); } - if ((! syn) || (col)) repon(2, crep); + if ((! syn) || (col)) + repon(2, crep); } } while (!(! syn)); - if (ctrm != 0) tctrm(); + if (ctrm != 0) + tctrm(); } } } diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 2a4ab76efb..c96e92f0a8 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -90,7 +90,7 @@ void hideMouse() { imp = odd(y_s); j = p_o_s; switch (_currGraphicalDevice) { - case cga: + case MODE_CGA: k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); do { @@ -102,7 +102,7 @@ void hideMouse() { k = succ(int, k); } while (!(k >= 5)); break; - case ams: + case MODE_AMSTRAD1512: for (i = 0; i <= 3; ++i) { port[0x3dd] = 1 << i; k = 0; @@ -120,7 +120,7 @@ void hideMouse() { } while (!(k >= 8)); } break; - case ega: + case MODE_EGA: port[0x3c4] = 2; port[0x3ce] = 8; port[0x3cf] = 255; @@ -140,7 +140,7 @@ void hideMouse() { ++i; } while (!(i == 4)); break; - case her: + case MODE_HERCULES: j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); for (i = 0; i <= 5; ++i) { for (k = 0; k <= 3; ++k) @@ -148,7 +148,7 @@ void hideMouse() { j += 80; } break; - case tan: + case MODE_TANDY: j = ((uint)y_s >> 2) * 160 + ((uint)x_s >> 1); k = 0; do { @@ -181,7 +181,7 @@ void showMouse() { imp = odd(y_s); i = x_s & 7; switch (_currGraphicalDevice) { - case cga: + case MODE_CGA: k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); do { @@ -193,7 +193,7 @@ void showMouse() { k = succ(int, k); } while (!(k >= 5)); break; - case ams: + case MODE_AMSTRAD1512: for (i = 0; i <= 3; ++i) { j = p_o_s; imp = odd(y_s); @@ -212,7 +212,7 @@ void showMouse() { } while (!(k >= 8)); } break; - case ega: + case MODE_EGA: port[0x3ce] = 4; l = 0; do { @@ -227,7 +227,7 @@ void showMouse() { ++l; } while (!(l == 4)); break; - case her: + case MODE_HERCULES: j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); for (i = 0; i <= 5; ++i) { for (k = 0; k <= 3; ++k) @@ -235,7 +235,7 @@ void showMouse() { j += 80; } break; - case tan: + case MODE_TANDY: j = ((uint)y_s >> 2) * 160 + ((uint)x_s >> 1); k = 0; do { diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 1306f7f1b1..46df0b4e3b 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -208,7 +208,7 @@ void taffich() { npal = a + 37; } chardes(filename, lgt, handle); - if (_currGraphicalDevice == her) { + if (_currGraphicalDevice == MODE_HERCULES) { for (i = 0; i <= 15; ++i) { palh = READ_LE_UINT16(&mem[0x7000 * 16 + (succ(int, i) << 1)]); alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 179c92d6bc..a6d40e5b77 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -223,7 +223,7 @@ typedef int tfxx[108]; /*------------------------------ ENUMS ------------------------------*/ /*---------------------------------------------------------------------------*/ -enum GraphicModes { ams = 0, cga = 1, ega = 2, her = 3, tan = 4 }; +enum GraphicModes { MODE_AMSTRAD1512 = 0, MODE_CGA = 1, MODE_EGA = 2, MODE_HERCULES = 3, MODE_TANDY = 4 }; /*---------------------------------------------------------------------------*/ /*------------------------------ VARIABLES ------------------------------*/ -- cgit v1.2.3 From 33106100f63afd7cff1f9ae38b4d682ac95150bd Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 21 Feb 2012 23:09:29 +0100 Subject: MORTEVIELLE: remove pred and succ --- engines/mortevielle/actions.cpp | 12 ++++++------ engines/mortevielle/dialogs.cpp | 8 ++++---- engines/mortevielle/keyboard.cpp | 2 +- engines/mortevielle/level15.cpp | 8 ++++---- engines/mortevielle/menu.cpp | 16 ++++++++-------- engines/mortevielle/mor.cpp | 12 ++++++------ engines/mortevielle/mor2.cpp | 22 +++++++++++----------- engines/mortevielle/mortevielle.cpp | 2 +- engines/mortevielle/mouse.cpp | 26 +++++++++++++------------- engines/mortevielle/parole2.cpp | 2 +- engines/mortevielle/taffich.cpp | 4 ++-- engines/mortevielle/var_mor.h | 2 -- 12 files changed, 57 insertions(+), 59 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 975992ee2a..eb8bf87061 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -210,7 +210,7 @@ void fctTake() { obpart = false; affrep(); } else { - tabdon[acha + (pred(int, mchai) * 10) + pred(int, cs)] = 0; + tabdon[acha + ((mchai - 1) * 10) + cs - 1] = 0; tsuiv(); ++dobj; if (dobj > 6) { @@ -344,7 +344,7 @@ void fctLift() { cx = 14; else if (s.mlieu == 19) cx = 15; - crep = tabdon[asoul + (cx << 3) + pred(int, num)]; + crep = tabdon[asoul + (cx << 3) + (num - 1)]; if (crep == 255) crep = 997; } @@ -436,7 +436,7 @@ void fctLook() { cx -= 4; if (s.mlieu == 26) cx = 21; - crep = tabdon[arega + (cx * 7) + pred(int, num)]; + crep = tabdon[arega + (cx * 7) + num - 1]; if ((s.mlieu == 13) && (num == 8)) crep = 126; if (s.mlieu == 19) @@ -608,7 +608,7 @@ void fctOpen() { cx = s.mlieu; if (s.mlieu == 16) cx = 14; - crep = tabdon[aouvr + (cx * 7) + pred(int, num)]; + crep = tabdon[aouvr + (cx * 7) + num - 1]; if (crep == 254) crep = 999; } else @@ -1330,7 +1330,7 @@ void fctDiscuss() { co = 0; lig = 0; do { - icm = succ(int, icm); + ++icm; g_vm->_screenSurface.putxy(co, lig); if (s.teauto[icm] == '*') if (te[icm]) @@ -1356,7 +1356,7 @@ void fctDiscuss() { cx = 41; else cx = 1; - cy = succ(int, ((uint)y >> 3)); /* 0-199 => 1-25 */ + cy = ((uint)y >> 3) + 1; // 0-199 => 1-25 if ((cy > 23) || ((cx == 41) && ((cy >= 20) && (cy <= 22)))) { if (choi != 0) { lig = ((choi - 1) % 23) << 3; diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 93b556ea68..20e2898121 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -176,7 +176,7 @@ int Alert::show(const Common::String &msg, int n) { tmp4 += " "; g_vm->_screenSurface.writeg(tmp4, 1); } - charecr(50, succ(int, nligne) << 4); + charecr(50, (nligne + 1) << 4); showMouse(); /* Restore the background area */ @@ -233,7 +233,7 @@ void Alert::decodeAlertDetails(Common::String s, int &nbc, int &lineNumb, int &c } void Alert::setPosition(int ji, int coldep, int esp) { - g_vm->_screenSurface.putxy(coldep + (40 + esp) *pred(int, ji), 98); + g_vm->_screenSurface.putxy(coldep + (40 + esp) * (ji - 1), 98); } /** @@ -244,7 +244,7 @@ void Alert::drawAlertBox(int lidep, int nli, int tx) { if (tx > 640) tx = 640; int x = 320 - ((uint)tx >> 1); - int y = pred(int, lidep) << 3; + int y = (lidep - 1) << 3; int xx = x + tx; int yy = y + (nli << 3); g_vm->_screenSurface.fillRect(15, Common::Rect(x, y, xx, yy)); @@ -338,7 +338,7 @@ bool Ques::show() { ++memk; y += 8; } - for (j = 1; j <= succ(int, der - prem); ++j) { + for (j = 1; j <= der - prem + 1; ++j) { rectangle &with = coor[j]; with.x1 = 45 * res; diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index 679264bff9..0306e71962 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -47,7 +47,7 @@ int testou() { case '\26' : if ((c_zzz == 1) && (c_zzz == 2)) { zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); - c_zzz = succ(int, c_zzz); + ++c_zzz; return 61; } diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index e1bba275e7..57eaa4dccc 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -40,7 +40,7 @@ void copcha() { int i = acha; do { tabdon[i] = tabdon[i + 390]; - i = succ(int, i); + ++i; } while (!(i == acha + 390)); } @@ -62,7 +62,7 @@ void outbloc(int n, pattern p, t_nhom pal) { ad += 4; for (int i = 1; i <= p.tax; ++i) for (int j = 1; j <= p.tay; ++j) - mem[0x6000 * 16 + ad + pred(int, j)*p.tax + pred(int, i)] = pal[n].hom[p.des[i][j]]; + mem[(0x6000 * 16) + ad + (j - 1) * p.tax + i - 1] = pal[n].hom[p.des[i][j]]; } void writepal(int n) { @@ -73,8 +73,8 @@ void writepal(int n) { case MODE_EGA: case MODE_AMSTRAD1512: for (int i = 1; i <= 16; ++i) { - mem[0x7000 * 16 + 2 * i] = tabpal[n][i].x; - mem[0x7000 * 16 + succ(int, 2 * i)] = tabpal[n][i].y; + mem[(0x7000 * 16) + (2 * i)] = tabpal[n][i].x; + mem[(0x7000 * 16) + (2 * i) + 1] = tabpal[n][i].y; } break; case MODE_CGA: diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 78d9449b03..1f8f3460e1 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -175,8 +175,8 @@ void Menu::menu_aff() { msk = (uint)msk >> 1; ++x; } - ind_tabl = succ(int, ind_tabl); - k = succ(int, k); + ++ind_tabl; + ++k; } while (!(k == 3)); ++y; } while (!(y == 9)); @@ -204,7 +204,7 @@ void Menu::invers(int ix) { if (msg4 == OPCODE_NONE) return; - g_vm->_screenSurface.putxy(don[msg3][1] << 3, succ(void, lo(msg4)) << 3); + g_vm->_screenSurface.putxy(don[msg3][1] << 3, (lo(msg4) + 1) << 3); switch (msg3) { case 1: s = _inv[lo(msg4)]; @@ -260,7 +260,7 @@ void Menu::util(int x, int y) { ix = 3; int xmx = dxcar * ix * res + xmn + 2; if ((x > xmn) && (x < xmx) && (y < ymx) && (y > 15)) { - ix = pred(int, ((uint)y >> 3)) + (msg3 << 8); + ix = (((uint)y >> 3) - 1) + (msg3 << 8); if (ix != msg4) { invers(1); msg4 = ix; @@ -288,7 +288,7 @@ void Menu::menuDown(int ii) { xco = don[ii][1]; nb_lig = don[ii][4]; hideMouse(); - sauvecr(10, succ(byte, don[ii][2]) << 1); + sauvecr(10, (don[ii][2] + 1) << 1); xco = xco << 3; if (res == 1) cx = 10; @@ -301,7 +301,7 @@ void Menu::menuDown(int ii) { g_vm->_screenSurface.putxy(xco, 16); cx = 0; do { - cx = succ(int, cx); + ++cx; switch (ii) { case 1: if (_inv[cx][0] != '*') @@ -358,7 +358,7 @@ void Menu::menuDown(int ii) { void Menu::menuUp(int xx) { /* debug('menuUp'); */ if (test0) { - charecr(10, succ(byte, don[xx][2]) << 1); + charecr(10, (don[xx][2] + 1) << 1); /* Restore the background area */ assert(g_vm->_screenSurface.pitch == g_vm->_backgroundSurface.pitch); @@ -501,7 +501,7 @@ void Menu::initMenu() { deline(i + c_dis, st, tai); _dis[i] = delig + ' '; } - i = succ(int, i); + ++i; } while (!(i == 22)); for (i = 1; i <= 8; ++i) { _disc[i] = 0x500 + i; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 6707587184..6fe396f3cc 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -188,21 +188,21 @@ void ecr2(Common::String str_) { else tab = 6; g_vm->_screenSurface.putxy(8, 177); - int tlig = 59 + pred(int, res) * 36; + int tlig = 59 + (res - 1) * 36; if ((int)str_.size() < tlig) g_vm->_screenSurface.writeg(str_, 5); else if ((int)str_.size() < (tlig << 1)) { g_vm->_screenSurface.putxy(8, 176); - g_vm->_screenSurface.writeg(copy(str_, 1, pred(int, tlig)), 5); + g_vm->_screenSurface.writeg(copy(str_, 1, (tlig - 1)), 5); g_vm->_screenSurface.putxy(8, 182); g_vm->_screenSurface.writeg(copy(str_, tlig, tlig << 1), 5); } else { f2_all = true; clsf2(); g_vm->_screenSurface.putxy(8, 176); - g_vm->_screenSurface.writeg(copy(str_, 1, pred(int, tlig)), 5); + g_vm->_screenSurface.writeg(copy(str_, 1, (tlig - 1)), 5); g_vm->_screenSurface.putxy(8, 182); - g_vm->_screenSurface.writeg(copy(str_, tlig, pred(int, (tlig << 1))), 5); + g_vm->_screenSurface.writeg(copy(str_, tlig, ((tlig << 1) - 1)), 5); g_vm->_screenSurface.putxy(8, 190); g_vm->_screenSurface.writeg(copy(str_, tlig << 1, tlig * 3), 5); } @@ -303,7 +303,7 @@ void conv(int x, int &y) { y = 128; while (cx < x) { y = (uint)y >> 1; - cx = succ(int, cx); + ++cx; } } @@ -351,7 +351,7 @@ void repon(int f, int m) { if ((m > 499) && (m < 563)) { deline(m - 501 + c_st41, st, tay); - if (tay > ((58 + pred(int, res) * 37) << 1)) + if (tay > ((58 + (res - 1) * 37) << 1)) f2_all = true; else f2_all = false; diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 9ded5a16f9..9a06668ec8 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -395,9 +395,9 @@ void modinv() { Common::String nomp; int cy = 0; - for (int cx = 1; cx <= 6; cx++) + for (int cx = 1; cx <= 6; ++cx) if (s.sjer[cx] != chr(0)) { - cy = succ(int, cy); + ++cy; r = (ord(s.sjer[cx]) + 400); deline(r - 501 + c_st41, nom, tay); nomp = delig; @@ -405,7 +405,7 @@ void modinv() { g_vm->_menu.enableMenuItem(g_vm->_menu._invt[cx]); } if (cy < 6) - for (int cx = cy + 1; cx <= 6; cx++) { + for (int cx = cy + 1; cx <= 6; ++cx) { g_vm->_menu.menut(g_vm->_menu._invt[cx], " "); g_vm->_menu.disableMenuItem(g_vm->_menu._invt[cx]); } @@ -464,7 +464,7 @@ void premtet() { void ajchai() { - int cy = (acha + pred(int, pred(int, mchai) * 10)); + int cy = acha + ((mchai - 1) * 10) - 1; int cx = 0; do { ++cx; @@ -696,7 +696,7 @@ void tcoord(int sx) { while (cy < caff) { a += tabdon[atdon]; atdon += 4; - cy = succ(int, cy); + ++cy; } b = tabdon[atdon]; @@ -704,11 +704,11 @@ void tcoord(int sx) { goto L1; a += fleche; cb = 0; - for (cy = 0; cy <= (sx - 2); cy++) { - ib = (tabdon[a + cb] << 8) + tabdon[succ(int, a + cb)]; + for (cy = 0; cy <= (sx - 2); ++cy) { + ib = (tabdon[a + cb] << 8) + tabdon[(a + cb + 1)]; cb += (ib * 4) + 2; } - ib = (tabdon[a + cb] << 8) + tabdon[succ(int, a + cb)]; + ib = (tabdon[a + cb] << 8) + tabdon[(a + cb + 1)]; if (ib == 0) goto L1; @@ -716,10 +716,10 @@ void tcoord(int sx) { do { cb += 2; sx = tabdon[a + cb] * res; - sy = tabdon[succ(int, a + cb)]; + sy = tabdon[(a + cb + 1)]; cb += 2; ix = tabdon[a + cb] * res; - iy = tabdon[succ(int, a + cb)]; + iy = tabdon[(a + cb + 1)]; ++cy; } while (!(((x >= sx) && (x <= ix) && (y >= sy) && (y <= iy)) || (cy > ib))); @@ -794,7 +794,7 @@ void rechai(int &ch) { cx = s.mlieu; if (s.mlieu == 16) cx = 14; - ch = tabdon[achai + (cx * 7) + pred(int, num)]; + ch = tabdon[achai + (cx * 7) + num - 1]; } void t23coul(int &l) { diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 67621d036d..7c7524235b 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -562,7 +562,7 @@ void MortevielleEngine::handleAction() { g_vm->_menu.eraseMenu(); imen = false; if ((inkey == '\1') || (inkey == '\3') || (inkey == '\5') || (inkey == '\7') || (inkey == '\11')) { - changeGraphicalDevice((uint)pred(int, ord(inkey)) >> 1); + changeGraphicalDevice((uint)(ord(inkey) - 1) >> 1); return; } if (choisi && (msg[3] == sauve)) { diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index c96e92f0a8..a3676664d3 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -85,7 +85,7 @@ void hideMouse() { int i, j, k, ps;; bool imp; - mouse_shwn = pred(int, mouse_shwn); + --mouse_shwn; if (mouse_shwn == 0) { imp = odd(y_s); j = p_o_s; @@ -99,7 +99,7 @@ void hideMouse() { WRITE_LE_UINT16(&mem[0xba00 * 16 + j], s_s[2][k]); WRITE_LE_UINT16(&mem[0xba00 * 16 + j + 2], s_s[3][k]); j += 80; - k = succ(int, k); + ++k; } while (!(k >= 5)); break; case MODE_AMSTRAD1512: @@ -116,7 +116,7 @@ void hideMouse() { j += 0x2000; } imp = !imp; - k = succ(int, k); + ++k; } while (!(k >= 8)); } break; @@ -135,7 +135,7 @@ void hideMouse() { ps = mem[0xa000 * 16 + j + 1]; mem[0xa000 * 16 + j + 1] = hi(s_s[i][k]); j += 80; - k = succ(int, k); + ++k; } while (!(k >= 8)); ++i; } while (!(i == 4)); @@ -157,7 +157,7 @@ void hideMouse() { WRITE_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j + 2], s_s[k + 3][i + (k << 2)]); } j += 160; - k = succ(int, k); + ++k; } while (!(k == 3)); break; default: @@ -190,7 +190,7 @@ void showMouse() { s_s[2][k] = READ_LE_UINT16(&mem[0xba00 * 16 + j]); s_s[3][k] = READ_LE_UINT16(&mem[0xba00 * 16 + j + 2]); j += 80; - k = succ(int, k); + ++k; } while (!(k >= 5)); break; case MODE_AMSTRAD1512: @@ -208,7 +208,7 @@ void showMouse() { j += 0x2000; } imp = !imp; - k = succ(int, k); + ++k; } while (!(k >= 8)); } break; @@ -220,9 +220,9 @@ void showMouse() { k = 0; j = p_o_s; do { - s_s[l][k] = mem[0xa000 * 16 + j] + (mem[0xa000 * 16 + succ(int, j)] << 8); + s_s[l][k] = mem[0xa000 * 16 + j] + (mem[(0xa000 * 16) + j + 1] << 8); j += 80; - k = succ(int, k); + ++k; } while (!(k >= 8)); ++l; } while (!(l == 4)); @@ -244,7 +244,7 @@ void showMouse() { s_s[k + 3][i + (k << 2)] = READ_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j + 2]); } j += 160; - k = succ(int, k); + ++k; } while (!(k == 3)); break; default: @@ -357,16 +357,16 @@ void moveMouse(bool &funct, char &key) { } else { switch (in2) { case 'K': - cx = pred(int, cx); + --cx; break; case 'P': - cy = succ(int, cy); + ++cy; break; case 'M': cx += 2; break; case 'H': - cy = pred(int, cy); + --cy; break; case 'G': --cx; diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index 785e49acaa..c493e19a79 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -54,7 +54,7 @@ void init_chariot() { void trait_ph() { const int deca[3] = {300, 30, 40}; - ptr_tcph = pred(int, num_ph); + ptr_tcph = num_ph - 1; ledeb = swap(t_cph[ptr_tcph]) + deca[typlec]; lefin = swap(t_cph[ptr_tcph + 1]) + deca[typlec]; nb_word = lefin - ledeb; diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 46df0b4e3b..29cdc0a288 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -210,7 +210,7 @@ void taffich() { chardes(filename, lgt, handle); if (_currGraphicalDevice == MODE_HERCULES) { for (i = 0; i <= 15; ++i) { - palh = READ_LE_UINT16(&mem[0x7000 * 16 + (succ(int, i) << 1)]); + palh = READ_LE_UINT16(&mem[(0x7000 * 16) + ((i + 1) << 1)]); alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); } for (i = 0; i <= 15; ++i) { @@ -218,7 +218,7 @@ void taffich() { for (j = 0; j <= 15; ++j) if (alllum[j] > alllum[k]) k = j; - mem[0x7000 * 16 + 2 + (k << 1)] = rang[i]; + mem[(0x7000 * 16) + 2 + (k << 1)] = rang[i]; alllum[k] = -1; } } diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index a6d40e5b77..069a603dd2 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -62,8 +62,6 @@ namespace Mortevielle { /*------------------------- DEFINES ----------------------------------*/ /*---------------------------------------------------------------------------*/ -#define pred(type, v) ((v) - 1) -#define succ(type, v) ((v) + 1) #define ord(v) ((int) v) #define chr(v) ((char) v) #define lo(v) ((v) & 0xff) -- cgit v1.2.3 From ac71654b4999663fc911572aaa2e6174767706d3 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 22 Feb 2012 07:37:41 +0100 Subject: MORTEVIELLE: various cleanup and renaming --- engines/mortevielle/dialogs.cpp | 8 ++++---- engines/mortevielle/var_mor.cpp | 3 ++- engines/mortevielle/var_mor.h | 37 ++++++++++++++++++++----------------- 3 files changed, 26 insertions(+), 22 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 20e2898121..c58f6b3309 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -345,13 +345,13 @@ bool Ques::show() { with.x2 = (tmax * 3 + 55) * res; with.y1 = 27 + j * 8; with.y2 = 34 + j * 8; - with.etat = true; + with.enabled = true; while ((int)chaines[j].size() < tmax) { chaines[j] += ' '; } } - coor[j + 1].etat = false; + coor[j + 1].enabled = false; if (res == 1) rep = 10; else @@ -367,8 +367,8 @@ bool Ques::show() { CHECK_QUIT0; k = 1; - while (coor[k].etat && ! dans_rect(coor[k])) k = k + 1; - if (coor[k].etat) { + while (coor[k].enabled && ! dans_rect(coor[k])) k = k + 1; + if (coor[k].enabled) { if ((memk != 0) && (memk != k)) { // for (j = 1; j <= tmax; ++j) // st[j] = chaines[memk][j]; diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 759c29ab9b..a304592515 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -204,7 +204,7 @@ int tbi[256]; chariot c1, c2, c3; float addfix; t_pcga palsav[91]; -doublet tabpal[91][17]; +Common::Point tabpal[91][17]; t_pcga palcga[91]; pattern tpt[15]; @@ -248,6 +248,7 @@ int port[0xfff]; byte mem[65536 * 16]; void intr(int intNum, registres ®s) { + warning("STUBBED: Call to DOS interrupt #%d", intNum); } /** diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 069a603dd2..bc63aa98d3 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -75,23 +75,24 @@ namespace Mortevielle { const float freq0 = 1.19318e6; -const int seg_syst = 0x6fed; -const int segmou = 0x6f00; -const int segdon = 0x6c00; const int adani = 0x7314; -const int adword = 0x4000; -const int adtroct = 0x406b; const int adbruit = 0x5cb0;/*2C00;*/ -const int adbruit1 = 0x6924;/*3874;*/ -const int adbruit2 = 0x6b30;/*3A80;*/ +const int adbruit1 = 0x6924; const int adbruit3 = 0x6ba6;/*3AF6;*/ const int adbruit5 = 0x3b50; const int adson = 0x5cb0;/*2C00;*/ -const int adson2 = 0x60b0;/*3000;*/ +const int adtroct = 0x406b; +const int adword = 0x4000; const int offsetb1 = 6; -const int offsetb2 = 4; const int offsetb3 = 6; +// Useless constants +//const int segdon = 0x6c00; +//const int adbruit2 = 0x6b30;/*3A80;*/ +//const int adson2 = 0x60b0;/*3000;*/ +//const int seg_syst = 0x6fed; +//const int offsetb2 = 4; + const int null = 255; const int tempo_mus = 71; @@ -168,6 +169,7 @@ struct sav_chaine { bool ipre; char heure; }; + struct registres { int ax, bx, cx, dx, bp, si, di, ds, es, flags; }; @@ -177,22 +179,23 @@ struct ind { byte point; }; -typedef int word1; struct chariot { int val, - code, - acc, - freq, - rep; + code, + acc, + freq, + rep; }; +/* struct doublet { byte x, y; }; +*/ struct rectangle { int x1, x2, y1, y2; - bool etat; + bool enabled; }; struct pattern { @@ -214,7 +217,7 @@ struct t_pcga { }; typedef int tablint[256]; -typedef doublet tabdb[17]; +//typedef Common::Point tabdb[17]; typedef int tfxx[108]; /*---------------------------------------------------------------------------*/ @@ -351,7 +354,7 @@ extern int tbi[256]; extern chariot c1, c2, c3; extern float addfix; extern t_pcga palsav[91]; -extern doublet tabpal[91][17]; +extern Common::Point tabpal[91][17]; extern t_pcga palcga[91]; extern pattern tpt[15]; -- cgit v1.2.3 From c6f90f2d2732553de6e71ba86edc6c335aa8ee46 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 23 Feb 2012 07:39:58 +0100 Subject: MORTEVIELLE: Add detection for another French version --- engines/mortevielle/detection_tables.h | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/engines/mortevielle/detection_tables.h b/engines/mortevielle/detection_tables.h index 307d125156..2b9a4511da 100644 --- a/engines/mortevielle/detection_tables.h +++ b/engines/mortevielle/detection_tables.h @@ -37,7 +37,20 @@ static const ADGameDescription MortevielleGameDescriptions[] = { ADGF_NO_FLAGS, GUIO0() }, - + // French + { + "mortevielle", + "", + { + {"menu.mor", 0, "3fef0a3f8fca99fdcb6dbca8cbcef46f", 160}, + {"dxx.mor", 0, "949e68e829ecd5ad29e36a00347a9e7e", 207744}, + AD_LISTEND + }, + Common::FR_FRA, + Common::kPlatformPC, + ADGF_NO_FLAGS, + GUIO0() + }, // German { "mortevielle", -- cgit v1.2.3 From f4a8434d8f59b7df60c5f4c10f598940be4e266a Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 23 Feb 2012 07:43:16 +0100 Subject: MORTEVIELLE: Fix a bug in decodeAlertDetails --- engines/mortevielle/dialogs.cpp | 8 +++++--- engines/mortevielle/dialogs.h | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index c58f6b3309..b332c7e94c 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -190,17 +190,19 @@ int Alert::show(const Common::String &msg, int n) { * Alert function - Decode Alert Details * @remarks Originally called 'decod' */ -void Alert::decodeAlertDetails(Common::String s, int &nbc, int &lineNumb, int &col, Common::String &c, Common::String &cs) { +void Alert::decodeAlertDetails(Common::String s, int &choiceNumb, int &lineNumb, int &col, Common::String &c, Common::String &cs) { int i, k; bool v; //val(s[2], nbc, i); - nbc = atoi(s.c_str() + 1); + choiceNumb = atoi(s.c_str() + 1); i = 0; c = ""; lineNumb = 0; - i = 5; + + // Originally set to 5, decreased to 4 because strings are 0 based, and not 1 based as in Pascal + i = 4; k = 0; v = true; col = 0; diff --git a/engines/mortevielle/dialogs.h b/engines/mortevielle/dialogs.h index a8c0cb7cf7..c4d4ab266f 100644 --- a/engines/mortevielle/dialogs.h +++ b/engines/mortevielle/dialogs.h @@ -34,7 +34,7 @@ namespace Mortevielle { class Alert { private: - static void decodeAlertDetails(Common::String s, int &nbc, int &nbl, int &col, Common::String &c, Common::String &cs); + static void decodeAlertDetails(Common::String s, int &choiceNumb, int &lineNumb, int &col, Common::String &c, Common::String &cs); static void setPosition(int ji, int coldep, int esp); static void drawAlertBox(int lidep, int nli, int tx); static void setButtonText(Common::String c, int coldep, int nbcase, Common::String *str, int esp); -- cgit v1.2.3 From 529b678885f4fb63bb8630bafca53183a0f6b4fa Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 23 Feb 2012 07:55:58 +0100 Subject: MORTEVIELLE: cleanup decodeAlertDetails, rename parameters and variables --- engines/mortevielle/dialogs.cpp | 40 ++++++++++++++++++---------------------- engines/mortevielle/dialogs.h | 2 +- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index b332c7e94c..beac0a595e 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -190,44 +190,40 @@ int Alert::show(const Common::String &msg, int n) { * Alert function - Decode Alert Details * @remarks Originally called 'decod' */ -void Alert::decodeAlertDetails(Common::String s, int &choiceNumb, int &lineNumb, int &col, Common::String &c, Common::String &cs) { - int i, k; - bool v; +void Alert::decodeAlertDetails(Common::String inputStr, int &choiceNumb, int &lineNumb, int &col, Common::String &choiceStr, Common::String &choiceListStr) { + // The second character of the string contains the number of choices + choiceNumb = atoi(inputStr.c_str() + 1); - //val(s[2], nbc, i); - choiceNumb = atoi(s.c_str() + 1); - i = 0; - - c = ""; + choiceStr = ""; + col = 0; lineNumb = 0; // Originally set to 5, decreased to 4 because strings are 0 based, and not 1 based as in Pascal - i = 4; - k = 0; - v = true; - col = 0; + int i = 4; + int k = 0; + bool empty = true; - while (s[i] != ']') { - c += s[i]; - if ((s[i] == '|') || (s[i + 1] == ']')) { + for (; inputStr[i] != ']'; ++i) { + choiceStr += inputStr[i]; + if ((inputStr[i] == '|') || (inputStr[i + 1] == ']')) { if (k > col) col = k; k = 0; ++lineNumb; - } else if (s[i] != ' ') - v = false; - ++i; + } else if (inputStr[i] != ' ') + empty = false; ++k; } - if (v) { - c = ""; + + if (empty) { + choiceStr = ""; col = 20; } else { - c += ']'; + choiceStr += ']'; col += 6; } ++i; - cs = copy(s, i, 30); + choiceListStr = copy(inputStr, i, 30); if (res == 2) col *= 6; else diff --git a/engines/mortevielle/dialogs.h b/engines/mortevielle/dialogs.h index c4d4ab266f..a3f98f38d9 100644 --- a/engines/mortevielle/dialogs.h +++ b/engines/mortevielle/dialogs.h @@ -34,7 +34,7 @@ namespace Mortevielle { class Alert { private: - static void decodeAlertDetails(Common::String s, int &choiceNumb, int &lineNumb, int &col, Common::String &c, Common::String &cs); + static void decodeAlertDetails(Common::String inputStr, int &choiceNumb, int &lineNumb, int &col, Common::String &choiceStr, Common::String &choiceListStr); static void setPosition(int ji, int coldep, int esp); static void drawAlertBox(int lidep, int nli, int tx); static void setButtonText(Common::String c, int coldep, int nbcase, Common::String *str, int esp); -- cgit v1.2.3 From aeb901571356181d85f8d92515379a076d142e31 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 24 Feb 2012 09:15:41 +0100 Subject: MORTEVIELLE: Fix questions display when entering hidden passage --- engines/mortevielle/dialogs.cpp | 56 ++++++++++++++++++++++------------------- engines/mortevielle/mor2.cpp | 7 ------ engines/mortevielle/mor2.h | 1 - engines/mortevielle/outtext.cpp | 12 +++++---- engines/mortevielle/outtext.h | 2 +- 5 files changed, 38 insertions(+), 40 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index beac0a595e..50cfc7bc9c 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -291,12 +291,13 @@ bool Ques::show() { bool q, func, test; int i, j, k, y, memk; - int tay , tmax; + int curLength, maxLength; int rep, prem, der; char st[1410]; char key; rectangle coor[max_rect]; - Common::String chaines[15]; + Common::String choiceArray[15]; + Common::String currChoice; int compte; @@ -310,7 +311,7 @@ bool Ques::show() { hirs(); showMouse(); ++i; - deline(ta[i], st, tay); + deline(ta[i], st, curLength); if (res == 1) y = 29; else @@ -325,14 +326,14 @@ bool Ques::show() { der = 510; } y = 35; - tmax = 0; + maxLength = 0; memk = 1; for (j = prem; j <= der; ++j) { - deline(j, st, tay); - if (tay > tmax) - tmax = tay; + deline(j, st, curLength); + if (curLength > maxLength) + maxLength = curLength; afftex(st, 100, y, 100, 1, 0); - chaines[memk] = delig; + choiceArray[memk] = delig; ++memk; y += 8; } @@ -340,13 +341,13 @@ bool Ques::show() { rectangle &with = coor[j]; with.x1 = 45 * res; - with.x2 = (tmax * 3 + 55) * res; + with.x2 = (maxLength * 3 + 55) * res; with.y1 = 27 + j * 8; with.y2 = 34 + j * 8; with.enabled = true; - while ((int)chaines[j].size() < tmax) { - chaines[j] += ' '; + while ((int)choiceArray[j].size() < maxLength) { + choiceArray[j] += ' '; } } coor[j + 1].enabled = false; @@ -354,7 +355,7 @@ bool Ques::show() { rep = 10; else rep = 6; - g_vm->_screenSurface.drawBox(80, 33, 40 + tmax * rep, (der - prem) * 8 + 16, 15); + g_vm->_screenSurface.drawBox(80, 33, 40 + maxLength * rep, (der - prem) * 8 + 16, 15); rep = 0; j = 0; memk = 0; @@ -365,29 +366,32 @@ bool Ques::show() { CHECK_QUIT0; k = 1; - while (coor[k].enabled && ! dans_rect(coor[k])) k = k + 1; + while (coor[k].enabled && ! dans_rect(coor[k])) + ++k; if (coor[k].enabled) { if ((memk != 0) && (memk != k)) { -// for (j = 1; j <= tmax; ++j) -// st[j] = chaines[memk][j]; - strncpy(st, chaines[memk].c_str(), tmax); -// - st[1 + tmax] = '$'; + st[0] = ' '; +// for (j = 0; j <= maxLength; ++j) +// st[j + 1] = choiceArray[memk][j]; + strncpy(st + 1, choiceArray[memk].c_str(), maxLength); + st[1 + maxLength] = '$'; afftex(st, 100, 27 + memk * 8, 100, 1, 0); } if (memk != k) { -// for (j = 1; j <= tmax; ++j) -// st[j] = chaines[k][j]; - strncpy(st, chaines[k].c_str(), tmax); - st[1 + tmax] = '$'; + st[0] = ' '; +// for (j = 0; j <= maxLength; ++j) +// st[j + 1] = choiceArray[k][j]; + strncpy(st + 1, choiceArray[k].c_str(), maxLength); + st[1 + maxLength] = '$'; afftex(st, 100, 27 + k * 8, 100, 1, 1); memk = k; } } else if (memk != 0) { -// for (j = 1; j <= tmax; ++j) -// st[j] = chaines[memk][j]; - strncpy(st, chaines[memk].c_str(), tmax); - st[1 + tmax] = '$'; + st[0] = ' '; +// for (j = 0; j <= maxLength; ++j) +// st[j + 1] = choiceArray[memk][j]; + strncpy(st + 1, choiceArray[memk].c_str(), maxLength); + st[1 + maxLength] = '$'; afftex(st, 100, 27 + memk * 8, 100, 1, 0); memk = 0; } diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 9a06668ec8..6ef32945c7 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -280,13 +280,6 @@ void tlu(int af, int ob) { crep = 998; } -void delin(int n) { - char s[1410]; - int t; - - deline(n, s, t); -} - void affrep() { caff = s.mlieu; crep = s.mlieu; diff --git a/engines/mortevielle/mor2.h b/engines/mortevielle/mor2.h index 1d66548ffa..2c95f1e29d 100644 --- a/engines/mortevielle/mor2.h +++ b/engines/mortevielle/mor2.h @@ -38,7 +38,6 @@ extern void tkey1(bool d); extern void tmlieu(int mli); /* NIVEAU 7 */ extern void tlu(int af, int ob); -extern void delin(int n); extern void affrep(); extern void mfouen(); /* NIVEAU 6 */ diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 95ccc3baef..ceac79aacd 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -126,7 +126,7 @@ static void cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { /** * Decode and extract the line with the given Id */ -void deline(int num, char *l , int &tl) { +void deline(int num, char *line , int &length) { if (num < 0) { warning("deline: num < 0! Skipping"); return; @@ -137,20 +137,22 @@ void deline(int num, char *l , int &tl) { int ts = t_rec[num].indis; byte ps = t_rec[num].point; int i = ts; - tl = 1; + length = 1; int j = 1; + // Initialize properly first string character + line[0] = ' '; byte k = ps; bool endFl = false; char let; do { cinq_huit(let, i, k, endFl); - l[j] = let; + line[j] = let; if (j < 254) delig += let; ++j; } while (!endFl); - tl = j - 1; - if (tl < 255) + length = j - 1; + if (length < 255) // Remove trailing '$' delig.deleteLastChar(); } diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index 470479a81b..32d3c4c7ec 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -34,7 +34,7 @@ namespace Mortevielle { extern Common::String delig; -extern void deline(int num , char *l , int &tl); +extern void deline(int num , char *line , int &length); extern void afftex(char *ch, int x, int y, int dx, int dy, int typ); } // End of namespace Mortevielle -- cgit v1.2.3 From 9efa50c6e418bf707648b056230f1a2d22b3eacb Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 24 Feb 2012 10:54:43 +0100 Subject: MORTEVIELLE: rename variables in Ques::show(), fix remaining glitches --- engines/mortevielle/actions.cpp | 9 ++- engines/mortevielle/dialogs.cpp | 140 +++++++++++++++++++++------------------- 2 files changed, 80 insertions(+), 69 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index eb8bf87061..1f83c5c6a7 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -621,7 +621,7 @@ void fctOpen() { * @remarks Originally called 'tmettre' */ void fctPlace() { - bool entre; + bool enterPassageFl; char st[1410]; Common::String str_; int i, tay; @@ -663,17 +663,20 @@ void fctPlace() { else { s.icave = s.derobj; if (s.derobj == 151) { + // Open hidden passage aniof(1, 2); aniof(1, 1); repon(2, 165); maivid(); parole(6, -9, 1); + + // Do you want to enter the hidden passage? int answer = Alert::show(g_vm->getString(S_YES_NO), 1); if (answer== 1) { deline(582, st, tay); i = Alert::show(delig, 1); tesok = false; - entre = Ques::show(); + enterPassageFl = Ques::show(); hideMouse(); hirs(); dessine_rouleau(); @@ -688,7 +691,7 @@ void fctPlace() { person(); g_vm->_menu.menu_aff(); - if (entre) { + if (enterPassageFl) { s.mlieu = 17; tmlieu(17); } else { diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 50cfc7bc9c..b6253b0024 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -285,59 +285,59 @@ void Alert::setButtonText(Common::String c, int coldep, int nbcase, Common::Stri /*------------------------------------------------------------------------*/ +/** + * Questions asked before entering the hidden passage + */ bool Ques::show() { - const int ta[11] = {0, 511, 516, 524, 531, 545, 552, 559, 563, 570, 576}; - const int ok[11] = {0, 4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }; + const int textIndexArr[11] = {0, 511, 516, 524, 531, 545, 552, 559, 563, 570, 576}; + const int correctAnswerArr[11] = {0, 4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }; - bool q, func, test; - int i, j, k, y, memk; + int optionPosY; int curLength, maxLength; - int rep, prem, der; - char st[1410]; + int rep; + int firstOption, lastOption; char key; rectangle coor[max_rect]; Common::String choiceArray[15]; - Common::String currChoice; - int compte; - + char st[1410]; - bool ques_result; - test = false; - i = 0; - compte = 0; + int currChoice, prevChoice; + int indx = 0; + int correctCount = 0; + bool protectionCheck = false; do { hideMouse(); hirs(); showMouse(); - ++i; - deline(ta[i], st, curLength); + ++indx; + deline(textIndexArr[indx], st, curLength); + int dialogHeight; if (res == 1) - y = 29; + dialogHeight = 29; else - y = 23; - g_vm->_screenSurface.fillRect(15, Common::Rect(0, 14, 630, y)); + dialogHeight = 23; + g_vm->_screenSurface.fillRect(15, Common::Rect(0, 14, 630, dialogHeight)); afftex(st, 20, 15, 100, 2, 0); - if (i != 10) { - prem = ta[i] + 1; - der = ta[i + 1] - 1; + if (indx != 10) { + firstOption = textIndexArr[indx] + 1; + lastOption = textIndexArr[indx + 1] - 1; } else { - prem = 503; - der = 510; + firstOption = 503; + lastOption = 510; } - y = 35; + optionPosY = 35; maxLength = 0; - memk = 1; - for (j = prem; j <= der; ++j) { + + for (int j = firstOption, prevChoice = 1; j <= lastOption; ++j, ++prevChoice) { deline(j, st, curLength); if (curLength > maxLength) maxLength = curLength; - afftex(st, 100, y, 100, 1, 0); - choiceArray[memk] = delig; - ++memk; - y += 8; + afftex(st, 100, optionPosY, 100, 1, 0); + choiceArray[prevChoice] = delig; + optionPosY += 8; } - for (j = 1; j <= der - prem + 1; ++j) { + for (int j = 1; j <= lastOption - firstOption + 1; ++j) { rectangle &with = coor[j]; with.x1 = 45 * res; @@ -350,65 +350,73 @@ bool Ques::show() { choiceArray[j] += ' '; } } - coor[j + 1].enabled = false; + coor[lastOption - firstOption + 2].enabled = false; if (res == 1) rep = 10; else rep = 6; - g_vm->_screenSurface.drawBox(80, 33, 40 + maxLength * rep, (der - prem) * 8 + 16, 15); + g_vm->_screenSurface.drawBox(80, 33, 40 + (maxLength * rep), (lastOption - firstOption) * 8 + 16, 15); rep = 0; - j = 0; - memk = 0; + + prevChoice = 0; do { g_vm->setMouseClick(false); tesok = false; - moveMouse(func, key); + bool flag; + moveMouse(flag, key); CHECK_QUIT0; - k = 1; - while (coor[k].enabled && ! dans_rect(coor[k])) - ++k; - if (coor[k].enabled) { - if ((memk != 0) && (memk != k)) { + currChoice = 1; + while (coor[currChoice].enabled && !dans_rect(coor[currChoice])) + ++currChoice; + if (coor[currChoice].enabled) { + if ((prevChoice != 0) && (prevChoice != currChoice)) { st[0] = ' '; // for (j = 0; j <= maxLength; ++j) -// st[j + 1] = choiceArray[memk][j]; - strncpy(st + 1, choiceArray[memk].c_str(), maxLength); +// st[j + 1] = choiceArray[prevChoice][j]; + strncpy(st + 1, choiceArray[prevChoice].c_str(), maxLength); st[1 + maxLength] = '$'; - afftex(st, 100, 27 + memk * 8, 100, 1, 0); + afftex(st, 100, 27 + (prevChoice * 8), 100, 1, 0); } - if (memk != k) { + if (prevChoice != currChoice) { st[0] = ' '; // for (j = 0; j <= maxLength; ++j) -// st[j + 1] = choiceArray[k][j]; - strncpy(st + 1, choiceArray[k].c_str(), maxLength); +// st[j + 1] = choiceArray[currChoice][j]; + strncpy(st + 1, choiceArray[currChoice].c_str(), maxLength); st[1 + maxLength] = '$'; - afftex(st, 100, 27 + k * 8, 100, 1, 1); - memk = k; + afftex(st, 100, 27 + (currChoice * 8), 100, 1, 1); + prevChoice = currChoice; } - } else if (memk != 0) { + } else if (prevChoice != 0) { st[0] = ' '; // for (j = 0; j <= maxLength; ++j) -// st[j + 1] = choiceArray[memk][j]; - strncpy(st + 1, choiceArray[memk].c_str(), maxLength); +// st[j + 1] = choiceArray[prevChoice][j]; + strncpy(st + 1, choiceArray[prevChoice].c_str(), maxLength); st[1 + maxLength] = '$'; - afftex(st, 100, 27 + memk * 8, 100, 1, 0); - memk = 0; + afftex(st, 100, 27 + (prevChoice * 8), 100, 1, 0); + prevChoice = 0; } - } while (!((memk != 0) && g_vm->getMouseClick())); - if (memk == ok[i]) - ++compte; + } while (!((prevChoice != 0) && g_vm->getMouseClick())); + + warning("Expected answer: %d, answer: %d", prevChoice, correctAnswerArr[indx]); + if (prevChoice == correctAnswerArr[indx]) + // Answer is correct + ++correctCount; else { - if (i == 5) - ++i; - if ((i == 7) || (i == 8)) - i = 10; + // Skip questions that may give hints on previous wrong answer + if (indx == 5) + ++indx; + + if ((indx == 7) || (indx == 8)) + indx = 10; + } + if (indx == 10) { + warning("Skipping protection check: testprot()"); + protectionCheck = true; } - if (i == 10) - q = /*testprot*/ true; - } while (!(i == 10)); - ques_result = (compte == 10) && q; - return ques_result; + } while (!(indx == 10)); + + return (correctCount == 10) && protectionCheck; } /*------------------------------------------------------------------------*/ -- cgit v1.2.3 From 59eacf43c1f3b9e5fec35abed41125f78df2bf80 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 24 Feb 2012 21:04:42 +1100 Subject: MORTEVIELLE: Changed some char fields in sav_chaine to byte This fixes a problem with inventory display, because the original Pascal type was unsigned, whereas char is cigned --- engines/mortevielle/var_mor.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index bc63aa98d3..5bbc8bdb36 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -161,9 +161,9 @@ extern const byte rang[16]; struct sav_chaine { int conf; - char pourc[11]; - char teauto[43]; - char sjer[31]; + byte pourc[11]; + byte teauto[43]; + byte sjer[31]; int mlieu, iboul, ibag, icave, ivier, ipuit; int derobj, iloic, icryp; bool ipre; -- cgit v1.2.3 From 0dea84d47bd0e05f2e80d198bec4826b494a9f77 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 24 Feb 2012 21:08:54 +1100 Subject: MORTEVIELLE: Convert some more char types to byte --- engines/mortevielle/var_mor.cpp | 4 ++-- engines/mortevielle/var_mor.h | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index a304592515..7aef569618 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -176,7 +176,7 @@ byte tabdon[4001]; Common::String stpou; /* donne le % d'indices */ //Translation: "Provides the % of hints" byte is; -char mode; +byte mode; Common::String al_mess, err_mess, ind_mess, @@ -185,7 +185,7 @@ Common::String al_mess, int nbrep[9]; int nbrepm[9]; int msg[5]; -char touv[8]; +byte touv[8]; sav_chaine s, s1; byte bufcha[391]; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 5bbc8bdb36..af8ef9d60f 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -63,7 +63,7 @@ namespace Mortevielle { /*---------------------------------------------------------------------------*/ #define ord(v) ((int) v) -#define chr(v) ((char) v) +#define chr(v) ((unsigned char) v) #define lo(v) ((v) & 0xff) #define hi(v) (((v) >> 8) & 0xff) #define swap(v) (((lo(v)) << 8) | ((hi(v)) >> 8)) @@ -167,7 +167,7 @@ struct sav_chaine { int mlieu, iboul, ibag, icave, ivier, ipuit; int derobj, iloic, icryp; bool ipre; - char heure; + byte heure; }; struct registres { @@ -326,7 +326,7 @@ extern byte tabdon[4001]; extern Common::String stpou; /* donne le % d'indices */ extern byte is; -extern char mode; +extern byte mode; extern Common::String al_mess, err_mess, ind_mess, @@ -335,7 +335,7 @@ extern Common::String al_mess, extern int nbrep[9]; extern int nbrepm[9]; extern int msg[5]; -extern char touv[8]; +extern byte touv[8]; extern sav_chaine s, s1; extern byte bufcha[391]; -- cgit v1.2.3 From 7a6eca74b414986ef9d38c524b7a0cfcee68ae4b Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 24 Feb 2012 12:03:54 +0100 Subject: MORTEVIELLE: remove a couple of GOTOs --- engines/mortevielle/prog.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 0c05e81cdb..96083f1fc8 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -167,7 +167,8 @@ void tsitu() { if (brt) if ((msg[3] == MENU_MOVE) || (msg[4] == OPCODE_LEAVE) || (msg[4] == OPCODE_SLEEP) || (msg[4] == OPCODE_EAT)) { ctrm = 4; - goto L2; + mennor(); + return; } if (msg[3] == MENU_MOVE) fctMove(); @@ -234,7 +235,8 @@ L1: if (anyone) { quelquun(); anyone = false; - goto L2; + mennor(); + return; } calch(j, h, m); if ((((h == 12) || (h == 13) || (h == 19)) && (s.mlieu != 10)) || @@ -255,7 +257,6 @@ L1: tperd(); } } -L2: mennor(); } -- cgit v1.2.3 From 735c7c3c641e6d403e9bbb8b657a687a26fa715c Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 24 Feb 2012 12:04:24 +0100 Subject: MORTEVIELLE: Fix protection skip and avoid instant exit --- engines/mortevielle/dialogs.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index b6253b0024..8d53da7526 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -413,6 +413,7 @@ bool Ques::show() { if (indx == 10) { warning("Skipping protection check: testprot()"); protectionCheck = true; + tesok = true; } } while (!(indx == 10)); -- cgit v1.2.3 From 3a8a15e201f36a7f33e73cc88c68378013ddb0de Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 24 Feb 2012 22:55:00 +0100 Subject: MORTEVIELLE: Some more cleanup, add alternate file names used by german and alternate french versions --- engines/mortevielle/dialogs.cpp | 8 +++----- engines/mortevielle/dialogs.h | 2 ++ engines/mortevielle/menu.cpp | 4 +++- engines/mortevielle/mor.cpp | 26 +++++++++++++------------- engines/mortevielle/mor2.cpp | 20 +++++++------------- engines/mortevielle/mor2.h | 8 ++++++++ engines/mortevielle/mortevielle.cpp | 2 +- engines/mortevielle/ovd1.cpp | 6 ++++-- engines/mortevielle/sound.cpp | 4 ++-- engines/mortevielle/sound.h | 2 +- 10 files changed, 44 insertions(+), 38 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 8d53da7526..7cf12cb1bd 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -38,8 +38,6 @@ namespace Mortevielle { -static const int nligne = 7; - /** * Alert function - Show * @remarks Originally called 'do_alert' @@ -57,7 +55,6 @@ int Alert::show(const Common::String &msg, int n) { // Make a copy of the current screen surface for later restore g_vm->_backgroundSurface.copyFrom(g_vm->_screenSurface); - /*debug('** do_alert **');*/ memset(&limit[0][0], 0, sizeof(int) * 3 * 3); int do_alert_result; hideMouse(); @@ -66,7 +63,7 @@ int Alert::show(const Common::String &msg, int n) { g_vm->setMouseClick(false); decodeAlertDetails(msg, caseNumb, lignNumb, nbcol, chaine, cas); - sauvecr(50, (nligne + 1) << 4); + sauvecr(50, (NUM_LINES + 1) << 4); i = 0; if (chaine == "") { @@ -176,7 +173,7 @@ int Alert::show(const Common::String &msg, int n) { tmp4 += " "; g_vm->_screenSurface.writeg(tmp4, 1); } - charecr(50, (nligne + 1) << 4); + charecr(50, (NUM_LINES + 1) << 4); showMouse(); /* Restore the background area */ @@ -413,6 +410,7 @@ bool Ques::show() { if (indx == 10) { warning("Skipping protection check: testprot()"); protectionCheck = true; + // tesok is set to true in testprot() tesok = true; } } while (!(indx == 10)); diff --git a/engines/mortevielle/dialogs.h b/engines/mortevielle/dialogs.h index a3f98f38d9..661c544b13 100644 --- a/engines/mortevielle/dialogs.h +++ b/engines/mortevielle/dialogs.h @@ -32,6 +32,8 @@ namespace Mortevielle { +static const int NUM_LINES = 7; + class Alert { private: static void decodeAlertDetails(Common::String inputStr, int &choiceNumb, int &lineNumb, int &col, Common::String &choiceStr, Common::String &choiceListStr); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 1f8f3460e1..7cf6a316dd 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -471,7 +471,9 @@ void Menu::initMenu() { Common::File f; if (!f.open("menufr.mor")) - error("Missing file - menufr.mor"); + if (!f.open("menual.mor")) + if (!f.open("menu.mor")) + error("Missing file - menufr.mor or menual.mor or menu.mor"); f.read(lettres, 7 * 24); f.close(); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 6fe396f3cc..b740ad24dc 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -147,7 +147,7 @@ void text1(int x, int y, int nb, int m) { } void initouv() { - for (int cx = 1; cx <= 7; cx++) + for (int cx = 1; cx <= 7; ++cx) touv[cx] = chr(0); } @@ -444,7 +444,7 @@ void affper(int per) { int cx; /* debug('affper'); */ - for (cx = 1; cx <= 8; cx ++) + for (cx = 1; cx <= 8; ++cx) g_vm->_menu.disableMenuItem(g_vm->_menu._disc[cx]); clsf10(); if ((per & 128) == 128) { @@ -595,7 +595,7 @@ void cpl6(int &p) { * Shows the you are alone message in the status area on the right hand side of the screen */ void person() { - for (int cf = 1; cf <= 8; cf ++) + for (int cf = 1; cf <= 8; ++cf) g_vm->_menu.disableMenuItem(g_vm->_menu._disc[cf]); Common::String sYou = g_vm->getString(S_YOU); @@ -1058,30 +1058,30 @@ void inzon() { s.conf = hazard(4, 10); s.mlieu = 21; - for (cx = 2; cx <= 6; cx ++) + for (cx = 2; cx <= 6; ++cx) s.sjer[cx] = chr(0); s.sjer[1] = chr(113); s.heure = chr(20); - for (cx = 1; cx <= 10; cx ++) + for (cx = 1; cx <= 10; ++cx) s.pourc[cx] = ' '; - for (cx = 1; cx <= 6; cx ++) + for (cx = 1; cx <= 6; ++cx) s.teauto[cx] = '*'; - for (cx = 7; cx <= 9; cx ++) + for (cx = 7; cx <= 9; ++cx) s.teauto[cx] = ' '; - for (cx = 10; cx <= 28; cx ++) + for (cx = 10; cx <= 28; ++cx) s.teauto[cx] = '*'; - for (cx = 29; cx <= 42; cx ++) + for (cx = 29; cx <= 42; ++cx) s.teauto[cx] = ' '; s.teauto[33] = '*'; - for (cx = 1; cx <= 8; cx ++) + for (cx = 1; cx <= 8; ++cx) nbrep[cx] = 0; init_nbrepm(); @@ -1311,7 +1311,7 @@ void cavegre() { parole(2, haz, 1); // Useless? - for (haz = 0; haz <= 3000; haz++); + for (haz = 0; haz <= 3000; ++haz); clsf3(); person(); } @@ -1411,13 +1411,13 @@ void dessin(int ad) { dessine(ades, 60, 33); g_vm->_screenSurface.drawBox(118, 32, 291, 121, 15); // Medium box } else if (caff > 69) { - dessine(ades, 112, 48); /* ttes */ //Translation: Heads + dessine(ades, 112, 48); // Heads g_vm->_screenSurface.drawBox(222, 47, 155, 91, 15); } else { dessine(ades, 0, 12); ecrf1(); if ((caff < 30) || (caff > 32)) { - for (int cx = 1; cx <= 6; cx ++) { + for (int cx = 1; cx <= 6; ++cx) { if (ord(touv[cx]) != 0) aniof(1, ord(touv[cx])); } diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 6ef32945c7..0a9637523d 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -39,12 +39,6 @@ namespace Mortevielle { -const int men[12] = { OPCODE_NONE, - OPCODE_HIDE_SELF, OPCODE_ATTACH, OPCODE_FORCE, OPCODE_SLEEP, - OPCODE_ENTER, OPCODE_CLOSE, OPCODE_KNOCK, OPCODE_EAT, - OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE -}; - void tinke() { Common::String d1 = g_vm->getString(S_SHOULD_HAVE_NOTICED); Common::String d2 = g_vm->getString(S_NUMBER_OF_HINTS); @@ -73,7 +67,7 @@ void tinke() { _minute = 0; drawClock(); cf = 0; - for (cx = 1; cx <= 10; cx ++) { + for (cx = 1; cx <= 10; ++cx) { if (s.pourc[cx] == '*') ++cf; } @@ -263,7 +257,7 @@ void tmlieu(int mli) { ++i; } nomp = "* "; - for (cx = 7; cx >= i; cx--) + for (cx = 7; cx >= i; --cx) g_vm->_menu.menut(g_vm->_menu._depl[cx], nomp); } @@ -289,7 +283,7 @@ void mfouen() { int cx; tmlieu(s.mlieu); - for (cx = 1; cx <= 11; cx ++) + for (cx = 1; cx <= 11; ++cx) g_vm->_menu.enableMenuItem(men[cx]); g_vm->_menu.menut(OPCODE_SOUND, g_vm->getString(S_PROBE)); @@ -328,7 +322,7 @@ void tsort() { s.conf += (s.conf / 10); } - for (int cx = 1; cx <= 7; cx ++) + for (int cx = 1; cx <= 7; ++cx) touv[cx] = chr(0); ment = 0; iouv = 0; @@ -370,7 +364,7 @@ void cherjer(int ob, bool &d) { int cx; d = false; - for (cx = 1; cx <= 6; cx++) + for (cx = 1; cx <= 6; ++cx) d = (d || (ord(s.sjer[cx]) == ob)); if (s.derobj == ob) @@ -434,10 +428,10 @@ void finfouil() { } void mfoudi() { - for (int cx = 1; cx <= 7; cx++) + for (int cx = 1; cx <= 7; ++cx) g_vm->_menu.disableMenuItem(g_vm->_menu._depl[cx]); - for (int cx = 1; cx <= 11; cx++) + for (int cx = 1; cx <= 11; ++cx) g_vm->_menu.disableMenuItem(men[cx]); g_vm->_menu.menut(OPCODE_SOUND, g_vm->getString(S_SUITE)); diff --git a/engines/mortevielle/mor2.h b/engines/mortevielle/mor2.h index 2c95f1e29d..dc23d04b63 100644 --- a/engines/mortevielle/mor2.h +++ b/engines/mortevielle/mor2.h @@ -28,8 +28,16 @@ #ifndef MORTEVIELLE_MOR2_H #define MORTEVIELLE_MOR2_H +#include "mortevielle/var_mor.h" + namespace Mortevielle { +static const int men[12] = { OPCODE_NONE, + OPCODE_HIDE_SELF, OPCODE_ATTACH, OPCODE_FORCE, OPCODE_SLEEP, + OPCODE_ENTER, OPCODE_CLOSE, OPCODE_KNOCK, OPCODE_EAT, + OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE +}; + extern void tinke(); extern void fenat(char ans); /* NIVEAU 8 */ diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 7c7524235b..3a744fa2e2 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -490,7 +490,7 @@ void MortevielleEngine::mainGame() { if (rech_cfiec) charge_cfiec(); - for (crep = 1; crep <= c_zzz; crep ++) + for (crep = 1; crep <= c_zzz; ++crep) zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); charge_bruit5(); diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index fb893570ff..84f57402ea 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -105,7 +105,8 @@ void chartex() { /* debug('o3 chartex'); */ if (!f.open("TXX.INP")) - error("Missing file - TXX.INP"); + if (!f.open("TXX.MOR")) + error("Missing file - TXX.INP or .MOR"); assert(f.size() <= (maxti * 2)); for (int i = 0; i < f.size() / 2; ++i) @@ -114,7 +115,8 @@ void chartex() { f.close(); if (!f.open("TXX.NTP")) - error("Missing file - TXX.NTP"); + if (!f.open("TXX.IND")) + error("Missing file - TXX.NTP or .IND"); assert(f.size() <= (maxtd * 3)); int i; diff --git a/engines/mortevielle/sound.cpp b/engines/mortevielle/sound.cpp index 0a6e7e8d8d..5f634c595c 100644 --- a/engines/mortevielle/sound.cpp +++ b/engines/mortevielle/sound.cpp @@ -87,7 +87,7 @@ int PCSpeaker::readBuffer(int16 *buffer, const int numSamples) { int i; - for (i = 0; (_remainingSamples || !_pendingNotes.empty()) && (i < numSamples); i++) { + for (i = 0; (_remainingSamples || !_pendingNotes.empty()) && (i < numSamples); ++i) { if (!_remainingSamples) // Used up the current note, so queue the next one dequeueNote(); @@ -148,7 +148,7 @@ SoundManager::~SoundManager() { /** * Decode music data */ -void SoundManager::demus(const byte *PSrc, byte *PDest, int NbreSeg) { +void SoundManager::decodeMusic(const byte *PSrc, byte *PDest, int NbreSeg) { int seed = 128; int v; diff --git a/engines/mortevielle/sound.h b/engines/mortevielle/sound.h index f089974c6b..5c70bc8d0f 100644 --- a/engines/mortevielle/sound.h +++ b/engines/mortevielle/sound.h @@ -101,7 +101,7 @@ public: void playNote(int frequency, int32 length); - void demus(const byte *PSrc, byte *PDest, int NbreSeg); + void decodeMusic(const byte *PSrc, byte *PDest, int NbreSeg); void litph(tablint &t, int typ, int tempo); void musyc(tablint &tb, int nbseg, int att); }; -- cgit v1.2.3 From b414beeff286c6138e6c50235b54de4925a97934 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 24 Feb 2012 23:55:17 +0100 Subject: MORTEVIELLE: clean up while statements using separate 'not' --- engines/mortevielle/actions.cpp | 22 +++++++++++----------- engines/mortevielle/dialogs.cpp | 10 +++++----- engines/mortevielle/graphics.cpp | 4 ++-- engines/mortevielle/level15.cpp | 2 +- engines/mortevielle/menu.cpp | 10 +++++----- engines/mortevielle/mor.cpp | 2 +- engines/mortevielle/mor2.cpp | 10 +++++----- engines/mortevielle/mortevielle.cpp | 2 +- engines/mortevielle/mouse.cpp | 20 ++++++++++---------- engines/mortevielle/outtext.cpp | 4 ++-- engines/mortevielle/ovd1.cpp | 2 +- engines/mortevielle/parole.cpp | 18 +++++++++--------- engines/mortevielle/parole2.cpp | 4 ++-- 13 files changed, 55 insertions(+), 55 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 1f83c5c6a7..6aea0e691d 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -89,7 +89,7 @@ void fctMove() { cx = 0; do { ++cx; - } while (!(g_vm->_menu._depl[cx] == msg[4])); + } while (g_vm->_menu._depl[cx] != msg[4]); if (s.mlieu == 19) { if (cx == 1) t1deva(); @@ -297,14 +297,14 @@ void tsprendre() { cx = 0; do { ++cx; - } while (!(g_vm->_menu._invt[cx] == msg[4])); + } while (g_vm->_menu._invt[cx] != msg[4]); cz = 0; cy = 0; do { ++cy; if (ord(s.sjer[cy]) != 0) ++cz; - } while (!(cz == cx)); + } while (cz != cx); cz = ord(s.sjer[cy]); s.sjer[cy] = chr(0); modinv(); @@ -491,7 +491,7 @@ void fctSearch() { cx = 0; do { ++cx; - } while (!((cx > 6) || (num == ord(touv[cx])))); + } while ((cx <= 6) && (num != ord(touv[cx]))); if (num != ord(touv[cx])) crep = 187; else { @@ -848,7 +848,7 @@ void fctClose() { cx = 0; do { ++cx; - } while (!((cx > 6) || (num == ord(touv[cx])))); + } while ((cx <= 6) && (num != ord(touv[cx]))); if (num == ord(touv[cx])) { aniof(2, num); crep = 998; @@ -941,7 +941,7 @@ void fctPut() { cx = 0; do { ++cx; - } while (!((cx > 6) || (num == ord(touv[cx])))); + } while ((cx <= 6) && (num != ord(touv[cx]))); if (num != ord(touv[cx])) crep = 187; else { @@ -1174,7 +1174,7 @@ void fctSleep() { tinke(); answer = Alert::show(g_vm->getString(S_YES_NO), 1); anyone = false; - } while (!(answer == 1)); + } while (answer != 1); crep = 998; num = 0; } @@ -1262,7 +1262,7 @@ void fctWait() { } repon(2, 102); answer = Alert::show(g_vm->getString(S_YES_NO), 1); - } while (!(answer == 2)); + } while (answer != 2); crep = 998; if (!anyone) tinke(); @@ -1303,7 +1303,7 @@ void fctDiscuss() { cx = 0; do { ++cx; - } while (!(g_vm->_menu._disc[cx] == msg[4])); + } while (g_vm->_menu._disc[cx] != msg[4]); caff = 69 + cx; afdes(0); repon(2, caff); @@ -1345,7 +1345,7 @@ void fctDiscuss() { co = 320; } else lig = lig + 8; - } while (!(icm == 42)); + } while (icm != 42); g_vm->_screenSurface.putxy(320, 176); writetp(lib[46], 0); tou = '\0'; @@ -1458,7 +1458,7 @@ void fctDiscuss() { hirs(); showMouse(); } - } while (!((choi == 46) || (suj == 138))); + } while ((choi != 46) && (suj != 138)); if (col) { s.conf = s.conf + (3 * (s.conf / 10)); hideMouse(); diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 7cf12cb1bd..5c53616e25 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -87,7 +87,7 @@ int Alert::show(const Common::String &msg, int n) { g_vm->_screenSurface._textPos.y += 6; g_vm->_screenSurface.writeg(st, 4); ++i; - } while (!(chaine[i] == ']')); + } while (chaine[i] != ']'); } if (caseNumb == 1) esp = nbcol - 40; @@ -263,7 +263,7 @@ void Alert::setButtonText(Common::String c, int coldep, int nbcase, Common::Stri ++i; ch = c[i]; str[l] += ch; - } while (!(c[i + 1] == ']')); + } while (c[i + 1] != ']'); i += 2; while (str[l].size() < 3) @@ -413,7 +413,7 @@ bool Ques::show() { // tesok is set to true in testprot() tesok = true; } - } while (!(indx == 10)); + } while (indx != 10); return (correctCount == 10) && protectionCheck; } @@ -458,7 +458,7 @@ void f3f8::checkForF8(int SpeechNum, bool drawAni50Fl) { hirs(); aff50(drawAni50Fl); } - } while (!(key == 66)); // keycode for F8 + } while (key != 66); // keycode for F8 } /** @@ -469,7 +469,7 @@ void f3f8::waitForF3F8(int &key) { do { key = testou(); CHECK_QUIT; - } while (!((key == 61) || (key == 66))); + } while ((key != 61) && (key != 66)); } void f3f8::aff50(bool drawAni50Fl) { diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index acc2bb0d34..7511b21ce2 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -1117,7 +1117,7 @@ void ScreenSurface::drawLine(int x, int y, int xx, int yy, int coul) { do { g_vm->_screenSurface.setPixel(Common::Point(abs((int)(a * i + b)), i), coul); i = i + step; - } while (!(i == yy)); + } while (i != yy); } else { a = (float)((y - yy)) / (x - xx); b = ((yro * xr) - (yr * xro)) / (x - xx); @@ -1127,7 +1127,7 @@ void ScreenSurface::drawLine(int x, int y, int xx, int yy, int coul) { do { g_vm->_screenSurface.setPixel(Common::Point(i, abs((int)(a * i + b))), coul); i = i + step; - } while (!(i == xx)); + } while (i != xx); } } diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 57eaa4dccc..f90e1aa714 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -41,7 +41,7 @@ void copcha() { do { tabdon[i] = tabdon[i + 390]; ++i; - } while (!(i == acha + 390)); + } while (i != acha + 390); } bool dans_rect(rectangle r) { diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 7cf6a316dd..bb901a15d8 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -177,11 +177,11 @@ void Menu::menu_aff() { } ++ind_tabl; ++k; - } while (!(k == 3)); + } while (k != 3); ++y; - } while (!(y == 9)); + } while (y != 9); col += 48 * res; - } while (!(num_letr == 6)); + } while (num_letr != 6); showMouse(); } @@ -347,7 +347,7 @@ void Menu::menuDown(int ii) { break; } g_vm->_screenSurface.putxy(xco, g_vm->_screenSurface._textPos.y + 8); - } while (!(cx == nb_lig)); + } while (cx != nb_lig); test0 = true; showMouse(); } @@ -504,7 +504,7 @@ void Menu::initMenu() { _dis[i] = delig + ' '; } ++i; - } while (!(i == 22)); + } while (i != 22); for (i = 1; i <= 8; ++i) { _disc[i] = 0x500 + i; if (i < 8) diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index b740ad24dc..f8873c66b0 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -874,7 +874,7 @@ void quelq15(int &per) { ((cx == 6) && bh1) || ((cx == 7) && bf1) || ((cx == 8) && bh5)); - } while (!(! test)); + } while (test); conv(cx, per); affper(per); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 0a9637523d..c235186c8a 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -60,7 +60,7 @@ void tinke() { if (nbrepm[cx] != 0) --nbrepm[cx]; nbrep[cx] = 0; - } while (!(cx == 8)); + } while (cx != 8); } if ((h > _hour) || ((h == 0) && (_hour == 23))) { _hour = h; @@ -414,7 +414,7 @@ void sparl(float adr, float rep) { parole(repint, haut[caff - 69], 0); f3f8::waitForF3F8(key); CHECK_QUIT; - } while (!(key == 66)); + } while (key != 66); hirs(); showMouse(); } @@ -455,7 +455,7 @@ void ajchai() { int cx = 0; do { ++cx; - } while (!((cx > 9) || (tabdon[cy + cx] == 0))); + } while ((cx <= 9) && (tabdon[cy + cx] != 0)); if (tabdon[cy + cx] == 0) { int lderobj = s.derobj; @@ -468,7 +468,7 @@ void ajjer(int ob) { int cx = 0; do { ++cx; - } while (!((cx > 5) || (ord(s.sjer[cx]) == 0))); + } while ((cx <= 5) && (ord(s.sjer[cx]) != 0)); if (ord(s.sjer[cx]) == 0) { s.sjer[(cx)] = chr(ob); @@ -620,7 +620,7 @@ void tsuiv() { cs = cs + 1; cl = cy + cs; tbcl = tabdon[cl]; - } while (!((tbcl != 0) || (cs > 9))); + } while ((tbcl == 0) && (cs <= 9)); if ((tbcl != 0) && (cs < 11)) { is = is + 1; diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 3a744fa2e2..6be14bdfa9 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -630,7 +630,7 @@ void MortevielleEngine::handleAction() { if ((! syn) || (col)) repon(2, crep); } - } while (!(! syn)); + } while (syn); if (ctrm != 0) tctrm(); } diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index a3676664d3..e7da3c3074 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -100,7 +100,7 @@ void hideMouse() { WRITE_LE_UINT16(&mem[0xba00 * 16 + j + 2], s_s[3][k]); j += 80; ++k; - } while (!(k >= 5)); + } while (k < 5); break; case MODE_AMSTRAD1512: for (i = 0; i <= 3; ++i) { @@ -117,7 +117,7 @@ void hideMouse() { } imp = !imp; ++k; - } while (!(k >= 8)); + } while (k < 8); } break; case MODE_EGA: @@ -136,9 +136,9 @@ void hideMouse() { mem[0xa000 * 16 + j + 1] = hi(s_s[i][k]); j += 80; ++k; - } while (!(k >= 8)); + } while (k < 8); ++i; - } while (!(i == 4)); + } while (i != 4); break; case MODE_HERCULES: j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); @@ -158,7 +158,7 @@ void hideMouse() { } j += 160; ++k; - } while (!(k == 3)); + } while (k != 3); break; default: break; @@ -191,7 +191,7 @@ void showMouse() { s_s[3][k] = READ_LE_UINT16(&mem[0xba00 * 16 + j + 2]); j += 80; ++k; - } while (!(k >= 5)); + } while (k < 5); break; case MODE_AMSTRAD1512: for (i = 0; i <= 3; ++i) { @@ -209,7 +209,7 @@ void showMouse() { } imp = !imp; ++k; - } while (!(k >= 8)); + } while (k < 8); } break; case MODE_EGA: @@ -223,9 +223,9 @@ void showMouse() { s_s[l][k] = mem[0xa000 * 16 + j] + (mem[(0xa000 * 16) + j + 1] << 8); j += 80; ++k; - } while (!(k >= 8)); + } while (k < 8); ++l; - } while (!(l == 4)); + } while (l != 4); break; case MODE_HERCULES: j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); @@ -245,7 +245,7 @@ void showMouse() { } j += 160; ++k; - } while (!(k == 3)); + } while (k != 3); break; default: break; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index ceac79aacd..1c73f7ab4d 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -222,9 +222,9 @@ void afftex(char *ch, int x, int y, int dx, int dy, int typ) { g_vm->_screenSurface.putxy(j, i); g_vm->_screenSurface.writeg(" ", 0); j += 6; - } while (!(j > xf)); + } while (j <= xf); i += 6; - } while (!(i > yf)); + } while (i <= yf); yc = y; } g_vm->_screenSurface.putxy(xc, yc); diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 84f57402ea..74639d32db 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -183,7 +183,7 @@ void music() { fic.read(&mem[0x47a0 * 16 + 0], 123); fic.close(); - g_vm->_soundManager.demus(&mem[0x3800 * 16], &mem[0x5000 * 16], 623); + g_vm->_soundManager.decodeMusic(&mem[0x3800 * 16], &mem[0x5000 * 16], 623); addfix = (float)((tempo_mus - addv[1])) / 256; cctable(tbi); diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index 02f298e8f6..e86b647f36 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -112,7 +112,7 @@ void regenbruit() { t_cph[j] = READ_LE_UINT16(&mem[adbruit3 + i]); i += 2; ++j; - } while (!(i >= offsetb3 + 8790)); + } while (i < offsetb3 + 8790); } void charge_son() { @@ -123,7 +123,7 @@ void charge_son() { f.read(&mem[0x7414 * 16 + 0], 273); - g_vm->_soundManager.demus(&mem[0x7414 * 16], &mem[adson * 16], 273); + g_vm->_soundManager.decodeMusic(&mem[0x7414 * 16], &mem[adson * 16], 273); f.close(); } @@ -209,7 +209,7 @@ void trait_car() { else entroct(d3); entroct(3); - } while (!(i < 0)); + } while (i >= 0); } if (d3 == null) { entroct(4); @@ -234,7 +234,7 @@ void trait_car() { else entroct(d3); entroct(3); - } while (!(i < 0)); + } while (i >= 0); } if (d3 == null) { entroct(0); @@ -259,7 +259,7 @@ void trait_car() { else entroct(d3); entroct(3); - } while (!(i < 0)); + } while (i >= 0); } entroct(0); entroct(c2.val); @@ -292,7 +292,7 @@ void trait_car() { entroct(0); entroct(d3); entroct(3); - } while (!(i <= 0)); + } while (i > 0); } veracf(c3.acc); if (c3.code == 6) { @@ -345,7 +345,7 @@ void trait_car() { entroct(d3); entroct(c2.val); entroct(3); - } while (!(i <= 0)); + } while (i > 0); } entroct(d3); entroct(c2.val); @@ -361,7 +361,7 @@ void trait_car() { entroct(d3); entroct(c2.val); entroct(4); - } while (!(i <= 0)); + } while (i > 0); } } if (c3.code == 9) { @@ -408,7 +408,7 @@ void trait_car() { entroct(2); entroct(c2.val); entroct(3); - } while (!(i <= 0)); + } while (i > 0); } entroct(2); entroct(c2.val); diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index c493e19a79..19b44191b0 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -64,7 +64,7 @@ void trait_ph() { WRITE_LE_UINT16(&mem[adword + ptr_word], t_cph[ptr_tcph]); ptr_word = ptr_word + 2; ptr_tcph = ptr_tcph + 1; - } while (!(ptr_tcph >= (int)((uint)lefin >> 1))); + } while (ptr_tcph < (int)((uint)lefin >> 1)); ptr_oct = 0; ptr_word = 0; @@ -74,7 +74,7 @@ void trait_ph() { rot_chariot(); charg_car(); trait_car(); - } while (!(ptr_word >= nb_word)); + } while (ptr_word < nb_word); rot_chariot(); trait_car(); -- cgit v1.2.3 From 8072e9e97a909e2d1f9d97c6af4d2ec6a08df14d Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 25 Feb 2012 21:13:24 +0100 Subject: MORTEVIELLE: Rename remaining Menu enums, rename _staticStrings into _engineStrings as a preliminar work on an English DOS version --- engines/mortevielle/actions.cpp | 64 ++++++++++++++++++------------------- engines/mortevielle/dialogs.cpp | 4 +-- engines/mortevielle/menu.cpp | 46 +++++++++++++------------- engines/mortevielle/menu.h | 4 +-- engines/mortevielle/mor.cpp | 20 ++++++------ engines/mortevielle/mor2.cpp | 18 +++++------ engines/mortevielle/mortevielle.cpp | 14 ++++---- engines/mortevielle/mortevielle.h | 4 +-- engines/mortevielle/prog.cpp | 2 +- 9 files changed, 89 insertions(+), 87 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 6aea0e691d..68d6e82c43 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -58,7 +58,7 @@ void fctMove() { } if ((s.mlieu == 15) && (msg[4] == g_vm->_menu._depl[6])) { if (!syn) - ecr3(g_vm->getString(S_GO_TO)); + ecr3(g_vm->getEngineString(S_GO_TO)); tfleche(); if (iesc) okdes = false; @@ -222,7 +222,7 @@ void fctTake() { return; } if (!syn) - ecr3(g_vm->getString(S_TAKE)); + ecr3(g_vm->getEngineString(S_TAKE)); tfleche(); if ((anyone) || (iesc)) return; @@ -321,7 +321,7 @@ void fctLift() { int cx; if (!syn) - ecr3(g_vm->getString(S_LIFT)); + ecr3(g_vm->getEngineString(S_LIFT)); tfleche(); if ((anyone) || (iesc)) return; @@ -360,7 +360,7 @@ void fctRead() { st4(caff); else { if (!syn) - ecr3(g_vm->getString(S_READ)); + ecr3(g_vm->getEngineString(S_READ)); tfleche(); if (!(anyone) && !(iesc)) { tcoord(4); @@ -389,7 +389,7 @@ void fctLook() { return; } if (!syn) - ecr3(g_vm->getString(S_LOOK)); + ecr3(g_vm->getEngineString(S_LOOK)); tfleche(); if ((anyone) || (iesc)) return; @@ -475,7 +475,7 @@ void fctSearch() { return; } if (!syn) - ecr3(g_vm->getString(S_SEARCH)); + ecr3(g_vm->getEngineString(S_SEARCH)); tfleche(); if (anyone || iesc) return; @@ -563,7 +563,7 @@ void fctOpen() { int cx, haz; if (!syn) - ecr3(g_vm->getString(S_OPEN)); + ecr3(g_vm->getEngineString(S_OPEN)); if (caff == 26) { if (ment != 0) { msg[4] = OPCODE_ENTER; @@ -631,7 +631,7 @@ void fctPlace() { return; } if (!syn) - ecr3(g_vm->getString(S_PUT)); + ecr3(g_vm->getEngineString(S_PUT)); tfleche(); if (iesc) crep = 998; @@ -671,7 +671,7 @@ void fctPlace() { parole(6, -9, 1); // Do you want to enter the hidden passage? - int answer = Alert::show(g_vm->getString(S_YES_NO), 1); + int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); if (answer== 1) { deline(582, st, tay); i = Alert::show(delig, 1); @@ -752,7 +752,7 @@ void fctTurn() { return; } if (!syn) - ecr3(g_vm->getString(S_TURN)); + ecr3(g_vm->getEngineString(S_TURN)); tfleche(); if ((anyone) || (iesc)) return; @@ -762,7 +762,7 @@ void fctTurn() { if ((s.mlieu == 13) && (s.ibag == 159) && (s.iboul == 141)) { repon(2, 167); parole(7, 9, 1); - int answer = Alert::show(g_vm->getString(S_YES_NO), 1); + int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); if (answer == 1) g_vm->_endGame = true; else @@ -772,7 +772,7 @@ void fctTurn() { repon(2, 175); clsf3(); parole(6, -9, 1); - int answer = Alert::show(g_vm->getString(S_YES_NO), 1); + int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); if (answer == 1) { s.mlieu = 16; affrep(); @@ -788,7 +788,7 @@ void fctTurn() { */ void fctHideSelf() { if (!syn) - ecr3(g_vm->getString(S_HIDE_SELF)); + ecr3(g_vm->getEngineString(S_HIDE_SELF)); tfleche(); if (!(anyone) && !(iesc)) { tcoord(10); @@ -810,7 +810,7 @@ void fctAttach() { crep = 186; else { if (!syn) - ecr3(g_vm->getString(S_TIE)); + ecr3(g_vm->getEngineString(S_TIE)); tfleche(); if (!(anyone) && !(iesc)) { tcoord(8); @@ -836,7 +836,7 @@ void fctClose() { int cx, chai; if (!syn) - ecr3(g_vm->getString(S_CLOSE)); + ecr3(g_vm->getEngineString(S_CLOSE)); if (caff < 26) { tfleche(); if (iesc) @@ -875,9 +875,9 @@ void fctKnock() { int l, p, haz; if (!syn) - ecr3(g_vm->getString(S_HIT)); + ecr3(g_vm->getEngineString(S_HIT)); if (s.mlieu == 15) { - l = Alert::show(g_vm->getString(S_BEFORE_USE_DEP_MENU), 1); + l = Alert::show(g_vm->getEngineString(S_BEFORE_USE_DEP_MENU), 1); return; } if (s.mlieu < 25) { @@ -917,7 +917,7 @@ void fctPut() { int cx, chai; if (!syn) - ecr3(g_vm->getString(S_POSE)); + ecr3(g_vm->getEngineString(S_POSE)); if (s.derobj == 0) crep = 186; else { @@ -1154,7 +1154,7 @@ void fctSleep() { clsf3(); clsf2(); ecrf2(); - ecr2(g_vm->getString(S_WANT_TO_WAKE_UP)); + ecr2(g_vm->getEngineString(S_WANT_TO_WAKE_UP)); calch(j, h, m); int answer; @@ -1172,7 +1172,7 @@ void fctSleep() { if (h > 23) h = 0; tinke(); - answer = Alert::show(g_vm->getString(S_YES_NO), 1); + answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); anyone = false; } while (answer != 1); crep = 998; @@ -1185,7 +1185,7 @@ void fctSleep() { */ void fctForce() { if (!syn) - ecr3(g_vm->getString(S_SMASH)); + ecr3(g_vm->getEngineString(S_SMASH)); if (caff < 25) tfleche(); if ((! anyone) && (! iesc)) @@ -1261,7 +1261,7 @@ void fctWait() { return; } repon(2, 102); - answer = Alert::show(g_vm->getString(S_YES_NO), 1); + answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); } while (answer != 2); crep = 998; if (!anyone) @@ -1274,7 +1274,7 @@ void fctWait() { */ void fctSound() { if (!syn) - ecr3(g_vm->getString(S_PROBE2)); + ecr3(g_vm->getEngineString(S_PROBE2)); if (caff < 27) { tfleche(); if (!(anyone) && (!iesc)) @@ -1289,7 +1289,7 @@ void fctSound() { */ void fctDiscuss() { bool te[47]; - int ix, cy, cx, max, haz, suj, co, lig, icm, + int cy, cx, max, haz, suj, co, lig, icm, i, tay, choi, x, y, c; char tou; Common::String lib[47]; @@ -1316,9 +1316,9 @@ void fctDiscuss() { premtet(); sparl(0, suj); hirs(); - for (ix = 1; ix <= 46; ++ix) + for (int ix = 1; ix <= 46; ++ix) te[ix] = false; - for (ix = 1; ix <= 45; ++ix) { + for (int ix = 1; ix <= 45; ++ix) { deline(ix + c_tparler, st, tay); lib[ix] = delig; for (i = tay; i <= 40; ++i) @@ -1376,7 +1376,7 @@ void fctDiscuss() { choi = 0; } } else { - ix = cy; + int ix = cy; if (cx == 41) ix = ix + 23; if (ix != choi) { @@ -1413,7 +1413,7 @@ void fctDiscuss() { } while (!((tou == '\15') || (((c != 0) || g_vm->getMouseClick()) && (choi != 0)))); g_vm->setMouseClick(false); if (choi != 46) { - ix = choi - 1; + int ix = choi - 1; if (col) { col = false; s.mlieu = 15; @@ -1446,7 +1446,7 @@ void fctDiscuss() { s.teauto[7] = '*'; } if ((suj == 106) || (suj == 108) || (suj == 94)) { - for (ix = 29; ix <= 31; ++ix) + for (int ix = 29; ix <= 31; ++ix) s.teauto[ix] = '*'; s.pourc[7] = '*'; } @@ -1491,7 +1491,7 @@ void fctSmell() { crep = 119; if (caff < 26) { if (!syn) - ecr3(g_vm->getString(S_SMELL)); + ecr3(g_vm->getEngineString(S_SMELL)); tfleche(); if (!(anyone) && !(iesc)) if (caff == 16) @@ -1509,7 +1509,7 @@ void fctScratch() { crep = 155; if (caff < 27) { if (!syn) - ecr3(g_vm->getString(S_SCRATCH)); + ecr3(g_vm->getEngineString(S_SCRATCH)); tfleche(); } num = 0; @@ -1570,7 +1570,7 @@ void MortevielleEngine::loseGame() { _hour = 10; _day = 0; repon(2, 180); - answer = Alert::show(g_vm->getString(S_YES_NO), 1); + answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); _quitGame = (answer != 1); } diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 5c53616e25..b91fd30ee3 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -424,8 +424,8 @@ bool Ques::show() { * Draw the F3/F8 dialog */ void f3f8::draw() { - Common::String f3 = g_vm->getString(S_F3); - Common::String f8 = g_vm->getString(S_F8); + Common::String f3 = g_vm->getEngineString(S_F3); + Common::String f8 = g_vm->getEngineString(S_F8); // Write the F3 and F8 text strings g_vm->_screenSurface.putxy(3, 44); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index bb901a15d8..f81a454ab9 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -56,7 +56,7 @@ void Menu::menut(int no, Common::String nom) { s += ' '; switch (h) { - case invent: + case MENU_INVENTORY: if (l != 7) { _inv[l] = s; _inv[l].insertChar(' ', 0); @@ -65,10 +65,10 @@ void Menu::menut(int no, Common::String nom) { case MENU_MOVE: _dep[l] = s; break; - case action: + case MENU_ACTION: _act[l] = s; break; - case saction: + case MENU_SUB_ACTION: _self[l] = s; break; case MENU_DISCUSS: @@ -88,7 +88,7 @@ void Menu::disableMenuItem(int no) { byte l = lo(no); switch (h) { - case invent: + case MENU_INVENTORY: if (l > 6) { _inv[l].setChar('<', 0); _inv[l].setChar('>', 21); @@ -98,10 +98,10 @@ void Menu::disableMenuItem(int no) { case MENU_MOVE: _dep[l].setChar('*', 0); break; - case action: + case MENU_ACTION: _act[l].setChar('*', 0); break; - case saction: + case MENU_SUB_ACTION: _self[l].setChar('*', 0); break; case MENU_DISCUSS: @@ -121,17 +121,17 @@ void Menu::enableMenuItem(int no) { byte l = lo(no); switch (h) { - case invent : + case MENU_INVENTORY: _inv[l].setChar(' ', 0); _inv[l].setChar(' ', 21); break; case MENU_MOVE: _dep[l].setChar(' ', 0); break; - case action: + case MENU_ACTION: _act[l].setChar(' ', 0); break; - case saction: + case MENU_SUB_ACTION: _self[l].setChar(' ', 0); _self[l].setChar(' ', 0); break; @@ -222,18 +222,18 @@ void Menu::invers(int ix) { s = _dis[lo(msg4)]; break; case 6: - s = g_vm->getString(S_SAVE_LOAD + lo(msg4)); + s = g_vm->getEngineString(S_SAVE_LOAD + lo(msg4)); break; case 7: - s = g_vm->getString(S_SAVE_LOAD + 1); + s = g_vm->getEngineString(S_SAVE_LOAD + 1); s += ' '; s += (char)(48 + lo(msg4)); break; case 8: if (lo(msg4) == 1) { - s = g_vm->getString(S_RESTART); + s = g_vm->getEngineString(S_RESTART); } else { - s = g_vm->getString(S_SAVE_LOAD + 2); + s = g_vm->getEngineString(S_SAVE_LOAD + 2); s += ' '; s += (char)(47 + lo(msg4)); } @@ -324,10 +324,10 @@ void Menu::menuDown(int ii) { g_vm->_screenSurface.writeg(_dis[cx], 4); break; case 6: - g_vm->_screenSurface.writeg(g_vm->getString(S_SAVE_LOAD + cx), 4); + g_vm->_screenSurface.writeg(g_vm->getEngineString(S_SAVE_LOAD + cx), 4); break; case 7: { - Common::String s = g_vm->getString(S_SAVE_LOAD + 1); + Common::String s = g_vm->getEngineString(S_SAVE_LOAD + 1); s += ' '; s += (char)(48 + cx); g_vm->_screenSurface.writeg(s, 4); @@ -335,9 +335,9 @@ void Menu::menuDown(int ii) { break; case 8: if (cx == 1) - g_vm->_screenSurface.writeg(g_vm->getString(S_RESTART), 4); + g_vm->_screenSurface.writeg(g_vm->getEngineString(S_RESTART), 4); else { - Common::String s = g_vm->getString(S_SAVE_LOAD + 2); + Common::String s = g_vm->getEngineString(S_SAVE_LOAD + 2); s += ' '; s += (char)(47 + cx); g_vm->_screenSurface.writeg(s, 4); @@ -416,20 +416,20 @@ void Menu::mdn() { || ((x > 268 * res) && (x < 268 * res + 24))); if (tes) { if (x < 76 * res) - ix = invent; + ix = MENU_INVENTORY; else if (x < 124 * res) ix = MENU_MOVE; else if (x < 172 * res) - ix = action; + ix = MENU_ACTION; else if (x < 220 * res) - ix = saction; + ix = MENU_SUB_ACTION; else if (x < 268 * res) ix = MENU_DISCUSS; else - ix = fichier; + ix = MENU_FILE; if ((ix != msg3) || (! test0)) - if (!((ix == fichier) && ((msg3 == sauve) || (msg3 == charge)))) { + if (!((ix == MENU_FILE) && ((msg3 == MENU_SAVE) || (msg3 == MENU_LOAD)))) { menuUp(msg3); menuDown(ix); msg3 = ix; @@ -440,7 +440,7 @@ void Menu::mdn() { util(x, y); } } else { // There was a click - if ((msg3 == fichier) && (msg4 != OPCODE_NONE)) { + if ((msg3 == MENU_FILE) && (msg4 != OPCODE_NONE)) { // Another menu to be _displayed g_vm->setMouseClick(false); menuUp(msg3); diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index 1fb8ad45c6..84169241c3 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -60,8 +60,8 @@ public: }; enum { - invent = 1, MENU_MOVE = 2, action = 3, saction = 4, - MENU_DISCUSS = 5, fichier = 6, sauve = 7, charge = 8 + MENU_INVENTORY = 1, MENU_MOVE = 2, MENU_ACTION = 3, MENU_SUB_ACTION = 4, + MENU_DISCUSS = 5, MENU_FILE = 6, MENU_SAVE = 7, MENU_LOAD = 8 }; } // End of namespace Mortevielle diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index f8873c66b0..f36ae2dff5 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -244,11 +244,11 @@ void clsf10() { } g_vm->_screenSurface.fillRect(15, Common::Rect(cod, 93, co, 98)); if (s.conf < 33) - st = g_vm->getString(S_COOL); + st = g_vm->getEngineString(S_COOL); else if (s.conf < 66) - st = g_vm->getString(S_LOURDE); + st = g_vm->getEngineString(S_LOURDE); else if (s.conf > 65) - st = g_vm->getString(S_MALSAINE); + st = g_vm->getEngineString(S_MALSAINE); co = 580 - (g_vm->_screenSurface.getStringWidth(st) / 2); g_vm->_screenSurface.putxy(co, 92); @@ -598,9 +598,9 @@ void person() { for (int cf = 1; cf <= 8; ++cf) g_vm->_menu.disableMenuItem(g_vm->_menu._disc[cf]); - Common::String sYou = g_vm->getString(S_YOU); - Common::String sAre = g_vm->getString(S_ARE); - Common::String sAlone = g_vm->getString(S_ALONE); + Common::String sYou = g_vm->getEngineString(S_YOU); + Common::String sAre = g_vm->getEngineString(S_ARE); + Common::String sAlone = g_vm->getEngineString(S_ALONE); clsf10(); g_vm->_screenSurface.putxy(580 - (g_vm->_screenSurface.getStringWidth(sYou) / 2), 30); @@ -661,7 +661,7 @@ void drawClock() { g_vm->_screenSurface.putxy(550, 160); if ((_day >= 0) && (_day <= 8)) { - Common::String tmp = g_vm->getString(S_DAY); + Common::String tmp = g_vm->getEngineString(S_DAY); tmp.insertChar((char)(_day + 49), 0); g_vm->_screenSurface.writeg(tmp, 1); } @@ -1306,12 +1306,14 @@ void cavegre() { s.conf += (s.conf / 10); clsf3(); ecrf2(); - ecr3(g_vm->getString(S_SOMEONE_ENTERS)); + ecr3(g_vm->getEngineString(S_SOMEONE_ENTERS)); haz = (hazard(0, 4)) - 2; parole(2, haz, 1); // Useless? - for (haz = 0; haz <= 3000; ++haz); + for (haz = 0; haz <= 3000; ++haz) + ; + clsf3(); person(); } diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index c235186c8a..fb1ccafa31 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -40,12 +40,12 @@ namespace Mortevielle { void tinke() { - Common::String d1 = g_vm->getString(S_SHOULD_HAVE_NOTICED); - Common::String d2 = g_vm->getString(S_NUMBER_OF_HINTS); + Common::String d1 = g_vm->getEngineString(S_SHOULD_HAVE_NOTICED); + Common::String d2 = g_vm->getEngineString(S_NUMBER_OF_HINTS); const char d3 = '['; const char d4 = ']'; const char d5 = '1'; - Common::String d6 = g_vm->getString(S_OK); + Common::String d6 = g_vm->getEngineString(S_OK); int cx, haz, nh, cf, j, h, m; Common::String stpo; bool am; @@ -169,7 +169,7 @@ void tinke() { if (haz < 5) { clsf3(); ecrf2(); - ecr3(g_vm->getString(S_HEAR_NOISE)); + ecr3(g_vm->getEngineString(S_HEAR_NOISE)); haz = (hazard(0, 4)) - 2; parole(1, haz, 1); clsf3(); @@ -286,8 +286,8 @@ void mfouen() { for (cx = 1; cx <= 11; ++cx) g_vm->_menu.enableMenuItem(men[cx]); - g_vm->_menu.menut(OPCODE_SOUND, g_vm->getString(S_PROBE)); - g_vm->_menu.menut(OPCODE_LIFT, g_vm->getString(S_RAISE)); + g_vm->_menu.menut(OPCODE_SOUND, g_vm->getEngineString(S_PROBE)); + g_vm->_menu.menut(OPCODE_LIFT, g_vm->getEngineString(S_RAISE)); } /* NIVEAU 6 */ @@ -434,8 +434,8 @@ void mfoudi() { for (int cx = 1; cx <= 11; ++cx) g_vm->_menu.disableMenuItem(men[cx]); - g_vm->_menu.menut(OPCODE_SOUND, g_vm->getString(S_SUITE)); - g_vm->_menu.menut(OPCODE_LIFT, g_vm->getString(S_STOP)); + g_vm->_menu.menut(OPCODE_SOUND, g_vm->getEngineString(S_SUITE)); + g_vm->_menu.menut(OPCODE_LIFT, g_vm->getEngineString(S_STOP)); } void mennor() { @@ -812,7 +812,7 @@ void st13(int ob) { } void aldepl() { - Alert::show(g_vm->getString(S_USE_DEP_MENU), 1); + Alert::show(g_vm->getEngineString(S_USE_DEP_MENU), 1); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 6be14bdfa9..4f367412fc 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -212,7 +212,7 @@ Common::ErrorCode MortevielleEngine::loadMortDat() { // Close the file f.close(); - assert(_staticStrings.size() > 0); + assert(_engineStrings.size() > 0); return Common::kNoError; } @@ -240,7 +240,7 @@ void MortevielleEngine::readStaticStrings(Common::File &f, int dataSize) { while ((ch = (char)f.readByte()) != '\0') s += ch; - _staticStrings.push_back(s); + _engineStrings.push_back(s); dataSize -= s.size() + 1; } assert(dataSize == 0); @@ -565,19 +565,19 @@ void MortevielleEngine::handleAction() { changeGraphicalDevice((uint)(ord(inkey) - 1) >> 1); return; } - if (choisi && (msg[3] == sauve)) { + if (choisi && (msg[3] == MENU_SAVE)) { Common::String saveName = Common::String::format("Savegame #%d", msg[4] & 7); g_vm->_savegameManager.saveGame(msg[4] & 7, saveName); } - if (choisi && (msg[3] == charge)) + if (choisi && (msg[3] == MENU_LOAD)) g_vm->_savegameManager.loadGame((msg[4] & 7) - 1); if (inkey == '\103') { /* F9 */ temps = Alert::show(stpou, 1); return; } else if (inkey == '\77') { - if ((mnumo != OPCODE_NONE) && ((msg[3] == action) || (msg[3] == saction))) { + if ((mnumo != OPCODE_NONE) && ((msg[3] == MENU_ACTION) || (msg[3] == MENU_SUB_ACTION))) { msg[4] = mnumo; - ecr3(g_vm->getString(S_IDEM)); + ecr3(g_vm->getEngineString(S_IDEM)); } else return; } else if (inkey == '\104') { @@ -598,7 +598,7 @@ void MortevielleEngine::handleAction() { num = 0; } else { mnumo = msg[3]; - if ((msg[3] == action) || (msg[3] == saction)) + if ((msg[3] == MENU_ACTION) || (msg[3] == MENU_SUB_ACTION)) mnumo = msg[4]; if (! anyone) { if ((fouil) || (obpart)) { diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index b0f1c4cffe..07c5896086 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -80,7 +80,7 @@ private: bool _mouseClick; Common::Point _mousePos; bool _inMainGameLoop; // Flag when the main game loop is active - Common::StringArray _staticStrings; + Common::StringArray _engineStrings; Common::ErrorCode initialise(); Common::ErrorCode loadMortDat(); @@ -124,7 +124,7 @@ public: bool getMouseClick() const { return _mouseClick; } void setMouseClick(bool v) { _mouseClick = v; } void delay(int amount); - Common::String getString(int idx) const { return _staticStrings[idx]; } + Common::String getEngineString(int idx) const { return _engineStrings[idx]; } void endGame(); void loseGame(); diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 96083f1fc8..e2a6cf454c 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -174,7 +174,7 @@ void tsitu() { fctMove(); if (msg[3] == MENU_DISCUSS) fctDiscuss(); - if (msg[3] == invent) + if (msg[3] == MENU_INVENTORY) tsprendre(); //Translation: inventory/take if (msg[4] == OPCODE_ATTACH) fctAttach(); -- cgit v1.2.3 From ce56512c99b522e3942a84993360203d5f9e8fbc Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 26 Feb 2012 02:04:25 +0100 Subject: MORTEVIELLE: First "English" version. DAT file needs to be rebuilt --- devtools/create_mortdat/create_mortdat.cpp | 19 +++++---- devtools/create_mortdat/create_mortdat.h | 5 +++ engines/mortevielle/mortevielle.cpp | 31 +++++++++++++-- engines/mortevielle/mortevielle.h | 14 +++++-- engines/mortevielle/outtext.cpp | 12 ++++++ engines/mortevielle/ovd1.cpp | 63 +++++++++++++++++------------- 6 files changed, 102 insertions(+), 42 deletions(-) diff --git a/devtools/create_mortdat/create_mortdat.cpp b/devtools/create_mortdat/create_mortdat.cpp index de4bb415d4..4c1dd14fdb 100644 --- a/devtools/create_mortdat/create_mortdat.cpp +++ b/devtools/create_mortdat/create_mortdat.cpp @@ -82,10 +82,15 @@ void writeFontBlock() { outputFile.write(fontBuffer, 121 * 6); } -void writeStaticStrings(const char **strings, int languageId) { +void writeStaticStrings(const char **strings, DataType dataType, int languageId) { // Write out a section header char sStaticStrings[4] = { 'S', 'S', 'T', 'R' }; - outputFile.write(sStaticStrings, 4); + char sGameStrings[4] = { 'G', 'S', 'T', 'R' }; + + if (dataType == kStaticStrings) + outputFile.write(sStaticStrings, 4); + else if (dataType == kGameStrings) + outputFile.write(sGameStrings, 4); // Figure out the block size int blockSize = 1; @@ -112,22 +117,22 @@ void writeStaticStrings(const char **strings, int languageId) { * Write out the strings previously hard-coded into the engine */ void writeEngineStrings() { - writeStaticStrings(engineDataEn, 1); - writeStaticStrings(engineDataFr, 0); + writeStaticStrings(engineDataEn, kStaticStrings, 1); + writeStaticStrings(engineDataFr, kStaticStrings, 0); } /** * Write out the strings used in the game */ void writeGameStrings() { - writeStaticStrings(gameDataEn, 1); - writeStaticStrings(gameDataFr, 0); + writeStaticStrings(gameDataEn, kGameStrings, 1); + writeStaticStrings(gameDataFr, kGameStrings, 0); } void process() { writeFontBlock(); - writeEngineStrings(); writeGameStrings(); + writeEngineStrings(); } /** diff --git a/devtools/create_mortdat/create_mortdat.h b/devtools/create_mortdat/create_mortdat.h index d9c7561d93..0aa6b529df 100644 --- a/devtools/create_mortdat/create_mortdat.h +++ b/devtools/create_mortdat/create_mortdat.h @@ -31,6 +31,11 @@ enum AccessMode { kFileWriteMode = 2 }; +enum DataType { + kStaticStrings = 0, + kGameStrings = 1 +}; + #define MORT_DAT "mort.dat" class File { diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 4f367412fc..9ca4839e76 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -38,6 +38,7 @@ #include "mortevielle/mor.h" #include "mortevielle/mor2.h" #include "mortevielle/mouse.h" +#include "mortevielle/outtext.h" #include "mortevielle/ovd1.h" #include "mortevielle/parole2.h" #include "mortevielle/prog.h" @@ -123,11 +124,28 @@ Common::ErrorCode MortevielleEngine::initialise() { _currGraphicalDevice = MODE_EGA; res = 2; + _txxFileFl = false; + // Load texts from TXX files + chartex(); + // Load the mort.dat resource Common::ErrorCode result = loadMortDat(); if (result != Common::kNoError) return result; + // Load some error messages (was previously in chartex()) + int length = 0; + char str[1410]; + + deline(578, str, length); + al_mess = delig; + deline(579, str, length); + err_mess = delig; + deline(580, str, length); + ind_mess = delig; + deline(581, str, length); + al_mess2 = delig; + // Set default EGA palette _paletteManager.setDefaultPalette(); @@ -138,7 +156,6 @@ Common::ErrorCode MortevielleEngine::initialise() { _newGraphicalDevice = _currGraphicalDevice; zuul = false; tesok = false; - chartex(); charpal(); charge_cfiph(); charge_cfiec(); @@ -202,7 +219,9 @@ Common::ErrorCode MortevielleEngine::loadMortDat() { // Font resource _screenSurface.readFontData(f, dataSize); } else if (!strncmp(dataType, "SSTR", 4)) { - readStaticStrings(f, dataSize); + readStaticStrings(f, dataSize, kStaticStrings); + } else if ((!strncmp(dataType, "GSTR", 4)) && (!_txxFileFl)) { + readStaticStrings(f, dataSize, kGameStrings); } else { // Unknown section f.skip(dataSize); @@ -219,7 +238,7 @@ Common::ErrorCode MortevielleEngine::loadMortDat() { /** * Read in a static strings block, and if the language matches, load up the static strings */ -void MortevielleEngine::readStaticStrings(Common::File &f, int dataSize) { +void MortevielleEngine::readStaticStrings(Common::File &f, int dataSize, DataType dataType) { // Figure out what language Id is needed byte desiredLanguageId = (getLanguage() == Common::EN_ANY) ? LANG_ENGLISH : LANG_FRENCH; @@ -240,7 +259,11 @@ void MortevielleEngine::readStaticStrings(Common::File &f, int dataSize) { while ((ch = (char)f.readByte()) != '\0') s += ch; - _engineStrings.push_back(s); + if (dataType == kStaticStrings) + _engineStrings.push_back(s); + else if (dataType == kGameStrings) + _gameStrings.push_back(s); + dataSize -= s.size() + 1; } assert(dataSize == 0); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 07c5896086..c44daff1bd 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -48,7 +48,8 @@ enum { // Game languages enum { LANG_FRENCH = 0, - LANG_ENGLISH = 1 + LANG_ENGLISH = 1, + LANG_GERMAN = 2 }; // Static string list @@ -65,6 +66,11 @@ enum { S_SMELL = 40, S_SCRATCH = 41, S_PROBE2 = 42, S_BEFORE_USE_DEP_MENU = 43, S_DAY = 44 }; +enum DataType { + kStaticStrings = 0, + kGameStrings = 1 +}; + #define SCREEN_WIDTH 640 #define SCREEN_HEIGHT 400 #define SCREEN_ORIG_HEIGHT 200 @@ -81,10 +87,10 @@ private: Common::Point _mousePos; bool _inMainGameLoop; // Flag when the main game loop is active Common::StringArray _engineStrings; - + Common::StringArray _gameStrings; Common::ErrorCode initialise(); Common::ErrorCode loadMortDat(); - void readStaticStrings(Common::File &f, int dataSize); + void readStaticStrings(Common::File &f, int dataSize, DataType dataType); void loadFont(Common::File &f); bool handleEvents(); void addKeypress(Common::Event &evt); @@ -105,6 +111,7 @@ public: bool _quitGame; // Quit game flag. Originally called 'arret' bool _endGame; // End game flag. Originally called 'solu' bool _loseGame; // Lose game flag. Originally called 'perdu' + bool _txxFileFl; // Flag used to determine if texts are from the original files or from a DAT file public: MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc); ~MortevielleEngine(); @@ -125,6 +132,7 @@ public: void setMouseClick(bool v) { _mouseClick = v; } void delay(int amount); Common::String getEngineString(int idx) const { return _engineStrings[idx]; } + Common::String getGameString(int idx) const { return _gameStrings[idx]; } void endGame(); void loseGame(); diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 1c73f7ab4d..99c2cac92c 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -132,6 +132,16 @@ void deline(int num, char *line , int &length) { return; } + if (!g_vm->_txxFileFl) { + delig = g_vm->getGameString(num); + if (line) { + strcpy(line, delig.c_str()); + length = delig.size(); + } + + return; + } + // DETEX delig = ""; int ts = t_rec[num].indis; @@ -155,6 +165,8 @@ void deline(int num, char *line , int &length) { if (length < 255) // Remove trailing '$' delig.deleteLastChar(); + + warning("deline: delig %s - line %s", delig.c_str(), line); } diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 74639d32db..17966b88c6 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -100,45 +100,52 @@ void charpal() { } void chartex() { - Common::File f; + Common::File inpFile; + Common::File ntpFile; char s[1410]; - /* debug('o3 chartex'); */ - if (!f.open("TXX.INP")) - if (!f.open("TXX.MOR")) - error("Missing file - TXX.INP or .MOR"); + g_vm->_txxFileFl = false; + if (g_vm->getLanguage() == Common::EN_ANY) { + warning("English version expected - Switching to DAT file"); + return; + } - assert(f.size() <= (maxti * 2)); - for (int i = 0; i < f.size() / 2; ++i) - t_mot[i] = f.readUint16LE(); + if (!inpFile.open("TXX.INP")) { + if (!inpFile.open("TXX.MOR")) { + warning("Missing file - TXX.INP or .MOR - Switching to DAT file"); + return; + } + } - f.close(); + if (!ntpFile.open("TXX.NTP")) { + if (!ntpFile.open("TXX.IND")) { + warning("Missing file - TXX.NTP or .IND - Switching to DAT file"); + return; + } + } - if (!f.open("TXX.NTP")) - if (!f.open("TXX.IND")) - error("Missing file - TXX.NTP or .IND"); - - assert(f.size() <= (maxtd * 3)); - int i; - for (i = 0; i < (f.size() / 3); ++i) { - t_rec[i].indis = f.readSint16LE(); - t_rec[i].point = f.readByte(); + if ((inpFile.size() > (maxti * 2)) || (ntpFile.size() > (maxtd * 3))) { + warning("TXX file - Unexpected format - Switching to DAT file"); + return; } - f.close(); + for (int i = 0; i < inpFile.size() / 2; ++i) + t_mot[i] = inpFile.readUint16LE(); + + inpFile.close(); + + for (int i = 0; i < (ntpFile.size() / 3); ++i) { + t_rec[i].indis = ntpFile.readSint16LE(); + t_rec[i].point = ntpFile.readByte(); + } + + ntpFile.close(); - deline(578, s, i); - al_mess = delig; - deline(579, s, i); - err_mess = delig; - deline(580, s, i); - ind_mess = delig; - deline(581, s, i); - al_mess2 = delig; + g_vm->_txxFileFl = true; } /** - * The original engine used this method to display a starting text screen letting the palyer + * The original engine used this method to display a starting text screen letting the player * select the graphics mode to use */ void dialpre() { -- cgit v1.2.3 From 510cae8af11ec66d849d6d6912eacef048de8012 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 26 Feb 2012 18:08:53 +0100 Subject: MORTEVIELLE: Start removing deline() and delig --- engines/mortevielle/actions.cpp | 25 ++++------ engines/mortevielle/dialogs.cpp | 44 +++++++----------- engines/mortevielle/graphics.cpp | 14 ++++-- engines/mortevielle/menu.cpp | 15 ++---- engines/mortevielle/mor.cpp | 91 ++++++++++++++----------------------- engines/mortevielle/mor2.cpp | 30 ++++-------- engines/mortevielle/mortevielle.cpp | 15 ++---- engines/mortevielle/outtext.cpp | 30 +++++++++--- engines/mortevielle/outtext.h | 3 +- engines/mortevielle/ovd1.cpp | 1 - engines/mortevielle/var_mor.cpp | 2 +- 11 files changed, 113 insertions(+), 157 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 68d6e82c43..a22dd3bbf2 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -47,7 +47,6 @@ namespace Mortevielle { * @remarks Originally called 'taller' */ void fctMove() { - //int mx, cx, cy; int cx; if ((s.mlieu == 26) && (msg[4] == g_vm->_menu._depl[6])) { @@ -180,7 +179,6 @@ L2: * @remarks Originally called 'tprendre' */ void fctTake() { - //int cx, cy, cz; int cx; if (caff > 99) { @@ -354,8 +352,6 @@ void fctLift() { * @remarks Originally called 'tlire' */ void fctRead() { -// int iaff; - if (caff > 99) st4(caff); else { @@ -622,9 +618,8 @@ void fctOpen() { */ void fctPlace() { bool enterPassageFl; - char st[1410]; Common::String str_; - int i, tay; + int i; if (s.derobj == 0) { crep = 186; @@ -673,8 +668,9 @@ void fctPlace() { // Do you want to enter the hidden passage? int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); if (answer== 1) { - deline(582, st, tay); - i = Alert::show(delig, 1); + Common::String alertTxt = delin2(582); + i = Alert::show(alertTxt, 1); + tesok = false; enterPassageFl = Ques::show(); hideMouse(); @@ -700,8 +696,8 @@ void fctPlace() { dessin(0); aniof(1, 2); aniof(1, 1); - deline(577, st, tay); - i = Alert::show(delig, 1); + alertTxt = delin2(577); + i = Alert::show(alertTxt, 1); aniof(2, 1); crep = 166; } @@ -1289,11 +1285,9 @@ void fctSound() { */ void fctDiscuss() { bool te[47]; - int cy, cx, max, haz, suj, co, lig, icm, - i, tay, choi, x, y, c; + int cy, cx, max, haz, suj, co, lig, icm, i, choi, x, y, c; char tou; Common::String lib[47]; - char st[1410]; bool f; finfouil(); @@ -1319,9 +1313,8 @@ void fctDiscuss() { for (int ix = 1; ix <= 46; ++ix) te[ix] = false; for (int ix = 1; ix <= 45; ++ix) { - deline(ix + c_tparler, st, tay); - lib[ix] = delig; - for (i = tay; i <= 40; ++i) + lib[ix] = delin2(ix + c_tparler); + for (i = lib[ix].size(); i <= 40; ++i) lib[ix] = lib[ix] + ' '; } lib[46] = lib[45]; diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index b91fd30ee3..f8c5ceb3f6 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -290,13 +290,12 @@ bool Ques::show() { const int correctAnswerArr[11] = {0, 4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }; int optionPosY; - int curLength, maxLength; + int maxLength; int rep; int firstOption, lastOption; char key; rectangle coor[max_rect]; Common::String choiceArray[15]; - char st[1410]; int currChoice, prevChoice; int indx = 0; @@ -308,14 +307,15 @@ bool Ques::show() { hirs(); showMouse(); ++indx; - deline(textIndexArr[indx], st, curLength); int dialogHeight; if (res == 1) dialogHeight = 29; else dialogHeight = 23; g_vm->_screenSurface.fillRect(15, Common::Rect(0, 14, 630, dialogHeight)); - afftex(st, 20, 15, 100, 2, 0); + Common::String tmpStr = delin2(textIndexArr[indx]); + afftex(tmpStr, 20, 15, 100, 2, 0); + if (indx != 10) { firstOption = textIndexArr[indx] + 1; lastOption = textIndexArr[indx + 1] - 1; @@ -327,11 +327,11 @@ bool Ques::show() { maxLength = 0; for (int j = firstOption, prevChoice = 1; j <= lastOption; ++j, ++prevChoice) { - deline(j, st, curLength); - if (curLength > maxLength) - maxLength = curLength; - afftex(st, 100, optionPosY, 100, 1, 0); - choiceArray[prevChoice] = delig; + tmpStr = delin2(j); + if ((int) tmpStr.size() > maxLength) + maxLength = tmpStr.size(); + afftex(tmpStr, 100, optionPosY, 100, 1, 0); + choiceArray[prevChoice] = tmpStr; optionPosY += 8; } for (int j = 1; j <= lastOption - firstOption + 1; ++j) { @@ -356,6 +356,7 @@ bool Ques::show() { rep = 0; prevChoice = 0; + warning("Expected answer: %d", correctAnswerArr[indx]); do { g_vm->setMouseClick(false); tesok = false; @@ -368,34 +369,21 @@ bool Ques::show() { ++currChoice; if (coor[currChoice].enabled) { if ((prevChoice != 0) && (prevChoice != currChoice)) { - st[0] = ' '; -// for (j = 0; j <= maxLength; ++j) -// st[j + 1] = choiceArray[prevChoice][j]; - strncpy(st + 1, choiceArray[prevChoice].c_str(), maxLength); - st[1 + maxLength] = '$'; - afftex(st, 100, 27 + (prevChoice * 8), 100, 1, 0); + Common::String tmpStr = choiceArray[prevChoice] + '$'; + afftex(tmpStr, 100, 27 + (prevChoice * 8), 100, 1, 0); } if (prevChoice != currChoice) { - st[0] = ' '; -// for (j = 0; j <= maxLength; ++j) -// st[j + 1] = choiceArray[currChoice][j]; - strncpy(st + 1, choiceArray[currChoice].c_str(), maxLength); - st[1 + maxLength] = '$'; - afftex(st, 100, 27 + (currChoice * 8), 100, 1, 1); + Common::String tmpStr = choiceArray[currChoice] + '$'; + afftex(tmpStr, 100, 27 + (currChoice * 8), 100, 1, 1); prevChoice = currChoice; } } else if (prevChoice != 0) { - st[0] = ' '; -// for (j = 0; j <= maxLength; ++j) -// st[j + 1] = choiceArray[prevChoice][j]; - strncpy(st + 1, choiceArray[prevChoice].c_str(), maxLength); - st[1 + maxLength] = '$'; - afftex(st, 100, 27 + (prevChoice * 8), 100, 1, 0); + Common::String tmpStr = choiceArray[prevChoice] + '$'; + afftex(tmpStr, 100, 27 + (prevChoice * 8), 100, 1, 0); prevChoice = 0; } } while (!((prevChoice != 0) && g_vm->getMouseClick())); - warning("Expected answer: %d, answer: %d", prevChoice, correctAnswerArr[indx]); if (prevChoice == correctAnswerArr[indx]) // Answer is correct ++correctCount; diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 7511b21ce2..bec7ef4073 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -1112,18 +1112,22 @@ void ScreenSurface::drawLine(int x, int y, int xx, int yy, int coul) { a = (float)((x - xx)) / (y - yy); b = (yr * xro - yro * xr) / (y - yy); i = y; - if (y > yy) step = -1; - else step = 1; + if (y > yy) + step = -1; + else + step = 1; do { g_vm->_screenSurface.setPixel(Common::Point(abs((int)(a * i + b)), i), coul); - i = i + step; + i += step; } while (i != yy); } else { a = (float)((y - yy)) / (x - xx); b = ((yro * xr) - (yr * xro)) / (x - xx); i = x; - if (x > xx) step = -1; - else step = 1; + if (x > xx) + step = -1; + else + step = 1; do { g_vm->_screenSurface.setPixel(Common::Point(i, abs((int)(a * i + b))), coul); i = i + step; diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index f81a454ab9..d176d7cd70 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -389,11 +389,9 @@ void Menu::eraseMenu() { * Handle updates to the menu */ void Menu::mdn() { - //int x, y, c, a, ix; int x, y, ix; bool tes; - /* debug('mdn'); */ if (!_menuActive) return; @@ -466,8 +464,7 @@ void Menu::mdn() { } void Menu::initMenu() { - int i, tai; - char st[1410]; + int i; Common::File f; if (!f.open("menufr.mor")) @@ -488,20 +485,18 @@ void Menu::initMenu() { _dep[i] = "* "; i = 1; do { - deline(i + c_action, st, tai); - _act[i] = delig; + _act[i] = delin2(i + c_action); + while (_act[i].size() < 10) _act[i] += ' '; if (i < 9) { if (i < 6) { - deline(i + c_saction, st, tai); - _self[i] = delig; + _self[i] = delin2(i + c_saction); while (_self[i].size() < 10) _self[i] += ' '; } - deline(i + c_dis, st, tai); - _dis[i] = delig + ' '; + _dis[i] = delin2(i + c_dis) + ' '; } ++i; } while (i != 22); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index f36ae2dff5..cac723a4f5 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -130,20 +130,16 @@ void text_color(int c) { void text1(int x, int y, int nb, int m) { - char st[1410]; - int tay; int co; - - /* debug('text'); */ if (res == 1) co = 10; else co = 6; - deline(m, st, tay); - if ((y == 182) && (tay * co > nb * 6)) + Common::String tmpStr = delin2(m); + if ((y == 182) && ((int) tmpStr.size() * co > nb * 6)) y = 176; - afftex(st, x, y, nb, 20, color_txt); + afftex(tmpStr, x, y, nb, 20, color_txt); } void initouv() { @@ -313,31 +309,26 @@ void okpas() { } void modobj(int m) { - char str_[1410]; - int tay; - Common::String strp = Common::String(' '); - if (m != 500) { - deline(m - 501 + c_st41, str_, tay); - strp = delig; - } + + if (m != 500) + strp = delin2(m - 501 + c_st41); + g_vm->_menu.menut(g_vm->_menu._invt[8], strp); g_vm->_menu.disableMenuItem(g_vm->_menu._invt[8]); } void modobj2(int m, bool t1, bool t2) { - char str_[1410]; - int tay; - Common::String strp = Common::String(' '); + if (t1 || t2) okpas(); else tesok = false;; - if (m != 500) { - deline(m - 501 + c_st41, str_, tay); - strp = delig; - } + + if (m != 500) + strp = delin2(m - 501 + c_st41); + g_vm->_menu.menut(g_vm->_menu._invt[8], strp); g_vm->_menu.disableMenuItem(g_vm->_menu._invt[8]); } @@ -346,17 +337,19 @@ void modobj2(int m, bool t1, bool t2) { void repon(int f, int m) { Common::String str_; Common::String str1; - char st[1410]; - int i, xco, dx, caspe, tay; + Common::String tmpStr; + int i, xco, dx, caspe; if ((m > 499) && (m < 563)) { - deline(m - 501 + c_st41, st, tay); - if (tay > ((58 + (res - 1) * 37) << 1)) + tmpStr = delin2(m - 501 + c_st41); + + if ((int) tmpStr.size() > ((58 + (res - 1) * 37) << 1)) f2_all = true; else f2_all = false; + clsf2(); - afftex(st, 8, 176, 85, 3, 5); + afftex(tmpStr, 8, 176, 85, 3, 5); } else { modif(m); if (f == 8) @@ -378,33 +371,37 @@ void repon(int f, int m) { } } if ((f >= 6) && (f <= 9)) { - deline(m, st, tay); if (f == 6) i = 4; else i = 5; - afftex(st, 80, 40, 60, 25, i); + + tmpStr = delin2(m); + afftex(tmpStr, 80, 40, 60, 25, i); + if (m == 180) s.pourc[6] = '*'; + if (m == 179) s.pourc[10] = '*'; } if (f == 7) { /* messint */ ecrf7(); - deline(m, st, tay); + tmpStr = delin2(m); if (res == 1) { - xco = 252 - tay * 5; + xco = 252 - tmpStr.size() * 5; caspe = 100; dx = 80; } else { - xco = 252 - tay * 3; + xco = 252 - tmpStr.size() * 3; caspe = 144; dx = 50; } - if (tay < 40) - afftex(st, xco, 86, dx, 3, 5); + + if (tmpStr.size() < 40) + afftex(tmpStr, xco, 86, dx, 3, 5); else - afftex(st, caspe, 86, dx, 3, 5); + afftex(tmpStr, caspe, 86, dx, 3, 5); } } } @@ -443,7 +440,6 @@ void t5(int cx) { void affper(int per) { int cx; - /* debug('affper'); */ for (cx = 1; cx <= 8; ++cx) g_vm->_menu.disableMenuItem(g_vm->_menu._disc[cx]); clsf10(); @@ -905,7 +901,6 @@ void quelq20(int h, int &per) { void frap() { int j, h, m, haz; - /* debug('o1 frap'); */ calch(j, h, m); if ((h >= 0) && (h < 8)) crep = 190; @@ -968,7 +963,6 @@ void tip(int ip, int &cx) { void ecfren(int &p, int &haz, int cf, int l) { - /* debug('o1 ecfren'); */ if (l == 0) person(); p = -500; @@ -996,7 +990,6 @@ void ecfren(int &p, int &haz, int cf, int l) { void becfren(int l) { int haz; - /* debug('o1 becfren'); */ if ((l == 1) || (l == 4)) { haz = hazard(1, 2); if (l == 1) @@ -1029,13 +1022,11 @@ void becfren(int l) { void init_nbrepm() { const byte ipm[9] = { 0, 4, 5, 6, 7, 5, 6, 5, 8 }; - /* debug('init_nbrepm'); */ for (int idx = 0; idx < 9; ++idx) nbrepm[idx] = ipm[idx]; } void phaz(int &haz, int &p, int cf) { - /* debug('phaz'); */ p += cf; haz = hazard(1, 100); } @@ -1043,7 +1034,6 @@ void phaz(int &haz, int &p, int cf) { void inzon() { int cx; - /* debug('o2 inzon'); */ copcha(); s.ipre = false; @@ -1088,9 +1078,7 @@ void inzon() { } void dprog() { - /* debug('o2 dprog'); */ li = 21; - /* jh:= t_settime(0);*/ jh = 0; if (! s.ipre) blo = true; @@ -1101,7 +1089,6 @@ void dprog() { void pl1(int cf) { int p, haz; - /* debug('o2 pl1'); */ if (((li == 1) && (! bh1) && (! bf1)) || ((li == 4) && (! bh4) && (! bf4))) { cpl1(p); phaz(haz, p, cf); @@ -1115,7 +1102,6 @@ void pl1(int cf) { void pl2(int cf) { int p, haz; - /* debug('o2 pl2'); */ if (! bh2) { cpl2(p); phaz(haz, p, cf); @@ -1129,7 +1115,6 @@ void pl2(int cf) { void pl5(int cf) { int p, haz; - /* debug('o2 pl5'); */ if (! bh5) { cpl5(p); phaz(haz, p, cf); @@ -1143,7 +1128,6 @@ void pl5(int cf) { void pl6(int cf) { int p, haz; - /* debug('o2 pl6'); */ if (((li == 6) && (! bh6)) || ((li == 8) && (! bh8))) { cpl6(p); phaz(haz, p, cf); @@ -1157,7 +1141,6 @@ void pl6(int cf) { void pl9(int cf) { int p, haz; - /* debug('o2 pl9'); */ if (! bh9) { cf = -10; phaz(haz, p, cf); @@ -1171,7 +1154,6 @@ void pl9(int cf) { void pl10(int cf) { int p, h, haz; - /* debug('o2 pl10'); */ cpl10(p, h); phaz(haz, p, cf); if (haz > p) @@ -1183,7 +1165,6 @@ void pl10(int cf) { void pl11(int cf) { int p, h, haz; - /* debug('o2 pl11'); */ cpl11(p, h); phaz(haz, p, cf); if (haz > p) @@ -1195,7 +1176,6 @@ void pl11(int cf) { void pl12(int cf) { int p, haz; - /* debug('o2 pl12'); */ cpl12(p); phaz(haz, p, cf); if (haz > p) @@ -1207,7 +1187,6 @@ void pl12(int cf) { void pl13(int cf) { int p, haz; - /* debug('o2 pl13'); */ cpl13(p); phaz(haz, p, cf); if (haz > p) @@ -1219,7 +1198,6 @@ void pl13(int cf) { void pl15(int cf) { int p, haz; - /* debug('o2 pl15'); */ cpl15(p); phaz(haz, p, cf); if (haz > p) @@ -1231,7 +1209,6 @@ void pl15(int cf) { void pl20(int cf) { int p, h, haz; - /* debug('o2 pl20'); */ cpl20(p, h); phaz(haz, p, cf); if (haz > p) @@ -1243,7 +1220,6 @@ void pl20(int cf) { void t11(int l11, int &a) { int p, haz, h = 0; - /* debug('o2 t11'); */ ecfren(p, haz, s.conf, l11); li = l11; if ((l11 > 0) && (l11 < 10)) { @@ -1300,7 +1276,6 @@ void t11(int l11, int &a) { void cavegre() { int haz; - /* debug('cavegre'); */ s.conf = s.conf + 2; if (s.conf > 69) s.conf += (s.conf / 10); @@ -1362,8 +1337,8 @@ void musique(int so) { bool i; int haz; - /* debug('musique'); */ - if (so == 0) { /*musik(0)*/ + if (so == 0) { + /* musik(0) */ ; } else if ((prebru == 0) && (! s.ipre)) { parole(10, 1, 1); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index fb1ccafa31..f51275784e 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -238,26 +238,21 @@ void tkey1(bool d) { } void tmlieu(int mli) { - int cx, i, tail; Common::String nomp; - char st[1410]; - if (mli == 26) mli = 15; - i = 1; + int i = 1; while ((i < 8) && (v_lieu[i][mli] != 0)) { - cx = v_lieu[i][mli]; - deline(cx + c_tmlieu, st, tail); - nomp = delig; + nomp = delin2(v_lieu[i][mli] + c_tmlieu); while (nomp.size() < 20) nomp += ' '; g_vm->_menu.menut(g_vm->_menu._depl[i], nomp); ++i; } nomp = "* "; - for (cx = 7; cx >= i; --cx) + for (int cx = 7; cx >= i; --cx) g_vm->_menu.menut(g_vm->_menu._depl[cx], nomp); } @@ -377,8 +372,7 @@ void st1sama() { } void modinv() { - int tay, r; - char nom[1410]; + int r; Common::String nomp; int cy = 0; @@ -386,8 +380,7 @@ void modinv() { if (s.sjer[cx] != chr(0)) { ++cy; r = (ord(s.sjer[cx]) + 400); - deline(r - 501 + c_st41, nom, tay); - nomp = delig; + nomp = delin2(r - 501 + c_st41); g_vm->_menu.menut(g_vm->_menu._invt[cy], nomp); g_vm->_menu.enableMenuItem(g_vm->_menu._invt[cx]); } @@ -400,13 +393,12 @@ void modinv() { void sparl(float adr, float rep) { const int haut[9] = { 0, 0, 1, -3, 6, -2, 2, 7, -1 }; - int key, tay, repint; - char st[1410]; + int key, repint; repint = abs((int)rep); hideMouse(); - deline(repint + c_paroles, st, tay); - afftex(st, 230, 4, 65, 24, 5); + Common::String tmpStr = delin2(repint + c_paroles); + afftex(tmpStr, 230, 4, 65, 24, 5); f3f8::draw(); key = 0; @@ -449,8 +441,6 @@ void premtet() { /* NIVEAU 5 */ void ajchai() { - - int cy = acha + ((mchai - 1) * 10) - 1; int cx = 0; do { @@ -484,12 +474,12 @@ void t1sama() { //Entering manor calch(j, h, m); if ((h < 5) && (s.mlieu > 18)) { cherjer(137, d); - if (!d) { /* On n'a pas les cl‚s et il est tard */ //Translation: You don't have the keys, and it's late + if (!d) { //You don't have the keys, and it's late crep = 1511; tperd(); } else st1sama(); - } else if (!s.ipre) { /* c'est votre premiŠre fois ? */ //Translation: Is it your first time? + } else if (!s.ipre) { //Is it your first time? ipers = 255; affper(ipers); caff = 77; diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 9ca4839e76..262cc3446e 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -134,17 +134,10 @@ Common::ErrorCode MortevielleEngine::initialise() { return result; // Load some error messages (was previously in chartex()) - int length = 0; - char str[1410]; - - deline(578, str, length); - al_mess = delig; - deline(579, str, length); - err_mess = delig; - deline(580, str, length); - ind_mess = delig; - deline(581, str, length); - al_mess2 = delig; + al_mess = delin2(578); // Insert floppy #1 + err_mess = delin2(579); // Floppy error + ind_mess = delin2(580); // You should have noticed %d hints + al_mess2 = delin2(581); // Insert floppy #2 // Set default EGA palette _paletteManager.setDefaultPalette(); diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 99c2cac92c..c2da1166b5 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -134,8 +134,13 @@ void deline(int num, char *line , int &length) { if (!g_vm->_txxFileFl) { delig = g_vm->getGameString(num); +/* if (delig.size() < 255) + // Remove trailing '$' + delig.deleteLastChar(); +*/ if (line) { - strcpy(line, delig.c_str()); + line[0] = ' '; + strcpy(line + 1, delig.c_str()); length = delig.size(); } @@ -169,11 +174,21 @@ void deline(int num, char *line , int &length) { warning("deline: delig %s - line %s", delig.c_str(), line); } +Common::String delin2(int num) { + char tmpStr[1410]; + int length; + + deline(num, tmpStr, length); + + Common::String resStr = delig; + delig = ""; + return resStr; +} -void afftex(char *ch, int x, int y, int dx, int dy, int typ); +void afftex(const char *ch, int x, int y, int dx, int dy, int typ); -static int l_motsuiv(int p, char *ch, int &tab) { +static int l_motsuiv(int p, const char *ch, int &tab) { int c = p; while ((ch[p] != ' ') && (ch[p] != '$') && (ch[p] != '@')) @@ -182,12 +197,14 @@ static int l_motsuiv(int p, char *ch, int &tab) { return tab * (p - c); } -void afftex(char *ch, int x, int y, int dx, int dy, int typ) { +void afftex(Common::String ch, int x, int y, int dx, int dy, int typ) { bool the_end; int tab; Common::String s; int i, j; + // Safeguard: add $ just in case + ch += '$'; /* debug(' .. Afftex');*/ g_vm->_screenSurface.putxy(x, y); @@ -201,7 +218,8 @@ void afftex(char *ch, int x, int y, int dx, int dy, int typ) { int yc = y; int xf = x + dx; int yf = y + dy; - int p = 1; +// int p = 1; + int p = 0; the_end = (ch[p] == '$'); s = ""; while (!the_end) { @@ -218,7 +236,7 @@ void afftex(char *ch, int x, int y, int dx, int dy, int typ) { s += ' '; xc += tab; ++p; - if (l_motsuiv(p, ch, tab) + xc > xf) { + if (l_motsuiv(p, ch.c_str(), tab) + xc > xf) { g_vm->_screenSurface.writeg(s, typ); s = ""; xc = x; diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index 32d3c4c7ec..742b832612 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -35,7 +35,8 @@ namespace Mortevielle { extern Common::String delig; extern void deline(int num , char *line , int &length); -extern void afftex(char *ch, int x, int y, int dx, int dy, int typ); +extern Common::String delin2(int num); +extern void afftex(Common::String ch, int x, int y, int dx, int dy, int typ); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 17966b88c6..64bb6cb463 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -102,7 +102,6 @@ void charpal() { void chartex() { Common::File inpFile; Common::File ntpFile; - char s[1410]; g_vm->_txxFileFl = false; if (g_vm->getLanguage() == Common::EN_ANY) { diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 7aef569618..daac97704d 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -174,7 +174,7 @@ int x, int t_cph[6401]; byte tabdon[4001]; -Common::String stpou; /* donne le % d'indices */ //Translation: "Provides the % of hints" +Common::String stpou; // Provides the % of hints byte is; byte mode; Common::String al_mess, -- cgit v1.2.3 From d3bbf213e9396820b845ecd44c56ff5a695e8562 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 27 Feb 2012 21:31:58 +0100 Subject: MORTEVIELLE: Rename arrays used by menu --- engines/mortevielle/actions.cpp | 12 ++--- engines/mortevielle/menu.cpp | 104 ++++++++++++++++++++-------------------- engines/mortevielle/menu.h | 18 +++---- engines/mortevielle/mor.cpp | 28 +++++------ engines/mortevielle/mor2.cpp | 20 ++++---- engines/mortevielle/mor2.h | 2 +- 6 files changed, 93 insertions(+), 91 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index a22dd3bbf2..80aba8df0d 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -49,13 +49,13 @@ namespace Mortevielle { void fctMove() { int cx; - if ((s.mlieu == 26) && (msg[4] == g_vm->_menu._depl[6])) { + if ((s.mlieu == 26) && (msg[4] == g_vm->_menu._moveMenu[6])) { s.mlieu = 15; caff = s.mlieu; afdes(0); repon(2, s.mlieu); } - if ((s.mlieu == 15) && (msg[4] == g_vm->_menu._depl[6])) { + if ((s.mlieu == 15) && (msg[4] == g_vm->_menu._moveMenu[6])) { if (!syn) ecr3(g_vm->getEngineString(S_GO_TO)); tfleche(); @@ -88,7 +88,7 @@ void fctMove() { cx = 0; do { ++cx; - } while (g_vm->_menu._depl[cx] != msg[4]); + } while (g_vm->_menu._moveMenu[cx] != msg[4]); if (s.mlieu == 19) { if (cx == 1) t1deva(); @@ -295,7 +295,7 @@ void tsprendre() { cx = 0; do { ++cx; - } while (g_vm->_menu._invt[cx] != msg[4]); + } while (g_vm->_menu._inventoryMenu[cx] != msg[4]); cz = 0; cy = 0; do { @@ -1100,7 +1100,7 @@ void fctEnter() { ++s.conf; s.mlieu = 15; msg[3] = MENU_DISCUSS; - msg[4] = g_vm->_menu._disc[x]; + msg[4] = g_vm->_menu._discussMenu[x]; syn = true; if (ment == 9) { col = true; @@ -1297,7 +1297,7 @@ void fctDiscuss() { cx = 0; do { ++cx; - } while (g_vm->_menu._disc[cx] != msg[4]); + } while (g_vm->_menu._discussMenu[cx] != msg[4]); caff = 69 + cx; afdes(0); repon(2, caff); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index d176d7cd70..250fd12d6e 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -43,10 +43,10 @@ namespace Mortevielle { /** * Setup a menu's contents */ -void Menu::menut(int no, Common::String nom) { +void Menu::menut(int no, Common::String name) { byte h = hi(no); byte l = lo(no); - Common::String s = nom; + Common::String s = name; if (! tesok) g_vm->quitGame(); @@ -58,21 +58,21 @@ void Menu::menut(int no, Common::String nom) { switch (h) { case MENU_INVENTORY: if (l != 7) { - _inv[l] = s; - _inv[l].insertChar(' ', 0); + _inventoryStringArray[l] = s; + _inventoryStringArray[l].insertChar(' ', 0); } break; case MENU_MOVE: - _dep[l] = s; + _moveStringArray[l] = s; break; case MENU_ACTION: - _act[l] = s; + _actionStringArray[l] = s; break; case MENU_SUB_ACTION: - _self[l] = s; + _selfStringArray[l] = s; break; case MENU_DISCUSS: - _dis[l] = s; + _discussStringArray[l] = s; break; default: break; @@ -90,22 +90,22 @@ void Menu::disableMenuItem(int no) { switch (h) { case MENU_INVENTORY: if (l > 6) { - _inv[l].setChar('<', 0); - _inv[l].setChar('>', 21); + _inventoryStringArray[l].setChar('<', 0); + _inventoryStringArray[l].setChar('>', 21); } else - _inv[l].setChar('*', 0); + _inventoryStringArray[l].setChar('*', 0); break; case MENU_MOVE: - _dep[l].setChar('*', 0); + _moveStringArray[l].setChar('*', 0); break; case MENU_ACTION: - _act[l].setChar('*', 0); + _actionStringArray[l].setChar('*', 0); break; case MENU_SUB_ACTION: - _self[l].setChar('*', 0); + _selfStringArray[l].setChar('*', 0); break; case MENU_DISCUSS: - _dis[l].setChar('*', 0); + _discussStringArray[l].setChar('*', 0); break; default: break; @@ -115,6 +115,7 @@ void Menu::disableMenuItem(int no) { /** * Enable a menu item * @param no Hi byte represents menu number, lo byte reprsents item index + * @remarks Originally called menu_enable */ void Menu::enableMenuItem(int no) { byte h = hi(no); @@ -122,21 +123,22 @@ void Menu::enableMenuItem(int no) { switch (h) { case MENU_INVENTORY: - _inv[l].setChar(' ', 0); - _inv[l].setChar(' ', 21); + _inventoryStringArray[l].setChar(' ', 0); + _inventoryStringArray[l].setChar(' ', 21); break; case MENU_MOVE: - _dep[l].setChar(' ', 0); + _moveStringArray[l].setChar(' ', 0); break; case MENU_ACTION: - _act[l].setChar(' ', 0); + _actionStringArray[l].setChar(' ', 0); break; case MENU_SUB_ACTION: - _self[l].setChar(' ', 0); - _self[l].setChar(' ', 0); + _selfStringArray[l].setChar(' ', 0); + // The original sets two times the same value. Skipped + // _selfStringArray[l].setChar(' ', 0); break; case MENU_DISCUSS: - _dis[l].setChar(' ', 0); + _discussStringArray[l].setChar(' ', 0); break; default: break; @@ -207,19 +209,19 @@ void Menu::invers(int ix) { g_vm->_screenSurface.putxy(don[msg3][1] << 3, (lo(msg4) + 1) << 3); switch (msg3) { case 1: - s = _inv[lo(msg4)]; + s = _inventoryStringArray[lo(msg4)]; break; case 2: - s = _dep[lo(msg4)]; + s = _moveStringArray[lo(msg4)]; break; case 3: - s = _act[lo(msg4)]; + s = _actionStringArray[lo(msg4)]; break; case 4: - s = _self[lo(msg4)]; + s = _selfStringArray[lo(msg4)]; break; case 5: - s = _dis[lo(msg4)]; + s = _discussStringArray[lo(msg4)]; break; case 6: s = g_vm->getEngineString(S_SAVE_LOAD + lo(msg4)); @@ -304,24 +306,24 @@ void Menu::menuDown(int ii) { ++cx; switch (ii) { case 1: - if (_inv[cx][0] != '*') - g_vm->_screenSurface.writeg(_inv[cx], 4); + if (_inventoryStringArray[cx][0] != '*') + g_vm->_screenSurface.writeg(_inventoryStringArray[cx], 4); break; case 2: - if (_dep[cx][0] != '*') - g_vm->_screenSurface.writeg(_dep[cx], 4); + if (_moveStringArray[cx][0] != '*') + g_vm->_screenSurface.writeg(_moveStringArray[cx], 4); break; case 3: - if (_act[cx][0] != '*') - g_vm->_screenSurface.writeg(_act[cx], 4); + if (_actionStringArray[cx][0] != '*') + g_vm->_screenSurface.writeg(_actionStringArray[cx], 4); break; case 4: - if (_self[cx][0] != '*') - g_vm->_screenSurface.writeg(_self[cx], 4); + if (_selfStringArray[cx][0] != '*') + g_vm->_screenSurface.writeg(_selfStringArray[cx], 4); break; case 5: - if (_dis[cx][0] != '*') - g_vm->_screenSurface.writeg(_dis[cx], 4); + if (_discussStringArray[cx][0] != '*') + g_vm->_screenSurface.writeg(_discussStringArray[cx], 4); break; case 6: g_vm->_screenSurface.writeg(g_vm->getEngineString(S_SAVE_LOAD + cx), 4); @@ -479,34 +481,34 @@ void Menu::initMenu() { dem2(); for (i = 1; i <= 8; ++i) - _inv[i] = "* "; - _inv[7] = "< -*-*-*-*-*-*-*-*-*- "; + _inventoryStringArray[i] = "* "; + _inventoryStringArray[7] = "< -*-*-*-*-*-*-*-*-*- "; for (i = 1; i <= 7; ++i) - _dep[i] = "* "; + _moveStringArray[i] = "* "; i = 1; do { - _act[i] = delin2(i + c_action); + _actionStringArray[i] = delin2(i + c_action); - while (_act[i].size() < 10) - _act[i] += ' '; + while (_actionStringArray[i].size() < 10) + _actionStringArray[i] += ' '; if (i < 9) { if (i < 6) { - _self[i] = delin2(i + c_saction); - while (_self[i].size() < 10) - _self[i] += ' '; + _selfStringArray[i] = delin2(i + c_saction); + while (_selfStringArray[i].size() < 10) + _selfStringArray[i] += ' '; } - _dis[i] = delin2(i + c_dis) + ' '; + _discussStringArray[i] = delin2(i + c_dis) + ' '; } ++i; } while (i != 22); for (i = 1; i <= 8; ++i) { - _disc[i] = 0x500 + i; + _discussMenu[i] = 0x500 + i; if (i < 8) - _depl[i] = 0x200 + i; - _invt[i] = 0x100 + i; + _moveMenu[i] = 0x200 + i; + _inventoryMenu[i] = 0x100 + i; if (i > 6) - g_vm->_menu.disableMenuItem(_invt[i]); + g_vm->_menu.disableMenuItem(_inventoryMenu[i]); } msg3 = OPCODE_NONE; msg4 = OPCODE_NONE; diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index 84169241c3..67fc8bbf64 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -39,16 +39,16 @@ private: void menuDown(int ii); public: bool _menuActive; - Common::String _inv[9]; - Common::String _dep[8]; - Common::String _act[22]; - Common::String _self[7]; - Common::String _dis[9]; - int _disc[9]; - int _invt[9]; - int _depl[8]; + Common::String _inventoryStringArray[9]; + Common::String _moveStringArray[8]; + Common::String _actionStringArray[22]; + Common::String _selfStringArray[7]; + Common::String _discussStringArray[9]; + int _discussMenu[9]; + int _inventoryMenu[9]; + int _moveMenu[8]; public: - void menut(int no, Common::String nom); + void menut(int no, Common::String name); void disableMenuItem(int no); void enableMenuItem(int no); void menu_aff(); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index cac723a4f5..25a0cf7b1c 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -314,8 +314,8 @@ void modobj(int m) { if (m != 500) strp = delin2(m - 501 + c_st41); - g_vm->_menu.menut(g_vm->_menu._invt[8], strp); - g_vm->_menu.disableMenuItem(g_vm->_menu._invt[8]); + g_vm->_menu.menut(g_vm->_menu._inventoryMenu[8], strp); + g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[8]); } void modobj2(int m, bool t1, bool t2) { @@ -329,8 +329,8 @@ void modobj2(int m, bool t1, bool t2) { if (m != 500) strp = delin2(m - 501 + c_st41); - g_vm->_menu.menut(g_vm->_menu._invt[8], strp); - g_vm->_menu.disableMenuItem(g_vm->_menu._invt[8]); + g_vm->_menu.menut(g_vm->_menu._inventoryMenu[8], strp); + g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[8]); } @@ -441,47 +441,47 @@ void affper(int per) { int cx; for (cx = 1; cx <= 8; ++cx) - g_vm->_menu.disableMenuItem(g_vm->_menu._disc[cx]); + g_vm->_menu.disableMenuItem(g_vm->_menu._discussMenu[cx]); clsf10(); if ((per & 128) == 128) { g_vm->_screenSurface.putxy(560, 24); g_vm->_screenSurface.writeg("LEO", 4); - g_vm->_menu.enableMenuItem(g_vm->_menu._disc[1]); + g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[1]); } if ((per & 64) == 64) { g_vm->_screenSurface.putxy(560, 32); g_vm->_screenSurface.writeg("PAT", 4); - g_vm->_menu.enableMenuItem(g_vm->_menu._disc[2]); + g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[2]); } if ((per & 32) == 32) { g_vm->_screenSurface.putxy(560, 40); g_vm->_screenSurface.writeg("GUY", 4); - g_vm->_menu.enableMenuItem(g_vm->_menu._disc[3]); + g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[3]); } if ((per & 16) == 16) { g_vm->_screenSurface.putxy(560, 48); g_vm->_screenSurface.writeg("EVA", 4); - g_vm->_menu.enableMenuItem(g_vm->_menu._disc[4]); + g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[4]); } if ((per & 8) == 8) { g_vm->_screenSurface.putxy(560, 56); g_vm->_screenSurface.writeg("BOB", 4); - g_vm->_menu.enableMenuItem(g_vm->_menu._disc[5]); + g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[5]); } if ((per & 4) == 4) { g_vm->_screenSurface.putxy(560, 64); g_vm->_screenSurface.writeg("LUC", 4); - g_vm->_menu.enableMenuItem(g_vm->_menu._disc[6]); + g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[6]); } if ((per & 2) == 2) { g_vm->_screenSurface.putxy(560, 72); g_vm->_screenSurface.writeg("IDA", 4); - g_vm->_menu.enableMenuItem(g_vm->_menu._disc[7]); + g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[7]); } if ((per & 1) == 1) { g_vm->_screenSurface.putxy(560, 80); g_vm->_screenSurface.writeg("MAX", 4); - g_vm->_menu.enableMenuItem(g_vm->_menu._disc[8]); + g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[8]); } ipers = per; } @@ -592,7 +592,7 @@ void cpl6(int &p) { */ void person() { for (int cf = 1; cf <= 8; ++cf) - g_vm->_menu.disableMenuItem(g_vm->_menu._disc[cf]); + g_vm->_menu.disableMenuItem(g_vm->_menu._discussMenu[cf]); Common::String sYou = g_vm->getEngineString(S_YOU); Common::String sAre = g_vm->getEngineString(S_ARE); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index f51275784e..5495854c32 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -248,12 +248,12 @@ void tmlieu(int mli) { nomp = delin2(v_lieu[i][mli] + c_tmlieu); while (nomp.size() < 20) nomp += ' '; - g_vm->_menu.menut(g_vm->_menu._depl[i], nomp); + g_vm->_menu.menut(g_vm->_menu._moveMenu[i], nomp); ++i; } nomp = "* "; for (int cx = 7; cx >= i; --cx) - g_vm->_menu.menut(g_vm->_menu._depl[cx], nomp); + g_vm->_menu.menut(g_vm->_menu._moveMenu[cx], nomp); } @@ -279,7 +279,7 @@ void mfouen() { tmlieu(s.mlieu); for (cx = 1; cx <= 11; ++cx) - g_vm->_menu.enableMenuItem(men[cx]); + g_vm->_menu.enableMenuItem(_actionMenu[cx]); g_vm->_menu.menut(OPCODE_SOUND, g_vm->getEngineString(S_PROBE)); g_vm->_menu.menut(OPCODE_LIFT, g_vm->getEngineString(S_RAISE)); @@ -381,13 +381,13 @@ void modinv() { ++cy; r = (ord(s.sjer[cx]) + 400); nomp = delin2(r - 501 + c_st41); - g_vm->_menu.menut(g_vm->_menu._invt[cy], nomp); - g_vm->_menu.enableMenuItem(g_vm->_menu._invt[cx]); + g_vm->_menu.menut(g_vm->_menu._inventoryMenu[cy], nomp); + g_vm->_menu.enableMenuItem(g_vm->_menu._inventoryMenu[cx]); } if (cy < 6) for (int cx = cy + 1; cx <= 6; ++cx) { - g_vm->_menu.menut(g_vm->_menu._invt[cx], " "); - g_vm->_menu.disableMenuItem(g_vm->_menu._invt[cx]); + g_vm->_menu.menut(g_vm->_menu._inventoryMenu[cx], " "); + g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[cx]); } } @@ -421,10 +421,10 @@ void finfouil() { void mfoudi() { for (int cx = 1; cx <= 7; ++cx) - g_vm->_menu.disableMenuItem(g_vm->_menu._depl[cx]); + g_vm->_menu.disableMenuItem(g_vm->_menu._moveMenu[cx]); for (int cx = 1; cx <= 11; ++cx) - g_vm->_menu.disableMenuItem(men[cx]); + g_vm->_menu.disableMenuItem(_actionMenu[cx]); g_vm->_menu.menut(OPCODE_SOUND, g_vm->getEngineString(S_SUITE)); g_vm->_menu.menut(OPCODE_LIFT, g_vm->getEngineString(S_STOP)); @@ -576,7 +576,7 @@ L1: caff = 69 + cx; crep = caff; msg[3] = MENU_DISCUSS; - msg[4] = g_vm->_menu._disc[cx]; + msg[4] = g_vm->_menu._discussMenu[cx]; syn = true; col = true; } else { diff --git a/engines/mortevielle/mor2.h b/engines/mortevielle/mor2.h index dc23d04b63..2df20b7804 100644 --- a/engines/mortevielle/mor2.h +++ b/engines/mortevielle/mor2.h @@ -32,7 +32,7 @@ namespace Mortevielle { -static const int men[12] = { OPCODE_NONE, +static const int _actionMenu[12] = { OPCODE_NONE, OPCODE_HIDE_SELF, OPCODE_ATTACH, OPCODE_FORCE, OPCODE_SLEEP, OPCODE_ENTER, OPCODE_CLOSE, OPCODE_KNOCK, OPCODE_EAT, OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE -- cgit v1.2.3 From 13846779913e06d591d8fe6fb99caf0958c0f5b6 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 27 Feb 2012 22:05:34 +0100 Subject: MORTEVIELLE: clean up deline() --- engines/mortevielle/actions.cpp | 6 +-- engines/mortevielle/dialogs.cpp | 4 +- engines/mortevielle/menu.cpp | 6 +-- engines/mortevielle/mor.cpp | 12 +++--- engines/mortevielle/mor2.cpp | 6 +-- engines/mortevielle/mortevielle.cpp | 8 ++-- engines/mortevielle/outtext.cpp | 73 +++++++++++-------------------------- engines/mortevielle/outtext.h | 5 +-- 8 files changed, 43 insertions(+), 77 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 80aba8df0d..d9a1022548 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -668,7 +668,7 @@ void fctPlace() { // Do you want to enter the hidden passage? int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); if (answer== 1) { - Common::String alertTxt = delin2(582); + Common::String alertTxt = deline(582); i = Alert::show(alertTxt, 1); tesok = false; @@ -696,7 +696,7 @@ void fctPlace() { dessin(0); aniof(1, 2); aniof(1, 1); - alertTxt = delin2(577); + alertTxt = deline(577); i = Alert::show(alertTxt, 1); aniof(2, 1); crep = 166; @@ -1313,7 +1313,7 @@ void fctDiscuss() { for (int ix = 1; ix <= 46; ++ix) te[ix] = false; for (int ix = 1; ix <= 45; ++ix) { - lib[ix] = delin2(ix + c_tparler); + lib[ix] = deline(ix + c_tparler); for (i = lib[ix].size(); i <= 40; ++i) lib[ix] = lib[ix] + ' '; } diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index f8c5ceb3f6..9d7ea2fa4c 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -313,7 +313,7 @@ bool Ques::show() { else dialogHeight = 23; g_vm->_screenSurface.fillRect(15, Common::Rect(0, 14, 630, dialogHeight)); - Common::String tmpStr = delin2(textIndexArr[indx]); + Common::String tmpStr = deline(textIndexArr[indx]); afftex(tmpStr, 20, 15, 100, 2, 0); if (indx != 10) { @@ -327,7 +327,7 @@ bool Ques::show() { maxLength = 0; for (int j = firstOption, prevChoice = 1; j <= lastOption; ++j, ++prevChoice) { - tmpStr = delin2(j); + tmpStr = deline(j); if ((int) tmpStr.size() > maxLength) maxLength = tmpStr.size(); afftex(tmpStr, 100, optionPosY, 100, 1, 0); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 250fd12d6e..fe5581dc48 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -487,18 +487,18 @@ void Menu::initMenu() { _moveStringArray[i] = "* "; i = 1; do { - _actionStringArray[i] = delin2(i + c_action); + _actionStringArray[i] = deline(i + c_action); while (_actionStringArray[i].size() < 10) _actionStringArray[i] += ' '; if (i < 9) { if (i < 6) { - _selfStringArray[i] = delin2(i + c_saction); + _selfStringArray[i] = deline(i + c_saction); while (_selfStringArray[i].size() < 10) _selfStringArray[i] += ' '; } - _discussStringArray[i] = delin2(i + c_dis) + ' '; + _discussStringArray[i] = deline(i + c_dis) + ' '; } ++i; } while (i != 22); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 25a0cf7b1c..9c57ed5b8c 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -136,7 +136,7 @@ void text1(int x, int y, int nb, int m) { co = 10; else co = 6; - Common::String tmpStr = delin2(m); + Common::String tmpStr = deline(m); if ((y == 182) && ((int) tmpStr.size() * co > nb * 6)) y = 176; afftex(tmpStr, x, y, nb, 20, color_txt); @@ -312,7 +312,7 @@ void modobj(int m) { Common::String strp = Common::String(' '); if (m != 500) - strp = delin2(m - 501 + c_st41); + strp = deline(m - 501 + c_st41); g_vm->_menu.menut(g_vm->_menu._inventoryMenu[8], strp); g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[8]); @@ -327,7 +327,7 @@ void modobj2(int m, bool t1, bool t2) { tesok = false;; if (m != 500) - strp = delin2(m - 501 + c_st41); + strp = deline(m - 501 + c_st41); g_vm->_menu.menut(g_vm->_menu._inventoryMenu[8], strp); g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[8]); @@ -341,7 +341,7 @@ void repon(int f, int m) { int i, xco, dx, caspe; if ((m > 499) && (m < 563)) { - tmpStr = delin2(m - 501 + c_st41); + tmpStr = deline(m - 501 + c_st41); if ((int) tmpStr.size() > ((58 + (res - 1) * 37) << 1)) f2_all = true; @@ -376,7 +376,7 @@ void repon(int f, int m) { else i = 5; - tmpStr = delin2(m); + tmpStr = deline(m); afftex(tmpStr, 80, 40, 60, 25, i); if (m == 180) @@ -387,7 +387,7 @@ void repon(int f, int m) { } if (f == 7) { /* messint */ ecrf7(); - tmpStr = delin2(m); + tmpStr = deline(m); if (res == 1) { xco = 252 - tmpStr.size() * 5; caspe = 100; diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 5495854c32..01e913d51a 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -245,7 +245,7 @@ void tmlieu(int mli) { int i = 1; while ((i < 8) && (v_lieu[i][mli] != 0)) { - nomp = delin2(v_lieu[i][mli] + c_tmlieu); + nomp = deline(v_lieu[i][mli] + c_tmlieu); while (nomp.size() < 20) nomp += ' '; g_vm->_menu.menut(g_vm->_menu._moveMenu[i], nomp); @@ -380,7 +380,7 @@ void modinv() { if (s.sjer[cx] != chr(0)) { ++cy; r = (ord(s.sjer[cx]) + 400); - nomp = delin2(r - 501 + c_st41); + nomp = deline(r - 501 + c_st41); g_vm->_menu.menut(g_vm->_menu._inventoryMenu[cy], nomp); g_vm->_menu.enableMenuItem(g_vm->_menu._inventoryMenu[cx]); } @@ -397,7 +397,7 @@ void sparl(float adr, float rep) { repint = abs((int)rep); hideMouse(); - Common::String tmpStr = delin2(repint + c_paroles); + Common::String tmpStr = deline(repint + c_paroles); afftex(tmpStr, 230, 4, 65, 24, 5); f3f8::draw(); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 262cc3446e..f2bb1ef46c 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -134,10 +134,10 @@ Common::ErrorCode MortevielleEngine::initialise() { return result; // Load some error messages (was previously in chartex()) - al_mess = delin2(578); // Insert floppy #1 - err_mess = delin2(579); // Floppy error - ind_mess = delin2(580); // You should have noticed %d hints - al_mess2 = delin2(581); // Insert floppy #2 + al_mess = deline(578); // Insert floppy #1 + err_mess = deline(579); // Floppy error + ind_mess = deline(580); // You should have noticed %d hints + al_mess2 = deline(581); // Insert floppy #2 // Set default EGA palette _paletteManager.setDefaultPalette(); diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index c2da1166b5..2cdfbe4188 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -60,7 +60,7 @@ const byte tab31[32]= { 119, 0, 0, 0, 0, 0, 0, 0 }; -void deline(int num , char *l , int &tl); +Common::String deline(int num); typedef unsigned char uchar; static void cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { @@ -126,63 +126,32 @@ static void cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { /** * Decode and extract the line with the given Id */ -void deline(int num, char *line , int &length) { +Common::String deline(int num) { + Common::String wrkStr = ""; + if (num < 0) { warning("deline: num < 0! Skipping"); - return; - } - - if (!g_vm->_txxFileFl) { - delig = g_vm->getGameString(num); -/* if (delig.size() < 255) - // Remove trailing '$' - delig.deleteLastChar(); -*/ - if (line) { - line[0] = ' '; - strcpy(line + 1, delig.c_str()); - length = delig.size(); - } - - return; + } else if (!g_vm->_txxFileFl) { + wrkStr = g_vm->getGameString(num); + } else { + int i = t_rec[num].indis; + byte k = t_rec[num].point; + int length = 0; + bool endFl = false; + char let; + do { + cinq_huit(let, i, k, endFl); + if (length < 254) + wrkStr += let; + ++length; + } while (!endFl); } - // DETEX - delig = ""; - int ts = t_rec[num].indis; - byte ps = t_rec[num].point; - int i = ts; - length = 1; - int j = 1; - // Initialize properly first string character - line[0] = ' '; - byte k = ps; - bool endFl = false; - char let; - do { - cinq_huit(let, i, k, endFl); - line[j] = let; - if (j < 254) - delig += let; - ++j; - } while (!endFl); - length = j - 1; - if (length < 255) + if (wrkStr.lastChar() == '$') // Remove trailing '$' - delig.deleteLastChar(); - - warning("deline: delig %s - line %s", delig.c_str(), line); -} - -Common::String delin2(int num) { - char tmpStr[1410]; - int length; + wrkStr.deleteLastChar(); - deline(num, tmpStr, length); - - Common::String resStr = delig; - delig = ""; - return resStr; + return wrkStr; } void afftex(const char *ch, int x, int y, int dx, int dy, int typ); diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index 742b832612..d2e5f6bd3b 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -32,10 +32,7 @@ namespace Mortevielle { -extern Common::String delig; - -extern void deline(int num , char *line , int &length); -extern Common::String delin2(int num); +extern Common::String deline(int num); extern void afftex(Common::String ch, int x, int y, int dx, int dy, int typ); } // End of namespace Mortevielle -- cgit v1.2.3 From 05848e5d2d4eee3efd32e24e7e0c25579f862a51 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 27 Feb 2012 23:19:33 +0100 Subject: MORTEVIELLE: remove error messages uselessly loaded --- engines/mortevielle/mor.cpp | 3 ++- engines/mortevielle/mor2.cpp | 26 +++++++++++++------------- engines/mortevielle/mortevielle.cpp | 7 ++----- engines/mortevielle/prog.cpp | 3 ++- engines/mortevielle/var_mor.cpp | 6 +----- engines/mortevielle/var_mor.h | 6 +----- 6 files changed, 21 insertions(+), 30 deletions(-) diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 9c57ed5b8c..10f0194bf9 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -47,7 +47,8 @@ const int ioresult = 0; void testfi() { if (ioresult != 0) { - caff = Alert::show(err_mess, 1); + // Theoritical message + warning("IO Error"); g_vm->quitGame(); } } diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 01e913d51a..86360b018b 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -77,18 +77,18 @@ void tinke() { else stpo = chr(cf + 48); - stpou = Common::String(d3); - stpou += d5; - stpou += d4; - stpou += d3; - stpou += d1; - stpou += stpo; - stpou += '0'; - stpou += d2; - stpou += d4; - stpou += d3; - stpou += d6; - stpou += d4; + _hintPctMessage = Common::String(d3); + _hintPctMessage += d5; + _hintPctMessage += d4; + _hintPctMessage += d3; + _hintPctMessage += d1; + _hintPctMessage += stpo; + _hintPctMessage += '0'; + _hintPctMessage += d2; + _hintPctMessage += d4; + _hintPctMessage += d3; + _hintPctMessage += d6; + _hintPctMessage += d4; } if (m > _minute) { _minute = 30; @@ -648,7 +648,7 @@ void tfleche() { } while (!(qust || rect || anyone)); if (qust && (touch == '\103')) - Alert::show(stpou, 1); + Alert::show(_hintPctMessage, 1); } while (!((touch == '\73') || ((touch == '\104') && (x != 0) && (y != 0)) || (anyone) || (rect))); if (touch == '\73') diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index f2bb1ef46c..9c4df1cf9d 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -134,10 +134,7 @@ Common::ErrorCode MortevielleEngine::initialise() { return result; // Load some error messages (was previously in chartex()) - al_mess = deline(578); // Insert floppy #1 - err_mess = deline(579); // Floppy error - ind_mess = deline(580); // You should have noticed %d hints - al_mess2 = deline(581); // Insert floppy #2 + _hintPctMessage = deline(580); // You should have noticed %d hints // Set default EGA palette _paletteManager.setDefaultPalette(); @@ -588,7 +585,7 @@ void MortevielleEngine::handleAction() { if (choisi && (msg[3] == MENU_LOAD)) g_vm->_savegameManager.loadGame((msg[4] & 7) - 1); if (inkey == '\103') { /* F9 */ - temps = Alert::show(stpou, 1); + temps = Alert::show(_hintPctMessage, 1); return; } else if (inkey == '\77') { if ((mnumo != OPCODE_NONE) && ((msg[3] == MENU_ACTION) || (msg[3] == MENU_SUB_ACTION))) { diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index e2a6cf454c..a41b652b06 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -35,6 +35,7 @@ #include "mortevielle/taffich.h" #include "mortevielle/var_mor.h" #include "mortevielle/mouse.h" +#include "mortevielle/outtext.h" namespace Mortevielle { @@ -112,7 +113,7 @@ void MortevielleEngine::gameLoaded() { iouv = 0; dobj = 0; affrep(); - stpou = ind_mess; + _hintPctMessage = deline(580); while ((test[k] == false) && (k < 2)) { ++k; diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index daac97704d..d3a44c46e6 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -174,13 +174,9 @@ int x, int t_cph[6401]; byte tabdon[4001]; -Common::String stpou; // Provides the % of hints +Common::String _hintPctMessage; // Provides the % of hints byte is; byte mode; -Common::String al_mess, - err_mess, - ind_mess, - al_mess2; int nbrep[9]; int nbrepm[9]; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index af8ef9d60f..0956b23e2f 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -324,13 +324,9 @@ extern int x, extern int t_cph[6401]; extern byte tabdon[4001]; -extern Common::String stpou; /* donne le % d'indices */ +extern Common::String _hintPctMessage; // gives the pct of hints found extern byte is; extern byte mode; -extern Common::String al_mess, - err_mess, - ind_mess, - al_mess2; extern int nbrep[9]; extern int nbrepm[9]; -- cgit v1.2.3 From 4361f843fdcd545305067daa43e48360eef05539 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 28 Feb 2012 07:55:43 +0100 Subject: TOOLS: Mortevielle - Add missing heading space for several sentences used in menus, in the English version --- devtools/create_mortdat/gametext.h | 360 ++++++++++++++++++------------------- 1 file changed, 180 insertions(+), 180 deletions(-) diff --git a/devtools/create_mortdat/gametext.h b/devtools/create_mortdat/gametext.h index 6905fdf7c6..b9ef039c74 100644 --- a/devtools/create_mortdat/gametext.h +++ b/devtools/create_mortdat/gametext.h @@ -213,68 +213,68 @@ const char *gameDataEn[] = { " 5/1/51@@ Luc, my love@ Guy knows about us. After an argument I told him everything! I@think only of you. Max keeps pes-tering me, but it's finished with @him. He should stick to his pots and pans! When can you and I be alone together? For you I would@get a divorce.@I love you.@ Eva$", " Mortville, 10/2/51@@ Pat@ I recall you owe me 50000 frs that I lent you for your business@I need that money, can you repay me quickly?@ Guy$", " Mortville, 15/2/51@ Dear Sir@ I am writing to you on the sub-ject of our business deal. I have@decided to go all the way in the certainty that my partner, Pat@DEFRANCK, has been forging the accounts. @In spite of$", - "A pipe$", - "A pen$", - "A lighter$", - "A retort$", - "A shaving brush$", - "A tin of paint$", - "A flute$", - "An expensive ring$", - "A reel of thread$", - "An old book$", - "A wallet$", - "A dagger$", - "A pistol$", - "A bible$", - "A candle$", - "A jewellery box$", - "An iron$", - "A photo$", - "A pocket watch$", - "A rope$", - "Keys$", - "A pearl necklace$", - "A bottle of perfume$", - "Binoculars$", - "Glasses$", - "A leather purse$", - "A tennis ball$", - "Ammunition$", - "A cut-throat razor$", - "A hairbrush$", - "A clothes brush$", - "A pack of cards$", - "A shoe horn$", - "A screwdriver$", - "A hammer$", - "Keys$", - "Keys$", - "An ashtray$", - "A paintbrush$", - "A rope$", - "A wooden object$", - "Sleeping pills$", - "A gold ring$", - "A jewellery box$", - "An alarm clock$", - "A coat of armour$", - "A candlestick$", - "A pair of gloves$", - "A engraved goblet$", - "A parchment$", - "A dagger$", - "A dossier$", - "A parchment$", - "A parchment$", - "A dossier$", - "A dossier$", - "A letter$", - "A novel$", - "A wooden rod$", - "An envelope$", - "A letter$", - "An envelope$", + " A pipe$", + " A pen$", + " A lighter$", + " A retort$", + " A shaving brush$", + " A tin of paint$", + " A flute$", + " An expensive ring$", + " A reel of thread$", + " An old book$", + " A wallet$", + " A dagger$", + " A pistol$", + " A bible$", + " A candle$", + " A jewellery box$", + " An iron$", + " A photo$", + " A pocket watch$", + " A rope$", + " Keys$", + " A pearl necklace$", + " A bottle of perfume$", + " Binoculars$", + " Glasses$", + " A leather purse$", + " A tennis ball$", + " Ammunition$", + " A cut-throat razor$", + " A hairbrush$", + " A clothes brush$", + " A pack of cards$", + " A shoe horn$", + " A screwdriver$", + " A hammer$", + " Keys$", + " Keys$", + " An ashtray$", + " A paintbrush$", + " A rope$", + " A wooden object$", + " Sleeping pills$", + " A gold ring$", + " A jewellery box$", + " An alarm clock$", + " A coat of armour$", + " A candlestick$", + " A pair of gloves$", + " A engraved goblet$", + " A parchment$", + " A dagger$", + " A dossier$", + " A parchment$", + " A parchment$", + " A dossier$", + " A dossier$", + " A letter$", + " A novel$", + " A wooden rod$", + " An envelope$", + " A letter$", + " An envelope$", "Julia$", "Julia's death$", "Julia's relationships$", @@ -463,27 +463,27 @@ const char *gameDataEn[] = { "TBT - En vous voyant j'ai compris que vous decouvririez la v‚rit‚ ... Car je savais pourquoi vous veniez : J'avais retrouv‚ le brouillon de la lettre de Julia . Mais je suis trŠs joueur, alors ... Elle n'avait pas voulu que votre tche soit trop facile, pour me prot‚ger, sans doute, mais elle n'a pu mourir avec cette incertitude sur la conscience . Avez vous d‚couvert que le mur du silence est le nom que les ma‡ons ont donn‚ au mur qui porte ce blason, lors de la construction du manoir ? .. Et ces cadeaux que Julia a laiss‚ avant de mourir ‚taient autant de faux indices qui ne servaient qu'… faire ressortir l'importance des parchemins ... Effectivement, il y a plus d'un an, je travailais avec Murielle au d‚cryptage de ces manuscrits que je venais de trouver . Ma femme a fait la relation entre notre travail et la disparition de Murielle mais elle n'a jamais eu de preuves . Si ce n'est cette bague qu'elle a retrouv‚ un jour dans mes affaires . Une nuit, nous nous sommes aventur‚s dans le passage secret que nous avions d‚couvert . Murielle est morte par accident dans la piŠce de la vierge . J'ai r‚cup‚r‚ la bague rapidement, trouv‚ le tr‚sor et me suis enfuis . Je ne pensais pas qu'elle vivait encore, et je n'ai rien dit car j'avais besoin d'argent . J'ai fait passer cette somme sur le compte des courses de chevaux ...Partez maintenant, puisque vous n'tes pas de la police . Laissez moi seul !$", "TBT - F‚vrier 1951 ... Profession : detective priv‚ . Le froid figeait Paris et mes affaires lorsque ...$", "TBT - Une lettre, un appel, des souvenirs d'une enfance encore proche . Que de jeux dans les piŠces d‚labr‚es du manoir de Mortevielle . Julia, une vieille femme a pr‚sent .$", - "to the bureau$", - "to the kitchen$", - "to the cellar$", - "to the landing$", - "outside$", - "to the dining room$", - "inside the manor$", - "front of the manor$", - "to the chapel$", - "to the weel$", - "north$", - "behind the manor$", - "south$", - "east$", - "west$", - "towards the manor$", - "further$", - "in the water$", - "out of the weel$", - "in the weel$", - "choice on screen$", + " to the bureau$", + " to the kitchen$", + " to the cellar$", + " to the landing$", + " outside$", + " to the dining room$", + " inside the manor$", + " front of the manor$", + " to the chapel$", + " to the weel$", + " north$", + " behind the manor$", + " south$", + " east$", + " west$", + " towards the manor$", + " further$", + " in the water$", + " out of the weel$", + " in the weel$", + " choice on screen$", "In the MYSTERY series...$", "MORTVILLE MANOR$", "$", @@ -504,40 +504,40 @@ const char *gameDataEn[] = { "COPYRIGHT 1987: KYILKHOR and B&JL LANGLOIS$", "$", "YOUR MOVE$", - "attach$", - "wait$", - "force$", - "sleep$", - "listen$", - "enter$", - "close$", - "search$", - "knock$", - "scratch$", - "read$", - "eat$", - "place$", - "open$", - "take$", - "look$", - "smell$", - "sound$", - "leave$", - "lift$", - "turn$", - "hide yourself$", - "search$", - "read$", - "put$", - "look$", - "Leo$", - "Pat$", - "Guy$", - "Eva$", - "Bob$", - "Luc$", - "Ida$", - "Max$", + " attach$", + " wait$", + " force$", + " sleep$", + " listen$", + " enter$", + " close$", + " search$", + " knock$", + " scratch$", + " read$", + " eat$", + " place$", + " open$", + " take$", + " look$", + " smell$", + " sound$", + " leave$", + " lift$", + " turn$", + " hide yourself$", + " search$", + " read$", + " put$", + " look$", + " Leo$", + " Pat$", + " Guy$", + " Eva$", + " Bob$", + " Luc$", + " Ida$", + " Max$", "JULIA...$", "- Did she commit suicide?$", "- Was she murdered?$", @@ -592,7 +592,7 @@ const char *gameDataEn[] = { "- 11$", "What was the first name@of the unknown character?$", "- Mireille$", - "- Françoise$", + "- Fran‡oise$", "- Maguy$", "- Emilie$", "- Murielle$", @@ -802,68 +802,68 @@ const char *gameDataFr[] = { " Le 5/01/51@@ Luc, mon amour@ Guy connaŚt notre liaison . A la suite d'une dispute, je lui ai tout dit . Je ne pense qu'… toi ! Max me relance mais j'ai d‚finitivement rompu avec lui . Qu'il reste … ses gamelles . Quand pourrons-nous nous voir seuls ? Pour toi je divorcerai... Je t'aime .@ ton Eva$", " Mortevielle, le 10/2/51@@ Pat,@ Je te rappelle que tu me dois 50000 F que je t'ai pr‚t‚s pour ton affaire . J'en ai besoin, peux-tu me les rendre assez vite?@ Guy$", " Mortevielle, le 15/2/51@ MaŚtre,@ Je vous ‚cris au sujet de notre affaire. Je suis d‚cid‚ … aller jusqu'au bout, certain que mon associ‚, Pat DEFRANCK, a falsifi‚ un livre de comptes . Malgr‚$", - "Une pipe$", - "Un stylo … plume$", - "Un briquet … essence$", - "Une cornue$", - "Un blaireau$", - "Un pot de peinture$", - "Une flute$", - "Une bague de valeur$", - "Une bobine de fil$", - "Un vieux bouquin$", - "Un porte-monnaie$", - "Un poignard$", - "Un r‚volver$", - "Une bible$", - "Une bougie$", - "Un coffret … bijoux$", - "Un fer … repasser$", - "Une photo$", - "Une montre … gousset$", - "Une corde$", - "Des clefs$", - "Un collier de perles$", - "Un flacon de parfum$", - "Des jumelles$", - "Des lunettes$", - "Une bourse en cuir$", - "Une balle de tennis$", - "Des munitions$", - "Un rasoir … main$", - "Une brosse … cheveux$", - "Une brosse … linge$", - "Un jeu de cartes$", - "Un chausse pied$", - "Un tournevis$", - "Un marteau$", - "Des clefs$", - "Des clefs$", - "Un cendrier$", - "Un pinceau$", - "Une corde$", - "Un objet en bois$", - "Des somnifŠres$", - "Une bague en or$", - "Un coffret … bijoux$", - "Un r‚veil matin$", - "Une cotte de mailles$", - "Un chandellier$", - "Une paire de gants$", - "Une coupe cisel‚e$", - "Un parchemin$", - "Un poignard$", - "Un dossier$", - "Un parchemin$", - "Un parchemin$", - "Un dossier$", - "Un dossier$", - "Une lettre$", - "Un roman$", - "Une baguette en bois$", - "Une enveloppe$", - "Une lettre$", - "Une enveloppe$", + " Une pipe$", + " Un stylo … plume$", + " Un briquet … essence$", + " Une cornue$", + " Un blaireau$", + " Un pot de peinture$", + " Une flute$", + " Une bague de valeur$", + " Une bobine de fil$", + " Un vieux bouquin$", + " Un porte-monnaie$", + " Un poignard$", + " Un r‚volver$", + " Une bible$", + " Une bougie$", + " Un coffret … bijoux$", + " Un fer … repasser$", + " Une photo$", + " Une montre … gousset$", + " Une corde$", + " Des clefs$", + " Un collier de perles$", + " Un flacon de parfum$", + " Des jumelles$", + " Des lunettes$", + " Une bourse en cuir$", + " Une balle de tennis$", + " Des munitions$", + " Un rasoir … main$", + " Une brosse … cheveux$", + " Une brosse … linge$", + " Un jeu de cartes$", + " Un chausse pied$", + " Un tournevis$", + " Un marteau$", + " Des clefs$", + " Des clefs$", + " Un cendrier$", + " Un pinceau$", + " Une corde$", + " Un objet en bois$", + " Des somnifŠres$", + " Une bague en or$", + " Un coffret … bijoux$", + " Un r‚veil matin$", + " Une cotte de mailles$", + " Un chandellier$", + " Une paire de gants$", + " Une coupe cisel‚e$", + " Un parchemin$", + " Un poignard$", + " Un dossier$", + " Un parchemin$", + " Un parchemin$", + " Un dossier$", + " Un dossier$", + " Une lettre$", + " Un roman$", + " Une baguette en bois$", + " Une enveloppe$", + " Une lettre$", + " Une enveloppe$", "Julia$", "La mort de Julia$", "Les relations de Julia$", -- cgit v1.2.3 From f98a818c363055fbe94e7c3f8d184eba25bff67a Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 28 Feb 2012 07:59:51 +0100 Subject: MORTEVIELLE: Rename menu entry type erroneously named --- engines/mortevielle/menu.cpp | 8 ++++---- engines/mortevielle/menu.h | 2 +- engines/mortevielle/mortevielle.cpp | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index fe5581dc48..3edaaaaf21 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -68,7 +68,7 @@ void Menu::menut(int no, Common::String name) { case MENU_ACTION: _actionStringArray[l] = s; break; - case MENU_SUB_ACTION: + case MENU_SELF: _selfStringArray[l] = s; break; case MENU_DISCUSS: @@ -101,7 +101,7 @@ void Menu::disableMenuItem(int no) { case MENU_ACTION: _actionStringArray[l].setChar('*', 0); break; - case MENU_SUB_ACTION: + case MENU_SELF: _selfStringArray[l].setChar('*', 0); break; case MENU_DISCUSS: @@ -132,7 +132,7 @@ void Menu::enableMenuItem(int no) { case MENU_ACTION: _actionStringArray[l].setChar(' ', 0); break; - case MENU_SUB_ACTION: + case MENU_SELF: _selfStringArray[l].setChar(' ', 0); // The original sets two times the same value. Skipped // _selfStringArray[l].setChar(' ', 0); @@ -422,7 +422,7 @@ void Menu::mdn() { else if (x < 172 * res) ix = MENU_ACTION; else if (x < 220 * res) - ix = MENU_SUB_ACTION; + ix = MENU_SELF; else if (x < 268 * res) ix = MENU_DISCUSS; else diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index 67fc8bbf64..f6e3ea5a9c 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -60,7 +60,7 @@ public: }; enum { - MENU_INVENTORY = 1, MENU_MOVE = 2, MENU_ACTION = 3, MENU_SUB_ACTION = 4, + MENU_INVENTORY = 1, MENU_MOVE = 2, MENU_ACTION = 3, MENU_SELF = 4, MENU_DISCUSS = 5, MENU_FILE = 6, MENU_SAVE = 7, MENU_LOAD = 8 }; diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 9c4df1cf9d..c9ea556c80 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -588,7 +588,7 @@ void MortevielleEngine::handleAction() { temps = Alert::show(_hintPctMessage, 1); return; } else if (inkey == '\77') { - if ((mnumo != OPCODE_NONE) && ((msg[3] == MENU_ACTION) || (msg[3] == MENU_SUB_ACTION))) { + if ((mnumo != OPCODE_NONE) && ((msg[3] == MENU_ACTION) || (msg[3] == MENU_SELF))) { msg[4] = mnumo; ecr3(g_vm->getEngineString(S_IDEM)); } else @@ -611,7 +611,7 @@ void MortevielleEngine::handleAction() { num = 0; } else { mnumo = msg[3]; - if ((msg[3] == MENU_ACTION) || (msg[3] == MENU_SUB_ACTION)) + if ((msg[3] == MENU_ACTION) || (msg[3] == MENU_SELF)) mnumo = msg[4]; if (! anyone) { if ((fouil) || (obpart)) { -- cgit v1.2.3 From 2bdc20dc9b3b2c2e3b8b7b2dde751ae7c7a11fb6 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 28 Feb 2012 08:22:20 +0100 Subject: MORTEVIELLE: Use 0-based array instead of 1-based for menu constants, some renaming --- engines/mortevielle/actions.cpp | 2 +- engines/mortevielle/menu.cpp | 48 +++++++++++++++++++++-------------------- engines/mortevielle/menu.h | 2 +- engines/mortevielle/prog.cpp | 2 +- engines/mortevielle/var_mor.cpp | 19 ++++++++-------- engines/mortevielle/var_mor.h | 2 +- 6 files changed, 38 insertions(+), 37 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index d9a1022548..80a460e0c2 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -686,7 +686,7 @@ void fctPlace() { else person(); - g_vm->_menu.menu_aff(); + g_vm->_menu.displayMenu(); if (enterPassageFl) { s.mlieu = 17; tmlieu(17); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 3edaaaaf21..6bbfa62df5 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -145,7 +145,7 @@ void Menu::enableMenuItem(int no) { } } -void Menu::menu_aff() { +void Menu::displayMenu() { int ind_tabl, k, col; int pt, x, y, color, msk, num_letr; @@ -191,7 +191,7 @@ void Menu::menu_aff() { * Show the menu */ void Menu::drawMenu() { - menu_aff(); + displayMenu(); _menuActive = true; msg4 = OPCODE_NONE; msg3 = OPCODE_NONE; @@ -206,38 +206,40 @@ void Menu::invers(int ix) { if (msg4 == OPCODE_NONE) return; - g_vm->_screenSurface.putxy(don[msg3][1] << 3, (lo(msg4) + 1) << 3); + int menuIndex = lo(msg4); + + g_vm->_screenSurface.putxy(_menuConstants[msg3 - 1][0] << 3, (menuIndex + 1) << 3); switch (msg3) { case 1: - s = _inventoryStringArray[lo(msg4)]; + s = _inventoryStringArray[menuIndex]; break; case 2: - s = _moveStringArray[lo(msg4)]; + s = _moveStringArray[menuIndex]; break; case 3: - s = _actionStringArray[lo(msg4)]; + s = _actionStringArray[menuIndex]; break; case 4: - s = _selfStringArray[lo(msg4)]; + s = _selfStringArray[menuIndex]; break; case 5: - s = _discussStringArray[lo(msg4)]; + s = _discussStringArray[menuIndex]; break; case 6: - s = g_vm->getEngineString(S_SAVE_LOAD + lo(msg4)); + s = g_vm->getEngineString(S_SAVE_LOAD + menuIndex); break; case 7: s = g_vm->getEngineString(S_SAVE_LOAD + 1); s += ' '; - s += (char)(48 + lo(msg4)); + s += (char)(48 + menuIndex); break; case 8: - if (lo(msg4) == 1) { + if (menuIndex == 1) { s = g_vm->getEngineString(S_RESTART); } else { s = g_vm->getEngineString(S_SAVE_LOAD + 2); s += ' '; - s += (char)(47 + lo(msg4)); + s += (char)(47 + menuIndex); } break; default: @@ -251,9 +253,9 @@ void Menu::invers(int ix) { void Menu::util(int x, int y) { - int ymx = (don[msg3][4] << 3) + 16; - int dxcar = don[msg3][3]; - int xmn = (don[msg3][1] << 2) * res; + int ymx = (_menuConstants[msg3 - 1][3] << 3) + 16; + int dxcar = _menuConstants[msg3 - 1][2]; + int xmn = (_menuConstants[msg3 - 1][0] << 2) * res; int ix; if (res == 1) @@ -287,19 +289,19 @@ void Menu::menuDown(int ii) { g_vm->_backgroundSurface.copyFrom(g_vm->_screenSurface); // Draw the menu - xco = don[ii][1]; - nb_lig = don[ii][4]; + xco = _menuConstants[ii - 1][0]; + nb_lig = _menuConstants[ii - 1][3]; hideMouse(); - sauvecr(10, (don[ii][2] + 1) << 1); + sauvecr(10, (_menuConstants[ii - 1][1] + 1) << 1); xco = xco << 3; if (res == 1) cx = 10; else cx = 6; - xcc = xco + (don[ii][3] * cx) + 6; - g_vm->_screenSurface.fillRect(15, Common::Rect(xco, 12, xcc, 10 + (don[ii][2] << 1))); - g_vm->_screenSurface.fillRect(0, Common::Rect(xcc, 12, xcc + 4, 10 + (don[ii][2] << 1))); - g_vm->_screenSurface.fillRect(0, Common::Rect(xco, 8 + (don[ii][2] << 1), xcc + 4, 12 + (don[ii][2] << 1))); + xcc = xco + (_menuConstants[ii - 1][2] * cx) + 6; + g_vm->_screenSurface.fillRect(15, Common::Rect(xco, 12, xcc, 10 + (_menuConstants[ii - 1][1] << 1))); + g_vm->_screenSurface.fillRect(0, Common::Rect(xcc, 12, xcc + 4, 10 + (_menuConstants[ii - 1][1] << 1))); + g_vm->_screenSurface.fillRect(0, Common::Rect(xco, 8 + (_menuConstants[ii - 1][1] << 1), xcc + 4, 12 + (_menuConstants[ii - 1][1] << 1))); g_vm->_screenSurface.putxy(xco, 16); cx = 0; do { @@ -360,7 +362,7 @@ void Menu::menuDown(int ii) { void Menu::menuUp(int xx) { /* debug('menuUp'); */ if (test0) { - charecr(10, (don[xx][2] + 1) << 1); + charecr(10, (_menuConstants[xx - 1][1] + 1) << 1); /* Restore the background area */ assert(g_vm->_screenSurface.pitch == g_vm->_backgroundSurface.pitch); diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index f6e3ea5a9c..923c5aa3b6 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -51,7 +51,7 @@ public: void menut(int no, Common::String name); void disableMenuItem(int no); void enableMenuItem(int no); - void menu_aff(); + void displayMenu(); void drawMenu(); void menuUp(int xx); void eraseMenu(); diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index a41b652b06..cd7bb2a050 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -61,7 +61,7 @@ void changeGraphicalDevice(int newDevice) { _maff = 68; afdes(0); repon(2, crep); - g_vm->_menu.menu_aff(); + g_vm->_menu.displayMenu(); } /** diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index d3a44c46e6..ef9dbcf23a 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -59,16 +59,15 @@ const byte tnocon[364] = { }; -const byte don[9][5] = { - { 0, 0, 0, 0, 0}, - { 0, 7, 37, 22, 8}, - {0, 19, 33, 23, 7}, - {0, 31, 89, 10, 21}, - {0, 43, 25, 11, 5}, - {0, 55, 37, 5, 8}, - {0, 64, 13, 11, 2}, - {0, 62, 22, 13, 4}, - {0, 62, 25, 13, 5} +const byte _menuConstants[8][4] = { + { 7, 37, 22, 8}, + {19, 33, 23, 7}, + {31, 89, 10, 21}, + {43, 25, 11, 5}, + {55, 37, 5, 8}, + {64, 13, 11, 2}, + {62, 22, 13, 4}, + {62, 25, 13, 5} }; const byte addv[2] = {8, 8}; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 0956b23e2f..d6024ece24 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -149,7 +149,7 @@ extern const byte typcon[26]; extern const byte intcon[26]; extern const byte tnocon[364]; -extern const byte don[9][5]; +extern const byte _menuConstants[8][4]; extern const byte addv[2]; -- cgit v1.2.3 From f2d7e57505441dedede3e6394bdaa24998703018 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 29 Feb 2012 08:15:54 +0100 Subject: MORTEVIELLE: Rename remaining opcodes, remove a couple of GOTOs --- engines/mortevielle/actions.cpp | 31 ++++++--- engines/mortevielle/actions.h | 12 ++-- engines/mortevielle/mor2.cpp | 2 +- engines/mortevielle/mor2.h | 6 +- engines/mortevielle/prog.cpp | 143 ++++++++++++++++++++-------------------- engines/mortevielle/var_mor.h | 17 ++--- 6 files changed, 110 insertions(+), 101 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 80a460e0c2..63f432b81a 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -288,8 +288,11 @@ void fctTake() { crep = 120; } } - -void tsprendre() { +/** + * Engine function - Inventory / Take + * @remarks Originally called 'tsprendre' + */ +void fctInventoryTake() { int cx, cy, cz; cx = 0; @@ -366,7 +369,11 @@ void fctRead() { } } -void tslire() { +/** + * Engine function - Self / Read + * @remarks Originally called 'tslire' + */ +void fctSelfRead() { if (s.derobj == 0) crep = 186; else @@ -451,7 +458,11 @@ void fctLook() { treg(31); } -void tsregarder() { +/** + * Engine function - Self / Look + * @remarks Originally called 'tsregarder' + */ +void fctSelftLook() { if (s.derobj != 0) treg(s.derobj); else @@ -544,7 +555,11 @@ void fctSearch() { } } -void tsfouiller() { +/** + * Engine function - Self / Search + * @remarks Originally called 'tsfouiller' + */ +void fctSelfSearch() { if (s.derobj != 0) st7(s.derobj); else @@ -782,7 +797,7 @@ void fctTurn() { * Engine function - Hide Self * @remarks Originally called 'tcacher' */ -void fctHideSelf() { +void fctSelfHide() { if (!syn) ecr3(g_vm->getEngineString(S_HIDE_SELF)); tfleche(); @@ -906,10 +921,10 @@ void fctKnock() { } /** - * Engine function - Put + * Engine function - Self / Put * @remarks Originally called 'tposer' */ -void fctPut() { +void fctSelfPut() { int cx, chai; if (!syn) diff --git a/engines/mortevielle/actions.h b/engines/mortevielle/actions.h index e73dc080f5..74d4e5c046 100644 --- a/engines/mortevielle/actions.h +++ b/engines/mortevielle/actions.h @@ -33,22 +33,22 @@ namespace Mortevielle { /* NIVEAU 4 */ extern void fctMove(); extern void fctTake(); -extern void tsprendre(); +extern void fctInventoryTake(); extern void fctLift(); extern void fctRead(); -extern void tslire(); +extern void fctSelfRead(); extern void fctLook(); -extern void tsregarder(); +extern void fctSelftLook(); extern void fctSearch(); -extern void tsfouiller(); +extern void fctSelfSearch(); extern void fctOpen(); extern void fctPlace(); extern void fctTurn(); -extern void fctHideSelf(); +extern void fctSelfHide(); extern void fctAttach(); extern void fctClose(); extern void fctKnock(); -extern void fctPut(); +extern void fctSelfPut(); extern void fctListen(); extern void fctEat(); extern void fctEnter(); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 86360b018b..33016faba9 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -737,7 +737,7 @@ void treg(int ob) { mdes = caff; caff = ob; - if (((caff > 29) && (caff < 33)) || (caff == 144) || (caff == 147) || (caff == 149) || (msg[4] == sregarder)) { + if (((caff > 29) && (caff < 33)) || (caff == 144) || (caff == 147) || (caff == 149) || (msg[4] == OPCODE_SLOOK)) { afdes(0); if ((caff > 29) && (caff < 33)) repon(2, caff); diff --git a/engines/mortevielle/mor2.h b/engines/mortevielle/mor2.h index 2df20b7804..8dc0e1a974 100644 --- a/engines/mortevielle/mor2.h +++ b/engines/mortevielle/mor2.h @@ -33,9 +33,9 @@ namespace Mortevielle { static const int _actionMenu[12] = { OPCODE_NONE, - OPCODE_HIDE_SELF, OPCODE_ATTACH, OPCODE_FORCE, OPCODE_SLEEP, - OPCODE_ENTER, OPCODE_CLOSE, OPCODE_KNOCK, OPCODE_EAT, - OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE + OPCODE_SHIDE, OPCODE_ATTACH, OPCODE_FORCE, OPCODE_SLEEP, + OPCODE_ENTER, OPCODE_CLOSE, OPCODE_KNOCK, OPCODE_EAT, + OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE }; extern void tinke(); diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index cd7bb2a050..4953f86a00 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -163,81 +163,80 @@ void tsitu() { clsf2(); syn = false; iesc = false; - if (anyone) - goto L1; - if (brt) - if ((msg[3] == MENU_MOVE) || (msg[4] == OPCODE_LEAVE) || (msg[4] == OPCODE_SLEEP) || (msg[4] == OPCODE_EAT)) { - ctrm = 4; + if (!anyone) { + if (brt) + if ((msg[3] == MENU_MOVE) || (msg[4] == OPCODE_LEAVE) || (msg[4] == OPCODE_SLEEP) || (msg[4] == OPCODE_EAT)) { + ctrm = 4; + mennor(); + return; + } + if (msg[3] == MENU_MOVE) + fctMove(); + if (msg[3] == MENU_DISCUSS) + fctDiscuss(); + if (msg[3] == MENU_INVENTORY) + fctInventoryTake(); + if (msg[4] == OPCODE_ATTACH) + fctAttach(); + if (msg[4] == OPCODE_WAIT) + fctWait(); + if (msg[4] == OPCODE_FORCE) + fctForce(); + if (msg[4] == OPCODE_SLEEP) + fctSleep(); + if (msg[4] == OPCODE_LISTEN) + fctListen(); + if (msg[4] == OPCODE_ENTER) + fctEnter(); + if (msg[4] == OPCODE_CLOSE) + fctClose(); + if (msg[4] == OPCODE_SEARCH) + fctSearch(); + if (msg[4] == OPCODE_KNOCK) + fctKnock(); + if (msg[4] == OPCODE_SCRATCH) + fctScratch(); + if (msg[4] == OPCODE_READ) + fctRead(); + if (msg[4] == OPCODE_EAT) + fctEat(); + if (msg[4] == OPCODE_PLACE) + fctPlace(); + if (msg[4] == OPCODE_OPEN) + fctOpen(); + if (msg[4] == OPCODE_TAKE) + fctTake(); + if (msg[4] == OPCODE_LOOK) + fctLook(); + if (msg[4] == OPCODE_SMELL) + fctSmell(); + if (msg[4] == OPCODE_SOUND) + fctSound(); + if (msg[4] == OPCODE_LEAVE) + fctLeave(); + if (msg[4] == OPCODE_LIFT) + fctLift(); + if (msg[4] == OPCODE_TURN) + fctTurn(); + if (msg[4] == OPCODE_SSEARCH) + fctSelfSearch(); + if (msg[4] == OPCODE_SREAD) + fctSelfRead(); + if (msg[4] == OPCODE_SPUT) + fctSelfPut(); + if (msg[4] == OPCODE_SLOOK) + fctSelftLook(); + cache = false; + + if (msg[4] == OPCODE_SHIDE) + fctSelfHide(); + } else { + if (anyone) { + quelquun(); + anyone = false; mennor(); return; } - if (msg[3] == MENU_MOVE) - fctMove(); - if (msg[3] == MENU_DISCUSS) - fctDiscuss(); - if (msg[3] == MENU_INVENTORY) - tsprendre(); //Translation: inventory/take - if (msg[4] == OPCODE_ATTACH) - fctAttach(); - if (msg[4] == OPCODE_WAIT) - fctWait(); - if (msg[4] == OPCODE_FORCE) - fctForce(); - if (msg[4] == OPCODE_SLEEP) - fctSleep(); - if (msg[4] == OPCODE_LISTEN) - fctListen(); - if (msg[4] == OPCODE_ENTER) - fctEnter(); - if (msg[4] == OPCODE_CLOSE) - fctClose(); - if (msg[4] == OPCODE_SEARCH) - fctSearch(); - if (msg[4] == OPCODE_KNOCK) - fctKnock(); - if (msg[4] == OPCODE_SCRATCH) - fctScratch(); - if (msg[4] == OPCODE_READ) - fctRead(); - if (msg[4] == OPCODE_EAT) - fctEat(); - if (msg[4] == OPCODE_PLACE) - fctPlace(); - if (msg[4] == OPCODE_OPEN) - fctOpen(); - if (msg[4] == OPCODE_TAKE) - fctTake(); - if (msg[4] == OPCODE_LOOK) - fctLook(); - if (msg[4] == OPCODE_SMELL) - fctSmell(); - if (msg[4] == OPCODE_SOUND) - fctSound(); - if (msg[4] == OPCODE_LEAVE) - fctLeave(); - if (msg[4] == OPCODE_LIFT) - fctLift(); - if (msg[4] == OPCODE_TURN) - fctTurn(); - if (msg[4] == OPCODE_HIDE_SELF) { - fctHideSelf(); - goto L1; - } - if (msg[4] == sfouiller) - tsfouiller();//Translation: search - if (msg[4] == slire) - tslire(); //Translation: read - if (msg[4] == OPCODE_PUT) - fctPut(); - if (msg[4] == sregarder) - tsregarder();//Translation: look - cache = false; -L1: - if (anyone) { - quelquun(); - anyone = false; - mennor(); - return; } calch(j, h, m); if ((((h == 12) || (h == 13) || (h == 19)) && (s.mlieu != 10)) || diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index d6024ece24..d9a11f5528 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -129,17 +129,12 @@ const int fleche = 1758; const int OPCODE_NONE = 0; -enum verbs {OPCODE_ATTACH = 0x301, OPCODE_WAIT = 0x302, OPCODE_FORCE = 0x303, OPCODE_SLEEP = 0x304, OPCODE_LISTEN = 0x305, - OPCODE_ENTER = 0x306, OPCODE_CLOSE = 0x307, OPCODE_SEARCH = 0x308, OPCODE_KNOCK = 0x309, OPCODE_SCRATCH = 0x30a, - OPCODE_READ = 0x30b, OPCODE_EAT = 0x30c, OPCODE_PLACE = 0x30d, OPCODE_OPEN = 0x30e, OPCODE_TAKE = 0x30f, - OPCODE_LOOK = 0x310, OPCODE_SMELL = 0x311, OPCODE_SOUND = 0x312, OPCODE_LEAVE = 0x313, OPCODE_LIFT = 0x314, - OPCODE_TURN = 0x315}; - -enum verbs2 {OPCODE_HIDE_SELF = 0x401, OPCODE_PUT = 0x404}; - -const int sfouiller = 0x402; -const int slire = 0x403; -const int sregarder = 0x405; +enum verbs {OPCODE_ATTACH = 0x301, OPCODE_WAIT = 0x302, OPCODE_FORCE = 0x303, OPCODE_SLEEP = 0x304, OPCODE_LISTEN = 0x305, + OPCODE_ENTER = 0x306, OPCODE_CLOSE = 0x307, OPCODE_SEARCH = 0x308, OPCODE_KNOCK = 0x309, OPCODE_SCRATCH = 0x30a, + OPCODE_READ = 0x30b, OPCODE_EAT = 0x30c, OPCODE_PLACE = 0x30d, OPCODE_OPEN = 0x30e, OPCODE_TAKE = 0x30f, + OPCODE_LOOK = 0x310, OPCODE_SMELL = 0x311, OPCODE_SOUND = 0x312, OPCODE_LEAVE = 0x313, OPCODE_LIFT = 0x314, + OPCODE_TURN = 0x315, OPCODE_SHIDE = 0x401, OPCODE_SSEARCH = 0x402, OPCODE_SREAD = 0x403, OPCODE_SPUT = 0x404, + OPCODE_SLOOK = 0x405}; const int max_patt = 20; -- cgit v1.2.3 From e26a93efdf9b128ac8ed721460efe94966ae5f2c Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 29 Feb 2012 08:17:29 +0100 Subject: MORTEVIELLE: Fix bug, this is a "in [1, 2]" in the original code --- engines/mortevielle/keyboard.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index 0306e71962..0cf22b35d8 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -45,7 +45,7 @@ int testou() { _soundOff = !_soundOff; break; case '\26' : - if ((c_zzz == 1) && (c_zzz == 2)) { + if ((c_zzz == 1) || (c_zzz == 2)) { zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); ++c_zzz; -- cgit v1.2.3 From 10132f3632ecb86ba928db3d1510d5ac16eb5529 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 29 Feb 2012 19:28:56 +0100 Subject: MORTEVIELLE: Double check all "in []" statements, fix a couple of errors --- engines/mortevielle/mor.cpp | 6 +++++- engines/mortevielle/parole.cpp | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 10f0194bf9..97b116f869 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -371,7 +371,7 @@ void repon(int f, int m) { } } } - if ((f >= 6) && (f <= 9)) { + if ((f == 6) || (f == 9)) { if (f == 6) i = 4; else @@ -615,6 +615,10 @@ void chlm(int &per) { if (per == 2) per = 128; } +/** + * Engine function - Draw Clock + * @remarks Originally called 'pendule' + */ void drawClock() { const int cv[3][13] = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index e86b647f36..791bfd7d61 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -36,7 +36,7 @@ void spfrac(int wor) { c3.rep = (uint)wor >> 12; if ((typlec == 0) && (c3.code != 9)) if (((c3.code > 4) && (c3.val != 20) && ((c3.rep != 3) && (c3.rep != 6) && (c3.rep != 9)) || - ((c3.code < 5) && ((c3.rep != 19) && (c3.rep != 22) && (c3.rep != 4) && (c3.rep != 9))))) { + ((c3.code < 5) && ((c3.val != 19) && (c3.val != 22) && (c3.rep != 4) && (c3.rep != 9))))) { ++c3.rep; } -- cgit v1.2.3 From 38c9aa8b5623df4536598aec4e841bcb936cd9a2 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 29 Feb 2012 23:50:49 +0100 Subject: MORTEVIELLE: silent several warning reported by cppCheck --- engines/mortevielle/actions.cpp | 93 +++++++++++++++++++------------------ engines/mortevielle/menu.cpp | 11 ++--- engines/mortevielle/mor.cpp | 2 +- engines/mortevielle/mor2.cpp | 44 +++++++++--------- engines/mortevielle/mortevielle.cpp | 2 +- engines/mortevielle/outtext.cpp | 3 -- engines/mortevielle/ovd1.cpp | 2 +- engines/mortevielle/prog.cpp | 2 +- engines/mortevielle/taffich.cpp | 12 ++--- engines/mortevielle/var_mor.cpp | 4 +- engines/mortevielle/var_mor.h | 10 +--- 11 files changed, 91 insertions(+), 94 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 63f432b81a..b2a23f5814 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -179,10 +179,8 @@ L2: * @remarks Originally called 'tprendre' */ void fctTake() { - int cx; - if (caff > 99) { - cx = caff; + int cx = caff; avpoing(cx); if (crep != 139) { if (ipers > 0) @@ -475,27 +473,30 @@ void fctSelftLook() { */ void fctSearch() { const byte r[14] = {123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}; - int cx; if (caff > 99) { st7(caff); return; } + if (!syn) ecr3(g_vm->getEngineString(S_SEARCH)); + tfleche(); if (anyone || iesc) return; + if (s.mlieu == 23) { crep = 1504; tperd(); return; } + tcoord(6); if (num == 0) { tcoord(7); if (num != 0) { - cx = 0; + int cx = 0; do { ++cx; } while ((cx <= 6) && (num != ord(touv[cx]))); @@ -504,6 +505,7 @@ void fctSearch() { else { if (ipers > 0) s.conf += 3; + rechai(mchai); if (mchai != 0) { cs = 0; @@ -540,14 +542,17 @@ void fctSearch() { crep = 997; if (s.mlieu < 14) crep = r[s.mlieu]; + if ((s.mlieu == 3) && (num == 2)) crep = 162; + if (s.mlieu == 12) { if ((num == 3) || (num == 4)) crep = 162; else if (num == 5) crep = 159; } + if (s.mlieu == 19) crep = 104; else if (s.mlieu == 16) @@ -571,10 +576,9 @@ void fctSelfSearch() { * @remarks Originally called 'touvrir' */ void fctOpen() { - int cx, haz; - if (!syn) ecr3(g_vm->getEngineString(S_OPEN)); + if (caff == 26) { if (ment != 0) { msg[4] = OPCODE_ENTER; @@ -583,19 +587,22 @@ void fctOpen() { crep = 997; return; } + if (caff == 15) { aldepl(); return; } + tfleche(); if ((anyone) || (iesc)) return; + tcoord(7); if (num != 0) { if (ipers > 0) s.conf += 2; ++iouv; - cx = 0; + int cx = 0; do { ++cx; } while (!((cx > 6) || (ord(touv[cx]) == 0) || (ord(touv[cx]) == num))); @@ -609,8 +616,7 @@ void fctOpen() { if ( ((s.mlieu > 10) && (s.mlieu < 14)) || ((s.mlieu > 6) && (s.mlieu < 10)) || (s.mlieu == 0) || (s.mlieu == 2) || (s.mlieu == 5)) { - haz = hazard(1, 4); - if (haz == 3) + if (hazard(1, 4) == 3) parole(7, 9, 1); } touv[cx] = chr(num); @@ -632,10 +638,6 @@ void fctOpen() { * @remarks Originally called 'tmettre' */ void fctPlace() { - bool enterPassageFl; - Common::String str_; - int i; - if (s.derobj == 0) { crep = 186; return; @@ -684,10 +686,10 @@ void fctPlace() { int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); if (answer== 1) { Common::String alertTxt = deline(582); - i = Alert::show(alertTxt, 1); + Alert::show(alertTxt, 1); tesok = false; - enterPassageFl = Ques::show(); + bool enterPassageFl = Ques::show(); hideMouse(); hirs(); dessine_rouleau(); @@ -712,7 +714,7 @@ void fctPlace() { aniof(1, 2); aniof(1, 1); alertTxt = deline(577); - i = Alert::show(alertTxt, 1); + Alert::show(alertTxt, 1); aniof(2, 1); crep = 166; } @@ -844,10 +846,9 @@ void fctAttach() { * @remarks Originally called 'tfermer' */ void fctClose() { - int cx, chai; - if (!syn) ecr3(g_vm->getEngineString(S_CLOSE)); + if (caff < 26) { tfleche(); if (iesc) @@ -856,7 +857,7 @@ void fctClose() { return; tcoord(7); if (num != 0) { - cx = 0; + int cx = 0; do { ++cx; } while ((cx <= 6) && (num != ord(touv[cx]))); @@ -867,7 +868,7 @@ void fctClose() { iouv = iouv - 1; if (iouv < 0) iouv = 0; - chai = 9999; + int chai = 9999; rechai(chai); if (mchai == chai) mchai = 0; @@ -883,14 +884,14 @@ void fctClose() { * @remarks Originally called 'tfrapper' */ void fctKnock() { - int l, p, haz; - if (!syn) ecr3(g_vm->getEngineString(S_HIT)); + if (s.mlieu == 15) { - l = Alert::show(g_vm->getEngineString(S_BEFORE_USE_DEP_MENU), 1); + Alert::show(g_vm->getEngineString(S_BEFORE_USE_DEP_MENU), 1); return; } + if (s.mlieu < 25) { tfleche(); if (!(anyone) && !(iesc)) @@ -900,12 +901,14 @@ void fctKnock() { crep = 997; return; } + if (s.mlieu == 26) { - haz = (hazard(0, 8)) - 4; + int haz = (hazard(0, 8)) - 4; parole(11, haz, 1); + int p; ecfren(p, haz, s.conf, ment); - l = ment; - if (l != 0) + int l = ment; + if (l != 0) { if (p != -500) { if (haz > p) crep = 190; @@ -915,6 +918,8 @@ void fctKnock() { } } else frap(); + } + if (ment == 8) crep = 190; } @@ -925,8 +930,6 @@ void fctKnock() { * @remarks Originally called 'tposer' */ void fctSelfPut() { - int cx, chai; - if (!syn) ecr3(g_vm->getEngineString(S_POSE)); if (s.derobj == 0) @@ -945,11 +948,12 @@ void fctSelfPut() { tcoord(7); crep = 124; if (num != 0) { + int chai; rechai(chai); if (chai == 0) crep = 997; else { - cx = 0; + int cx = 0; do { ++cx; } while ((cx <= 6) && (num != ord(touv[cx]))); @@ -1014,21 +1018,21 @@ void fctSelfPut() { * @remarks Originally called 'tecouter' */ void fctListen() { - int l, p, haz, j, h, m; - if (s.mlieu != 26) crep = 101; else { if (ipers != 0) ++s.conf; + int p, haz; ecfren(p, haz, s.conf, ment); - l = ment; + int l = ment; if (l != 0) { if (p != -500) { if (haz > p) crep = 101; else { becfren(l); + int j, h, m; calch(j, h, m); haz = hazard(1, 100); if ((h >= 0) && (h < 8)) { @@ -1052,8 +1056,6 @@ void fctListen() { * @remarks Originally called 'tmanger' */ void fctEat() { - int j, h, m; - if ((s.mlieu > 15) && (s.mlieu < 26)) crep = 148; else { @@ -1062,6 +1064,8 @@ void fctEat() { caff = 10; debloc(s.mlieu); tmlieu(s.mlieu); + + int j, h, m; calch(j, h, m); if ((h == 12) || (h == 13) || (h == 19)) { s.conf = s.conf - (s.conf / 7); @@ -1088,7 +1092,7 @@ void fctEat() { * @remarks Originally called 'tentrer' */ void fctEnter() { - int x, z = 0; +// int x; if ((s.mlieu == 21) || (s.mlieu == 22)) { t1sama(); @@ -1101,21 +1105,22 @@ void fctEnter() { crep = 189; s.teauto[8] = '*'; } else { + int z = 0; if (! blo) t11(ment, z); if (z != 0) { if ((ment == 3) || (ment == 7)) crep = 179; else { - x = (hazard(0, 10)) - 5; - parole(7, x, 1); + g_x = (hazard(0, 10)) - 5; + parole(7, g_x, 1); aniof(1, 1); - tip(z, x); + tip(z, g_x); ++s.conf; s.mlieu = 15; msg[3] = MENU_DISCUSS; - msg[4] = g_vm->_menu._discussMenu[x]; + msg[4] = g_vm->_menu._discussMenu[g_x]; syn = true; if (ment == 9) { col = true; @@ -1128,8 +1133,8 @@ void fctEnter() { ment = 0; } } else { - x = (hazard(0, 10)) - 5; - parole(7, x, 1); + g_x = (hazard(0, 10)) - 5; + parole(7, g_x, 1); aniof(1, 1); s.mlieu = ment; @@ -1213,13 +1218,13 @@ void fctForce() { * @remarks Originally called 'tsortir' */ void fctLeave() { - int lx = 0; - tsort(); crep = 0; if ((s.mlieu == 19) || (s.mlieu == 21) || (s.mlieu == 22) || (s.mlieu == 24)) crep = 997; else { + int lx = 0; + if ((s.mlieu < 16) || (s.mlieu == 26)) lx = 10; if ((s.mlieu == 10) || (s.mlieu == 20)) diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 6bbfa62df5..6ff97164f0 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -393,14 +393,11 @@ void Menu::eraseMenu() { * Handle updates to the menu */ void Menu::mdn() { - int x, y, ix; - bool tes; - if (!_menuActive) return; - x = x_s; - y = y_s; + int x = x_s; + int y = y_s; if (!g_vm->getMouseClick()) { if ((x == xprec) && (y == yprec)) return; @@ -409,7 +406,7 @@ void Menu::mdn() { yprec = y; } - tes = (y < 11) + bool tes = (y < 11) && ((x >= (28 * res) && x <= (28 * res + 24)) || (x >= (76 * res) && x <= (76 * res + 24)) || ((x > 124 * res) && (x < 124 * res + 24)) @@ -417,6 +414,8 @@ void Menu::mdn() { || ((x > 220 * res) && (x < 220 * res + 24)) || ((x > 268 * res) && (x < 268 * res + 24))); if (tes) { + int ix; + if (x < 76 * res) ix = MENU_INVENTORY; else if (x < 124 * res) diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 97b116f869..12df21ea9c 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -674,7 +674,7 @@ void drawClock() { void debloc(int l) { num = 0; - x = 0; + g_x = 0; y = 0; if ((l != 26) && (l != 15)) t5(l); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 33016faba9..2a80cecee1 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -649,45 +649,49 @@ void tfleche() { if (qust && (touch == '\103')) Alert::show(_hintPctMessage, 1); - } while (!((touch == '\73') || ((touch == '\104') && (x != 0) && (y != 0)) || (anyone) || (rect))); + } while (!((touch == '\73') || ((touch == '\104') && (g_x != 0) && (y != 0)) || (anyone) || (rect))); if (touch == '\73') iesc = true; if (rect) { - x = x_s; + g_x = x_s; y = y_s; } } void tcoord(int sx) { - int sy, ix, iy, cb, cy, ib; - int a, b, atdon; + int sy, ix, iy; + int ib; num = 0; crep = 999; - a = 0; - atdon = amzon + 3; - cy = 0; + int a = 0; + int atdon = amzon + 3; + int cy = 0; while (cy < caff) { a += tabdon[atdon]; atdon += 4; ++cy; } - b = tabdon[atdon]; - if (b == 0) - goto L1; + if (tabdon[atdon] == 0) { + crep = 997; + return; + } + a += fleche; - cb = 0; + int cb = 0; for (cy = 0; cy <= (sx - 2); ++cy) { ib = (tabdon[a + cb] << 8) + tabdon[(a + cb + 1)]; cb += (ib * 4) + 2; } ib = (tabdon[a + cb] << 8) + tabdon[(a + cb + 1)]; - if (ib == 0) - goto L1; + if (ib == 0) { + crep = 997; + return; + } cy = 1; do { @@ -698,14 +702,13 @@ void tcoord(int sx) { ix = tabdon[a + cb] * res; iy = tabdon[(a + cb + 1)]; ++cy; - } while (!(((x >= sx) && (x <= ix) && (y >= sy) && (y <= iy)) || (cy > ib))); + } while (!(((g_x >= sx) && (g_x <= ix) && (y >= sy) && (y <= iy)) || (cy > ib))); - if ((x >= sx) && (x <= ix) && (y >= sy) && (y <= iy)) { + if ((g_x >= sx) && (g_x <= ix) && (y >= sy) && (y <= iy)) { num = cy - 1; return; } -L1: crep = 997; } @@ -733,10 +736,9 @@ void st7(int ob) { } void treg(int ob) { - int mdes; - - mdes = caff; + int mdes = caff; caff = ob; + if (((caff > 29) && (caff < 33)) || (caff == 144) || (caff == 147) || (caff == 149) || (msg[4] == OPCODE_SLOOK)) { afdes(0); if ((caff > 29) && (caff < 33)) @@ -758,6 +760,7 @@ void avpoing(int &ob) { crep = 999; if (s.derobj != 0) ajjer(s.derobj); + if (crep != 139) { modobj(ob + 400); s.derobj = ob; @@ -766,9 +769,8 @@ void avpoing(int &ob) { } void rechai(int &ch) { - int cx; + int cx = s.mlieu; - cx = s.mlieu; if (s.mlieu == 16) cx = 14; ch = tabdon[achai + (cx * 7) + num - 1]; diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index c9ea556c80..50631663e1 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -594,7 +594,7 @@ void MortevielleEngine::handleAction() { } else return; } else if (inkey == '\104') { - if ((x != 0) && (y != 0)) + if ((g_x != 0) && (y != 0)) num = 9999; return; } diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 2cdfbe4188..3cc9b342fd 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -154,9 +154,6 @@ Common::String deline(int num) { return wrkStr; } -void afftex(const char *ch, int x, int y, int dx, int dy, int typ); - - static int l_motsuiv(int p, const char *ch, int &tab) { int c = p; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 64bb6cb463..1ea8d509ed 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -61,7 +61,7 @@ void charpal() { if (!ft.open("fxx.mor")) error("Missing file - fxx.mor"); for (int i = 0; i < 108; ++i) - l[i] = ft.readSint16LE(); + g_l[i] = ft.readSint16LE(); ft.close(); if (!f.open("plxx.mor")) diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 4953f86a00..635140f048 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -94,7 +94,7 @@ void MortevielleEngine::gameLoaded() { mnumo = 0; prebru = 0; g[4] = 'T'; - x = 0; + g_x = 0; y = 0; num = 0; hdb = 0; diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 29cdc0a288..52ed011604 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -193,16 +193,16 @@ void taffich() { npal = a; for (cx = 0; cx <= (a - 1); ++cx) - lgt = lgt + l[cx]; - handle = l[a]; + lgt = lgt + g_l[cx]; + handle = g_l[a]; filename = "DXX.mor"; } else { filename = "DZZ.mor"; - handle = l[87]; + handle = g_l[87]; if (a == 51) { lgt = handle; - handle = l[88]; + handle = g_l[88]; } _maff = a; npal = a + 37; @@ -235,8 +235,8 @@ void taffich() { else if (b > 15) --b; for (cx = 0; cx <= (b - 1); ++cx) - lgt += l[cx + 89]; - handle = l[b + 89]; + lgt += g_l[cx + 89]; + handle = g_l[b + 89]; filename = "AXX.mor"; } else if (b == 50) { filename = "AZZ.mor"; diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index ef9dbcf23a..d63d9aa808 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -113,7 +113,7 @@ bool blo, rech_cfiec; -int x, +int g_x, y, t, vj, @@ -194,7 +194,7 @@ ind t_rec[maxtd + 1]; //file sauv_t; //untyped_file fibyte; byte v_lieu[8][25]; -int l[108]; +int g_l[108]; int tbi[256]; chariot c1, c2, c3; float addfix; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index d9a11f5528..5769b61064 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -182,12 +182,6 @@ struct chariot { rep; }; -/* -struct doublet { - byte x, y; -}; -*/ - struct rectangle { int x1, x2, y1, y2; bool enabled; @@ -259,7 +253,7 @@ extern bool blo, rech_cfiec; -extern int x, +extern int g_x, y, t, vj, @@ -340,7 +334,7 @@ extern ind t_rec[maxtd + 1]; //file sauv_t; //untyped_file fibyte; extern byte v_lieu[8][25]; -extern int l[108]; +extern int g_l[108]; extern int tbi[256]; extern chariot c1, c2, c3; extern float addfix; -- cgit v1.2.3 From 06e54aaa674dc6c37aa53e846b28d863b8803dec Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 1 Mar 2012 07:53:57 +0100 Subject: MORTEVIELLE: Silent the remaining errors reported by CppCheck --- engines/mortevielle/mor.cpp | 74 +++++++++++++++++++---------------------- engines/mortevielle/mor2.cpp | 29 ++++++++-------- engines/mortevielle/mouse.cpp | 41 ++++++++++++----------- engines/mortevielle/ovd1.cpp | 5 +-- engines/mortevielle/taffich.cpp | 15 ++++----- engines/mortevielle/var_mor.cpp | 2 +- 6 files changed, 80 insertions(+), 86 deletions(-) diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 12df21ea9c..d54312a97f 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -178,14 +178,10 @@ void ecrf2() { } void ecr2(Common::String str_) { - int tab; - - if (res == 1) - tab = 10; - else - tab = 6; + // Some dead code was present in the original: removed g_vm->_screenSurface.putxy(8, 177); int tlig = 59 + (res - 1) * 36; + if ((int)str_.size() < tlig) g_vm->_screenSurface.writeg(str_, 5); else if ((int)str_.size() < (tlig << 1)) { @@ -339,7 +335,6 @@ void repon(int f, int m) { Common::String str_; Common::String str1; Common::String tmpStr; - int i, xco, dx, caspe; if ((m > 499) && (m < 563)) { tmpStr = deline(m - 501 + c_st41); @@ -372,6 +367,7 @@ void repon(int f, int m) { } } if ((f == 6) || (f == 9)) { + int i; if (f == 6) i = 4; else @@ -389,6 +385,8 @@ void repon(int f, int m) { if (f == 7) { /* messint */ ecrf7(); tmpStr = deline(m); + + int xco, dx, caspe; if (res == 1) { xco = 252 - tmpStr.size() * 5; caspe = 100; @@ -516,7 +514,11 @@ void cpl1(int &p) { int j, h, m; calch(j, h, m); - if ((h > 7) || (h < 11)) + // The original uses an || instead of an &&, resulting + // in an always true condition. Based on the other tests, + // and on other scenes, we use an && instead. + // if ((h > 7) || (h < 11)) + if ((h > 7) && (h < 11)) p = 25; else if ((h > 10) && (h < 14)) p = 35; @@ -810,11 +812,10 @@ void quelq6(int l) { } void quelq10(int h, int &per) { - int min = 0, max = 0; - if ((h >= 0) && (h < 8)) chlm(per); else { + int min = 0, max = 0; if ((h > 7) && (h < 10)) { min = 5; max = 7; @@ -834,11 +835,10 @@ void quelq10(int h, int &per) { } void quelq11(int h, int &per) { - int min = 0, max = 0; - if ((h >= 0) && (h < 8)) chlm(per); else { + int min = 0, max = 0; if (((h > 7) && (h < 10)) || ((h > 20) && (h < 24))) { min = 1; max = 3; @@ -882,11 +882,10 @@ void quelq15(int &per) { } void quelq20(int h, int &per) { - int min = 0, max = 0; - if (((h >= 0) && (h < 10)) || ((h > 18) && (h < 24))) chlm(per); else { + int min = 0, max = 0; if ((h > 9) && (h < 12)) { min = 3; max = 7; @@ -904,13 +903,13 @@ void quelq20(int h, int &per) { void frap() { - int j, h, m, haz; + int j, h, m; calch(j, h, m); if ((h >= 0) && (h < 8)) crep = 190; else { - haz = hazard(1, 100); + int haz = hazard(1, 100); if (haz > 70) crep = 190; else @@ -993,10 +992,8 @@ void ecfren(int &p, int &haz, int cf, int l) { } void becfren(int l) { - int haz; - if ((l == 1) || (l == 4)) { - haz = hazard(1, 2); + int haz = hazard(1, 2); if (l == 1) if (haz == 1) bh1 = true; @@ -1092,11 +1089,11 @@ void dprog() { } void pl1(int cf) { - int p, haz; - if (((li == 1) && (! bh1) && (! bf1)) || ((li == 4) && (! bh4) && (! bf4))) { + int p, haz; cpl1(p); phaz(haz, p, cf); + if (haz > p) person(); else @@ -1105,11 +1102,11 @@ void pl1(int cf) { } void pl2(int cf) { - int p, haz; - if (! bh2) { + int p, haz; cpl2(p); phaz(haz, p, cf); + if (haz > p) person(); else @@ -1118,11 +1115,11 @@ void pl2(int cf) { } void pl5(int cf) { - int p, haz; - if (! bh5) { + int p, haz; cpl5(p); phaz(haz, p, cf); + if (haz > p) person(); else @@ -1131,11 +1128,11 @@ void pl5(int cf) { } void pl6(int cf) { - int p, haz; - if (((li == 6) && (! bh6)) || ((li == 8) && (! bh8))) { + int p, haz; cpl6(p); phaz(haz, p, cf); + if (haz > p) person(); else @@ -1144,11 +1141,11 @@ void pl6(int cf) { } void pl9(int cf) { - int p, haz; - if (! bh9) { cf = -10; + int p, haz; phaz(haz, p, cf); + if (haz > p) person(); else @@ -1158,9 +1155,9 @@ void pl9(int cf) { void pl10(int cf) { int p, h, haz; - cpl10(p, h); phaz(haz, p, cf); + if (haz > p) person(); else @@ -1223,7 +1220,7 @@ void pl20(int cf) { } void t11(int l11, int &a) { - int p, haz, h = 0; + int p, haz; ecfren(p, haz, s.conf, l11); li = l11; @@ -1244,6 +1241,7 @@ void t11(int l11, int &a) { if ((l11 > 15) && (l11 != 20) && (l11 != 26)) person(); else { + int h = 0; if (l11 == 10) cpl10(p, h); if (l11 == 11) @@ -1312,6 +1310,7 @@ void writetp(Common::String s, int t) { */ void messint(int nu) { // Method is deprecated + warning("DEPRECATED: messint"); } void aniof(int ouf, int num) { @@ -1339,9 +1338,6 @@ void aniof(int ouf, int num) { } void musique(int so) { - bool i; - int haz; - if (so == 0) { /* musik(0) */ ; @@ -1349,9 +1345,9 @@ void musique(int so) { parole(10, 1, 1); ++prebru; } else { - i = false; + bool i = false; if ((s.mlieu == 19) || (s.mlieu == 21) || (s.mlieu == 22)) { - haz = hazard(1, 3); + int haz = hazard(1, 3); if (haz == 2) { haz = hazard(2, 4); parole(9, haz, 1); @@ -1359,14 +1355,14 @@ void musique(int so) { } } if (s.mlieu == 20) { - haz = hazard(1, 2); + int haz = hazard(1, 2); if (haz == 1) { parole(8, 1, 1); i = true; } } if (s.mlieu == 24) { - haz = hazard(1, 2); + int haz = hazard(1, 2); if (haz == 2) { parole(12, 1, 1); i = true; @@ -1377,7 +1373,7 @@ void musique(int so) { i = true; } if (! i) { - haz = hazard(1, 17); + int haz = hazard(1, 17); parole(haz, 1, 2); } } diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 2a80cecee1..ed5ed494eb 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -46,9 +46,8 @@ void tinke() { const char d4 = ']'; const char d5 = '1'; Common::String d6 = g_vm->getEngineString(S_OK); - int cx, haz, nh, cf, j, h, m; + int cx, cf, j, h, m; Common::String stpo; - bool am; anyone = false; calch(j, h, m); @@ -109,9 +108,9 @@ void tinke() { if (cf > 65) t -= ((t / 3) * 2); - nh = readclock(); + int nh = readclock(); if ((nh - mh) > t) { - am = g_vm->_menu._menuActive; + bool activeMenu = g_vm->_menu._menuActive; g_vm->_menu.eraseMenu(); jh += ((nh - mh) / t); mh = nh; @@ -165,7 +164,7 @@ void tinke() { if (! brt) { brt = true; hdb = readclock(); - haz = hazard(1, 5); + int haz = hazard(1, 5); if (haz < 5) { clsf3(); ecrf2(); @@ -176,7 +175,7 @@ void tinke() { } } } - if (am) + if (activeMenu) g_vm->_menu.drawMenu(); } } @@ -217,7 +216,6 @@ void afdes(int ad) { void tkey1(bool d) { bool quest; int x, y, c; - int key; hideMouse(); fenat('K'); @@ -232,7 +230,7 @@ void tkey1(bool d) { CHECK_QUIT; } while (!(quest || (c != 0) || (d && anyone))); if (quest) - key = testou(); + testou(); g_vm->setMouseClick(false); showMouse(); } @@ -288,15 +286,16 @@ void mfouen() { /* NIVEAU 6 */ void tperd() { - int cx; - initouv(); ment = 0; iouv = 0; mchai = 0; mfouen(); - if (!blo) + if (!blo) { + int cx; t11(21, cx); + } + g_vm->_loseGame = true; clsf1(); g_vm->_screenSurface.drawBox(60, 35, 400, 50, 15); @@ -469,10 +468,10 @@ void ajjer(int ob) { void t1sama() { //Entering manor int j, h, m; - bool d; calch(j, h, m); if ((h < 5) && (s.mlieu > 18)) { + bool d; cherjer(137, d); if (!d) { //You don't have the keys, and it's late crep = 1511; @@ -548,10 +547,9 @@ void tctrm() { void quelquun() { - int haz, cx; - if (imen) g_vm->_menu.eraseMenu(); + finfouil(); crep = 997; L1: @@ -572,6 +570,7 @@ L1: s.conf += 3 * (s.conf / 10); tsort(); tmlieu(15); + int cx; tip(ipers, cx); caff = 69 + cx; crep = caff; @@ -580,7 +579,7 @@ L1: syn = true; col = true; } else { - haz = hazard(1, 3); + int haz = hazard(1, 3); if (haz == 2) { cache = false; crep = 137; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index e7da3c3074..d607b0597b 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -82,16 +82,13 @@ void initMouse() { * @remarks Originally called 'hide_mouse' */ void hideMouse() { - int i, j, k, ps;; - bool imp; - --mouse_shwn; if (mouse_shwn == 0) { - imp = odd(y_s); - j = p_o_s; + bool imp = odd(y_s); + int j = p_o_s; switch (_currGraphicalDevice) { - case MODE_CGA: - k = 0; + case MODE_CGA: { + int k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); do { WRITE_LE_UINT16(&mem[0xb000 * 16 + j], s_s[0][k]); @@ -101,11 +98,12 @@ void hideMouse() { j += 80; ++k; } while (k < 5); + } break; case MODE_AMSTRAD1512: - for (i = 0; i <= 3; ++i) { + for (int i = 0; i <= 3; ++i) { port[0x3dd] = 1 << i; - k = 0; + int k = 0; j = p_o_s; do { if (imp) { @@ -120,45 +118,50 @@ void hideMouse() { } while (k < 8); } break; - case MODE_EGA: + case MODE_EGA: { port[0x3c4] = 2; port[0x3ce] = 8; port[0x3cf] = 255; - i = 0; + int i = 0; do { port[0x3c5] = 1 << i; - k = 0; + int k = 0; j = p_o_s; do { - ps = mem[0xa000 * 16 + j]; + // Useless ? + // ps = mem[0xa000 * 16 + j]; mem[0xa000 * 16 + j] = lo(s_s[i][k]); - ps = mem[0xa000 * 16 + j + 1]; + + // Useless ?? + // ps = mem[0xa000 * 16 + j + 1]; mem[0xa000 * 16 + j + 1] = hi(s_s[i][k]); j += 80; ++k; } while (k < 8); ++i; } while (i != 4); + } break; case MODE_HERCULES: j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); - for (i = 0; i <= 5; ++i) { - for (k = 0; k <= 3; ++k) + for (int i = 0; i <= 5; ++i) { + for (int k = 0; k <= 3; ++k) WRITE_LE_UINT16(&mem[0xb000 * 16 + k * 0x200 + j], s_s[i][k]); j += 80; } break; - case MODE_TANDY: + case MODE_TANDY: { j = ((uint)y_s >> 2) * 160 + ((uint)x_s >> 1); - k = 0; + int k = 0; do { - for (i = 0; i <= 3; ++i) { + for (int i = 0; i <= 3; ++i) { WRITE_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j], s_s[k][i + (k << 2)]); WRITE_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j + 2], s_s[k + 3][i + (k << 2)]); } j += 160; ++k; } while (k != 3); + } break; default: break; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 1ea8d509ed..e1374d4f04 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -172,9 +172,6 @@ void music() { Common::File fic; int k; bool fin; - char ch; -// float x, y; - /* debug('o3 music'); */ if (_soundOff) @@ -202,7 +199,7 @@ void music() { fin = fin | keypressed() | (k >= 5); } while (!fin); while (keypressed()) - ch = get_ch(); // input >> kbd >> ch; + get_ch(); // input >> kbd >> ch; } diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 52ed011604..82abc27989 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -95,9 +95,8 @@ void taffich() { byte tran1[] = { 121, 121, 138, 139, 120 }; // array<136, 140, byte> byte tran2[] = { 150, 150, 152, 152, 100, 110, 159, 100, 100 }; // array<153, 161, byte> - int i, m, cx, handle, npal; + int cx, handle, npal; int32 lgt; - int palh, k, j; int alllum[16]; @@ -154,7 +153,7 @@ void taffich() { Common::String filename; if ((a != 50) && (a != 51)) { - m = a + 2000; + int m = a + 2000; if ((m > 2001) && (m < 2010)) m = 2001; if (m == 2011) @@ -209,13 +208,13 @@ void taffich() { } chardes(filename, lgt, handle); if (_currGraphicalDevice == MODE_HERCULES) { - for (i = 0; i <= 15; ++i) { - palh = READ_LE_UINT16(&mem[(0x7000 * 16) + ((i + 1) << 1)]); + for (int i = 0; i <= 15; ++i) { + int palh = READ_LE_UINT16(&mem[(0x7000 * 16) + ((i + 1) << 1)]); alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); } - for (i = 0; i <= 15; ++i) { - k = 0; - for (j = 0; j <= 15; ++j) + for (int i = 0; i <= 15; ++i) { + int k = 0; + for (int j = 0; j <= 15; ++j) if (alllum[j] > alllum[k]) k = j; mem[(0x7000 * 16) + 2 + (k << 1)] = rang[i]; diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index d63d9aa808..42fab06f7c 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -231,7 +231,7 @@ Common::String copy(const Common::String &s, int idx, size_t size) { tmp[size] = '\0'; Common::String result(tmp); - delete tmp; + delete[] tmp; return result; } -- cgit v1.2.3 From 2eecba4db94794ac1899ca3c5cfceec0c01e2fe6 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 1 Mar 2012 08:00:23 +0100 Subject: MORTEVIELLE: Replace an 1-based array by a 0-based one --- engines/mortevielle/mor.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index d54312a97f..ab2ac1f256 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -622,17 +622,15 @@ void chlm(int &per) { * @remarks Originally called 'pendule' */ void drawClock() { - const int cv[3][13] = { - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 5, 8, 10, 8, 5, 0, -5, -8, -10, -8, -5, 0 }, - { 0, -5, -3, 0, 3, 5, 6, 5, 3, 0, -3, -5, -6 } + const int cv[2][12] = { + { 5, 8, 10, 8, 5, 0, -5, -8, -10, -8, -5, 0 }, + { -5, -3, 0, 3, 5, 6, 5, 3, 0, -3, -5, -6 } }; const int x = 580; const int y = 123; const int rg = 9; int h, co; - hideMouse(); paint_rect(570, 118, 20, 10); @@ -653,7 +651,7 @@ void drawClock() { if (h == 0) h = 12; - g_vm->_screenSurface.drawLine(((uint)x >> 1)*res, y, ((uint)(x + cv[1][h]) >> 1)*res, y + cv[2][h], co); + g_vm->_screenSurface.drawLine(((uint)x >> 1)*res, y, ((uint)(x + cv[0][h - 1]) >> 1)*res, y + cv[1][h - 1], co); showMouse(); g_vm->_screenSurface.putxy(568, 154); -- cgit v1.2.3 From 8d8bd8ec8c52f8f432e1b132e8b462a64ce89132 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 1 Mar 2012 19:11:56 +0100 Subject: MORTEVIELLE: Add braces, silenting some GCC warnings --- engines/mortevielle/actions.cpp | 93 +++++++++++++++++++++++++++-------------- engines/mortevielle/mor.cpp | 5 ++- engines/mortevielle/mor2.cpp | 8 ++-- 3 files changed, 69 insertions(+), 37 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index b2a23f5814..49d6a00c0a 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -642,37 +642,42 @@ void fctPlace() { crep = 186; return; } + if (!syn) ecr3(g_vm->getEngineString(S_PUT)); + tfleche(); if (iesc) crep = 998; + if ((anyone) || (iesc)) return; + tcoord(8); if (num != 0) { crep = 999; if (caff == 13) { if (num == 1) { - if (s.iboul != 0) + if (s.iboul != 0) { crep = 188; - else { + } else { s.iboul = s.derobj; if (s.derobj == 141) aniof(1, 7); } - } else if (s.ibag != 0) + } else if (s.ibag != 0) { crep = 188; - else { + } else { s.ibag = s.derobj; if (s.derobj == 159) aniof(1, 6); } } - if (caff == 14) - if (s.icave != 0) + + if (caff == 14) { + if (s.icave != 0) { crep = 188; - else { + } else { s.icave = s.derobj; if (s.derobj == 151) { // Open hidden passage @@ -684,7 +689,7 @@ void fctPlace() { // Do you want to enter the hidden passage? int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); - if (answer== 1) { + if (answer== 1) { Common::String alertTxt = deline(582); Alert::show(alertTxt, 1); @@ -727,29 +732,38 @@ void fctPlace() { return; } } - if (caff == 16) + } + + if (caff == 16) { if (s.icryp == 0) s.icryp = s.derobj; else crep = 188; - if (caff == 17) - if (s.ivier != 0) + } + + if (caff == 17) { + if (s.ivier != 0) { crep = 188; - else if (s.derobj == 143) { + } else if (s.derobj == 143) { s.ivier = 143; aniof(1, 1); } else { crep = 1512; tperd(); } - if (caff == 24) - if (s.ipuit != 0) + } + + if (caff == 24) { + if (s.ipuit != 0) { crep = 188; - else if ((s.derobj == 140) || (s.derobj == 120)) { + } else if ((s.derobj == 140) || (s.derobj == 120)) { s.ipuit = s.derobj; aniof(1, 1); - } else + } else { crep = 185; + } + } + if (crep != 188) maivid(); } @@ -894,11 +908,13 @@ void fctKnock() { if (s.mlieu < 25) { tfleche(); - if (!(anyone) && !(iesc)) + if (!(anyone) && !(iesc)) { if ((s.mlieu < 19) && (s.mlieu != 15)) crep = 133; else crep = 997; + } + return; } @@ -968,27 +984,33 @@ void fctSelfPut() { tcoord(8); if (num != 0) { crep = 998; - if (caff == 2) + if (caff == 2) { if (s.iloic != 0) crep = 188; else s.iloic = s.derobj; + } + if (caff == 13) { if (num == 1) { if (s.iboul != 0) crep = 188; else s.iboul = s.derobj; - } else if (s.ibag != 0) + } else if (s.ibag != 0) { crep = 188; - else + } else { s.ibag = s.derobj; + } } - if (caff == 16) + + if (caff == 16) { if (s.icryp != 0) crep = 188; else s.icryp = s.derobj; + } + if (caff == 24) crep = 185; if ((caff == 14) || (caff == 17)) @@ -1056,9 +1078,9 @@ void fctListen() { * @remarks Originally called 'tmanger' */ void fctEat() { - if ((s.mlieu > 15) && (s.mlieu < 26)) + if ((s.mlieu > 15) && (s.mlieu < 26)) { crep = 148; - else { + } else { tsort(); s.mlieu = 10; caff = 10; @@ -1069,21 +1091,26 @@ void fctEat() { calch(j, h, m); if ((h == 12) || (h == 13) || (h == 19)) { s.conf = s.conf - (s.conf / 7); - if (h == 12) + if (h == 12) { if (m == 0) h = 4; else h = 3; - if ((h == 13) || (h == 19)) + } + + if ((h == 13) || (h == 19)) { if (m == 0) h = 2; else h = 1; + } + jh += h; crep = 135; tinke(); - } else + } else { crep = 134; + } } } @@ -1204,13 +1231,15 @@ void fctForce() { ecr3(g_vm->getEngineString(S_SMASH)); if (caff < 25) tfleche(); - if ((! anyone) && (! iesc)) + + if ((! anyone) && (! iesc)) { if (s.mlieu != 26) crep = 997; else { crep = 143; s.conf += 2; } + } } /** @@ -1443,10 +1472,10 @@ void fctDiscuss() { } } else if (nbrep[caff - 69] < nbrepm[caff - 69]) { suj = tabdon[arep + (ix << 3) + (caff - 70)]; - s.conf = s.conf + tabdon[arcf + ix]; - nbrep[caff - 69] = nbrep[caff - 69] + 1; + s.conf += tabdon[arcf + ix]; + ++nbrep[caff - 69]; } else { - s.conf = s.conf + 3; + s.conf += 3; suj = 139; } hideMouse(); @@ -1459,8 +1488,8 @@ void fctDiscuss() { s.teauto[7] = '*'; } if ((suj == 106) || (suj == 108) || (suj == 94)) { - for (int ix = 29; ix <= 31; ++ix) - s.teauto[ix] = '*'; + for (int indx = 29; indx <= 31; ++indx) + s.teauto[indx] = '*'; s.pourc[7] = '*'; } if (suj == 70) { diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index ab2ac1f256..8b99fcc4a1 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -992,16 +992,17 @@ void ecfren(int &p, int &haz, int cf, int l) { void becfren(int l) { if ((l == 1) || (l == 4)) { int haz = hazard(1, 2); - if (l == 1) + if (l == 1) { if (haz == 1) bh1 = true; else bf1 = true; - if (l == 4) + } else { // l == 4 if (haz == 1) bh4 = true; else bf4 = true; + } } else if (l == 2) bh2 = true; else if (l == 3) diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index ed5ed494eb..8edafa8c2c 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -156,10 +156,10 @@ void tinke() { if ((mpers != 0) && (ipers != 10)) mpers = ipers; - if ((mpers == 0) && (ipers > 0)) - if ((s.mlieu == 13) || (s.mlieu == 14)) + if ((mpers == 0) && (ipers > 0)) { + if ((s.mlieu == 13) || (s.mlieu == 14)) { cavegre(); - else if (ipers == 10) { + } else if (ipers == 10) { ipers = 0; if (! brt) { brt = true; @@ -175,6 +175,8 @@ void tinke() { } } } + } + if (activeMenu) g_vm->_menu.drawMenu(); } -- cgit v1.2.3 From 1a70cee6a6e59290819f516736bb3123f232e342 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 2 Mar 2012 02:04:43 +0100 Subject: MORTEVIELLE: Silent a bunch of GCC warnings and errors --- engines/mortevielle/actions.cpp | 610 ++++++++++++++++++------------------ engines/mortevielle/dialogs.cpp | 19 +- engines/mortevielle/keyboard.cpp | 2 +- engines/mortevielle/level15.cpp | 8 +- engines/mortevielle/menu.cpp | 10 +- engines/mortevielle/mor.cpp | 145 +++++---- engines/mortevielle/mor2.cpp | 148 +++++---- engines/mortevielle/mortevielle.cpp | 52 +-- engines/mortevielle/mouse.cpp | 6 +- engines/mortevielle/ovd1.cpp | 6 +- engines/mortevielle/parole.cpp | 4 +- engines/mortevielle/parole2.cpp | 6 +- engines/mortevielle/prog.cpp | 104 +++--- engines/mortevielle/saveload.cpp | 6 +- engines/mortevielle/taffich.cpp | 44 +-- engines/mortevielle/var_mor.cpp | 32 +- engines/mortevielle/var_mor.h | 32 +- 17 files changed, 614 insertions(+), 620 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 49d6a00c0a..56c87efdf8 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -49,13 +49,13 @@ namespace Mortevielle { void fctMove() { int cx; - if ((s.mlieu == 26) && (msg[4] == g_vm->_menu._moveMenu[6])) { - s.mlieu = 15; - caff = s.mlieu; + if ((g_s.mlieu == 26) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { + g_s.mlieu = 15; + caff = g_s.mlieu; afdes(0); - repon(2, s.mlieu); + repon(2, g_s.mlieu); } - if ((s.mlieu == 15) && (msg[4] == g_vm->_menu._moveMenu[6])) { + if ((g_s.mlieu == 15) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { if (!syn) ecr3(g_vm->getEngineString(S_GO_TO)); tfleche(); @@ -64,21 +64,21 @@ void fctMove() { if ((anyone) || (iesc)) return; tcoord(1); - if (num == 0) + if (g_num == 0) return; - if (num == 1) { - s.mlieu = 0; + if (g_num == 1) { + g_s.mlieu = 0; tmlieu(0); - } else if (num == 7) { - s.mlieu = 13; + } else if (g_num == 7) { + g_s.mlieu = 13; tmlieu(13); - } else if (num != 6) - s.mlieu = 26; - if ((num > 1) && (num < 6)) - ment = num - 1; - if (num > 7) - ment = num - 3; - if (num != 6) + } else if (g_num != 6) + g_s.mlieu = 26; + if ((g_num > 1) && (g_num < 6)) + ment = g_num - 1; + if (g_num > 7) + ment = g_num - 3; + if (g_num != 6) affrep(); else aldepl(); @@ -88,56 +88,56 @@ void fctMove() { cx = 0; do { ++cx; - } while (g_vm->_menu._moveMenu[cx] != msg[4]); - if (s.mlieu == 19) { + } while (g_vm->_menu._moveMenu[cx] != g_msg[4]); + if (g_s.mlieu == 19) { if (cx == 1) t1deva(); if (cx == 2) t1neig(); goto L2; } - if (s.mlieu == 23) { + if (g_s.mlieu == 23) { if (cx == 1) t1deau(); if (cx == 2) t1derr(); goto L2; } - if ((s.mlieu == 11) && (cx == 1)) + if ((g_s.mlieu == 11) && (cx == 1)) cx = 6; - if (s.mlieu == 12) { + if (g_s.mlieu == 12) { if (cx == 2) cx = 6; if (cx == 5) cx = 16; } - if ((s.mlieu == 14) && (cx == 3)) + if ((g_s.mlieu == 14) && (cx == 3)) cx = 6; - if (((s.mlieu == 15) || (s.mlieu == 26)) && (cx == 4)) + if (((g_s.mlieu == 15) || (g_s.mlieu == 26)) && (cx == 4)) cx = 6; - if ((s.mlieu > 19) && (s.mlieu != 26)) + if ((g_s.mlieu > 19) && (g_s.mlieu != 26)) cx += 10; - if ((s.mlieu == 20) && (cx == 13)) + if ((g_s.mlieu == 20) && (cx == 13)) cx = 16; - if (s.mlieu == 21) { + if (g_s.mlieu == 21) { if (cx == 12) cx = 16; else if (cx > 13) cx = 15; } - if ((s.mlieu == 22) && (cx > 14)) + if ((g_s.mlieu == 22) && (cx > 14)) cx = 15; - if ((s.mlieu == 24) && (cx != 17)) + if ((g_s.mlieu == 24) && (cx != 17)) if (cx > 13) cx = 15; if (cx == 1) - s.mlieu = 11; + g_s.mlieu = 11; else if (cx == 2) - s.mlieu = 12; + g_s.mlieu = 12; else if (cx == 3) - s.mlieu = 14; + g_s.mlieu = 14; else if (cx == 4) - s.mlieu = 15; + g_s.mlieu = 15; else if (cx == 5) cx = 12; if (cx == 6) @@ -147,31 +147,31 @@ void fctMove() { else if (cx == 12) t1deva(); else if (cx == 13) - s.mlieu = 20; + g_s.mlieu = 20; else if (cx == 14) - s.mlieu = 24; + g_s.mlieu = 24; else if (cx == 15) t1neig(); else if (cx == 16) t1derr(); else if (cx == 17) { - if ((s.ipuit != 120) && (s.ipuit != 140)) + if ((g_s.ipuit != 120) && (g_s.ipuit != 140)) crep = 997; - else if (s.ipuit == 120) + else if (g_s.ipuit == 120) crep = 181; - else if (s.conf > 80) { + else if (g_s.conf > 80) { crep = 1505; tperd(); } else { - s.mlieu = 23; + g_s.mlieu = 23; affrep(); } } if ((cx < 5) || (cx == 13) || (cx == 14)) affrep(); - debloc(s.mlieu); + debloc(g_s.mlieu); L2: - tmlieu(s.mlieu); + tmlieu(g_s.mlieu); } /** @@ -184,24 +184,24 @@ void fctTake() { avpoing(cx); if (crep != 139) { if (ipers > 0) - s.conf += 3; + g_s.conf += 3; if (obpart) { - if (s.mlieu == 2) - s.iloic = 0; - if (s.mlieu == 13) { - if (s.iboul == caff) - s.iboul = 0; - if (s.ibag == caff) - s.ibag = 0; + if (g_s.mlieu == 2) + g_s.iloic = 0; + if (g_s.mlieu == 13) { + if (g_s.iboul == caff) + g_s.iboul = 0; + if (g_s.ibag == caff) + g_s.ibag = 0; } - if (s.mlieu == 14) - s.icave = 0; - if (s.mlieu == 16) - s.icryp = 0; - if (s.mlieu == 17) - s.ivier = 0; - if (s.mlieu == 24) - s.ipuit = 0; + if (g_s.mlieu == 14) + g_s.icave = 0; + if (g_s.mlieu == 16) + g_s.icryp = 0; + if (g_s.mlieu == 17) + g_s.ivier = 0; + if (g_s.mlieu == 24) + g_s.ipuit = 0; mfouen(); obpart = false; affrep(); @@ -210,7 +210,7 @@ void fctTake() { tsuiv(); ++dobj; if (dobj > 6) { - s.conf += 2; + g_s.conf += 2; dobj = 0; } } @@ -224,46 +224,46 @@ void fctTake() { return; if (caff == 3) { tcoord(2); - if (num == 1) { + if (g_num == 1) { crep = 152; return; } } tcoord(5); - if ((num == 0) || ((num == 1) && (s.mlieu == 16))) { + if ((g_num == 0) || ((g_num == 1) && (g_s.mlieu == 16))) { tcoord(8); - if (num != 0) { + if (g_num != 0) { if (ipers > 0) - s.conf += 3; + g_s.conf += 3; crep = 997; - if ((s.mlieu == 2) && (s.iloic != 0)) - avpoing(s.iloic); - if ((s.mlieu == 13) && (num == 1) && (s.iboul != 0)) { - avpoing(s.iboul); + if ((g_s.mlieu == 2) && (g_s.iloic != 0)) + avpoing(g_s.iloic); + if ((g_s.mlieu == 13) && (g_num == 1) && (g_s.iboul != 0)) { + avpoing(g_s.iboul); if ((crep != 997) && (crep != 139)) aniof(2, 7); } - if ((s.mlieu == 13) && (num == 2) && (s.ibag != 0)) { - avpoing(s.ibag); + if ((g_s.mlieu == 13) && (g_num == 2) && (g_s.ibag != 0)) { + avpoing(g_s.ibag); if ((crep != 997) && (crep != 139)) aniof(2, 6); } - if ((s.mlieu == 14) && (s.icave != 0)) { - avpoing(s.icave); + if ((g_s.mlieu == 14) && (g_s.icave != 0)) { + avpoing(g_s.icave); if ((crep != 997) && (crep != 139)) aniof(2, 2); } - if ((s.mlieu == 16) && (s.icryp != 0)) - avpoing(s.icryp); - if ((s.mlieu == 17) && (s.ivier != 0)) { - avpoing(s.ivier); + if ((g_s.mlieu == 16) && (g_s.icryp != 0)) + avpoing(g_s.icryp); + if ((g_s.mlieu == 17) && (g_s.ivier != 0)) { + avpoing(g_s.ivier); if ((crep != 997) && (crep != 139)) { crep = 182; aniof(2, 1); } } - if ((s.mlieu == 24) && (s.ipuit != 0)) { - avpoing(s.ipuit); + if ((g_s.mlieu == 24) && (g_s.ipuit != 0)) { + avpoing(g_s.ipuit); if ((crep != 997) && (crep != 139)) aniof(2, 1); } @@ -271,15 +271,15 @@ void fctTake() { crep = 999; } } else { - if ( ((s.mlieu == 0) && (num == 3)) || ((s.mlieu == 1) && (num == 4)) - || ((s.mlieu == 2) && (num == 1)) || ((s.mlieu == 4) && (num == 3)) - || ((s.mlieu == 5) && (num == 6)) || ((s.mlieu == 6) && (num == 2)) - || ((s.mlieu == 7) && (num == 6)) || ((s.mlieu == 8) && (num == 4)) - || ((s.mlieu == 9) && (num == 4)) || ((s.mlieu == 10) && (num > 2)) - || ((s.mlieu == 11) && (num == 7)) || ((s.mlieu == 12) && (num == 6)) - || ((s.mlieu == 13) && (num > 4)) || ((s.mlieu > 13) && (s.mlieu != 23)) ) + if ( ((g_s.mlieu == 0) && (g_num == 3)) || ((g_s.mlieu == 1) && (g_num == 4)) + || ((g_s.mlieu == 2) && (g_num == 1)) || ((g_s.mlieu == 4) && (g_num == 3)) + || ((g_s.mlieu == 5) && (g_num == 6)) || ((g_s.mlieu == 6) && (g_num == 2)) + || ((g_s.mlieu == 7) && (g_num == 6)) || ((g_s.mlieu == 8) && (g_num == 4)) + || ((g_s.mlieu == 9) && (g_num == 4)) || ((g_s.mlieu == 10) && (g_num > 2)) + || ((g_s.mlieu == 11) && (g_num == 7)) || ((g_s.mlieu == 12) && (g_num == 6)) + || ((g_s.mlieu == 13) && (g_num > 4)) || ((g_s.mlieu > 13) && (g_s.mlieu != 23)) ) crep = 997; - else if (s.mlieu == 23) { + else if (g_s.mlieu == 23) { crep = 1504; tperd(); } else @@ -296,16 +296,16 @@ void fctInventoryTake() { cx = 0; do { ++cx; - } while (g_vm->_menu._inventoryMenu[cx] != msg[4]); + } while (g_vm->_menu._inventoryMenu[cx] != g_msg[4]); cz = 0; cy = 0; do { ++cy; - if (ord(s.sjer[cy]) != 0) + if (ord(g_s.sjer[cy]) != 0) ++cz; } while (cz != cx); - cz = ord(s.sjer[cy]); - s.sjer[cy] = chr(0); + cz = ord(g_s.sjer[cy]); + g_s.sjer[cy] = chr(0); modinv(); avpoing(cz); crep = 998; @@ -325,25 +325,25 @@ void fctLift() { if ((anyone) || (iesc)) return; tcoord(3); - if (num == 0) { + if (g_num == 0) { tcoord(8); - if (num != 0) { + if (g_num != 0) { if (ipers > 0) - ++s.conf; + ++g_s.conf; crep = 997; - if ((s.mlieu == 2) && (s.iloic != 0)) - treg(s.iloic); + if ((g_s.mlieu == 2) && (g_s.iloic != 0)) + treg(g_s.iloic); } return; } if (ipers > 0) - ++s.conf; - cx = s.mlieu; - if (s.mlieu == 16) + ++g_s.conf; + cx = g_s.mlieu; + if (g_s.mlieu == 16) cx = 14; - else if (s.mlieu == 19) + else if (g_s.mlieu == 19) cx = 15; - crep = tabdon[asoul + (cx << 3) + (num - 1)]; + crep = tabdon[asoul + (cx << 3) + (g_num - 1)]; if (crep == 255) crep = 997; } @@ -361,7 +361,7 @@ void fctRead() { tfleche(); if (!(anyone) && !(iesc)) { tcoord(4); - if (num != 0) + if (g_num != 0) crep = 107; } } @@ -372,10 +372,10 @@ void fctRead() { * @remarks Originally called 'tslire' */ void fctSelfRead() { - if (s.derobj == 0) + if (g_s.derobj == 0) crep = 186; else - st4(s.derobj); + st4(g_s.derobj); } /** @@ -395,64 +395,64 @@ void fctLook() { if ((anyone) || (iesc)) return; tcoord(5); - if (num == 0) { + if (g_num == 0) { tcoord(8); crep = 131; - if (num != 0) { - if (s.mlieu == 13) { - if (num == 1) { + if (g_num != 0) { + if (g_s.mlieu == 13) { + if (g_num == 1) { crep = 164; - if (s.ibag != 0) - treg(s.ibag); - else if (s.iboul != 0) - treg(s.iboul); + if (g_s.ibag != 0) + treg(g_s.ibag); + else if (g_s.iboul != 0) + treg(g_s.iboul); } else { crep = 193; - if (s.ibag != 0) - treg(s.ibag); + if (g_s.ibag != 0) + treg(g_s.ibag); } } - if (s.mlieu == 14) { + if (g_s.mlieu == 14) { crep = 164; - if (s.icave != 0) - treg(s.icave); + if (g_s.icave != 0) + treg(g_s.icave); } - if (s.mlieu == 17) { + if (g_s.mlieu == 17) { crep = 174; - if (s.ivier != 0) - treg(s.ivier); + if (g_s.ivier != 0) + treg(g_s.ivier); } - if (s.mlieu == 24) { + if (g_s.mlieu == 24) { crep = 131; - if (s.ipuit != 0) - treg(s.ipuit); + if (g_s.ipuit != 0) + treg(g_s.ipuit); } } return; } - cx = s.mlieu; - if (s.mlieu == 20) + cx = g_s.mlieu; + if (g_s.mlieu == 20) cx = 17; - if ((s.mlieu > 21) && (s.mlieu < 25)) + if ((g_s.mlieu > 21) && (g_s.mlieu < 25)) cx -= 4; - if (s.mlieu == 26) + if (g_s.mlieu == 26) cx = 21; - crep = tabdon[arega + (cx * 7) + num - 1]; - if ((s.mlieu == 13) && (num == 8)) + crep = tabdon[arega + (cx * 7) + g_num - 1]; + if ((g_s.mlieu == 13) && (g_num == 8)) crep = 126; - if (s.mlieu == 19) + if (g_s.mlieu == 19) crep = 103; if (crep == 255) crep = 131; - if ((s.mlieu == 1) && (num == 1)) + if ((g_s.mlieu == 1) && (g_num == 1)) treg(144); - if ((s.mlieu == 5) && (num == 3)) + if ((g_s.mlieu == 5) && (g_num == 3)) treg(147); - if ((s.mlieu == 8) && (num == 3)) + if ((g_s.mlieu == 8) && (g_num == 3)) treg(149); - if ((s.mlieu == 9) && (num == 2)) + if ((g_s.mlieu == 9) && (g_num == 2)) treg(30); - if ((s.mlieu == 10) && (num == 3)) + if ((g_s.mlieu == 10) && (g_num == 3)) treg(31); } @@ -461,8 +461,8 @@ void fctLook() { * @remarks Originally called 'tsregarder' */ void fctSelftLook() { - if (s.derobj != 0) - treg(s.derobj); + if (g_s.derobj != 0) + treg(g_s.derobj); else crep = 186; } @@ -486,25 +486,25 @@ void fctSearch() { if (anyone || iesc) return; - if (s.mlieu == 23) { + if (g_s.mlieu == 23) { crep = 1504; tperd(); return; } tcoord(6); - if (num == 0) { + if (g_num == 0) { tcoord(7); - if (num != 0) { + if (g_num != 0) { int cx = 0; do { ++cx; - } while ((cx <= 6) && (num != ord(touv[cx]))); - if (num != ord(touv[cx])) + } while ((cx <= 6) && (g_num != ord(touv[cx]))); + if (g_num != ord(touv[cx])) crep = 187; else { if (ipers > 0) - s.conf += 3; + g_s.conf += 3; rechai(mchai); if (mchai != 0) { @@ -519,43 +519,43 @@ void fctSearch() { } else { tcoord(8); crep = 997; - if (num != 0) { + if (g_num != 0) { if (ipers > 0) - s.conf += 3; - if ((s.mlieu != 24) && (s.mlieu != 17) && (s.mlieu != 13)) { - if (s.mlieu == 2) { + g_s.conf += 3; + if ((g_s.mlieu != 24) && (g_s.mlieu != 17) && (g_s.mlieu != 13)) { + if (g_s.mlieu == 2) { crep = 123; - if (s.iloic != 0) - treg(s.iloic); + if (g_s.iloic != 0) + treg(g_s.iloic); } - if (s.mlieu == 16) { + if (g_s.mlieu == 16) { crep = 123; - if (s.icryp != 0) - treg(s.icryp); + if (g_s.icryp != 0) + treg(g_s.icryp); } } } } } else { if (ipers > 0) - s.conf += 3; + g_s.conf += 3; crep = 997; - if (s.mlieu < 14) - crep = r[s.mlieu]; + if (g_s.mlieu < 14) + crep = r[g_s.mlieu]; - if ((s.mlieu == 3) && (num == 2)) + if ((g_s.mlieu == 3) && (g_num == 2)) crep = 162; - if (s.mlieu == 12) { - if ((num == 3) || (num == 4)) + if (g_s.mlieu == 12) { + if ((g_num == 3) || (g_num == 4)) crep = 162; - else if (num == 5) + else if (g_num == 5) crep = 159; } - if (s.mlieu == 19) + if (g_s.mlieu == 19) crep = 104; - else if (s.mlieu == 16) + else if (g_s.mlieu == 16) crep = 155; } } @@ -565,8 +565,8 @@ void fctSearch() { * @remarks Originally called 'tsfouiller' */ void fctSelfSearch() { - if (s.derobj != 0) - st7(s.derobj); + if (g_s.derobj != 0) + st7(g_s.derobj); else crep = 186; } @@ -581,7 +581,7 @@ void fctOpen() { if (caff == 26) { if (ment != 0) { - msg[4] = OPCODE_ENTER; + g_msg[4] = OPCODE_ENTER; syn = true; } else crep = 997; @@ -598,34 +598,34 @@ void fctOpen() { return; tcoord(7); - if (num != 0) { + if (g_num != 0) { if (ipers > 0) - s.conf += 2; + g_s.conf += 2; ++iouv; int cx = 0; do { ++cx; - } while (!((cx > 6) || (ord(touv[cx]) == 0) || (ord(touv[cx]) == num))); - if (ord(touv[cx]) != num) { - if (!( ((num == 3) && ((s.mlieu == 0) || (s.mlieu == 9) || (s.mlieu == 5) || (s.mlieu == 7))) - || ((num == 4) && ((s.mlieu == 1) || (s.mlieu == 2) || (s.mlieu == 6))) - || ((s.mlieu == 4) && (num == 5)) - || ((num == 6) && ((s.mlieu == 7) || (s.mlieu == 10) || (s.mlieu == 8) || (s.mlieu == 13))) - || ((s.mlieu == 8) && (num == 2)) - || ((s.mlieu == 12) && (num == 7))) ) { - if ( ((s.mlieu > 10) && (s.mlieu < 14)) - || ((s.mlieu > 6) && (s.mlieu < 10)) - || (s.mlieu == 0) || (s.mlieu == 2) || (s.mlieu == 5)) { + } while (!((cx > 6) || (ord(touv[cx]) == 0) || (ord(touv[cx]) == g_num))); + if (ord(touv[cx]) != g_num) { + if (!( ((g_num == 3) && ((g_s.mlieu == 0) || (g_s.mlieu == 9) || (g_s.mlieu == 5) || (g_s.mlieu == 7))) + || ((g_num == 4) && ((g_s.mlieu == 1) || (g_s.mlieu == 2) || (g_s.mlieu == 6))) + || ((g_s.mlieu == 4) && (g_num == 5)) + || ((g_num == 6) && ((g_s.mlieu == 7) || (g_s.mlieu == 10) || (g_s.mlieu == 8) || (g_s.mlieu == 13))) + || ((g_s.mlieu == 8) && (g_num == 2)) + || ((g_s.mlieu == 12) && (g_num == 7))) ) { + if ( ((g_s.mlieu > 10) && (g_s.mlieu < 14)) + || ((g_s.mlieu > 6) && (g_s.mlieu < 10)) + || (g_s.mlieu == 0) || (g_s.mlieu == 2) || (g_s.mlieu == 5)) { if (hazard(1, 4) == 3) parole(7, 9, 1); } - touv[cx] = chr(num); - aniof(1, num); + touv[cx] = chr(g_num); + aniof(1, g_num); } - cx = s.mlieu; - if (s.mlieu == 16) + cx = g_s.mlieu; + if (g_s.mlieu == 16) cx = 14; - crep = tabdon[aouvr + (cx * 7) + num - 1]; + crep = tabdon[aouvr + (cx * 7) + g_num - 1]; if (crep == 254) crep = 999; } else @@ -638,7 +638,7 @@ void fctOpen() { * @remarks Originally called 'tmettre' */ void fctPlace() { - if (s.derobj == 0) { + if (g_s.derobj == 0) { crep = 186; return; } @@ -654,32 +654,32 @@ void fctPlace() { return; tcoord(8); - if (num != 0) { + if (g_num != 0) { crep = 999; if (caff == 13) { - if (num == 1) { - if (s.iboul != 0) { + if (g_num == 1) { + if (g_s.iboul != 0) { crep = 188; } else { - s.iboul = s.derobj; - if (s.derobj == 141) + g_s.iboul = g_s.derobj; + if (g_s.derobj == 141) aniof(1, 7); } - } else if (s.ibag != 0) { + } else if (g_s.ibag != 0) { crep = 188; } else { - s.ibag = s.derobj; - if (s.derobj == 159) + g_s.ibag = g_s.derobj; + if (g_s.derobj == 159) aniof(1, 6); } } if (caff == 14) { - if (s.icave != 0) { + if (g_s.icave != 0) { crep = 188; } else { - s.icave = s.derobj; - if (s.derobj == 151) { + g_s.icave = g_s.derobj; + if (g_s.derobj == 151) { // Open hidden passage aniof(1, 2); aniof(1, 1); @@ -710,10 +710,10 @@ void fctPlace() { g_vm->_menu.displayMenu(); if (enterPassageFl) { - s.mlieu = 17; + g_s.mlieu = 17; tmlieu(17); } else { - tmlieu(s.mlieu); + tmlieu(g_s.mlieu); writepal(14); dessin(0); aniof(1, 2); @@ -735,17 +735,17 @@ void fctPlace() { } if (caff == 16) { - if (s.icryp == 0) - s.icryp = s.derobj; + if (g_s.icryp == 0) + g_s.icryp = g_s.derobj; else crep = 188; } if (caff == 17) { - if (s.ivier != 0) { + if (g_s.ivier != 0) { crep = 188; - } else if (s.derobj == 143) { - s.ivier = 143; + } else if (g_s.derobj == 143) { + g_s.ivier = 143; aniof(1, 1); } else { crep = 1512; @@ -754,10 +754,10 @@ void fctPlace() { } if (caff == 24) { - if (s.ipuit != 0) { + if (g_s.ipuit != 0) { crep = 188; - } else if ((s.derobj == 140) || (s.derobj == 120)) { - s.ipuit = s.derobj; + } else if ((g_s.derobj == 140) || (g_s.derobj == 120)) { + g_s.ipuit = g_s.derobj; aniof(1, 1); } else { crep = 185; @@ -784,9 +784,9 @@ void fctTurn() { if ((anyone) || (iesc)) return; tcoord(9); - if (num != 0) { + if (g_num != 0) { crep = 997; - if ((s.mlieu == 13) && (s.ibag == 159) && (s.iboul == 141)) { + if ((g_s.mlieu == 13) && (g_s.ibag == 159) && (g_s.iboul == 141)) { repon(2, 167); parole(7, 9, 1); int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); @@ -795,13 +795,13 @@ void fctTurn() { else crep = 168; } - if ((s.mlieu == 17) && (s.ivier == 143)) { + if ((g_s.mlieu == 17) && (g_s.ivier == 143)) { repon(2, 175); clsf3(); parole(6, -9, 1); int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); if (answer == 1) { - s.mlieu = 16; + g_s.mlieu = 16; affrep(); } else crep = 176; @@ -819,7 +819,7 @@ void fctSelfHide() { tfleche(); if (!(anyone) && !(iesc)) { tcoord(10); - if (num == 0) + if (g_num == 0) cache = false; else { cache = true; @@ -833,7 +833,7 @@ void fctSelfHide() { * @remarks Originally called 'tattacher' */ void fctAttach() { - if (s.derobj == 0) + if (g_s.derobj == 0) crep = 186; else { if (!syn) @@ -842,10 +842,10 @@ void fctAttach() { if (!(anyone) && !(iesc)) { tcoord(8); crep = 997; - if ((num != 0) && (s.mlieu == 24)) { + if ((g_num != 0) && (g_s.mlieu == 24)) { crep = 999; - if ((s.derobj == 120) || (s.derobj == 140)) { - s.ipuit = s.derobj; + if ((g_s.derobj == 120) || (g_s.derobj == 140)) { + g_s.ipuit = g_s.derobj; aniof(1, 1); } else crep = 185; @@ -870,13 +870,13 @@ void fctClose() { if ((anyone) || (iesc)) return; tcoord(7); - if (num != 0) { + if (g_num != 0) { int cx = 0; do { ++cx; - } while ((cx <= 6) && (num != ord(touv[cx]))); - if (num == ord(touv[cx])) { - aniof(2, num); + } while ((cx <= 6) && (g_num != ord(touv[cx]))); + if (g_num == ord(touv[cx])) { + aniof(2, g_num); crep = 998; touv[cx] = chr(0); iouv = iouv - 1; @@ -901,15 +901,15 @@ void fctKnock() { if (!syn) ecr3(g_vm->getEngineString(S_HIT)); - if (s.mlieu == 15) { + if (g_s.mlieu == 15) { Alert::show(g_vm->getEngineString(S_BEFORE_USE_DEP_MENU), 1); return; } - if (s.mlieu < 25) { + if (g_s.mlieu < 25) { tfleche(); if (!(anyone) && !(iesc)) { - if ((s.mlieu < 19) && (s.mlieu != 15)) + if ((g_s.mlieu < 19) && (g_s.mlieu != 15)) crep = 133; else crep = 997; @@ -918,11 +918,11 @@ void fctKnock() { return; } - if (s.mlieu == 26) { + if (g_s.mlieu == 26) { int haz = (hazard(0, 8)) - 4; parole(11, haz, 1); int p; - ecfren(p, haz, s.conf, ment); + ecfren(p, haz, g_s.conf, ment); int l = ment; if (l != 0) { if (p != -500) { @@ -948,7 +948,7 @@ void fctKnock() { void fctSelfPut() { if (!syn) ecr3(g_vm->getEngineString(S_POSE)); - if (s.derobj == 0) + if (g_s.derobj == 0) crep = 186; else { if (caff > 99) { @@ -963,7 +963,7 @@ void fctSelfPut() { return; tcoord(7); crep = 124; - if (num != 0) { + if (g_num != 0) { int chai; rechai(chai); if (chai == 0) @@ -972,8 +972,8 @@ void fctSelfPut() { int cx = 0; do { ++cx; - } while ((cx <= 6) && (num != ord(touv[cx]))); - if (num != ord(touv[cx])) + } while ((cx <= 6) && (g_num != ord(touv[cx]))); + if (g_num != ord(touv[cx])) crep = 187; else { mchai = chai; @@ -982,33 +982,33 @@ void fctSelfPut() { } } else { tcoord(8); - if (num != 0) { + if (g_num != 0) { crep = 998; if (caff == 2) { - if (s.iloic != 0) + if (g_s.iloic != 0) crep = 188; else - s.iloic = s.derobj; + g_s.iloic = g_s.derobj; } if (caff == 13) { - if (num == 1) { - if (s.iboul != 0) + if (g_num == 1) { + if (g_s.iboul != 0) crep = 188; else - s.iboul = s.derobj; - } else if (s.ibag != 0) { + g_s.iboul = g_s.derobj; + } else if (g_s.ibag != 0) { crep = 188; } else { - s.ibag = s.derobj; + g_s.ibag = g_s.derobj; } } if (caff == 16) { - if (s.icryp != 0) + if (g_s.icryp != 0) crep = 188; else - s.icryp = s.derobj; + g_s.icryp = g_s.derobj; } if (caff == 24) @@ -1019,7 +1019,7 @@ void fctSelfPut() { crep = 124; if (caff == 24) { tcoord(5); - if (num != 0) + if (g_num != 0) crep = 185; } } @@ -1040,13 +1040,13 @@ void fctSelfPut() { * @remarks Originally called 'tecouter' */ void fctListen() { - if (s.mlieu != 26) + if (g_s.mlieu != 26) crep = 101; else { if (ipers != 0) - ++s.conf; + ++g_s.conf; int p, haz; - ecfren(p, haz, s.conf, ment); + ecfren(p, haz, g_s.conf, ment); int l = ment; if (l != 0) { if (p != -500) { @@ -1078,19 +1078,19 @@ void fctListen() { * @remarks Originally called 'tmanger' */ void fctEat() { - if ((s.mlieu > 15) && (s.mlieu < 26)) { + if ((g_s.mlieu > 15) && (g_s.mlieu < 26)) { crep = 148; } else { tsort(); - s.mlieu = 10; + g_s.mlieu = 10; caff = 10; - debloc(s.mlieu); - tmlieu(s.mlieu); + debloc(g_s.mlieu); + tmlieu(g_s.mlieu); int j, h, m; calch(j, h, m); if ((h == 12) || (h == 13) || (h == 19)) { - s.conf = s.conf - (s.conf / 7); + g_s.conf -= (g_s.conf / 7); if (h == 12) { if (m == 0) h = 4; @@ -1121,16 +1121,16 @@ void fctEat() { void fctEnter() { // int x; - if ((s.mlieu == 21) || (s.mlieu == 22)) { + if ((g_s.mlieu == 21) || (g_s.mlieu == 22)) { t1sama(); - tmlieu(s.mlieu); - } else if (s.mlieu == 15) + tmlieu(g_s.mlieu); + } else if (g_s.mlieu == 15) aldepl(); else if (ment == 0) crep = 997; - else if ((ment == 9) && (s.derobj != 136)) { + else if ((ment == 9) && (g_s.derobj != 136)) { crep = 189; - s.teauto[8] = '*'; + g_s.teauto[8] = '*'; } else { int z = 0; if (! blo) @@ -1144,18 +1144,18 @@ void fctEnter() { aniof(1, 1); tip(z, g_x); - ++s.conf; - s.mlieu = 15; - msg[3] = MENU_DISCUSS; - msg[4] = g_vm->_menu._discussMenu[g_x]; + ++g_s.conf; + g_s.mlieu = 15; + g_msg[3] = MENU_DISCUSS; + g_msg[4] = g_vm->_menu._discussMenu[g_x]; syn = true; if (ment == 9) { - col = true; + g_col = true; caff = 70; afdes(0); repon(2, caff); } else - col = false; + g_col = false; debloc(ment); ment = 0; } @@ -1164,10 +1164,10 @@ void fctEnter() { parole(7, g_x, 1); aniof(1, 1); - s.mlieu = ment; + g_s.mlieu = ment; affrep(); - debloc(s.mlieu); - tmlieu(s.mlieu); + debloc(g_s.mlieu); + tmlieu(g_s.mlieu); ment = 0; mpers = 0; ipers = 0; @@ -1182,17 +1182,17 @@ void fctEnter() { void fctSleep() { int z, j, h, m; - if ((s.mlieu > 15) && (s.mlieu < 26)) { + if ((g_s.mlieu > 15) && (g_s.mlieu < 26)) { crep = 148; return; } - if (s.mlieu != 0) { + if (g_s.mlieu != 0) { tsort(); - s.mlieu = 0; + g_s.mlieu = 0; affrep(); afdes(0); - debloc(s.mlieu); - tmlieu(s.mlieu); + debloc(g_s.mlieu); + tmlieu(g_s.mlieu); } clsf3(); clsf2(); @@ -1203,7 +1203,7 @@ void fctSleep() { int answer; do { if (h < 8) { - s.conf = s.conf - (s.conf / 20); + g_s.conf -= (g_s.conf / 20); z = (7 - h) * 2; if (m == 30) --z; @@ -1219,7 +1219,7 @@ void fctSleep() { anyone = false; } while (answer != 1); crep = 998; - num = 0; + g_num = 0; } /** @@ -1233,11 +1233,11 @@ void fctForce() { tfleche(); if ((! anyone) && (! iesc)) { - if (s.mlieu != 26) + if (g_s.mlieu != 26) crep = 997; else { crep = 143; - s.conf += 2; + g_s.conf += 2; } } } @@ -1249,27 +1249,27 @@ void fctForce() { void fctLeave() { tsort(); crep = 0; - if ((s.mlieu == 19) || (s.mlieu == 21) || (s.mlieu == 22) || (s.mlieu == 24)) + if ((g_s.mlieu == 19) || (g_s.mlieu == 21) || (g_s.mlieu == 22) || (g_s.mlieu == 24)) crep = 997; else { int lx = 0; - if ((s.mlieu < 16) || (s.mlieu == 26)) + if ((g_s.mlieu < 16) || (g_s.mlieu == 26)) lx = 10; - if ((s.mlieu == 10) || (s.mlieu == 20)) + if ((g_s.mlieu == 10) || (g_s.mlieu == 20)) lx = 21; - if ((s.mlieu < 10) || (s.mlieu == 13)) + if ((g_s.mlieu < 10) || (g_s.mlieu == 13)) lx = 15; - if (s.mlieu == 16) { + if (g_s.mlieu == 16) { lx = 17; crep = 176; } - if (s.mlieu == 17) + if (g_s.mlieu == 17) t23coul(lx); - if (s.mlieu == 23) + if (g_s.mlieu == 23) lx = 24; if (crep != 997) - s.mlieu = lx; + g_s.mlieu = lx; caff = lx; if (crep == 0) crep = lx; @@ -1293,12 +1293,12 @@ void fctWait() { ++jh; tinke(); if (!blo) - t11(s.mlieu, quel); + t11(g_s.mlieu, quel); if ((ipers != 0) && (mpers == 0)) { crep = 998; - if ((s.mlieu == 13) || (s.mlieu == 14)) + if ((g_s.mlieu == 13) || (g_s.mlieu == 14)) cavegre(); - if ((s.mlieu > 0) && (s.mlieu < 10)) + if ((g_s.mlieu > 0) && (g_s.mlieu < 10)) anyone = true; mpers = ipers; if (!anyone) @@ -1324,7 +1324,7 @@ void fctSound() { tfleche(); if (!(anyone) && (!iesc)) crep = 145; - num = 0; + g_num = 0; } } @@ -1340,13 +1340,13 @@ void fctDiscuss() { bool f; finfouil(); - if (col) + if (g_col) suj = 128; else { cx = 0; do { ++cx; - } while (g_vm->_menu._discussMenu[cx] != msg[4]); + } while (g_vm->_menu._discussMenu[cx] != g_msg[4]); caff = 69 + cx; afdes(0); repon(2, caff); @@ -1377,11 +1377,13 @@ void fctDiscuss() { do { ++icm; g_vm->_screenSurface.putxy(co, lig); - if (s.teauto[icm] == '*') + if (g_s.teauto[icm] == '*') { if (te[icm]) writetp(lib[icm], 1); else writetp(lib[icm], 0); + } + if (icm == 23) { lig = 0; co = 320; @@ -1396,7 +1398,7 @@ void fctDiscuss() { CHECK_QUIT; getMousePos(x, y, c); - x = x * (3 - res); + x *= (3 - res); if (x > 319) cx = 41; else @@ -1435,7 +1437,7 @@ void fctDiscuss() { writetp(lib[choi], 1); te[choi] = ! te[choi]; } - if ((s.teauto[ix] == '*') || (ix == 46)) { + if ((g_s.teauto[ix] == '*') || (ix == 46)) { lig = ((ix - 1) % 23) << 3; if (ix > 23) co = 320; @@ -1456,9 +1458,9 @@ void fctDiscuss() { g_vm->setMouseClick(false); if (choi != 46) { int ix = choi - 1; - if (col) { - col = false; - s.mlieu = 15; + if (g_col) { + g_col = false; + g_s.mlieu = 15; if (iouv > 0) max = 8; else @@ -1468,14 +1470,14 @@ void fctDiscuss() { suj = 129; else { suj = 138; - s.conf = s.conf + (3 * (s.conf / 10)); + g_s.conf += (3 * (g_s.conf / 10)); } } else if (nbrep[caff - 69] < nbrepm[caff - 69]) { suj = tabdon[arep + (ix << 3) + (caff - 70)]; - s.conf += tabdon[arcf + ix]; + g_s.conf += tabdon[arcf + ix]; ++nbrep[caff - 69]; } else { - s.conf += 3; + g_s.conf += 3; suj = 139; } hideMouse(); @@ -1484,32 +1486,32 @@ void fctDiscuss() { sparl(0, suj); showMouse(); if ((suj == 84) || (suj == 86)) { - s.pourc[5] = '*'; - s.teauto[7] = '*'; + g_s.pourc[5] = '*'; + g_s.teauto[7] = '*'; } if ((suj == 106) || (suj == 108) || (suj == 94)) { for (int indx = 29; indx <= 31; ++indx) - s.teauto[indx] = '*'; - s.pourc[7] = '*'; + g_s.teauto[indx] = '*'; + g_s.pourc[7] = '*'; } if (suj == 70) { - s.pourc[8] = '*'; - s.teauto[32] = '*'; + g_s.pourc[8] = '*'; + g_s.teauto[32] = '*'; } hideMouse(); hirs(); showMouse(); } } while ((choi != 46) && (suj != 138)); - if (col) { - s.conf = s.conf + (3 * (s.conf / 10)); + if (g_col) { + g_s.conf += (3 * (g_s.conf / 10)); hideMouse(); hirs(); premtet(); sparl(0, 138); showMouse(); - col = false; - s.mlieu = 15; + g_col = false; + g_s.mlieu = 15; } ctrm = 0; hideMouse(); @@ -1521,7 +1523,7 @@ void fctDiscuss() { drawClock(); affrep(); /* chech;*/ - tmlieu(s.mlieu); + tmlieu(g_s.mlieu); clsf3(); } @@ -1540,7 +1542,7 @@ void fctSmell() { crep = 153; } else if (caff == 123) crep = 110; - num = 0; + g_num = 0; } /** @@ -1554,7 +1556,7 @@ void fctScratch() { ecr3(g_vm->getEngineString(S_SCRATCH)); tfleche(); } - num = 0; + g_num = 0; } /** @@ -1608,9 +1610,9 @@ void MortevielleEngine::loseGame() { vh = 10; vm = 0; vj = 0; - _minute = 0; - _hour = 10; - _day = 0; + g_minute = 0; + g_hour = 10; + g_day = 0; repon(2, 180); answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); _quitGame = (answer != 1); diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 9d7ea2fa4c..fec8b2f81f 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -326,7 +326,8 @@ bool Ques::show() { optionPosY = 35; maxLength = 0; - for (int j = firstOption, prevChoice = 1; j <= lastOption; ++j, ++prevChoice) { + prevChoice = 1; + for (int j = firstOption; j <= lastOption; ++j, ++prevChoice) { tmpStr = deline(j); if ((int) tmpStr.size() > maxLength) maxLength = tmpStr.size(); @@ -369,16 +370,16 @@ bool Ques::show() { ++currChoice; if (coor[currChoice].enabled) { if ((prevChoice != 0) && (prevChoice != currChoice)) { - Common::String tmpStr = choiceArray[prevChoice] + '$'; + tmpStr = choiceArray[prevChoice] + '$'; afftex(tmpStr, 100, 27 + (prevChoice * 8), 100, 1, 0); } if (prevChoice != currChoice) { - Common::String tmpStr = choiceArray[currChoice] + '$'; + tmpStr = choiceArray[currChoice] + '$'; afftex(tmpStr, 100, 27 + (currChoice * 8), 100, 1, 1); prevChoice = currChoice; } } else if (prevChoice != 0) { - Common::String tmpStr = choiceArray[prevChoice] + '$'; + tmpStr = choiceArray[prevChoice] + '$'; afftex(tmpStr, 100, 27 + (prevChoice * 8), 100, 1, 0); prevChoice = 0; } @@ -438,15 +439,15 @@ void f3f8::checkForF8(int SpeechNum, bool drawAni50Fl) { teskbd(); do { parole(SpeechNum, 0, 0); - waitForF3F8(key); + waitForF3F8(g_key); CHECK_QUIT; - if (_newGraphicalDevice != _currGraphicalDevice) { - _currGraphicalDevice = _newGraphicalDevice; + if (g_newGraphicalDevice != g_currGraphicalDevice) { + g_currGraphicalDevice = g_newGraphicalDevice; hirs(); aff50(drawAni50Fl); } - } while (key != 66); // keycode for F8 + } while (g_key != 66); // keycode for F8 } /** @@ -462,7 +463,7 @@ void f3f8::waitForF3F8(int &key) { void f3f8::aff50(bool drawAni50Fl) { caff = 50; - _maff = 0; + g_maff = 0; taffich(); dessine(ades, 63, 12); if (drawAni50Fl) diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index 0cf22b35d8..d6ebe986df 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -42,7 +42,7 @@ int testou() { switch (ch) { case '\23' : - _soundOff = !_soundOff; + g_soundOff = !g_soundOff; break; case '\26' : if ((c_zzz == 1) || (c_zzz == 2)) { diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index f90e1aa714..5030da9acb 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -68,7 +68,7 @@ void outbloc(int n, pattern p, t_nhom pal) { void writepal(int n) { t_nhom pal; - switch (_currGraphicalDevice) { + switch (g_currGraphicalDevice) { case MODE_TANDY: case MODE_EGA: case MODE_AMSTRAD1512: @@ -96,7 +96,7 @@ void pictout(int seg, int dep, int x, int y) { GfxSurface surface; surface.decode(&mem[seg * 16 + dep]); - if (_currGraphicalDevice == MODE_HERCULES) { + if (g_currGraphicalDevice == MODE_HERCULES) { mem[0x7000 * 16 + 2] = 0; mem[0x7000 * 16 + 32] = 15; } @@ -109,13 +109,13 @@ void pictout(int seg, int dep, int x, int y) { void sauvecr(int y, int dy) { hideMouse(); - s_sauv(_currGraphicalDevice, y, dy); + s_sauv(g_currGraphicalDevice, y, dy); showMouse(); } void charecr(int y, int dy) { hideMouse(); - s_char(_currGraphicalDevice, y, dy); + s_char(g_currGraphicalDevice, y, dy); showMouse(); } diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 6ff97164f0..998b70fa35 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -154,7 +154,7 @@ void Menu::displayMenu() { g_vm->_screenSurface.fillRect(7, Common::Rect(0, 0, 639, 10)); col = 28 * res; - if (_currGraphicalDevice == MODE_CGA) + if (g_currGraphicalDevice == MODE_CGA) color = 1; else color = 9; @@ -456,8 +456,8 @@ void Menu::mdn() { // A menu was clicked on choisi = (test0) && (msg4 != OPCODE_NONE); menuUp(msg3); - msg[4] = msg4; - msg[3] = msg3; + g_msg[4] = msg4; + g_msg[3] = msg3; msg3 = OPCODE_NONE; msg4 = OPCODE_NONE; @@ -513,8 +513,8 @@ void Menu::initMenu() { } msg3 = OPCODE_NONE; msg4 = OPCODE_NONE; - msg[3] = OPCODE_NONE; - msg[4] = OPCODE_NONE; + g_msg[3] = OPCODE_NONE; + g_msg[4] = OPCODE_NONE; g_vm->setMouseClick(false); } diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 8b99fcc4a1..d3eb248574 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -114,7 +114,7 @@ void dessine(int ad, int x, int y) { void dessine_rouleau() { writepal(89); - if (_currGraphicalDevice == MODE_HERCULES) { + if (g_currGraphicalDevice == MODE_HERCULES) { mem[0x7000 * 16 + 14] = 15; } hideMouse(); @@ -236,11 +236,11 @@ void clsf10() { cod = 544; } g_vm->_screenSurface.fillRect(15, Common::Rect(cod, 93, co, 98)); - if (s.conf < 33) + if (g_s.conf < 33) st = g_vm->getEngineString(S_COOL); - else if (s.conf < 66) + else if (g_s.conf < 66) st = g_vm->getEngineString(S_LOURDE); - else if (s.conf > 65) + else if (g_s.conf > 65) st = g_vm->getEngineString(S_MALSAINE); co = 580 - (g_vm->_screenSurface.getStringWidth(st) / 2); @@ -259,7 +259,7 @@ void clsf10() { void stop() { hirs(); - _currGraphicalDevice = MODE_AMSTRAD1512; + g_currGraphicalDevice = MODE_AMSTRAD1512; hirs(); g_vm->quitGame(); } @@ -267,7 +267,7 @@ void stop() { void paint_rect(int x, int y, int dx, int dy) { int co; - if (_currGraphicalDevice == MODE_CGA) + if (g_currGraphicalDevice == MODE_CGA) co = 3; else co = 11; @@ -280,7 +280,7 @@ int hazard(int min, int max) { void calch(int &j, int &h, int &m) { int nh = readclock(); - int th = jh + ((nh - mh) / t); + int th = jh + ((nh - mh) / g_t); m = ((th % 2) + vm) * 30; h = ((uint)th >> 1) + vh; if (m == 60) { @@ -357,12 +357,12 @@ void repon(int f, int m) { ecrf2(); text1(8, 182, 103, m); if ((m == 68) || (m == 69)) - s.teauto[40] = '*'; + g_s.teauto[40] = '*'; if ((m == 104) && (caff == 14)) { - s.teauto[36] = '*'; - if (s.teauto[39] == '*') { - s.pourc[3] = '*'; - s.teauto[38] = '*'; + g_s.teauto[36] = '*'; + if (g_s.teauto[39] == '*') { + g_s.pourc[3] = '*'; + g_s.teauto[38] = '*'; } } } @@ -377,10 +377,10 @@ void repon(int f, int m) { afftex(tmpStr, 80, 40, 60, 25, i); if (m == 180) - s.pourc[6] = '*'; + g_s.pourc[6] = '*'; if (m == 179) - s.pourc[10] = '*'; + g_s.pourc[10] = '*'; } if (f == 7) { /* messint */ ecrf7(); @@ -635,17 +635,17 @@ void drawClock() { paint_rect(570, 118, 20, 10); paint_rect(578, 114, 6, 18); - if ((_currGraphicalDevice == MODE_CGA) || (_currGraphicalDevice == MODE_HERCULES)) + if ((g_currGraphicalDevice == MODE_CGA) || (g_currGraphicalDevice == MODE_HERCULES)) co = 0; else co = 1; - if (_minute == 0) + if (g_minute == 0) g_vm->_screenSurface.drawLine(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y - rg), co); else g_vm->_screenSurface.drawLine(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y + rg), co); - h = _hour; + h = g_hour; if (h > 12) h -= 12; if (h == 0) @@ -655,15 +655,15 @@ void drawClock() { showMouse(); g_vm->_screenSurface.putxy(568, 154); - if (_hour > 11) + if (g_hour > 11) g_vm->_screenSurface.writeg("PM ", 1); else g_vm->_screenSurface.writeg("AM ", 1); g_vm->_screenSurface.putxy(550, 160); - if ((_day >= 0) && (_day <= 8)) { + if ((g_day >= 0) && (g_day <= 8)) { Common::String tmp = g_vm->getEngineString(S_DAY); - tmp.insertChar((char)(_day + 49), 0); + tmp.insertChar((char)(g_day + 49), 0); g_vm->_screenSurface.writeg(tmp, 1); } } @@ -673,9 +673,9 @@ void drawClock() { *************/ void debloc(int l) { - num = 0; + g_num = 0; g_x = 0; - y = 0; + g_y = 0; if ((l != 26) && (l != 15)) t5(l); mpers = ipers; @@ -1033,46 +1033,44 @@ void phaz(int &haz, int &p, int cf) { } void inzon() { - int cx; - copcha(); - s.ipre = false; - s.derobj = 0; - s.icave = 0; - s.iboul = 0; - s.ibag = 0; - s.ipuit = 0; - s.ivier = 0; - s.iloic = 136; - s.icryp = 141; - s.conf = hazard(4, 10); - s.mlieu = 21; + g_s.ipre = false; + g_s.derobj = 0; + g_s.icave = 0; + g_s.iboul = 0; + g_s.ibag = 0; + g_s.ipuit = 0; + g_s.ivier = 0; + g_s.iloic = 136; + g_s.icryp = 141; + g_s.conf = hazard(4, 10); + g_s.mlieu = 21; - for (cx = 2; cx <= 6; ++cx) - s.sjer[cx] = chr(0); + for (int cx = 2; cx <= 6; ++cx) + g_s.sjer[cx] = chr(0); - s.sjer[1] = chr(113); - s.heure = chr(20); + g_s.sjer[1] = chr(113); + g_s.heure = chr(20); - for (cx = 1; cx <= 10; ++cx) - s.pourc[cx] = ' '; + for (int cx = 1; cx <= 10; ++cx) + g_s.pourc[cx] = ' '; - for (cx = 1; cx <= 6; ++cx) - s.teauto[cx] = '*'; + for (int cx = 1; cx <= 6; ++cx) + g_s.teauto[cx] = '*'; - for (cx = 7; cx <= 9; ++cx) - s.teauto[cx] = ' '; + for (int cx = 7; cx <= 9; ++cx) + g_s.teauto[cx] = ' '; - for (cx = 10; cx <= 28; ++cx) - s.teauto[cx] = '*'; + for (int cx = 10; cx <= 28; ++cx) + g_s.teauto[cx] = '*'; - for (cx = 29; cx <= 42; ++cx) - s.teauto[cx] = ' '; + for (int cx = 29; cx <= 42; ++cx) + g_s.teauto[cx] = ' '; - s.teauto[33] = '*'; + g_s.teauto[33] = '*'; - for (cx = 1; cx <= 8; ++cx) + for (int cx = 1; cx <= 8; ++cx) nbrep[cx] = 0; init_nbrepm(); @@ -1081,9 +1079,9 @@ void inzon() { void dprog() { li = 21; jh = 0; - if (! s.ipre) + if (!g_s.ipre) blo = true; - t = ti1; + g_t = ti1; mh = readclock(); } @@ -1221,7 +1219,7 @@ void pl20(int cf) { void t11(int l11, int &a) { int p, haz; - ecfren(p, haz, s.conf, l11); + ecfren(p, haz, g_s.conf, l11); li = l11; if ((l11 > 0) && (l11 < 10)) { if (p != -500) { @@ -1253,7 +1251,7 @@ void t11(int l11, int &a) { cpl15(p); if (l11 == 20) cpl20(p, h); - p = p + s.conf; + p += g_s.conf; haz = hazard(1, 100); if (haz > p) { person(); @@ -1276,20 +1274,17 @@ void t11(int l11, int &a) { } void cavegre() { - int haz; - - s.conf = s.conf + 2; - if (s.conf > 69) - s.conf += (s.conf / 10); + g_s.conf += 2; + if (g_s.conf > 69) + g_s.conf += (g_s.conf / 10); clsf3(); ecrf2(); ecr3(g_vm->getEngineString(S_SOMEONE_ENTERS)); - haz = (hazard(0, 4)) - 2; + int haz = (hazard(0, 4)) - 2; parole(2, haz, 1); - // Useless? - for (haz = 0; haz <= 3000; ++haz) - ; + // The original was doing here a useless loop. + // It has been removed clsf3(); person(); @@ -1340,12 +1335,12 @@ void musique(int so) { if (so == 0) { /* musik(0) */ ; - } else if ((prebru == 0) && (! s.ipre)) { + } else if ((prebru == 0) && (!g_s.ipre)) { parole(10, 1, 1); ++prebru; } else { bool i = false; - if ((s.mlieu == 19) || (s.mlieu == 21) || (s.mlieu == 22)) { + if ((g_s.mlieu == 19) || (g_s.mlieu == 21) || (g_s.mlieu == 22)) { int haz = hazard(1, 3); if (haz == 2) { haz = hazard(2, 4); @@ -1353,21 +1348,23 @@ void musique(int so) { i = true; } } - if (s.mlieu == 20) { + if (g_s.mlieu == 20) { int haz = hazard(1, 2); if (haz == 1) { parole(8, 1, 1); i = true; } } - if (s.mlieu == 24) { + + if (g_s.mlieu == 24) { int haz = hazard(1, 2); if (haz == 2) { parole(12, 1, 1); i = true; } } - if (s.mlieu == 23) { + + if (g_s.mlieu == 23) { parole(13, 1, 1); i = true; } @@ -1400,19 +1397,19 @@ void dessin(int ad) { } if (caff == 13) { - if (s.iboul == 141) + if (g_s.iboul == 141) aniof(1, 7); - if (s.ibag == 159) + if (g_s.ibag == 159) aniof(1, 6); } - if ((caff == 14) && (s.icave == 151)) + if ((caff == 14) && (g_s.icave == 151)) aniof(1, 2); - if ((caff == 17) && (s.ivier == 143)) + if ((caff == 17) && (g_s.ivier == 143)) aniof(1, 1); - if ((caff == 24) && (s.ipuit != 0)) + if ((caff == 24) && (g_s.ipuit != 0)) aniof(1, 1); } diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 8edafa8c2c..42e1d0f9fa 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -51,8 +51,8 @@ void tinke() { anyone = false; calch(j, h, m); - if (j != _day) { - _day = j; + if (j != g_day) { + g_day = j; cx = 0; do { ++cx; @@ -61,13 +61,13 @@ void tinke() { nbrep[cx] = 0; } while (cx != 8); } - if ((h > _hour) || ((h == 0) && (_hour == 23))) { - _hour = h; - _minute = 0; + if ((h > g_hour) || ((h == 0) && (g_hour == 23))) { + g_hour = h; + g_minute = 0; drawClock(); cf = 0; for (cx = 1; cx <= 10; ++cx) { - if (s.pourc[cx] == '*') + if (g_s.pourc[cx] == '*') ++cf; } @@ -89,8 +89,8 @@ void tinke() { _hintPctMessage += d6; _hintPctMessage += d4; } - if (m > _minute) { - _minute = 30; + if (m > g_minute) { + g_minute = 30; drawClock(); } if (y_s < 12) @@ -98,21 +98,21 @@ void tinke() { if (! blo) { if ((h == 12) || ((h > 18) && (h < 21)) || ((h >= 0) && (h < 7))) - t = ti2; + g_t = ti2; else - t = ti1; - cf = s.conf; + g_t = ti1; + cf = g_s.conf; if ((cf > 33) && (cf < 66)) - t -= (t / 3); + g_t -= (g_t / 3); if (cf > 65) - t -= ((t / 3) * 2); + g_t -= ((g_t / 3) * 2); int nh = readclock(); - if ((nh - mh) > t) { + if ((nh - mh) > g_t) { bool activeMenu = g_vm->_menu._menuActive; g_vm->_menu.eraseMenu(); - jh += ((nh - mh) / t); + jh += ((nh - mh) / g_t); mh = nh; switch (li) { case 1: @@ -157,7 +157,7 @@ void tinke() { mpers = ipers; if ((mpers == 0) && (ipers > 0)) { - if ((s.mlieu == 13) || (s.mlieu == 14)) { + if ((g_s.mlieu == 13) || (g_s.mlieu == 14)) { cavegre(); } else if (ipers == 10) { ipers = 0; @@ -186,7 +186,7 @@ void tinke() { nouvp(li, cx); brt = false; hdb = 0; - if ((s.mlieu > 0) && (s.mlieu < 10)) + if ((g_s.mlieu > 0) && (g_s.mlieu < 10)) anyone = true; } } @@ -195,9 +195,9 @@ void fenat(char ans) { int coul; hideMouse(); - if (_currGraphicalDevice == MODE_CGA) + if (g_currGraphicalDevice == MODE_CGA) coul = 2; - else if (_currGraphicalDevice == MODE_HERCULES) + else if (g_currGraphicalDevice == MODE_HERCULES) coul = 1; else coul = 12; @@ -222,7 +222,7 @@ void tkey1(bool d) { hideMouse(); fenat('K'); while (keypressed()) - key = testou(); + g_key = testou(); do { if (d) @@ -265,20 +265,18 @@ void tlu(int af, int ob) { repon(2, 999); tkey1(true); caff = af; - msg[3] = OPCODE_NONE; + g_msg[3] = OPCODE_NONE; crep = 998; } void affrep() { - caff = s.mlieu; - crep = s.mlieu; + caff = g_s.mlieu; + crep = g_s.mlieu; } void mfouen() { - int cx; - - tmlieu(s.mlieu); - for (cx = 1; cx <= 11; ++cx) + tmlieu(g_s.mlieu); + for (int cx = 1; cx <= 11; ++cx) g_vm->_menu.enableMenuItem(_actionMenu[cx]); g_vm->_menu.menut(OPCODE_SOUND, g_vm->getEngineString(S_PROBE)); @@ -304,18 +302,18 @@ void tperd() { repon(9, crep); clsf2(); clsf3(); - col = false; + g_col = false; syn = false; okdes = false; } void tsort() { - if ((iouv > 0) && (s.mlieu != 0)) { - if (s.conf < 50) - s.conf += 2; + if ((iouv > 0) && (g_s.mlieu != 0)) { + if (g_s.conf < 50) + g_s.conf += 2; else - s.conf += (s.conf / 10); + g_s.conf += (g_s.conf / 10); } for (int cx = 1; cx <= 7; ++cx) @@ -323,7 +321,7 @@ void tsort() { ment = 0; iouv = 0; mchai = 0; - debloc(s.mlieu); + debloc(g_s.mlieu); } void st4(int ob) { @@ -361,14 +359,14 @@ void cherjer(int ob, bool &d) { d = false; for (cx = 1; cx <= 6; ++cx) - d = (d || (ord(s.sjer[cx]) == ob)); + d = (d || (ord(g_s.sjer[cx]) == ob)); - if (s.derobj == ob) + if (g_s.derobj == ob) d = true; } void st1sama() { - s.mlieu = 10; + g_s.mlieu = 10; affrep(); } @@ -378,9 +376,9 @@ void modinv() { int cy = 0; for (int cx = 1; cx <= 6; ++cx) - if (s.sjer[cx] != chr(0)) { + if (g_s.sjer[cx] != chr(0)) { ++cy; - r = (ord(s.sjer[cx]) + 400); + r = (ord(g_s.sjer[cx]) + 400); nomp = deline(r - 501 + c_st41); g_vm->_menu.menut(g_vm->_menu._inventoryMenu[cy], nomp); g_vm->_menu.enableMenuItem(g_vm->_menu._inventoryMenu[cx]); @@ -432,7 +430,7 @@ void mfoudi() { } void mennor() { - g_vm->_menu.menuUp(msg[3]); + g_vm->_menu.menuUp(g_msg[3]); } void premtet() { @@ -449,7 +447,7 @@ void ajchai() { } while ((cx <= 9) && (tabdon[cy + cx] != 0)); if (tabdon[cy + cx] == 0) { - int lderobj = s.derobj; + int lderobj = g_s.derobj; tabdon[cy + cx] = lderobj; } else crep = 192; @@ -459,10 +457,10 @@ void ajjer(int ob) { int cx = 0; do { ++cx; - } while ((cx <= 5) && (ord(s.sjer[cx]) != 0)); + } while ((cx <= 5) && (ord(g_s.sjer[cx]) != 0)); - if (ord(s.sjer[cx]) == 0) { - s.sjer[(cx)] = chr(ob); + if (ord(g_s.sjer[cx]) == 0) { + g_s.sjer[(cx)] = chr(ob); modinv(); } else crep = 139; @@ -472,7 +470,7 @@ void t1sama() { //Entering manor int j, h, m; calch(j, h, m); - if ((h < 5) && (s.mlieu > 18)) { + if ((h < 5) && (g_s.mlieu > 18)) { bool d; cherjer(137, d); if (!d) { //You don't have the keys, and it's late @@ -480,7 +478,7 @@ void t1sama() { //Entering manor tperd(); } else st1sama(); - } else if (!s.ipre) { //Is it your first time? + } else if (!g_s.ipre) { //Is it your first time? ipers = 255; affper(ipers); caff = 77; @@ -496,21 +494,21 @@ void t1sama() { //Entering manor dessine_rouleau(); drawClock(); showMouse(); - s.mlieu = 0; + g_s.mlieu = 0; affrep(); t5(10); if (! blo) t11(0, m); ipers = 0; mpers = 0; - s.ipre = true; + g_s.ipre = true; /*chech;*/ } else st1sama(); } void t1vier() { - s.mlieu = 17; + g_s.mlieu = 17; affrep(); } @@ -521,19 +519,19 @@ void t1neig() { tperd(); } else { okdes = true; - s.mlieu = 19; + g_s.mlieu = 19; affrep(); } } void t1deva() { inei = 0; - s.mlieu = 21; + g_s.mlieu = 21; affrep(); } void t1derr() { - s.mlieu = 22; + g_s.mlieu = 22; affrep(); } @@ -565,21 +563,21 @@ L1: parole(4, 4, 1); if (iouv == 0) - s.conf += 2; - else if (s.conf < 50) - s.conf += 4; + g_s.conf += 2; + else if (g_s.conf < 50) + g_s.conf += 4; else - s.conf += 3 * (s.conf / 10); + g_s.conf += 3 * (g_s.conf / 10); tsort(); tmlieu(15); int cx; tip(ipers, cx); caff = 69 + cx; crep = caff; - msg[3] = MENU_DISCUSS; - msg[4] = g_vm->_menu._discussMenu[cx]; + g_msg[3] = MENU_DISCUSS; + g_msg[4] = g_vm->_menu._discussMenu[cx]; syn = true; - col = true; + g_col = true; } else { int haz = hazard(1, 3); if (haz == 2) { @@ -618,7 +616,7 @@ void tsuiv() { caff = tbcl; crep = caff + 400; if (ipers != 0) - s.conf = s.conf + 2; + g_s.conf = g_s.conf + 2; } else { affrep(); finfouil(); @@ -631,7 +629,7 @@ void tfleche() { bool qust; char touch; - if (num == 9999) + if (g_num == 9999) return; fenat(chr(152)); @@ -650,14 +648,14 @@ void tfleche() { if (qust && (touch == '\103')) Alert::show(_hintPctMessage, 1); - } while (!((touch == '\73') || ((touch == '\104') && (g_x != 0) && (y != 0)) || (anyone) || (rect))); + } while (!((touch == '\73') || ((touch == '\104') && (g_x != 0) && (g_y != 0)) || (anyone) || (rect))); if (touch == '\73') iesc = true; if (rect) { g_x = x_s; - y = y_s; + g_y = y_s; } } @@ -666,7 +664,7 @@ void tcoord(int sx) { int ib; - num = 0; + g_num = 0; crep = 999; int a = 0; int atdon = amzon + 3; @@ -703,10 +701,10 @@ void tcoord(int sx) { ix = tabdon[a + cb] * res; iy = tabdon[(a + cb + 1)]; ++cy; - } while (!(((g_x >= sx) && (g_x <= ix) && (y >= sy) && (y <= iy)) || (cy > ib))); + } while (!(((g_x >= sx) && (g_x <= ix) && (g_y >= sy) && (g_y <= iy)) || (cy > ib))); - if ((g_x >= sx) && (g_x <= ix) && (y >= sy) && (y <= iy)) { - num = cy - 1; + if ((g_x >= sx) && (g_x <= ix) && (g_y >= sy) && (g_y <= iy)) { + g_num = cy - 1; return; } @@ -740,7 +738,7 @@ void treg(int ob) { int mdes = caff; caff = ob; - if (((caff > 29) && (caff < 33)) || (caff == 144) || (caff == 147) || (caff == 149) || (msg[4] == OPCODE_SLOOK)) { + if (((caff > 29) && (caff < 33)) || (caff == 144) || (caff == 147) || (caff == 149) || (g_msg[4] == OPCODE_SLOOK)) { afdes(0); if ((caff > 29) && (caff < 33)) repon(2, caff); @@ -748,7 +746,7 @@ void treg(int ob) { repon(2, (caff + 400)); tkey1(true); caff = mdes; - msg[3] = 0; + g_msg[3] = 0; crep = 998; } else { obpart = true; @@ -759,22 +757,22 @@ void treg(int ob) { void avpoing(int &ob) { crep = 999; - if (s.derobj != 0) - ajjer(s.derobj); + if (g_s.derobj != 0) + ajjer(g_s.derobj); if (crep != 139) { modobj(ob + 400); - s.derobj = ob; + g_s.derobj = ob; ob = 0; } } void rechai(int &ch) { - int cx = s.mlieu; + int cx = g_s.mlieu; - if (s.mlieu == 16) + if (g_s.mlieu == 16) cx = 14; - ch = tabdon[achai + (cx * 7) + num - 1]; + ch = tabdon[achai + (cx * 7) + g_num - 1]; } void t23coul(int &l) { @@ -789,7 +787,7 @@ void t23coul(int &l) { } void maivid() { - s.derobj = 0; + g_s.derobj = 0; modobj(500); } diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 50631663e1..7d0e7bc8ed 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -121,7 +121,7 @@ Common::ErrorCode MortevielleEngine::initialise() { _screenSurface.create(SCREEN_WIDTH, SCREEN_HEIGHT, Graphics::PixelFormat::createFormatCLUT8()); // Set the screen mode - _currGraphicalDevice = MODE_EGA; + g_currGraphicalDevice = MODE_EGA; res = 2; _txxFileFl = false; @@ -142,8 +142,8 @@ Common::ErrorCode MortevielleEngine::initialise() { // Setup the mouse cursor initMouse(); - _currGraphicalDevice = MODE_EGA; - _newGraphicalDevice = _currGraphicalDevice; + g_currGraphicalDevice = MODE_EGA; + g_newGraphicalDevice = g_currGraphicalDevice; zuul = false; tesok = false; charpal(); @@ -155,15 +155,15 @@ Common::ErrorCode MortevielleEngine::initialise() { initMouse(); init_lieu(); - _soundOff = false; + g_soundOff = false; f2_all = false; teskbd(); dialpre(); - _newGraphicalDevice = _currGraphicalDevice; + g_newGraphicalDevice = g_currGraphicalDevice; teskbd(); - if (_newGraphicalDevice != _currGraphicalDevice) - _currGraphicalDevice = _newGraphicalDevice; + if (g_newGraphicalDevice != g_currGraphicalDevice) + g_currGraphicalDevice = g_newGraphicalDevice; hirs(); ades = 0x7000; @@ -558,7 +558,7 @@ void MortevielleEngine::handleAction() { g_vm->_menu.drawMenu(); imen = true; temps = 0; - key = 0; + g_key = 0; funct = false; inkey = '.'; @@ -578,24 +578,24 @@ void MortevielleEngine::handleAction() { changeGraphicalDevice((uint)(ord(inkey) - 1) >> 1); return; } - if (choisi && (msg[3] == MENU_SAVE)) { - Common::String saveName = Common::String::format("Savegame #%d", msg[4] & 7); - g_vm->_savegameManager.saveGame(msg[4] & 7, saveName); + if (choisi && (g_msg[3] == MENU_SAVE)) { + Common::String saveName = Common::String::format("Savegame #%d", g_msg[4] & 7); + g_vm->_savegameManager.saveGame(g_msg[4] & 7, saveName); } - if (choisi && (msg[3] == MENU_LOAD)) - g_vm->_savegameManager.loadGame((msg[4] & 7) - 1); + if (choisi && (g_msg[3] == MENU_LOAD)) + g_vm->_savegameManager.loadGame((g_msg[4] & 7) - 1); if (inkey == '\103') { /* F9 */ temps = Alert::show(_hintPctMessage, 1); return; } else if (inkey == '\77') { - if ((mnumo != OPCODE_NONE) && ((msg[3] == MENU_ACTION) || (msg[3] == MENU_SELF))) { - msg[4] = mnumo; + if ((mnumo != OPCODE_NONE) && ((g_msg[3] == MENU_ACTION) || (g_msg[3] == MENU_SELF))) { + g_msg[4] = mnumo; ecr3(g_vm->getEngineString(S_IDEM)); } else return; } else if (inkey == '\104') { - if ((g_x != 0) && (y != 0)) - num = 9999; + if ((g_x != 0) && (g_y != 0)) + g_num = 9999; return; } } @@ -607,22 +607,22 @@ void MortevielleEngine::handleAction() { return; if (temps > lim) { repon(2, 141); - if (num == 9999) - num = 0; + if (g_num == 9999) + g_num = 0; } else { - mnumo = msg[3]; - if ((msg[3] == MENU_ACTION) || (msg[3] == MENU_SELF)) - mnumo = msg[4]; + mnumo = g_msg[3]; + if ((g_msg[3] == MENU_ACTION) || (g_msg[3] == MENU_SELF)) + mnumo = g_msg[4]; if (! anyone) { if ((fouil) || (obpart)) { if (y_s < 12) return; - if ((msg[4] == OPCODE_SOUND) || (msg[4] == OPCODE_LIFT)) { + if ((g_msg[4] == OPCODE_SOUND) || (g_msg[4] == OPCODE_LIFT)) { oo = true; - if ((msg[4] == OPCODE_LIFT) || (obpart)) { + if ((g_msg[4] == OPCODE_LIFT) || (obpart)) { finfouil(); - caff = s.mlieu; + caff = g_s.mlieu; crep = 998; } else tsuiv(); @@ -640,7 +640,7 @@ void MortevielleEngine::handleAction() { okdes = false; dessin(0); } - if ((! syn) || (col)) + if ((! syn) || (g_col)) repon(2, crep); } } while (syn); diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index d607b0597b..9baae57eb6 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -86,7 +86,7 @@ void hideMouse() { if (mouse_shwn == 0) { bool imp = odd(y_s); int j = p_o_s; - switch (_currGraphicalDevice) { + switch (g_currGraphicalDevice) { case MODE_CGA: { int k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); @@ -183,7 +183,7 @@ void showMouse() { j = p_o_s; imp = odd(y_s); i = x_s & 7; - switch (_currGraphicalDevice) { + switch (g_currGraphicalDevice) { case MODE_CGA: k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); @@ -418,7 +418,7 @@ void moveMouse(bool &funct, char &key) { cy = 8; break; case '\23': - _soundOff = !_soundOff; + g_soundOff = !g_soundOff; return; break; case '\26': diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index e1374d4f04..7b2dcabee9 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -174,7 +174,7 @@ void music() { bool fin; /* debug('o3 music'); */ - if (_soundOff) + if (g_soundOff) return; rech_cfiec = true; @@ -244,8 +244,8 @@ void suite() { caff = 51; taffich(); teskbd(); - if (_newGraphicalDevice != _currGraphicalDevice) - _currGraphicalDevice = _newGraphicalDevice; + if (g_newGraphicalDevice != g_currGraphicalDevice) + g_currGraphicalDevice = g_newGraphicalDevice; hirs(); dessine(ades, 0, 0); diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index 791bfd7d61..cbe460a43d 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -35,8 +35,8 @@ namespace Mortevielle { void spfrac(int wor) { c3.rep = (uint)wor >> 12; if ((typlec == 0) && (c3.code != 9)) - if (((c3.code > 4) && (c3.val != 20) && ((c3.rep != 3) && (c3.rep != 6) && (c3.rep != 9)) || - ((c3.code < 5) && ((c3.val != 19) && (c3.val != 22) && (c3.rep != 4) && (c3.rep != 9))))) { + if (((c3.code > 4) && (c3.val != 20) && (c3.rep != 3) && (c3.rep != 6) && (c3.rep != 9)) || + ((c3.code < 5) && ((c3.val != 19) && (c3.val != 22) && (c3.rep != 4) && (c3.rep != 9)))) { ++c3.rep; } diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index 19b44191b0..2402e37195 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -87,17 +87,17 @@ void parole(int rep, int ht, int typ) { int savph[501]; int tempo; - if (_soundOff) + if (g_soundOff) return; num_ph = rep; - haut = ht; + g_haut = ht; typlec = typ; if (typlec != 0) { for (int i = 0; i <= 500; ++i) savph[i] = t_cph[i]; tempo = tempo_bruit; - } else if (haut > 5) + } else if (g_haut > 5) tempo = tempo_f; else tempo = tempo_m; diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 635140f048..6dd8df10a6 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -45,7 +45,7 @@ namespace Mortevielle { */ void changeGraphicalDevice(int newDevice) { hideMouse(); - _currGraphicalDevice = newDevice; + g_currGraphicalDevice = newDevice; hirs(); initMouse(); showMouse(); @@ -58,7 +58,7 @@ void changeGraphicalDevice(int newDevice) { person(); clsf2(); clsf3(); - _maff = 68; + g_maff = 68; afdes(0); repon(2, crep); g_vm->_menu.displayMenu(); @@ -82,21 +82,21 @@ void MortevielleEngine::gameLoaded() { test[0] = false; test[1] = false; g[0] = '\040'; - col = false; + g_col = false; tesok = true; test[2] = false; g[7] = g[0]; g[2] = 'A'; cache = false; brt = false; - _maff = 68; + g_maff = 68; g[5] = 'E'; mnumo = 0; prebru = 0; g[4] = 'T'; g_x = 0; - y = 0; - num = 0; + g_y = 0; + g_num = 0; hdb = 0; hfb = 0; cs = 0; @@ -133,10 +133,10 @@ void MortevielleEngine::gameLoaded() { repon(2, crep); clsf3(); _endGame = false; - tmlieu(s.mlieu); + tmlieu(g_s.mlieu); modinv(); - if (s.derobj != 0) - modobj2(s.derobj + 400, test[1], test[2]); + if (g_s.derobj != 0) + modobj2(g_s.derobj + 400, test[1], test[2]); else tesok = test[1] || test[2]; showMouse(); @@ -153,82 +153,82 @@ void tmaj3() { m = 1; h += j * 24; m += h * 2; - s.heure = chr(m); + g_s.heure = chr(m); } void tsitu() { int h, j, m; - if (! col) + if (!g_col) clsf2(); syn = false; iesc = false; if (!anyone) { if (brt) - if ((msg[3] == MENU_MOVE) || (msg[4] == OPCODE_LEAVE) || (msg[4] == OPCODE_SLEEP) || (msg[4] == OPCODE_EAT)) { + if ((g_msg[3] == MENU_MOVE) || (g_msg[4] == OPCODE_LEAVE) || (g_msg[4] == OPCODE_SLEEP) || (g_msg[4] == OPCODE_EAT)) { ctrm = 4; mennor(); return; } - if (msg[3] == MENU_MOVE) + if (g_msg[3] == MENU_MOVE) fctMove(); - if (msg[3] == MENU_DISCUSS) + if (g_msg[3] == MENU_DISCUSS) fctDiscuss(); - if (msg[3] == MENU_INVENTORY) + if (g_msg[3] == MENU_INVENTORY) fctInventoryTake(); - if (msg[4] == OPCODE_ATTACH) + if (g_msg[4] == OPCODE_ATTACH) fctAttach(); - if (msg[4] == OPCODE_WAIT) + if (g_msg[4] == OPCODE_WAIT) fctWait(); - if (msg[4] == OPCODE_FORCE) + if (g_msg[4] == OPCODE_FORCE) fctForce(); - if (msg[4] == OPCODE_SLEEP) + if (g_msg[4] == OPCODE_SLEEP) fctSleep(); - if (msg[4] == OPCODE_LISTEN) + if (g_msg[4] == OPCODE_LISTEN) fctListen(); - if (msg[4] == OPCODE_ENTER) + if (g_msg[4] == OPCODE_ENTER) fctEnter(); - if (msg[4] == OPCODE_CLOSE) + if (g_msg[4] == OPCODE_CLOSE) fctClose(); - if (msg[4] == OPCODE_SEARCH) + if (g_msg[4] == OPCODE_SEARCH) fctSearch(); - if (msg[4] == OPCODE_KNOCK) + if (g_msg[4] == OPCODE_KNOCK) fctKnock(); - if (msg[4] == OPCODE_SCRATCH) + if (g_msg[4] == OPCODE_SCRATCH) fctScratch(); - if (msg[4] == OPCODE_READ) + if (g_msg[4] == OPCODE_READ) fctRead(); - if (msg[4] == OPCODE_EAT) + if (g_msg[4] == OPCODE_EAT) fctEat(); - if (msg[4] == OPCODE_PLACE) + if (g_msg[4] == OPCODE_PLACE) fctPlace(); - if (msg[4] == OPCODE_OPEN) + if (g_msg[4] == OPCODE_OPEN) fctOpen(); - if (msg[4] == OPCODE_TAKE) + if (g_msg[4] == OPCODE_TAKE) fctTake(); - if (msg[4] == OPCODE_LOOK) + if (g_msg[4] == OPCODE_LOOK) fctLook(); - if (msg[4] == OPCODE_SMELL) + if (g_msg[4] == OPCODE_SMELL) fctSmell(); - if (msg[4] == OPCODE_SOUND) + if (g_msg[4] == OPCODE_SOUND) fctSound(); - if (msg[4] == OPCODE_LEAVE) + if (g_msg[4] == OPCODE_LEAVE) fctLeave(); - if (msg[4] == OPCODE_LIFT) + if (g_msg[4] == OPCODE_LIFT) fctLift(); - if (msg[4] == OPCODE_TURN) + if (g_msg[4] == OPCODE_TURN) fctTurn(); - if (msg[4] == OPCODE_SSEARCH) + if (g_msg[4] == OPCODE_SSEARCH) fctSelfSearch(); - if (msg[4] == OPCODE_SREAD) + if (g_msg[4] == OPCODE_SREAD) fctSelfRead(); - if (msg[4] == OPCODE_SPUT) + if (g_msg[4] == OPCODE_SPUT) fctSelfPut(); - if (msg[4] == OPCODE_SLOOK) + if (g_msg[4] == OPCODE_SLOOK) fctSelftLook(); cache = false; - if (msg[4] == OPCODE_SHIDE) + if (g_msg[4] == OPCODE_SHIDE) fctSelfHide(); } else { if (anyone) { @@ -239,16 +239,16 @@ void tsitu() { } } calch(j, h, m); - if ((((h == 12) || (h == 13) || (h == 19)) && (s.mlieu != 10)) || - ((h > 0) && (h < 6) && (s.mlieu != 0))) - s.conf = s.conf + 1; - if (((s.mlieu < 16) || (s.mlieu > 19)) && (s.mlieu != 23) - && (s.mlieu != 0) && (s.derobj != 152) && (!g_vm->_loseGame)) { - if ((s.conf > 99) && (h > 8) && (h < 16)) { + if ((((h == 12) || (h == 13) || (h == 19)) && (g_s.mlieu != 10)) || + ((h > 0) && (h < 6) && (g_s.mlieu != 0))) + ++g_s.conf; + if (((g_s.mlieu < 16) || (g_s.mlieu > 19)) && (g_s.mlieu != 23) + && (g_s.mlieu != 0) && (g_s.derobj != 152) && (!g_vm->_loseGame)) { + if ((g_s.conf > 99) && (h > 8) && (h < 16)) { crep = 1501; tperd(); } - if ((s.conf > 99) && (h > 0) && (h < 9)) { + if ((g_s.conf > 99) && (h > 0) && (h < 9)) { crep = 1508; tperd(); } @@ -263,16 +263,16 @@ void tsitu() { /* NIVEAU 1 */ void theure() { - vj = ord(s.heure); + vj = ord(g_s.heure); vh = vj % 48; vj /= 48; vm = vh % 2; vh /= 2; - _hour = vh; + g_hour = vh; if (vm == 1) - _minute = 30; + g_minute = 30; else - _minute = 0; + g_minute = 0; } } // End of namespace Mortevielle diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 929b0880f6..7afaa47da0 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -85,7 +85,7 @@ void SavegameManager::takesav(int n) { Common::File f; if (stream == NULL) { if (!f.open(filename)) - error("Unable to open save file '%s'", filename); + error("Unable to open save file '%s'", filename.c_str()); stream = f.readStream(f.size()); f.close(); @@ -107,7 +107,7 @@ void SavegameManager::takesav(int n) { Common::Serializer sz(stream, NULL); sync_save(sz); - s = s1; + g_s = s1; for (i = 0; i <= 389; ++i) tabdon[i + acha] = bufcha[i]; @@ -143,7 +143,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { for (i = 0; i <= 389; ++i) bufcha[i] = tabdon[i + acha]; - s1 = s; + s1 = g_s; if (s1.mlieu == 26) s1.mlieu = 15; diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 82abc27989..1694387964 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -106,42 +106,42 @@ void taffich() { else if ((a >= 136) && (a <= 140)) a = tran1[a - 136]; int b = a; - if (_maff == a) + if (g_maff == a) return; switch (a) { case 16: - s.pourc[9] = '*'; - s.teauto[42] = '*'; + g_s.pourc[9] = '*'; + g_s.teauto[42] = '*'; break; case 20: - s.teauto[39] = '*'; - if (s.teauto[36] == '*') { - s.pourc[3] = '*'; - s.teauto[38] = '*'; + g_s.teauto[39] = '*'; + if (g_s.teauto[36] == '*') { + g_s.pourc[3] = '*'; + g_s.teauto[38] = '*'; } break; case 24: - s.teauto[37] = '*'; + g_s.teauto[37] = '*'; break; case 30: - s.teauto[9] = '*'; + g_s.teauto[9] = '*'; break; case 31: - s.pourc[4] = '*'; - s.teauto[35] = '*'; + g_s.pourc[4] = '*'; + g_s.teauto[35] = '*'; break; case 118: - s.teauto[41] = '*'; + g_s.teauto[41] = '*'; break; case 143: - s.pourc[1] = '*'; + g_s.pourc[1] = '*'; break; case 150: - s.teauto[34] = '*'; + g_s.teauto[34] = '*'; break; case 151: - s.pourc[2] = '*'; + g_s.pourc[2] = '*'; break; default: break; @@ -160,7 +160,7 @@ void taffich() { m = 2010; if (a == 32) m = 2034; - if ((a == 17) && (_maff == 14)) + if ((a == 17) && (g_maff == 14)) m = 2018; if (a > 99) if ((is == 1) || (is == 0)) @@ -169,10 +169,10 @@ void taffich() { 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))) + if (((a < 27) && (((g_maff > 69) && (!g_s.ipre)) || (g_maff > 99))) || ((g_maff > 29) && (g_maff < 33))) m = 2033; messint(m); - _maff = a; + g_maff = a; if (a == 159) a = 86; else if (a > 140) @@ -203,11 +203,11 @@ void taffich() { lgt = handle; handle = g_l[88]; } - _maff = a; + g_maff = a; npal = a + 37; } chardes(filename, lgt, handle); - if (_currGraphicalDevice == MODE_HERCULES) { + if (g_currGraphicalDevice == MODE_HERCULES) { for (int i = 0; i <= 15; ++i) { int palh = READ_LE_UINT16(&mem[(0x7000 * 16) + ((i + 1) << 1)]); alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); @@ -244,11 +244,11 @@ void taffich() { charani(filename, lgt, handle); } showMouse(); - if ((a < 27) && ((_maff < 27) || (s.mlieu == 15)) && (msg[4] != OPCODE_ENTER)) { + if ((a < 27) && ((g_maff < 27) || (g_s.mlieu == 15)) && (g_msg[4] != OPCODE_ENTER)) { if ((a == 13) || (a == 14)) person(); else if (! blo) - t11(s.mlieu, cx); + t11(g_s.mlieu, cx); mpers = 0; } } diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 42fab06f7c..138b604c3a 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -91,7 +91,7 @@ bool blo, bt7, bh9, - _soundOff, + g_soundOff, main1, choisi, test0, @@ -99,7 +99,7 @@ bool blo, imen, cache, iesc, - col, + g_col, syn, fouil, zuul, @@ -114,8 +114,8 @@ bool blo, int g_x, - y, - t, + g_y, + g_t, vj, li, vh, @@ -123,20 +123,19 @@ int g_x, jh, mh, cs, - _currGraphicalDevice, + g_currGraphicalDevice, hdb, hfb, - _hour, - _day, - key, - _minute, - num, - max, + g_hour, + g_day, + g_key, + g_minute, + g_num, res, ment, - haut, + g_haut, caff, - _maff, + g_maff, crep, ades, iouv, @@ -146,7 +145,7 @@ int g_x, msg3, msg4, mlec, - _newGraphicalDevice, + g_newGraphicalDevice, c_zzz, mchai, menup, @@ -162,7 +161,6 @@ int g_x, typlec, num_ph, numpal, - lderobj, nb_word, ptr_oct, k_tempo, @@ -179,9 +177,9 @@ byte mode; int nbrep[9]; int nbrepm[9]; -int msg[5]; +int g_msg[5]; byte touv[8]; -sav_chaine s, s1; +sav_chaine g_s, s1; byte bufcha[391]; byte lettres[7][24]; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 5769b61064..1ccea2c7b3 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -232,7 +232,7 @@ extern bool blo, bt7, bh9, - _soundOff, + g_soundOff, main1, choisi, test0, @@ -240,7 +240,7 @@ extern bool blo, imen, cache, iesc, - col, + g_col, syn, fouil, zuul, @@ -254,8 +254,8 @@ extern bool blo, extern int g_x, - y, - t, + g_y, + g_t, vj, li, vh, @@ -263,20 +263,19 @@ extern int g_x, jh, mh, cs, - _currGraphicalDevice, + g_currGraphicalDevice, hdb, hfb, - _hour, - _day, - key, - _minute, - num, - max, + g_hour, + g_day, + g_key, + g_minute, + g_num, res, ment, - haut, + g_haut, caff, - _maff, + g_maff, crep, ades, iouv, @@ -286,7 +285,7 @@ extern int g_x, msg3, msg4, mlec, - _newGraphicalDevice, + g_newGraphicalDevice, c_zzz, mchai, menup, @@ -302,7 +301,6 @@ extern int g_x, typlec, num_ph, numpal, - lderobj, nb_word, ptr_oct, k_tempo, @@ -319,9 +317,9 @@ extern byte mode; extern int nbrep[9]; extern int nbrepm[9]; -extern int msg[5]; +extern int g_msg[5]; extern byte touv[8]; -extern sav_chaine s, s1; +extern sav_chaine g_s, s1; extern byte bufcha[391]; extern byte lettres[7][24]; -- cgit v1.2.3 From 7764caaadee89b9eb1922acc93abf157ce84e4f7 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 2 Mar 2012 08:38:41 +0100 Subject: MORTEVIELLE: Start renaming globals --- engines/mortevielle/actions.cpp | 594 ++++++++++++++++++------------------ engines/mortevielle/dialogs.cpp | 34 +-- engines/mortevielle/graphics.cpp | 6 +- engines/mortevielle/keyboard.cpp | 4 +- engines/mortevielle/level15.cpp | 2 +- engines/mortevielle/menu.cpp | 122 ++++---- engines/mortevielle/mor.cpp | 250 +++++++-------- engines/mortevielle/mor2.cpp | 246 +++++++-------- engines/mortevielle/mortevielle.cpp | 64 ++-- engines/mortevielle/mouse.cpp | 24 +- engines/mortevielle/outtext.cpp | 2 +- engines/mortevielle/ovd1.cpp | 12 +- engines/mortevielle/parole.cpp | 10 +- engines/mortevielle/parole2.cpp | 38 +-- engines/mortevielle/prog.cpp | 86 +++--- engines/mortevielle/taffich.cpp | 10 +- engines/mortevielle/var_mor.cpp | 144 ++++----- engines/mortevielle/var_mor.h | 142 ++++----- 18 files changed, 896 insertions(+), 894 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 56c87efdf8..d115ef3976 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -51,17 +51,17 @@ void fctMove() { if ((g_s.mlieu == 26) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { g_s.mlieu = 15; - caff = g_s.mlieu; + g_caff = g_s.mlieu; afdes(0); repon(2, g_s.mlieu); } if ((g_s.mlieu == 15) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { - if (!syn) + if (!g_syn) ecr3(g_vm->getEngineString(S_GO_TO)); tfleche(); - if (iesc) - okdes = false; - if ((anyone) || (iesc)) + if (g_iesc) + g_okdes = false; + if ((g_anyone) || (g_iesc)) return; tcoord(1); if (g_num == 0) @@ -75,9 +75,9 @@ void fctMove() { } else if (g_num != 6) g_s.mlieu = 26; if ((g_num > 1) && (g_num < 6)) - ment = g_num - 1; + g_ment = g_num - 1; if (g_num > 7) - ment = g_num - 3; + g_ment = g_num - 3; if (g_num != 6) affrep(); else @@ -156,11 +156,11 @@ void fctMove() { t1derr(); else if (cx == 17) { if ((g_s.ipuit != 120) && (g_s.ipuit != 140)) - crep = 997; + g_crep = 997; else if (g_s.ipuit == 120) - crep = 181; + g_crep = 181; else if (g_s.conf > 80) { - crep = 1505; + g_crep = 1505; tperd(); } else { g_s.mlieu = 23; @@ -179,19 +179,19 @@ L2: * @remarks Originally called 'tprendre' */ void fctTake() { - if (caff > 99) { - int cx = caff; + if (g_caff > 99) { + int cx = g_caff; avpoing(cx); - if (crep != 139) { - if (ipers > 0) + if (g_crep != 139) { + if (g_ipers > 0) g_s.conf += 3; - if (obpart) { + if (g_obpart) { if (g_s.mlieu == 2) g_s.iloic = 0; if (g_s.mlieu == 13) { - if (g_s.iboul == caff) + if (g_s.iboul == g_caff) g_s.iboul = 0; - if (g_s.ibag == caff) + if (g_s.ibag == g_caff) g_s.ibag = 0; } if (g_s.mlieu == 14) @@ -203,29 +203,29 @@ void fctTake() { if (g_s.mlieu == 24) g_s.ipuit = 0; mfouen(); - obpart = false; + g_obpart = false; affrep(); } else { - tabdon[acha + ((mchai - 1) * 10) + cs - 1] = 0; + tabdon[acha + ((g_mchai - 1) * 10) + g_cs - 1] = 0; tsuiv(); - ++dobj; - if (dobj > 6) { + ++g_dobj; + if (g_dobj > 6) { g_s.conf += 2; - dobj = 0; + g_dobj = 0; } } } return; } - if (!syn) + if (!g_syn) ecr3(g_vm->getEngineString(S_TAKE)); tfleche(); - if ((anyone) || (iesc)) + if ((g_anyone) || (g_iesc)) return; - if (caff == 3) { + if (g_caff == 3) { tcoord(2); if (g_num == 1) { - crep = 152; + g_crep = 152; return; } } @@ -233,42 +233,42 @@ void fctTake() { if ((g_num == 0) || ((g_num == 1) && (g_s.mlieu == 16))) { tcoord(8); if (g_num != 0) { - if (ipers > 0) + if (g_ipers > 0) g_s.conf += 3; - crep = 997; + g_crep = 997; if ((g_s.mlieu == 2) && (g_s.iloic != 0)) avpoing(g_s.iloic); if ((g_s.mlieu == 13) && (g_num == 1) && (g_s.iboul != 0)) { avpoing(g_s.iboul); - if ((crep != 997) && (crep != 139)) + if ((g_crep != 997) && (g_crep != 139)) aniof(2, 7); } if ((g_s.mlieu == 13) && (g_num == 2) && (g_s.ibag != 0)) { avpoing(g_s.ibag); - if ((crep != 997) && (crep != 139)) + if ((g_crep != 997) && (g_crep != 139)) aniof(2, 6); } if ((g_s.mlieu == 14) && (g_s.icave != 0)) { avpoing(g_s.icave); - if ((crep != 997) && (crep != 139)) + if ((g_crep != 997) && (g_crep != 139)) aniof(2, 2); } if ((g_s.mlieu == 16) && (g_s.icryp != 0)) avpoing(g_s.icryp); if ((g_s.mlieu == 17) && (g_s.ivier != 0)) { avpoing(g_s.ivier); - if ((crep != 997) && (crep != 139)) { - crep = 182; + if ((g_crep != 997) && (g_crep != 139)) { + g_crep = 182; aniof(2, 1); } } if ((g_s.mlieu == 24) && (g_s.ipuit != 0)) { avpoing(g_s.ipuit); - if ((crep != 997) && (crep != 139)) + if ((g_crep != 997) && (g_crep != 139)) aniof(2, 1); } - if ((crep != 997) && (crep != 182) && (crep != 139)) - crep = 999; + if ((g_crep != 997) && (g_crep != 182) && (g_crep != 139)) + g_crep = 999; } } else { if ( ((g_s.mlieu == 0) && (g_num == 3)) || ((g_s.mlieu == 1) && (g_num == 4)) @@ -278,12 +278,12 @@ void fctTake() { || ((g_s.mlieu == 9) && (g_num == 4)) || ((g_s.mlieu == 10) && (g_num > 2)) || ((g_s.mlieu == 11) && (g_num == 7)) || ((g_s.mlieu == 12) && (g_num == 6)) || ((g_s.mlieu == 13) && (g_num > 4)) || ((g_s.mlieu > 13) && (g_s.mlieu != 23)) ) - crep = 997; + g_crep = 997; else if (g_s.mlieu == 23) { - crep = 1504; + g_crep = 1504; tperd(); } else - crep = 120; + g_crep = 120; } } /** @@ -308,7 +308,7 @@ void fctInventoryTake() { g_s.sjer[cy] = chr(0); modinv(); avpoing(cz); - crep = 998; + g_crep = 998; clsf2(); } @@ -319,33 +319,33 @@ void fctInventoryTake() { void fctLift() { int cx; - if (!syn) + if (!g_syn) ecr3(g_vm->getEngineString(S_LIFT)); tfleche(); - if ((anyone) || (iesc)) + if ((g_anyone) || (g_iesc)) return; tcoord(3); if (g_num == 0) { tcoord(8); if (g_num != 0) { - if (ipers > 0) + if (g_ipers > 0) ++g_s.conf; - crep = 997; + g_crep = 997; if ((g_s.mlieu == 2) && (g_s.iloic != 0)) treg(g_s.iloic); } return; } - if (ipers > 0) + if (g_ipers > 0) ++g_s.conf; cx = g_s.mlieu; if (g_s.mlieu == 16) cx = 14; else if (g_s.mlieu == 19) cx = 15; - crep = tabdon[asoul + (cx << 3) + (g_num - 1)]; - if (crep == 255) - crep = 997; + g_crep = tabdon[asoul + (cx << 3) + (g_num - 1)]; + if (g_crep == 255) + g_crep = 997; } /** @@ -353,16 +353,16 @@ void fctLift() { * @remarks Originally called 'tlire' */ void fctRead() { - if (caff > 99) - st4(caff); + if (g_caff > 99) + st4(g_caff); else { - if (!syn) + if (!g_syn) ecr3(g_vm->getEngineString(S_READ)); tfleche(); - if (!(anyone) && !(iesc)) { + if (!(g_anyone) && !(g_iesc)) { tcoord(4); if (g_num != 0) - crep = 107; + g_crep = 107; } } } @@ -373,7 +373,7 @@ void fctRead() { */ void fctSelfRead() { if (g_s.derobj == 0) - crep = 186; + g_crep = 186; else st4(g_s.derobj); } @@ -385,45 +385,45 @@ void fctSelfRead() { void fctLook() { int cx; - if (caff > 99) { - crep = 103; + if (g_caff > 99) { + g_crep = 103; return; } - if (!syn) + if (!g_syn) ecr3(g_vm->getEngineString(S_LOOK)); tfleche(); - if ((anyone) || (iesc)) + if ((g_anyone) || (g_iesc)) return; tcoord(5); if (g_num == 0) { tcoord(8); - crep = 131; + g_crep = 131; if (g_num != 0) { if (g_s.mlieu == 13) { if (g_num == 1) { - crep = 164; + g_crep = 164; if (g_s.ibag != 0) treg(g_s.ibag); else if (g_s.iboul != 0) treg(g_s.iboul); } else { - crep = 193; + g_crep = 193; if (g_s.ibag != 0) treg(g_s.ibag); } } if (g_s.mlieu == 14) { - crep = 164; + g_crep = 164; if (g_s.icave != 0) treg(g_s.icave); } if (g_s.mlieu == 17) { - crep = 174; + g_crep = 174; if (g_s.ivier != 0) treg(g_s.ivier); } if (g_s.mlieu == 24) { - crep = 131; + g_crep = 131; if (g_s.ipuit != 0) treg(g_s.ipuit); } @@ -437,13 +437,13 @@ void fctLook() { cx -= 4; if (g_s.mlieu == 26) cx = 21; - crep = tabdon[arega + (cx * 7) + g_num - 1]; + g_crep = tabdon[arega + (cx * 7) + g_num - 1]; if ((g_s.mlieu == 13) && (g_num == 8)) - crep = 126; + g_crep = 126; if (g_s.mlieu == 19) - crep = 103; - if (crep == 255) - crep = 131; + g_crep = 103; + if (g_crep == 255) + g_crep = 131; if ((g_s.mlieu == 1) && (g_num == 1)) treg(144); if ((g_s.mlieu == 5) && (g_num == 3)) @@ -464,7 +464,7 @@ void fctSelftLook() { if (g_s.derobj != 0) treg(g_s.derobj); else - crep = 186; + g_crep = 186; } /** @@ -474,20 +474,20 @@ void fctSelftLook() { void fctSearch() { const byte r[14] = {123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}; - if (caff > 99) { - st7(caff); + if (g_caff > 99) { + st7(g_caff); return; } - if (!syn) + if (!g_syn) ecr3(g_vm->getEngineString(S_SEARCH)); tfleche(); - if (anyone || iesc) + if (g_anyone || g_iesc) return; if (g_s.mlieu == 23) { - crep = 1504; + g_crep = 1504; tperd(); return; } @@ -501,35 +501,35 @@ void fctSearch() { ++cx; } while ((cx <= 6) && (g_num != ord(touv[cx]))); if (g_num != ord(touv[cx])) - crep = 187; + g_crep = 187; else { - if (ipers > 0) + if (g_ipers > 0) g_s.conf += 3; - rechai(mchai); - if (mchai != 0) { - cs = 0; + rechai(g_mchai); + if (g_mchai != 0) { + g_cs = 0; is = 0; - fouil = true; + g_fouil = true; mfoudi(); tsuiv(); } else - crep = 997; + g_crep = 997; } } else { tcoord(8); - crep = 997; + g_crep = 997; if (g_num != 0) { - if (ipers > 0) + if (g_ipers > 0) g_s.conf += 3; if ((g_s.mlieu != 24) && (g_s.mlieu != 17) && (g_s.mlieu != 13)) { if (g_s.mlieu == 2) { - crep = 123; + g_crep = 123; if (g_s.iloic != 0) treg(g_s.iloic); } if (g_s.mlieu == 16) { - crep = 123; + g_crep = 123; if (g_s.icryp != 0) treg(g_s.icryp); } @@ -537,26 +537,26 @@ void fctSearch() { } } } else { - if (ipers > 0) + if (g_ipers > 0) g_s.conf += 3; - crep = 997; + g_crep = 997; if (g_s.mlieu < 14) - crep = r[g_s.mlieu]; + g_crep = r[g_s.mlieu]; if ((g_s.mlieu == 3) && (g_num == 2)) - crep = 162; + g_crep = 162; if (g_s.mlieu == 12) { if ((g_num == 3) || (g_num == 4)) - crep = 162; + g_crep = 162; else if (g_num == 5) - crep = 159; + g_crep = 159; } if (g_s.mlieu == 19) - crep = 104; + g_crep = 104; else if (g_s.mlieu == 16) - crep = 155; + g_crep = 155; } } @@ -568,7 +568,7 @@ void fctSelfSearch() { if (g_s.derobj != 0) st7(g_s.derobj); else - crep = 186; + g_crep = 186; } /** @@ -576,32 +576,32 @@ void fctSelfSearch() { * @remarks Originally called 'touvrir' */ void fctOpen() { - if (!syn) + if (!g_syn) ecr3(g_vm->getEngineString(S_OPEN)); - if (caff == 26) { - if (ment != 0) { + if (g_caff == 26) { + if (g_ment != 0) { g_msg[4] = OPCODE_ENTER; - syn = true; + g_syn = true; } else - crep = 997; + g_crep = 997; return; } - if (caff == 15) { + if (g_caff == 15) { aldepl(); return; } tfleche(); - if ((anyone) || (iesc)) + if ((g_anyone) || (g_iesc)) return; tcoord(7); if (g_num != 0) { - if (ipers > 0) + if (g_ipers > 0) g_s.conf += 2; - ++iouv; + ++g_iouv; int cx = 0; do { ++cx; @@ -625,11 +625,11 @@ void fctOpen() { cx = g_s.mlieu; if (g_s.mlieu == 16) cx = 14; - crep = tabdon[aouvr + (cx * 7) + g_num - 1]; - if (crep == 254) - crep = 999; + g_crep = tabdon[aouvr + (cx * 7) + g_num - 1]; + if (g_crep == 254) + g_crep = 999; } else - crep = 18; + g_crep = 18; } } @@ -639,34 +639,34 @@ void fctOpen() { */ void fctPlace() { if (g_s.derobj == 0) { - crep = 186; + g_crep = 186; return; } - if (!syn) + if (!g_syn) ecr3(g_vm->getEngineString(S_PUT)); tfleche(); - if (iesc) - crep = 998; + if (g_iesc) + g_crep = 998; - if ((anyone) || (iesc)) + if ((g_anyone) || (g_iesc)) return; tcoord(8); if (g_num != 0) { - crep = 999; - if (caff == 13) { + g_crep = 999; + if (g_caff == 13) { if (g_num == 1) { if (g_s.iboul != 0) { - crep = 188; + g_crep = 188; } else { g_s.iboul = g_s.derobj; if (g_s.derobj == 141) aniof(1, 7); } } else if (g_s.ibag != 0) { - crep = 188; + g_crep = 188; } else { g_s.ibag = g_s.derobj; if (g_s.derobj == 159) @@ -674,9 +674,9 @@ void fctPlace() { } } - if (caff == 14) { + if (g_caff == 14) { if (g_s.icave != 0) { - crep = 188; + g_crep = 188; } else { g_s.icave = g_s.derobj; if (g_s.derobj == 151) { @@ -693,7 +693,7 @@ void fctPlace() { Common::String alertTxt = deline(582); Alert::show(alertTxt, 1); - tesok = false; + g_tesok = false; bool enterPassageFl = Ques::show(); hideMouse(); hirs(); @@ -703,8 +703,8 @@ void fctPlace() { showMouse(); tinke(); drawClock(); - if (ipers != 0) - affper(ipers); + if (g_ipers != 0) + affper(g_ipers); else person(); @@ -721,50 +721,50 @@ void fctPlace() { alertTxt = deline(577); Alert::show(alertTxt, 1); aniof(2, 1); - crep = 166; + g_crep = 166; } affrep(); } else { aniof(2, 1); - crep = 166; - tesok = true; + g_crep = 166; + g_tesok = true; } return; } } } - if (caff == 16) { + if (g_caff == 16) { if (g_s.icryp == 0) g_s.icryp = g_s.derobj; else - crep = 188; + g_crep = 188; } - if (caff == 17) { + if (g_caff == 17) { if (g_s.ivier != 0) { - crep = 188; + g_crep = 188; } else if (g_s.derobj == 143) { g_s.ivier = 143; aniof(1, 1); } else { - crep = 1512; + g_crep = 1512; tperd(); } } - if (caff == 24) { + if (g_caff == 24) { if (g_s.ipuit != 0) { - crep = 188; + g_crep = 188; } else if ((g_s.derobj == 140) || (g_s.derobj == 120)) { g_s.ipuit = g_s.derobj; aniof(1, 1); } else { - crep = 185; + g_crep = 185; } } - if (crep != 188) + if (g_crep != 188) maivid(); } } @@ -774,18 +774,18 @@ void fctPlace() { * @remarks Originally called 'ttourner' */ void fctTurn() { - if (caff > 99) { - crep = 149; + if (g_caff > 99) { + g_crep = 149; return; } - if (!syn) + if (!g_syn) ecr3(g_vm->getEngineString(S_TURN)); tfleche(); - if ((anyone) || (iesc)) + if ((g_anyone) || (g_iesc)) return; tcoord(9); if (g_num != 0) { - crep = 997; + g_crep = 997; if ((g_s.mlieu == 13) && (g_s.ibag == 159) && (g_s.iboul == 141)) { repon(2, 167); parole(7, 9, 1); @@ -793,7 +793,7 @@ void fctTurn() { if (answer == 1) g_vm->_endGame = true; else - crep = 168; + g_crep = 168; } if ((g_s.mlieu == 17) && (g_s.ivier == 143)) { repon(2, 175); @@ -804,7 +804,7 @@ void fctTurn() { g_s.mlieu = 16; affrep(); } else - crep = 176; + g_crep = 176; } } } @@ -814,16 +814,16 @@ void fctTurn() { * @remarks Originally called 'tcacher' */ void fctSelfHide() { - if (!syn) + if (!g_syn) ecr3(g_vm->getEngineString(S_HIDE_SELF)); tfleche(); - if (!(anyone) && !(iesc)) { + if (!(g_anyone) && !(g_iesc)) { tcoord(10); if (g_num == 0) - cache = false; + g_cache = false; else { - cache = true; - crep = 999; + g_cache = true; + g_crep = 999; } } } @@ -834,21 +834,21 @@ void fctSelfHide() { */ void fctAttach() { if (g_s.derobj == 0) - crep = 186; + g_crep = 186; else { - if (!syn) + if (!g_syn) ecr3(g_vm->getEngineString(S_TIE)); tfleche(); - if (!(anyone) && !(iesc)) { + if (!(g_anyone) && !(g_iesc)) { tcoord(8); - crep = 997; + g_crep = 997; if ((g_num != 0) && (g_s.mlieu == 24)) { - crep = 999; + g_crep = 999; if ((g_s.derobj == 120) || (g_s.derobj == 140)) { g_s.ipuit = g_s.derobj; aniof(1, 1); } else - crep = 185; + g_crep = 185; maivid(); } } @@ -860,14 +860,14 @@ void fctAttach() { * @remarks Originally called 'tfermer' */ void fctClose() { - if (!syn) + if (!g_syn) ecr3(g_vm->getEngineString(S_CLOSE)); - if (caff < 26) { + if (g_caff < 26) { tfleche(); - if (iesc) - crep = 998; - if ((anyone) || (iesc)) + if (g_iesc) + g_crep = 998; + if ((g_anyone) || (g_iesc)) return; tcoord(7); if (g_num != 0) { @@ -877,20 +877,22 @@ void fctClose() { } while ((cx <= 6) && (g_num != ord(touv[cx]))); if (g_num == ord(touv[cx])) { aniof(2, g_num); - crep = 998; + g_crep = 998; touv[cx] = chr(0); - iouv = iouv - 1; - if (iouv < 0) - iouv = 0; + --g_iouv; + if (g_iouv < 0) + g_iouv = 0; int chai = 9999; rechai(chai); - if (mchai == chai) - mchai = 0; - } else crep = 187; + if (g_mchai == chai) + g_mchai = 0; + } else { + g_crep = 187; + } } } - if (caff == 26) - crep = 999; + if (g_caff == 26) + g_crep = 999; } /** @@ -898,7 +900,7 @@ void fctClose() { * @remarks Originally called 'tfrapper' */ void fctKnock() { - if (!syn) + if (!g_syn) ecr3(g_vm->getEngineString(S_HIT)); if (g_s.mlieu == 15) { @@ -908,11 +910,11 @@ void fctKnock() { if (g_s.mlieu < 25) { tfleche(); - if (!(anyone) && !(iesc)) { + if (!(g_anyone) && !(g_iesc)) { if ((g_s.mlieu < 19) && (g_s.mlieu != 15)) - crep = 133; + g_crep = 133; else - crep = 997; + g_crep = 997; } return; @@ -922,12 +924,12 @@ void fctKnock() { int haz = (hazard(0, 8)) - 4; parole(11, haz, 1); int p; - ecfren(p, haz, g_s.conf, ment); - int l = ment; + ecfren(p, haz, g_s.conf, g_ment); + int l = g_ment; if (l != 0) { if (p != -500) { if (haz > p) - crep = 190; + g_crep = 190; else { becfren(l); frap(); @@ -936,8 +938,8 @@ void fctKnock() { frap(); } - if (ment == 8) - crep = 190; + if (g_ment == 8) + g_crep = 190; } } @@ -946,90 +948,90 @@ void fctKnock() { * @remarks Originally called 'tposer' */ void fctSelfPut() { - if (!syn) + if (!g_syn) ecr3(g_vm->getEngineString(S_POSE)); if (g_s.derobj == 0) - crep = 186; + g_crep = 186; else { - if (caff > 99) { - crep = 999; + if (g_caff > 99) { + g_crep = 999; ajchai(); - if (crep != 192) + if (g_crep != 192) maivid(); return; } tfleche(); - if ((anyone) || (iesc)) + if ((g_anyone) || (g_iesc)) return; tcoord(7); - crep = 124; + g_crep = 124; if (g_num != 0) { int chai; rechai(chai); if (chai == 0) - crep = 997; + g_crep = 997; else { int cx = 0; do { ++cx; } while ((cx <= 6) && (g_num != ord(touv[cx]))); if (g_num != ord(touv[cx])) - crep = 187; + g_crep = 187; else { - mchai = chai; - crep = 999; + g_mchai = chai; + g_crep = 999; } } } else { tcoord(8); if (g_num != 0) { - crep = 998; - if (caff == 2) { + g_crep = 998; + if (g_caff == 2) { if (g_s.iloic != 0) - crep = 188; + g_crep = 188; else g_s.iloic = g_s.derobj; } - if (caff == 13) { + if (g_caff == 13) { if (g_num == 1) { if (g_s.iboul != 0) - crep = 188; + g_crep = 188; else g_s.iboul = g_s.derobj; } else if (g_s.ibag != 0) { - crep = 188; + g_crep = 188; } else { g_s.ibag = g_s.derobj; } } - if (caff == 16) { + if (g_caff == 16) { if (g_s.icryp != 0) - crep = 188; + g_crep = 188; else g_s.icryp = g_s.derobj; } - if (caff == 24) - crep = 185; - if ((caff == 14) || (caff == 17)) - crep = 124; + if (g_caff == 24) + g_crep = 185; + if ((g_caff == 14) || (g_caff == 17)) + g_crep = 124; } else { - crep = 124; - if (caff == 24) { + g_crep = 124; + if (g_caff == 24) { tcoord(5); if (g_num != 0) - crep = 185; + g_crep = 185; } } } - if (caff == 23) - crep = 185; - if ((crep == 999) || (crep == 185) || (crep == 998)) { - if (crep == 999) + if (g_caff == 23) + g_crep = 185; + if ((g_crep == 999) || (g_crep == 185) || (g_crep == 998)) { + if (g_crep == 999) ajchai(); - if (crep != 192) + if (g_crep != 192) maivid(); } } @@ -1041,17 +1043,17 @@ void fctSelfPut() { */ void fctListen() { if (g_s.mlieu != 26) - crep = 101; + g_crep = 101; else { - if (ipers != 0) + if (g_ipers != 0) ++g_s.conf; int p, haz; - ecfren(p, haz, g_s.conf, ment); - int l = ment; + ecfren(p, haz, g_s.conf, g_ment); + int l = g_ment; if (l != 0) { if (p != -500) { if (haz > p) - crep = 101; + g_crep = 101; else { becfren(l); int j, h, m; @@ -1059,16 +1061,16 @@ void fctListen() { haz = hazard(1, 100); if ((h >= 0) && (h < 8)) { if (haz > 30) - crep = 101; + g_crep = 101; else - crep = 178; + g_crep = 178; } else if (haz > 70) - crep = 101; + g_crep = 101; else - crep = 178; + g_crep = 178; } } else - crep = 178; + g_crep = 178; } } } @@ -1079,11 +1081,11 @@ void fctListen() { */ void fctEat() { if ((g_s.mlieu > 15) && (g_s.mlieu < 26)) { - crep = 148; + g_crep = 148; } else { tsort(); g_s.mlieu = 10; - caff = 10; + g_caff = 10; debloc(g_s.mlieu); tmlieu(g_s.mlieu); @@ -1105,11 +1107,11 @@ void fctEat() { h = 1; } - jh += h; - crep = 135; + g_jh += h; + g_crep = 135; tinke(); } else { - crep = 134; + g_crep = 134; } } } @@ -1126,18 +1128,18 @@ void fctEnter() { tmlieu(g_s.mlieu); } else if (g_s.mlieu == 15) aldepl(); - else if (ment == 0) - crep = 997; - else if ((ment == 9) && (g_s.derobj != 136)) { - crep = 189; + else if (g_ment == 0) + g_crep = 997; + else if ((g_ment == 9) && (g_s.derobj != 136)) { + g_crep = 189; g_s.teauto[8] = '*'; } else { int z = 0; - if (! blo) - t11(ment, z); + if (!g_blo) + t11(g_ment, z); if (z != 0) { - if ((ment == 3) || (ment == 7)) - crep = 179; + if ((g_ment == 3) || (g_ment == 7)) + g_crep = 179; else { g_x = (hazard(0, 10)) - 5; parole(7, g_x, 1); @@ -1148,29 +1150,29 @@ void fctEnter() { g_s.mlieu = 15; g_msg[3] = MENU_DISCUSS; g_msg[4] = g_vm->_menu._discussMenu[g_x]; - syn = true; - if (ment == 9) { + g_syn = true; + if (g_ment == 9) { g_col = true; - caff = 70; + g_caff = 70; afdes(0); - repon(2, caff); + repon(2, g_caff); } else g_col = false; - debloc(ment); - ment = 0; + debloc(g_ment); + g_ment = 0; } } else { g_x = (hazard(0, 10)) - 5; parole(7, g_x, 1); aniof(1, 1); - g_s.mlieu = ment; + g_s.mlieu = g_ment; affrep(); debloc(g_s.mlieu); tmlieu(g_s.mlieu); - ment = 0; - mpers = 0; - ipers = 0; + g_ment = 0; + g_mpers = 0; + g_ipers = 0; } } } @@ -1183,7 +1185,7 @@ void fctSleep() { int z, j, h, m; if ((g_s.mlieu > 15) && (g_s.mlieu < 26)) { - crep = 148; + g_crep = 148; return; } if (g_s.mlieu != 0) { @@ -1207,18 +1209,18 @@ void fctSleep() { z = (7 - h) * 2; if (m == 30) --z; - jh += z; + g_jh += z; h = 7; } - jh += 2; + g_jh += 2; ++h; if (h > 23) h = 0; tinke(); answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); - anyone = false; + g_anyone = false; } while (answer != 1); - crep = 998; + g_crep = 998; g_num = 0; } @@ -1227,16 +1229,16 @@ void fctSleep() { * @remarks Originally called 'tdefoncer' */ void fctForce() { - if (!syn) + if (!g_syn) ecr3(g_vm->getEngineString(S_SMASH)); - if (caff < 25) + if (g_caff < 25) tfleche(); - if ((! anyone) && (! iesc)) { + if ((!g_anyone) && (!g_iesc)) { if (g_s.mlieu != 26) - crep = 997; + g_crep = 997; else { - crep = 143; + g_crep = 143; g_s.conf += 2; } } @@ -1248,9 +1250,9 @@ void fctForce() { */ void fctLeave() { tsort(); - crep = 0; + g_crep = 0; if ((g_s.mlieu == 19) || (g_s.mlieu == 21) || (g_s.mlieu == 22) || (g_s.mlieu == 24)) - crep = 997; + g_crep = 997; else { int lx = 0; @@ -1262,17 +1264,17 @@ void fctLeave() { lx = 15; if (g_s.mlieu == 16) { lx = 17; - crep = 176; + g_crep = 176; } if (g_s.mlieu == 17) t23coul(lx); if (g_s.mlieu == 23) lx = 24; - if (crep != 997) + if (g_crep != 997) g_s.mlieu = lx; - caff = lx; - if (crep == 0) - crep = lx; + g_caff = lx; + if (g_crep == 0) + g_crep = lx; debloc(lx); tmlieu(lx); } @@ -1285,31 +1287,31 @@ void fctLeave() { void fctWait() { int quel; - mpers = 0; + g_mpers = 0; clsf3(); int answer; do { - ++jh; + ++g_jh; tinke(); - if (!blo) + if (!g_blo) t11(g_s.mlieu, quel); - if ((ipers != 0) && (mpers == 0)) { - crep = 998; + if ((g_ipers != 0) && (g_mpers == 0)) { + g_crep = 998; if ((g_s.mlieu == 13) || (g_s.mlieu == 14)) cavegre(); if ((g_s.mlieu > 0) && (g_s.mlieu < 10)) - anyone = true; - mpers = ipers; - if (!anyone) + g_anyone = true; + g_mpers = g_ipers; + if (!g_anyone) tinke(); return; } repon(2, 102); answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); } while (answer != 2); - crep = 998; - if (!anyone) + g_crep = 998; + if (!g_anyone) tinke(); } @@ -1318,12 +1320,12 @@ void fctWait() { * @remarks Originally called 'tsonder' */ void fctSound() { - if (!syn) + if (!g_syn) ecr3(g_vm->getEngineString(S_PROBE2)); - if (caff < 27) { + if (g_caff < 27) { tfleche(); - if (!(anyone) && (!iesc)) - crep = 145; + if (!(g_anyone) && (!g_iesc)) + g_crep = 145; g_num = 0; } } @@ -1347,10 +1349,10 @@ void fctDiscuss() { do { ++cx; } while (g_vm->_menu._discussMenu[cx] != g_msg[4]); - caff = 69 + cx; + g_caff = 69 + cx; afdes(0); - repon(2, caff); - suj = caff + 60; + repon(2, g_caff); + suj = g_caff + 60; } tkey1(false); mennor(); @@ -1398,7 +1400,7 @@ void fctDiscuss() { CHECK_QUIT; getMousePos(x, y, c); - x *= (3 - res); + x *= (3 - g_res); if (x > 319) cx = 41; else @@ -1461,7 +1463,7 @@ void fctDiscuss() { if (g_col) { g_col = false; g_s.mlieu = 15; - if (iouv > 0) + if (g_iouv > 0) max = 8; else max = 4; @@ -1472,10 +1474,10 @@ void fctDiscuss() { suj = 138; g_s.conf += (3 * (g_s.conf / 10)); } - } else if (nbrep[caff - 69] < nbrepm[caff - 69]) { - suj = tabdon[arep + (ix << 3) + (caff - 70)]; + } else if (nbrep[g_caff - 69] < nbrepm[g_caff - 69]) { + suj = tabdon[arep + (ix << 3) + (g_caff - 70)]; g_s.conf += tabdon[arcf + ix]; - ++nbrep[caff - 69]; + ++nbrep[g_caff - 69]; } else { g_s.conf += 3; suj = 139; @@ -1513,12 +1515,12 @@ void fctDiscuss() { g_col = false; g_s.mlieu = 15; } - ctrm = 0; + g_ctrm = 0; hideMouse(); hirs(); dessine_rouleau(); showMouse(); - affper(ipers); + affper(g_ipers); tinke(); drawClock(); affrep(); @@ -1532,16 +1534,16 @@ void fctDiscuss() { * @remarks Originally called 'tsentir' */ void fctSmell() { - crep = 119; - if (caff < 26) { - if (!syn) + g_crep = 119; + if (g_caff < 26) { + if (!g_syn) ecr3(g_vm->getEngineString(S_SMELL)); tfleche(); - if (!(anyone) && !(iesc)) - if (caff == 16) - crep = 153; - } else if (caff == 123) - crep = 110; + if (!(g_anyone) && !(g_iesc)) + if (g_caff == 16) + g_crep = 153; + } else if (g_caff == 123) + g_crep = 110; g_num = 0; } @@ -1550,9 +1552,9 @@ void fctSmell() { * @remarks Originally called 'tgratter' */ void fctScratch() { - crep = 155; - if (caff < 27) { - if (!syn) + g_crep = 155; + if (g_caff < 27) { + if (!g_syn) ecr3(g_vm->getEngineString(S_SCRATCH)); tfleche(); } @@ -1573,7 +1575,7 @@ void MortevielleEngine::endGame() { repon(9, 1509); tkey1(false); hideMouse(); - caff = 70; + g_caff = 70; taffich(); hirs(); premtet(); @@ -1583,7 +1585,7 @@ void MortevielleEngine::endGame() { repon(9, 1509); repon(2, 142); tkey1(false); - caff = 32; + g_caff = 32; afdes(0); repon(6, 34); repon(2, 35); @@ -1607,9 +1609,9 @@ void MortevielleEngine::loseGame() { maivid(); inzon(); dprog(); - vh = 10; - vm = 0; - vj = 0; + g_vh = 10; + g_vm__ = 0; + g_vj = 0; g_minute = 0; g_hour = 10; g_day = 0; diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index fec8b2f81f..96264c8b5d 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -78,7 +78,7 @@ int Alert::show(const Common::String &msg, int n) { while ((chaine[i + 1] != '\174') && (chaine[i + 1] != '\135')) { ++i; st = st + chaine[i]; - if (res == 2) + if (g_res == 2) cx -= 3; else cx -= 5; @@ -95,12 +95,12 @@ int Alert::show(const Common::String &msg, int n) { esp = (uint)(nbcol - caseNumb * 40) >> 1; coldep = 320 - ((uint)nbcol >> 1) + ((uint)esp >> 1); setButtonText(cas, coldep, caseNumb, &s[0], esp); - limit[1][1] = ((uint)(coldep) >> 1) * res; + limit[1][1] = ((uint)(coldep) >> 1) * g_res; limit[1][2] = limit[1][1] + 40; if (caseNumb == 1) { limit[2][1] = limit[2][2]; } else { - limit[2][1] = ((uint)(320 + ((uint)esp >> 1)) >> 1) * res; + limit[2][1] = ((uint)(320 + ((uint)esp >> 1)) >> 1) * g_res; limit[2][2] = (limit[2][1]) + 40; } showMouse(); @@ -221,7 +221,7 @@ void Alert::decodeAlertDetails(Common::String inputStr, int &choiceNumb, int &li } ++i; choiceListStr = copy(inputStr, i, 30); - if (res == 2) + if (g_res == 2) col *= 6; else col *= 10; @@ -308,7 +308,7 @@ bool Ques::show() { showMouse(); ++indx; int dialogHeight; - if (res == 1) + if (g_res == 1) dialogHeight = 29; else dialogHeight = 23; @@ -338,8 +338,8 @@ bool Ques::show() { for (int j = 1; j <= lastOption - firstOption + 1; ++j) { rectangle &with = coor[j]; - with.x1 = 45 * res; - with.x2 = (maxLength * 3 + 55) * res; + with.x1 = 45 * g_res; + with.x2 = (maxLength * 3 + 55) * g_res; with.y1 = 27 + j * 8; with.y2 = 34 + j * 8; with.enabled = true; @@ -349,7 +349,7 @@ bool Ques::show() { } } coor[lastOption - firstOption + 2].enabled = false; - if (res == 1) + if (g_res == 1) rep = 10; else rep = 6; @@ -360,7 +360,7 @@ bool Ques::show() { warning("Expected answer: %d", correctAnswerArr[indx]); do { g_vm->setMouseClick(false); - tesok = false; + g_tesok = false; bool flag; moveMouse(flag, key); CHECK_QUIT0; @@ -400,7 +400,7 @@ bool Ques::show() { warning("Skipping protection check: testprot()"); protectionCheck = true; // tesok is set to true in testprot() - tesok = true; + g_tesok = true; } } while (indx != 10); @@ -462,10 +462,10 @@ void f3f8::waitForF3F8(int &key) { } void f3f8::aff50(bool drawAni50Fl) { - caff = 50; + g_caff = 50; g_maff = 0; taffich(); - dessine(ades, 63, 12); + dessine(g_ades, 63, 12); if (drawAni50Fl) ani50(); else @@ -476,11 +476,11 @@ void f3f8::aff50(bool drawAni50Fl) { } void f3f8::ani50() { - crep = animof(1, 1); - pictout(adani, crep, 63, 12); - crep = animof(2, 1); - pictout(adani, crep, 63, 12); - f2_all = (res == 1); + g_crep = animof(1, 1); + pictout(adani, g_crep, 63, 12); + g_crep = animof(2, 1); + pictout(adani, g_crep, 63, 12); + g_f2_all = (g_res == 1); repon(2, c_paroles + 143); } diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index bec7ef4073..3108594f40 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -985,7 +985,7 @@ void ScreenSurface::writeCharacter(const Common::Point &pt, unsigned char ch, in * simulate the original 640x400 surface, all Y values have to be doubled */ void ScreenSurface::drawBox(int x, int y, int dx, int dy, int col) { - if (res == 1) { + if (g_res == 1) { x = (uint)x >> 1; dx = (uint)dx >> 1; } @@ -1052,7 +1052,7 @@ void ScreenSurface::writeg(const Common::String &l, int c) { hideMouse(); pt = _textPos; - if (res == 2) + if (g_res == 2) i = 6; else i = 10; @@ -1093,7 +1093,7 @@ void ScreenSurface::writeg(const Common::String &l, int c) { * Gets the width in pixels of the specified string */ int ScreenSurface::getStringWidth(const Common::String &s) { - int charWidth = (res == 2) ? 6 : 10; + int charWidth = (g_res == 2) ? 6 : 10; return s.size() * charWidth; } diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index d6ebe986df..602d53deb2 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -45,9 +45,9 @@ int testou() { g_soundOff = !g_soundOff; break; case '\26' : - if ((c_zzz == 1) || (c_zzz == 2)) { + if ((g_c_zzz == 1) || (g_c_zzz == 2)) { zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); - ++c_zzz; + ++g_c_zzz; return 61; } diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 5030da9acb..68fff8aa00 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -101,7 +101,7 @@ void pictout(int seg, int dep, int x, int y) { mem[0x7000 * 16 + 32] = 15; } - if ((caff != 51) && (READ_LE_UINT16(&mem[0x7000 * 16 + 0x4138]) > 0x100)) + if ((g_caff != 51) && (READ_LE_UINT16(&mem[0x7000 * 16 + 0x4138]) > 0x100)) WRITE_LE_UINT16(&mem[0x7000 * 16 + 0x4138], 0x100); g_vm->_screenSurface.drawPicture(surface, x, y); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 998b70fa35..ac199594b7 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -48,7 +48,7 @@ void Menu::menut(int no, Common::String name) { byte l = lo(no); Common::String s = name; - if (! tesok) + if (!g_tesok) g_vm->quitGame(); @@ -153,7 +153,7 @@ void Menu::displayMenu() { hideMouse(); g_vm->_screenSurface.fillRect(7, Common::Rect(0, 0, 639, 10)); - col = 28 * res; + col = 28 * g_res; if (g_currGraphicalDevice == MODE_CGA) color = 1; else @@ -182,7 +182,7 @@ void Menu::displayMenu() { } while (k != 3); ++y; } while (y != 9); - col += 48 * res; + col += 48 * g_res; } while (num_letr != 6); showMouse(); } @@ -193,23 +193,23 @@ void Menu::displayMenu() { void Menu::drawMenu() { displayMenu(); _menuActive = true; - msg4 = OPCODE_NONE; - msg3 = OPCODE_NONE; - choisi = false; + g_msg4 = OPCODE_NONE; + g_msg3 = OPCODE_NONE; + g_choisi = false; g_vm->setMouseClick(false); - test0 = false; + g_test0 = false; } void Menu::invers(int ix) { Common::String s; - if (msg4 == OPCODE_NONE) + if (g_msg4 == OPCODE_NONE) return; - int menuIndex = lo(msg4); + int menuIndex = lo(g_msg4); - g_vm->_screenSurface.putxy(_menuConstants[msg3 - 1][0] << 3, (menuIndex + 1) << 3); - switch (msg3) { + g_vm->_screenSurface.putxy(_menuConstants[g_msg3 - 1][0] << 3, (menuIndex + 1) << 3); + switch (g_msg3) { case 1: s = _inventoryStringArray[menuIndex]; break; @@ -248,31 +248,31 @@ void Menu::invers(int ix) { if ((s[0] != '*') && (s[0] != '<')) g_vm->_screenSurface.writeg(s, ix); else - msg4 = OPCODE_NONE; + g_msg4 = OPCODE_NONE; } void Menu::util(int x, int y) { - int ymx = (_menuConstants[msg3 - 1][3] << 3) + 16; - int dxcar = _menuConstants[msg3 - 1][2]; - int xmn = (_menuConstants[msg3 - 1][0] << 2) * res; + int ymx = (_menuConstants[g_msg3 - 1][3] << 3) + 16; + int dxcar = _menuConstants[g_msg3 - 1][2]; + int xmn = (_menuConstants[g_msg3 - 1][0] << 2) * g_res; int ix; - if (res == 1) + if (g_res == 1) ix = 5; else ix = 3; - int xmx = dxcar * ix * res + xmn + 2; + int xmx = dxcar * ix * g_res + xmn + 2; if ((x > xmn) && (x < xmx) && (y < ymx) && (y > 15)) { - ix = (((uint)y >> 3) - 1) + (msg3 << 8); - if (ix != msg4) { + ix = (((uint)y >> 3) - 1) + (g_msg3 << 8); + if (ix != g_msg4) { invers(1); - msg4 = ix; + g_msg4 = ix; invers(0); } - } else if (msg4 != OPCODE_NONE) { + } else if (g_msg4 != OPCODE_NONE) { invers(1); - msg4 = OPCODE_NONE; + g_msg4 = OPCODE_NONE; } } @@ -294,7 +294,7 @@ void Menu::menuDown(int ii) { hideMouse(); sauvecr(10, (_menuConstants[ii - 1][1] + 1) << 1); xco = xco << 3; - if (res == 1) + if (g_res == 1) cx = 10; else cx = 6; @@ -352,7 +352,7 @@ void Menu::menuDown(int ii) { } g_vm->_screenSurface.putxy(xco, g_vm->_screenSurface._textPos.y + 8); } while (cx != nb_lig); - test0 = true; + g_test0 = true; showMouse(); } @@ -361,7 +361,7 @@ void Menu::menuDown(int ii) { */ void Menu::menuUp(int xx) { /* debug('menuUp'); */ - if (test0) { + if (g_test0) { charecr(10, (_menuConstants[xx - 1][1] + 1) << 1); /* Restore the background area */ @@ -375,7 +375,7 @@ void Menu::menuUp(int xx) { // Copy the data Common::copy(pSrc, pSrc + (400 - 10) * SCREEN_WIDTH, pDest); - test0 = false; + g_test0 = false; } } @@ -386,7 +386,7 @@ void Menu::eraseMenu() { /* debug('eraseMenu'); */ _menuActive = false; g_vm->setMouseClick(false); - menuUp(msg3); + menuUp(g_msg3); } /** @@ -399,67 +399,67 @@ void Menu::mdn() { int x = x_s; int y = y_s; if (!g_vm->getMouseClick()) { - if ((x == xprec) && (y == yprec)) + if ((x == g_xprec) && (y == g_yprec)) return; else { - xprec = x; - yprec = y; + g_xprec = x; + g_yprec = y; } bool tes = (y < 11) - && ((x >= (28 * res) && x <= (28 * res + 24)) - || (x >= (76 * res) && x <= (76 * res + 24)) - || ((x > 124 * res) && (x < 124 * res + 24)) - || ((x > 172 * res) && (x < 172 * res + 24)) - || ((x > 220 * res) && (x < 220 * res + 24)) - || ((x > 268 * res) && (x < 268 * res + 24))); + && ((x >= (28 * g_res) && x <= (28 * g_res + 24)) + || (x >= (76 * g_res) && x <= (76 * g_res + 24)) + || ((x > 124 * g_res) && (x < 124 * g_res + 24)) + || ((x > 172 * g_res) && (x < 172 * g_res + 24)) + || ((x > 220 * g_res) && (x < 220 * g_res + 24)) + || ((x > 268 * g_res) && (x < 268 * g_res + 24))); if (tes) { int ix; - if (x < 76 * res) + if (x < 76 * g_res) ix = MENU_INVENTORY; - else if (x < 124 * res) + else if (x < 124 * g_res) ix = MENU_MOVE; - else if (x < 172 * res) + else if (x < 172 * g_res) ix = MENU_ACTION; - else if (x < 220 * res) + else if (x < 220 * g_res) ix = MENU_SELF; - else if (x < 268 * res) + else if (x < 268 * g_res) ix = MENU_DISCUSS; else ix = MENU_FILE; - if ((ix != msg3) || (! test0)) - if (!((ix == MENU_FILE) && ((msg3 == MENU_SAVE) || (msg3 == MENU_LOAD)))) { - menuUp(msg3); + if ((ix != g_msg3) || (!g_test0)) + if (!((ix == MENU_FILE) && ((g_msg3 == MENU_SAVE) || (g_msg3 == MENU_LOAD)))) { + menuUp(g_msg3); menuDown(ix); - msg3 = ix; - msg4 = OPCODE_NONE; + g_msg3 = ix; + g_msg4 = OPCODE_NONE; } } else { // Not in the MenuTitle line - if ((y > 11) && (test0)) + if ((y > 11) && (g_test0)) util(x, y); } } else { // There was a click - if ((msg3 == MENU_FILE) && (msg4 != OPCODE_NONE)) { + if ((g_msg3 == MENU_FILE) && (g_msg4 != OPCODE_NONE)) { // Another menu to be _displayed g_vm->setMouseClick(false); - menuUp(msg3); - if (lo(msg4) == 1) - msg3 = 7; + menuUp(g_msg3); + if (lo(g_msg4) == 1) + g_msg3 = 7; else - msg3 = 8; - menuDown(msg3); + g_msg3 = 8; + menuDown(g_msg3); g_vm->setMouseClick(false); } else { // A menu was clicked on - choisi = (test0) && (msg4 != OPCODE_NONE); - menuUp(msg3); - g_msg[4] = msg4; - g_msg[3] = msg3; - msg3 = OPCODE_NONE; - msg4 = OPCODE_NONE; + g_choisi = (g_test0) && (g_msg4 != OPCODE_NONE); + menuUp(g_msg3); + g_msg[4] = g_msg4; + g_msg[3] = g_msg3; + g_msg3 = OPCODE_NONE; + g_msg4 = OPCODE_NONE; g_vm->setMouseClick(false); } @@ -511,8 +511,8 @@ void Menu::initMenu() { if (i > 6) g_vm->_menu.disableMenuItem(_inventoryMenu[i]); } - msg3 = OPCODE_NONE; - msg4 = OPCODE_NONE; + g_msg3 = OPCODE_NONE; + g_msg4 = OPCODE_NONE; g_msg[3] = OPCODE_NONE; g_msg[4] = OPCODE_NONE; g_vm->setMouseClick(false); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index d3eb248574..20882eb41a 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -107,7 +107,7 @@ void modif(int &nu) { void dessine(int ad, int x, int y) { hideMouse(); - writepal(numpal); + writepal(g_numpal); pictout(ad, 0, x, y); showMouse(); } @@ -124,7 +124,7 @@ void dessine_rouleau() { void text_color(int c) { - color_txt = c; + g_color_txt = c; } /* NIVEAU 13 */ @@ -133,14 +133,14 @@ void text_color(int c) { void text1(int x, int y, int nb, int m) { int co; - if (res == 1) + if (g_res == 1) co = 10; else co = 6; Common::String tmpStr = deline(m); if ((y == 182) && ((int) tmpStr.size() * co > nb * 6)) y = 176; - afftex(tmpStr, x, y, nb, 20, color_txt); + afftex(tmpStr, x, y, nb, 20, g_color_txt); } void initouv() { @@ -162,10 +162,10 @@ void clsf1() { void clsf2() { hideMouse(); - if (f2_all) { + if (g_f2_all) { g_vm->_screenSurface.fillRect(0, Common::Rect(1, 176, 633, 199)); g_vm->_screenSurface.drawBox(0, 175, 634, 24, 15); - f2_all = false; + g_f2_all = false; } else { g_vm->_screenSurface.fillRect(0, Common::Rect(1, 176, 633, 190)); g_vm->_screenSurface.drawBox(0, 175, 634, 15, 15); @@ -180,7 +180,7 @@ void ecrf2() { void ecr2(Common::String str_) { // Some dead code was present in the original: removed g_vm->_screenSurface.putxy(8, 177); - int tlig = 59 + (res - 1) * 36; + int tlig = 59 + (g_res - 1) * 36; if ((int)str_.size() < tlig) g_vm->_screenSurface.writeg(str_, 5); @@ -190,7 +190,7 @@ void ecr2(Common::String str_) { g_vm->_screenSurface.putxy(8, 182); g_vm->_screenSurface.writeg(copy(str_, tlig, tlig << 1), 5); } else { - f2_all = true; + g_f2_all = true; clsf2(); g_vm->_screenSurface.putxy(8, 176); g_vm->_screenSurface.writeg(copy(str_, 1, (tlig - 1)), 5); @@ -228,7 +228,7 @@ void clsf10() { Common::String st; hideMouse(); - if (res == 1) { + if (g_res == 1) { co = 634; cod = 534; } else { @@ -247,7 +247,7 @@ void clsf10() { g_vm->_screenSurface.putxy(co, 92); g_vm->_screenSurface.writeg(st, 4); - if (res == 1) + if (g_res == 1) co = 620; else co = 584; @@ -280,15 +280,15 @@ int hazard(int min, int max) { void calch(int &j, int &h, int &m) { int nh = readclock(); - int th = jh + ((nh - mh) / g_t); - m = ((th % 2) + vm) * 30; - h = ((uint)th >> 1) + vh; + int th = g_jh + ((nh - g_mh) / g_t); + m = ((th % 2) + g_vm__) * 30; + h = ((uint)th >> 1) + g_vh; if (m == 60) { m = 0; h = h + 1; } - j = (h / 24) + vj; - h = h - ((j - vj) * 24); + j = (h / 24) + g_vj; + h = h - ((j - g_vj) * 24); } void conv(int x, int &y) { @@ -302,7 +302,7 @@ void conv(int x, int &y) { /* NIVEAU 12 */ void okpas() { - tesok = true; + g_tesok = true; } void modobj(int m) { @@ -321,7 +321,7 @@ void modobj2(int m, bool t1, bool t2) { if (t1 || t2) okpas(); else - tesok = false;; + g_tesok = false;; if (m != 500) strp = deline(m - 501 + c_st41); @@ -339,10 +339,10 @@ void repon(int f, int m) { if ((m > 499) && (m < 563)) { tmpStr = deline(m - 501 + c_st41); - if ((int) tmpStr.size() > ((58 + (res - 1) * 37) << 1)) - f2_all = true; + if ((int) tmpStr.size() > ((58 + (g_res - 1) * 37) << 1)) + g_f2_all = true; else - f2_all = false; + g_f2_all = false; clsf2(); afftex(tmpStr, 8, 176, 85, 3, 5); @@ -358,7 +358,7 @@ void repon(int f, int m) { text1(8, 182, 103, m); if ((m == 68) || (m == 69)) g_s.teauto[40] = '*'; - if ((m == 104) && (caff == 14)) { + if ((m == 104) && (g_caff == 14)) { g_s.teauto[36] = '*'; if (g_s.teauto[39] == '*') { g_s.pourc[3] = '*'; @@ -387,7 +387,7 @@ void repon(int f, int m) { tmpStr = deline(m); int xco, dx, caspe; - if (res == 1) { + if (g_res == 1) { xco = 252 - tmpStr.size() * 5; caspe = 100; dx = 80; @@ -407,33 +407,33 @@ void repon(int f, int m) { void t5(int cx) { if (cx == 10) - blo = false; + g_blo = false; if (cx != 1) { - bh1 = false; - bf1 = false; + g_bh1 = false; + g_bf1 = false; } if (cx != 2) - bh2 = false; + g_bh2 = false; if (cx != 4) { - bh4 = false; - bf4 = false; + g_bh4 = false; + g_bf4 = false; } if (cx != 5) - bh5 = false; + g_bh5 = false; if (cx != 6) - bh6 = false; + g_bh6 = false; if (cx != 8) - bh8 = false; + g_bh8 = false; if (cx != 3) - bt3 = false; + g_bt3 = false; if (cx != 7) - bt7 = false; + g_bt7 = false; if (cx != 9) - bh9 = false; + g_bh9 = false; } void affper(int per) { @@ -482,7 +482,7 @@ void affper(int per) { g_vm->_screenSurface.writeg("MAX", 4); g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[8]); } - ipers = per; + g_ipers = per; } void choix(int min, int max, int &per) { @@ -609,7 +609,7 @@ void person() { g_vm->_screenSurface.putxy(580 - (g_vm->_screenSurface.getStringWidth(sAlone) / 2), 70); g_vm->_screenSurface.writeg(sAlone, 4); - ipers = 0; + g_ipers = 0; } void chlm(int &per) { @@ -641,9 +641,9 @@ void drawClock() { co = 1; if (g_minute == 0) - g_vm->_screenSurface.drawLine(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y - rg), co); + g_vm->_screenSurface.drawLine(((uint)x >> 1) * g_res, y, ((uint)x >> 1) * g_res, (y - rg), co); else - g_vm->_screenSurface.drawLine(((uint)x >> 1)*res, y, ((uint)x >> 1)*res, (y + rg), co); + g_vm->_screenSurface.drawLine(((uint)x >> 1) * g_res, y, ((uint)x >> 1) * g_res, (y + rg), co); h = g_hour; if (h > 12) @@ -651,7 +651,7 @@ void drawClock() { if (h == 0) h = 12; - g_vm->_screenSurface.drawLine(((uint)x >> 1)*res, y, ((uint)(x + cv[0][h - 1]) >> 1)*res, y + cv[1][h - 1], co); + g_vm->_screenSurface.drawLine(((uint)x >> 1) * g_res, y, ((uint)(x + cv[0][h - 1]) >> 1) * g_res, y + cv[1][h - 1], co); showMouse(); g_vm->_screenSurface.putxy(568, 154); @@ -678,7 +678,7 @@ void debloc(int l) { g_y = 0; if ((l != 26) && (l != 15)) t5(l); - mpers = ipers; + g_mpers = g_ipers; } void cpl10(int &p, int &h) { @@ -773,40 +773,40 @@ void quelq1(int l) { per = hazard(1, 2); if (l == 1) { if (per == 1) - bh1 = true; + g_bh1 = true; else - bf1 = true; + g_bf1 = true; } else if (l == 4) { if (per == 1) - bh4 = true; + g_bh4 = true; else - bf4 = true; + g_bf4 = true; } - ipers = 10; + g_ipers = 10; } void quelq2() { - if (li == 2) - bh2 = true; + if (g_li == 2) + g_bh2 = true; else - bh9 = true; + g_bh9 = true; - ipers = 10; + g_ipers = 10; } void quelq5() { - bh5 = true; - ipers = 10; + g_bh5 = true; + g_ipers = 10; } void quelq6(int l) { if (l == 6) - bh6 = true; + g_bh6 = true; else if (l == 8) - bh8 = true; + g_bh8 = true; - ipers = 10; + g_ipers = 10; } void quelq10(int h, int &per) { @@ -865,14 +865,14 @@ void quelq15(int &per) { do { cx = hazard(1, 8); - test = (((cx == 1) && (bh2 || bh9)) || - ((cx == 2) && bh8) || - ((cx == 3) && bh4) || - ((cx == 4) && bf4) || - ((cx == 5) && bh6) || - ((cx == 6) && bh1) || - ((cx == 7) && bf1) || - ((cx == 8) && bh5)); + test = (((cx == 1) && (g_bh2 || g_bh9)) || + ((cx == 2) && g_bh8) || + ((cx == 3) && g_bh4) || + ((cx == 4) && g_bf4) || + ((cx == 5) && g_bh6) || + ((cx == 6) && g_bh1) || + ((cx == 7) && g_bf1) || + ((cx == 8) && g_bh5)); } while (test); conv(cx, per); @@ -905,37 +905,37 @@ void frap() { calch(j, h, m); if ((h >= 0) && (h < 8)) - crep = 190; + g_crep = 190; else { int haz = hazard(1, 100); if (haz > 70) - crep = 190; + g_crep = 190; else - crep = 147; + g_crep = 147; } } void nouvp(int l, int &p) { p = 0; if (l == 1) { - if (bh1) + if (g_bh1) p = 4; - if (bf1) + if (g_bf1) p = 2; - } else if (((l == 2) && (bh2)) || ((l == 9) && (bh9))) + } else if (((l == 2) && (g_bh2)) || ((l == 9) && (g_bh9))) p = 128; else if (l == 4) { - if (bh4) + if (g_bh4) p = 32; - if (bf4) + if (g_bf4) p = 16; - } else if ((l == 5) && (bh5)) + } else if ((l == 5) && (g_bh5)) p = 1; - else if ((l == 6) && (bh6)) + else if ((l == 6) && (g_bh6)) p = 8; - else if ((l == 8) && (bh8)) + else if ((l == 8) && (g_bh8)) p = 64; - else if (((l == 3) && (bt3)) || ((l == 7) && (bt7))) + else if (((l == 3) && (g_bt3)) || ((l == 7) && (g_bt7))) p = 9; if (p != 9) @@ -969,19 +969,19 @@ void ecfren(int &p, int &haz, int cf, int l) { person(); p = -500; haz = 0; - if (((l == 1) && (! bh1) && (! bf1)) || ((l == 4) && (! bh4) && (! bf4))) + if (((l == 1) && (!g_bh1) && (!g_bf1)) || ((l == 4) && (!g_bh4) && (!g_bf4))) cpl1(p); - if ((l == 2) && (! bh2) && (! bh9)) + if ((l == 2) && (!g_bh2) && (!g_bh9)) cpl2(p); - if (((l == 3) && (! bt3)) || ((l == 7) && (! bt7))) + if (((l == 3) && (!g_bt3)) || ((l == 7) && (!g_bt7))) cpl3(p); - if ((l == 5) && (! bh5)) + if ((l == 5) && (!g_bh5)) cpl5(p); - if (((l == 6) && (! bh6)) || ((l == 8) && (! bh8))) + if (((l == 6) && (!g_bh6)) || ((l == 8) && (!g_bh8))) cpl6(p); - if ((l == 9) && (! bh9) && (! bh2)) + if ((l == 9) && (!g_bh9) && (!g_bh2)) p = 10; - if (((l == 2) && (bh9)) || ((l == 9) && (bh2))) + if (((l == 2) && (g_bh9)) || ((l == 9) && (g_bh2))) p = -400; if (p != -500) { p = p + cf; @@ -994,29 +994,29 @@ void becfren(int l) { int haz = hazard(1, 2); if (l == 1) { if (haz == 1) - bh1 = true; + g_bh1 = true; else - bf1 = true; + g_bf1 = true; } else { // l == 4 if (haz == 1) - bh4 = true; + g_bh4 = true; else - bf4 = true; + g_bf4 = true; } } else if (l == 2) - bh2 = true; + g_bh2 = true; else if (l == 3) - bt3 = true; + g_bt3 = true; else if (l == 5) - bh5 = true; + g_bh5 = true; else if (l == 6) - bh6 = true; + g_bh6 = true; else if (l == 7) - bt7 = true; + g_bt7 = true; else if (l == 8) - bh8 = true; + g_bh8 = true; else if (l == 9) - bh9 = true; + g_bh9 = true; } /* NIVEAU 10 */ @@ -1077,16 +1077,16 @@ void inzon() { } void dprog() { - li = 21; - jh = 0; + g_li = 21; + g_jh = 0; if (!g_s.ipre) - blo = true; + g_blo = true; g_t = ti1; - mh = readclock(); + g_mh = readclock(); } void pl1(int cf) { - if (((li == 1) && (! bh1) && (! bf1)) || ((li == 4) && (! bh4) && (! bf4))) { + if (((g_li == 1) && (!g_bh1) && (!g_bf1)) || ((g_li == 4) && (!g_bh4) && (!g_bf4))) { int p, haz; cpl1(p); phaz(haz, p, cf); @@ -1094,12 +1094,12 @@ void pl1(int cf) { if (haz > p) person(); else - quelq1(li); + quelq1(g_li); } } void pl2(int cf) { - if (! bh2) { + if (!g_bh2) { int p, haz; cpl2(p); phaz(haz, p, cf); @@ -1112,7 +1112,7 @@ void pl2(int cf) { } void pl5(int cf) { - if (! bh5) { + if (!g_bh5) { int p, haz; cpl5(p); phaz(haz, p, cf); @@ -1125,7 +1125,7 @@ void pl5(int cf) { } void pl6(int cf) { - if (((li == 6) && (! bh6)) || ((li == 8) && (! bh8))) { + if (((g_li == 6) && (!g_bh6)) || ((g_li == 8) && (!g_bh8))) { int p, haz; cpl6(p); phaz(haz, p, cf); @@ -1133,12 +1133,12 @@ void pl6(int cf) { if (haz > p) person(); else - quelq6(li); + quelq6(g_li); } } void pl9(int cf) { - if (! bh9) { + if (!g_bh9) { cf = -10; int p, haz; phaz(haz, p, cf); @@ -1220,18 +1220,18 @@ void t11(int l11, int &a) { int p, haz; ecfren(p, haz, g_s.conf, l11); - li = l11; + g_li = l11; if ((l11 > 0) && (l11 < 10)) { if (p != -500) { if (haz > p) { person(); a = 0; } else { - becfren(li); - nouvp(li, a); + becfren(g_li); + nouvp(g_li, a); } } else - nouvp(li, a); + nouvp(g_li, a); } if (l11 > 9) { @@ -1291,7 +1291,7 @@ void cavegre() { } void writetp(Common::String s, int t) { - if (res == 2) + if (g_res == 2) g_vm->_screenSurface.writeg(s, t); else g_vm->_screenSurface.writeg(copy(s, 1, 25), t); @@ -1308,13 +1308,13 @@ void messint(int nu) { } void aniof(int ouf, int num) { - if ((caff == 7) && ((num == 4) || (num == 5))) + if ((g_caff == 7) && ((num == 4) || (num == 5))) return; - if ((caff == 10) && (num == 7)) + if ((g_caff == 10) && (num == 7)) num = 6; - if (caff == 12) { + if (g_caff == 12) { if (num == 3) num = 4; else if (num == 4) @@ -1335,9 +1335,9 @@ void musique(int so) { if (so == 0) { /* musik(0) */ ; - } else if ((prebru == 0) && (!g_s.ipre)) { + } else if ((g_prebru == 0) && (!g_s.ipre)) { parole(10, 1, 1); - ++prebru; + ++g_prebru; } else { bool i = false; if ((g_s.mlieu == 19) || (g_s.mlieu == 21) || (g_s.mlieu == 22)) { @@ -1378,42 +1378,42 @@ void musique(int so) { /* NIVEAU 9 */ void dessin(int ad) { if (ad != 0) - dessine(ades, ((ad % 160) * 2), (ad / 160)); + dessine(g_ades, ((ad % 160) * 2), (ad / 160)); else { clsf1(); - if (caff > 99) { - dessine(ades, 60, 33); + if (g_caff > 99) { + dessine(g_ades, 60, 33); g_vm->_screenSurface.drawBox(118, 32, 291, 121, 15); // Medium box - } else if (caff > 69) { - dessine(ades, 112, 48); // Heads + } else if (g_caff > 69) { + dessine(g_ades, 112, 48); // Heads g_vm->_screenSurface.drawBox(222, 47, 155, 91, 15); } else { - dessine(ades, 0, 12); + dessine(g_ades, 0, 12); ecrf1(); - if ((caff < 30) || (caff > 32)) { + if ((g_caff < 30) || (g_caff > 32)) { for (int cx = 1; cx <= 6; ++cx) { if (ord(touv[cx]) != 0) aniof(1, ord(touv[cx])); } - if (caff == 13) { + if (g_caff == 13) { if (g_s.iboul == 141) aniof(1, 7); if (g_s.ibag == 159) aniof(1, 6); } - if ((caff == 14) && (g_s.icave == 151)) + if ((g_caff == 14) && (g_s.icave == 151)) aniof(1, 2); - if ((caff == 17) && (g_s.ivier == 143)) + if ((g_caff == 17) && (g_s.ivier == 143)) aniof(1, 1); - if ((caff == 24) && (g_s.ipuit != 0)) + if ((g_caff == 24) && (g_s.ipuit != 0)) aniof(1, 1); } - if (caff < 26) + if (g_caff < 26) musique(1); } } diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 42e1d0f9fa..c592ddc996 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -49,7 +49,7 @@ void tinke() { int cx, cf, j, h, m; Common::String stpo; - anyone = false; + g_anyone = false; calch(j, h, m); if (j != g_day) { g_day = j; @@ -96,7 +96,7 @@ void tinke() { if (y_s < 12) return; - if (! blo) { + if (!g_blo) { if ((h == 12) || ((h > 18) && (h < 21)) || ((h >= 0) && (h < 7))) g_t = ti2; else @@ -109,12 +109,12 @@ void tinke() { g_t -= ((g_t / 3) * 2); int nh = readclock(); - if ((nh - mh) > g_t) { + if ((nh - g_mh) > g_t) { bool activeMenu = g_vm->_menu._menuActive; g_vm->_menu.eraseMenu(); - jh += ((nh - mh) / g_t); - mh = nh; - switch (li) { + g_jh += ((nh - g_mh) / g_t); + g_mh = nh; + switch (g_li) { case 1: case 4 : pl1(cf); @@ -153,17 +153,17 @@ void tinke() { pl20(cf); break; } - if ((mpers != 0) && (ipers != 10)) - mpers = ipers; + if ((g_mpers != 0) && (g_ipers != 10)) + g_mpers = g_ipers; - if ((mpers == 0) && (ipers > 0)) { + if ((g_mpers == 0) && (g_ipers > 0)) { if ((g_s.mlieu == 13) || (g_s.mlieu == 14)) { cavegre(); - } else if (ipers == 10) { - ipers = 0; - if (! brt) { - brt = true; - hdb = readclock(); + } else if (g_ipers == 10) { + g_ipers = 0; + if (!g_brt) { + g_brt = true; + g_hdb = readclock(); int haz = hazard(1, 5); if (haz < 5) { clsf3(); @@ -181,13 +181,13 @@ void tinke() { g_vm->_menu.drawMenu(); } } - hfb = readclock(); - if ((brt) && ((hfb - hdb) > 17)) { - nouvp(li, cx); - brt = false; - hdb = 0; + g_hfb = readclock(); + if ((g_brt) && ((g_hfb - g_hdb) > 17)) { + nouvp(g_li, cx); + g_brt = false; + g_hdb = 0; if ((g_s.mlieu > 0) && (g_s.mlieu < 10)) - anyone = true; + g_anyone = true; } } @@ -212,7 +212,7 @@ void fenat(char ans) { void afdes(int ad) { taffich(); dessin(ad); - okdes = false; + g_okdes = false; } void tkey1(bool d) { @@ -230,7 +230,7 @@ void tkey1(bool d) { quest = keypressed(); getMousePos(x, y, c); CHECK_QUIT; - } while (!(quest || (c != 0) || (d && anyone))); + } while (!(quest || (c != 0) || (d && g_anyone))); if (quest) testou(); g_vm->setMouseClick(false); @@ -259,19 +259,19 @@ void tmlieu(int mli) { /* NIVEAU 7 */ void tlu(int af, int ob) { - caff = 32; + g_caff = 32; afdes(0); repon(6, ob + 4000); repon(2, 999); tkey1(true); - caff = af; + g_caff = af; g_msg[3] = OPCODE_NONE; - crep = 998; + g_crep = 998; } void affrep() { - caff = g_s.mlieu; - crep = g_s.mlieu; + g_caff = g_s.mlieu; + g_crep = g_s.mlieu; } void mfouen() { @@ -287,11 +287,11 @@ void mfouen() { void tperd() { initouv(); - ment = 0; - iouv = 0; - mchai = 0; + g_ment = 0; + g_iouv = 0; + g_mchai = 0; mfouen(); - if (!blo) { + if (!g_blo) { int cx; t11(21, cx); } @@ -299,17 +299,17 @@ void tperd() { g_vm->_loseGame = true; clsf1(); g_vm->_screenSurface.drawBox(60, 35, 400, 50, 15); - repon(9, crep); + repon(9, g_crep); clsf2(); clsf3(); g_col = false; - syn = false; - okdes = false; + g_syn = false; + g_okdes = false; } void tsort() { - if ((iouv > 0) && (g_s.mlieu != 0)) { + if ((g_iouv > 0) && (g_s.mlieu != 0)) { if (g_s.conf < 50) g_s.conf += 2; else @@ -318,24 +318,24 @@ void tsort() { for (int cx = 1; cx <= 7; ++cx) touv[cx] = chr(0); - ment = 0; - iouv = 0; - mchai = 0; + g_ment = 0; + g_iouv = 0; + g_mchai = 0; debloc(g_s.mlieu); } void st4(int ob) { - crep = 997; + g_crep = 997; switch (ob) { case 114 : - crep = 109; + g_crep = 109; break; case 110 : - crep = 107; + g_crep = 107; break; case 158 : - crep = 113; + g_crep = 113; break; case 152: case 153: @@ -347,7 +347,7 @@ void st4(int ob) { case 157: case 160: case 161 : - tlu(caff, ob); + tlu(g_caff, ob); break; default: break; @@ -402,7 +402,7 @@ void sparl(float adr, float rep) { key = 0; do { - parole(repint, haut[caff - 69], 0); + parole(repint, haut[g_caff - 69], 0); f3f8::waitForF3F8(key); CHECK_QUIT; } while (key != 66); @@ -411,9 +411,9 @@ void sparl(float adr, float rep) { } void finfouil() { - fouil = false; - obpart = false; - cs = 0; + g_fouil = false; + g_obpart = false; + g_cs = 0; is = 0; mfouen(); } @@ -434,13 +434,13 @@ void mennor() { } void premtet() { - dessine(ades, 10, 80); + dessine(g_ades, 10, 80); g_vm->_screenSurface.drawBox(18, 79, 155, 91, 15); } /* NIVEAU 5 */ void ajchai() { - int cy = acha + ((mchai - 1) * 10) - 1; + int cy = acha + ((g_mchai - 1) * 10) - 1; int cx = 0; do { ++cx; @@ -450,7 +450,7 @@ void ajchai() { int lderobj = g_s.derobj; tabdon[cy + cx] = lderobj; } else - crep = 192; + g_crep = 192; } void ajjer(int ob) { @@ -463,7 +463,7 @@ void ajjer(int ob) { g_s.sjer[(cx)] = chr(ob); modinv(); } else - crep = 139; + g_crep = 139; } void t1sama() { //Entering manor @@ -474,14 +474,14 @@ void t1sama() { //Entering manor bool d; cherjer(137, d); if (!d) { //You don't have the keys, and it's late - crep = 1511; + g_crep = 1511; tperd(); } else st1sama(); } else if (!g_s.ipre) { //Is it your first time? - ipers = 255; - affper(ipers); - caff = 77; + g_ipers = 255; + affper(g_ipers); + g_caff = 77; afdes(0); g_vm->_screenSurface.drawBox(223, 47, 155, 91, 15); repon(2, 33); @@ -497,10 +497,10 @@ void t1sama() { //Entering manor g_s.mlieu = 0; affrep(); t5(10); - if (! blo) + if (!g_blo) t11(0, m); - ipers = 0; - mpers = 0; + g_ipers = 0; + g_mpers = 0; g_s.ipre = true; /*chech;*/ } else @@ -513,19 +513,19 @@ void t1vier() { } void t1neig() { - ++inei; - if (inei > 2) { - crep = 1506; + ++g_inei; + if (g_inei > 2) { + g_crep = 1506; tperd(); } else { - okdes = true; + g_okdes = true; g_s.mlieu = 19; affrep(); } } void t1deva() { - inei = 0; + g_inei = 0; g_s.mlieu = 21; affrep(); } @@ -536,33 +536,33 @@ void t1derr() { } void t1deau() { - crep = 1503; + g_crep = 1503; tperd(); } void tctrm() { - repon(2, (3000 + ctrm)); - ctrm = 0; + repon(2, (3000 + g_ctrm)); + g_ctrm = 0; } void quelquun() { - if (imen) + if (g_imen) g_vm->_menu.eraseMenu(); finfouil(); - crep = 997; + g_crep = 997; L1: - if (! cache) { - if (crep == 997) - crep = 138; - repon(2, crep); - if (crep == 138) + if (!g_cache) { + if (g_crep == 997) + g_crep = 138; + repon(2, g_crep); + if (g_crep == 138) parole(5, 2, 1); else parole(4, 4, 1); - if (iouv == 0) + if (g_iouv == 0) g_s.conf += 2; else if (g_s.conf < 50) g_s.conf += 4; @@ -571,18 +571,18 @@ L1: tsort(); tmlieu(15); int cx; - tip(ipers, cx); - caff = 69 + cx; - crep = caff; + tip(g_ipers, cx); + g_caff = 69 + cx; + g_crep = g_caff; g_msg[3] = MENU_DISCUSS; g_msg[4] = g_vm->_menu._discussMenu[cx]; - syn = true; + g_syn = true; g_col = true; } else { int haz = hazard(1, 3); if (haz == 2) { - cache = false; - crep = 137; + g_cache = false; + g_crep = 137; goto L1; } else { repon(2, 136); @@ -594,7 +594,7 @@ L1: affrep(); } } - if (imen) + if (g_imen) g_vm->_menu.drawMenu(); } @@ -602,26 +602,26 @@ void tsuiv() { int tbcl; int cl; - int cy = acha + ((mchai - 1) * 10) - 1; + int cy = acha + ((g_mchai - 1) * 10) - 1; int cx = 0; do { cx = cx + 1; - cs = cs + 1; - cl = cy + cs; + g_cs = g_cs + 1; + cl = cy + g_cs; tbcl = tabdon[cl]; - } while ((tbcl == 0) && (cs <= 9)); + } while ((tbcl == 0) && (g_cs <= 9)); - if ((tbcl != 0) && (cs < 11)) { + if ((tbcl != 0) && (g_cs < 11)) { is = is + 1; - caff = tbcl; - crep = caff + 400; - if (ipers != 0) + g_caff = tbcl; + g_crep = g_caff + 400; + if (g_ipers != 0) g_s.conf = g_s.conf + 2; } else { affrep(); finfouil(); if (cx > 9) - crep = 131; + g_crep = 131; } } @@ -633,7 +633,7 @@ void tfleche() { return; fenat(chr(152)); - rect = false; + g_rect = false; do { touch = '\0'; @@ -642,18 +642,18 @@ void tfleche() { CHECK_QUIT; if (g_vm->getMouseClick()) - rect = (x_s < 256 * res) && (y_s < 176) && (y_s > 12); + g_rect = (x_s < 256 * g_res) && (y_s < 176) && (y_s > 12); tinke(); - } while (!(qust || rect || anyone)); + } while (!(qust || g_rect || g_anyone)); if (qust && (touch == '\103')) Alert::show(_hintPctMessage, 1); - } while (!((touch == '\73') || ((touch == '\104') && (g_x != 0) && (g_y != 0)) || (anyone) || (rect))); + } while (!((touch == '\73') || ((touch == '\104') && (g_x != 0) && (g_y != 0)) || (g_anyone) || (g_rect))); if (touch == '\73') - iesc = true; + g_iesc = true; - if (rect) { + if (g_rect) { g_x = x_s; g_y = y_s; } @@ -665,18 +665,18 @@ void tcoord(int sx) { g_num = 0; - crep = 999; + g_crep = 999; int a = 0; int atdon = amzon + 3; int cy = 0; - while (cy < caff) { + while (cy < g_caff) { a += tabdon[atdon]; atdon += 4; ++cy; } if (tabdon[atdon] == 0) { - crep = 997; + g_crep = 997; return; } @@ -688,17 +688,17 @@ void tcoord(int sx) { } ib = (tabdon[a + cb] << 8) + tabdon[(a + cb + 1)]; if (ib == 0) { - crep = 997; + g_crep = 997; return; } cy = 1; do { cb += 2; - sx = tabdon[a + cb] * res; + sx = tabdon[a + cb] * g_res; sy = tabdon[(a + cb + 1)]; cb += 2; - ix = tabdon[a + cb] * res; + ix = tabdon[a + cb] * g_res; iy = tabdon[(a + cb + 1)]; ++cy; } while (!(((g_x >= sx) && (g_x <= ix) && (g_y >= sy) && (g_y <= iy)) || (cy > ib))); @@ -708,7 +708,7 @@ void tcoord(int sx) { return; } - crep = 997; + g_crep = 997; } @@ -716,51 +716,51 @@ void st7(int ob) { switch (ob) { case 116: case 144: - crep = 104; + g_crep = 104; break; case 126: case 111: - crep = 108; + g_crep = 108; break; case 132: - crep = 111; + g_crep = 111; break; case 142: - crep = 112; + g_crep = 112; break; default: - crep = 183; + g_crep = 183; st4(ob); } } void treg(int ob) { - int mdes = caff; - caff = ob; + int mdes = g_caff; + g_caff = ob; - if (((caff > 29) && (caff < 33)) || (caff == 144) || (caff == 147) || (caff == 149) || (g_msg[4] == OPCODE_SLOOK)) { + if (((g_caff > 29) && (g_caff < 33)) || (g_caff == 144) || (g_caff == 147) || (g_caff == 149) || (g_msg[4] == OPCODE_SLOOK)) { afdes(0); - if ((caff > 29) && (caff < 33)) - repon(2, caff); + if ((g_caff > 29) && (g_caff < 33)) + repon(2, g_caff); else - repon(2, (caff + 400)); + repon(2, g_caff + 400); tkey1(true); - caff = mdes; + g_caff = mdes; g_msg[3] = 0; - crep = 998; + g_crep = 998; } else { - obpart = true; - crep = caff + 400; + g_obpart = true; + g_crep = g_caff + 400; mfoudi(); } } void avpoing(int &ob) { - crep = 999; + g_crep = 999; if (g_s.derobj != 0) ajjer(g_s.derobj); - if (crep != 139) { + if (g_crep != 139) { modobj(ob + 400); g_s.derobj = ob; ob = 0; @@ -781,7 +781,7 @@ void t23coul(int &l) { cherjer(143, d); l = 14; if (!d) { - crep = 1512; + g_crep = 1512; tperd(); } } @@ -797,9 +797,9 @@ void st13(int ob) { (ob == 110) || (ob == 153) || (ob == 154) || (ob == 155) || (ob == 156) || (ob == 157) || (ob == 144) || (ob == 158) || (ob == 150) || (ob == 152)) - crep = 999; + g_crep = 999; else - crep = 105; + g_crep = 105; } void aldepl() { diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 7d0e7bc8ed..dceb5c7d55 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -122,7 +122,7 @@ Common::ErrorCode MortevielleEngine::initialise() { // Set the screen mode g_currGraphicalDevice = MODE_EGA; - res = 2; + g_res = 2; _txxFileFl = false; // Load texts from TXX files @@ -144,19 +144,19 @@ Common::ErrorCode MortevielleEngine::initialise() { g_currGraphicalDevice = MODE_EGA; g_newGraphicalDevice = g_currGraphicalDevice; - zuul = false; - tesok = false; + g_zuul = false; + g_tesok = false; charpal(); charge_cfiph(); charge_cfiec(); zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); - c_zzz = 1; + g_c_zzz = 1; init_nbrepm(); initMouse(); init_lieu(); g_soundOff = false; - f2_all = false; + g_f2_all = false; teskbd(); dialpre(); @@ -165,7 +165,7 @@ Common::ErrorCode MortevielleEngine::initialise() { if (g_newGraphicalDevice != g_currGraphicalDevice) g_currGraphicalDevice = g_newGraphicalDevice; hirs(); - ades = 0x7000; + g_ades = 0x7000; return Common::kNoError; } @@ -481,7 +481,7 @@ Common::Error MortevielleEngine::run() { */ void MortevielleEngine::showIntroduction() { f3f8::aff50(false); - mlec = 0; + g_mlec = 0; f3f8::checkForF8(142, false); CHECK_QUIT; @@ -500,10 +500,10 @@ void MortevielleEngine::showIntroduction() { * loses, and chooses to start playing the game again. */ void MortevielleEngine::mainGame() { - if (rech_cfiec) + if (g_rech_cfiec) charge_cfiec(); - for (crep = 1; crep <= c_zzz; ++crep) + for (g_crep = 1; g_crep <= g_c_zzz; ++g_crep) zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); charge_bruit5(); @@ -553,10 +553,10 @@ void MortevielleEngine::handleAction() { clsf3(); oo = false; - ctrm = 0; - if (! iesc) { + g_ctrm = 0; + if (!g_iesc) { g_vm->_menu.drawMenu(); - imen = true; + g_imen = true; temps = 0; g_key = 0; funct = false; @@ -569,27 +569,27 @@ void MortevielleEngine::handleAction() { moveMouse(funct, inkey); CHECK_QUIT; temps = temps + 1; - } while (!((choisi) || (temps > lim) || (funct) || (anyone))); + } while (!((g_choisi) || (temps > lim) || (funct) || (g_anyone))); _inMainGameLoop = false; g_vm->_menu.eraseMenu(); - imen = false; + g_imen = false; if ((inkey == '\1') || (inkey == '\3') || (inkey == '\5') || (inkey == '\7') || (inkey == '\11')) { changeGraphicalDevice((uint)(ord(inkey) - 1) >> 1); return; } - if (choisi && (g_msg[3] == MENU_SAVE)) { + if (g_choisi && (g_msg[3] == MENU_SAVE)) { Common::String saveName = Common::String::format("Savegame #%d", g_msg[4] & 7); g_vm->_savegameManager.saveGame(g_msg[4] & 7, saveName); } - if (choisi && (g_msg[3] == MENU_LOAD)) + if (g_choisi && (g_msg[3] == MENU_LOAD)) g_vm->_savegameManager.loadGame((g_msg[4] & 7) - 1); if (inkey == '\103') { /* F9 */ temps = Alert::show(_hintPctMessage, 1); return; } else if (inkey == '\77') { - if ((mnumo != OPCODE_NONE) && ((g_msg[3] == MENU_ACTION) || (g_msg[3] == MENU_SELF))) { - g_msg[4] = mnumo; + if ((g_mnumo != OPCODE_NONE) && ((g_msg[3] == MENU_ACTION) || (g_msg[3] == MENU_SELF))) { + g_msg[4] = g_mnumo; ecr3(g_vm->getEngineString(S_IDEM)); } else return; @@ -610,20 +610,20 @@ void MortevielleEngine::handleAction() { if (g_num == 9999) g_num = 0; } else { - mnumo = g_msg[3]; + g_mnumo = g_msg[3]; if ((g_msg[3] == MENU_ACTION) || (g_msg[3] == MENU_SELF)) - mnumo = g_msg[4]; - if (! anyone) { - if ((fouil) || (obpart)) { + g_mnumo = g_msg[4]; + if (!g_anyone) { + if ((g_fouil) || (g_obpart)) { if (y_s < 12) return; if ((g_msg[4] == OPCODE_SOUND) || (g_msg[4] == OPCODE_LIFT)) { oo = true; - if ((g_msg[4] == OPCODE_LIFT) || (obpart)) { + if ((g_msg[4] == OPCODE_LIFT) || (g_obpart)) { finfouil(); - caff = g_s.mlieu; - crep = 998; + g_caff = g_s.mlieu; + g_crep = 998; } else tsuiv(); mennor(); @@ -634,17 +634,17 @@ void MortevielleEngine::handleAction() { if (! oo) tsitu(); - if ((ctrm == 0) && (! _loseGame) && (! _endGame)) { + if ((g_ctrm == 0) && (! _loseGame) && (! _endGame)) { taffich(); - if (okdes) { - okdes = false; + if (g_okdes) { + g_okdes = false; dessin(0); } - if ((! syn) || (g_col)) - repon(2, crep); + if ((!g_syn) || (g_col)) + repon(2, g_crep); } - } while (syn); - if (ctrm != 0) + } while (g_syn); + if (g_ctrm != 0) tctrm(); } } diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 9baae57eb6..f26c7051a6 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -260,8 +260,8 @@ void showMouse() { * @remarks Originally called 'pos_mouse' */ void setMousePos(int x, int y) { - if (x > 314 * res) - x = 314 * res; + if (x > 314 * g_res) + x = 314 * g_res; else if (x < 0) x = 0; if (y > 199) @@ -331,16 +331,16 @@ void moveMouse(bool &funct, char &key) { cy = 190; break; case '9': - cx = 315 * res; + cx = 315 * g_res; cy = 1; break; case '3': cy = 190; - cx = 315 * res; + cx = 315 * g_res; break; case '5': cy = 100; - cx = 155 * res; + cx = 155 * g_res; break; case ' ': case '\15': @@ -394,27 +394,27 @@ void moveMouse(bool &funct, char &key) { } break; case 'I': - cx = res * 32; + cx = g_res * 32; cy = 8; break; case 'D': - cx = 80 * res; + cx = 80 * g_res; cy = 8; break; case 'A': - cx = 126 * res; + cx = 126 * g_res; cy = 8; break; case 'S': - cx = 174 * res; + cx = 174 * g_res; cy = 8; break; case 'P': - cx = 222 * res; + cx = 222 * g_res; cy = 8; break; case 'F': - cx = res * 270; + cx = g_res * 270; cy = 8; break; case '\23': @@ -422,7 +422,7 @@ void moveMouse(bool &funct, char &key) { return; break; case '\26': - zuul = true; + g_zuul = true; return; break; case '\24': // ^T => mode tandy diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 3cc9b342fd..80eeaa7cab 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -174,7 +174,7 @@ void afftex(Common::String ch, int x, int y, int dx, int dy, int typ) { /* debug(' .. Afftex');*/ g_vm->_screenSurface.putxy(x, y); - if (res == 1) + if (g_res == 1) tab = 10; else tab = 6; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 7b2dcabee9..1ad58ed996 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -149,7 +149,7 @@ void chartex() { */ void dialpre() { /* debug('o3 dialpre'); */ - crep = 998; + g_crep = 998; int_m = true; } @@ -177,7 +177,7 @@ void music() { if (g_soundOff) return; - rech_cfiec = true; + g_rech_cfiec = true; if (!fic.open("mort.img")) error("Missing file - mort.img"); @@ -222,7 +222,7 @@ void charge_cfiec() { f.read(&adcfiec[0], 822 * 128); f.close(); - rech_cfiec = false; + g_rech_cfiec = false; } @@ -241,16 +241,16 @@ void charge_cfiph() { void suite() { hirs(); repon(7, 2035); - caff = 51; + g_caff = 51; taffich(); teskbd(); if (g_newGraphicalDevice != g_currGraphicalDevice) g_currGraphicalDevice = g_newGraphicalDevice; hirs(); - dessine(ades, 0, 0); + dessine(g_ades, 0, 0); Common::String cpr = "COPYRIGHT 1989 : LANKHOR"; - g_vm->_screenSurface.putxy(104 + 72 * res, 185); + g_vm->_screenSurface.putxy(104 + 72 * g_res, 185); g_vm->_screenSurface.writeg(cpr, 0); } diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index cbe460a43d..9bfbaaf560 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -34,7 +34,7 @@ namespace Mortevielle { void spfrac(int wor) { c3.rep = (uint)wor >> 12; - if ((typlec == 0) && (c3.code != 9)) + if ((g_typlec == 0) && (c3.code != 9)) if (((c3.code > 4) && (c3.val != 20) && (c3.rep != 3) && (c3.rep != 6) && (c3.rep != 9)) || ((c3.code < 5) && ((c3.val != 19) && (c3.val != 22) && (c3.rep != 4) && (c3.rep != 9)))) { ++c3.rep; @@ -47,7 +47,7 @@ void spfrac(int wor) { void charg_car() { int wor, int_; - wor = swap(READ_LE_UINT16(&mem[adword + ptr_word])); + wor = swap(READ_LE_UINT16(&mem[adword + g_ptr_word])); int_ = wor & 0x3f; if ((int_ >= 0) && (int_ <= 13)) { @@ -82,13 +82,13 @@ void charg_car() { } spfrac(wor); - ptr_word = ptr_word + 2; + g_ptr_word += 2; } void entroct(byte o) { - mem[adtroct * 16 + ptr_oct] = o; - ++ptr_oct; + mem[adtroct * 16 + g_ptr_oct] = o; + ++g_ptr_oct; } void veracf(byte b) { diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index 2402e37195..a96edde281 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -54,27 +54,27 @@ void init_chariot() { void trait_ph() { const int deca[3] = {300, 30, 40}; - ptr_tcph = num_ph - 1; - ledeb = swap(t_cph[ptr_tcph]) + deca[typlec]; - lefin = swap(t_cph[ptr_tcph + 1]) + deca[typlec]; - nb_word = lefin - ledeb; - ptr_tcph = (uint)ledeb >> 1; - ptr_word = 0; + g_ptr_tcph = g_num_ph - 1; + g_ledeb = swap(t_cph[g_ptr_tcph]) + deca[g_typlec]; + g_lefin = swap(t_cph[g_ptr_tcph + 1]) + deca[g_typlec]; + g_nb_word = g_lefin - g_ledeb; + g_ptr_tcph = (uint)g_ledeb >> 1; + g_ptr_word = 0; do { - WRITE_LE_UINT16(&mem[adword + ptr_word], t_cph[ptr_tcph]); - ptr_word = ptr_word + 2; - ptr_tcph = ptr_tcph + 1; - } while (ptr_tcph < (int)((uint)lefin >> 1)); + WRITE_LE_UINT16(&mem[adword + g_ptr_word], t_cph[g_ptr_tcph]); + g_ptr_word += 2; + ++g_ptr_tcph; + } while (g_ptr_tcph < (int)((uint)g_lefin >> 1)); - ptr_oct = 0; - ptr_word = 0; + g_ptr_oct = 0; + g_ptr_word = 0; init_chariot(); do { rot_chariot(); charg_car(); trait_car(); - } while (ptr_word < nb_word); + } while (g_ptr_word < g_nb_word); rot_chariot(); trait_car(); @@ -90,10 +90,10 @@ void parole(int rep, int ht, int typ) { if (g_soundOff) return; - num_ph = rep; + g_num_ph = rep; g_haut = ht; - typlec = typ; - if (typlec != 0) { + g_typlec = typ; + if (g_typlec != 0) { for (int i = 0; i <= 500; ++i) savph[i] = t_cph[i]; tempo = tempo_bruit; @@ -118,12 +118,12 @@ void parole(int rep, int ht, int typ) { } trait_ph(); g_vm->_soundManager.litph(tbi, typ, tempo); - if (typlec != 0) + if (g_typlec != 0) for (int i = 0; i <= 500; ++i) { t_cph[i] = savph[i]; - mlec = typlec; + g_mlec = g_typlec; } - writepal(numpal); + writepal(g_numpal); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 6dd8df10a6..b34e64aa5a 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -52,15 +52,15 @@ void changeGraphicalDevice(int newDevice) { dessine_rouleau(); tinke(); drawClock(); - if (ipers != 0) - affper(ipers); + if (g_ipers != 0) + affper(g_ipers); else person(); clsf2(); clsf3(); g_maff = 68; afdes(0); - repon(2, crep); + repon(2, g_crep); g_vm->_menu.displayMenu(); } @@ -74,44 +74,44 @@ void MortevielleEngine::gameLoaded() { char g[8]; hideMouse(); - imen = false; + g_imen = false; g[1] = 'M'; _loseGame = true; - anyone = false; - okdes = true; + g_anyone = false; + g_okdes = true; test[0] = false; test[1] = false; g[0] = '\040'; g_col = false; - tesok = true; + g_tesok = true; test[2] = false; g[7] = g[0]; g[2] = 'A'; - cache = false; - brt = false; + g_cache = false; + g_brt = false; g_maff = 68; g[5] = 'E'; - mnumo = 0; - prebru = 0; + g_mnumo = 0; + g_prebru = 0; g[4] = 'T'; g_x = 0; g_y = 0; g_num = 0; - hdb = 0; - hfb = 0; - cs = 0; + g_hdb = 0; + g_hfb = 0; + g_cs = 0; is = 0; k = 0; - ment = 0; - syn = true; - fouil = true; - mchai = 0; - inei = 0; + g_ment = 0; + g_syn = true; + g_fouil = true; + g_mchai = 0; + g_inei = 0; initouv(); g[3] = 'S'; g[6] = 'R'; - iouv = 0; - dobj = 0; + g_iouv = 0; + g_dobj = 0; affrep(); _hintPctMessage = deline(580); while ((test[k] == false) && (k < 2)) { @@ -121,16 +121,16 @@ void MortevielleEngine::gameLoaded() { // presumably for copy protection. This has been replaced with hardcoded success test[k] = true; - okdes = false; + g_okdes = false; _endGame = true; _loseGame = false; - fouil = false; + g_fouil = false; } person(); tinke(); drawClock(); afdes(0); - repon(2, crep); + repon(2, g_crep); clsf3(); _endGame = false; tmlieu(g_s.mlieu); @@ -138,7 +138,7 @@ void MortevielleEngine::gameLoaded() { if (g_s.derobj != 0) modobj2(g_s.derobj + 400, test[1], test[2]); else - tesok = test[1] || test[2]; + g_tesok = test[1] || test[2]; showMouse(); } @@ -161,12 +161,12 @@ void tsitu() { if (!g_col) clsf2(); - syn = false; - iesc = false; - if (!anyone) { - if (brt) + g_syn = false; + g_iesc = false; + if (!g_anyone) { + if (g_brt) if ((g_msg[3] == MENU_MOVE) || (g_msg[4] == OPCODE_LEAVE) || (g_msg[4] == OPCODE_SLEEP) || (g_msg[4] == OPCODE_EAT)) { - ctrm = 4; + g_ctrm = 4; mennor(); return; } @@ -226,14 +226,14 @@ void tsitu() { fctSelfPut(); if (g_msg[4] == OPCODE_SLOOK) fctSelftLook(); - cache = false; + g_cache = false; if (g_msg[4] == OPCODE_SHIDE) fctSelfHide(); } else { - if (anyone) { + if (g_anyone) { quelquun(); - anyone = false; + g_anyone = false; mennor(); return; } @@ -245,15 +245,15 @@ void tsitu() { if (((g_s.mlieu < 16) || (g_s.mlieu > 19)) && (g_s.mlieu != 23) && (g_s.mlieu != 0) && (g_s.derobj != 152) && (!g_vm->_loseGame)) { if ((g_s.conf > 99) && (h > 8) && (h < 16)) { - crep = 1501; + g_crep = 1501; tperd(); } if ((g_s.conf > 99) && (h > 0) && (h < 9)) { - crep = 1508; + g_crep = 1508; tperd(); } if ((j > 1) && (h > 8) && (!g_vm->_loseGame)) { - crep = 1502; + g_crep = 1502; tperd(); } } @@ -263,13 +263,13 @@ void tsitu() { /* NIVEAU 1 */ void theure() { - vj = ord(g_s.heure); - vh = vj % 48; - vj /= 48; - vm = vh % 2; - vh /= 2; - g_hour = vh; - if (vm == 1) + g_vj = ord(g_s.heure); + g_vh = g_vj % 48; + g_vj /= 48; + g_vm__ = g_vh % 2; + g_vh /= 2; + g_hour = g_vh; + if (g_vm__ == 1) g_minute = 30; else g_minute = 0; diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 1694387964..8d9e67f818 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -100,7 +100,7 @@ void taffich() { int alllum[16]; - int a = caff; + int a = g_caff; if ((a >= 153) && (a <= 161)) a = tran2[a - 153]; else if ((a >= 136) && (a <= 140)) @@ -147,7 +147,7 @@ void taffich() { break; } - okdes = true; + g_okdes = true; hideMouse(); lgt = 0; Common::String filename; @@ -221,7 +221,7 @@ void taffich() { alllum[k] = -1; } } - numpal = npal; + g_numpal = npal; writepal(npal); if ((b < 15) || (b == 16) || (b == 17) || (b == 24) || (b == 26) || (b == 50)) { @@ -247,9 +247,9 @@ void taffich() { if ((a < 27) && ((g_maff < 27) || (g_s.mlieu == 15)) && (g_msg[4] != OPCODE_ENTER)) { if ((a == 13) || (a == 14)) person(); - else if (! blo) + else if (!g_blo) t11(g_s.mlieu, cx); - mpers = 0; + g_mpers = 0; } } diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 138b604c3a..8873c7e70a 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -78,95 +78,95 @@ const byte rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; /*------------------------------ VARIABLES ------------------------------*/ /*---------------------------------------------------------------------------*/ -bool blo, - bh1, - bf1, - bh2, - bh4, - bf4, - bh5, - bh6, - bh8, - bt3, - bt7, - bh9, +bool g_blo, + g_bh1, + g_bf1, + g_bh2, + g_bh4, + g_bf4, + g_bh5, + g_bh6, + g_bh8, + g_bt3, + g_bt7, + g_bh9, g_soundOff, - main1, - choisi, - test0, - f2_all, - imen, - cache, - iesc, + g_main1, + g_choisi, + g_test0, + g_f2_all, + g_imen, + g_cache, + g_iesc, g_col, - syn, - fouil, - zuul, - tesok, - obpart, - okdes, - arret, - anyone, - brt, - rect, - rech_cfiec; + g_syn, + g_fouil, + g_zuul, + g_tesok, + g_obpart, + g_okdes, + g_arret, + g_anyone, + g_brt, + g_rect, + g_rech_cfiec; int g_x, g_y, g_t, - vj, - li, - vh, - vm, - jh, - mh, - cs, + g_vj, + g_li, + g_vh, + g_vm__, + g_jh, + g_mh, + g_cs, g_currGraphicalDevice, - hdb, - hfb, + g_hdb, + g_hfb, g_hour, g_day, g_key, g_minute, g_num, - res, - ment, + g_res, + g_ment, g_haut, - caff, + g_caff, g_maff, - crep, - ades, - iouv, - inei, - ctrm, - dobj, - msg3, - msg4, - mlec, + g_crep, + g_ades, + g_iouv, + g_inei, + g_ctrm, + g_dobj, + g_msg3, + g_msg4, + g_mlec, g_newGraphicalDevice, - c_zzz, - mchai, - menup, - ipers, - ledeb, - lefin, - mpers, - mnumo, - xprec, - yprec, - perdep, - prebru, - typlec, - num_ph, - numpal, - nb_word, - ptr_oct, - k_tempo, - ptr_tcph, - ptr_word, - color_txt; + g_c_zzz, + g_mchai, + g_menup, + g_ipers, + g_ledeb, + g_lefin, + g_mpers, + g_mnumo, + g_xprec, + g_yprec, + g_perdep, + g_prebru, + g_typlec, + g_num_ph, + g_numpal, + g_nb_word, + g_ptr_oct, + g_k_tempo, + g_ptr_tcph, + g_ptr_word, + g_color_txt; int t_cph[6401]; byte tabdon[4001]; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 1ccea2c7b3..3b2e44d843 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -219,94 +219,94 @@ enum GraphicModes { MODE_AMSTRAD1512 = 0, MODE_CGA = 1, MODE_EGA = 2, MODE_HERCU /*------------------------------ VARIABLES ------------------------------*/ /*---------------------------------------------------------------------------*/ -extern bool blo, - bh1, - bf1, - bh2, - bh4, - bf4, - bh5, - bh6, - bh8, - bt3, - bt7, - bh9, +extern bool g_blo, + g_bh1, + g_bf1, + g_bh2, + g_bh4, + g_bf4, + g_bh5, + g_bh6, + g_bh8, + g_bt3, + g_bt7, + g_bh9, g_soundOff, - main1, - choisi, - test0, - f2_all, - imen, - cache, - iesc, + g_main1, + g_choisi, + g_test0, + g_f2_all, + g_imen, + g_cache, + g_iesc, g_col, - syn, - fouil, - zuul, - tesok, - obpart, - okdes, - anyone, - brt, - rect, - rech_cfiec; + g_syn, + g_fouil, + g_zuul, + g_tesok, + g_obpart, + g_okdes, + g_anyone, + g_brt, + g_rect, + g_rech_cfiec; extern int g_x, g_y, g_t, - vj, - li, - vh, - vm, - jh, - mh, - cs, + g_vj, + g_li, + g_vh, + g_vm__, + g_jh, + g_mh, + g_cs, g_currGraphicalDevice, - hdb, - hfb, + g_hdb, + g_hfb, g_hour, g_day, g_key, g_minute, g_num, - res, - ment, + g_res, + g_ment, g_haut, - caff, + g_caff, g_maff, - crep, - ades, - iouv, - inei, - ctrm, - dobj, - msg3, - msg4, - mlec, + g_crep, + g_ades, + g_iouv, + g_inei, + g_ctrm, + g_dobj, + g_msg3, + g_msg4, + g_mlec, g_newGraphicalDevice, - c_zzz, - mchai, - menup, - ipers, - ledeb, - lefin, - mpers, - mnumo, - xprec, - yprec, - perdep, - prebru, - typlec, - num_ph, - numpal, - nb_word, - ptr_oct, - k_tempo, - ptr_tcph, - ptr_word, - color_txt; + g_c_zzz, + g_mchai, + g_menup, + g_ipers, + g_ledeb, + g_lefin, + g_mpers, + g_mnumo, + g_xprec, + g_yprec, + g_perdep, + g_prebru, + g_typlec, + g_num_ph, + g_numpal, + g_nb_word, + g_ptr_oct, + g_k_tempo, + g_ptr_tcph, + g_ptr_word, + g_color_txt; extern int t_cph[6401]; extern byte tabdon[4001]; -- cgit v1.2.3 From b2b16cefce08dbdad76b9057ff97d08c7e14c56e Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 3 Mar 2012 00:23:27 +0100 Subject: MORTEVIELLE: rename more globals and constants, remove t_nhom usage --- engines/mortevielle/actions.cpp | 524 ++++++++++++++++++------------------ engines/mortevielle/dialogs.cpp | 24 +- engines/mortevielle/level15.cpp | 41 +-- engines/mortevielle/level15.h | 4 +- engines/mortevielle/menu.cpp | 34 +-- engines/mortevielle/mor.cpp | 108 ++++---- engines/mortevielle/mor2.cpp | 155 ++++++----- engines/mortevielle/mortevielle.cpp | 6 +- engines/mortevielle/mouse.cpp | 10 +- engines/mortevielle/outtext.cpp | 4 +- engines/mortevielle/ovd1.cpp | 28 +- engines/mortevielle/parole.cpp | 216 +++++++-------- engines/mortevielle/parole2.cpp | 28 +- engines/mortevielle/prog.cpp | 28 +- engines/mortevielle/saveload.cpp | 46 ++-- engines/mortevielle/taffich.cpp | 45 ++-- engines/mortevielle/var_mor.cpp | 37 ++- engines/mortevielle/var_mor.h | 121 ++++----- 18 files changed, 733 insertions(+), 726 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index d115ef3976..8441315bd7 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -49,13 +49,13 @@ namespace Mortevielle { void fctMove() { int cx; - if ((g_s.mlieu == 26) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { - g_s.mlieu = 15; - g_caff = g_s.mlieu; + if ((g_s._mlieu == 26) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { + g_s._mlieu = 15; + g_caff = g_s._mlieu; afdes(0); - repon(2, g_s.mlieu); + repon(2, g_s._mlieu); } - if ((g_s.mlieu == 15) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { + if ((g_s._mlieu == 15) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { if (!g_syn) ecr3(g_vm->getEngineString(S_GO_TO)); tfleche(); @@ -67,13 +67,13 @@ void fctMove() { if (g_num == 0) return; if (g_num == 1) { - g_s.mlieu = 0; + g_s._mlieu = 0; tmlieu(0); } else if (g_num == 7) { - g_s.mlieu = 13; + g_s._mlieu = 13; tmlieu(13); } else if (g_num != 6) - g_s.mlieu = 26; + g_s._mlieu = 26; if ((g_num > 1) && (g_num < 6)) g_ment = g_num - 1; if (g_num > 7) @@ -89,55 +89,60 @@ void fctMove() { do { ++cx; } while (g_vm->_menu._moveMenu[cx] != g_msg[4]); - if (g_s.mlieu == 19) { + + if (g_s._mlieu == 19) { if (cx == 1) t1deva(); if (cx == 2) t1neig(); goto L2; } - if (g_s.mlieu == 23) { + + if (g_s._mlieu == 23) { if (cx == 1) t1deau(); if (cx == 2) t1derr(); goto L2; } - if ((g_s.mlieu == 11) && (cx == 1)) + + if ((g_s._mlieu == 11) && (cx == 1)) cx = 6; - if (g_s.mlieu == 12) { + + if (g_s._mlieu == 12) { if (cx == 2) cx = 6; if (cx == 5) cx = 16; } - if ((g_s.mlieu == 14) && (cx == 3)) + + if ((g_s._mlieu == 14) && (cx == 3)) cx = 6; - if (((g_s.mlieu == 15) || (g_s.mlieu == 26)) && (cx == 4)) + if (((g_s._mlieu == 15) || (g_s._mlieu == 26)) && (cx == 4)) cx = 6; - if ((g_s.mlieu > 19) && (g_s.mlieu != 26)) + if ((g_s._mlieu > 19) && (g_s._mlieu != 26)) cx += 10; - if ((g_s.mlieu == 20) && (cx == 13)) + if ((g_s._mlieu == 20) && (cx == 13)) cx = 16; - if (g_s.mlieu == 21) { + if (g_s._mlieu == 21) { if (cx == 12) cx = 16; else if (cx > 13) cx = 15; } - if ((g_s.mlieu == 22) && (cx > 14)) + if ((g_s._mlieu == 22) && (cx > 14)) cx = 15; - if ((g_s.mlieu == 24) && (cx != 17)) + if ((g_s._mlieu == 24) && (cx != 17)) if (cx > 13) cx = 15; if (cx == 1) - g_s.mlieu = 11; + g_s._mlieu = 11; else if (cx == 2) - g_s.mlieu = 12; + g_s._mlieu = 12; else if (cx == 3) - g_s.mlieu = 14; + g_s._mlieu = 14; else if (cx == 4) - g_s.mlieu = 15; + g_s._mlieu = 15; else if (cx == 5) cx = 12; if (cx == 6) @@ -147,31 +152,31 @@ void fctMove() { else if (cx == 12) t1deva(); else if (cx == 13) - g_s.mlieu = 20; + g_s._mlieu = 20; else if (cx == 14) - g_s.mlieu = 24; + g_s._mlieu = 24; else if (cx == 15) t1neig(); else if (cx == 16) t1derr(); else if (cx == 17) { - if ((g_s.ipuit != 120) && (g_s.ipuit != 140)) + if ((g_s._ipuit != 120) && (g_s._ipuit != 140)) g_crep = 997; - else if (g_s.ipuit == 120) + else if (g_s._ipuit == 120) g_crep = 181; - else if (g_s.conf > 80) { + else if (g_s._conf > 80) { g_crep = 1505; tperd(); } else { - g_s.mlieu = 23; + g_s._mlieu = 23; affrep(); } } if ((cx < 5) || (cx == 13) || (cx == 14)) affrep(); - debloc(g_s.mlieu); + debloc(g_s._mlieu); L2: - tmlieu(g_s.mlieu); + tmlieu(g_s._mlieu); } /** @@ -184,33 +189,33 @@ void fctTake() { avpoing(cx); if (g_crep != 139) { if (g_ipers > 0) - g_s.conf += 3; + g_s._conf += 3; if (g_obpart) { - if (g_s.mlieu == 2) - g_s.iloic = 0; - if (g_s.mlieu == 13) { - if (g_s.iboul == g_caff) - g_s.iboul = 0; - if (g_s.ibag == g_caff) - g_s.ibag = 0; + if (g_s._mlieu == 2) + g_s._iloic = 0; + if (g_s._mlieu == 13) { + if (g_s._iboul == g_caff) + g_s._iboul = 0; + if (g_s._ibag == g_caff) + g_s._ibag = 0; } - if (g_s.mlieu == 14) - g_s.icave = 0; - if (g_s.mlieu == 16) - g_s.icryp = 0; - if (g_s.mlieu == 17) - g_s.ivier = 0; - if (g_s.mlieu == 24) - g_s.ipuit = 0; + if (g_s._mlieu == 14) + g_s._icave = 0; + if (g_s._mlieu == 16) + g_s._icryp = 0; + if (g_s._mlieu == 17) + g_s._ivier = 0; + if (g_s._mlieu == 24) + g_s._ipuit = 0; mfouen(); g_obpart = false; affrep(); } else { - tabdon[acha + ((g_mchai - 1) * 10) + g_cs - 1] = 0; + g_tabdon[acha + ((g_mchai - 1) * 10) + g_cs - 1] = 0; tsuiv(); ++g_dobj; if (g_dobj > 6) { - g_s.conf += 2; + g_s._conf += 2; g_dobj = 0; } } @@ -230,40 +235,40 @@ void fctTake() { } } tcoord(5); - if ((g_num == 0) || ((g_num == 1) && (g_s.mlieu == 16))) { + if ((g_num == 0) || ((g_num == 1) && (g_s._mlieu == 16))) { tcoord(8); if (g_num != 0) { if (g_ipers > 0) - g_s.conf += 3; + g_s._conf += 3; g_crep = 997; - if ((g_s.mlieu == 2) && (g_s.iloic != 0)) - avpoing(g_s.iloic); - if ((g_s.mlieu == 13) && (g_num == 1) && (g_s.iboul != 0)) { - avpoing(g_s.iboul); + if ((g_s._mlieu == 2) && (g_s._iloic != 0)) + avpoing(g_s._iloic); + if ((g_s._mlieu == 13) && (g_num == 1) && (g_s._iboul != 0)) { + avpoing(g_s._iboul); if ((g_crep != 997) && (g_crep != 139)) aniof(2, 7); } - if ((g_s.mlieu == 13) && (g_num == 2) && (g_s.ibag != 0)) { - avpoing(g_s.ibag); + if ((g_s._mlieu == 13) && (g_num == 2) && (g_s._ibag != 0)) { + avpoing(g_s._ibag); if ((g_crep != 997) && (g_crep != 139)) aniof(2, 6); } - if ((g_s.mlieu == 14) && (g_s.icave != 0)) { - avpoing(g_s.icave); + if ((g_s._mlieu == 14) && (g_s._icave != 0)) { + avpoing(g_s._icave); if ((g_crep != 997) && (g_crep != 139)) aniof(2, 2); } - if ((g_s.mlieu == 16) && (g_s.icryp != 0)) - avpoing(g_s.icryp); - if ((g_s.mlieu == 17) && (g_s.ivier != 0)) { - avpoing(g_s.ivier); + if ((g_s._mlieu == 16) && (g_s._icryp != 0)) + avpoing(g_s._icryp); + if ((g_s._mlieu == 17) && (g_s._ivier != 0)) { + avpoing(g_s._ivier); if ((g_crep != 997) && (g_crep != 139)) { g_crep = 182; aniof(2, 1); } } - if ((g_s.mlieu == 24) && (g_s.ipuit != 0)) { - avpoing(g_s.ipuit); + if ((g_s._mlieu == 24) && (g_s._ipuit != 0)) { + avpoing(g_s._ipuit); if ((g_crep != 997) && (g_crep != 139)) aniof(2, 1); } @@ -271,15 +276,15 @@ void fctTake() { g_crep = 999; } } else { - if ( ((g_s.mlieu == 0) && (g_num == 3)) || ((g_s.mlieu == 1) && (g_num == 4)) - || ((g_s.mlieu == 2) && (g_num == 1)) || ((g_s.mlieu == 4) && (g_num == 3)) - || ((g_s.mlieu == 5) && (g_num == 6)) || ((g_s.mlieu == 6) && (g_num == 2)) - || ((g_s.mlieu == 7) && (g_num == 6)) || ((g_s.mlieu == 8) && (g_num == 4)) - || ((g_s.mlieu == 9) && (g_num == 4)) || ((g_s.mlieu == 10) && (g_num > 2)) - || ((g_s.mlieu == 11) && (g_num == 7)) || ((g_s.mlieu == 12) && (g_num == 6)) - || ((g_s.mlieu == 13) && (g_num > 4)) || ((g_s.mlieu > 13) && (g_s.mlieu != 23)) ) + if ( ((g_s._mlieu == 0) && (g_num == 3)) || ((g_s._mlieu == 1) && (g_num == 4)) + || ((g_s._mlieu == 2) && (g_num == 1)) || ((g_s._mlieu == 4) && (g_num == 3)) + || ((g_s._mlieu == 5) && (g_num == 6)) || ((g_s._mlieu == 6) && (g_num == 2)) + || ((g_s._mlieu == 7) && (g_num == 6)) || ((g_s._mlieu == 8) && (g_num == 4)) + || ((g_s._mlieu == 9) && (g_num == 4)) || ((g_s._mlieu == 10) && (g_num > 2)) + || ((g_s._mlieu == 11) && (g_num == 7)) || ((g_s._mlieu == 12) && (g_num == 6)) + || ((g_s._mlieu == 13) && (g_num > 4)) || ((g_s._mlieu > 13) && (g_s._mlieu != 23)) ) g_crep = 997; - else if (g_s.mlieu == 23) { + else if (g_s._mlieu == 23) { g_crep = 1504; tperd(); } else @@ -301,11 +306,11 @@ void fctInventoryTake() { cy = 0; do { ++cy; - if (ord(g_s.sjer[cy]) != 0) + if (ord(g_s._sjer[cy]) != 0) ++cz; } while (cz != cx); - cz = ord(g_s.sjer[cy]); - g_s.sjer[cy] = chr(0); + cz = ord(g_s._sjer[cy]); + g_s._sjer[cy] = chr(0); modinv(); avpoing(cz); g_crep = 998; @@ -329,21 +334,21 @@ void fctLift() { tcoord(8); if (g_num != 0) { if (g_ipers > 0) - ++g_s.conf; + ++g_s._conf; g_crep = 997; - if ((g_s.mlieu == 2) && (g_s.iloic != 0)) - treg(g_s.iloic); + if ((g_s._mlieu == 2) && (g_s._iloic != 0)) + treg(g_s._iloic); } return; } if (g_ipers > 0) - ++g_s.conf; - cx = g_s.mlieu; - if (g_s.mlieu == 16) + ++g_s._conf; + cx = g_s._mlieu; + if (g_s._mlieu == 16) cx = 14; - else if (g_s.mlieu == 19) + else if (g_s._mlieu == 19) cx = 15; - g_crep = tabdon[asoul + (cx << 3) + (g_num - 1)]; + g_crep = g_tabdon[asoul + (cx << 3) + (g_num - 1)]; if (g_crep == 255) g_crep = 997; } @@ -372,10 +377,10 @@ void fctRead() { * @remarks Originally called 'tslire' */ void fctSelfRead() { - if (g_s.derobj == 0) + if (g_s._derobj == 0) g_crep = 186; else - st4(g_s.derobj); + st4(g_s._derobj); } /** @@ -399,60 +404,60 @@ void fctLook() { tcoord(8); g_crep = 131; if (g_num != 0) { - if (g_s.mlieu == 13) { + if (g_s._mlieu == 13) { if (g_num == 1) { g_crep = 164; - if (g_s.ibag != 0) - treg(g_s.ibag); - else if (g_s.iboul != 0) - treg(g_s.iboul); + if (g_s._ibag != 0) + treg(g_s._ibag); + else if (g_s._iboul != 0) + treg(g_s._iboul); } else { g_crep = 193; - if (g_s.ibag != 0) - treg(g_s.ibag); + if (g_s._ibag != 0) + treg(g_s._ibag); } } - if (g_s.mlieu == 14) { + if (g_s._mlieu == 14) { g_crep = 164; - if (g_s.icave != 0) - treg(g_s.icave); + if (g_s._icave != 0) + treg(g_s._icave); } - if (g_s.mlieu == 17) { + if (g_s._mlieu == 17) { g_crep = 174; - if (g_s.ivier != 0) - treg(g_s.ivier); + if (g_s._ivier != 0) + treg(g_s._ivier); } - if (g_s.mlieu == 24) { + if (g_s._mlieu == 24) { g_crep = 131; - if (g_s.ipuit != 0) - treg(g_s.ipuit); + if (g_s._ipuit != 0) + treg(g_s._ipuit); } } return; } - cx = g_s.mlieu; - if (g_s.mlieu == 20) + cx = g_s._mlieu; + if (g_s._mlieu == 20) cx = 17; - if ((g_s.mlieu > 21) && (g_s.mlieu < 25)) + if ((g_s._mlieu > 21) && (g_s._mlieu < 25)) cx -= 4; - if (g_s.mlieu == 26) + if (g_s._mlieu == 26) cx = 21; - g_crep = tabdon[arega + (cx * 7) + g_num - 1]; - if ((g_s.mlieu == 13) && (g_num == 8)) + g_crep = g_tabdon[arega + (cx * 7) + g_num - 1]; + if ((g_s._mlieu == 13) && (g_num == 8)) g_crep = 126; - if (g_s.mlieu == 19) + if (g_s._mlieu == 19) g_crep = 103; if (g_crep == 255) g_crep = 131; - if ((g_s.mlieu == 1) && (g_num == 1)) + if ((g_s._mlieu == 1) && (g_num == 1)) treg(144); - if ((g_s.mlieu == 5) && (g_num == 3)) + if ((g_s._mlieu == 5) && (g_num == 3)) treg(147); - if ((g_s.mlieu == 8) && (g_num == 3)) + if ((g_s._mlieu == 8) && (g_num == 3)) treg(149); - if ((g_s.mlieu == 9) && (g_num == 2)) + if ((g_s._mlieu == 9) && (g_num == 2)) treg(30); - if ((g_s.mlieu == 10) && (g_num == 3)) + if ((g_s._mlieu == 10) && (g_num == 3)) treg(31); } @@ -461,8 +466,8 @@ void fctLook() { * @remarks Originally called 'tsregarder' */ void fctSelftLook() { - if (g_s.derobj != 0) - treg(g_s.derobj); + if (g_s._derobj != 0) + treg(g_s._derobj); else g_crep = 186; } @@ -486,7 +491,7 @@ void fctSearch() { if (g_anyone || g_iesc) return; - if (g_s.mlieu == 23) { + if (g_s._mlieu == 23) { g_crep = 1504; tperd(); return; @@ -499,17 +504,17 @@ void fctSearch() { int cx = 0; do { ++cx; - } while ((cx <= 6) && (g_num != ord(touv[cx]))); - if (g_num != ord(touv[cx])) + } while ((cx <= 6) && (g_num != ord(g_touv[cx]))); + if (g_num != ord(g_touv[cx])) g_crep = 187; else { if (g_ipers > 0) - g_s.conf += 3; + g_s._conf += 3; rechai(g_mchai); if (g_mchai != 0) { g_cs = 0; - is = 0; + g_is = 0; g_fouil = true; mfoudi(); tsuiv(); @@ -521,41 +526,41 @@ void fctSearch() { g_crep = 997; if (g_num != 0) { if (g_ipers > 0) - g_s.conf += 3; - if ((g_s.mlieu != 24) && (g_s.mlieu != 17) && (g_s.mlieu != 13)) { - if (g_s.mlieu == 2) { + g_s._conf += 3; + if ((g_s._mlieu != 24) && (g_s._mlieu != 17) && (g_s._mlieu != 13)) { + if (g_s._mlieu == 2) { g_crep = 123; - if (g_s.iloic != 0) - treg(g_s.iloic); + if (g_s._iloic != 0) + treg(g_s._iloic); } - if (g_s.mlieu == 16) { + if (g_s._mlieu == 16) { g_crep = 123; - if (g_s.icryp != 0) - treg(g_s.icryp); + if (g_s._icryp != 0) + treg(g_s._icryp); } } } } } else { if (g_ipers > 0) - g_s.conf += 3; + g_s._conf += 3; g_crep = 997; - if (g_s.mlieu < 14) - g_crep = r[g_s.mlieu]; + if (g_s._mlieu < 14) + g_crep = r[g_s._mlieu]; - if ((g_s.mlieu == 3) && (g_num == 2)) + if ((g_s._mlieu == 3) && (g_num == 2)) g_crep = 162; - if (g_s.mlieu == 12) { + if (g_s._mlieu == 12) { if ((g_num == 3) || (g_num == 4)) g_crep = 162; else if (g_num == 5) g_crep = 159; } - if (g_s.mlieu == 19) + if (g_s._mlieu == 19) g_crep = 104; - else if (g_s.mlieu == 16) + else if (g_s._mlieu == 16) g_crep = 155; } } @@ -565,8 +570,8 @@ void fctSearch() { * @remarks Originally called 'tsfouiller' */ void fctSelfSearch() { - if (g_s.derobj != 0) - st7(g_s.derobj); + if (g_s._derobj != 0) + st7(g_s._derobj); else g_crep = 186; } @@ -600,32 +605,32 @@ void fctOpen() { tcoord(7); if (g_num != 0) { if (g_ipers > 0) - g_s.conf += 2; + g_s._conf += 2; ++g_iouv; int cx = 0; do { ++cx; - } while (!((cx > 6) || (ord(touv[cx]) == 0) || (ord(touv[cx]) == g_num))); - if (ord(touv[cx]) != g_num) { - if (!( ((g_num == 3) && ((g_s.mlieu == 0) || (g_s.mlieu == 9) || (g_s.mlieu == 5) || (g_s.mlieu == 7))) - || ((g_num == 4) && ((g_s.mlieu == 1) || (g_s.mlieu == 2) || (g_s.mlieu == 6))) - || ((g_s.mlieu == 4) && (g_num == 5)) - || ((g_num == 6) && ((g_s.mlieu == 7) || (g_s.mlieu == 10) || (g_s.mlieu == 8) || (g_s.mlieu == 13))) - || ((g_s.mlieu == 8) && (g_num == 2)) - || ((g_s.mlieu == 12) && (g_num == 7))) ) { - if ( ((g_s.mlieu > 10) && (g_s.mlieu < 14)) - || ((g_s.mlieu > 6) && (g_s.mlieu < 10)) - || (g_s.mlieu == 0) || (g_s.mlieu == 2) || (g_s.mlieu == 5)) { + } while (!((cx > 6) || (ord(g_touv[cx]) == 0) || (ord(g_touv[cx]) == g_num))); + if (ord(g_touv[cx]) != g_num) { + if (!( ((g_num == 3) && ((g_s._mlieu == 0) || (g_s._mlieu == 9) || (g_s._mlieu == 5) || (g_s._mlieu == 7))) + || ((g_num == 4) && ((g_s._mlieu == 1) || (g_s._mlieu == 2) || (g_s._mlieu == 6))) + || ((g_s._mlieu == 4) && (g_num == 5)) + || ((g_num == 6) && ((g_s._mlieu == 7) || (g_s._mlieu == 10) || (g_s._mlieu == 8) || (g_s._mlieu == 13))) + || ((g_s._mlieu == 8) && (g_num == 2)) + || ((g_s._mlieu == 12) && (g_num == 7))) ) { + if ( ((g_s._mlieu > 10) && (g_s._mlieu < 14)) + || ((g_s._mlieu > 6) && (g_s._mlieu < 10)) + || (g_s._mlieu == 0) || (g_s._mlieu == 2) || (g_s._mlieu == 5)) { if (hazard(1, 4) == 3) parole(7, 9, 1); } - touv[cx] = chr(g_num); + g_touv[cx] = chr(g_num); aniof(1, g_num); } - cx = g_s.mlieu; - if (g_s.mlieu == 16) + cx = g_s._mlieu; + if (g_s._mlieu == 16) cx = 14; - g_crep = tabdon[aouvr + (cx * 7) + g_num - 1]; + g_crep = g_tabdon[aouvr + (cx * 7) + g_num - 1]; if (g_crep == 254) g_crep = 999; } else @@ -638,7 +643,7 @@ void fctOpen() { * @remarks Originally called 'tmettre' */ void fctPlace() { - if (g_s.derobj == 0) { + if (g_s._derobj == 0) { g_crep = 186; return; } @@ -658,28 +663,28 @@ void fctPlace() { g_crep = 999; if (g_caff == 13) { if (g_num == 1) { - if (g_s.iboul != 0) { + if (g_s._iboul != 0) { g_crep = 188; } else { - g_s.iboul = g_s.derobj; - if (g_s.derobj == 141) + g_s._iboul = g_s._derobj; + if (g_s._derobj == 141) aniof(1, 7); } - } else if (g_s.ibag != 0) { + } else if (g_s._ibag != 0) { g_crep = 188; } else { - g_s.ibag = g_s.derobj; - if (g_s.derobj == 159) + g_s._ibag = g_s._derobj; + if (g_s._derobj == 159) aniof(1, 6); } } if (g_caff == 14) { - if (g_s.icave != 0) { + if (g_s._icave != 0) { g_crep = 188; } else { - g_s.icave = g_s.derobj; - if (g_s.derobj == 151) { + g_s._icave = g_s._derobj; + if (g_s._derobj == 151) { // Open hidden passage aniof(1, 2); aniof(1, 1); @@ -689,7 +694,7 @@ void fctPlace() { // Do you want to enter the hidden passage? int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); - if (answer== 1) { + if (answer == 1) { Common::String alertTxt = deline(582); Alert::show(alertTxt, 1); @@ -710,10 +715,10 @@ void fctPlace() { g_vm->_menu.displayMenu(); if (enterPassageFl) { - g_s.mlieu = 17; + g_s._mlieu = 17; tmlieu(17); } else { - tmlieu(g_s.mlieu); + tmlieu(g_s._mlieu); writepal(14); dessin(0); aniof(1, 2); @@ -735,17 +740,17 @@ void fctPlace() { } if (g_caff == 16) { - if (g_s.icryp == 0) - g_s.icryp = g_s.derobj; + if (g_s._icryp == 0) + g_s._icryp = g_s._derobj; else g_crep = 188; } if (g_caff == 17) { - if (g_s.ivier != 0) { + if (g_s._ivier != 0) { g_crep = 188; - } else if (g_s.derobj == 143) { - g_s.ivier = 143; + } else if (g_s._derobj == 143) { + g_s._ivier = 143; aniof(1, 1); } else { g_crep = 1512; @@ -754,10 +759,10 @@ void fctPlace() { } if (g_caff == 24) { - if (g_s.ipuit != 0) { + if (g_s._ipuit != 0) { g_crep = 188; - } else if ((g_s.derobj == 140) || (g_s.derobj == 120)) { - g_s.ipuit = g_s.derobj; + } else if ((g_s._derobj == 140) || (g_s._derobj == 120)) { + g_s._ipuit = g_s._derobj; aniof(1, 1); } else { g_crep = 185; @@ -786,7 +791,7 @@ void fctTurn() { tcoord(9); if (g_num != 0) { g_crep = 997; - if ((g_s.mlieu == 13) && (g_s.ibag == 159) && (g_s.iboul == 141)) { + if ((g_s._mlieu == 13) && (g_s._ibag == 159) && (g_s._iboul == 141)) { repon(2, 167); parole(7, 9, 1); int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); @@ -795,13 +800,13 @@ void fctTurn() { else g_crep = 168; } - if ((g_s.mlieu == 17) && (g_s.ivier == 143)) { + if ((g_s._mlieu == 17) && (g_s._ivier == 143)) { repon(2, 175); clsf3(); parole(6, -9, 1); int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); if (answer == 1) { - g_s.mlieu = 16; + g_s._mlieu = 16; affrep(); } else g_crep = 176; @@ -833,7 +838,7 @@ void fctSelfHide() { * @remarks Originally called 'tattacher' */ void fctAttach() { - if (g_s.derobj == 0) + if (g_s._derobj == 0) g_crep = 186; else { if (!g_syn) @@ -842,10 +847,10 @@ void fctAttach() { if (!(g_anyone) && !(g_iesc)) { tcoord(8); g_crep = 997; - if ((g_num != 0) && (g_s.mlieu == 24)) { + if ((g_num != 0) && (g_s._mlieu == 24)) { g_crep = 999; - if ((g_s.derobj == 120) || (g_s.derobj == 140)) { - g_s.ipuit = g_s.derobj; + if ((g_s._derobj == 120) || (g_s._derobj == 140)) { + g_s._ipuit = g_s._derobj; aniof(1, 1); } else g_crep = 185; @@ -874,11 +879,11 @@ void fctClose() { int cx = 0; do { ++cx; - } while ((cx <= 6) && (g_num != ord(touv[cx]))); - if (g_num == ord(touv[cx])) { + } while ((cx <= 6) && (g_num != ord(g_touv[cx]))); + if (g_num == ord(g_touv[cx])) { aniof(2, g_num); g_crep = 998; - touv[cx] = chr(0); + g_touv[cx] = chr(0); --g_iouv; if (g_iouv < 0) g_iouv = 0; @@ -903,15 +908,15 @@ void fctKnock() { if (!g_syn) ecr3(g_vm->getEngineString(S_HIT)); - if (g_s.mlieu == 15) { + if (g_s._mlieu == 15) { Alert::show(g_vm->getEngineString(S_BEFORE_USE_DEP_MENU), 1); return; } - if (g_s.mlieu < 25) { + if (g_s._mlieu < 25) { tfleche(); if (!(g_anyone) && !(g_iesc)) { - if ((g_s.mlieu < 19) && (g_s.mlieu != 15)) + if ((g_s._mlieu < 19) && (g_s._mlieu != 15)) g_crep = 133; else g_crep = 997; @@ -920,11 +925,11 @@ void fctKnock() { return; } - if (g_s.mlieu == 26) { + if (g_s._mlieu == 26) { int haz = (hazard(0, 8)) - 4; parole(11, haz, 1); int p; - ecfren(p, haz, g_s.conf, g_ment); + ecfren(p, haz, g_s._conf, g_ment); int l = g_ment; if (l != 0) { if (p != -500) { @@ -950,7 +955,7 @@ void fctKnock() { void fctSelfPut() { if (!g_syn) ecr3(g_vm->getEngineString(S_POSE)); - if (g_s.derobj == 0) + if (g_s._derobj == 0) g_crep = 186; else { if (g_caff > 99) { @@ -974,8 +979,8 @@ void fctSelfPut() { int cx = 0; do { ++cx; - } while ((cx <= 6) && (g_num != ord(touv[cx]))); - if (g_num != ord(touv[cx])) + } while ((cx <= 6) && (g_num != ord(g_touv[cx]))); + if (g_num != ord(g_touv[cx])) g_crep = 187; else { g_mchai = chai; @@ -987,30 +992,30 @@ void fctSelfPut() { if (g_num != 0) { g_crep = 998; if (g_caff == 2) { - if (g_s.iloic != 0) + if (g_s._iloic != 0) g_crep = 188; else - g_s.iloic = g_s.derobj; + g_s._iloic = g_s._derobj; } if (g_caff == 13) { if (g_num == 1) { - if (g_s.iboul != 0) + if (g_s._iboul != 0) g_crep = 188; else - g_s.iboul = g_s.derobj; - } else if (g_s.ibag != 0) { + g_s._iboul = g_s._derobj; + } else if (g_s._ibag != 0) { g_crep = 188; } else { - g_s.ibag = g_s.derobj; + g_s._ibag = g_s._derobj; } } if (g_caff == 16) { - if (g_s.icryp != 0) + if (g_s._icryp != 0) g_crep = 188; else - g_s.icryp = g_s.derobj; + g_s._icryp = g_s._derobj; } if (g_caff == 24) @@ -1042,13 +1047,13 @@ void fctSelfPut() { * @remarks Originally called 'tecouter' */ void fctListen() { - if (g_s.mlieu != 26) + if (g_s._mlieu != 26) g_crep = 101; else { if (g_ipers != 0) - ++g_s.conf; + ++g_s._conf; int p, haz; - ecfren(p, haz, g_s.conf, g_ment); + ecfren(p, haz, g_s._conf, g_ment); int l = g_ment; if (l != 0) { if (p != -500) { @@ -1080,19 +1085,19 @@ void fctListen() { * @remarks Originally called 'tmanger' */ void fctEat() { - if ((g_s.mlieu > 15) && (g_s.mlieu < 26)) { + if ((g_s._mlieu > 15) && (g_s._mlieu < 26)) { g_crep = 148; } else { tsort(); - g_s.mlieu = 10; + g_s._mlieu = 10; g_caff = 10; - debloc(g_s.mlieu); - tmlieu(g_s.mlieu); + debloc(g_s._mlieu); + tmlieu(g_s._mlieu); int j, h, m; calch(j, h, m); if ((h == 12) || (h == 13) || (h == 19)) { - g_s.conf -= (g_s.conf / 7); + g_s._conf -= (g_s._conf / 7); if (h == 12) { if (m == 0) h = 4; @@ -1123,16 +1128,16 @@ void fctEat() { void fctEnter() { // int x; - if ((g_s.mlieu == 21) || (g_s.mlieu == 22)) { + if ((g_s._mlieu == 21) || (g_s._mlieu == 22)) { t1sama(); - tmlieu(g_s.mlieu); - } else if (g_s.mlieu == 15) + tmlieu(g_s._mlieu); + } else if (g_s._mlieu == 15) aldepl(); else if (g_ment == 0) g_crep = 997; - else if ((g_ment == 9) && (g_s.derobj != 136)) { + else if ((g_ment == 9) && (g_s._derobj != 136)) { g_crep = 189; - g_s.teauto[8] = '*'; + g_s._teauto[8] = '*'; } else { int z = 0; if (!g_blo) @@ -1146,8 +1151,8 @@ void fctEnter() { aniof(1, 1); tip(z, g_x); - ++g_s.conf; - g_s.mlieu = 15; + ++g_s._conf; + g_s._mlieu = 15; g_msg[3] = MENU_DISCUSS; g_msg[4] = g_vm->_menu._discussMenu[g_x]; g_syn = true; @@ -1166,10 +1171,10 @@ void fctEnter() { parole(7, g_x, 1); aniof(1, 1); - g_s.mlieu = g_ment; + g_s._mlieu = g_ment; affrep(); - debloc(g_s.mlieu); - tmlieu(g_s.mlieu); + debloc(g_s._mlieu); + tmlieu(g_s._mlieu); g_ment = 0; g_mpers = 0; g_ipers = 0; @@ -1184,17 +1189,17 @@ void fctEnter() { void fctSleep() { int z, j, h, m; - if ((g_s.mlieu > 15) && (g_s.mlieu < 26)) { + if ((g_s._mlieu > 15) && (g_s._mlieu < 26)) { g_crep = 148; return; } - if (g_s.mlieu != 0) { + if (g_s._mlieu != 0) { tsort(); - g_s.mlieu = 0; + g_s._mlieu = 0; affrep(); afdes(0); - debloc(g_s.mlieu); - tmlieu(g_s.mlieu); + debloc(g_s._mlieu); + tmlieu(g_s._mlieu); } clsf3(); clsf2(); @@ -1205,7 +1210,7 @@ void fctSleep() { int answer; do { if (h < 8) { - g_s.conf -= (g_s.conf / 20); + g_s._conf -= (g_s._conf / 20); z = (7 - h) * 2; if (m == 30) --z; @@ -1235,11 +1240,11 @@ void fctForce() { tfleche(); if ((!g_anyone) && (!g_iesc)) { - if (g_s.mlieu != 26) + if (g_s._mlieu != 26) g_crep = 997; else { g_crep = 143; - g_s.conf += 2; + g_s._conf += 2; } } } @@ -1251,27 +1256,27 @@ void fctForce() { void fctLeave() { tsort(); g_crep = 0; - if ((g_s.mlieu == 19) || (g_s.mlieu == 21) || (g_s.mlieu == 22) || (g_s.mlieu == 24)) + if ((g_s._mlieu == 19) || (g_s._mlieu == 21) || (g_s._mlieu == 22) || (g_s._mlieu == 24)) g_crep = 997; else { int lx = 0; - if ((g_s.mlieu < 16) || (g_s.mlieu == 26)) + if ((g_s._mlieu < 16) || (g_s._mlieu == 26)) lx = 10; - if ((g_s.mlieu == 10) || (g_s.mlieu == 20)) + if ((g_s._mlieu == 10) || (g_s._mlieu == 20)) lx = 21; - if ((g_s.mlieu < 10) || (g_s.mlieu == 13)) + if ((g_s._mlieu < 10) || (g_s._mlieu == 13)) lx = 15; - if (g_s.mlieu == 16) { + if (g_s._mlieu == 16) { lx = 17; g_crep = 176; } - if (g_s.mlieu == 17) + if (g_s._mlieu == 17) t23coul(lx); - if (g_s.mlieu == 23) + if (g_s._mlieu == 23) lx = 24; if (g_crep != 997) - g_s.mlieu = lx; + g_s._mlieu = lx; g_caff = lx; if (g_crep == 0) g_crep = lx; @@ -1295,12 +1300,12 @@ void fctWait() { ++g_jh; tinke(); if (!g_blo) - t11(g_s.mlieu, quel); + t11(g_s._mlieu, quel); if ((g_ipers != 0) && (g_mpers == 0)) { g_crep = 998; - if ((g_s.mlieu == 13) || (g_s.mlieu == 14)) + if ((g_s._mlieu == 13) || (g_s._mlieu == 14)) cavegre(); - if ((g_s.mlieu > 0) && (g_s.mlieu < 10)) + if ((g_s._mlieu > 0) && (g_s._mlieu < 10)) g_anyone = true; g_mpers = g_ipers; if (!g_anyone) @@ -1364,7 +1369,7 @@ void fctDiscuss() { for (int ix = 1; ix <= 46; ++ix) te[ix] = false; for (int ix = 1; ix <= 45; ++ix) { - lib[ix] = deline(ix + c_tparler); + lib[ix] = deline(ix + kQuestionStringIndex); for (i = lib[ix].size(); i <= 40; ++i) lib[ix] = lib[ix] + ' '; } @@ -1379,7 +1384,7 @@ void fctDiscuss() { do { ++icm; g_vm->_screenSurface.putxy(co, lig); - if (g_s.teauto[icm] == '*') { + if (g_s._teauto[icm] == '*') { if (te[icm]) writetp(lib[icm], 1); else @@ -1439,7 +1444,7 @@ void fctDiscuss() { writetp(lib[choi], 1); te[choi] = ! te[choi]; } - if ((g_s.teauto[ix] == '*') || (ix == 46)) { + if ((g_s._teauto[ix] == '*') || (ix == 46)) { lig = ((ix - 1) % 23) << 3; if (ix > 23) co = 320; @@ -1462,7 +1467,7 @@ void fctDiscuss() { int ix = choi - 1; if (g_col) { g_col = false; - g_s.mlieu = 15; + g_s._mlieu = 15; if (g_iouv > 0) max = 8; else @@ -1472,14 +1477,14 @@ void fctDiscuss() { suj = 129; else { suj = 138; - g_s.conf += (3 * (g_s.conf / 10)); + g_s._conf += (3 * (g_s._conf / 10)); } - } else if (nbrep[g_caff - 69] < nbrepm[g_caff - 69]) { - suj = tabdon[arep + (ix << 3) + (g_caff - 70)]; - g_s.conf += tabdon[arcf + ix]; - ++nbrep[g_caff - 69]; + } else if (g_nbrep[g_caff - 69] < g_nbrepm[g_caff - 69]) { + suj = g_tabdon[arep + (ix << 3) + (g_caff - 70)]; + g_s._conf += g_tabdon[arcf + ix]; + ++g_nbrep[g_caff - 69]; } else { - g_s.conf += 3; + g_s._conf += 3; suj = 139; } hideMouse(); @@ -1488,17 +1493,17 @@ void fctDiscuss() { sparl(0, suj); showMouse(); if ((suj == 84) || (suj == 86)) { - g_s.pourc[5] = '*'; - g_s.teauto[7] = '*'; + g_s._pourc[5] = '*'; + g_s._teauto[7] = '*'; } if ((suj == 106) || (suj == 108) || (suj == 94)) { for (int indx = 29; indx <= 31; ++indx) - g_s.teauto[indx] = '*'; - g_s.pourc[7] = '*'; + g_s._teauto[indx] = '*'; + g_s._pourc[7] = '*'; } if (suj == 70) { - g_s.pourc[8] = '*'; - g_s.teauto[32] = '*'; + g_s._pourc[8] = '*'; + g_s._teauto[32] = '*'; } hideMouse(); hirs(); @@ -1506,14 +1511,14 @@ void fctDiscuss() { } } while ((choi != 46) && (suj != 138)); if (g_col) { - g_s.conf += (3 * (g_s.conf / 10)); + g_s._conf += (3 * (g_s._conf / 10)); hideMouse(); hirs(); premtet(); sparl(0, 138); showMouse(); g_col = false; - g_s.mlieu = 15; + g_s._mlieu = 15; } g_ctrm = 0; hideMouse(); @@ -1525,7 +1530,7 @@ void fctDiscuss() { drawClock(); affrep(); /* chech;*/ - tmlieu(g_s.mlieu); + tmlieu(g_s._mlieu); clsf3(); } @@ -1601,8 +1606,6 @@ void MortevielleEngine::endGame() { * @remarks Originally called 'tencore' */ void MortevielleEngine::loseGame() { - int answer; - clsf2(); musique(0); tkey1(false); @@ -1616,7 +1619,8 @@ void MortevielleEngine::loseGame() { g_hour = 10; g_day = 0; repon(2, 180); - answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); + + int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); _quitGame = (answer != 1); } diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 96264c8b5d..a586ccf972 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -294,7 +294,7 @@ bool Ques::show() { int rep; int firstOption, lastOption; char key; - rectangle coor[max_rect]; + rectangle coor[kMaxRect]; Common::String choiceArray[15]; int currChoice, prevChoice; @@ -336,19 +336,17 @@ bool Ques::show() { optionPosY += 8; } for (int j = 1; j <= lastOption - firstOption + 1; ++j) { - rectangle &with = coor[j]; - - with.x1 = 45 * g_res; - with.x2 = (maxLength * 3 + 55) * g_res; - with.y1 = 27 + j * 8; - with.y2 = 34 + j * 8; - with.enabled = true; + coor[j]._x1 = 45 * g_res; + coor[j]._x2 = (maxLength * 3 + 55) * g_res; + coor[j]._y1 = 27 + j * 8; + coor[j]._y2 = 34 + j * 8; + coor[j]._enabled = true; while ((int)choiceArray[j].size() < maxLength) { choiceArray[j] += ' '; } } - coor[lastOption - firstOption + 2].enabled = false; + coor[lastOption - firstOption + 2]._enabled = false; if (g_res == 1) rep = 10; else @@ -366,9 +364,9 @@ bool Ques::show() { CHECK_QUIT0; currChoice = 1; - while (coor[currChoice].enabled && !dans_rect(coor[currChoice])) + while (coor[currChoice]._enabled && !isMouseIn(coor[currChoice])) ++currChoice; - if (coor[currChoice].enabled) { + if (coor[currChoice]._enabled) { if ((prevChoice != 0) && (prevChoice != currChoice)) { tmpStr = choiceArray[prevChoice] + '$'; afftex(tmpStr, 100, 27 + (prevChoice * 8), 100, 1, 0); @@ -469,7 +467,7 @@ void f3f8::aff50(bool drawAni50Fl) { if (drawAni50Fl) ani50(); else - repon(2, c_paroles + 142); + repon(2, kDialogStringIndex + 142); // Draw the f3/f8 dialog draw(); @@ -481,7 +479,7 @@ void f3f8::ani50() { g_crep = animof(2, 1); pictout(adani, g_crep, 63, 12); g_f2_all = (g_res == 1); - repon(2, c_paroles + 143); + repon(2, kDialogStringIndex + 143); } diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 68fff8aa00..aabbe29528 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -39,35 +39,37 @@ namespace Mortevielle { void copcha() { int i = acha; do { - tabdon[i] = tabdon[i + 390]; + g_tabdon[i] = g_tabdon[i + 390]; ++i; } while (i != acha + 390); } -bool dans_rect(rectangle r) { +/** + * Engine function : Is mouse in a given rect? + * @remarks Originally called 'dans_rect' + */ +bool isMouseIn(rectangle r) { int x, y, c; getMousePos(x, y, c); - if ((x > r.x1) && (x < r.x2) && (y > r.y1) && (y < r.y2)) + if ((x > r._x1) && (x < r._x2) && (y > r._y1) && (y < r._y2)) return true; return false; } -void outbloc(int n, pattern p, t_nhom pal) { +void outbloc(int n, pattern p, nhom *pal) { int ad = n * 404 + 0xd700; - WRITE_LE_UINT16(&mem[0x6000 * 16 + ad], p.tax); - WRITE_LE_UINT16(&mem[0x6000 * 16 + ad + 2], p.tay); + WRITE_LE_UINT16(&mem[0x6000 * 16 + ad], p._tax); + WRITE_LE_UINT16(&mem[0x6000 * 16 + ad + 2], p._tay); ad += 4; - for (int i = 1; i <= p.tax; ++i) - for (int j = 1; j <= p.tay; ++j) - mem[(0x6000 * 16) + ad + (j - 1) * p.tax + i - 1] = pal[n].hom[p.des[i][j]]; + for (int i = 1; i <= p._tax; ++i) + for (int j = 1; j <= p._tay; ++j) + mem[(0x6000 * 16) + ad + (j - 1) * p._tax + i - 1] = pal[n]._hom[p._des[i][j]]; } void writepal(int n) { - t_nhom pal; - switch (g_currGraphicalDevice) { case MODE_TANDY: case MODE_EGA: @@ -77,14 +79,19 @@ void writepal(int n) { mem[(0x7000 * 16) + (2 * i) + 1] = tabpal[n][i].y; } break; - case MODE_CGA: + case MODE_CGA: { warning("TODO: If this code is needed, resolve the incompatible types"); -// pal = palcga[n].a; + nhom pal[16]; + for (int i = 0; i < 16; ++i) { + pal[i] = palcga[n]._a[i]; + } +// nhom pal[16] = palcga[n]._a; if (n < 89) - palette(palcga[n].p); + palette(palcga[n]._p); for (int i = 0; i <= 15; ++i) - outbloc(i, tpt[pal[i].n], pal); + outbloc(i, tpt[pal[i]._id], pal); + } break; default: break; @@ -125,13 +132,13 @@ void adzon() { if (!f.open("don.mor")) error("Missing file - don.mor"); - f.read(tabdon, 7 * 256); + f.read(g_tabdon, 7 * 256); f.close(); if (!f.open("bmor.mor")) error("Missing file - bmor.mor"); - f.read(&tabdon[fleche], 1 * 1916); + f.read(&g_tabdon[fleche], 1 * 1916); f.close(); if (!f.open("dec.mor")) diff --git a/engines/mortevielle/level15.h b/engines/mortevielle/level15.h index c3df5e5d6c..34e1026f2c 100644 --- a/engines/mortevielle/level15.h +++ b/engines/mortevielle/level15.h @@ -34,8 +34,8 @@ namespace Mortevielle { /* NIVEAU 15 */ extern void copcha(); -extern bool dans_rect(rectangle r); -extern void outbloc(int n, pattern p, t_nhom pal); +extern bool isMouseIn(rectangle r); +extern void outbloc(int n, pattern p, nhom *pal); extern void writepal(int n); extern void pictout(int seg, int dep, int x, int y); // extern int calad(int x, int y); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index ac199594b7..7de738dc28 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -169,7 +169,7 @@ void Menu::displayMenu() { do { // One line after the other msk = 0x80; for (pt = 0; pt <= 7; ++pt) { - if ((lettres[num_letr - 1][ind_tabl] & msk) != 0) { + if ((g_lettres[num_letr - 1][ind_tabl] & msk) != 0) { g_vm->_screenSurface.setPixel(Common::Point(x + 1, y + 1), 0); g_vm->_screenSurface.setPixel(Common::Point(x, y + 1), 0); g_vm->_screenSurface.setPixel(Common::Point(x, y), color); @@ -208,7 +208,7 @@ void Menu::invers(int ix) { int menuIndex = lo(g_msg4); - g_vm->_screenSurface.putxy(_menuConstants[g_msg3 - 1][0] << 3, (menuIndex + 1) << 3); + g_vm->_screenSurface.putxy(g_menuConstants[g_msg3 - 1][0] << 3, (menuIndex + 1) << 3); switch (g_msg3) { case 1: s = _inventoryStringArray[menuIndex]; @@ -253,9 +253,9 @@ void Menu::invers(int ix) { void Menu::util(int x, int y) { - int ymx = (_menuConstants[g_msg3 - 1][3] << 3) + 16; - int dxcar = _menuConstants[g_msg3 - 1][2]; - int xmn = (_menuConstants[g_msg3 - 1][0] << 2) * g_res; + int ymx = (g_menuConstants[g_msg3 - 1][3] << 3) + 16; + int dxcar = g_menuConstants[g_msg3 - 1][2]; + int xmn = (g_menuConstants[g_msg3 - 1][0] << 2) * g_res; int ix; if (g_res == 1) @@ -289,19 +289,19 @@ void Menu::menuDown(int ii) { g_vm->_backgroundSurface.copyFrom(g_vm->_screenSurface); // Draw the menu - xco = _menuConstants[ii - 1][0]; - nb_lig = _menuConstants[ii - 1][3]; + xco = g_menuConstants[ii - 1][0]; + nb_lig = g_menuConstants[ii - 1][3]; hideMouse(); - sauvecr(10, (_menuConstants[ii - 1][1] + 1) << 1); + sauvecr(10, (g_menuConstants[ii - 1][1] + 1) << 1); xco = xco << 3; if (g_res == 1) cx = 10; else cx = 6; - xcc = xco + (_menuConstants[ii - 1][2] * cx) + 6; - g_vm->_screenSurface.fillRect(15, Common::Rect(xco, 12, xcc, 10 + (_menuConstants[ii - 1][1] << 1))); - g_vm->_screenSurface.fillRect(0, Common::Rect(xcc, 12, xcc + 4, 10 + (_menuConstants[ii - 1][1] << 1))); - g_vm->_screenSurface.fillRect(0, Common::Rect(xco, 8 + (_menuConstants[ii - 1][1] << 1), xcc + 4, 12 + (_menuConstants[ii - 1][1] << 1))); + xcc = xco + (g_menuConstants[ii - 1][2] * cx) + 6; + g_vm->_screenSurface.fillRect(15, Common::Rect(xco, 12, xcc, 10 + (g_menuConstants[ii - 1][1] << 1))); + g_vm->_screenSurface.fillRect(0, Common::Rect(xcc, 12, xcc + 4, 10 + (g_menuConstants[ii - 1][1] << 1))); + g_vm->_screenSurface.fillRect(0, Common::Rect(xco, 8 + (g_menuConstants[ii - 1][1] << 1), xcc + 4, 12 + (g_menuConstants[ii - 1][1] << 1))); g_vm->_screenSurface.putxy(xco, 16); cx = 0; do { @@ -362,7 +362,7 @@ void Menu::menuDown(int ii) { void Menu::menuUp(int xx) { /* debug('menuUp'); */ if (g_test0) { - charecr(10, (_menuConstants[xx - 1][1] + 1) << 1); + charecr(10, (g_menuConstants[xx - 1][1] + 1) << 1); /* Restore the background area */ assert(g_vm->_screenSurface.pitch == g_vm->_backgroundSurface.pitch); @@ -475,7 +475,7 @@ void Menu::initMenu() { if (!f.open("menu.mor")) error("Missing file - menufr.mor or menual.mor or menu.mor"); - f.read(lettres, 7 * 24); + f.read(g_lettres, 7 * 24); f.close(); // Ask to swap floppy @@ -488,18 +488,18 @@ void Menu::initMenu() { _moveStringArray[i] = "* "; i = 1; do { - _actionStringArray[i] = deline(i + c_action); + _actionStringArray[i] = deline(i + kMenuActionStringIndex); while (_actionStringArray[i].size() < 10) _actionStringArray[i] += ' '; if (i < 9) { if (i < 6) { - _selfStringArray[i] = deline(i + c_saction); + _selfStringArray[i] = deline(i + kMenuSelfStringIndex); while (_selfStringArray[i].size() < 10) _selfStringArray[i] += ' '; } - _discussStringArray[i] = deline(i + c_dis) + ' '; + _discussStringArray[i] = deline(i + kMenuSayStringIndex) + ' '; } ++i; } while (i != 22); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 20882eb41a..ab3467e89f 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -145,7 +145,7 @@ void text1(int x, int y, int nb, int m) { void initouv() { for (int cx = 1; cx <= 7; ++cx) - touv[cx] = chr(0); + g_touv[cx] = chr(0); } void ecrf1() { @@ -236,11 +236,11 @@ void clsf10() { cod = 544; } g_vm->_screenSurface.fillRect(15, Common::Rect(cod, 93, co, 98)); - if (g_s.conf < 33) + if (g_s._conf < 33) st = g_vm->getEngineString(S_COOL); - else if (g_s.conf < 66) + else if (g_s._conf < 66) st = g_vm->getEngineString(S_LOURDE); - else if (g_s.conf > 65) + else if (g_s._conf > 65) st = g_vm->getEngineString(S_MALSAINE); co = 580 - (g_vm->_screenSurface.getStringWidth(st) / 2); @@ -309,7 +309,7 @@ void modobj(int m) { Common::String strp = Common::String(' '); if (m != 500) - strp = deline(m - 501 + c_st41); + strp = deline(m - 501 + kInventoryStringIndex); g_vm->_menu.menut(g_vm->_menu._inventoryMenu[8], strp); g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[8]); @@ -324,7 +324,7 @@ void modobj2(int m, bool t1, bool t2) { g_tesok = false;; if (m != 500) - strp = deline(m - 501 + c_st41); + strp = deline(m - 501 + kInventoryStringIndex); g_vm->_menu.menut(g_vm->_menu._inventoryMenu[8], strp); g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[8]); @@ -337,7 +337,7 @@ void repon(int f, int m) { Common::String tmpStr; if ((m > 499) && (m < 563)) { - tmpStr = deline(m - 501 + c_st41); + tmpStr = deline(m - 501 + kInventoryStringIndex); if ((int) tmpStr.size() > ((58 + (g_res - 1) * 37) << 1)) g_f2_all = true; @@ -357,12 +357,12 @@ void repon(int f, int m) { ecrf2(); text1(8, 182, 103, m); if ((m == 68) || (m == 69)) - g_s.teauto[40] = '*'; + g_s._teauto[40] = '*'; if ((m == 104) && (g_caff == 14)) { - g_s.teauto[36] = '*'; - if (g_s.teauto[39] == '*') { - g_s.pourc[3] = '*'; - g_s.teauto[38] = '*'; + g_s._teauto[36] = '*'; + if (g_s._teauto[39] == '*') { + g_s._pourc[3] = '*'; + g_s._teauto[38] = '*'; } } } @@ -377,10 +377,10 @@ void repon(int f, int m) { afftex(tmpStr, 80, 40, 60, 25, i); if (m == 180) - g_s.pourc[6] = '*'; + g_s._pourc[6] = '*'; if (m == 179) - g_s.pourc[10] = '*'; + g_s._pourc[10] = '*'; } if (f == 7) { /* messint */ ecrf7(); @@ -1024,7 +1024,7 @@ void init_nbrepm() { const byte ipm[9] = { 0, 4, 5, 6, 7, 5, 6, 5, 8 }; for (int idx = 0; idx < 9; ++idx) - nbrepm[idx] = ipm[idx]; + g_nbrepm[idx] = ipm[idx]; } void phaz(int &haz, int &p, int cf) { @@ -1035,43 +1035,43 @@ void phaz(int &haz, int &p, int cf) { void inzon() { copcha(); - g_s.ipre = false; - g_s.derobj = 0; - g_s.icave = 0; - g_s.iboul = 0; - g_s.ibag = 0; - g_s.ipuit = 0; - g_s.ivier = 0; - g_s.iloic = 136; - g_s.icryp = 141; - g_s.conf = hazard(4, 10); - g_s.mlieu = 21; + g_s._ipre = false; + g_s._derobj = 0; + g_s._icave = 0; + g_s._iboul = 0; + g_s._ibag = 0; + g_s._ipuit = 0; + g_s._ivier = 0; + g_s._iloic = 136; + g_s._icryp = 141; + g_s._conf = hazard(4, 10); + g_s._mlieu = 21; for (int cx = 2; cx <= 6; ++cx) - g_s.sjer[cx] = chr(0); + g_s._sjer[cx] = chr(0); - g_s.sjer[1] = chr(113); - g_s.heure = chr(20); + g_s._sjer[1] = chr(113); + g_s._heure = chr(20); for (int cx = 1; cx <= 10; ++cx) - g_s.pourc[cx] = ' '; + g_s._pourc[cx] = ' '; for (int cx = 1; cx <= 6; ++cx) - g_s.teauto[cx] = '*'; + g_s._teauto[cx] = '*'; for (int cx = 7; cx <= 9; ++cx) - g_s.teauto[cx] = ' '; + g_s._teauto[cx] = ' '; for (int cx = 10; cx <= 28; ++cx) - g_s.teauto[cx] = '*'; + g_s._teauto[cx] = '*'; for (int cx = 29; cx <= 42; ++cx) - g_s.teauto[cx] = ' '; + g_s._teauto[cx] = ' '; - g_s.teauto[33] = '*'; + g_s._teauto[33] = '*'; for (int cx = 1; cx <= 8; ++cx) - nbrep[cx] = 0; + g_nbrep[cx] = 0; init_nbrepm(); } @@ -1079,7 +1079,7 @@ void inzon() { void dprog() { g_li = 21; g_jh = 0; - if (!g_s.ipre) + if (!g_s._ipre) g_blo = true; g_t = ti1; g_mh = readclock(); @@ -1219,7 +1219,7 @@ void pl20(int cf) { void t11(int l11, int &a) { int p, haz; - ecfren(p, haz, g_s.conf, l11); + ecfren(p, haz, g_s._conf, l11); g_li = l11; if ((l11 > 0) && (l11 < 10)) { if (p != -500) { @@ -1251,7 +1251,7 @@ void t11(int l11, int &a) { cpl15(p); if (l11 == 20) cpl20(p, h); - p += g_s.conf; + p += g_s._conf; haz = hazard(1, 100); if (haz > p) { person(); @@ -1274,9 +1274,9 @@ void t11(int l11, int &a) { } void cavegre() { - g_s.conf += 2; - if (g_s.conf > 69) - g_s.conf += (g_s.conf / 10); + g_s._conf += 2; + if (g_s._conf > 69) + g_s._conf += (g_s._conf / 10); clsf3(); ecrf2(); ecr3(g_vm->getEngineString(S_SOMEONE_ENTERS)); @@ -1335,12 +1335,12 @@ void musique(int so) { if (so == 0) { /* musik(0) */ ; - } else if ((g_prebru == 0) && (!g_s.ipre)) { + } else if ((g_prebru == 0) && (!g_s._ipre)) { parole(10, 1, 1); ++g_prebru; } else { bool i = false; - if ((g_s.mlieu == 19) || (g_s.mlieu == 21) || (g_s.mlieu == 22)) { + if ((g_s._mlieu == 19) || (g_s._mlieu == 21) || (g_s._mlieu == 22)) { int haz = hazard(1, 3); if (haz == 2) { haz = hazard(2, 4); @@ -1348,7 +1348,7 @@ void musique(int so) { i = true; } } - if (g_s.mlieu == 20) { + if (g_s._mlieu == 20) { int haz = hazard(1, 2); if (haz == 1) { parole(8, 1, 1); @@ -1356,7 +1356,7 @@ void musique(int so) { } } - if (g_s.mlieu == 24) { + if (g_s._mlieu == 24) { int haz = hazard(1, 2); if (haz == 2) { parole(12, 1, 1); @@ -1364,7 +1364,7 @@ void musique(int so) { } } - if (g_s.mlieu == 23) { + if (g_s._mlieu == 23) { parole(13, 1, 1); i = true; } @@ -1392,24 +1392,24 @@ void dessin(int ad) { ecrf1(); if ((g_caff < 30) || (g_caff > 32)) { for (int cx = 1; cx <= 6; ++cx) { - if (ord(touv[cx]) != 0) - aniof(1, ord(touv[cx])); + if (ord(g_touv[cx]) != 0) + aniof(1, ord(g_touv[cx])); } if (g_caff == 13) { - if (g_s.iboul == 141) + if (g_s._iboul == 141) aniof(1, 7); - if (g_s.ibag == 159) + if (g_s._ibag == 159) aniof(1, 6); } - if ((g_caff == 14) && (g_s.icave == 151)) + if ((g_caff == 14) && (g_s._icave == 151)) aniof(1, 2); - if ((g_caff == 17) && (g_s.ivier == 143)) + if ((g_caff == 17) && (g_s._ivier == 143)) aniof(1, 1); - if ((g_caff == 24) && (g_s.ipuit != 0)) + if ((g_caff == 24) && (g_s._ipuit != 0)) aniof(1, 1); } diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index c592ddc996..326010ad8c 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -56,9 +56,9 @@ void tinke() { cx = 0; do { ++cx; - if (nbrepm[cx] != 0) - --nbrepm[cx]; - nbrep[cx] = 0; + if (g_nbrepm[cx] != 0) + --g_nbrepm[cx]; + g_nbrep[cx] = 0; } while (cx != 8); } if ((h > g_hour) || ((h == 0) && (g_hour == 23))) { @@ -67,7 +67,7 @@ void tinke() { drawClock(); cf = 0; for (cx = 1; cx <= 10; ++cx) { - if (g_s.pourc[cx] == '*') + if (g_s._pourc[cx] == '*') ++cf; } @@ -76,18 +76,18 @@ void tinke() { else stpo = chr(cf + 48); - _hintPctMessage = Common::String(d3); - _hintPctMessage += d5; - _hintPctMessage += d4; - _hintPctMessage += d3; - _hintPctMessage += d1; - _hintPctMessage += stpo; - _hintPctMessage += '0'; - _hintPctMessage += d2; - _hintPctMessage += d4; - _hintPctMessage += d3; - _hintPctMessage += d6; - _hintPctMessage += d4; + g_hintPctMessage = Common::String(d3); + g_hintPctMessage += d5; + g_hintPctMessage += d4; + g_hintPctMessage += d3; + g_hintPctMessage += d1; + g_hintPctMessage += stpo; + g_hintPctMessage += '0'; + g_hintPctMessage += d2; + g_hintPctMessage += d4; + g_hintPctMessage += d3; + g_hintPctMessage += d6; + g_hintPctMessage += d4; } if (m > g_minute) { g_minute = 30; @@ -101,7 +101,7 @@ void tinke() { g_t = ti2; else g_t = ti1; - cf = g_s.conf; + cf = g_s._conf; if ((cf > 33) && (cf < 66)) g_t -= (g_t / 3); @@ -157,7 +157,7 @@ void tinke() { g_mpers = g_ipers; if ((g_mpers == 0) && (g_ipers > 0)) { - if ((g_s.mlieu == 13) || (g_s.mlieu == 14)) { + if ((g_s._mlieu == 13) || (g_s._mlieu == 14)) { cavegre(); } else if (g_ipers == 10) { g_ipers = 0; @@ -186,7 +186,7 @@ void tinke() { nouvp(g_li, cx); g_brt = false; g_hdb = 0; - if ((g_s.mlieu > 0) && (g_s.mlieu < 10)) + if ((g_s._mlieu > 0) && (g_s._mlieu < 10)) g_anyone = true; } } @@ -245,7 +245,7 @@ void tmlieu(int mli) { int i = 1; while ((i < 8) && (v_lieu[i][mli] != 0)) { - nomp = deline(v_lieu[i][mli] + c_tmlieu); + nomp = deline(v_lieu[i][mli] + kMenuPlaceStringIndex); while (nomp.size() < 20) nomp += ' '; g_vm->_menu.menut(g_vm->_menu._moveMenu[i], nomp); @@ -270,12 +270,12 @@ void tlu(int af, int ob) { } void affrep() { - g_caff = g_s.mlieu; - g_crep = g_s.mlieu; + g_caff = g_s._mlieu; + g_crep = g_s._mlieu; } void mfouen() { - tmlieu(g_s.mlieu); + tmlieu(g_s._mlieu); for (int cx = 1; cx <= 11; ++cx) g_vm->_menu.enableMenuItem(_actionMenu[cx]); @@ -309,19 +309,19 @@ void tperd() { void tsort() { - if ((g_iouv > 0) && (g_s.mlieu != 0)) { - if (g_s.conf < 50) - g_s.conf += 2; + if ((g_iouv > 0) && (g_s._mlieu != 0)) { + if (g_s._conf < 50) + g_s._conf += 2; else - g_s.conf += (g_s.conf / 10); + g_s._conf += (g_s._conf / 10); } for (int cx = 1; cx <= 7; ++cx) - touv[cx] = chr(0); + g_touv[cx] = chr(0); g_ment = 0; g_iouv = 0; g_mchai = 0; - debloc(g_s.mlieu); + debloc(g_s._mlieu); } void st4(int ob) { @@ -359,14 +359,14 @@ void cherjer(int ob, bool &d) { d = false; for (cx = 1; cx <= 6; ++cx) - d = (d || (ord(g_s.sjer[cx]) == ob)); + d = (d || (ord(g_s._sjer[cx]) == ob)); - if (g_s.derobj == ob) + if (g_s._derobj == ob) d = true; } void st1sama() { - g_s.mlieu = 10; + g_s._mlieu = 10; affrep(); } @@ -376,10 +376,10 @@ void modinv() { int cy = 0; for (int cx = 1; cx <= 6; ++cx) - if (g_s.sjer[cx] != chr(0)) { + if (g_s._sjer[cx] != chr(0)) { ++cy; - r = (ord(g_s.sjer[cx]) + 400); - nomp = deline(r - 501 + c_st41); + r = (ord(g_s._sjer[cx]) + 400); + nomp = deline(r - 501 + kInventoryStringIndex); g_vm->_menu.menut(g_vm->_menu._inventoryMenu[cy], nomp); g_vm->_menu.enableMenuItem(g_vm->_menu._inventoryMenu[cx]); } @@ -396,7 +396,7 @@ void sparl(float adr, float rep) { repint = abs((int)rep); hideMouse(); - Common::String tmpStr = deline(repint + c_paroles); + Common::String tmpStr = deline(repint + kDialogStringIndex); afftex(tmpStr, 230, 4, 65, 24, 5); f3f8::draw(); @@ -414,7 +414,7 @@ void finfouil() { g_fouil = false; g_obpart = false; g_cs = 0; - is = 0; + g_is = 0; mfouen(); } @@ -444,12 +444,11 @@ void ajchai() { int cx = 0; do { ++cx; - } while ((cx <= 9) && (tabdon[cy + cx] != 0)); + } while ((cx <= 9) && (g_tabdon[cy + cx] != 0)); - if (tabdon[cy + cx] == 0) { - int lderobj = g_s.derobj; - tabdon[cy + cx] = lderobj; - } else + if (g_tabdon[cy + cx] == 0) + g_tabdon[cy + cx] = g_s._derobj; + else g_crep = 192; } @@ -457,10 +456,10 @@ void ajjer(int ob) { int cx = 0; do { ++cx; - } while ((cx <= 5) && (ord(g_s.sjer[cx]) != 0)); + } while ((cx <= 5) && (ord(g_s._sjer[cx]) != 0)); - if (ord(g_s.sjer[cx]) == 0) { - g_s.sjer[(cx)] = chr(ob); + if (ord(g_s._sjer[cx]) == 0) { + g_s._sjer[(cx)] = chr(ob); modinv(); } else g_crep = 139; @@ -470,7 +469,7 @@ void t1sama() { //Entering manor int j, h, m; calch(j, h, m); - if ((h < 5) && (g_s.mlieu > 18)) { + if ((h < 5) && (g_s._mlieu > 18)) { bool d; cherjer(137, d); if (!d) { //You don't have the keys, and it's late @@ -478,7 +477,7 @@ void t1sama() { //Entering manor tperd(); } else st1sama(); - } else if (!g_s.ipre) { //Is it your first time? + } else if (!g_s._ipre) { //Is it your first time? g_ipers = 255; affper(g_ipers); g_caff = 77; @@ -494,21 +493,21 @@ void t1sama() { //Entering manor dessine_rouleau(); drawClock(); showMouse(); - g_s.mlieu = 0; + g_s._mlieu = 0; affrep(); t5(10); if (!g_blo) t11(0, m); g_ipers = 0; g_mpers = 0; - g_s.ipre = true; + g_s._ipre = true; /*chech;*/ } else st1sama(); } void t1vier() { - g_s.mlieu = 17; + g_s._mlieu = 17; affrep(); } @@ -519,19 +518,19 @@ void t1neig() { tperd(); } else { g_okdes = true; - g_s.mlieu = 19; + g_s._mlieu = 19; affrep(); } } void t1deva() { g_inei = 0; - g_s.mlieu = 21; + g_s._mlieu = 21; affrep(); } void t1derr() { - g_s.mlieu = 22; + g_s._mlieu = 22; affrep(); } @@ -563,11 +562,11 @@ L1: parole(4, 4, 1); if (g_iouv == 0) - g_s.conf += 2; - else if (g_s.conf < 50) - g_s.conf += 4; + g_s._conf += 2; + else if (g_s._conf < 50) + g_s._conf += 4; else - g_s.conf += 3 * (g_s.conf / 10); + g_s._conf += 3 * (g_s._conf / 10); tsort(); tmlieu(15); int cx; @@ -605,18 +604,18 @@ void tsuiv() { int cy = acha + ((g_mchai - 1) * 10) - 1; int cx = 0; do { - cx = cx + 1; - g_cs = g_cs + 1; + ++cx; + ++g_cs; cl = cy + g_cs; - tbcl = tabdon[cl]; + tbcl = g_tabdon[cl]; } while ((tbcl == 0) && (g_cs <= 9)); if ((tbcl != 0) && (g_cs < 11)) { - is = is + 1; + ++g_is; g_caff = tbcl; g_crep = g_caff + 400; if (g_ipers != 0) - g_s.conf = g_s.conf + 2; + g_s._conf += 2; } else { affrep(); finfouil(); @@ -647,7 +646,7 @@ void tfleche() { } while (!(qust || g_rect || g_anyone)); if (qust && (touch == '\103')) - Alert::show(_hintPctMessage, 1); + Alert::show(g_hintPctMessage, 1); } while (!((touch == '\73') || ((touch == '\104') && (g_x != 0) && (g_y != 0)) || (g_anyone) || (g_rect))); if (touch == '\73') @@ -670,12 +669,12 @@ void tcoord(int sx) { int atdon = amzon + 3; int cy = 0; while (cy < g_caff) { - a += tabdon[atdon]; + a += g_tabdon[atdon]; atdon += 4; ++cy; } - if (tabdon[atdon] == 0) { + if (g_tabdon[atdon] == 0) { g_crep = 997; return; } @@ -683,10 +682,10 @@ void tcoord(int sx) { a += fleche; int cb = 0; for (cy = 0; cy <= (sx - 2); ++cy) { - ib = (tabdon[a + cb] << 8) + tabdon[(a + cb + 1)]; + ib = (g_tabdon[a + cb] << 8) + g_tabdon[(a + cb + 1)]; cb += (ib * 4) + 2; } - ib = (tabdon[a + cb] << 8) + tabdon[(a + cb + 1)]; + ib = (g_tabdon[a + cb] << 8) + g_tabdon[(a + cb + 1)]; if (ib == 0) { g_crep = 997; return; @@ -695,11 +694,11 @@ void tcoord(int sx) { cy = 1; do { cb += 2; - sx = tabdon[a + cb] * g_res; - sy = tabdon[(a + cb + 1)]; + sx = g_tabdon[a + cb] * g_res; + sy = g_tabdon[(a + cb + 1)]; cb += 2; - ix = tabdon[a + cb] * g_res; - iy = tabdon[(a + cb + 1)]; + ix = g_tabdon[a + cb] * g_res; + iy = g_tabdon[(a + cb + 1)]; ++cy; } while (!(((g_x >= sx) && (g_x <= ix) && (g_y >= sy) && (g_y <= iy)) || (cy > ib))); @@ -757,22 +756,22 @@ void treg(int ob) { void avpoing(int &ob) { g_crep = 999; - if (g_s.derobj != 0) - ajjer(g_s.derobj); + if (g_s._derobj != 0) + ajjer(g_s._derobj); if (g_crep != 139) { modobj(ob + 400); - g_s.derobj = ob; + g_s._derobj = ob; ob = 0; } } void rechai(int &ch) { - int cx = g_s.mlieu; + int cx = g_s._mlieu; - if (g_s.mlieu == 16) + if (g_s._mlieu == 16) cx = 14; - ch = tabdon[achai + (cx * 7) + g_num - 1]; + ch = g_tabdon[achai + (cx * 7) + g_num - 1]; } void t23coul(int &l) { @@ -787,7 +786,7 @@ void t23coul(int &l) { } void maivid() { - g_s.derobj = 0; + g_s._derobj = 0; modobj(500); } diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index dceb5c7d55..4a410f0b81 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -134,7 +134,7 @@ Common::ErrorCode MortevielleEngine::initialise() { return result; // Load some error messages (was previously in chartex()) - _hintPctMessage = deline(580); // You should have noticed %d hints + g_hintPctMessage = deline(580); // You should have noticed %d hints // Set default EGA palette _paletteManager.setDefaultPalette(); @@ -585,7 +585,7 @@ void MortevielleEngine::handleAction() { if (g_choisi && (g_msg[3] == MENU_LOAD)) g_vm->_savegameManager.loadGame((g_msg[4] & 7) - 1); if (inkey == '\103') { /* F9 */ - temps = Alert::show(_hintPctMessage, 1); + temps = Alert::show(g_hintPctMessage, 1); return; } else if (inkey == '\77') { if ((g_mnumo != OPCODE_NONE) && ((g_msg[3] == MENU_ACTION) || (g_msg[3] == MENU_SELF))) { @@ -622,7 +622,7 @@ void MortevielleEngine::handleAction() { oo = true; if ((g_msg[4] == OPCODE_LIFT) || (g_obpart)) { finfouil(); - g_caff = g_s.mlieu; + g_caff = g_s._mlieu; g_crep = 998; } else tsuiv(); diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index f26c7051a6..ca88a79da3 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -64,13 +64,13 @@ void initMouse() { int_m = false; if (int_m) { - reg.ax = 0; + reg._ax = 0; intr(0x33, reg); - int_m = (reg.ax == -1); + int_m = (reg._ax == -1); if (int_m) { - reg.ax = 4; - reg.cx = 0; - reg.dx = 0; + reg._ax = 4; + reg._cx = 0; + reg._dx = 0; intr(0x33, reg); } diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 80eeaa7cab..4d54040749 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -134,8 +134,8 @@ Common::String deline(int num) { } else if (!g_vm->_txxFileFl) { wrkStr = g_vm->getGameString(num); } else { - int i = t_rec[num].indis; - byte k = t_rec[num].point; + int i = t_rec[num]._indis; + byte k = t_rec[num]._point; int length = 0; bool endFl = false; char let; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 1ad58ed996..e69e7ae64c 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -78,23 +78,23 @@ void charpal() { error("Missing file - cxx.mor"); for (int j = 0; j <= 90; ++j) { - palcga[j].p = fb.readByte(); + palcga[j]._p = fb.readByte(); for (int i = 0; i <= 15; ++i) { - nhom &with = palcga[j].a[i]; + nhom &with = palcga[j]._a[i]; b = fb.readByte(); - with.n = (uint)b >> 4; - with.hom[0] = ((uint)b >> 2) & 3; - with.hom[1] = b & 3; + with._id = (uint)b >> 4; + with._hom[0] = ((uint)b >> 2) & 3; + with._hom[1] = b & 3; } } - palcga[10].a[9] = palcga[10].a[5]; + palcga[10]._a[9] = palcga[10]._a[5]; for (int j = 0; j <= 14; ++j) { - tpt[j].tax = fb.readByte(); - tpt[j].tay = fb.readByte(); + tpt[j]._tax = fb.readByte(); + tpt[j]._tay = fb.readByte(); for (int i = 1; i <= 20; ++i) for (int k = 1; k <= 20; ++k) - tpt[j].des[i][k] = fb.readByte(); + tpt[j]._des[i][k] = fb.readByte(); } fb.close(); } @@ -134,8 +134,8 @@ void chartex() { inpFile.close(); for (int i = 0; i < (ntpFile.size() / 3); ++i) { - t_rec[i].indis = ntpFile.readSint16LE(); - t_rec[i].point = ntpFile.readByte(); + t_rec[i]._indis = ntpFile.readSint16LE(); + t_rec[i]._point = ntpFile.readByte(); } ntpFile.close(); @@ -187,14 +187,14 @@ void music() { fic.close(); g_vm->_soundManager.decodeMusic(&mem[0x3800 * 16], &mem[0x5000 * 16], 623); - addfix = (float)((tempo_mus - addv[1])) / 256; + addfix = (float)((kTempoMusic - g_addv[1])) / 256; cctable(tbi); fin = false; k = 0; do { fin = keypressed(); - g_vm->_soundManager.musyc(tbi, 9958 , tempo_mus); + g_vm->_soundManager.musyc(tbi, 9958, kTempoMusic); ++k; fin = fin | keypressed() | (k >= 5); } while (!fin); @@ -233,7 +233,7 @@ void charge_cfiph() { error("Missing file - cfiph.mor"); for (int i = 0; i < (f.size() / 2); ++i) - t_cph[i] = f.readSint16LE(); + g_t_cph[i] = f.readSint16LE(); f.close(); } diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index 9bfbaaf560..f0d755201f 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -33,15 +33,15 @@ namespace Mortevielle { void spfrac(int wor) { - c3.rep = (uint)wor >> 12; - if ((g_typlec == 0) && (c3.code != 9)) - if (((c3.code > 4) && (c3.val != 20) && (c3.rep != 3) && (c3.rep != 6) && (c3.rep != 9)) || - ((c3.code < 5) && ((c3.val != 19) && (c3.val != 22) && (c3.rep != 4) && (c3.rep != 9)))) { - ++c3.rep; + c3._rep = (uint)wor >> 12; + if ((g_typlec == 0) && (c3._code != 9)) + if (((c3._code > 4) && (c3._val != 20) && (c3._rep != 3) && (c3._rep != 6) && (c3._rep != 9)) || + ((c3._code < 5) && ((c3._val != 19) && (c3._val != 22) && (c3._rep != 4) && (c3._rep != 9)))) { + ++c3._rep; } - c3.freq = ((uint)wor >> 6) & 7; - c3.acc = ((uint)wor >> 9) & 7; + c3._freq = ((uint)wor >> 6) & 7; + c3._acc = ((uint)wor >> 9) & 7; } void charg_car() { @@ -51,31 +51,31 @@ void charg_car() { int_ = wor & 0x3f; if ((int_ >= 0) && (int_ <= 13)) { - c3.val = int_; - c3.code = 5; + c3._val = int_; + c3._code = 5; } else if ((int_ >= 14) && (int_ <= 21)) { - c3.val = int_; - c3.code = 6; + c3._val = int_; + c3._code = 6; } else if ((int_ >= 22) && (int_ <= 47)) { int_ = int_ - 22; - c3.val = int_; - c3.code = typcon[int_]; + c3._val = int_; + c3._code = g_typcon[int_]; } else if ((int_ >= 48) && (int_ <= 56)) { - c3.val = int_ - 22; - c3.code = 4; + c3._val = int_ - 22; + c3._code = 4; } else { switch (int_) { case 60: - c3.val = 32; /* " " */ - c3.code = 9; + c3._val = 32; /* " " */ + c3._code = 9; break; case 61: - c3.val = 46; /* "." */ - c3.code = 9; + c3._val = 46; /* "." */ + c3._code = 9; break; case 62: - c3.val = 35; /* "#" */ - c3.code = 9; + c3._val = 35; /* "#" */ + c3._code = 9; default: break; } @@ -109,7 +109,7 @@ void regenbruit() { int i = offsetb3 + 8590; int j = 0; do { - t_cph[j] = READ_LE_UINT16(&mem[adbruit3 + i]); + g_t_cph[j] = READ_LE_UINT16(&mem[adbruit3 + i]); i += 2; ++j; } while (i < offsetb3 + 8790); @@ -134,7 +134,7 @@ void charge_phbruit() { error("Missing file - phbrui.mor"); for (int i = 1; i <= 3; ++i) - t_cph[i] = f.readSint16LE(); + g_t_cph[i] = f.readSint16LE(); f.close(); } @@ -158,40 +158,40 @@ void trait_car() { byte d3; int d2, i; - switch (c2.code) { + switch (c2._code) { case 9: - if (c2.val != ord('#')) - for (i = 0; i <= c2.rep; ++i) - entroct(c2.val); + 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]; + if (c2._code == 6) + d3 = g_tabdph[(c2._val - 14) << 1]; else d3 = null; - if (c1.code >= 5) { - veracf(c2.acc); - if (c1.code == 9) { + if (c1._code >= 5) { + veracf(c2._acc); + if (c1._code == 9) { entroct(4); if (d3 == null) - entroct(c2.val); + entroct(c2._val); else entroct(d3); entroct(22); } } - switch (c2.rep) { + switch (c2._rep) { case 0: entroct(0); - entroct(c2.val); + entroct(c2._val); if (d3 == null) - if (c3.code == 9) + if (c3._code == 9) entroct(2); else entroct(4); - else if (c3.code == 9) + else if (c3._code == 9) entroct(0); else entroct(1); @@ -199,13 +199,13 @@ void trait_car() { case 4: case 5: case 6: - if (c2.rep != 4) { - i = c2.rep - 5; + if (c2._rep != 4) { + i = c2._rep - 5; do { --i; entroct(0); if (d3 == null) - entroct(c2.val); + entroct(c2._val); else entroct(d3); entroct(3); @@ -213,24 +213,24 @@ void trait_car() { } if (d3 == null) { entroct(4); - entroct(c2.val); + entroct(c2._val); entroct(0); } else { entroct(0); - entroct(c2.val); + entroct(c2._val); entroct(3); } break; case 7: case 8: case 9: - if (c2.rep != 7) { - i = c2.rep - 8; + if (c2._rep != 7) { + i = c2._rep - 8; do { --i; entroct(0); if (d3 == null) - entroct(c2.val); + entroct(c2._val); else entroct(d3); entroct(3); @@ -238,32 +238,32 @@ void trait_car() { } if (d3 == null) { entroct(0); - entroct(c2.val); + entroct(c2._val); entroct(2); } else { entroct(0); - entroct(c2.val); + entroct(c2._val); entroct(0); } break; case 1: case 2: case 3: - if (c2.rep != 1) { - i = c2.rep - 2; + if (c2._rep != 1) { + i = c2._rep - 2; do { --i; entroct(0); if (d3 == null) - entroct(c2.val); + entroct(c2._val); else entroct(d3); entroct(3); } while (i >= 0); } entroct(0); - entroct(c2.val); - if (c3.code == 9) + entroct(c2._val); + if (c3._code == 9) entroct(0); else entroct(1); @@ -275,16 +275,16 @@ void trait_car() { case 2: case 3: - d3 = c2.code + 5; // 7 ou 8 => Corresponding vowel - if (c1.code > 4) { - veracf(c2.acc); - if (c1.code == 9) { + d3 = c2._code + 5; // 7 ou 8 => Corresponding vowel + if (c1._code > 4) { + veracf(c2._acc); + if (c1._code == 9) { entroct(4); entroct(d3); entroct(22); } } - i = c2.rep; + i = c2._rep; assert(i >= 0); if (i != 0) { do { @@ -294,24 +294,24 @@ void trait_car() { entroct(3); } while (i > 0); } - veracf(c3.acc); - if (c3.code == 6) { + veracf(c3._acc); + if (c3._code == 6) { entroct(4); - entroct(tabdph[(c3.val - 14) << 1]); - entroct(c2.val); + entroct(g_tabdph[(c3._val - 14) << 1]); + entroct(c2._val); } else { entroct(4); - if (c3.val == 4) + if (c3._val == 4) entroct(3); else - entroct(c3.val); - entroct(c2.val); + entroct(c3._val); + entroct(c2._val); } break; case 0: case 1: - veracf(c2.acc); - switch (c3.code) { + veracf(c2._acc); + switch (c3._code) { case 2: d2 = 7; break; @@ -319,130 +319,130 @@ void trait_car() { d2 = 8; break; case 6: - d2 = tabdph[(c3.val - 14) << 1]; + d2 = g_tabdph[(c3._val - 14) << 1]; break; case 5: - d2 = c3.val; + d2 = c3._val; break; default: d2 = 10; break; - } // switch c3.code - d2 = d2 * 26 + c2.val; - if (tnocon[d2] == 0) + } // switch c3._code + d2 = d2 * 26 + c2._val; + if (g_tnocon[d2] == 0) d3 = 2; else d3 = 6; - if (c2.rep >= 5) { - c2.rep = c2.rep - 5; + if (c2._rep >= 5) { + c2._rep = c2._rep - 5; d3 = 8 - d3; // Swap 2 and 6 } - if (c2.code == 0) { - i = c2.rep; + if (c2._code == 0) { + i = c2._rep; if (i != 0) { do { --i; entroct(d3); - entroct(c2.val); + entroct(c2._val); entroct(3); } while (i > 0); } entroct(d3); - entroct(c2.val); + entroct(c2._val); entroct(4); } else { entroct(d3); - entroct(c2.val); + entroct(c2._val); entroct(3); - i = c2.rep; + i = c2._rep; if (i != 0) { do { --i; entroct(d3); - entroct(c2.val); + entroct(c2._val); entroct(4); } while (i > 0); } } - if (c3.code == 9) { + if (c3._code == 9) { entroct(d3); - entroct(c2.val); + entroct(c2._val); entroct(5); - } else if ((c3.code != 0) && (c3.code != 1) && (c3.code != 4)) { - veracf(c3.acc); - switch (c3.code) { + } else if ((c3._code != 0) && (c3._code != 1) && (c3._code != 4)) { + veracf(c3._acc); + switch (c3._code) { case 3: d2 = 8; break; case 6: - d2 = tabdph[(c3.val - 14) << 1]; + d2 = g_tabdph[(c3._val - 14) << 1]; break; case 5: - d2 = c3.val; + d2 = c3._val; break; default: d2 = 7; break; - } // switch c3.code + } // switch c3._code if (d2 == 4) d2 = 3; - if (intcon[c2.val] != 0) - ++c2.val; + if (g_intcon[c2._val] != 0) + ++c2._val; - if ((c2.val == 17) || (c2.val == 18)) - c2.val = 16; + if ((c2._val == 17) || (c2._val == 18)) + c2._val = 16; entroct(4); entroct(d2); - entroct(c2.val); + entroct(c2._val); } break; case 4: - veracf(c2.acc); - i = c2.rep; + veracf(c2._acc); + i = c2._rep; if (i != 0) { do { --i; entroct(2); - entroct(c2.val); + entroct(c2._val); entroct(3); } while (i > 0); } entroct(2); - entroct(c2.val); + entroct(c2._val); entroct(4); - if (c3.code == 9) { + if (c3._code == 9) { entroct(2); - entroct(c2.val); + entroct(c2._val); entroct(5); - } else if ((c3.code != 0) && (c3.code != 1) && (c3.code != 4)) { - veracf(c3.acc); - switch (c3.code) { + } else if ((c3._code != 0) && (c3._code != 1) && (c3._code != 4)) { + veracf(c3._acc); + switch (c3._code) { case 3: d2 = 8; break; case 6: - d2 = tabdph[(c3.val - 14) << 1]; + d2 = g_tabdph[(c3._val - 14) << 1]; break; case 5: - d2 = c3.val; + d2 = c3._val; break; default: d2 = 7; break; - } // switch c3.code + } // switch c3._code if (d2 == 4) d2 = 3; - if (intcon[c2.val] != 0) - ++c2.val; + if (g_intcon[c2._val] != 0) + ++c2._val; entroct(4); entroct(d2); - entroct(tabdbc[((c2.val - 26) << 1) + 1]); + entroct(g_tabdbc[((c2._val - 26) << 1) + 1]); } break; diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index a96edde281..8d781b74fc 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -38,14 +38,14 @@ namespace Mortevielle { void rot_chariot() { c1 = c2; c2 = c3; - c3.val = 32; - c3.code = 9; + c3._val = 32; + c3._code = 9; } void init_chariot() { - c3.rep = 0; - c3.freq = 0; - c3.acc = 0; + c3._rep = 0; + c3._freq = 0; + c3._acc = 0; rot_chariot(); rot_chariot(); } @@ -55,13 +55,13 @@ void trait_ph() { const int deca[3] = {300, 30, 40}; g_ptr_tcph = g_num_ph - 1; - g_ledeb = swap(t_cph[g_ptr_tcph]) + deca[g_typlec]; - g_lefin = swap(t_cph[g_ptr_tcph + 1]) + deca[g_typlec]; + g_ledeb = swap(g_t_cph[g_ptr_tcph]) + deca[g_typlec]; + g_lefin = swap(g_t_cph[g_ptr_tcph + 1]) + deca[g_typlec]; g_nb_word = g_lefin - g_ledeb; g_ptr_tcph = (uint)g_ledeb >> 1; g_ptr_word = 0; do { - WRITE_LE_UINT16(&mem[adword + g_ptr_word], t_cph[g_ptr_tcph]); + WRITE_LE_UINT16(&mem[adword + g_ptr_word], g_t_cph[g_ptr_tcph]); g_ptr_word += 2; ++g_ptr_tcph; } while (g_ptr_tcph < (int)((uint)g_lefin >> 1)); @@ -95,13 +95,13 @@ void parole(int rep, int ht, int typ) { g_typlec = typ; if (g_typlec != 0) { for (int i = 0; i <= 500; ++i) - savph[i] = t_cph[i]; - tempo = tempo_bruit; + savph[i] = g_t_cph[i]; + tempo = kTempoNoise; } else if (g_haut > 5) - tempo = tempo_f; + tempo = kTempoF; else - tempo = tempo_m; - addfix = (float)((tempo - addv[0])) / 256; + tempo = kTempoM; + addfix = (float)((tempo - g_addv[0])) / 256; cctable(tbi); switch (typ) { case 1: @@ -120,7 +120,7 @@ void parole(int rep, int ht, int typ) { g_vm->_soundManager.litph(tbi, typ, tempo); if (g_typlec != 0) for (int i = 0; i <= 500; ++i) { - t_cph[i] = savph[i]; + g_t_cph[i] = savph[i]; g_mlec = g_typlec; } writepal(g_numpal); diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index b34e64aa5a..0731418023 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -100,7 +100,7 @@ void MortevielleEngine::gameLoaded() { g_hdb = 0; g_hfb = 0; g_cs = 0; - is = 0; + g_is = 0; k = 0; g_ment = 0; g_syn = true; @@ -113,7 +113,7 @@ void MortevielleEngine::gameLoaded() { g_iouv = 0; g_dobj = 0; affrep(); - _hintPctMessage = deline(580); + g_hintPctMessage = deline(580); while ((test[k] == false) && (k < 2)) { ++k; @@ -133,10 +133,10 @@ void MortevielleEngine::gameLoaded() { repon(2, g_crep); clsf3(); _endGame = false; - tmlieu(g_s.mlieu); + tmlieu(g_s._mlieu); modinv(); - if (g_s.derobj != 0) - modobj2(g_s.derobj + 400, test[1], test[2]); + if (g_s._derobj != 0) + modobj2(g_s._derobj + 400, test[1], test[2]); else g_tesok = test[1] || test[2]; showMouse(); @@ -153,7 +153,7 @@ void tmaj3() { m = 1; h += j * 24; m += h * 2; - g_s.heure = chr(m); + g_s._heure = chr(m); } void tsitu() { @@ -239,16 +239,16 @@ void tsitu() { } } calch(j, h, m); - if ((((h == 12) || (h == 13) || (h == 19)) && (g_s.mlieu != 10)) || - ((h > 0) && (h < 6) && (g_s.mlieu != 0))) - ++g_s.conf; - if (((g_s.mlieu < 16) || (g_s.mlieu > 19)) && (g_s.mlieu != 23) - && (g_s.mlieu != 0) && (g_s.derobj != 152) && (!g_vm->_loseGame)) { - if ((g_s.conf > 99) && (h > 8) && (h < 16)) { + if ((((h == 12) || (h == 13) || (h == 19)) && (g_s._mlieu != 10)) || + ((h > 0) && (h < 6) && (g_s._mlieu != 0))) + ++g_s._conf; + if (((g_s._mlieu < 16) || (g_s._mlieu > 19)) && (g_s._mlieu != 23) + && (g_s._mlieu != 0) && (g_s._derobj != 152) && (!g_vm->_loseGame)) { + if ((g_s._conf > 99) && (h > 8) && (h < 16)) { g_crep = 1501; tperd(); } - if ((g_s.conf > 99) && (h > 0) && (h < 9)) { + if ((g_s._conf > 99) && (h > 0) && (h < 9)) { g_crep = 1508; tperd(); } @@ -263,7 +263,7 @@ void tsitu() { /* NIVEAU 1 */ void theure() { - g_vj = ord(g_s.heure); + g_vj = ord(g_s._heure); g_vh = g_vj % 48; g_vj /= 48; g_vm__ = g_vh % 2; diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 7afaa47da0..cbff7b7d3f 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -49,23 +49,23 @@ Common::String SavegameManager::generateSaveName(int slotNumber) { * Handle saving or loading savegame data */ void SavegameManager::sync_save(Common::Serializer &sz) { - sz.syncAsSint16LE(s1.conf); - sz.syncBytes((byte *)&s1.pourc[0], 11); - sz.syncBytes((byte *)&s1.teauto[0], 43); - sz.syncBytes((byte *)&s1.sjer[0], 31); - sz.syncAsSint16LE(s1.mlieu); - sz.syncAsSint16LE(s1.iboul); - sz.syncAsSint16LE(s1.ibag); - sz.syncAsSint16LE(s1.icave); - sz.syncAsSint16LE(s1.ivier); - sz.syncAsSint16LE(s1.ipuit); - sz.syncAsSint16LE(s1.derobj); - sz.syncAsSint16LE(s1.iloic); - sz.syncAsSint16LE(s1.icryp); - sz.syncAsByte(s1.ipre); - sz.syncAsByte(s1.heure); - - sz.syncBytes(bufcha, 391); + sz.syncAsSint16LE(g_s1._conf); + sz.syncBytes((byte *)&g_s1._pourc[0], 11); + sz.syncBytes((byte *)&g_s1._teauto[0], 43); + sz.syncBytes((byte *)&g_s1._sjer[0], 31); + sz.syncAsSint16LE(g_s1._mlieu); + sz.syncAsSint16LE(g_s1._iboul); + sz.syncAsSint16LE(g_s1._ibag); + sz.syncAsSint16LE(g_s1._icave); + sz.syncAsSint16LE(g_s1._ivier); + sz.syncAsSint16LE(g_s1._ipuit); + sz.syncAsSint16LE(g_s1._derobj); + sz.syncAsSint16LE(g_s1._iloic); + sz.syncAsSint16LE(g_s1._icryp); + sz.syncAsByte(g_s1._ipre); + sz.syncAsByte(g_s1._heure); + + sz.syncBytes(g_bufcha, 391); } /** @@ -107,9 +107,9 @@ void SavegameManager::takesav(int n) { Common::Serializer sz(stream, NULL); sync_save(sz); - g_s = s1; + g_s = g_s1; for (i = 0; i <= 389; ++i) - tabdon[i + acha] = bufcha[i]; + g_tabdon[i + acha] = g_bufcha[i]; // Close the stream delete stream; @@ -142,10 +142,10 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { tmaj3(); for (i = 0; i <= 389; ++i) - bufcha[i] = tabdon[i + acha]; - s1 = g_s; - if (s1.mlieu == 26) - s1.mlieu = 15; + g_bufcha[i] = g_tabdon[i + acha]; + g_s1 = g_s; + if (g_s1._mlieu == 26) + g_s1._mlieu = 15; Common::String filename = generateSaveName(n); f = g_system->getSavefileManager()->openForSaving(filename); diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 8d9e67f818..d49feacedd 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -111,37 +111,37 @@ void taffich() { switch (a) { case 16: - g_s.pourc[9] = '*'; - g_s.teauto[42] = '*'; + g_s._pourc[9] = '*'; + g_s._teauto[42] = '*'; break; case 20: - g_s.teauto[39] = '*'; - if (g_s.teauto[36] == '*') { - g_s.pourc[3] = '*'; - g_s.teauto[38] = '*'; + g_s._teauto[39] = '*'; + if (g_s._teauto[36] == '*') { + g_s._pourc[3] = '*'; + g_s._teauto[38] = '*'; } break; case 24: - g_s.teauto[37] = '*'; + g_s._teauto[37] = '*'; break; case 30: - g_s.teauto[9] = '*'; + g_s._teauto[9] = '*'; break; case 31: - g_s.pourc[4] = '*'; - g_s.teauto[35] = '*'; + g_s._pourc[4] = '*'; + g_s._teauto[35] = '*'; break; case 118: - g_s.teauto[41] = '*'; + g_s._teauto[41] = '*'; break; case 143: - g_s.pourc[1] = '*'; + g_s._pourc[1] = '*'; break; case 150: - g_s.teauto[34] = '*'; + g_s._teauto[34] = '*'; break; case 151: - g_s.pourc[2] = '*'; + g_s._pourc[2] = '*'; break; default: break; @@ -162,15 +162,20 @@ void taffich() { m = 2034; if ((a == 17) && (g_maff == 14)) m = 2018; - if (a > 99) - if ((is == 1) || (is == 0)) + + if (a > 99) { + if ((g_is == 1) || (g_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) && (((g_maff > 69) && (!g_s.ipre)) || (g_maff > 99))) || ((g_maff > 29) && (g_maff < 33))) + + if (((a < 27) && (((g_maff > 69) && (!g_s._ipre)) || (g_maff > 99))) || ((g_maff > 29) && (g_maff < 33))) m = 2033; + messint(m); g_maff = a; if (a == 159) @@ -217,7 +222,7 @@ void taffich() { for (int j = 0; j <= 15; ++j) if (alllum[j] > alllum[k]) k = j; - mem[(0x7000 * 16) + 2 + (k << 1)] = rang[i]; + mem[(0x7000 * 16) + 2 + (k << 1)] = g_rang[i]; alllum[k] = -1; } } @@ -244,11 +249,11 @@ void taffich() { charani(filename, lgt, handle); } showMouse(); - if ((a < 27) && ((g_maff < 27) || (g_s.mlieu == 15)) && (g_msg[4] != OPCODE_ENTER)) { + if ((a < 27) && ((g_maff < 27) || (g_s._mlieu == 15)) && (g_msg[4] != OPCODE_ENTER)) { if ((a == 13) || (a == 14)) person(); else if (!g_blo) - t11(g_s.mlieu, cx); + t11(g_s._mlieu, cx); g_mpers = 0; } } diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 8873c7e70a..0b8a5d7432 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -37,11 +37,11 @@ namespace Mortevielle { /*------------------------------ CONSTANTS ------------------------------*/ /*---------------------------------------------------------------------------*/ -const byte tabdbc[18] = {7, 23, 7, 14, 13, 9, 14, 9, 5, 12, 6, 12, 13, 4, 0, 4, 5, 9}; -const byte tabdph[16] = {0, 10, 2, 0, 2, 10, 3, 0, 3, 7, 5, 0, 6, 7, 7, 10}; -const byte typcon[26] = {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3}; -const byte intcon[26] = {1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}; -const byte tnocon[364] = { +const byte g_tabdbc[18] = {7, 23, 7, 14, 13, 9, 14, 9, 5, 12, 6, 12, 13, 4, 0, 4, 5, 9}; +const byte g_tabdph[16] = {0, 10, 2, 0, 2, 10, 3, 0, 3, 7, 5, 0, 6, 7, 7, 10}; +const byte g_typcon[26] = {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3}; +const byte g_intcon[26] = {1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}; +const byte g_tnocon[364] = { 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -59,7 +59,7 @@ const byte tnocon[364] = { }; -const byte _menuConstants[8][4] = { +const byte g_menuConstants[8][4] = { { 7, 37, 22, 8}, {19, 33, 23, 7}, {31, 89, 10, 21}, @@ -70,9 +70,9 @@ const byte _menuConstants[8][4] = { {62, 25, 13, 5} }; -const byte addv[2] = {8, 8}; +const byte g_addv[2] = {8, 8}; -const byte rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; +const byte g_rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; /*---------------------------------------------------------------------------*/ /*------------------------------ VARIABLES ------------------------------*/ @@ -168,21 +168,20 @@ int g_x, g_ptr_word, g_color_txt; -int t_cph[6401]; -byte tabdon[4001]; +int g_t_cph[6401]; +byte g_tabdon[4001]; -Common::String _hintPctMessage; // Provides the % of hints -byte is; -byte mode; +Common::String g_hintPctMessage; // Provides the % of hints +byte g_is; -int nbrep[9]; -int nbrepm[9]; +int g_nbrep[9]; +int g_nbrepm[9]; int g_msg[5]; -byte touv[8]; -sav_chaine g_s, s1; -byte bufcha[391]; +byte g_touv[8]; +sav_chaine g_s, g_s1; +byte g_bufcha[391]; -byte lettres[7][24]; +byte g_lettres[7][24]; byte palher[16]; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 3b2e44d843..cff75128de 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -95,27 +95,26 @@ const int offsetb3 = 6; const int null = 255; -const int tempo_mus = 71; -const int tempo_bruit = 78; -const int tempo_f = 80; -const int tempo_m = 89; +const int kTempoMusic = 71; +const int kTempoNoise = 78; +const int kTempoF = 80; +const int kTempoM = 89; const int ti1 = 410; const int ti2 = 250; const int maxti = 7975; const int maxtd = 600; -const int max_rect = 14; - -const int c_repon = 0; -const int c_st41 = 186; -const int c_tparler = 247; -const int c_paroles = 292; -const int c_tmlieu = 435; -const int c_dialpre = 456; -const int c_action = 476; -const int c_saction = 497; -const int c_dis = 502; -const int c_fin = 510; /* => n'existe pas ; si !! */ +const int kMaxRect = 14; + +const int kDescriptionStringIndex = 0; // Unused +const int kInventoryStringIndex = 186; +const int kQuestionStringIndex = 247; +const int kDialogStringIndex = 292; +const int kMenuPlaceStringIndex = 435; +const int kMenuActionStringIndex = 476; +const int kMenuSelfStringIndex = 497; +const int kMenuSayStringIndex = 502; +const int kSecretPassageQuestionStringIndex = 510; // Unusued? const int arega = 0; const int asoul = 154; @@ -128,7 +127,6 @@ const int amzon = 1650; const int fleche = 1758; const int OPCODE_NONE = 0; - enum verbs {OPCODE_ATTACH = 0x301, OPCODE_WAIT = 0x302, OPCODE_FORCE = 0x303, OPCODE_SLEEP = 0x304, OPCODE_LISTEN = 0x305, OPCODE_ENTER = 0x306, OPCODE_CLOSE = 0x307, OPCODE_SEARCH = 0x308, OPCODE_KNOCK = 0x309, OPCODE_SCRATCH = 0x30a, OPCODE_READ = 0x30b, OPCODE_EAT = 0x30c, OPCODE_PLACE = 0x30d, OPCODE_OPEN = 0x30e, OPCODE_TAKE = 0x30f, @@ -136,73 +134,71 @@ enum verbs {OPCODE_ATTACH = 0x301, OPCODE_WAIT = 0x302, OPCODE_FORCE = 0x303, OPCODE_TURN = 0x315, OPCODE_SHIDE = 0x401, OPCODE_SSEARCH = 0x402, OPCODE_SREAD = 0x403, OPCODE_SPUT = 0x404, OPCODE_SLOOK = 0x405}; -const int max_patt = 20; +const int kMaxPatt = 20; -extern const byte tabdbc[18]; -extern const byte tabdph[16]; -extern const byte typcon[26]; -extern const byte intcon[26]; -extern const byte tnocon[364]; +extern const byte g_tabdbc[18]; +extern const byte g_tabdph[16]; +extern const byte g_typcon[26]; +extern const byte g_intcon[26]; +extern const byte g_tnocon[364]; -extern const byte _menuConstants[8][4]; +extern const byte g_menuConstants[8][4]; -extern const byte addv[2]; +extern const byte g_addv[2]; -extern const byte rang[16]; +extern const byte g_rang[16]; /*---------------------------------------------------------------------------*/ /*-------------------------------- TYPES --------------------------------*/ /*---------------------------------------------------------------------------*/ struct sav_chaine { - int conf; - byte pourc[11]; - byte teauto[43]; - byte sjer[31]; - int mlieu, iboul, ibag, icave, ivier, ipuit; - int derobj, iloic, icryp; - bool ipre; - byte heure; + int _conf; + byte _pourc[11]; + byte _teauto[43]; + byte _sjer[31]; + int _mlieu, _iboul, _ibag, _icave, _ivier, _ipuit; + int _derobj, _iloic, _icryp; + bool _ipre; + byte _heure; }; struct registres { - int ax, bx, cx, dx, bp, si, di, ds, es, flags; + int _ax, _bx, _cx, _dx, _bp, _si, _di, _ds, _es, _flags; }; struct ind { - int indis; - byte point; + int _indis; + byte _point; }; struct chariot { - int val, - code, - acc, - freq, - rep; + int _val, + _code, + _acc, + _freq, + _rep; }; struct rectangle { - int x1, x2, y1, y2; - bool enabled; + int _x1, _x2, _y1, _y2; + bool _enabled; }; struct pattern { - byte tay, tax; - byte des[max_patt+1][max_patt+1]; + byte _tay, _tax; + byte _des[kMaxPatt + 1][kMaxPatt + 1]; }; struct nhom { - byte n; /* numero entre 0 et 32 */ - byte hom[4]; + byte _id; /* number betwwen 0 and 32 */ + byte _hom[4]; }; -typedef nhom t_nhom[16]; - struct t_pcga { - byte p; - nhom a[16]; + byte _p; + nhom _a[16]; }; typedef int tablint[256]; @@ -308,21 +304,20 @@ extern int g_x, g_ptr_word, g_color_txt; -extern int t_cph[6401]; -extern byte tabdon[4001]; +extern int g_t_cph[6401]; +extern byte g_tabdon[4001]; -extern Common::String _hintPctMessage; // gives the pct of hints found -extern byte is; -extern byte mode; +extern Common::String g_hintPctMessage; // gives the pct of hints found +extern byte g_is; -extern int nbrep[9]; -extern int nbrepm[9]; +extern int g_nbrep[9]; +extern int g_nbrepm[9]; extern int g_msg[5]; -extern byte touv[8]; -extern sav_chaine g_s, s1; -extern byte bufcha[391]; +extern byte g_touv[8]; +extern sav_chaine g_s, g_s1; +extern byte g_bufcha[391]; -extern byte lettres[7][24]; +extern byte g_lettres[7][24]; extern byte palher[16]; -- cgit v1.2.3 From 2a32c9d1f48f04b46b0d65d43a94f93d56e8307a Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 3 Mar 2012 09:12:15 +0100 Subject: MORTEVIELLE: Rename more globals --- engines/mortevielle/graphics.cpp | 2 +- engines/mortevielle/keyboard.cpp | 2 +- engines/mortevielle/level15.cpp | 35 +++--- engines/mortevielle/level15.h | 6 - engines/mortevielle/mor.cpp | 4 +- engines/mortevielle/mor2.cpp | 10 +- engines/mortevielle/mor2.h | 2 +- engines/mortevielle/mortevielle.cpp | 4 +- engines/mortevielle/mouse.cpp | 60 +++++----- engines/mortevielle/outtext.cpp | 12 +- engines/mortevielle/ovd1.cpp | 74 ++++++------ engines/mortevielle/parole.cpp | 222 ++++++++++++++++++------------------ engines/mortevielle/parole2.cpp | 22 ++-- engines/mortevielle/taffich.cpp | 12 +- engines/mortevielle/var_mor.cpp | 31 +++-- engines/mortevielle/var_mor.h | 31 +++-- 16 files changed, 254 insertions(+), 275 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 3108594f40..ce02915208 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -911,7 +911,7 @@ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { (x + surface.w) * 2, (y + surface.h) * 2)); // Get a lookup for the palette mapping - const byte *paletteMap = &mem[0x7000 * 16 + 2]; + const byte *paletteMap = &g_mem[0x7000 * 16 + 2]; // Loop through writing for (int yp = 0; yp < surface.h; ++yp) { diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index 602d53deb2..72fc6e94aa 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -46,7 +46,7 @@ int testou() { break; case '\26' : if ((g_c_zzz == 1) || (g_c_zzz == 2)) { - zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); + zzuul(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); ++g_c_zzz; return 61; diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index aabbe29528..444a810b0e 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -61,12 +61,13 @@ bool isMouseIn(rectangle r) { void outbloc(int n, pattern p, nhom *pal) { int ad = n * 404 + 0xd700; - WRITE_LE_UINT16(&mem[0x6000 * 16 + ad], p._tax); - WRITE_LE_UINT16(&mem[0x6000 * 16 + ad + 2], p._tay); + WRITE_LE_UINT16(&g_mem[0x6000 * 16 + ad], p._tax); + WRITE_LE_UINT16(&g_mem[0x6000 * 16 + ad + 2], p._tay); ad += 4; - for (int i = 1; i <= p._tax; ++i) + for (int i = 1; i <= p._tax; ++i) { for (int j = 1; j <= p._tay; ++j) - mem[(0x6000 * 16) + ad + (j - 1) * p._tax + i - 1] = pal[n]._hom[p._des[i][j]]; + g_mem[(0x6000 * 16) + ad + (j - 1) * p._tax + i - 1] = pal[n]._hom[p._des[i][j]]; + } } void writepal(int n) { @@ -75,22 +76,22 @@ void writepal(int n) { case MODE_EGA: case MODE_AMSTRAD1512: for (int i = 1; i <= 16; ++i) { - mem[(0x7000 * 16) + (2 * i)] = tabpal[n][i].x; - mem[(0x7000 * 16) + (2 * i) + 1] = tabpal[n][i].y; + g_mem[(0x7000 * 16) + (2 * i)] = g_tabpal[n][i].x; + g_mem[(0x7000 * 16) + (2 * i) + 1] = g_tabpal[n][i].y; } break; case MODE_CGA: { warning("TODO: If this code is needed, resolve the incompatible types"); nhom pal[16]; for (int i = 0; i < 16; ++i) { - pal[i] = palcga[n]._a[i]; + pal[i] = g_palcga[n]._a[i]; } // nhom pal[16] = palcga[n]._a; if (n < 89) - palette(palcga[n]._p); + palette(g_palcga[n]._p); for (int i = 0; i <= 15; ++i) - outbloc(i, tpt[pal[i]._id], pal); + outbloc(i, g_tpt[pal[i]._id], pal); } break; default: @@ -101,15 +102,15 @@ void writepal(int n) { void pictout(int seg, int dep, int x, int y) { GfxSurface surface; - surface.decode(&mem[seg * 16 + dep]); + surface.decode(&g_mem[seg * 16 + dep]); if (g_currGraphicalDevice == MODE_HERCULES) { - mem[0x7000 * 16 + 2] = 0; - mem[0x7000 * 16 + 32] = 15; + g_mem[0x7000 * 16 + 2] = 0; + g_mem[0x7000 * 16 + 32] = 15; } - if ((g_caff != 51) && (READ_LE_UINT16(&mem[0x7000 * 16 + 0x4138]) > 0x100)) - WRITE_LE_UINT16(&mem[0x7000 * 16 + 0x4138], 0x100); + if ((g_caff != 51) && (READ_LE_UINT16(&g_mem[0x7000 * 16 + 0x4138]) > 0x100)) + WRITE_LE_UINT16(&g_mem[0x7000 * 16 + 0x4138], 0x100); g_vm->_screenSurface.drawPicture(surface, x, y); } @@ -144,7 +145,7 @@ void adzon() { if (!f.open("dec.mor")) error("Missing file - dec.mor"); - f.read(&mem[0x73a2 * 16 + 0], 1 * 1664); + f.read(&g_mem[0x73a2 * 16 + 0], 1 * 1664); f.close(); } @@ -152,12 +153,12 @@ void adzon() { * Returns the offset within the compressed image data resource of the desired image */ int animof(int ouf, int num) { - int nani = mem[adani * 16 + 1]; + int nani = g_mem[adani * 16 + 1]; int aux = num; if (ouf != 1) aux += nani; - int animof_result = (nani << 2) + 2 + READ_BE_UINT16(&mem[adani * 16 + (aux << 1)]); + int animof_result = (nani << 2) + 2 + READ_BE_UINT16(&g_mem[adani * 16 + (aux << 1)]); return animof_result; } diff --git a/engines/mortevielle/level15.h b/engines/mortevielle/level15.h index 34e1026f2c..2d7c0d47ae 100644 --- a/engines/mortevielle/level15.h +++ b/engines/mortevielle/level15.h @@ -38,16 +38,10 @@ extern bool isMouseIn(rectangle r); extern void outbloc(int n, pattern p, nhom *pal); extern void writepal(int n); extern void pictout(int seg, int dep, int x, int y); -// extern int calad(int x, int y); extern void sauvecr(int y, int dy); extern void charecr(int y, int dy); -// extern int peek(int ad); -// extern int peekw(int ad); -// extern real peekl(int ad); -// extern void procedure poke(int ad, int n); extern void adzon(); extern int animof(int ouf, int num); -// extern void affgd(int offs, int dep, int x, int y); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index ab3467e89f..ddfa188d45 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -115,7 +115,7 @@ void dessine(int ad, int x, int y) { void dessine_rouleau() { writepal(89); if (g_currGraphicalDevice == MODE_HERCULES) { - mem[0x7000 * 16 + 14] = 15; + g_mem[0x7000 * 16 + 14] = 15; } hideMouse(); pictout(0x73a2, 0, 0, 0); @@ -1325,7 +1325,7 @@ void aniof(int ouf, int num) { int offset = animof(ouf, num); GfxSurface surface; - surface.decode(&mem[ad * 16 + offset]); + surface.decode(&g_mem[ad * 16 + offset]); g_vm->_screenSurface.drawPicture(surface, 0, 12); ecrf1(); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 326010ad8c..19a9e855a8 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -237,15 +237,15 @@ void tkey1(bool d) { showMouse(); } -void tmlieu(int mli) { +void tmlieu(int roomId) { Common::String nomp; - if (mli == 26) - mli = 15; + if (roomId == 26) + roomId = 15; int i = 1; - while ((i < 8) && (v_lieu[i][mli] != 0)) { - nomp = deline(v_lieu[i][mli] + kMenuPlaceStringIndex); + while ((i < 8) && (g_v_lieu[i][roomId] != 0)) { + nomp = deline(g_v_lieu[i][roomId] + kMenuPlaceStringIndex); while (nomp.size() < 20) nomp += ' '; g_vm->_menu.menut(g_vm->_menu._moveMenu[i], nomp); diff --git a/engines/mortevielle/mor2.h b/engines/mortevielle/mor2.h index 8dc0e1a974..64eed71865 100644 --- a/engines/mortevielle/mor2.h +++ b/engines/mortevielle/mor2.h @@ -43,7 +43,7 @@ extern void fenat(char ans); /* NIVEAU 8 */ extern void afdes(int ad); extern void tkey1(bool d); -extern void tmlieu(int mli); +extern void tmlieu(int roomId); /* NIVEAU 7 */ extern void tlu(int af, int ob); extern void affrep(); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 4a410f0b81..52bb1fe90e 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -149,7 +149,7 @@ Common::ErrorCode MortevielleEngine::initialise() { charpal(); charge_cfiph(); charge_cfiec(); - zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); + zzuul(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); g_c_zzz = 1; init_nbrepm(); initMouse(); @@ -504,7 +504,7 @@ void MortevielleEngine::mainGame() { charge_cfiec(); for (g_crep = 1; g_crep <= g_c_zzz; ++g_crep) - zzuul(&adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); + zzuul(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); charge_bruit5(); _menu.initMenu(); diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index ca88a79da3..4fcbb02fd0 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -60,7 +60,7 @@ void initMouse() { g_vm->setMouseClick(false); m_show = m_arrow; - if ((READ_LE_UINT16(&mem[0xcc]) == 0) && (READ_LE_UINT16(&mem[0xce]) == 0)) + if ((READ_LE_UINT16(&g_mem[0xcc]) == 0) && (READ_LE_UINT16(&g_mem[0xce]) == 0)) int_m = false; if (int_m) { @@ -91,10 +91,10 @@ void hideMouse() { int k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); do { - WRITE_LE_UINT16(&mem[0xb000 * 16 + j], s_s[0][k]); - WRITE_LE_UINT16(&mem[0xb800 * 16 + j + 2], s_s[1][k]); - WRITE_LE_UINT16(&mem[0xba00 * 16 + j], s_s[2][k]); - WRITE_LE_UINT16(&mem[0xba00 * 16 + j + 2], s_s[3][k]); + WRITE_LE_UINT16(&g_mem[0xb000 * 16 + j], s_s[0][k]); + WRITE_LE_UINT16(&g_mem[0xb800 * 16 + j + 2], s_s[1][k]); + WRITE_LE_UINT16(&g_mem[0xba00 * 16 + j], s_s[2][k]); + WRITE_LE_UINT16(&g_mem[0xba00 * 16 + j + 2], s_s[3][k]); j += 80; ++k; } while (k < 5); @@ -102,15 +102,15 @@ void hideMouse() { break; case MODE_AMSTRAD1512: for (int i = 0; i <= 3; ++i) { - port[0x3dd] = 1 << i; + g_port[0x3dd] = 1 << i; int k = 0; j = p_o_s; do { if (imp) { - WRITE_LE_UINT16(&mem[0xb800 * 16 + j], s_s[i][k]); + WRITE_LE_UINT16(&g_mem[0xb800 * 16 + j], s_s[i][k]); j += 80 - 0x2000; } else { - WRITE_LE_UINT16(&mem[0xb800 * 16 + j], s_s[i][k]); + WRITE_LE_UINT16(&g_mem[0xb800 * 16 + j], s_s[i][k]); j += 0x2000; } imp = !imp; @@ -119,22 +119,22 @@ void hideMouse() { } break; case MODE_EGA: { - port[0x3c4] = 2; - port[0x3ce] = 8; - port[0x3cf] = 255; + g_port[0x3c4] = 2; + g_port[0x3ce] = 8; + g_port[0x3cf] = 255; int i = 0; do { - port[0x3c5] = 1 << i; + g_port[0x3c5] = 1 << i; int k = 0; j = p_o_s; do { // Useless ? // ps = mem[0xa000 * 16 + j]; - mem[0xa000 * 16 + j] = lo(s_s[i][k]); + g_mem[0xa000 * 16 + j] = lo(s_s[i][k]); // Useless ?? // ps = mem[0xa000 * 16 + j + 1]; - mem[0xa000 * 16 + j + 1] = hi(s_s[i][k]); + g_mem[0xa000 * 16 + j + 1] = hi(s_s[i][k]); j += 80; ++k; } while (k < 8); @@ -146,7 +146,7 @@ void hideMouse() { j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); for (int i = 0; i <= 5; ++i) { for (int k = 0; k <= 3; ++k) - WRITE_LE_UINT16(&mem[0xb000 * 16 + k * 0x200 + j], s_s[i][k]); + WRITE_LE_UINT16(&g_mem[0xb000 * 16 + k * 0x200 + j], s_s[i][k]); j += 80; } break; @@ -155,8 +155,8 @@ void hideMouse() { int k = 0; do { for (int i = 0; i <= 3; ++i) { - WRITE_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j], s_s[k][i + (k << 2)]); - WRITE_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j + 2], s_s[k + 3][i + (k << 2)]); + WRITE_LE_UINT16(&g_mem[0xb800 * 16 + 0x200 * i + j], s_s[k][i + (k << 2)]); + WRITE_LE_UINT16(&g_mem[0xb800 * 16 + 0x200 * i + j + 2], s_s[k + 3][i + (k << 2)]); } j += 160; ++k; @@ -188,10 +188,10 @@ void showMouse() { k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); do { - s_s[0][k] = READ_LE_UINT16(&mem[0xb800 * 16 + j]); - s_s[1][k] = READ_LE_UINT16(&mem[0xb800 * 16 + j + 2]); - s_s[2][k] = READ_LE_UINT16(&mem[0xba00 * 16 + j]); - s_s[3][k] = READ_LE_UINT16(&mem[0xba00 * 16 + j + 2]); + s_s[0][k] = READ_LE_UINT16(&g_mem[0xb800 * 16 + j]); + s_s[1][k] = READ_LE_UINT16(&g_mem[0xb800 * 16 + j + 2]); + s_s[2][k] = READ_LE_UINT16(&g_mem[0xba00 * 16 + j]); + s_s[3][k] = READ_LE_UINT16(&g_mem[0xba00 * 16 + j + 2]); j += 80; ++k; } while (k < 5); @@ -200,14 +200,14 @@ void showMouse() { for (i = 0; i <= 3; ++i) { j = p_o_s; imp = odd(y_s); - port[0x3de] = i; + g_port[0x3de] = i; k = 0; do { if (imp) { - s_s[i][k] = READ_LE_UINT16(&mem[0xb800 * 16 + j]); + s_s[i][k] = READ_LE_UINT16(&g_mem[0xb800 * 16 + j]); j += 80 - 0x2000; } else { - s_s[i][k] = READ_LE_UINT16(&mem[0xb800 * 16 + j]); + s_s[i][k] = READ_LE_UINT16(&g_mem[0xb800 * 16 + j]); j += 0x2000; } imp = !imp; @@ -216,14 +216,14 @@ void showMouse() { } break; case MODE_EGA: - port[0x3ce] = 4; + g_port[0x3ce] = 4; l = 0; do { - port[0x3cf] = l; + g_port[0x3cf] = l; k = 0; j = p_o_s; do { - s_s[l][k] = mem[0xa000 * 16 + j] + (mem[(0xa000 * 16) + j + 1] << 8); + s_s[l][k] = g_mem[0xa000 * 16 + j] + (g_mem[(0xa000 * 16) + j + 1] << 8); j += 80; ++k; } while (k < 8); @@ -234,7 +234,7 @@ void showMouse() { j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); for (i = 0; i <= 5; ++i) { for (k = 0; k <= 3; ++k) - s_s[i][k] = READ_LE_UINT16(&mem[0xb000 * 16 + k * 0x200 + j]); + s_s[i][k] = READ_LE_UINT16(&g_mem[0xb000 * 16 + k * 0x200 + j]); j += 80; } break; @@ -243,8 +243,8 @@ void showMouse() { k = 0; do { for (i = 0; i <= 3; ++i) { - s_s[k][i + (k << 2)] = READ_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j]); - s_s[k + 3][i + (k << 2)] = READ_LE_UINT16(&mem[0xb800 * 16 + 0x200 * i + j + 2]); + s_s[k][i + (k << 2)] = READ_LE_UINT16(&g_mem[0xb800 * 16 + 0x200 * i + j]); + s_s[k + 3][i + (k << 2)] = READ_LE_UINT16(&g_mem[0xb800 * 16 + 0x200 * i + j + 2]); } j += 160; ++k; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 4d54040749..43a038649f 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -76,13 +76,13 @@ static void cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { uint16 oct, ocd; /* 5-8 */ - oct = t_mot[idx]; + oct = g_t_mot[idx]; oct = ((uint16)(oct << (16 - pt))) >> (16 - pt); if (pt < 6) { ++idx; oct = oct << (5 - pt); pt += 11; - oct = oct | ((uint)t_mot[idx] >> pt); + oct = oct | ((uint)g_t_mot[idx] >> pt); } else { pt -= 5; oct = (uint)oct >> pt; @@ -95,13 +95,13 @@ static void cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { break; case 30: case 31: - ocd = t_mot[idx]; + ocd = g_t_mot[idx]; ocd = (uint16)(ocd << (16 - pt)) >> (16 - pt); if (pt < 6) { ++idx; ocd = ocd << (5 - pt); pt += 11; - ocd = ocd | ((uint)t_mot[idx] >> pt); + ocd = ocd | ((uint)g_t_mot[idx] >> pt); } else { pt -= 5; ocd = (uint)ocd >> pt; @@ -134,8 +134,8 @@ Common::String deline(int num) { } else if (!g_vm->_txxFileFl) { wrkStr = g_vm->getGameString(num); } else { - int i = t_rec[num]._indis; - byte k = t_rec[num]._point; + int i = g_t_rec[num]._indis; + byte k = g_t_rec[num]._point; int length = 0; bool endFl = false; char let; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index e69e7ae64c..303323590c 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -68,8 +68,8 @@ void charpal() { error("Missing file - plxx.mor"); for (int i = 0; i <= 90; ++i) { for (int j = 1; j <= 16; ++j) { - tabpal[i][j].x = f.readByte(); - tabpal[i][j].y = f.readByte(); + g_tabpal[i][j].x = f.readByte(); + g_tabpal[i][j].y = f.readByte(); } } f.close(); @@ -78,9 +78,9 @@ void charpal() { error("Missing file - cxx.mor"); for (int j = 0; j <= 90; ++j) { - palcga[j]._p = fb.readByte(); + g_palcga[j]._p = fb.readByte(); for (int i = 0; i <= 15; ++i) { - nhom &with = palcga[j]._a[i]; + nhom &with = g_palcga[j]._a[i]; b = fb.readByte(); with._id = (uint)b >> 4; @@ -88,13 +88,13 @@ void charpal() { with._hom[1] = b & 3; } } - palcga[10]._a[9] = palcga[10]._a[5]; + g_palcga[10]._a[9] = g_palcga[10]._a[5]; for (int j = 0; j <= 14; ++j) { - tpt[j]._tax = fb.readByte(); - tpt[j]._tay = fb.readByte(); + g_tpt[j]._tax = fb.readByte(); + g_tpt[j]._tay = fb.readByte(); for (int i = 1; i <= 20; ++i) for (int k = 1; k <= 20; ++k) - tpt[j]._des[i][k] = fb.readByte(); + g_tpt[j]._des[i][k] = fb.readByte(); } fb.close(); } @@ -112,35 +112,29 @@ void chartex() { if (!inpFile.open("TXX.INP")) { if (!inpFile.open("TXX.MOR")) { warning("Missing file - TXX.INP or .MOR - Switching to DAT file"); - return; } - } - - if (!ntpFile.open("TXX.NTP")) { - if (!ntpFile.open("TXX.IND")) { - warning("Missing file - TXX.NTP or .IND - Switching to DAT file"); - return; - } - } - - if ((inpFile.size() > (maxti * 2)) || (ntpFile.size() > (maxtd * 3))) { + } else if ((inpFile.size() > (maxti * 2)) || (ntpFile.size() > (maxtd * 3))) { warning("TXX file - Unexpected format - Switching to DAT file"); return; + } else { + for (int i = 0; i < inpFile.size() / 2; ++i) + g_t_mot[i] = inpFile.readUint16LE(); + + inpFile.close(); + g_vm->_txxFileFl = true; } - for (int i = 0; i < inpFile.size() / 2; ++i) - t_mot[i] = inpFile.readUint16LE(); - - inpFile.close(); + if (!ntpFile.open("TXX.NTP")) { + error("Missing file - TXX.NTP"); + } for (int i = 0; i < (ntpFile.size() / 3); ++i) { - t_rec[i]._indis = ntpFile.readSint16LE(); - t_rec[i]._point = ntpFile.readByte(); + g_t_rec[i]._indis = ntpFile.readSint16LE(); + g_t_rec[i]._point = ntpFile.readByte(); } ntpFile.close(); - g_vm->_txxFileFl = true; } /** @@ -154,17 +148,17 @@ void dialpre() { } void init_lieu() { - Common::File f_lieu; // tab_mlieu + Common::File f; - /* debug('o3 init_lieu'); */ - if (!f_lieu.open("MXX.mor")) + if (!f.open("MXX.mor")) error("Missing file - MXX.mor"); - for (int i = 1; i < 8; ++i) + for (int i = 1; i < 8; ++i) { for (int j = 0; j < 25; ++j) - v_lieu[i][j] = f_lieu.readByte(); + g_v_lieu[i][j] = f.readByte(); + } - f_lieu.close(); + f.close(); } @@ -182,19 +176,19 @@ void music() { if (!fic.open("mort.img")) error("Missing file - mort.img"); - fic.read(&mem[0x3800 * 16 + 0], 500); - fic.read(&mem[0x47a0 * 16 + 0], 123); + fic.read(&g_mem[0x3800 * 16 + 0], 500); + fic.read(&g_mem[0x47a0 * 16 + 0], 123); fic.close(); - g_vm->_soundManager.decodeMusic(&mem[0x3800 * 16], &mem[0x5000 * 16], 623); - addfix = (float)((kTempoMusic - g_addv[1])) / 256; - cctable(tbi); + g_vm->_soundManager.decodeMusic(&g_mem[0x3800 * 16], &g_mem[0x5000 * 16], 623); + g_addfix = (float)((kTempoMusic - g_addv[1])) / 256; + cctable(g_tbi); fin = false; k = 0; do { fin = keypressed(); - g_vm->_soundManager.musyc(tbi, 9958, kTempoMusic); + g_vm->_soundManager.musyc(g_tbi, 9958, kTempoMusic); ++k; fin = fin | keypressed() | (k >= 5); } while (!fin); @@ -209,7 +203,7 @@ void charge_bruit5() { if (!f.open("bruit5")) error("Missing file - bruit5"); - f.read(&mem[adbruit5 * 16 + 0], 149 * 128); + f.read(&g_mem[adbruit5 * 16 + 0], 149 * 128); f.close(); } @@ -219,7 +213,7 @@ void charge_cfiec() { if (!f.open("cfiec.mor")) error("Missing file - cfiec.mor"); - f.read(&adcfiec[0], 822 * 128); + f.read(&g_adcfiec[0], 822 * 128); f.close(); g_rech_cfiec = false; diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index f0d755201f..8974b45977 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -33,49 +33,49 @@ namespace Mortevielle { void spfrac(int wor) { - c3._rep = (uint)wor >> 12; - if ((g_typlec == 0) && (c3._code != 9)) - if (((c3._code > 4) && (c3._val != 20) && (c3._rep != 3) && (c3._rep != 6) && (c3._rep != 9)) || - ((c3._code < 5) && ((c3._val != 19) && (c3._val != 22) && (c3._rep != 4) && (c3._rep != 9)))) { - ++c3._rep; + g_c3._rep = (uint)wor >> 12; + if ((g_typlec == 0) && (g_c3._code != 9)) + if (((g_c3._code > 4) && (g_c3._val != 20) && (g_c3._rep != 3) && (g_c3._rep != 6) && (g_c3._rep != 9)) || + ((g_c3._code < 5) && ((g_c3._val != 19) && (g_c3._val != 22) && (g_c3._rep != 4) && (g_c3._rep != 9)))) { + ++g_c3._rep; } - c3._freq = ((uint)wor >> 6) & 7; - c3._acc = ((uint)wor >> 9) & 7; + g_c3._freq = ((uint)wor >> 6) & 7; + g_c3._acc = ((uint)wor >> 9) & 7; } void charg_car() { int wor, int_; - wor = swap(READ_LE_UINT16(&mem[adword + g_ptr_word])); + wor = swap(READ_LE_UINT16(&g_mem[adword + g_ptr_word])); int_ = wor & 0x3f; if ((int_ >= 0) && (int_ <= 13)) { - c3._val = int_; - c3._code = 5; + g_c3._val = int_; + g_c3._code = 5; } else if ((int_ >= 14) && (int_ <= 21)) { - c3._val = int_; - c3._code = 6; + g_c3._val = int_; + g_c3._code = 6; } else if ((int_ >= 22) && (int_ <= 47)) { int_ = int_ - 22; - c3._val = int_; - c3._code = g_typcon[int_]; + g_c3._val = int_; + g_c3._code = g_typcon[int_]; } else if ((int_ >= 48) && (int_ <= 56)) { - c3._val = int_ - 22; - c3._code = 4; + g_c3._val = int_ - 22; + g_c3._code = 4; } else { switch (int_) { case 60: - c3._val = 32; /* " " */ - c3._code = 9; + g_c3._val = 32; /* " " */ + g_c3._code = 9; break; case 61: - c3._val = 46; /* "." */ - c3._code = 9; + g_c3._val = 46; /* "." */ + g_c3._code = 9; break; case 62: - c3._val = 35; /* "#" */ - c3._code = 9; + g_c3._val = 35; /* "#" */ + g_c3._code = 9; default: break; } @@ -87,7 +87,7 @@ void charg_car() { void entroct(byte o) { - mem[adtroct * 16 + g_ptr_oct] = o; + g_mem[adtroct * 16 + g_ptr_oct] = o; ++g_ptr_oct; } @@ -100,7 +100,7 @@ void cctable(tablint &t) { tb[0] = 0; for (int k = 0; k <= 255; ++k) { - tb[k + 1] = addfix + tb[k]; + tb[k + 1] = g_addfix + tb[k]; t[255 - k] = abs((int)tb[k] + 1); } } @@ -109,7 +109,7 @@ void regenbruit() { int i = offsetb3 + 8590; int j = 0; do { - g_t_cph[j] = READ_LE_UINT16(&mem[adbruit3 + i]); + g_t_cph[j] = READ_LE_UINT16(&g_mem[adbruit3 + i]); i += 2; ++j; } while (i < offsetb3 + 8790); @@ -121,9 +121,9 @@ void charge_son() { if (!f.open("sonmus.mor")) error("Missing file - sonmus.mor"); - f.read(&mem[0x7414 * 16 + 0], 273); + f.read(&g_mem[0x7414 * 16 + 0], 273); - g_vm->_soundManager.decodeMusic(&mem[0x7414 * 16], &mem[adson * 16], 273); + g_vm->_soundManager.decodeMusic(&g_mem[0x7414 * 16], &g_mem[adson * 16], 273); f.close(); } @@ -146,10 +146,10 @@ void charge_bruit() { if (!f.open("bruits")) //Translation: "noise" error("Missing file - bruits"); - f.read(&mem[adbruit * 16 + 0], 250); + f.read(&g_mem[adbruit * 16 + 0], 250); for (i = 0; i <= 19013; ++i) - mem[adbruit * 16 + 32000 + i] = mem[adbruit5 + i]; - f.read(&mem[adbruit1 * 16 + offsetb1], 149); + g_mem[adbruit * 16 + 32000 + i] = g_mem[adbruit5 + i]; + f.read(&g_mem[adbruit1 * 16 + offsetb1], 149); f.close(); } @@ -158,40 +158,40 @@ void trait_car() { byte d3; int d2, i; - switch (c2._code) { + switch (g_c2._code) { case 9: - if (c2._val != ord('#')) - for (i = 0; i <= c2._rep; ++i) - entroct(c2._val); + if (g_c2._val != ord('#')) + for (i = 0; i <= g_c2._rep; ++i) + entroct(g_c2._val); break; case 5: case 6: - if (c2._code == 6) - d3 = g_tabdph[(c2._val - 14) << 1]; + if (g_c2._code == 6) + d3 = g_tabdph[(g_c2._val - 14) << 1]; else d3 = null; - if (c1._code >= 5) { - veracf(c2._acc); - if (c1._code == 9) { + if (g_c1._code >= 5) { + veracf(g_c2._acc); + if (g_c1._code == 9) { entroct(4); if (d3 == null) - entroct(c2._val); + entroct(g_c2._val); else entroct(d3); entroct(22); } } - switch (c2._rep) { + switch (g_c2._rep) { case 0: entroct(0); - entroct(c2._val); + entroct(g_c2._val); if (d3 == null) - if (c3._code == 9) + if (g_c3._code == 9) entroct(2); else entroct(4); - else if (c3._code == 9) + else if (g_c3._code == 9) entroct(0); else entroct(1); @@ -199,13 +199,13 @@ void trait_car() { case 4: case 5: case 6: - if (c2._rep != 4) { - i = c2._rep - 5; + if (g_c2._rep != 4) { + i = g_c2._rep - 5; do { --i; entroct(0); if (d3 == null) - entroct(c2._val); + entroct(g_c2._val); else entroct(d3); entroct(3); @@ -213,24 +213,24 @@ void trait_car() { } if (d3 == null) { entroct(4); - entroct(c2._val); + entroct(g_c2._val); entroct(0); } else { entroct(0); - entroct(c2._val); + entroct(g_c2._val); entroct(3); } break; case 7: case 8: case 9: - if (c2._rep != 7) { - i = c2._rep - 8; + if (g_c2._rep != 7) { + i = g_c2._rep - 8; do { --i; entroct(0); if (d3 == null) - entroct(c2._val); + entroct(g_c2._val); else entroct(d3); entroct(3); @@ -238,32 +238,32 @@ void trait_car() { } if (d3 == null) { entroct(0); - entroct(c2._val); + entroct(g_c2._val); entroct(2); } else { entroct(0); - entroct(c2._val); + entroct(g_c2._val); entroct(0); } break; case 1: case 2: case 3: - if (c2._rep != 1) { - i = c2._rep - 2; + if (g_c2._rep != 1) { + i = g_c2._rep - 2; do { --i; entroct(0); if (d3 == null) - entroct(c2._val); + entroct(g_c2._val); else entroct(d3); entroct(3); } while (i >= 0); } entroct(0); - entroct(c2._val); - if (c3._code == 9) + entroct(g_c2._val); + if (g_c3._code == 9) entroct(0); else entroct(1); @@ -275,16 +275,16 @@ void trait_car() { case 2: case 3: - d3 = c2._code + 5; // 7 ou 8 => Corresponding vowel - if (c1._code > 4) { - veracf(c2._acc); - if (c1._code == 9) { + d3 = g_c2._code + 5; // 7 ou 8 => Corresponding vowel + if (g_c1._code > 4) { + veracf(g_c2._acc); + if (g_c1._code == 9) { entroct(4); entroct(d3); entroct(22); } } - i = c2._rep; + i = g_c2._rep; assert(i >= 0); if (i != 0) { do { @@ -294,24 +294,24 @@ void trait_car() { entroct(3); } while (i > 0); } - veracf(c3._acc); - if (c3._code == 6) { + veracf(g_c3._acc); + if (g_c3._code == 6) { entroct(4); - entroct(g_tabdph[(c3._val - 14) << 1]); - entroct(c2._val); + entroct(g_tabdph[(g_c3._val - 14) << 1]); + entroct(g_c2._val); } else { entroct(4); - if (c3._val == 4) + if (g_c3._val == 4) entroct(3); else - entroct(c3._val); - entroct(c2._val); + entroct(g_c3._val); + entroct(g_c2._val); } break; case 0: case 1: - veracf(c2._acc); - switch (c3._code) { + veracf(g_c2._acc); + switch (g_c3._code) { case 2: d2 = 7; break; @@ -319,66 +319,66 @@ void trait_car() { d2 = 8; break; case 6: - d2 = g_tabdph[(c3._val - 14) << 1]; + d2 = g_tabdph[(g_c3._val - 14) << 1]; break; case 5: - d2 = c3._val; + d2 = g_c3._val; break; default: d2 = 10; break; } // switch c3._code - d2 = d2 * 26 + c2._val; + d2 = (d2 * 26) + g_c2._val; if (g_tnocon[d2] == 0) d3 = 2; else d3 = 6; - if (c2._rep >= 5) { - c2._rep = c2._rep - 5; + if (g_c2._rep >= 5) { + g_c2._rep = g_c2._rep - 5; d3 = 8 - d3; // Swap 2 and 6 } - if (c2._code == 0) { - i = c2._rep; + if (g_c2._code == 0) { + i = g_c2._rep; if (i != 0) { do { --i; entroct(d3); - entroct(c2._val); + entroct(g_c2._val); entroct(3); } while (i > 0); } entroct(d3); - entroct(c2._val); + entroct(g_c2._val); entroct(4); } else { entroct(d3); - entroct(c2._val); + entroct(g_c2._val); entroct(3); - i = c2._rep; + i = g_c2._rep; if (i != 0) { do { --i; entroct(d3); - entroct(c2._val); + entroct(g_c2._val); entroct(4); } while (i > 0); } } - if (c3._code == 9) { + if (g_c3._code == 9) { entroct(d3); - entroct(c2._val); + entroct(g_c2._val); entroct(5); - } else if ((c3._code != 0) && (c3._code != 1) && (c3._code != 4)) { - veracf(c3._acc); - switch (c3._code) { + } else if ((g_c3._code != 0) && (g_c3._code != 1) && (g_c3._code != 4)) { + veracf(g_c3._acc); + switch (g_c3._code) { case 3: d2 = 8; break; case 6: - d2 = g_tabdph[(c3._val - 14) << 1]; + d2 = g_tabdph[(g_c3._val - 14) << 1]; break; case 5: - d2 = c3._val; + d2 = g_c3._val; break; default: d2 = 7; @@ -387,47 +387,47 @@ void trait_car() { if (d2 == 4) d2 = 3; - if (g_intcon[c2._val] != 0) - ++c2._val; + if (g_intcon[g_c2._val] != 0) + ++g_c2._val; - if ((c2._val == 17) || (c2._val == 18)) - c2._val = 16; + if ((g_c2._val == 17) || (g_c2._val == 18)) + g_c2._val = 16; entroct(4); entroct(d2); - entroct(c2._val); + entroct(g_c2._val); } break; case 4: - veracf(c2._acc); - i = c2._rep; + veracf(g_c2._acc); + i = g_c2._rep; if (i != 0) { do { --i; entroct(2); - entroct(c2._val); + entroct(g_c2._val); entroct(3); } while (i > 0); } entroct(2); - entroct(c2._val); + entroct(g_c2._val); entroct(4); - if (c3._code == 9) { + if (g_c3._code == 9) { entroct(2); - entroct(c2._val); + entroct(g_c2._val); entroct(5); - } else if ((c3._code != 0) && (c3._code != 1) && (c3._code != 4)) { - veracf(c3._acc); - switch (c3._code) { + } else if ((g_c3._code != 0) && (g_c3._code != 1) && (g_c3._code != 4)) { + veracf(g_c3._acc); + switch (g_c3._code) { case 3: d2 = 8; break; case 6: - d2 = g_tabdph[(c3._val - 14) << 1]; + d2 = g_tabdph[(g_c3._val - 14) << 1]; break; case 5: - d2 = c3._val; + d2 = g_c3._val; break; default: d2 = 7; @@ -437,12 +437,12 @@ void trait_car() { if (d2 == 4) d2 = 3; - if (g_intcon[c2._val] != 0) - ++c2._val; + if (g_intcon[g_c2._val] != 0) + ++g_c2._val; entroct(4); entroct(d2); - entroct(g_tabdbc[((c2._val - 26) << 1) + 1]); + entroct(g_tabdbc[((g_c2._val - 26) << 1) + 1]); } break; diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index 8d781b74fc..3682dc99d0 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -36,16 +36,16 @@ namespace Mortevielle { void rot_chariot() { - c1 = c2; - c2 = c3; - c3._val = 32; - c3._code = 9; + g_c1 = g_c2; + g_c2 = g_c3; + g_c3._val = 32; + g_c3._code = 9; } void init_chariot() { - c3._rep = 0; - c3._freq = 0; - c3._acc = 0; + g_c3._rep = 0; + g_c3._freq = 0; + g_c3._acc = 0; rot_chariot(); rot_chariot(); } @@ -61,7 +61,7 @@ void trait_ph() { g_ptr_tcph = (uint)g_ledeb >> 1; g_ptr_word = 0; do { - WRITE_LE_UINT16(&mem[adword + g_ptr_word], g_t_cph[g_ptr_tcph]); + WRITE_LE_UINT16(&g_mem[adword + g_ptr_word], g_t_cph[g_ptr_tcph]); g_ptr_word += 2; ++g_ptr_tcph; } while (g_ptr_tcph < (int)((uint)g_lefin >> 1)); @@ -101,8 +101,8 @@ void parole(int rep, int ht, int typ) { tempo = kTempoF; else tempo = kTempoM; - addfix = (float)((tempo - g_addv[0])) / 256; - cctable(tbi); + g_addfix = (float)((tempo - g_addv[0])) / 256; + cctable(g_tbi); switch (typ) { case 1: charge_bruit(); @@ -117,7 +117,7 @@ void parole(int rep, int ht, int typ) { break; } trait_ph(); - g_vm->_soundManager.litph(tbi, typ, tempo); + g_vm->_soundManager.litph(g_tbi, typ, tempo); if (g_typlec != 0) for (int i = 0; i <= 500; ++i) { g_t_cph[i] = savph[i]; diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index d49feacedd..6e9a66ce30 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -52,7 +52,7 @@ void chardes(Common::String filename, int32 skipSize, int length) { int totalLength = length + remainingSkipSize; int memIndx = 0x6000 * 16; while (totalLength > 0) { - f.read(&mem[memIndx], 128); + f.read(&g_mem[memIndx], 128); testfi(); totalLength -= 128; memIndx += 128; @@ -60,7 +60,7 @@ void chardes(Common::String filename, int32 skipSize, int length) { f.close(); for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) - mem[0x7000 * 16 + i - remainingSkipSize] = mem[0x6000 * 16 + i]; + g_mem[0x7000 * 16 + i - remainingSkipSize] = g_mem[0x6000 * 16 + i]; } void charani(Common::String filename, int32 skipSize, int length) { @@ -80,7 +80,7 @@ void charani(Common::String filename, int32 skipSize, int length) { int fullLength = length + remainingSkipSize; int memIndx = 0x6000 * 16; while (fullLength > 0) { - f.read(&mem[memIndx], 128); + f.read(&g_mem[memIndx], 128); testfi(); fullLength -= 128; memIndx += 128; @@ -88,7 +88,7 @@ void charani(Common::String filename, int32 skipSize, int length) { f.close(); for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) - mem[0x7314 * 16 + i - remainingSkipSize] = mem[0x6000 * 16 + i]; + g_mem[0x7314 * 16 + i - remainingSkipSize] = g_mem[0x6000 * 16 + i]; } void taffich() { @@ -214,7 +214,7 @@ void taffich() { chardes(filename, lgt, handle); if (g_currGraphicalDevice == MODE_HERCULES) { for (int i = 0; i <= 15; ++i) { - int palh = READ_LE_UINT16(&mem[(0x7000 * 16) + ((i + 1) << 1)]); + int palh = READ_LE_UINT16(&g_mem[(0x7000 * 16) + ((i + 1) << 1)]); alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); } for (int i = 0; i <= 15; ++i) { @@ -222,7 +222,7 @@ void taffich() { for (int j = 0; j <= 15; ++j) if (alllum[j] > alllum[k]) k = j; - mem[(0x7000 * 16) + 2 + (k << 1)] = g_rang[i]; + g_mem[(0x7000 * 16) + 2 + (k << 1)] = g_rang[i]; alllum[k] = -1; } } diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 0b8a5d7432..7b27e243a9 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -183,24 +183,19 @@ byte g_bufcha[391]; byte g_lettres[7][24]; -byte palher[16]; - -uint16 t_mot[maxti + 1]; -int tay_tchar; -ind t_rec[maxtd + 1]; -//file sauv_t; -//untyped_file fibyte; -byte v_lieu[8][25]; +uint16 g_t_mot[maxti + 1]; +int g_tay_tchar; +ind g_t_rec[maxtd + 1]; +byte g_v_lieu[8][25]; int g_l[108]; -int tbi[256]; -chariot c1, c2, c3; -float addfix; -t_pcga palsav[91]; -Common::Point tabpal[91][17]; -t_pcga palcga[91]; -pattern tpt[15]; +int g_tbi[256]; +chariot g_c1, g_c2, g_c3; +float g_addfix; +Common::Point g_tabpal[91][17]; +t_pcga g_palcga[91]; +pattern g_tpt[15]; -byte adcfiec[(4088 * 16) + (311 * 0x80)]; +byte g_adcfiec[(4088 * 16) + (311 * 0x80)]; /*---------------------------------------------------------------------------*/ /*-------------------- PROCEDURES AND FONCTIONS -----------------------*/ @@ -236,8 +231,8 @@ Common::String copy(const Common::String &s, int idx, size_t size) { /*------------------------------ STUBS ------------------------------*/ /*---------------------------------------------------------------------------*/ -int port[0xfff]; -byte mem[65536 * 16]; +int g_port[0xfff]; +byte g_mem[65536 * 16]; void intr(int intNum, registres ®s) { warning("STUBBED: Call to DOS interrupt #%d", intNum); diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index cff75128de..5fd5f235f4 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -319,24 +319,19 @@ extern byte g_bufcha[391]; extern byte g_lettres[7][24]; -extern byte palher[16]; - -extern uint16 t_mot[maxti + 1]; -extern int tay_tchar; -extern ind t_rec[maxtd + 1]; -//file sauv_t; -//untyped_file fibyte; -extern byte v_lieu[8][25]; +extern uint16 g_t_mot[maxti + 1]; +extern int g_tay_tchar; +extern ind g_t_rec[maxtd + 1]; +extern byte g_v_lieu[8][25]; extern int g_l[108]; -extern int tbi[256]; -extern chariot c1, c2, c3; -extern float addfix; -extern t_pcga palsav[91]; -extern Common::Point tabpal[91][17]; -extern t_pcga palcga[91]; -extern pattern tpt[15]; +extern int g_tbi[256]; +extern chariot g_c1, g_c2, g_c3; +extern float g_addfix; +extern Common::Point g_tabpal[91][17]; +extern t_pcga g_palcga[91]; +extern pattern g_tpt[15]; -extern byte adcfiec[822 * 128]; +extern byte g_adcfiec[822 * 128]; /*---------------------------------------------------------------------------*/ /*------------------- PROCEDURES AND FONCTIONS ------------------------*/ @@ -351,8 +346,8 @@ void Val(const Common::String &s, int &V, int Code); /*---------------------------------------------------------------------------*/ // TODO: Replace the following with proper implementations, or refactor out the code using them -extern int port[0xfff]; -extern byte mem[65536 * 16]; +extern int g_port[0xfff]; +extern byte g_mem[65536 * 16]; #define hires {} -- cgit v1.2.3 From 8948be3b2ec000b6f1c0ed1e74480f3af6ade348 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 3 Mar 2012 18:18:32 +0100 Subject: MORTEVIELLE: Refactor KnowledgeCheck --- engines/mortevielle/actions.cpp | 2 +- engines/mortevielle/dialogs.cpp | 34 +++++++++++++++++----------------- engines/mortevielle/dialogs.h | 2 +- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 8441315bd7..fcecc9b77a 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -699,7 +699,7 @@ void fctPlace() { Alert::show(alertTxt, 1); g_tesok = false; - bool enterPassageFl = Ques::show(); + bool enterPassageFl = KnowledgeCheck::show(); hideMouse(); hirs(); dessine_rouleau(); diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index a586ccf972..42e726e66e 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -285,9 +285,9 @@ void Alert::setButtonText(Common::String c, int coldep, int nbcase, Common::Stri /** * Questions asked before entering the hidden passage */ -bool Ques::show() { - const int textIndexArr[11] = {0, 511, 516, 524, 531, 545, 552, 559, 563, 570, 576}; - const int correctAnswerArr[11] = {0, 4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }; +bool KnowledgeCheck::show() { + const int textIndexArr[10] = {511, 516, 524, 531, 545, 552, 559, 563, 570, 576}; + const int correctAnswerArr[10] = {4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }; int optionPosY; int maxLength; @@ -302,11 +302,10 @@ bool Ques::show() { int correctCount = 0; bool protectionCheck = false; - do { + for (indx = 0; indx < 10; ++indx) { hideMouse(); hirs(); showMouse(); - ++indx; int dialogHeight; if (g_res == 1) dialogHeight = 29; @@ -316,7 +315,7 @@ bool Ques::show() { Common::String tmpStr = deline(textIndexArr[indx]); afftex(tmpStr, 20, 15, 100, 2, 0); - if (indx != 10) { + if (indx != 9) { firstOption = textIndexArr[indx] + 1; lastOption = textIndexArr[indx + 1] - 1; } else { @@ -335,6 +334,7 @@ bool Ques::show() { choiceArray[prevChoice] = tmpStr; optionPosY += 8; } + for (int j = 1; j <= lastOption - firstOption + 1; ++j) { coor[j]._x1 = 45 * g_res; coor[j]._x2 = (maxLength * 3 + 55) * g_res; @@ -388,19 +388,19 @@ bool Ques::show() { ++correctCount; else { // Skip questions that may give hints on previous wrong answer - if (indx == 5) + if (indx == 4) ++indx; - - if ((indx == 7) || (indx == 8)) - indx = 10; - } - if (indx == 10) { - warning("Skipping protection check: testprot()"); - protectionCheck = true; - // tesok is set to true in testprot() - g_tesok = true; + else if ((indx == 6) || (indx == 7)) + indx = 9; } - } while (indx != 10); + } + + if (correctCount == 10) { + warning("Skipping protection check: testprot()"); + protectionCheck = true; + // tesok is set to true in testprot() + g_tesok = true; + } return (correctCount == 10) && protectionCheck; } diff --git a/engines/mortevielle/dialogs.h b/engines/mortevielle/dialogs.h index 661c544b13..c3f33e899c 100644 --- a/engines/mortevielle/dialogs.h +++ b/engines/mortevielle/dialogs.h @@ -44,7 +44,7 @@ public: static int show(const Common::String &s, int n); }; -class Ques { +class KnowledgeCheck { public: static bool show(); }; -- cgit v1.2.3 From 47a00c8257767ca2212e28975eb3ca0acc4ba03e Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 3 Mar 2012 18:27:08 +0100 Subject: MORTEVIELLE: Properly remove protection checks --- engines/mortevielle/actions.cpp | 2 -- engines/mortevielle/dialogs.cpp | 14 ++------------ engines/mortevielle/menu.cpp | 4 ---- engines/mortevielle/mor.cpp | 20 -------------------- engines/mortevielle/mor.h | 2 -- engines/mortevielle/mortevielle.cpp | 1 - engines/mortevielle/prog.cpp | 5 +---- engines/mortevielle/var_mor.cpp | 1 - engines/mortevielle/var_mor.h | 1 - 9 files changed, 3 insertions(+), 47 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index fcecc9b77a..67c9562fb0 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -698,7 +698,6 @@ void fctPlace() { Common::String alertTxt = deline(582); Alert::show(alertTxt, 1); - g_tesok = false; bool enterPassageFl = KnowledgeCheck::show(); hideMouse(); hirs(); @@ -732,7 +731,6 @@ void fctPlace() { } else { aniof(2, 1); g_crep = 166; - g_tesok = true; } return; } diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 42e726e66e..b50c6e9f37 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -298,11 +298,9 @@ bool KnowledgeCheck::show() { Common::String choiceArray[15]; int currChoice, prevChoice; - int indx = 0; int correctCount = 0; - bool protectionCheck = false; - for (indx = 0; indx < 10; ++indx) { + for (int indx = 0; indx < 10; ++indx) { hideMouse(); hirs(); showMouse(); @@ -358,7 +356,6 @@ bool KnowledgeCheck::show() { warning("Expected answer: %d", correctAnswerArr[indx]); do { g_vm->setMouseClick(false); - g_tesok = false; bool flag; moveMouse(flag, key); CHECK_QUIT0; @@ -395,14 +392,7 @@ bool KnowledgeCheck::show() { } } - if (correctCount == 10) { - warning("Skipping protection check: testprot()"); - protectionCheck = true; - // tesok is set to true in testprot() - g_tesok = true; - } - - return (correctCount == 10) && protectionCheck; + return (correctCount == 10); } /*------------------------------------------------------------------------*/ diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 7de738dc28..3abe06aa11 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -48,10 +48,6 @@ void Menu::menut(int no, Common::String name) { byte l = lo(no); Common::String s = name; - if (!g_tesok) - g_vm->quitGame(); - - while (s.size() < 20) s += ' '; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index ddfa188d45..d27c1357f5 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -301,10 +301,6 @@ void conv(int x, int &y) { } /* NIVEAU 12 */ -void okpas() { - g_tesok = true; -} - void modobj(int m) { Common::String strp = Common::String(' '); @@ -315,22 +311,6 @@ void modobj(int m) { g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[8]); } -void modobj2(int m, bool t1, bool t2) { - Common::String strp = Common::String(' '); - - if (t1 || t2) - okpas(); - else - g_tesok = false;; - - if (m != 500) - strp = deline(m - 501 + kInventoryStringIndex); - - g_vm->_menu.menut(g_vm->_menu._inventoryMenu[8], strp); - g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[8]); -} - - void repon(int f, int m) { Common::String str_; Common::String str1; diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 0351bd0b7c..afb9963fa7 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -58,9 +58,7 @@ extern int hazard(int min, int max); extern void calch(int &j, int &h, int &m); extern void conv(int x, int &y); /* NIVEAU 12 */ -extern void okpas(); extern void modobj(int m); -extern void modobj2(int m, bool t1, bool t2); extern void repon(int f, int m); extern void t5(int cx); extern void affper(int per); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 52bb1fe90e..2347fa0a4a 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -145,7 +145,6 @@ Common::ErrorCode MortevielleEngine::initialise() { g_currGraphicalDevice = MODE_EGA; g_newGraphicalDevice = g_currGraphicalDevice; g_zuul = false; - g_tesok = false; charpal(); charge_cfiph(); charge_cfiec(); diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 0731418023..5ceb0d447e 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -83,7 +83,6 @@ void MortevielleEngine::gameLoaded() { test[1] = false; g[0] = '\040'; g_col = false; - g_tesok = true; test[2] = false; g[7] = g[0]; g[2] = 'A'; @@ -136,9 +135,7 @@ void MortevielleEngine::gameLoaded() { tmlieu(g_s._mlieu); modinv(); if (g_s._derobj != 0) - modobj2(g_s._derobj + 400, test[1], test[2]); - else - g_tesok = test[1] || test[2]; + modobj(g_s._derobj + 400); showMouse(); } diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 7b27e243a9..98d629a6e6 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -103,7 +103,6 @@ bool g_blo, g_syn, g_fouil, g_zuul, - g_tesok, g_obpart, g_okdes, g_arret, diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 5fd5f235f4..f1a332fad3 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -240,7 +240,6 @@ extern bool g_blo, g_syn, g_fouil, g_zuul, - g_tesok, g_obpart, g_okdes, g_anyone, -- cgit v1.2.3 From e92369be21638bf2daa94aa8c8b52faf5a3afe00 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 4 Mar 2012 10:17:27 +0100 Subject: MORTEVIELLE: Rename some variables and functions related to 'Search' action --- engines/mortevielle/actions.cpp | 60 ++++++++++++++++++------------------- engines/mortevielle/dialogs.cpp | 10 +++---- engines/mortevielle/mor.cpp | 22 +++++++------- engines/mortevielle/mor2.cpp | 44 +++++++++++++++++---------- engines/mortevielle/mor2.h | 6 ++-- engines/mortevielle/mortevielle.cpp | 4 +-- engines/mortevielle/outtext.cpp | 28 ++++++++--------- engines/mortevielle/outtext.h | 2 +- engines/mortevielle/prog.cpp | 26 +++++----------- engines/mortevielle/saveload.cpp | 2 +- engines/mortevielle/var_mor.cpp | 2 +- engines/mortevielle/var_mor.h | 4 +-- 12 files changed, 106 insertions(+), 104 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 67c9562fb0..1edf1cd9c7 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -207,7 +207,7 @@ void fctTake() { g_s._ivier = 0; if (g_s._mlieu == 24) g_s._ipuit = 0; - mfouen(); + unsetSearchMenu(); g_obpart = false; affrep(); } else { @@ -377,10 +377,10 @@ void fctRead() { * @remarks Originally called 'tslire' */ void fctSelfRead() { - if (g_s._derobj == 0) + if (g_s._selectedObjectId == 0) g_crep = 186; else - st4(g_s._derobj); + st4(g_s._selectedObjectId); } /** @@ -466,8 +466,8 @@ void fctLook() { * @remarks Originally called 'tsregarder' */ void fctSelftLook() { - if (g_s._derobj != 0) - treg(g_s._derobj); + if (g_s._selectedObjectId != 0) + treg(g_s._selectedObjectId); else g_crep = 186; } @@ -515,8 +515,8 @@ void fctSearch() { if (g_mchai != 0) { g_cs = 0; g_is = 0; - g_fouil = true; - mfoudi(); + g_heroSearching = true; + setSearchMenu(); tsuiv(); } else g_crep = 997; @@ -570,8 +570,8 @@ void fctSearch() { * @remarks Originally called 'tsfouiller' */ void fctSelfSearch() { - if (g_s._derobj != 0) - st7(g_s._derobj); + if (g_s._selectedObjectId != 0) + st7(g_s._selectedObjectId); else g_crep = 186; } @@ -643,7 +643,7 @@ void fctOpen() { * @remarks Originally called 'tmettre' */ void fctPlace() { - if (g_s._derobj == 0) { + if (g_s._selectedObjectId == 0) { g_crep = 186; return; } @@ -666,15 +666,15 @@ void fctPlace() { if (g_s._iboul != 0) { g_crep = 188; } else { - g_s._iboul = g_s._derobj; - if (g_s._derobj == 141) + g_s._iboul = g_s._selectedObjectId; + if (g_s._selectedObjectId == 141) aniof(1, 7); } } else if (g_s._ibag != 0) { g_crep = 188; } else { - g_s._ibag = g_s._derobj; - if (g_s._derobj == 159) + g_s._ibag = g_s._selectedObjectId; + if (g_s._selectedObjectId == 159) aniof(1, 6); } } @@ -683,8 +683,8 @@ void fctPlace() { if (g_s._icave != 0) { g_crep = 188; } else { - g_s._icave = g_s._derobj; - if (g_s._derobj == 151) { + g_s._icave = g_s._selectedObjectId; + if (g_s._selectedObjectId == 151) { // Open hidden passage aniof(1, 2); aniof(1, 1); @@ -739,7 +739,7 @@ void fctPlace() { if (g_caff == 16) { if (g_s._icryp == 0) - g_s._icryp = g_s._derobj; + g_s._icryp = g_s._selectedObjectId; else g_crep = 188; } @@ -747,7 +747,7 @@ void fctPlace() { if (g_caff == 17) { if (g_s._ivier != 0) { g_crep = 188; - } else if (g_s._derobj == 143) { + } else if (g_s._selectedObjectId == 143) { g_s._ivier = 143; aniof(1, 1); } else { @@ -759,8 +759,8 @@ void fctPlace() { if (g_caff == 24) { if (g_s._ipuit != 0) { g_crep = 188; - } else if ((g_s._derobj == 140) || (g_s._derobj == 120)) { - g_s._ipuit = g_s._derobj; + } else if ((g_s._selectedObjectId == 140) || (g_s._selectedObjectId == 120)) { + g_s._ipuit = g_s._selectedObjectId; aniof(1, 1); } else { g_crep = 185; @@ -836,7 +836,7 @@ void fctSelfHide() { * @remarks Originally called 'tattacher' */ void fctAttach() { - if (g_s._derobj == 0) + if (g_s._selectedObjectId == 0) g_crep = 186; else { if (!g_syn) @@ -847,8 +847,8 @@ void fctAttach() { g_crep = 997; if ((g_num != 0) && (g_s._mlieu == 24)) { g_crep = 999; - if ((g_s._derobj == 120) || (g_s._derobj == 140)) { - g_s._ipuit = g_s._derobj; + if ((g_s._selectedObjectId == 120) || (g_s._selectedObjectId == 140)) { + g_s._ipuit = g_s._selectedObjectId; aniof(1, 1); } else g_crep = 185; @@ -953,7 +953,7 @@ void fctKnock() { void fctSelfPut() { if (!g_syn) ecr3(g_vm->getEngineString(S_POSE)); - if (g_s._derobj == 0) + if (g_s._selectedObjectId == 0) g_crep = 186; else { if (g_caff > 99) { @@ -993,7 +993,7 @@ void fctSelfPut() { if (g_s._iloic != 0) g_crep = 188; else - g_s._iloic = g_s._derobj; + g_s._iloic = g_s._selectedObjectId; } if (g_caff == 13) { @@ -1001,11 +1001,11 @@ void fctSelfPut() { if (g_s._iboul != 0) g_crep = 188; else - g_s._iboul = g_s._derobj; + g_s._iboul = g_s._selectedObjectId; } else if (g_s._ibag != 0) { g_crep = 188; } else { - g_s._ibag = g_s._derobj; + g_s._ibag = g_s._selectedObjectId; } } @@ -1013,7 +1013,7 @@ void fctSelfPut() { if (g_s._icryp != 0) g_crep = 188; else - g_s._icryp = g_s._derobj; + g_s._icryp = g_s._selectedObjectId; } if (g_caff == 24) @@ -1133,7 +1133,7 @@ void fctEnter() { aldepl(); else if (g_ment == 0) g_crep = 997; - else if ((g_ment == 9) && (g_s._derobj != 136)) { + else if ((g_ment == 9) && (g_s._selectedObjectId != 136)) { g_crep = 189; g_s._teauto[8] = '*'; } else { @@ -1344,7 +1344,7 @@ void fctDiscuss() { Common::String lib[47]; bool f; - finfouil(); + endSearch(); if (g_col) suj = 128; else { diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index b50c6e9f37..d538774842 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -311,7 +311,7 @@ bool KnowledgeCheck::show() { dialogHeight = 23; g_vm->_screenSurface.fillRect(15, Common::Rect(0, 14, 630, dialogHeight)); Common::String tmpStr = deline(textIndexArr[indx]); - afftex(tmpStr, 20, 15, 100, 2, 0); + displayStr(tmpStr, 20, 15, 100, 2, 0); if (indx != 9) { firstOption = textIndexArr[indx] + 1; @@ -328,7 +328,7 @@ bool KnowledgeCheck::show() { tmpStr = deline(j); if ((int) tmpStr.size() > maxLength) maxLength = tmpStr.size(); - afftex(tmpStr, 100, optionPosY, 100, 1, 0); + displayStr(tmpStr, 100, optionPosY, 100, 1, 0); choiceArray[prevChoice] = tmpStr; optionPosY += 8; } @@ -366,16 +366,16 @@ bool KnowledgeCheck::show() { if (coor[currChoice]._enabled) { if ((prevChoice != 0) && (prevChoice != currChoice)) { tmpStr = choiceArray[prevChoice] + '$'; - afftex(tmpStr, 100, 27 + (prevChoice * 8), 100, 1, 0); + displayStr(tmpStr, 100, 27 + (prevChoice * 8), 100, 1, 0); } if (prevChoice != currChoice) { tmpStr = choiceArray[currChoice] + '$'; - afftex(tmpStr, 100, 27 + (currChoice * 8), 100, 1, 1); + displayStr(tmpStr, 100, 27 + (currChoice * 8), 100, 1, 1); prevChoice = currChoice; } } else if (prevChoice != 0) { tmpStr = choiceArray[prevChoice] + '$'; - afftex(tmpStr, 100, 27 + (prevChoice * 8), 100, 1, 0); + displayStr(tmpStr, 100, 27 + (prevChoice * 8), 100, 1, 0); prevChoice = 0; } } while (!((prevChoice != 0) && g_vm->getMouseClick())); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index d27c1357f5..2cb44c7ddf 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -140,7 +140,7 @@ void text1(int x, int y, int nb, int m) { Common::String tmpStr = deline(m); if ((y == 182) && ((int) tmpStr.size() * co > nb * 6)) y = 176; - afftex(tmpStr, x, y, nb, 20, g_color_txt); + displayStr(tmpStr, x, y, nb, 20, g_color_txt); } void initouv() { @@ -325,7 +325,7 @@ void repon(int f, int m) { g_f2_all = false; clsf2(); - afftex(tmpStr, 8, 176, 85, 3, 5); + displayStr(tmpStr, 8, 176, 85, 3, 5); } else { modif(m); if (f == 8) @@ -354,7 +354,7 @@ void repon(int f, int m) { i = 5; tmpStr = deline(m); - afftex(tmpStr, 80, 40, 60, 25, i); + displayStr(tmpStr, 80, 40, 60, 25, i); if (m == 180) g_s._pourc[6] = '*'; @@ -366,21 +366,21 @@ void repon(int f, int m) { ecrf7(); tmpStr = deline(m); - int xco, dx, caspe; + int xSmallStr, xLargeStr, dx; if (g_res == 1) { - xco = 252 - tmpStr.size() * 5; - caspe = 100; + xSmallStr = 252 - tmpStr.size() * 5; + xLargeStr = 100; dx = 80; } else { - xco = 252 - tmpStr.size() * 3; - caspe = 144; + xSmallStr = 252 - tmpStr.size() * 3; + xLargeStr = 144; dx = 50; } if (tmpStr.size() < 40) - afftex(tmpStr, xco, 86, dx, 3, 5); + displayStr(tmpStr, xSmallStr, 86, dx, 3, 5); else - afftex(tmpStr, caspe, 86, dx, 3, 5); + displayStr(tmpStr, xLargeStr, 86, dx, 3, 5); } } } @@ -1016,7 +1016,7 @@ void inzon() { copcha(); g_s._ipre = false; - g_s._derobj = 0; + g_s._selectedObjectId = 0; g_s._icave = 0; g_s._iboul = 0; g_s._ibag = 0; diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 19a9e855a8..0d6069b4d5 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -274,7 +274,11 @@ void affrep() { g_crep = g_s._mlieu; } -void mfouen() { +/** + * Engine function - Switch action menu from "Search" mode back to normal mode + * @remarks Originally called 'mfouen' + */ +void unsetSearchMenu() { tmlieu(g_s._mlieu); for (int cx = 1; cx <= 11; ++cx) g_vm->_menu.enableMenuItem(_actionMenu[cx]); @@ -290,7 +294,7 @@ void tperd() { g_ment = 0; g_iouv = 0; g_mchai = 0; - mfouen(); + unsetSearchMenu(); if (!g_blo) { int cx; t11(21, cx); @@ -361,7 +365,7 @@ void cherjer(int ob, bool &d) { for (cx = 1; cx <= 6; ++cx) d = (d || (ord(g_s._sjer[cx]) == ob)); - if (g_s._derobj == ob) + if (g_s._selectedObjectId == ob) d = true; } @@ -397,7 +401,7 @@ void sparl(float adr, float rep) { repint = abs((int)rep); hideMouse(); Common::String tmpStr = deline(repint + kDialogStringIndex); - afftex(tmpStr, 230, 4, 65, 24, 5); + displayStr(tmpStr, 230, 4, 65, 24, 5); f3f8::draw(); key = 0; @@ -410,15 +414,23 @@ void sparl(float adr, float rep) { showMouse(); } -void finfouil() { - g_fouil = false; +/** + * Engine function - End of Search: reset globals + * @remarks Originally called 'finfouill' + */ +void endSearch() { + g_heroSearching = false; g_obpart = false; g_cs = 0; g_is = 0; - mfouen(); + unsetSearchMenu(); } -void mfoudi() { +/** + * Engine function - Switch action menu to "Search" mode + * @remarks Originally called 'mfoudi' + */ +void setSearchMenu() { for (int cx = 1; cx <= 7; ++cx) g_vm->_menu.disableMenuItem(g_vm->_menu._moveMenu[cx]); @@ -447,7 +459,7 @@ void ajchai() { } while ((cx <= 9) && (g_tabdon[cy + cx] != 0)); if (g_tabdon[cy + cx] == 0) - g_tabdon[cy + cx] = g_s._derobj; + g_tabdon[cy + cx] = g_s._selectedObjectId; else g_crep = 192; } @@ -549,7 +561,7 @@ void quelquun() { if (g_imen) g_vm->_menu.eraseMenu(); - finfouil(); + endSearch(); g_crep = 997; L1: if (!g_cache) { @@ -618,7 +630,7 @@ void tsuiv() { g_s._conf += 2; } else { affrep(); - finfouil(); + endSearch(); if (cx > 9) g_crep = 131; } @@ -750,18 +762,18 @@ void treg(int ob) { } else { g_obpart = true; g_crep = g_caff + 400; - mfoudi(); + setSearchMenu(); } } void avpoing(int &ob) { g_crep = 999; - if (g_s._derobj != 0) - ajjer(g_s._derobj); + if (g_s._selectedObjectId != 0) + ajjer(g_s._selectedObjectId); if (g_crep != 139) { modobj(ob + 400); - g_s._derobj = ob; + g_s._selectedObjectId = ob; ob = 0; } } @@ -786,7 +798,7 @@ void t23coul(int &l) { } void maivid() { - g_s._derobj = 0; + g_s._selectedObjectId = 0; modobj(500); } diff --git a/engines/mortevielle/mor2.h b/engines/mortevielle/mor2.h index 64eed71865..910791303f 100644 --- a/engines/mortevielle/mor2.h +++ b/engines/mortevielle/mor2.h @@ -47,7 +47,7 @@ extern void tmlieu(int roomId); /* NIVEAU 7 */ extern void tlu(int af, int ob); extern void affrep(); -extern void mfouen(); +extern void unsetSearchMenu(); /* NIVEAU 6 */ extern void tperd(); extern void tsort(); @@ -56,8 +56,8 @@ extern void cherjer(int ob, bool &d); extern void st1sama(); extern void modinv(); extern void sparl(float adr, float rep); -extern void finfouil(); -extern void mfoudi(); +extern void endSearch(); +extern void setSearchMenu(); extern void mennor(); extern void premtet(); /* NIVEAU 5 */ diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 2347fa0a4a..51f0d95c8e 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -613,14 +613,14 @@ void MortevielleEngine::handleAction() { if ((g_msg[3] == MENU_ACTION) || (g_msg[3] == MENU_SELF)) g_mnumo = g_msg[4]; if (!g_anyone) { - if ((g_fouil) || (g_obpart)) { + if ((g_heroSearching) || (g_obpart)) { if (y_s < 12) return; if ((g_msg[4] == OPCODE_SOUND) || (g_msg[4] == OPCODE_LIFT)) { oo = true; if ((g_msg[4] == OPCODE_LIFT) || (g_obpart)) { - finfouil(); + endSearch(); g_caff = g_s._mlieu; g_crep = 998; } else diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 43a038649f..02c03b8668 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -163,16 +163,18 @@ static int l_motsuiv(int p, const char *ch, int &tab) { return tab * (p - c); } -void afftex(Common::String ch, int x, int y, int dx, int dy, int typ) { - bool the_end; +/** + * Engine function - Display Text + * @remarks Originally called 'afftex' + */ +void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ) { int tab; Common::String s; int i, j; // Safeguard: add $ just in case - ch += '$'; + inputStr += '$'; - /* debug(' .. Afftex');*/ g_vm->_screenSurface.putxy(x, y); if (g_res == 1) tab = 10; @@ -184,12 +186,11 @@ void afftex(Common::String ch, int x, int y, int dx, int dy, int typ) { int yc = y; int xf = x + dx; int yf = y + dy; -// int p = 1; int p = 0; - the_end = (ch[p] == '$'); + bool stringParsed = (inputStr[p] == '$'); s = ""; - while (!the_end) { - switch (ch[p]) { + while (!stringParsed) { + switch (inputStr[p]) { case '@': g_vm->_screenSurface.writeg(s, typ); s = ""; @@ -202,15 +203,14 @@ void afftex(Common::String ch, int x, int y, int dx, int dy, int typ) { s += ' '; xc += tab; ++p; - if (l_motsuiv(p, ch.c_str(), tab) + xc > xf) { + if (l_motsuiv(p, inputStr.c_str(), tab) + xc > xf) { g_vm->_screenSurface.writeg(s, typ); s = ""; xc = x; yc += 6; if (yc > yf) { - do { + while (!keypressed()) ; - } while (!keypressed()); i = y; do { j = x; @@ -227,15 +227,15 @@ void afftex(Common::String ch, int x, int y, int dx, int dy, int typ) { } break; case '$': - the_end = true; + stringParsed = true; g_vm->_screenSurface.writeg(s, typ); break; default: - s += ch[p]; + s += inputStr[p]; ++p; xc += tab; break; - } /* case */ + } } } diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index d2e5f6bd3b..55e0ec5aab 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -33,7 +33,7 @@ namespace Mortevielle { extern Common::String deline(int num); -extern void afftex(Common::String ch, int x, int y, int dx, int dy, int typ); +extern void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 5ceb0d447e..85a5f140bb 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -70,7 +70,6 @@ void changeGraphicalDevice(int newDevice) { */ void MortevielleEngine::gameLoaded() { int k; - bool test[3]; char g[8]; hideMouse(); @@ -79,11 +78,8 @@ void MortevielleEngine::gameLoaded() { _loseGame = true; g_anyone = false; g_okdes = true; - test[0] = false; - test[1] = false; g[0] = '\040'; g_col = false; - test[2] = false; g[7] = g[0]; g[2] = 'A'; g_cache = false; @@ -103,7 +99,7 @@ void MortevielleEngine::gameLoaded() { k = 0; g_ment = 0; g_syn = true; - g_fouil = true; + g_heroSearching = true; g_mchai = 0; g_inei = 0; initouv(); @@ -113,18 +109,12 @@ void MortevielleEngine::gameLoaded() { g_dobj = 0; affrep(); g_hintPctMessage = deline(580); - while ((test[k] == false) && (k < 2)) { - ++k; - // Original read in the boot sector here of each drive and did some calculations - - // presumably for copy protection. This has been replaced with hardcoded success - test[k] = true; + g_okdes = false; + _endGame = true; + _loseGame = false; + g_heroSearching = false; - g_okdes = false; - _endGame = true; - _loseGame = false; - g_fouil = false; - } person(); tinke(); drawClock(); @@ -134,8 +124,8 @@ void MortevielleEngine::gameLoaded() { _endGame = false; tmlieu(g_s._mlieu); modinv(); - if (g_s._derobj != 0) - modobj(g_s._derobj + 400); + if (g_s._selectedObjectId != 0) + modobj(g_s._selectedObjectId + 400); showMouse(); } @@ -240,7 +230,7 @@ void tsitu() { ((h > 0) && (h < 6) && (g_s._mlieu != 0))) ++g_s._conf; if (((g_s._mlieu < 16) || (g_s._mlieu > 19)) && (g_s._mlieu != 23) - && (g_s._mlieu != 0) && (g_s._derobj != 152) && (!g_vm->_loseGame)) { + && (g_s._mlieu != 0) && (g_s._selectedObjectId != 152) && (!g_vm->_loseGame)) { if ((g_s._conf > 99) && (h > 8) && (h < 16)) { g_crep = 1501; tperd(); diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index cbff7b7d3f..53a147c86c 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -59,7 +59,7 @@ void SavegameManager::sync_save(Common::Serializer &sz) { sz.syncAsSint16LE(g_s1._icave); sz.syncAsSint16LE(g_s1._ivier); sz.syncAsSint16LE(g_s1._ipuit); - sz.syncAsSint16LE(g_s1._derobj); + sz.syncAsSint16LE(g_s1._selectedObjectId); sz.syncAsSint16LE(g_s1._iloic); sz.syncAsSint16LE(g_s1._icryp); sz.syncAsByte(g_s1._ipre); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 98d629a6e6..e668a6d678 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -101,7 +101,7 @@ bool g_blo, g_iesc, g_col, g_syn, - g_fouil, + g_heroSearching, g_zuul, g_obpart, g_okdes, diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index f1a332fad3..a9652cee5d 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -158,7 +158,7 @@ struct sav_chaine { byte _teauto[43]; byte _sjer[31]; int _mlieu, _iboul, _ibag, _icave, _ivier, _ipuit; - int _derobj, _iloic, _icryp; + int _selectedObjectId, _iloic, _icryp; bool _ipre; byte _heure; }; @@ -238,7 +238,7 @@ extern bool g_blo, g_iesc, g_col, g_syn, - g_fouil, + g_heroSearching, g_zuul, g_obpart, g_okdes, -- cgit v1.2.3 From 27a5ce90e3e61360e05a9f298f1be4da7b5c9859 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 4 Mar 2012 22:21:03 +1100 Subject: MORTEVIELLE: Replaced mort.dat with latest generated dat file --- dists/engine-data/mort.dat | Bin 1799 -> 51315 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dists/engine-data/mort.dat b/dists/engine-data/mort.dat index b2caafee96..2f31c0a7d9 100644 Binary files a/dists/engine-data/mort.dat and b/dists/engine-data/mort.dat differ -- cgit v1.2.3 From 0d814bba1f3f3755185dd40f85c46665f5d4f320 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 4 Mar 2012 20:50:39 +0100 Subject: MORTEVIELLE: Start using place names (as enums) instead of magic values --- engines/mortevielle/actions.cpp | 200 ++++++++++++++++++++-------------------- engines/mortevielle/mor.cpp | 8 +- engines/mortevielle/mor2.cpp | 18 ++-- engines/mortevielle/prog.cpp | 2 +- engines/mortevielle/taffich.cpp | 2 +- engines/mortevielle/var_mor.h | 26 ++++-- 6 files changed, 132 insertions(+), 124 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 1edf1cd9c7..1520edef14 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -50,12 +50,12 @@ void fctMove() { int cx; if ((g_s._mlieu == 26) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { - g_s._mlieu = 15; + g_s._mlieu = LANDING; g_caff = g_s._mlieu; afdes(0); repon(2, g_s._mlieu); } - if ((g_s._mlieu == 15) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { + if ((g_s._mlieu == LANDING) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { if (!g_syn) ecr3(g_vm->getEngineString(S_GO_TO)); tfleche(); @@ -67,10 +67,10 @@ void fctMove() { if (g_num == 0) return; if (g_num == 1) { - g_s._mlieu = 0; + g_s._mlieu = OWN_ROOM; tmlieu(0); } else if (g_num == 7) { - g_s._mlieu = 13; + g_s._mlieu = ATTIC; tmlieu(13); } else if (g_num != 6) g_s._mlieu = 26; @@ -90,7 +90,7 @@ void fctMove() { ++cx; } while (g_vm->_menu._moveMenu[cx] != g_msg[4]); - if (g_s._mlieu == 19) { + if (g_s._mlieu == MOUNTAIN) { if (cx == 1) t1deva(); if (cx == 2) @@ -106,43 +106,43 @@ void fctMove() { goto L2; } - if ((g_s._mlieu == 11) && (cx == 1)) + if ((g_s._mlieu == BUREAU) && (cx == 1)) cx = 6; - if (g_s._mlieu == 12) { + if (g_s._mlieu == KITCHEN) { if (cx == 2) cx = 6; if (cx == 5) cx = 16; } - if ((g_s._mlieu == 14) && (cx == 3)) + if ((g_s._mlieu == CELLAR) && (cx == 3)) cx = 6; - if (((g_s._mlieu == 15) || (g_s._mlieu == 26)) && (cx == 4)) + if (((g_s._mlieu == LANDING) || (g_s._mlieu == 26)) && (cx == 4)) cx = 6; - if ((g_s._mlieu > 19) && (g_s._mlieu != 26)) + if ((g_s._mlieu > MOUNTAIN) && (g_s._mlieu != 26)) cx += 10; - if ((g_s._mlieu == 20) && (cx == 13)) + if ((g_s._mlieu == CHAPEL) && (cx == 13)) cx = 16; - if (g_s._mlieu == 21) { + if (g_s._mlieu == MANOR_FRONT) { if (cx == 12) cx = 16; else if (cx > 13) cx = 15; } - if ((g_s._mlieu == 22) && (cx > 14)) + if ((g_s._mlieu == MANOR_BACK) && (cx > 14)) cx = 15; - if ((g_s._mlieu == 24) && (cx != 17)) + if ((g_s._mlieu == WELL) && (cx != 17)) if (cx > 13) cx = 15; if (cx == 1) - g_s._mlieu = 11; + g_s._mlieu = BUREAU; else if (cx == 2) - g_s._mlieu = 12; + g_s._mlieu = KITCHEN; else if (cx == 3) - g_s._mlieu = 14; + g_s._mlieu = CELLAR; else if (cx == 4) - g_s._mlieu = 15; + g_s._mlieu = LANDING; else if (cx == 5) cx = 12; if (cx == 6) @@ -152,9 +152,9 @@ void fctMove() { else if (cx == 12) t1deva(); else if (cx == 13) - g_s._mlieu = 20; + g_s._mlieu = CHAPEL; else if (cx == 14) - g_s._mlieu = 24; + g_s._mlieu = WELL; else if (cx == 15) t1neig(); else if (cx == 16) @@ -191,21 +191,21 @@ void fctTake() { if (g_ipers > 0) g_s._conf += 3; if (g_obpart) { - if (g_s._mlieu == 2) + if (g_s._mlieu == PURPLE_ROOM) g_s._iloic = 0; - if (g_s._mlieu == 13) { + if (g_s._mlieu == ATTIC) { if (g_s._iboul == g_caff) g_s._iboul = 0; if (g_s._ibag == g_caff) g_s._ibag = 0; } - if (g_s._mlieu == 14) + if (g_s._mlieu == CELLAR) g_s._icave = 0; - if (g_s._mlieu == 16) + if (g_s._mlieu == CRYPT) g_s._icryp = 0; - if (g_s._mlieu == 17) + if (g_s._mlieu == SECRET_PASSAGE) g_s._ivier = 0; - if (g_s._mlieu == 24) + if (g_s._mlieu == WELL) g_s._ipuit = 0; unsetSearchMenu(); g_obpart = false; @@ -235,39 +235,39 @@ void fctTake() { } } tcoord(5); - if ((g_num == 0) || ((g_num == 1) && (g_s._mlieu == 16))) { + if ((g_num == 0) || ((g_num == 1) && (g_s._mlieu == CRYPT))) { tcoord(8); if (g_num != 0) { if (g_ipers > 0) g_s._conf += 3; g_crep = 997; - if ((g_s._mlieu == 2) && (g_s._iloic != 0)) + if ((g_s._mlieu == PURPLE_ROOM) && (g_s._iloic != 0)) avpoing(g_s._iloic); - if ((g_s._mlieu == 13) && (g_num == 1) && (g_s._iboul != 0)) { + if ((g_s._mlieu == ATTIC) && (g_num == 1) && (g_s._iboul != 0)) { avpoing(g_s._iboul); if ((g_crep != 997) && (g_crep != 139)) aniof(2, 7); } - if ((g_s._mlieu == 13) && (g_num == 2) && (g_s._ibag != 0)) { + if ((g_s._mlieu == ATTIC) && (g_num == 2) && (g_s._ibag != 0)) { avpoing(g_s._ibag); if ((g_crep != 997) && (g_crep != 139)) aniof(2, 6); } - if ((g_s._mlieu == 14) && (g_s._icave != 0)) { + if ((g_s._mlieu == CELLAR) && (g_s._icave != 0)) { avpoing(g_s._icave); if ((g_crep != 997) && (g_crep != 139)) aniof(2, 2); } - if ((g_s._mlieu == 16) && (g_s._icryp != 0)) + if ((g_s._mlieu == CRYPT) && (g_s._icryp != 0)) avpoing(g_s._icryp); - if ((g_s._mlieu == 17) && (g_s._ivier != 0)) { + if ((g_s._mlieu == SECRET_PASSAGE) && (g_s._ivier != 0)) { avpoing(g_s._ivier); if ((g_crep != 997) && (g_crep != 139)) { g_crep = 182; aniof(2, 1); } } - if ((g_s._mlieu == 24) && (g_s._ipuit != 0)) { + if ((g_s._mlieu == WELL) && (g_s._ipuit != 0)) { avpoing(g_s._ipuit); if ((g_crep != 997) && (g_crep != 139)) aniof(2, 1); @@ -276,13 +276,13 @@ void fctTake() { g_crep = 999; } } else { - if ( ((g_s._mlieu == 0) && (g_num == 3)) || ((g_s._mlieu == 1) && (g_num == 4)) - || ((g_s._mlieu == 2) && (g_num == 1)) || ((g_s._mlieu == 4) && (g_num == 3)) - || ((g_s._mlieu == 5) && (g_num == 6)) || ((g_s._mlieu == 6) && (g_num == 2)) - || ((g_s._mlieu == 7) && (g_num == 6)) || ((g_s._mlieu == 8) && (g_num == 4)) - || ((g_s._mlieu == 9) && (g_num == 4)) || ((g_s._mlieu == 10) && (g_num > 2)) - || ((g_s._mlieu == 11) && (g_num == 7)) || ((g_s._mlieu == 12) && (g_num == 6)) - || ((g_s._mlieu == 13) && (g_num > 4)) || ((g_s._mlieu > 13) && (g_s._mlieu != 23)) ) + if ( ((g_s._mlieu == OWN_ROOM) && (g_num == 3)) || ((g_s._mlieu == GREEN_ROOM) && (g_num == 4)) + || ((g_s._mlieu == PURPLE_ROOM) && (g_num == 1)) || ((g_s._mlieu == DARKBLUE_ROOM) && (g_num == 3)) + || ((g_s._mlieu == BLUE_ROOM) && (g_num == 6)) || ((g_s._mlieu == RED_ROOM) && (g_num == 2)) + || ((g_s._mlieu == BATHROOM) && (g_num == 6)) || ((g_s._mlieu == GREEN_ROOM2) && (g_num == 4)) + || ((g_s._mlieu == 9) && (g_num == 4)) || ((g_s._mlieu == DINING_ROOM) && (g_num > 2)) + || ((g_s._mlieu == BUREAU) && (g_num == 7)) || ((g_s._mlieu == KITCHEN) && (g_num == 6)) + || ((g_s._mlieu == ATTIC) && (g_num > 4)) || ((g_s._mlieu > ATTIC) && (g_s._mlieu != 23)) ) g_crep = 997; else if (g_s._mlieu == 23) { g_crep = 1504; @@ -336,7 +336,7 @@ void fctLift() { if (g_ipers > 0) ++g_s._conf; g_crep = 997; - if ((g_s._mlieu == 2) && (g_s._iloic != 0)) + if ((g_s._mlieu == PURPLE_ROOM) && (g_s._iloic != 0)) treg(g_s._iloic); } return; @@ -344,9 +344,9 @@ void fctLift() { if (g_ipers > 0) ++g_s._conf; cx = g_s._mlieu; - if (g_s._mlieu == 16) + if (g_s._mlieu == CRYPT) cx = 14; - else if (g_s._mlieu == 19) + else if (g_s._mlieu == MOUNTAIN) cx = 15; g_crep = g_tabdon[asoul + (cx << 3) + (g_num - 1)]; if (g_crep == 255) @@ -404,7 +404,7 @@ void fctLook() { tcoord(8); g_crep = 131; if (g_num != 0) { - if (g_s._mlieu == 13) { + if (g_s._mlieu == ATTIC) { if (g_num == 1) { g_crep = 164; if (g_s._ibag != 0) @@ -417,17 +417,17 @@ void fctLook() { treg(g_s._ibag); } } - if (g_s._mlieu == 14) { + if (g_s._mlieu == CELLAR) { g_crep = 164; if (g_s._icave != 0) treg(g_s._icave); } - if (g_s._mlieu == 17) { + if (g_s._mlieu == SECRET_PASSAGE) { g_crep = 174; if (g_s._ivier != 0) treg(g_s._ivier); } - if (g_s._mlieu == 24) { + if (g_s._mlieu == WELL) { g_crep = 131; if (g_s._ipuit != 0) treg(g_s._ipuit); @@ -436,28 +436,28 @@ void fctLook() { return; } cx = g_s._mlieu; - if (g_s._mlieu == 20) + if (g_s._mlieu == CHAPEL) cx = 17; - if ((g_s._mlieu > 21) && (g_s._mlieu < 25)) + if ((g_s._mlieu > MANOR_FRONT) && (g_s._mlieu < DOOR)) cx -= 4; if (g_s._mlieu == 26) cx = 21; g_crep = g_tabdon[arega + (cx * 7) + g_num - 1]; - if ((g_s._mlieu == 13) && (g_num == 8)) + if ((g_s._mlieu == ATTIC) && (g_num == 8)) g_crep = 126; - if (g_s._mlieu == 19) + if (g_s._mlieu == MOUNTAIN) g_crep = 103; if (g_crep == 255) g_crep = 131; - if ((g_s._mlieu == 1) && (g_num == 1)) + if ((g_s._mlieu == GREEN_ROOM) && (g_num == 1)) treg(144); - if ((g_s._mlieu == 5) && (g_num == 3)) + if ((g_s._mlieu == BLUE_ROOM) && (g_num == 3)) treg(147); - if ((g_s._mlieu == 8) && (g_num == 3)) + if ((g_s._mlieu == GREEN_ROOM2) && (g_num == 3)) treg(149); if ((g_s._mlieu == 9) && (g_num == 2)) treg(30); - if ((g_s._mlieu == 10) && (g_num == 3)) + if ((g_s._mlieu == DINING_ROOM) && (g_num == 3)) treg(31); } @@ -527,13 +527,13 @@ void fctSearch() { if (g_num != 0) { if (g_ipers > 0) g_s._conf += 3; - if ((g_s._mlieu != 24) && (g_s._mlieu != 17) && (g_s._mlieu != 13)) { - if (g_s._mlieu == 2) { + if ((g_s._mlieu != WELL) && (g_s._mlieu != SECRET_PASSAGE) && (g_s._mlieu != ATTIC)) { + if (g_s._mlieu == PURPLE_ROOM) { g_crep = 123; if (g_s._iloic != 0) treg(g_s._iloic); } - if (g_s._mlieu == 16) { + if (g_s._mlieu == CRYPT) { g_crep = 123; if (g_s._icryp != 0) treg(g_s._icryp); @@ -545,22 +545,22 @@ void fctSearch() { if (g_ipers > 0) g_s._conf += 3; g_crep = 997; - if (g_s._mlieu < 14) + if (g_s._mlieu < CELLAR) g_crep = r[g_s._mlieu]; - if ((g_s._mlieu == 3) && (g_num == 2)) + if ((g_s._mlieu == TOILETS) && (g_num == 2)) g_crep = 162; - if (g_s._mlieu == 12) { + if (g_s._mlieu == KITCHEN) { if ((g_num == 3) || (g_num == 4)) g_crep = 162; else if (g_num == 5) g_crep = 159; } - if (g_s._mlieu == 19) + if (g_s._mlieu == MOUNTAIN) g_crep = 104; - else if (g_s._mlieu == 16) + else if (g_s._mlieu == CRYPT) g_crep = 155; } } @@ -612,15 +612,15 @@ void fctOpen() { ++cx; } while (!((cx > 6) || (ord(g_touv[cx]) == 0) || (ord(g_touv[cx]) == g_num))); if (ord(g_touv[cx]) != g_num) { - if (!( ((g_num == 3) && ((g_s._mlieu == 0) || (g_s._mlieu == 9) || (g_s._mlieu == 5) || (g_s._mlieu == 7))) - || ((g_num == 4) && ((g_s._mlieu == 1) || (g_s._mlieu == 2) || (g_s._mlieu == 6))) - || ((g_s._mlieu == 4) && (g_num == 5)) - || ((g_num == 6) && ((g_s._mlieu == 7) || (g_s._mlieu == 10) || (g_s._mlieu == 8) || (g_s._mlieu == 13))) - || ((g_s._mlieu == 8) && (g_num == 2)) - || ((g_s._mlieu == 12) && (g_num == 7))) ) { - if ( ((g_s._mlieu > 10) && (g_s._mlieu < 14)) - || ((g_s._mlieu > 6) && (g_s._mlieu < 10)) - || (g_s._mlieu == 0) || (g_s._mlieu == 2) || (g_s._mlieu == 5)) { + if (!( ((g_num == 3) && ((g_s._mlieu == OWN_ROOM) || (g_s._mlieu == 9) || (g_s._mlieu == BLUE_ROOM) || (g_s._mlieu == BATHROOM))) + || ((g_num == 4) && ((g_s._mlieu == GREEN_ROOM) || (g_s._mlieu == PURPLE_ROOM) || (g_s._mlieu == RED_ROOM))) + || ((g_s._mlieu == DARKBLUE_ROOM) && (g_num == 5)) + || ((g_num == 6) && ((g_s._mlieu == BATHROOM) || (g_s._mlieu == DINING_ROOM) || (g_s._mlieu == GREEN_ROOM2) || (g_s._mlieu == ATTIC))) + || ((g_s._mlieu == GREEN_ROOM2) && (g_num == 2)) + || ((g_s._mlieu == KITCHEN) && (g_num == 7))) ) { + if ( ((g_s._mlieu > DINING_ROOM) && (g_s._mlieu < CELLAR)) + || ((g_s._mlieu > RED_ROOM) && (g_s._mlieu < DINING_ROOM)) + || (g_s._mlieu == OWN_ROOM) || (g_s._mlieu == PURPLE_ROOM) || (g_s._mlieu == BLUE_ROOM)) { if (hazard(1, 4) == 3) parole(7, 9, 1); } @@ -628,7 +628,7 @@ void fctOpen() { aniof(1, g_num); } cx = g_s._mlieu; - if (g_s._mlieu == 16) + if (g_s._mlieu == CRYPT) cx = 14; g_crep = g_tabdon[aouvr + (cx * 7) + g_num - 1]; if (g_crep == 254) @@ -714,7 +714,7 @@ void fctPlace() { g_vm->_menu.displayMenu(); if (enterPassageFl) { - g_s._mlieu = 17; + g_s._mlieu = SECRET_PASSAGE; tmlieu(17); } else { tmlieu(g_s._mlieu); @@ -789,7 +789,7 @@ void fctTurn() { tcoord(9); if (g_num != 0) { g_crep = 997; - if ((g_s._mlieu == 13) && (g_s._ibag == 159) && (g_s._iboul == 141)) { + if ((g_s._mlieu == ATTIC) && (g_s._ibag == 159) && (g_s._iboul == 141)) { repon(2, 167); parole(7, 9, 1); int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); @@ -798,13 +798,13 @@ void fctTurn() { else g_crep = 168; } - if ((g_s._mlieu == 17) && (g_s._ivier == 143)) { + if ((g_s._mlieu == SECRET_PASSAGE) && (g_s._ivier == 143)) { repon(2, 175); clsf3(); parole(6, -9, 1); int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); if (answer == 1) { - g_s._mlieu = 16; + g_s._mlieu = CRYPT; affrep(); } else g_crep = 176; @@ -845,7 +845,7 @@ void fctAttach() { if (!(g_anyone) && !(g_iesc)) { tcoord(8); g_crep = 997; - if ((g_num != 0) && (g_s._mlieu == 24)) { + if ((g_num != 0) && (g_s._mlieu == WELL)) { g_crep = 999; if ((g_s._selectedObjectId == 120) || (g_s._selectedObjectId == 140)) { g_s._ipuit = g_s._selectedObjectId; @@ -903,18 +903,20 @@ void fctClose() { * @remarks Originally called 'tfrapper' */ void fctKnock() { + warning("Knock - mlieu %d", g_s._mlieu); + if (!g_syn) ecr3(g_vm->getEngineString(S_HIT)); - if (g_s._mlieu == 15) { + if (g_s._mlieu == LANDING) { Alert::show(g_vm->getEngineString(S_BEFORE_USE_DEP_MENU), 1); return; } - if (g_s._mlieu < 25) { + if (g_s._mlieu < DOOR) { tfleche(); if (!(g_anyone) && !(g_iesc)) { - if ((g_s._mlieu < 19) && (g_s._mlieu != 15)) + if ((g_s._mlieu < MOUNTAIN) && (g_s._mlieu != LANDING)) g_crep = 133; else g_crep = 997; @@ -1083,11 +1085,11 @@ void fctListen() { * @remarks Originally called 'tmanger' */ void fctEat() { - if ((g_s._mlieu > 15) && (g_s._mlieu < 26)) { + if ((g_s._mlieu > LANDING) && (g_s._mlieu < 26)) { g_crep = 148; } else { tsort(); - g_s._mlieu = 10; + g_s._mlieu = DINING_ROOM; g_caff = 10; debloc(g_s._mlieu); tmlieu(g_s._mlieu); @@ -1124,12 +1126,10 @@ void fctEat() { * @remarks Originally called 'tentrer' */ void fctEnter() { -// int x; - - if ((g_s._mlieu == 21) || (g_s._mlieu == 22)) { + if ((g_s._mlieu == MANOR_FRONT) || (g_s._mlieu == MANOR_BACK)) { t1sama(); tmlieu(g_s._mlieu); - } else if (g_s._mlieu == 15) + } else if (g_s._mlieu == LANDING) aldepl(); else if (g_ment == 0) g_crep = 997; @@ -1150,7 +1150,7 @@ void fctEnter() { tip(z, g_x); ++g_s._conf; - g_s._mlieu = 15; + g_s._mlieu = LANDING; g_msg[3] = MENU_DISCUSS; g_msg[4] = g_vm->_menu._discussMenu[g_x]; g_syn = true; @@ -1187,13 +1187,13 @@ void fctEnter() { void fctSleep() { int z, j, h, m; - if ((g_s._mlieu > 15) && (g_s._mlieu < 26)) { + if ((g_s._mlieu > LANDING) && (g_s._mlieu < 26)) { g_crep = 148; return; } - if (g_s._mlieu != 0) { + if (g_s._mlieu != OWN_ROOM) { tsort(); - g_s._mlieu = 0; + g_s._mlieu = OWN_ROOM; affrep(); afdes(0); debloc(g_s._mlieu); @@ -1254,22 +1254,22 @@ void fctForce() { void fctLeave() { tsort(); g_crep = 0; - if ((g_s._mlieu == 19) || (g_s._mlieu == 21) || (g_s._mlieu == 22) || (g_s._mlieu == 24)) + if ((g_s._mlieu == MOUNTAIN) || (g_s._mlieu == MANOR_FRONT) || (g_s._mlieu == MANOR_BACK) || (g_s._mlieu == WELL)) g_crep = 997; else { int lx = 0; - if ((g_s._mlieu < 16) || (g_s._mlieu == 26)) + if ((g_s._mlieu < CRYPT) || (g_s._mlieu == 26)) lx = 10; - if ((g_s._mlieu == 10) || (g_s._mlieu == 20)) + if ((g_s._mlieu == DINING_ROOM) || (g_s._mlieu == CHAPEL)) lx = 21; - if ((g_s._mlieu < 10) || (g_s._mlieu == 13)) + if ((g_s._mlieu < DINING_ROOM) || (g_s._mlieu == ATTIC)) lx = 15; - if (g_s._mlieu == 16) { + if (g_s._mlieu == CRYPT) { lx = 17; g_crep = 176; } - if (g_s._mlieu == 17) + if (g_s._mlieu == SECRET_PASSAGE) t23coul(lx); if (g_s._mlieu == 23) lx = 24; @@ -1301,9 +1301,9 @@ void fctWait() { t11(g_s._mlieu, quel); if ((g_ipers != 0) && (g_mpers == 0)) { g_crep = 998; - if ((g_s._mlieu == 13) || (g_s._mlieu == 14)) + if ((g_s._mlieu == ATTIC) || (g_s._mlieu == CELLAR)) cavegre(); - if ((g_s._mlieu > 0) && (g_s._mlieu < 10)) + if ((g_s._mlieu > OWN_ROOM) && (g_s._mlieu < DINING_ROOM)) g_anyone = true; g_mpers = g_ipers; if (!g_anyone) diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 2cb44c7ddf..b951a81be5 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -1025,7 +1025,7 @@ void inzon() { g_s._iloic = 136; g_s._icryp = 141; g_s._conf = hazard(4, 10); - g_s._mlieu = 21; + g_s._mlieu = MANOR_FRONT; for (int cx = 2; cx <= 6; ++cx) g_s._sjer[cx] = chr(0); @@ -1320,7 +1320,7 @@ void musique(int so) { ++g_prebru; } else { bool i = false; - if ((g_s._mlieu == 19) || (g_s._mlieu == 21) || (g_s._mlieu == 22)) { + if ((g_s._mlieu == MOUNTAIN) || (g_s._mlieu == MANOR_FRONT) || (g_s._mlieu == MANOR_BACK)) { int haz = hazard(1, 3); if (haz == 2) { haz = hazard(2, 4); @@ -1328,7 +1328,7 @@ void musique(int so) { i = true; } } - if (g_s._mlieu == 20) { + if (g_s._mlieu == CHAPEL) { int haz = hazard(1, 2); if (haz == 1) { parole(8, 1, 1); @@ -1336,7 +1336,7 @@ void musique(int so) { } } - if (g_s._mlieu == 24) { + if (g_s._mlieu == WELL) { int haz = hazard(1, 2); if (haz == 2) { parole(12, 1, 1); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 0d6069b4d5..70cfc8850e 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -157,7 +157,7 @@ void tinke() { g_mpers = g_ipers; if ((g_mpers == 0) && (g_ipers > 0)) { - if ((g_s._mlieu == 13) || (g_s._mlieu == 14)) { + if ((g_s._mlieu == ATTIC) || (g_s._mlieu == CELLAR)) { cavegre(); } else if (g_ipers == 10) { g_ipers = 0; @@ -186,7 +186,7 @@ void tinke() { nouvp(g_li, cx); g_brt = false; g_hdb = 0; - if ((g_s._mlieu > 0) && (g_s._mlieu < 10)) + if ((g_s._mlieu > OWN_ROOM) && (g_s._mlieu < DINING_ROOM)) g_anyone = true; } } @@ -370,7 +370,7 @@ void cherjer(int ob, bool &d) { } void st1sama() { - g_s._mlieu = 10; + g_s._mlieu = DINING_ROOM; affrep(); } @@ -505,7 +505,7 @@ void t1sama() { //Entering manor dessine_rouleau(); drawClock(); showMouse(); - g_s._mlieu = 0; + g_s._mlieu = OWN_ROOM; affrep(); t5(10); if (!g_blo) @@ -519,7 +519,7 @@ void t1sama() { //Entering manor } void t1vier() { - g_s._mlieu = 17; + g_s._mlieu = SECRET_PASSAGE; affrep(); } @@ -530,19 +530,19 @@ void t1neig() { tperd(); } else { g_okdes = true; - g_s._mlieu = 19; + g_s._mlieu = MOUNTAIN; affrep(); } } void t1deva() { g_inei = 0; - g_s._mlieu = 21; + g_s._mlieu = MANOR_FRONT; affrep(); } void t1derr() { - g_s._mlieu = 22; + g_s._mlieu = MANOR_BACK; affrep(); } @@ -781,7 +781,7 @@ void avpoing(int &ob) { void rechai(int &ch) { int cx = g_s._mlieu; - if (g_s._mlieu == 16) + if (g_s._mlieu == CRYPT) cx = 14; ch = g_tabdon[achai + (cx * 7) + g_num - 1]; } diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 85a5f140bb..8479538879 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -229,7 +229,7 @@ void tsitu() { if ((((h == 12) || (h == 13) || (h == 19)) && (g_s._mlieu != 10)) || ((h > 0) && (h < 6) && (g_s._mlieu != 0))) ++g_s._conf; - if (((g_s._mlieu < 16) || (g_s._mlieu > 19)) && (g_s._mlieu != 23) + if (((g_s._mlieu < CRYPT) || (g_s._mlieu > MOUNTAIN)) && (g_s._mlieu != 23) && (g_s._mlieu != 0) && (g_s._selectedObjectId != 152) && (!g_vm->_loseGame)) { if ((g_s._conf > 99) && (h > 8) && (h < 16)) { g_crep = 1501; diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 6e9a66ce30..096a076001 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -249,7 +249,7 @@ void taffich() { charani(filename, lgt, handle); } showMouse(); - if ((a < 27) && ((g_maff < 27) || (g_s._mlieu == 15)) && (g_msg[4] != OPCODE_ENTER)) { + if ((a < 27) && ((g_maff < 27) || (g_s._mlieu == LANDING)) && (g_msg[4] != OPCODE_ENTER)) { if ((a == 13) || (a == 14)) person(); else if (!g_blo) diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index a9652cee5d..a1b22d4299 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -33,15 +33,6 @@ namespace Mortevielle { -/* Constantes, Types et Variables pour le - - M A N O I R DE M O R T E V I E L L E - - ( version Nov 1988 - + - musique & paroles Oct 88 ) - */ - /*---------------------------------------------------------------------------*/ /*------------------- MEMORY MAP ------------------------*/ /*---------------------------------------------------------------------------*/ @@ -152,6 +143,23 @@ extern const byte g_rang[16]; /*-------------------------------- TYPES --------------------------------*/ /*---------------------------------------------------------------------------*/ +/* +9 "A glance at the forbidden$", +18 "It's already open$", +23 "Strange horoscope$", +26 "A photograph$", +27 "The coat of arms$", +*/ + +enum places { + OWN_ROOM = 0, GREEN_ROOM = 1, PURPLE_ROOM = 2, TOILETS = 3, DARKBLUE_ROOM = 4, + BLUE_ROOM = 5, RED_ROOM = 6, BATHROOM = 7, GREEN_ROOM2 = 8, + DINING_ROOM = 10, BUREAU = 11, KITCHEN = 12, ATTIC = 13, CELLAR = 14, + LANDING = 15, CRYPT = 16, SECRET_PASSAGE = 17, MOUNTAIN = 19, + CHAPEL = 20, MANOR_FRONT = 21, MANOR_BACK = 22, WELL = 24, + DOOR = 25 +}; + struct sav_chaine { int _conf; byte _pourc[11]; -- cgit v1.2.3 From fd17d93919fd869d2ad35df86511df35aafe33ff Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 4 Mar 2012 22:02:26 +0100 Subject: MORTEVIELLE: rename variables and functions related to random number generation --- engines/mortevielle/actions.cpp | 31 ++++---- engines/mortevielle/mor.cpp | 154 +++++++++++++++++++--------------------- engines/mortevielle/mor.h | 7 +- engines/mortevielle/mor2.cpp | 14 ++-- engines/mortevielle/var_mor.cpp | 5 +- engines/mortevielle/var_mor.h | 2 +- 6 files changed, 101 insertions(+), 112 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 1520edef14..b988f441c4 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -621,7 +621,7 @@ void fctOpen() { if ( ((g_s._mlieu > DINING_ROOM) && (g_s._mlieu < CELLAR)) || ((g_s._mlieu > RED_ROOM) && (g_s._mlieu < DINING_ROOM)) || (g_s._mlieu == OWN_ROOM) || (g_s._mlieu == PURPLE_ROOM) || (g_s._mlieu == BLUE_ROOM)) { - if (hazard(1, 4) == 3) + if (getRandomNumber(1, 4) == 3) parole(7, 9, 1); } g_touv[cx] = chr(g_num); @@ -926,14 +926,14 @@ void fctKnock() { } if (g_s._mlieu == 26) { - int haz = (hazard(0, 8)) - 4; - parole(11, haz, 1); + int rand = (getRandomNumber(0, 8)) - 4; + parole(11, rand, 1); int p; - ecfren(p, haz, g_s._conf, g_ment); + ecfren(p, rand, g_s._conf, g_ment); int l = g_ment; if (l != 0) { if (p != -500) { - if (haz > p) + if (rand > p) g_crep = 190; else { becfren(l); @@ -1052,24 +1052,24 @@ void fctListen() { else { if (g_ipers != 0) ++g_s._conf; - int p, haz; - ecfren(p, haz, g_s._conf, g_ment); + int p, rand; + ecfren(p, rand, g_s._conf, g_ment); int l = g_ment; if (l != 0) { if (p != -500) { - if (haz > p) + if (rand > p) g_crep = 101; else { becfren(l); int j, h, m; calch(j, h, m); - haz = hazard(1, 100); + rand = getRandomNumber(1, 100); if ((h >= 0) && (h < 8)) { - if (haz > 30) + if (rand > 30) g_crep = 101; else g_crep = 178; - } else if (haz > 70) + } else if (rand > 70) g_crep = 101; else g_crep = 178; @@ -1144,7 +1144,7 @@ void fctEnter() { if ((g_ment == 3) || (g_ment == 7)) g_crep = 179; else { - g_x = (hazard(0, 10)) - 5; + g_x = (getRandomNumber(0, 10)) - 5; parole(7, g_x, 1); aniof(1, 1); @@ -1165,7 +1165,7 @@ void fctEnter() { g_ment = 0; } } else { - g_x = (hazard(0, 10)) - 5; + g_x = (getRandomNumber(0, 10)) - 5; parole(7, g_x, 1); aniof(1, 1); @@ -1339,7 +1339,7 @@ void fctSound() { */ void fctDiscuss() { bool te[47]; - int cy, cx, max, haz, suj, co, lig, icm, i, choi, x, y, c; + int cy, cx, max, suj, co, lig, icm, i, choi, x, y, c; char tou; Common::String lib[47]; bool f; @@ -1470,8 +1470,7 @@ void fctDiscuss() { max = 8; else max = 4; - haz = hazard(1, max); - if (haz == 2) + if (getRandomNumber(1, max) == 2) suj = 129; else { suj = 138; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index b951a81be5..52b71c7994 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -274,10 +274,6 @@ void paint_rect(int x, int y, int dx, int dy) { g_vm->_screenSurface.fillRect(co, Common::Rect(x, y, x + dx, y + dy)); } -int hazard(int min, int max) { - return get_random_number(min, max); -} - void calch(int &j, int &h, int &m) { int nh = readclock(); int th = g_jh + ((nh - g_mh) / g_t); @@ -469,17 +465,17 @@ void choix(int min, int max, int &per) { bool i; int cz; - int haz = hazard(min, max); - if (haz > 4) { - haz = 8 - haz; + int rand = getRandomNumber(min, max); + if (rand > 4) { + rand = 8 - rand; i = true; } else i = false; int cx = 0; per = 0; - while (cx < haz) { - int cy = hazard(1, 8); + while (cx < rand) { + int cy = getRandomNumber(1, 8); conv(cy, cz); if ((per & cz) != cz) { ++cx; @@ -592,9 +588,12 @@ void person() { g_ipers = 0; } -void chlm(int &per) { - per = hazard(1, 2); - if (per == 2) per = 128; +int chlm() { + int retval = getRandomNumber(1, 2); + if (retval == 2) + retval = 128; + + return retval; } /** @@ -750,7 +749,7 @@ void cpl20(int &p, int &h) { void quelq1(int l) { int per; - per = hazard(1, 2); + per = getRandomNumber(1, 2); if (l == 1) { if (per == 1) g_bh1 = true; @@ -791,7 +790,7 @@ void quelq6(int l) { void quelq10(int h, int &per) { if ((h >= 0) && (h < 8)) - chlm(per); + per = chlm(); else { int min = 0, max = 0; if ((h > 7) && (h < 10)) { @@ -814,7 +813,7 @@ void quelq10(int h, int &per) { void quelq11(int h, int &per) { if ((h >= 0) && (h < 8)) - chlm(per); + per = chlm(); else { int min = 0, max = 0; if (((h > 7) && (h < 10)) || ((h > 20) && (h < 24))) { @@ -833,7 +832,7 @@ void quelq11(int h, int &per) { } void quelq12(int &per) { - chlm(per); + per = chlm(); affper(per); } @@ -844,7 +843,7 @@ void quelq15(int &per) { per = 0; do { - cx = hazard(1, 8); + cx = getRandomNumber(1, 8); test = (((cx == 1) && (g_bh2 || g_bh9)) || ((cx == 2) && g_bh8) || ((cx == 3) && g_bh4) || @@ -861,7 +860,7 @@ void quelq15(int &per) { void quelq20(int h, int &per) { if (((h >= 0) && (h < 10)) || ((h > 18) && (h < 24))) - chlm(per); + per = chlm(); else { int min = 0, max = 0; if ((h > 9) && (h < 12)) { @@ -887,8 +886,7 @@ void frap() { if ((h >= 0) && (h < 8)) g_crep = 190; else { - int haz = hazard(1, 100); - if (haz > 70) + if (getRandomNumber(1, 100) > 70) g_crep = 190; else g_crep = 147; @@ -944,11 +942,11 @@ void tip(int ip, int &cx) { } -void ecfren(int &p, int &haz, int cf, int l) { +void ecfren(int &p, int &rand, int cf, int l) { if (l == 0) person(); p = -500; - haz = 0; + rand = 0; if (((l == 1) && (!g_bh1) && (!g_bf1)) || ((l == 4) && (!g_bh4) && (!g_bf4))) cpl1(p); if ((l == 2) && (!g_bh2) && (!g_bh9)) @@ -965,20 +963,20 @@ void ecfren(int &p, int &haz, int cf, int l) { p = -400; if (p != -500) { p = p + cf; - haz = hazard(1, 100); + rand = getRandomNumber(1, 100); } } void becfren(int l) { if ((l == 1) || (l == 4)) { - int haz = hazard(1, 2); + int rand = getRandomNumber(1, 2); if (l == 1) { - if (haz == 1) + if (rand == 1) g_bh1 = true; else g_bf1 = true; } else { // l == 4 - if (haz == 1) + if (rand == 1) g_bh4 = true; else g_bf4 = true; @@ -1007,9 +1005,9 @@ void init_nbrepm() { g_nbrepm[idx] = ipm[idx]; } -void phaz(int &haz, int &p, int cf) { +void phaz(int &rand, int &p, int cf) { p += cf; - haz = hazard(1, 100); + rand = getRandomNumber(1, 100); } void inzon() { @@ -1024,7 +1022,7 @@ void inzon() { g_s._ivier = 0; g_s._iloic = 136; g_s._icryp = 141; - g_s._conf = hazard(4, 10); + g_s._conf = getRandomNumber(4, 10); g_s._mlieu = MANOR_FRONT; for (int cx = 2; cx <= 6; ++cx) @@ -1067,11 +1065,11 @@ void dprog() { void pl1(int cf) { if (((g_li == 1) && (!g_bh1) && (!g_bf1)) || ((g_li == 4) && (!g_bh4) && (!g_bf4))) { - int p, haz; + int p, rand; cpl1(p); - phaz(haz, p, cf); + phaz(rand, p, cf); - if (haz > p) + if (rand > p) person(); else quelq1(g_li); @@ -1080,11 +1078,11 @@ void pl1(int cf) { void pl2(int cf) { if (!g_bh2) { - int p, haz; + int p, rand; cpl2(p); - phaz(haz, p, cf); + phaz(rand, p, cf); - if (haz > p) + if (rand > p) person(); else quelq2(); @@ -1093,11 +1091,11 @@ void pl2(int cf) { void pl5(int cf) { if (!g_bh5) { - int p, haz; + int p, rand; cpl5(p); - phaz(haz, p, cf); + phaz(rand, p, cf); - if (haz > p) + if (rand > p) person(); else quelq5(); @@ -1106,11 +1104,11 @@ void pl5(int cf) { void pl6(int cf) { if (((g_li == 6) && (!g_bh6)) || ((g_li == 8) && (!g_bh8))) { - int p, haz; + int p, rand; cpl6(p); - phaz(haz, p, cf); + phaz(rand, p, cf); - if (haz > p) + if (rand > p) person(); else quelq6(g_li); @@ -1120,10 +1118,10 @@ void pl6(int cf) { void pl9(int cf) { if (!g_bh9) { cf = -10; - int p, haz; - phaz(haz, p, cf); + int p, rand; + phaz(rand, p, cf); - if (haz > p) + if (rand > p) person(); else quelq2(); @@ -1131,79 +1129,79 @@ void pl9(int cf) { } void pl10(int cf) { - int p, h, haz; + int p, h, rand; cpl10(p, h); - phaz(haz, p, cf); + phaz(rand, p, cf); - if (haz > p) + if (rand > p) person(); else quelq10(h, p); } void pl11(int cf) { - int p, h, haz; + int p, h, rand; cpl11(p, h); - phaz(haz, p, cf); - if (haz > p) + phaz(rand, p, cf); + if (rand > p) person(); else quelq11(h, p); } void pl12(int cf) { - int p, haz; + int p, rand; cpl12(p); - phaz(haz, p, cf); - if (haz > p) + phaz(rand, p, cf); + if (rand > p) person(); else quelq12(p); } void pl13(int cf) { - int p, haz; + int p, rand; cpl13(p); - phaz(haz, p, cf); - if (haz > p) + phaz(rand, p, cf); + if (rand > p) person(); else quelq12(p); } void pl15(int cf) { - int p, haz; + int p, rand; cpl15(p); - phaz(haz, p, cf); - if (haz > p) + phaz(rand, p, cf); + if (rand > p) person(); else quelq15(p); } void pl20(int cf) { - int p, h, haz; + int p, h, rand; cpl20(p, h); - phaz(haz, p, cf); - if (haz > p) + phaz(rand, p, cf); + if (rand > p) person(); else quelq20(h, p); } void t11(int l11, int &a) { - int p, haz; + int p, rand; - ecfren(p, haz, g_s._conf, l11); + ecfren(p, rand, g_s._conf, l11); g_li = l11; if ((l11 > 0) && (l11 < 10)) { if (p != -500) { - if (haz > p) { + if (rand > p) { person(); a = 0; } else { @@ -1232,8 +1230,8 @@ void t11(int l11, int &a) { if (l11 == 20) cpl20(p, h); p += g_s._conf; - haz = hazard(1, 100); - if (haz > p) { + rand = getRandomNumber(1, 100); + if (rand > p) { person(); a = 0; } else { @@ -1260,8 +1258,8 @@ void cavegre() { clsf3(); ecrf2(); ecr3(g_vm->getEngineString(S_SOMEONE_ENTERS)); - int haz = (hazard(0, 4)) - 2; - parole(2, haz, 1); + int rand = (getRandomNumber(0, 4)) - 2; + parole(2, rand, 1); // The original was doing here a useless loop. // It has been removed @@ -1321,24 +1319,20 @@ void musique(int so) { } else { bool i = false; if ((g_s._mlieu == MOUNTAIN) || (g_s._mlieu == MANOR_FRONT) || (g_s._mlieu == MANOR_BACK)) { - int haz = hazard(1, 3); - if (haz == 2) { - haz = hazard(2, 4); - parole(9, haz, 1); + if (getRandomNumber(1, 3) == 2) { + parole(9, getRandomNumber(2, 4), 1); i = true; } } if (g_s._mlieu == CHAPEL) { - int haz = hazard(1, 2); - if (haz == 1) { + if (getRandomNumber(1, 2) == 1) { parole(8, 1, 1); i = true; } } if (g_s._mlieu == WELL) { - int haz = hazard(1, 2); - if (haz == 2) { + if (getRandomNumber(1, 2) == 2) { parole(12, 1, 1); i = true; } @@ -1348,10 +1342,8 @@ void musique(int so) { parole(13, 1, 1); i = true; } - if (! i) { - int haz = hazard(1, 17); - parole(haz, 1, 2); - } + if (!i) + parole(getRandomNumber(1, 17), 1, 2); } } diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index afb9963fa7..f649195f24 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -54,7 +54,6 @@ extern void ecrf7(); extern void clsf10(); extern void stop(); extern void paint_rect(int x, int y, int dx, int dy); -extern int hazard(int min, int max); extern void calch(int &j, int &h, int &m); extern void conv(int x, int &y); /* NIVEAU 12 */ @@ -69,7 +68,7 @@ extern void cpl3(int &p); extern void cpl5(int &p); extern void cpl6(int &p); extern void person(); -extern void chlm(int &per); +extern int chlm(); extern void drawClock(); /************* * NIVEAU 11 * @@ -93,11 +92,11 @@ extern void quelq20(int h, int &per); extern void frap(); extern void nouvp(int l, int &p); extern void tip(int ip, int &cx); -extern void ecfren(int &p, int &haz, int cf, int l); +extern void ecfren(int &p, int &rand, int cf, int l); extern void becfren(int l); /* NIVEAU 10 */ extern void init_nbrepm(); -extern void phaz(int &haz, int &p, int cf); +extern void phaz(int &rand, int &p, int cf); extern void inzon(); extern void dprog(); extern void pl1(int cf); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 70cfc8850e..05002a3a62 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -164,13 +164,12 @@ void tinke() { if (!g_brt) { g_brt = true; g_hdb = readclock(); - int haz = hazard(1, 5); - if (haz < 5) { + if (getRandomNumber(1, 5) < 5) { clsf3(); ecrf2(); ecr3(g_vm->getEngineString(S_HEAR_NOISE)); - haz = (hazard(0, 4)) - 2; - parole(1, haz, 1); + int rand = (getRandomNumber(0, 4)) - 2; + parole(1, rand, 1); clsf3(); } } @@ -590,15 +589,14 @@ L1: g_syn = true; g_col = true; } else { - int haz = hazard(1, 3); - if (haz == 2) { + if (getRandomNumber(1, 3) == 2) { g_cache = false; g_crep = 137; goto L1; } else { repon(2, 136); - haz = (hazard(0, 4)) - 2; - parole(3, haz, 1); + int rand = (getRandomNumber(0, 4)) - 2; + parole(3, rand, 1); clsf2(); person(); debloc(21); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index e668a6d678..9218cadb53 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -238,9 +238,10 @@ void intr(int intNum, registres ®s) { } /** - * Get a random number between two values + * Engine function - Get a random number between two values + * @remarks Originally called 'get_random_number' and 'hazard' */ -int get_random_number(int minval, int maxval) { +int getRandomNumber(int minval, int maxval) { return g_vm->_randomSource.getRandomNumber(maxval - minval) + minval; } diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index a1b22d4299..dd65f39c07 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -364,7 +364,7 @@ extern char get_ch(); extern void palette(int v1); extern void intr(int intNum, registres ®s); -extern int get_random_number(int minval, int maxval); +extern int getRandomNumber(int minval, int maxval); // (* external 'c:\mc\charecr.com'; *) extern void s_char(int Gd, int y, int dy); -- cgit v1.2.3 From 573925641204aac35361c1750af73658641edd8a Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 5 Mar 2012 00:00:48 +0100 Subject: MORTEVIELLE: rename several globals --- engines/mortevielle/actions.cpp | 420 ++++++++++++++++++------------------ engines/mortevielle/mor.cpp | 44 ++-- engines/mortevielle/mor.h | 1 - engines/mortevielle/mor2.cpp | 36 ++-- engines/mortevielle/mortevielle.cpp | 2 +- engines/mortevielle/prog.cpp | 10 +- engines/mortevielle/saveload.cpp | 20 +- engines/mortevielle/taffich.cpp | 5 +- engines/mortevielle/var_mor.h | 4 +- 9 files changed, 267 insertions(+), 275 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index b988f441c4..6b9388ab33 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -49,13 +49,13 @@ namespace Mortevielle { void fctMove() { int cx; - if ((g_s._mlieu == 26) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { - g_s._mlieu = LANDING; - g_caff = g_s._mlieu; + if ((g_s._currPlace == 26) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { + g_s._currPlace = LANDING; + g_caff = g_s._currPlace; afdes(0); - repon(2, g_s._mlieu); + repon(2, g_s._currPlace); } - if ((g_s._mlieu == LANDING) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { + if ((g_s._currPlace == LANDING) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { if (!g_syn) ecr3(g_vm->getEngineString(S_GO_TO)); tfleche(); @@ -67,13 +67,13 @@ void fctMove() { if (g_num == 0) return; if (g_num == 1) { - g_s._mlieu = OWN_ROOM; + g_s._currPlace = OWN_ROOM; tmlieu(0); } else if (g_num == 7) { - g_s._mlieu = ATTIC; + g_s._currPlace = ATTIC; tmlieu(13); } else if (g_num != 6) - g_s._mlieu = 26; + g_s._currPlace = 26; if ((g_num > 1) && (g_num < 6)) g_ment = g_num - 1; if (g_num > 7) @@ -90,7 +90,7 @@ void fctMove() { ++cx; } while (g_vm->_menu._moveMenu[cx] != g_msg[4]); - if (g_s._mlieu == MOUNTAIN) { + if (g_s._currPlace == MOUNTAIN) { if (cx == 1) t1deva(); if (cx == 2) @@ -98,7 +98,7 @@ void fctMove() { goto L2; } - if (g_s._mlieu == 23) { + if (g_s._currPlace == 23) { if (cx == 1) t1deau(); if (cx == 2) @@ -106,43 +106,43 @@ void fctMove() { goto L2; } - if ((g_s._mlieu == BUREAU) && (cx == 1)) + if ((g_s._currPlace == BUREAU) && (cx == 1)) cx = 6; - if (g_s._mlieu == KITCHEN) { + if (g_s._currPlace == KITCHEN) { if (cx == 2) cx = 6; if (cx == 5) cx = 16; } - if ((g_s._mlieu == CELLAR) && (cx == 3)) + if ((g_s._currPlace == CELLAR) && (cx == 3)) cx = 6; - if (((g_s._mlieu == LANDING) || (g_s._mlieu == 26)) && (cx == 4)) + if (((g_s._currPlace == LANDING) || (g_s._currPlace == 26)) && (cx == 4)) cx = 6; - if ((g_s._mlieu > MOUNTAIN) && (g_s._mlieu != 26)) + if ((g_s._currPlace > MOUNTAIN) && (g_s._currPlace != 26)) cx += 10; - if ((g_s._mlieu == CHAPEL) && (cx == 13)) + if ((g_s._currPlace == CHAPEL) && (cx == 13)) cx = 16; - if (g_s._mlieu == MANOR_FRONT) { + if (g_s._currPlace == MANOR_FRONT) { if (cx == 12) cx = 16; else if (cx > 13) cx = 15; } - if ((g_s._mlieu == MANOR_BACK) && (cx > 14)) + if ((g_s._currPlace == MANOR_BACK) && (cx > 14)) cx = 15; - if ((g_s._mlieu == WELL) && (cx != 17)) + if ((g_s._currPlace == WELL) && (cx != 17)) if (cx > 13) cx = 15; if (cx == 1) - g_s._mlieu = BUREAU; + g_s._currPlace = BUREAU; else if (cx == 2) - g_s._mlieu = KITCHEN; + g_s._currPlace = KITCHEN; else if (cx == 3) - g_s._mlieu = CELLAR; + g_s._currPlace = CELLAR; else if (cx == 4) - g_s._mlieu = LANDING; + g_s._currPlace = LANDING; else if (cx == 5) cx = 12; if (cx == 6) @@ -152,31 +152,31 @@ void fctMove() { else if (cx == 12) t1deva(); else if (cx == 13) - g_s._mlieu = CHAPEL; + g_s._currPlace = CHAPEL; else if (cx == 14) - g_s._mlieu = WELL; + g_s._currPlace = WELL; else if (cx == 15) t1neig(); else if (cx == 16) t1derr(); else if (cx == 17) { - if ((g_s._ipuit != 120) && (g_s._ipuit != 140)) + if ((g_s._wellObjectId != 120) && (g_s._wellObjectId != 140)) g_crep = 997; - else if (g_s._ipuit == 120) + else if (g_s._wellObjectId == 120) g_crep = 181; else if (g_s._conf > 80) { g_crep = 1505; tperd(); } else { - g_s._mlieu = 23; + g_s._currPlace = 23; affrep(); } } if ((cx < 5) || (cx == 13) || (cx == 14)) affrep(); - debloc(g_s._mlieu); + debloc(g_s._currPlace); L2: - tmlieu(g_s._mlieu); + tmlieu(g_s._currPlace); } /** @@ -191,22 +191,22 @@ void fctTake() { if (g_ipers > 0) g_s._conf += 3; if (g_obpart) { - if (g_s._mlieu == PURPLE_ROOM) - g_s._iloic = 0; - if (g_s._mlieu == ATTIC) { - if (g_s._iboul == g_caff) - g_s._iboul = 0; - if (g_s._ibag == g_caff) - g_s._ibag = 0; + if (g_s._currPlace == PURPLE_ROOM) + g_s._purpleRoomObjectId = 0; + if (g_s._currPlace == ATTIC) { + if (g_s._atticBallHoleObjectId == g_caff) + g_s._atticBallHoleObjectId = 0; + if (g_s._atticRodHoleObjectId == g_caff) + g_s._atticRodHoleObjectId = 0; } - if (g_s._mlieu == CELLAR) - g_s._icave = 0; - if (g_s._mlieu == CRYPT) - g_s._icryp = 0; - if (g_s._mlieu == SECRET_PASSAGE) - g_s._ivier = 0; - if (g_s._mlieu == WELL) - g_s._ipuit = 0; + if (g_s._currPlace == CELLAR) + g_s._cellarObjectId = 0; + if (g_s._currPlace == CRYPT) + g_s._cryptObjectId = 0; + if (g_s._currPlace == SECRET_PASSAGE) + g_s._secretPassageObjectId = 0; + if (g_s._currPlace == WELL) + g_s._wellObjectId = 0; unsetSearchMenu(); g_obpart = false; affrep(); @@ -235,40 +235,41 @@ void fctTake() { } } tcoord(5); - if ((g_num == 0) || ((g_num == 1) && (g_s._mlieu == CRYPT))) { + if ((g_num == 0) || ((g_num == 1) && (g_s._currPlace == CRYPT))) { tcoord(8); if (g_num != 0) { if (g_ipers > 0) g_s._conf += 3; g_crep = 997; - if ((g_s._mlieu == PURPLE_ROOM) && (g_s._iloic != 0)) - avpoing(g_s._iloic); - if ((g_s._mlieu == ATTIC) && (g_num == 1) && (g_s._iboul != 0)) { - avpoing(g_s._iboul); + if ((g_s._currPlace == PURPLE_ROOM) && (g_s._purpleRoomObjectId != 0)) + avpoing(g_s._purpleRoomObjectId); + if ((g_s._currPlace == ATTIC) && (g_num == 1) && (g_s._atticBallHoleObjectId != 0)) { + avpoing(g_s._atticBallHoleObjectId); if ((g_crep != 997) && (g_crep != 139)) aniof(2, 7); } - if ((g_s._mlieu == ATTIC) && (g_num == 2) && (g_s._ibag != 0)) { - avpoing(g_s._ibag); + if ((g_s._currPlace == ATTIC) && (g_num == 2) && (g_s._atticRodHoleObjectId != 0)) { + avpoing(g_s._atticRodHoleObjectId); if ((g_crep != 997) && (g_crep != 139)) aniof(2, 6); } - if ((g_s._mlieu == CELLAR) && (g_s._icave != 0)) { - avpoing(g_s._icave); + if ((g_s._currPlace == CELLAR) && (g_s._cellarObjectId != 0)) { + avpoing(g_s._cellarObjectId); if ((g_crep != 997) && (g_crep != 139)) aniof(2, 2); } - if ((g_s._mlieu == CRYPT) && (g_s._icryp != 0)) - avpoing(g_s._icryp); - if ((g_s._mlieu == SECRET_PASSAGE) && (g_s._ivier != 0)) { - avpoing(g_s._ivier); + if ((g_s._currPlace == CRYPT) && (g_s._cryptObjectId != 0)) + avpoing(g_s._cryptObjectId); + + if ((g_s._currPlace == SECRET_PASSAGE) && (g_s._secretPassageObjectId != 0)) { + avpoing(g_s._secretPassageObjectId); if ((g_crep != 997) && (g_crep != 139)) { g_crep = 182; aniof(2, 1); } } - if ((g_s._mlieu == WELL) && (g_s._ipuit != 0)) { - avpoing(g_s._ipuit); + if ((g_s._currPlace == WELL) && (g_s._wellObjectId != 0)) { + avpoing(g_s._wellObjectId); if ((g_crep != 997) && (g_crep != 139)) aniof(2, 1); } @@ -276,15 +277,15 @@ void fctTake() { g_crep = 999; } } else { - if ( ((g_s._mlieu == OWN_ROOM) && (g_num == 3)) || ((g_s._mlieu == GREEN_ROOM) && (g_num == 4)) - || ((g_s._mlieu == PURPLE_ROOM) && (g_num == 1)) || ((g_s._mlieu == DARKBLUE_ROOM) && (g_num == 3)) - || ((g_s._mlieu == BLUE_ROOM) && (g_num == 6)) || ((g_s._mlieu == RED_ROOM) && (g_num == 2)) - || ((g_s._mlieu == BATHROOM) && (g_num == 6)) || ((g_s._mlieu == GREEN_ROOM2) && (g_num == 4)) - || ((g_s._mlieu == 9) && (g_num == 4)) || ((g_s._mlieu == DINING_ROOM) && (g_num > 2)) - || ((g_s._mlieu == BUREAU) && (g_num == 7)) || ((g_s._mlieu == KITCHEN) && (g_num == 6)) - || ((g_s._mlieu == ATTIC) && (g_num > 4)) || ((g_s._mlieu > ATTIC) && (g_s._mlieu != 23)) ) + if ( ((g_s._currPlace == OWN_ROOM) && (g_num == 3)) || ((g_s._currPlace == GREEN_ROOM) && (g_num == 4)) + || ((g_s._currPlace == PURPLE_ROOM) && (g_num == 1)) || ((g_s._currPlace == DARKBLUE_ROOM) && (g_num == 3)) + || ((g_s._currPlace == BLUE_ROOM) && (g_num == 6)) || ((g_s._currPlace == RED_ROOM) && (g_num == 2)) + || ((g_s._currPlace == BATHROOM) && (g_num == 6)) || ((g_s._currPlace == GREEN_ROOM2) && (g_num == 4)) + || ((g_s._currPlace == 9) && (g_num == 4)) || ((g_s._currPlace == DINING_ROOM) && (g_num > 2)) + || ((g_s._currPlace == BUREAU) && (g_num == 7)) || ((g_s._currPlace == KITCHEN) && (g_num == 6)) + || ((g_s._currPlace == ATTIC) && (g_num > 4)) || ((g_s._currPlace > ATTIC) && (g_s._currPlace != 23)) ) g_crep = 997; - else if (g_s._mlieu == 23) { + else if (g_s._currPlace == 23) { g_crep = 1504; tperd(); } else @@ -322,7 +323,7 @@ void fctInventoryTake() { * @remarks Originally called 'tsoulever' */ void fctLift() { - int cx; +// int cx; if (!g_syn) ecr3(g_vm->getEngineString(S_LIFT)); @@ -336,19 +337,19 @@ void fctLift() { if (g_ipers > 0) ++g_s._conf; g_crep = 997; - if ((g_s._mlieu == PURPLE_ROOM) && (g_s._iloic != 0)) - treg(g_s._iloic); + if ((g_s._currPlace == PURPLE_ROOM) && (g_s._purpleRoomObjectId != 0)) + treg(g_s._purpleRoomObjectId); } return; } if (g_ipers > 0) ++g_s._conf; - cx = g_s._mlieu; - if (g_s._mlieu == CRYPT) - cx = 14; - else if (g_s._mlieu == MOUNTAIN) - cx = 15; - g_crep = g_tabdon[asoul + (cx << 3) + (g_num - 1)]; + int tmpPlace = g_s._currPlace; + if (g_s._currPlace == CRYPT) + tmpPlace = 14; + else if (g_s._currPlace == MOUNTAIN) + tmpPlace = 15; + g_crep = g_tabdon[asoul + (tmpPlace << 3) + (g_num - 1)]; if (g_crep == 255) g_crep = 997; } @@ -404,60 +405,60 @@ void fctLook() { tcoord(8); g_crep = 131; if (g_num != 0) { - if (g_s._mlieu == ATTIC) { + if (g_s._currPlace == ATTIC) { if (g_num == 1) { g_crep = 164; - if (g_s._ibag != 0) - treg(g_s._ibag); - else if (g_s._iboul != 0) - treg(g_s._iboul); + if (g_s._atticRodHoleObjectId != 0) + treg(g_s._atticRodHoleObjectId); + else if (g_s._atticBallHoleObjectId != 0) + treg(g_s._atticBallHoleObjectId); } else { g_crep = 193; - if (g_s._ibag != 0) - treg(g_s._ibag); + if (g_s._atticRodHoleObjectId != 0) + treg(g_s._atticRodHoleObjectId); } } - if (g_s._mlieu == CELLAR) { + if (g_s._currPlace == CELLAR) { g_crep = 164; - if (g_s._icave != 0) - treg(g_s._icave); + if (g_s._cellarObjectId != 0) + treg(g_s._cellarObjectId); } - if (g_s._mlieu == SECRET_PASSAGE) { + if (g_s._currPlace == SECRET_PASSAGE) { g_crep = 174; - if (g_s._ivier != 0) - treg(g_s._ivier); + if (g_s._secretPassageObjectId != 0) + treg(g_s._secretPassageObjectId); } - if (g_s._mlieu == WELL) { + if (g_s._currPlace == WELL) { g_crep = 131; - if (g_s._ipuit != 0) - treg(g_s._ipuit); + if (g_s._wellObjectId != 0) + treg(g_s._wellObjectId); } } return; } - cx = g_s._mlieu; - if (g_s._mlieu == CHAPEL) + cx = g_s._currPlace; + if (g_s._currPlace == CHAPEL) cx = 17; - if ((g_s._mlieu > MANOR_FRONT) && (g_s._mlieu < DOOR)) + if ((g_s._currPlace > MANOR_FRONT) && (g_s._currPlace < DOOR)) cx -= 4; - if (g_s._mlieu == 26) + if (g_s._currPlace == 26) cx = 21; g_crep = g_tabdon[arega + (cx * 7) + g_num - 1]; - if ((g_s._mlieu == ATTIC) && (g_num == 8)) + if ((g_s._currPlace == ATTIC) && (g_num == 8)) g_crep = 126; - if (g_s._mlieu == MOUNTAIN) + if (g_s._currPlace == MOUNTAIN) g_crep = 103; if (g_crep == 255) g_crep = 131; - if ((g_s._mlieu == GREEN_ROOM) && (g_num == 1)) + if ((g_s._currPlace == GREEN_ROOM) && (g_num == 1)) treg(144); - if ((g_s._mlieu == BLUE_ROOM) && (g_num == 3)) + if ((g_s._currPlace == BLUE_ROOM) && (g_num == 3)) treg(147); - if ((g_s._mlieu == GREEN_ROOM2) && (g_num == 3)) + if ((g_s._currPlace == GREEN_ROOM2) && (g_num == 3)) treg(149); - if ((g_s._mlieu == 9) && (g_num == 2)) + if ((g_s._currPlace == 9) && (g_num == 2)) treg(30); - if ((g_s._mlieu == DINING_ROOM) && (g_num == 3)) + if ((g_s._currPlace == DINING_ROOM) && (g_num == 3)) treg(31); } @@ -491,7 +492,7 @@ void fctSearch() { if (g_anyone || g_iesc) return; - if (g_s._mlieu == 23) { + if (g_s._currPlace == 23) { g_crep = 1504; tperd(); return; @@ -527,16 +528,16 @@ void fctSearch() { if (g_num != 0) { if (g_ipers > 0) g_s._conf += 3; - if ((g_s._mlieu != WELL) && (g_s._mlieu != SECRET_PASSAGE) && (g_s._mlieu != ATTIC)) { - if (g_s._mlieu == PURPLE_ROOM) { + if ((g_s._currPlace != WELL) && (g_s._currPlace != SECRET_PASSAGE) && (g_s._currPlace != ATTIC)) { + if (g_s._currPlace == PURPLE_ROOM) { g_crep = 123; - if (g_s._iloic != 0) - treg(g_s._iloic); + if (g_s._purpleRoomObjectId != 0) + treg(g_s._purpleRoomObjectId); } - if (g_s._mlieu == CRYPT) { + if (g_s._currPlace == CRYPT) { g_crep = 123; - if (g_s._icryp != 0) - treg(g_s._icryp); + if (g_s._cryptObjectId != 0) + treg(g_s._cryptObjectId); } } } @@ -545,22 +546,22 @@ void fctSearch() { if (g_ipers > 0) g_s._conf += 3; g_crep = 997; - if (g_s._mlieu < CELLAR) - g_crep = r[g_s._mlieu]; + if (g_s._currPlace < CELLAR) + g_crep = r[g_s._currPlace]; - if ((g_s._mlieu == TOILETS) && (g_num == 2)) + if ((g_s._currPlace == TOILETS) && (g_num == 2)) g_crep = 162; - if (g_s._mlieu == KITCHEN) { + if (g_s._currPlace == KITCHEN) { if ((g_num == 3) || (g_num == 4)) g_crep = 162; else if (g_num == 5) g_crep = 159; } - if (g_s._mlieu == MOUNTAIN) + if (g_s._currPlace == MOUNTAIN) g_crep = 104; - else if (g_s._mlieu == CRYPT) + else if (g_s._currPlace == CRYPT) g_crep = 155; } } @@ -607,30 +608,30 @@ void fctOpen() { if (g_ipers > 0) g_s._conf += 2; ++g_iouv; - int cx = 0; + int tmpPlace = 0; do { - ++cx; - } while (!((cx > 6) || (ord(g_touv[cx]) == 0) || (ord(g_touv[cx]) == g_num))); - if (ord(g_touv[cx]) != g_num) { - if (!( ((g_num == 3) && ((g_s._mlieu == OWN_ROOM) || (g_s._mlieu == 9) || (g_s._mlieu == BLUE_ROOM) || (g_s._mlieu == BATHROOM))) - || ((g_num == 4) && ((g_s._mlieu == GREEN_ROOM) || (g_s._mlieu == PURPLE_ROOM) || (g_s._mlieu == RED_ROOM))) - || ((g_s._mlieu == DARKBLUE_ROOM) && (g_num == 5)) - || ((g_num == 6) && ((g_s._mlieu == BATHROOM) || (g_s._mlieu == DINING_ROOM) || (g_s._mlieu == GREEN_ROOM2) || (g_s._mlieu == ATTIC))) - || ((g_s._mlieu == GREEN_ROOM2) && (g_num == 2)) - || ((g_s._mlieu == KITCHEN) && (g_num == 7))) ) { - if ( ((g_s._mlieu > DINING_ROOM) && (g_s._mlieu < CELLAR)) - || ((g_s._mlieu > RED_ROOM) && (g_s._mlieu < DINING_ROOM)) - || (g_s._mlieu == OWN_ROOM) || (g_s._mlieu == PURPLE_ROOM) || (g_s._mlieu == BLUE_ROOM)) { + ++tmpPlace; + } while (!((tmpPlace > 6) || (ord(g_touv[tmpPlace]) == 0) || (ord(g_touv[tmpPlace]) == g_num))); + if (ord(g_touv[tmpPlace]) != g_num) { + if (!( ((g_num == 3) && ((g_s._currPlace == OWN_ROOM) || (g_s._currPlace == 9) || (g_s._currPlace == BLUE_ROOM) || (g_s._currPlace == BATHROOM))) + || ((g_num == 4) && ((g_s._currPlace == GREEN_ROOM) || (g_s._currPlace == PURPLE_ROOM) || (g_s._currPlace == RED_ROOM))) + || ((g_s._currPlace == DARKBLUE_ROOM) && (g_num == 5)) + || ((g_num == 6) && ((g_s._currPlace == BATHROOM) || (g_s._currPlace == DINING_ROOM) || (g_s._currPlace == GREEN_ROOM2) || (g_s._currPlace == ATTIC))) + || ((g_s._currPlace == GREEN_ROOM2) && (g_num == 2)) + || ((g_s._currPlace == KITCHEN) && (g_num == 7))) ) { + if ( ((g_s._currPlace > DINING_ROOM) && (g_s._currPlace < CELLAR)) + || ((g_s._currPlace > RED_ROOM) && (g_s._currPlace < DINING_ROOM)) + || (g_s._currPlace == OWN_ROOM) || (g_s._currPlace == PURPLE_ROOM) || (g_s._currPlace == BLUE_ROOM)) { if (getRandomNumber(1, 4) == 3) parole(7, 9, 1); } - g_touv[cx] = chr(g_num); + g_touv[tmpPlace] = chr(g_num); aniof(1, g_num); } - cx = g_s._mlieu; - if (g_s._mlieu == CRYPT) - cx = 14; - g_crep = g_tabdon[aouvr + (cx * 7) + g_num - 1]; + tmpPlace = g_s._currPlace; + if (g_s._currPlace == CRYPT) + tmpPlace = CELLAR; + g_crep = g_tabdon[aouvr + (tmpPlace * 7) + g_num - 1]; if (g_crep == 254) g_crep = 999; } else @@ -663,27 +664,27 @@ void fctPlace() { g_crep = 999; if (g_caff == 13) { if (g_num == 1) { - if (g_s._iboul != 0) { + if (g_s._atticBallHoleObjectId != 0) { g_crep = 188; } else { - g_s._iboul = g_s._selectedObjectId; + g_s._atticBallHoleObjectId = g_s._selectedObjectId; if (g_s._selectedObjectId == 141) aniof(1, 7); } - } else if (g_s._ibag != 0) { + } else if (g_s._atticRodHoleObjectId != 0) { g_crep = 188; } else { - g_s._ibag = g_s._selectedObjectId; + g_s._atticRodHoleObjectId = g_s._selectedObjectId; if (g_s._selectedObjectId == 159) aniof(1, 6); } } if (g_caff == 14) { - if (g_s._icave != 0) { + if (g_s._cellarObjectId != 0) { g_crep = 188; } else { - g_s._icave = g_s._selectedObjectId; + g_s._cellarObjectId = g_s._selectedObjectId; if (g_s._selectedObjectId == 151) { // Open hidden passage aniof(1, 2); @@ -714,10 +715,10 @@ void fctPlace() { g_vm->_menu.displayMenu(); if (enterPassageFl) { - g_s._mlieu = SECRET_PASSAGE; + g_s._currPlace = SECRET_PASSAGE; tmlieu(17); } else { - tmlieu(g_s._mlieu); + tmlieu(g_s._currPlace); writepal(14); dessin(0); aniof(1, 2); @@ -738,17 +739,17 @@ void fctPlace() { } if (g_caff == 16) { - if (g_s._icryp == 0) - g_s._icryp = g_s._selectedObjectId; + if (g_s._cryptObjectId == 0) + g_s._cryptObjectId = g_s._selectedObjectId; else g_crep = 188; } if (g_caff == 17) { - if (g_s._ivier != 0) { + if (g_s._secretPassageObjectId != 0) { g_crep = 188; } else if (g_s._selectedObjectId == 143) { - g_s._ivier = 143; + g_s._secretPassageObjectId = 143; aniof(1, 1); } else { g_crep = 1512; @@ -757,10 +758,10 @@ void fctPlace() { } if (g_caff == 24) { - if (g_s._ipuit != 0) { + if (g_s._wellObjectId != 0) { g_crep = 188; } else if ((g_s._selectedObjectId == 140) || (g_s._selectedObjectId == 120)) { - g_s._ipuit = g_s._selectedObjectId; + g_s._wellObjectId = g_s._selectedObjectId; aniof(1, 1); } else { g_crep = 185; @@ -789,7 +790,7 @@ void fctTurn() { tcoord(9); if (g_num != 0) { g_crep = 997; - if ((g_s._mlieu == ATTIC) && (g_s._ibag == 159) && (g_s._iboul == 141)) { + if ((g_s._currPlace == ATTIC) && (g_s._atticRodHoleObjectId == 159) && (g_s._atticBallHoleObjectId == 141)) { repon(2, 167); parole(7, 9, 1); int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); @@ -798,13 +799,13 @@ void fctTurn() { else g_crep = 168; } - if ((g_s._mlieu == SECRET_PASSAGE) && (g_s._ivier == 143)) { + if ((g_s._currPlace == SECRET_PASSAGE) && (g_s._secretPassageObjectId == 143)) { repon(2, 175); clsf3(); parole(6, -9, 1); int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); if (answer == 1) { - g_s._mlieu = CRYPT; + g_s._currPlace = CRYPT; affrep(); } else g_crep = 176; @@ -845,10 +846,10 @@ void fctAttach() { if (!(g_anyone) && !(g_iesc)) { tcoord(8); g_crep = 997; - if ((g_num != 0) && (g_s._mlieu == WELL)) { + if ((g_num != 0) && (g_s._currPlace == WELL)) { g_crep = 999; if ((g_s._selectedObjectId == 120) || (g_s._selectedObjectId == 140)) { - g_s._ipuit = g_s._selectedObjectId; + g_s._wellObjectId = g_s._selectedObjectId; aniof(1, 1); } else g_crep = 185; @@ -903,20 +904,20 @@ void fctClose() { * @remarks Originally called 'tfrapper' */ void fctKnock() { - warning("Knock - mlieu %d", g_s._mlieu); + warning("Knock - _currPlace %d", g_s._currPlace); if (!g_syn) ecr3(g_vm->getEngineString(S_HIT)); - if (g_s._mlieu == LANDING) { + if (g_s._currPlace == LANDING) { Alert::show(g_vm->getEngineString(S_BEFORE_USE_DEP_MENU), 1); return; } - if (g_s._mlieu < DOOR) { + if (g_s._currPlace < DOOR) { tfleche(); if (!(g_anyone) && !(g_iesc)) { - if ((g_s._mlieu < MOUNTAIN) && (g_s._mlieu != LANDING)) + if ((g_s._currPlace < MOUNTAIN) && (g_s._currPlace != LANDING)) g_crep = 133; else g_crep = 997; @@ -925,7 +926,7 @@ void fctKnock() { return; } - if (g_s._mlieu == 26) { + if (g_s._currPlace == 26) { int rand = (getRandomNumber(0, 8)) - 4; parole(11, rand, 1); int p; @@ -991,40 +992,40 @@ void fctSelfPut() { tcoord(8); if (g_num != 0) { g_crep = 998; - if (g_caff == 2) { - if (g_s._iloic != 0) + if (g_caff == PURPLE_ROOM) { + if (g_s._purpleRoomObjectId != 0) g_crep = 188; else - g_s._iloic = g_s._selectedObjectId; + g_s._purpleRoomObjectId = g_s._selectedObjectId; } - if (g_caff == 13) { + if (g_caff == ATTIC) { if (g_num == 1) { - if (g_s._iboul != 0) + if (g_s._atticBallHoleObjectId != 0) g_crep = 188; else - g_s._iboul = g_s._selectedObjectId; - } else if (g_s._ibag != 0) { + g_s._atticBallHoleObjectId = g_s._selectedObjectId; + } else if (g_s._atticRodHoleObjectId != 0) { g_crep = 188; } else { - g_s._ibag = g_s._selectedObjectId; + g_s._atticRodHoleObjectId = g_s._selectedObjectId; } } - if (g_caff == 16) { - if (g_s._icryp != 0) + if (g_caff == CRYPT) { + if (g_s._cryptObjectId != 0) g_crep = 188; else - g_s._icryp = g_s._selectedObjectId; + g_s._cryptObjectId = g_s._selectedObjectId; } - if (g_caff == 24) + if (g_caff == WELL) g_crep = 185; - if ((g_caff == 14) || (g_caff == 17)) + if ((g_caff == CELLAR) || (g_caff == SECRET_PASSAGE)) g_crep = 124; } else { g_crep = 124; - if (g_caff == 24) { + if (g_caff == WELL) { tcoord(5); if (g_num != 0) g_crep = 185; @@ -1047,7 +1048,7 @@ void fctSelfPut() { * @remarks Originally called 'tecouter' */ void fctListen() { - if (g_s._mlieu != 26) + if (g_s._currPlace != 26) g_crep = 101; else { if (g_ipers != 0) @@ -1085,14 +1086,14 @@ void fctListen() { * @remarks Originally called 'tmanger' */ void fctEat() { - if ((g_s._mlieu > LANDING) && (g_s._mlieu < 26)) { + if ((g_s._currPlace > LANDING) && (g_s._currPlace < 26)) { g_crep = 148; } else { tsort(); - g_s._mlieu = DINING_ROOM; + g_s._currPlace = DINING_ROOM; g_caff = 10; - debloc(g_s._mlieu); - tmlieu(g_s._mlieu); + debloc(g_s._currPlace); + tmlieu(g_s._currPlace); int j, h, m; calch(j, h, m); @@ -1126,10 +1127,10 @@ void fctEat() { * @remarks Originally called 'tentrer' */ void fctEnter() { - if ((g_s._mlieu == MANOR_FRONT) || (g_s._mlieu == MANOR_BACK)) { + if ((g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK)) { t1sama(); - tmlieu(g_s._mlieu); - } else if (g_s._mlieu == LANDING) + tmlieu(g_s._currPlace); + } else if (g_s._currPlace == LANDING) aldepl(); else if (g_ment == 0) g_crep = 997; @@ -1150,7 +1151,7 @@ void fctEnter() { tip(z, g_x); ++g_s._conf; - g_s._mlieu = LANDING; + g_s._currPlace = LANDING; g_msg[3] = MENU_DISCUSS; g_msg[4] = g_vm->_menu._discussMenu[g_x]; g_syn = true; @@ -1169,10 +1170,10 @@ void fctEnter() { parole(7, g_x, 1); aniof(1, 1); - g_s._mlieu = g_ment; + g_s._currPlace = g_ment; affrep(); - debloc(g_s._mlieu); - tmlieu(g_s._mlieu); + debloc(g_s._currPlace); + tmlieu(g_s._currPlace); g_ment = 0; g_mpers = 0; g_ipers = 0; @@ -1187,17 +1188,17 @@ void fctEnter() { void fctSleep() { int z, j, h, m; - if ((g_s._mlieu > LANDING) && (g_s._mlieu < 26)) { + if ((g_s._currPlace > LANDING) && (g_s._currPlace < 26)) { g_crep = 148; return; } - if (g_s._mlieu != OWN_ROOM) { + if (g_s._currPlace != OWN_ROOM) { tsort(); - g_s._mlieu = OWN_ROOM; + g_s._currPlace = OWN_ROOM; affrep(); afdes(0); - debloc(g_s._mlieu); - tmlieu(g_s._mlieu); + debloc(g_s._currPlace); + tmlieu(g_s._currPlace); } clsf3(); clsf2(); @@ -1238,7 +1239,7 @@ void fctForce() { tfleche(); if ((!g_anyone) && (!g_iesc)) { - if (g_s._mlieu != 26) + if (g_s._currPlace != 26) g_crep = 997; else { g_crep = 143; @@ -1254,27 +1255,27 @@ void fctForce() { void fctLeave() { tsort(); g_crep = 0; - if ((g_s._mlieu == MOUNTAIN) || (g_s._mlieu == MANOR_FRONT) || (g_s._mlieu == MANOR_BACK) || (g_s._mlieu == WELL)) + if ((g_s._currPlace == MOUNTAIN) || (g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK) || (g_s._currPlace == WELL)) g_crep = 997; else { int lx = 0; - if ((g_s._mlieu < CRYPT) || (g_s._mlieu == 26)) + if ((g_s._currPlace < CRYPT) || (g_s._currPlace == 26)) lx = 10; - if ((g_s._mlieu == DINING_ROOM) || (g_s._mlieu == CHAPEL)) + if ((g_s._currPlace == DINING_ROOM) || (g_s._currPlace == CHAPEL)) lx = 21; - if ((g_s._mlieu < DINING_ROOM) || (g_s._mlieu == ATTIC)) + if ((g_s._currPlace < DINING_ROOM) || (g_s._currPlace == ATTIC)) lx = 15; - if (g_s._mlieu == CRYPT) { + if (g_s._currPlace == CRYPT) { lx = 17; g_crep = 176; } - if (g_s._mlieu == SECRET_PASSAGE) + if (g_s._currPlace == SECRET_PASSAGE) t23coul(lx); - if (g_s._mlieu == 23) + if (g_s._currPlace == 23) lx = 24; if (g_crep != 997) - g_s._mlieu = lx; + g_s._currPlace = lx; g_caff = lx; if (g_crep == 0) g_crep = lx; @@ -1298,12 +1299,12 @@ void fctWait() { ++g_jh; tinke(); if (!g_blo) - t11(g_s._mlieu, quel); + t11(g_s._currPlace, quel); if ((g_ipers != 0) && (g_mpers == 0)) { g_crep = 998; - if ((g_s._mlieu == ATTIC) || (g_s._mlieu == CELLAR)) + if ((g_s._currPlace == ATTIC) || (g_s._currPlace == CELLAR)) cavegre(); - if ((g_s._mlieu > OWN_ROOM) && (g_s._mlieu < DINING_ROOM)) + if ((g_s._currPlace > OWN_ROOM) && (g_s._currPlace < DINING_ROOM)) g_anyone = true; g_mpers = g_ipers; if (!g_anyone) @@ -1465,7 +1466,7 @@ void fctDiscuss() { int ix = choi - 1; if (g_col) { g_col = false; - g_s._mlieu = 15; + g_s._currPlace = 15; if (g_iouv > 0) max = 8; else @@ -1515,7 +1516,7 @@ void fctDiscuss() { sparl(0, 138); showMouse(); g_col = false; - g_s._mlieu = 15; + g_s._currPlace = 15; } g_ctrm = 0; hideMouse(); @@ -1527,7 +1528,7 @@ void fctDiscuss() { drawClock(); affrep(); /* chech;*/ - tmlieu(g_s._mlieu); + tmlieu(g_s._currPlace); clsf3(); } @@ -1593,8 +1594,11 @@ void MortevielleEngine::endGame() { repon(2, 35); musique(0); tkey1(false); - messint(2036); - tkey1(false); + // A wait message was displayed. + // tkey1 was called before and after. + // Most likely the double call is useless, thus removed + // + // tkey1(false); inzon(); } diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 52b71c7994..d6d52367e4 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -1015,15 +1015,15 @@ void inzon() { g_s._ipre = false; g_s._selectedObjectId = 0; - g_s._icave = 0; - g_s._iboul = 0; - g_s._ibag = 0; - g_s._ipuit = 0; - g_s._ivier = 0; - g_s._iloic = 136; - g_s._icryp = 141; + g_s._cellarObjectId = 0; + g_s._atticBallHoleObjectId = 0; + g_s._atticRodHoleObjectId = 0; + g_s._wellObjectId = 0; + g_s._secretPassageObjectId = 0; + g_s._purpleRoomObjectId = 136; + g_s._cryptObjectId = 141; g_s._conf = getRandomNumber(4, 10); - g_s._mlieu = MANOR_FRONT; + g_s._currPlace = MANOR_FRONT; for (int cx = 2; cx <= 6; ++cx) g_s._sjer[cx] = chr(0); @@ -1275,16 +1275,6 @@ void writetp(Common::String s, int t) { g_vm->_screenSurface.writeg(copy(s, 1, 25), t); } -/** - * Shows the waiting message when changing scenes. - * @remarks Because modern computesr are so much quicker. There's no point in showing - * a waiting message between scenes. - */ -void messint(int nu) { - // Method is deprecated - warning("DEPRECATED: messint"); -} - void aniof(int ouf, int num) { if ((g_caff == 7) && ((num == 4) || (num == 5))) return; @@ -1318,27 +1308,27 @@ void musique(int so) { ++g_prebru; } else { bool i = false; - if ((g_s._mlieu == MOUNTAIN) || (g_s._mlieu == MANOR_FRONT) || (g_s._mlieu == MANOR_BACK)) { + if ((g_s._currPlace == MOUNTAIN) || (g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK)) { if (getRandomNumber(1, 3) == 2) { parole(9, getRandomNumber(2, 4), 1); i = true; } } - if (g_s._mlieu == CHAPEL) { + if (g_s._currPlace == CHAPEL) { if (getRandomNumber(1, 2) == 1) { parole(8, 1, 1); i = true; } } - if (g_s._mlieu == WELL) { + if (g_s._currPlace == WELL) { if (getRandomNumber(1, 2) == 2) { parole(12, 1, 1); i = true; } } - if (g_s._mlieu == 23) { + if (g_s._currPlace == 23) { parole(13, 1, 1); i = true; } @@ -1369,19 +1359,19 @@ void dessin(int ad) { } if (g_caff == 13) { - if (g_s._iboul == 141) + if (g_s._atticBallHoleObjectId == 141) aniof(1, 7); - if (g_s._ibag == 159) + if (g_s._atticRodHoleObjectId == 159) aniof(1, 6); } - if ((g_caff == 14) && (g_s._icave == 151)) + if ((g_caff == 14) && (g_s._cellarObjectId == 151)) aniof(1, 2); - if ((g_caff == 17) && (g_s._ivier == 143)) + if ((g_caff == 17) && (g_s._secretPassageObjectId == 143)) aniof(1, 1); - if ((g_caff == 24) && (g_s._ipuit != 0)) + if ((g_caff == 24) && (g_s._wellObjectId != 0)) aniof(1, 1); } diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index f649195f24..87238c4217 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -113,7 +113,6 @@ extern void pl20(int cf); extern void t11(int l11, int &a); extern void cavegre(); extern void writetp(Common::String s, int t); -extern void messint(int nu); extern void aniof(int ouf, int num); extern void musique(int so); /* NIVEAU 9 */ diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 05002a3a62..28692eac83 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -157,7 +157,7 @@ void tinke() { g_mpers = g_ipers; if ((g_mpers == 0) && (g_ipers > 0)) { - if ((g_s._mlieu == ATTIC) || (g_s._mlieu == CELLAR)) { + if ((g_s._currPlace == ATTIC) || (g_s._currPlace == CELLAR)) { cavegre(); } else if (g_ipers == 10) { g_ipers = 0; @@ -185,7 +185,7 @@ void tinke() { nouvp(g_li, cx); g_brt = false; g_hdb = 0; - if ((g_s._mlieu > OWN_ROOM) && (g_s._mlieu < DINING_ROOM)) + if ((g_s._currPlace > OWN_ROOM) && (g_s._currPlace < DINING_ROOM)) g_anyone = true; } } @@ -269,8 +269,8 @@ void tlu(int af, int ob) { } void affrep() { - g_caff = g_s._mlieu; - g_crep = g_s._mlieu; + g_caff = g_s._currPlace; + g_crep = g_s._currPlace; } /** @@ -278,7 +278,7 @@ void affrep() { * @remarks Originally called 'mfouen' */ void unsetSearchMenu() { - tmlieu(g_s._mlieu); + tmlieu(g_s._currPlace); for (int cx = 1; cx <= 11; ++cx) g_vm->_menu.enableMenuItem(_actionMenu[cx]); @@ -312,7 +312,7 @@ void tperd() { void tsort() { - if ((g_iouv > 0) && (g_s._mlieu != 0)) { + if ((g_iouv > 0) && (g_s._currPlace != 0)) { if (g_s._conf < 50) g_s._conf += 2; else @@ -324,7 +324,7 @@ void tsort() { g_ment = 0; g_iouv = 0; g_mchai = 0; - debloc(g_s._mlieu); + debloc(g_s._currPlace); } void st4(int ob) { @@ -369,7 +369,7 @@ void cherjer(int ob, bool &d) { } void st1sama() { - g_s._mlieu = DINING_ROOM; + g_s._currPlace = DINING_ROOM; affrep(); } @@ -480,7 +480,7 @@ void t1sama() { //Entering manor int j, h, m; calch(j, h, m); - if ((h < 5) && (g_s._mlieu > 18)) { + if ((h < 5) && (g_s._currPlace > 18)) { bool d; cherjer(137, d); if (!d) { //You don't have the keys, and it's late @@ -504,7 +504,7 @@ void t1sama() { //Entering manor dessine_rouleau(); drawClock(); showMouse(); - g_s._mlieu = OWN_ROOM; + g_s._currPlace = OWN_ROOM; affrep(); t5(10); if (!g_blo) @@ -518,7 +518,7 @@ void t1sama() { //Entering manor } void t1vier() { - g_s._mlieu = SECRET_PASSAGE; + g_s._currPlace = SECRET_PASSAGE; affrep(); } @@ -529,19 +529,19 @@ void t1neig() { tperd(); } else { g_okdes = true; - g_s._mlieu = MOUNTAIN; + g_s._currPlace = MOUNTAIN; affrep(); } } void t1deva() { g_inei = 0; - g_s._mlieu = MANOR_FRONT; + g_s._currPlace = MANOR_FRONT; affrep(); } void t1derr() { - g_s._mlieu = MANOR_BACK; + g_s._currPlace = MANOR_BACK; affrep(); } @@ -777,11 +777,11 @@ void avpoing(int &ob) { } void rechai(int &ch) { - int cx = g_s._mlieu; + int tmpPlace = g_s._currPlace; - if (g_s._mlieu == CRYPT) - cx = 14; - ch = g_tabdon[achai + (cx * 7) + g_num - 1]; + if (g_s._currPlace == CRYPT) + tmpPlace = CELLAR; + ch = g_tabdon[achai + (tmpPlace * 7) + g_num - 1]; } void t23coul(int &l) { diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 51f0d95c8e..7ed3e921a5 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -621,7 +621,7 @@ void MortevielleEngine::handleAction() { oo = true; if ((g_msg[4] == OPCODE_LIFT) || (g_obpart)) { endSearch(); - g_caff = g_s._mlieu; + g_caff = g_s._currPlace; g_crep = 998; } else tsuiv(); diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 8479538879..46bde5ee53 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -122,7 +122,7 @@ void MortevielleEngine::gameLoaded() { repon(2, g_crep); clsf3(); _endGame = false; - tmlieu(g_s._mlieu); + tmlieu(g_s._currPlace); modinv(); if (g_s._selectedObjectId != 0) modobj(g_s._selectedObjectId + 400); @@ -226,11 +226,11 @@ void tsitu() { } } calch(j, h, m); - if ((((h == 12) || (h == 13) || (h == 19)) && (g_s._mlieu != 10)) || - ((h > 0) && (h < 6) && (g_s._mlieu != 0))) + if ((((h == 12) || (h == 13) || (h == 19)) && (g_s._currPlace != 10)) || + ((h > 0) && (h < 6) && (g_s._currPlace != 0))) ++g_s._conf; - if (((g_s._mlieu < CRYPT) || (g_s._mlieu > MOUNTAIN)) && (g_s._mlieu != 23) - && (g_s._mlieu != 0) && (g_s._selectedObjectId != 152) && (!g_vm->_loseGame)) { + if (((g_s._currPlace < CRYPT) || (g_s._currPlace > MOUNTAIN)) && (g_s._currPlace != 23) + && (g_s._currPlace != 0) && (g_s._selectedObjectId != 152) && (!g_vm->_loseGame)) { if ((g_s._conf > 99) && (h > 8) && (h < 16)) { g_crep = 1501; tperd(); diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 53a147c86c..386fd95ef5 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -53,15 +53,15 @@ void SavegameManager::sync_save(Common::Serializer &sz) { sz.syncBytes((byte *)&g_s1._pourc[0], 11); sz.syncBytes((byte *)&g_s1._teauto[0], 43); sz.syncBytes((byte *)&g_s1._sjer[0], 31); - sz.syncAsSint16LE(g_s1._mlieu); - sz.syncAsSint16LE(g_s1._iboul); - sz.syncAsSint16LE(g_s1._ibag); - sz.syncAsSint16LE(g_s1._icave); - sz.syncAsSint16LE(g_s1._ivier); - sz.syncAsSint16LE(g_s1._ipuit); + sz.syncAsSint16LE(g_s1._currPlace); + sz.syncAsSint16LE(g_s1._atticBallHoleObjectId); + sz.syncAsSint16LE(g_s1._atticRodHoleObjectId); + sz.syncAsSint16LE(g_s1._cellarObjectId); + sz.syncAsSint16LE(g_s1._secretPassageObjectId); + sz.syncAsSint16LE(g_s1._wellObjectId); sz.syncAsSint16LE(g_s1._selectedObjectId); - sz.syncAsSint16LE(g_s1._iloic); - sz.syncAsSint16LE(g_s1._icryp); + sz.syncAsSint16LE(g_s1._purpleRoomObjectId); + sz.syncAsSint16LE(g_s1._cryptObjectId); sz.syncAsByte(g_s1._ipre); sz.syncAsByte(g_s1._heure); @@ -144,8 +144,8 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { for (i = 0; i <= 389; ++i) g_bufcha[i] = g_tabdon[i + acha]; g_s1 = g_s; - if (g_s1._mlieu == 26) - g_s1._mlieu = 15; + if (g_s1._currPlace == 26) + g_s1._currPlace = 15; Common::String filename = generateSaveName(n); f = g_system->getSavefileManager()->openForSaving(filename); diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 096a076001..00d9dca3ef 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -176,7 +176,6 @@ void taffich() { if (((a < 27) && (((g_maff > 69) && (!g_s._ipre)) || (g_maff > 99))) || ((g_maff > 29) && (g_maff < 33))) m = 2033; - messint(m); g_maff = a; if (a == 159) a = 86; @@ -249,11 +248,11 @@ void taffich() { charani(filename, lgt, handle); } showMouse(); - if ((a < 27) && ((g_maff < 27) || (g_s._mlieu == LANDING)) && (g_msg[4] != OPCODE_ENTER)) { + if ((a < 27) && ((g_maff < 27) || (g_s._currPlace == LANDING)) && (g_msg[4] != OPCODE_ENTER)) { if ((a == 13) || (a == 14)) person(); else if (!g_blo) - t11(g_s._mlieu, cx); + t11(g_s._currPlace, cx); g_mpers = 0; } } diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index dd65f39c07..8c661437a9 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -165,8 +165,8 @@ struct sav_chaine { byte _pourc[11]; byte _teauto[43]; byte _sjer[31]; - int _mlieu, _iboul, _ibag, _icave, _ivier, _ipuit; - int _selectedObjectId, _iloic, _icryp; + int _currPlace, _atticBallHoleObjectId, _atticRodHoleObjectId, _cellarObjectId, _secretPassageObjectId, _wellObjectId; + int _selectedObjectId, _purpleRoomObjectId, _cryptObjectId; bool _ipre; byte _heure; }; -- cgit v1.2.3 From 1ee4429601c0e009196d66d3e676deeb85b11b49 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 5 Mar 2012 07:45:43 +0100 Subject: MORTEVIELLE: Rename some more functions and globals --- engines/mortevielle/actions.cpp | 42 +++++----- engines/mortevielle/mor.cpp | 174 +++++++++++++++++++++++++-------------- engines/mortevielle/mor.h | 18 ++-- engines/mortevielle/mor2.cpp | 18 ++-- engines/mortevielle/prog.cpp | 6 +- engines/mortevielle/saveload.cpp | 2 +- engines/mortevielle/var_mor.h | 2 +- 7 files changed, 155 insertions(+), 107 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 6b9388ab33..22c12d6a67 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -164,7 +164,7 @@ void fctMove() { g_crep = 997; else if (g_s._wellObjectId == 120) g_crep = 181; - else if (g_s._conf > 80) { + else if (g_s._faithScore > 80) { g_crep = 1505; tperd(); } else { @@ -189,7 +189,7 @@ void fctTake() { avpoing(cx); if (g_crep != 139) { if (g_ipers > 0) - g_s._conf += 3; + g_s._faithScore += 3; if (g_obpart) { if (g_s._currPlace == PURPLE_ROOM) g_s._purpleRoomObjectId = 0; @@ -215,7 +215,7 @@ void fctTake() { tsuiv(); ++g_dobj; if (g_dobj > 6) { - g_s._conf += 2; + g_s._faithScore += 2; g_dobj = 0; } } @@ -239,7 +239,7 @@ void fctTake() { tcoord(8); if (g_num != 0) { if (g_ipers > 0) - g_s._conf += 3; + g_s._faithScore += 3; g_crep = 997; if ((g_s._currPlace == PURPLE_ROOM) && (g_s._purpleRoomObjectId != 0)) avpoing(g_s._purpleRoomObjectId); @@ -335,7 +335,7 @@ void fctLift() { tcoord(8); if (g_num != 0) { if (g_ipers > 0) - ++g_s._conf; + ++g_s._faithScore; g_crep = 997; if ((g_s._currPlace == PURPLE_ROOM) && (g_s._purpleRoomObjectId != 0)) treg(g_s._purpleRoomObjectId); @@ -343,7 +343,7 @@ void fctLift() { return; } if (g_ipers > 0) - ++g_s._conf; + ++g_s._faithScore; int tmpPlace = g_s._currPlace; if (g_s._currPlace == CRYPT) tmpPlace = 14; @@ -510,7 +510,7 @@ void fctSearch() { g_crep = 187; else { if (g_ipers > 0) - g_s._conf += 3; + g_s._faithScore += 3; rechai(g_mchai); if (g_mchai != 0) { @@ -527,7 +527,7 @@ void fctSearch() { g_crep = 997; if (g_num != 0) { if (g_ipers > 0) - g_s._conf += 3; + g_s._faithScore += 3; if ((g_s._currPlace != WELL) && (g_s._currPlace != SECRET_PASSAGE) && (g_s._currPlace != ATTIC)) { if (g_s._currPlace == PURPLE_ROOM) { g_crep = 123; @@ -544,7 +544,7 @@ void fctSearch() { } } else { if (g_ipers > 0) - g_s._conf += 3; + g_s._faithScore += 3; g_crep = 997; if (g_s._currPlace < CELLAR) g_crep = r[g_s._currPlace]; @@ -606,7 +606,7 @@ void fctOpen() { tcoord(7); if (g_num != 0) { if (g_ipers > 0) - g_s._conf += 2; + g_s._faithScore += 2; ++g_iouv; int tmpPlace = 0; do { @@ -930,7 +930,7 @@ void fctKnock() { int rand = (getRandomNumber(0, 8)) - 4; parole(11, rand, 1); int p; - ecfren(p, rand, g_s._conf, g_ment); + ecfren(p, rand, g_s._faithScore, g_ment); int l = g_ment; if (l != 0) { if (p != -500) { @@ -1052,9 +1052,9 @@ void fctListen() { g_crep = 101; else { if (g_ipers != 0) - ++g_s._conf; + ++g_s._faithScore; int p, rand; - ecfren(p, rand, g_s._conf, g_ment); + ecfren(p, rand, g_s._faithScore, g_ment); int l = g_ment; if (l != 0) { if (p != -500) { @@ -1098,7 +1098,7 @@ void fctEat() { int j, h, m; calch(j, h, m); if ((h == 12) || (h == 13) || (h == 19)) { - g_s._conf -= (g_s._conf / 7); + g_s._faithScore -= (g_s._faithScore / 7); if (h == 12) { if (m == 0) h = 4; @@ -1150,7 +1150,7 @@ void fctEnter() { aniof(1, 1); tip(z, g_x); - ++g_s._conf; + ++g_s._faithScore; g_s._currPlace = LANDING; g_msg[3] = MENU_DISCUSS; g_msg[4] = g_vm->_menu._discussMenu[g_x]; @@ -1209,7 +1209,7 @@ void fctSleep() { int answer; do { if (h < 8) { - g_s._conf -= (g_s._conf / 20); + g_s._faithScore -= (g_s._faithScore / 20); z = (7 - h) * 2; if (m == 30) --z; @@ -1243,7 +1243,7 @@ void fctForce() { g_crep = 997; else { g_crep = 143; - g_s._conf += 2; + g_s._faithScore += 2; } } } @@ -1475,14 +1475,14 @@ void fctDiscuss() { suj = 129; else { suj = 138; - g_s._conf += (3 * (g_s._conf / 10)); + g_s._faithScore += (3 * (g_s._faithScore / 10)); } } else if (g_nbrep[g_caff - 69] < g_nbrepm[g_caff - 69]) { suj = g_tabdon[arep + (ix << 3) + (g_caff - 70)]; - g_s._conf += g_tabdon[arcf + ix]; + g_s._faithScore += g_tabdon[arcf + ix]; ++g_nbrep[g_caff - 69]; } else { - g_s._conf += 3; + g_s._faithScore += 3; suj = 139; } hideMouse(); @@ -1509,7 +1509,7 @@ void fctDiscuss() { } } while ((choi != 46) && (suj != 138)); if (g_col) { - g_s._conf += (3 * (g_s._conf / 10)); + g_s._faithScore += (3 * (g_s._faithScore / 10)); hideMouse(); hirs(); premtet(); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index d6d52367e4..82d0ef1979 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -236,11 +236,11 @@ void clsf10() { cod = 544; } g_vm->_screenSurface.fillRect(15, Common::Rect(cod, 93, co, 98)); - if (g_s._conf < 33) + if (g_s._faithScore < 33) st = g_vm->getEngineString(S_COOL); - else if (g_s._conf < 66) + else if (g_s._faithScore < 66) st = g_vm->getEngineString(S_LOURDE); - else if (g_s._conf > 65) + else if (g_s._faithScore > 65) st = g_vm->getEngineString(S_MALSAINE); co = 580 - (g_vm->_screenSurface.getStringWidth(st) / 2); @@ -746,10 +746,12 @@ void cpl20(int &p, int &h) { p = -5; } -void quelq1(int l) { - int per; - - per = getRandomNumber(1, 2); +/** + * Engine function - Check who is in the Green Room + * @remarks Originally called 'quelq1' + */ +void setPresenceGreenRoom(int l) { + int per = getRandomNumber(1, 2); if (l == 1) { if (per == 1) g_bh1 = true; @@ -765,7 +767,11 @@ void quelq1(int l) { g_ipers = 10; } -void quelq2() { +/** + * Engine function - Check who is in the Purple Room + * @remarks Originally called 'quelq2' + */ +void setPresencePurpleRoom() { if (g_li == 2) g_bh2 = true; else @@ -774,12 +780,20 @@ void quelq2() { g_ipers = 10; } -void quelq5() { +/** + * Engine function - Check who is in the Blue Room + * @remarks Originally called 'quelq5' + */ +void setPresenceBlueRoom() { g_bh5 = true; g_ipers = 10; } -void quelq6(int l) { +/** + * Engine function - Check who is in the Red Room + * @remarks Originally called 'quelq6' + */ +void setPresenceRedRoom(int l) { if (l == 6) g_bh6 = true; else if (l == 8) @@ -788,9 +802,15 @@ void quelq6(int l) { g_ipers = 10; } -void quelq10(int h, int &per) { +/** + * Engine function - Check who is in the Dining Room + * @remarks Originally called 'quelq10' + */ +int setPresenceDiningRoom(int h) { + int retVal = 0; + if ((h >= 0) && (h < 8)) - per = chlm(); + retVal = chlm(); else { int min = 0, max = 0; if ((h > 7) && (h < 10)) { @@ -806,14 +826,22 @@ void quelq10(int h, int &per) { min = 1; max = 5; } - choix(min, max, per); + choix(min, max, retVal); } - affper(per); + affper(retVal); + + return retVal; } -void quelq11(int h, int &per) { +/** + * Engine function - Check who is in the Bureau + * @remarks Originally called 'quelq11' + */ +int setPresenceBureau(int h) { + int retVal = 0; + if ((h >= 0) && (h < 8)) - per = chlm(); + retVal = chlm(); else { int min = 0, max = 0; if (((h > 7) && (h < 10)) || ((h > 20) && (h < 24))) { @@ -826,41 +854,59 @@ void quelq11(int h, int &per) { min = 1; max = 2; } - choix(min, max, per); + choix(min, max, retVal); } - affper(per); -} + affper(retVal); -void quelq12(int &per) { - per = chlm(); - affper(per); + return retVal; } -void quelq15(int &per) { - int cx; - bool test; +/** + * Engine function - Check who is in the Kitchen + * @remarks Originally called 'quelq12' + */ +int setPresenceKitchen() { + int retVal = chlm(); + affper(retVal); - per = 0; + return retVal; +} +/** + * Engine function - Check who is in the Landing + * @remarks Originally called 'quelq15' + */ +int setPresenceLanding() { + bool test = false; + int rand = 0; do { - cx = getRandomNumber(1, 8); - test = (((cx == 1) && (g_bh2 || g_bh9)) || - ((cx == 2) && g_bh8) || - ((cx == 3) && g_bh4) || - ((cx == 4) && g_bf4) || - ((cx == 5) && g_bh6) || - ((cx == 6) && g_bh1) || - ((cx == 7) && g_bf1) || - ((cx == 8) && g_bh5)); + rand = getRandomNumber(1, 8); + test = (((rand == 1) && (g_bh2 || g_bh9)) || + ((rand == 2) && g_bh8) || + ((rand == 3) && g_bh4) || + ((rand == 4) && g_bf4) || + ((rand == 5) && g_bh6) || + ((rand == 6) && g_bh1) || + ((rand == 7) && g_bf1) || + ((rand == 8) && g_bh5)); } while (test); - conv(cx, per); - affper(per); + int retVal = 0; + conv(rand, retVal); + affper(retVal); + + return retVal; } -void quelq20(int h, int &per) { +/** + * Engine function - Check who is in the chapel + * @remarks Originally called 'quelq20' + */ +int setPresenceChapel(int h) { + int retVal = 0; + if (((h >= 0) && (h < 10)) || ((h > 18) && (h < 24))) - per = chlm(); + retVal = chlm(); else { int min = 0, max = 0; if ((h > 9) && (h < 12)) { @@ -873,9 +919,11 @@ void quelq20(int h, int &per) { min = 2; max = 4; } - choix(min, max, per); + choix(min, max, retVal); } - affper(per); + affper(retVal); + + return retVal; } @@ -1022,7 +1070,7 @@ void inzon() { g_s._secretPassageObjectId = 0; g_s._purpleRoomObjectId = 136; g_s._cryptObjectId = 141; - g_s._conf = getRandomNumber(4, 10); + g_s._faithScore = getRandomNumber(4, 10); g_s._currPlace = MANOR_FRONT; for (int cx = 2; cx <= 6; ++cx) @@ -1072,7 +1120,7 @@ void pl1(int cf) { if (rand > p) person(); else - quelq1(g_li); + setPresenceGreenRoom(g_li); } } @@ -1085,7 +1133,7 @@ void pl2(int cf) { if (rand > p) person(); else - quelq2(); + setPresencePurpleRoom(); } } @@ -1098,7 +1146,7 @@ void pl5(int cf) { if (rand > p) person(); else - quelq5(); + setPresenceBlueRoom(); } } @@ -1111,7 +1159,7 @@ void pl6(int cf) { if (rand > p) person(); else - quelq6(g_li); + setPresenceRedRoom(g_li); } } @@ -1124,7 +1172,7 @@ void pl9(int cf) { if (rand > p) person(); else - quelq2(); + setPresencePurpleRoom(); } } @@ -1136,7 +1184,7 @@ void pl10(int cf) { if (rand > p) person(); else - quelq10(h, p); + p = setPresenceDiningRoom(h); } void pl11(int cf) { @@ -1147,7 +1195,7 @@ void pl11(int cf) { if (rand > p) person(); else - quelq11(h, p); + p = setPresenceBureau(h); } void pl12(int cf) { @@ -1158,7 +1206,7 @@ void pl12(int cf) { if (rand > p) person(); else - quelq12(p); + p = setPresenceKitchen(); } void pl13(int cf) { @@ -1169,7 +1217,7 @@ void pl13(int cf) { if (rand > p) person(); else - quelq12(p); + p = setPresenceKitchen(); } void pl15(int cf) { @@ -1180,7 +1228,7 @@ void pl15(int cf) { if (rand > p) person(); else - quelq15(p); + p = setPresenceLanding(); } void pl20(int cf) { @@ -1191,13 +1239,13 @@ void pl20(int cf) { if (rand > p) person(); else - quelq20(h, p); + p = setPresenceChapel(h); } void t11(int l11, int &a) { int p, rand; - ecfren(p, rand, g_s._conf, l11); + ecfren(p, rand, g_s._faithScore, l11); g_li = l11; if ((l11 > 0) && (l11 < 10)) { if (p != -500) { @@ -1229,22 +1277,22 @@ void t11(int l11, int &a) { cpl15(p); if (l11 == 20) cpl20(p, h); - p += g_s._conf; + p += g_s._faithScore; rand = getRandomNumber(1, 100); if (rand > p) { person(); a = 0; } else { if (l11 == 10) - quelq10(h, p); + p = setPresenceDiningRoom(h); if (l11 == 11) - quelq11(h, p); + p = setPresenceBureau(h); if ((l11 == 12) || (l11 == 13) || (l11 == 14)) - quelq12(p); + p = setPresenceKitchen(); if ((l11 == 15) || (l11 == 26)) - quelq15(p); + p = setPresenceLanding(); if (l11 == 20) - quelq20(h, p); + p = setPresenceChapel(h); a = p; } } @@ -1252,9 +1300,9 @@ void t11(int l11, int &a) { } void cavegre() { - g_s._conf += 2; - if (g_s._conf > 69) - g_s._conf += (g_s._conf / 10); + g_s._faithScore += 2; + if (g_s._faithScore > 69) + g_s._faithScore += (g_s._faithScore / 10); clsf3(); ecrf2(); ecr3(g_vm->getEngineString(S_SOMEONE_ENTERS)); diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 87238c4217..14172c74b8 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -80,15 +80,15 @@ extern void cpl12(int &p); extern void cpl13(int &p); extern void cpl15(int &p); extern void cpl20(int &p, int &h); -extern void quelq1(int l); -extern void quelq2(); -extern void quelq5(); -extern void quelq6(int l); -extern void quelq10(int h, int &per); -extern void quelq11(int h, int &per); -extern void quelq12(int &per); -extern void quelq15(int &per); -extern void quelq20(int h, int &per); +extern void setPresenceGreenRoom(int l); +extern void setPresencePurpleRoom(); +extern void setPresenceBlueRoom(); +extern void setPresenceRedRoom(int l); +extern int setPresenceDiningRoom(int h); +extern int setPresenceBureau(int h); +extern int setPresenceKitchen(); +extern int setPresenceLanding(); +extern int setPresenceChapel(int h); extern void frap(); extern void nouvp(int l, int &p); extern void tip(int ip, int &cx); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 28692eac83..a35a4e9860 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -101,7 +101,7 @@ void tinke() { g_t = ti2; else g_t = ti1; - cf = g_s._conf; + cf = g_s._faithScore; if ((cf > 33) && (cf < 66)) g_t -= (g_t / 3); @@ -313,10 +313,10 @@ void tperd() { void tsort() { if ((g_iouv > 0) && (g_s._currPlace != 0)) { - if (g_s._conf < 50) - g_s._conf += 2; + if (g_s._faithScore < 50) + g_s._faithScore += 2; else - g_s._conf += (g_s._conf / 10); + g_s._faithScore += (g_s._faithScore / 10); } for (int cx = 1; cx <= 7; ++cx) @@ -573,11 +573,11 @@ L1: parole(4, 4, 1); if (g_iouv == 0) - g_s._conf += 2; - else if (g_s._conf < 50) - g_s._conf += 4; + g_s._faithScore += 2; + else if (g_s._faithScore < 50) + g_s._faithScore += 4; else - g_s._conf += 3 * (g_s._conf / 10); + g_s._faithScore += 3 * (g_s._faithScore / 10); tsort(); tmlieu(15); int cx; @@ -625,7 +625,7 @@ void tsuiv() { g_caff = tbcl; g_crep = g_caff + 400; if (g_ipers != 0) - g_s._conf += 2; + g_s._faithScore += 2; } else { affrep(); endSearch(); diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 46bde5ee53..078813b9a0 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -228,14 +228,14 @@ void tsitu() { calch(j, h, m); if ((((h == 12) || (h == 13) || (h == 19)) && (g_s._currPlace != 10)) || ((h > 0) && (h < 6) && (g_s._currPlace != 0))) - ++g_s._conf; + ++g_s._faithScore; if (((g_s._currPlace < CRYPT) || (g_s._currPlace > MOUNTAIN)) && (g_s._currPlace != 23) && (g_s._currPlace != 0) && (g_s._selectedObjectId != 152) && (!g_vm->_loseGame)) { - if ((g_s._conf > 99) && (h > 8) && (h < 16)) { + if ((g_s._faithScore > 99) && (h > 8) && (h < 16)) { g_crep = 1501; tperd(); } - if ((g_s._conf > 99) && (h > 0) && (h < 9)) { + if ((g_s._faithScore > 99) && (h > 0) && (h < 9)) { g_crep = 1508; tperd(); } diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 386fd95ef5..a53d218c86 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -49,7 +49,7 @@ Common::String SavegameManager::generateSaveName(int slotNumber) { * Handle saving or loading savegame data */ void SavegameManager::sync_save(Common::Serializer &sz) { - sz.syncAsSint16LE(g_s1._conf); + sz.syncAsSint16LE(g_s1._faithScore); sz.syncBytes((byte *)&g_s1._pourc[0], 11); sz.syncBytes((byte *)&g_s1._teauto[0], 43); sz.syncBytes((byte *)&g_s1._sjer[0], 31); diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 8c661437a9..11bc4e0fe4 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -161,7 +161,7 @@ enum places { }; struct sav_chaine { - int _conf; + int _faithScore; byte _pourc[11]; byte _teauto[43]; byte _sjer[31]; -- cgit v1.2.3 From d5c02ab69c482523dbce82007385363cc8da142c Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 5 Mar 2012 21:25:07 +1100 Subject: MORTEVIELLE: Properly implement transparency when drawing images --- engines/mortevielle/graphics.cpp | 25 ++++++++++++++++--------- engines/mortevielle/graphics.h | 2 ++ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index ce02915208..775075c35f 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -83,6 +83,8 @@ void PaletteManager::setDefaultPalette() { void GfxSurface::decode(const byte *pSrc) { _width = _height = 0; + // If no transparency, use invalid (for EGA) palette index of 16. Otherwise get index to use + _transparency = (*pSrc == 0) ? 16 : *(pSrc + 2); bool offsetFlag = *pSrc++ == 0; int entryCount = *pSrc++; pSrc += 2; @@ -114,7 +116,7 @@ void GfxSurface::decode(const byte *pSrc) { // Temporary output buffer byte outputBuffer[65536]; - Common::fill(&outputBuffer[0], &outputBuffer[65536], 0); + Common::fill(&outputBuffer[0], &outputBuffer[65536], _transparency); byte *pDest = &outputBuffer[0]; const byte *pSrcStart = pSrc; @@ -922,15 +924,20 @@ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { byte *pDest = (byte *)destSurface.getBasePtr(0, yp * 2); for (int xp = 0; xp < surface.w; ++xp, ++pSrc) { - // Draw the pixel using the specified index in the palette map - *pDest = paletteMap[*pSrc * 2]; - *(pDest + SCREEN_WIDTH) = paletteMap[*pSrc * 2]; - ++pDest; + if (*pSrc == surface._transparency) { + // Transparent point, so skip pixels + pDest += 2; + } else { + // Draw the pixel using the specified index in the palette map + *pDest = paletteMap[*pSrc * 2]; + *(pDest + SCREEN_WIDTH) = paletteMap[*pSrc * 2]; + ++pDest; - // Use the secondary mapping value to draw the secondary column pixel - *pDest = paletteMap[*pSrc * 2 + 1]; - *(pDest + SCREEN_WIDTH) = paletteMap[*pSrc * 2 + 1]; - ++pDest; + // Use the secondary mapping value to draw the secondary column pixel + *pDest = paletteMap[*pSrc * 2 + 1]; + *(pDest + SCREEN_WIDTH) = paletteMap[*pSrc * 2 + 1]; + ++pDest; + } } } } diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 28a9d64b7c..253b708d70 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -67,6 +67,8 @@ private: public: // Specifies offset when drawing the image Common::Point _offset; + // Transparency palette index + int _transparency; public: ~GfxSurface(); -- cgit v1.2.3 From 83c32aeb2ab4b91a42d5be08dbbd48e78d69b148 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 5 Mar 2012 21:43:22 +1100 Subject: MORTEVIELLE: Bugfixes for correctly displaying people present in a room --- engines/mortevielle/actions.cpp | 4 ++-- engines/mortevielle/mor.cpp | 42 ++++++++++++++++++++--------------------- engines/mortevielle/mor.h | 2 +- engines/mortevielle/mor2.cpp | 2 +- engines/mortevielle/prog.cpp | 2 +- 5 files changed, 26 insertions(+), 26 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 22c12d6a67..01dd5b4665 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -709,7 +709,7 @@ void fctPlace() { tinke(); drawClock(); if (g_ipers != 0) - affper(g_ipers); + showPeoplePresent(g_ipers); else person(); @@ -1523,7 +1523,7 @@ void fctDiscuss() { hirs(); dessine_rouleau(); showMouse(); - affper(g_ipers); + showPeoplePresent(g_ipers); tinke(); drawClock(); affrep(); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 82d0ef1979..e2a7facfcf 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -247,12 +247,7 @@ void clsf10() { g_vm->_screenSurface.putxy(co, 92); g_vm->_screenSurface.writeg(st, 4); - if (g_res == 1) - co = 620; - else - co = 584; - - g_vm->_screenSurface.fillRect(15, Common::Rect(560, 24, co, 86)); + g_vm->_screenSurface.fillRect(15, Common::Rect(560, 24, 610, 86)); /* rempli(69,12,32,5,255);*/ showMouse(); } @@ -412,49 +407,54 @@ void t5(int cx) { g_bh9 = false; } -void affper(int per) { +/** + * Engine function - Show the people present in the given room + * @remarks Originally called 'affper' + */ +void showPeoplePresent(int per) { int cx; + int xp = 580 - (g_vm->_screenSurface.getStringWidth("LEO") / 2); for (cx = 1; cx <= 8; ++cx) g_vm->_menu.disableMenuItem(g_vm->_menu._discussMenu[cx]); clsf10(); if ((per & 128) == 128) { - g_vm->_screenSurface.putxy(560, 24); + g_vm->_screenSurface.putxy(xp, 24); g_vm->_screenSurface.writeg("LEO", 4); g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[1]); } if ((per & 64) == 64) { - g_vm->_screenSurface.putxy(560, 32); + g_vm->_screenSurface.putxy(xp, 32); g_vm->_screenSurface.writeg("PAT", 4); g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[2]); } if ((per & 32) == 32) { - g_vm->_screenSurface.putxy(560, 40); + g_vm->_screenSurface.putxy(xp, 40); g_vm->_screenSurface.writeg("GUY", 4); g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[3]); } if ((per & 16) == 16) { - g_vm->_screenSurface.putxy(560, 48); + g_vm->_screenSurface.putxy(xp, 48); g_vm->_screenSurface.writeg("EVA", 4); g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[4]); } if ((per & 8) == 8) { - g_vm->_screenSurface.putxy(560, 56); + g_vm->_screenSurface.putxy(xp, 56); g_vm->_screenSurface.writeg("BOB", 4); g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[5]); } if ((per & 4) == 4) { - g_vm->_screenSurface.putxy(560, 64); + g_vm->_screenSurface.putxy(xp, 64); g_vm->_screenSurface.writeg("LUC", 4); g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[6]); } if ((per & 2) == 2) { - g_vm->_screenSurface.putxy(560, 72); + g_vm->_screenSurface.putxy(xp, 72); g_vm->_screenSurface.writeg("IDA", 4); g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[7]); } if ((per & 1) == 1) { - g_vm->_screenSurface.putxy(560, 80); + g_vm->_screenSurface.putxy(xp, 80); g_vm->_screenSurface.writeg("MAX", 4); g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[8]); } @@ -828,7 +828,7 @@ int setPresenceDiningRoom(int h) { } choix(min, max, retVal); } - affper(retVal); + showPeoplePresent(retVal); return retVal; } @@ -856,7 +856,7 @@ int setPresenceBureau(int h) { } choix(min, max, retVal); } - affper(retVal); + showPeoplePresent(retVal); return retVal; } @@ -867,7 +867,7 @@ int setPresenceBureau(int h) { */ int setPresenceKitchen() { int retVal = chlm(); - affper(retVal); + showPeoplePresent(retVal); return retVal; } @@ -893,7 +893,7 @@ int setPresenceLanding() { int retVal = 0; conv(rand, retVal); - affper(retVal); + showPeoplePresent(retVal); return retVal; } @@ -921,7 +921,7 @@ int setPresenceChapel(int h) { } choix(min, max, retVal); } - affper(retVal); + showPeoplePresent(retVal); return retVal; } @@ -965,7 +965,7 @@ void nouvp(int l, int &p) { p = 9; if (p != 9) - affper(p); + showPeoplePresent(p); } diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 14172c74b8..514bd73d98 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -60,7 +60,7 @@ extern void conv(int x, int &y); extern void modobj(int m); extern void repon(int f, int m); extern void t5(int cx); -extern void affper(int per); +extern void showPeoplePresent(int per); extern void choix(int min, int max, int &per); extern void cpl1(int &p); extern void cpl2(int &p); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index a35a4e9860..25793c817f 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -490,7 +490,7 @@ void t1sama() { //Entering manor st1sama(); } else if (!g_s._ipre) { //Is it your first time? g_ipers = 255; - affper(g_ipers); + showPeoplePresent(g_ipers); g_caff = 77; afdes(0); g_vm->_screenSurface.drawBox(223, 47, 155, 91, 15); diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 078813b9a0..606b417cef 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -53,7 +53,7 @@ void changeGraphicalDevice(int newDevice) { tinke(); drawClock(); if (g_ipers != 0) - affper(g_ipers); + showPeoplePresent(g_ipers); else person(); clsf2(); -- cgit v1.2.3 From ec71b9bfd6d557888ccb63cb0b58291929169267 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 5 Mar 2012 22:07:17 +1100 Subject: MORTEVIELLE: Bugfix to ignore previous mouse click when waiting in tkey1 --- engines/mortevielle/mor2.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 25793c817f..c98b399114 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -220,9 +220,16 @@ void tkey1(bool d) { hideMouse(); fenat('K'); + + // Wait for release from any key or mouse button while (keypressed()) g_key = testou(); - + do { + getMousePos(x, y, c); + keypressed(); + } while (c != 0); + + // Event loop do { if (d) tinke(); -- cgit v1.2.3 From 203dcdaf4afdf42024fa013a1375a8865bf34875 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 5 Mar 2012 22:35:32 +1100 Subject: MORTEVIELLE: Added extra width to the Self menu for the English version --- engines/mortevielle/menu.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 3abe06aa11..b60c70b4af 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -295,6 +295,10 @@ void Menu::menuDown(int ii) { else cx = 6; xcc = xco + (g_menuConstants[ii - 1][2] * cx) + 6; + if ((ii == 4) && (g_vm->getLanguage() == Common::EN_ANY)) + // Extra width needed for Self menu in English version + xcc = 435; + g_vm->_screenSurface.fillRect(15, Common::Rect(xco, 12, xcc, 10 + (g_menuConstants[ii - 1][1] << 1))); g_vm->_screenSurface.fillRect(0, Common::Rect(xcc, 12, xcc + 4, 10 + (g_menuConstants[ii - 1][1] << 1))); g_vm->_screenSurface.fillRect(0, Common::Rect(xco, 8 + (g_menuConstants[ii - 1][1] << 1), xcc + 4, 12 + (g_menuConstants[ii - 1][1] << 1))); -- cgit v1.2.3 From b40b00b1c46a615ea346f6eea4c6f42f2d4e356d Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 5 Mar 2012 23:59:21 +0100 Subject: MORTEVIELLE: Some more renaming --- engines/mortevielle/actions.cpp | 8 +- engines/mortevielle/mor.cpp | 441 +++++++++++++++++++++------------------- engines/mortevielle/mor.h | 32 +-- engines/mortevielle/mor2.cpp | 27 ++- engines/mortevielle/prog.cpp | 33 ++- engines/mortevielle/taffich.cpp | 2 +- 6 files changed, 282 insertions(+), 261 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 01dd5b4665..0bcfd67046 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -711,7 +711,7 @@ void fctPlace() { if (g_ipers != 0) showPeoplePresent(g_ipers); else - person(); + displayAloneText(); g_vm->_menu.displayMenu(); if (enterPassageFl) { @@ -1063,7 +1063,7 @@ void fctListen() { else { becfren(l); int j, h, m; - calch(j, h, m); + updateHour(j, h, m); rand = getRandomNumber(1, 100); if ((h >= 0) && (h < 8)) { if (rand > 30) @@ -1096,7 +1096,7 @@ void fctEat() { tmlieu(g_s._currPlace); int j, h, m; - calch(j, h, m); + updateHour(j, h, m); if ((h == 12) || (h == 13) || (h == 19)) { g_s._faithScore -= (g_s._faithScore / 7); if (h == 12) { @@ -1204,7 +1204,7 @@ void fctSleep() { clsf2(); ecrf2(); ecr2(g_vm->getEngineString(S_WANT_TO_WAKE_UP)); - calch(j, h, m); + updateHour(j, h, m); int answer; do { diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index e2a7facfcf..ef5800e993 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -269,17 +269,21 @@ void paint_rect(int x, int y, int dx, int dy) { g_vm->_screenSurface.fillRect(co, Common::Rect(x, y, x + dx, y + dy)); } -void calch(int &j, int &h, int &m) { - int nh = readclock(); - int th = g_jh + ((nh - g_mh) / g_t); - m = ((th % 2) + g_vm__) * 30; - h = ((uint)th >> 1) + g_vh; - if (m == 60) { - m = 0; - h = h + 1; +/** + * Engine function - Update hour + * @remarks Originally called 'calch' + */ +void updateHour(int &day, int &hour, int &minute) { + int newHour = readclock(); + int th = g_jh + ((newHour - g_mh) / g_t); + minute = ((th % 2) + g_vm__) * 30; + hour = ((uint)th >> 1) + g_vh; + if (minute == 60) { + minute = 0; + ++hour; } - j = (h / 24) + g_vj; - h = h - ((j - g_vj) * 24); + day = (hour / 24) + g_vj; + hour = hour - ((day - g_vj) * 24); } void conv(int x, int &y) { @@ -486,90 +490,106 @@ void choix(int min, int max, int &per) { per = 255 - per; } -void cpl1(int &p) { - int j, h, m; +int cpl1() { + int day, hour, minute; + int retVal = 0; - calch(j, h, m); + updateHour(day, hour, minute); // The original uses an || instead of an &&, resulting // in an always true condition. Based on the other tests, // and on other scenes, we use an && instead. - // if ((h > 7) || (h < 11)) - if ((h > 7) && (h < 11)) - p = 25; - else if ((h > 10) && (h < 14)) - p = 35; - else if ((h > 13) && (h < 16)) - p = 50; - else if ((h > 15) && (h < 18)) - p = 5; - else if ((h > 17) && (h < 22)) - p = 35; - else if ((h > 21) && (h < 24)) - p = 50; - else if ((h >= 0) && (h < 8)) - p = 70; + if ((hour > 7) && (hour < 11)) + retVal = 25; + else if ((hour > 10) && (hour < 14)) + retVal = 35; + else if ((hour > 13) && (hour < 16)) + retVal = 50; + else if ((hour > 15) && (hour < 18)) + retVal = 5; + else if ((hour > 17) && (hour < 22)) + retVal = 35; + else if ((hour > 21) && (hour < 24)) + retVal = 50; + else if ((hour >= 0) && (hour < 8)) + retVal = 70; g_vm->_menu.mdn(); + + return retVal; } -void cpl2(int &p) { - int j, h, m; +int cpl2() { + int day, hour, minute; + int retVal = 0; - calch(j, h, m); - if ((h > 7) && (h < 11)) - p = -2; - if (h == 11) - p = 100; - if ((h > 11) && (h < 23)) - p = 10; - if (h == 23) - p = 20; - if ((h >= 0) && (h < 8)) - p = 50; + updateHour(day, hour, minute); + if ((hour > 7) && (hour < 11)) + retVal = -2; + else if (hour == 11) + retVal = 100; + else if ((hour > 11) && (hour < 23)) + retVal = 10; + else if (hour == 23) + retVal = 20; + else if ((hour >= 0) && (hour < 8)) + retVal = 50; + + return retVal; } -void cpl3(int &p) { - int j, h, m; +int cpl3() { + int day, hour, minute; + int retVal = 0; - calch(j, h, m); - if (((h > 8) && (h < 10)) || ((h > 19) && (h < 24))) - p = 34; - if (((h > 9) && (h < 20)) || ((h >= 0) && (h < 9))) - p = 0; + updateHour(day, hour, minute); + if (((hour > 8) && (hour < 10)) || ((hour > 19) && (hour < 24))) + retVal = 34; + else if (((hour > 9) && (hour < 20)) || ((hour >= 0) && (hour < 9))) + retVal = 0; + + return retVal; } -void cpl5(int &p) { - int j, h, m; +int cpl5() { + int day, hour, minute; + int retVal = 0; - calch(j, h, m); - if ((h > 6) && (h < 10)) - p = 0; - if (h == 10) - p = 100; - if ((h > 10) && (h < 24)) - p = 15; - if ((h >= 0) && (h < 7)) - p = 50; + updateHour(day, hour, minute); + if ((hour > 6) && (hour < 10)) + retVal = 0; + else if (hour == 10) + retVal = 100; + else if ((hour > 10) && (hour < 24)) + retVal = 15; + else if ((hour >= 0) && (hour < 7)) + retVal = 50; + + return retVal; } -void cpl6(int &p) { - int j, h, m; +int cpl6() { + int day, hour, minute; + int retVal = 0; - calch(j, h, m); - if (((h > 7) && (h < 13)) || ((h > 17) && (h < 20))) - p = -2; - if (((h > 12) && (h < 17)) || ((h > 19) && (h < 24))) - p = 35; - if (h == 17) - p = 100; - if ((h >= 0) && (h < 8)) - p = 60; + updateHour(day, hour, minute); + if (((hour > 7) && (hour < 13)) || ((hour > 17) && (hour < 20))) + retVal = -2; + else if (((hour > 12) && (hour < 17)) || ((hour > 19) && (hour < 24))) + retVal = 35; + else if (hour == 17) + retVal = 100; + else if ((hour >= 0) && (hour < 8)) + retVal = 60; + + return retVal; } /** - * Shows the you are alone message in the status area on the right hand side of the screen + * Shows the "you are alone" message in the status area + * on the right hand side of the screen + * @remarks Originally called 'person' */ -void person() { +void displayAloneText() { for (int cf = 1; cf <= 8; ++cf) g_vm->_menu.disableMenuItem(g_vm->_menu._discussMenu[cf]); @@ -660,89 +680,95 @@ void debloc(int l) { g_mpers = g_ipers; } -void cpl10(int &p, int &h) { - int j, m; +void cpl10(int &p, int &hour) { + int day, minute; - calch(j, h, m); - if (((h > 7) && (h < 11)) || ((h > 11) && (h < 14)) || ((h > 18) && (h < 21))) + updateHour(day, hour, minute); + if (((hour > 7) && (hour < 11)) || ((hour > 11) && (hour < 14)) || ((hour > 18) && (hour < 21))) p = 100; - if ((h == 11) || ((h > 20) && (h < 24))) + else if ((hour == 11) || ((hour > 20) && (hour < 24))) p = 45; - if (((h > 13) && (h < 17)) || (h == 18)) + else if (((hour > 13) && (hour < 17)) || (hour == 18)) p = 35; - if (h == 17) + else if (hour == 17) p = 60; - if ((h >= 0) && (h < 8)) + else if ((hour >= 0) && (hour < 8)) p = 5; } -void cpl11(int &p, int &h) { - int j, m; +void cpl11(int &p, int &hour) { + int day, minute; - calch(j, h, m); - if (((h > 8) && (h < 12)) || ((h > 20) && (h < 24))) + updateHour(day, hour, minute); + if (((hour > 8) && (hour < 12)) || ((hour > 20) && (hour < 24))) p = 25; - if (((h > 11) && (h < 14)) || ((h > 18) && (h < 21))) + else if (((hour > 11) && (hour < 14)) || ((hour > 18) && (hour < 21))) p = 5; - if ((h > 13) && (h < 17)) + else if ((hour > 13) && (hour < 17)) p = 55; - if ((h > 16) && (h < 19)) + else if ((hour > 16) && (hour < 19)) p = 45; - if ((h >= 0) && (h < 9)) + else if ((hour >= 0) && (hour < 9)) p = 0; } -void cpl12(int &p) { - int j, h, m; +int cpl12() { + int day, hour, minute; + int retVal = 0; - calch(j, h, m); - if (((h > 8) && (h < 15)) || ((h > 16) && (h < 22))) - p = 55; - if (((h > 14) && (h < 17)) || ((h > 21) && (h < 24))) - p = 25; - if ((h >= 0) && (h < 5)) - p = 0; - if ((h > 4) && (h < 9)) - p = 15; + updateHour(day, hour, minute); + if (((hour > 8) && (hour < 15)) || ((hour > 16) && (hour < 22))) + retVal = 55; + else if (((hour > 14) && (hour < 17)) || ((hour > 21) && (hour < 24))) + retVal = 25; + else if ((hour >= 0) && (hour < 5)) + retVal = 0; + else if ((hour > 4) && (hour < 9)) + retVal = 15; + + return retVal; } -void cpl13(int &p) { - p = 0; +int cpl13() { + return 0; } -void cpl15(int &p) { - int j, h, m; +int cpl15() { + int day, hour, minute; + int retVal = 0; - calch(j, h, m); - if ((h > 7) && (h < 12)) - p = 25; - else if ((h > 11) && (h < 14)) - p = 0; - else if ((h > 13) && (h < 18)) - p = 10; - else if ((h > 17) && (h < 20)) - p = 55; - else if ((h > 19) && (h < 22)) - p = 5; - else if ((h > 21) && (h < 24)) - p = 15; - else if ((h >= 0) && (h < 8)) - p = -15; + updateHour(day, hour, minute); + if ((hour > 7) && (hour < 12)) + retVal = 25; + else if ((hour > 11) && (hour < 14)) + retVal = 0; + else if ((hour > 13) && (hour < 18)) + retVal = 10; + else if ((hour > 17) && (hour < 20)) + retVal = 55; + else if ((hour > 19) && (hour < 22)) + retVal = 5; + else if ((hour > 21) && (hour < 24)) + retVal = 15; + else if ((hour >= 0) && (hour < 8)) + retVal = -15; + + return retVal; } -void cpl20(int &p, int &h) { - int j, m; +void cpl20(int &p, int &hour) { + int day, minute; - calch(j, h, m); - if (h == 10) + updateHour(day, hour, minute); + if (hour == 10) p = 65; - else if ((h > 10) && (h < 21)) + else if ((hour > 10) && (hour < 21)) p = 5; - else if ((h > 20) && (h < 24)) + else if ((hour > 20) && (hour < 24)) p = -15; - else if ((h >= 0) && (h < 5)) + else if ((hour >= 0) && (hour < 5)) p = -300; - else if ((h > 4) && (h < 10)) + else if ((hour > 4) && (hour < 10)) p = -5; } @@ -806,23 +832,23 @@ void setPresenceRedRoom(int l) { * Engine function - Check who is in the Dining Room * @remarks Originally called 'quelq10' */ -int setPresenceDiningRoom(int h) { +int setPresenceDiningRoom(int hour) { int retVal = 0; - if ((h >= 0) && (h < 8)) + if ((hour >= 0) && (hour < 8)) retVal = chlm(); else { int min = 0, max = 0; - if ((h > 7) && (h < 10)) { + if ((hour > 7) && (hour < 10)) { min = 5; max = 7; - } else if ((h > 9) && (h < 12)) { + } else if ((hour > 9) && (hour < 12)) { min = 1; max = 4; - } else if (((h > 11) && (h < 15)) || ((h > 18) && (h < 21))) { + } else if (((hour > 11) && (hour < 15)) || ((hour > 18) && (hour < 21))) { min = 6; max = 8; - } else if (((h > 14) && (h < 19)) || ((h > 20) && (h < 24))) { + } else if (((hour > 14) && (hour < 19)) || ((hour > 20) && (hour < 24))) { min = 1; max = 5; } @@ -837,20 +863,20 @@ int setPresenceDiningRoom(int h) { * Engine function - Check who is in the Bureau * @remarks Originally called 'quelq11' */ -int setPresenceBureau(int h) { +int setPresenceBureau(int hour) { int retVal = 0; - if ((h >= 0) && (h < 8)) + if ((hour >= 0) && (hour < 8)) retVal = chlm(); else { int min = 0, max = 0; - if (((h > 7) && (h < 10)) || ((h > 20) && (h < 24))) { + if (((hour > 7) && (hour < 10)) || ((hour > 20) && (hour < 24))) { min = 1; max = 3; - } else if (((h > 9) && (h < 12)) || ((h > 13) && (h < 19))) { + } else if (((hour > 9) && (hour < 12)) || ((hour > 13) && (hour < 19))) { min = 1; max = 4; - } else if (((h > 11) && (h < 14)) || ((h > 18) && (h < 21))) { + } else if (((hour > 11) && (hour < 14)) || ((hour > 18) && (hour < 21))) { min = 1; max = 2; } @@ -902,20 +928,20 @@ int setPresenceLanding() { * Engine function - Check who is in the chapel * @remarks Originally called 'quelq20' */ -int setPresenceChapel(int h) { +int setPresenceChapel(int hour) { int retVal = 0; - if (((h >= 0) && (h < 10)) || ((h > 18) && (h < 24))) + if (((hour >= 0) && (hour < 10)) || ((hour > 18) && (hour < 24))) retVal = chlm(); else { int min = 0, max = 0; - if ((h > 9) && (h < 12)) { + if ((hour > 9) && (hour < 12)) { min = 3; max = 7; - } else if ((h > 11) && (h < 18)) { + } else if ((hour > 11) && (hour < 18)) { min = 1; max = 2; - } else if (h == 18) { + } else if (hour == 18) { min = 2; max = 4; } @@ -928,10 +954,10 @@ int setPresenceChapel(int h) { void frap() { - int j, h, m; + int day, hour, minute; - calch(j, h, m); - if ((h >= 0) && (h < 8)) + updateHour(day, hour, minute); + if ((hour >= 0) && (hour < 8)) g_crep = 190; else { if (getRandomNumber(1, 100) > 70) @@ -992,25 +1018,25 @@ void tip(int ip, int &cx) { void ecfren(int &p, int &rand, int cf, int l) { if (l == 0) - person(); + displayAloneText(); p = -500; rand = 0; if (((l == 1) && (!g_bh1) && (!g_bf1)) || ((l == 4) && (!g_bh4) && (!g_bf4))) - cpl1(p); + p = cpl1(); if ((l == 2) && (!g_bh2) && (!g_bh9)) - cpl2(p); + p = cpl2(); if (((l == 3) && (!g_bt3)) || ((l == 7) && (!g_bt7))) - cpl3(p); + p = cpl3(); if ((l == 5) && (!g_bh5)) - cpl5(p); + p = cpl5(); if (((l == 6) && (!g_bh6)) || ((l == 8) && (!g_bh8))) - cpl6(p); + p = cpl6(); if ((l == 9) && (!g_bh9) && (!g_bh2)) p = 10; if (((l == 2) && (g_bh9)) || ((l == 9) && (g_bh2))) p = -400; if (p != -500) { - p = p + cf; + p += cf; rand = getRandomNumber(1, 100); } } @@ -1113,12 +1139,12 @@ void dprog() { void pl1(int cf) { if (((g_li == 1) && (!g_bh1) && (!g_bf1)) || ((g_li == 4) && (!g_bh4) && (!g_bf4))) { - int p, rand; - cpl1(p); + int p = cpl1(); + int rand; phaz(rand, p, cf); if (rand > p) - person(); + displayAloneText(); else setPresenceGreenRoom(g_li); } @@ -1126,12 +1152,12 @@ void pl1(int cf) { void pl2(int cf) { if (!g_bh2) { - int p, rand; - cpl2(p); + int p = cpl2(); + int rand; phaz(rand, p, cf); if (rand > p) - person(); + displayAloneText(); else setPresencePurpleRoom(); } @@ -1139,12 +1165,13 @@ void pl2(int cf) { void pl5(int cf) { if (!g_bh5) { - int p, rand; - cpl5(p); + int p = cpl5(); + int rand; + phaz(rand, p, cf); if (rand > p) - person(); + displayAloneText(); else setPresenceBlueRoom(); } @@ -1152,12 +1179,13 @@ void pl5(int cf) { void pl6(int cf) { if (((g_li == 6) && (!g_bh6)) || ((g_li == 8) && (!g_bh8))) { - int p, rand; - cpl6(p); + int p = cpl6(); + int rand; + phaz(rand, p, cf); if (rand > p) - person(); + displayAloneText(); else setPresenceRedRoom(g_li); } @@ -1170,7 +1198,7 @@ void pl9(int cf) { phaz(rand, p, cf); if (rand > p) - person(); + displayAloneText(); else setPresencePurpleRoom(); } @@ -1182,9 +1210,9 @@ void pl10(int cf) { phaz(rand, p, cf); if (rand > p) - person(); + displayAloneText(); else - p = setPresenceDiningRoom(h); + setPresenceDiningRoom(h); } void pl11(int cf) { @@ -1193,42 +1221,42 @@ void pl11(int cf) { cpl11(p, h); phaz(rand, p, cf); if (rand > p) - person(); + displayAloneText(); else - p = setPresenceBureau(h); + setPresenceBureau(h); } void pl12(int cf) { int p, rand; - cpl12(p); + p = cpl12(); phaz(rand, p, cf); if (rand > p) - person(); + displayAloneText(); else - p = setPresenceKitchen(); + setPresenceKitchen(); } void pl13(int cf) { int p, rand; - cpl13(p); + p = cpl13(); phaz(rand, p, cf); if (rand > p) - person(); + displayAloneText(); else - p = setPresenceKitchen(); + setPresenceKitchen(); } void pl15(int cf) { int p, rand; - cpl15(p); + p = cpl15(); phaz(rand, p, cf); if (rand > p) - person(); + displayAloneText(); else - p = setPresenceLanding(); + setPresenceLanding(); } void pl20(int cf) { @@ -1237,9 +1265,9 @@ void pl20(int cf) { cpl20(p, h); phaz(rand, p, cf); if (rand > p) - person(); + displayAloneText(); else - p = setPresenceChapel(h); + setPresenceChapel(h); } void t11(int l11, int &a) { @@ -1250,7 +1278,7 @@ void t11(int l11, int &a) { if ((l11 > 0) && (l11 < 10)) { if (p != -500) { if (rand > p) { - person(); + displayAloneText(); a = 0; } else { becfren(g_li); @@ -1262,36 +1290,36 @@ void t11(int l11, int &a) { if (l11 > 9) { if ((l11 > 15) && (l11 != 20) && (l11 != 26)) - person(); + displayAloneText(); else { int h = 0; if (l11 == 10) cpl10(p, h); - if (l11 == 11) + else if (l11 == 11) cpl11(p, h); - if (l11 == 12) - cpl12(p); - if ((l11 == 13) || (l11 == 14)) - cpl13(p); - if ((l11 == 15) || (l11 == 26)) - cpl15(p); - if (l11 == 20) + else if (l11 == 12) + p = cpl12(); + else if ((l11 == 13) || (l11 == 14)) + p = cpl13(); + else if ((l11 == 15) || (l11 == 26)) + p = cpl15(); + else if (l11 == 20) cpl20(p, h); p += g_s._faithScore; rand = getRandomNumber(1, 100); if (rand > p) { - person(); + displayAloneText(); a = 0; } else { if (l11 == 10) p = setPresenceDiningRoom(h); - if (l11 == 11) + else if (l11 == 11) p = setPresenceBureau(h); - if ((l11 == 12) || (l11 == 13) || (l11 == 14)) + else if ((l11 == 12) || (l11 == 13) || (l11 == 14)) p = setPresenceKitchen(); - if ((l11 == 15) || (l11 == 26)) + else if ((l11 == 15) || (l11 == 26)) p = setPresenceLanding(); - if (l11 == 20) + else if (l11 == 20) p = setPresenceChapel(h); a = p; } @@ -1313,7 +1341,7 @@ void cavegre() { // It has been removed clsf3(); - person(); + displayAloneText(); } void writetp(Common::String s, int t) { @@ -1329,8 +1357,7 @@ void aniof(int ouf, int num) { if ((g_caff == 10) && (num == 7)) num = 6; - - if (g_caff == 12) { + else if (g_caff == 12) { if (num == 3) num = 4; else if (num == 4) @@ -1362,24 +1389,23 @@ void musique(int so) { i = true; } } - if (g_s._currPlace == CHAPEL) { + else if (g_s._currPlace == CHAPEL) { if (getRandomNumber(1, 2) == 1) { parole(8, 1, 1); i = true; } } - - if (g_s._currPlace == WELL) { + else if (g_s._currPlace == WELL) { if (getRandomNumber(1, 2) == 2) { parole(12, 1, 1); i = true; } } - - if (g_s._currPlace == 23) { + else if (g_s._currPlace == 23) { parole(13, 1, 1); i = true; } + if (!i) parole(getRandomNumber(1, 17), 1, 2); } @@ -1412,14 +1438,11 @@ void dessin(int ad) { if (g_s._atticRodHoleObjectId == 159) aniof(1, 6); - } - if ((g_caff == 14) && (g_s._cellarObjectId == 151)) + } else if ((g_caff == 14) && (g_s._cellarObjectId == 151)) aniof(1, 2); - - if ((g_caff == 17) && (g_s._secretPassageObjectId == 143)) + else if ((g_caff == 17) && (g_s._secretPassageObjectId == 143)) aniof(1, 1); - - if ((g_caff == 24) && (g_s._wellObjectId != 0)) + else if ((g_caff == 24) && (g_s._wellObjectId != 0)) aniof(1, 1); } diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 514bd73d98..066392c879 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -54,7 +54,7 @@ extern void ecrf7(); extern void clsf10(); extern void stop(); extern void paint_rect(int x, int y, int dx, int dy); -extern void calch(int &j, int &h, int &m); +extern void updateHour(int &day, int &hour, int &minute); extern void conv(int x, int &y); /* NIVEAU 12 */ extern void modobj(int m); @@ -62,33 +62,33 @@ extern void repon(int f, int m); extern void t5(int cx); extern void showPeoplePresent(int per); extern void choix(int min, int max, int &per); -extern void cpl1(int &p); -extern void cpl2(int &p); -extern void cpl3(int &p); -extern void cpl5(int &p); -extern void cpl6(int &p); -extern void person(); +extern int cpl1(); +extern int cpl2(); +extern int cpl3(); +extern int cpl5(); +extern int cpl6(); +extern void displayAloneText(); extern int chlm(); extern void drawClock(); /************* * NIVEAU 11 * *************/ extern void debloc(int l); -extern void cpl10(int &p, int &h); -extern void cpl11(int &p, int &h); -extern void cpl12(int &p); -extern void cpl13(int &p); -extern void cpl15(int &p); -extern void cpl20(int &p, int &h); +extern void cpl10(int &p, int &hour); +extern void cpl11(int &p, int &hour); +extern int cpl12(); +extern int cpl13(); +extern int cpl15(); +extern void cpl20(int &p, int &hour); extern void setPresenceGreenRoom(int l); extern void setPresencePurpleRoom(); extern void setPresenceBlueRoom(); extern void setPresenceRedRoom(int l); -extern int setPresenceDiningRoom(int h); -extern int setPresenceBureau(int h); +extern int setPresenceDiningRoom(int hour); +extern int setPresenceBureau(int hour); extern int setPresenceKitchen(); extern int setPresenceLanding(); -extern int setPresenceChapel(int h); +extern int setPresenceChapel(int hour); extern void frap(); extern void nouvp(int l, int &p); extern void tip(int ip, int &cx); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index c98b399114..8776336002 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -46,13 +46,13 @@ void tinke() { const char d4 = ']'; const char d5 = '1'; Common::String d6 = g_vm->getEngineString(S_OK); - int cx, cf, j, h, m; + int cx, cf, day, hour, minute; Common::String stpo; g_anyone = false; - calch(j, h, m); - if (j != g_day) { - g_day = j; + updateHour(day, hour, minute); + if (day != g_day) { + g_day = day; cx = 0; do { ++cx; @@ -61,8 +61,8 @@ void tinke() { g_nbrep[cx] = 0; } while (cx != 8); } - if ((h > g_hour) || ((h == 0) && (g_hour == 23))) { - g_hour = h; + if ((hour > g_hour) || ((hour == 0) && (g_hour == 23))) { + g_hour = hour; g_minute = 0; drawClock(); cf = 0; @@ -89,7 +89,7 @@ void tinke() { g_hintPctMessage += d6; g_hintPctMessage += d4; } - if (m > g_minute) { + if (minute > g_minute) { g_minute = 30; drawClock(); } @@ -97,7 +97,7 @@ void tinke() { return; if (!g_blo) { - if ((h == 12) || ((h > 18) && (h < 21)) || ((h >= 0) && (h < 7))) + if ((hour == 12) || ((hour > 18) && (hour < 21)) || ((hour >= 0) && (hour < 7))) g_t = ti2; else g_t = ti1; @@ -484,10 +484,10 @@ void ajjer(int ob) { } void t1sama() { //Entering manor - int j, h, m; + int day, hour, minute; - calch(j, h, m); - if ((h < 5) && (g_s._currPlace > 18)) { + updateHour(day, hour, minute); + if ((hour < 5) && (g_s._currPlace > 18)) { bool d; cherjer(137, d); if (!d) { //You don't have the keys, and it's late @@ -515,11 +515,10 @@ void t1sama() { //Entering manor affrep(); t5(10); if (!g_blo) - t11(0, m); + t11(0, minute); g_ipers = 0; g_mpers = 0; g_s._ipre = true; - /*chech;*/ } else st1sama(); } @@ -605,7 +604,7 @@ L1: int rand = (getRandomNumber(0, 4)) - 2; parole(3, rand, 1); clsf2(); - person(); + displayAloneText(); debloc(21); affrep(); } diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 606b417cef..f011cc891f 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -55,7 +55,7 @@ void changeGraphicalDevice(int newDevice) { if (g_ipers != 0) showPeoplePresent(g_ipers); else - person(); + displayAloneText(); clsf2(); clsf3(); g_maff = 68; @@ -115,7 +115,7 @@ void MortevielleEngine::gameLoaded() { _loseGame = false; g_heroSearching = false; - person(); + displayAloneText(); tinke(); drawClock(); afdes(0); @@ -133,19 +133,17 @@ void MortevielleEngine::gameLoaded() { /* NIVEAU 3 */ /* procedure PROGRAMME */ void tmaj3() { - int j, h, m; + int day, hour, minute; - calch(j, h, m); - if (m == 30) - m = 1; - h += j * 24; - m += h * 2; - g_s._heure = chr(m); + updateHour(day, hour, minute); + if (minute == 30) + minute = 1; + hour += day * 24; + minute += hour * 2; + g_s._heure = chr(minute); } void tsitu() { - int h, j, m; - if (!g_col) clsf2(); g_syn = false; @@ -225,21 +223,22 @@ void tsitu() { return; } } - calch(j, h, m); - if ((((h == 12) || (h == 13) || (h == 19)) && (g_s._currPlace != 10)) || - ((h > 0) && (h < 6) && (g_s._currPlace != 0))) + int hour, day, minute; + updateHour(day, hour, minute); + if ((((hour == 12) || (hour == 13) || (hour == 19)) && (g_s._currPlace != 10)) || + ((hour > 0) && (hour < 6) && (g_s._currPlace != 0))) ++g_s._faithScore; if (((g_s._currPlace < CRYPT) || (g_s._currPlace > MOUNTAIN)) && (g_s._currPlace != 23) && (g_s._currPlace != 0) && (g_s._selectedObjectId != 152) && (!g_vm->_loseGame)) { - if ((g_s._faithScore > 99) && (h > 8) && (h < 16)) { + if ((g_s._faithScore > 99) && (hour > 8) && (hour < 16)) { g_crep = 1501; tperd(); } - if ((g_s._faithScore > 99) && (h > 0) && (h < 9)) { + if ((g_s._faithScore > 99) && (hour > 0) && (hour < 9)) { g_crep = 1508; tperd(); } - if ((j > 1) && (h > 8) && (!g_vm->_loseGame)) { + if ((day > 1) && (hour > 8) && (!g_vm->_loseGame)) { g_crep = 1502; tperd(); } diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 00d9dca3ef..3e21a35742 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -250,7 +250,7 @@ void taffich() { showMouse(); if ((a < 27) && ((g_maff < 27) || (g_s._currPlace == LANDING)) && (g_msg[4] != OPCODE_ENTER)) { if ((a == 13) || (a == 14)) - person(); + displayAloneText(); else if (!g_blo) t11(g_s._currPlace, cx); g_mpers = 0; -- cgit v1.2.3 From f9b793126d7995316687514ee15830da8f6e7d66 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 6 Mar 2012 00:00:46 +0100 Subject: MORTEVIELLE: Remove useless variables from gameLoaded() --- engines/mortevielle/prog.cpp | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index f011cc891f..1407e0e219 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -69,26 +69,17 @@ void changeGraphicalDevice(int newDevice) { * @remarks Originally called 'antegame' */ void MortevielleEngine::gameLoaded() { - int k; - char g[8]; - hideMouse(); g_imen = false; - g[1] = 'M'; _loseGame = true; g_anyone = false; g_okdes = true; - g[0] = '\040'; g_col = false; - g[7] = g[0]; - g[2] = 'A'; g_cache = false; g_brt = false; g_maff = 68; - g[5] = 'E'; g_mnumo = 0; g_prebru = 0; - g[4] = 'T'; g_x = 0; g_y = 0; g_num = 0; @@ -96,15 +87,12 @@ void MortevielleEngine::gameLoaded() { g_hfb = 0; g_cs = 0; g_is = 0; - k = 0; g_ment = 0; g_syn = true; g_heroSearching = true; g_mchai = 0; g_inei = 0; initouv(); - g[3] = 'S'; - g[6] = 'R'; g_iouv = 0; g_dobj = 0; affrep(); -- cgit v1.2.3 From 8f2a33e29257490bd61a1ad96e06f2a4109e03c8 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 6 Mar 2012 08:29:06 +0100 Subject: MORTEVIELLE: Some more renaming and refactoring --- engines/mortevielle/actions.cpp | 6 +-- engines/mortevielle/graphics.cpp | 25 ++++++----- engines/mortevielle/mor.cpp | 96 ++++++++++++++++++++++------------------ engines/mortevielle/mor.h | 8 ++-- engines/mortevielle/mor2.cpp | 3 +- 5 files changed, 73 insertions(+), 65 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 0bcfd67046..be0407ca50 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -1149,7 +1149,7 @@ void fctEnter() { parole(7, g_x, 1); aniof(1, 1); - tip(z, g_x); + g_x = convertBitIndexToCharacterIndex(z); ++g_s._faithScore; g_s._currPlace = LANDING; g_msg[3] = MENU_DISCUSS; @@ -1599,7 +1599,7 @@ void MortevielleEngine::endGame() { // Most likely the double call is useless, thus removed // // tkey1(false); - inzon(); + resetVariables(); } /** @@ -1611,7 +1611,7 @@ void MortevielleEngine::loseGame() { musique(0); tkey1(false); maivid(); - inzon(); + resetVariables(); dprog(); g_vh = 10; g_vm__ = 0; diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 775075c35f..f3737607de 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -1067,26 +1067,27 @@ void ScreenSurface::writeg(const Common::String &l, int c) { switch (c) { case 1: - case 3 : { + case 3: { cecr = 0; g_vm->_screenSurface.fillRect(15, Common::Rect(pt.x, pt.y, x, pt.y + 7)); - } - break; - case 4 : { + } + break; + case 4: cecr = 0; - } - break; - case 5 : { + break; + case 5: cecr = 15; - } - break; + break; case 0: - case 2 : { + case 2: { cecr = 15; g_vm->_screenSurface.fillRect(0, Common::Rect(pt.x, pt.y, x, pt.y + 7)); + } + break; + default: + break; } - break; - } + pt.x += 1; pt.y += 1; for (x = 1; (x <= (int)l.size()) && (l[x - 1] != 0); ++x) { diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index ef5800e993..b3ae537768 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -286,13 +286,12 @@ void updateHour(int &day, int &hour, int &minute) { hour = hour - ((day - g_vj) * 24); } -void conv(int x, int &y) { - int cx = 1; - y = 128; - while (cx < x) { - y = (uint)y >> 1; - ++cx; - } +/** + * Engine function - Convert character index to bit index + * @remarks Originally called 'conv' + */ +int convertCharacterIndexToBitIndex(int characterIndex) { + return 128 >> (characterIndex - 1); } /* NIVEAU 12 */ @@ -465,29 +464,29 @@ void showPeoplePresent(int per) { g_ipers = per; } -void choix(int min, int max, int &per) { - bool i; - int cz; - +int selectCharacters(int min, int max) { + bool invertSelection = false; int rand = getRandomNumber(min, max); + if (rand > 4) { rand = 8 - rand; - i = true; - } else - i = false; + invertSelection = true; + } int cx = 0; - per = 0; + int retVal = 0; while (cx < rand) { - int cy = getRandomNumber(1, 8); - conv(cy, cz); - if ((per & cz) != cz) { + int charIndex = getRandomNumber(1, 8); + int charBitIndex = convertCharacterIndexToBitIndex(charIndex); + if ((retVal & charBitIndex) != charBitIndex) { ++cx; - per |= cz; + retVal |= charBitIndex; } } - if (i) - per = 255 - per; + if (invertSelection) + retVal = 255 - retVal; + + return retVal; } int cpl1() { @@ -852,7 +851,7 @@ int setPresenceDiningRoom(int hour) { min = 1; max = 5; } - choix(min, max, retVal); + retVal = selectCharacters(min, max); } showPeoplePresent(retVal); @@ -880,7 +879,7 @@ int setPresenceBureau(int hour) { min = 1; max = 2; } - choix(min, max, retVal); + retVal = selectCharacters(min, max); } showPeoplePresent(retVal); @@ -917,8 +916,7 @@ int setPresenceLanding() { ((rand == 8) && g_bh5)); } while (test); - int retVal = 0; - conv(rand, retVal); + int retVal = convertCharacterIndexToBitIndex(rand); showPeoplePresent(retVal); return retVal; @@ -945,7 +943,7 @@ int setPresenceChapel(int hour) { min = 2; max = 4; } - choix(min, max, retVal); + retVal = selectCharacters(min, max); } showPeoplePresent(retVal); @@ -994,25 +992,31 @@ void nouvp(int l, int &p) { showPeoplePresent(p); } +/** + * Engine function - Convert bit index to character index + * @remarks Originally called 'tip' + */ +int convertBitIndexToCharacterIndex(int bitIndex) { + int retVal = 0; + if (bitIndex == 128) + retVal = 1; + else if (bitIndex == 64) + retVal = 2; + else if (bitIndex == 32) + retVal = 3; + else if (bitIndex == 16) + retVal = 4; + else if (bitIndex == 8) + retVal = 5; + else if (bitIndex == 4) + retVal = 6; + else if (bitIndex == 2) + retVal = 7; + else if (bitIndex == 1) + retVal = 8; -void tip(int ip, int &cx) { - if (ip == 128) - cx = 1; - else if (ip == 64) - cx = 2; - else if (ip == 32) - cx = 3; - else if (ip == 16) - cx = 4; - else if (ip == 8) - cx = 5; - else if (ip == 4) - cx = 6; - else if (ip == 2) - cx = 7; - else if (ip == 1) - cx = 8; + return retVal; } @@ -1084,7 +1088,11 @@ void phaz(int &rand, int &p, int cf) { rand = getRandomNumber(1, 100); } -void inzon() { +/** + * Engine function - When restarting the game, reset the main variables used by the engine + * @remarks Originally called 'inzon' + */ +void resetVariables() { copcha(); g_s._ipre = false; diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 066392c879..4e35e19652 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -55,13 +55,13 @@ extern void clsf10(); extern void stop(); extern void paint_rect(int x, int y, int dx, int dy); extern void updateHour(int &day, int &hour, int &minute); -extern void conv(int x, int &y); +extern int convertCharacterIndexToBitIndex(int characterIndex); /* NIVEAU 12 */ extern void modobj(int m); extern void repon(int f, int m); extern void t5(int cx); extern void showPeoplePresent(int per); -extern void choix(int min, int max, int &per); +extern int selectCharacters(int min, int max); extern int cpl1(); extern int cpl2(); extern int cpl3(); @@ -91,13 +91,13 @@ extern int setPresenceLanding(); extern int setPresenceChapel(int hour); extern void frap(); extern void nouvp(int l, int &p); -extern void tip(int ip, int &cx); +extern int convertBitIndexToCharacterIndex(int bitIndex); extern void ecfren(int &p, int &rand, int cf, int l); extern void becfren(int l); /* NIVEAU 10 */ extern void init_nbrepm(); extern void phaz(int &rand, int &p, int cf); -extern void inzon(); +extern void resetVariables(); extern void dprog(); extern void pl1(int cf); extern void pl2(int cf); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 8776336002..d026ccf080 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -586,8 +586,7 @@ L1: g_s._faithScore += 3 * (g_s._faithScore / 10); tsort(); tmlieu(15); - int cx; - tip(g_ipers, cx); + int cx = convertBitIndexToCharacterIndex(g_ipers); g_caff = 69 + cx; g_crep = g_caff; g_msg[3] = MENU_DISCUSS; -- cgit v1.2.3 From 9e21d04e26f7378e3eb2fc5c7961987ed869ea5d Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 6 Mar 2012 22:47:25 +0100 Subject: MORTEVIELLE: Rename some more functions --- engines/mortevielle/actions.cpp | 4 +- engines/mortevielle/mor.cpp | 161 +++++++++++++++++++++++++++------------- engines/mortevielle/mor.h | 24 +++--- 3 files changed, 122 insertions(+), 67 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index be0407ca50..7766272cf7 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -938,10 +938,10 @@ void fctKnock() { g_crep = 190; else { becfren(l); - frap(); + getKnockAnswer(); } } else - frap(); + getKnockAnswer(); } if (g_ment == 8) diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index b3ae537768..ebce8e4a14 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -489,7 +489,11 @@ int selectCharacters(int min, int max) { return retVal; } -int cpl1() { +/** + * Engine function - Get Presence Statistics - Green Room + * @remarks Originally called 'cpl1' + */ +int getPresenceStatsGreenRoom() { int day, hour, minute; int retVal = 0; @@ -516,8 +520,11 @@ int cpl1() { return retVal; } - -int cpl2() { +/** + * Engine function - Get Presence Statistics - Purple Room + * @remarks Originally called 'cpl2' + */ +int getPresenceStatsPurpleRoom() { int day, hour, minute; int retVal = 0; @@ -536,7 +543,11 @@ int cpl2() { return retVal; } -int cpl3() { +/** + * Engine function - Get Presence Statistics - Toilets + * @remarks Originally called 'cpl3' + */ +int getPresenceStatsToilets() { int day, hour, minute; int retVal = 0; @@ -549,7 +560,11 @@ int cpl3() { return retVal; } -int cpl5() { +/** + * Engine function - Get Presence Statistics - Blue Room + * @remarks Originally called 'cpl5' + */ +int getPresenceStatsBlueRoom() { int day, hour, minute; int retVal = 0; @@ -566,7 +581,11 @@ int cpl5() { return retVal; } -int cpl6() { +/** + * Engine function - Get Presence Statistics - Red Room + * @remarks Originally called 'cpl6' + */ +int getPresenceStatsRedRoom() { int day, hour, minute; int retVal = 0; @@ -679,39 +698,57 @@ void debloc(int l) { g_mpers = g_ipers; } -void cpl10(int &p, int &hour) { +/** + * Engine function - Get Presence Statistics - Room Bureau + * @remarks Originally called 'cpl10' + */ +int getPresenceStatsDiningRoom(int &hour) { int day, minute; + int retVal = 0; updateHour(day, hour, minute); if (((hour > 7) && (hour < 11)) || ((hour > 11) && (hour < 14)) || ((hour > 18) && (hour < 21))) - p = 100; + retVal = 100; else if ((hour == 11) || ((hour > 20) && (hour < 24))) - p = 45; + retVal = 45; else if (((hour > 13) && (hour < 17)) || (hour == 18)) - p = 35; + retVal = 35; else if (hour == 17) - p = 60; + retVal = 60; else if ((hour >= 0) && (hour < 8)) - p = 5; + retVal = 5; + + return retVal; } -void cpl11(int &p, int &hour) { +/** + * Engine function - Get Presence Statistics - Room Bureau + * @remarks Originally called 'cpl11' + */ +int getPresenceStatsBureau(int &hour) { int day, minute; + int retVal = 0; updateHour(day, hour, minute); if (((hour > 8) && (hour < 12)) || ((hour > 20) && (hour < 24))) - p = 25; + retVal = 25; else if (((hour > 11) && (hour < 14)) || ((hour > 18) && (hour < 21))) - p = 5; + retVal = 5; else if ((hour > 13) && (hour < 17)) - p = 55; + retVal = 55; else if ((hour > 16) && (hour < 19)) - p = 45; + retVal = 45; else if ((hour >= 0) && (hour < 9)) - p = 0; + retVal = 0; + + return retVal; } -int cpl12() { +/** + * Engine function - Get Presence Statistics - Room Kitchen + * @remarks Originally called 'cpl12' + */ +int getPresenceStatsKitchen() { int day, hour, minute; int retVal = 0; @@ -728,11 +765,19 @@ int cpl12() { return retVal; } -int cpl13() { +/** + * Engine function - Get Presence Statistics - Room Attic + * @remarks Originally called 'cpl13' + */ +int getPresenceStatsAttic() { return 0; } -int cpl15() { +/** + * Engine function - Get Presence Statistics - Room Landing + * @remarks Originally called 'cpl15' + */ +int getPresenceStatsLanding() { int day, hour, minute; int retVal = 0; @@ -755,20 +800,27 @@ int cpl15() { return retVal; } -void cpl20(int &p, int &hour) { +/** + * Engine function - Get Presence Statistics - Room Chapel + * @remarks Originally called 'cpl20' + */ +int getPresenceStatsChapel(int &hour) { int day, minute; + int retVal = 0; updateHour(day, hour, minute); if (hour == 10) - p = 65; + retVal = 65; else if ((hour > 10) && (hour < 21)) - p = 5; + retVal = 5; else if ((hour > 20) && (hour < 24)) - p = -15; + retVal = -15; else if ((hour >= 0) && (hour < 5)) - p = -300; + retVal = -300; else if ((hour > 4) && (hour < 10)) - p = -5; + retVal = -5; + + return retVal; } /** @@ -950,8 +1002,11 @@ int setPresenceChapel(int hour) { return retVal; } - -void frap() { +/** + * Engine function - Get the answer after you known a door + * @remarks Originally called 'frap' + */ +void getKnockAnswer() { int day, hour, minute; updateHour(day, hour, minute); @@ -1026,15 +1081,15 @@ void ecfren(int &p, int &rand, int cf, int l) { p = -500; rand = 0; if (((l == 1) && (!g_bh1) && (!g_bf1)) || ((l == 4) && (!g_bh4) && (!g_bf4))) - p = cpl1(); + p = getPresenceStatsGreenRoom(); if ((l == 2) && (!g_bh2) && (!g_bh9)) - p = cpl2(); + p = getPresenceStatsPurpleRoom(); if (((l == 3) && (!g_bt3)) || ((l == 7) && (!g_bt7))) - p = cpl3(); + p = getPresenceStatsToilets(); if ((l == 5) && (!g_bh5)) - p = cpl5(); + p = getPresenceStatsBlueRoom(); if (((l == 6) && (!g_bh6)) || ((l == 8) && (!g_bh8))) - p = cpl6(); + p = getPresenceStatsRedRoom(); if ((l == 9) && (!g_bh9) && (!g_bh2)) p = 10; if (((l == 2) && (g_bh9)) || ((l == 9) && (g_bh2))) @@ -1147,7 +1202,7 @@ void dprog() { void pl1(int cf) { if (((g_li == 1) && (!g_bh1) && (!g_bf1)) || ((g_li == 4) && (!g_bh4) && (!g_bf4))) { - int p = cpl1(); + int p = getPresenceStatsGreenRoom(); int rand; phaz(rand, p, cf); @@ -1160,7 +1215,7 @@ void pl1(int cf) { void pl2(int cf) { if (!g_bh2) { - int p = cpl2(); + int p = getPresenceStatsPurpleRoom(); int rand; phaz(rand, p, cf); @@ -1173,7 +1228,7 @@ void pl2(int cf) { void pl5(int cf) { if (!g_bh5) { - int p = cpl5(); + int p = getPresenceStatsBlueRoom(); int rand; phaz(rand, p, cf); @@ -1187,7 +1242,7 @@ void pl5(int cf) { void pl6(int cf) { if (((g_li == 6) && (!g_bh6)) || ((g_li == 8) && (!g_bh8))) { - int p = cpl6(); + int p = getPresenceStatsRedRoom(); int rand; phaz(rand, p, cf); @@ -1213,8 +1268,8 @@ void pl9(int cf) { } void pl10(int cf) { - int p, h, rand; - cpl10(p, h); + int h, rand; + int p = getPresenceStatsDiningRoom(h); phaz(rand, p, cf); if (rand > p) @@ -1224,9 +1279,9 @@ void pl10(int cf) { } void pl11(int cf) { - int p, h, rand; + int h, rand; - cpl11(p, h); + int p = getPresenceStatsBureau(h); phaz(rand, p, cf); if (rand > p) displayAloneText(); @@ -1237,7 +1292,7 @@ void pl11(int cf) { void pl12(int cf) { int p, rand; - p = cpl12(); + p = getPresenceStatsKitchen(); phaz(rand, p, cf); if (rand > p) displayAloneText(); @@ -1248,7 +1303,7 @@ void pl12(int cf) { void pl13(int cf) { int p, rand; - p = cpl13(); + p = getPresenceStatsAttic(); phaz(rand, p, cf); if (rand > p) displayAloneText(); @@ -1259,7 +1314,7 @@ void pl13(int cf) { void pl15(int cf) { int p, rand; - p = cpl15(); + p = getPresenceStatsLanding(); phaz(rand, p, cf); if (rand > p) displayAloneText(); @@ -1268,9 +1323,9 @@ void pl15(int cf) { } void pl20(int cf) { - int p, h, rand; + int h, rand; - cpl20(p, h); + int p = getPresenceStatsChapel(h); phaz(rand, p, cf); if (rand > p) displayAloneText(); @@ -1302,17 +1357,17 @@ void t11(int l11, int &a) { else { int h = 0; if (l11 == 10) - cpl10(p, h); + p = getPresenceStatsDiningRoom(h); else if (l11 == 11) - cpl11(p, h); + p = getPresenceStatsBureau(h); else if (l11 == 12) - p = cpl12(); + p = getPresenceStatsKitchen(); else if ((l11 == 13) || (l11 == 14)) - p = cpl13(); + p = getPresenceStatsAttic(); else if ((l11 == 15) || (l11 == 26)) - p = cpl15(); + p = getPresenceStatsLanding(); else if (l11 == 20) - cpl20(p, h); + p = getPresenceStatsChapel(h); p += g_s._faithScore; rand = getRandomNumber(1, 100); if (rand > p) { diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 4e35e19652..05dba14d6d 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -62,11 +62,11 @@ extern void repon(int f, int m); extern void t5(int cx); extern void showPeoplePresent(int per); extern int selectCharacters(int min, int max); -extern int cpl1(); -extern int cpl2(); -extern int cpl3(); -extern int cpl5(); -extern int cpl6(); +extern int getPresenceStatsGreenRoom(); +extern int getPresenceStatsPurpleRoom(); +extern int getPresenceStatsToilets(); +extern int getPresenceStatsBlueRoom(); +extern int getPresenceStatsRedRoom(); extern void displayAloneText(); extern int chlm(); extern void drawClock(); @@ -74,12 +74,12 @@ extern void drawClock(); * NIVEAU 11 * *************/ extern void debloc(int l); -extern void cpl10(int &p, int &hour); -extern void cpl11(int &p, int &hour); -extern int cpl12(); -extern int cpl13(); -extern int cpl15(); -extern void cpl20(int &p, int &hour); +extern int getPresenceStatsDiningRoom(int &hour); +extern int getPresenceStatsBureau(int &hour); +extern int getPresenceStatsKitchen(); +extern int getPresenceStatsAttic(); +extern int getPresenceStatsLanding(); +extern int getPresenceStatsChapel(int &hour); extern void setPresenceGreenRoom(int l); extern void setPresencePurpleRoom(); extern void setPresenceBlueRoom(); @@ -89,7 +89,7 @@ extern int setPresenceBureau(int hour); extern int setPresenceKitchen(); extern int setPresenceLanding(); extern int setPresenceChapel(int hour); -extern void frap(); +extern void getKnockAnswer(); extern void nouvp(int l, int &p); extern int convertBitIndexToCharacterIndex(int bitIndex); extern void ecfren(int &p, int &rand, int cf, int l); -- cgit v1.2.3 From 6217fa5e3ee08790cfe5b775256740eeec8a0a1a Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 7 Mar 2012 08:33:48 +0100 Subject: MORTEVIELLE: some more renaming, match menu item size in setText() --- engines/mortevielle/actions.cpp | 35 +++++++-------- engines/mortevielle/dialogs.cpp | 20 ++++----- engines/mortevielle/graphics.cpp | 8 ++-- engines/mortevielle/graphics.h | 2 +- engines/mortevielle/menu.cpp | 50 ++++++++++----------- engines/mortevielle/menu.h | 6 +-- engines/mortevielle/mor.cpp | 88 +++++++++++++++++++------------------ engines/mortevielle/mor.h | 2 +- engines/mortevielle/mor2.cpp | 34 +++++++------- engines/mortevielle/mortevielle.cpp | 2 +- engines/mortevielle/mouse.cpp | 9 ++-- engines/mortevielle/outtext.cpp | 8 ++-- engines/mortevielle/ovd1.cpp | 9 +--- engines/mortevielle/ovd1.h | 2 - engines/mortevielle/parole2.cpp | 2 +- engines/mortevielle/parole2.h | 2 +- engines/mortevielle/prog.cpp | 4 +- engines/mortevielle/saveload.cpp | 3 +- engines/mortevielle/var_mor.cpp | 2 +- engines/mortevielle/var_mor.h | 6 +-- 20 files changed, 143 insertions(+), 151 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 7766272cf7..8f30e0da6b 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -47,8 +47,6 @@ namespace Mortevielle { * @remarks Originally called 'taller' */ void fctMove() { - int cx; - if ((g_s._currPlace == 26) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { g_s._currPlace = LANDING; g_caff = g_s._currPlace; @@ -85,7 +83,7 @@ void fctMove() { return; } tsort(); - cx = 0; + int cx = 0; do { ++cx; } while (g_vm->_menu._moveMenu[cx] != g_msg[4]); @@ -95,7 +93,8 @@ void fctMove() { t1deva(); if (cx == 2) t1neig(); - goto L2; + tmlieu(g_s._currPlace); + return; } if (g_s._currPlace == 23) { @@ -103,7 +102,8 @@ void fctMove() { t1deau(); if (cx == 2) t1derr(); - goto L2; + tmlieu(g_s._currPlace); + return; } if ((g_s._currPlace == BUREAU) && (cx == 1)) @@ -175,7 +175,6 @@ void fctMove() { if ((cx < 5) || (cx == 13) || (cx == 14)) affrep(); debloc(g_s._currPlace); -L2: tmlieu(g_s._currPlace); } @@ -315,7 +314,7 @@ void fctInventoryTake() { modinv(); avpoing(cz); g_crep = 998; - clsf2(); + clearScreenType2(); } /** @@ -623,7 +622,7 @@ void fctOpen() { || ((g_s._currPlace > RED_ROOM) && (g_s._currPlace < DINING_ROOM)) || (g_s._currPlace == OWN_ROOM) || (g_s._currPlace == PURPLE_ROOM) || (g_s._currPlace == BLUE_ROOM)) { if (getRandomNumber(1, 4) == 3) - parole(7, 9, 1); + startSpeech(7, 9, 1); } g_touv[tmpPlace] = chr(g_num); aniof(1, g_num); @@ -691,7 +690,7 @@ void fctPlace() { aniof(1, 1); repon(2, 165); maivid(); - parole(6, -9, 1); + startSpeech(6, -9, 1); // Do you want to enter the hidden passage? int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); @@ -703,7 +702,7 @@ void fctPlace() { hideMouse(); hirs(); dessine_rouleau(); - clsf2(); + clearScreenType2(); clsf3(); showMouse(); tinke(); @@ -792,7 +791,7 @@ void fctTurn() { g_crep = 997; if ((g_s._currPlace == ATTIC) && (g_s._atticRodHoleObjectId == 159) && (g_s._atticBallHoleObjectId == 141)) { repon(2, 167); - parole(7, 9, 1); + startSpeech(7, 9, 1); int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); if (answer == 1) g_vm->_endGame = true; @@ -802,7 +801,7 @@ void fctTurn() { if ((g_s._currPlace == SECRET_PASSAGE) && (g_s._secretPassageObjectId == 143)) { repon(2, 175); clsf3(); - parole(6, -9, 1); + startSpeech(6, -9, 1); int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); if (answer == 1) { g_s._currPlace = CRYPT; @@ -928,7 +927,7 @@ void fctKnock() { if (g_s._currPlace == 26) { int rand = (getRandomNumber(0, 8)) - 4; - parole(11, rand, 1); + startSpeech(11, rand, 1); int p; ecfren(p, rand, g_s._faithScore, g_ment); int l = g_ment; @@ -1146,7 +1145,7 @@ void fctEnter() { g_crep = 179; else { g_x = (getRandomNumber(0, 10)) - 5; - parole(7, g_x, 1); + startSpeech(7, g_x, 1); aniof(1, 1); g_x = convertBitIndexToCharacterIndex(z); @@ -1167,7 +1166,7 @@ void fctEnter() { } } else { g_x = (getRandomNumber(0, 10)) - 5; - parole(7, g_x, 1); + startSpeech(7, g_x, 1); aniof(1, 1); g_s._currPlace = g_ment; @@ -1201,7 +1200,7 @@ void fctSleep() { tmlieu(g_s._currPlace); } clsf3(); - clsf2(); + clearScreenType2(); ecrf2(); ecr2(g_vm->getEngineString(S_WANT_TO_WAKE_UP)); updateHour(j, h, m); @@ -1573,7 +1572,7 @@ void MortevielleEngine::endGame() { tlu(13, 152); maivid(); clsf1(); - clsf2(); + clearScreenType2(); clsf3(); repon(9, 1509); tkey1(false); @@ -1607,7 +1606,7 @@ void MortevielleEngine::endGame() { * @remarks Originally called 'tencore' */ void MortevielleEngine::loseGame() { - clsf2(); + clearScreenType2(); musique(0); tkey1(false); maivid(); diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index d538774842..717a256b8f 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -85,7 +85,7 @@ int Alert::show(const Common::String &msg, int n) { } g_vm->_screenSurface.putxy(cx, g_vm->_screenSurface._textPos.y); g_vm->_screenSurface._textPos.y += 6; - g_vm->_screenSurface.writeg(st, 4); + g_vm->_screenSurface.drawString(st, 4); ++i; } while (chaine[i] != ']'); } @@ -134,14 +134,14 @@ int Alert::show(const Common::String &msg, int n) { Common::String tmp(" "); tmp += s[quoi]; tmp += " "; - g_vm->_screenSurface.writeg(tmp, 0); + g_vm->_screenSurface.drawString(tmp, 0); } setPosition(ix, coldep, esp); Common::String tmp2 = " "; tmp2 += s[ix]; tmp2 += " "; - g_vm->_screenSurface.writeg(tmp2, 1); + g_vm->_screenSurface.drawString(tmp2, 1); quoi = ix; showMouse(); @@ -155,7 +155,7 @@ int Alert::show(const Common::String &msg, int n) { Common::String tmp3(" "); tmp3 += s[quoi]; tmp3 += " "; - g_vm->_screenSurface.writeg(tmp3, 0); + g_vm->_screenSurface.drawString(tmp3, 0); quoi = 0; showMouse(); @@ -171,7 +171,7 @@ int Alert::show(const Common::String &msg, int n) { Common::String tmp4(" "); tmp4 += s[n]; tmp4 += " "; - g_vm->_screenSurface.writeg(tmp4, 1); + g_vm->_screenSurface.drawString(tmp4, 1); } charecr(50, (NUM_LINES + 1) << 4); showMouse(); @@ -275,7 +275,7 @@ void Alert::setButtonText(Common::String c, int coldep, int nbcase, Common::Stri tmp += str[l]; tmp += " "; - g_vm->_screenSurface.writeg(tmp, 0); + g_vm->_screenSurface.drawString(tmp, 0); x += esp + 40; } } @@ -406,9 +406,9 @@ void f3f8::draw() { // Write the F3 and F8 text strings g_vm->_screenSurface.putxy(3, 44); - g_vm->_screenSurface.writeg(f3, 5); + g_vm->_screenSurface.drawString(f3, 5); g_vm->_screenSurface._textPos.y = 51; - g_vm->_screenSurface.writeg(f8, 5); + g_vm->_screenSurface.drawString(f8, 5); // Get the width of the written text strings int f3Width = g_vm->_screenSurface.getStringWidth(f3); @@ -426,7 +426,7 @@ void f3f8::draw() { void f3f8::checkForF8(int SpeechNum, bool drawAni50Fl) { teskbd(); do { - parole(SpeechNum, 0, 0); + startSpeech(SpeechNum, 0, 0); waitForF3F8(g_key); CHECK_QUIT; @@ -468,7 +468,7 @@ void f3f8::ani50() { pictout(adani, g_crep, 63, 12); g_crep = animof(2, 1); pictout(adani, g_crep, 63, 12); - g_f2_all = (g_res == 1); + g_largestClearScreen = (g_res == 1); repon(2, kDialogStringIndex + 143); } diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index f3737607de..1c26a5cea1 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -1046,16 +1046,16 @@ void ScreenSurface::setPixel(const Common::Point &pt, int palIndex) { /** * Write out a string + * @remarks Originally called 'writeg' */ -void ScreenSurface::writeg(const Common::String &l, int c) { +void ScreenSurface::drawString(const Common::String &l, int command) { int i, x; Common::Point pt; int cecr = 0; - /* debug('writeg : '+l);*/ - if (l == "") return; + hideMouse(); pt = _textPos; @@ -1065,7 +1065,7 @@ void ScreenSurface::writeg(const Common::String &l, int c) { i = 10; x = pt.x + i * l.size(); - switch (c) { + switch (command) { case 1: case 3: { cecr = 0; diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 253b708d70..9f4a4799ab 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -92,7 +92,7 @@ public: void fillRect(int colour, const Common::Rect &bounds); void clearScreen(); void putxy(int x, int y) { _textPos = Common::Point(x, y); } - void writeg(const Common::String &l, int c); + void drawString(const Common::String &l, int command); int getStringWidth(const Common::String &s); void drawLine(int x, int y, int xx, int yy, int coul); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index b60c70b4af..f2f19b6eee 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -42,13 +42,14 @@ namespace Mortevielle { /** * Setup a menu's contents + * @remarks Originally called 'menut' */ -void Menu::menut(int no, Common::String name) { - byte h = hi(no); - byte l = lo(no); +void Menu::setText(int menuId, Common::String name) { + byte h = hi(menuId); + byte l = lo(menuId); Common::String s = name; - while (s.size() < 20) + while (s.size() < 30) s += ' '; switch (h) { @@ -77,11 +78,11 @@ void Menu::menut(int no, Common::String name) { /** * _disable a menu item - * @param no Hi byte represents menu number, lo byte reprsents item index + * @param menuId Hi byte represents menu number, lo byte reprsents item index */ -void Menu::disableMenuItem(int no) { - byte h = hi(no); - byte l = lo(no); +void Menu::disableMenuItem(int menuId) { + byte h = hi(menuId); + byte l = lo(menuId); switch (h) { case MENU_INVENTORY: @@ -110,12 +111,12 @@ void Menu::disableMenuItem(int no) { /** * Enable a menu item - * @param no Hi byte represents menu number, lo byte reprsents item index + * @param menuId Hi byte represents menu number, lo byte reprsents item index * @remarks Originally called menu_enable */ -void Menu::enableMenuItem(int no) { - byte h = hi(no); - byte l = lo(no); +void Menu::enableMenuItem(int menuId) { + byte h = hi(menuId); + byte l = lo(menuId); switch (h) { case MENU_INVENTORY: @@ -242,7 +243,7 @@ void Menu::invers(int ix) { break; } if ((s[0] != '*') && (s[0] != '<')) - g_vm->_screenSurface.writeg(s, ix); + g_vm->_screenSurface.drawString(s, ix); else g_msg4 = OPCODE_NONE; } @@ -309,42 +310,42 @@ void Menu::menuDown(int ii) { switch (ii) { case 1: if (_inventoryStringArray[cx][0] != '*') - g_vm->_screenSurface.writeg(_inventoryStringArray[cx], 4); + g_vm->_screenSurface.drawString(_inventoryStringArray[cx], 4); break; case 2: if (_moveStringArray[cx][0] != '*') - g_vm->_screenSurface.writeg(_moveStringArray[cx], 4); + g_vm->_screenSurface.drawString(_moveStringArray[cx], 4); break; case 3: if (_actionStringArray[cx][0] != '*') - g_vm->_screenSurface.writeg(_actionStringArray[cx], 4); + g_vm->_screenSurface.drawString(_actionStringArray[cx], 4); break; case 4: if (_selfStringArray[cx][0] != '*') - g_vm->_screenSurface.writeg(_selfStringArray[cx], 4); + g_vm->_screenSurface.drawString(_selfStringArray[cx], 4); break; case 5: if (_discussStringArray[cx][0] != '*') - g_vm->_screenSurface.writeg(_discussStringArray[cx], 4); + g_vm->_screenSurface.drawString(_discussStringArray[cx], 4); break; case 6: - g_vm->_screenSurface.writeg(g_vm->getEngineString(S_SAVE_LOAD + cx), 4); + g_vm->_screenSurface.drawString(g_vm->getEngineString(S_SAVE_LOAD + cx), 4); break; case 7: { Common::String s = g_vm->getEngineString(S_SAVE_LOAD + 1); s += ' '; s += (char)(48 + cx); - g_vm->_screenSurface.writeg(s, 4); + g_vm->_screenSurface.drawString(s, 4); } break; case 8: if (cx == 1) - g_vm->_screenSurface.writeg(g_vm->getEngineString(S_RESTART), 4); + g_vm->_screenSurface.drawString(g_vm->getEngineString(S_RESTART), 4); else { Common::String s = g_vm->getEngineString(S_SAVE_LOAD + 2); s += ' '; s += (char)(47 + cx); - g_vm->_screenSurface.writeg(s, 4); + g_vm->_screenSurface.drawString(s, 4); } break; default: @@ -360,7 +361,6 @@ void Menu::menuDown(int ii) { * Menu is being removed, so restore the previous background area. */ void Menu::menuUp(int xx) { - /* debug('menuUp'); */ if (g_test0) { charecr(10, (g_menuConstants[xx - 1][1] + 1) << 1); @@ -383,7 +383,6 @@ void Menu::menuUp(int xx) { * Erase the menu */ void Menu::eraseMenu() { - /* debug('eraseMenu'); */ _menuActive = false; g_vm->setMouseClick(false); menuUp(g_msg3); @@ -478,8 +477,7 @@ void Menu::initMenu() { f.read(g_lettres, 7 * 24); f.close(); - // Ask to swap floppy - dem2(); + // Skipped: dialog asking to swap floppy for (i = 1; i <= 8; ++i) _inventoryStringArray[i] = "* "; diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index 923c5aa3b6..cdd343a9ed 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -48,9 +48,9 @@ public: int _inventoryMenu[9]; int _moveMenu[8]; public: - void menut(int no, Common::String name); - void disableMenuItem(int no); - void enableMenuItem(int no); + void setText(int menuId, Common::String name); + void disableMenuItem(int menuId); + void enableMenuItem(int menuId); void displayMenu(); void drawMenu(); void menuUp(int xx); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index ebce8e4a14..36e06115c1 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -160,12 +160,16 @@ void clsf1() { showMouse(); } -void clsf2() { +/** + * Engine function - Clear Screen - Type 2 + * @remarks Originally called 'clsf2' + */ +void clearScreenType2() { hideMouse(); - if (g_f2_all) { + if (g_largestClearScreen) { g_vm->_screenSurface.fillRect(0, Common::Rect(1, 176, 633, 199)); g_vm->_screenSurface.drawBox(0, 175, 634, 24, 15); - g_f2_all = false; + g_largestClearScreen = false; } else { g_vm->_screenSurface.fillRect(0, Common::Rect(1, 176, 633, 190)); g_vm->_screenSurface.drawBox(0, 175, 634, 15, 15); @@ -183,21 +187,21 @@ void ecr2(Common::String str_) { int tlig = 59 + (g_res - 1) * 36; if ((int)str_.size() < tlig) - g_vm->_screenSurface.writeg(str_, 5); + g_vm->_screenSurface.drawString(str_, 5); else if ((int)str_.size() < (tlig << 1)) { g_vm->_screenSurface.putxy(8, 176); - g_vm->_screenSurface.writeg(copy(str_, 1, (tlig - 1)), 5); + g_vm->_screenSurface.drawString(copy(str_, 1, (tlig - 1)), 5); g_vm->_screenSurface.putxy(8, 182); - g_vm->_screenSurface.writeg(copy(str_, tlig, tlig << 1), 5); + g_vm->_screenSurface.drawString(copy(str_, tlig, tlig << 1), 5); } else { - g_f2_all = true; - clsf2(); + g_largestClearScreen = true; + clearScreenType2(); g_vm->_screenSurface.putxy(8, 176); - g_vm->_screenSurface.writeg(copy(str_, 1, (tlig - 1)), 5); + g_vm->_screenSurface.drawString(copy(str_, 1, (tlig - 1)), 5); g_vm->_screenSurface.putxy(8, 182); - g_vm->_screenSurface.writeg(copy(str_, tlig, ((tlig << 1) - 1)), 5); + g_vm->_screenSurface.drawString(copy(str_, tlig, ((tlig << 1) - 1)), 5); g_vm->_screenSurface.putxy(8, 190); - g_vm->_screenSurface.writeg(copy(str_, tlig << 1, tlig * 3), 5); + g_vm->_screenSurface.drawString(copy(str_, tlig << 1, tlig * 3), 5); } } @@ -211,7 +215,7 @@ void clsf3() { void ecr3(Common::String text) { clsf3(); g_vm->_screenSurface.putxy(8, 192); - g_vm->_screenSurface.writeg(text, 5); + g_vm->_screenSurface.drawString(text, 5); } void ecrf6() { @@ -245,7 +249,7 @@ void clsf10() { co = 580 - (g_vm->_screenSurface.getStringWidth(st) / 2); g_vm->_screenSurface.putxy(co, 92); - g_vm->_screenSurface.writeg(st, 4); + g_vm->_screenSurface.drawString(st, 4); g_vm->_screenSurface.fillRect(15, Common::Rect(560, 24, 610, 86)); /* rempli(69,12,32,5,255);*/ @@ -301,7 +305,7 @@ void modobj(int m) { if (m != 500) strp = deline(m - 501 + kInventoryStringIndex); - g_vm->_menu.menut(g_vm->_menu._inventoryMenu[8], strp); + g_vm->_menu.setText(g_vm->_menu._inventoryMenu[8], strp); g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[8]); } @@ -314,11 +318,11 @@ void repon(int f, int m) { tmpStr = deline(m - 501 + kInventoryStringIndex); if ((int) tmpStr.size() > ((58 + (g_res - 1) * 37) << 1)) - g_f2_all = true; + g_largestClearScreen = true; else - g_f2_all = false; + g_largestClearScreen = false; - clsf2(); + clearScreenType2(); displayStr(tmpStr, 8, 176, 85, 3, 5); } else { modif(m); @@ -327,7 +331,7 @@ void repon(int f, int m) { if (f == 1) f = 6; if (f == 2) { - clsf2(); + clearScreenType2(); ecrf2(); text1(8, 182, 103, m); if ((m == 68) || (m == 69)) @@ -423,42 +427,42 @@ void showPeoplePresent(int per) { clsf10(); if ((per & 128) == 128) { g_vm->_screenSurface.putxy(xp, 24); - g_vm->_screenSurface.writeg("LEO", 4); + g_vm->_screenSurface.drawString("LEO", 4); g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[1]); } if ((per & 64) == 64) { g_vm->_screenSurface.putxy(xp, 32); - g_vm->_screenSurface.writeg("PAT", 4); + g_vm->_screenSurface.drawString("PAT", 4); g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[2]); } if ((per & 32) == 32) { g_vm->_screenSurface.putxy(xp, 40); - g_vm->_screenSurface.writeg("GUY", 4); + g_vm->_screenSurface.drawString("GUY", 4); g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[3]); } if ((per & 16) == 16) { g_vm->_screenSurface.putxy(xp, 48); - g_vm->_screenSurface.writeg("EVA", 4); + g_vm->_screenSurface.drawString("EVA", 4); g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[4]); } if ((per & 8) == 8) { g_vm->_screenSurface.putxy(xp, 56); - g_vm->_screenSurface.writeg("BOB", 4); + g_vm->_screenSurface.drawString("BOB", 4); g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[5]); } if ((per & 4) == 4) { g_vm->_screenSurface.putxy(xp, 64); - g_vm->_screenSurface.writeg("LUC", 4); + g_vm->_screenSurface.drawString("LUC", 4); g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[6]); } if ((per & 2) == 2) { g_vm->_screenSurface.putxy(xp, 72); - g_vm->_screenSurface.writeg("IDA", 4); + g_vm->_screenSurface.drawString("IDA", 4); g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[7]); } if ((per & 1) == 1) { g_vm->_screenSurface.putxy(xp, 80); - g_vm->_screenSurface.writeg("MAX", 4); + g_vm->_screenSurface.drawString("MAX", 4); g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[8]); } g_ipers = per; @@ -617,11 +621,11 @@ void displayAloneText() { clsf10(); g_vm->_screenSurface.putxy(580 - (g_vm->_screenSurface.getStringWidth(sYou) / 2), 30); - g_vm->_screenSurface.writeg(sYou, 4); + g_vm->_screenSurface.drawString(sYou, 4); g_vm->_screenSurface.putxy(580 - (g_vm->_screenSurface.getStringWidth(sAre) / 2), 50); - g_vm->_screenSurface.writeg(sAre, 4); + g_vm->_screenSurface.drawString(sAre, 4); g_vm->_screenSurface.putxy(580 - (g_vm->_screenSurface.getStringWidth(sAlone) / 2), 70); - g_vm->_screenSurface.writeg(sAlone, 4); + g_vm->_screenSurface.drawString(sAlone, 4); g_ipers = 0; } @@ -673,15 +677,15 @@ void drawClock() { g_vm->_screenSurface.putxy(568, 154); if (g_hour > 11) - g_vm->_screenSurface.writeg("PM ", 1); + g_vm->_screenSurface.drawString("PM ", 1); else - g_vm->_screenSurface.writeg("AM ", 1); + g_vm->_screenSurface.drawString("AM ", 1); g_vm->_screenSurface.putxy(550, 160); if ((g_day >= 0) && (g_day <= 8)) { Common::String tmp = g_vm->getEngineString(S_DAY); tmp.insertChar((char)(g_day + 49), 0); - g_vm->_screenSurface.writeg(tmp, 1); + g_vm->_screenSurface.drawString(tmp, 1); } } @@ -1196,7 +1200,7 @@ void dprog() { g_jh = 0; if (!g_s._ipre) g_blo = true; - g_t = ti1; + g_t = kTime1; g_mh = readclock(); } @@ -1398,7 +1402,7 @@ void cavegre() { ecrf2(); ecr3(g_vm->getEngineString(S_SOMEONE_ENTERS)); int rand = (getRandomNumber(0, 4)) - 2; - parole(2, rand, 1); + startSpeech(2, rand, 1); // The original was doing here a useless loop. // It has been removed @@ -1409,9 +1413,9 @@ void cavegre() { void writetp(Common::String s, int t) { if (g_res == 2) - g_vm->_screenSurface.writeg(s, t); + g_vm->_screenSurface.drawString(s, t); else - g_vm->_screenSurface.writeg(copy(s, 1, 25), t); + g_vm->_screenSurface.drawString(copy(s, 1, 25), t); } void aniof(int ouf, int num) { @@ -1442,35 +1446,35 @@ void musique(int so) { /* musik(0) */ ; } else if ((g_prebru == 0) && (!g_s._ipre)) { - parole(10, 1, 1); + startSpeech(10, 1, 1); ++g_prebru; } else { bool i = false; if ((g_s._currPlace == MOUNTAIN) || (g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK)) { if (getRandomNumber(1, 3) == 2) { - parole(9, getRandomNumber(2, 4), 1); + startSpeech(9, getRandomNumber(2, 4), 1); i = true; } } else if (g_s._currPlace == CHAPEL) { if (getRandomNumber(1, 2) == 1) { - parole(8, 1, 1); + startSpeech(8, 1, 1); i = true; } } else if (g_s._currPlace == WELL) { if (getRandomNumber(1, 2) == 2) { - parole(12, 1, 1); + startSpeech(12, 1, 1); i = true; } } else if (g_s._currPlace == 23) { - parole(13, 1, 1); + startSpeech(13, 1, 1); i = true; } if (!i) - parole(getRandomNumber(1, 17), 1, 2); + startSpeech(getRandomNumber(1, 17), 1, 2); } } diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 05dba14d6d..fcabee51d2 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -44,7 +44,7 @@ extern void text1(int x, int y, int nb, int m); extern void initouv(); extern void ecrf1(); extern void clsf1(); -extern void clsf2(); +extern void clearScreenType2(); extern void ecrf2(); extern void ecr2(Common::String str_); extern void clsf3(); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index d026ccf080..48ca45e4da 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -98,9 +98,9 @@ void tinke() { if (!g_blo) { if ((hour == 12) || ((hour > 18) && (hour < 21)) || ((hour >= 0) && (hour < 7))) - g_t = ti2; + g_t = kTime2; else - g_t = ti1; + g_t = kTime1; cf = g_s._faithScore; if ((cf > 33) && (cf < 66)) g_t -= (g_t / 3); @@ -169,7 +169,7 @@ void tinke() { ecrf2(); ecr3(g_vm->getEngineString(S_HEAR_NOISE)); int rand = (getRandomNumber(0, 4)) - 2; - parole(1, rand, 1); + startSpeech(1, rand, 1); clsf3(); } } @@ -254,12 +254,12 @@ void tmlieu(int roomId) { nomp = deline(g_v_lieu[i][roomId] + kMenuPlaceStringIndex); while (nomp.size() < 20) nomp += ' '; - g_vm->_menu.menut(g_vm->_menu._moveMenu[i], nomp); + g_vm->_menu.setText(g_vm->_menu._moveMenu[i], nomp); ++i; } nomp = "* "; for (int cx = 7; cx >= i; --cx) - g_vm->_menu.menut(g_vm->_menu._moveMenu[cx], nomp); + g_vm->_menu.setText(g_vm->_menu._moveMenu[cx], nomp); } @@ -289,8 +289,8 @@ void unsetSearchMenu() { for (int cx = 1; cx <= 11; ++cx) g_vm->_menu.enableMenuItem(_actionMenu[cx]); - g_vm->_menu.menut(OPCODE_SOUND, g_vm->getEngineString(S_PROBE)); - g_vm->_menu.menut(OPCODE_LIFT, g_vm->getEngineString(S_RAISE)); + g_vm->_menu.setText(OPCODE_SOUND, g_vm->getEngineString(S_PROBE)); + g_vm->_menu.setText(OPCODE_LIFT, g_vm->getEngineString(S_RAISE)); } /* NIVEAU 6 */ @@ -310,7 +310,7 @@ void tperd() { clsf1(); g_vm->_screenSurface.drawBox(60, 35, 400, 50, 15); repon(9, g_crep); - clsf2(); + clearScreenType2(); clsf3(); g_col = false; g_syn = false; @@ -390,12 +390,12 @@ void modinv() { ++cy; r = (ord(g_s._sjer[cx]) + 400); nomp = deline(r - 501 + kInventoryStringIndex); - g_vm->_menu.menut(g_vm->_menu._inventoryMenu[cy], nomp); + g_vm->_menu.setText(g_vm->_menu._inventoryMenu[cy], nomp); g_vm->_menu.enableMenuItem(g_vm->_menu._inventoryMenu[cx]); } if (cy < 6) for (int cx = cy + 1; cx <= 6; ++cx) { - g_vm->_menu.menut(g_vm->_menu._inventoryMenu[cx], " "); + g_vm->_menu.setText(g_vm->_menu._inventoryMenu[cx], " "); g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[cx]); } } @@ -412,7 +412,7 @@ void sparl(float adr, float rep) { key = 0; do { - parole(repint, haut[g_caff - 69], 0); + startSpeech(repint, haut[g_caff - 69], 0); f3f8::waitForF3F8(key); CHECK_QUIT; } while (key != 66); @@ -443,8 +443,8 @@ void setSearchMenu() { for (int cx = 1; cx <= 11; ++cx) g_vm->_menu.disableMenuItem(_actionMenu[cx]); - g_vm->_menu.menut(OPCODE_SOUND, g_vm->getEngineString(S_SUITE)); - g_vm->_menu.menut(OPCODE_LIFT, g_vm->getEngineString(S_STOP)); + g_vm->_menu.setText(OPCODE_SOUND, g_vm->getEngineString(S_SUITE)); + g_vm->_menu.setText(OPCODE_LIFT, g_vm->getEngineString(S_STOP)); } void mennor() { @@ -574,9 +574,9 @@ L1: g_crep = 138; repon(2, g_crep); if (g_crep == 138) - parole(5, 2, 1); + startSpeech(5, 2, 1); else - parole(4, 4, 1); + startSpeech(4, 4, 1); if (g_iouv == 0) g_s._faithScore += 2; @@ -601,8 +601,8 @@ L1: } else { repon(2, 136); int rand = (getRandomNumber(0, 4)) - 2; - parole(3, rand, 1); - clsf2(); + startSpeech(3, rand, 1); + clearScreenType2(); displayAloneText(); debloc(21); affrep(); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 7ed3e921a5..8dd5ac3b35 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -155,7 +155,7 @@ Common::ErrorCode MortevielleEngine::initialise() { init_lieu(); g_soundOff = false; - g_f2_all = false; + g_largestClearScreen = false; teskbd(); dialpre(); diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 4fcbb02fd0..3b381dd1b0 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -174,15 +174,14 @@ void hideMouse() { * @remarks Originally called 'show_mouse' */ void showMouse() { - int i, j, k, l; - bool imp; + int k, l; mouse_shwn = mouse_shwn + 1; if (mouse_shwn != 1) return; - j = p_o_s; - imp = odd(y_s); - i = x_s & 7; + int j = p_o_s; + bool imp = odd(y_s); + int i = x_s & 7; switch (g_currGraphicalDevice) { case MODE_CGA: k = 0; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 02c03b8668..d8e2309a4c 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -192,7 +192,7 @@ void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ) while (!stringParsed) { switch (inputStr[p]) { case '@': - g_vm->_screenSurface.writeg(s, typ); + g_vm->_screenSurface.drawString(s, typ); s = ""; ++p; xc = x; @@ -204,7 +204,7 @@ void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ) xc += tab; ++p; if (l_motsuiv(p, inputStr.c_str(), tab) + xc > xf) { - g_vm->_screenSurface.writeg(s, typ); + g_vm->_screenSurface.drawString(s, typ); s = ""; xc = x; yc += 6; @@ -216,7 +216,7 @@ void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ) j = x; do { g_vm->_screenSurface.putxy(j, i); - g_vm->_screenSurface.writeg(" ", 0); + g_vm->_screenSurface.drawString(" ", 0); j += 6; } while (j <= xf); i += 6; @@ -228,7 +228,7 @@ void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ) break; case '$': stringParsed = true; - g_vm->_screenSurface.writeg(s, typ); + g_vm->_screenSurface.drawString(s, typ); break; default: s += inputStr[p]; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 303323590c..d5bb43a83a 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -45,13 +45,6 @@ namespace Mortevielle { // For ScummVM, we need to do check for file errors where we do the file access const int ioresult = 0; -/** - * Check for disk 2 being in the drive - */ -void dem2() { - // Deprecated under ScummVM -} - void charpal() { Common::File f; // tabdb records Common::File ft; // tfxx @@ -245,7 +238,7 @@ void suite() { Common::String cpr = "COPYRIGHT 1989 : LANKHOR"; g_vm->_screenSurface.putxy(104 + 72 * g_res, 185); - g_vm->_screenSurface.writeg(cpr, 0); + g_vm->_screenSurface.drawString(cpr, 0); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/ovd1.h b/engines/mortevielle/ovd1.h index 13a8f5db2e..25633a4111 100644 --- a/engines/mortevielle/ovd1.h +++ b/engines/mortevielle/ovd1.h @@ -30,8 +30,6 @@ namespace Mortevielle { -extern void dem2(); -//extern void apzuul(); extern void charpal(); extern void chartex(); extern void dialpre(); diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index 3682dc99d0..ff6ad7faec 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -83,7 +83,7 @@ void trait_ph() { -void parole(int rep, int ht, int typ) { +void startSpeech(int rep, int ht, int typ) { int savph[501]; int tempo; diff --git a/engines/mortevielle/parole2.h b/engines/mortevielle/parole2.h index 01cf277422..3fab74d02f 100644 --- a/engines/mortevielle/parole2.h +++ b/engines/mortevielle/parole2.h @@ -33,7 +33,7 @@ namespace Mortevielle { extern void rot_chariot(); extern void init_chariot(); extern void trait_ph(); -extern void parole(int rep, int ht, int typ); +extern void startSpeech(int rep, int ht, int typ); } // End of namespace Mortevielle diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 1407e0e219..36d5265ed3 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -56,7 +56,7 @@ void changeGraphicalDevice(int newDevice) { showPeoplePresent(g_ipers); else displayAloneText(); - clsf2(); + clearScreenType2(); clsf3(); g_maff = 68; afdes(0); @@ -133,7 +133,7 @@ void tmaj3() { void tsitu() { if (!g_col) - clsf2(); + clearScreenType2(); g_syn = false; g_iesc = false; if (!g_anyone) { diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index a53d218c86..0efafe7fba 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -164,8 +164,9 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { // Close the save file f->finalize(); delete f; + + // Skipped: dialog asking to swap floppy - dem2(); showMouse(); return Common::kNoError; } diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 9218cadb53..0fe22fc64d 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -95,7 +95,7 @@ bool g_blo, g_main1, g_choisi, g_test0, - g_f2_all, + g_largestClearScreen, g_imen, g_cache, g_iesc, diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 11bc4e0fe4..7517beb992 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -91,8 +91,8 @@ const int kTempoNoise = 78; const int kTempoF = 80; const int kTempoM = 89; -const int ti1 = 410; -const int ti2 = 250; +const int kTime1 = 410; +const int kTime2 = 250; const int maxti = 7975; const int maxtd = 600; const int kMaxRect = 14; @@ -240,7 +240,7 @@ extern bool g_blo, g_main1, g_choisi, g_test0, - g_f2_all, + g_largestClearScreen, g_imen, g_cache, g_iesc, -- cgit v1.2.3 From 09c157b3b33122b645f93c81f8b524caabbd62d5 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 7 Mar 2012 23:44:12 +0100 Subject: MORTEVIELLE: Some more renaming. Move globals to the MortevielleEngine class --- engines/mortevielle/actions.cpp | 8 +- engines/mortevielle/keyboard.cpp | 3 +- engines/mortevielle/mor.cpp | 181 ++++++++++++++++++------------------ engines/mortevielle/mor.h | 6 +- engines/mortevielle/mor2.cpp | 12 +-- engines/mortevielle/mortevielle.cpp | 2 +- engines/mortevielle/mortevielle.h | 17 ++++ engines/mortevielle/mouse.cpp | 2 +- engines/mortevielle/ovd1.cpp | 2 +- engines/mortevielle/parole2.cpp | 2 +- engines/mortevielle/taffich.cpp | 5 +- engines/mortevielle/var_mor.h | 15 +-- 12 files changed, 133 insertions(+), 122 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 8f30e0da6b..d4a53780e1 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -1138,8 +1138,8 @@ void fctEnter() { g_s._teauto[8] = '*'; } else { int z = 0; - if (!g_blo) - t11(g_ment, z); + if (!g_vm->g_blo) + z = t11(g_ment); if (z != 0) { if ((g_ment == 3) || (g_ment == 7)) g_crep = 179; @@ -1297,8 +1297,8 @@ void fctWait() { do { ++g_jh; tinke(); - if (!g_blo) - t11(g_s._currPlace, quel); + if (!g_vm->g_blo) + quel = t11(g_s._currPlace); if ((g_ipers != 0) && (g_mpers == 0)) { g_crep = 998; if ((g_s._currPlace == ATTIC) || (g_s._currPlace == CELLAR)) diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index 72fc6e94aa..f28e309f66 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -25,6 +25,7 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "mortevielle/mortevielle.h" #include "mortevielle/keyboard.h" #include "mortevielle/var_mor.h" #include "mortevielle/asm.h" @@ -42,7 +43,7 @@ int testou() { switch (ch) { case '\23' : - g_soundOff = !g_soundOff; + g_vm->_soundOff = !g_vm->_soundOff; break; case '\26' : if ((g_c_zzz == 1) || (g_c_zzz == 2)) { diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 36e06115c1..24548fab13 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -385,33 +385,33 @@ void repon(int f, int m) { void t5(int cx) { if (cx == 10) - g_blo = false; + g_vm->g_blo = false; if (cx != 1) { - g_bh1 = false; - g_bf1 = false; + g_vm->_roomPresenceLuc = false; + g_vm->_roomPresenceIda = false; } if (cx != 2) - g_bh2 = false; + g_vm->_purpleRoomPresenceLeo = false; if (cx != 4) { - g_bh4 = false; - g_bf4 = false; + g_vm->_roomPresenceGuy = false; + g_vm->_roomPresenceEva = false; } if (cx != 5) - g_bh5 = false; + g_vm->_roomPresenceMax = false; if (cx != 6) - g_bh6 = false; + g_vm->_roomPresenceBob = false; if (cx != 8) - g_bh8 = false; + g_vm->_roomPresencePat = false; if (cx != 3) - g_bt3 = false; + g_vm->_toiletsPresenceBobMax = false; if (cx != 7) - g_bt7 = false; + g_vm->_bathRoomPresenceBobMax = false; if (cx != 9) - g_bh9 = false; + g_vm->_room9PresenceLeo = false; } /** @@ -831,18 +831,18 @@ int getPresenceStatsChapel(int &hour) { * Engine function - Check who is in the Green Room * @remarks Originally called 'quelq1' */ -void setPresenceGreenRoom(int l) { - int per = getRandomNumber(1, 2); - if (l == 1) { - if (per == 1) - g_bh1 = true; +void setPresenceGreenRoom(int roomId) { + int rand = getRandomNumber(1, 2); + if (roomId == GREEN_ROOM) { + if (rand == 1) + g_vm->_roomPresenceLuc = true; else - g_bf1 = true; - } else if (l == 4) { - if (per == 1) - g_bh4 = true; + g_vm->_roomPresenceIda = true; + } else if (roomId == DARKBLUE_ROOM) { + if (rand == 1) + g_vm->_roomPresenceGuy = true; else - g_bf4 = true; + g_vm->_roomPresenceEva = true; } g_ipers = 10; @@ -854,9 +854,9 @@ void setPresenceGreenRoom(int l) { */ void setPresencePurpleRoom() { if (g_li == 2) - g_bh2 = true; + g_vm->_purpleRoomPresenceLeo = true; else - g_bh9 = true; + g_vm->_room9PresenceLeo = true; g_ipers = 10; } @@ -866,7 +866,7 @@ void setPresencePurpleRoom() { * @remarks Originally called 'quelq5' */ void setPresenceBlueRoom() { - g_bh5 = true; + g_vm->_roomPresenceMax = true; g_ipers = 10; } @@ -876,9 +876,9 @@ void setPresenceBlueRoom() { */ void setPresenceRedRoom(int l) { if (l == 6) - g_bh6 = true; + g_vm->_roomPresenceBob = true; else if (l == 8) - g_bh8 = true; + g_vm->_roomPresencePat = true; g_ipers = 10; } @@ -962,14 +962,14 @@ int setPresenceLanding() { int rand = 0; do { rand = getRandomNumber(1, 8); - test = (((rand == 1) && (g_bh2 || g_bh9)) || - ((rand == 2) && g_bh8) || - ((rand == 3) && g_bh4) || - ((rand == 4) && g_bf4) || - ((rand == 5) && g_bh6) || - ((rand == 6) && g_bh1) || - ((rand == 7) && g_bf1) || - ((rand == 8) && g_bh5)); + test = (((rand == 1) && (g_vm->_purpleRoomPresenceLeo || g_vm->_room9PresenceLeo)) || + ((rand == 2) && g_vm->_roomPresencePat) || + ((rand == 3) && g_vm->_roomPresenceGuy) || + ((rand == 4) && g_vm->_roomPresenceEva) || + ((rand == 5) && g_vm->_roomPresenceBob) || + ((rand == 6) && g_vm->_roomPresenceLuc) || + ((rand == 7) && g_vm->_roomPresenceIda) || + ((rand == 8) && g_vm->_roomPresenceMax)); } while (test); int retVal = convertCharacterIndexToBitIndex(rand); @@ -1024,31 +1024,33 @@ void getKnockAnswer() { } } -void nouvp(int l, int &p) { - p = 0; +int nouvp(int l) { + int bitIndex = 0; if (l == 1) { - if (g_bh1) - p = 4; - if (g_bf1) - p = 2; - } else if (((l == 2) && (g_bh2)) || ((l == 9) && (g_bh9))) - p = 128; + if (g_vm->_roomPresenceLuc) + bitIndex = 4; // LUC + if (g_vm->_roomPresenceIda) + bitIndex = 2; // IDA + } else if (((l == 2) && (g_vm->_purpleRoomPresenceLeo)) || ((l == 9) && (g_vm->_room9PresenceLeo))) + bitIndex = 128; // LEO else if (l == 4) { - if (g_bh4) - p = 32; - if (g_bf4) - p = 16; - } else if ((l == 5) && (g_bh5)) - p = 1; - else if ((l == 6) && (g_bh6)) - p = 8; - else if ((l == 8) && (g_bh8)) - p = 64; - else if (((l == 3) && (g_bt3)) || ((l == 7) && (g_bt7))) - p = 9; - - if (p != 9) - showPeoplePresent(p); + if (g_vm->_roomPresenceGuy) + bitIndex = 32; // GUY + if (g_vm->_roomPresenceEva) + bitIndex = 16; // EVA + } else if ((l == 5) && (g_vm->_roomPresenceMax)) + bitIndex = 1; // MAX + else if ((l == 6) && (g_vm->_roomPresenceBob)) + bitIndex = 8; // BOB + else if ((l == 8) && (g_vm->_roomPresencePat)) + bitIndex = 64; // PAT + else if (((l == 3) && (g_vm->_toiletsPresenceBobMax)) || ((l == 7) && (g_vm->_bathRoomPresenceBobMax))) + bitIndex = 9; // BOB + MAX + + if (bitIndex != 9) + showPeoplePresent(bitIndex); + + return bitIndex; } /** @@ -1084,19 +1086,19 @@ void ecfren(int &p, int &rand, int cf, int l) { displayAloneText(); p = -500; rand = 0; - if (((l == 1) && (!g_bh1) && (!g_bf1)) || ((l == 4) && (!g_bh4) && (!g_bf4))) + if (((l == 1) && (!g_vm->_roomPresenceLuc) && (!g_vm->_roomPresenceIda)) || ((l == 4) && (!g_vm->_roomPresenceGuy) && (!g_vm->_roomPresenceEva))) p = getPresenceStatsGreenRoom(); - if ((l == 2) && (!g_bh2) && (!g_bh9)) + if ((l == 2) && (!g_vm->_purpleRoomPresenceLeo) && (!g_vm->_room9PresenceLeo)) p = getPresenceStatsPurpleRoom(); - if (((l == 3) && (!g_bt3)) || ((l == 7) && (!g_bt7))) + if (((l == 3) && (!g_vm->_toiletsPresenceBobMax)) || ((l == 7) && (!g_vm->_bathRoomPresenceBobMax))) p = getPresenceStatsToilets(); - if ((l == 5) && (!g_bh5)) + if ((l == 5) && (!g_vm->_roomPresenceMax)) p = getPresenceStatsBlueRoom(); - if (((l == 6) && (!g_bh6)) || ((l == 8) && (!g_bh8))) + if (((l == 6) && (!g_vm->_roomPresenceBob)) || ((l == 8) && (!g_vm->_roomPresencePat))) p = getPresenceStatsRedRoom(); - if ((l == 9) && (!g_bh9) && (!g_bh2)) + if ((l == 9) && (!g_vm->_room9PresenceLeo) && (!g_vm->_purpleRoomPresenceLeo)) p = 10; - if (((l == 2) && (g_bh9)) || ((l == 9) && (g_bh2))) + if (((l == 2) && (g_vm->_room9PresenceLeo)) || ((l == 9) && (g_vm->_purpleRoomPresenceLeo))) p = -400; if (p != -500) { p += cf; @@ -1109,29 +1111,29 @@ void becfren(int l) { int rand = getRandomNumber(1, 2); if (l == 1) { if (rand == 1) - g_bh1 = true; + g_vm->_roomPresenceLuc = true; else - g_bf1 = true; + g_vm->_roomPresenceIda = true; } else { // l == 4 if (rand == 1) - g_bh4 = true; + g_vm->_roomPresenceGuy = true; else - g_bf4 = true; + g_vm->_roomPresenceEva = true; } } else if (l == 2) - g_bh2 = true; + g_vm->_purpleRoomPresenceLeo = true; else if (l == 3) - g_bt3 = true; + g_vm->_toiletsPresenceBobMax = true; else if (l == 5) - g_bh5 = true; + g_vm->_roomPresenceMax = true; else if (l == 6) - g_bh6 = true; + g_vm->_roomPresenceBob = true; else if (l == 7) - g_bt7 = true; + g_vm->_bathRoomPresenceBobMax = true; else if (l == 8) - g_bh8 = true; + g_vm->_roomPresencePat = true; else if (l == 9) - g_bh9 = true; + g_vm->_room9PresenceLeo = true; } /* NIVEAU 10 */ @@ -1199,13 +1201,13 @@ void dprog() { g_li = 21; g_jh = 0; if (!g_s._ipre) - g_blo = true; + g_vm->g_blo = true; g_t = kTime1; g_mh = readclock(); } void pl1(int cf) { - if (((g_li == 1) && (!g_bh1) && (!g_bf1)) || ((g_li == 4) && (!g_bh4) && (!g_bf4))) { + if (((g_li == 1) && (!g_vm->_roomPresenceLuc) && (!g_vm->_roomPresenceIda)) || ((g_li == 4) && (!g_vm->_roomPresenceGuy) && (!g_vm->_roomPresenceEva))) { int p = getPresenceStatsGreenRoom(); int rand; phaz(rand, p, cf); @@ -1218,7 +1220,7 @@ void pl1(int cf) { } void pl2(int cf) { - if (!g_bh2) { + if (!g_vm->_purpleRoomPresenceLeo) { int p = getPresenceStatsPurpleRoom(); int rand; phaz(rand, p, cf); @@ -1231,7 +1233,7 @@ void pl2(int cf) { } void pl5(int cf) { - if (!g_bh5) { + if (!g_vm->_roomPresenceMax) { int p = getPresenceStatsBlueRoom(); int rand; @@ -1245,7 +1247,7 @@ void pl5(int cf) { } void pl6(int cf) { - if (((g_li == 6) && (!g_bh6)) || ((g_li == 8) && (!g_bh8))) { + if (((g_li == 6) && (!g_vm->_roomPresenceBob)) || ((g_li == 8) && (!g_vm->_roomPresencePat))) { int p = getPresenceStatsRedRoom(); int rand; @@ -1259,7 +1261,7 @@ void pl6(int cf) { } void pl9(int cf) { - if (!g_bh9) { + if (!g_vm->_room9PresenceLeo) { cf = -10; int p, rand; phaz(rand, p, cf); @@ -1337,7 +1339,8 @@ void pl20(int cf) { setPresenceChapel(h); } -void t11(int l11, int &a) { +int t11(int l11) { + int retVal = 0; int p, rand; ecfren(p, rand, g_s._faithScore, l11); @@ -1346,13 +1349,13 @@ void t11(int l11, int &a) { if (p != -500) { if (rand > p) { displayAloneText(); - a = 0; + retVal = 0; } else { becfren(g_li); - nouvp(g_li, a); + retVal = nouvp(g_li); } } else - nouvp(g_li, a); + retVal = nouvp(g_li); } if (l11 > 9) { @@ -1376,7 +1379,7 @@ void t11(int l11, int &a) { rand = getRandomNumber(1, 100); if (rand > p) { displayAloneText(); - a = 0; + retVal = 0; } else { if (l11 == 10) p = setPresenceDiningRoom(h); @@ -1388,10 +1391,12 @@ void t11(int l11, int &a) { p = setPresenceLanding(); else if (l11 == 20) p = setPresenceChapel(h); - a = p; + retVal = p; } } } + + return retVal; } void cavegre() { diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index fcabee51d2..59555fb511 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -80,7 +80,7 @@ extern int getPresenceStatsKitchen(); extern int getPresenceStatsAttic(); extern int getPresenceStatsLanding(); extern int getPresenceStatsChapel(int &hour); -extern void setPresenceGreenRoom(int l); +extern void setPresenceGreenRoom(int roomId); extern void setPresencePurpleRoom(); extern void setPresenceBlueRoom(); extern void setPresenceRedRoom(int l); @@ -90,7 +90,7 @@ extern int setPresenceKitchen(); extern int setPresenceLanding(); extern int setPresenceChapel(int hour); extern void getKnockAnswer(); -extern void nouvp(int l, int &p); +extern int nouvp(int l); extern int convertBitIndexToCharacterIndex(int bitIndex); extern void ecfren(int &p, int &rand, int cf, int l); extern void becfren(int l); @@ -110,7 +110,7 @@ extern void pl12(int cf); extern void pl13(int cf); extern void pl15(int cf); extern void pl20(int cf); -extern void t11(int l11, int &a); +extern int t11(int l11); extern void cavegre(); extern void writetp(Common::String s, int t); extern void aniof(int ouf, int num); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 48ca45e4da..bbe4a7734e 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -96,7 +96,7 @@ void tinke() { if (y_s < 12) return; - if (!g_blo) { + if (!g_vm->g_blo) { if ((hour == 12) || ((hour > 18) && (hour < 21)) || ((hour >= 0) && (hour < 7))) g_t = kTime2; else @@ -182,7 +182,7 @@ void tinke() { } g_hfb = readclock(); if ((g_brt) && ((g_hfb - g_hdb) > 17)) { - nouvp(g_li, cx); + cx = nouvp(g_li); g_brt = false; g_hdb = 0; if ((g_s._currPlace > OWN_ROOM) && (g_s._currPlace < DINING_ROOM)) @@ -301,9 +301,9 @@ void tperd() { g_iouv = 0; g_mchai = 0; unsetSearchMenu(); - if (!g_blo) { + if (!g_vm->g_blo) { int cx; - t11(21, cx); + cx = t11(21); } g_vm->_loseGame = true; @@ -514,8 +514,8 @@ void t1sama() { //Entering manor g_s._currPlace = OWN_ROOM; affrep(); t5(10); - if (!g_blo) - t11(0, minute); + if (!g_vm->g_blo) + minute = t11(0); g_ipers = 0; g_mpers = 0; g_s._ipre = true; diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 8dd5ac3b35..95701ca3bd 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -154,7 +154,7 @@ Common::ErrorCode MortevielleEngine::initialise() { initMouse(); init_lieu(); - g_soundOff = false; + g_vm->_soundOff = false; g_largestClearScreen = false; teskbd(); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index c44daff1bd..d00d318d96 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -88,6 +88,8 @@ private: bool _inMainGameLoop; // Flag when the main game loop is active Common::StringArray _engineStrings; Common::StringArray _gameStrings; + + Common::ErrorCode initialise(); Common::ErrorCode loadMortDat(); void readStaticStrings(Common::File &f, int dataSize, DataType dataType); @@ -100,6 +102,21 @@ private: void playGame(); void handleAction(); public: + bool g_blo; + bool _roomPresenceLuc; + bool _roomPresenceIda; + bool _purpleRoomPresenceLeo; + bool _roomPresenceGuy; + bool _roomPresenceEva; + bool _roomPresenceMax; + bool _roomPresenceBob; + bool _roomPresencePat; + bool _toiletsPresenceBobMax; + bool _bathRoomPresenceBobMax; + bool _room9PresenceLeo; + + bool _soundOff; + ScreenSurface _screenSurface; PaletteManager _paletteManager; GfxSurface _backgroundSurface; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 3b381dd1b0..d6ffb116de 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -417,7 +417,7 @@ void moveMouse(bool &funct, char &key) { cy = 8; break; case '\23': - g_soundOff = !g_soundOff; + g_vm->_soundOff = !g_vm->_soundOff; return; break; case '\26': diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index d5bb43a83a..cab69c0a07 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -161,7 +161,7 @@ void music() { bool fin; /* debug('o3 music'); */ - if (g_soundOff) + if (g_vm->_soundOff) return; g_rech_cfiec = true; diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index ff6ad7faec..e08cbeb475 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -87,7 +87,7 @@ void startSpeech(int rep, int ht, int typ) { int savph[501]; int tempo; - if (g_soundOff) + if (g_vm->_soundOff) return; g_num_ph = rep; diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 3e21a35742..47954804ce 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -27,6 +27,7 @@ #include "common/file.h" #include "common/str.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/level15.h" #include "mortevielle/mor.h" #include "mortevielle/mouse.h" @@ -251,8 +252,8 @@ void taffich() { if ((a < 27) && ((g_maff < 27) || (g_s._currPlace == LANDING)) && (g_msg[4] != OPCODE_ENTER)) { if ((a == 13) || (a == 14)) displayAloneText(); - else if (!g_blo) - t11(g_s._currPlace, cx); + else if (!g_vm->g_blo) + cx = t11(g_s._currPlace); g_mpers = 0; } } diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 7517beb992..1a5f137be1 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -223,20 +223,7 @@ enum GraphicModes { MODE_AMSTRAD1512 = 0, MODE_CGA = 1, MODE_EGA = 2, MODE_HERCU /*------------------------------ VARIABLES ------------------------------*/ /*---------------------------------------------------------------------------*/ -extern bool g_blo, - g_bh1, - g_bf1, - g_bh2, - g_bh4, - g_bf4, - g_bh5, - g_bh6, - g_bh8, - g_bt3, - g_bt7, - g_bh9, - - g_soundOff, +extern bool g_main1, g_choisi, g_test0, -- cgit v1.2.3 From 36a65ad3c9c858f72ba62d16d58b6996228b27fa Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 8 Mar 2012 08:24:54 +0100 Subject: MORTEVIELLE: Move (and rename) some more globals to MortevielleEngine --- engines/mortevielle/actions.cpp | 66 ++++++++++++++++++------------------- engines/mortevielle/dialogs.cpp | 2 +- engines/mortevielle/menu.cpp | 16 ++++----- engines/mortevielle/menu.h | 5 ++- engines/mortevielle/mor.cpp | 14 ++++---- engines/mortevielle/mor2.cpp | 20 +++++------ engines/mortevielle/mortevielle.cpp | 18 +++++----- engines/mortevielle/mortevielle.h | 8 ++++- engines/mortevielle/prog.cpp | 12 +++---- engines/mortevielle/taffich.cpp | 2 +- engines/mortevielle/var_mor.cpp | 24 +------------- engines/mortevielle/var_mor.h | 8 ----- 12 files changed, 86 insertions(+), 109 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index d4a53780e1..cd08177bcc 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -57,9 +57,9 @@ void fctMove() { if (!g_syn) ecr3(g_vm->getEngineString(S_GO_TO)); tfleche(); - if (g_iesc) + if (g_vm->_keyPressedEsc) g_okdes = false; - if ((g_anyone) || (g_iesc)) + if ((g_anyone) || (g_vm->_keyPressedEsc)) return; tcoord(1); if (g_num == 0) @@ -224,7 +224,7 @@ void fctTake() { if (!g_syn) ecr3(g_vm->getEngineString(S_TAKE)); tfleche(); - if ((g_anyone) || (g_iesc)) + if ((g_anyone) || (g_vm->_keyPressedEsc)) return; if (g_caff == 3) { tcoord(2); @@ -322,12 +322,10 @@ void fctInventoryTake() { * @remarks Originally called 'tsoulever' */ void fctLift() { -// int cx; - if (!g_syn) ecr3(g_vm->getEngineString(S_LIFT)); tfleche(); - if ((g_anyone) || (g_iesc)) + if ((g_anyone) || (g_vm->_keyPressedEsc)) return; tcoord(3); if (g_num == 0) { @@ -364,7 +362,7 @@ void fctRead() { if (!g_syn) ecr3(g_vm->getEngineString(S_READ)); tfleche(); - if (!(g_anyone) && !(g_iesc)) { + if (!(g_anyone) && !(g_vm->_keyPressedEsc)) { tcoord(4); if (g_num != 0) g_crep = 107; @@ -397,7 +395,7 @@ void fctLook() { if (!g_syn) ecr3(g_vm->getEngineString(S_LOOK)); tfleche(); - if ((g_anyone) || (g_iesc)) + if ((g_anyone) || (g_vm->_keyPressedEsc)) return; tcoord(5); if (g_num == 0) { @@ -488,7 +486,7 @@ void fctSearch() { ecr3(g_vm->getEngineString(S_SEARCH)); tfleche(); - if (g_anyone || g_iesc) + if (g_anyone || g_vm->_keyPressedEsc) return; if (g_s._currPlace == 23) { @@ -599,7 +597,7 @@ void fctOpen() { } tfleche(); - if ((g_anyone) || (g_iesc)) + if ((g_anyone) || (g_vm->_keyPressedEsc)) return; tcoord(7); @@ -652,10 +650,10 @@ void fctPlace() { ecr3(g_vm->getEngineString(S_PUT)); tfleche(); - if (g_iesc) + if (g_vm->_keyPressedEsc) g_crep = 998; - if ((g_anyone) || (g_iesc)) + if ((g_anyone) || (g_vm->_keyPressedEsc)) return; tcoord(8); @@ -784,7 +782,7 @@ void fctTurn() { if (!g_syn) ecr3(g_vm->getEngineString(S_TURN)); tfleche(); - if ((g_anyone) || (g_iesc)) + if ((g_anyone) || (g_vm->_keyPressedEsc)) return; tcoord(9); if (g_num != 0) { @@ -820,12 +818,12 @@ void fctSelfHide() { if (!g_syn) ecr3(g_vm->getEngineString(S_HIDE_SELF)); tfleche(); - if (!(g_anyone) && !(g_iesc)) { + if (!(g_anyone) && !(g_vm->_keyPressedEsc)) { tcoord(10); if (g_num == 0) - g_cache = false; + g_vm->_hiddenHero = false; else { - g_cache = true; + g_vm->_hiddenHero = true; g_crep = 999; } } @@ -842,7 +840,7 @@ void fctAttach() { if (!g_syn) ecr3(g_vm->getEngineString(S_TIE)); tfleche(); - if (!(g_anyone) && !(g_iesc)) { + if (!(g_anyone) && !(g_vm->_keyPressedEsc)) { tcoord(8); g_crep = 997; if ((g_num != 0) && (g_s._currPlace == WELL)) { @@ -868,9 +866,9 @@ void fctClose() { if (g_caff < 26) { tfleche(); - if (g_iesc) + if (g_vm->_keyPressedEsc) g_crep = 998; - if ((g_anyone) || (g_iesc)) + if ((g_anyone) || (g_vm->_keyPressedEsc)) return; tcoord(7); if (g_num != 0) { @@ -915,7 +913,7 @@ void fctKnock() { if (g_s._currPlace < DOOR) { tfleche(); - if (!(g_anyone) && !(g_iesc)) { + if (!(g_anyone) && !(g_vm->_keyPressedEsc)) { if ((g_s._currPlace < MOUNTAIN) && (g_s._currPlace != LANDING)) g_crep = 133; else @@ -966,7 +964,7 @@ void fctSelfPut() { return; } tfleche(); - if ((g_anyone) || (g_iesc)) + if ((g_anyone) || (g_vm->_keyPressedEsc)) return; tcoord(7); g_crep = 124; @@ -1138,7 +1136,7 @@ void fctEnter() { g_s._teauto[8] = '*'; } else { int z = 0; - if (!g_vm->g_blo) + if (!g_vm->_blo) z = t11(g_ment); if (z != 0) { if ((g_ment == 3) || (g_ment == 7)) @@ -1155,12 +1153,12 @@ void fctEnter() { g_msg[4] = g_vm->_menu._discussMenu[g_x]; g_syn = true; if (g_ment == 9) { - g_col = true; + g_vm->_col = true; g_caff = 70; afdes(0); repon(2, g_caff); } else - g_col = false; + g_vm->_col = false; debloc(g_ment); g_ment = 0; } @@ -1237,7 +1235,7 @@ void fctForce() { if (g_caff < 25) tfleche(); - if ((!g_anyone) && (!g_iesc)) { + if ((!g_anyone) && (!g_vm->_keyPressedEsc)) { if (g_s._currPlace != 26) g_crep = 997; else { @@ -1297,7 +1295,7 @@ void fctWait() { do { ++g_jh; tinke(); - if (!g_vm->g_blo) + if (!g_vm->_blo) quel = t11(g_s._currPlace); if ((g_ipers != 0) && (g_mpers == 0)) { g_crep = 998; @@ -1327,7 +1325,7 @@ void fctSound() { ecr3(g_vm->getEngineString(S_PROBE2)); if (g_caff < 27) { tfleche(); - if (!(g_anyone) && (!g_iesc)) + if (!(g_anyone) && (!g_vm->_keyPressedEsc)) g_crep = 145; g_num = 0; } @@ -1345,7 +1343,7 @@ void fctDiscuss() { bool f; endSearch(); - if (g_col) + if (g_vm->_col) suj = 128; else { cx = 0; @@ -1463,8 +1461,8 @@ void fctDiscuss() { g_vm->setMouseClick(false); if (choi != 46) { int ix = choi - 1; - if (g_col) { - g_col = false; + if (g_vm->_col) { + g_vm->_col = false; g_s._currPlace = 15; if (g_iouv > 0) max = 8; @@ -1507,15 +1505,15 @@ void fctDiscuss() { showMouse(); } } while ((choi != 46) && (suj != 138)); - if (g_col) { + if (g_vm->_col) { g_s._faithScore += (3 * (g_s._faithScore / 10)); hideMouse(); hirs(); premtet(); sparl(0, 138); showMouse(); - g_col = false; - g_s._currPlace = 15; + g_vm->_col = false; + g_s._currPlace = LANDING; } g_ctrm = 0; hideMouse(); @@ -1541,7 +1539,7 @@ void fctSmell() { if (!g_syn) ecr3(g_vm->getEngineString(S_SMELL)); tfleche(); - if (!(g_anyone) && !(g_iesc)) + if (!(g_anyone) && !(g_vm->_keyPressedEsc)) if (g_caff == 16) g_crep = 153; } else if (g_caff == 123) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 717a256b8f..c4b476c73e 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -468,7 +468,7 @@ void f3f8::ani50() { pictout(adani, g_crep, 63, 12); g_crep = animof(2, 1); pictout(adani, g_crep, 63, 12); - g_largestClearScreen = (g_res == 1); + g_vm->_largestClearScreen = (g_res == 1); repon(2, kDialogStringIndex + 143); } diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index f2f19b6eee..9a0bcec2de 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -192,9 +192,9 @@ void Menu::drawMenu() { _menuActive = true; g_msg4 = OPCODE_NONE; g_msg3 = OPCODE_NONE; - g_choisi = false; + _menuSelected = false; g_vm->setMouseClick(false); - g_test0 = false; + _multiTitle = false; } void Menu::invers(int ix) { @@ -353,7 +353,7 @@ void Menu::menuDown(int ii) { } g_vm->_screenSurface.putxy(xco, g_vm->_screenSurface._textPos.y + 8); } while (cx != nb_lig); - g_test0 = true; + _multiTitle = true; showMouse(); } @@ -361,7 +361,7 @@ void Menu::menuDown(int ii) { * Menu is being removed, so restore the previous background area. */ void Menu::menuUp(int xx) { - if (g_test0) { + if (_multiTitle) { charecr(10, (g_menuConstants[xx - 1][1] + 1) << 1); /* Restore the background area */ @@ -375,7 +375,7 @@ void Menu::menuUp(int xx) { // Copy the data Common::copy(pSrc, pSrc + (400 - 10) * SCREEN_WIDTH, pDest); - g_test0 = false; + _multiTitle = false; } } @@ -428,7 +428,7 @@ void Menu::mdn() { else ix = MENU_FILE; - if ((ix != g_msg3) || (!g_test0)) + if ((ix != g_msg3) || (!_multiTitle)) if (!((ix == MENU_FILE) && ((g_msg3 == MENU_SAVE) || (g_msg3 == MENU_LOAD)))) { menuUp(g_msg3); menuDown(ix); @@ -436,7 +436,7 @@ void Menu::mdn() { g_msg4 = OPCODE_NONE; } } else { // Not in the MenuTitle line - if ((y > 11) && (g_test0)) + if ((y > 11) && (_multiTitle)) util(x, y); } } else { // There was a click @@ -453,7 +453,7 @@ void Menu::mdn() { g_vm->setMouseClick(false); } else { // A menu was clicked on - g_choisi = (g_test0) && (g_msg4 != OPCODE_NONE); + _menuSelected = (_multiTitle) && (g_msg4 != OPCODE_NONE); menuUp(g_msg3); g_msg[4] = g_msg4; g_msg[3] = g_msg3; diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index cdd343a9ed..5672ef7864 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -39,6 +39,9 @@ private: void menuDown(int ii); public: bool _menuActive; + bool _menuSelected; + bool _multiTitle; + bool _menuDisplayed; Common::String _inventoryStringArray[9]; Common::String _moveStringArray[8]; Common::String _actionStringArray[22]; @@ -47,7 +50,7 @@ public: int _discussMenu[9]; int _inventoryMenu[9]; int _moveMenu[8]; -public: + void setText(int menuId, Common::String name); void disableMenuItem(int menuId); void enableMenuItem(int menuId); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 24548fab13..e3bc5243f9 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -166,10 +166,10 @@ void clsf1() { */ void clearScreenType2() { hideMouse(); - if (g_largestClearScreen) { + if (g_vm->_largestClearScreen) { g_vm->_screenSurface.fillRect(0, Common::Rect(1, 176, 633, 199)); g_vm->_screenSurface.drawBox(0, 175, 634, 24, 15); - g_largestClearScreen = false; + g_vm->_largestClearScreen = false; } else { g_vm->_screenSurface.fillRect(0, Common::Rect(1, 176, 633, 190)); g_vm->_screenSurface.drawBox(0, 175, 634, 15, 15); @@ -194,7 +194,7 @@ void ecr2(Common::String str_) { g_vm->_screenSurface.putxy(8, 182); g_vm->_screenSurface.drawString(copy(str_, tlig, tlig << 1), 5); } else { - g_largestClearScreen = true; + g_vm->_largestClearScreen = true; clearScreenType2(); g_vm->_screenSurface.putxy(8, 176); g_vm->_screenSurface.drawString(copy(str_, 1, (tlig - 1)), 5); @@ -318,9 +318,9 @@ void repon(int f, int m) { tmpStr = deline(m - 501 + kInventoryStringIndex); if ((int) tmpStr.size() > ((58 + (g_res - 1) * 37) << 1)) - g_largestClearScreen = true; + g_vm->_largestClearScreen = true; else - g_largestClearScreen = false; + g_vm->_largestClearScreen = false; clearScreenType2(); displayStr(tmpStr, 8, 176, 85, 3, 5); @@ -385,7 +385,7 @@ void repon(int f, int m) { void t5(int cx) { if (cx == 10) - g_vm->g_blo = false; + g_vm->_blo = false; if (cx != 1) { g_vm->_roomPresenceLuc = false; @@ -1201,7 +1201,7 @@ void dprog() { g_li = 21; g_jh = 0; if (!g_s._ipre) - g_vm->g_blo = true; + g_vm->_blo = true; g_t = kTime1; g_mh = readclock(); } diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index bbe4a7734e..4c3342b900 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -96,7 +96,7 @@ void tinke() { if (y_s < 12) return; - if (!g_vm->g_blo) { + if (!g_vm->_blo) { if ((hour == 12) || ((hour > 18) && (hour < 21)) || ((hour >= 0) && (hour < 7))) g_t = kTime2; else @@ -301,7 +301,7 @@ void tperd() { g_iouv = 0; g_mchai = 0; unsetSearchMenu(); - if (!g_vm->g_blo) { + if (!g_vm->_blo) { int cx; cx = t11(21); } @@ -312,7 +312,7 @@ void tperd() { repon(9, g_crep); clearScreenType2(); clsf3(); - g_col = false; + g_vm->_col = false; g_syn = false; g_okdes = false; } @@ -514,7 +514,7 @@ void t1sama() { //Entering manor g_s._currPlace = OWN_ROOM; affrep(); t5(10); - if (!g_vm->g_blo) + if (!g_vm->_blo) minute = t11(0); g_ipers = 0; g_mpers = 0; @@ -563,13 +563,13 @@ void tctrm() { void quelquun() { - if (g_imen) + if (g_vm->_menu._menuDisplayed) g_vm->_menu.eraseMenu(); endSearch(); g_crep = 997; L1: - if (!g_cache) { + if (!g_vm->_hiddenHero) { if (g_crep == 997) g_crep = 138; repon(2, g_crep); @@ -592,10 +592,10 @@ L1: g_msg[3] = MENU_DISCUSS; g_msg[4] = g_vm->_menu._discussMenu[cx]; g_syn = true; - g_col = true; + g_vm->_col = true; } else { if (getRandomNumber(1, 3) == 2) { - g_cache = false; + g_vm->_hiddenHero = false; g_crep = 137; goto L1; } else { @@ -608,7 +608,7 @@ L1: affrep(); } } - if (g_imen) + if (g_vm->_menu._menuDisplayed) g_vm->_menu.drawMenu(); } @@ -665,7 +665,7 @@ void tfleche() { } while (!((touch == '\73') || ((touch == '\104') && (g_x != 0) && (g_y != 0)) || (g_anyone) || (g_rect))); if (touch == '\73') - g_iesc = true; + g_vm->_keyPressedEsc = true; if (g_rect) { g_x = x_s; diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 95701ca3bd..42c714e456 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -154,8 +154,8 @@ Common::ErrorCode MortevielleEngine::initialise() { initMouse(); init_lieu(); - g_vm->_soundOff = false; - g_largestClearScreen = false; + _soundOff = false; + _largestClearScreen = false; teskbd(); dialpre(); @@ -553,9 +553,9 @@ void MortevielleEngine::handleAction() { clsf3(); oo = false; g_ctrm = 0; - if (!g_iesc) { + if (!_keyPressedEsc) { g_vm->_menu.drawMenu(); - g_imen = true; + g_vm->_menu._menuDisplayed = true; temps = 0; g_key = 0; funct = false; @@ -568,20 +568,20 @@ void MortevielleEngine::handleAction() { moveMouse(funct, inkey); CHECK_QUIT; temps = temps + 1; - } while (!((g_choisi) || (temps > lim) || (funct) || (g_anyone))); + } while (!((g_vm->_menu._menuSelected) || (temps > lim) || (funct) || (g_anyone))); _inMainGameLoop = false; g_vm->_menu.eraseMenu(); - g_imen = false; + g_vm->_menu._menuDisplayed = false; if ((inkey == '\1') || (inkey == '\3') || (inkey == '\5') || (inkey == '\7') || (inkey == '\11')) { changeGraphicalDevice((uint)(ord(inkey) - 1) >> 1); return; } - if (g_choisi && (g_msg[3] == MENU_SAVE)) { + if (g_vm->_menu._menuSelected && (g_msg[3] == MENU_SAVE)) { Common::String saveName = Common::String::format("Savegame #%d", g_msg[4] & 7); g_vm->_savegameManager.saveGame(g_msg[4] & 7, saveName); } - if (g_choisi && (g_msg[3] == MENU_LOAD)) + if (g_vm->_menu._menuSelected && (g_msg[3] == MENU_LOAD)) g_vm->_savegameManager.loadGame((g_msg[4] & 7) - 1); if (inkey == '\103') { /* F9 */ temps = Alert::show(g_hintPctMessage, 1); @@ -639,7 +639,7 @@ void MortevielleEngine::handleAction() { g_okdes = false; dessin(0); } - if ((!g_syn) || (g_col)) + if ((!g_syn) || (_col)) repon(2, g_crep); } } while (g_syn); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index d00d318d96..30b1b982e9 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -102,7 +102,6 @@ private: void playGame(); void handleAction(); public: - bool g_blo; bool _roomPresenceLuc; bool _roomPresenceIda; bool _purpleRoomPresenceLeo; @@ -116,6 +115,13 @@ public: bool _room9PresenceLeo; bool _soundOff; + bool _largestClearScreen; + bool _hiddenHero; + bool _keyPressedEsc; + + bool _blo; + bool _col; + ScreenSurface _screenSurface; PaletteManager _paletteManager; diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 36d5265ed3..a74def2eb4 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -70,12 +70,12 @@ void changeGraphicalDevice(int newDevice) { */ void MortevielleEngine::gameLoaded() { hideMouse(); - g_imen = false; + _menu._menuDisplayed = false; _loseGame = true; g_anyone = false; g_okdes = true; - g_col = false; - g_cache = false; + _col = false; + _hiddenHero = false; g_brt = false; g_maff = 68; g_mnumo = 0; @@ -132,10 +132,10 @@ void tmaj3() { } void tsitu() { - if (!g_col) + if (!g_vm->_col) clearScreenType2(); g_syn = false; - g_iesc = false; + g_vm->_keyPressedEsc = false; if (!g_anyone) { if (g_brt) if ((g_msg[3] == MENU_MOVE) || (g_msg[4] == OPCODE_LEAVE) || (g_msg[4] == OPCODE_SLEEP) || (g_msg[4] == OPCODE_EAT)) { @@ -199,7 +199,7 @@ void tsitu() { fctSelfPut(); if (g_msg[4] == OPCODE_SLOOK) fctSelftLook(); - g_cache = false; + g_vm->_hiddenHero = false; if (g_msg[4] == OPCODE_SHIDE) fctSelfHide(); diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 47954804ce..6fe9f61b60 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -252,7 +252,7 @@ void taffich() { if ((a < 27) && ((g_maff < 27) || (g_s._currPlace == LANDING)) && (g_msg[4] != OPCODE_ENTER)) { if ((a == 13) || (a == 14)) displayAloneText(); - else if (!g_vm->g_blo) + else if (!g_vm->_blo) cx = t11(g_s._currPlace); g_mpers = 0; } diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 0fe22fc64d..d9aa291e3f 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -78,29 +78,7 @@ const byte g_rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; /*------------------------------ VARIABLES ------------------------------*/ /*---------------------------------------------------------------------------*/ -bool g_blo, - g_bh1, - g_bf1, - g_bh2, - g_bh4, - g_bf4, - g_bh5, - g_bh6, - g_bh8, - g_bt3, - g_bt7, - g_bh9, - - g_soundOff, - g_main1, - g_choisi, - g_test0, - g_largestClearScreen, - g_imen, - g_cache, - g_iesc, - g_col, - g_syn, +bool g_syn, g_heroSearching, g_zuul, g_obpart, diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 1a5f137be1..610b302e45 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -224,14 +224,6 @@ enum GraphicModes { MODE_AMSTRAD1512 = 0, MODE_CGA = 1, MODE_EGA = 2, MODE_HERCU /*---------------------------------------------------------------------------*/ extern bool - g_main1, - g_choisi, - g_test0, - g_largestClearScreen, - g_imen, - g_cache, - g_iesc, - g_col, g_syn, g_heroSearching, g_zuul, -- cgit v1.2.3 From 24866fe395ebee1e127e749ee9209f45b98e729d Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 9 Mar 2012 20:44:10 +1100 Subject: MORTEVIELLE: Fix crash in chartex method for French version --- engines/mortevielle/ovd1.cpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index cab69c0a07..8641a18501 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -105,21 +105,24 @@ void chartex() { if (!inpFile.open("TXX.INP")) { if (!inpFile.open("TXX.MOR")) { warning("Missing file - TXX.INP or .MOR - Switching to DAT file"); + return; } - } else if ((inpFile.size() > (maxti * 2)) || (ntpFile.size() > (maxtd * 3))) { - warning("TXX file - Unexpected format - Switching to DAT file"); + } + if (!ntpFile.open("TXX.NTP")) { + warning("Missing file - TXX.INP or .MOR - Switching to DAT file"); return; - } else { - for (int i = 0; i < inpFile.size() / 2; ++i) - g_t_mot[i] = inpFile.readUint16LE(); - - inpFile.close(); - g_vm->_txxFileFl = true; } + + if ((inpFile.size() > (maxti * 2)) || (ntpFile.size() > (maxtd * 3))) { + warning("TXX file - Unexpected format - Switching to DAT file"); + return; + } - if (!ntpFile.open("TXX.NTP")) { - error("Missing file - TXX.NTP"); - } + for (int i = 0; i < inpFile.size() / 2; ++i) + g_t_mot[i] = inpFile.readUint16LE(); + + inpFile.close(); + g_vm->_txxFileFl = true; for (int i = 0; i < (ntpFile.size() / 3); ++i) { g_t_rec[i]._indis = ntpFile.readSint16LE(); -- cgit v1.2.3 From 61afdadcb6493d0e349104ccb467faa4905d7eb7 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 9 Mar 2012 20:09:19 +0100 Subject: MORTEVIELLE: Some more renaming, fix a couple of GCC warnings --- engines/mortevielle/actions.cpp | 50 ++++++++++++++++++------------------- engines/mortevielle/mor2.cpp | 16 ++++++------ engines/mortevielle/mortevielle.cpp | 10 ++++---- engines/mortevielle/mortevielle.h | 4 +++ engines/mortevielle/mouse.cpp | 2 +- engines/mortevielle/prog.cpp | 8 +++--- engines/mortevielle/var_mor.cpp | 6 +---- engines/mortevielle/var_mor.h | 4 --- 8 files changed, 46 insertions(+), 54 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index cd08177bcc..cabd0522dd 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -54,7 +54,7 @@ void fctMove() { repon(2, g_s._currPlace); } if ((g_s._currPlace == LANDING) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { - if (!g_syn) + if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_GO_TO)); tfleche(); if (g_vm->_keyPressedEsc) @@ -189,7 +189,7 @@ void fctTake() { if (g_crep != 139) { if (g_ipers > 0) g_s._faithScore += 3; - if (g_obpart) { + if (g_vm->_obpart) { if (g_s._currPlace == PURPLE_ROOM) g_s._purpleRoomObjectId = 0; if (g_s._currPlace == ATTIC) { @@ -207,7 +207,7 @@ void fctTake() { if (g_s._currPlace == WELL) g_s._wellObjectId = 0; unsetSearchMenu(); - g_obpart = false; + g_vm->_obpart = false; affrep(); } else { g_tabdon[acha + ((g_mchai - 1) * 10) + g_cs - 1] = 0; @@ -221,7 +221,7 @@ void fctTake() { } return; } - if (!g_syn) + if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_TAKE)); tfleche(); if ((g_anyone) || (g_vm->_keyPressedEsc)) @@ -322,7 +322,7 @@ void fctInventoryTake() { * @remarks Originally called 'tsoulever' */ void fctLift() { - if (!g_syn) + if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_LIFT)); tfleche(); if ((g_anyone) || (g_vm->_keyPressedEsc)) @@ -359,7 +359,7 @@ void fctRead() { if (g_caff > 99) st4(g_caff); else { - if (!g_syn) + if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_READ)); tfleche(); if (!(g_anyone) && !(g_vm->_keyPressedEsc)) { @@ -392,7 +392,7 @@ void fctLook() { g_crep = 103; return; } - if (!g_syn) + if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_LOOK)); tfleche(); if ((g_anyone) || (g_vm->_keyPressedEsc)) @@ -482,7 +482,7 @@ void fctSearch() { return; } - if (!g_syn) + if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_SEARCH)); tfleche(); @@ -513,7 +513,7 @@ void fctSearch() { if (g_mchai != 0) { g_cs = 0; g_is = 0; - g_heroSearching = true; + g_vm->_heroSearching = true; setSearchMenu(); tsuiv(); } else @@ -579,13 +579,13 @@ void fctSelfSearch() { * @remarks Originally called 'touvrir' */ void fctOpen() { - if (!g_syn) + if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_OPEN)); if (g_caff == 26) { if (g_ment != 0) { g_msg[4] = OPCODE_ENTER; - g_syn = true; + g_vm->_syn = true; } else g_crep = 997; return; @@ -646,7 +646,7 @@ void fctPlace() { return; } - if (!g_syn) + if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_PUT)); tfleche(); @@ -779,7 +779,7 @@ void fctTurn() { g_crep = 149; return; } - if (!g_syn) + if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_TURN)); tfleche(); if ((g_anyone) || (g_vm->_keyPressedEsc)) @@ -815,7 +815,7 @@ void fctTurn() { * @remarks Originally called 'tcacher' */ void fctSelfHide() { - if (!g_syn) + if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_HIDE_SELF)); tfleche(); if (!(g_anyone) && !(g_vm->_keyPressedEsc)) { @@ -837,7 +837,7 @@ void fctAttach() { if (g_s._selectedObjectId == 0) g_crep = 186; else { - if (!g_syn) + if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_TIE)); tfleche(); if (!(g_anyone) && !(g_vm->_keyPressedEsc)) { @@ -861,7 +861,7 @@ void fctAttach() { * @remarks Originally called 'tfermer' */ void fctClose() { - if (!g_syn) + if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_CLOSE)); if (g_caff < 26) { @@ -903,7 +903,7 @@ void fctClose() { void fctKnock() { warning("Knock - _currPlace %d", g_s._currPlace); - if (!g_syn) + if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_HIT)); if (g_s._currPlace == LANDING) { @@ -951,7 +951,7 @@ void fctKnock() { * @remarks Originally called 'tposer' */ void fctSelfPut() { - if (!g_syn) + if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_POSE)); if (g_s._selectedObjectId == 0) g_crep = 186; @@ -1151,7 +1151,7 @@ void fctEnter() { g_s._currPlace = LANDING; g_msg[3] = MENU_DISCUSS; g_msg[4] = g_vm->_menu._discussMenu[g_x]; - g_syn = true; + g_vm->_syn = true; if (g_ment == 9) { g_vm->_col = true; g_caff = 70; @@ -1230,7 +1230,7 @@ void fctSleep() { * @remarks Originally called 'tdefoncer' */ void fctForce() { - if (!g_syn) + if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_SMASH)); if (g_caff < 25) tfleche(); @@ -1286,8 +1286,6 @@ void fctLeave() { * @remarks Originally called 'tattendre' */ void fctWait() { - int quel; - g_mpers = 0; clsf3(); @@ -1296,7 +1294,7 @@ void fctWait() { ++g_jh; tinke(); if (!g_vm->_blo) - quel = t11(g_s._currPlace); + t11(g_s._currPlace); if ((g_ipers != 0) && (g_mpers == 0)) { g_crep = 998; if ((g_s._currPlace == ATTIC) || (g_s._currPlace == CELLAR)) @@ -1321,7 +1319,7 @@ void fctWait() { * @remarks Originally called 'tsonder' */ void fctSound() { - if (!g_syn) + if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_PROBE2)); if (g_caff < 27) { tfleche(); @@ -1536,7 +1534,7 @@ void fctDiscuss() { void fctSmell() { g_crep = 119; if (g_caff < 26) { - if (!g_syn) + if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_SMELL)); tfleche(); if (!(g_anyone) && !(g_vm->_keyPressedEsc)) @@ -1554,7 +1552,7 @@ void fctSmell() { void fctScratch() { g_crep = 155; if (g_caff < 27) { - if (!g_syn) + if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_SCRATCH)); tfleche(); } diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index 4c3342b900..bf62fe3857 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -301,10 +301,8 @@ void tperd() { g_iouv = 0; g_mchai = 0; unsetSearchMenu(); - if (!g_vm->_blo) { - int cx; - cx = t11(21); - } + if (!g_vm->_blo) + t11(21); g_vm->_loseGame = true; clsf1(); @@ -313,7 +311,7 @@ void tperd() { clearScreenType2(); clsf3(); g_vm->_col = false; - g_syn = false; + g_vm->_syn = false; g_okdes = false; } @@ -425,8 +423,8 @@ void sparl(float adr, float rep) { * @remarks Originally called 'finfouill' */ void endSearch() { - g_heroSearching = false; - g_obpart = false; + g_vm->_heroSearching = false; + g_vm->_obpart = false; g_cs = 0; g_is = 0; unsetSearchMenu(); @@ -591,7 +589,7 @@ L1: g_crep = g_caff; g_msg[3] = MENU_DISCUSS; g_msg[4] = g_vm->_menu._discussMenu[cx]; - g_syn = true; + g_vm->_syn = true; g_vm->_col = true; } else { if (getRandomNumber(1, 3) == 2) { @@ -763,7 +761,7 @@ void treg(int ob) { g_msg[3] = 0; g_crep = 998; } else { - g_obpart = true; + g_vm->_obpart = true; g_crep = g_caff + 400; setSearchMenu(); } diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 42c714e456..8677798477 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -144,7 +144,7 @@ Common::ErrorCode MortevielleEngine::initialise() { g_currGraphicalDevice = MODE_EGA; g_newGraphicalDevice = g_currGraphicalDevice; - g_zuul = false; + _zuul = false; charpal(); charge_cfiph(); charge_cfiec(); @@ -613,13 +613,13 @@ void MortevielleEngine::handleAction() { if ((g_msg[3] == MENU_ACTION) || (g_msg[3] == MENU_SELF)) g_mnumo = g_msg[4]; if (!g_anyone) { - if ((g_heroSearching) || (g_obpart)) { + if ((g_vm->_heroSearching) || (_obpart)) { if (y_s < 12) return; if ((g_msg[4] == OPCODE_SOUND) || (g_msg[4] == OPCODE_LIFT)) { oo = true; - if ((g_msg[4] == OPCODE_LIFT) || (g_obpart)) { + if ((g_msg[4] == OPCODE_LIFT) || (_obpart)) { endSearch(); g_caff = g_s._currPlace; g_crep = 998; @@ -639,10 +639,10 @@ void MortevielleEngine::handleAction() { g_okdes = false; dessin(0); } - if ((!g_syn) || (_col)) + if ((!g_vm->_syn) || (_col)) repon(2, g_crep); } - } while (g_syn); + } while (g_vm->_syn); if (g_ctrm != 0) tctrm(); } diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 30b1b982e9..b2a8ff6b9b 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -117,10 +117,14 @@ public: bool _soundOff; bool _largestClearScreen; bool _hiddenHero; + bool _heroSearching; bool _keyPressedEsc; bool _blo; bool _col; + bool _syn; + bool _zuul; + bool _obpart; ScreenSurface _screenSurface; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index d6ffb116de..55edea5738 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -421,7 +421,7 @@ void moveMouse(bool &funct, char &key) { return; break; case '\26': - g_zuul = true; + g_vm->_zuul = true; return; break; case '\24': // ^T => mode tandy diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index a74def2eb4..eb6b979368 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -88,8 +88,8 @@ void MortevielleEngine::gameLoaded() { g_cs = 0; g_is = 0; g_ment = 0; - g_syn = true; - g_heroSearching = true; + g_vm->_syn = true; + g_vm->_heroSearching = true; g_mchai = 0; g_inei = 0; initouv(); @@ -101,7 +101,7 @@ void MortevielleEngine::gameLoaded() { g_okdes = false; _endGame = true; _loseGame = false; - g_heroSearching = false; + g_vm->_heroSearching = false; displayAloneText(); tinke(); @@ -134,7 +134,7 @@ void tmaj3() { void tsitu() { if (!g_vm->_col) clearScreenType2(); - g_syn = false; + g_vm->_syn = false; g_vm->_keyPressedEsc = false; if (!g_anyone) { if (g_brt) diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index d9aa291e3f..2903abfc43 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -78,11 +78,7 @@ const byte g_rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; /*------------------------------ VARIABLES ------------------------------*/ /*---------------------------------------------------------------------------*/ -bool g_syn, - g_heroSearching, - g_zuul, - g_obpart, - g_okdes, +bool g_okdes, g_arret, g_anyone, g_brt, diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 610b302e45..0402cd6d48 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -224,10 +224,6 @@ enum GraphicModes { MODE_AMSTRAD1512 = 0, MODE_CGA = 1, MODE_EGA = 2, MODE_HERCU /*---------------------------------------------------------------------------*/ extern bool - g_syn, - g_heroSearching, - g_zuul, - g_obpart, g_okdes, g_anyone, g_brt, -- cgit v1.2.3 From 2035dca6df49e492c281a940952ce507fec62cbc Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 9 Mar 2012 20:14:31 +0100 Subject: MORTEVIELLE: Remove global variable zuul --- engines/mortevielle/mortevielle.cpp | 1 - engines/mortevielle/mortevielle.h | 1 - engines/mortevielle/mouse.cpp | 4 ---- 3 files changed, 6 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 8677798477..38b2343c26 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -144,7 +144,6 @@ Common::ErrorCode MortevielleEngine::initialise() { g_currGraphicalDevice = MODE_EGA; g_newGraphicalDevice = g_currGraphicalDevice; - _zuul = false; charpal(); charge_cfiph(); charge_cfiec(); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index b2a8ff6b9b..69446ae8b9 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -123,7 +123,6 @@ public: bool _blo; bool _col; bool _syn; - bool _zuul; bool _obpart; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 55edea5738..8ae863523d 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -420,10 +420,6 @@ void moveMouse(bool &funct, char &key) { g_vm->_soundOff = !g_vm->_soundOff; return; break; - case '\26': - g_vm->_zuul = true; - return; - break; case '\24': // ^T => mode tandy funct = true; key = '\11'; -- cgit v1.2.3 From 78b3939168a3b77e7087c2844fe10e94a6402d74 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 9 Mar 2012 22:25:28 +0100 Subject: MORTEVIELLE: Fix regression due to uninitialized variable, move remaining global booleans --- engines/mortevielle/actions.cpp | 44 ++++++++++++++++++------------------ engines/mortevielle/mor2.cpp | 30 ++++++++++++------------- engines/mortevielle/mortevielle.cpp | 45 +++++++++++++++++++++++++++++-------- engines/mortevielle/mortevielle.h | 4 ++++ engines/mortevielle/ovd1.cpp | 10 ++++----- engines/mortevielle/ovd1.h | 6 ++--- engines/mortevielle/prog.cpp | 22 +++++++++--------- engines/mortevielle/taffich.cpp | 2 +- engines/mortevielle/var_mor.cpp | 7 +----- engines/mortevielle/var_mor.h | 8 ------- 10 files changed, 98 insertions(+), 80 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index cabd0522dd..6733d24117 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -58,8 +58,8 @@ void fctMove() { ecr3(g_vm->getEngineString(S_GO_TO)); tfleche(); if (g_vm->_keyPressedEsc) - g_okdes = false; - if ((g_anyone) || (g_vm->_keyPressedEsc)) + g_vm->_okdes = false; + if ((g_vm->_anyone) || (g_vm->_keyPressedEsc)) return; tcoord(1); if (g_num == 0) @@ -224,7 +224,7 @@ void fctTake() { if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_TAKE)); tfleche(); - if ((g_anyone) || (g_vm->_keyPressedEsc)) + if ((g_vm->_anyone) || (g_vm->_keyPressedEsc)) return; if (g_caff == 3) { tcoord(2); @@ -325,7 +325,7 @@ void fctLift() { if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_LIFT)); tfleche(); - if ((g_anyone) || (g_vm->_keyPressedEsc)) + if ((g_vm->_anyone) || (g_vm->_keyPressedEsc)) return; tcoord(3); if (g_num == 0) { @@ -362,7 +362,7 @@ void fctRead() { if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_READ)); tfleche(); - if (!(g_anyone) && !(g_vm->_keyPressedEsc)) { + if (!(g_vm->_anyone) && !(g_vm->_keyPressedEsc)) { tcoord(4); if (g_num != 0) g_crep = 107; @@ -395,7 +395,7 @@ void fctLook() { if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_LOOK)); tfleche(); - if ((g_anyone) || (g_vm->_keyPressedEsc)) + if ((g_vm->_anyone) || (g_vm->_keyPressedEsc)) return; tcoord(5); if (g_num == 0) { @@ -486,7 +486,7 @@ void fctSearch() { ecr3(g_vm->getEngineString(S_SEARCH)); tfleche(); - if (g_anyone || g_vm->_keyPressedEsc) + if (g_vm->_anyone || g_vm->_keyPressedEsc) return; if (g_s._currPlace == 23) { @@ -597,7 +597,7 @@ void fctOpen() { } tfleche(); - if ((g_anyone) || (g_vm->_keyPressedEsc)) + if ((g_vm->_anyone) || (g_vm->_keyPressedEsc)) return; tcoord(7); @@ -653,7 +653,7 @@ void fctPlace() { if (g_vm->_keyPressedEsc) g_crep = 998; - if ((g_anyone) || (g_vm->_keyPressedEsc)) + if ((g_vm->_anyone) || (g_vm->_keyPressedEsc)) return; tcoord(8); @@ -782,7 +782,7 @@ void fctTurn() { if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_TURN)); tfleche(); - if ((g_anyone) || (g_vm->_keyPressedEsc)) + if ((g_vm->_anyone) || (g_vm->_keyPressedEsc)) return; tcoord(9); if (g_num != 0) { @@ -818,7 +818,7 @@ void fctSelfHide() { if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_HIDE_SELF)); tfleche(); - if (!(g_anyone) && !(g_vm->_keyPressedEsc)) { + if (!(g_vm->_anyone) && !(g_vm->_keyPressedEsc)) { tcoord(10); if (g_num == 0) g_vm->_hiddenHero = false; @@ -840,7 +840,7 @@ void fctAttach() { if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_TIE)); tfleche(); - if (!(g_anyone) && !(g_vm->_keyPressedEsc)) { + if (!(g_vm->_anyone) && !(g_vm->_keyPressedEsc)) { tcoord(8); g_crep = 997; if ((g_num != 0) && (g_s._currPlace == WELL)) { @@ -868,7 +868,7 @@ void fctClose() { tfleche(); if (g_vm->_keyPressedEsc) g_crep = 998; - if ((g_anyone) || (g_vm->_keyPressedEsc)) + if ((g_vm->_anyone) || (g_vm->_keyPressedEsc)) return; tcoord(7); if (g_num != 0) { @@ -913,7 +913,7 @@ void fctKnock() { if (g_s._currPlace < DOOR) { tfleche(); - if (!(g_anyone) && !(g_vm->_keyPressedEsc)) { + if (!(g_vm->_anyone) && !(g_vm->_keyPressedEsc)) { if ((g_s._currPlace < MOUNTAIN) && (g_s._currPlace != LANDING)) g_crep = 133; else @@ -964,7 +964,7 @@ void fctSelfPut() { return; } tfleche(); - if ((g_anyone) || (g_vm->_keyPressedEsc)) + if ((g_vm->_anyone) || (g_vm->_keyPressedEsc)) return; tcoord(7); g_crep = 124; @@ -1219,7 +1219,7 @@ void fctSleep() { h = 0; tinke(); answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); - g_anyone = false; + g_vm->_anyone = false; } while (answer != 1); g_crep = 998; g_num = 0; @@ -1235,7 +1235,7 @@ void fctForce() { if (g_caff < 25) tfleche(); - if ((!g_anyone) && (!g_vm->_keyPressedEsc)) { + if ((!g_vm->_anyone) && (!g_vm->_keyPressedEsc)) { if (g_s._currPlace != 26) g_crep = 997; else { @@ -1300,9 +1300,9 @@ void fctWait() { if ((g_s._currPlace == ATTIC) || (g_s._currPlace == CELLAR)) cavegre(); if ((g_s._currPlace > OWN_ROOM) && (g_s._currPlace < DINING_ROOM)) - g_anyone = true; + g_vm->_anyone = true; g_mpers = g_ipers; - if (!g_anyone) + if (!g_vm->_anyone) tinke(); return; } @@ -1310,7 +1310,7 @@ void fctWait() { answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); } while (answer != 2); g_crep = 998; - if (!g_anyone) + if (!g_vm->_anyone) tinke(); } @@ -1323,7 +1323,7 @@ void fctSound() { ecr3(g_vm->getEngineString(S_PROBE2)); if (g_caff < 27) { tfleche(); - if (!(g_anyone) && (!g_vm->_keyPressedEsc)) + if (!(g_vm->_anyone) && (!g_vm->_keyPressedEsc)) g_crep = 145; g_num = 0; } @@ -1537,7 +1537,7 @@ void fctSmell() { if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_SMELL)); tfleche(); - if (!(g_anyone) && !(g_vm->_keyPressedEsc)) + if (!(g_vm->_anyone) && !(g_vm->_keyPressedEsc)) if (g_caff == 16) g_crep = 153; } else if (g_caff == 123) diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index bf62fe3857..e6abc8e915 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -49,7 +49,7 @@ void tinke() { int cx, cf, day, hour, minute; Common::String stpo; - g_anyone = false; + g_vm->_anyone = false; updateHour(day, hour, minute); if (day != g_day) { g_day = day; @@ -161,8 +161,8 @@ void tinke() { cavegre(); } else if (g_ipers == 10) { g_ipers = 0; - if (!g_brt) { - g_brt = true; + if (!g_vm->_brt) { + g_vm->_brt = true; g_hdb = readclock(); if (getRandomNumber(1, 5) < 5) { clsf3(); @@ -181,12 +181,12 @@ void tinke() { } } g_hfb = readclock(); - if ((g_brt) && ((g_hfb - g_hdb) > 17)) { + if ((g_vm->_brt) && ((g_hfb - g_hdb) > 17)) { cx = nouvp(g_li); - g_brt = false; + g_vm->_brt = false; g_hdb = 0; if ((g_s._currPlace > OWN_ROOM) && (g_s._currPlace < DINING_ROOM)) - g_anyone = true; + g_vm->_anyone = true; } } @@ -211,7 +211,7 @@ void fenat(char ans) { void afdes(int ad) { taffich(); dessin(ad); - g_okdes = false; + g_vm->_okdes = false; } void tkey1(bool d) { @@ -236,7 +236,7 @@ void tkey1(bool d) { quest = keypressed(); getMousePos(x, y, c); CHECK_QUIT; - } while (!(quest || (c != 0) || (d && g_anyone))); + } while (!(quest || (c != 0) || (d && g_vm->_anyone))); if (quest) testou(); g_vm->setMouseClick(false); @@ -312,7 +312,7 @@ void tperd() { clsf3(); g_vm->_col = false; g_vm->_syn = false; - g_okdes = false; + g_vm->_okdes = false; } void tsort() { @@ -532,7 +532,7 @@ void t1neig() { g_crep = 1506; tperd(); } else { - g_okdes = true; + g_vm->_okdes = true; g_s._currPlace = MOUNTAIN; affrep(); } @@ -645,7 +645,7 @@ void tfleche() { return; fenat(chr(152)); - g_rect = false; + bool inRect = false; do { touch = '\0'; @@ -654,18 +654,18 @@ void tfleche() { CHECK_QUIT; if (g_vm->getMouseClick()) - g_rect = (x_s < 256 * g_res) && (y_s < 176) && (y_s > 12); + inRect = (x_s < 256 * g_res) && (y_s < 176) && (y_s > 12); tinke(); - } while (!(qust || g_rect || g_anyone)); + } while (!(qust || inRect || g_vm->_anyone)); if (qust && (touch == '\103')) Alert::show(g_hintPctMessage, 1); - } while (!((touch == '\73') || ((touch == '\104') && (g_x != 0) && (g_y != 0)) || (g_anyone) || (g_rect))); + } while (!((touch == '\73') || ((touch == '\104') && (g_x != 0) && (g_y != 0)) || (g_vm->_anyone) || (inRect))); if (touch == '\73') g_vm->_keyPressedEsc = true; - if (g_rect) { + if (inRect) { g_x = x_s; g_y = y_s; } diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 38b2343c26..01ef472084 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -58,6 +58,33 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _mouseClick = false; _inMainGameLoop = false; _quitGame = false; + + _roomPresenceLuc = false; + _roomPresenceIda = false; + _purpleRoomPresenceLeo = false; + _roomPresenceGuy = false; + _roomPresenceEva = false; + _roomPresenceMax = false; + _roomPresenceBob = false; + _roomPresencePat = false; + _toiletsPresenceBobMax = false; + _bathRoomPresenceBobMax = false; + _room9PresenceLeo = false; + + _soundOff = false; + _largestClearScreen = false; + _hiddenHero = false; + _heroSearching = false; + _keyPressedEsc = false; + _reloadCFIEC = false; + + _blo = false; + _col = false; + _syn = false; + _obpart = false; + _okdes = false; + _anyone = false; + _brt = false; } MortevielleEngine::~MortevielleEngine() { @@ -145,8 +172,8 @@ Common::ErrorCode MortevielleEngine::initialise() { g_currGraphicalDevice = MODE_EGA; g_newGraphicalDevice = g_currGraphicalDevice; charpal(); - charge_cfiph(); - charge_cfiec(); + loadCFIPH(); + loadCFIEC(); zzuul(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); g_c_zzz = 1; init_nbrepm(); @@ -498,13 +525,13 @@ void MortevielleEngine::showIntroduction() { * loses, and chooses to start playing the game again. */ void MortevielleEngine::mainGame() { - if (g_rech_cfiec) - charge_cfiec(); + if (_reloadCFIEC) + loadCFIEC(); for (g_crep = 1; g_crep <= g_c_zzz; ++g_crep) zzuul(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); - charge_bruit5(); + loadBRUIT5(); _menu.initMenu(); theure(); @@ -567,7 +594,7 @@ void MortevielleEngine::handleAction() { moveMouse(funct, inkey); CHECK_QUIT; temps = temps + 1; - } while (!((g_vm->_menu._menuSelected) || (temps > lim) || (funct) || (g_anyone))); + } while (!((g_vm->_menu._menuSelected) || (temps > lim) || (funct) || (_anyone))); _inMainGameLoop = false; g_vm->_menu.eraseMenu(); @@ -611,7 +638,7 @@ void MortevielleEngine::handleAction() { g_mnumo = g_msg[3]; if ((g_msg[3] == MENU_ACTION) || (g_msg[3] == MENU_SELF)) g_mnumo = g_msg[4]; - if (!g_anyone) { + if (!_anyone) { if ((g_vm->_heroSearching) || (_obpart)) { if (y_s < 12) return; @@ -634,8 +661,8 @@ void MortevielleEngine::handleAction() { if ((g_ctrm == 0) && (! _loseGame) && (! _endGame)) { taffich(); - if (g_okdes) { - g_okdes = false; + if (g_vm->_okdes) { + g_vm->_okdes = false; dessin(0); } if ((!g_vm->_syn) || (_col)) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 69446ae8b9..5a8c0f911a 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -119,11 +119,15 @@ public: bool _hiddenHero; bool _heroSearching; bool _keyPressedEsc; + bool _reloadCFIEC; bool _blo; bool _col; bool _syn; bool _obpart; + bool _okdes; + bool _anyone; + bool _brt; ScreenSurface _screenSurface; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 8641a18501..374a5f75df 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -167,7 +167,7 @@ void music() { if (g_vm->_soundOff) return; - g_rech_cfiec = true; + g_vm->_reloadCFIEC = true; if (!fic.open("mort.img")) error("Missing file - mort.img"); @@ -193,7 +193,7 @@ void music() { } -void charge_bruit5() { +void loadBRUIT5() { Common::File f; if (!f.open("bruit5")) @@ -203,7 +203,7 @@ void charge_bruit5() { f.close(); } -void charge_cfiec() { +void loadCFIEC() { Common::File f; if (!f.open("cfiec.mor")) @@ -212,11 +212,11 @@ void charge_cfiec() { f.read(&g_adcfiec[0], 822 * 128); f.close(); - g_rech_cfiec = false; + g_vm->_reloadCFIEC = false; } -void charge_cfiph() { +void loadCFIPH() { Common::File f; if (!f.open("cfiph.mor")) diff --git a/engines/mortevielle/ovd1.h b/engines/mortevielle/ovd1.h index 25633a4111..ef9f401232 100644 --- a/engines/mortevielle/ovd1.h +++ b/engines/mortevielle/ovd1.h @@ -35,9 +35,9 @@ extern void chartex(); extern void dialpre(); extern void init_lieu(); extern void music(); -extern void charge_bruit5(); -extern void charge_cfiec(); -extern void charge_cfiph(); +extern void loadBRUIT5(); +extern void loadCFIEC(); +extern void loadCFIPH(); extern void suite(); } // End of namespace Mortevielle diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index eb6b979368..95e8c011d7 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -72,11 +72,11 @@ void MortevielleEngine::gameLoaded() { hideMouse(); _menu._menuDisplayed = false; _loseGame = true; - g_anyone = false; - g_okdes = true; + _anyone = false; + _okdes = true; _col = false; _hiddenHero = false; - g_brt = false; + _brt = false; g_maff = 68; g_mnumo = 0; g_prebru = 0; @@ -88,8 +88,8 @@ void MortevielleEngine::gameLoaded() { g_cs = 0; g_is = 0; g_ment = 0; - g_vm->_syn = true; - g_vm->_heroSearching = true; + _syn = true; + _heroSearching = true; g_mchai = 0; g_inei = 0; initouv(); @@ -98,10 +98,10 @@ void MortevielleEngine::gameLoaded() { affrep(); g_hintPctMessage = deline(580); - g_okdes = false; + _okdes = false; _endGame = true; _loseGame = false; - g_vm->_heroSearching = false; + _heroSearching = false; displayAloneText(); tinke(); @@ -136,8 +136,8 @@ void tsitu() { clearScreenType2(); g_vm->_syn = false; g_vm->_keyPressedEsc = false; - if (!g_anyone) { - if (g_brt) + if (!g_vm->_anyone) { + if (g_vm->_brt) if ((g_msg[3] == MENU_MOVE) || (g_msg[4] == OPCODE_LEAVE) || (g_msg[4] == OPCODE_SLEEP) || (g_msg[4] == OPCODE_EAT)) { g_ctrm = 4; mennor(); @@ -204,9 +204,9 @@ void tsitu() { if (g_msg[4] == OPCODE_SHIDE) fctSelfHide(); } else { - if (g_anyone) { + if (g_vm->_anyone) { quelquun(); - g_anyone = false; + g_vm->_anyone = false; mennor(); return; } diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 6fe9f61b60..5bb172f527 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -148,7 +148,7 @@ void taffich() { break; } - g_okdes = true; + g_vm->_okdes = true; hideMouse(); lgt = 0; Common::String filename; diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 2903abfc43..14f440fff8 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -78,12 +78,7 @@ const byte g_rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; /*------------------------------ VARIABLES ------------------------------*/ /*---------------------------------------------------------------------------*/ -bool g_okdes, - g_arret, - g_anyone, - g_brt, - g_rect, - g_rech_cfiec; +bool g_rech_cfiec; int g_x, diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 0402cd6d48..cf7d6084e1 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -223,14 +223,6 @@ enum GraphicModes { MODE_AMSTRAD1512 = 0, MODE_CGA = 1, MODE_EGA = 2, MODE_HERCU /*------------------------------ VARIABLES ------------------------------*/ /*---------------------------------------------------------------------------*/ -extern bool - g_okdes, - g_anyone, - g_brt, - g_rect, - g_rech_cfiec; - - extern int g_x, g_y, g_t, -- cgit v1.2.3 From 60730190832def71a6f36eec5f86ade96a705709 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 10 Mar 2012 08:21:09 +0100 Subject: MORTEVIELLE: Move some more globals, get rid of some others --- engines/mortevielle/dialogs.cpp | 4 ++-- engines/mortevielle/keyboard.cpp | 4 ++-- engines/mortevielle/level15.cpp | 8 ++++---- engines/mortevielle/menu.cpp | 2 +- engines/mortevielle/mor.cpp | 25 ++++++++++++++----------- engines/mortevielle/mor.h | 2 +- engines/mortevielle/mor2.cpp | 4 ++-- engines/mortevielle/mortevielle.cpp | 23 +++++++++++++++-------- engines/mortevielle/mortevielle.h | 6 ++++++ engines/mortevielle/mouse.cpp | 4 ++-- engines/mortevielle/ovd1.cpp | 14 +++++--------- engines/mortevielle/parole.cpp | 6 +++--- engines/mortevielle/parole.h | 2 +- engines/mortevielle/parole2.cpp | 23 +++++++++-------------- engines/mortevielle/prog.cpp | 2 +- engines/mortevielle/taffich.cpp | 2 +- engines/mortevielle/var_mor.cpp | 14 +------------- engines/mortevielle/var_mor.h | 11 +---------- 18 files changed, 71 insertions(+), 85 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index c4b476c73e..754e0141c3 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -430,8 +430,8 @@ void f3f8::checkForF8(int SpeechNum, bool drawAni50Fl) { waitForF3F8(g_key); CHECK_QUIT; - if (g_newGraphicalDevice != g_currGraphicalDevice) { - g_currGraphicalDevice = g_newGraphicalDevice; + if (g_vm->_newGraphicalDevice != g_vm->_currGraphicalDevice) { + g_vm->_currGraphicalDevice = g_vm->_newGraphicalDevice; hirs(); aff50(drawAni50Fl); } diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index f28e309f66..faf47192a7 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -46,9 +46,9 @@ int testou() { g_vm->_soundOff = !g_vm->_soundOff; break; case '\26' : - if ((g_c_zzz == 1) || (g_c_zzz == 2)) { + if ((g_vm->_c_zzz == 1) || (g_vm->_c_zzz == 2)) { zzuul(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); - ++g_c_zzz; + ++g_vm->_c_zzz; return 61; } diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp index 444a810b0e..17f4943d75 100644 --- a/engines/mortevielle/level15.cpp +++ b/engines/mortevielle/level15.cpp @@ -71,7 +71,7 @@ void outbloc(int n, pattern p, nhom *pal) { } void writepal(int n) { - switch (g_currGraphicalDevice) { + switch (g_vm->_currGraphicalDevice) { case MODE_TANDY: case MODE_EGA: case MODE_AMSTRAD1512: @@ -104,7 +104,7 @@ void pictout(int seg, int dep, int x, int y) { GfxSurface surface; surface.decode(&g_mem[seg * 16 + dep]); - if (g_currGraphicalDevice == MODE_HERCULES) { + if (g_vm->_currGraphicalDevice == MODE_HERCULES) { g_mem[0x7000 * 16 + 2] = 0; g_mem[0x7000 * 16 + 32] = 15; } @@ -117,13 +117,13 @@ void pictout(int seg, int dep, int x, int y) { void sauvecr(int y, int dy) { hideMouse(); - s_sauv(g_currGraphicalDevice, y, dy); + s_sauv(g_vm->_currGraphicalDevice, y, dy); showMouse(); } void charecr(int y, int dy) { hideMouse(); - s_char(g_currGraphicalDevice, y, dy); + s_char(g_vm->_currGraphicalDevice, y, dy); showMouse(); } diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 9a0bcec2de..22bf269b56 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -151,7 +151,7 @@ void Menu::displayMenu() { g_vm->_screenSurface.fillRect(7, Common::Rect(0, 0, 639, 10)); col = 28 * g_res; - if (g_currGraphicalDevice == MODE_CGA) + if (g_vm->_currGraphicalDevice == MODE_CGA) color = 1; else color = 9; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index e3bc5243f9..c8b5b7e39a 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -114,7 +114,7 @@ void dessine(int ad, int x, int y) { void dessine_rouleau() { writepal(89); - if (g_currGraphicalDevice == MODE_HERCULES) { + if (g_vm->_currGraphicalDevice == MODE_HERCULES) { g_mem[0x7000 * 16 + 14] = 15; } hideMouse(); @@ -122,9 +122,12 @@ void dessine_rouleau() { showMouse(); } - -void text_color(int c) { - g_color_txt = c; +/** + * Set Text Color + * @remarks Originally called 'text_color' + */ +void setTextColor(int c) { + g_vm->_textColor = c; } /* NIVEAU 13 */ @@ -140,7 +143,7 @@ void text1(int x, int y, int nb, int m) { Common::String tmpStr = deline(m); if ((y == 182) && ((int) tmpStr.size() * co > nb * 6)) y = 176; - displayStr(tmpStr, x, y, nb, 20, g_color_txt); + displayStr(tmpStr, x, y, nb, 20, g_vm->_textColor); } void initouv() { @@ -178,7 +181,7 @@ void clearScreenType2() { } void ecrf2() { - text_color(5); + setTextColor(5); } void ecr2(Common::String str_) { @@ -219,12 +222,12 @@ void ecr3(Common::String text) { } void ecrf6() { - text_color(5); + setTextColor(5); g_vm->_screenSurface.drawBox(62, 33, 363, 80, 15); } void ecrf7() { - text_color(4); + setTextColor(4); } void clsf10() { @@ -258,7 +261,7 @@ void clsf10() { void stop() { hirs(); - g_currGraphicalDevice = MODE_AMSTRAD1512; + g_vm->_currGraphicalDevice = MODE_AMSTRAD1512; hirs(); g_vm->quitGame(); } @@ -266,7 +269,7 @@ void stop() { void paint_rect(int x, int y, int dx, int dy) { int co; - if (g_currGraphicalDevice == MODE_CGA) + if (g_vm->_currGraphicalDevice == MODE_CGA) co = 3; else co = 11; @@ -656,7 +659,7 @@ void drawClock() { paint_rect(570, 118, 20, 10); paint_rect(578, 114, 6, 18); - if ((g_currGraphicalDevice == MODE_CGA) || (g_currGraphicalDevice == MODE_HERCULES)) + if ((g_vm->_currGraphicalDevice == MODE_CGA) || (g_vm->_currGraphicalDevice == MODE_HERCULES)) co = 0; else co = 1; diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 59555fb511..67c7bdd9a8 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -38,7 +38,7 @@ extern int readclock(); extern void modif(int &nu); extern void dessine(int ad, int x, int y); extern void dessine_rouleau(); -extern void text_color(int c); +extern void setTextColor(int c); /* NIVEAU 13 */ extern void text1(int x, int y, int nb, int m); extern void initouv(); diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp index e6abc8e915..380959e3c3 100644 --- a/engines/mortevielle/mor2.cpp +++ b/engines/mortevielle/mor2.cpp @@ -194,9 +194,9 @@ void fenat(char ans) { int coul; hideMouse(); - if (g_currGraphicalDevice == MODE_CGA) + if (g_vm->_currGraphicalDevice == MODE_CGA) coul = 2; - else if (g_currGraphicalDevice == MODE_HERCULES) + else if (g_vm->_currGraphicalDevice == MODE_HERCULES) coul = 1; else coul = 12; diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 01ef472084..0e65ca2fdb 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -85,6 +85,13 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _okdes = false; _anyone = false; _brt = false; + + _textColor = 0; + _currGraphicalDevice = -1; + _newGraphicalDevice = -1; + + _c_zzz = -1; + } MortevielleEngine::~MortevielleEngine() { @@ -148,7 +155,7 @@ Common::ErrorCode MortevielleEngine::initialise() { _screenSurface.create(SCREEN_WIDTH, SCREEN_HEIGHT, Graphics::PixelFormat::createFormatCLUT8()); // Set the screen mode - g_currGraphicalDevice = MODE_EGA; + g_vm->_currGraphicalDevice = MODE_EGA; g_res = 2; _txxFileFl = false; @@ -169,13 +176,13 @@ Common::ErrorCode MortevielleEngine::initialise() { // Setup the mouse cursor initMouse(); - g_currGraphicalDevice = MODE_EGA; - g_newGraphicalDevice = g_currGraphicalDevice; + g_vm->_currGraphicalDevice = MODE_EGA; + g_vm->_newGraphicalDevice = g_vm->_currGraphicalDevice; charpal(); loadCFIPH(); loadCFIEC(); zzuul(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); - g_c_zzz = 1; + g_vm->_c_zzz = 1; init_nbrepm(); initMouse(); @@ -185,10 +192,10 @@ Common::ErrorCode MortevielleEngine::initialise() { teskbd(); dialpre(); - g_newGraphicalDevice = g_currGraphicalDevice; + g_vm->_newGraphicalDevice = g_vm->_currGraphicalDevice; teskbd(); - if (g_newGraphicalDevice != g_currGraphicalDevice) - g_currGraphicalDevice = g_newGraphicalDevice; + if (g_vm->_newGraphicalDevice != g_vm->_currGraphicalDevice) + g_vm->_currGraphicalDevice = g_vm->_newGraphicalDevice; hirs(); g_ades = 0x7000; @@ -528,7 +535,7 @@ void MortevielleEngine::mainGame() { if (_reloadCFIEC) loadCFIEC(); - for (g_crep = 1; g_crep <= g_c_zzz; ++g_crep) + for (g_crep = 1; g_crep <= g_vm->_c_zzz; ++g_crep) zzuul(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); loadBRUIT5(); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 5a8c0f911a..0d1f5670ca 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -129,6 +129,12 @@ public: bool _anyone; bool _brt; + int _textColor; + int _currGraphicalDevice; + int _newGraphicalDevice; + + int _c_zzz; + int ptr_word; ScreenSurface _screenSurface; PaletteManager _paletteManager; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 8ae863523d..1240fa4165 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -86,7 +86,7 @@ void hideMouse() { if (mouse_shwn == 0) { bool imp = odd(y_s); int j = p_o_s; - switch (g_currGraphicalDevice) { + switch (g_vm->_currGraphicalDevice) { case MODE_CGA: { int k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); @@ -182,7 +182,7 @@ void showMouse() { int j = p_o_s; bool imp = odd(y_s); int i = x_s & 7; - switch (g_currGraphicalDevice) { + switch (g_vm->_currGraphicalDevice) { case MODE_CGA: k = 0; j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 374a5f75df..14b3e3eba8 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -159,16 +159,12 @@ void init_lieu() { void music() { - Common::File fic; - int k; - bool fin; - - /* debug('o3 music'); */ if (g_vm->_soundOff) return; g_vm->_reloadCFIEC = true; + Common::File fic; if (!fic.open("mort.img")) error("Missing file - mort.img"); @@ -180,8 +176,8 @@ void music() { g_addfix = (float)((kTempoMusic - g_addv[1])) / 256; cctable(g_tbi); - fin = false; - k = 0; + bool fin = false; + int k = 0; do { fin = keypressed(); g_vm->_soundManager.musyc(g_tbi, 9958, kTempoMusic); @@ -234,8 +230,8 @@ void suite() { g_caff = 51; taffich(); teskbd(); - if (g_newGraphicalDevice != g_currGraphicalDevice) - g_currGraphicalDevice = g_newGraphicalDevice; + if (g_vm->_newGraphicalDevice != g_vm->_currGraphicalDevice) + g_vm->_currGraphicalDevice = g_vm->_newGraphicalDevice; hirs(); dessine(g_ades, 0, 0); diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp index 8974b45977..b2266dc8ff 100644 --- a/engines/mortevielle/parole.cpp +++ b/engines/mortevielle/parole.cpp @@ -44,10 +44,10 @@ void spfrac(int wor) { g_c3._acc = ((uint)wor >> 9) & 7; } -void charg_car() { +void charg_car(int &currWordNumb) { int wor, int_; - wor = swap(READ_LE_UINT16(&g_mem[adword + g_ptr_word])); + wor = swap(READ_LE_UINT16(&g_mem[adword + currWordNumb])); int_ = wor & 0x3f; if ((int_ >= 0) && (int_ <= 13)) { @@ -82,7 +82,7 @@ void charg_car() { } spfrac(wor); - g_ptr_word += 2; + currWordNumb += 2; } diff --git a/engines/mortevielle/parole.h b/engines/mortevielle/parole.h index 4168187a24..46d55abab0 100644 --- a/engines/mortevielle/parole.h +++ b/engines/mortevielle/parole.h @@ -34,7 +34,7 @@ namespace Mortevielle { extern void spfrac(int wor); -extern void charg_car(); +extern void charg_car(int &currWordNumb); extern void entroct(byte o); extern void veracf(byte b); extern void cctable(tablint &t); diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp index e08cbeb475..950f2940bc 100644 --- a/engines/mortevielle/parole2.cpp +++ b/engines/mortevielle/parole2.cpp @@ -54,27 +54,22 @@ void init_chariot() { void trait_ph() { const int deca[3] = {300, 30, 40}; - g_ptr_tcph = g_num_ph - 1; - g_ledeb = swap(g_t_cph[g_ptr_tcph]) + deca[g_typlec]; - g_lefin = swap(g_t_cph[g_ptr_tcph + 1]) + deca[g_typlec]; - g_nb_word = g_lefin - g_ledeb; - g_ptr_tcph = (uint)g_ledeb >> 1; - g_ptr_word = 0; - do { - WRITE_LE_UINT16(&g_mem[adword + g_ptr_word], g_t_cph[g_ptr_tcph]); - g_ptr_word += 2; - ++g_ptr_tcph; - } while (g_ptr_tcph < (int)((uint)g_lefin >> 1)); + int ptr_tcph = g_num_ph - 1; + int startPos = swap(g_t_cph[ptr_tcph]) + deca[g_typlec]; + int endPos = swap(g_t_cph[ptr_tcph + 1]) + deca[g_typlec]; + int wordCount = endPos - startPos; + for (int i = (uint)startPos >> 1, currWord = 0; i < (int)((uint)endPos >> 1); i++, currWord += 2) + WRITE_LE_UINT16(&g_mem[adword + currWord], g_t_cph[i]); g_ptr_oct = 0; - g_ptr_word = 0; + int currWord = 0; init_chariot(); do { rot_chariot(); - charg_car(); + charg_car(currWord); trait_car(); - } while (g_ptr_word < g_nb_word); + } while (currWord < wordCount); rot_chariot(); trait_car(); diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index 95e8c011d7..b56aba64e8 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -45,7 +45,7 @@ namespace Mortevielle { */ void changeGraphicalDevice(int newDevice) { hideMouse(); - g_currGraphicalDevice = newDevice; + g_vm->_currGraphicalDevice = newDevice; hirs(); initMouse(); showMouse(); diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp index 5bb172f527..a65cecd8a8 100644 --- a/engines/mortevielle/taffich.cpp +++ b/engines/mortevielle/taffich.cpp @@ -212,7 +212,7 @@ void taffich() { npal = a + 37; } chardes(filename, lgt, handle); - if (g_currGraphicalDevice == MODE_HERCULES) { + if (g_vm->_currGraphicalDevice == MODE_HERCULES) { for (int i = 0; i <= 15; ++i) { int palh = READ_LE_UINT16(&g_mem[(0x7000 * 16) + ((i + 1) << 1)]); alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 14f440fff8..62f983458f 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -78,9 +78,6 @@ const byte g_rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; /*------------------------------ VARIABLES ------------------------------*/ /*---------------------------------------------------------------------------*/ -bool g_rech_cfiec; - - int g_x, g_y, g_t, @@ -91,7 +88,6 @@ int g_x, g_jh, g_mh, g_cs, - g_currGraphicalDevice, g_hdb, g_hfb, g_hour, @@ -113,13 +109,9 @@ int g_x, g_msg3, g_msg4, g_mlec, - g_newGraphicalDevice, - g_c_zzz, g_mchai, g_menup, g_ipers, - g_ledeb, - g_lefin, g_mpers, g_mnumo, g_xprec, @@ -129,12 +121,8 @@ int g_x, g_typlec, g_num_ph, g_numpal, - g_nb_word, g_ptr_oct, - g_k_tempo, - g_ptr_tcph, - g_ptr_word, - g_color_txt; + g_k_tempo; int g_t_cph[6401]; byte g_tabdon[4001]; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index cf7d6084e1..50c73974d8 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -233,7 +233,6 @@ extern int g_x, g_jh, g_mh, g_cs, - g_currGraphicalDevice, g_hdb, g_hfb, g_hour, @@ -255,13 +254,9 @@ extern int g_x, g_msg3, g_msg4, g_mlec, - g_newGraphicalDevice, - g_c_zzz, g_mchai, g_menup, g_ipers, - g_ledeb, - g_lefin, g_mpers, g_mnumo, g_xprec, @@ -271,12 +266,8 @@ extern int g_x, g_typlec, g_num_ph, g_numpal, - g_nb_word, g_ptr_oct, - g_k_tempo, - g_ptr_tcph, - g_ptr_word, - g_color_txt; + g_k_tempo; extern int g_t_cph[6401]; extern byte g_tabdon[4001]; -- cgit v1.2.3 From 79dd91803338380c62a6a1aa2ba3dd0690e565be Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 10 Mar 2012 09:46:51 +0100 Subject: MORTEVIELLE: regroup several files --- engines/mortevielle/actions.cpp | 5 +- engines/mortevielle/dialogs.cpp | 4 +- engines/mortevielle/level15.cpp | 166 ------- engines/mortevielle/level15.h | 47 -- engines/mortevielle/menu.cpp | 2 +- engines/mortevielle/module.mk | 6 +- engines/mortevielle/mor.cpp | 916 +++++++++++++++++++++++++++++++++++- engines/mortevielle/mor.h | 62 ++- engines/mortevielle/mor2.cpp | 821 -------------------------------- engines/mortevielle/mor2.h | 87 ---- engines/mortevielle/mortevielle.cpp | 5 +- engines/mortevielle/outtext.cpp | 226 ++++++++- engines/mortevielle/outtext.h | 5 + engines/mortevielle/ovd1.cpp | 7 +- engines/mortevielle/parole.cpp | 454 ------------------ engines/mortevielle/parole.h | 48 -- engines/mortevielle/parole2.cpp | 124 ----- engines/mortevielle/parole2.h | 40 -- engines/mortevielle/prog.cpp | 2 - engines/mortevielle/saveload.cpp | 1 - engines/mortevielle/speech.cpp | 543 +++++++++++++++++++++ engines/mortevielle/speech.h | 53 +++ engines/mortevielle/taffich.cpp | 261 ---------- engines/mortevielle/taffich.h | 41 -- 24 files changed, 1799 insertions(+), 2127 deletions(-) delete mode 100644 engines/mortevielle/level15.cpp delete mode 100644 engines/mortevielle/level15.h delete mode 100644 engines/mortevielle/mor2.cpp delete mode 100644 engines/mortevielle/mor2.h delete mode 100644 engines/mortevielle/parole.cpp delete mode 100644 engines/mortevielle/parole.h delete mode 100644 engines/mortevielle/parole2.cpp delete mode 100644 engines/mortevielle/parole2.h create mode 100644 engines/mortevielle/speech.cpp create mode 100644 engines/mortevielle/speech.h delete mode 100644 engines/mortevielle/taffich.cpp delete mode 100644 engines/mortevielle/taffich.h diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 6733d24117..5f511fc7ee 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -28,15 +28,12 @@ #include "common/scummsys.h" #include "mortevielle/actions.h" #include "mortevielle/dialogs.h" -#include "mortevielle/level15.h" #include "mortevielle/menu.h" #include "mortevielle/mor.h" -#include "mortevielle/mor2.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" -#include "mortevielle/parole2.h" -#include "mortevielle/taffich.h" +#include "mortevielle/speech.h" #include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 754e0141c3..b37e0a53c5 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -28,13 +28,11 @@ #include "common/str.h" #include "mortevielle/dialogs.h" #include "mortevielle/keyboard.h" -#include "mortevielle/level15.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mor.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" -#include "mortevielle/parole2.h" -#include "mortevielle/taffich.h" +#include "mortevielle/speech.h" namespace Mortevielle { diff --git a/engines/mortevielle/level15.cpp b/engines/mortevielle/level15.cpp deleted file mode 100644 index 17f4943d75..0000000000 --- a/engines/mortevielle/level15.cpp +++ /dev/null @@ -1,166 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "common/system.h" -#include "common/file.h" -#include "mortevielle/graphics.h" -#include "mortevielle/level15.h" -#include "mortevielle/mortevielle.h" -#include "mortevielle/mouse.h" -#include "mortevielle/var_mor.h" - -namespace Mortevielle { - -/* NIVEAU 15 */ -void copcha() { - int i = acha; - do { - g_tabdon[i] = g_tabdon[i + 390]; - ++i; - } while (i != acha + 390); -} - -/** - * Engine function : Is mouse in a given rect? - * @remarks Originally called 'dans_rect' - */ -bool isMouseIn(rectangle r) { - int x, y, c; - - getMousePos(x, y, c); - if ((x > r._x1) && (x < r._x2) && (y > r._y1) && (y < r._y2)) - return true; - - return false; -} - -void outbloc(int n, pattern p, nhom *pal) { - int ad = n * 404 + 0xd700; - - WRITE_LE_UINT16(&g_mem[0x6000 * 16 + ad], p._tax); - WRITE_LE_UINT16(&g_mem[0x6000 * 16 + ad + 2], p._tay); - ad += 4; - for (int i = 1; i <= p._tax; ++i) { - for (int j = 1; j <= p._tay; ++j) - g_mem[(0x6000 * 16) + ad + (j - 1) * p._tax + i - 1] = pal[n]._hom[p._des[i][j]]; - } -} - -void writepal(int n) { - switch (g_vm->_currGraphicalDevice) { - case MODE_TANDY: - case MODE_EGA: - case MODE_AMSTRAD1512: - for (int i = 1; i <= 16; ++i) { - g_mem[(0x7000 * 16) + (2 * i)] = g_tabpal[n][i].x; - g_mem[(0x7000 * 16) + (2 * i) + 1] = g_tabpal[n][i].y; - } - break; - case MODE_CGA: { - warning("TODO: If this code is needed, resolve the incompatible types"); - nhom pal[16]; - for (int i = 0; i < 16; ++i) { - pal[i] = g_palcga[n]._a[i]; - } -// nhom pal[16] = palcga[n]._a; - if (n < 89) - palette(g_palcga[n]._p); - - for (int i = 0; i <= 15; ++i) - outbloc(i, g_tpt[pal[i]._id], pal); - } - break; - default: - break; - } -} - - -void pictout(int seg, int dep, int x, int y) { - GfxSurface surface; - surface.decode(&g_mem[seg * 16 + dep]); - - if (g_vm->_currGraphicalDevice == MODE_HERCULES) { - g_mem[0x7000 * 16 + 2] = 0; - g_mem[0x7000 * 16 + 32] = 15; - } - - if ((g_caff != 51) && (READ_LE_UINT16(&g_mem[0x7000 * 16 + 0x4138]) > 0x100)) - WRITE_LE_UINT16(&g_mem[0x7000 * 16 + 0x4138], 0x100); - - g_vm->_screenSurface.drawPicture(surface, x, y); -} - -void sauvecr(int y, int dy) { - hideMouse(); - s_sauv(g_vm->_currGraphicalDevice, y, dy); - showMouse(); -} - -void charecr(int y, int dy) { - hideMouse(); - s_char(g_vm->_currGraphicalDevice, y, dy); - showMouse(); -} - -void adzon() { - Common::File f; - - if (!f.open("don.mor")) - error("Missing file - don.mor"); - - f.read(g_tabdon, 7 * 256); - f.close(); - - if (!f.open("bmor.mor")) - error("Missing file - bmor.mor"); - - f.read(&g_tabdon[fleche], 1 * 1916); - f.close(); - - if (!f.open("dec.mor")) - error("Missing file - dec.mor"); - - f.read(&g_mem[0x73a2 * 16 + 0], 1 * 1664); - f.close(); -} - -/** - * Returns the offset within the compressed image data resource of the desired image - */ -int animof(int ouf, int num) { - int nani = g_mem[adani * 16 + 1]; - int aux = num; - if (ouf != 1) - aux += nani; - - int animof_result = (nani << 2) + 2 + READ_BE_UINT16(&g_mem[adani * 16 + (aux << 1)]); - - return animof_result; -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/level15.h b/engines/mortevielle/level15.h deleted file mode 100644 index 2d7c0d47ae..0000000000 --- a/engines/mortevielle/level15.h +++ /dev/null @@ -1,47 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_LEVEL15_H -#define MORTEVIELLE_LEVEL15_H - -#include "mortevielle/var_mor.h" - -namespace Mortevielle { - -/* NIVEAU 15 */ -extern void copcha(); -extern bool isMouseIn(rectangle r); -extern void outbloc(int n, pattern p, nhom *pal); -extern void writepal(int n); -extern void pictout(int seg, int dep, int x, int y); -extern void sauvecr(int y, int dy); -extern void charecr(int y, int dy); -extern void adzon(); -extern int animof(int ouf, int num); - -} // End of namespace Mortevielle -#endif diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 22bf269b56..6604b1bee5 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -28,8 +28,8 @@ #include "common/scummsys.h" #include "common/str.h" #include "common/textconsole.h" -#include "mortevielle/level15.h" #include "mortevielle/menu.h" +#include "mortevielle/mor.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 16f56bc5b0..103a4fcd4e 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -7,20 +7,16 @@ MODULE_OBJS := \ dialogs.o \ graphics.o \ keyboard.o \ - level15.o \ menu.o \ mor.o \ - mor2.o \ mortevielle.o \ mouse.o \ outtext.o \ ovd1.o \ - parole.o \ - parole2.o \ prog.o \ saveload.o \ sound.o \ - taffich.o \ + speech.o \ var_mor.o # This module can be built as a plugin diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index c8b5b7e39a..7c92d9aab0 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -26,31 +26,150 @@ */ #include "common/endian.h" +#include "common/file.h" #include "common/str.h" #include "common/system.h" #include "common/textconsole.h" #include "mortevielle/dialogs.h" #include "mortevielle/graphics.h" -#include "mortevielle/level15.h" #include "mortevielle/menu.h" #include "mortevielle/mor.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" -#include "mortevielle/parole2.h" +#include "mortevielle/speech.h" #include "mortevielle/var_mor.h" +#include "mortevielle/keyboard.h" + namespace Mortevielle { -// For ScummVM, we need to do check for file errors where we do the file access -const int ioresult = 0; +/* NIVEAU 15 */ +void copcha() { + int i = acha; + do { + g_tabdon[i] = g_tabdon[i + 390]; + ++i; + } while (i != acha + 390); +} + +/** + * Engine function : Is mouse in a given rect? + * @remarks Originally called 'dans_rect' + */ +bool isMouseIn(rectangle r) { + int x, y, c; + + getMousePos(x, y, c); + if ((x > r._x1) && (x < r._x2) && (y > r._y1) && (y < r._y2)) + return true; + + return false; +} + +void outbloc(int n, pattern p, nhom *pal) { + int ad = n * 404 + 0xd700; + + WRITE_LE_UINT16(&g_mem[0x6000 * 16 + ad], p._tax); + WRITE_LE_UINT16(&g_mem[0x6000 * 16 + ad + 2], p._tay); + ad += 4; + for (int i = 1; i <= p._tax; ++i) { + for (int j = 1; j <= p._tay; ++j) + g_mem[(0x6000 * 16) + ad + (j - 1) * p._tax + i - 1] = pal[n]._hom[p._des[i][j]]; + } +} + +void writepal(int n) { + switch (g_vm->_currGraphicalDevice) { + case MODE_TANDY: + case MODE_EGA: + case MODE_AMSTRAD1512: + for (int i = 1; i <= 16; ++i) { + g_mem[(0x7000 * 16) + (2 * i)] = g_tabpal[n][i].x; + g_mem[(0x7000 * 16) + (2 * i) + 1] = g_tabpal[n][i].y; + } + break; + case MODE_CGA: { + warning("TODO: If this code is needed, resolve the incompatible types"); + nhom pal[16]; + for (int i = 0; i < 16; ++i) { + pal[i] = g_palcga[n]._a[i]; + } +// nhom pal[16] = palcga[n]._a; + if (n < 89) + palette(g_palcga[n]._p); + + for (int i = 0; i <= 15; ++i) + outbloc(i, g_tpt[pal[i]._id], pal); + } + break; + default: + break; + } +} + -void testfi() { - if (ioresult != 0) { - // Theoritical message - warning("IO Error"); - g_vm->quitGame(); +void pictout(int seg, int dep, int x, int y) { + GfxSurface surface; + surface.decode(&g_mem[seg * 16 + dep]); + + if (g_vm->_currGraphicalDevice == MODE_HERCULES) { + g_mem[0x7000 * 16 + 2] = 0; + g_mem[0x7000 * 16 + 32] = 15; } + + if ((g_caff != 51) && (READ_LE_UINT16(&g_mem[0x7000 * 16 + 0x4138]) > 0x100)) + WRITE_LE_UINT16(&g_mem[0x7000 * 16 + 0x4138], 0x100); + + g_vm->_screenSurface.drawPicture(surface, x, y); +} + +void sauvecr(int y, int dy) { + hideMouse(); + s_sauv(g_vm->_currGraphicalDevice, y, dy); + showMouse(); +} + +void charecr(int y, int dy) { + hideMouse(); + s_char(g_vm->_currGraphicalDevice, y, dy); + showMouse(); +} + +void adzon() { + Common::File f; + + if (!f.open("don.mor")) + error("Missing file - don.mor"); + + f.read(g_tabdon, 7 * 256); + f.close(); + + if (!f.open("bmor.mor")) + error("Missing file - bmor.mor"); + + f.read(&g_tabdon[fleche], 1 * 1916); + f.close(); + + if (!f.open("dec.mor")) + error("Missing file - dec.mor"); + + f.read(&g_mem[0x73a2 * 16 + 0], 1 * 1664); + f.close(); +} + +/** + * Returns the offset within the compressed image data resource of the desired image + */ +int animof(int ouf, int num) { + int nani = g_mem[adani * 16 + 1]; + int aux = num; + if (ouf != 1) + aux += nani; + + int animof_result = (nani << 2) + 2 + READ_BE_UINT16(&g_mem[adani * 16 + (aux << 1)]); + + return animof_result; } /** @@ -1527,4 +1646,783 @@ void dessin(int ad) { } } +void tinke() { + Common::String d1 = g_vm->getEngineString(S_SHOULD_HAVE_NOTICED); + Common::String d2 = g_vm->getEngineString(S_NUMBER_OF_HINTS); + const char d3 = '['; + const char d4 = ']'; + const char d5 = '1'; + Common::String d6 = g_vm->getEngineString(S_OK); + int cx, cf, day, hour, minute; + Common::String stpo; + + g_vm->_anyone = false; + updateHour(day, hour, minute); + if (day != g_day) { + g_day = day; + cx = 0; + do { + ++cx; + if (g_nbrepm[cx] != 0) + --g_nbrepm[cx]; + g_nbrep[cx] = 0; + } while (cx != 8); + } + if ((hour > g_hour) || ((hour == 0) && (g_hour == 23))) { + g_hour = hour; + g_minute = 0; + drawClock(); + cf = 0; + for (cx = 1; cx <= 10; ++cx) { + if (g_s._pourc[cx] == '*') + ++cf; + } + + if (cf == 10) + stpo = "10"; + else + stpo = chr(cf + 48); + + g_hintPctMessage = Common::String(d3); + g_hintPctMessage += d5; + g_hintPctMessage += d4; + g_hintPctMessage += d3; + g_hintPctMessage += d1; + g_hintPctMessage += stpo; + g_hintPctMessage += '0'; + g_hintPctMessage += d2; + g_hintPctMessage += d4; + g_hintPctMessage += d3; + g_hintPctMessage += d6; + g_hintPctMessage += d4; + } + if (minute > g_minute) { + g_minute = 30; + drawClock(); + } + if (y_s < 12) + return; + + if (!g_vm->_blo) { + if ((hour == 12) || ((hour > 18) && (hour < 21)) || ((hour >= 0) && (hour < 7))) + g_t = kTime2; + else + g_t = kTime1; + cf = g_s._faithScore; + if ((cf > 33) && (cf < 66)) + g_t -= (g_t / 3); + + if (cf > 65) + g_t -= ((g_t / 3) * 2); + + int nh = readclock(); + if ((nh - g_mh) > g_t) { + bool activeMenu = g_vm->_menu._menuActive; + g_vm->_menu.eraseMenu(); + g_jh += ((nh - g_mh) / g_t); + g_mh = nh; + switch (g_li) { + case 1: + case 4 : + pl1(cf); + break; + case 2 : + pl2(cf); + break; + case 5 : + pl5(cf); + break; + case 6: + case 8 : + pl6(cf); + break; + case 9 : + pl9(cf); + break; + case 10 : + pl10(cf); + break; + case 11 : + pl11(cf); + break; + case 12 : + pl12(cf); + break; + case 13: + case 14 : + pl13(cf); + break; + case 15: + case 26 : + pl15(cf); + break; + case 20 : + pl20(cf); + break; + } + if ((g_mpers != 0) && (g_ipers != 10)) + g_mpers = g_ipers; + + if ((g_mpers == 0) && (g_ipers > 0)) { + if ((g_s._currPlace == ATTIC) || (g_s._currPlace == CELLAR)) { + cavegre(); + } else if (g_ipers == 10) { + g_ipers = 0; + if (!g_vm->_brt) { + g_vm->_brt = true; + g_hdb = readclock(); + if (getRandomNumber(1, 5) < 5) { + clsf3(); + ecrf2(); + ecr3(g_vm->getEngineString(S_HEAR_NOISE)); + int rand = (getRandomNumber(0, 4)) - 2; + startSpeech(1, rand, 1); + clsf3(); + } + } + } + } + + if (activeMenu) + g_vm->_menu.drawMenu(); + } + } + g_hfb = readclock(); + if ((g_vm->_brt) && ((g_hfb - g_hdb) > 17)) { + cx = nouvp(g_li); + g_vm->_brt = false; + g_hdb = 0; + if ((g_s._currPlace > OWN_ROOM) && (g_s._currPlace < DINING_ROOM)) + g_vm->_anyone = true; + } +} + +void fenat(char ans) { + int coul; + + hideMouse(); + if (g_vm->_currGraphicalDevice == MODE_CGA) + coul = 2; + else if (g_vm->_currGraphicalDevice == MODE_HERCULES) + coul = 1; + else + coul = 12; + + g_vm->_screenSurface.writeCharacter(Common::Point(306, 193), ord(ans), coul); + g_vm->_screenSurface.drawBox(300, 191, 16, 8, 15); + showMouse(); +} + + +/* NIVEAU 8 */ +void afdes(int ad) { + taffich(); + dessin(ad); + g_vm->_okdes = false; +} + +void tkey1(bool d) { + bool quest; + int x, y, c; + + hideMouse(); + fenat('K'); + + // Wait for release from any key or mouse button + while (keypressed()) + g_key = testou(); + do { + getMousePos(x, y, c); + keypressed(); + } while (c != 0); + + // Event loop + do { + if (d) + tinke(); + quest = keypressed(); + getMousePos(x, y, c); + CHECK_QUIT; + } while (!(quest || (c != 0) || (d && g_vm->_anyone))); + if (quest) + testou(); + g_vm->setMouseClick(false); + showMouse(); +} + +void tmlieu(int roomId) { + Common::String nomp; + + if (roomId == 26) + roomId = 15; + + int i = 1; + while ((i < 8) && (g_v_lieu[i][roomId] != 0)) { + nomp = deline(g_v_lieu[i][roomId] + kMenuPlaceStringIndex); + while (nomp.size() < 20) + nomp += ' '; + g_vm->_menu.setText(g_vm->_menu._moveMenu[i], nomp); + ++i; + } + nomp = "* "; + for (int cx = 7; cx >= i; --cx) + g_vm->_menu.setText(g_vm->_menu._moveMenu[cx], nomp); +} + + +/* NIVEAU 7 */ +void tlu(int af, int ob) { + g_caff = 32; + afdes(0); + repon(6, ob + 4000); + repon(2, 999); + tkey1(true); + g_caff = af; + g_msg[3] = OPCODE_NONE; + g_crep = 998; +} + +void affrep() { + g_caff = g_s._currPlace; + g_crep = g_s._currPlace; +} + +/** + * Engine function - Switch action menu from "Search" mode back to normal mode + * @remarks Originally called 'mfouen' + */ +void unsetSearchMenu() { + tmlieu(g_s._currPlace); + for (int cx = 1; cx <= 11; ++cx) + g_vm->_menu.enableMenuItem(_actionMenu[cx]); + + g_vm->_menu.setText(OPCODE_SOUND, g_vm->getEngineString(S_PROBE)); + g_vm->_menu.setText(OPCODE_LIFT, g_vm->getEngineString(S_RAISE)); +} + +/* NIVEAU 6 */ + +void tperd() { + initouv(); + g_ment = 0; + g_iouv = 0; + g_mchai = 0; + unsetSearchMenu(); + if (!g_vm->_blo) + t11(21); + + g_vm->_loseGame = true; + clsf1(); + g_vm->_screenSurface.drawBox(60, 35, 400, 50, 15); + repon(9, g_crep); + clearScreenType2(); + clsf3(); + g_vm->_col = false; + g_vm->_syn = false; + g_vm->_okdes = false; +} + +void tsort() { + + if ((g_iouv > 0) && (g_s._currPlace != 0)) { + if (g_s._faithScore < 50) + g_s._faithScore += 2; + else + g_s._faithScore += (g_s._faithScore / 10); + } + + for (int cx = 1; cx <= 7; ++cx) + g_touv[cx] = chr(0); + g_ment = 0; + g_iouv = 0; + g_mchai = 0; + debloc(g_s._currPlace); +} + +void st4(int ob) { + g_crep = 997; + + switch (ob) { + case 114 : + g_crep = 109; + break; + case 110 : + g_crep = 107; + break; + case 158 : + g_crep = 113; + break; + case 152: + case 153: + case 154: + case 155: + case 156: + case 150: + case 100: + case 157: + case 160: + case 161 : + tlu(g_caff, ob); + break; + default: + break; + } +} + +void cherjer(int ob, bool &d) { + int cx; + + d = false; + for (cx = 1; cx <= 6; ++cx) + d = (d || (ord(g_s._sjer[cx]) == ob)); + + if (g_s._selectedObjectId == ob) + d = true; +} + +void st1sama() { + g_s._currPlace = DINING_ROOM; + affrep(); +} + +void modinv() { + int r; + Common::String nomp; + + int cy = 0; + for (int cx = 1; cx <= 6; ++cx) + if (g_s._sjer[cx] != chr(0)) { + ++cy; + r = (ord(g_s._sjer[cx]) + 400); + nomp = deline(r - 501 + kInventoryStringIndex); + g_vm->_menu.setText(g_vm->_menu._inventoryMenu[cy], nomp); + g_vm->_menu.enableMenuItem(g_vm->_menu._inventoryMenu[cx]); + } + if (cy < 6) + for (int cx = cy + 1; cx <= 6; ++cx) { + g_vm->_menu.setText(g_vm->_menu._inventoryMenu[cx], " "); + g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[cx]); + } +} + +void sparl(float adr, float rep) { + const int haut[9] = { 0, 0, 1, -3, 6, -2, 2, 7, -1 }; + int key, repint; + + repint = abs((int)rep); + hideMouse(); + Common::String tmpStr = deline(repint + kDialogStringIndex); + displayStr(tmpStr, 230, 4, 65, 24, 5); + f3f8::draw(); + + key = 0; + do { + startSpeech(repint, haut[g_caff - 69], 0); + f3f8::waitForF3F8(key); + CHECK_QUIT; + } while (key != 66); + hirs(); + showMouse(); +} + +/** + * Engine function - End of Search: reset globals + * @remarks Originally called 'finfouill' + */ +void endSearch() { + g_vm->_heroSearching = false; + g_vm->_obpart = false; + g_cs = 0; + g_is = 0; + unsetSearchMenu(); +} + +/** + * Engine function - Switch action menu to "Search" mode + * @remarks Originally called 'mfoudi' + */ +void setSearchMenu() { + for (int cx = 1; cx <= 7; ++cx) + g_vm->_menu.disableMenuItem(g_vm->_menu._moveMenu[cx]); + + for (int cx = 1; cx <= 11; ++cx) + g_vm->_menu.disableMenuItem(_actionMenu[cx]); + + g_vm->_menu.setText(OPCODE_SOUND, g_vm->getEngineString(S_SUITE)); + g_vm->_menu.setText(OPCODE_LIFT, g_vm->getEngineString(S_STOP)); +} + +void mennor() { + g_vm->_menu.menuUp(g_msg[3]); +} + +void premtet() { + dessine(g_ades, 10, 80); + g_vm->_screenSurface.drawBox(18, 79, 155, 91, 15); +} + +/* NIVEAU 5 */ +void ajchai() { + int cy = acha + ((g_mchai - 1) * 10) - 1; + int cx = 0; + do { + ++cx; + } while ((cx <= 9) && (g_tabdon[cy + cx] != 0)); + + if (g_tabdon[cy + cx] == 0) + g_tabdon[cy + cx] = g_s._selectedObjectId; + else + g_crep = 192; +} + +void ajjer(int ob) { + int cx = 0; + do { + ++cx; + } while ((cx <= 5) && (ord(g_s._sjer[cx]) != 0)); + + if (ord(g_s._sjer[cx]) == 0) { + g_s._sjer[(cx)] = chr(ob); + modinv(); + } else + g_crep = 139; +} + +void t1sama() { //Entering manor + int day, hour, minute; + + updateHour(day, hour, minute); + if ((hour < 5) && (g_s._currPlace > 18)) { + bool d; + cherjer(137, d); + if (!d) { //You don't have the keys, and it's late + g_crep = 1511; + tperd(); + } else + st1sama(); + } else if (!g_s._ipre) { //Is it your first time? + g_ipers = 255; + showPeoplePresent(g_ipers); + g_caff = 77; + afdes(0); + g_vm->_screenSurface.drawBox(223, 47, 155, 91, 15); + repon(2, 33); + tkey1(false); + mennor(); + hideMouse(); + hirs(); + premtet(); + sparl(0, 140); + dessine_rouleau(); + drawClock(); + showMouse(); + g_s._currPlace = OWN_ROOM; + affrep(); + t5(10); + if (!g_vm->_blo) + minute = t11(0); + g_ipers = 0; + g_mpers = 0; + g_s._ipre = true; + } else + st1sama(); +} + +void t1vier() { + g_s._currPlace = SECRET_PASSAGE; + affrep(); +} + +void t1neig() { + ++g_inei; + if (g_inei > 2) { + g_crep = 1506; + tperd(); + } else { + g_vm->_okdes = true; + g_s._currPlace = MOUNTAIN; + affrep(); + } +} + +void t1deva() { + g_inei = 0; + g_s._currPlace = MANOR_FRONT; + affrep(); +} + +void t1derr() { + g_s._currPlace = MANOR_BACK; + affrep(); +} + +void t1deau() { + g_crep = 1503; + tperd(); +} + +void tctrm() { + repon(2, (3000 + g_ctrm)); + g_ctrm = 0; +} + + +void quelquun() { + if (g_vm->_menu._menuDisplayed) + g_vm->_menu.eraseMenu(); + + endSearch(); + g_crep = 997; +L1: + if (!g_vm->_hiddenHero) { + if (g_crep == 997) + g_crep = 138; + repon(2, g_crep); + if (g_crep == 138) + startSpeech(5, 2, 1); + else + startSpeech(4, 4, 1); + + if (g_iouv == 0) + g_s._faithScore += 2; + else if (g_s._faithScore < 50) + g_s._faithScore += 4; + else + g_s._faithScore += 3 * (g_s._faithScore / 10); + tsort(); + tmlieu(15); + int cx = convertBitIndexToCharacterIndex(g_ipers); + g_caff = 69 + cx; + g_crep = g_caff; + g_msg[3] = MENU_DISCUSS; + g_msg[4] = g_vm->_menu._discussMenu[cx]; + g_vm->_syn = true; + g_vm->_col = true; + } else { + if (getRandomNumber(1, 3) == 2) { + g_vm->_hiddenHero = false; + g_crep = 137; + goto L1; + } else { + repon(2, 136); + int rand = (getRandomNumber(0, 4)) - 2; + startSpeech(3, rand, 1); + clearScreenType2(); + displayAloneText(); + debloc(21); + affrep(); + } + } + if (g_vm->_menu._menuDisplayed) + g_vm->_menu.drawMenu(); +} + +void tsuiv() { + int tbcl; + int cl; + + int cy = acha + ((g_mchai - 1) * 10) - 1; + int cx = 0; + do { + ++cx; + ++g_cs; + cl = cy + g_cs; + tbcl = g_tabdon[cl]; + } while ((tbcl == 0) && (g_cs <= 9)); + + if ((tbcl != 0) && (g_cs < 11)) { + ++g_is; + g_caff = tbcl; + g_crep = g_caff + 400; + if (g_ipers != 0) + g_s._faithScore += 2; + } else { + affrep(); + endSearch(); + if (cx > 9) + g_crep = 131; + } +} + +void tfleche() { + bool qust; + char touch; + + if (g_num == 9999) + return; + + fenat(chr(152)); + bool inRect = false; + do { + touch = '\0'; + + do { + moveMouse(qust, touch); + CHECK_QUIT; + + if (g_vm->getMouseClick()) + inRect = (x_s < 256 * g_res) && (y_s < 176) && (y_s > 12); + tinke(); + } while (!(qust || inRect || g_vm->_anyone)); + + if (qust && (touch == '\103')) + Alert::show(g_hintPctMessage, 1); + } while (!((touch == '\73') || ((touch == '\104') && (g_x != 0) && (g_y != 0)) || (g_vm->_anyone) || (inRect))); + + if (touch == '\73') + g_vm->_keyPressedEsc = true; + + if (inRect) { + g_x = x_s; + g_y = y_s; + } +} + +void tcoord(int sx) { + int sy, ix, iy; + int ib; + + + g_num = 0; + g_crep = 999; + int a = 0; + int atdon = amzon + 3; + int cy = 0; + while (cy < g_caff) { + a += g_tabdon[atdon]; + atdon += 4; + ++cy; + } + + if (g_tabdon[atdon] == 0) { + g_crep = 997; + return; + } + + a += fleche; + int cb = 0; + for (cy = 0; cy <= (sx - 2); ++cy) { + ib = (g_tabdon[a + cb] << 8) + g_tabdon[(a + cb + 1)]; + cb += (ib * 4) + 2; + } + ib = (g_tabdon[a + cb] << 8) + g_tabdon[(a + cb + 1)]; + if (ib == 0) { + g_crep = 997; + return; + } + + cy = 1; + do { + cb += 2; + sx = g_tabdon[a + cb] * g_res; + sy = g_tabdon[(a + cb + 1)]; + cb += 2; + ix = g_tabdon[a + cb] * g_res; + iy = g_tabdon[(a + cb + 1)]; + ++cy; + } while (!(((g_x >= sx) && (g_x <= ix) && (g_y >= sy) && (g_y <= iy)) || (cy > ib))); + + if ((g_x >= sx) && (g_x <= ix) && (g_y >= sy) && (g_y <= iy)) { + g_num = cy - 1; + return; + } + + g_crep = 997; +} + + +void st7(int ob) { + switch (ob) { + case 116: + case 144: + g_crep = 104; + break; + case 126: + case 111: + g_crep = 108; + break; + case 132: + g_crep = 111; + break; + case 142: + g_crep = 112; + break; + default: + g_crep = 183; + st4(ob); + } +} + +void treg(int ob) { + int mdes = g_caff; + g_caff = ob; + + if (((g_caff > 29) && (g_caff < 33)) || (g_caff == 144) || (g_caff == 147) || (g_caff == 149) || (g_msg[4] == OPCODE_SLOOK)) { + afdes(0); + if ((g_caff > 29) && (g_caff < 33)) + repon(2, g_caff); + else + repon(2, g_caff + 400); + tkey1(true); + g_caff = mdes; + g_msg[3] = 0; + g_crep = 998; + } else { + g_vm->_obpart = true; + g_crep = g_caff + 400; + setSearchMenu(); + } +} + +void avpoing(int &ob) { + g_crep = 999; + if (g_s._selectedObjectId != 0) + ajjer(g_s._selectedObjectId); + + if (g_crep != 139) { + modobj(ob + 400); + g_s._selectedObjectId = ob; + ob = 0; + } +} + +void rechai(int &ch) { + int tmpPlace = g_s._currPlace; + + if (g_s._currPlace == CRYPT) + tmpPlace = CELLAR; + ch = g_tabdon[achai + (tmpPlace * 7) + g_num - 1]; +} + +void t23coul(int &l) { + bool d; + + cherjer(143, d); + l = 14; + if (!d) { + g_crep = 1512; + tperd(); + } +} + +void maivid() { + g_s._selectedObjectId = 0; + modobj(500); +} + +void st13(int ob) { + if ((ob == 114) || (ob == 116) || (ob == 126) || (ob == 132) || + (ob == 111) || (ob == 106) || (ob == 102) || (ob == 100) || + (ob == 110) || (ob == 153) || (ob == 154) || (ob == 155) || + (ob == 156) || (ob == 157) || (ob == 144) || (ob == 158) || + (ob == 150) || (ob == 152)) + g_crep = 999; + else + g_crep = 105; +} + +void aldepl() { + Alert::show(g_vm->getEngineString(S_USE_DEP_MENU), 1); +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 67c7bdd9a8..73f6df22b7 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -29,11 +29,21 @@ #define MORTEVIELLE_MOR_H #include "common/str.h" +#include "mortevielle/var_mor.h" namespace Mortevielle { +/* NIVEAU 15 */ +extern void copcha(); +extern bool isMouseIn(rectangle r); +extern void outbloc(int n, pattern p, nhom *pal); +extern void writepal(int n); +extern void pictout(int seg, int dep, int x, int y); +extern void sauvecr(int y, int dy); +extern void charecr(int y, int dy); +extern void adzon(); +extern int animof(int ouf, int num); /* Niveau 14 suite */ -extern void testfi(); extern int readclock(); extern void modif(int &nu); extern void dessine(int ad, int x, int y); @@ -118,5 +128,55 @@ extern void musique(int so); /* NIVEAU 9 */ extern void dessin(int ad); +static const int _actionMenu[12] = { OPCODE_NONE, + OPCODE_SHIDE, OPCODE_ATTACH, OPCODE_FORCE, OPCODE_SLEEP, + OPCODE_ENTER, OPCODE_CLOSE, OPCODE_KNOCK, OPCODE_EAT, + OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE +}; + +extern void tinke(); +extern void fenat(char ans); +/* NIVEAU 8 */ +extern void afdes(int ad); +extern void tkey1(bool d); +extern void tmlieu(int roomId); +/* NIVEAU 7 */ +extern void tlu(int af, int ob); +extern void affrep(); +extern void unsetSearchMenu(); +/* NIVEAU 6 */ +extern void tperd(); +extern void tsort(); +extern void st4(int ob); +extern void cherjer(int ob, bool &d); +extern void st1sama(); +extern void modinv(); +extern void sparl(float adr, float rep); +extern void endSearch(); +extern void setSearchMenu(); +extern void mennor(); +extern void premtet(); +/* NIVEAU 5 */ +extern void ajchai(); +extern void ajjer(int ob); +extern void t1sama(); +extern void t1vier(); +extern void t1neig(); +extern void t1deva(); +extern void t1derr(); +extern void t1deau(); +extern void tctrm(); +extern void quelquun(); +extern void tsuiv(); +extern void tfleche(); +extern void tcoord(int sx); +extern void st7(int ob); +extern void treg(int ob); +extern void avpoing(int &ob); +extern void rechai(int &ch); +extern void t23coul(int &l); +extern void maivid(); +extern void st13(int ob); +extern void aldepl(); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/mor2.cpp b/engines/mortevielle/mor2.cpp deleted file mode 100644 index 380959e3c3..0000000000 --- a/engines/mortevielle/mor2.cpp +++ /dev/null @@ -1,821 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "mortevielle/mor2.h" -#include "mortevielle/dialogs.h" -#include "mortevielle/keyboard.h" -#include "mortevielle/menu.h" -#include "mortevielle/mor.h" -#include "mortevielle/mortevielle.h" -#include "mortevielle/mouse.h" -#include "mortevielle/outtext.h" -#include "mortevielle/parole2.h" -#include "mortevielle/taffich.h" -#include "mortevielle/var_mor.h" - -namespace Mortevielle { - -void tinke() { - Common::String d1 = g_vm->getEngineString(S_SHOULD_HAVE_NOTICED); - Common::String d2 = g_vm->getEngineString(S_NUMBER_OF_HINTS); - const char d3 = '['; - const char d4 = ']'; - const char d5 = '1'; - Common::String d6 = g_vm->getEngineString(S_OK); - int cx, cf, day, hour, minute; - Common::String stpo; - - g_vm->_anyone = false; - updateHour(day, hour, minute); - if (day != g_day) { - g_day = day; - cx = 0; - do { - ++cx; - if (g_nbrepm[cx] != 0) - --g_nbrepm[cx]; - g_nbrep[cx] = 0; - } while (cx != 8); - } - if ((hour > g_hour) || ((hour == 0) && (g_hour == 23))) { - g_hour = hour; - g_minute = 0; - drawClock(); - cf = 0; - for (cx = 1; cx <= 10; ++cx) { - if (g_s._pourc[cx] == '*') - ++cf; - } - - if (cf == 10) - stpo = "10"; - else - stpo = chr(cf + 48); - - g_hintPctMessage = Common::String(d3); - g_hintPctMessage += d5; - g_hintPctMessage += d4; - g_hintPctMessage += d3; - g_hintPctMessage += d1; - g_hintPctMessage += stpo; - g_hintPctMessage += '0'; - g_hintPctMessage += d2; - g_hintPctMessage += d4; - g_hintPctMessage += d3; - g_hintPctMessage += d6; - g_hintPctMessage += d4; - } - if (minute > g_minute) { - g_minute = 30; - drawClock(); - } - if (y_s < 12) - return; - - if (!g_vm->_blo) { - if ((hour == 12) || ((hour > 18) && (hour < 21)) || ((hour >= 0) && (hour < 7))) - g_t = kTime2; - else - g_t = kTime1; - cf = g_s._faithScore; - if ((cf > 33) && (cf < 66)) - g_t -= (g_t / 3); - - if (cf > 65) - g_t -= ((g_t / 3) * 2); - - int nh = readclock(); - if ((nh - g_mh) > g_t) { - bool activeMenu = g_vm->_menu._menuActive; - g_vm->_menu.eraseMenu(); - g_jh += ((nh - g_mh) / g_t); - g_mh = nh; - switch (g_li) { - case 1: - case 4 : - pl1(cf); - break; - case 2 : - pl2(cf); - break; - case 5 : - pl5(cf); - break; - case 6: - case 8 : - pl6(cf); - break; - case 9 : - pl9(cf); - break; - case 10 : - pl10(cf); - break; - case 11 : - pl11(cf); - break; - case 12 : - pl12(cf); - break; - case 13: - case 14 : - pl13(cf); - break; - case 15: - case 26 : - pl15(cf); - break; - case 20 : - pl20(cf); - break; - } - if ((g_mpers != 0) && (g_ipers != 10)) - g_mpers = g_ipers; - - if ((g_mpers == 0) && (g_ipers > 0)) { - if ((g_s._currPlace == ATTIC) || (g_s._currPlace == CELLAR)) { - cavegre(); - } else if (g_ipers == 10) { - g_ipers = 0; - if (!g_vm->_brt) { - g_vm->_brt = true; - g_hdb = readclock(); - if (getRandomNumber(1, 5) < 5) { - clsf3(); - ecrf2(); - ecr3(g_vm->getEngineString(S_HEAR_NOISE)); - int rand = (getRandomNumber(0, 4)) - 2; - startSpeech(1, rand, 1); - clsf3(); - } - } - } - } - - if (activeMenu) - g_vm->_menu.drawMenu(); - } - } - g_hfb = readclock(); - if ((g_vm->_brt) && ((g_hfb - g_hdb) > 17)) { - cx = nouvp(g_li); - g_vm->_brt = false; - g_hdb = 0; - if ((g_s._currPlace > OWN_ROOM) && (g_s._currPlace < DINING_ROOM)) - g_vm->_anyone = true; - } -} - -void fenat(char ans) { - int coul; - - hideMouse(); - if (g_vm->_currGraphicalDevice == MODE_CGA) - coul = 2; - else if (g_vm->_currGraphicalDevice == MODE_HERCULES) - coul = 1; - else - coul = 12; - - g_vm->_screenSurface.writeCharacter(Common::Point(306, 193), ord(ans), coul); - g_vm->_screenSurface.drawBox(300, 191, 16, 8, 15); - showMouse(); -} - - -/* NIVEAU 8 */ -void afdes(int ad) { - taffich(); - dessin(ad); - g_vm->_okdes = false; -} - -void tkey1(bool d) { - bool quest; - int x, y, c; - - hideMouse(); - fenat('K'); - - // Wait for release from any key or mouse button - while (keypressed()) - g_key = testou(); - do { - getMousePos(x, y, c); - keypressed(); - } while (c != 0); - - // Event loop - do { - if (d) - tinke(); - quest = keypressed(); - getMousePos(x, y, c); - CHECK_QUIT; - } while (!(quest || (c != 0) || (d && g_vm->_anyone))); - if (quest) - testou(); - g_vm->setMouseClick(false); - showMouse(); -} - -void tmlieu(int roomId) { - Common::String nomp; - - if (roomId == 26) - roomId = 15; - - int i = 1; - while ((i < 8) && (g_v_lieu[i][roomId] != 0)) { - nomp = deline(g_v_lieu[i][roomId] + kMenuPlaceStringIndex); - while (nomp.size() < 20) - nomp += ' '; - g_vm->_menu.setText(g_vm->_menu._moveMenu[i], nomp); - ++i; - } - nomp = "* "; - for (int cx = 7; cx >= i; --cx) - g_vm->_menu.setText(g_vm->_menu._moveMenu[cx], nomp); -} - - -/* NIVEAU 7 */ -void tlu(int af, int ob) { - g_caff = 32; - afdes(0); - repon(6, ob + 4000); - repon(2, 999); - tkey1(true); - g_caff = af; - g_msg[3] = OPCODE_NONE; - g_crep = 998; -} - -void affrep() { - g_caff = g_s._currPlace; - g_crep = g_s._currPlace; -} - -/** - * Engine function - Switch action menu from "Search" mode back to normal mode - * @remarks Originally called 'mfouen' - */ -void unsetSearchMenu() { - tmlieu(g_s._currPlace); - for (int cx = 1; cx <= 11; ++cx) - g_vm->_menu.enableMenuItem(_actionMenu[cx]); - - g_vm->_menu.setText(OPCODE_SOUND, g_vm->getEngineString(S_PROBE)); - g_vm->_menu.setText(OPCODE_LIFT, g_vm->getEngineString(S_RAISE)); -} - -/* NIVEAU 6 */ - -void tperd() { - initouv(); - g_ment = 0; - g_iouv = 0; - g_mchai = 0; - unsetSearchMenu(); - if (!g_vm->_blo) - t11(21); - - g_vm->_loseGame = true; - clsf1(); - g_vm->_screenSurface.drawBox(60, 35, 400, 50, 15); - repon(9, g_crep); - clearScreenType2(); - clsf3(); - g_vm->_col = false; - g_vm->_syn = false; - g_vm->_okdes = false; -} - -void tsort() { - - if ((g_iouv > 0) && (g_s._currPlace != 0)) { - if (g_s._faithScore < 50) - g_s._faithScore += 2; - else - g_s._faithScore += (g_s._faithScore / 10); - } - - for (int cx = 1; cx <= 7; ++cx) - g_touv[cx] = chr(0); - g_ment = 0; - g_iouv = 0; - g_mchai = 0; - debloc(g_s._currPlace); -} - -void st4(int ob) { - g_crep = 997; - - switch (ob) { - case 114 : - g_crep = 109; - break; - case 110 : - g_crep = 107; - break; - case 158 : - g_crep = 113; - break; - case 152: - case 153: - case 154: - case 155: - case 156: - case 150: - case 100: - case 157: - case 160: - case 161 : - tlu(g_caff, ob); - break; - default: - break; - } -} - -void cherjer(int ob, bool &d) { - int cx; - - d = false; - for (cx = 1; cx <= 6; ++cx) - d = (d || (ord(g_s._sjer[cx]) == ob)); - - if (g_s._selectedObjectId == ob) - d = true; -} - -void st1sama() { - g_s._currPlace = DINING_ROOM; - affrep(); -} - -void modinv() { - int r; - Common::String nomp; - - int cy = 0; - for (int cx = 1; cx <= 6; ++cx) - if (g_s._sjer[cx] != chr(0)) { - ++cy; - r = (ord(g_s._sjer[cx]) + 400); - nomp = deline(r - 501 + kInventoryStringIndex); - g_vm->_menu.setText(g_vm->_menu._inventoryMenu[cy], nomp); - g_vm->_menu.enableMenuItem(g_vm->_menu._inventoryMenu[cx]); - } - if (cy < 6) - for (int cx = cy + 1; cx <= 6; ++cx) { - g_vm->_menu.setText(g_vm->_menu._inventoryMenu[cx], " "); - g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[cx]); - } -} - -void sparl(float adr, float rep) { - const int haut[9] = { 0, 0, 1, -3, 6, -2, 2, 7, -1 }; - int key, repint; - - repint = abs((int)rep); - hideMouse(); - Common::String tmpStr = deline(repint + kDialogStringIndex); - displayStr(tmpStr, 230, 4, 65, 24, 5); - f3f8::draw(); - - key = 0; - do { - startSpeech(repint, haut[g_caff - 69], 0); - f3f8::waitForF3F8(key); - CHECK_QUIT; - } while (key != 66); - hirs(); - showMouse(); -} - -/** - * Engine function - End of Search: reset globals - * @remarks Originally called 'finfouill' - */ -void endSearch() { - g_vm->_heroSearching = false; - g_vm->_obpart = false; - g_cs = 0; - g_is = 0; - unsetSearchMenu(); -} - -/** - * Engine function - Switch action menu to "Search" mode - * @remarks Originally called 'mfoudi' - */ -void setSearchMenu() { - for (int cx = 1; cx <= 7; ++cx) - g_vm->_menu.disableMenuItem(g_vm->_menu._moveMenu[cx]); - - for (int cx = 1; cx <= 11; ++cx) - g_vm->_menu.disableMenuItem(_actionMenu[cx]); - - g_vm->_menu.setText(OPCODE_SOUND, g_vm->getEngineString(S_SUITE)); - g_vm->_menu.setText(OPCODE_LIFT, g_vm->getEngineString(S_STOP)); -} - -void mennor() { - g_vm->_menu.menuUp(g_msg[3]); -} - -void premtet() { - dessine(g_ades, 10, 80); - g_vm->_screenSurface.drawBox(18, 79, 155, 91, 15); -} - -/* NIVEAU 5 */ -void ajchai() { - int cy = acha + ((g_mchai - 1) * 10) - 1; - int cx = 0; - do { - ++cx; - } while ((cx <= 9) && (g_tabdon[cy + cx] != 0)); - - if (g_tabdon[cy + cx] == 0) - g_tabdon[cy + cx] = g_s._selectedObjectId; - else - g_crep = 192; -} - -void ajjer(int ob) { - int cx = 0; - do { - ++cx; - } while ((cx <= 5) && (ord(g_s._sjer[cx]) != 0)); - - if (ord(g_s._sjer[cx]) == 0) { - g_s._sjer[(cx)] = chr(ob); - modinv(); - } else - g_crep = 139; -} - -void t1sama() { //Entering manor - int day, hour, minute; - - updateHour(day, hour, minute); - if ((hour < 5) && (g_s._currPlace > 18)) { - bool d; - cherjer(137, d); - if (!d) { //You don't have the keys, and it's late - g_crep = 1511; - tperd(); - } else - st1sama(); - } else if (!g_s._ipre) { //Is it your first time? - g_ipers = 255; - showPeoplePresent(g_ipers); - g_caff = 77; - afdes(0); - g_vm->_screenSurface.drawBox(223, 47, 155, 91, 15); - repon(2, 33); - tkey1(false); - mennor(); - hideMouse(); - hirs(); - premtet(); - sparl(0, 140); - dessine_rouleau(); - drawClock(); - showMouse(); - g_s._currPlace = OWN_ROOM; - affrep(); - t5(10); - if (!g_vm->_blo) - minute = t11(0); - g_ipers = 0; - g_mpers = 0; - g_s._ipre = true; - } else - st1sama(); -} - -void t1vier() { - g_s._currPlace = SECRET_PASSAGE; - affrep(); -} - -void t1neig() { - ++g_inei; - if (g_inei > 2) { - g_crep = 1506; - tperd(); - } else { - g_vm->_okdes = true; - g_s._currPlace = MOUNTAIN; - affrep(); - } -} - -void t1deva() { - g_inei = 0; - g_s._currPlace = MANOR_FRONT; - affrep(); -} - -void t1derr() { - g_s._currPlace = MANOR_BACK; - affrep(); -} - -void t1deau() { - g_crep = 1503; - tperd(); -} - -void tctrm() { - repon(2, (3000 + g_ctrm)); - g_ctrm = 0; -} - - -void quelquun() { - if (g_vm->_menu._menuDisplayed) - g_vm->_menu.eraseMenu(); - - endSearch(); - g_crep = 997; -L1: - if (!g_vm->_hiddenHero) { - if (g_crep == 997) - g_crep = 138; - repon(2, g_crep); - if (g_crep == 138) - startSpeech(5, 2, 1); - else - startSpeech(4, 4, 1); - - if (g_iouv == 0) - g_s._faithScore += 2; - else if (g_s._faithScore < 50) - g_s._faithScore += 4; - else - g_s._faithScore += 3 * (g_s._faithScore / 10); - tsort(); - tmlieu(15); - int cx = convertBitIndexToCharacterIndex(g_ipers); - g_caff = 69 + cx; - g_crep = g_caff; - g_msg[3] = MENU_DISCUSS; - g_msg[4] = g_vm->_menu._discussMenu[cx]; - g_vm->_syn = true; - g_vm->_col = true; - } else { - if (getRandomNumber(1, 3) == 2) { - g_vm->_hiddenHero = false; - g_crep = 137; - goto L1; - } else { - repon(2, 136); - int rand = (getRandomNumber(0, 4)) - 2; - startSpeech(3, rand, 1); - clearScreenType2(); - displayAloneText(); - debloc(21); - affrep(); - } - } - if (g_vm->_menu._menuDisplayed) - g_vm->_menu.drawMenu(); -} - -void tsuiv() { - int tbcl; - int cl; - - int cy = acha + ((g_mchai - 1) * 10) - 1; - int cx = 0; - do { - ++cx; - ++g_cs; - cl = cy + g_cs; - tbcl = g_tabdon[cl]; - } while ((tbcl == 0) && (g_cs <= 9)); - - if ((tbcl != 0) && (g_cs < 11)) { - ++g_is; - g_caff = tbcl; - g_crep = g_caff + 400; - if (g_ipers != 0) - g_s._faithScore += 2; - } else { - affrep(); - endSearch(); - if (cx > 9) - g_crep = 131; - } -} - -void tfleche() { - bool qust; - char touch; - - if (g_num == 9999) - return; - - fenat(chr(152)); - bool inRect = false; - do { - touch = '\0'; - - do { - moveMouse(qust, touch); - CHECK_QUIT; - - if (g_vm->getMouseClick()) - inRect = (x_s < 256 * g_res) && (y_s < 176) && (y_s > 12); - tinke(); - } while (!(qust || inRect || g_vm->_anyone)); - - if (qust && (touch == '\103')) - Alert::show(g_hintPctMessage, 1); - } while (!((touch == '\73') || ((touch == '\104') && (g_x != 0) && (g_y != 0)) || (g_vm->_anyone) || (inRect))); - - if (touch == '\73') - g_vm->_keyPressedEsc = true; - - if (inRect) { - g_x = x_s; - g_y = y_s; - } -} - -void tcoord(int sx) { - int sy, ix, iy; - int ib; - - - g_num = 0; - g_crep = 999; - int a = 0; - int atdon = amzon + 3; - int cy = 0; - while (cy < g_caff) { - a += g_tabdon[atdon]; - atdon += 4; - ++cy; - } - - if (g_tabdon[atdon] == 0) { - g_crep = 997; - return; - } - - a += fleche; - int cb = 0; - for (cy = 0; cy <= (sx - 2); ++cy) { - ib = (g_tabdon[a + cb] << 8) + g_tabdon[(a + cb + 1)]; - cb += (ib * 4) + 2; - } - ib = (g_tabdon[a + cb] << 8) + g_tabdon[(a + cb + 1)]; - if (ib == 0) { - g_crep = 997; - return; - } - - cy = 1; - do { - cb += 2; - sx = g_tabdon[a + cb] * g_res; - sy = g_tabdon[(a + cb + 1)]; - cb += 2; - ix = g_tabdon[a + cb] * g_res; - iy = g_tabdon[(a + cb + 1)]; - ++cy; - } while (!(((g_x >= sx) && (g_x <= ix) && (g_y >= sy) && (g_y <= iy)) || (cy > ib))); - - if ((g_x >= sx) && (g_x <= ix) && (g_y >= sy) && (g_y <= iy)) { - g_num = cy - 1; - return; - } - - g_crep = 997; -} - - -void st7(int ob) { - switch (ob) { - case 116: - case 144: - g_crep = 104; - break; - case 126: - case 111: - g_crep = 108; - break; - case 132: - g_crep = 111; - break; - case 142: - g_crep = 112; - break; - default: - g_crep = 183; - st4(ob); - } -} - -void treg(int ob) { - int mdes = g_caff; - g_caff = ob; - - if (((g_caff > 29) && (g_caff < 33)) || (g_caff == 144) || (g_caff == 147) || (g_caff == 149) || (g_msg[4] == OPCODE_SLOOK)) { - afdes(0); - if ((g_caff > 29) && (g_caff < 33)) - repon(2, g_caff); - else - repon(2, g_caff + 400); - tkey1(true); - g_caff = mdes; - g_msg[3] = 0; - g_crep = 998; - } else { - g_vm->_obpart = true; - g_crep = g_caff + 400; - setSearchMenu(); - } -} - -void avpoing(int &ob) { - g_crep = 999; - if (g_s._selectedObjectId != 0) - ajjer(g_s._selectedObjectId); - - if (g_crep != 139) { - modobj(ob + 400); - g_s._selectedObjectId = ob; - ob = 0; - } -} - -void rechai(int &ch) { - int tmpPlace = g_s._currPlace; - - if (g_s._currPlace == CRYPT) - tmpPlace = CELLAR; - ch = g_tabdon[achai + (tmpPlace * 7) + g_num - 1]; -} - -void t23coul(int &l) { - bool d; - - cherjer(143, d); - l = 14; - if (!d) { - g_crep = 1512; - tperd(); - } -} - -void maivid() { - g_s._selectedObjectId = 0; - modobj(500); -} - -void st13(int ob) { - if ((ob == 114) || (ob == 116) || (ob == 126) || (ob == 132) || - (ob == 111) || (ob == 106) || (ob == 102) || (ob == 100) || - (ob == 110) || (ob == 153) || (ob == 154) || (ob == 155) || - (ob == 156) || (ob == 157) || (ob == 144) || (ob == 158) || - (ob == 150) || (ob == 152)) - g_crep = 999; - else - g_crep = 105; -} - -void aldepl() { - Alert::show(g_vm->getEngineString(S_USE_DEP_MENU), 1); -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/mor2.h b/engines/mortevielle/mor2.h deleted file mode 100644 index 910791303f..0000000000 --- a/engines/mortevielle/mor2.h +++ /dev/null @@ -1,87 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_MOR2_H -#define MORTEVIELLE_MOR2_H - -#include "mortevielle/var_mor.h" - -namespace Mortevielle { - -static const int _actionMenu[12] = { OPCODE_NONE, - OPCODE_SHIDE, OPCODE_ATTACH, OPCODE_FORCE, OPCODE_SLEEP, - OPCODE_ENTER, OPCODE_CLOSE, OPCODE_KNOCK, OPCODE_EAT, - OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE -}; - -extern void tinke(); -extern void fenat(char ans); -/* NIVEAU 8 */ -extern void afdes(int ad); -extern void tkey1(bool d); -extern void tmlieu(int roomId); -/* NIVEAU 7 */ -extern void tlu(int af, int ob); -extern void affrep(); -extern void unsetSearchMenu(); -/* NIVEAU 6 */ -extern void tperd(); -extern void tsort(); -extern void st4(int ob); -extern void cherjer(int ob, bool &d); -extern void st1sama(); -extern void modinv(); -extern void sparl(float adr, float rep); -extern void endSearch(); -extern void setSearchMenu(); -extern void mennor(); -extern void premtet(); -/* NIVEAU 5 */ -extern void ajchai(); -extern void ajjer(int ob); -extern void t1sama(); -extern void t1vier(); -extern void t1neig(); -extern void t1deva(); -extern void t1derr(); -extern void t1deau(); -extern void tctrm(); -extern void quelquun(); -extern void tsuiv(); -extern void tfleche(); -extern void tcoord(int sx); -extern void st7(int ob); -extern void treg(int ob); -extern void avpoing(int &ob); -extern void rechai(int &ch); -extern void t23coul(int &l); -extern void maivid(); -extern void st13(int ob); -extern void aldepl(); - -} // End of namespace Mortevielle -#endif diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 0e65ca2fdb..509301349d 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -33,17 +33,14 @@ #include "mortevielle/dialogs.h" #include "mortevielle/asm.h" #include "mortevielle/keyboard.h" -#include "mortevielle/level15.h" #include "mortevielle/menu.h" #include "mortevielle/mor.h" -#include "mortevielle/mor2.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/ovd1.h" -#include "mortevielle/parole2.h" #include "mortevielle/prog.h" #include "mortevielle/saveload.h" -#include "mortevielle/taffich.h" +#include "mortevielle/outtext.h" #include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index d8e2309a4c..9d7c38d864 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -25,12 +25,14 @@ * Copyright (c) 1988-1989 Lankhor */ +#include "common/file.h" +#include "common/str.h" +#include "mortevielle/mor.h" +#include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/graphics.h" -#include "mortevielle/level15.h" #include "mortevielle/mortevielle.h" #include "mortevielle/var_mor.h" -#include "common/str.h" namespace Mortevielle { @@ -239,4 +241,224 @@ void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ) } } +void chardes(Common::String filename, int32 skipSize, int length) { + Common::File f; + if (!f.open(filename)) + error("Missing file %s", filename.c_str()); + + int skipBlock = 0; + while (skipSize > 127) { + ++skipBlock; + skipSize -= 128; + } + if (skipBlock != 0) + f.seek(skipBlock * 0x80); + + int remainingSkipSize = abs(skipSize); + int totalLength = length + remainingSkipSize; + int memIndx = 0x6000 * 16; + while (totalLength > 0) { + f.read(&g_mem[memIndx], 128); + totalLength -= 128; + memIndx += 128; + } + f.close(); + + for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) + g_mem[0x7000 * 16 + i - remainingSkipSize] = g_mem[0x6000 * 16 + i]; +} + +void charani(Common::String filename, int32 skipSize, int length) { + Common::File f; + if (!f.open(filename)) + error("Missing file - %s", filename.c_str()); + + int skipBlock = 0; + while (skipSize > 127) { + skipSize = skipSize - 128; + ++skipBlock; + } + if (skipBlock != 0) + f.seek(skipBlock * 0x80); + + int remainingSkipSize = abs(skipSize); + int fullLength = length + remainingSkipSize; + int memIndx = 0x6000 * 16; + while (fullLength > 0) { + f.read(&g_mem[memIndx], 128); + fullLength -= 128; + memIndx += 128; + } + f.close(); + + for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) + g_mem[0x7314 * 16 + i - remainingSkipSize] = g_mem[0x6000 * 16 + i]; +} + +void taffich() { + byte tran1[] = { 121, 121, 138, 139, 120 }; + byte tran2[] = { 150, 150, 152, 152, 100, 110, 159, 100, 100 }; + + int cx, handle, npal; + int32 lgt; + int alllum[16]; + + + int a = g_caff; + if ((a >= 153) && (a <= 161)) + a = tran2[a - 153]; + else if ((a >= 136) && (a <= 140)) + a = tran1[a - 136]; + int b = a; + if (g_maff == a) + return; + + switch (a) { + case 16: + g_s._pourc[9] = '*'; + g_s._teauto[42] = '*'; + break; + case 20: + g_s._teauto[39] = '*'; + if (g_s._teauto[36] == '*') { + g_s._pourc[3] = '*'; + g_s._teauto[38] = '*'; + } + break; + case 24: + g_s._teauto[37] = '*'; + break; + case 30: + g_s._teauto[9] = '*'; + break; + case 31: + g_s._pourc[4] = '*'; + g_s._teauto[35] = '*'; + break; + case 118: + g_s._teauto[41] = '*'; + break; + case 143: + g_s._pourc[1] = '*'; + break; + case 150: + g_s._teauto[34] = '*'; + break; + case 151: + g_s._pourc[2] = '*'; + break; + default: + break; + } + + g_vm->_okdes = true; + hideMouse(); + lgt = 0; + Common::String filename; + + if ((a != 50) && (a != 51)) { + int m = a + 2000; + if ((m > 2001) && (m < 2010)) + m = 2001; + if (m == 2011) + m = 2010; + if (a == 32) + m = 2034; + if ((a == 17) && (g_maff == 14)) + m = 2018; + + if (a > 99) { + if ((g_is == 1) || (g_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) && (((g_maff > 69) && (!g_s._ipre)) || (g_maff > 99))) || ((g_maff > 29) && (g_maff < 33))) + m = 2033; + + g_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 + g_l[cx]; + handle = g_l[a]; + + filename = "DXX.mor"; + } else { + filename = "DZZ.mor"; + handle = g_l[87]; + if (a == 51) { + lgt = handle; + handle = g_l[88]; + } + g_maff = a; + npal = a + 37; + } + chardes(filename, lgt, handle); + if (g_vm->_currGraphicalDevice == MODE_HERCULES) { + for (int i = 0; i <= 15; ++i) { + int palh = READ_LE_UINT16(&g_mem[(0x7000 * 16) + ((i + 1) << 1)]); + alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); + } + for (int i = 0; i <= 15; ++i) { + int k = 0; + for (int j = 0; j <= 15; ++j) + if (alllum[j] > alllum[k]) + k = j; + g_mem[(0x7000 * 16) + 2 + (k << 1)] = g_rang[i]; + alllum[k] = -1; + } + } + g_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; + for (cx = 0; cx <= (b - 1); ++cx) + lgt += g_l[cx + 89]; + handle = g_l[b + 89]; + filename = "AXX.mor"; + } else if (b == 50) { + filename = "AZZ.mor"; + handle = 1260; + } + charani(filename, lgt, handle); + } + showMouse(); + if ((a < 27) && ((g_maff < 27) || (g_s._currPlace == LANDING)) && (g_msg[4] != OPCODE_ENTER)) { + if ((a == 13) || (a == 14)) + displayAloneText(); + else if (!g_vm->_blo) + cx = t11(g_s._currPlace); + g_mpers = 0; + } +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index 55e0ec5aab..03523d7086 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -28,6 +28,7 @@ #ifndef MORTEVIELLE_OUTTEXT_H #define MORTEVIELLE_OUTTEXT_H +#include "common/str.h" #include "mortevielle/var_mor.h" namespace Mortevielle { @@ -35,5 +36,9 @@ namespace Mortevielle { extern Common::String deline(int num); extern void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ); +extern void chardes(Common::String filename, int32 passe, int long_); +extern void charani(Common::String filename, int32 skipSize, int length); +extern void taffich(); + } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 14b3e3eba8..53da43402e 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -28,23 +28,18 @@ #include "common/file.h" #include "mortevielle/dialogs.h" #include "mortevielle/keyboard.h" -#include "mortevielle/level15.h" #include "mortevielle/menu.h" #include "mortevielle/mor.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/ovd1.h" -#include "mortevielle/parole.h" +#include "mortevielle/speech.h" #include "mortevielle/sound.h" -#include "mortevielle/taffich.h" #include "mortevielle/var_mor.h" namespace Mortevielle { -// For ScummVM, we need to do check for file errors where we do the file access -const int ioresult = 0; - void charpal() { Common::File f; // tabdb records Common::File ft; // tfxx diff --git a/engines/mortevielle/parole.cpp b/engines/mortevielle/parole.cpp deleted file mode 100644 index b2266dc8ff..0000000000 --- a/engines/mortevielle/parole.cpp +++ /dev/null @@ -1,454 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "common/file.h" -#include "mortevielle/parole.h" -#include "mortevielle/sound.h" -#include "mortevielle/mortevielle.h" - -namespace Mortevielle { - -void spfrac(int wor) { - g_c3._rep = (uint)wor >> 12; - if ((g_typlec == 0) && (g_c3._code != 9)) - if (((g_c3._code > 4) && (g_c3._val != 20) && (g_c3._rep != 3) && (g_c3._rep != 6) && (g_c3._rep != 9)) || - ((g_c3._code < 5) && ((g_c3._val != 19) && (g_c3._val != 22) && (g_c3._rep != 4) && (g_c3._rep != 9)))) { - ++g_c3._rep; - } - - g_c3._freq = ((uint)wor >> 6) & 7; - g_c3._acc = ((uint)wor >> 9) & 7; -} - -void charg_car(int &currWordNumb) { - int wor, int_; - - wor = swap(READ_LE_UINT16(&g_mem[adword + currWordNumb])); - int_ = wor & 0x3f; - - if ((int_ >= 0) && (int_ <= 13)) { - g_c3._val = int_; - g_c3._code = 5; - } else if ((int_ >= 14) && (int_ <= 21)) { - g_c3._val = int_; - g_c3._code = 6; - } else if ((int_ >= 22) && (int_ <= 47)) { - int_ = int_ - 22; - g_c3._val = int_; - g_c3._code = g_typcon[int_]; - } else if ((int_ >= 48) && (int_ <= 56)) { - g_c3._val = int_ - 22; - g_c3._code = 4; - } else { - switch (int_) { - case 60: - g_c3._val = 32; /* " " */ - g_c3._code = 9; - break; - case 61: - g_c3._val = 46; /* "." */ - g_c3._code = 9; - break; - case 62: - g_c3._val = 35; /* "#" */ - g_c3._code = 9; - default: - break; - } - } - - spfrac(wor); - currWordNumb += 2; -} - - -void entroct(byte o) { - g_mem[adtroct * 16 + g_ptr_oct] = o; - ++g_ptr_oct; -} - -void veracf(byte b) { - ; -} - -void cctable(tablint &t) { - float tb[257]; - - tb[0] = 0; - for (int k = 0; k <= 255; ++k) { - tb[k + 1] = g_addfix + tb[k]; - t[255 - k] = abs((int)tb[k] + 1); - } -} - -void regenbruit() { - int i = offsetb3 + 8590; - int j = 0; - do { - g_t_cph[j] = READ_LE_UINT16(&g_mem[adbruit3 + i]); - i += 2; - ++j; - } while (i < offsetb3 + 8790); -} - -void charge_son() { - Common::File f; - - if (!f.open("sonmus.mor")) - error("Missing file - sonmus.mor"); - - f.read(&g_mem[0x7414 * 16 + 0], 273); - - g_vm->_soundManager.decodeMusic(&g_mem[0x7414 * 16], &g_mem[adson * 16], 273); - f.close(); -} - -void charge_phbruit() { - Common::File f; - - if (!f.open("phbrui.mor")) - error("Missing file - phbrui.mor"); - - for (int i = 1; i <= 3; ++i) - g_t_cph[i] = f.readSint16LE(); - - f.close(); -} - -void charge_bruit() { - Common::File f; - int i; - - if (!f.open("bruits")) //Translation: "noise" - error("Missing file - bruits"); - - f.read(&g_mem[adbruit * 16 + 0], 250); - for (i = 0; i <= 19013; ++i) - g_mem[adbruit * 16 + 32000 + i] = g_mem[adbruit5 + i]; - f.read(&g_mem[adbruit1 * 16 + offsetb1], 149); - - f.close(); -} - -void trait_car() { - byte d3; - int d2, i; - - switch (g_c2._code) { - case 9: - if (g_c2._val != ord('#')) - for (i = 0; i <= g_c2._rep; ++i) - entroct(g_c2._val); - break; - case 5: - case 6: - if (g_c2._code == 6) - d3 = g_tabdph[(g_c2._val - 14) << 1]; - else - d3 = null; - if (g_c1._code >= 5) { - veracf(g_c2._acc); - if (g_c1._code == 9) { - entroct(4); - if (d3 == null) - entroct(g_c2._val); - else - entroct(d3); - entroct(22); - } - } - - switch (g_c2._rep) { - case 0: - entroct(0); - entroct(g_c2._val); - if (d3 == null) - if (g_c3._code == 9) - entroct(2); - else - entroct(4); - else if (g_c3._code == 9) - entroct(0); - else - entroct(1); - break; - case 4: - case 5: - case 6: - if (g_c2._rep != 4) { - i = g_c2._rep - 5; - do { - --i; - entroct(0); - if (d3 == null) - entroct(g_c2._val); - else - entroct(d3); - entroct(3); - } while (i >= 0); - } - if (d3 == null) { - entroct(4); - entroct(g_c2._val); - entroct(0); - } else { - entroct(0); - entroct(g_c2._val); - entroct(3); - } - break; - case 7: - case 8: - case 9: - if (g_c2._rep != 7) { - i = g_c2._rep - 8; - do { - --i; - entroct(0); - if (d3 == null) - entroct(g_c2._val); - else - entroct(d3); - entroct(3); - } while (i >= 0); - } - if (d3 == null) { - entroct(0); - entroct(g_c2._val); - entroct(2); - } else { - entroct(0); - entroct(g_c2._val); - entroct(0); - } - break; - case 1: - case 2: - case 3: - if (g_c2._rep != 1) { - i = g_c2._rep - 2; - do { - --i; - entroct(0); - if (d3 == null) - entroct(g_c2._val); - else - entroct(d3); - entroct(3); - } while (i >= 0); - } - entroct(0); - entroct(g_c2._val); - if (g_c3._code == 9) - entroct(0); - else - entroct(1); - break; - default: - break; - } // switch c2.rep - break; - - case 2: - case 3: - d3 = g_c2._code + 5; // 7 ou 8 => Corresponding vowel - if (g_c1._code > 4) { - veracf(g_c2._acc); - if (g_c1._code == 9) { - entroct(4); - entroct(d3); - entroct(22); - } - } - i = g_c2._rep; - assert(i >= 0); - if (i != 0) { - do { - --i; - entroct(0); - entroct(d3); - entroct(3); - } while (i > 0); - } - veracf(g_c3._acc); - if (g_c3._code == 6) { - entroct(4); - entroct(g_tabdph[(g_c3._val - 14) << 1]); - entroct(g_c2._val); - } else { - entroct(4); - if (g_c3._val == 4) - entroct(3); - else - entroct(g_c3._val); - entroct(g_c2._val); - } - break; - case 0: - case 1: - veracf(g_c2._acc); - switch (g_c3._code) { - case 2: - d2 = 7; - break; - case 3: - d2 = 8; - break; - case 6: - d2 = g_tabdph[(g_c3._val - 14) << 1]; - break; - case 5: - d2 = g_c3._val; - break; - default: - d2 = 10; - break; - } // switch c3._code - d2 = (d2 * 26) + g_c2._val; - if (g_tnocon[d2] == 0) - d3 = 2; - else - d3 = 6; - if (g_c2._rep >= 5) { - g_c2._rep = g_c2._rep - 5; - d3 = 8 - d3; // Swap 2 and 6 - } - if (g_c2._code == 0) { - i = g_c2._rep; - if (i != 0) { - do { - --i; - entroct(d3); - entroct(g_c2._val); - entroct(3); - } while (i > 0); - } - entroct(d3); - entroct(g_c2._val); - entroct(4); - } else { - entroct(d3); - entroct(g_c2._val); - entroct(3); - i = g_c2._rep; - if (i != 0) { - do { - --i; - entroct(d3); - entroct(g_c2._val); - entroct(4); - } while (i > 0); - } - } - if (g_c3._code == 9) { - entroct(d3); - entroct(g_c2._val); - entroct(5); - } else if ((g_c3._code != 0) && (g_c3._code != 1) && (g_c3._code != 4)) { - veracf(g_c3._acc); - switch (g_c3._code) { - case 3: - d2 = 8; - break; - case 6: - d2 = g_tabdph[(g_c3._val - 14) << 1]; - break; - case 5: - d2 = g_c3._val; - break; - default: - d2 = 7; - break; - } // switch c3._code - if (d2 == 4) - d2 = 3; - - if (g_intcon[g_c2._val] != 0) - ++g_c2._val; - - if ((g_c2._val == 17) || (g_c2._val == 18)) - g_c2._val = 16; - - entroct(4); - entroct(d2); - entroct(g_c2._val); - } - - break; - case 4: - veracf(g_c2._acc); - i = g_c2._rep; - if (i != 0) { - do { - --i; - entroct(2); - entroct(g_c2._val); - entroct(3); - } while (i > 0); - } - entroct(2); - entroct(g_c2._val); - entroct(4); - if (g_c3._code == 9) { - entroct(2); - entroct(g_c2._val); - entroct(5); - } else if ((g_c3._code != 0) && (g_c3._code != 1) && (g_c3._code != 4)) { - veracf(g_c3._acc); - switch (g_c3._code) { - case 3: - d2 = 8; - break; - case 6: - d2 = g_tabdph[(g_c3._val - 14) << 1]; - break; - case 5: - d2 = g_c3._val; - break; - default: - d2 = 7; - break; - } // switch c3._code - - if (d2 == 4) - d2 = 3; - - if (g_intcon[g_c2._val] != 0) - ++g_c2._val; - - entroct(4); - entroct(d2); - entroct(g_tabdbc[((g_c2._val - 26) << 1) + 1]); - } - - break; - default: - break; - } // switch c2.code -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/parole.h b/engines/mortevielle/parole.h deleted file mode 100644 index 46d55abab0..0000000000 --- a/engines/mortevielle/parole.h +++ /dev/null @@ -1,48 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_PAROLE_H -#define MORTEVIELLE_PAROLE_H - -#include "common/scummsys.h" -#include "mortevielle/var_mor.h" - -namespace Mortevielle { - -extern void spfrac(int wor); -extern void charg_car(int &currWordNumb); -extern void entroct(byte o); -extern void veracf(byte b); -extern void cctable(tablint &t); -extern void regenbruit(); -extern void charge_son(); -extern void charge_phbruit(); -extern void charge_bruit(); -extern void trait_car(); - -} // End of namespace Mortevielle -#endif diff --git a/engines/mortevielle/parole2.cpp b/engines/mortevielle/parole2.cpp deleted file mode 100644 index 950f2940bc..0000000000 --- a/engines/mortevielle/parole2.cpp +++ /dev/null @@ -1,124 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "common/endian.h" -#include "mortevielle/level15.h" -#include "mortevielle/parole2.h" -#include "mortevielle/parole.h" -#include "mortevielle/mortevielle.h" -#include "mortevielle/sound.h" -#include "mortevielle/var_mor.h" - -namespace Mortevielle { - -void rot_chariot() { - g_c1 = g_c2; - g_c2 = g_c3; - g_c3._val = 32; - g_c3._code = 9; -} - -void init_chariot() { - g_c3._rep = 0; - g_c3._freq = 0; - g_c3._acc = 0; - rot_chariot(); - rot_chariot(); -} - - -void trait_ph() { - const int deca[3] = {300, 30, 40}; - - int ptr_tcph = g_num_ph - 1; - int startPos = swap(g_t_cph[ptr_tcph]) + deca[g_typlec]; - int endPos = swap(g_t_cph[ptr_tcph + 1]) + deca[g_typlec]; - int wordCount = endPos - startPos; - for (int i = (uint)startPos >> 1, currWord = 0; i < (int)((uint)endPos >> 1); i++, currWord += 2) - WRITE_LE_UINT16(&g_mem[adword + currWord], g_t_cph[i]); - - g_ptr_oct = 0; - int currWord = 0; - init_chariot(); - - do { - rot_chariot(); - charg_car(currWord); - trait_car(); - } while (currWord < wordCount); - - rot_chariot(); - trait_car(); - entroct(ord('#')); -} - - - -void startSpeech(int rep, int ht, int typ) { - int savph[501]; - int tempo; - - if (g_vm->_soundOff) - return; - - g_num_ph = rep; - g_haut = ht; - g_typlec = typ; - if (g_typlec != 0) { - for (int i = 0; i <= 500; ++i) - savph[i] = g_t_cph[i]; - tempo = kTempoNoise; - } else if (g_haut > 5) - tempo = kTempoF; - else - tempo = kTempoM; - g_addfix = (float)((tempo - g_addv[0])) / 256; - cctable(g_tbi); - switch (typ) { - case 1: - charge_bruit(); - /*if zuul then zzuul(adbruit,0,1095);*/ - regenbruit(); - break; - case 2: - charge_son(); - charge_phbruit(); - break; - default: - break; - } - trait_ph(); - g_vm->_soundManager.litph(g_tbi, typ, tempo); - if (g_typlec != 0) - for (int i = 0; i <= 500; ++i) { - g_t_cph[i] = savph[i]; - g_mlec = g_typlec; - } - writepal(g_numpal); -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/parole2.h b/engines/mortevielle/parole2.h deleted file mode 100644 index 3fab74d02f..0000000000 --- a/engines/mortevielle/parole2.h +++ /dev/null @@ -1,40 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_PAROLE2_H -#define MORTEVIELLE_PAROLE2_H - -namespace Mortevielle { - -extern void rot_chariot(); -extern void init_chariot(); -extern void trait_ph(); -extern void startSpeech(int rep, int ht, int typ); - -} // End of namespace Mortevielle - -#endif diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp index b56aba64e8..a6ccfcb143 100644 --- a/engines/mortevielle/prog.cpp +++ b/engines/mortevielle/prog.cpp @@ -29,10 +29,8 @@ #include "mortevielle/dialogs.h" #include "mortevielle/menu.h" #include "mortevielle/mor.h" -#include "mortevielle/mor2.h" #include "mortevielle/mortevielle.h" #include "mortevielle/prog.h" -#include "mortevielle/taffich.h" #include "mortevielle/var_mor.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 0efafe7fba..2c2af49a5f 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -29,7 +29,6 @@ #include "common/system.h" #include "mortevielle/dialogs.h" #include "mortevielle/mor.h" -#include "mortevielle/mor2.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/ovd1.h" diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp new file mode 100644 index 0000000000..2ad5c0514f --- /dev/null +++ b/engines/mortevielle/speech.cpp @@ -0,0 +1,543 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#include "common/endian.h" +#include "common/file.h" +#include "mortevielle/speech.h" +#include "mortevielle/sound.h" +#include "mortevielle/mortevielle.h" +#include "mortevielle/mor.h" +#include "mortevielle/var_mor.h" + +namespace Mortevielle { + +void spfrac(int wor) { + g_c3._rep = (uint)wor >> 12; + if ((g_typlec == 0) && (g_c3._code != 9)) + if (((g_c3._code > 4) && (g_c3._val != 20) && (g_c3._rep != 3) && (g_c3._rep != 6) && (g_c3._rep != 9)) || + ((g_c3._code < 5) && ((g_c3._val != 19) && (g_c3._val != 22) && (g_c3._rep != 4) && (g_c3._rep != 9)))) { + ++g_c3._rep; + } + + g_c3._freq = ((uint)wor >> 6) & 7; + g_c3._acc = ((uint)wor >> 9) & 7; +} + +void charg_car(int &currWordNumb) { + int wor, int_; + + wor = swap(READ_LE_UINT16(&g_mem[adword + currWordNumb])); + int_ = wor & 0x3f; + + if ((int_ >= 0) && (int_ <= 13)) { + g_c3._val = int_; + g_c3._code = 5; + } else if ((int_ >= 14) && (int_ <= 21)) { + g_c3._val = int_; + g_c3._code = 6; + } else if ((int_ >= 22) && (int_ <= 47)) { + int_ = int_ - 22; + g_c3._val = int_; + g_c3._code = g_typcon[int_]; + } else if ((int_ >= 48) && (int_ <= 56)) { + g_c3._val = int_ - 22; + g_c3._code = 4; + } else { + switch (int_) { + case 60: + g_c3._val = 32; /* " " */ + g_c3._code = 9; + break; + case 61: + g_c3._val = 46; /* "." */ + g_c3._code = 9; + break; + case 62: + g_c3._val = 35; /* "#" */ + g_c3._code = 9; + default: + break; + } + } + + spfrac(wor); + currWordNumb += 2; +} + + +void entroct(byte o) { + g_mem[adtroct * 16 + g_ptr_oct] = o; + ++g_ptr_oct; +} + +void veracf(byte b) { + ; +} + +void cctable(tablint &t) { + float tb[257]; + + tb[0] = 0; + for (int k = 0; k <= 255; ++k) { + tb[k + 1] = g_addfix + tb[k]; + t[255 - k] = abs((int)tb[k] + 1); + } +} + +void regenbruit() { + int i = offsetb3 + 8590; + int j = 0; + do { + g_t_cph[j] = READ_LE_UINT16(&g_mem[adbruit3 + i]); + i += 2; + ++j; + } while (i < offsetb3 + 8790); +} + +void charge_son() { + Common::File f; + + if (!f.open("sonmus.mor")) + error("Missing file - sonmus.mor"); + + f.read(&g_mem[0x7414 * 16 + 0], 273); + + g_vm->_soundManager.decodeMusic(&g_mem[0x7414 * 16], &g_mem[adson * 16], 273); + f.close(); +} + +void charge_phbruit() { + Common::File f; + + if (!f.open("phbrui.mor")) + error("Missing file - phbrui.mor"); + + for (int i = 1; i <= 3; ++i) + g_t_cph[i] = f.readSint16LE(); + + f.close(); +} + +void charge_bruit() { + Common::File f; + int i; + + if (!f.open("bruits")) //Translation: "noise" + error("Missing file - bruits"); + + f.read(&g_mem[adbruit * 16 + 0], 250); + for (i = 0; i <= 19013; ++i) + g_mem[adbruit * 16 + 32000 + i] = g_mem[adbruit5 + i]; + f.read(&g_mem[adbruit1 * 16 + offsetb1], 149); + + f.close(); +} + +void trait_car() { + byte d3; + int d2, i; + + switch (g_c2._code) { + case 9: + if (g_c2._val != ord('#')) + for (i = 0; i <= g_c2._rep; ++i) + entroct(g_c2._val); + break; + case 5: + case 6: + if (g_c2._code == 6) + d3 = g_tabdph[(g_c2._val - 14) << 1]; + else + d3 = null; + if (g_c1._code >= 5) { + veracf(g_c2._acc); + if (g_c1._code == 9) { + entroct(4); + if (d3 == null) + entroct(g_c2._val); + else + entroct(d3); + entroct(22); + } + } + + switch (g_c2._rep) { + case 0: + entroct(0); + entroct(g_c2._val); + if (d3 == null) + if (g_c3._code == 9) + entroct(2); + else + entroct(4); + else if (g_c3._code == 9) + entroct(0); + else + entroct(1); + break; + case 4: + case 5: + case 6: + if (g_c2._rep != 4) { + i = g_c2._rep - 5; + do { + --i; + entroct(0); + if (d3 == null) + entroct(g_c2._val); + else + entroct(d3); + entroct(3); + } while (i >= 0); + } + if (d3 == null) { + entroct(4); + entroct(g_c2._val); + entroct(0); + } else { + entroct(0); + entroct(g_c2._val); + entroct(3); + } + break; + case 7: + case 8: + case 9: + if (g_c2._rep != 7) { + i = g_c2._rep - 8; + do { + --i; + entroct(0); + if (d3 == null) + entroct(g_c2._val); + else + entroct(d3); + entroct(3); + } while (i >= 0); + } + if (d3 == null) { + entroct(0); + entroct(g_c2._val); + entroct(2); + } else { + entroct(0); + entroct(g_c2._val); + entroct(0); + } + break; + case 1: + case 2: + case 3: + if (g_c2._rep != 1) { + i = g_c2._rep - 2; + do { + --i; + entroct(0); + if (d3 == null) + entroct(g_c2._val); + else + entroct(d3); + entroct(3); + } while (i >= 0); + } + entroct(0); + entroct(g_c2._val); + if (g_c3._code == 9) + entroct(0); + else + entroct(1); + break; + default: + break; + } // switch c2.rep + break; + + case 2: + case 3: + d3 = g_c2._code + 5; // 7 ou 8 => Corresponding vowel + if (g_c1._code > 4) { + veracf(g_c2._acc); + if (g_c1._code == 9) { + entroct(4); + entroct(d3); + entroct(22); + } + } + i = g_c2._rep; + assert(i >= 0); + if (i != 0) { + do { + --i; + entroct(0); + entroct(d3); + entroct(3); + } while (i > 0); + } + veracf(g_c3._acc); + if (g_c3._code == 6) { + entroct(4); + entroct(g_tabdph[(g_c3._val - 14) << 1]); + entroct(g_c2._val); + } else { + entroct(4); + if (g_c3._val == 4) + entroct(3); + else + entroct(g_c3._val); + entroct(g_c2._val); + } + break; + case 0: + case 1: + veracf(g_c2._acc); + switch (g_c3._code) { + case 2: + d2 = 7; + break; + case 3: + d2 = 8; + break; + case 6: + d2 = g_tabdph[(g_c3._val - 14) << 1]; + break; + case 5: + d2 = g_c3._val; + break; + default: + d2 = 10; + break; + } // switch c3._code + d2 = (d2 * 26) + g_c2._val; + if (g_tnocon[d2] == 0) + d3 = 2; + else + d3 = 6; + if (g_c2._rep >= 5) { + g_c2._rep = g_c2._rep - 5; + d3 = 8 - d3; // Swap 2 and 6 + } + if (g_c2._code == 0) { + i = g_c2._rep; + if (i != 0) { + do { + --i; + entroct(d3); + entroct(g_c2._val); + entroct(3); + } while (i > 0); + } + entroct(d3); + entroct(g_c2._val); + entroct(4); + } else { + entroct(d3); + entroct(g_c2._val); + entroct(3); + i = g_c2._rep; + if (i != 0) { + do { + --i; + entroct(d3); + entroct(g_c2._val); + entroct(4); + } while (i > 0); + } + } + if (g_c3._code == 9) { + entroct(d3); + entroct(g_c2._val); + entroct(5); + } else if ((g_c3._code != 0) && (g_c3._code != 1) && (g_c3._code != 4)) { + veracf(g_c3._acc); + switch (g_c3._code) { + case 3: + d2 = 8; + break; + case 6: + d2 = g_tabdph[(g_c3._val - 14) << 1]; + break; + case 5: + d2 = g_c3._val; + break; + default: + d2 = 7; + break; + } // switch c3._code + if (d2 == 4) + d2 = 3; + + if (g_intcon[g_c2._val] != 0) + ++g_c2._val; + + if ((g_c2._val == 17) || (g_c2._val == 18)) + g_c2._val = 16; + + entroct(4); + entroct(d2); + entroct(g_c2._val); + } + + break; + case 4: + veracf(g_c2._acc); + i = g_c2._rep; + if (i != 0) { + do { + --i; + entroct(2); + entroct(g_c2._val); + entroct(3); + } while (i > 0); + } + entroct(2); + entroct(g_c2._val); + entroct(4); + if (g_c3._code == 9) { + entroct(2); + entroct(g_c2._val); + entroct(5); + } else if ((g_c3._code != 0) && (g_c3._code != 1) && (g_c3._code != 4)) { + veracf(g_c3._acc); + switch (g_c3._code) { + case 3: + d2 = 8; + break; + case 6: + d2 = g_tabdph[(g_c3._val - 14) << 1]; + break; + case 5: + d2 = g_c3._val; + break; + default: + d2 = 7; + break; + } // switch c3._code + + if (d2 == 4) + d2 = 3; + + if (g_intcon[g_c2._val] != 0) + ++g_c2._val; + + entroct(4); + entroct(d2); + entroct(g_tabdbc[((g_c2._val - 26) << 1) + 1]); + } + + break; + default: + break; + } // switch c2.code +} + +void rot_chariot() { + g_c1 = g_c2; + g_c2 = g_c3; + g_c3._val = 32; + g_c3._code = 9; +} + +void init_chariot() { + g_c3._rep = 0; + g_c3._freq = 0; + g_c3._acc = 0; + rot_chariot(); + rot_chariot(); +} + + +void trait_ph() { + const int deca[3] = {300, 30, 40}; + + int ptr_tcph = g_num_ph - 1; + int startPos = swap(g_t_cph[ptr_tcph]) + deca[g_typlec]; + int endPos = swap(g_t_cph[ptr_tcph + 1]) + deca[g_typlec]; + int wordCount = endPos - startPos; + for (int i = (uint)startPos >> 1, currWord = 0; i < (int)((uint)endPos >> 1); i++, currWord += 2) + WRITE_LE_UINT16(&g_mem[adword + currWord], g_t_cph[i]); + + g_ptr_oct = 0; + int currWord = 0; + init_chariot(); + + do { + rot_chariot(); + charg_car(currWord); + trait_car(); + } while (currWord < wordCount); + + rot_chariot(); + trait_car(); + entroct(ord('#')); +} + + + +void startSpeech(int rep, int ht, int typ) { + int savph[501]; + int tempo; + + if (g_vm->_soundOff) + return; + + g_num_ph = rep; + g_haut = ht; + g_typlec = typ; + if (g_typlec != 0) { + for (int i = 0; i <= 500; ++i) + savph[i] = g_t_cph[i]; + tempo = kTempoNoise; + } else if (g_haut > 5) + tempo = kTempoF; + else + tempo = kTempoM; + g_addfix = (float)((tempo - g_addv[0])) / 256; + cctable(g_tbi); + switch (typ) { + case 1: + charge_bruit(); + /*if zuul then zzuul(adbruit,0,1095);*/ + regenbruit(); + break; + case 2: + charge_son(); + charge_phbruit(); + break; + default: + break; + } + trait_ph(); + g_vm->_soundManager.litph(g_tbi, typ, tempo); + if (g_typlec != 0) + for (int i = 0; i <= 500; ++i) { + g_t_cph[i] = savph[i]; + g_mlec = g_typlec; + } + writepal(g_numpal); +} + +} // End of namespace Mortevielle diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h new file mode 100644 index 0000000000..0e249b8e00 --- /dev/null +++ b/engines/mortevielle/speech.h @@ -0,0 +1,53 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1988-1989 Lankhor + */ + +#ifndef MORTEVIELLE_PAROLE_H +#define MORTEVIELLE_PAROLE_H + +#include "common/scummsys.h" +#include "mortevielle/var_mor.h" + +namespace Mortevielle { + +extern void spfrac(int wor); +extern void charg_car(int &currWordNumb); +extern void entroct(byte o); +extern void veracf(byte b); +extern void cctable(tablint &t); +extern void regenbruit(); +extern void charge_son(); +extern void charge_phbruit(); +extern void charge_bruit(); +extern void trait_car(); + +extern void rot_chariot(); +extern void init_chariot(); +extern void trait_ph(); +extern void startSpeech(int rep, int ht, int typ); + +} // End of namespace Mortevielle +#endif diff --git a/engines/mortevielle/taffich.cpp b/engines/mortevielle/taffich.cpp deleted file mode 100644 index a65cecd8a8..0000000000 --- a/engines/mortevielle/taffich.cpp +++ /dev/null @@ -1,261 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "common/file.h" -#include "common/str.h" -#include "mortevielle/mortevielle.h" -#include "mortevielle/level15.h" -#include "mortevielle/mor.h" -#include "mortevielle/mouse.h" -#include "mortevielle/taffich.h" -#include "mortevielle/var_mor.h" - -namespace Mortevielle { - -void chardes(Common::String filename, int32 skipSize, int length) { - Common::File f; - if (!f.open(filename)) - error("Missing file %s", filename.c_str()); - - int skipBlock = 0; - while (skipSize > 127) { - ++skipBlock; - skipSize -= 128; - } - if (skipBlock != 0) - f.seek(skipBlock * 0x80); - - int remainingSkipSize = abs(skipSize); - int totalLength = length + remainingSkipSize; - int memIndx = 0x6000 * 16; - while (totalLength > 0) { - f.read(&g_mem[memIndx], 128); - testfi(); - totalLength -= 128; - memIndx += 128; - } - f.close(); - - for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) - g_mem[0x7000 * 16 + i - remainingSkipSize] = g_mem[0x6000 * 16 + i]; -} - -void charani(Common::String filename, int32 skipSize, int length) { - Common::File f; - if (!f.open(filename)) - error("Missing file - %s", filename.c_str()); - - int skipBlock = 0; - while (skipSize > 127) { - skipSize = skipSize - 128; - ++skipBlock; - } - if (skipBlock != 0) - f.seek(skipBlock * 0x80); - - int remainingSkipSize = abs(skipSize); - int fullLength = length + remainingSkipSize; - int memIndx = 0x6000 * 16; - while (fullLength > 0) { - f.read(&g_mem[memIndx], 128); - testfi(); - fullLength -= 128; - memIndx += 128; - } - f.close(); - - for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) - g_mem[0x7314 * 16 + i - remainingSkipSize] = g_mem[0x6000 * 16 + i]; -} - -void taffich() { - byte tran1[] = { 121, 121, 138, 139, 120 }; // array<136, 140, byte> - byte tran2[] = { 150, 150, 152, 152, 100, 110, 159, 100, 100 }; // array<153, 161, byte> - - int cx, handle, npal; - int32 lgt; - int alllum[16]; - - - int a = g_caff; - if ((a >= 153) && (a <= 161)) - a = tran2[a - 153]; - else if ((a >= 136) && (a <= 140)) - a = tran1[a - 136]; - int b = a; - if (g_maff == a) - return; - - switch (a) { - case 16: - g_s._pourc[9] = '*'; - g_s._teauto[42] = '*'; - break; - case 20: - g_s._teauto[39] = '*'; - if (g_s._teauto[36] == '*') { - g_s._pourc[3] = '*'; - g_s._teauto[38] = '*'; - } - break; - case 24: - g_s._teauto[37] = '*'; - break; - case 30: - g_s._teauto[9] = '*'; - break; - case 31: - g_s._pourc[4] = '*'; - g_s._teauto[35] = '*'; - break; - case 118: - g_s._teauto[41] = '*'; - break; - case 143: - g_s._pourc[1] = '*'; - break; - case 150: - g_s._teauto[34] = '*'; - break; - case 151: - g_s._pourc[2] = '*'; - break; - default: - break; - } - - g_vm->_okdes = true; - hideMouse(); - lgt = 0; - Common::String filename; - - if ((a != 50) && (a != 51)) { - int m = a + 2000; - if ((m > 2001) && (m < 2010)) - m = 2001; - if (m == 2011) - m = 2010; - if (a == 32) - m = 2034; - if ((a == 17) && (g_maff == 14)) - m = 2018; - - if (a > 99) { - if ((g_is == 1) || (g_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) && (((g_maff > 69) && (!g_s._ipre)) || (g_maff > 99))) || ((g_maff > 29) && (g_maff < 33))) - m = 2033; - - g_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 + g_l[cx]; - handle = g_l[a]; - - filename = "DXX.mor"; - } else { - filename = "DZZ.mor"; - handle = g_l[87]; - if (a == 51) { - lgt = handle; - handle = g_l[88]; - } - g_maff = a; - npal = a + 37; - } - chardes(filename, lgt, handle); - if (g_vm->_currGraphicalDevice == MODE_HERCULES) { - for (int i = 0; i <= 15; ++i) { - int palh = READ_LE_UINT16(&g_mem[(0x7000 * 16) + ((i + 1) << 1)]); - alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); - } - for (int i = 0; i <= 15; ++i) { - int k = 0; - for (int j = 0; j <= 15; ++j) - if (alllum[j] > alllum[k]) - k = j; - g_mem[(0x7000 * 16) + 2 + (k << 1)] = g_rang[i]; - alllum[k] = -1; - } - } - g_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; - for (cx = 0; cx <= (b - 1); ++cx) - lgt += g_l[cx + 89]; - handle = g_l[b + 89]; - filename = "AXX.mor"; - } else if (b == 50) { - filename = "AZZ.mor"; - handle = 1260; - } - charani(filename, lgt, handle); - } - showMouse(); - if ((a < 27) && ((g_maff < 27) || (g_s._currPlace == LANDING)) && (g_msg[4] != OPCODE_ENTER)) { - if ((a == 13) || (a == 14)) - displayAloneText(); - else if (!g_vm->_blo) - cx = t11(g_s._currPlace); - g_mpers = 0; - } -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/taffich.h b/engines/mortevielle/taffich.h deleted file mode 100644 index 4bb5e77de1..0000000000 --- a/engines/mortevielle/taffich.h +++ /dev/null @@ -1,41 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_TAFFICH_H -#define MORTEVIELLE_TAFFICH_H - -#include "common/str.h" - -namespace Mortevielle { - -extern void chardes(Common::String filename, int32 passe, int long_); -extern void charani(Common::String filename, int32 skipSize, int length); -extern void taffich(); - -} // End of namespace Mortevielle - -#endif -- cgit v1.2.3 From b5d2fa7e5f11ed02bc8b52459265a07c9d61440b Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 10 Mar 2012 10:06:44 +0100 Subject: MORTEVIELLE: Merge prog and mor files --- engines/mortevielle/actions.cpp | 1 - engines/mortevielle/module.mk | 1 - engines/mortevielle/mor.cpp | 210 ++++++++++++++++++++++++++++++ engines/mortevielle/mor.h | 10 ++ engines/mortevielle/mortevielle.cpp | 1 - engines/mortevielle/prog.cpp | 250 ------------------------------------ engines/mortevielle/prog.h | 44 ------- engines/mortevielle/saveload.cpp | 1 - 8 files changed, 220 insertions(+), 298 deletions(-) delete mode 100644 engines/mortevielle/prog.cpp delete mode 100644 engines/mortevielle/prog.h diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 5f511fc7ee..59a99ef811 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -38,7 +38,6 @@ namespace Mortevielle { - /** * Engine function - Move * @remarks Originally called 'taller' diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 103a4fcd4e..07631ea264 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -13,7 +13,6 @@ MODULE_OBJS := \ mouse.o \ outtext.o \ ovd1.o \ - prog.o \ saveload.o \ sound.o \ speech.o \ diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 7c92d9aab0..ef55e316a8 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -30,6 +30,7 @@ #include "common/str.h" #include "common/system.h" #include "common/textconsole.h" +#include "mortevielle/actions.h" #include "mortevielle/dialogs.h" #include "mortevielle/graphics.h" #include "mortevielle/menu.h" @@ -2425,4 +2426,213 @@ void aldepl() { Alert::show(g_vm->getEngineString(S_USE_DEP_MENU), 1); } +/** + * Engine function - Change Graphical Device + * @remarks Originally called 'change_gd' + */ +void changeGraphicalDevice(int newDevice) { + hideMouse(); + g_vm->_currGraphicalDevice = newDevice; + hirs(); + initMouse(); + showMouse(); + dessine_rouleau(); + tinke(); + drawClock(); + if (g_ipers != 0) + showPeoplePresent(g_ipers); + else + displayAloneText(); + clearScreenType2(); + clsf3(); + g_maff = 68; + afdes(0); + repon(2, g_crep); + g_vm->_menu.displayMenu(); +} + +/** + * Called when a savegame has been loaded. + * @remarks Originally called 'antegame' + */ +void MortevielleEngine::gameLoaded() { + hideMouse(); + _menu._menuDisplayed = false; + _loseGame = true; + _anyone = false; + _okdes = true; + _col = false; + _hiddenHero = false; + _brt = false; + g_maff = 68; + g_mnumo = 0; + g_prebru = 0; + g_x = 0; + g_y = 0; + g_num = 0; + g_hdb = 0; + g_hfb = 0; + g_cs = 0; + g_is = 0; + g_ment = 0; + _syn = true; + _heroSearching = true; + g_mchai = 0; + g_inei = 0; + initouv(); + g_iouv = 0; + g_dobj = 0; + affrep(); + g_hintPctMessage = deline(580); + + _okdes = false; + _endGame = true; + _loseGame = false; + _heroSearching = false; + + displayAloneText(); + tinke(); + drawClock(); + afdes(0); + repon(2, g_crep); + clsf3(); + _endGame = false; + tmlieu(g_s._currPlace); + modinv(); + if (g_s._selectedObjectId != 0) + modobj(g_s._selectedObjectId + 400); + showMouse(); +} + + +/* NIVEAU 3 */ +/* procedure PROGRAMME */ +void tmaj3() { + int day, hour, minute; + + updateHour(day, hour, minute); + if (minute == 30) + minute = 1; + hour += day * 24; + minute += hour * 2; + g_s._heure = chr(minute); +} + +void tsitu() { + if (!g_vm->_col) + clearScreenType2(); + g_vm->_syn = false; + g_vm->_keyPressedEsc = false; + if (!g_vm->_anyone) { + if (g_vm->_brt) + if ((g_msg[3] == MENU_MOVE) || (g_msg[4] == OPCODE_LEAVE) || (g_msg[4] == OPCODE_SLEEP) || (g_msg[4] == OPCODE_EAT)) { + g_ctrm = 4; + mennor(); + return; + } + if (g_msg[3] == MENU_MOVE) + fctMove(); + if (g_msg[3] == MENU_DISCUSS) + fctDiscuss(); + if (g_msg[3] == MENU_INVENTORY) + fctInventoryTake(); + if (g_msg[4] == OPCODE_ATTACH) + fctAttach(); + if (g_msg[4] == OPCODE_WAIT) + fctWait(); + if (g_msg[4] == OPCODE_FORCE) + fctForce(); + if (g_msg[4] == OPCODE_SLEEP) + fctSleep(); + if (g_msg[4] == OPCODE_LISTEN) + fctListen(); + if (g_msg[4] == OPCODE_ENTER) + fctEnter(); + if (g_msg[4] == OPCODE_CLOSE) + fctClose(); + if (g_msg[4] == OPCODE_SEARCH) + fctSearch(); + if (g_msg[4] == OPCODE_KNOCK) + fctKnock(); + if (g_msg[4] == OPCODE_SCRATCH) + fctScratch(); + if (g_msg[4] == OPCODE_READ) + fctRead(); + if (g_msg[4] == OPCODE_EAT) + fctEat(); + if (g_msg[4] == OPCODE_PLACE) + fctPlace(); + if (g_msg[4] == OPCODE_OPEN) + fctOpen(); + if (g_msg[4] == OPCODE_TAKE) + fctTake(); + if (g_msg[4] == OPCODE_LOOK) + fctLook(); + if (g_msg[4] == OPCODE_SMELL) + fctSmell(); + if (g_msg[4] == OPCODE_SOUND) + fctSound(); + if (g_msg[4] == OPCODE_LEAVE) + fctLeave(); + if (g_msg[4] == OPCODE_LIFT) + fctLift(); + if (g_msg[4] == OPCODE_TURN) + fctTurn(); + if (g_msg[4] == OPCODE_SSEARCH) + fctSelfSearch(); + if (g_msg[4] == OPCODE_SREAD) + fctSelfRead(); + if (g_msg[4] == OPCODE_SPUT) + fctSelfPut(); + if (g_msg[4] == OPCODE_SLOOK) + fctSelftLook(); + g_vm->_hiddenHero = false; + + if (g_msg[4] == OPCODE_SHIDE) + fctSelfHide(); + } else { + if (g_vm->_anyone) { + quelquun(); + g_vm->_anyone = false; + mennor(); + return; + } + } + int hour, day, minute; + updateHour(day, hour, minute); + if ((((hour == 12) || (hour == 13) || (hour == 19)) && (g_s._currPlace != 10)) || + ((hour > 0) && (hour < 6) && (g_s._currPlace != 0))) + ++g_s._faithScore; + if (((g_s._currPlace < CRYPT) || (g_s._currPlace > MOUNTAIN)) && (g_s._currPlace != 23) + && (g_s._currPlace != 0) && (g_s._selectedObjectId != 152) && (!g_vm->_loseGame)) { + if ((g_s._faithScore > 99) && (hour > 8) && (hour < 16)) { + g_crep = 1501; + tperd(); + } + if ((g_s._faithScore > 99) && (hour > 0) && (hour < 9)) { + g_crep = 1508; + tperd(); + } + if ((day > 1) && (hour > 8) && (!g_vm->_loseGame)) { + g_crep = 1502; + tperd(); + } + } + mennor(); +} + +/* NIVEAU 1 */ + +void theure() { + g_vj = ord(g_s._heure); + g_vh = g_vj % 48; + g_vj /= 48; + g_vm__ = g_vh % 2; + g_vh /= 2; + g_hour = g_vh; + if (g_vm__ == 1) + g_minute = 30; + else + g_minute = 0; +} } // End of namespace Mortevielle diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 73f6df22b7..d7d5c8739f 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -178,5 +178,15 @@ extern void t23coul(int &l); extern void maivid(); extern void st13(int ob); extern void aldepl(); + +extern void changeGraphicalDevice(int newDevice); + +/* NIVEAU 3 */ +/* procedure PROGRAMME */ +extern void tmaj3(); +extern void tsitu(); + +/* NIVEAU 1 */ +extern void theure(); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 509301349d..4b8c2678b3 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -38,7 +38,6 @@ #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/ovd1.h" -#include "mortevielle/prog.h" #include "mortevielle/saveload.h" #include "mortevielle/outtext.h" #include "mortevielle/var_mor.h" diff --git a/engines/mortevielle/prog.cpp b/engines/mortevielle/prog.cpp deleted file mode 100644 index a6ccfcb143..0000000000 --- a/engines/mortevielle/prog.cpp +++ /dev/null @@ -1,250 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "mortevielle/actions.h" -#include "mortevielle/dialogs.h" -#include "mortevielle/menu.h" -#include "mortevielle/mor.h" -#include "mortevielle/mortevielle.h" -#include "mortevielle/prog.h" -#include "mortevielle/var_mor.h" -#include "mortevielle/mouse.h" -#include "mortevielle/outtext.h" - -namespace Mortevielle { - -/** - * Engine function - Change Graphical Device - * @remarks Originally called 'change_gd' - */ -void changeGraphicalDevice(int newDevice) { - hideMouse(); - g_vm->_currGraphicalDevice = newDevice; - hirs(); - initMouse(); - showMouse(); - dessine_rouleau(); - tinke(); - drawClock(); - if (g_ipers != 0) - showPeoplePresent(g_ipers); - else - displayAloneText(); - clearScreenType2(); - clsf3(); - g_maff = 68; - afdes(0); - repon(2, g_crep); - g_vm->_menu.displayMenu(); -} - -/** - * Called when a savegame has been loaded. - * @remarks Originally called 'antegame' - */ -void MortevielleEngine::gameLoaded() { - hideMouse(); - _menu._menuDisplayed = false; - _loseGame = true; - _anyone = false; - _okdes = true; - _col = false; - _hiddenHero = false; - _brt = false; - g_maff = 68; - g_mnumo = 0; - g_prebru = 0; - g_x = 0; - g_y = 0; - g_num = 0; - g_hdb = 0; - g_hfb = 0; - g_cs = 0; - g_is = 0; - g_ment = 0; - _syn = true; - _heroSearching = true; - g_mchai = 0; - g_inei = 0; - initouv(); - g_iouv = 0; - g_dobj = 0; - affrep(); - g_hintPctMessage = deline(580); - - _okdes = false; - _endGame = true; - _loseGame = false; - _heroSearching = false; - - displayAloneText(); - tinke(); - drawClock(); - afdes(0); - repon(2, g_crep); - clsf3(); - _endGame = false; - tmlieu(g_s._currPlace); - modinv(); - if (g_s._selectedObjectId != 0) - modobj(g_s._selectedObjectId + 400); - showMouse(); -} - - -/* NIVEAU 3 */ -/* procedure PROGRAMME */ -void tmaj3() { - int day, hour, minute; - - updateHour(day, hour, minute); - if (minute == 30) - minute = 1; - hour += day * 24; - minute += hour * 2; - g_s._heure = chr(minute); -} - -void tsitu() { - if (!g_vm->_col) - clearScreenType2(); - g_vm->_syn = false; - g_vm->_keyPressedEsc = false; - if (!g_vm->_anyone) { - if (g_vm->_brt) - if ((g_msg[3] == MENU_MOVE) || (g_msg[4] == OPCODE_LEAVE) || (g_msg[4] == OPCODE_SLEEP) || (g_msg[4] == OPCODE_EAT)) { - g_ctrm = 4; - mennor(); - return; - } - if (g_msg[3] == MENU_MOVE) - fctMove(); - if (g_msg[3] == MENU_DISCUSS) - fctDiscuss(); - if (g_msg[3] == MENU_INVENTORY) - fctInventoryTake(); - if (g_msg[4] == OPCODE_ATTACH) - fctAttach(); - if (g_msg[4] == OPCODE_WAIT) - fctWait(); - if (g_msg[4] == OPCODE_FORCE) - fctForce(); - if (g_msg[4] == OPCODE_SLEEP) - fctSleep(); - if (g_msg[4] == OPCODE_LISTEN) - fctListen(); - if (g_msg[4] == OPCODE_ENTER) - fctEnter(); - if (g_msg[4] == OPCODE_CLOSE) - fctClose(); - if (g_msg[4] == OPCODE_SEARCH) - fctSearch(); - if (g_msg[4] == OPCODE_KNOCK) - fctKnock(); - if (g_msg[4] == OPCODE_SCRATCH) - fctScratch(); - if (g_msg[4] == OPCODE_READ) - fctRead(); - if (g_msg[4] == OPCODE_EAT) - fctEat(); - if (g_msg[4] == OPCODE_PLACE) - fctPlace(); - if (g_msg[4] == OPCODE_OPEN) - fctOpen(); - if (g_msg[4] == OPCODE_TAKE) - fctTake(); - if (g_msg[4] == OPCODE_LOOK) - fctLook(); - if (g_msg[4] == OPCODE_SMELL) - fctSmell(); - if (g_msg[4] == OPCODE_SOUND) - fctSound(); - if (g_msg[4] == OPCODE_LEAVE) - fctLeave(); - if (g_msg[4] == OPCODE_LIFT) - fctLift(); - if (g_msg[4] == OPCODE_TURN) - fctTurn(); - if (g_msg[4] == OPCODE_SSEARCH) - fctSelfSearch(); - if (g_msg[4] == OPCODE_SREAD) - fctSelfRead(); - if (g_msg[4] == OPCODE_SPUT) - fctSelfPut(); - if (g_msg[4] == OPCODE_SLOOK) - fctSelftLook(); - g_vm->_hiddenHero = false; - - if (g_msg[4] == OPCODE_SHIDE) - fctSelfHide(); - } else { - if (g_vm->_anyone) { - quelquun(); - g_vm->_anyone = false; - mennor(); - return; - } - } - int hour, day, minute; - updateHour(day, hour, minute); - if ((((hour == 12) || (hour == 13) || (hour == 19)) && (g_s._currPlace != 10)) || - ((hour > 0) && (hour < 6) && (g_s._currPlace != 0))) - ++g_s._faithScore; - if (((g_s._currPlace < CRYPT) || (g_s._currPlace > MOUNTAIN)) && (g_s._currPlace != 23) - && (g_s._currPlace != 0) && (g_s._selectedObjectId != 152) && (!g_vm->_loseGame)) { - if ((g_s._faithScore > 99) && (hour > 8) && (hour < 16)) { - g_crep = 1501; - tperd(); - } - if ((g_s._faithScore > 99) && (hour > 0) && (hour < 9)) { - g_crep = 1508; - tperd(); - } - if ((day > 1) && (hour > 8) && (!g_vm->_loseGame)) { - g_crep = 1502; - tperd(); - } - } - mennor(); -} - -/* NIVEAU 1 */ - -void theure() { - g_vj = ord(g_s._heure); - g_vh = g_vj % 48; - g_vj /= 48; - g_vm__ = g_vh % 2; - g_vh /= 2; - g_hour = g_vh; - if (g_vm__ == 1) - g_minute = 30; - else - g_minute = 0; -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/prog.h b/engines/mortevielle/prog.h deleted file mode 100644 index c6ccca8920..0000000000 --- a/engines/mortevielle/prog.h +++ /dev/null @@ -1,44 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_PROG_H -#define MORTEVIELLE_PROG_H - -namespace Mortevielle { - -extern void changeGraphicalDevice(int newDevice); - -/* NIVEAU 3 */ -/* procedure PROGRAMME */ -extern void tmaj3(); -extern void tsitu(); - -/* NIVEAU 1 */ -extern void theure(); - -} // End of namespace Mortevielle -#endif diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 2c2af49a5f..a86432253c 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -32,7 +32,6 @@ #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/ovd1.h" -#include "mortevielle/prog.h" #include "mortevielle/saveload.h" #include "mortevielle/var_mor.h" -- cgit v1.2.3 From 1ff2cb051d035f587314bf4e312d759bbfd036f9 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 10 Mar 2012 14:17:05 +0100 Subject: MORTEVIELLE: Move opcode functions to MortevielleEngine class --- engines/mortevielle/actions.cpp | 61 ++++++++++++++++----------------- engines/mortevielle/actions.h | 68 ------------------------------------- engines/mortevielle/mor.cpp | 37 ++++++++++---------- engines/mortevielle/mor.h | 1 - engines/mortevielle/mortevielle.cpp | 5 ++- engines/mortevielle/mortevielle.h | 32 +++++++++++++++++ engines/mortevielle/mouse.cpp | 4 +-- engines/mortevielle/mouse.h | 2 +- 8 files changed, 87 insertions(+), 123 deletions(-) delete mode 100644 engines/mortevielle/actions.h diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 59a99ef811..49496e8daf 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -26,7 +26,6 @@ */ #include "common/scummsys.h" -#include "mortevielle/actions.h" #include "mortevielle/dialogs.h" #include "mortevielle/menu.h" #include "mortevielle/mor.h" @@ -42,7 +41,7 @@ namespace Mortevielle { * Engine function - Move * @remarks Originally called 'taller' */ -void fctMove() { +void MortevielleEngine::fctMove() { if ((g_s._currPlace == 26) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { g_s._currPlace = LANDING; g_caff = g_s._currPlace; @@ -178,7 +177,7 @@ void fctMove() { * Engine function - Take * @remarks Originally called 'tprendre' */ -void fctTake() { +void MortevielleEngine::fctTake() { if (g_caff > 99) { int cx = g_caff; avpoing(cx); @@ -291,7 +290,7 @@ void fctTake() { * Engine function - Inventory / Take * @remarks Originally called 'tsprendre' */ -void fctInventoryTake() { +void MortevielleEngine::fctInventoryTake() { int cx, cy, cz; cx = 0; @@ -317,7 +316,7 @@ void fctInventoryTake() { * Engine function - Lift * @remarks Originally called 'tsoulever' */ -void fctLift() { +void MortevielleEngine::fctLift() { if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_LIFT)); tfleche(); @@ -351,7 +350,7 @@ void fctLift() { * Engine function - Read * @remarks Originally called 'tlire' */ -void fctRead() { +void MortevielleEngine::fctRead() { if (g_caff > 99) st4(g_caff); else { @@ -370,7 +369,7 @@ void fctRead() { * Engine function - Self / Read * @remarks Originally called 'tslire' */ -void fctSelfRead() { +void MortevielleEngine::fctSelfRead() { if (g_s._selectedObjectId == 0) g_crep = 186; else @@ -381,7 +380,7 @@ void fctSelfRead() { * Engine function - Look * @remarks Originally called 'tregarder' */ -void fctLook() { +void MortevielleEngine::fctLook() { int cx; if (g_caff > 99) { @@ -459,7 +458,7 @@ void fctLook() { * Engine function - Self / Look * @remarks Originally called 'tsregarder' */ -void fctSelftLook() { +void MortevielleEngine::fctSelftLook() { if (g_s._selectedObjectId != 0) treg(g_s._selectedObjectId); else @@ -470,7 +469,7 @@ void fctSelftLook() { * Engine function - Search * @remarks Originally called 'tfouiller' */ -void fctSearch() { +void MortevielleEngine::fctSearch() { const byte r[14] = {123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}; if (g_caff > 99) { @@ -563,7 +562,7 @@ void fctSearch() { * Engine function - Self / Search * @remarks Originally called 'tsfouiller' */ -void fctSelfSearch() { +void MortevielleEngine::fctSelfSearch() { if (g_s._selectedObjectId != 0) st7(g_s._selectedObjectId); else @@ -574,7 +573,7 @@ void fctSelfSearch() { * Engine function - Open * @remarks Originally called 'touvrir' */ -void fctOpen() { +void MortevielleEngine::fctOpen() { if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_OPEN)); @@ -636,7 +635,7 @@ void fctOpen() { * Engine function - Place * @remarks Originally called 'tmettre' */ -void fctPlace() { +void MortevielleEngine::fctPlace() { if (g_s._selectedObjectId == 0) { g_crep = 186; return; @@ -770,7 +769,7 @@ void fctPlace() { * Engine function - Turn * @remarks Originally called 'ttourner' */ -void fctTurn() { +void MortevielleEngine::fctTurn() { if (g_caff > 99) { g_crep = 149; return; @@ -810,7 +809,7 @@ void fctTurn() { * Engine function - Hide Self * @remarks Originally called 'tcacher' */ -void fctSelfHide() { +void MortevielleEngine::fctSelfHide() { if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_HIDE_SELF)); tfleche(); @@ -829,7 +828,7 @@ void fctSelfHide() { * Engine function - Attach * @remarks Originally called 'tattacher' */ -void fctAttach() { +void MortevielleEngine::fctAttach() { if (g_s._selectedObjectId == 0) g_crep = 186; else { @@ -856,7 +855,7 @@ void fctAttach() { * Engine function - Close * @remarks Originally called 'tfermer' */ -void fctClose() { +void MortevielleEngine::fctClose() { if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_CLOSE)); @@ -896,7 +895,7 @@ void fctClose() { * Engine function - Knock * @remarks Originally called 'tfrapper' */ -void fctKnock() { +void MortevielleEngine::fctKnock() { warning("Knock - _currPlace %d", g_s._currPlace); if (!g_vm->_syn) @@ -946,7 +945,7 @@ void fctKnock() { * Engine function - Self / Put * @remarks Originally called 'tposer' */ -void fctSelfPut() { +void MortevielleEngine::fctSelfPut() { if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_POSE)); if (g_s._selectedObjectId == 0) @@ -1040,7 +1039,7 @@ void fctSelfPut() { * Engine function - Listen * @remarks Originally called 'tecouter' */ -void fctListen() { +void MortevielleEngine::fctListen() { if (g_s._currPlace != 26) g_crep = 101; else { @@ -1078,7 +1077,7 @@ void fctListen() { * Engine function - Eat * @remarks Originally called 'tmanger' */ -void fctEat() { +void MortevielleEngine::fctEat() { if ((g_s._currPlace > LANDING) && (g_s._currPlace < 26)) { g_crep = 148; } else { @@ -1119,7 +1118,7 @@ void fctEat() { * Engine function - Enter * @remarks Originally called 'tentrer' */ -void fctEnter() { +void MortevielleEngine::fctEnter() { if ((g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK)) { t1sama(); tmlieu(g_s._currPlace); @@ -1178,7 +1177,7 @@ void fctEnter() { * Engine function - Sleep * @remarks Originally called 'tdormir' */ -void fctSleep() { +void MortevielleEngine::fctSleep() { int z, j, h, m; if ((g_s._currPlace > LANDING) && (g_s._currPlace < 26)) { @@ -1225,7 +1224,7 @@ void fctSleep() { * Engine function - Force * @remarks Originally called 'tdefoncer' */ -void fctForce() { +void MortevielleEngine::fctForce() { if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_SMASH)); if (g_caff < 25) @@ -1245,7 +1244,7 @@ void fctForce() { * Engine function - Leave * @remarks Originally called 'tsortir' */ -void fctLeave() { +void MortevielleEngine::fctLeave() { tsort(); g_crep = 0; if ((g_s._currPlace == MOUNTAIN) || (g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK) || (g_s._currPlace == WELL)) @@ -1281,7 +1280,7 @@ void fctLeave() { * Engine function - Wait * @remarks Originally called 'tattendre' */ -void fctWait() { +void MortevielleEngine::fctWait() { g_mpers = 0; clsf3(); @@ -1314,7 +1313,7 @@ void fctWait() { * Engine function - Sound * @remarks Originally called 'tsonder' */ -void fctSound() { +void MortevielleEngine::fctSound() { if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_PROBE2)); if (g_caff < 27) { @@ -1329,7 +1328,7 @@ void fctSound() { * Engine function - Discuss * @remarks Originally called 'tparler' */ -void fctDiscuss() { +void MortevielleEngine::fctDiscuss() { bool te[47]; int cy, cx, max, suj, co, lig, icm, i, choi, x, y, c; char tou; @@ -1394,7 +1393,7 @@ void fctDiscuss() { moveMouse(f, tou); CHECK_QUIT; - getMousePos(x, y, c); + getMousePos_(x, y, c); x *= (3 - g_res); if (x > 319) cx = 41; @@ -1527,7 +1526,7 @@ void fctDiscuss() { * Engine function - Smell * @remarks Originally called 'tsentir' */ -void fctSmell() { +void MortevielleEngine::fctSmell() { g_crep = 119; if (g_caff < 26) { if (!g_vm->_syn) @@ -1545,7 +1544,7 @@ void fctSmell() { * Engine function - Scratch * @remarks Originally called 'tgratter' */ -void fctScratch() { +void MortevielleEngine::fctScratch() { g_crep = 155; if (g_caff < 27) { if (!g_vm->_syn) diff --git a/engines/mortevielle/actions.h b/engines/mortevielle/actions.h deleted file mode 100644 index 74d4e5c046..0000000000 --- a/engines/mortevielle/actions.h +++ /dev/null @@ -1,68 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_ACTIONS_H -#define MORTEVIELLE_ACTIONS_H - -namespace Mortevielle { - -/* NIVEAU 4 */ -extern void fctMove(); -extern void fctTake(); -extern void fctInventoryTake(); -extern void fctLift(); -extern void fctRead(); -extern void fctSelfRead(); -extern void fctLook(); -extern void fctSelftLook(); -extern void fctSearch(); -extern void fctSelfSearch(); -extern void fctOpen(); -extern void fctPlace(); -extern void fctTurn(); -extern void fctSelfHide(); -extern void fctAttach(); -extern void fctClose(); -extern void fctKnock(); -extern void fctSelfPut(); -extern void fctListen(); -extern void fctEat(); -extern void fctEnter(); -extern void fctSleep(); -extern void fctForce(); -extern void fctLeave(); -extern void fctWait(); -extern void fctSound(); -extern void fctDiscuss(); -extern void fctSmell(); -extern void fctScratch(); -/* NIVEAU 2 */ -extern void endGame(); -extern void loseGame(); - -} // End of namespace Mortevielle -#endif diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index ef55e316a8..c973fabc0a 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -30,7 +30,6 @@ #include "common/str.h" #include "common/system.h" #include "common/textconsole.h" -#include "mortevielle/actions.h" #include "mortevielle/dialogs.h" #include "mortevielle/graphics.h" #include "mortevielle/menu.h" @@ -61,7 +60,7 @@ void copcha() { bool isMouseIn(rectangle r) { int x, y, c; - getMousePos(x, y, c); + getMousePos_(x, y, c); if ((x > r._x1) && (x < r._x2) && (y > r._y1) && (y < r._y2)) return true; @@ -91,12 +90,11 @@ void writepal(int n) { } break; case MODE_CGA: { - warning("TODO: If this code is needed, resolve the incompatible types"); nhom pal[16]; for (int i = 0; i < 16; ++i) { pal[i] = g_palcga[n]._a[i]; } -// nhom pal[16] = palcga[n]._a; + if (n < 89) palette(g_palcga[n]._p); @@ -1833,7 +1831,7 @@ void tkey1(bool d) { while (keypressed()) g_key = testou(); do { - getMousePos(x, y, c); + getMousePos_(x, y, c); keypressed(); } while (c != 0); @@ -1842,7 +1840,7 @@ void tkey1(bool d) { if (d) tinke(); quest = keypressed(); - getMousePos(x, y, c); + getMousePos_(x, y, c); CHECK_QUIT; } while (!(quest || (c != 0) || (d && g_vm->_anyone))); if (quest) @@ -2518,18 +2516,23 @@ void tmaj3() { g_s._heure = chr(minute); } -void tsitu() { - if (!g_vm->_col) +/** + * Engine function - Handle OpCodes + * @remarks Originally called 'tsitu' + */ +void MortevielleEngine::handleOpcode() { + if (!_col) clearScreenType2(); - g_vm->_syn = false; - g_vm->_keyPressedEsc = false; - if (!g_vm->_anyone) { - if (g_vm->_brt) + _syn = false; + _keyPressedEsc = false; + if (!_anyone) { + if (_brt) { if ((g_msg[3] == MENU_MOVE) || (g_msg[4] == OPCODE_LEAVE) || (g_msg[4] == OPCODE_SLEEP) || (g_msg[4] == OPCODE_EAT)) { g_ctrm = 4; mennor(); return; } + } if (g_msg[3] == MENU_MOVE) fctMove(); if (g_msg[3] == MENU_DISCUSS) @@ -2586,14 +2589,14 @@ void tsitu() { fctSelfPut(); if (g_msg[4] == OPCODE_SLOOK) fctSelftLook(); - g_vm->_hiddenHero = false; + _hiddenHero = false; if (g_msg[4] == OPCODE_SHIDE) fctSelfHide(); } else { - if (g_vm->_anyone) { + if (_anyone) { quelquun(); - g_vm->_anyone = false; + _anyone = false; mennor(); return; } @@ -2604,7 +2607,7 @@ void tsitu() { ((hour > 0) && (hour < 6) && (g_s._currPlace != 0))) ++g_s._faithScore; if (((g_s._currPlace < CRYPT) || (g_s._currPlace > MOUNTAIN)) && (g_s._currPlace != 23) - && (g_s._currPlace != 0) && (g_s._selectedObjectId != 152) && (!g_vm->_loseGame)) { + && (g_s._currPlace != 0) && (g_s._selectedObjectId != 152) && (!_loseGame)) { if ((g_s._faithScore > 99) && (hour > 8) && (hour < 16)) { g_crep = 1501; tperd(); @@ -2613,7 +2616,7 @@ void tsitu() { g_crep = 1508; tperd(); } - if ((day > 1) && (hour > 8) && (!g_vm->_loseGame)) { + if ((day > 1) && (hour > 8) && (!_loseGame)) { g_crep = 1502; tperd(); } diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index d7d5c8739f..2336bc4022 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -184,7 +184,6 @@ extern void changeGraphicalDevice(int newDevice); /* NIVEAU 3 */ /* procedure PROGRAMME */ extern void tmaj3(); -extern void tsitu(); /* NIVEAU 1 */ extern void theure(); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 4b8c2678b3..1ef69a6b5b 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -29,7 +29,6 @@ #include "graphics/palette.h" #include "graphics/pixelformat.h" #include "mortevielle/mortevielle.h" -#include "mortevielle/actions.h" #include "mortevielle/dialogs.h" #include "mortevielle/asm.h" #include "mortevielle/keyboard.h" @@ -552,7 +551,7 @@ void MortevielleEngine::mainGame() { /** * This method handles playing a loaded game - * @remarks Originally called tojouer + * @remarks Originally called tjouer */ void MortevielleEngine::playGame() { gameLoaded(); @@ -660,7 +659,7 @@ void MortevielleEngine::handleAction() { } do { if (! oo) - tsitu(); + handleOpcode(); if ((g_ctrm == 0) && (! _loseGame) && (! _endGame)) { taffich(); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 0d1f5670ca..c1ed2ad855 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -169,10 +169,42 @@ public: void delay(int amount); Common::String getEngineString(int idx) const { return _engineStrings[idx]; } Common::String getGameString(int idx) const { return _gameStrings[idx]; } + void handleOpcode(); void endGame(); void loseGame(); void gameLoaded(); + +/* NIVEAU 4 */ + void fctMove(); + void fctTake(); + void fctInventoryTake(); + void fctLift(); + void fctRead(); + void fctSelfRead(); + void fctLook(); + void fctSelftLook(); + void fctSearch(); + void fctSelfSearch(); + void fctOpen(); + void fctPlace(); + void fctTurn(); + void fctSelfHide(); + void fctAttach(); + void fctClose(); + void fctKnock(); + void fctSelfPut(); + void fctListen(); + void fctEat(); + void fctEnter(); + void fctSleep(); + void fctForce(); + void fctLeave(); + void fctWait(); + void fctSound(); + void fctDiscuss(); + void fctSmell(); + void fctScratch(); }; extern MortevielleEngine *g_vm; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 1240fa4165..2eec6ab2b5 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -278,7 +278,7 @@ void setMousePos(int x, int y) { * Get mouse poisition * @remarks Originally called 'read_pos_mouse' */ -void getMousePos(int &x, int &y, int &c) { +void getMousePos_(int &x, int &y, int &c) { x = g_vm->getMousePos().x; y = g_vm->getMousePos().y; c = g_vm->getMouseClick() ? 1 : 0; @@ -307,7 +307,7 @@ void moveMouse(bool &funct, char &key) { CHECK_QUIT; in1 = get_ch(); - getMousePos(cx, cy, cd); + getMousePos_(cx, cy, cd); switch (toupper(in1)) { case '4': cx = cx - 8; diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index d17654c19e..532644a255 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -44,7 +44,7 @@ void initMouse(); extern void hideMouse(); extern void showMouse(); extern void setMousePos(int x, int y); -extern void getMousePos(int &x, int &y, int &c); +extern void getMousePos_(int &x, int &y, int &c); extern void moveMouse(bool &funct, char &key); } // End of namespace Mortevielle -- cgit v1.2.3 From 28eaf257038f6ecc86b4138eb683e3fb29d6ed74 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 11 Mar 2012 01:28:57 +0100 Subject: MORTEVIELLE: Some more renaming --- engines/mortevielle/dialogs.cpp | 4 +-- engines/mortevielle/dialogs.h | 1 + engines/mortevielle/mor.cpp | 6 ++-- engines/mortevielle/mor.h | 3 ++ engines/mortevielle/mortevielle.h | 10 ++++++ engines/mortevielle/outtext.cpp | 2 +- engines/mortevielle/outtext.h | 3 +- engines/mortevielle/ovd1.cpp | 2 +- engines/mortevielle/speech.cpp | 72 +++++++++++++++++++++++---------------- engines/mortevielle/speech.h | 31 +++++++++++++++-- engines/mortevielle/var_mor.h | 39 --------------------- 11 files changed, 93 insertions(+), 80 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index b37e0a53c5..b5cf83162c 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -463,9 +463,9 @@ void f3f8::aff50(bool drawAni50Fl) { void f3f8::ani50() { g_crep = animof(1, 1); - pictout(adani, g_crep, 63, 12); + pictout(kAdrAni, g_crep, 63, 12); g_crep = animof(2, 1); - pictout(adani, g_crep, 63, 12); + pictout(kAdrAni, g_crep, 63, 12); g_vm->_largestClearScreen = (g_res == 1); repon(2, kDialogStringIndex + 143); } diff --git a/engines/mortevielle/dialogs.h b/engines/mortevielle/dialogs.h index c3f33e899c..eaab56d7e2 100644 --- a/engines/mortevielle/dialogs.h +++ b/engines/mortevielle/dialogs.h @@ -33,6 +33,7 @@ namespace Mortevielle { static const int NUM_LINES = 7; +const int kMaxRect = 14; class Alert { private: diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index c973fabc0a..a19bb2dccd 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -161,12 +161,12 @@ void adzon() { * Returns the offset within the compressed image data resource of the desired image */ int animof(int ouf, int num) { - int nani = g_mem[adani * 16 + 1]; + int nani = g_mem[kAdrAni * 16 + 1]; int aux = num; if (ouf != 1) aux += nani; - int animof_result = (nani << 2) + 2 + READ_BE_UINT16(&g_mem[adani * 16 + (aux << 1)]); + int animof_result = (nani << 2) + 2 + READ_BE_UINT16(&g_mem[kAdrAni * 16 + (aux << 1)]); return animof_result; } @@ -1557,7 +1557,7 @@ void aniof(int ouf, int num) { num = 3; } - int ad = adani; + int ad = kAdrAni; int offset = animof(ouf, num); GfxSurface surface; diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 2336bc4022..5f47a17360 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -33,6 +33,9 @@ namespace Mortevielle { +const int kTime1 = 410; +const int kTime2 = 250; + /* NIVEAU 15 */ extern void copcha(); extern bool isMouseIn(rectangle r); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index c1ed2ad855..345db2c724 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -78,6 +78,16 @@ enum DataType { #define MORT_DAT "mort.dat" #define GAME_FRAME_DELAY (1000 / 50) +const int asoul = 154; +const int aouvr = 282; +const int achai = 387; +const int acha = 492; +const int arcf = 1272; +const int arep = 1314; +const int amzon = 1650; +const int fleche = 1758; +const int arega = 0; + class MortevielleEngine : public Engine { private: const ADGameDescription *_gameDescription; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 9d7c38d864..0d3216d370 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -292,7 +292,7 @@ void charani(Common::String filename, int32 skipSize, int length) { f.close(); for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) - g_mem[0x7314 * 16 + i - remainingSkipSize] = g_mem[0x6000 * 16 + i]; + g_mem[kAdrAni * 16 + i - remainingSkipSize] = g_mem[0x6000 * 16 + i]; } void taffich() { diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index 03523d7086..cd109ffea5 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -33,9 +33,10 @@ namespace Mortevielle { +const int kAdrAni = 0x7314; + extern Common::String deline(int num); extern void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ); - extern void chardes(Common::String filename, int32 passe, int long_); extern void charani(Common::String filename, int32 skipSize, int length); extern void taffich(); diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 53da43402e..058a880a41 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -190,7 +190,7 @@ void loadBRUIT5() { if (!f.open("bruit5")) error("Missing file - bruit5"); - f.read(&g_mem[adbruit5 * 16 + 0], 149 * 128); + f.read(&g_mem[kAdrNoise5 * 16 + 0], 149 * 128); f.close(); } diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 2ad5c0514f..dae6e83ae3 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -48,10 +48,8 @@ void spfrac(int wor) { } void charg_car(int &currWordNumb) { - int wor, int_; - - wor = swap(READ_LE_UINT16(&g_mem[adword + currWordNumb])); - int_ = wor & 0x3f; + int wor = swap(READ_LE_UINT16(&g_mem[kAdrWord + currWordNumb])); + int int_ = wor & 0x3f; if ((int_ >= 0) && (int_ <= 13)) { g_c3._val = int_; @@ -90,7 +88,7 @@ void charg_car(int &currWordNumb) { void entroct(byte o) { - g_mem[adtroct * 16 + g_ptr_oct] = o; + g_mem[kAdrTroct * 16 + g_ptr_oct] = o; ++g_ptr_oct; } @@ -109,16 +107,20 @@ void cctable(tablint &t) { } void regenbruit() { - int i = offsetb3 + 8590; + int i = kOffsetB3 + 8590; int j = 0; do { - g_t_cph[j] = READ_LE_UINT16(&g_mem[adbruit3 + i]); + g_t_cph[j] = READ_LE_UINT16(&g_mem[kAdrNoise3 + i]); i += 2; ++j; - } while (i < offsetb3 + 8790); + } while (i < kOffsetB3 + 8790); } -void charge_son() { +/** + * Load sonmus.mor file + * @remarks Originally called 'charge_son' + */ +void loadMusicSound() { Common::File f; if (!f.open("sonmus.mor")) @@ -126,11 +128,15 @@ void charge_son() { f.read(&g_mem[0x7414 * 16 + 0], 273); - g_vm->_soundManager.decodeMusic(&g_mem[0x7414 * 16], &g_mem[adson * 16], 273); + g_vm->_soundManager.decodeMusic(&g_mem[0x7414 * 16], &g_mem[kAdrNoise * 16], 273); f.close(); } -void charge_phbruit() { +/** + * Load phoneme sound file + * @remarks Originally called 'charge_phbruit' + */ +void loadPhonemeSounds() { Common::File f; if (!f.open("phbrui.mor")) @@ -142,17 +148,21 @@ void charge_phbruit() { f.close(); } -void charge_bruit() { +/** + * Speech function - Load Noise file + * @remarks Originally called 'charge_bruit' + */ +void loadNoise() { Common::File f; int i; if (!f.open("bruits")) //Translation: "noise" error("Missing file - bruits"); - f.read(&g_mem[adbruit * 16 + 0], 250); + f.read(&g_mem[kAdrNoise * 16 + 0], 250); for (i = 0; i <= 19013; ++i) - g_mem[adbruit * 16 + 32000 + i] = g_mem[adbruit5 + i]; - f.read(&g_mem[adbruit1 * 16 + offsetb1], 149); + g_mem[kAdrNoise * 16 + 32000 + i] = g_mem[kAdrNoise5 + i]; + f.read(&g_mem[kAdrNoise1 * 16 + kOffsetB1], 149); f.close(); } @@ -172,12 +182,12 @@ void trait_car() { if (g_c2._code == 6) d3 = g_tabdph[(g_c2._val - 14) << 1]; else - d3 = null; + d3 = kNullValue; if (g_c1._code >= 5) { veracf(g_c2._acc); if (g_c1._code == 9) { entroct(4); - if (d3 == null) + if (d3 == kNullValue) entroct(g_c2._val); else entroct(d3); @@ -189,7 +199,7 @@ void trait_car() { case 0: entroct(0); entroct(g_c2._val); - if (d3 == null) + if (d3 == kNullValue) if (g_c3._code == 9) entroct(2); else @@ -207,14 +217,14 @@ void trait_car() { do { --i; entroct(0); - if (d3 == null) + if (d3 == kNullValue) entroct(g_c2._val); else entroct(d3); entroct(3); } while (i >= 0); } - if (d3 == null) { + if (d3 == kNullValue) { entroct(4); entroct(g_c2._val); entroct(0); @@ -232,14 +242,14 @@ void trait_car() { do { --i; entroct(0); - if (d3 == null) + if (d3 == kNullValue) entroct(g_c2._val); else entroct(d3); entroct(3); } while (i >= 0); } - if (d3 == null) { + if (d3 == kNullValue) { entroct(0); entroct(g_c2._val); entroct(2); @@ -257,7 +267,7 @@ void trait_car() { do { --i; entroct(0); - if (d3 == null) + if (d3 == kNullValue) entroct(g_c2._val); else entroct(d3); @@ -478,7 +488,7 @@ void trait_ph() { int endPos = swap(g_t_cph[ptr_tcph + 1]) + deca[g_typlec]; int wordCount = endPos - startPos; for (int i = (uint)startPos >> 1, currWord = 0; i < (int)((uint)endPos >> 1); i++, currWord += 2) - WRITE_LE_UINT16(&g_mem[adword + currWord], g_t_cph[i]); + WRITE_LE_UINT16(&g_mem[kAdrWord + currWord], g_t_cph[i]); g_ptr_oct = 0; int currWord = 0; @@ -495,8 +505,10 @@ void trait_ph() { entroct(ord('#')); } - - +/** + * Start speech + * @remarks Originally called 'parole' + */ void startSpeech(int rep, int ht, int typ) { int savph[501]; int tempo; @@ -519,13 +531,13 @@ void startSpeech(int rep, int ht, int typ) { cctable(g_tbi); switch (typ) { case 1: - charge_bruit(); - /*if zuul then zzuul(adbruit,0,1095);*/ + loadNoise(); + /*if zuul then zzuul(kAdrNoise,0,1095);*/ regenbruit(); break; case 2: - charge_son(); - charge_phbruit(); + loadMusicSound(); + loadPhonemeSounds(); break; default: break; diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h index 0e249b8e00..7947ee4472 100644 --- a/engines/mortevielle/speech.h +++ b/engines/mortevielle/speech.h @@ -33,15 +33,40 @@ namespace Mortevielle { +const int kAdrNoise = 0x5cb0;/*2C00;*/ +const int kAdrNoise1 = 0x6924; +const int kAdrNoise3 = 0x6ba6;/*3AF6;*/ +const int kAdrNoise5 = 0x3b50; +const int kAdrTroct = 0x406b; +const int kAdrWord = 0x4000; +const int kOffsetB1 = 6; +const int kOffsetB3 = 6; + +const float freq0 = 1.19318e6; +const int kNullValue = 255; +const int kTempoMusic = 71; +const int kTempoNoise = 78; +const int kTempoF = 80; +const int kTempoM = 89; + + +// Useless constants +//const int segdon = 0x6c00; +//const int adbruit2 = 0x6b30;/*3A80;*/ +//const int adson2 = 0x60b0;/*3000;*/ +//const int seg_syst = 0x6fed; +//const int offsetb2 = 4; + + extern void spfrac(int wor); extern void charg_car(int &currWordNumb); extern void entroct(byte o); extern void veracf(byte b); extern void cctable(tablint &t); extern void regenbruit(); -extern void charge_son(); -extern void charge_phbruit(); -extern void charge_bruit(); +extern void loadMusicSound(); +extern void loadPhonemeSounds(); +extern void loadNoise(); extern void trait_car(); extern void rot_chariot(); diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 50c73974d8..9d81a8e16e 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -64,38 +64,8 @@ namespace Mortevielle { /*------------------------- CONSTANTS ----------------------------------*/ /*---------------------------------------------------------------------------*/ -const float freq0 = 1.19318e6; - -const int adani = 0x7314; -const int adbruit = 0x5cb0;/*2C00;*/ -const int adbruit1 = 0x6924; -const int adbruit3 = 0x6ba6;/*3AF6;*/ -const int adbruit5 = 0x3b50; -const int adson = 0x5cb0;/*2C00;*/ -const int adtroct = 0x406b; -const int adword = 0x4000; -const int offsetb1 = 6; -const int offsetb3 = 6; - -// Useless constants -//const int segdon = 0x6c00; -//const int adbruit2 = 0x6b30;/*3A80;*/ -//const int adson2 = 0x60b0;/*3000;*/ -//const int seg_syst = 0x6fed; -//const int offsetb2 = 4; - -const int null = 255; - -const int kTempoMusic = 71; -const int kTempoNoise = 78; -const int kTempoF = 80; -const int kTempoM = 89; - -const int kTime1 = 410; -const int kTime2 = 250; const int maxti = 7975; const int maxtd = 600; -const int kMaxRect = 14; const int kDescriptionStringIndex = 0; // Unused const int kInventoryStringIndex = 186; @@ -107,15 +77,6 @@ const int kMenuSelfStringIndex = 497; const int kMenuSayStringIndex = 502; const int kSecretPassageQuestionStringIndex = 510; // Unusued? -const int arega = 0; -const int asoul = 154; -const int aouvr = 282; -const int achai = 387; -const int acha = 492; -const int arcf = 1272; -const int arep = 1314; -const int amzon = 1650; -const int fleche = 1758; const int OPCODE_NONE = 0; enum verbs {OPCODE_ATTACH = 0x301, OPCODE_WAIT = 0x302, OPCODE_FORCE = 0x303, OPCODE_SLEEP = 0x304, OPCODE_LISTEN = 0x305, -- cgit v1.2.3 From aa184ef1b44832365886eaa9e364b03457f8feee Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 11 Mar 2012 23:06:33 +0100 Subject: MORTEVIELLE: move couple of functions to menu class, more renaming --- engines/mortevielle/actions.cpp | 30 +++++++++---------- engines/mortevielle/menu.cpp | 50 ++++++++++++++++++++++++++++++++ engines/mortevielle/menu.h | 4 +++ engines/mortevielle/mor.cpp | 58 ++++--------------------------------- engines/mortevielle/mor.h | 3 -- engines/mortevielle/mortevielle.cpp | 20 ++++++++++++- engines/mortevielle/mortevielle.h | 4 +++ engines/mortevielle/ovd1.cpp | 40 ++++++++----------------- engines/mortevielle/ovd1.h | 1 - engines/mortevielle/speech.cpp | 40 +++++++++++++++---------- engines/mortevielle/speech.h | 7 ++--- engines/mortevielle/var_mor.cpp | 3 +- engines/mortevielle/var_mor.h | 7 ++--- 13 files changed, 141 insertions(+), 126 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 49496e8daf..e7e1fddd1a 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -61,10 +61,10 @@ void MortevielleEngine::fctMove() { return; if (g_num == 1) { g_s._currPlace = OWN_ROOM; - tmlieu(0); + g_vm->_menu.setDestinationMenuText(OWN_ROOM); } else if (g_num == 7) { g_s._currPlace = ATTIC; - tmlieu(13); + g_vm->_menu.setDestinationMenuText(ATTIC); } else if (g_num != 6) g_s._currPlace = 26; if ((g_num > 1) && (g_num < 6)) @@ -88,7 +88,7 @@ void MortevielleEngine::fctMove() { t1deva(); if (cx == 2) t1neig(); - tmlieu(g_s._currPlace); + g_vm->_menu.setDestinationMenuText(g_s._currPlace); return; } @@ -97,7 +97,7 @@ void MortevielleEngine::fctMove() { t1deau(); if (cx == 2) t1derr(); - tmlieu(g_s._currPlace); + g_vm->_menu.setDestinationMenuText(g_s._currPlace); return; } @@ -170,7 +170,7 @@ void MortevielleEngine::fctMove() { if ((cx < 5) || (cx == 13) || (cx == 14)) affrep(); debloc(g_s._currPlace); - tmlieu(g_s._currPlace); + g_vm->_menu.setDestinationMenuText(g_s._currPlace); } /** @@ -201,7 +201,7 @@ void MortevielleEngine::fctTake() { g_s._secretPassageObjectId = 0; if (g_s._currPlace == WELL) g_s._wellObjectId = 0; - unsetSearchMenu(); + g_vm->_menu.unsetSearchMenu(); g_vm->_obpart = false; affrep(); } else { @@ -509,7 +509,7 @@ void MortevielleEngine::fctSearch() { g_cs = 0; g_is = 0; g_vm->_heroSearching = true; - setSearchMenu(); + g_vm->_menu.setSearchMenu(); tsuiv(); } else g_crep = 997; @@ -708,9 +708,9 @@ void MortevielleEngine::fctPlace() { g_vm->_menu.displayMenu(); if (enterPassageFl) { g_s._currPlace = SECRET_PASSAGE; - tmlieu(17); + g_vm->_menu.setDestinationMenuText(SECRET_PASSAGE); } else { - tmlieu(g_s._currPlace); + g_vm->_menu.setDestinationMenuText(g_s._currPlace); writepal(14); dessin(0); aniof(1, 2); @@ -1085,7 +1085,7 @@ void MortevielleEngine::fctEat() { g_s._currPlace = DINING_ROOM; g_caff = 10; debloc(g_s._currPlace); - tmlieu(g_s._currPlace); + g_vm->_menu.setDestinationMenuText(g_s._currPlace); int j, h, m; updateHour(j, h, m); @@ -1121,7 +1121,7 @@ void MortevielleEngine::fctEat() { void MortevielleEngine::fctEnter() { if ((g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK)) { t1sama(); - tmlieu(g_s._currPlace); + g_vm->_menu.setDestinationMenuText(g_s._currPlace); } else if (g_s._currPlace == LANDING) aldepl(); else if (g_ment == 0) @@ -1165,7 +1165,7 @@ void MortevielleEngine::fctEnter() { g_s._currPlace = g_ment; affrep(); debloc(g_s._currPlace); - tmlieu(g_s._currPlace); + g_vm->_menu.setDestinationMenuText(g_s._currPlace); g_ment = 0; g_mpers = 0; g_ipers = 0; @@ -1190,7 +1190,7 @@ void MortevielleEngine::fctSleep() { affrep(); afdes(0); debloc(g_s._currPlace); - tmlieu(g_s._currPlace); + g_vm->_menu.setDestinationMenuText(g_s._currPlace); } clsf3(); clearScreenType2(); @@ -1272,7 +1272,7 @@ void MortevielleEngine::fctLeave() { if (g_crep == 0) g_crep = lx; debloc(lx); - tmlieu(lx); + g_vm->_menu.setDestinationMenuText(lx); } } @@ -1518,7 +1518,7 @@ void MortevielleEngine::fctDiscuss() { drawClock(); affrep(); /* chech;*/ - tmlieu(g_s._currPlace); + g_vm->_menu.setDestinationMenuText(g_s._currPlace); clsf3(); } diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 6604b1bee5..a28df25634 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -76,6 +76,28 @@ void Menu::setText(int menuId, Common::String name) { } } +/** + * Init destination menu + * @remarks Originally called 'tmlieu' + */ +void Menu::setDestinationMenuText(int roomId) { + Common::String nomp; + + if (roomId == 26) + roomId = LANDING; + + int destinationId = 0; + for (; (destinationId < 7) && (g_vm->_v_lieu[destinationId][roomId]); ++destinationId) { + nomp = deline(g_vm->_v_lieu[destinationId][roomId] + kMenuPlaceStringIndex); + while (nomp.size() < 20) + nomp += ' '; + setText(_moveMenu[destinationId + 1], nomp); + } + nomp = "* "; + for (int i = 7; i >= destinationId + 1; --i) + setText(_moveMenu[i], nomp); +} + /** * _disable a menu item * @param menuId Hi byte represents menu number, lo byte reprsents item index @@ -516,4 +538,32 @@ void Menu::initMenu() { g_vm->setMouseClick(false); } +/** + * Engine function - Switch action menu to "Search" mode + * @remarks Originally called 'mfoudi' + */ +void Menu::setSearchMenu() { + for (int i = 1; i <= 7; ++i) + disableMenuItem(_moveMenu[i]); + + for (int i = 1; i <= 11; ++i) + disableMenuItem(_actionMenu[i]); + + setText(OPCODE_SOUND, g_vm->getEngineString(S_SUITE)); + setText(OPCODE_LIFT, g_vm->getEngineString(S_STOP)); +} + +/** + * Engine function - Switch action menu from "Search" mode back to normal mode + * @remarks Originally called 'mfouen' + */ +void Menu::unsetSearchMenu() { + setDestinationMenuText(g_s._currPlace); + for (int i = 1; i <= 11; ++i) + enableMenuItem(_actionMenu[i]); + + setText(OPCODE_SOUND, g_vm->getEngineString(S_PROBE)); + setText(OPCODE_LIFT, g_vm->getEngineString(S_RAISE)); +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index 5672ef7864..adfe35981e 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -52,6 +52,7 @@ public: int _moveMenu[8]; void setText(int menuId, Common::String name); + void setDestinationMenuText(int roomId); void disableMenuItem(int menuId); void enableMenuItem(int menuId); void displayMenu(); @@ -60,6 +61,9 @@ public: void eraseMenu(); void mdn(); void initMenu(); + + void setSearchMenu(); + void unsetSearchMenu(); }; enum { diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index a19bb2dccd..4e56300074 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -1849,26 +1849,6 @@ void tkey1(bool d) { showMouse(); } -void tmlieu(int roomId) { - Common::String nomp; - - if (roomId == 26) - roomId = 15; - - int i = 1; - while ((i < 8) && (g_v_lieu[i][roomId] != 0)) { - nomp = deline(g_v_lieu[i][roomId] + kMenuPlaceStringIndex); - while (nomp.size() < 20) - nomp += ' '; - g_vm->_menu.setText(g_vm->_menu._moveMenu[i], nomp); - ++i; - } - nomp = "* "; - for (int cx = 7; cx >= i; --cx) - g_vm->_menu.setText(g_vm->_menu._moveMenu[cx], nomp); -} - - /* NIVEAU 7 */ void tlu(int af, int ob) { g_caff = 32; @@ -1886,19 +1866,6 @@ void affrep() { g_crep = g_s._currPlace; } -/** - * Engine function - Switch action menu from "Search" mode back to normal mode - * @remarks Originally called 'mfouen' - */ -void unsetSearchMenu() { - tmlieu(g_s._currPlace); - for (int cx = 1; cx <= 11; ++cx) - g_vm->_menu.enableMenuItem(_actionMenu[cx]); - - g_vm->_menu.setText(OPCODE_SOUND, g_vm->getEngineString(S_PROBE)); - g_vm->_menu.setText(OPCODE_LIFT, g_vm->getEngineString(S_RAISE)); -} - /* NIVEAU 6 */ void tperd() { @@ -1906,7 +1873,7 @@ void tperd() { g_ment = 0; g_iouv = 0; g_mchai = 0; - unsetSearchMenu(); + g_vm->_menu.unsetSearchMenu(); if (!g_vm->_blo) t11(21); @@ -2033,22 +2000,7 @@ void endSearch() { g_vm->_obpart = false; g_cs = 0; g_is = 0; - unsetSearchMenu(); -} - -/** - * Engine function - Switch action menu to "Search" mode - * @remarks Originally called 'mfoudi' - */ -void setSearchMenu() { - for (int cx = 1; cx <= 7; ++cx) - g_vm->_menu.disableMenuItem(g_vm->_menu._moveMenu[cx]); - - for (int cx = 1; cx <= 11; ++cx) - g_vm->_menu.disableMenuItem(_actionMenu[cx]); - - g_vm->_menu.setText(OPCODE_SOUND, g_vm->getEngineString(S_SUITE)); - g_vm->_menu.setText(OPCODE_LIFT, g_vm->getEngineString(S_STOP)); + g_vm->_menu.unsetSearchMenu(); } void mennor() { @@ -2189,7 +2141,7 @@ L1: else g_s._faithScore += 3 * (g_s._faithScore / 10); tsort(); - tmlieu(15); + g_vm->_menu.setDestinationMenuText(LANDING); int cx = convertBitIndexToCharacterIndex(g_ipers); g_caff = 69 + cx; g_crep = g_caff; @@ -2369,7 +2321,7 @@ void treg(int ob) { } else { g_vm->_obpart = true; g_crep = g_caff + 400; - setSearchMenu(); + g_vm->_menu.setSearchMenu(); } } @@ -2495,7 +2447,7 @@ void MortevielleEngine::gameLoaded() { repon(2, g_crep); clsf3(); _endGame = false; - tmlieu(g_s._currPlace); + g_vm->_menu.setDestinationMenuText(g_s._currPlace); modinv(); if (g_s._selectedObjectId != 0) modobj(g_s._selectedObjectId + 400); diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 5f47a17360..269a566b4b 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -142,11 +142,9 @@ extern void fenat(char ans); /* NIVEAU 8 */ extern void afdes(int ad); extern void tkey1(bool d); -extern void tmlieu(int roomId); /* NIVEAU 7 */ extern void tlu(int af, int ob); extern void affrep(); -extern void unsetSearchMenu(); /* NIVEAU 6 */ extern void tperd(); extern void tsort(); @@ -156,7 +154,6 @@ extern void st1sama(); extern void modinv(); extern void sparl(float adr, float rep); extern void endSearch(); -extern void setSearchMenu(); extern void mennor(); extern void premtet(); /* NIVEAU 5 */ diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 1ef69a6b5b..b328271fc9 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -181,7 +181,7 @@ Common::ErrorCode MortevielleEngine::initialise() { init_nbrepm(); initMouse(); - init_lieu(); + loadPlaces(); _soundOff = false; _largestClearScreen = false; @@ -677,4 +677,22 @@ void MortevielleEngine::handleAction() { } } +/** + * Engine function - Init Places + * @remarks Originally called 'init_lieu' + */ +void MortevielleEngine::loadPlaces() { + Common::File f; + + if (!f.open("MXX.mor")) + error("Missing file - MXX.mor"); + + for (int i = 0; i < 7; ++i) { + for (int j = 0; j < 25; ++j) + _v_lieu[i][j] = f.readByte(); + } + + f.close(); +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 345db2c724..84a739ea03 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -146,6 +146,8 @@ public: int _c_zzz; int ptr_word; + byte _v_lieu[7][25]; + ScreenSurface _screenSurface; PaletteManager _paletteManager; GfxSurface _backgroundSurface; @@ -215,6 +217,8 @@ public: void fctDiscuss(); void fctSmell(); void fctScratch(); + + void loadPlaces(); }; extern MortevielleEngine *g_vm; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 058a880a41..b81c817edf 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -41,16 +41,14 @@ namespace Mortevielle { void charpal() { - Common::File f; // tabdb records - Common::File ft; // tfxx - Common::File fb; // byte values + Common::File f; byte b; - if (!ft.open("fxx.mor")) + if (!f.open("fxx.mor")) error("Missing file - fxx.mor"); for (int i = 0; i < 108; ++i) - g_l[i] = ft.readSint16LE(); - ft.close(); + g_l[i] = f.readSint16LE(); + f.close(); if (!f.open("plxx.mor")) error("Missing file - plxx.mor"); @@ -62,29 +60,30 @@ void charpal() { } f.close(); - if (!fb.open("cxx.mor")) + if (!f.open("cxx.mor")) error("Missing file - cxx.mor"); for (int j = 0; j <= 90; ++j) { - g_palcga[j]._p = fb.readByte(); + g_palcga[j]._p = f.readByte(); for (int i = 0; i <= 15; ++i) { nhom &with = g_palcga[j]._a[i]; - b = fb.readByte(); + b = f.readByte(); with._id = (uint)b >> 4; with._hom[0] = ((uint)b >> 2) & 3; with._hom[1] = b & 3; } } + g_palcga[10]._a[9] = g_palcga[10]._a[5]; for (int j = 0; j <= 14; ++j) { - g_tpt[j]._tax = fb.readByte(); - g_tpt[j]._tay = fb.readByte(); + g_tpt[j]._tax = f.readByte(); + g_tpt[j]._tay = f.readByte(); for (int i = 1; i <= 20; ++i) for (int k = 1; k <= 20; ++k) - g_tpt[j]._des[i][k] = fb.readByte(); + g_tpt[j]._des[i][k] = f.readByte(); } - fb.close(); + f.close(); } void chartex() { @@ -138,21 +137,6 @@ void dialpre() { int_m = true; } -void init_lieu() { - Common::File f; - - if (!f.open("MXX.mor")) - error("Missing file - MXX.mor"); - - for (int i = 1; i < 8; ++i) { - for (int j = 0; j < 25; ++j) - g_v_lieu[i][j] = f.readByte(); - } - - f.close(); -} - - void music() { if (g_vm->_soundOff) return; diff --git a/engines/mortevielle/ovd1.h b/engines/mortevielle/ovd1.h index ef9f401232..90f9c0d235 100644 --- a/engines/mortevielle/ovd1.h +++ b/engines/mortevielle/ovd1.h @@ -33,7 +33,6 @@ namespace Mortevielle { extern void charpal(); extern void chartex(); extern void dialpre(); -extern void init_lieu(); extern void music(); extern void loadBRUIT5(); extern void loadCFIEC(); diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index dae6e83ae3..2fb933b74f 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -49,7 +49,7 @@ void spfrac(int wor) { void charg_car(int &currWordNumb) { int wor = swap(READ_LE_UINT16(&g_mem[kAdrWord + currWordNumb])); - int int_ = wor & 0x3f; + int int_ = wor & 0x3f; // 63 if ((int_ >= 0) && (int_ <= 13)) { g_c3._val = int_; @@ -464,43 +464,53 @@ void trait_car() { } // switch c2.code } -void rot_chariot() { +/** + * Make the queue evolve by 1 value + * @remarks Originally called 'rot_chariot' + */ +void moveQueue() { g_c1 = g_c2; g_c2 = g_c3; g_c3._val = 32; g_c3._code = 9; } -void init_chariot() { +/** + * initialize the queue + * @remarks Originally called 'init_chariot' + */ +void initQueue() { g_c3._rep = 0; g_c3._freq = 0; g_c3._acc = 0; - rot_chariot(); - rot_chariot(); + moveQueue(); + moveQueue(); } - -void trait_ph() { +/** + * Handle a phoneme + * @remarks Originally called 'trait_ph' + */ +void handlePhoneme() { const int deca[3] = {300, 30, 40}; - int ptr_tcph = g_num_ph - 1; - int startPos = swap(g_t_cph[ptr_tcph]) + deca[g_typlec]; - int endPos = swap(g_t_cph[ptr_tcph + 1]) + deca[g_typlec]; + int startPos = swap(g_t_cph[g_phonemeNumb - 1]) + deca[g_typlec]; + int endPos = swap(g_t_cph[g_phonemeNumb]) + deca[g_typlec]; int wordCount = endPos - startPos; for (int i = (uint)startPos >> 1, currWord = 0; i < (int)((uint)endPos >> 1); i++, currWord += 2) WRITE_LE_UINT16(&g_mem[kAdrWord + currWord], g_t_cph[i]); g_ptr_oct = 0; int currWord = 0; - init_chariot(); + initQueue(); do { - rot_chariot(); + moveQueue(); charg_car(currWord); trait_car(); } while (currWord < wordCount); - rot_chariot(); + moveQueue(); trait_car(); entroct(ord('#')); } @@ -516,7 +526,7 @@ void startSpeech(int rep, int ht, int typ) { if (g_vm->_soundOff) return; - g_num_ph = rep; + g_phonemeNumb = rep; g_haut = ht; g_typlec = typ; if (g_typlec != 0) { @@ -542,7 +552,7 @@ void startSpeech(int rep, int ht, int typ) { default: break; } - trait_ph(); + handlePhoneme(); g_vm->_soundManager.litph(g_tbi, typ, tempo); if (g_typlec != 0) for (int i = 0; i <= 500; ++i) { diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h index 7947ee4472..03caa83afa 100644 --- a/engines/mortevielle/speech.h +++ b/engines/mortevielle/speech.h @@ -49,7 +49,6 @@ const int kTempoNoise = 78; const int kTempoF = 80; const int kTempoM = 89; - // Useless constants //const int segdon = 0x6c00; //const int adbruit2 = 0x6b30;/*3A80;*/ @@ -69,9 +68,9 @@ extern void loadPhonemeSounds(); extern void loadNoise(); extern void trait_car(); -extern void rot_chariot(); -extern void init_chariot(); -extern void trait_ph(); +extern void moveQueue(); +extern void initQueue(); +extern void handlePhoneme(); extern void startSpeech(int rep, int ht, int typ); } // End of namespace Mortevielle diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 62f983458f..78ff6ef0bd 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -119,7 +119,7 @@ int g_x, g_perdep, g_prebru, g_typlec, - g_num_ph, + g_phonemeNumb, g_numpal, g_ptr_oct, g_k_tempo; @@ -142,7 +142,6 @@ byte g_lettres[7][24]; uint16 g_t_mot[maxti + 1]; int g_tay_tchar; ind g_t_rec[maxtd + 1]; -byte g_v_lieu[8][25]; int g_l[108]; int g_tbi[256]; chariot g_c1, g_c2, g_c3; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 9d81a8e16e..26131c7e66 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -224,13 +224,13 @@ extern int g_x, g_yprec, g_perdep, g_prebru, - g_typlec, - g_num_ph, + g_typlec, // Speech + g_phonemeNumb, // Speech g_numpal, g_ptr_oct, g_k_tempo; -extern int g_t_cph[6401]; +extern int g_t_cph[6401]; // Speech extern byte g_tabdon[4001]; extern Common::String g_hintPctMessage; // gives the pct of hints found @@ -248,7 +248,6 @@ extern byte g_lettres[7][24]; extern uint16 g_t_mot[maxti + 1]; extern int g_tay_tchar; extern ind g_t_rec[maxtd + 1]; -extern byte g_v_lieu[8][25]; extern int g_l[108]; extern int g_tbi[256]; extern chariot g_c1, g_c2, g_c3; -- cgit v1.2.3 From 8bb6e92bc9ff3a898668b99a3edbc5eefa752064 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 11 Mar 2012 23:21:34 +0100 Subject: MORTEVIELLE: Remove extre usage of g_vm --- engines/mortevielle/mortevielle.cpp | 52 ++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index b328271fc9..cc3ee98fb8 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -150,7 +150,7 @@ Common::ErrorCode MortevielleEngine::initialise() { _screenSurface.create(SCREEN_WIDTH, SCREEN_HEIGHT, Graphics::PixelFormat::createFormatCLUT8()); // Set the screen mode - g_vm->_currGraphicalDevice = MODE_EGA; + _currGraphicalDevice = MODE_EGA; g_res = 2; _txxFileFl = false; @@ -171,13 +171,13 @@ Common::ErrorCode MortevielleEngine::initialise() { // Setup the mouse cursor initMouse(); - g_vm->_currGraphicalDevice = MODE_EGA; - g_vm->_newGraphicalDevice = g_vm->_currGraphicalDevice; + _currGraphicalDevice = MODE_EGA; + _newGraphicalDevice = _currGraphicalDevice; charpal(); loadCFIPH(); loadCFIEC(); zzuul(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); - g_vm->_c_zzz = 1; + _c_zzz = 1; init_nbrepm(); initMouse(); @@ -187,10 +187,10 @@ Common::ErrorCode MortevielleEngine::initialise() { teskbd(); dialpre(); - g_vm->_newGraphicalDevice = g_vm->_currGraphicalDevice; + _newGraphicalDevice = _currGraphicalDevice; teskbd(); - if (g_vm->_newGraphicalDevice != g_vm->_currGraphicalDevice) - g_vm->_currGraphicalDevice = g_vm->_newGraphicalDevice; + if (_newGraphicalDevice != _currGraphicalDevice) + _currGraphicalDevice = _newGraphicalDevice; hirs(); g_ades = 0x7000; @@ -294,7 +294,7 @@ bool MortevielleEngine::keyPressed() { if (g_system->getMillis() > (_lastGameFrame + GAME_FRAME_DELAY)) { _lastGameFrame = g_system->getMillis(); - g_vm->_screenSurface.updateScreen(); + _screenSurface.updateScreen(); } // Delay briefly to keep CPU usage down @@ -466,7 +466,7 @@ void MortevielleEngine::delay(int amount) { while (g_system->getMillis() < endTime) { if (g_system->getMillis() > (_lastGameFrame + GAME_FRAME_DELAY)) { _lastGameFrame = g_system->getMillis(); - g_vm->_screenSurface.updateScreen(); + _screenSurface.updateScreen(); } g_system->delayMillis(10); @@ -530,7 +530,7 @@ void MortevielleEngine::mainGame() { if (_reloadCFIEC) loadCFIEC(); - for (g_crep = 1; g_crep <= g_vm->_c_zzz; ++g_crep) + for (g_crep = 1; g_crep <= _c_zzz; ++g_crep) zzuul(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); loadBRUIT5(); @@ -582,8 +582,8 @@ void MortevielleEngine::handleAction() { oo = false; g_ctrm = 0; if (!_keyPressedEsc) { - g_vm->_menu.drawMenu(); - g_vm->_menu._menuDisplayed = true; + _menu.drawMenu(); + _menu._menuDisplayed = true; temps = 0; g_key = 0; funct = false; @@ -591,33 +591,33 @@ void MortevielleEngine::handleAction() { _inMainGameLoop = true; do { - g_vm->_menu.mdn(); + _menu.mdn(); tinke(); moveMouse(funct, inkey); CHECK_QUIT; temps = temps + 1; - } while (!((g_vm->_menu._menuSelected) || (temps > lim) || (funct) || (_anyone))); + } while (!((_menu._menuSelected) || (temps > lim) || (funct) || (_anyone))); _inMainGameLoop = false; - g_vm->_menu.eraseMenu(); - g_vm->_menu._menuDisplayed = false; + _menu.eraseMenu(); + _menu._menuDisplayed = false; if ((inkey == '\1') || (inkey == '\3') || (inkey == '\5') || (inkey == '\7') || (inkey == '\11')) { changeGraphicalDevice((uint)(ord(inkey) - 1) >> 1); return; } - if (g_vm->_menu._menuSelected && (g_msg[3] == MENU_SAVE)) { + if (_menu._menuSelected && (g_msg[3] == MENU_SAVE)) { Common::String saveName = Common::String::format("Savegame #%d", g_msg[4] & 7); - g_vm->_savegameManager.saveGame(g_msg[4] & 7, saveName); + _savegameManager.saveGame(g_msg[4] & 7, saveName); } - if (g_vm->_menu._menuSelected && (g_msg[3] == MENU_LOAD)) - g_vm->_savegameManager.loadGame((g_msg[4] & 7) - 1); + if (_menu._menuSelected && (g_msg[3] == MENU_LOAD)) + _savegameManager.loadGame((g_msg[4] & 7) - 1); if (inkey == '\103') { /* F9 */ temps = Alert::show(g_hintPctMessage, 1); return; } else if (inkey == '\77') { if ((g_mnumo != OPCODE_NONE) && ((g_msg[3] == MENU_ACTION) || (g_msg[3] == MENU_SELF))) { g_msg[4] = g_mnumo; - ecr3(g_vm->getEngineString(S_IDEM)); + ecr3(getEngineString(S_IDEM)); } else return; } else if (inkey == '\104') { @@ -641,7 +641,7 @@ void MortevielleEngine::handleAction() { if ((g_msg[3] == MENU_ACTION) || (g_msg[3] == MENU_SELF)) g_mnumo = g_msg[4]; if (!_anyone) { - if ((g_vm->_heroSearching) || (_obpart)) { + if ((_heroSearching) || (_obpart)) { if (y_s < 12) return; @@ -663,14 +663,14 @@ void MortevielleEngine::handleAction() { if ((g_ctrm == 0) && (! _loseGame) && (! _endGame)) { taffich(); - if (g_vm->_okdes) { - g_vm->_okdes = false; + if (_okdes) { + _okdes = false; dessin(0); } - if ((!g_vm->_syn) || (_col)) + if ((!_syn) || (_col)) repon(2, g_crep); } - } while (g_vm->_syn); + } while (_syn); if (g_ctrm != 0) tctrm(); } -- cgit v1.2.3 From af9af49c343198cefa6da953da14ef5a8cecf0dd Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 12 Mar 2012 01:26:02 +0100 Subject: MORTEVIELLE: get rid of several magic values, introduce SpeechManager, some more renaming --- engines/mortevielle/actions.cpp | 34 ++-- engines/mortevielle/dialogs.cpp | 2 +- engines/mortevielle/mor.cpp | 303 +++++++++++++++++++----------------- engines/mortevielle/mor.h | 20 +-- engines/mortevielle/mortevielle.cpp | 4 +- engines/mortevielle/mortevielle.h | 3 +- engines/mortevielle/ovd1.cpp | 2 +- engines/mortevielle/speech.cpp | 28 ++-- engines/mortevielle/speech.h | 32 ++-- engines/mortevielle/var_mor.h | 4 +- 10 files changed, 228 insertions(+), 204 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index e7e1fddd1a..b007966ae2 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -615,7 +615,7 @@ void MortevielleEngine::fctOpen() { || ((g_s._currPlace > RED_ROOM) && (g_s._currPlace < DINING_ROOM)) || (g_s._currPlace == OWN_ROOM) || (g_s._currPlace == PURPLE_ROOM) || (g_s._currPlace == BLUE_ROOM)) { if (getRandomNumber(1, 4) == 3) - startSpeech(7, 9, 1); + g_vm->_speechManager.startSpeech(7, 9, 1); } g_touv[tmpPlace] = chr(g_num); aniof(1, g_num); @@ -683,7 +683,7 @@ void MortevielleEngine::fctPlace() { aniof(1, 1); repon(2, 165); maivid(); - startSpeech(6, -9, 1); + g_vm->_speechManager.startSpeech(6, -9, 1); // Do you want to enter the hidden passage? int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); @@ -694,9 +694,9 @@ void MortevielleEngine::fctPlace() { bool enterPassageFl = KnowledgeCheck::show(); hideMouse(); hirs(); - dessine_rouleau(); + drawRightFrame(); clearScreenType2(); - clsf3(); + clearScreenType3(); showMouse(); tinke(); drawClock(); @@ -784,7 +784,7 @@ void MortevielleEngine::fctTurn() { g_crep = 997; if ((g_s._currPlace == ATTIC) && (g_s._atticRodHoleObjectId == 159) && (g_s._atticBallHoleObjectId == 141)) { repon(2, 167); - startSpeech(7, 9, 1); + g_vm->_speechManager.startSpeech(7, 9, 1); int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); if (answer == 1) g_vm->_endGame = true; @@ -793,8 +793,8 @@ void MortevielleEngine::fctTurn() { } if ((g_s._currPlace == SECRET_PASSAGE) && (g_s._secretPassageObjectId == 143)) { repon(2, 175); - clsf3(); - startSpeech(6, -9, 1); + clearScreenType3(); + g_vm->_speechManager.startSpeech(6, -9, 1); int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); if (answer == 1) { g_s._currPlace = CRYPT; @@ -920,7 +920,7 @@ void MortevielleEngine::fctKnock() { if (g_s._currPlace == 26) { int rand = (getRandomNumber(0, 8)) - 4; - startSpeech(11, rand, 1); + g_vm->_speechManager.startSpeech(11, rand, 1); int p; ecfren(p, rand, g_s._faithScore, g_ment); int l = g_ment; @@ -1138,7 +1138,7 @@ void MortevielleEngine::fctEnter() { g_crep = 179; else { g_x = (getRandomNumber(0, 10)) - 5; - startSpeech(7, g_x, 1); + g_vm->_speechManager.startSpeech(7, g_x, 1); aniof(1, 1); g_x = convertBitIndexToCharacterIndex(z); @@ -1159,7 +1159,7 @@ void MortevielleEngine::fctEnter() { } } else { g_x = (getRandomNumber(0, 10)) - 5; - startSpeech(7, g_x, 1); + _speechManager.startSpeech(7, g_x, 1); aniof(1, 1); g_s._currPlace = g_ment; @@ -1192,7 +1192,7 @@ void MortevielleEngine::fctSleep() { debloc(g_s._currPlace); g_vm->_menu.setDestinationMenuText(g_s._currPlace); } - clsf3(); + clearScreenType3(); clearScreenType2(); ecrf2(); ecr2(g_vm->getEngineString(S_WANT_TO_WAKE_UP)); @@ -1282,7 +1282,7 @@ void MortevielleEngine::fctLeave() { */ void MortevielleEngine::fctWait() { g_mpers = 0; - clsf3(); + clearScreenType3(); int answer; do { @@ -1511,7 +1511,7 @@ void MortevielleEngine::fctDiscuss() { g_ctrm = 0; hideMouse(); hirs(); - dessine_rouleau(); + drawRightFrame(); showMouse(); showPeoplePresent(g_ipers); tinke(); @@ -1519,7 +1519,7 @@ void MortevielleEngine::fctDiscuss() { affrep(); /* chech;*/ g_vm->_menu.setDestinationMenuText(g_s._currPlace); - clsf3(); + clearScreenType3(); } /** @@ -1562,9 +1562,9 @@ void MortevielleEngine::endGame() { _quitGame = true; tlu(13, 152); maivid(); - clsf1(); + clearScreenType1(); clearScreenType2(); - clsf3(); + clearScreenType3(); repon(9, 1509); tkey1(false); hideMouse(); @@ -1574,7 +1574,7 @@ void MortevielleEngine::endGame() { premtet(); sparl(0, 141); showMouse(); - clsf1(); + clearScreenType1(); repon(9, 1509); repon(2, 142); tkey1(false); diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index b5cf83162c..eabeae2b79 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -424,7 +424,7 @@ void f3f8::draw() { void f3f8::checkForF8(int SpeechNum, bool drawAni50Fl) { teskbd(); do { - startSpeech(SpeechNum, 0, 0); + g_vm->_speechManager.startSpeech(SpeechNum, 0, 0); waitForF3F8(g_key); CHECK_QUIT; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 4e56300074..9adf3357ee 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -230,7 +230,11 @@ void dessine(int ad, int x, int y) { showMouse(); } -void dessine_rouleau() { +/** + * Draw right frame + * @remarks Originally called 'dessine_rouleau' + */ +void drawRightFrame() { writepal(89); if (g_vm->_currGraphicalDevice == MODE_HERCULES) { g_mem[0x7000 * 16 + 14] = 15; @@ -274,10 +278,13 @@ void ecrf1() { g_vm->_screenSurface.drawBox(0, 11, 512, 163, 15); } -void clsf1() { +/** + * Engine function - Clear Screen - Type 1 + * @remarks Originally called 'clsf1' + */ +void clearScreenType1() { hideMouse(); g_vm->_screenSurface.fillRect(0, Common::Rect(0, 11, 514, 175)); - showMouse(); } @@ -298,6 +305,50 @@ void clearScreenType2() { showMouse(); } +/** + * Engine function - Clear Screen - Type 3 + * @remarks Originally called 'clsf3' + */ +void clearScreenType3() { + hideMouse(); + g_vm->_screenSurface.fillRect(0, Common::Rect(1, 192, 633, 199)); + g_vm->_screenSurface.drawBox(0, 191, 634, 8, 15); + showMouse(); +} + +/** + * Engine function - Clear Screen - Type 10 + * @remarks Originally called 'clsf10' + */ +void clearScreenType10() { + int co, cod; + Common::String st; + + hideMouse(); + if (g_res == 1) { + co = 634; + cod = 534; + } else { + co = 600; + cod = 544; + } + g_vm->_screenSurface.fillRect(15, Common::Rect(cod, 93, co, 98)); + if (g_s._faithScore < 33) + st = g_vm->getEngineString(S_COOL); + else if (g_s._faithScore < 66) + st = g_vm->getEngineString(S_LOURDE); + else if (g_s._faithScore > 65) + st = g_vm->getEngineString(S_MALSAINE); + + co = 580 - (g_vm->_screenSurface.getStringWidth(st) / 2); + g_vm->_screenSurface.putxy(co, 92); + g_vm->_screenSurface.drawString(st, 4); + + g_vm->_screenSurface.fillRect(15, Common::Rect(560, 24, 610, 86)); + /* rempli(69,12,32,5,255);*/ + showMouse(); +} + void ecrf2() { setTextColor(5); } @@ -326,15 +377,8 @@ void ecr2(Common::String str_) { } } -void clsf3() { - hideMouse(); - g_vm->_screenSurface.fillRect(0, Common::Rect(1, 192, 633, 199)); - g_vm->_screenSurface.drawBox(0, 191, 634, 8, 15); - showMouse(); -} - void ecr3(Common::String text) { - clsf3(); + clearScreenType3(); g_vm->_screenSurface.putxy(8, 192); g_vm->_screenSurface.drawString(text, 5); } @@ -348,35 +392,6 @@ void ecrf7() { setTextColor(4); } -void clsf10() { - int co, cod; - Common::String st; - - hideMouse(); - if (g_res == 1) { - co = 634; - cod = 534; - } else { - co = 600; - cod = 544; - } - g_vm->_screenSurface.fillRect(15, Common::Rect(cod, 93, co, 98)); - if (g_s._faithScore < 33) - st = g_vm->getEngineString(S_COOL); - else if (g_s._faithScore < 66) - st = g_vm->getEngineString(S_LOURDE); - else if (g_s._faithScore > 65) - st = g_vm->getEngineString(S_MALSAINE); - - co = 580 - (g_vm->_screenSurface.getStringWidth(st) / 2); - g_vm->_screenSurface.putxy(co, 92); - g_vm->_screenSurface.drawString(st, 4); - - g_vm->_screenSurface.fillRect(15, Common::Rect(560, 24, 610, 86)); - /* rempli(69,12,32,5,255);*/ - showMouse(); -} - void stop() { hirs(); g_vm->_currGraphicalDevice = MODE_AMSTRAD1512; @@ -504,34 +519,34 @@ void repon(int f, int m) { } } -void t5(int cx) { - if (cx == 10) +void t5(int roomId) { + if (roomId == DINING_ROOM) g_vm->_blo = false; - if (cx != 1) { + if (roomId != GREEN_ROOM) { g_vm->_roomPresenceLuc = false; g_vm->_roomPresenceIda = false; } - if (cx != 2) + if (roomId != PURPLE_ROOM) g_vm->_purpleRoomPresenceLeo = false; - if (cx != 4) { + if (roomId != DARKBLUE_ROOM) { g_vm->_roomPresenceGuy = false; g_vm->_roomPresenceEva = false; } - if (cx != 5) + if (roomId != BLUE_ROOM) g_vm->_roomPresenceMax = false; - if (cx != 6) + if (roomId != RED_ROOM) g_vm->_roomPresenceBob = false; - if (cx != 8) + if (roomId != GREEN_ROOM2) g_vm->_roomPresencePat = false; - if (cx != 3) + if (roomId != TOILETS) g_vm->_toiletsPresenceBobMax = false; - if (cx != 7) + if (roomId != BATHROOM) g_vm->_bathRoomPresenceBobMax = false; - if (cx != 9) + if (roomId != ROOM9) g_vm->_room9PresenceLeo = false; } @@ -545,7 +560,7 @@ void showPeoplePresent(int per) { for (cx = 1; cx <= 8; ++cx) g_vm->_menu.disableMenuItem(g_vm->_menu._discussMenu[cx]); - clsf10(); + clearScreenType10(); if ((per & 128) == 128) { g_vm->_screenSurface.putxy(xp, 24); g_vm->_screenSurface.drawString("LEO", 4); @@ -740,7 +755,7 @@ void displayAloneText() { Common::String sAre = g_vm->getEngineString(S_ARE); Common::String sAlone = g_vm->getEngineString(S_ALONE); - clsf10(); + clearScreenType10(); g_vm->_screenSurface.putxy(580 - (g_vm->_screenSurface.getStringWidth(sYou) / 2), 30); g_vm->_screenSurface.drawString(sYou, 4); g_vm->_screenSurface.putxy(580 - (g_vm->_screenSurface.getStringWidth(sAre) / 2), 50); @@ -814,12 +829,12 @@ void drawClock() { * NIVEAU 11 * *************/ -void debloc(int l) { +void debloc(int roomId) { g_num = 0; g_x = 0; g_y = 0; - if ((l != 26) && (l != 15)) - t5(l); + if ((roomId != 26) && (roomId != LANDING)) + t5(roomId); g_mpers = g_ipers; } @@ -1145,27 +1160,29 @@ void getKnockAnswer() { } } -int nouvp(int l) { +int nouvp(int roomId) { int bitIndex = 0; - if (l == 1) { + if (roomId == GREEN_ROOM) { if (g_vm->_roomPresenceLuc) bitIndex = 4; // LUC if (g_vm->_roomPresenceIda) bitIndex = 2; // IDA - } else if (((l == 2) && (g_vm->_purpleRoomPresenceLeo)) || ((l == 9) && (g_vm->_room9PresenceLeo))) + } else if ( ((roomId == PURPLE_ROOM) && (g_vm->_purpleRoomPresenceLeo)) + || ((roomId == ROOM9) && (g_vm->_room9PresenceLeo))) bitIndex = 128; // LEO - else if (l == 4) { + else if (roomId == DARKBLUE_ROOM) { if (g_vm->_roomPresenceGuy) bitIndex = 32; // GUY if (g_vm->_roomPresenceEva) bitIndex = 16; // EVA - } else if ((l == 5) && (g_vm->_roomPresenceMax)) + } else if ((roomId == BLUE_ROOM) && (g_vm->_roomPresenceMax)) bitIndex = 1; // MAX - else if ((l == 6) && (g_vm->_roomPresenceBob)) + else if ((roomId == RED_ROOM) && (g_vm->_roomPresenceBob)) bitIndex = 8; // BOB - else if ((l == 8) && (g_vm->_roomPresencePat)) + else if ((roomId == GREEN_ROOM2) && (g_vm->_roomPresencePat)) bitIndex = 64; // PAT - else if (((l == 3) && (g_vm->_toiletsPresenceBobMax)) || ((l == 7) && (g_vm->_bathRoomPresenceBobMax))) + else if ( ((roomId == TOILETS) && (g_vm->_toiletsPresenceBobMax)) + || ((roomId == BATHROOM) && (g_vm->_bathRoomPresenceBobMax)) ) bitIndex = 9; // BOB + MAX if (bitIndex != 9) @@ -1202,24 +1219,28 @@ int convertBitIndexToCharacterIndex(int bitIndex) { } -void ecfren(int &p, int &rand, int cf, int l) { - if (l == 0) +void ecfren(int &p, int &rand, int cf, int roomId) { + if (roomId == OWN_ROOM) displayAloneText(); p = -500; rand = 0; - if (((l == 1) && (!g_vm->_roomPresenceLuc) && (!g_vm->_roomPresenceIda)) || ((l == 4) && (!g_vm->_roomPresenceGuy) && (!g_vm->_roomPresenceEva))) + if ( ((roomId == GREEN_ROOM) && (!g_vm->_roomPresenceLuc) && (!g_vm->_roomPresenceIda)) + || ((roomId == DARKBLUE_ROOM) && (!g_vm->_roomPresenceGuy) && (!g_vm->_roomPresenceEva)) ) p = getPresenceStatsGreenRoom(); - if ((l == 2) && (!g_vm->_purpleRoomPresenceLeo) && (!g_vm->_room9PresenceLeo)) + if ((roomId == PURPLE_ROOM) && (!g_vm->_purpleRoomPresenceLeo) && (!g_vm->_room9PresenceLeo)) p = getPresenceStatsPurpleRoom(); - if (((l == 3) && (!g_vm->_toiletsPresenceBobMax)) || ((l == 7) && (!g_vm->_bathRoomPresenceBobMax))) + if ( ((roomId == TOILETS) && (!g_vm->_toiletsPresenceBobMax)) + || ((roomId == BATHROOM) && (!g_vm->_bathRoomPresenceBobMax)) ) p = getPresenceStatsToilets(); - if ((l == 5) && (!g_vm->_roomPresenceMax)) + if ((roomId == BLUE_ROOM) && (!g_vm->_roomPresenceMax)) p = getPresenceStatsBlueRoom(); - if (((l == 6) && (!g_vm->_roomPresenceBob)) || ((l == 8) && (!g_vm->_roomPresencePat))) + if ( ((roomId == RED_ROOM) && (!g_vm->_roomPresenceBob)) + || ((roomId == GREEN_ROOM2) && (!g_vm->_roomPresencePat))) p = getPresenceStatsRedRoom(); - if ((l == 9) && (!g_vm->_room9PresenceLeo) && (!g_vm->_purpleRoomPresenceLeo)) + if ((roomId == ROOM9) && (!g_vm->_room9PresenceLeo) && (!g_vm->_purpleRoomPresenceLeo)) p = 10; - if (((l == 2) && (g_vm->_room9PresenceLeo)) || ((l == 9) && (g_vm->_purpleRoomPresenceLeo))) + if ( ((roomId == PURPLE_ROOM) && (g_vm->_room9PresenceLeo)) + || ((roomId == ROOM9) && (g_vm->_purpleRoomPresenceLeo))) p = -400; if (p != -500) { p += cf; @@ -1227,33 +1248,33 @@ void ecfren(int &p, int &rand, int cf, int l) { } } -void becfren(int l) { - if ((l == 1) || (l == 4)) { +void becfren(int roomId) { + if ((roomId == GREEN_ROOM) || (roomId == DARKBLUE_ROOM)) { int rand = getRandomNumber(1, 2); - if (l == 1) { + if (roomId == GREEN_ROOM) { if (rand == 1) g_vm->_roomPresenceLuc = true; else g_vm->_roomPresenceIda = true; - } else { // l == 4 + } else { // roomId == DARKBLUE_ROOM if (rand == 1) g_vm->_roomPresenceGuy = true; else g_vm->_roomPresenceEva = true; } - } else if (l == 2) + } else if (roomId == PURPLE_ROOM) g_vm->_purpleRoomPresenceLeo = true; - else if (l == 3) + else if (roomId == TOILETS) g_vm->_toiletsPresenceBobMax = true; - else if (l == 5) + else if (roomId == BLUE_ROOM) g_vm->_roomPresenceMax = true; - else if (l == 6) + else if (roomId == RED_ROOM) g_vm->_roomPresenceBob = true; - else if (l == 7) + else if (roomId == BATHROOM) g_vm->_bathRoomPresenceBobMax = true; - else if (l == 8) + else if (roomId == GREEN_ROOM2) g_vm->_roomPresencePat = true; - else if (l == 9) + else if (roomId == ROOM9) g_vm->_room9PresenceLeo = true; } @@ -1289,31 +1310,31 @@ void resetVariables() { g_s._faithScore = getRandomNumber(4, 10); g_s._currPlace = MANOR_FRONT; - for (int cx = 2; cx <= 6; ++cx) - g_s._sjer[cx] = chr(0); + for (int i = 2; i <= 6; ++i) + g_s._sjer[i] = chr(0); g_s._sjer[1] = chr(113); g_s._heure = chr(20); - for (int cx = 1; cx <= 10; ++cx) - g_s._pourc[cx] = ' '; + for (int i = 1; i <= 10; ++i) + g_s._pourc[i] = ' '; - for (int cx = 1; cx <= 6; ++cx) - g_s._teauto[cx] = '*'; + for (int i = 1; i <= 6; ++i) + g_s._teauto[i] = '*'; - for (int cx = 7; cx <= 9; ++cx) - g_s._teauto[cx] = ' '; + for (int i = 7; i <= 9; ++i) + g_s._teauto[i] = ' '; - for (int cx = 10; cx <= 28; ++cx) - g_s._teauto[cx] = '*'; + for (int i = 10; i <= 28; ++i) + g_s._teauto[i] = '*'; - for (int cx = 29; cx <= 42; ++cx) - g_s._teauto[cx] = ' '; + for (int i = 29; i <= 42; ++i) + g_s._teauto[i] = ' '; g_s._teauto[33] = '*'; - for (int cx = 1; cx <= 8; ++cx) - g_nbrep[cx] = 0; + for (int i = 1; i <= 8; ++i) + g_nbrep[i] = 0; init_nbrepm(); } @@ -1460,13 +1481,13 @@ void pl20(int cf) { setPresenceChapel(h); } -int t11(int l11) { +int t11(int roomId) { int retVal = 0; int p, rand; - ecfren(p, rand, g_s._faithScore, l11); - g_li = l11; - if ((l11 > 0) && (l11 < 10)) { + ecfren(p, rand, g_s._faithScore, roomId); + g_li = roomId; + if ((roomId > OWN_ROOM) && (roomId < DINING_ROOM)) { if (p != -500) { if (rand > p) { displayAloneText(); @@ -1479,22 +1500,22 @@ int t11(int l11) { retVal = nouvp(g_li); } - if (l11 > 9) { - if ((l11 > 15) && (l11 != 20) && (l11 != 26)) + if (roomId > ROOM9) { + if ((roomId > LANDING) && (roomId != CHAPEL) && (roomId != 26)) displayAloneText(); else { int h = 0; - if (l11 == 10) + if (roomId == DINING_ROOM) p = getPresenceStatsDiningRoom(h); - else if (l11 == 11) + else if (roomId == BUREAU) p = getPresenceStatsBureau(h); - else if (l11 == 12) + else if (roomId == KITCHEN) p = getPresenceStatsKitchen(); - else if ((l11 == 13) || (l11 == 14)) + else if ((roomId == ATTIC) || (roomId == CELLAR)) p = getPresenceStatsAttic(); - else if ((l11 == 15) || (l11 == 26)) + else if ((roomId == LANDING) || (roomId == 26)) p = getPresenceStatsLanding(); - else if (l11 == 20) + else if (roomId == CHAPEL) p = getPresenceStatsChapel(h); p += g_s._faithScore; rand = getRandomNumber(1, 100); @@ -1502,15 +1523,15 @@ int t11(int l11) { displayAloneText(); retVal = 0; } else { - if (l11 == 10) + if (roomId == DINING_ROOM) p = setPresenceDiningRoom(h); - else if (l11 == 11) + else if (roomId == BUREAU) p = setPresenceBureau(h); - else if ((l11 == 12) || (l11 == 13) || (l11 == 14)) + else if ((roomId == KITCHEN) || (roomId == ATTIC) || (roomId == CELLAR)) p = setPresenceKitchen(); - else if ((l11 == 15) || (l11 == 26)) + else if ((roomId == LANDING) || (roomId == 26)) p = setPresenceLanding(); - else if (l11 == 20) + else if (roomId == CHAPEL) p = setPresenceChapel(h); retVal = p; } @@ -1524,16 +1545,16 @@ void cavegre() { g_s._faithScore += 2; if (g_s._faithScore > 69) g_s._faithScore += (g_s._faithScore / 10); - clsf3(); + clearScreenType3(); ecrf2(); ecr3(g_vm->getEngineString(S_SOMEONE_ENTERS)); int rand = (getRandomNumber(0, 4)) - 2; - startSpeech(2, rand, 1); + g_vm->_speechManager.startSpeech(2, rand, 1); // The original was doing here a useless loop. // It has been removed - clsf3(); + clearScreenType3(); displayAloneText(); } @@ -1572,35 +1593,35 @@ void musique(int so) { /* musik(0) */ ; } else if ((g_prebru == 0) && (!g_s._ipre)) { - startSpeech(10, 1, 1); + g_vm->_speechManager.startSpeech(10, 1, 1); ++g_prebru; } else { bool i = false; if ((g_s._currPlace == MOUNTAIN) || (g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK)) { if (getRandomNumber(1, 3) == 2) { - startSpeech(9, getRandomNumber(2, 4), 1); + g_vm->_speechManager.startSpeech(9, getRandomNumber(2, 4), 1); i = true; } } else if (g_s._currPlace == CHAPEL) { if (getRandomNumber(1, 2) == 1) { - startSpeech(8, 1, 1); + g_vm->_speechManager.startSpeech(8, 1, 1); i = true; } } else if (g_s._currPlace == WELL) { if (getRandomNumber(1, 2) == 2) { - startSpeech(12, 1, 1); + g_vm->_speechManager.startSpeech(12, 1, 1); i = true; } } else if (g_s._currPlace == 23) { - startSpeech(13, 1, 1); + g_vm->_speechManager.startSpeech(13, 1, 1); i = true; } if (!i) - startSpeech(getRandomNumber(1, 17), 1, 2); + g_vm->_speechManager.startSpeech(getRandomNumber(1, 17), 1, 2); } } @@ -1609,7 +1630,7 @@ void dessin(int ad) { if (ad != 0) dessine(g_ades, ((ad % 160) * 2), (ad / 160)); else { - clsf1(); + clearScreenType1(); if (g_caff > 99) { dessine(g_ades, 60, 33); g_vm->_screenSurface.drawBox(118, 32, 291, 121, 15); // Medium box @@ -1771,12 +1792,12 @@ void tinke() { g_vm->_brt = true; g_hdb = readclock(); if (getRandomNumber(1, 5) < 5) { - clsf3(); + clearScreenType3(); ecrf2(); ecr3(g_vm->getEngineString(S_HEAR_NOISE)); int rand = (getRandomNumber(0, 4)) - 2; - startSpeech(1, rand, 1); - clsf3(); + g_vm->_speechManager.startSpeech(1, rand, 1); + clearScreenType3(); } } } @@ -1875,14 +1896,14 @@ void tperd() { g_mchai = 0; g_vm->_menu.unsetSearchMenu(); if (!g_vm->_blo) - t11(21); + t11(MANOR_FRONT); g_vm->_loseGame = true; - clsf1(); + clearScreenType1(); g_vm->_screenSurface.drawBox(60, 35, 400, 50, 15); repon(9, g_crep); clearScreenType2(); - clsf3(); + clearScreenType3(); g_vm->_col = false; g_vm->_syn = false; g_vm->_okdes = false; @@ -1983,7 +2004,7 @@ void sparl(float adr, float rep) { key = 0; do { - startSpeech(repint, haut[g_caff - 69], 0); + g_vm->_speechManager.startSpeech(repint, haut[g_caff - 69], 0); f3f8::waitForF3F8(key); CHECK_QUIT; } while (key != 66); @@ -2064,14 +2085,14 @@ void t1sama() { //Entering manor hirs(); premtet(); sparl(0, 140); - dessine_rouleau(); + drawRightFrame(); drawClock(); showMouse(); g_s._currPlace = OWN_ROOM; affrep(); - t5(10); + t5(DINING_ROOM); if (!g_vm->_blo) - minute = t11(0); + minute = t11(OWN_ROOM); g_ipers = 0; g_mpers = 0; g_s._ipre = true; @@ -2130,9 +2151,9 @@ L1: g_crep = 138; repon(2, g_crep); if (g_crep == 138) - startSpeech(5, 2, 1); + g_vm->_speechManager.startSpeech(5, 2, 1); else - startSpeech(4, 4, 1); + g_vm->_speechManager.startSpeech(4, 4, 1); if (g_iouv == 0) g_s._faithScore += 2; @@ -2157,7 +2178,7 @@ L1: } else { repon(2, 136); int rand = (getRandomNumber(0, 4)) - 2; - startSpeech(3, rand, 1); + g_vm->_speechManager.startSpeech(3, rand, 1); clearScreenType2(); displayAloneText(); debloc(21); @@ -2386,7 +2407,7 @@ void changeGraphicalDevice(int newDevice) { hirs(); initMouse(); showMouse(); - dessine_rouleau(); + drawRightFrame(); tinke(); drawClock(); if (g_ipers != 0) @@ -2394,7 +2415,7 @@ void changeGraphicalDevice(int newDevice) { else displayAloneText(); clearScreenType2(); - clsf3(); + clearScreenType3(); g_maff = 68; afdes(0); repon(2, g_crep); @@ -2445,7 +2466,7 @@ void MortevielleEngine::gameLoaded() { drawClock(); afdes(0); repon(2, g_crep); - clsf3(); + clearScreenType3(); _endGame = false; g_vm->_menu.setDestinationMenuText(g_s._currPlace); modinv(); diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 269a566b4b..d817a3c501 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -50,21 +50,21 @@ extern int animof(int ouf, int num); extern int readclock(); extern void modif(int &nu); extern void dessine(int ad, int x, int y); -extern void dessine_rouleau(); +extern void drawRightFrame(); extern void setTextColor(int c); /* NIVEAU 13 */ extern void text1(int x, int y, int nb, int m); extern void initouv(); extern void ecrf1(); -extern void clsf1(); +extern void clearScreenType1(); extern void clearScreenType2(); +extern void clearScreenType3(); +extern void clearScreenType10(); extern void ecrf2(); extern void ecr2(Common::String str_); -extern void clsf3(); extern void ecr3(Common::String text); extern void ecrf6(); extern void ecrf7(); -extern void clsf10(); extern void stop(); extern void paint_rect(int x, int y, int dx, int dy); extern void updateHour(int &day, int &hour, int &minute); @@ -72,7 +72,7 @@ extern int convertCharacterIndexToBitIndex(int characterIndex); /* NIVEAU 12 */ extern void modobj(int m); extern void repon(int f, int m); -extern void t5(int cx); +extern void t5(int roomId); extern void showPeoplePresent(int per); extern int selectCharacters(int min, int max); extern int getPresenceStatsGreenRoom(); @@ -86,7 +86,7 @@ extern void drawClock(); /************* * NIVEAU 11 * *************/ -extern void debloc(int l); +extern void debloc(int roomId); extern int getPresenceStatsDiningRoom(int &hour); extern int getPresenceStatsBureau(int &hour); extern int getPresenceStatsKitchen(); @@ -103,10 +103,10 @@ extern int setPresenceKitchen(); extern int setPresenceLanding(); extern int setPresenceChapel(int hour); extern void getKnockAnswer(); -extern int nouvp(int l); +extern int nouvp(int roomId); extern int convertBitIndexToCharacterIndex(int bitIndex); -extern void ecfren(int &p, int &rand, int cf, int l); -extern void becfren(int l); +extern void ecfren(int &p, int &rand, int cf, int roomId); +extern void becfren(int roomId); /* NIVEAU 10 */ extern void init_nbrepm(); extern void phaz(int &rand, int &p, int cf); @@ -123,7 +123,7 @@ extern void pl12(int cf); extern void pl13(int cf); extern void pl15(int cf); extern void pl20(int cf); -extern int t11(int l11); +extern int t11(int roomId); extern void cavegre(); extern void writetp(Common::String s, int t); extern void aniof(int ouf, int num); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index cc3ee98fb8..3842578ba4 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -539,7 +539,7 @@ void MortevielleEngine::mainGame() { theure(); dprog(); hirs(); - dessine_rouleau(); + drawRightFrame(); showMouse(); // Loop to play the game @@ -578,7 +578,7 @@ void MortevielleEngine::handleAction() { char inkey = '\0'; bool oo, funct = 0; - clsf3(); + clearScreenType3(); oo = false; g_ctrm = 0; if (!_keyPressedEsc) { diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 84a739ea03..6fa354b47b 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -36,6 +36,7 @@ #include "mortevielle/menu.h" #include "mortevielle/saveload.h" #include "mortevielle/sound.h" +#include "mortevielle/speech.h" namespace Mortevielle { @@ -99,7 +100,6 @@ private: Common::StringArray _engineStrings; Common::StringArray _gameStrings; - Common::ErrorCode initialise(); Common::ErrorCode loadMortDat(); void readStaticStrings(Common::File &f, int dataSize, DataType dataType); @@ -154,6 +154,7 @@ public: Common::RandomSource _randomSource; SoundManager _soundManager; SavegameManager _savegameManager; + SpeechManager _speechManager; Menu _menu; bool _quitGame; // Quit game flag. Originally called 'arret' diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index b81c817edf..9605adcff3 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -153,7 +153,7 @@ void music() { g_vm->_soundManager.decodeMusic(&g_mem[0x3800 * 16], &g_mem[0x5000 * 16], 623); g_addfix = (float)((kTempoMusic - g_addv[1])) / 256; - cctable(g_tbi); + g_vm->_speechManager.cctable(g_tbi); bool fin = false; int k = 0; diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 2fb933b74f..49d47fb39f 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -35,7 +35,7 @@ namespace Mortevielle { -void spfrac(int wor) { +void SpeechManager::spfrac(int wor) { g_c3._rep = (uint)wor >> 12; if ((g_typlec == 0) && (g_c3._code != 9)) if (((g_c3._code > 4) && (g_c3._val != 20) && (g_c3._rep != 3) && (g_c3._rep != 6) && (g_c3._rep != 9)) || @@ -47,7 +47,7 @@ void spfrac(int wor) { g_c3._acc = ((uint)wor >> 9) & 7; } -void charg_car(int &currWordNumb) { +void SpeechManager::charg_car(int &currWordNumb) { int wor = swap(READ_LE_UINT16(&g_mem[kAdrWord + currWordNumb])); int int_ = wor & 0x3f; // 63 @@ -87,16 +87,16 @@ void charg_car(int &currWordNumb) { } -void entroct(byte o) { +void SpeechManager::entroct(byte o) { g_mem[kAdrTroct * 16 + g_ptr_oct] = o; ++g_ptr_oct; } -void veracf(byte b) { +void SpeechManager::veracf(byte b) { ; } -void cctable(tablint &t) { +void SpeechManager::cctable(tablint &t) { float tb[257]; tb[0] = 0; @@ -106,7 +106,7 @@ void cctable(tablint &t) { } } -void regenbruit() { +void SpeechManager::regenbruit() { int i = kOffsetB3 + 8590; int j = 0; do { @@ -120,7 +120,7 @@ void regenbruit() { * Load sonmus.mor file * @remarks Originally called 'charge_son' */ -void loadMusicSound() { +void SpeechManager::loadMusicSound() { Common::File f; if (!f.open("sonmus.mor")) @@ -136,7 +136,7 @@ void loadMusicSound() { * Load phoneme sound file * @remarks Originally called 'charge_phbruit' */ -void loadPhonemeSounds() { +void SpeechManager::loadPhonemeSounds() { Common::File f; if (!f.open("phbrui.mor")) @@ -152,7 +152,7 @@ void loadPhonemeSounds() { * Speech function - Load Noise file * @remarks Originally called 'charge_bruit' */ -void loadNoise() { +void SpeechManager::loadNoise() { Common::File f; int i; @@ -167,7 +167,7 @@ void loadNoise() { f.close(); } -void trait_car() { +void SpeechManager::trait_car() { byte d3; int d2, i; @@ -468,7 +468,7 @@ void trait_car() { * Make the queue evolve by 1 value * @remarks Originally called 'rot_chariot' */ -void moveQueue() { +void SpeechManager::moveQueue() { g_c1 = g_c2; g_c2 = g_c3; g_c3._val = 32; @@ -479,7 +479,7 @@ void moveQueue() { * initialize the queue * @remarks Originally called 'init_chariot' */ -void initQueue() { +void SpeechManager::initQueue() { g_c3._rep = 0; g_c3._freq = 0; g_c3._acc = 0; @@ -491,7 +491,7 @@ void initQueue() { * Handle a phoneme * @remarks Originally called 'trait_ph' */ -void handlePhoneme() { +void SpeechManager::handlePhoneme() { const int deca[3] = {300, 30, 40}; int startPos = swap(g_t_cph[g_phonemeNumb - 1]) + deca[g_typlec]; @@ -519,7 +519,7 @@ void handlePhoneme() { * Start speech * @remarks Originally called 'parole' */ -void startSpeech(int rep, int ht, int typ) { +void SpeechManager::startSpeech(int rep, int ht, int typ) { int savph[501]; int tempo; diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h index 03caa83afa..3a27abf66f 100644 --- a/engines/mortevielle/speech.h +++ b/engines/mortevielle/speech.h @@ -56,22 +56,24 @@ const int kTempoM = 89; //const int seg_syst = 0x6fed; //const int offsetb2 = 4; +class SpeechManager { +public: + void spfrac(int wor); + void charg_car(int &currWordNumb); + void entroct(byte o); + void veracf(byte b); + void cctable(tablint &t); + void regenbruit(); + void loadMusicSound(); + void loadPhonemeSounds(); + void loadNoise(); + void trait_car(); -extern void spfrac(int wor); -extern void charg_car(int &currWordNumb); -extern void entroct(byte o); -extern void veracf(byte b); -extern void cctable(tablint &t); -extern void regenbruit(); -extern void loadMusicSound(); -extern void loadPhonemeSounds(); -extern void loadNoise(); -extern void trait_car(); - -extern void moveQueue(); -extern void initQueue(); -extern void handlePhoneme(); -extern void startSpeech(int rep, int ht, int typ); + void moveQueue(); + void initQueue(); + void handlePhoneme(); + void startSpeech(int rep, int ht, int typ); +}; } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 26131c7e66..8679c3c4af 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -114,7 +114,7 @@ extern const byte g_rang[16]; enum places { OWN_ROOM = 0, GREEN_ROOM = 1, PURPLE_ROOM = 2, TOILETS = 3, DARKBLUE_ROOM = 4, - BLUE_ROOM = 5, RED_ROOM = 6, BATHROOM = 7, GREEN_ROOM2 = 8, + BLUE_ROOM = 5, RED_ROOM = 6, BATHROOM = 7, GREEN_ROOM2 = 8, ROOM9 = 9, DINING_ROOM = 10, BUREAU = 11, KITCHEN = 12, ATTIC = 13, CELLAR = 14, LANDING = 15, CRYPT = 16, SECRET_PASSAGE = 17, MOUNTAIN = 19, CHAPEL = 20, MANOR_FRONT = 21, MANOR_BACK = 22, WELL = 24, @@ -161,7 +161,7 @@ struct pattern { struct nhom { - byte _id; /* number betwwen 0 and 32 */ + byte _id; /* number between 0 and 32 */ byte _hom[4]; }; -- cgit v1.2.3 From 0f37695385de9a1b39950a38f956a24da6695ac0 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 13 Mar 2012 00:06:15 +0100 Subject: MORTEVIELLE: More renaming and moving --- engines/mortevielle/actions.cpp | 2 +- engines/mortevielle/mor.cpp | 279 +++++++++++++++++++++--------------- engines/mortevielle/mor.h | 32 ----- engines/mortevielle/mortevielle.cpp | 3 +- engines/mortevielle/mortevielle.h | 34 +++++ engines/mortevielle/saveload.cpp | 2 +- engines/mortevielle/speech.cpp | 21 +-- engines/mortevielle/speech.h | 4 + engines/mortevielle/var_mor.cpp | 5 +- engines/mortevielle/var_mor.h | 5 +- 10 files changed, 220 insertions(+), 167 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index b007966ae2..ebacfa31d9 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -1602,7 +1602,7 @@ void MortevielleEngine::loseGame() { tkey1(false); maivid(); resetVariables(); - dprog(); + initGame(); g_vh = 10; g_vm__ = 0; g_vj = 0; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 9adf3357ee..74d6f7166c 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -633,7 +633,7 @@ int selectCharacters(int min, int max) { * Engine function - Get Presence Statistics - Green Room * @remarks Originally called 'cpl1' */ -int getPresenceStatsGreenRoom() { +int MortevielleEngine::getPresenceStatsGreenRoom() { int day, hour, minute; int retVal = 0; @@ -664,7 +664,7 @@ int getPresenceStatsGreenRoom() { * Engine function - Get Presence Statistics - Purple Room * @remarks Originally called 'cpl2' */ -int getPresenceStatsPurpleRoom() { +int MortevielleEngine::getPresenceStatsPurpleRoom() { int day, hour, minute; int retVal = 0; @@ -687,7 +687,7 @@ int getPresenceStatsPurpleRoom() { * Engine function - Get Presence Statistics - Toilets * @remarks Originally called 'cpl3' */ -int getPresenceStatsToilets() { +int MortevielleEngine::getPresenceStatsToilets() { int day, hour, minute; int retVal = 0; @@ -704,7 +704,7 @@ int getPresenceStatsToilets() { * Engine function - Get Presence Statistics - Blue Room * @remarks Originally called 'cpl5' */ -int getPresenceStatsBlueRoom() { +int MortevielleEngine::getPresenceStatsBlueRoom() { int day, hour, minute; int retVal = 0; @@ -725,7 +725,7 @@ int getPresenceStatsBlueRoom() { * Engine function - Get Presence Statistics - Red Room * @remarks Originally called 'cpl6' */ -int getPresenceStatsRedRoom() { +int MortevielleEngine::getPresenceStatsRedRoom() { int day, hour, minute; int retVal = 0; @@ -842,7 +842,7 @@ void debloc(int roomId) { * Engine function - Get Presence Statistics - Room Bureau * @remarks Originally called 'cpl10' */ -int getPresenceStatsDiningRoom(int &hour) { +int MortevielleEngine::getPresenceStatsDiningRoom(int &hour) { int day, minute; int retVal = 0; @@ -865,7 +865,7 @@ int getPresenceStatsDiningRoom(int &hour) { * Engine function - Get Presence Statistics - Room Bureau * @remarks Originally called 'cpl11' */ -int getPresenceStatsBureau(int &hour) { +int MortevielleEngine::getPresenceStatsBureau(int &hour) { int day, minute; int retVal = 0; @@ -888,7 +888,7 @@ int getPresenceStatsBureau(int &hour) { * Engine function - Get Presence Statistics - Room Kitchen * @remarks Originally called 'cpl12' */ -int getPresenceStatsKitchen() { +int MortevielleEngine::getPresenceStatsKitchen() { int day, hour, minute; int retVal = 0; @@ -909,7 +909,7 @@ int getPresenceStatsKitchen() { * Engine function - Get Presence Statistics - Room Attic * @remarks Originally called 'cpl13' */ -int getPresenceStatsAttic() { +int MortevielleEngine::getPresenceStatsAttic() { return 0; } @@ -917,7 +917,7 @@ int getPresenceStatsAttic() { * Engine function - Get Presence Statistics - Room Landing * @remarks Originally called 'cpl15' */ -int getPresenceStatsLanding() { +int MortevielleEngine::getPresenceStatsLanding() { int day, hour, minute; int retVal = 0; @@ -944,7 +944,7 @@ int getPresenceStatsLanding() { * Engine function - Get Presence Statistics - Room Chapel * @remarks Originally called 'cpl20' */ -int getPresenceStatsChapel(int &hour) { +int MortevielleEngine::getPresenceStatsChapel(int &hour) { int day, minute; int retVal = 0; @@ -967,18 +967,18 @@ int getPresenceStatsChapel(int &hour) { * Engine function - Check who is in the Green Room * @remarks Originally called 'quelq1' */ -void setPresenceGreenRoom(int roomId) { +void MortevielleEngine::setPresenceGreenRoom(int roomId) { int rand = getRandomNumber(1, 2); if (roomId == GREEN_ROOM) { if (rand == 1) - g_vm->_roomPresenceLuc = true; + _roomPresenceLuc = true; else - g_vm->_roomPresenceIda = true; + _roomPresenceIda = true; } else if (roomId == DARKBLUE_ROOM) { if (rand == 1) - g_vm->_roomPresenceGuy = true; + _roomPresenceGuy = true; else - g_vm->_roomPresenceEva = true; + _roomPresenceEva = true; } g_ipers = 10; @@ -988,11 +988,11 @@ void setPresenceGreenRoom(int roomId) { * Engine function - Check who is in the Purple Room * @remarks Originally called 'quelq2' */ -void setPresencePurpleRoom() { - if (g_li == 2) - g_vm->_purpleRoomPresenceLeo = true; +void MortevielleEngine::setPresencePurpleRoom() { + if (_place == PURPLE_ROOM) + _purpleRoomPresenceLeo = true; else - g_vm->_room9PresenceLeo = true; + _room9PresenceLeo = true; g_ipers = 10; } @@ -1001,8 +1001,8 @@ void setPresencePurpleRoom() { * Engine function - Check who is in the Blue Room * @remarks Originally called 'quelq5' */ -void setPresenceBlueRoom() { - g_vm->_roomPresenceMax = true; +void MortevielleEngine::setPresenceBlueRoom() { + _roomPresenceMax = true; g_ipers = 10; } @@ -1010,11 +1010,11 @@ void setPresenceBlueRoom() { * Engine function - Check who is in the Red Room * @remarks Originally called 'quelq6' */ -void setPresenceRedRoom(int l) { - if (l == 6) - g_vm->_roomPresenceBob = true; - else if (l == 8) - g_vm->_roomPresencePat = true; +void MortevielleEngine::setPresenceRedRoom(int roomId) { + if (roomId == RED_ROOM) + _roomPresenceBob = true; + else if (roomId == GREEN_ROOM2) + _roomPresencePat = true; g_ipers = 10; } @@ -1023,7 +1023,7 @@ void setPresenceRedRoom(int l) { * Engine function - Check who is in the Dining Room * @remarks Originally called 'quelq10' */ -int setPresenceDiningRoom(int hour) { +int MortevielleEngine::setPresenceDiningRoom(int hour) { int retVal = 0; if ((hour >= 0) && (hour < 8)) @@ -1054,7 +1054,7 @@ int setPresenceDiningRoom(int hour) { * Engine function - Check who is in the Bureau * @remarks Originally called 'quelq11' */ -int setPresenceBureau(int hour) { +int MortevielleEngine::setPresenceBureau(int hour) { int retVal = 0; if ((hour >= 0) && (hour < 8)) @@ -1082,7 +1082,7 @@ int setPresenceBureau(int hour) { * Engine function - Check who is in the Kitchen * @remarks Originally called 'quelq12' */ -int setPresenceKitchen() { +int MortevielleEngine::setPresenceKitchen() { int retVal = chlm(); showPeoplePresent(retVal); @@ -1093,7 +1093,7 @@ int setPresenceKitchen() { * Engine function - Check who is in the Landing * @remarks Originally called 'quelq15' */ -int setPresenceLanding() { +int MortevielleEngine::setPresenceLanding() { bool test = false; int rand = 0; do { @@ -1118,7 +1118,7 @@ int setPresenceLanding() { * Engine function - Check who is in the chapel * @remarks Originally called 'quelq20' */ -int setPresenceChapel(int hour) { +int MortevielleEngine::setPresenceChapel(int hour) { int retVal = 0; if (((hour >= 0) && (hour < 10)) || ((hour > 18) && (hour < 24))) @@ -1226,17 +1226,17 @@ void ecfren(int &p, int &rand, int cf, int roomId) { rand = 0; if ( ((roomId == GREEN_ROOM) && (!g_vm->_roomPresenceLuc) && (!g_vm->_roomPresenceIda)) || ((roomId == DARKBLUE_ROOM) && (!g_vm->_roomPresenceGuy) && (!g_vm->_roomPresenceEva)) ) - p = getPresenceStatsGreenRoom(); + p = g_vm->getPresenceStatsGreenRoom(); if ((roomId == PURPLE_ROOM) && (!g_vm->_purpleRoomPresenceLeo) && (!g_vm->_room9PresenceLeo)) - p = getPresenceStatsPurpleRoom(); + p = g_vm->getPresenceStatsPurpleRoom(); if ( ((roomId == TOILETS) && (!g_vm->_toiletsPresenceBobMax)) || ((roomId == BATHROOM) && (!g_vm->_bathRoomPresenceBobMax)) ) - p = getPresenceStatsToilets(); + p = g_vm->getPresenceStatsToilets(); if ((roomId == BLUE_ROOM) && (!g_vm->_roomPresenceMax)) - p = getPresenceStatsBlueRoom(); + p = g_vm->getPresenceStatsBlueRoom(); if ( ((roomId == RED_ROOM) && (!g_vm->_roomPresenceBob)) || ((roomId == GREEN_ROOM2) && (!g_vm->_roomPresencePat))) - p = getPresenceStatsRedRoom(); + p = g_vm->getPresenceStatsRedRoom(); if ((roomId == ROOM9) && (!g_vm->_room9PresenceLeo) && (!g_vm->_purpleRoomPresenceLeo)) p = 10; if ( ((roomId == PURPLE_ROOM) && (g_vm->_room9PresenceLeo)) @@ -1339,17 +1339,26 @@ void resetVariables() { init_nbrepm(); } -void dprog() { - g_li = 21; +/** + * Engine function - initGame + * @remarks Originally called 'dprog' + */ +void MortevielleEngine::initGame() { + _place = MANOR_FRONT; g_jh = 0; if (!g_s._ipre) - g_vm->_blo = true; + _blo = true; g_t = kTime1; g_mh = readclock(); } -void pl1(int cf) { - if (((g_li == 1) && (!g_vm->_roomPresenceLuc) && (!g_vm->_roomPresenceIda)) || ((g_li == 4) && (!g_vm->_roomPresenceGuy) && (!g_vm->_roomPresenceEva))) { +/** + * Engine function - Set Random Presence - Green Room + * @remarks Originally called 'pl1' + */ +void MortevielleEngine::setRandomPresenceGreenRoom(int cf) { + if ( ((_place == GREEN_ROOM) && (!_roomPresenceLuc) && (!_roomPresenceIda)) + || ((_place == DARKBLUE_ROOM) && (!_roomPresenceGuy) && (!_roomPresenceEva)) ) { int p = getPresenceStatsGreenRoom(); int rand; phaz(rand, p, cf); @@ -1357,12 +1366,16 @@ void pl1(int cf) { if (rand > p) displayAloneText(); else - setPresenceGreenRoom(g_li); + setPresenceGreenRoom(_place); } } -void pl2(int cf) { - if (!g_vm->_purpleRoomPresenceLeo) { +/** + * Engine function - Set Random Presence - Purple Room + * @remarks Originally called 'pl2' + */ +void MortevielleEngine::setRandomPresencePurpleRoom(int cf) { + if (!_purpleRoomPresenceLeo) { int p = getPresenceStatsPurpleRoom(); int rand; phaz(rand, p, cf); @@ -1374,7 +1387,11 @@ void pl2(int cf) { } } -void pl5(int cf) { +/** + * Engine function - Set Random Presence - Blue Room + * @remarks Originally called 'pl5' + */ +void MortevielleEngine::setRandomPresenceBlueRoom(int cf) { if (!g_vm->_roomPresenceMax) { int p = getPresenceStatsBlueRoom(); int rand; @@ -1388,8 +1405,13 @@ void pl5(int cf) { } } -void pl6(int cf) { - if (((g_li == 6) && (!g_vm->_roomPresenceBob)) || ((g_li == 8) && (!g_vm->_roomPresencePat))) { +/** + * Engine function - Set Random Presence - Red Room + * @remarks Originally called 'pl6' + */ +void MortevielleEngine::setRandomPresenceRedRoom(int cf) { + if ( ((_place == RED_ROOM) && (!_roomPresenceBob)) + || ((_place == GREEN_ROOM2) && (!_roomPresencePat)) ) { int p = getPresenceStatsRedRoom(); int rand; @@ -1398,12 +1420,16 @@ void pl6(int cf) { if (rand > p) displayAloneText(); else - setPresenceRedRoom(g_li); + setPresenceRedRoom(_place); } } -void pl9(int cf) { - if (!g_vm->_room9PresenceLeo) { +/** + * Engine function - Set Random Presence - Room 9 + * @remarks Originally called 'pl9' + */ +void MortevielleEngine::setRandomPresenceRoom9(int cf) { + if (!_room9PresenceLeo) { cf = -10; int p, rand; phaz(rand, p, cf); @@ -1415,7 +1441,11 @@ void pl9(int cf) { } } -void pl10(int cf) { +/** + * Engine function - Set Random Presence - Dining Room + * @remarks Originally called 'pl10' + */ +void MortevielleEngine::setRandomPresenceDiningRoom(int cf) { int h, rand; int p = getPresenceStatsDiningRoom(h); phaz(rand, p, cf); @@ -1426,7 +1456,11 @@ void pl10(int cf) { setPresenceDiningRoom(h); } -void pl11(int cf) { +/** + * Engine function - Set Random Presence - Bureau + * @remarks Originally called 'pl11' + */ +void MortevielleEngine::setRandomPresenceBureau(int cf) { int h, rand; int p = getPresenceStatsBureau(h); @@ -1437,7 +1471,11 @@ void pl11(int cf) { setPresenceBureau(h); } -void pl12(int cf) { +/** + * Engine function - Set Random Presence - Kitchen + * @remarks Originally called 'pl12' + */ +void MortevielleEngine::setRandomPresenceKitchen(int cf) { int p, rand; p = getPresenceStatsKitchen(); @@ -1448,7 +1486,11 @@ void pl12(int cf) { setPresenceKitchen(); } -void pl13(int cf) { +/** + * Engine function - Set Random Presence - Attic / Cellar + * @remarks Originally called 'pl13' + */ +void MortevielleEngine::setRandomPresenceAttic(int cf) { int p, rand; p = getPresenceStatsAttic(); @@ -1459,7 +1501,11 @@ void pl13(int cf) { setPresenceKitchen(); } -void pl15(int cf) { +/** + * Engine function - Set Random Presence - Landing + * @remarks Originally called 'pl15' + */ +void MortevielleEngine::setRandomPresenceLanding(int cf) { int p, rand; p = getPresenceStatsLanding(); @@ -1470,7 +1516,11 @@ void pl15(int cf) { setPresenceLanding(); } -void pl20(int cf) { +/** + * Engine function - Set Random Presence - Chapel + * @remarks Originally called 'pl20' + */ +void MortevielleEngine::setRandomPresenceChapel(int cf) { int h, rand; int p = getPresenceStatsChapel(h); @@ -1486,18 +1536,18 @@ int t11(int roomId) { int p, rand; ecfren(p, rand, g_s._faithScore, roomId); - g_li = roomId; + g_vm->_place = roomId; if ((roomId > OWN_ROOM) && (roomId < DINING_ROOM)) { if (p != -500) { if (rand > p) { displayAloneText(); retVal = 0; } else { - becfren(g_li); - retVal = nouvp(g_li); + becfren(g_vm->_place); + retVal = nouvp(g_vm->_place); } } else - retVal = nouvp(g_li); + retVal = nouvp(g_vm->_place); } if (roomId > ROOM9) { @@ -1506,17 +1556,17 @@ int t11(int roomId) { else { int h = 0; if (roomId == DINING_ROOM) - p = getPresenceStatsDiningRoom(h); + p = g_vm->getPresenceStatsDiningRoom(h); else if (roomId == BUREAU) - p = getPresenceStatsBureau(h); + p = g_vm->getPresenceStatsBureau(h); else if (roomId == KITCHEN) - p = getPresenceStatsKitchen(); + p = g_vm->getPresenceStatsKitchen(); else if ((roomId == ATTIC) || (roomId == CELLAR)) - p = getPresenceStatsAttic(); + p = g_vm->getPresenceStatsAttic(); else if ((roomId == LANDING) || (roomId == 26)) - p = getPresenceStatsLanding(); + p = g_vm->getPresenceStatsLanding(); else if (roomId == CHAPEL) - p = getPresenceStatsChapel(h); + p = g_vm->getPresenceStatsChapel(h); p += g_s._faithScore; rand = getRandomNumber(1, 100); if (rand > p) { @@ -1524,15 +1574,15 @@ int t11(int roomId) { retVal = 0; } else { if (roomId == DINING_ROOM) - p = setPresenceDiningRoom(h); + p = g_vm->setPresenceDiningRoom(h); else if (roomId == BUREAU) - p = setPresenceBureau(h); + p = g_vm->setPresenceBureau(h); else if ((roomId == KITCHEN) || (roomId == ATTIC) || (roomId == CELLAR)) - p = setPresenceKitchen(); + p = g_vm->setPresenceKitchen(); else if ((roomId == LANDING) || (roomId == 26)) - p = setPresenceLanding(); + p = g_vm->setPresenceLanding(); else if (roomId == CHAPEL) - p = setPresenceChapel(h); + p = g_vm->setPresenceChapel(h); retVal = p; } } @@ -1602,20 +1652,17 @@ void musique(int so) { g_vm->_speechManager.startSpeech(9, getRandomNumber(2, 4), 1); i = true; } - } - else if (g_s._currPlace == CHAPEL) { + } else if (g_s._currPlace == CHAPEL) { if (getRandomNumber(1, 2) == 1) { g_vm->_speechManager.startSpeech(8, 1, 1); i = true; } - } - else if (g_s._currPlace == WELL) { + } else if (g_s._currPlace == WELL) { if (getRandomNumber(1, 2) == 2) { g_vm->_speechManager.startSpeech(12, 1, 1); i = true; } - } - else if (g_s._currPlace == 23) { + } else if (g_s._currPlace == 23) { g_vm->_speechManager.startSpeech(13, 1, 1); i = true; } @@ -1673,28 +1720,28 @@ void tinke() { const char d4 = ']'; const char d5 = '1'; Common::String d6 = g_vm->getEngineString(S_OK); - int cx, cf, day, hour, minute; + int cf, day, hour, minute; Common::String stpo; g_vm->_anyone = false; updateHour(day, hour, minute); if (day != g_day) { g_day = day; - cx = 0; + int i = 0; do { - ++cx; - if (g_nbrepm[cx] != 0) - --g_nbrepm[cx]; - g_nbrep[cx] = 0; - } while (cx != 8); + ++i; + if (g_nbrepm[i] != 0) + --g_nbrepm[i]; + g_nbrep[i] = 0; + } while (i != 8); } if ((hour > g_hour) || ((hour == 0) && (g_hour == 23))) { g_hour = hour; g_minute = 0; drawClock(); cf = 0; - for (cx = 1; cx <= 10; ++cx) { - if (g_s._pourc[cx] == '*') + for (int i = 1; i <= 10; ++i) { + if (g_s._pourc[i] == '*') ++cf; } @@ -1741,43 +1788,43 @@ void tinke() { g_vm->_menu.eraseMenu(); g_jh += ((nh - g_mh) / g_t); g_mh = nh; - switch (g_li) { - case 1: - case 4 : - pl1(cf); + switch (g_vm->_place) { + case GREEN_ROOM: + case DARKBLUE_ROOM: + g_vm->setRandomPresenceGreenRoom(cf); break; - case 2 : - pl2(cf); + case PURPLE_ROOM: + g_vm->setRandomPresencePurpleRoom(cf); break; - case 5 : - pl5(cf); + case BLUE_ROOM: + g_vm->setRandomPresenceBlueRoom(cf); break; - case 6: - case 8 : - pl6(cf); + case RED_ROOM: + case GREEN_ROOM2: + g_vm->setRandomPresenceRedRoom(cf); break; - case 9 : - pl9(cf); + case ROOM9: + g_vm->setRandomPresenceRoom9(cf); break; - case 10 : - pl10(cf); + case DINING_ROOM: + g_vm->setRandomPresenceDiningRoom(cf); break; - case 11 : - pl11(cf); + case BUREAU: + g_vm->setRandomPresenceBureau(cf); break; - case 12 : - pl12(cf); + case KITCHEN: + g_vm->setRandomPresenceKitchen(cf); break; - case 13: - case 14 : - pl13(cf); + case ATTIC: + case CELLAR: + g_vm->setRandomPresenceAttic(cf); break; - case 15: - case 26 : - pl15(cf); + case LANDING: + case 26: + g_vm->setRandomPresenceLanding(cf); break; - case 20 : - pl20(cf); + case CHAPEL: + g_vm->setRandomPresenceChapel(cf); break; } if ((g_mpers != 0) && (g_ipers != 10)) @@ -1809,7 +1856,7 @@ void tinke() { } g_hfb = readclock(); if ((g_vm->_brt) && ((g_hfb - g_hdb) > 17)) { - cx = nouvp(g_li); + nouvp(g_vm->_place); g_vm->_brt = false; g_hdb = 0; if ((g_s._currPlace > OWN_ROOM) && (g_s._currPlace < DINING_ROOM)) @@ -2436,7 +2483,7 @@ void MortevielleEngine::gameLoaded() { _hiddenHero = false; _brt = false; g_maff = 68; - g_mnumo = 0; + g_mnumo = OPCODE_NONE; g_prebru = 0; g_x = 0; g_y = 0; diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index d817a3c501..e067534b67 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -75,11 +75,6 @@ extern void repon(int f, int m); extern void t5(int roomId); extern void showPeoplePresent(int per); extern int selectCharacters(int min, int max); -extern int getPresenceStatsGreenRoom(); -extern int getPresenceStatsPurpleRoom(); -extern int getPresenceStatsToilets(); -extern int getPresenceStatsBlueRoom(); -extern int getPresenceStatsRedRoom(); extern void displayAloneText(); extern int chlm(); extern void drawClock(); @@ -87,21 +82,6 @@ extern void drawClock(); * NIVEAU 11 * *************/ extern void debloc(int roomId); -extern int getPresenceStatsDiningRoom(int &hour); -extern int getPresenceStatsBureau(int &hour); -extern int getPresenceStatsKitchen(); -extern int getPresenceStatsAttic(); -extern int getPresenceStatsLanding(); -extern int getPresenceStatsChapel(int &hour); -extern void setPresenceGreenRoom(int roomId); -extern void setPresencePurpleRoom(); -extern void setPresenceBlueRoom(); -extern void setPresenceRedRoom(int l); -extern int setPresenceDiningRoom(int hour); -extern int setPresenceBureau(int hour); -extern int setPresenceKitchen(); -extern int setPresenceLanding(); -extern int setPresenceChapel(int hour); extern void getKnockAnswer(); extern int nouvp(int roomId); extern int convertBitIndexToCharacterIndex(int bitIndex); @@ -111,18 +91,6 @@ extern void becfren(int roomId); extern void init_nbrepm(); extern void phaz(int &rand, int &p, int cf); extern void resetVariables(); -extern void dprog(); -extern void pl1(int cf); -extern void pl2(int cf); -extern void pl5(int cf); -extern void pl6(int cf); -extern void pl9(int cf); -extern void pl10(int cf); -extern void pl11(int cf); -extern void pl12(int cf); -extern void pl13(int cf); -extern void pl15(int cf); -extern void pl20(int cf); extern int t11(int roomId); extern void cavegre(); extern void writetp(Common::String s, int t); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 3842578ba4..508e90fff7 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -84,6 +84,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _textColor = 0; _currGraphicalDevice = -1; _newGraphicalDevice = -1; + _place = -1; _c_zzz = -1; @@ -537,7 +538,7 @@ void MortevielleEngine::mainGame() { _menu.initMenu(); theure(); - dprog(); + initGame(); hirs(); drawRightFrame(); showMouse(); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 6fa354b47b..c62af9901a 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -142,6 +142,7 @@ public: int _textColor; int _currGraphicalDevice; int _newGraphicalDevice; + int _place; int _c_zzz; int ptr_word; @@ -219,7 +220,40 @@ public: void fctSmell(); void fctScratch(); + int getPresenceStatsGreenRoom(); + int getPresenceStatsPurpleRoom(); + int getPresenceStatsToilets(); + int getPresenceStatsBlueRoom(); + int getPresenceStatsRedRoom(); + int getPresenceStatsDiningRoom(int &hour); + int getPresenceStatsBureau(int &hour); + int getPresenceStatsKitchen(); + int getPresenceStatsAttic(); + int getPresenceStatsLanding(); + int getPresenceStatsChapel(int &hour); + void setPresenceGreenRoom(int roomId); + void setPresencePurpleRoom(); + void setPresenceBlueRoom(); + void setPresenceRedRoom(int roomId); + int setPresenceDiningRoom(int hour); + int setPresenceBureau(int hour); + int setPresenceKitchen(); + int setPresenceLanding(); + int setPresenceChapel(int hour); + void setRandomPresenceGreenRoom(int cf); + void setRandomPresencePurpleRoom(int cf); + void setRandomPresenceBlueRoom(int cf); + void setRandomPresenceRedRoom(int cf); + void setRandomPresenceRoom9(int cf); + void setRandomPresenceDiningRoom(int cf); + void setRandomPresenceBureau(int cf); + void setRandomPresenceKitchen(int cf); + void setRandomPresenceAttic(int cf); + void setRandomPresenceLanding(int cf); + void setRandomPresenceChapel(int cf); + void loadPlaces(); + void initGame(); }; extern MortevielleEngine *g_vm; diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index a86432253c..37b33766ff 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -123,7 +123,7 @@ Common::Error SavegameManager::loadGame(int n) { /* Initialization */ theure(); - dprog(); + g_vm->initGame(); g_vm->gameLoaded(); showMouse(); return Common::kNoError; diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 49d47fb39f..bd589057c3 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -35,9 +35,14 @@ namespace Mortevielle { +SpeechManager::SpeechManager() { + _typlec = 0; + _phonemeNumb = 0; +} + void SpeechManager::spfrac(int wor) { g_c3._rep = (uint)wor >> 12; - if ((g_typlec == 0) && (g_c3._code != 9)) + if ((_typlec == 0) && (g_c3._code != 9)) if (((g_c3._code > 4) && (g_c3._val != 20) && (g_c3._rep != 3) && (g_c3._rep != 6) && (g_c3._rep != 9)) || ((g_c3._code < 5) && ((g_c3._val != 19) && (g_c3._val != 22) && (g_c3._rep != 4) && (g_c3._rep != 9)))) { ++g_c3._rep; @@ -494,8 +499,8 @@ void SpeechManager::initQueue() { void SpeechManager::handlePhoneme() { const int deca[3] = {300, 30, 40}; - int startPos = swap(g_t_cph[g_phonemeNumb - 1]) + deca[g_typlec]; - int endPos = swap(g_t_cph[g_phonemeNumb]) + deca[g_typlec]; + int startPos = swap(g_t_cph[_phonemeNumb - 1]) + deca[_typlec]; + int endPos = swap(g_t_cph[_phonemeNumb]) + deca[_typlec]; int wordCount = endPos - startPos; for (int i = (uint)startPos >> 1, currWord = 0; i < (int)((uint)endPos >> 1); i++, currWord += 2) WRITE_LE_UINT16(&g_mem[kAdrWord + currWord], g_t_cph[i]); @@ -526,10 +531,10 @@ void SpeechManager::startSpeech(int rep, int ht, int typ) { if (g_vm->_soundOff) return; - g_phonemeNumb = rep; + _phonemeNumb = rep; g_haut = ht; - g_typlec = typ; - if (g_typlec != 0) { + _typlec = typ; + if (_typlec != 0) { for (int i = 0; i <= 500; ++i) savph[i] = g_t_cph[i]; tempo = kTempoNoise; @@ -554,10 +559,10 @@ void SpeechManager::startSpeech(int rep, int ht, int typ) { } handlePhoneme(); g_vm->_soundManager.litph(g_tbi, typ, tempo); - if (g_typlec != 0) + if (_typlec != 0) for (int i = 0; i <= 500; ++i) { g_t_cph[i] = savph[i]; - g_mlec = g_typlec; + g_mlec = _typlec; } writepal(g_numpal); } diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h index 3a27abf66f..a0bdf8a4dd 100644 --- a/engines/mortevielle/speech.h +++ b/engines/mortevielle/speech.h @@ -57,7 +57,11 @@ const int kTempoM = 89; //const int offsetb2 = 4; class SpeechManager { +private: + int _typlec; + int _phonemeNumb; public: + SpeechManager(); void spfrac(int wor); void charg_car(int &currWordNumb); void entroct(byte o); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 78ff6ef0bd..f548ed69aa 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -82,7 +82,6 @@ int g_x, g_y, g_t, g_vj, - g_li, g_vh, g_vm__, g_jh, @@ -104,7 +103,7 @@ int g_x, g_ades, g_iouv, g_inei, - g_ctrm, + g_ctrm, g_dobj, g_msg3, g_msg4, @@ -118,8 +117,6 @@ int g_x, g_yprec, g_perdep, g_prebru, - g_typlec, - g_phonemeNumb, g_numpal, g_ptr_oct, g_k_tempo; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 8679c3c4af..059e9b019e 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -188,7 +188,6 @@ extern int g_x, g_y, g_t, g_vj, - g_li, g_vh, g_vm__, g_jh, @@ -210,7 +209,7 @@ extern int g_x, g_ades, g_iouv, g_inei, - g_ctrm, + g_ctrm, g_dobj, g_msg3, g_msg4, @@ -224,8 +223,6 @@ extern int g_x, g_yprec, g_perdep, g_prebru, - g_typlec, // Speech - g_phonemeNumb, // Speech g_numpal, g_ptr_oct, g_k_tempo; -- cgit v1.2.3 From 672e54efacbe23f6ebd60cc91cb16fa2e11ce7b1 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 13 Mar 2012 08:14:19 +0100 Subject: MORTEVIELLE: Some more renaming --- engines/mortevielle/actions.cpp | 46 ++++----- engines/mortevielle/mor.cpp | 198 ++++++++++++++++++++------------------ engines/mortevielle/mor.h | 5 - engines/mortevielle/mortevielle.h | 5 + engines/mortevielle/outtext.cpp | 2 +- engines/mortevielle/var_mor.h | 6 +- 6 files changed, 137 insertions(+), 125 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index ebacfa31d9..390f7dadd2 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -42,7 +42,7 @@ namespace Mortevielle { * @remarks Originally called 'taller' */ void MortevielleEngine::fctMove() { - if ((g_s._currPlace == 26) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { + if ((g_s._currPlace == ROOM26) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { g_s._currPlace = LANDING; g_caff = g_s._currPlace; afdes(0); @@ -66,7 +66,7 @@ void MortevielleEngine::fctMove() { g_s._currPlace = ATTIC; g_vm->_menu.setDestinationMenuText(ATTIC); } else if (g_num != 6) - g_s._currPlace = 26; + g_s._currPlace = ROOM26; if ((g_num > 1) && (g_num < 6)) g_ment = g_num - 1; if (g_num > 7) @@ -92,7 +92,7 @@ void MortevielleEngine::fctMove() { return; } - if (g_s._currPlace == 23) { + if (g_s._currPlace == ROOM23) { if (cx == 1) t1deau(); if (cx == 2) @@ -113,9 +113,9 @@ void MortevielleEngine::fctMove() { if ((g_s._currPlace == CELLAR) && (cx == 3)) cx = 6; - if (((g_s._currPlace == LANDING) || (g_s._currPlace == 26)) && (cx == 4)) + if (((g_s._currPlace == LANDING) || (g_s._currPlace == ROOM26)) && (cx == 4)) cx = 6; - if ((g_s._currPlace > MOUNTAIN) && (g_s._currPlace != 26)) + if ((g_s._currPlace > MOUNTAIN) && (g_s._currPlace != ROOM26)) cx += 10; if ((g_s._currPlace == CHAPEL) && (cx == 13)) cx = 16; @@ -163,7 +163,7 @@ void MortevielleEngine::fctMove() { g_crep = 1505; tperd(); } else { - g_s._currPlace = 23; + g_s._currPlace = ROOM23; affrep(); } } @@ -277,9 +277,9 @@ void MortevielleEngine::fctTake() { || ((g_s._currPlace == BATHROOM) && (g_num == 6)) || ((g_s._currPlace == GREEN_ROOM2) && (g_num == 4)) || ((g_s._currPlace == 9) && (g_num == 4)) || ((g_s._currPlace == DINING_ROOM) && (g_num > 2)) || ((g_s._currPlace == BUREAU) && (g_num == 7)) || ((g_s._currPlace == KITCHEN) && (g_num == 6)) - || ((g_s._currPlace == ATTIC) && (g_num > 4)) || ((g_s._currPlace > ATTIC) && (g_s._currPlace != 23)) ) + || ((g_s._currPlace == ATTIC) && (g_num > 4)) || ((g_s._currPlace > ATTIC) && (g_s._currPlace != ROOM23)) ) g_crep = 997; - else if (g_s._currPlace == 23) { + else if (g_s._currPlace == ROOM23) { g_crep = 1504; tperd(); } else @@ -433,7 +433,7 @@ void MortevielleEngine::fctLook() { cx = 17; if ((g_s._currPlace > MANOR_FRONT) && (g_s._currPlace < DOOR)) cx -= 4; - if (g_s._currPlace == 26) + if (g_s._currPlace == ROOM26) cx = 21; g_crep = g_tabdon[arega + (cx * 7) + g_num - 1]; if ((g_s._currPlace == ATTIC) && (g_num == 8)) @@ -484,7 +484,7 @@ void MortevielleEngine::fctSearch() { if (g_vm->_anyone || g_vm->_keyPressedEsc) return; - if (g_s._currPlace == 23) { + if (g_s._currPlace == ROOM23) { g_crep = 1504; tperd(); return; @@ -577,7 +577,7 @@ void MortevielleEngine::fctOpen() { if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_OPEN)); - if (g_caff == 26) { + if (g_caff == ROOM26) { if (g_ment != 0) { g_msg[4] = OPCODE_ENTER; g_vm->_syn = true; @@ -859,7 +859,7 @@ void MortevielleEngine::fctClose() { if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_CLOSE)); - if (g_caff < 26) { + if (g_caff < ROOM26) { tfleche(); if (g_vm->_keyPressedEsc) g_crep = 998; @@ -887,7 +887,7 @@ void MortevielleEngine::fctClose() { } } } - if (g_caff == 26) + if (g_caff == ROOM26) g_crep = 999; } @@ -918,7 +918,7 @@ void MortevielleEngine::fctKnock() { return; } - if (g_s._currPlace == 26) { + if (g_s._currPlace == ROOM26) { int rand = (getRandomNumber(0, 8)) - 4; g_vm->_speechManager.startSpeech(11, rand, 1); int p; @@ -1024,7 +1024,7 @@ void MortevielleEngine::fctSelfPut() { } } } - if (g_caff == 23) + if (g_caff == ROOM23) g_crep = 185; if ((g_crep == 999) || (g_crep == 185) || (g_crep == 998)) { if (g_crep == 999) @@ -1040,7 +1040,7 @@ void MortevielleEngine::fctSelfPut() { * @remarks Originally called 'tecouter' */ void MortevielleEngine::fctListen() { - if (g_s._currPlace != 26) + if (g_s._currPlace != ROOM26) g_crep = 101; else { if (g_ipers != 0) @@ -1078,7 +1078,7 @@ void MortevielleEngine::fctListen() { * @remarks Originally called 'tmanger' */ void MortevielleEngine::fctEat() { - if ((g_s._currPlace > LANDING) && (g_s._currPlace < 26)) { + if ((g_s._currPlace > LANDING) && (g_s._currPlace < ROOM26)) { g_crep = 148; } else { tsort(); @@ -1180,7 +1180,7 @@ void MortevielleEngine::fctEnter() { void MortevielleEngine::fctSleep() { int z, j, h, m; - if ((g_s._currPlace > LANDING) && (g_s._currPlace < 26)) { + if ((g_s._currPlace > LANDING) && (g_s._currPlace < ROOM26)) { g_crep = 148; return; } @@ -1231,7 +1231,7 @@ void MortevielleEngine::fctForce() { tfleche(); if ((!g_vm->_anyone) && (!g_vm->_keyPressedEsc)) { - if (g_s._currPlace != 26) + if (g_s._currPlace != ROOM26) g_crep = 997; else { g_crep = 143; @@ -1252,7 +1252,7 @@ void MortevielleEngine::fctLeave() { else { int lx = 0; - if ((g_s._currPlace < CRYPT) || (g_s._currPlace == 26)) + if ((g_s._currPlace < CRYPT) || (g_s._currPlace == ROOM26)) lx = 10; if ((g_s._currPlace == DINING_ROOM) || (g_s._currPlace == CHAPEL)) lx = 21; @@ -1264,7 +1264,7 @@ void MortevielleEngine::fctLeave() { } if (g_s._currPlace == SECRET_PASSAGE) t23coul(lx); - if (g_s._currPlace == 23) + if (g_s._currPlace == ROOM23) lx = 24; if (g_crep != 997) g_s._currPlace = lx; @@ -1418,7 +1418,7 @@ void MortevielleEngine::fctDiscuss() { } else { int ix = cy; if (cx == 41) - ix = ix + 23; + ix += 23; if (ix != choi) { if (choi != 0) { lig = ((choi - 1) % 23) << 3; @@ -1528,7 +1528,7 @@ void MortevielleEngine::fctDiscuss() { */ void MortevielleEngine::fctSmell() { g_crep = 119; - if (g_caff < 26) { + if (g_caff < ROOM26) { if (!g_vm->_syn) ecr3(g_vm->getEngineString(S_SMELL)); tfleche(); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 74d6f7166c..4b6a7b317d 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -519,92 +519,100 @@ void repon(int f, int m) { } } -void t5(int roomId) { +/** + * Engine function - Reset presence in other rooms + * @remarks Originally called 't5' + */ +void MortevielleEngine::resetPresenceInRooms(int roomId) { if (roomId == DINING_ROOM) - g_vm->_blo = false; + _blo = false; if (roomId != GREEN_ROOM) { - g_vm->_roomPresenceLuc = false; - g_vm->_roomPresenceIda = false; + _roomPresenceLuc = false; + _roomPresenceIda = false; } if (roomId != PURPLE_ROOM) - g_vm->_purpleRoomPresenceLeo = false; + _purpleRoomPresenceLeo = false; if (roomId != DARKBLUE_ROOM) { - g_vm->_roomPresenceGuy = false; - g_vm->_roomPresenceEva = false; + _roomPresenceGuy = false; + _roomPresenceEva = false; } if (roomId != BLUE_ROOM) - g_vm->_roomPresenceMax = false; + _roomPresenceMax = false; if (roomId != RED_ROOM) - g_vm->_roomPresenceBob = false; + _roomPresenceBob = false; if (roomId != GREEN_ROOM2) - g_vm->_roomPresencePat = false; + _roomPresencePat = false; if (roomId != TOILETS) - g_vm->_toiletsPresenceBobMax = false; + _toiletsPresenceBobMax = false; if (roomId != BATHROOM) - g_vm->_bathRoomPresenceBobMax = false; + _bathRoomPresenceBobMax = false; if (roomId != ROOM9) - g_vm->_room9PresenceLeo = false; + _room9PresenceLeo = false; } /** * Engine function - Show the people present in the given room * @remarks Originally called 'affper' */ -void showPeoplePresent(int per) { - int cx; - int xp = 580 - (g_vm->_screenSurface.getStringWidth("LEO") / 2); +void MortevielleEngine::showPeoplePresent(int per) { + int xp = 580 - (_screenSurface.getStringWidth("LEO") / 2); + + for (int i = 1; i <= 8; ++i) + _menu.disableMenuItem(_menu._discussMenu[i]); - for (cx = 1; cx <= 8; ++cx) - g_vm->_menu.disableMenuItem(g_vm->_menu._discussMenu[cx]); clearScreenType10(); if ((per & 128) == 128) { - g_vm->_screenSurface.putxy(xp, 24); - g_vm->_screenSurface.drawString("LEO", 4); - g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[1]); + _screenSurface.putxy(xp, 24); + _screenSurface.drawString("LEO", 4); + _menu.enableMenuItem(_menu._discussMenu[1]); } if ((per & 64) == 64) { - g_vm->_screenSurface.putxy(xp, 32); - g_vm->_screenSurface.drawString("PAT", 4); - g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[2]); + _screenSurface.putxy(xp, 32); + _screenSurface.drawString("PAT", 4); + _menu.enableMenuItem(_menu._discussMenu[2]); } if ((per & 32) == 32) { - g_vm->_screenSurface.putxy(xp, 40); - g_vm->_screenSurface.drawString("GUY", 4); - g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[3]); + _screenSurface.putxy(xp, 40); + _screenSurface.drawString("GUY", 4); + _menu.enableMenuItem(_menu._discussMenu[3]); } if ((per & 16) == 16) { - g_vm->_screenSurface.putxy(xp, 48); - g_vm->_screenSurface.drawString("EVA", 4); - g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[4]); + _screenSurface.putxy(xp, 48); + _screenSurface.drawString("EVA", 4); + _menu.enableMenuItem(_menu._discussMenu[4]); } if ((per & 8) == 8) { - g_vm->_screenSurface.putxy(xp, 56); - g_vm->_screenSurface.drawString("BOB", 4); - g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[5]); + _screenSurface.putxy(xp, 56); + _screenSurface.drawString("BOB", 4); + _menu.enableMenuItem(_menu._discussMenu[5]); } if ((per & 4) == 4) { - g_vm->_screenSurface.putxy(xp, 64); - g_vm->_screenSurface.drawString("LUC", 4); - g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[6]); + _screenSurface.putxy(xp, 64); + _screenSurface.drawString("LUC", 4); + _menu.enableMenuItem(_menu._discussMenu[6]); } if ((per & 2) == 2) { - g_vm->_screenSurface.putxy(xp, 72); - g_vm->_screenSurface.drawString("IDA", 4); - g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[7]); + _screenSurface.putxy(xp, 72); + _screenSurface.drawString("IDA", 4); + _menu.enableMenuItem(_menu._discussMenu[7]); } if ((per & 1) == 1) { - g_vm->_screenSurface.putxy(xp, 80); - g_vm->_screenSurface.drawString("MAX", 4); - g_vm->_menu.enableMenuItem(g_vm->_menu._discussMenu[8]); + _screenSurface.putxy(xp, 80); + _screenSurface.drawString("MAX", 4); + _menu.enableMenuItem(_menu._discussMenu[8]); } g_ipers = per; } -int selectCharacters(int min, int max) { +/** + * Engine function - Select random characters + * @remarks Originally called 'choix' + */ +int MortevielleEngine::selectCharacters(int min, int max) { bool invertSelection = false; int rand = getRandomNumber(min, max); @@ -613,13 +621,13 @@ int selectCharacters(int min, int max) { invertSelection = true; } - int cx = 0; + int i = 0; int retVal = 0; - while (cx < rand) { + while (i < rand) { int charIndex = getRandomNumber(1, 8); int charBitIndex = convertCharacterIndexToBitIndex(charIndex); if ((retVal & charBitIndex) != charBitIndex) { - ++cx; + ++i; retVal |= charBitIndex; } } @@ -656,7 +664,7 @@ int MortevielleEngine::getPresenceStatsGreenRoom() { else if ((hour >= 0) && (hour < 8)) retVal = 70; - g_vm->_menu.mdn(); + _menu.mdn(); return retVal; } @@ -747,21 +755,21 @@ int MortevielleEngine::getPresenceStatsRedRoom() { * on the right hand side of the screen * @remarks Originally called 'person' */ -void displayAloneText() { +void MortevielleEngine::displayAloneText() { for (int cf = 1; cf <= 8; ++cf) - g_vm->_menu.disableMenuItem(g_vm->_menu._discussMenu[cf]); + _menu.disableMenuItem(_menu._discussMenu[cf]); - Common::String sYou = g_vm->getEngineString(S_YOU); - Common::String sAre = g_vm->getEngineString(S_ARE); - Common::String sAlone = g_vm->getEngineString(S_ALONE); + Common::String sYou = getEngineString(S_YOU); + Common::String sAre = getEngineString(S_ARE); + Common::String sAlone = getEngineString(S_ALONE); clearScreenType10(); - g_vm->_screenSurface.putxy(580 - (g_vm->_screenSurface.getStringWidth(sYou) / 2), 30); - g_vm->_screenSurface.drawString(sYou, 4); - g_vm->_screenSurface.putxy(580 - (g_vm->_screenSurface.getStringWidth(sAre) / 2), 50); - g_vm->_screenSurface.drawString(sAre, 4); - g_vm->_screenSurface.putxy(580 - (g_vm->_screenSurface.getStringWidth(sAlone) / 2), 70); - g_vm->_screenSurface.drawString(sAlone, 4); + _screenSurface.putxy(580 - (_screenSurface.getStringWidth(sYou) / 2), 30); + _screenSurface.drawString(sYou, 4); + _screenSurface.putxy(580 - (_screenSurface.getStringWidth(sAre) / 2), 50); + _screenSurface.drawString(sAre, 4); + _screenSurface.putxy(580 - (_screenSurface.getStringWidth(sAlone) / 2), 70); + _screenSurface.drawString(sAlone, 4); g_ipers = 0; } @@ -833,8 +841,8 @@ void debloc(int roomId) { g_num = 0; g_x = 0; g_y = 0; - if ((roomId != 26) && (roomId != LANDING)) - t5(roomId); + if ((roomId != ROOM26) && (roomId != LANDING)) + g_vm->resetPresenceInRooms(roomId); g_mpers = g_ipers; } @@ -1160,29 +1168,33 @@ void getKnockAnswer() { } } -int nouvp(int roomId) { +/** + * Engine function - Get Room Presence Bit Index + * @remarks Originally called 'nouvp' + */ +int MortevielleEngine::getPresenceBitIndex(int roomId) { int bitIndex = 0; if (roomId == GREEN_ROOM) { - if (g_vm->_roomPresenceLuc) + if (_roomPresenceLuc) bitIndex = 4; // LUC - if (g_vm->_roomPresenceIda) + if (_roomPresenceIda) bitIndex = 2; // IDA - } else if ( ((roomId == PURPLE_ROOM) && (g_vm->_purpleRoomPresenceLeo)) - || ((roomId == ROOM9) && (g_vm->_room9PresenceLeo))) + } else if ( ((roomId == PURPLE_ROOM) && (_purpleRoomPresenceLeo)) + || ((roomId == ROOM9) && (_room9PresenceLeo))) bitIndex = 128; // LEO else if (roomId == DARKBLUE_ROOM) { - if (g_vm->_roomPresenceGuy) + if (_roomPresenceGuy) bitIndex = 32; // GUY - if (g_vm->_roomPresenceEva) + if (_roomPresenceEva) bitIndex = 16; // EVA - } else if ((roomId == BLUE_ROOM) && (g_vm->_roomPresenceMax)) + } else if ((roomId == BLUE_ROOM) && (_roomPresenceMax)) bitIndex = 1; // MAX - else if ((roomId == RED_ROOM) && (g_vm->_roomPresenceBob)) + else if ((roomId == RED_ROOM) && (_roomPresenceBob)) bitIndex = 8; // BOB - else if ((roomId == GREEN_ROOM2) && (g_vm->_roomPresencePat)) + else if ((roomId == GREEN_ROOM2) && (_roomPresencePat)) bitIndex = 64; // PAT - else if ( ((roomId == TOILETS) && (g_vm->_toiletsPresenceBobMax)) - || ((roomId == BATHROOM) && (g_vm->_bathRoomPresenceBobMax)) ) + else if ( ((roomId == TOILETS) && (_toiletsPresenceBobMax)) + || ((roomId == BATHROOM) && (_bathRoomPresenceBobMax)) ) bitIndex = 9; // BOB + MAX if (bitIndex != 9) @@ -1221,7 +1233,7 @@ int convertBitIndexToCharacterIndex(int bitIndex) { void ecfren(int &p, int &rand, int cf, int roomId) { if (roomId == OWN_ROOM) - displayAloneText(); + g_vm->displayAloneText(); p = -500; rand = 0; if ( ((roomId == GREEN_ROOM) && (!g_vm->_roomPresenceLuc) && (!g_vm->_roomPresenceIda)) @@ -1540,19 +1552,19 @@ int t11(int roomId) { if ((roomId > OWN_ROOM) && (roomId < DINING_ROOM)) { if (p != -500) { if (rand > p) { - displayAloneText(); + g_vm->displayAloneText(); retVal = 0; } else { becfren(g_vm->_place); - retVal = nouvp(g_vm->_place); + retVal = g_vm->getPresenceBitIndex(g_vm->_place); } } else - retVal = nouvp(g_vm->_place); + retVal = g_vm->getPresenceBitIndex(g_vm->_place); } if (roomId > ROOM9) { - if ((roomId > LANDING) && (roomId != CHAPEL) && (roomId != 26)) - displayAloneText(); + if ((roomId > LANDING) && (roomId != CHAPEL) && (roomId != ROOM26)) + g_vm->displayAloneText(); else { int h = 0; if (roomId == DINING_ROOM) @@ -1563,14 +1575,14 @@ int t11(int roomId) { p = g_vm->getPresenceStatsKitchen(); else if ((roomId == ATTIC) || (roomId == CELLAR)) p = g_vm->getPresenceStatsAttic(); - else if ((roomId == LANDING) || (roomId == 26)) + else if ((roomId == LANDING) || (roomId == ROOM26)) p = g_vm->getPresenceStatsLanding(); else if (roomId == CHAPEL) p = g_vm->getPresenceStatsChapel(h); p += g_s._faithScore; rand = getRandomNumber(1, 100); if (rand > p) { - displayAloneText(); + g_vm->displayAloneText(); retVal = 0; } else { if (roomId == DINING_ROOM) @@ -1579,7 +1591,7 @@ int t11(int roomId) { p = g_vm->setPresenceBureau(h); else if ((roomId == KITCHEN) || (roomId == ATTIC) || (roomId == CELLAR)) p = g_vm->setPresenceKitchen(); - else if ((roomId == LANDING) || (roomId == 26)) + else if ((roomId == LANDING) || (roomId == ROOM26)) p = g_vm->setPresenceLanding(); else if (roomId == CHAPEL) p = g_vm->setPresenceChapel(h); @@ -1605,7 +1617,7 @@ void cavegre() { // It has been removed clearScreenType3(); - displayAloneText(); + g_vm->displayAloneText(); } void writetp(Common::String s, int t) { @@ -1662,7 +1674,7 @@ void musique(int so) { g_vm->_speechManager.startSpeech(12, 1, 1); i = true; } - } else if (g_s._currPlace == 23) { + } else if (g_s._currPlace == ROOM23) { g_vm->_speechManager.startSpeech(13, 1, 1); i = true; } @@ -1707,7 +1719,7 @@ void dessin(int ad) { aniof(1, 1); } - if (g_caff < 26) + if (g_caff < ROOM26) musique(1); } } @@ -1820,7 +1832,7 @@ void tinke() { g_vm->setRandomPresenceAttic(cf); break; case LANDING: - case 26: + case ROOM26: g_vm->setRandomPresenceLanding(cf); break; case CHAPEL: @@ -1856,7 +1868,7 @@ void tinke() { } g_hfb = readclock(); if ((g_vm->_brt) && ((g_hfb - g_hdb) > 17)) { - nouvp(g_vm->_place); + g_vm->getPresenceBitIndex(g_vm->_place); g_vm->_brt = false; g_hdb = 0; if ((g_s._currPlace > OWN_ROOM) && (g_s._currPlace < DINING_ROOM)) @@ -2111,7 +2123,7 @@ void t1sama() { //Entering manor int day, hour, minute; updateHour(day, hour, minute); - if ((hour < 5) && (g_s._currPlace > 18)) { + if ((hour < 5) && (g_s._currPlace > ROOM18)) { bool d; cherjer(137, d); if (!d) { //You don't have the keys, and it's late @@ -2121,7 +2133,7 @@ void t1sama() { //Entering manor st1sama(); } else if (!g_s._ipre) { //Is it your first time? g_ipers = 255; - showPeoplePresent(g_ipers); + g_vm->showPeoplePresent(g_ipers); g_caff = 77; afdes(0); g_vm->_screenSurface.drawBox(223, 47, 155, 91, 15); @@ -2137,7 +2149,7 @@ void t1sama() { //Entering manor showMouse(); g_s._currPlace = OWN_ROOM; affrep(); - t5(DINING_ROOM); + g_vm->resetPresenceInRooms(DINING_ROOM); if (!g_vm->_blo) minute = t11(OWN_ROOM); g_ipers = 0; @@ -2227,7 +2239,7 @@ L1: int rand = (getRandomNumber(0, 4)) - 2; g_vm->_speechManager.startSpeech(3, rand, 1); clearScreenType2(); - displayAloneText(); + g_vm->displayAloneText(); debloc(21); affrep(); } @@ -2458,9 +2470,9 @@ void changeGraphicalDevice(int newDevice) { tinke(); drawClock(); if (g_ipers != 0) - showPeoplePresent(g_ipers); + g_vm->showPeoplePresent(g_ipers); else - displayAloneText(); + g_vm->displayAloneText(); clearScreenType2(); clearScreenType3(); g_maff = 68; @@ -2626,7 +2638,7 @@ void MortevielleEngine::handleOpcode() { if ((((hour == 12) || (hour == 13) || (hour == 19)) && (g_s._currPlace != 10)) || ((hour > 0) && (hour < 6) && (g_s._currPlace != 0))) ++g_s._faithScore; - if (((g_s._currPlace < CRYPT) || (g_s._currPlace > MOUNTAIN)) && (g_s._currPlace != 23) + if (((g_s._currPlace < CRYPT) || (g_s._currPlace > MOUNTAIN)) && (g_s._currPlace != ROOM23) && (g_s._currPlace != 0) && (g_s._selectedObjectId != 152) && (!_loseGame)) { if ((g_s._faithScore > 99) && (hour > 8) && (hour < 16)) { g_crep = 1501; diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index e067534b67..bc416e0615 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -72,10 +72,6 @@ extern int convertCharacterIndexToBitIndex(int characterIndex); /* NIVEAU 12 */ extern void modobj(int m); extern void repon(int f, int m); -extern void t5(int roomId); -extern void showPeoplePresent(int per); -extern int selectCharacters(int min, int max); -extern void displayAloneText(); extern int chlm(); extern void drawClock(); /************* @@ -83,7 +79,6 @@ extern void drawClock(); *************/ extern void debloc(int roomId); extern void getKnockAnswer(); -extern int nouvp(int roomId); extern int convertBitIndexToCharacterIndex(int bitIndex); extern void ecfren(int &p, int &rand, int cf, int roomId); extern void becfren(int roomId); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index c62af9901a..e3a8986a75 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -231,6 +231,7 @@ public: int getPresenceStatsAttic(); int getPresenceStatsLanding(); int getPresenceStatsChapel(int &hour); + int getPresenceBitIndex(int roomId); void setPresenceGreenRoom(int roomId); void setPresencePurpleRoom(); void setPresenceBlueRoom(); @@ -254,6 +255,10 @@ public: void loadPlaces(); void initGame(); + void resetPresenceInRooms(int roomId); + void showPeoplePresent(int per); + int selectCharacters(int min, int max); + void displayAloneText(); }; extern MortevielleEngine *g_vm; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 0d3216d370..3e770b8655 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -454,7 +454,7 @@ void taffich() { showMouse(); if ((a < 27) && ((g_maff < 27) || (g_s._currPlace == LANDING)) && (g_msg[4] != OPCODE_ENTER)) { if ((a == 13) || (a == 14)) - displayAloneText(); + g_vm->displayAloneText(); else if (!g_vm->_blo) cx = t11(g_s._currPlace); g_mpers = 0; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 059e9b019e..150710ef6c 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -116,9 +116,9 @@ enum places { OWN_ROOM = 0, GREEN_ROOM = 1, PURPLE_ROOM = 2, TOILETS = 3, DARKBLUE_ROOM = 4, BLUE_ROOM = 5, RED_ROOM = 6, BATHROOM = 7, GREEN_ROOM2 = 8, ROOM9 = 9, DINING_ROOM = 10, BUREAU = 11, KITCHEN = 12, ATTIC = 13, CELLAR = 14, - LANDING = 15, CRYPT = 16, SECRET_PASSAGE = 17, MOUNTAIN = 19, - CHAPEL = 20, MANOR_FRONT = 21, MANOR_BACK = 22, WELL = 24, - DOOR = 25 + LANDING = 15, CRYPT = 16, SECRET_PASSAGE = 17, ROOM18 = 18, MOUNTAIN = 19, + CHAPEL = 20, MANOR_FRONT = 21, MANOR_BACK = 22, ROOM23 = 23, WELL = 24, + DOOR = 25, ROOM26 = 26 }; struct sav_chaine { -- cgit v1.2.3 From 836b9513e6b8e520b562b0018c7f0afa4064d1e1 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 14 Mar 2012 18:25:17 +0100 Subject: MORTEVIELLE: More renaming --- engines/mortevielle/actions.cpp | 332 ++++++++++++++++++------------------ engines/mortevielle/mor.cpp | 121 +++++++------ engines/mortevielle/mor.h | 8 +- engines/mortevielle/mortevielle.cpp | 2 +- engines/mortevielle/mortevielle.h | 16 +- engines/mortevielle/var_mor.cpp | 1 - engines/mortevielle/var_mor.h | 3 +- 7 files changed, 255 insertions(+), 228 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 390f7dadd2..8b4e5a751a 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -42,35 +42,40 @@ namespace Mortevielle { * @remarks Originally called 'taller' */ void MortevielleEngine::fctMove() { - if ((g_s._currPlace == ROOM26) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { + if ((g_s._currPlace == ROOM26) && (g_msg[4] == _menu._moveMenu[6])) { g_s._currPlace = LANDING; g_caff = g_s._currPlace; afdes(0); repon(2, g_s._currPlace); } - if ((g_s._currPlace == LANDING) && (g_msg[4] == g_vm->_menu._moveMenu[6])) { - if (!g_vm->_syn) - ecr3(g_vm->getEngineString(S_GO_TO)); + if ((g_s._currPlace == LANDING) && (g_msg[4] == _menu._moveMenu[6])) { + if (!_syn) + ecr3(getEngineString(S_GO_TO)); tfleche(); - if (g_vm->_keyPressedEsc) - g_vm->_okdes = false; - if ((g_vm->_anyone) || (g_vm->_keyPressedEsc)) + + if (_keyPressedEsc) + _okdes = false; + + if ((_anyone) || (_keyPressedEsc)) return; tcoord(1); + if (g_num == 0) return; + if (g_num == 1) { g_s._currPlace = OWN_ROOM; - g_vm->_menu.setDestinationMenuText(OWN_ROOM); + _menu.setDestinationMenuText(OWN_ROOM); } else if (g_num == 7) { g_s._currPlace = ATTIC; - g_vm->_menu.setDestinationMenuText(ATTIC); + _menu.setDestinationMenuText(ATTIC); } else if (g_num != 6) g_s._currPlace = ROOM26; - if ((g_num > 1) && (g_num < 6)) + else if ((g_num > 1) && (g_num < 6)) g_ment = g_num - 1; - if (g_num > 7) + else if (g_num > 7) g_ment = g_num - 3; + if (g_num != 6) affrep(); else @@ -78,17 +83,17 @@ void MortevielleEngine::fctMove() { return; } tsort(); - int cx = 0; - do { + int cx = 1; + + while (_menu._moveMenu[cx] != g_msg[4]) ++cx; - } while (g_vm->_menu._moveMenu[cx] != g_msg[4]); if (g_s._currPlace == MOUNTAIN) { if (cx == 1) - t1deva(); + gotoManorFront(); if (cx == 2) - t1neig(); - g_vm->_menu.setDestinationMenuText(g_s._currPlace); + checkManorDistance(); + _menu.setDestinationMenuText(g_s._currPlace); return; } @@ -96,18 +101,17 @@ void MortevielleEngine::fctMove() { if (cx == 1) t1deau(); if (cx == 2) - t1derr(); - g_vm->_menu.setDestinationMenuText(g_s._currPlace); + gotoManorBack(); + _menu.setDestinationMenuText(g_s._currPlace); return; } if ((g_s._currPlace == BUREAU) && (cx == 1)) cx = 6; - - if (g_s._currPlace == KITCHEN) { + else if (g_s._currPlace == KITCHEN) { if (cx == 2) cx = 6; - if (cx == 5) + else if (cx == 5) cx = 16; } @@ -127,9 +131,9 @@ void MortevielleEngine::fctMove() { } if ((g_s._currPlace == MANOR_BACK) && (cx > 14)) cx = 15; - if ((g_s._currPlace == WELL) && (cx != 17)) - if (cx > 13) - cx = 15; + else if ((g_s._currPlace == WELL) && (cx > 13) && (cx != 17)) + cx = 15; + if (cx == 1) g_s._currPlace = BUREAU; else if (cx == 2) @@ -140,20 +144,21 @@ void MortevielleEngine::fctMove() { g_s._currPlace = LANDING; else if (cx == 5) cx = 12; - if (cx == 6) + else if (cx == 6) cx = 11; + if (cx == 11) - t1sama(); + gotoDiningRoom(); else if (cx == 12) - t1deva(); + gotoManorFront(); else if (cx == 13) g_s._currPlace = CHAPEL; else if (cx == 14) g_s._currPlace = WELL; else if (cx == 15) - t1neig(); + checkManorDistance(); else if (cx == 16) - t1derr(); + gotoManorBack(); else if (cx == 17) { if ((g_s._wellObjectId != 120) && (g_s._wellObjectId != 140)) g_crep = 997; @@ -161,7 +166,7 @@ void MortevielleEngine::fctMove() { g_crep = 181; else if (g_s._faithScore > 80) { g_crep = 1505; - tperd(); + loseGame(); } else { g_s._currPlace = ROOM23; affrep(); @@ -170,7 +175,7 @@ void MortevielleEngine::fctMove() { if ((cx < 5) || (cx == 13) || (cx == 14)) affrep(); debloc(g_s._currPlace); - g_vm->_menu.setDestinationMenuText(g_s._currPlace); + _menu.setDestinationMenuText(g_s._currPlace); } /** @@ -184,7 +189,7 @@ void MortevielleEngine::fctTake() { if (g_crep != 139) { if (g_ipers > 0) g_s._faithScore += 3; - if (g_vm->_obpart) { + if (_obpart) { if (g_s._currPlace == PURPLE_ROOM) g_s._purpleRoomObjectId = 0; if (g_s._currPlace == ATTIC) { @@ -201,8 +206,8 @@ void MortevielleEngine::fctTake() { g_s._secretPassageObjectId = 0; if (g_s._currPlace == WELL) g_s._wellObjectId = 0; - g_vm->_menu.unsetSearchMenu(); - g_vm->_obpart = false; + _menu.unsetSearchMenu(); + _obpart = false; affrep(); } else { g_tabdon[acha + ((g_mchai - 1) * 10) + g_cs - 1] = 0; @@ -216,10 +221,10 @@ void MortevielleEngine::fctTake() { } return; } - if (!g_vm->_syn) - ecr3(g_vm->getEngineString(S_TAKE)); + if (!_syn) + ecr3(getEngineString(S_TAKE)); tfleche(); - if ((g_vm->_anyone) || (g_vm->_keyPressedEsc)) + if ((_anyone) || (_keyPressedEsc)) return; if (g_caff == 3) { tcoord(2); @@ -281,7 +286,7 @@ void MortevielleEngine::fctTake() { g_crep = 997; else if (g_s._currPlace == ROOM23) { g_crep = 1504; - tperd(); + loseGame(); } else g_crep = 120; } @@ -296,7 +301,7 @@ void MortevielleEngine::fctInventoryTake() { cx = 0; do { ++cx; - } while (g_vm->_menu._inventoryMenu[cx] != g_msg[4]); + } while (_menu._inventoryMenu[cx] != g_msg[4]); cz = 0; cy = 0; do { @@ -317,10 +322,10 @@ void MortevielleEngine::fctInventoryTake() { * @remarks Originally called 'tsoulever' */ void MortevielleEngine::fctLift() { - if (!g_vm->_syn) - ecr3(g_vm->getEngineString(S_LIFT)); + if (!_syn) + ecr3(getEngineString(S_LIFT)); tfleche(); - if ((g_vm->_anyone) || (g_vm->_keyPressedEsc)) + if ((_anyone) || (_keyPressedEsc)) return; tcoord(3); if (g_num == 0) { @@ -354,10 +359,10 @@ void MortevielleEngine::fctRead() { if (g_caff > 99) st4(g_caff); else { - if (!g_vm->_syn) - ecr3(g_vm->getEngineString(S_READ)); + if (!_syn) + ecr3(getEngineString(S_READ)); tfleche(); - if (!(g_vm->_anyone) && !(g_vm->_keyPressedEsc)) { + if (!(_anyone) && !(_keyPressedEsc)) { tcoord(4); if (g_num != 0) g_crep = 107; @@ -387,10 +392,10 @@ void MortevielleEngine::fctLook() { g_crep = 103; return; } - if (!g_vm->_syn) - ecr3(g_vm->getEngineString(S_LOOK)); + if (!_syn) + ecr3(getEngineString(S_LOOK)); tfleche(); - if ((g_vm->_anyone) || (g_vm->_keyPressedEsc)) + if ((_anyone) || (_keyPressedEsc)) return; tcoord(5); if (g_num == 0) { @@ -477,16 +482,16 @@ void MortevielleEngine::fctSearch() { return; } - if (!g_vm->_syn) - ecr3(g_vm->getEngineString(S_SEARCH)); + if (!_syn) + ecr3(getEngineString(S_SEARCH)); tfleche(); - if (g_vm->_anyone || g_vm->_keyPressedEsc) + if (_anyone || _keyPressedEsc) return; if (g_s._currPlace == ROOM23) { g_crep = 1504; - tperd(); + loseGame(); return; } @@ -508,8 +513,8 @@ void MortevielleEngine::fctSearch() { if (g_mchai != 0) { g_cs = 0; g_is = 0; - g_vm->_heroSearching = true; - g_vm->_menu.setSearchMenu(); + _heroSearching = true; + _menu.setSearchMenu(); tsuiv(); } else g_crep = 997; @@ -574,13 +579,13 @@ void MortevielleEngine::fctSelfSearch() { * @remarks Originally called 'touvrir' */ void MortevielleEngine::fctOpen() { - if (!g_vm->_syn) - ecr3(g_vm->getEngineString(S_OPEN)); + if (!_syn) + ecr3(getEngineString(S_OPEN)); if (g_caff == ROOM26) { if (g_ment != 0) { g_msg[4] = OPCODE_ENTER; - g_vm->_syn = true; + _syn = true; } else g_crep = 997; return; @@ -592,7 +597,7 @@ void MortevielleEngine::fctOpen() { } tfleche(); - if ((g_vm->_anyone) || (g_vm->_keyPressedEsc)) + if ((_anyone) || (_keyPressedEsc)) return; tcoord(7); @@ -615,7 +620,7 @@ void MortevielleEngine::fctOpen() { || ((g_s._currPlace > RED_ROOM) && (g_s._currPlace < DINING_ROOM)) || (g_s._currPlace == OWN_ROOM) || (g_s._currPlace == PURPLE_ROOM) || (g_s._currPlace == BLUE_ROOM)) { if (getRandomNumber(1, 4) == 3) - g_vm->_speechManager.startSpeech(7, 9, 1); + _speechManager.startSpeech(7, 9, 1); } g_touv[tmpPlace] = chr(g_num); aniof(1, g_num); @@ -641,14 +646,14 @@ void MortevielleEngine::fctPlace() { return; } - if (!g_vm->_syn) - ecr3(g_vm->getEngineString(S_PUT)); + if (!_syn) + ecr3(getEngineString(S_PUT)); tfleche(); - if (g_vm->_keyPressedEsc) + if (_keyPressedEsc) g_crep = 998; - if ((g_vm->_anyone) || (g_vm->_keyPressedEsc)) + if ((_anyone) || (_keyPressedEsc)) return; tcoord(8); @@ -683,10 +688,10 @@ void MortevielleEngine::fctPlace() { aniof(1, 1); repon(2, 165); maivid(); - g_vm->_speechManager.startSpeech(6, -9, 1); + _speechManager.startSpeech(6, -9, 1); // Do you want to enter the hidden passage? - int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); + int answer = Alert::show(getEngineString(S_YES_NO), 1); if (answer == 1) { Common::String alertTxt = deline(582); Alert::show(alertTxt, 1); @@ -705,12 +710,12 @@ void MortevielleEngine::fctPlace() { else displayAloneText(); - g_vm->_menu.displayMenu(); + _menu.displayMenu(); if (enterPassageFl) { g_s._currPlace = SECRET_PASSAGE; - g_vm->_menu.setDestinationMenuText(SECRET_PASSAGE); + _menu.setDestinationMenuText(SECRET_PASSAGE); } else { - g_vm->_menu.setDestinationMenuText(g_s._currPlace); + _menu.setDestinationMenuText(g_s._currPlace); writepal(14); dessin(0); aniof(1, 2); @@ -745,7 +750,7 @@ void MortevielleEngine::fctPlace() { aniof(1, 1); } else { g_crep = 1512; - tperd(); + loseGame(); } } @@ -774,28 +779,28 @@ void MortevielleEngine::fctTurn() { g_crep = 149; return; } - if (!g_vm->_syn) - ecr3(g_vm->getEngineString(S_TURN)); + if (!_syn) + ecr3(getEngineString(S_TURN)); tfleche(); - if ((g_vm->_anyone) || (g_vm->_keyPressedEsc)) + if ((_anyone) || (_keyPressedEsc)) return; tcoord(9); if (g_num != 0) { g_crep = 997; if ((g_s._currPlace == ATTIC) && (g_s._atticRodHoleObjectId == 159) && (g_s._atticBallHoleObjectId == 141)) { repon(2, 167); - g_vm->_speechManager.startSpeech(7, 9, 1); - int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); + _speechManager.startSpeech(7, 9, 1); + int answer = Alert::show(getEngineString(S_YES_NO), 1); if (answer == 1) - g_vm->_endGame = true; + _endGame = true; else g_crep = 168; } if ((g_s._currPlace == SECRET_PASSAGE) && (g_s._secretPassageObjectId == 143)) { repon(2, 175); clearScreenType3(); - g_vm->_speechManager.startSpeech(6, -9, 1); - int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); + _speechManager.startSpeech(6, -9, 1); + int answer = Alert::show(getEngineString(S_YES_NO), 1); if (answer == 1) { g_s._currPlace = CRYPT; affrep(); @@ -810,15 +815,15 @@ void MortevielleEngine::fctTurn() { * @remarks Originally called 'tcacher' */ void MortevielleEngine::fctSelfHide() { - if (!g_vm->_syn) - ecr3(g_vm->getEngineString(S_HIDE_SELF)); + if (!_syn) + ecr3(getEngineString(S_HIDE_SELF)); tfleche(); - if (!(g_vm->_anyone) && !(g_vm->_keyPressedEsc)) { + if (!(_anyone) && !(_keyPressedEsc)) { tcoord(10); if (g_num == 0) - g_vm->_hiddenHero = false; + _hiddenHero = false; else { - g_vm->_hiddenHero = true; + _hiddenHero = true; g_crep = 999; } } @@ -832,10 +837,10 @@ void MortevielleEngine::fctAttach() { if (g_s._selectedObjectId == 0) g_crep = 186; else { - if (!g_vm->_syn) - ecr3(g_vm->getEngineString(S_TIE)); + if (!_syn) + ecr3(getEngineString(S_TIE)); tfleche(); - if (!(g_vm->_anyone) && !(g_vm->_keyPressedEsc)) { + if (!(_anyone) && !(_keyPressedEsc)) { tcoord(8); g_crep = 997; if ((g_num != 0) && (g_s._currPlace == WELL)) { @@ -856,14 +861,14 @@ void MortevielleEngine::fctAttach() { * @remarks Originally called 'tfermer' */ void MortevielleEngine::fctClose() { - if (!g_vm->_syn) - ecr3(g_vm->getEngineString(S_CLOSE)); + if (!_syn) + ecr3(getEngineString(S_CLOSE)); if (g_caff < ROOM26) { tfleche(); - if (g_vm->_keyPressedEsc) + if (_keyPressedEsc) g_crep = 998; - if ((g_vm->_anyone) || (g_vm->_keyPressedEsc)) + if ((_anyone) || (_keyPressedEsc)) return; tcoord(7); if (g_num != 0) { @@ -896,19 +901,17 @@ void MortevielleEngine::fctClose() { * @remarks Originally called 'tfrapper' */ void MortevielleEngine::fctKnock() { - warning("Knock - _currPlace %d", g_s._currPlace); - - if (!g_vm->_syn) - ecr3(g_vm->getEngineString(S_HIT)); + if (!_syn) + ecr3(getEngineString(S_HIT)); if (g_s._currPlace == LANDING) { - Alert::show(g_vm->getEngineString(S_BEFORE_USE_DEP_MENU), 1); + Alert::show(getEngineString(S_BEFORE_USE_DEP_MENU), 1); return; } if (g_s._currPlace < DOOR) { tfleche(); - if (!(g_vm->_anyone) && !(g_vm->_keyPressedEsc)) { + if (!(_anyone) && !(_keyPressedEsc)) { if ((g_s._currPlace < MOUNTAIN) && (g_s._currPlace != LANDING)) g_crep = 133; else @@ -920,7 +923,7 @@ void MortevielleEngine::fctKnock() { if (g_s._currPlace == ROOM26) { int rand = (getRandomNumber(0, 8)) - 4; - g_vm->_speechManager.startSpeech(11, rand, 1); + _speechManager.startSpeech(11, rand, 1); int p; ecfren(p, rand, g_s._faithScore, g_ment); int l = g_ment; @@ -946,8 +949,8 @@ void MortevielleEngine::fctKnock() { * @remarks Originally called 'tposer' */ void MortevielleEngine::fctSelfPut() { - if (!g_vm->_syn) - ecr3(g_vm->getEngineString(S_POSE)); + if (!_syn) + ecr3(getEngineString(S_POSE)); if (g_s._selectedObjectId == 0) g_crep = 186; else { @@ -959,7 +962,7 @@ void MortevielleEngine::fctSelfPut() { return; } tfleche(); - if ((g_vm->_anyone) || (g_vm->_keyPressedEsc)) + if ((_anyone) || (_keyPressedEsc)) return; tcoord(7); g_crep = 124; @@ -1085,7 +1088,7 @@ void MortevielleEngine::fctEat() { g_s._currPlace = DINING_ROOM; g_caff = 10; debloc(g_s._currPlace); - g_vm->_menu.setDestinationMenuText(g_s._currPlace); + _menu.setDestinationMenuText(g_s._currPlace); int j, h, m; updateHour(j, h, m); @@ -1120,8 +1123,8 @@ void MortevielleEngine::fctEat() { */ void MortevielleEngine::fctEnter() { if ((g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK)) { - t1sama(); - g_vm->_menu.setDestinationMenuText(g_s._currPlace); + gotoDiningRoom(); + _menu.setDestinationMenuText(g_s._currPlace); } else if (g_s._currPlace == LANDING) aldepl(); else if (g_ment == 0) @@ -1131,29 +1134,29 @@ void MortevielleEngine::fctEnter() { g_s._teauto[8] = '*'; } else { int z = 0; - if (!g_vm->_blo) + if (!_blo) z = t11(g_ment); if (z != 0) { if ((g_ment == 3) || (g_ment == 7)) g_crep = 179; else { g_x = (getRandomNumber(0, 10)) - 5; - g_vm->_speechManager.startSpeech(7, g_x, 1); + _speechManager.startSpeech(7, g_x, 1); aniof(1, 1); g_x = convertBitIndexToCharacterIndex(z); ++g_s._faithScore; g_s._currPlace = LANDING; g_msg[3] = MENU_DISCUSS; - g_msg[4] = g_vm->_menu._discussMenu[g_x]; - g_vm->_syn = true; + g_msg[4] = _menu._discussMenu[g_x]; + _syn = true; if (g_ment == 9) { - g_vm->_col = true; + _col = true; g_caff = 70; afdes(0); repon(2, g_caff); } else - g_vm->_col = false; + _col = false; debloc(g_ment); g_ment = 0; } @@ -1165,7 +1168,7 @@ void MortevielleEngine::fctEnter() { g_s._currPlace = g_ment; affrep(); debloc(g_s._currPlace); - g_vm->_menu.setDestinationMenuText(g_s._currPlace); + _menu.setDestinationMenuText(g_s._currPlace); g_ment = 0; g_mpers = 0; g_ipers = 0; @@ -1190,12 +1193,12 @@ void MortevielleEngine::fctSleep() { affrep(); afdes(0); debloc(g_s._currPlace); - g_vm->_menu.setDestinationMenuText(g_s._currPlace); + _menu.setDestinationMenuText(g_s._currPlace); } clearScreenType3(); clearScreenType2(); ecrf2(); - ecr2(g_vm->getEngineString(S_WANT_TO_WAKE_UP)); + ecr2(getEngineString(S_WANT_TO_WAKE_UP)); updateHour(j, h, m); int answer; @@ -1213,8 +1216,8 @@ void MortevielleEngine::fctSleep() { if (h > 23) h = 0; tinke(); - answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); - g_vm->_anyone = false; + answer = Alert::show(getEngineString(S_YES_NO), 1); + _anyone = false; } while (answer != 1); g_crep = 998; g_num = 0; @@ -1225,12 +1228,12 @@ void MortevielleEngine::fctSleep() { * @remarks Originally called 'tdefoncer' */ void MortevielleEngine::fctForce() { - if (!g_vm->_syn) - ecr3(g_vm->getEngineString(S_SMASH)); + if (!_syn) + ecr3(getEngineString(S_SMASH)); if (g_caff < 25) tfleche(); - if ((!g_vm->_anyone) && (!g_vm->_keyPressedEsc)) { + if ((!_anyone) && (!_keyPressedEsc)) { if (g_s._currPlace != ROOM26) g_crep = 997; else { @@ -1250,29 +1253,30 @@ void MortevielleEngine::fctLeave() { if ((g_s._currPlace == MOUNTAIN) || (g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK) || (g_s._currPlace == WELL)) g_crep = 997; else { - int lx = 0; + int nextPlace = OWN_ROOM; if ((g_s._currPlace < CRYPT) || (g_s._currPlace == ROOM26)) - lx = 10; - if ((g_s._currPlace == DINING_ROOM) || (g_s._currPlace == CHAPEL)) - lx = 21; - if ((g_s._currPlace < DINING_ROOM) || (g_s._currPlace == ATTIC)) - lx = 15; - if (g_s._currPlace == CRYPT) { - lx = 17; + nextPlace = DINING_ROOM; + else if ((g_s._currPlace == DINING_ROOM) || (g_s._currPlace == CHAPEL)) + nextPlace = MANOR_FRONT; + else if ((g_s._currPlace < DINING_ROOM) || (g_s._currPlace == ATTIC)) + nextPlace = LANDING; + else if (g_s._currPlace == CRYPT) { + nextPlace = SECRET_PASSAGE; g_crep = 176; - } - if (g_s._currPlace == SECRET_PASSAGE) - t23coul(lx); - if (g_s._currPlace == ROOM23) - lx = 24; + } else if (g_s._currPlace == SECRET_PASSAGE) + nextPlace = t23coul(); + else if (g_s._currPlace == ROOM23) + nextPlace = WELL; + if (g_crep != 997) - g_s._currPlace = lx; - g_caff = lx; + g_s._currPlace = nextPlace; + + g_caff = nextPlace; if (g_crep == 0) - g_crep = lx; - debloc(lx); - g_vm->_menu.setDestinationMenuText(lx); + g_crep = nextPlace; + debloc(nextPlace); + _menu.setDestinationMenuText(nextPlace); } } @@ -1288,24 +1292,24 @@ void MortevielleEngine::fctWait() { do { ++g_jh; tinke(); - if (!g_vm->_blo) + if (!_blo) t11(g_s._currPlace); if ((g_ipers != 0) && (g_mpers == 0)) { g_crep = 998; if ((g_s._currPlace == ATTIC) || (g_s._currPlace == CELLAR)) cavegre(); if ((g_s._currPlace > OWN_ROOM) && (g_s._currPlace < DINING_ROOM)) - g_vm->_anyone = true; + _anyone = true; g_mpers = g_ipers; - if (!g_vm->_anyone) + if (!_anyone) tinke(); return; } repon(2, 102); - answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); + answer = Alert::show(getEngineString(S_YES_NO), 1); } while (answer != 2); g_crep = 998; - if (!g_vm->_anyone) + if (!_anyone) tinke(); } @@ -1314,11 +1318,11 @@ void MortevielleEngine::fctWait() { * @remarks Originally called 'tsonder' */ void MortevielleEngine::fctSound() { - if (!g_vm->_syn) - ecr3(g_vm->getEngineString(S_PROBE2)); + if (!_syn) + ecr3(getEngineString(S_PROBE2)); if (g_caff < 27) { tfleche(); - if (!(g_vm->_anyone) && (!g_vm->_keyPressedEsc)) + if (!(_anyone) && (!_keyPressedEsc)) g_crep = 145; g_num = 0; } @@ -1336,13 +1340,13 @@ void MortevielleEngine::fctDiscuss() { bool f; endSearch(); - if (g_vm->_col) + if (_col) suj = 128; else { cx = 0; do { ++cx; - } while (g_vm->_menu._discussMenu[cx] != g_msg[4]); + } while (_menu._discussMenu[cx] != g_msg[4]); g_caff = 69 + cx; afdes(0); repon(2, g_caff); @@ -1372,7 +1376,7 @@ void MortevielleEngine::fctDiscuss() { lig = 0; do { ++icm; - g_vm->_screenSurface.putxy(co, lig); + _screenSurface.putxy(co, lig); if (g_s._teauto[icm] == '*') { if (te[icm]) writetp(lib[icm], 1); @@ -1386,7 +1390,7 @@ void MortevielleEngine::fctDiscuss() { } else lig = lig + 8; } while (icm != 42); - g_vm->_screenSurface.putxy(320, 176); + _screenSurface.putxy(320, 176); writetp(lib[46], 0); tou = '\0'; do { @@ -1407,7 +1411,7 @@ void MortevielleEngine::fctDiscuss() { co = 320; else co = 0; - g_vm->_screenSurface.putxy(co, lig); + _screenSurface.putxy(co, lig); if (te[choi]) writetp(lib[choi], 0); else @@ -1426,7 +1430,7 @@ void MortevielleEngine::fctDiscuss() { co = 320; else co = 0; - g_vm->_screenSurface.putxy(co, lig); + _screenSurface.putxy(co, lig); if (te[choi]) writetp(lib[choi], 0); else @@ -1439,7 +1443,7 @@ void MortevielleEngine::fctDiscuss() { co = 320; else co = 0; - g_vm->_screenSurface.putxy(co, lig); + _screenSurface.putxy(co, lig); if (te[ix]) writetp(lib[ix], 0); else @@ -1450,12 +1454,12 @@ void MortevielleEngine::fctDiscuss() { choi = 0; } } - } while (!((tou == '\15') || (((c != 0) || g_vm->getMouseClick()) && (choi != 0)))); - g_vm->setMouseClick(false); + } while (!((tou == '\15') || (((c != 0) || getMouseClick()) && (choi != 0)))); + setMouseClick(false); if (choi != 46) { int ix = choi - 1; - if (g_vm->_col) { - g_vm->_col = false; + if (_col) { + _col = false; g_s._currPlace = 15; if (g_iouv > 0) max = 8; @@ -1498,14 +1502,14 @@ void MortevielleEngine::fctDiscuss() { showMouse(); } } while ((choi != 46) && (suj != 138)); - if (g_vm->_col) { + if (_col) { g_s._faithScore += (3 * (g_s._faithScore / 10)); hideMouse(); hirs(); premtet(); sparl(0, 138); showMouse(); - g_vm->_col = false; + _col = false; g_s._currPlace = LANDING; } g_ctrm = 0; @@ -1518,7 +1522,7 @@ void MortevielleEngine::fctDiscuss() { drawClock(); affrep(); /* chech;*/ - g_vm->_menu.setDestinationMenuText(g_s._currPlace); + _menu.setDestinationMenuText(g_s._currPlace); clearScreenType3(); } @@ -1529,10 +1533,10 @@ void MortevielleEngine::fctDiscuss() { void MortevielleEngine::fctSmell() { g_crep = 119; if (g_caff < ROOM26) { - if (!g_vm->_syn) - ecr3(g_vm->getEngineString(S_SMELL)); + if (!_syn) + ecr3(getEngineString(S_SMELL)); tfleche(); - if (!(g_vm->_anyone) && !(g_vm->_keyPressedEsc)) + if (!(_anyone) && !(_keyPressedEsc)) if (g_caff == 16) g_crep = 153; } else if (g_caff == 123) @@ -1547,8 +1551,8 @@ void MortevielleEngine::fctSmell() { void MortevielleEngine::fctScratch() { g_crep = 155; if (g_caff < 27) { - if (!g_vm->_syn) - ecr3(g_vm->getEngineString(S_SCRATCH)); + if (!_syn) + ecr3(getEngineString(S_SCRATCH)); tfleche(); } g_num = 0; @@ -1596,7 +1600,7 @@ void MortevielleEngine::endGame() { * You lost! * @remarks Originally called 'tencore' */ -void MortevielleEngine::loseGame() { +void MortevielleEngine::askRestart() { clearScreenType2(); musique(0); tkey1(false); @@ -1611,7 +1615,7 @@ void MortevielleEngine::loseGame() { g_day = 0; repon(2, 180); - int answer = Alert::show(g_vm->getEngineString(S_YES_NO), 1); + int answer = Alert::show(getEngineString(S_YES_NO), 1); _quitGame = (answer != 1); } diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 4b6a7b317d..9510360abb 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -1946,26 +1946,28 @@ void affrep() { g_crep = g_s._currPlace; } -/* NIVEAU 6 */ - -void tperd() { +/** + * Engine function - You lose! + * @remarks Originally called 'tperd' + */ +void MortevielleEngine::loseGame() { initouv(); g_ment = 0; g_iouv = 0; g_mchai = 0; - g_vm->_menu.unsetSearchMenu(); - if (!g_vm->_blo) + _menu.unsetSearchMenu(); + if (!_blo) t11(MANOR_FRONT); - g_vm->_loseGame = true; + _loseGame = true; clearScreenType1(); - g_vm->_screenSurface.drawBox(60, 35, 400, 50, 15); + _screenSurface.drawBox(60, 35, 400, 50, 15); repon(9, g_crep); clearScreenType2(); clearScreenType3(); - g_vm->_col = false; - g_vm->_syn = false; - g_vm->_okdes = false; + _col = false; + _syn = false; + _okdes = false; } void tsort() { @@ -2015,15 +2017,19 @@ void st4(int ob) { } } -void cherjer(int ob, bool &d) { - int cx; +/** + * Engine function - Check inventory for a given object + * @remarks Originally called 'cherjer' + */ +bool MortevielleEngine::checkInventory(int objectId) { + bool retVal = false; + for (int i = 1; i <= 6; ++i) + retVal = (retVal || (ord(g_s._sjer[i]) == objectId)); - d = false; - for (cx = 1; cx <= 6; ++cx) - d = (d || (ord(g_s._sjer[cx]) == ob)); + if (g_s._selectedObjectId == objectId) + retVal = true; - if (g_s._selectedObjectId == ob) - d = true; + return retVal; } void st1sama() { @@ -2036,19 +2042,22 @@ void modinv() { Common::String nomp; int cy = 0; - for (int cx = 1; cx <= 6; ++cx) - if (g_s._sjer[cx] != chr(0)) { + for (int i = 1; i <= 6; ++i) { + if (g_s._sjer[i] != chr(0)) { ++cy; - r = (ord(g_s._sjer[cx]) + 400); + r = (ord(g_s._sjer[i]) + 400); nomp = deline(r - 501 + kInventoryStringIndex); g_vm->_menu.setText(g_vm->_menu._inventoryMenu[cy], nomp); - g_vm->_menu.enableMenuItem(g_vm->_menu._inventoryMenu[cx]); + g_vm->_menu.enableMenuItem(g_vm->_menu._inventoryMenu[i]); } - if (cy < 6) - for (int cx = cy + 1; cx <= 6; ++cx) { - g_vm->_menu.setText(g_vm->_menu._inventoryMenu[cx], " "); - g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[cx]); + } + + if (cy < 6) { + for (int i = cy + 1; i <= 6; ++i) { + g_vm->_menu.setText(g_vm->_menu._inventoryMenu[i], " "); + g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[i]); } + } } void sparl(float adr, float rep) { @@ -2119,16 +2128,18 @@ void ajjer(int ob) { g_crep = 139; } -void t1sama() { //Entering manor +/** + * Engine function - Go to Dining room + * @remarks Originally called 't1sama' + */ +void MortevielleEngine::gotoDiningRoom() { int day, hour, minute; updateHour(day, hour, minute); if ((hour < 5) && (g_s._currPlace > ROOM18)) { - bool d; - cherjer(137, d); - if (!d) { //You don't have the keys, and it's late + if (!checkInventory(137)) { //You don't have the keys, and it's late g_crep = 1511; - tperd(); + loseGame(); } else st1sama(); } else if (!g_s._ipre) { //Is it your first time? @@ -2164,32 +2175,44 @@ void t1vier() { affrep(); } -void t1neig() { - ++g_inei; - if (g_inei > 2) { +/** + * Engine function - Check Manor distance (in the mountains) + * @remarks Originally called 't1neig' + */ +void MortevielleEngine::checkManorDistance() { + ++_manorDistance; + if (_manorDistance > 2) { g_crep = 1506; - tperd(); + loseGame(); } else { - g_vm->_okdes = true; + _okdes = true; g_s._currPlace = MOUNTAIN; affrep(); } } -void t1deva() { - g_inei = 0; +/** + * Engine function - Go to Manor front + * @remarks Originally called 't1deva' + */ +void MortevielleEngine::gotoManorFront() { + _manorDistance = 0; g_s._currPlace = MANOR_FRONT; affrep(); } -void t1derr() { +/** + * Engine function - Go to Manor back + * @remarks Originally called 't1derr' + */ +void MortevielleEngine::gotoManorBack() { g_s._currPlace = MANOR_BACK; affrep(); } void t1deau() { g_crep = 1503; - tperd(); + g_vm->loseGame(); } void tctrm() { @@ -2425,15 +2448,13 @@ void rechai(int &ch) { ch = g_tabdon[achai + (tmpPlace * 7) + g_num - 1]; } -void t23coul(int &l) { - bool d; - - cherjer(143, d); - l = 14; - if (!d) { +int t23coul() { + if (!g_vm->checkInventory(143)) { g_crep = 1512; - tperd(); + g_vm->loseGame(); } + + return CELLAR; } void maivid() { @@ -2508,7 +2529,7 @@ void MortevielleEngine::gameLoaded() { _syn = true; _heroSearching = true; g_mchai = 0; - g_inei = 0; + _manorDistance = 0; initouv(); g_iouv = 0; g_dobj = 0; @@ -2642,15 +2663,15 @@ void MortevielleEngine::handleOpcode() { && (g_s._currPlace != 0) && (g_s._selectedObjectId != 152) && (!_loseGame)) { if ((g_s._faithScore > 99) && (hour > 8) && (hour < 16)) { g_crep = 1501; - tperd(); + loseGame(); } if ((g_s._faithScore > 99) && (hour > 0) && (hour < 9)) { g_crep = 1508; - tperd(); + loseGame(); } if ((day > 1) && (hour > 8) && (!_loseGame)) { g_crep = 1502; - tperd(); + loseGame(); } } mennor(); diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index bc416e0615..5e76042cf0 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -109,10 +109,8 @@ extern void tkey1(bool d); extern void tlu(int af, int ob); extern void affrep(); /* NIVEAU 6 */ -extern void tperd(); extern void tsort(); extern void st4(int ob); -extern void cherjer(int ob, bool &d); extern void st1sama(); extern void modinv(); extern void sparl(float adr, float rep); @@ -122,11 +120,7 @@ extern void premtet(); /* NIVEAU 5 */ extern void ajchai(); extern void ajjer(int ob); -extern void t1sama(); extern void t1vier(); -extern void t1neig(); -extern void t1deva(); -extern void t1derr(); extern void t1deau(); extern void tctrm(); extern void quelquun(); @@ -137,7 +131,7 @@ extern void st7(int ob); extern void treg(int ob); extern void avpoing(int &ob); extern void rechai(int &ch); -extern void t23coul(int &l); +extern int t23coul(); extern void maivid(); extern void st13(int ob); extern void aldepl(); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 508e90fff7..6e7726bb35 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -566,7 +566,7 @@ void MortevielleEngine::playGame() { if (_endGame) endGame(); else if (_loseGame) - loseGame(); + askRestart(); } /** diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index e3a8986a75..f868f01fbf 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -143,6 +143,8 @@ public: int _currGraphicalDevice; int _newGraphicalDevice; int _place; + int _manorDistance; + int _c_zzz; int ptr_word; @@ -162,7 +164,8 @@ public: bool _endGame; // End game flag. Originally called 'solu' bool _loseGame; // Lose game flag. Originally called 'perdu' bool _txxFileFl; // Flag used to determine if texts are from the original files or from a DAT file -public: + + MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc); ~MortevielleEngine(); virtual bool hasFeature(EngineFeature f) const; @@ -186,10 +189,9 @@ public: void handleOpcode(); void endGame(); - void loseGame(); + void askRestart(); void gameLoaded(); -/* NIVEAU 4 */ void fctMove(); void fctTake(); void fctInventoryTake(); @@ -259,6 +261,14 @@ public: void showPeoplePresent(int per); int selectCharacters(int min, int max); void displayAloneText(); + + void checkManorDistance(); + void gotoManorFront(); + void gotoManorBack(); + void gotoDiningRoom(); + bool checkInventory(int objectId); + void loseGame(); + }; extern MortevielleEngine *g_vm; diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index f548ed69aa..6ed5ef8a9c 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -102,7 +102,6 @@ int g_x, g_crep, g_ades, g_iouv, - g_inei, g_ctrm, g_dobj, g_msg3, diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 150710ef6c..ae114efcdd 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -118,7 +118,7 @@ enum places { DINING_ROOM = 10, BUREAU = 11, KITCHEN = 12, ATTIC = 13, CELLAR = 14, LANDING = 15, CRYPT = 16, SECRET_PASSAGE = 17, ROOM18 = 18, MOUNTAIN = 19, CHAPEL = 20, MANOR_FRONT = 21, MANOR_BACK = 22, ROOM23 = 23, WELL = 24, - DOOR = 25, ROOM26 = 26 + DOOR = 25, ROOM26 = 26, ROOM27 = 27 }; struct sav_chaine { @@ -208,7 +208,6 @@ extern int g_x, g_crep, g_ades, g_iouv, - g_inei, g_ctrm, g_dobj, g_msg3, -- cgit v1.2.3 From 09195469171fe713964af8478c1cc4e5e28dc7cb Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 14 Mar 2012 23:06:23 +0100 Subject: MORTEVIELLE: Some more renaming --- engines/mortevielle/actions.cpp | 167 +++++++++++++++++++------------------- engines/mortevielle/mor.cpp | 80 +++++++++--------- engines/mortevielle/mor.h | 1 - engines/mortevielle/mortevielle.h | 5 +- engines/mortevielle/outtext.cpp | 2 +- engines/mortevielle/saveload.cpp | 2 +- engines/mortevielle/var_mor.cpp | 1 - engines/mortevielle/var_mor.h | 14 ++-- 8 files changed, 138 insertions(+), 134 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 8b4e5a751a..4f16218e9e 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -58,6 +58,7 @@ void MortevielleEngine::fctMove() { if ((_anyone) || (_keyPressedEsc)) return; + tcoord(1); if (g_num == 0) @@ -83,83 +84,78 @@ void MortevielleEngine::fctMove() { return; } tsort(); - int cx = 1; + int menuChoice = 1; - while (_menu._moveMenu[cx] != g_msg[4]) - ++cx; + while (_menu._moveMenu[menuChoice] != g_msg[4]) + ++menuChoice; if (g_s._currPlace == MOUNTAIN) { - if (cx == 1) + if (menuChoice == 1) gotoManorFront(); - if (cx == 2) + else if (menuChoice == 2) checkManorDistance(); _menu.setDestinationMenuText(g_s._currPlace); return; - } - - if (g_s._currPlace == ROOM23) { - if (cx == 1) - t1deau(); - if (cx == 2) + } else if (g_s._currPlace == INSIDE_WELL) { + if (menuChoice == 1) + floodedInWell(); + else if (menuChoice == 2) gotoManorBack(); _menu.setDestinationMenuText(g_s._currPlace); return; - } - - if ((g_s._currPlace == BUREAU) && (cx == 1)) - cx = 6; + } else if ((g_s._currPlace == BUREAU) && (menuChoice == 1)) + menuChoice = 6; else if (g_s._currPlace == KITCHEN) { - if (cx == 2) - cx = 6; - else if (cx == 5) - cx = 16; - } - - if ((g_s._currPlace == CELLAR) && (cx == 3)) - cx = 6; - if (((g_s._currPlace == LANDING) || (g_s._currPlace == ROOM26)) && (cx == 4)) - cx = 6; + if (menuChoice == 2) + menuChoice = 6; + else if (menuChoice == 5) + menuChoice = 16; + } else if ((g_s._currPlace == CELLAR) && (menuChoice == 3)) + menuChoice = 6; + else if (((g_s._currPlace == LANDING) || (g_s._currPlace == ROOM26)) && (menuChoice == 4)) + menuChoice = 6; + if ((g_s._currPlace > MOUNTAIN) && (g_s._currPlace != ROOM26)) - cx += 10; - if ((g_s._currPlace == CHAPEL) && (cx == 13)) - cx = 16; - if (g_s._currPlace == MANOR_FRONT) { - if (cx == 12) - cx = 16; - else if (cx > 13) - cx = 15; - } - if ((g_s._currPlace == MANOR_BACK) && (cx > 14)) - cx = 15; - else if ((g_s._currPlace == WELL) && (cx > 13) && (cx != 17)) - cx = 15; - - if (cx == 1) + menuChoice += 10; + + if ((g_s._currPlace == CHAPEL) && (menuChoice == 13)) + menuChoice = 16; + else if (g_s._currPlace == MANOR_FRONT) { + if (menuChoice == 12) + menuChoice = 16; + else if (menuChoice > 13) + menuChoice = 15; + } else if ((g_s._currPlace == MANOR_BACK) && (menuChoice > 14)) + menuChoice = 15; + else if ((g_s._currPlace == WELL) && (menuChoice > 13) && (menuChoice != 17)) + menuChoice = 15; + + if (menuChoice == 1) g_s._currPlace = BUREAU; - else if (cx == 2) + else if (menuChoice == 2) g_s._currPlace = KITCHEN; - else if (cx == 3) + else if (menuChoice == 3) g_s._currPlace = CELLAR; - else if (cx == 4) + else if (menuChoice == 4) g_s._currPlace = LANDING; - else if (cx == 5) - cx = 12; - else if (cx == 6) - cx = 11; + else if (menuChoice == 5) + menuChoice = 12; + else if (menuChoice == 6) + menuChoice = 11; - if (cx == 11) + if (menuChoice == 11) gotoDiningRoom(); - else if (cx == 12) + else if (menuChoice == 12) gotoManorFront(); - else if (cx == 13) + else if (menuChoice == 13) g_s._currPlace = CHAPEL; - else if (cx == 14) + else if (menuChoice == 14) g_s._currPlace = WELL; - else if (cx == 15) + else if (menuChoice == 15) checkManorDistance(); - else if (cx == 16) + else if (menuChoice == 16) gotoManorBack(); - else if (cx == 17) { + else if (menuChoice == 17) { if ((g_s._wellObjectId != 120) && (g_s._wellObjectId != 140)) g_crep = 997; else if (g_s._wellObjectId == 120) @@ -168,11 +164,11 @@ void MortevielleEngine::fctMove() { g_crep = 1505; loseGame(); } else { - g_s._currPlace = ROOM23; + g_s._currPlace = INSIDE_WELL; affrep(); } } - if ((cx < 5) || (cx == 13) || (cx == 14)) + if ((menuChoice < 5) || (menuChoice == 13) || (menuChoice == 14)) affrep(); debloc(g_s._currPlace); _menu.setDestinationMenuText(g_s._currPlace); @@ -187,7 +183,7 @@ void MortevielleEngine::fctTake() { int cx = g_caff; avpoing(cx); if (g_crep != 139) { - if (g_ipers > 0) + if (_currBitIndex > 0) g_s._faithScore += 3; if (_obpart) { if (g_s._currPlace == PURPLE_ROOM) @@ -237,7 +233,7 @@ void MortevielleEngine::fctTake() { if ((g_num == 0) || ((g_num == 1) && (g_s._currPlace == CRYPT))) { tcoord(8); if (g_num != 0) { - if (g_ipers > 0) + if (_currBitIndex > 0) g_s._faithScore += 3; g_crep = 997; if ((g_s._currPlace == PURPLE_ROOM) && (g_s._purpleRoomObjectId != 0)) @@ -276,15 +272,22 @@ void MortevielleEngine::fctTake() { g_crep = 999; } } else { - if ( ((g_s._currPlace == OWN_ROOM) && (g_num == 3)) || ((g_s._currPlace == GREEN_ROOM) && (g_num == 4)) - || ((g_s._currPlace == PURPLE_ROOM) && (g_num == 1)) || ((g_s._currPlace == DARKBLUE_ROOM) && (g_num == 3)) - || ((g_s._currPlace == BLUE_ROOM) && (g_num == 6)) || ((g_s._currPlace == RED_ROOM) && (g_num == 2)) - || ((g_s._currPlace == BATHROOM) && (g_num == 6)) || ((g_s._currPlace == GREEN_ROOM2) && (g_num == 4)) - || ((g_s._currPlace == 9) && (g_num == 4)) || ((g_s._currPlace == DINING_ROOM) && (g_num > 2)) - || ((g_s._currPlace == BUREAU) && (g_num == 7)) || ((g_s._currPlace == KITCHEN) && (g_num == 6)) - || ((g_s._currPlace == ATTIC) && (g_num > 4)) || ((g_s._currPlace > ATTIC) && (g_s._currPlace != ROOM23)) ) + if ( ((g_s._currPlace == OWN_ROOM) && (g_num == 3)) + || ((g_s._currPlace == GREEN_ROOM) && (g_num == 4)) + || ((g_s._currPlace == PURPLE_ROOM) && (g_num == 1)) + || ((g_s._currPlace == DARKBLUE_ROOM) && (g_num == 3)) + || ((g_s._currPlace == BLUE_ROOM) && (g_num == 6)) + || ((g_s._currPlace == RED_ROOM) && (g_num == 2)) + || ((g_s._currPlace == BATHROOM) && (g_num == 6)) + || ((g_s._currPlace == GREEN_ROOM2) && (g_num == 4)) + || ((g_s._currPlace == ROOM9) && (g_num == 4)) + || ((g_s._currPlace == DINING_ROOM) && (g_num > 2)) + || ((g_s._currPlace == BUREAU) && (g_num == 7)) + || ((g_s._currPlace == KITCHEN) && (g_num == 6)) + || ((g_s._currPlace == ATTIC) && (g_num > 4)) + || ((g_s._currPlace > ATTIC) && (g_s._currPlace != INSIDE_WELL)) ) g_crep = 997; - else if (g_s._currPlace == ROOM23) { + else if (g_s._currPlace == INSIDE_WELL) { g_crep = 1504; loseGame(); } else @@ -331,7 +334,7 @@ void MortevielleEngine::fctLift() { if (g_num == 0) { tcoord(8); if (g_num != 0) { - if (g_ipers > 0) + if (_currBitIndex > 0) ++g_s._faithScore; g_crep = 997; if ((g_s._currPlace == PURPLE_ROOM) && (g_s._purpleRoomObjectId != 0)) @@ -339,7 +342,7 @@ void MortevielleEngine::fctLift() { } return; } - if (g_ipers > 0) + if (_currBitIndex > 0) ++g_s._faithScore; int tmpPlace = g_s._currPlace; if (g_s._currPlace == CRYPT) @@ -489,7 +492,7 @@ void MortevielleEngine::fctSearch() { if (_anyone || _keyPressedEsc) return; - if (g_s._currPlace == ROOM23) { + if (g_s._currPlace == INSIDE_WELL) { g_crep = 1504; loseGame(); return; @@ -506,7 +509,7 @@ void MortevielleEngine::fctSearch() { if (g_num != ord(g_touv[cx])) g_crep = 187; else { - if (g_ipers > 0) + if (_currBitIndex > 0) g_s._faithScore += 3; rechai(g_mchai); @@ -523,7 +526,7 @@ void MortevielleEngine::fctSearch() { tcoord(8); g_crep = 997; if (g_num != 0) { - if (g_ipers > 0) + if (_currBitIndex > 0) g_s._faithScore += 3; if ((g_s._currPlace != WELL) && (g_s._currPlace != SECRET_PASSAGE) && (g_s._currPlace != ATTIC)) { if (g_s._currPlace == PURPLE_ROOM) { @@ -540,7 +543,7 @@ void MortevielleEngine::fctSearch() { } } } else { - if (g_ipers > 0) + if (_currBitIndex > 0) g_s._faithScore += 3; g_crep = 997; if (g_s._currPlace < CELLAR) @@ -602,7 +605,7 @@ void MortevielleEngine::fctOpen() { tcoord(7); if (g_num != 0) { - if (g_ipers > 0) + if (_currBitIndex > 0) g_s._faithScore += 2; ++g_iouv; int tmpPlace = 0; @@ -705,8 +708,8 @@ void MortevielleEngine::fctPlace() { showMouse(); tinke(); drawClock(); - if (g_ipers != 0) - showPeoplePresent(g_ipers); + if (_currBitIndex != 0) + showPeoplePresent(_currBitIndex); else displayAloneText(); @@ -1027,7 +1030,7 @@ void MortevielleEngine::fctSelfPut() { } } } - if (g_caff == ROOM23) + if (g_caff == INSIDE_WELL) g_crep = 185; if ((g_crep == 999) || (g_crep == 185) || (g_crep == 998)) { if (g_crep == 999) @@ -1046,7 +1049,7 @@ void MortevielleEngine::fctListen() { if (g_s._currPlace != ROOM26) g_crep = 101; else { - if (g_ipers != 0) + if (_currBitIndex != 0) ++g_s._faithScore; int p, rand; ecfren(p, rand, g_s._faithScore, g_ment); @@ -1171,7 +1174,7 @@ void MortevielleEngine::fctEnter() { _menu.setDestinationMenuText(g_s._currPlace); g_ment = 0; g_mpers = 0; - g_ipers = 0; + _currBitIndex = 0; } } } @@ -1266,7 +1269,7 @@ void MortevielleEngine::fctLeave() { g_crep = 176; } else if (g_s._currPlace == SECRET_PASSAGE) nextPlace = t23coul(); - else if (g_s._currPlace == ROOM23) + else if (g_s._currPlace == INSIDE_WELL) nextPlace = WELL; if (g_crep != 997) @@ -1294,13 +1297,13 @@ void MortevielleEngine::fctWait() { tinke(); if (!_blo) t11(g_s._currPlace); - if ((g_ipers != 0) && (g_mpers == 0)) { + if ((_currBitIndex != 0) && (g_mpers == 0)) { g_crep = 998; if ((g_s._currPlace == ATTIC) || (g_s._currPlace == CELLAR)) cavegre(); if ((g_s._currPlace > OWN_ROOM) && (g_s._currPlace < DINING_ROOM)) _anyone = true; - g_mpers = g_ipers; + g_mpers = _currBitIndex; if (!_anyone) tinke(); return; @@ -1517,7 +1520,7 @@ void MortevielleEngine::fctDiscuss() { hirs(); drawRightFrame(); showMouse(); - showPeoplePresent(g_ipers); + showPeoplePresent(_currBitIndex); tinke(); drawClock(); affrep(); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 9510360abb..a3a0ef7e96 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -558,54 +558,54 @@ void MortevielleEngine::resetPresenceInRooms(int roomId) { * Engine function - Show the people present in the given room * @remarks Originally called 'affper' */ -void MortevielleEngine::showPeoplePresent(int per) { +void MortevielleEngine::showPeoplePresent(int bitIndex) { int xp = 580 - (_screenSurface.getStringWidth("LEO") / 2); for (int i = 1; i <= 8; ++i) _menu.disableMenuItem(_menu._discussMenu[i]); clearScreenType10(); - if ((per & 128) == 128) { + if ((bitIndex & 128) == 128) { _screenSurface.putxy(xp, 24); _screenSurface.drawString("LEO", 4); _menu.enableMenuItem(_menu._discussMenu[1]); } - if ((per & 64) == 64) { + if ((bitIndex & 64) == 64) { _screenSurface.putxy(xp, 32); _screenSurface.drawString("PAT", 4); _menu.enableMenuItem(_menu._discussMenu[2]); } - if ((per & 32) == 32) { + if ((bitIndex & 32) == 32) { _screenSurface.putxy(xp, 40); _screenSurface.drawString("GUY", 4); _menu.enableMenuItem(_menu._discussMenu[3]); } - if ((per & 16) == 16) { + if ((bitIndex & 16) == 16) { _screenSurface.putxy(xp, 48); _screenSurface.drawString("EVA", 4); _menu.enableMenuItem(_menu._discussMenu[4]); } - if ((per & 8) == 8) { + if ((bitIndex & 8) == 8) { _screenSurface.putxy(xp, 56); _screenSurface.drawString("BOB", 4); _menu.enableMenuItem(_menu._discussMenu[5]); } - if ((per & 4) == 4) { + if ((bitIndex & 4) == 4) { _screenSurface.putxy(xp, 64); _screenSurface.drawString("LUC", 4); _menu.enableMenuItem(_menu._discussMenu[6]); } - if ((per & 2) == 2) { + if ((bitIndex & 2) == 2) { _screenSurface.putxy(xp, 72); _screenSurface.drawString("IDA", 4); _menu.enableMenuItem(_menu._discussMenu[7]); } - if ((per & 1) == 1) { + if ((bitIndex & 1) == 1) { _screenSurface.putxy(xp, 80); _screenSurface.drawString("MAX", 4); _menu.enableMenuItem(_menu._discussMenu[8]); } - g_ipers = per; + _currBitIndex = bitIndex; } /** @@ -771,7 +771,7 @@ void MortevielleEngine::displayAloneText() { _screenSurface.putxy(580 - (_screenSurface.getStringWidth(sAlone) / 2), 70); _screenSurface.drawString(sAlone, 4); - g_ipers = 0; + _currBitIndex = 0; } int chlm() { @@ -843,7 +843,7 @@ void debloc(int roomId) { g_y = 0; if ((roomId != ROOM26) && (roomId != LANDING)) g_vm->resetPresenceInRooms(roomId); - g_mpers = g_ipers; + g_mpers = g_vm->_currBitIndex; } /** @@ -989,7 +989,7 @@ void MortevielleEngine::setPresenceGreenRoom(int roomId) { _roomPresenceEva = true; } - g_ipers = 10; + _currBitIndex = 10; } /** @@ -1002,7 +1002,7 @@ void MortevielleEngine::setPresencePurpleRoom() { else _room9PresenceLeo = true; - g_ipers = 10; + _currBitIndex = 10; } /** @@ -1011,7 +1011,7 @@ void MortevielleEngine::setPresencePurpleRoom() { */ void MortevielleEngine::setPresenceBlueRoom() { _roomPresenceMax = true; - g_ipers = 10; + _currBitIndex = 10; } /** @@ -1024,7 +1024,7 @@ void MortevielleEngine::setPresenceRedRoom(int roomId) { else if (roomId == GREEN_ROOM2) _roomPresencePat = true; - g_ipers = 10; + _currBitIndex = 10; } /** @@ -1310,7 +1310,7 @@ void phaz(int &rand, int &p, int cf) { void resetVariables() { copcha(); - g_s._ipre = false; + g_s._alreadyEnteredManor = false; g_s._selectedObjectId = 0; g_s._cellarObjectId = 0; g_s._atticBallHoleObjectId = 0; @@ -1358,7 +1358,7 @@ void resetVariables() { void MortevielleEngine::initGame() { _place = MANOR_FRONT; g_jh = 0; - if (!g_s._ipre) + if (!g_s._alreadyEnteredManor) _blo = true; g_t = kTime1; g_mh = readclock(); @@ -1654,7 +1654,7 @@ void musique(int so) { if (so == 0) { /* musik(0) */ ; - } else if ((g_prebru == 0) && (!g_s._ipre)) { + } else if ((g_prebru == 0) && (!g_s._alreadyEnteredManor)) { g_vm->_speechManager.startSpeech(10, 1, 1); ++g_prebru; } else { @@ -1674,7 +1674,7 @@ void musique(int so) { g_vm->_speechManager.startSpeech(12, 1, 1); i = true; } - } else if (g_s._currPlace == ROOM23) { + } else if (g_s._currPlace == INSIDE_WELL) { g_vm->_speechManager.startSpeech(13, 1, 1); i = true; } @@ -1839,14 +1839,14 @@ void tinke() { g_vm->setRandomPresenceChapel(cf); break; } - if ((g_mpers != 0) && (g_ipers != 10)) - g_mpers = g_ipers; + if ((g_mpers != 0) && (g_vm->_currBitIndex != 10)) + g_mpers = g_vm->_currBitIndex; - if ((g_mpers == 0) && (g_ipers > 0)) { + if ((g_mpers == 0) && (g_vm->_currBitIndex > 0)) { if ((g_s._currPlace == ATTIC) || (g_s._currPlace == CELLAR)) { cavegre(); - } else if (g_ipers == 10) { - g_ipers = 0; + } else if (g_vm->_currBitIndex == 10) { + g_vm->_currBitIndex = 0; if (!g_vm->_brt) { g_vm->_brt = true; g_hdb = readclock(); @@ -1901,7 +1901,7 @@ void afdes(int ad) { } void tkey1(bool d) { - bool quest; + bool quest = false; int x, y, c; hideMouse(); @@ -2142,9 +2142,9 @@ void MortevielleEngine::gotoDiningRoom() { loseGame(); } else st1sama(); - } else if (!g_s._ipre) { //Is it your first time? - g_ipers = 255; - g_vm->showPeoplePresent(g_ipers); + } else if (!g_s._alreadyEnteredManor) { //Is it your first time? + _currBitIndex = 255; // Everybody is present + g_vm->showPeoplePresent(_currBitIndex); g_caff = 77; afdes(0); g_vm->_screenSurface.drawBox(223, 47, 155, 91, 15); @@ -2163,9 +2163,9 @@ void MortevielleEngine::gotoDiningRoom() { g_vm->resetPresenceInRooms(DINING_ROOM); if (!g_vm->_blo) minute = t11(OWN_ROOM); - g_ipers = 0; + _currBitIndex = 0; g_mpers = 0; - g_s._ipre = true; + g_s._alreadyEnteredManor = true; } else st1sama(); } @@ -2210,7 +2210,11 @@ void MortevielleEngine::gotoManorBack() { affrep(); } -void t1deau() { +/** + * Engine function - Dead : Flooded in Well + * @remarks Originally called 't1deau' + */ +void MortevielleEngine::floodedInWell() { g_crep = 1503; g_vm->loseGame(); } @@ -2245,7 +2249,7 @@ L1: g_s._faithScore += 3 * (g_s._faithScore / 10); tsort(); g_vm->_menu.setDestinationMenuText(LANDING); - int cx = convertBitIndexToCharacterIndex(g_ipers); + int cx = convertBitIndexToCharacterIndex(g_vm->_currBitIndex); g_caff = 69 + cx; g_crep = g_caff; g_msg[3] = MENU_DISCUSS; @@ -2288,7 +2292,7 @@ void tsuiv() { ++g_is; g_caff = tbcl; g_crep = g_caff + 400; - if (g_ipers != 0) + if (g_vm->_currBitIndex != 0) g_s._faithScore += 2; } else { affrep(); @@ -2490,8 +2494,8 @@ void changeGraphicalDevice(int newDevice) { drawRightFrame(); tinke(); drawClock(); - if (g_ipers != 0) - g_vm->showPeoplePresent(g_ipers); + if (g_vm->_currBitIndex != 0) + g_vm->showPeoplePresent(g_vm->_currBitIndex); else g_vm->displayAloneText(); clearScreenType2(); @@ -2659,8 +2663,8 @@ void MortevielleEngine::handleOpcode() { if ((((hour == 12) || (hour == 13) || (hour == 19)) && (g_s._currPlace != 10)) || ((hour > 0) && (hour < 6) && (g_s._currPlace != 0))) ++g_s._faithScore; - if (((g_s._currPlace < CRYPT) || (g_s._currPlace > MOUNTAIN)) && (g_s._currPlace != ROOM23) - && (g_s._currPlace != 0) && (g_s._selectedObjectId != 152) && (!_loseGame)) { + if (((g_s._currPlace < CRYPT) || (g_s._currPlace > MOUNTAIN)) && (g_s._currPlace != INSIDE_WELL) + && (g_s._currPlace != OWN_ROOM) && (g_s._selectedObjectId != 152) && (!_loseGame)) { if ((g_s._faithScore > 99) && (hour > 8) && (hour < 16)) { g_crep = 1501; loseGame(); diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 5e76042cf0..43413b3a89 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -121,7 +121,6 @@ extern void premtet(); extern void ajchai(); extern void ajjer(int ob); extern void t1vier(); -extern void t1deau(); extern void tctrm(); extern void quelquun(); extern void tsuiv(); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index f868f01fbf..52c68fa44d 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -144,6 +144,7 @@ public: int _newGraphicalDevice; int _place; int _manorDistance; + int _currBitIndex; int _c_zzz; @@ -165,7 +166,6 @@ public: bool _loseGame; // Lose game flag. Originally called 'perdu' bool _txxFileFl; // Flag used to determine if texts are from the original files or from a DAT file - MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc); ~MortevielleEngine(); virtual bool hasFeature(EngineFeature f) const; @@ -258,7 +258,7 @@ public: void loadPlaces(); void initGame(); void resetPresenceInRooms(int roomId); - void showPeoplePresent(int per); + void showPeoplePresent(int bitIndex); int selectCharacters(int min, int max); void displayAloneText(); @@ -268,6 +268,7 @@ public: void gotoDiningRoom(); bool checkInventory(int objectId); void loseGame(); + void floodedInWell(); }; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 3e770b8655..45cbb1b420 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -377,7 +377,7 @@ void taffich() { if (((a > 69) && (a < 80)) || (a == 30) || (a == 31) || (a == 144) || (a == 147) || (a == 149)) m = 2030; - if (((a < 27) && (((g_maff > 69) && (!g_s._ipre)) || (g_maff > 99))) || ((g_maff > 29) && (g_maff < 33))) + if (((a < 27) && (((g_maff > 69) && (!g_s._alreadyEnteredManor)) || (g_maff > 99))) || ((g_maff > 29) && (g_maff < 33))) m = 2033; g_maff = a; diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 37b33766ff..9e17252734 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -60,7 +60,7 @@ void SavegameManager::sync_save(Common::Serializer &sz) { sz.syncAsSint16LE(g_s1._selectedObjectId); sz.syncAsSint16LE(g_s1._purpleRoomObjectId); sz.syncAsSint16LE(g_s1._cryptObjectId); - sz.syncAsByte(g_s1._ipre); + sz.syncAsByte(g_s1._alreadyEnteredManor); sz.syncAsByte(g_s1._heure); sz.syncBytes(g_bufcha, 391); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 6ed5ef8a9c..9b48ed3fd6 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -109,7 +109,6 @@ int g_x, g_mlec, g_mchai, g_menup, - g_ipers, g_mpers, g_mnumo, g_xprec, diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index ae114efcdd..22ec5ccbee 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -107,17 +107,16 @@ extern const byte g_rang[16]; /* 9 "A glance at the forbidden$", 18 "It's already open$", -23 "Strange horoscope$", 26 "A photograph$", 27 "The coat of arms$", */ enum places { - OWN_ROOM = 0, GREEN_ROOM = 1, PURPLE_ROOM = 2, TOILETS = 3, DARKBLUE_ROOM = 4, - BLUE_ROOM = 5, RED_ROOM = 6, BATHROOM = 7, GREEN_ROOM2 = 8, ROOM9 = 9, - DINING_ROOM = 10, BUREAU = 11, KITCHEN = 12, ATTIC = 13, CELLAR = 14, - LANDING = 15, CRYPT = 16, SECRET_PASSAGE = 17, ROOM18 = 18, MOUNTAIN = 19, - CHAPEL = 20, MANOR_FRONT = 21, MANOR_BACK = 22, ROOM23 = 23, WELL = 24, + OWN_ROOM = 0, GREEN_ROOM = 1, PURPLE_ROOM = 2, TOILETS = 3, DARKBLUE_ROOM = 4, + BLUE_ROOM = 5, RED_ROOM = 6, BATHROOM = 7, GREEN_ROOM2 = 8, ROOM9 = 9, + DINING_ROOM = 10, BUREAU = 11, KITCHEN = 12, ATTIC = 13, CELLAR = 14, + LANDING = 15, CRYPT = 16, SECRET_PASSAGE = 17, ROOM18 = 18, MOUNTAIN = 19, + CHAPEL = 20, MANOR_FRONT = 21, MANOR_BACK = 22, INSIDE_WELL = 23, WELL = 24, DOOR = 25, ROOM26 = 26, ROOM27 = 27 }; @@ -128,7 +127,7 @@ struct sav_chaine { byte _sjer[31]; int _currPlace, _atticBallHoleObjectId, _atticRodHoleObjectId, _cellarObjectId, _secretPassageObjectId, _wellObjectId; int _selectedObjectId, _purpleRoomObjectId, _cryptObjectId; - bool _ipre; + bool _alreadyEnteredManor; byte _heure; }; @@ -215,7 +214,6 @@ extern int g_x, g_mlec, g_mchai, g_menup, - g_ipers, g_mpers, g_mnumo, g_xprec, -- cgit v1.2.3 From 01e899b965721a21704746948ed2541a950f31df Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 14 Mar 2012 23:29:42 +0100 Subject: MORTEVIELLE: Remove some useless g_vm uses, some more renaming --- engines/mortevielle/mor.cpp | 45 +++++++++++++++++++-------------------- engines/mortevielle/mor.h | 3 +-- engines/mortevielle/mortevielle.h | 2 +- engines/mortevielle/saveload.cpp | 10 ++++++--- 4 files changed, 31 insertions(+), 29 deletions(-) diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index a3a0ef7e96..8b27833211 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -1106,14 +1106,14 @@ int MortevielleEngine::setPresenceLanding() { int rand = 0; do { rand = getRandomNumber(1, 8); - test = (((rand == 1) && (g_vm->_purpleRoomPresenceLeo || g_vm->_room9PresenceLeo)) || - ((rand == 2) && g_vm->_roomPresencePat) || - ((rand == 3) && g_vm->_roomPresenceGuy) || - ((rand == 4) && g_vm->_roomPresenceEva) || - ((rand == 5) && g_vm->_roomPresenceBob) || - ((rand == 6) && g_vm->_roomPresenceLuc) || - ((rand == 7) && g_vm->_roomPresenceIda) || - ((rand == 8) && g_vm->_roomPresenceMax)); + test = (((rand == 1) && (_purpleRoomPresenceLeo || _room9PresenceLeo)) || + ((rand == 2) && _roomPresencePat) || + ((rand == 3) && _roomPresenceGuy) || + ((rand == 4) && _roomPresenceEva) || + ((rand == 5) && _roomPresenceBob) || + ((rand == 6) && _roomPresenceLuc) || + ((rand == 7) && _roomPresenceIda) || + ((rand == 8) && _roomPresenceMax)); } while (test); int retVal = convertCharacterIndexToBitIndex(rand); @@ -1404,7 +1404,7 @@ void MortevielleEngine::setRandomPresencePurpleRoom(int cf) { * @remarks Originally called 'pl5' */ void MortevielleEngine::setRandomPresenceBlueRoom(int cf) { - if (!g_vm->_roomPresenceMax) { + if (!_roomPresenceMax) { int p = getPresenceStatsBlueRoom(); int rand; @@ -2032,7 +2032,11 @@ bool MortevielleEngine::checkInventory(int objectId) { return retVal; } -void st1sama() { +/** + * Engine function - Display Dining Room + * @remarks Originally called 'st1sama' + */ +void MortevielleEngine::displayDiningRoom() { g_s._currPlace = DINING_ROOM; affrep(); } @@ -2141,13 +2145,13 @@ void MortevielleEngine::gotoDiningRoom() { g_crep = 1511; loseGame(); } else - st1sama(); + displayDiningRoom(); } else if (!g_s._alreadyEnteredManor) { //Is it your first time? _currBitIndex = 255; // Everybody is present - g_vm->showPeoplePresent(_currBitIndex); + showPeoplePresent(_currBitIndex); g_caff = 77; afdes(0); - g_vm->_screenSurface.drawBox(223, 47, 155, 91, 15); + _screenSurface.drawBox(223, 47, 155, 91, 15); repon(2, 33); tkey1(false); mennor(); @@ -2160,19 +2164,14 @@ void MortevielleEngine::gotoDiningRoom() { showMouse(); g_s._currPlace = OWN_ROOM; affrep(); - g_vm->resetPresenceInRooms(DINING_ROOM); - if (!g_vm->_blo) + resetPresenceInRooms(DINING_ROOM); + if (!_blo) minute = t11(OWN_ROOM); _currBitIndex = 0; g_mpers = 0; g_s._alreadyEnteredManor = true; } else - st1sama(); -} - -void t1vier() { - g_s._currPlace = SECRET_PASSAGE; - affrep(); + displayDiningRoom(); } /** @@ -2216,7 +2215,7 @@ void MortevielleEngine::gotoManorBack() { */ void MortevielleEngine::floodedInWell() { g_crep = 1503; - g_vm->loseGame(); + loseGame(); } void tctrm() { @@ -2552,7 +2551,7 @@ void MortevielleEngine::gameLoaded() { repon(2, g_crep); clearScreenType3(); _endGame = false; - g_vm->_menu.setDestinationMenuText(g_s._currPlace); + _menu.setDestinationMenuText(g_s._currPlace); modinv(); if (g_s._selectedObjectId != 0) modobj(g_s._selectedObjectId + 400); diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 43413b3a89..da1f447bb9 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -111,7 +111,7 @@ extern void affrep(); /* NIVEAU 6 */ extern void tsort(); extern void st4(int ob); -extern void st1sama(); +extern void displayDiningRoom(); extern void modinv(); extern void sparl(float adr, float rep); extern void endSearch(); @@ -120,7 +120,6 @@ extern void premtet(); /* NIVEAU 5 */ extern void ajchai(); extern void ajjer(int ob); -extern void t1vier(); extern void tctrm(); extern void quelquun(); extern void tsuiv(); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 52c68fa44d..57de236f8d 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -269,7 +269,7 @@ public: bool checkInventory(int objectId); void loseGame(); void floodedInWell(); - + void displayDiningRoom(); }; extern MortevielleEngine *g_vm; diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 9e17252734..4113ff0e01 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -48,9 +48,13 @@ Common::String SavegameManager::generateSaveName(int slotNumber) { */ void SavegameManager::sync_save(Common::Serializer &sz) { sz.syncAsSint16LE(g_s1._faithScore); - sz.syncBytes((byte *)&g_s1._pourc[0], 11); - sz.syncBytes((byte *)&g_s1._teauto[0], 43); - sz.syncBytes((byte *)&g_s1._sjer[0], 31); + for (int i = 0; i < 11; ++i) + sz.syncAsByte(g_s1._pourc[i]); + for (int i = 0; i < 43; ++i) + sz.syncAsByte(g_s1._teauto[i]); + for (int i = 0; i < 31; ++i) + sz.syncAsByte(g_s1._sjer[i]); + sz.syncAsSint16LE(g_s1._currPlace); sz.syncAsSint16LE(g_s1._atticBallHoleObjectId); sz.syncAsSint16LE(g_s1._atticRodHoleObjectId); -- cgit v1.2.3 From fb096b135bc2ed5cc56137a8c6e58de730758d13 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 16 Mar 2012 07:32:43 +0100 Subject: MORTEVIELLE: Some more renaming --- engines/mortevielle/actions.cpp | 18 ++--- engines/mortevielle/mor.cpp | 164 +++++++++++++++++++------------------- engines/mortevielle/mor.h | 18 ++--- engines/mortevielle/mortevielle.h | 12 +++ engines/mortevielle/saveload.cpp | 2 +- engines/mortevielle/var_mor.cpp | 6 -- engines/mortevielle/var_mor.h | 8 +- 7 files changed, 110 insertions(+), 118 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 4f16218e9e..c78c3a6304 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -1200,7 +1200,7 @@ void MortevielleEngine::fctSleep() { } clearScreenType3(); clearScreenType2(); - ecrf2(); + prepareScreenType2(); ecr2(getEngineString(S_WANT_TO_WAKE_UP)); updateHour(j, h, m); @@ -1589,7 +1589,7 @@ void MortevielleEngine::endGame() { afdes(0); repon(6, 34); repon(2, 35); - musique(0); + startMusicOrSpeech(0); tkey1(false); // A wait message was displayed. // tkey1 was called before and after. @@ -1605,17 +1605,17 @@ void MortevielleEngine::endGame() { */ void MortevielleEngine::askRestart() { clearScreenType2(); - musique(0); + startMusicOrSpeech(0); tkey1(false); maivid(); resetVariables(); initGame(); - g_vh = 10; - g_vm__ = 0; - g_vj = 0; - g_minute = 0; - g_hour = 10; - g_day = 0; + _currHour = 10; + _currHalfHour = 0; + _currDay = 0; + _minute = 0; + _hour = 10; + _day = 0; repon(2, 180); int answer = Alert::show(getEngineString(S_YES_NO), 1); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 8b27833211..8a8ef565be 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -248,8 +248,8 @@ void drawRightFrame() { * Set Text Color * @remarks Originally called 'text_color' */ -void setTextColor(int c) { - g_vm->_textColor = c; +void MortevielleEngine::setTextColor(int col) { + _textColor = col; } /* NIVEAU 13 */ @@ -273,11 +273,6 @@ void initouv() { g_touv[cx] = chr(0); } -void ecrf1() { - // Large drawing - g_vm->_screenSurface.drawBox(0, 11, 512, 163, 15); -} - /** * Engine function - Clear Screen - Type 1 * @remarks Originally called 'clsf1' @@ -349,10 +344,6 @@ void clearScreenType10() { showMouse(); } -void ecrf2() { - setTextColor(5); -} - void ecr2(Common::String str_) { // Some dead code was present in the original: removed g_vm->_screenSurface.putxy(8, 177); @@ -383,12 +374,28 @@ void ecr3(Common::String text) { g_vm->_screenSurface.drawString(text, 5); } -void ecrf6() { +/** + * Prepare screen - Type 1! + * @remarks Originally called 'ecrf1' + */ +void MortevielleEngine::prepareScreenType1() { + // Large drawing + _screenSurface.drawBox(0, 11, 512, 163, 15); +} + +/** + * Prepare room - Type 2! + * @remarks Originally called 'ecrf2' + */ +void MortevielleEngine::prepareScreenType2() { setTextColor(5); - g_vm->_screenSurface.drawBox(62, 33, 363, 80, 15); } -void ecrf7() { +/** + * Prepare room - Type 3! + * @remarks Originally called 'ecrf7' + */ +void MortevielleEngine::prepareScreenType3() { setTextColor(4); } @@ -416,14 +423,14 @@ void paint_rect(int x, int y, int dx, int dy) { void updateHour(int &day, int &hour, int &minute) { int newHour = readclock(); int th = g_jh + ((newHour - g_mh) / g_t); - minute = ((th % 2) + g_vm__) * 30; - hour = ((uint)th >> 1) + g_vh; + minute = ((th % 2) + g_vm->_currHalfHour) * 30; + hour = ((uint)th >> 1) + g_vm->_currHour; if (minute == 60) { minute = 0; ++hour; } - day = (hour / 24) + g_vj; - hour = hour - ((day - g_vj) * 24); + day = (hour / 24) + g_vm->_currDay; + hour = hour - ((day - g_vm->_currDay) * 24); } /** @@ -462,13 +469,9 @@ void repon(int f, int m) { displayStr(tmpStr, 8, 176, 85, 3, 5); } else { modif(m); - if (f == 8) - f = 2; - if (f == 1) - f = 6; - if (f == 2) { + if ((f == 2) || (f == 8)) { clearScreenType2(); - ecrf2(); + g_vm->prepareScreenType2(); text1(8, 182, 103, m); if ((m == 68) || (m == 69)) g_s._teauto[40] = '*'; @@ -479,10 +482,9 @@ void repon(int f, int m) { g_s._teauto[38] = '*'; } } - } - if ((f == 6) || (f == 9)) { + } else if ((f == 1) || (f == 6) || (f == 9)) { int i; - if (f == 6) + if ((f == 1) || (f == 6)) i = 4; else i = 5; @@ -495,9 +497,8 @@ void repon(int f, int m) { if (m == 179) g_s._pourc[10] = '*'; - } - if (f == 7) { /* messint */ - ecrf7(); + } else if (f == 7) { /* messint */ + g_vm->prepareScreenType3(); tmpStr = deline(m); int xSmallStr, xLargeStr, dx; @@ -805,12 +806,12 @@ void drawClock() { else co = 1; - if (g_minute == 0) + if (g_vm->_minute == 0) g_vm->_screenSurface.drawLine(((uint)x >> 1) * g_res, y, ((uint)x >> 1) * g_res, (y - rg), co); else g_vm->_screenSurface.drawLine(((uint)x >> 1) * g_res, y, ((uint)x >> 1) * g_res, (y + rg), co); - h = g_hour; + h = g_vm->_hour; if (h > 12) h -= 12; if (h == 0) @@ -820,15 +821,15 @@ void drawClock() { showMouse(); g_vm->_screenSurface.putxy(568, 154); - if (g_hour > 11) + if (g_vm->_hour > 11) g_vm->_screenSurface.drawString("PM ", 1); else g_vm->_screenSurface.drawString("AM ", 1); g_vm->_screenSurface.putxy(550, 160); - if ((g_day >= 0) && (g_day <= 8)) { + if ((g_vm->_day >= 0) && (g_vm->_day <= 8)) { Common::String tmp = g_vm->getEngineString(S_DAY); - tmp.insertChar((char)(g_day + 49), 0); + tmp.insertChar((char)(g_vm->_day + 49), 0); g_vm->_screenSurface.drawString(tmp, 1); } } @@ -1326,7 +1327,7 @@ void resetVariables() { g_s._sjer[i] = chr(0); g_s._sjer[1] = chr(113); - g_s._heure = chr(20); + g_s._fullHour = chr(20); for (int i = 1; i <= 10; ++i) g_s._pourc[i] = ' '; @@ -1608,7 +1609,7 @@ void cavegre() { if (g_s._faithScore > 69) g_s._faithScore += (g_s._faithScore / 10); clearScreenType3(); - ecrf2(); + g_vm->prepareScreenType2(); ecr3(g_vm->getEngineString(S_SOMEONE_ENTERS)); int rand = (getRandomNumber(0, 4)) - 2; g_vm->_speechManager.startSpeech(2, rand, 1); @@ -1647,40 +1648,37 @@ void aniof(int ouf, int num) { surface.decode(&g_mem[ad * 16 + offset]); g_vm->_screenSurface.drawPicture(surface, 0, 12); - ecrf1(); + g_vm->prepareScreenType1(); } -void musique(int so) { +/** + * Start music or speech + * @remarks Originally called 'musique' + */ +void MortevielleEngine::startMusicOrSpeech(int so) { if (so == 0) { /* musik(0) */ ; } else if ((g_prebru == 0) && (!g_s._alreadyEnteredManor)) { - g_vm->_speechManager.startSpeech(10, 1, 1); + // Type 1: Speech + _speechManager.startSpeech(10, 1, 1); ++g_prebru; } else { - bool i = false; - if ((g_s._currPlace == MOUNTAIN) || (g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK)) { - if (getRandomNumber(1, 3) == 2) { - g_vm->_speechManager.startSpeech(9, getRandomNumber(2, 4), 1); - i = true; - } - } else if (g_s._currPlace == CHAPEL) { - if (getRandomNumber(1, 2) == 1) { - g_vm->_speechManager.startSpeech(8, 1, 1); - i = true; - } - } else if (g_s._currPlace == WELL) { - if (getRandomNumber(1, 2) == 2) { - g_vm->_speechManager.startSpeech(12, 1, 1); - i = true; - } - } else if (g_s._currPlace == INSIDE_WELL) { - g_vm->_speechManager.startSpeech(13, 1, 1); - i = true; - } - - if (!i) - g_vm->_speechManager.startSpeech(getRandomNumber(1, 17), 1, 2); + if (((g_s._currPlace == MOUNTAIN) || (g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK)) && (getRandomNumber(1, 3) == 2)) + // Type 1: Speech + _speechManager.startSpeech(9, getRandomNumber(2, 4), 1); + else if ((g_s._currPlace == CHAPEL) && (getRandomNumber(1, 2) == 1)) + // Type 1: Speech + _speechManager.startSpeech(8, 1, 1); + else if ((g_s._currPlace == WELL) && (getRandomNumber(1, 2) == 2)) + // Type 1: Speech + _speechManager.startSpeech(12, 1, 1); + else if (g_s._currPlace == INSIDE_WELL) + // Type 1: Speech + _speechManager.startSpeech(13, 1, 1); + else + // Type 2 : music + _speechManager.startSpeech(getRandomNumber(1, 17), 1, 2); } } @@ -1698,7 +1696,7 @@ void dessin(int ad) { g_vm->_screenSurface.drawBox(222, 47, 155, 91, 15); } else { dessine(g_ades, 0, 12); - ecrf1(); + g_vm->prepareScreenType1(); if ((g_caff < 30) || (g_caff > 32)) { for (int cx = 1; cx <= 6; ++cx) { if (ord(g_touv[cx]) != 0) @@ -1720,7 +1718,7 @@ void dessin(int ad) { } if (g_caff < ROOM26) - musique(1); + g_vm->startMusicOrSpeech(1); } } } @@ -1737,8 +1735,8 @@ void tinke() { g_vm->_anyone = false; updateHour(day, hour, minute); - if (day != g_day) { - g_day = day; + if (day != g_vm->_day) { + g_vm->_day = day; int i = 0; do { ++i; @@ -1747,9 +1745,9 @@ void tinke() { g_nbrep[i] = 0; } while (i != 8); } - if ((hour > g_hour) || ((hour == 0) && (g_hour == 23))) { - g_hour = hour; - g_minute = 0; + if ((hour > g_vm->_hour) || ((hour == 0) && (g_vm->_hour == 23))) { + g_vm->_hour = hour; + g_vm->_minute = 0; drawClock(); cf = 0; for (int i = 1; i <= 10; ++i) { @@ -1775,8 +1773,8 @@ void tinke() { g_hintPctMessage += d6; g_hintPctMessage += d4; } - if (minute > g_minute) { - g_minute = 30; + if (minute > g_vm->_minute) { + g_vm->_minute = 30; drawClock(); } if (y_s < 12) @@ -1852,7 +1850,7 @@ void tinke() { g_hdb = readclock(); if (getRandomNumber(1, 5) < 5) { clearScreenType3(); - ecrf2(); + g_vm->prepareScreenType2(); ecr3(g_vm->getEngineString(S_HEAR_NOISE)); int rand = (getRandomNumber(0, 4)) - 2; g_vm->_speechManager.startSpeech(1, rand, 1); @@ -2569,7 +2567,7 @@ void tmaj3() { minute = 1; hour += day * 24; minute += hour * 2; - g_s._heure = chr(minute); + g_s._fullHour = chr(minute); } /** @@ -2683,15 +2681,15 @@ void MortevielleEngine::handleOpcode() { /* NIVEAU 1 */ void theure() { - g_vj = ord(g_s._heure); - g_vh = g_vj % 48; - g_vj /= 48; - g_vm__ = g_vh % 2; - g_vh /= 2; - g_hour = g_vh; - if (g_vm__ == 1) - g_minute = 30; + int fullHour = ord(g_s._fullHour); + int tmpHour = fullHour % 48; + g_vm->_currDay = fullHour / 48; + g_vm->_currHalfHour = tmpHour % 2; + g_vm->_currHour = tmpHour / 2; + g_vm->_hour = g_vm->_currHour; + if (g_vm->_currHalfHour == 1) + g_vm->_minute = 30; else - g_minute = 0; + g_vm->_minute = 0; } } // End of namespace Mortevielle diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index da1f447bb9..4b3dd9d4db 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -36,6 +36,12 @@ namespace Mortevielle { const int kTime1 = 410; const int kTime2 = 250; +static const int _actionMenu[12] = { OPCODE_NONE, + OPCODE_SHIDE, OPCODE_ATTACH, OPCODE_FORCE, OPCODE_SLEEP, + OPCODE_ENTER, OPCODE_CLOSE, OPCODE_KNOCK, OPCODE_EAT, + OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE +}; + /* NIVEAU 15 */ extern void copcha(); extern bool isMouseIn(rectangle r); @@ -51,20 +57,15 @@ extern int readclock(); extern void modif(int &nu); extern void dessine(int ad, int x, int y); extern void drawRightFrame(); -extern void setTextColor(int c); /* NIVEAU 13 */ extern void text1(int x, int y, int nb, int m); extern void initouv(); -extern void ecrf1(); extern void clearScreenType1(); extern void clearScreenType2(); extern void clearScreenType3(); extern void clearScreenType10(); -extern void ecrf2(); extern void ecr2(Common::String str_); extern void ecr3(Common::String text); -extern void ecrf6(); -extern void ecrf7(); extern void stop(); extern void paint_rect(int x, int y, int dx, int dy); extern void updateHour(int &day, int &hour, int &minute); @@ -90,16 +91,9 @@ extern int t11(int roomId); extern void cavegre(); extern void writetp(Common::String s, int t); extern void aniof(int ouf, int num); -extern void musique(int so); /* NIVEAU 9 */ extern void dessin(int ad); -static const int _actionMenu[12] = { OPCODE_NONE, - OPCODE_SHIDE, OPCODE_ATTACH, OPCODE_FORCE, OPCODE_SLEEP, - OPCODE_ENTER, OPCODE_CLOSE, OPCODE_KNOCK, OPCODE_EAT, - OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE -}; - extern void tinke(); extern void fenat(char ans); /* NIVEAU 8 */ diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 57de236f8d..3422767e6c 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -145,6 +145,12 @@ public: int _place; int _manorDistance; int _currBitIndex; + int _currDay; + int _currHour; + int _currHalfHour; + int _day; + int _hour; + int _minute; int _c_zzz; @@ -270,6 +276,12 @@ public: void loseGame(); void floodedInWell(); void displayDiningRoom(); + void startMusicOrSpeech(int so); + void setTextColor(int col); + void prepareScreenType1(); + void prepareScreenType2(); + void prepareScreenType3(); + }; extern MortevielleEngine *g_vm; diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 4113ff0e01..f6a3defab3 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -65,7 +65,7 @@ void SavegameManager::sync_save(Common::Serializer &sz) { sz.syncAsSint16LE(g_s1._purpleRoomObjectId); sz.syncAsSint16LE(g_s1._cryptObjectId); sz.syncAsByte(g_s1._alreadyEnteredManor); - sz.syncAsByte(g_s1._heure); + sz.syncAsByte(g_s1._fullHour); sz.syncBytes(g_bufcha, 391); } diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 9b48ed3fd6..58f49561f7 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -81,18 +81,12 @@ const byte g_rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; int g_x, g_y, g_t, - g_vj, - g_vh, - g_vm__, g_jh, g_mh, g_cs, g_hdb, g_hfb, - g_hour, - g_day, g_key, - g_minute, g_num, g_res, g_ment, diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 22ec5ccbee..c9f6ed7b64 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -128,7 +128,7 @@ struct sav_chaine { int _currPlace, _atticBallHoleObjectId, _atticRodHoleObjectId, _cellarObjectId, _secretPassageObjectId, _wellObjectId; int _selectedObjectId, _purpleRoomObjectId, _cryptObjectId; bool _alreadyEnteredManor; - byte _heure; + byte _fullHour; }; struct registres { @@ -186,18 +186,12 @@ enum GraphicModes { MODE_AMSTRAD1512 = 0, MODE_CGA = 1, MODE_EGA = 2, MODE_HERCU extern int g_x, g_y, g_t, - g_vj, - g_vh, - g_vm__, g_jh, g_mh, g_cs, g_hdb, g_hfb, - g_hour, - g_day, g_key, - g_minute, g_num, g_res, g_ment, -- cgit v1.2.3 From 6e7118a8efe45be2ff220341b5e3ce6bb2ab0003 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 16 Mar 2012 07:38:52 +0100 Subject: MORTEVIELLE: Remove dead code related to messint (display of loading message between rooms) --- engines/mortevielle/mor.cpp | 27 ++------------------------- 1 file changed, 2 insertions(+), 25 deletions(-) diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 8a8ef565be..526ac4b5b2 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -453,12 +453,8 @@ void modobj(int m) { } void repon(int f, int m) { - Common::String str_; - Common::String str1; - Common::String tmpStr; - if ((m > 499) && (m < 563)) { - tmpStr = deline(m - 501 + kInventoryStringIndex); + Common::String tmpStr = deline(m - 501 + kInventoryStringIndex); if ((int) tmpStr.size() > ((58 + (g_res - 1) * 37) << 1)) g_vm->_largestClearScreen = true; @@ -489,7 +485,7 @@ void repon(int f, int m) { else i = 5; - tmpStr = deline(m); + Common::String tmpStr = deline(m); displayStr(tmpStr, 80, 40, 60, 25, i); if (m == 180) @@ -497,25 +493,6 @@ void repon(int f, int m) { if (m == 179) g_s._pourc[10] = '*'; - } else if (f == 7) { /* messint */ - g_vm->prepareScreenType3(); - tmpStr = deline(m); - - int xSmallStr, xLargeStr, dx; - if (g_res == 1) { - xSmallStr = 252 - tmpStr.size() * 5; - xLargeStr = 100; - dx = 80; - } else { - xSmallStr = 252 - tmpStr.size() * 3; - xLargeStr = 144; - dx = 50; - } - - if (tmpStr.size() < 40) - displayStr(tmpStr, xSmallStr, 86, dx, 3, 5); - else - displayStr(tmpStr, xLargeStr, 86, dx, 3, 5); } } } -- cgit v1.2.3 From fc14ffbcb53aedfb23ac7ecc862d2bf9a454fb73 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 18 Mar 2012 09:44:05 +0100 Subject: MORTEVIELLE: Some more renaming --- engines/mortevielle/actions.cpp | 10 +-- engines/mortevielle/dialogs.cpp | 4 +- engines/mortevielle/keyboard.cpp | 10 +-- engines/mortevielle/mor.cpp | 125 ++++++++++++++++++++---------------- engines/mortevielle/mor.h | 12 +--- engines/mortevielle/mortevielle.cpp | 21 ++++-- engines/mortevielle/mortevielle.h | 8 +++ engines/mortevielle/mouse.cpp | 10 +-- engines/mortevielle/outtext.cpp | 3 +- engines/mortevielle/ovd1.cpp | 8 +-- engines/mortevielle/saveload.cpp | 14 ++-- engines/mortevielle/saveload.h | 2 +- engines/mortevielle/var_mor.cpp | 9 --- engines/mortevielle/var_mor.h | 7 -- 14 files changed, 121 insertions(+), 122 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index c78c3a6304..944ac9fc2f 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -45,7 +45,7 @@ void MortevielleEngine::fctMove() { if ((g_s._currPlace == ROOM26) && (g_msg[4] == _menu._moveMenu[6])) { g_s._currPlace = LANDING; g_caff = g_s._currPlace; - afdes(0); + afdes(); repon(2, g_s._currPlace); } if ((g_s._currPlace == LANDING) && (g_msg[4] == _menu._moveMenu[6])) { @@ -1156,7 +1156,7 @@ void MortevielleEngine::fctEnter() { if (g_ment == 9) { _col = true; g_caff = 70; - afdes(0); + afdes(); repon(2, g_caff); } else _col = false; @@ -1194,7 +1194,7 @@ void MortevielleEngine::fctSleep() { tsort(); g_s._currPlace = OWN_ROOM; affrep(); - afdes(0); + afdes(); debloc(g_s._currPlace); _menu.setDestinationMenuText(g_s._currPlace); } @@ -1351,7 +1351,7 @@ void MortevielleEngine::fctDiscuss() { ++cx; } while (_menu._discussMenu[cx] != g_msg[4]); g_caff = 69 + cx; - afdes(0); + afdes(); repon(2, g_caff); suj = g_caff + 60; } @@ -1586,7 +1586,7 @@ void MortevielleEngine::endGame() { repon(2, 142); tkey1(false); g_caff = 32; - afdes(0); + afdes(); repon(6, 34); repon(2, 35); startMusicOrSpeech(0); diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index eabeae2b79..dbbd8c5896 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -56,8 +56,8 @@ int Alert::show(const Common::String &msg, int n) { memset(&limit[0][0], 0, sizeof(int) * 3 * 3); int do_alert_result; hideMouse(); - while (keypressed()) - dumi = get_ch(); // input >> kbd >> dumi; + while (g_vm->keyPressed()) + dumi = g_vm->getChar(); g_vm->setMouseClick(false); decodeAlertDetails(msg, caseNumb, lignNumb, nbcol, chaine, cas); diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index faf47192a7..71ab0c1e99 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -33,13 +33,13 @@ namespace Mortevielle { char readkey1() { - char c = get_ch(); + char c = g_vm->getChar(); return c; } int testou() { - char ch = get_ch(); + char ch = g_vm->getChar(); switch (ch) { case '\23' : @@ -54,8 +54,8 @@ int testou() { } break; case '\33' : - if (keypressed()) - ch = get_ch(); + if (g_vm->keyPressed()) + ch = g_vm->getChar(); break; default: break; @@ -65,7 +65,7 @@ int testou() { } void teskbd() { - if (keypressed()) + if (g_vm->keyPressed()) testou(); } diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 526ac4b5b2..5bba9c5aed 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -420,17 +420,17 @@ void paint_rect(int x, int y, int dx, int dy) { * Engine function - Update hour * @remarks Originally called 'calch' */ -void updateHour(int &day, int &hour, int &minute) { +void MortevielleEngine::updateHour(int &day, int &hour, int &minute) { int newHour = readclock(); int th = g_jh + ((newHour - g_mh) / g_t); - minute = ((th % 2) + g_vm->_currHalfHour) * 30; - hour = ((uint)th >> 1) + g_vm->_currHour; + minute = ((th % 2) + _currHalfHour) * 30; + hour = ((uint)th >> 1) + _currHour; if (minute == 60) { minute = 0; ++hour; } - day = (hour / 24) + g_vm->_currDay; - hour = hour - ((day - g_vm->_currDay) * 24); + day = (hour / 24) + _currDay; + hour = hour - ((day - _currDay) * 24); } /** @@ -465,7 +465,9 @@ void repon(int f, int m) { displayStr(tmpStr, 8, 176, 85, 3, 5); } else { modif(m); - if ((f == 2) || (f == 8)) { + switch (f) { + case 2: + case 8: clearScreenType2(); g_vm->prepareScreenType2(); text1(8, 182, 103, m); @@ -478,7 +480,10 @@ void repon(int f, int m) { g_s._teauto[38] = '*'; } } - } else if ((f == 1) || (f == 6) || (f == 9)) { + break; + case 1: + case 6: + case 9: { int i; if ((f == 1) || (f == 6)) i = 4; @@ -490,9 +495,12 @@ void repon(int f, int m) { if (m == 180) g_s._pourc[6] = '*'; - - if (m == 179) + else if (m == 179) g_s._pourc[10] = '*'; + } + break; + default: + break; } } } @@ -1132,7 +1140,7 @@ int MortevielleEngine::setPresenceChapel(int hour) { * Engine function - Get the answer after you known a door * @remarks Originally called 'frap' */ -void getKnockAnswer() { +void MortevielleEngine::getKnockAnswer() { int day, hour, minute; updateHour(day, hour, minute); @@ -1711,7 +1719,7 @@ void tinke() { Common::String stpo; g_vm->_anyone = false; - updateHour(day, hour, minute); + g_vm->updateHour(day, hour, minute); if (day != g_vm->_day) { g_vm->_day = day; int i = 0; @@ -1737,18 +1745,18 @@ void tinke() { else stpo = chr(cf + 48); - g_hintPctMessage = Common::String(d3); - g_hintPctMessage += d5; - g_hintPctMessage += d4; - g_hintPctMessage += d3; - g_hintPctMessage += d1; - g_hintPctMessage += stpo; - g_hintPctMessage += '0'; - g_hintPctMessage += d2; - g_hintPctMessage += d4; - g_hintPctMessage += d3; - g_hintPctMessage += d6; - g_hintPctMessage += d4; + g_vm->_hintPctMessage = Common::String(d3); + g_vm->_hintPctMessage += d5; + g_vm->_hintPctMessage += d4; + g_vm->_hintPctMessage += d3; + g_vm->_hintPctMessage += d1; + g_vm->_hintPctMessage += stpo; + g_vm->_hintPctMessage += '0'; + g_vm->_hintPctMessage += d2; + g_vm->_hintPctMessage += d4; + g_vm->_hintPctMessage += d3; + g_vm->_hintPctMessage += d6; + g_vm->_hintPctMessage += d4; } if (minute > g_vm->_minute) { g_vm->_minute = 30; @@ -1869,9 +1877,9 @@ void fenat(char ans) { /* NIVEAU 8 */ -void afdes(int ad) { +void afdes() { taffich(); - dessin(ad); + dessin(0); g_vm->_okdes = false; } @@ -1883,18 +1891,18 @@ void tkey1(bool d) { fenat('K'); // Wait for release from any key or mouse button - while (keypressed()) + while (g_vm->keyPressed()) g_key = testou(); do { getMousePos_(x, y, c); - keypressed(); + g_vm->keyPressed(); } while (c != 0); // Event loop do { if (d) tinke(); - quest = keypressed(); + quest = g_vm->keyPressed(); getMousePos_(x, y, c); CHECK_QUIT; } while (!(quest || (c != 0) || (d && g_vm->_anyone))); @@ -1907,7 +1915,7 @@ void tkey1(bool d) { /* NIVEAU 7 */ void tlu(int af, int ob) { g_caff = 32; - afdes(0); + afdes(); repon(6, ob + 4000); repon(2, 999); tkey1(true); @@ -2125,7 +2133,7 @@ void MortevielleEngine::gotoDiningRoom() { _currBitIndex = 255; // Everybody is present showPeoplePresent(_currBitIndex); g_caff = 77; - afdes(0); + afdes(); _screenSurface.drawBox(223, 47, 155, 91, 15); repon(2, 33); tkey1(false); @@ -2298,7 +2306,7 @@ void tfleche() { } while (!(qust || inRect || g_vm->_anyone)); if (qust && (touch == '\103')) - Alert::show(g_hintPctMessage, 1); + Alert::show(g_vm->_hintPctMessage, 1); } while (!((touch == '\73') || ((touch == '\104') && (g_x != 0) && (g_y != 0)) || (g_vm->_anyone) || (inRect))); if (touch == '\73') @@ -2390,7 +2398,7 @@ void treg(int ob) { g_caff = ob; if (((g_caff > 29) && (g_caff < 33)) || (g_caff == 144) || (g_caff == 147) || (g_caff == 149) || (g_msg[4] == OPCODE_SLOOK)) { - afdes(0); + afdes(); if ((g_caff > 29) && (g_caff < 33)) repon(2, g_caff); else @@ -2459,25 +2467,25 @@ void aldepl() { * Engine function - Change Graphical Device * @remarks Originally called 'change_gd' */ -void changeGraphicalDevice(int newDevice) { +void MortevielleEngine::changeGraphicalDevice(int newDevice) { hideMouse(); - g_vm->_currGraphicalDevice = newDevice; + _currGraphicalDevice = newDevice; hirs(); initMouse(); showMouse(); drawRightFrame(); tinke(); drawClock(); - if (g_vm->_currBitIndex != 0) - g_vm->showPeoplePresent(g_vm->_currBitIndex); + if (_currBitIndex != 0) + showPeoplePresent(_currBitIndex); else - g_vm->displayAloneText(); + displayAloneText(); clearScreenType2(); clearScreenType3(); g_maff = 68; - afdes(0); + afdes(); repon(2, g_crep); - g_vm->_menu.displayMenu(); + _menu.displayMenu(); } /** @@ -2512,7 +2520,7 @@ void MortevielleEngine::gameLoaded() { g_iouv = 0; g_dobj = 0; affrep(); - g_hintPctMessage = deline(580); + _hintPctMessage = deline(580); _okdes = false; _endGame = true; @@ -2522,7 +2530,7 @@ void MortevielleEngine::gameLoaded() { displayAloneText(); tinke(); drawClock(); - afdes(0); + afdes(); repon(2, g_crep); clearScreenType3(); _endGame = false; @@ -2533,20 +2541,6 @@ void MortevielleEngine::gameLoaded() { showMouse(); } - -/* NIVEAU 3 */ -/* procedure PROGRAMME */ -void tmaj3() { - int day, hour, minute; - - updateHour(day, hour, minute); - if (minute == 30) - minute = 1; - hour += day * 24; - minute += hour * 2; - g_s._fullHour = chr(minute); -} - /** * Engine function - Handle OpCodes * @remarks Originally called 'tsitu' @@ -2655,9 +2649,26 @@ void MortevielleEngine::handleOpcode() { mennor(); } -/* NIVEAU 1 */ +/** + * Engine function - Transform time into a char + * @remarks Originally called 'tmaj3' + */ +void MortevielleEngine::hourToChar() { + int day, hour, minute; + + g_vm->updateHour(day, hour, minute); + if (minute == 30) + minute = 1; + hour += day * 24; + minute += hour * 2; + g_s._fullHour = chr(minute); +} -void theure() { +/** + * Engine function - extract time from a char + * @remarks Originally called 'theure' + */ +void MortevielleEngine::charToHour() { int fullHour = ord(g_s._fullHour); int tmpHour = fullHour % 48; g_vm->_currDay = fullHour / 48; diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 4b3dd9d4db..528039c6ba 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -68,7 +68,6 @@ extern void ecr2(Common::String str_); extern void ecr3(Common::String text); extern void stop(); extern void paint_rect(int x, int y, int dx, int dy); -extern void updateHour(int &day, int &hour, int &minute); extern int convertCharacterIndexToBitIndex(int characterIndex); /* NIVEAU 12 */ extern void modobj(int m); @@ -79,7 +78,6 @@ extern void drawClock(); * NIVEAU 11 * *************/ extern void debloc(int roomId); -extern void getKnockAnswer(); extern int convertBitIndexToCharacterIndex(int bitIndex); extern void ecfren(int &p, int &rand, int cf, int roomId); extern void becfren(int roomId); @@ -97,7 +95,7 @@ extern void dessin(int ad); extern void tinke(); extern void fenat(char ans); /* NIVEAU 8 */ -extern void afdes(int ad); +extern void afdes(); extern void tkey1(bool d); /* NIVEAU 7 */ extern void tlu(int af, int ob); @@ -128,13 +126,5 @@ extern void maivid(); extern void st13(int ob); extern void aldepl(); -extern void changeGraphicalDevice(int newDevice); - -/* NIVEAU 3 */ -/* procedure PROGRAMME */ -extern void tmaj3(); - -/* NIVEAU 1 */ -extern void theure(); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 6e7726bb35..3667a135c1 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -164,7 +164,7 @@ Common::ErrorCode MortevielleEngine::initialise() { return result; // Load some error messages (was previously in chartex()) - g_hintPctMessage = deline(580); // You should have noticed %d hints + _hintPctMessage = deline(580); // You should have noticed %d hints // Set default EGA palette _paletteManager.setDefaultPalette(); @@ -287,6 +287,11 @@ void MortevielleEngine::readStaticStrings(Common::File &f, int dataSize, DataTyp assert(dataSize == 0); } +/** + * Check is a key was pressed + * It also delays the engine and check if the screen has to be updated + * @remarks Originally called 'keypressed' + */ bool MortevielleEngine::keyPressed() { // Check for any pending key presses handleEvents(); @@ -305,10 +310,14 @@ bool MortevielleEngine::keyPressed() { return !_keypresses.empty(); } +/** + * Wait for a keypress + * @remarks Originally called 'get_ch' + */ int MortevielleEngine::getChar() { // If there isn't any pending keypress, wait until there is while (!shouldQuit() && _keypresses.empty()) { - keypressed(); + keyPressed(); } // Return the top keypress @@ -496,7 +505,7 @@ Common::Error MortevielleEngine::run() { // Either load the initial game state savegame, or the specified savegame number adzon(); - _savegameManager.takesav(loadSlot); + _savegameManager.loadSavegame(loadSlot); // Run the main game loop mainGame(); @@ -537,7 +546,7 @@ void MortevielleEngine::mainGame() { loadBRUIT5(); _menu.initMenu(); - theure(); + charToHour(); initGame(); hirs(); drawRightFrame(); @@ -613,7 +622,7 @@ void MortevielleEngine::handleAction() { if (_menu._menuSelected && (g_msg[3] == MENU_LOAD)) _savegameManager.loadGame((g_msg[4] & 7) - 1); if (inkey == '\103') { /* F9 */ - temps = Alert::show(g_hintPctMessage, 1); + temps = Alert::show(_hintPctMessage, 1); return; } else if (inkey == '\77') { if ((g_mnumo != OPCODE_NONE) && ((g_msg[3] == MENU_ACTION) || (g_msg[3] == MENU_SELF))) { @@ -629,7 +638,7 @@ void MortevielleEngine::handleAction() { } if (inkey == '\73') { _quitGame = true; - tmaj3(); + hourToChar(); } else { if ((funct) && (inkey != '\77')) return; diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 3422767e6c..aeaf5e27d1 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -112,6 +112,8 @@ private: void playGame(); void handleAction(); public: + Common::String _hintPctMessage; + bool _roomPresenceLuc; bool _roomPresenceIda; bool _purpleRoomPresenceLeo; @@ -281,6 +283,12 @@ public: void prepareScreenType1(); void prepareScreenType2(); void prepareScreenType3(); + void updateHour(int &day, int &hour, int &minute); + void getKnockAnswer(); + void charToHour(); + void hourToChar(); + + void changeGraphicalDevice(int newDevice); }; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 2eec6ab2b5..401a2b3f7b 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -296,7 +296,7 @@ void moveMouse(bool &funct, char &key) { // Set defaults and check pending events funct = false; key = '\377'; - p_key = keypressed(); + p_key = g_vm->keyPressed(); // If mouse button clicked, return it if (g_vm->getMouseClick()) @@ -306,7 +306,7 @@ void moveMouse(bool &funct, char &key) { while (p_key) { CHECK_QUIT; - in1 = get_ch(); + in1 = g_vm->getChar(); getMousePos_(cx, cy, cd); switch (toupper(in1)) { case '4': @@ -347,10 +347,10 @@ void moveMouse(bool &funct, char &key) { return; break; case '\33': - p_key = keypressed(); + p_key = g_vm->keyPressed(); if (p_key) { - in2 = get_ch(); + in2 = g_vm->getChar(); if ((in2 >= ';') && (in2 <= 'D')) { funct = true; @@ -439,7 +439,7 @@ void moveMouse(bool &funct, char &key) { } setMousePos(cx, cy); - p_key = keypressed(); + p_key = g_vm->keyPressed(); } } diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 45cbb1b420..c93107cc13 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -211,7 +211,7 @@ void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ) xc = x; yc += 6; if (yc > yf) { - while (!keypressed()) + while (!g_vm->keyPressed()) ; i = y; do { @@ -303,7 +303,6 @@ void taffich() { int32 lgt; int alllum[16]; - int a = g_caff; if ((a >= 153) && (a <= 161)) a = tran2[a - 153]; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 9605adcff3..9b0f72c8e0 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -158,13 +158,13 @@ void music() { bool fin = false; int k = 0; do { - fin = keypressed(); + fin = g_vm->keyPressed(); g_vm->_soundManager.musyc(g_tbi, 9958, kTempoMusic); ++k; - fin = fin | keypressed() | (k >= 5); + fin = fin | g_vm->keyPressed() | (k >= 5); } while (!fin); - while (keypressed()) - get_ch(); // input >> kbd >> ch; + while (g_vm->keyPressed()) + g_vm->getChar(); } diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index f6a3defab3..d054308cf3 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -72,11 +72,9 @@ void SavegameManager::sync_save(Common::Serializer &sz) { /** * Inner code for loading a saved game + * @remarks Originally called 'takesav' */ -void SavegameManager::takesav(int n) { - int i; - Common::String st; - +void SavegameManager::loadSavegame(int n) { // -- Load the file Common::String filename = generateSaveName(n); @@ -110,7 +108,7 @@ void SavegameManager::takesav(int n) { sync_save(sz); g_s = g_s1; - for (i = 0; i <= 389; ++i) + for (int i = 0; i <= 389; ++i) g_tabdon[i + acha] = g_bufcha[i]; // Close the stream @@ -123,10 +121,10 @@ void SavegameManager::takesav(int n) { Common::Error SavegameManager::loadGame(int n) { hideMouse(); maivid(); - takesav(n); + loadSavegame(n); /* Initialization */ - theure(); + g_vm->charToHour(); g_vm->initGame(); g_vm->gameLoaded(); showMouse(); @@ -141,7 +139,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { int i; hideMouse(); - tmaj3(); + g_vm->hourToChar(); for (i = 0; i <= 389; ++i) g_bufcha[i] = g_tabdon[i + acha]; diff --git a/engines/mortevielle/saveload.h b/engines/mortevielle/saveload.h index 7f2edd8b53..c1c3c80c09 100644 --- a/engines/mortevielle/saveload.h +++ b/engines/mortevielle/saveload.h @@ -51,7 +51,7 @@ class SavegameManager { private: void sync_save(Common::Serializer &sz); public: - void takesav(int n); + void loadSavegame(int n); Common::Error loadGame(int n); Common::Error saveGame(int n, const Common::String &saveName); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 58f49561f7..495487c33e 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -115,8 +115,6 @@ int g_x, int g_t_cph[6401]; byte g_tabdon[4001]; - -Common::String g_hintPctMessage; // Provides the % of hints byte g_is; int g_nbrep[9]; @@ -190,13 +188,6 @@ int getRandomNumber(int minval, int maxval) { return g_vm->_randomSource.getRandomNumber(maxval - minval) + minval; } -bool keypressed() { - return g_vm->keyPressed(); -} -char get_ch() { - return g_vm->getChar(); -} - /** * Restore a screen sectio */ diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index c9f6ed7b64..19bde4088e 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -221,7 +221,6 @@ extern int g_x, extern int g_t_cph[6401]; // Speech extern byte g_tabdon[4001]; -extern Common::String g_hintPctMessage; // gives the pct of hints found extern byte g_is; extern int g_nbrep[9]; @@ -264,17 +263,11 @@ extern byte g_mem[65536 * 16]; #define hires {} -// Stubs for input functions -extern bool keypressed(); -extern char get_ch(); - extern void palette(int v1); extern void intr(int intNum, registres ®s); extern int getRandomNumber(int minval, int maxval); -// (* external 'c:\mc\charecr.com'; *) extern void s_char(int Gd, int y, int dy); -// (* external 'c:\mc\sauvecr.com'; *) extern void s_sauv(int Gd, int y, int dy); } // End of namespace Mortevielle -- cgit v1.2.3 From 1c283507ee0dab8f960bdbe249f837a95c4b6e2b Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 19 Mar 2012 07:44:56 +0100 Subject: MORTEVIELLE: Some more renaming, introduce MouseHandler --- engines/mortevielle/actions.cpp | 40 +- engines/mortevielle/dialogs.cpp | 46 +- engines/mortevielle/dialogs.h | 2 +- engines/mortevielle/graphics.cpp | 4 +- engines/mortevielle/menu.cpp | 12 +- engines/mortevielle/mor.cpp | 1457 +---------------------------------- engines/mortevielle/mor.h | 10 - engines/mortevielle/mortevielle.cpp | 1390 ++++++++++++++++++++++++++++++++- engines/mortevielle/mortevielle.h | 10 + engines/mortevielle/mouse.cpp | 36 +- engines/mortevielle/mouse.h | 38 +- engines/mortevielle/outtext.cpp | 4 +- engines/mortevielle/ovd1.cpp | 2 +- engines/mortevielle/saveload.cpp | 8 +- 14 files changed, 1532 insertions(+), 1527 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 944ac9fc2f..7949d93b38 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -700,12 +700,12 @@ void MortevielleEngine::fctPlace() { Alert::show(alertTxt, 1); bool enterPassageFl = KnowledgeCheck::show(); - hideMouse(); + _mouse.hideMouse(); hirs(); drawRightFrame(); clearScreenType2(); clearScreenType3(); - showMouse(); + _mouse.showMouse(); tinke(); drawClock(); if (_currBitIndex != 0) @@ -1357,10 +1357,10 @@ void MortevielleEngine::fctDiscuss() { } tkey1(false); mennor(); - hideMouse(); + _mouse.hideMouse(); hirs(); premtet(); - sparl(0, suj); + startDialog(suj); hirs(); for (int ix = 1; ix <= 46; ++ix) te[ix] = false; @@ -1371,7 +1371,7 @@ void MortevielleEngine::fctDiscuss() { } lib[46] = lib[45]; lib[45] = ' '; - showMouse(); + _mouse.showMouse(); do { choi = 0; icm = 0; @@ -1397,10 +1397,10 @@ void MortevielleEngine::fctDiscuss() { writetp(lib[46], 0); tou = '\0'; do { - moveMouse(f, tou); + _mouse.moveMouse(f, tou); CHECK_QUIT; - getMousePos_(x, y, c); + _mouse.getMousePos_(x, y, c); x *= (3 - g_res); if (x > 319) cx = 41; @@ -1482,11 +1482,11 @@ void MortevielleEngine::fctDiscuss() { g_s._faithScore += 3; suj = 139; } - hideMouse(); + _mouse.hideMouse(); hirs(); premtet(); - sparl(0, suj); - showMouse(); + startDialog(suj); + _mouse.showMouse(); if ((suj == 84) || (suj == 86)) { g_s._pourc[5] = '*'; g_s._teauto[7] = '*'; @@ -1500,26 +1500,26 @@ void MortevielleEngine::fctDiscuss() { g_s._pourc[8] = '*'; g_s._teauto[32] = '*'; } - hideMouse(); + _mouse.hideMouse(); hirs(); - showMouse(); + _mouse.showMouse(); } } while ((choi != 46) && (suj != 138)); if (_col) { g_s._faithScore += (3 * (g_s._faithScore / 10)); - hideMouse(); + _mouse.hideMouse(); hirs(); premtet(); - sparl(0, 138); - showMouse(); + startDialog(138); + _mouse.showMouse(); _col = false; g_s._currPlace = LANDING; } g_ctrm = 0; - hideMouse(); + _mouse.hideMouse(); hirs(); drawRightFrame(); - showMouse(); + _mouse.showMouse(); showPeoplePresent(_currBitIndex); tinke(); drawClock(); @@ -1574,13 +1574,13 @@ void MortevielleEngine::endGame() { clearScreenType3(); repon(9, 1509); tkey1(false); - hideMouse(); + _mouse.hideMouse(); g_caff = 70; taffich(); hirs(); premtet(); - sparl(0, 141); - showMouse(); + startDialog(141); + _mouse.showMouse(); clearScreenType1(); repon(9, 1509); repon(2, 142); diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index dbbd8c5896..f1faee0daa 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -44,7 +44,6 @@ int Alert::show(const Common::String &msg, int n) { int coldep, esp, i, caseNumb, quoi, ix; Common::String st, chaine; int limit[3][3]; - char dumi; Common::String s[3]; int cx, cy, nbcol, lignNumb; bool newaff, test, test1, test2, test3, dum; @@ -55,9 +54,9 @@ int Alert::show(const Common::String &msg, int n) { memset(&limit[0][0], 0, sizeof(int) * 3 * 3); int do_alert_result; - hideMouse(); + g_vm->_mouse.hideMouse(); while (g_vm->keyPressed()) - dumi = g_vm->getChar(); + g_vm->getChar(); g_vm->setMouseClick(false); decodeAlertDetails(msg, caseNumb, lignNumb, nbcol, chaine, cas); @@ -101,16 +100,16 @@ int Alert::show(const Common::String &msg, int n) { limit[2][1] = ((uint)(320 + ((uint)esp >> 1)) >> 1) * g_res; limit[2][2] = (limit[2][1]) + 40; } - showMouse(); + g_vm->_mouse.showMouse(); quoi = 0; dum = false; do { - dumi = '\377'; - moveMouse(dum, dumi); + char dummyKey = '\377'; + g_vm->_mouse.moveMouse(dum, dummyKey); CHECK_QUIT0; - cx = x_s; - cy = y_s; + cx = g_vm->_mouse.x_s; + cy = g_vm->_mouse.y_s; test = (cy > 95) && (cy < 105); newaff = false; if (test) { @@ -125,7 +124,7 @@ int Alert::show(const Common::String &msg, int n) { else ix = 2; if (ix != quoi) { - hideMouse(); + g_vm->_mouse.hideMouse(); if (quoi != 0) { setPosition(quoi, coldep, esp); @@ -142,12 +141,12 @@ int Alert::show(const Common::String &msg, int n) { g_vm->_screenSurface.drawString(tmp2, 1); quoi = ix; - showMouse(); + g_vm->_mouse.showMouse(); } } } if ((quoi != 0) && ! newaff) { - hideMouse(); + g_vm->_mouse.hideMouse(); setPosition(quoi, coldep, esp); Common::String tmp3(" "); @@ -156,13 +155,13 @@ int Alert::show(const Common::String &msg, int n) { g_vm->_screenSurface.drawString(tmp3, 0); quoi = 0; - showMouse(); + g_vm->_mouse.showMouse(); } test3 = (cy > 95) && (cy < 105) && (((cx > limit[1][1]) && (cx < limit[1][2])) || ((cx > limit[2][1]) && (cx < limit[2][2]))); } while (!g_vm->getMouseClick()); g_vm->setMouseClick(false); - hideMouse(); + g_vm->_mouse.hideMouse(); if (!test3) { quoi = n; setPosition(n, coldep, esp); @@ -172,7 +171,7 @@ int Alert::show(const Common::String &msg, int n) { g_vm->_screenSurface.drawString(tmp4, 1); } charecr(50, (NUM_LINES + 1) << 4); - showMouse(); + g_vm->_mouse.showMouse(); /* Restore the background area */ g_vm->_screenSurface.copyFrom(g_vm->_backgroundSurface, 0, 0); @@ -299,9 +298,9 @@ bool KnowledgeCheck::show() { int correctCount = 0; for (int indx = 0; indx < 10; ++indx) { - hideMouse(); + g_vm->_mouse.hideMouse(); hirs(); - showMouse(); + g_vm->_mouse.showMouse(); int dialogHeight; if (g_res == 1) dialogHeight = 29; @@ -355,11 +354,11 @@ bool KnowledgeCheck::show() { do { g_vm->setMouseClick(false); bool flag; - moveMouse(flag, key); + g_vm->_mouse.moveMouse(flag, key); CHECK_QUIT0; currChoice = 1; - while (coor[currChoice]._enabled && !isMouseIn(coor[currChoice])) + while (coor[currChoice]._enabled && !g_vm->_mouse.isMouseIn(coor[currChoice])) ++currChoice; if (coor[currChoice]._enabled) { if ((prevChoice != 0) && (prevChoice != currChoice)) { @@ -425,7 +424,7 @@ void f3f8::checkForF8(int SpeechNum, bool drawAni50Fl) { teskbd(); do { g_vm->_speechManager.startSpeech(SpeechNum, 0, 0); - waitForF3F8(g_key); + g_key = waitForF3F8(); CHECK_QUIT; if (g_vm->_newGraphicalDevice != g_vm->_currGraphicalDevice) { @@ -440,11 +439,16 @@ void f3f8::checkForF8(int SpeechNum, bool drawAni50Fl) { * Alert function - Loop until F3 or F8 is pressed * @remarks Originally called 'atf3f8' */ -void f3f8::waitForF3F8(int &key) { +int f3f8::waitForF3F8() { + int key; + do { key = testou(); - CHECK_QUIT; + if (g_vm->shouldQuit()) + return key; } while ((key != 61) && (key != 66)); + + return key; } void f3f8::aff50(bool drawAni50Fl) { diff --git a/engines/mortevielle/dialogs.h b/engines/mortevielle/dialogs.h index eaab56d7e2..40109c894b 100644 --- a/engines/mortevielle/dialogs.h +++ b/engines/mortevielle/dialogs.h @@ -54,7 +54,7 @@ class f3f8 { public: static void draw(); static void checkForF8(int SpeechNum, bool drawAni50Fl); - static void waitForF3F8(int &key); + static int waitForF3F8(); static void aff50(bool drawAni50Fl); static void ani50(); }; diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 1c26a5cea1..dc63e05c22 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -1056,7 +1056,7 @@ void ScreenSurface::drawString(const Common::String &l, int command) { if (l == "") return; - hideMouse(); + g_vm->_mouse.hideMouse(); pt = _textPos; if (g_res == 2) @@ -1094,7 +1094,7 @@ void ScreenSurface::drawString(const Common::String &l, int command) { g_vm->_screenSurface.writeCharacter(Common::Point(pt.x, pt.y), ord(l[x - 1]), cecr); pt.x += i; } - showMouse(); + g_vm->_mouse.showMouse(); } /** diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index a28df25634..3f5db6de9a 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -169,7 +169,7 @@ void Menu::displayMenu() { int pt, x, y, color, msk, num_letr; - hideMouse(); + g_vm->_mouse.hideMouse(); g_vm->_screenSurface.fillRect(7, Common::Rect(0, 0, 639, 10)); col = 28 * g_res; @@ -203,7 +203,7 @@ void Menu::displayMenu() { } while (y != 9); col += 48 * g_res; } while (num_letr != 6); - showMouse(); + g_vm->_mouse.showMouse(); } /** @@ -310,7 +310,7 @@ void Menu::menuDown(int ii) { // Draw the menu xco = g_menuConstants[ii - 1][0]; nb_lig = g_menuConstants[ii - 1][3]; - hideMouse(); + g_vm->_mouse.hideMouse(); sauvecr(10, (g_menuConstants[ii - 1][1] + 1) << 1); xco = xco << 3; if (g_res == 1) @@ -376,7 +376,7 @@ void Menu::menuDown(int ii) { g_vm->_screenSurface.putxy(xco, g_vm->_screenSurface._textPos.y + 8); } while (cx != nb_lig); _multiTitle = true; - showMouse(); + g_vm->_mouse.showMouse(); } /** @@ -417,8 +417,8 @@ void Menu::mdn() { if (!_menuActive) return; - int x = x_s; - int y = y_s; + int x = g_vm->_mouse.x_s; + int y = g_vm->_mouse.y_s; if (!g_vm->getMouseClick()) { if ((x == g_xprec) && (y == g_yprec)) return; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 5bba9c5aed..439d9255e2 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -53,20 +53,6 @@ void copcha() { } while (i != acha + 390); } -/** - * Engine function : Is mouse in a given rect? - * @remarks Originally called 'dans_rect' - */ -bool isMouseIn(rectangle r) { - int x, y, c; - - getMousePos_(x, y, c); - if ((x > r._x1) && (x < r._x2) && (y > r._y1) && (y < r._y2)) - return true; - - return false; -} - void outbloc(int n, pattern p, nhom *pal) { int ad = n * 404 + 0xd700; @@ -124,15 +110,15 @@ void pictout(int seg, int dep, int x, int y) { } void sauvecr(int y, int dy) { - hideMouse(); + g_vm->_mouse.hideMouse(); s_sauv(g_vm->_currGraphicalDevice, y, dy); - showMouse(); + g_vm->_mouse.showMouse(); } void charecr(int y, int dy) { - hideMouse(); + g_vm->_mouse.hideMouse(); s_char(g_vm->_currGraphicalDevice, y, dy); - showMouse(); + g_vm->_mouse.showMouse(); } void adzon() { @@ -224,10 +210,10 @@ void modif(int &nu) { void dessine(int ad, int x, int y) { - hideMouse(); + g_vm->_mouse.hideMouse(); writepal(g_numpal); pictout(ad, 0, x, y); - showMouse(); + g_vm->_mouse.showMouse(); } /** @@ -239,17 +225,9 @@ void drawRightFrame() { if (g_vm->_currGraphicalDevice == MODE_HERCULES) { g_mem[0x7000 * 16 + 14] = 15; } - hideMouse(); + g_vm->_mouse.hideMouse(); pictout(0x73a2, 0, 0, 0); - showMouse(); -} - -/** - * Set Text Color - * @remarks Originally called 'text_color' - */ -void MortevielleEngine::setTextColor(int col) { - _textColor = col; + g_vm->_mouse.showMouse(); } /* NIVEAU 13 */ @@ -273,77 +251,6 @@ void initouv() { g_touv[cx] = chr(0); } -/** - * Engine function - Clear Screen - Type 1 - * @remarks Originally called 'clsf1' - */ -void clearScreenType1() { - hideMouse(); - g_vm->_screenSurface.fillRect(0, Common::Rect(0, 11, 514, 175)); - showMouse(); -} - -/** - * Engine function - Clear Screen - Type 2 - * @remarks Originally called 'clsf2' - */ -void clearScreenType2() { - hideMouse(); - if (g_vm->_largestClearScreen) { - g_vm->_screenSurface.fillRect(0, Common::Rect(1, 176, 633, 199)); - g_vm->_screenSurface.drawBox(0, 175, 634, 24, 15); - g_vm->_largestClearScreen = false; - } else { - g_vm->_screenSurface.fillRect(0, Common::Rect(1, 176, 633, 190)); - g_vm->_screenSurface.drawBox(0, 175, 634, 15, 15); - } - showMouse(); -} - -/** - * Engine function - Clear Screen - Type 3 - * @remarks Originally called 'clsf3' - */ -void clearScreenType3() { - hideMouse(); - g_vm->_screenSurface.fillRect(0, Common::Rect(1, 192, 633, 199)); - g_vm->_screenSurface.drawBox(0, 191, 634, 8, 15); - showMouse(); -} - -/** - * Engine function - Clear Screen - Type 10 - * @remarks Originally called 'clsf10' - */ -void clearScreenType10() { - int co, cod; - Common::String st; - - hideMouse(); - if (g_res == 1) { - co = 634; - cod = 534; - } else { - co = 600; - cod = 544; - } - g_vm->_screenSurface.fillRect(15, Common::Rect(cod, 93, co, 98)); - if (g_s._faithScore < 33) - st = g_vm->getEngineString(S_COOL); - else if (g_s._faithScore < 66) - st = g_vm->getEngineString(S_LOURDE); - else if (g_s._faithScore > 65) - st = g_vm->getEngineString(S_MALSAINE); - - co = 580 - (g_vm->_screenSurface.getStringWidth(st) / 2); - g_vm->_screenSurface.putxy(co, 92); - g_vm->_screenSurface.drawString(st, 4); - - g_vm->_screenSurface.fillRect(15, Common::Rect(560, 24, 610, 86)); - /* rempli(69,12,32,5,255);*/ - showMouse(); -} - void ecr2(Common::String str_) { // Some dead code was present in the original: removed g_vm->_screenSurface.putxy(8, 177); @@ -358,7 +265,7 @@ void ecr2(Common::String str_) { g_vm->_screenSurface.drawString(copy(str_, tlig, tlig << 1), 5); } else { g_vm->_largestClearScreen = true; - clearScreenType2(); + g_vm->clearScreenType2(); g_vm->_screenSurface.putxy(8, 176); g_vm->_screenSurface.drawString(copy(str_, 1, (tlig - 1)), 5); g_vm->_screenSurface.putxy(8, 182); @@ -369,36 +276,11 @@ void ecr2(Common::String str_) { } void ecr3(Common::String text) { - clearScreenType3(); + g_vm->clearScreenType3(); g_vm->_screenSurface.putxy(8, 192); g_vm->_screenSurface.drawString(text, 5); } -/** - * Prepare screen - Type 1! - * @remarks Originally called 'ecrf1' - */ -void MortevielleEngine::prepareScreenType1() { - // Large drawing - _screenSurface.drawBox(0, 11, 512, 163, 15); -} - -/** - * Prepare room - Type 2! - * @remarks Originally called 'ecrf2' - */ -void MortevielleEngine::prepareScreenType2() { - setTextColor(5); -} - -/** - * Prepare room - Type 3! - * @remarks Originally called 'ecrf7' - */ -void MortevielleEngine::prepareScreenType3() { - setTextColor(4); -} - void stop() { hirs(); g_vm->_currGraphicalDevice = MODE_AMSTRAD1512; @@ -416,31 +298,6 @@ void paint_rect(int x, int y, int dx, int dy) { g_vm->_screenSurface.fillRect(co, Common::Rect(x, y, x + dx, y + dy)); } -/** - * Engine function - Update hour - * @remarks Originally called 'calch' - */ -void MortevielleEngine::updateHour(int &day, int &hour, int &minute) { - int newHour = readclock(); - int th = g_jh + ((newHour - g_mh) / g_t); - minute = ((th % 2) + _currHalfHour) * 30; - hour = ((uint)th >> 1) + _currHour; - if (minute == 60) { - minute = 0; - ++hour; - } - day = (hour / 24) + _currDay; - hour = hour - ((day - _currDay) * 24); -} - -/** - * Engine function - Convert character index to bit index - * @remarks Originally called 'conv' - */ -int convertCharacterIndexToBitIndex(int characterIndex) { - return 128 >> (characterIndex - 1); -} - /* NIVEAU 12 */ void modobj(int m) { Common::String strp = Common::String(' '); @@ -461,14 +318,14 @@ void repon(int f, int m) { else g_vm->_largestClearScreen = false; - clearScreenType2(); + g_vm->clearScreenType2(); displayStr(tmpStr, 8, 176, 85, 3, 5); } else { modif(m); switch (f) { case 2: case 8: - clearScreenType2(); + g_vm->clearScreenType2(); g_vm->prepareScreenType2(); text1(8, 182, 103, m); if ((m == 68) || (m == 69)) @@ -505,261 +362,6 @@ void repon(int f, int m) { } } -/** - * Engine function - Reset presence in other rooms - * @remarks Originally called 't5' - */ -void MortevielleEngine::resetPresenceInRooms(int roomId) { - if (roomId == DINING_ROOM) - _blo = false; - - if (roomId != GREEN_ROOM) { - _roomPresenceLuc = false; - _roomPresenceIda = false; - } - - if (roomId != PURPLE_ROOM) - _purpleRoomPresenceLeo = false; - - if (roomId != DARKBLUE_ROOM) { - _roomPresenceGuy = false; - _roomPresenceEva = false; - } - - if (roomId != BLUE_ROOM) - _roomPresenceMax = false; - if (roomId != RED_ROOM) - _roomPresenceBob = false; - if (roomId != GREEN_ROOM2) - _roomPresencePat = false; - if (roomId != TOILETS) - _toiletsPresenceBobMax = false; - if (roomId != BATHROOM) - _bathRoomPresenceBobMax = false; - if (roomId != ROOM9) - _room9PresenceLeo = false; -} - -/** - * Engine function - Show the people present in the given room - * @remarks Originally called 'affper' - */ -void MortevielleEngine::showPeoplePresent(int bitIndex) { - int xp = 580 - (_screenSurface.getStringWidth("LEO") / 2); - - for (int i = 1; i <= 8; ++i) - _menu.disableMenuItem(_menu._discussMenu[i]); - - clearScreenType10(); - if ((bitIndex & 128) == 128) { - _screenSurface.putxy(xp, 24); - _screenSurface.drawString("LEO", 4); - _menu.enableMenuItem(_menu._discussMenu[1]); - } - if ((bitIndex & 64) == 64) { - _screenSurface.putxy(xp, 32); - _screenSurface.drawString("PAT", 4); - _menu.enableMenuItem(_menu._discussMenu[2]); - } - if ((bitIndex & 32) == 32) { - _screenSurface.putxy(xp, 40); - _screenSurface.drawString("GUY", 4); - _menu.enableMenuItem(_menu._discussMenu[3]); - } - if ((bitIndex & 16) == 16) { - _screenSurface.putxy(xp, 48); - _screenSurface.drawString("EVA", 4); - _menu.enableMenuItem(_menu._discussMenu[4]); - } - if ((bitIndex & 8) == 8) { - _screenSurface.putxy(xp, 56); - _screenSurface.drawString("BOB", 4); - _menu.enableMenuItem(_menu._discussMenu[5]); - } - if ((bitIndex & 4) == 4) { - _screenSurface.putxy(xp, 64); - _screenSurface.drawString("LUC", 4); - _menu.enableMenuItem(_menu._discussMenu[6]); - } - if ((bitIndex & 2) == 2) { - _screenSurface.putxy(xp, 72); - _screenSurface.drawString("IDA", 4); - _menu.enableMenuItem(_menu._discussMenu[7]); - } - if ((bitIndex & 1) == 1) { - _screenSurface.putxy(xp, 80); - _screenSurface.drawString("MAX", 4); - _menu.enableMenuItem(_menu._discussMenu[8]); - } - _currBitIndex = bitIndex; -} - -/** - * Engine function - Select random characters - * @remarks Originally called 'choix' - */ -int MortevielleEngine::selectCharacters(int min, int max) { - bool invertSelection = false; - int rand = getRandomNumber(min, max); - - if (rand > 4) { - rand = 8 - rand; - invertSelection = true; - } - - int i = 0; - int retVal = 0; - while (i < rand) { - int charIndex = getRandomNumber(1, 8); - int charBitIndex = convertCharacterIndexToBitIndex(charIndex); - if ((retVal & charBitIndex) != charBitIndex) { - ++i; - retVal |= charBitIndex; - } - } - if (invertSelection) - retVal = 255 - retVal; - - return retVal; -} - -/** - * Engine function - Get Presence Statistics - Green Room - * @remarks Originally called 'cpl1' - */ -int MortevielleEngine::getPresenceStatsGreenRoom() { - int day, hour, minute; - int retVal = 0; - - updateHour(day, hour, minute); - // The original uses an || instead of an &&, resulting - // in an always true condition. Based on the other tests, - // and on other scenes, we use an && instead. - if ((hour > 7) && (hour < 11)) - retVal = 25; - else if ((hour > 10) && (hour < 14)) - retVal = 35; - else if ((hour > 13) && (hour < 16)) - retVal = 50; - else if ((hour > 15) && (hour < 18)) - retVal = 5; - else if ((hour > 17) && (hour < 22)) - retVal = 35; - else if ((hour > 21) && (hour < 24)) - retVal = 50; - else if ((hour >= 0) && (hour < 8)) - retVal = 70; - - _menu.mdn(); - - return retVal; -} -/** - * Engine function - Get Presence Statistics - Purple Room - * @remarks Originally called 'cpl2' - */ -int MortevielleEngine::getPresenceStatsPurpleRoom() { - int day, hour, minute; - int retVal = 0; - - updateHour(day, hour, minute); - if ((hour > 7) && (hour < 11)) - retVal = -2; - else if (hour == 11) - retVal = 100; - else if ((hour > 11) && (hour < 23)) - retVal = 10; - else if (hour == 23) - retVal = 20; - else if ((hour >= 0) && (hour < 8)) - retVal = 50; - - return retVal; -} - -/** - * Engine function - Get Presence Statistics - Toilets - * @remarks Originally called 'cpl3' - */ -int MortevielleEngine::getPresenceStatsToilets() { - int day, hour, minute; - int retVal = 0; - - updateHour(day, hour, minute); - if (((hour > 8) && (hour < 10)) || ((hour > 19) && (hour < 24))) - retVal = 34; - else if (((hour > 9) && (hour < 20)) || ((hour >= 0) && (hour < 9))) - retVal = 0; - - return retVal; -} - -/** - * Engine function - Get Presence Statistics - Blue Room - * @remarks Originally called 'cpl5' - */ -int MortevielleEngine::getPresenceStatsBlueRoom() { - int day, hour, minute; - int retVal = 0; - - updateHour(day, hour, minute); - if ((hour > 6) && (hour < 10)) - retVal = 0; - else if (hour == 10) - retVal = 100; - else if ((hour > 10) && (hour < 24)) - retVal = 15; - else if ((hour >= 0) && (hour < 7)) - retVal = 50; - - return retVal; -} - -/** - * Engine function - Get Presence Statistics - Red Room - * @remarks Originally called 'cpl6' - */ -int MortevielleEngine::getPresenceStatsRedRoom() { - int day, hour, minute; - int retVal = 0; - - updateHour(day, hour, minute); - if (((hour > 7) && (hour < 13)) || ((hour > 17) && (hour < 20))) - retVal = -2; - else if (((hour > 12) && (hour < 17)) || ((hour > 19) && (hour < 24))) - retVal = 35; - else if (hour == 17) - retVal = 100; - else if ((hour >= 0) && (hour < 8)) - retVal = 60; - - return retVal; -} - -/** - * Shows the "you are alone" message in the status area - * on the right hand side of the screen - * @remarks Originally called 'person' - */ -void MortevielleEngine::displayAloneText() { - for (int cf = 1; cf <= 8; ++cf) - _menu.disableMenuItem(_menu._discussMenu[cf]); - - Common::String sYou = getEngineString(S_YOU); - Common::String sAre = getEngineString(S_ARE); - Common::String sAlone = getEngineString(S_ALONE); - - clearScreenType10(); - _screenSurface.putxy(580 - (_screenSurface.getStringWidth(sYou) / 2), 30); - _screenSurface.drawString(sYou, 4); - _screenSurface.putxy(580 - (_screenSurface.getStringWidth(sAre) / 2), 50); - _screenSurface.drawString(sAre, 4); - _screenSurface.putxy(580 - (_screenSurface.getStringWidth(sAlone) / 2), 70); - _screenSurface.drawString(sAlone, 4); - - _currBitIndex = 0; -} - int chlm() { int retval = getRandomNumber(1, 2); if (retval == 2) @@ -782,7 +384,7 @@ void drawClock() { const int rg = 9; int h, co; - hideMouse(); + g_vm->_mouse.hideMouse(); paint_rect(570, 118, 20, 10); paint_rect(578, 114, 6, 18); @@ -803,7 +405,7 @@ void drawClock() { h = 12; g_vm->_screenSurface.drawLine(((uint)x >> 1) * g_res, y, ((uint)(x + cv[0][h - 1]) >> 1) * g_res, y + cv[1][h - 1], co); - showMouse(); + g_vm->_mouse.showMouse(); g_vm->_screenSurface.putxy(568, 154); if (g_vm->_hour > 11) @@ -832,391 +434,6 @@ void debloc(int roomId) { g_mpers = g_vm->_currBitIndex; } -/** - * Engine function - Get Presence Statistics - Room Bureau - * @remarks Originally called 'cpl10' - */ -int MortevielleEngine::getPresenceStatsDiningRoom(int &hour) { - int day, minute; - - int retVal = 0; - updateHour(day, hour, minute); - if (((hour > 7) && (hour < 11)) || ((hour > 11) && (hour < 14)) || ((hour > 18) && (hour < 21))) - retVal = 100; - else if ((hour == 11) || ((hour > 20) && (hour < 24))) - retVal = 45; - else if (((hour > 13) && (hour < 17)) || (hour == 18)) - retVal = 35; - else if (hour == 17) - retVal = 60; - else if ((hour >= 0) && (hour < 8)) - retVal = 5; - - return retVal; -} - -/** - * Engine function - Get Presence Statistics - Room Bureau - * @remarks Originally called 'cpl11' - */ -int MortevielleEngine::getPresenceStatsBureau(int &hour) { - int day, minute; - int retVal = 0; - - updateHour(day, hour, minute); - if (((hour > 8) && (hour < 12)) || ((hour > 20) && (hour < 24))) - retVal = 25; - else if (((hour > 11) && (hour < 14)) || ((hour > 18) && (hour < 21))) - retVal = 5; - else if ((hour > 13) && (hour < 17)) - retVal = 55; - else if ((hour > 16) && (hour < 19)) - retVal = 45; - else if ((hour >= 0) && (hour < 9)) - retVal = 0; - - return retVal; -} - -/** - * Engine function - Get Presence Statistics - Room Kitchen - * @remarks Originally called 'cpl12' - */ -int MortevielleEngine::getPresenceStatsKitchen() { - int day, hour, minute; - int retVal = 0; - - updateHour(day, hour, minute); - if (((hour > 8) && (hour < 15)) || ((hour > 16) && (hour < 22))) - retVal = 55; - else if (((hour > 14) && (hour < 17)) || ((hour > 21) && (hour < 24))) - retVal = 25; - else if ((hour >= 0) && (hour < 5)) - retVal = 0; - else if ((hour > 4) && (hour < 9)) - retVal = 15; - - return retVal; -} - -/** - * Engine function - Get Presence Statistics - Room Attic - * @remarks Originally called 'cpl13' - */ -int MortevielleEngine::getPresenceStatsAttic() { - return 0; -} - -/** - * Engine function - Get Presence Statistics - Room Landing - * @remarks Originally called 'cpl15' - */ -int MortevielleEngine::getPresenceStatsLanding() { - int day, hour, minute; - int retVal = 0; - - updateHour(day, hour, minute); - if ((hour > 7) && (hour < 12)) - retVal = 25; - else if ((hour > 11) && (hour < 14)) - retVal = 0; - else if ((hour > 13) && (hour < 18)) - retVal = 10; - else if ((hour > 17) && (hour < 20)) - retVal = 55; - else if ((hour > 19) && (hour < 22)) - retVal = 5; - else if ((hour > 21) && (hour < 24)) - retVal = 15; - else if ((hour >= 0) && (hour < 8)) - retVal = -15; - - return retVal; -} - -/** - * Engine function - Get Presence Statistics - Room Chapel - * @remarks Originally called 'cpl20' - */ -int MortevielleEngine::getPresenceStatsChapel(int &hour) { - int day, minute; - int retVal = 0; - - updateHour(day, hour, minute); - if (hour == 10) - retVal = 65; - else if ((hour > 10) && (hour < 21)) - retVal = 5; - else if ((hour > 20) && (hour < 24)) - retVal = -15; - else if ((hour >= 0) && (hour < 5)) - retVal = -300; - else if ((hour > 4) && (hour < 10)) - retVal = -5; - - return retVal; -} - -/** - * Engine function - Check who is in the Green Room - * @remarks Originally called 'quelq1' - */ -void MortevielleEngine::setPresenceGreenRoom(int roomId) { - int rand = getRandomNumber(1, 2); - if (roomId == GREEN_ROOM) { - if (rand == 1) - _roomPresenceLuc = true; - else - _roomPresenceIda = true; - } else if (roomId == DARKBLUE_ROOM) { - if (rand == 1) - _roomPresenceGuy = true; - else - _roomPresenceEva = true; - } - - _currBitIndex = 10; -} - -/** - * Engine function - Check who is in the Purple Room - * @remarks Originally called 'quelq2' - */ -void MortevielleEngine::setPresencePurpleRoom() { - if (_place == PURPLE_ROOM) - _purpleRoomPresenceLeo = true; - else - _room9PresenceLeo = true; - - _currBitIndex = 10; -} - -/** - * Engine function - Check who is in the Blue Room - * @remarks Originally called 'quelq5' - */ -void MortevielleEngine::setPresenceBlueRoom() { - _roomPresenceMax = true; - _currBitIndex = 10; -} - -/** - * Engine function - Check who is in the Red Room - * @remarks Originally called 'quelq6' - */ -void MortevielleEngine::setPresenceRedRoom(int roomId) { - if (roomId == RED_ROOM) - _roomPresenceBob = true; - else if (roomId == GREEN_ROOM2) - _roomPresencePat = true; - - _currBitIndex = 10; -} - -/** - * Engine function - Check who is in the Dining Room - * @remarks Originally called 'quelq10' - */ -int MortevielleEngine::setPresenceDiningRoom(int hour) { - int retVal = 0; - - if ((hour >= 0) && (hour < 8)) - retVal = chlm(); - else { - int min = 0, max = 0; - if ((hour > 7) && (hour < 10)) { - min = 5; - max = 7; - } else if ((hour > 9) && (hour < 12)) { - min = 1; - max = 4; - } else if (((hour > 11) && (hour < 15)) || ((hour > 18) && (hour < 21))) { - min = 6; - max = 8; - } else if (((hour > 14) && (hour < 19)) || ((hour > 20) && (hour < 24))) { - min = 1; - max = 5; - } - retVal = selectCharacters(min, max); - } - showPeoplePresent(retVal); - - return retVal; -} - -/** - * Engine function - Check who is in the Bureau - * @remarks Originally called 'quelq11' - */ -int MortevielleEngine::setPresenceBureau(int hour) { - int retVal = 0; - - if ((hour >= 0) && (hour < 8)) - retVal = chlm(); - else { - int min = 0, max = 0; - if (((hour > 7) && (hour < 10)) || ((hour > 20) && (hour < 24))) { - min = 1; - max = 3; - } else if (((hour > 9) && (hour < 12)) || ((hour > 13) && (hour < 19))) { - min = 1; - max = 4; - } else if (((hour > 11) && (hour < 14)) || ((hour > 18) && (hour < 21))) { - min = 1; - max = 2; - } - retVal = selectCharacters(min, max); - } - showPeoplePresent(retVal); - - return retVal; -} - -/** - * Engine function - Check who is in the Kitchen - * @remarks Originally called 'quelq12' - */ -int MortevielleEngine::setPresenceKitchen() { - int retVal = chlm(); - showPeoplePresent(retVal); - - return retVal; -} - -/** - * Engine function - Check who is in the Landing - * @remarks Originally called 'quelq15' - */ -int MortevielleEngine::setPresenceLanding() { - bool test = false; - int rand = 0; - do { - rand = getRandomNumber(1, 8); - test = (((rand == 1) && (_purpleRoomPresenceLeo || _room9PresenceLeo)) || - ((rand == 2) && _roomPresencePat) || - ((rand == 3) && _roomPresenceGuy) || - ((rand == 4) && _roomPresenceEva) || - ((rand == 5) && _roomPresenceBob) || - ((rand == 6) && _roomPresenceLuc) || - ((rand == 7) && _roomPresenceIda) || - ((rand == 8) && _roomPresenceMax)); - } while (test); - - int retVal = convertCharacterIndexToBitIndex(rand); - showPeoplePresent(retVal); - - return retVal; -} - -/** - * Engine function - Check who is in the chapel - * @remarks Originally called 'quelq20' - */ -int MortevielleEngine::setPresenceChapel(int hour) { - int retVal = 0; - - if (((hour >= 0) && (hour < 10)) || ((hour > 18) && (hour < 24))) - retVal = chlm(); - else { - int min = 0, max = 0; - if ((hour > 9) && (hour < 12)) { - min = 3; - max = 7; - } else if ((hour > 11) && (hour < 18)) { - min = 1; - max = 2; - } else if (hour == 18) { - min = 2; - max = 4; - } - retVal = selectCharacters(min, max); - } - showPeoplePresent(retVal); - - return retVal; -} - -/** - * Engine function - Get the answer after you known a door - * @remarks Originally called 'frap' - */ -void MortevielleEngine::getKnockAnswer() { - int day, hour, minute; - - updateHour(day, hour, minute); - if ((hour >= 0) && (hour < 8)) - g_crep = 190; - else { - if (getRandomNumber(1, 100) > 70) - g_crep = 190; - else - g_crep = 147; - } -} - -/** - * Engine function - Get Room Presence Bit Index - * @remarks Originally called 'nouvp' - */ -int MortevielleEngine::getPresenceBitIndex(int roomId) { - int bitIndex = 0; - if (roomId == GREEN_ROOM) { - if (_roomPresenceLuc) - bitIndex = 4; // LUC - if (_roomPresenceIda) - bitIndex = 2; // IDA - } else if ( ((roomId == PURPLE_ROOM) && (_purpleRoomPresenceLeo)) - || ((roomId == ROOM9) && (_room9PresenceLeo))) - bitIndex = 128; // LEO - else if (roomId == DARKBLUE_ROOM) { - if (_roomPresenceGuy) - bitIndex = 32; // GUY - if (_roomPresenceEva) - bitIndex = 16; // EVA - } else if ((roomId == BLUE_ROOM) && (_roomPresenceMax)) - bitIndex = 1; // MAX - else if ((roomId == RED_ROOM) && (_roomPresenceBob)) - bitIndex = 8; // BOB - else if ((roomId == GREEN_ROOM2) && (_roomPresencePat)) - bitIndex = 64; // PAT - else if ( ((roomId == TOILETS) && (_toiletsPresenceBobMax)) - || ((roomId == BATHROOM) && (_bathRoomPresenceBobMax)) ) - bitIndex = 9; // BOB + MAX - - if (bitIndex != 9) - showPeoplePresent(bitIndex); - - return bitIndex; -} - -/** - * Engine function - Convert bit index to character index - * @remarks Originally called 'tip' - */ -int convertBitIndexToCharacterIndex(int bitIndex) { - int retVal = 0; - - if (bitIndex == 128) - retVal = 1; - else if (bitIndex == 64) - retVal = 2; - else if (bitIndex == 32) - retVal = 3; - else if (bitIndex == 16) - retVal = 4; - else if (bitIndex == 8) - retVal = 5; - else if (bitIndex == 4) - retVal = 6; - else if (bitIndex == 2) - retVal = 7; - else if (bitIndex == 1) - retVal = 8; - - return retVal; -} - - void ecfren(int &p, int &rand, int cf, int roomId) { if (roomId == OWN_ROOM) g_vm->displayAloneText(); @@ -1337,198 +554,6 @@ void resetVariables() { init_nbrepm(); } -/** - * Engine function - initGame - * @remarks Originally called 'dprog' - */ -void MortevielleEngine::initGame() { - _place = MANOR_FRONT; - g_jh = 0; - if (!g_s._alreadyEnteredManor) - _blo = true; - g_t = kTime1; - g_mh = readclock(); -} - -/** - * Engine function - Set Random Presence - Green Room - * @remarks Originally called 'pl1' - */ -void MortevielleEngine::setRandomPresenceGreenRoom(int cf) { - if ( ((_place == GREEN_ROOM) && (!_roomPresenceLuc) && (!_roomPresenceIda)) - || ((_place == DARKBLUE_ROOM) && (!_roomPresenceGuy) && (!_roomPresenceEva)) ) { - int p = getPresenceStatsGreenRoom(); - int rand; - phaz(rand, p, cf); - - if (rand > p) - displayAloneText(); - else - setPresenceGreenRoom(_place); - } -} - -/** - * Engine function - Set Random Presence - Purple Room - * @remarks Originally called 'pl2' - */ -void MortevielleEngine::setRandomPresencePurpleRoom(int cf) { - if (!_purpleRoomPresenceLeo) { - int p = getPresenceStatsPurpleRoom(); - int rand; - phaz(rand, p, cf); - - if (rand > p) - displayAloneText(); - else - setPresencePurpleRoom(); - } -} - -/** - * Engine function - Set Random Presence - Blue Room - * @remarks Originally called 'pl5' - */ -void MortevielleEngine::setRandomPresenceBlueRoom(int cf) { - if (!_roomPresenceMax) { - int p = getPresenceStatsBlueRoom(); - int rand; - - phaz(rand, p, cf); - - if (rand > p) - displayAloneText(); - else - setPresenceBlueRoom(); - } -} - -/** - * Engine function - Set Random Presence - Red Room - * @remarks Originally called 'pl6' - */ -void MortevielleEngine::setRandomPresenceRedRoom(int cf) { - if ( ((_place == RED_ROOM) && (!_roomPresenceBob)) - || ((_place == GREEN_ROOM2) && (!_roomPresencePat)) ) { - int p = getPresenceStatsRedRoom(); - int rand; - - phaz(rand, p, cf); - - if (rand > p) - displayAloneText(); - else - setPresenceRedRoom(_place); - } -} - -/** - * Engine function - Set Random Presence - Room 9 - * @remarks Originally called 'pl9' - */ -void MortevielleEngine::setRandomPresenceRoom9(int cf) { - if (!_room9PresenceLeo) { - cf = -10; - int p, rand; - phaz(rand, p, cf); - - if (rand > p) - displayAloneText(); - else - setPresencePurpleRoom(); - } -} - -/** - * Engine function - Set Random Presence - Dining Room - * @remarks Originally called 'pl10' - */ -void MortevielleEngine::setRandomPresenceDiningRoom(int cf) { - int h, rand; - int p = getPresenceStatsDiningRoom(h); - phaz(rand, p, cf); - - if (rand > p) - displayAloneText(); - else - setPresenceDiningRoom(h); -} - -/** - * Engine function - Set Random Presence - Bureau - * @remarks Originally called 'pl11' - */ -void MortevielleEngine::setRandomPresenceBureau(int cf) { - int h, rand; - - int p = getPresenceStatsBureau(h); - phaz(rand, p, cf); - if (rand > p) - displayAloneText(); - else - setPresenceBureau(h); -} - -/** - * Engine function - Set Random Presence - Kitchen - * @remarks Originally called 'pl12' - */ -void MortevielleEngine::setRandomPresenceKitchen(int cf) { - int p, rand; - - p = getPresenceStatsKitchen(); - phaz(rand, p, cf); - if (rand > p) - displayAloneText(); - else - setPresenceKitchen(); -} - -/** - * Engine function - Set Random Presence - Attic / Cellar - * @remarks Originally called 'pl13' - */ -void MortevielleEngine::setRandomPresenceAttic(int cf) { - int p, rand; - - p = getPresenceStatsAttic(); - phaz(rand, p, cf); - if (rand > p) - displayAloneText(); - else - setPresenceKitchen(); -} - -/** - * Engine function - Set Random Presence - Landing - * @remarks Originally called 'pl15' - */ -void MortevielleEngine::setRandomPresenceLanding(int cf) { - int p, rand; - - p = getPresenceStatsLanding(); - phaz(rand, p, cf); - if (rand > p) - displayAloneText(); - else - setPresenceLanding(); -} - -/** - * Engine function - Set Random Presence - Chapel - * @remarks Originally called 'pl20' - */ -void MortevielleEngine::setRandomPresenceChapel(int cf) { - int h, rand; - - int p = getPresenceStatsChapel(h); - phaz(rand, p, cf); - if (rand > p) - displayAloneText(); - else - setPresenceChapel(h); -} - int t11(int roomId) { int retVal = 0; int p, rand; @@ -1593,7 +618,7 @@ void cavegre() { g_s._faithScore += 2; if (g_s._faithScore > 69) g_s._faithScore += (g_s._faithScore / 10); - clearScreenType3(); + g_vm->clearScreenType3(); g_vm->prepareScreenType2(); ecr3(g_vm->getEngineString(S_SOMEONE_ENTERS)); int rand = (getRandomNumber(0, 4)) - 2; @@ -1602,7 +627,7 @@ void cavegre() { // The original was doing here a useless loop. // It has been removed - clearScreenType3(); + g_vm->clearScreenType3(); g_vm->displayAloneText(); } @@ -1636,43 +661,12 @@ void aniof(int ouf, int num) { g_vm->prepareScreenType1(); } -/** - * Start music or speech - * @remarks Originally called 'musique' - */ -void MortevielleEngine::startMusicOrSpeech(int so) { - if (so == 0) { - /* musik(0) */ - ; - } else if ((g_prebru == 0) && (!g_s._alreadyEnteredManor)) { - // Type 1: Speech - _speechManager.startSpeech(10, 1, 1); - ++g_prebru; - } else { - if (((g_s._currPlace == MOUNTAIN) || (g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK)) && (getRandomNumber(1, 3) == 2)) - // Type 1: Speech - _speechManager.startSpeech(9, getRandomNumber(2, 4), 1); - else if ((g_s._currPlace == CHAPEL) && (getRandomNumber(1, 2) == 1)) - // Type 1: Speech - _speechManager.startSpeech(8, 1, 1); - else if ((g_s._currPlace == WELL) && (getRandomNumber(1, 2) == 2)) - // Type 1: Speech - _speechManager.startSpeech(12, 1, 1); - else if (g_s._currPlace == INSIDE_WELL) - // Type 1: Speech - _speechManager.startSpeech(13, 1, 1); - else - // Type 2 : music - _speechManager.startSpeech(getRandomNumber(1, 17), 1, 2); - } -} - /* NIVEAU 9 */ void dessin(int ad) { if (ad != 0) dessine(g_ades, ((ad % 160) * 2), (ad / 160)); else { - clearScreenType1(); + g_vm->clearScreenType1(); if (g_caff > 99) { dessine(g_ades, 60, 33); g_vm->_screenSurface.drawBox(118, 32, 291, 121, 15); // Medium box @@ -1762,7 +756,7 @@ void tinke() { g_vm->_minute = 30; drawClock(); } - if (y_s < 12) + if (g_vm->_mouse.y_s < 12) return; if (!g_vm->_blo) { @@ -1834,12 +828,12 @@ void tinke() { g_vm->_brt = true; g_hdb = readclock(); if (getRandomNumber(1, 5) < 5) { - clearScreenType3(); + g_vm->clearScreenType3(); g_vm->prepareScreenType2(); ecr3(g_vm->getEngineString(S_HEAR_NOISE)); int rand = (getRandomNumber(0, 4)) - 2; g_vm->_speechManager.startSpeech(1, rand, 1); - clearScreenType3(); + g_vm->clearScreenType3(); } } } @@ -1862,7 +856,7 @@ void tinke() { void fenat(char ans) { int coul; - hideMouse(); + g_vm->_mouse.hideMouse(); if (g_vm->_currGraphicalDevice == MODE_CGA) coul = 2; else if (g_vm->_currGraphicalDevice == MODE_HERCULES) @@ -1872,7 +866,7 @@ void fenat(char ans) { g_vm->_screenSurface.writeCharacter(Common::Point(306, 193), ord(ans), coul); g_vm->_screenSurface.drawBox(300, 191, 16, 8, 15); - showMouse(); + g_vm->_mouse.showMouse(); } @@ -1887,14 +881,14 @@ void tkey1(bool d) { bool quest = false; int x, y, c; - hideMouse(); + g_vm->_mouse.hideMouse(); fenat('K'); // Wait for release from any key or mouse button while (g_vm->keyPressed()) g_key = testou(); do { - getMousePos_(x, y, c); + g_vm->_mouse.getMousePos_(x, y, c); g_vm->keyPressed(); } while (c != 0); @@ -1903,13 +897,13 @@ void tkey1(bool d) { if (d) tinke(); quest = g_vm->keyPressed(); - getMousePos_(x, y, c); + g_vm->_mouse.getMousePos_(x, y, c); CHECK_QUIT; } while (!(quest || (c != 0) || (d && g_vm->_anyone))); if (quest) testou(); g_vm->setMouseClick(false); - showMouse(); + g_vm->_mouse.showMouse(); } /* NIVEAU 7 */ @@ -1929,30 +923,6 @@ void affrep() { g_crep = g_s._currPlace; } -/** - * Engine function - You lose! - * @remarks Originally called 'tperd' - */ -void MortevielleEngine::loseGame() { - initouv(); - g_ment = 0; - g_iouv = 0; - g_mchai = 0; - _menu.unsetSearchMenu(); - if (!_blo) - t11(MANOR_FRONT); - - _loseGame = true; - clearScreenType1(); - _screenSurface.drawBox(60, 35, 400, 50, 15); - repon(9, g_crep); - clearScreenType2(); - clearScreenType3(); - _col = false; - _syn = false; - _okdes = false; -} - void tsort() { if ((g_iouv > 0) && (g_s._currPlace != 0)) { @@ -2000,30 +970,6 @@ void st4(int ob) { } } -/** - * Engine function - Check inventory for a given object - * @remarks Originally called 'cherjer' - */ -bool MortevielleEngine::checkInventory(int objectId) { - bool retVal = false; - for (int i = 1; i <= 6; ++i) - retVal = (retVal || (ord(g_s._sjer[i]) == objectId)); - - if (g_s._selectedObjectId == objectId) - retVal = true; - - return retVal; -} - -/** - * Engine function - Display Dining Room - * @remarks Originally called 'st1sama' - */ -void MortevielleEngine::displayDiningRoom() { - g_s._currPlace = DINING_ROOM; - affrep(); -} - void modinv() { int r; Common::String nomp; @@ -2047,38 +993,6 @@ void modinv() { } } -void sparl(float adr, float rep) { - const int haut[9] = { 0, 0, 1, -3, 6, -2, 2, 7, -1 }; - int key, repint; - - repint = abs((int)rep); - hideMouse(); - Common::String tmpStr = deline(repint + kDialogStringIndex); - displayStr(tmpStr, 230, 4, 65, 24, 5); - f3f8::draw(); - - key = 0; - do { - g_vm->_speechManager.startSpeech(repint, haut[g_caff - 69], 0); - f3f8::waitForF3F8(key); - CHECK_QUIT; - } while (key != 66); - hirs(); - showMouse(); -} - -/** - * Engine function - End of Search: reset globals - * @remarks Originally called 'finfouill' - */ -void endSearch() { - g_vm->_heroSearching = false; - g_vm->_obpart = false; - g_cs = 0; - g_is = 0; - g_vm->_menu.unsetSearchMenu(); -} - void mennor() { g_vm->_menu.menuUp(g_msg[3]); } @@ -2115,92 +1029,6 @@ void ajjer(int ob) { g_crep = 139; } -/** - * Engine function - Go to Dining room - * @remarks Originally called 't1sama' - */ -void MortevielleEngine::gotoDiningRoom() { - int day, hour, minute; - - updateHour(day, hour, minute); - if ((hour < 5) && (g_s._currPlace > ROOM18)) { - if (!checkInventory(137)) { //You don't have the keys, and it's late - g_crep = 1511; - loseGame(); - } else - displayDiningRoom(); - } else if (!g_s._alreadyEnteredManor) { //Is it your first time? - _currBitIndex = 255; // Everybody is present - showPeoplePresent(_currBitIndex); - g_caff = 77; - afdes(); - _screenSurface.drawBox(223, 47, 155, 91, 15); - repon(2, 33); - tkey1(false); - mennor(); - hideMouse(); - hirs(); - premtet(); - sparl(0, 140); - drawRightFrame(); - drawClock(); - showMouse(); - g_s._currPlace = OWN_ROOM; - affrep(); - resetPresenceInRooms(DINING_ROOM); - if (!_blo) - minute = t11(OWN_ROOM); - _currBitIndex = 0; - g_mpers = 0; - g_s._alreadyEnteredManor = true; - } else - displayDiningRoom(); -} - -/** - * Engine function - Check Manor distance (in the mountains) - * @remarks Originally called 't1neig' - */ -void MortevielleEngine::checkManorDistance() { - ++_manorDistance; - if (_manorDistance > 2) { - g_crep = 1506; - loseGame(); - } else { - _okdes = true; - g_s._currPlace = MOUNTAIN; - affrep(); - } -} - -/** - * Engine function - Go to Manor front - * @remarks Originally called 't1deva' - */ -void MortevielleEngine::gotoManorFront() { - _manorDistance = 0; - g_s._currPlace = MANOR_FRONT; - affrep(); -} - -/** - * Engine function - Go to Manor back - * @remarks Originally called 't1derr' - */ -void MortevielleEngine::gotoManorBack() { - g_s._currPlace = MANOR_BACK; - affrep(); -} - -/** - * Engine function - Dead : Flooded in Well - * @remarks Originally called 't1deau' - */ -void MortevielleEngine::floodedInWell() { - g_crep = 1503; - loseGame(); -} - void tctrm() { repon(2, (3000 + g_ctrm)); g_ctrm = 0; @@ -2211,7 +1039,7 @@ void quelquun() { if (g_vm->_menu._menuDisplayed) g_vm->_menu.eraseMenu(); - endSearch(); + g_vm->endSearch(); g_crep = 997; L1: if (!g_vm->_hiddenHero) { @@ -2231,7 +1059,7 @@ L1: g_s._faithScore += 3 * (g_s._faithScore / 10); tsort(); g_vm->_menu.setDestinationMenuText(LANDING); - int cx = convertBitIndexToCharacterIndex(g_vm->_currBitIndex); + int cx = g_vm->convertBitIndexToCharacterIndex(g_vm->_currBitIndex); g_caff = 69 + cx; g_crep = g_caff; g_msg[3] = MENU_DISCUSS; @@ -2247,7 +1075,7 @@ L1: repon(2, 136); int rand = (getRandomNumber(0, 4)) - 2; g_vm->_speechManager.startSpeech(3, rand, 1); - clearScreenType2(); + g_vm->clearScreenType2(); g_vm->displayAloneText(); debloc(21); affrep(); @@ -2278,7 +1106,7 @@ void tsuiv() { g_s._faithScore += 2; } else { affrep(); - endSearch(); + g_vm->endSearch(); if (cx > 9) g_crep = 131; } @@ -2297,11 +1125,11 @@ void tfleche() { touch = '\0'; do { - moveMouse(qust, touch); + g_vm->_mouse.moveMouse(qust, touch); CHECK_QUIT; if (g_vm->getMouseClick()) - inRect = (x_s < 256 * g_res) && (y_s < 176) && (y_s > 12); + inRect = (g_vm->_mouse.x_s < 256 * g_res) && (g_vm->_mouse.y_s < 176) && (g_vm->_mouse.y_s > 12); tinke(); } while (!(qust || inRect || g_vm->_anyone)); @@ -2313,8 +1141,8 @@ void tfleche() { g_vm->_keyPressedEsc = true; if (inRect) { - g_x = x_s; - g_y = y_s; + g_x = g_vm->_mouse.x_s; + g_y = g_vm->_mouse.y_s; } } @@ -2463,221 +1291,4 @@ void aldepl() { Alert::show(g_vm->getEngineString(S_USE_DEP_MENU), 1); } -/** - * Engine function - Change Graphical Device - * @remarks Originally called 'change_gd' - */ -void MortevielleEngine::changeGraphicalDevice(int newDevice) { - hideMouse(); - _currGraphicalDevice = newDevice; - hirs(); - initMouse(); - showMouse(); - drawRightFrame(); - tinke(); - drawClock(); - if (_currBitIndex != 0) - showPeoplePresent(_currBitIndex); - else - displayAloneText(); - clearScreenType2(); - clearScreenType3(); - g_maff = 68; - afdes(); - repon(2, g_crep); - _menu.displayMenu(); -} - -/** - * Called when a savegame has been loaded. - * @remarks Originally called 'antegame' - */ -void MortevielleEngine::gameLoaded() { - hideMouse(); - _menu._menuDisplayed = false; - _loseGame = true; - _anyone = false; - _okdes = true; - _col = false; - _hiddenHero = false; - _brt = false; - g_maff = 68; - g_mnumo = OPCODE_NONE; - g_prebru = 0; - g_x = 0; - g_y = 0; - g_num = 0; - g_hdb = 0; - g_hfb = 0; - g_cs = 0; - g_is = 0; - g_ment = 0; - _syn = true; - _heroSearching = true; - g_mchai = 0; - _manorDistance = 0; - initouv(); - g_iouv = 0; - g_dobj = 0; - affrep(); - _hintPctMessage = deline(580); - - _okdes = false; - _endGame = true; - _loseGame = false; - _heroSearching = false; - - displayAloneText(); - tinke(); - drawClock(); - afdes(); - repon(2, g_crep); - clearScreenType3(); - _endGame = false; - _menu.setDestinationMenuText(g_s._currPlace); - modinv(); - if (g_s._selectedObjectId != 0) - modobj(g_s._selectedObjectId + 400); - showMouse(); -} - -/** - * Engine function - Handle OpCodes - * @remarks Originally called 'tsitu' - */ -void MortevielleEngine::handleOpcode() { - if (!_col) - clearScreenType2(); - _syn = false; - _keyPressedEsc = false; - if (!_anyone) { - if (_brt) { - if ((g_msg[3] == MENU_MOVE) || (g_msg[4] == OPCODE_LEAVE) || (g_msg[4] == OPCODE_SLEEP) || (g_msg[4] == OPCODE_EAT)) { - g_ctrm = 4; - mennor(); - return; - } - } - if (g_msg[3] == MENU_MOVE) - fctMove(); - if (g_msg[3] == MENU_DISCUSS) - fctDiscuss(); - if (g_msg[3] == MENU_INVENTORY) - fctInventoryTake(); - if (g_msg[4] == OPCODE_ATTACH) - fctAttach(); - if (g_msg[4] == OPCODE_WAIT) - fctWait(); - if (g_msg[4] == OPCODE_FORCE) - fctForce(); - if (g_msg[4] == OPCODE_SLEEP) - fctSleep(); - if (g_msg[4] == OPCODE_LISTEN) - fctListen(); - if (g_msg[4] == OPCODE_ENTER) - fctEnter(); - if (g_msg[4] == OPCODE_CLOSE) - fctClose(); - if (g_msg[4] == OPCODE_SEARCH) - fctSearch(); - if (g_msg[4] == OPCODE_KNOCK) - fctKnock(); - if (g_msg[4] == OPCODE_SCRATCH) - fctScratch(); - if (g_msg[4] == OPCODE_READ) - fctRead(); - if (g_msg[4] == OPCODE_EAT) - fctEat(); - if (g_msg[4] == OPCODE_PLACE) - fctPlace(); - if (g_msg[4] == OPCODE_OPEN) - fctOpen(); - if (g_msg[4] == OPCODE_TAKE) - fctTake(); - if (g_msg[4] == OPCODE_LOOK) - fctLook(); - if (g_msg[4] == OPCODE_SMELL) - fctSmell(); - if (g_msg[4] == OPCODE_SOUND) - fctSound(); - if (g_msg[4] == OPCODE_LEAVE) - fctLeave(); - if (g_msg[4] == OPCODE_LIFT) - fctLift(); - if (g_msg[4] == OPCODE_TURN) - fctTurn(); - if (g_msg[4] == OPCODE_SSEARCH) - fctSelfSearch(); - if (g_msg[4] == OPCODE_SREAD) - fctSelfRead(); - if (g_msg[4] == OPCODE_SPUT) - fctSelfPut(); - if (g_msg[4] == OPCODE_SLOOK) - fctSelftLook(); - _hiddenHero = false; - - if (g_msg[4] == OPCODE_SHIDE) - fctSelfHide(); - } else { - if (_anyone) { - quelquun(); - _anyone = false; - mennor(); - return; - } - } - int hour, day, minute; - updateHour(day, hour, minute); - if ((((hour == 12) || (hour == 13) || (hour == 19)) && (g_s._currPlace != 10)) || - ((hour > 0) && (hour < 6) && (g_s._currPlace != 0))) - ++g_s._faithScore; - if (((g_s._currPlace < CRYPT) || (g_s._currPlace > MOUNTAIN)) && (g_s._currPlace != INSIDE_WELL) - && (g_s._currPlace != OWN_ROOM) && (g_s._selectedObjectId != 152) && (!_loseGame)) { - if ((g_s._faithScore > 99) && (hour > 8) && (hour < 16)) { - g_crep = 1501; - loseGame(); - } - if ((g_s._faithScore > 99) && (hour > 0) && (hour < 9)) { - g_crep = 1508; - loseGame(); - } - if ((day > 1) && (hour > 8) && (!_loseGame)) { - g_crep = 1502; - loseGame(); - } - } - mennor(); -} - -/** - * Engine function - Transform time into a char - * @remarks Originally called 'tmaj3' - */ -void MortevielleEngine::hourToChar() { - int day, hour, minute; - - g_vm->updateHour(day, hour, minute); - if (minute == 30) - minute = 1; - hour += day * 24; - minute += hour * 2; - g_s._fullHour = chr(minute); -} - -/** - * Engine function - extract time from a char - * @remarks Originally called 'theure' - */ -void MortevielleEngine::charToHour() { - int fullHour = ord(g_s._fullHour); - int tmpHour = fullHour % 48; - g_vm->_currDay = fullHour / 48; - g_vm->_currHalfHour = tmpHour % 2; - g_vm->_currHour = tmpHour / 2; - g_vm->_hour = g_vm->_currHour; - if (g_vm->_currHalfHour == 1) - g_vm->_minute = 30; - else - g_vm->_minute = 0; -} } // End of namespace Mortevielle diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 528039c6ba..0cd467c177 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -42,9 +42,7 @@ static const int _actionMenu[12] = { OPCODE_NONE, OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE }; -/* NIVEAU 15 */ extern void copcha(); -extern bool isMouseIn(rectangle r); extern void outbloc(int n, pattern p, nhom *pal); extern void writepal(int n); extern void pictout(int seg, int dep, int x, int y); @@ -60,15 +58,10 @@ extern void drawRightFrame(); /* NIVEAU 13 */ extern void text1(int x, int y, int nb, int m); extern void initouv(); -extern void clearScreenType1(); -extern void clearScreenType2(); -extern void clearScreenType3(); -extern void clearScreenType10(); extern void ecr2(Common::String str_); extern void ecr3(Common::String text); extern void stop(); extern void paint_rect(int x, int y, int dx, int dy); -extern int convertCharacterIndexToBitIndex(int characterIndex); /* NIVEAU 12 */ extern void modobj(int m); extern void repon(int f, int m); @@ -78,7 +71,6 @@ extern void drawClock(); * NIVEAU 11 * *************/ extern void debloc(int roomId); -extern int convertBitIndexToCharacterIndex(int bitIndex); extern void ecfren(int &p, int &rand, int cf, int roomId); extern void becfren(int roomId); /* NIVEAU 10 */ @@ -105,8 +97,6 @@ extern void tsort(); extern void st4(int ob); extern void displayDiningRoom(); extern void modinv(); -extern void sparl(float adr, float rep); -extern void endSearch(); extern void mennor(); extern void premtet(); /* NIVEAU 5 */ diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 3667a135c1..f376e57d8d 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -339,8 +339,8 @@ bool MortevielleEngine::handleEvents() { case Common::EVENT_LBUTTONUP: case Common::EVENT_MOUSEMOVE: _mousePos = Common::Point(event.mouse.x, event.mouse.y / 2); - x_s = event.mouse.x; - y_s = event.mouse.y / 2; + g_vm->_mouse.x_s = event.mouse.x; + g_vm->_mouse.y_s = event.mouse.y / 2; if (event.type == Common::EVENT_LBUTTONDOWN) _mouseClick = true; @@ -550,7 +550,7 @@ void MortevielleEngine::mainGame() { initGame(); hirs(); drawRightFrame(); - showMouse(); + g_vm->_mouse.showMouse(); // Loop to play the game do { @@ -603,7 +603,7 @@ void MortevielleEngine::handleAction() { do { _menu.mdn(); tinke(); - moveMouse(funct, inkey); + g_vm->_mouse.moveMouse(funct, inkey); CHECK_QUIT; temps = temps + 1; } while (!((_menu._menuSelected) || (temps > lim) || (funct) || (_anyone))); @@ -652,7 +652,7 @@ void MortevielleEngine::handleAction() { g_mnumo = g_msg[4]; if (!_anyone) { if ((_heroSearching) || (_obpart)) { - if (y_s < 12) + if (g_vm->_mouse.y_s < 12) return; if ((g_msg[4] == OPCODE_SOUND) || (g_msg[4] == OPCODE_LIFT)) { @@ -705,4 +705,1384 @@ void MortevielleEngine::loadPlaces() { f.close(); } +/** + * Set Text Color + * @remarks Originally called 'text_color' + */ +void MortevielleEngine::setTextColor(int col) { + _textColor = col; +} + +/** + * Prepare screen - Type 1! + * @remarks Originally called 'ecrf1' + */ +void MortevielleEngine::prepareScreenType1() { + // Large drawing + _screenSurface.drawBox(0, 11, 512, 163, 15); +} + +/** + * Prepare room - Type 2! + * @remarks Originally called 'ecrf2' + */ +void MortevielleEngine::prepareScreenType2() { + setTextColor(5); +} + +/** + * Prepare room - Type 3! + * @remarks Originally called 'ecrf7' + */ +void MortevielleEngine::prepareScreenType3() { + setTextColor(4); +} + +/** + * Engine function - Update hour + * @remarks Originally called 'calch' + */ +void MortevielleEngine::updateHour(int &day, int &hour, int &minute) { + int newHour = readclock(); + int th = g_jh + ((newHour - g_mh) / g_t); + minute = ((th % 2) + _currHalfHour) * 30; + hour = ((uint)th >> 1) + _currHour; + if (minute == 60) { + minute = 0; + ++hour; + } + day = (hour / 24) + _currDay; + hour = hour - ((day - _currDay) * 24); +} + +/** + * Engine function - Convert character index to bit index + * @remarks Originally called 'conv' + */ +int MortevielleEngine::convertCharacterIndexToBitIndex(int characterIndex) { + return 128 >> (characterIndex - 1); +} + +/** + * Engine function - Convert bit index to character index + * @remarks Originally called 'tip' + */ +int MortevielleEngine::convertBitIndexToCharacterIndex(int bitIndex) { + int retVal = 0; + + if (bitIndex == 128) + retVal = 1; + else if (bitIndex == 64) + retVal = 2; + else if (bitIndex == 32) + retVal = 3; + else if (bitIndex == 16) + retVal = 4; + else if (bitIndex == 8) + retVal = 5; + else if (bitIndex == 4) + retVal = 6; + else if (bitIndex == 2) + retVal = 7; + else if (bitIndex == 1) + retVal = 8; + + return retVal; +} + +/** + * Engine function - Reset presence in other rooms + * @remarks Originally called 't5' + */ +void MortevielleEngine::resetPresenceInRooms(int roomId) { + if (roomId == DINING_ROOM) + _blo = false; + + if (roomId != GREEN_ROOM) { + _roomPresenceLuc = false; + _roomPresenceIda = false; + } + + if (roomId != PURPLE_ROOM) + _purpleRoomPresenceLeo = false; + + if (roomId != DARKBLUE_ROOM) { + _roomPresenceGuy = false; + _roomPresenceEva = false; + } + + if (roomId != BLUE_ROOM) + _roomPresenceMax = false; + if (roomId != RED_ROOM) + _roomPresenceBob = false; + if (roomId != GREEN_ROOM2) + _roomPresencePat = false; + if (roomId != TOILETS) + _toiletsPresenceBobMax = false; + if (roomId != BATHROOM) + _bathRoomPresenceBobMax = false; + if (roomId != ROOM9) + _room9PresenceLeo = false; +} + +/** + * Engine function - Show the people present in the given room + * @remarks Originally called 'affper' + */ +void MortevielleEngine::showPeoplePresent(int bitIndex) { + int xp = 580 - (_screenSurface.getStringWidth("LEO") / 2); + + for (int i = 1; i <= 8; ++i) + _menu.disableMenuItem(_menu._discussMenu[i]); + + clearScreenType10(); + if ((bitIndex & 128) == 128) { + _screenSurface.putxy(xp, 24); + _screenSurface.drawString("LEO", 4); + _menu.enableMenuItem(_menu._discussMenu[1]); + } + if ((bitIndex & 64) == 64) { + _screenSurface.putxy(xp, 32); + _screenSurface.drawString("PAT", 4); + _menu.enableMenuItem(_menu._discussMenu[2]); + } + if ((bitIndex & 32) == 32) { + _screenSurface.putxy(xp, 40); + _screenSurface.drawString("GUY", 4); + _menu.enableMenuItem(_menu._discussMenu[3]); + } + if ((bitIndex & 16) == 16) { + _screenSurface.putxy(xp, 48); + _screenSurface.drawString("EVA", 4); + _menu.enableMenuItem(_menu._discussMenu[4]); + } + if ((bitIndex & 8) == 8) { + _screenSurface.putxy(xp, 56); + _screenSurface.drawString("BOB", 4); + _menu.enableMenuItem(_menu._discussMenu[5]); + } + if ((bitIndex & 4) == 4) { + _screenSurface.putxy(xp, 64); + _screenSurface.drawString("LUC", 4); + _menu.enableMenuItem(_menu._discussMenu[6]); + } + if ((bitIndex & 2) == 2) { + _screenSurface.putxy(xp, 72); + _screenSurface.drawString("IDA", 4); + _menu.enableMenuItem(_menu._discussMenu[7]); + } + if ((bitIndex & 1) == 1) { + _screenSurface.putxy(xp, 80); + _screenSurface.drawString("MAX", 4); + _menu.enableMenuItem(_menu._discussMenu[8]); + } + _currBitIndex = bitIndex; +} + +/** + * Engine function - Select random characters + * @remarks Originally called 'choix' + */ +int MortevielleEngine::selectCharacters(int min, int max) { + bool invertSelection = false; + int rand = getRandomNumber(min, max); + + if (rand > 4) { + rand = 8 - rand; + invertSelection = true; + } + + int i = 0; + int retVal = 0; + while (i < rand) { + int charIndex = getRandomNumber(1, 8); + int charBitIndex = convertCharacterIndexToBitIndex(charIndex); + if ((retVal & charBitIndex) != charBitIndex) { + ++i; + retVal |= charBitIndex; + } + } + if (invertSelection) + retVal = 255 - retVal; + + return retVal; +} + +/** + * Engine function - Get Presence Statistics - Green Room + * @remarks Originally called 'cpl1' + */ +int MortevielleEngine::getPresenceStatsGreenRoom() { + int day, hour, minute; + int retVal = 0; + + updateHour(day, hour, minute); + // The original uses an || instead of an &&, resulting + // in an always true condition. Based on the other tests, + // and on other scenes, we use an && instead. + if ((hour > 7) && (hour < 11)) + retVal = 25; + else if ((hour > 10) && (hour < 14)) + retVal = 35; + else if ((hour > 13) && (hour < 16)) + retVal = 50; + else if ((hour > 15) && (hour < 18)) + retVal = 5; + else if ((hour > 17) && (hour < 22)) + retVal = 35; + else if ((hour > 21) && (hour < 24)) + retVal = 50; + else if ((hour >= 0) && (hour < 8)) + retVal = 70; + + _menu.mdn(); + + return retVal; +} +/** + * Engine function - Get Presence Statistics - Purple Room + * @remarks Originally called 'cpl2' + */ +int MortevielleEngine::getPresenceStatsPurpleRoom() { + int day, hour, minute; + int retVal = 0; + + updateHour(day, hour, minute); + if ((hour > 7) && (hour < 11)) + retVal = -2; + else if (hour == 11) + retVal = 100; + else if ((hour > 11) && (hour < 23)) + retVal = 10; + else if (hour == 23) + retVal = 20; + else if ((hour >= 0) && (hour < 8)) + retVal = 50; + + return retVal; +} + +/** + * Engine function - Get Presence Statistics - Toilets + * @remarks Originally called 'cpl3' + */ +int MortevielleEngine::getPresenceStatsToilets() { + int day, hour, minute; + int retVal = 0; + + updateHour(day, hour, minute); + if (((hour > 8) && (hour < 10)) || ((hour > 19) && (hour < 24))) + retVal = 34; + else if (((hour > 9) && (hour < 20)) || ((hour >= 0) && (hour < 9))) + retVal = 0; + + return retVal; +} + +/** + * Engine function - Get Presence Statistics - Blue Room + * @remarks Originally called 'cpl5' + */ +int MortevielleEngine::getPresenceStatsBlueRoom() { + int day, hour, minute; + int retVal = 0; + + updateHour(day, hour, minute); + if ((hour > 6) && (hour < 10)) + retVal = 0; + else if (hour == 10) + retVal = 100; + else if ((hour > 10) && (hour < 24)) + retVal = 15; + else if ((hour >= 0) && (hour < 7)) + retVal = 50; + + return retVal; +} + +/** + * Engine function - Get Presence Statistics - Red Room + * @remarks Originally called 'cpl6' + */ +int MortevielleEngine::getPresenceStatsRedRoom() { + int day, hour, minute; + int retVal = 0; + + updateHour(day, hour, minute); + if (((hour > 7) && (hour < 13)) || ((hour > 17) && (hour < 20))) + retVal = -2; + else if (((hour > 12) && (hour < 17)) || ((hour > 19) && (hour < 24))) + retVal = 35; + else if (hour == 17) + retVal = 100; + else if ((hour >= 0) && (hour < 8)) + retVal = 60; + + return retVal; +} + +/** + * Shows the "you are alone" message in the status area + * on the right hand side of the screen + * @remarks Originally called 'person' + */ +void MortevielleEngine::displayAloneText() { + for (int cf = 1; cf <= 8; ++cf) + _menu.disableMenuItem(_menu._discussMenu[cf]); + + Common::String sYou = getEngineString(S_YOU); + Common::String sAre = getEngineString(S_ARE); + Common::String sAlone = getEngineString(S_ALONE); + + clearScreenType10(); + _screenSurface.putxy(580 - (_screenSurface.getStringWidth(sYou) / 2), 30); + _screenSurface.drawString(sYou, 4); + _screenSurface.putxy(580 - (_screenSurface.getStringWidth(sAre) / 2), 50); + _screenSurface.drawString(sAre, 4); + _screenSurface.putxy(580 - (_screenSurface.getStringWidth(sAlone) / 2), 70); + _screenSurface.drawString(sAlone, 4); + + _currBitIndex = 0; +} + +/** + * Engine function - Get Presence Statistics - Room Bureau + * @remarks Originally called 'cpl10' + */ +int MortevielleEngine::getPresenceStatsDiningRoom(int &hour) { + int day, minute; + + int retVal = 0; + updateHour(day, hour, minute); + if (((hour > 7) && (hour < 11)) || ((hour > 11) && (hour < 14)) || ((hour > 18) && (hour < 21))) + retVal = 100; + else if ((hour == 11) || ((hour > 20) && (hour < 24))) + retVal = 45; + else if (((hour > 13) && (hour < 17)) || (hour == 18)) + retVal = 35; + else if (hour == 17) + retVal = 60; + else if ((hour >= 0) && (hour < 8)) + retVal = 5; + + return retVal; +} + +/** + * Engine function - Get Presence Statistics - Room Bureau + * @remarks Originally called 'cpl11' + */ +int MortevielleEngine::getPresenceStatsBureau(int &hour) { + int day, minute; + int retVal = 0; + + updateHour(day, hour, minute); + if (((hour > 8) && (hour < 12)) || ((hour > 20) && (hour < 24))) + retVal = 25; + else if (((hour > 11) && (hour < 14)) || ((hour > 18) && (hour < 21))) + retVal = 5; + else if ((hour > 13) && (hour < 17)) + retVal = 55; + else if ((hour > 16) && (hour < 19)) + retVal = 45; + else if ((hour >= 0) && (hour < 9)) + retVal = 0; + + return retVal; +} + +/** + * Engine function - Get Presence Statistics - Room Kitchen + * @remarks Originally called 'cpl12' + */ +int MortevielleEngine::getPresenceStatsKitchen() { + int day, hour, minute; + int retVal = 0; + + updateHour(day, hour, minute); + if (((hour > 8) && (hour < 15)) || ((hour > 16) && (hour < 22))) + retVal = 55; + else if (((hour > 14) && (hour < 17)) || ((hour > 21) && (hour < 24))) + retVal = 25; + else if ((hour >= 0) && (hour < 5)) + retVal = 0; + else if ((hour > 4) && (hour < 9)) + retVal = 15; + + return retVal; +} + +/** + * Engine function - Get Presence Statistics - Room Attic + * @remarks Originally called 'cpl13' + */ +int MortevielleEngine::getPresenceStatsAttic() { + return 0; +} + +/** + * Engine function - Get Presence Statistics - Room Landing + * @remarks Originally called 'cpl15' + */ +int MortevielleEngine::getPresenceStatsLanding() { + int day, hour, minute; + int retVal = 0; + + updateHour(day, hour, minute); + if ((hour > 7) && (hour < 12)) + retVal = 25; + else if ((hour > 11) && (hour < 14)) + retVal = 0; + else if ((hour > 13) && (hour < 18)) + retVal = 10; + else if ((hour > 17) && (hour < 20)) + retVal = 55; + else if ((hour > 19) && (hour < 22)) + retVal = 5; + else if ((hour > 21) && (hour < 24)) + retVal = 15; + else if ((hour >= 0) && (hour < 8)) + retVal = -15; + + return retVal; +} + +/** + * Engine function - Get Presence Statistics - Room Chapel + * @remarks Originally called 'cpl20' + */ +int MortevielleEngine::getPresenceStatsChapel(int &hour) { + int day, minute; + int retVal = 0; + + updateHour(day, hour, minute); + if (hour == 10) + retVal = 65; + else if ((hour > 10) && (hour < 21)) + retVal = 5; + else if ((hour > 20) && (hour < 24)) + retVal = -15; + else if ((hour >= 0) && (hour < 5)) + retVal = -300; + else if ((hour > 4) && (hour < 10)) + retVal = -5; + + return retVal; +} + +/** + * Engine function - Check who is in the Green Room + * @remarks Originally called 'quelq1' + */ +void MortevielleEngine::setPresenceGreenRoom(int roomId) { + int rand = getRandomNumber(1, 2); + if (roomId == GREEN_ROOM) { + if (rand == 1) + _roomPresenceLuc = true; + else + _roomPresenceIda = true; + } else if (roomId == DARKBLUE_ROOM) { + if (rand == 1) + _roomPresenceGuy = true; + else + _roomPresenceEva = true; + } + + _currBitIndex = 10; +} + +/** + * Engine function - Check who is in the Purple Room + * @remarks Originally called 'quelq2' + */ +void MortevielleEngine::setPresencePurpleRoom() { + if (_place == PURPLE_ROOM) + _purpleRoomPresenceLeo = true; + else + _room9PresenceLeo = true; + + _currBitIndex = 10; +} + +/** + * Engine function - Check who is in the Blue Room + * @remarks Originally called 'quelq5' + */ +void MortevielleEngine::setPresenceBlueRoom() { + _roomPresenceMax = true; + _currBitIndex = 10; +} + +/** + * Engine function - Check who is in the Red Room + * @remarks Originally called 'quelq6' + */ +void MortevielleEngine::setPresenceRedRoom(int roomId) { + if (roomId == RED_ROOM) + _roomPresenceBob = true; + else if (roomId == GREEN_ROOM2) + _roomPresencePat = true; + + _currBitIndex = 10; +} + +/** + * Engine function - Check who is in the Dining Room + * @remarks Originally called 'quelq10' + */ +int MortevielleEngine::setPresenceDiningRoom(int hour) { + int retVal = 0; + + if ((hour >= 0) && (hour < 8)) + retVal = chlm(); + else { + int min = 0, max = 0; + if ((hour > 7) && (hour < 10)) { + min = 5; + max = 7; + } else if ((hour > 9) && (hour < 12)) { + min = 1; + max = 4; + } else if (((hour > 11) && (hour < 15)) || ((hour > 18) && (hour < 21))) { + min = 6; + max = 8; + } else if (((hour > 14) && (hour < 19)) || ((hour > 20) && (hour < 24))) { + min = 1; + max = 5; + } + retVal = selectCharacters(min, max); + } + showPeoplePresent(retVal); + + return retVal; +} + +/** + * Engine function - Check who is in the Bureau + * @remarks Originally called 'quelq11' + */ +int MortevielleEngine::setPresenceBureau(int hour) { + int retVal = 0; + + if ((hour >= 0) && (hour < 8)) + retVal = chlm(); + else { + int min = 0, max = 0; + if (((hour > 7) && (hour < 10)) || ((hour > 20) && (hour < 24))) { + min = 1; + max = 3; + } else if (((hour > 9) && (hour < 12)) || ((hour > 13) && (hour < 19))) { + min = 1; + max = 4; + } else if (((hour > 11) && (hour < 14)) || ((hour > 18) && (hour < 21))) { + min = 1; + max = 2; + } + retVal = selectCharacters(min, max); + } + showPeoplePresent(retVal); + + return retVal; +} + +/** + * Engine function - Check who is in the Kitchen + * @remarks Originally called 'quelq12' + */ +int MortevielleEngine::setPresenceKitchen() { + int retVal = chlm(); + showPeoplePresent(retVal); + + return retVal; +} + +/** + * Engine function - Check who is in the Landing + * @remarks Originally called 'quelq15' + */ +int MortevielleEngine::setPresenceLanding() { + bool test = false; + int rand = 0; + do { + rand = getRandomNumber(1, 8); + test = (((rand == 1) && (_purpleRoomPresenceLeo || _room9PresenceLeo)) || + ((rand == 2) && _roomPresencePat) || + ((rand == 3) && _roomPresenceGuy) || + ((rand == 4) && _roomPresenceEva) || + ((rand == 5) && _roomPresenceBob) || + ((rand == 6) && _roomPresenceLuc) || + ((rand == 7) && _roomPresenceIda) || + ((rand == 8) && _roomPresenceMax)); + } while (test); + + int retVal = convertCharacterIndexToBitIndex(rand); + showPeoplePresent(retVal); + + return retVal; +} + +/** + * Engine function - Check who is in the chapel + * @remarks Originally called 'quelq20' + */ +int MortevielleEngine::setPresenceChapel(int hour) { + int retVal = 0; + + if (((hour >= 0) && (hour < 10)) || ((hour > 18) && (hour < 24))) + retVal = chlm(); + else { + int min = 0, max = 0; + if ((hour > 9) && (hour < 12)) { + min = 3; + max = 7; + } else if ((hour > 11) && (hour < 18)) { + min = 1; + max = 2; + } else if (hour == 18) { + min = 2; + max = 4; + } + retVal = selectCharacters(min, max); + } + showPeoplePresent(retVal); + + return retVal; +} + +/** + * Engine function - Get the answer after you known a door + * @remarks Originally called 'frap' + */ +void MortevielleEngine::getKnockAnswer() { + int day, hour, minute; + + updateHour(day, hour, minute); + if ((hour >= 0) && (hour < 8)) + g_crep = 190; + else { + if (getRandomNumber(1, 100) > 70) + g_crep = 190; + else + g_crep = 147; + } +} + +/** + * Engine function - Get Room Presence Bit Index + * @remarks Originally called 'nouvp' + */ +int MortevielleEngine::getPresenceBitIndex(int roomId) { + int bitIndex = 0; + if (roomId == GREEN_ROOM) { + if (_roomPresenceLuc) + bitIndex = 4; // LUC + if (_roomPresenceIda) + bitIndex = 2; // IDA + } else if ( ((roomId == PURPLE_ROOM) && (_purpleRoomPresenceLeo)) + || ((roomId == ROOM9) && (_room9PresenceLeo))) + bitIndex = 128; // LEO + else if (roomId == DARKBLUE_ROOM) { + if (_roomPresenceGuy) + bitIndex = 32; // GUY + if (_roomPresenceEva) + bitIndex = 16; // EVA + } else if ((roomId == BLUE_ROOM) && (_roomPresenceMax)) + bitIndex = 1; // MAX + else if ((roomId == RED_ROOM) && (_roomPresenceBob)) + bitIndex = 8; // BOB + else if ((roomId == GREEN_ROOM2) && (_roomPresencePat)) + bitIndex = 64; // PAT + else if ( ((roomId == TOILETS) && (_toiletsPresenceBobMax)) + || ((roomId == BATHROOM) && (_bathRoomPresenceBobMax)) ) + bitIndex = 9; // BOB + MAX + + if (bitIndex != 9) + showPeoplePresent(bitIndex); + + return bitIndex; +} + +/** + * Engine function - initGame + * @remarks Originally called 'dprog' + */ +void MortevielleEngine::initGame() { + _place = MANOR_FRONT; + g_jh = 0; + if (!g_s._alreadyEnteredManor) + _blo = true; + g_t = kTime1; + g_mh = readclock(); +} + +/** + * Engine function - Set Random Presence - Green Room + * @remarks Originally called 'pl1' + */ +void MortevielleEngine::setRandomPresenceGreenRoom(int cf) { + if ( ((_place == GREEN_ROOM) && (!_roomPresenceLuc) && (!_roomPresenceIda)) + || ((_place == DARKBLUE_ROOM) && (!_roomPresenceGuy) && (!_roomPresenceEva)) ) { + int p = getPresenceStatsGreenRoom(); + int rand; + phaz(rand, p, cf); + + if (rand > p) + displayAloneText(); + else + setPresenceGreenRoom(_place); + } +} + +/** + * Engine function - Set Random Presence - Purple Room + * @remarks Originally called 'pl2' + */ +void MortevielleEngine::setRandomPresencePurpleRoom(int cf) { + if (!_purpleRoomPresenceLeo) { + int p = getPresenceStatsPurpleRoom(); + int rand; + phaz(rand, p, cf); + + if (rand > p) + displayAloneText(); + else + setPresencePurpleRoom(); + } +} + +/** + * Engine function - Set Random Presence - Blue Room + * @remarks Originally called 'pl5' + */ +void MortevielleEngine::setRandomPresenceBlueRoom(int cf) { + if (!_roomPresenceMax) { + int p = getPresenceStatsBlueRoom(); + int rand; + + phaz(rand, p, cf); + + if (rand > p) + displayAloneText(); + else + setPresenceBlueRoom(); + } +} + +/** + * Engine function - Set Random Presence - Red Room + * @remarks Originally called 'pl6' + */ +void MortevielleEngine::setRandomPresenceRedRoom(int cf) { + if ( ((_place == RED_ROOM) && (!_roomPresenceBob)) + || ((_place == GREEN_ROOM2) && (!_roomPresencePat)) ) { + int p = getPresenceStatsRedRoom(); + int rand; + + phaz(rand, p, cf); + + if (rand > p) + displayAloneText(); + else + setPresenceRedRoom(_place); + } +} + +/** + * Engine function - Set Random Presence - Room 9 + * @remarks Originally called 'pl9' + */ +void MortevielleEngine::setRandomPresenceRoom9(int cf) { + if (!_room9PresenceLeo) { + cf = -10; + int p, rand; + phaz(rand, p, cf); + + if (rand > p) + displayAloneText(); + else + setPresencePurpleRoom(); + } +} + +/** + * Engine function - Set Random Presence - Dining Room + * @remarks Originally called 'pl10' + */ +void MortevielleEngine::setRandomPresenceDiningRoom(int cf) { + int h, rand; + int p = getPresenceStatsDiningRoom(h); + phaz(rand, p, cf); + + if (rand > p) + displayAloneText(); + else + setPresenceDiningRoom(h); +} + +/** + * Engine function - Set Random Presence - Bureau + * @remarks Originally called 'pl11' + */ +void MortevielleEngine::setRandomPresenceBureau(int cf) { + int h, rand; + + int p = getPresenceStatsBureau(h); + phaz(rand, p, cf); + if (rand > p) + displayAloneText(); + else + setPresenceBureau(h); +} + +/** + * Engine function - Set Random Presence - Kitchen + * @remarks Originally called 'pl12' + */ +void MortevielleEngine::setRandomPresenceKitchen(int cf) { + int p, rand; + + p = getPresenceStatsKitchen(); + phaz(rand, p, cf); + if (rand > p) + displayAloneText(); + else + setPresenceKitchen(); +} + +/** + * Engine function - Set Random Presence - Attic / Cellar + * @remarks Originally called 'pl13' + */ +void MortevielleEngine::setRandomPresenceAttic(int cf) { + int p, rand; + + p = getPresenceStatsAttic(); + phaz(rand, p, cf); + if (rand > p) + displayAloneText(); + else + setPresenceKitchen(); +} + +/** + * Engine function - Set Random Presence - Landing + * @remarks Originally called 'pl15' + */ +void MortevielleEngine::setRandomPresenceLanding(int cf) { + int p, rand; + + p = getPresenceStatsLanding(); + phaz(rand, p, cf); + if (rand > p) + displayAloneText(); + else + setPresenceLanding(); +} + +/** + * Engine function - Set Random Presence - Chapel + * @remarks Originally called 'pl20' + */ +void MortevielleEngine::setRandomPresenceChapel(int cf) { + int h, rand; + + int p = getPresenceStatsChapel(h); + phaz(rand, p, cf); + if (rand > p) + displayAloneText(); + else + setPresenceChapel(h); +} + +/** + * Start music or speech + * @remarks Originally called 'musique' + */ +void MortevielleEngine::startMusicOrSpeech(int so) { + if (so == 0) { + /* musik(0) */ + ; + } else if ((g_prebru == 0) && (!g_s._alreadyEnteredManor)) { + // Type 1: Speech + _speechManager.startSpeech(10, 1, 1); + ++g_prebru; + } else { + if (((g_s._currPlace == MOUNTAIN) || (g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK)) && (getRandomNumber(1, 3) == 2)) + // Type 1: Speech + _speechManager.startSpeech(9, getRandomNumber(2, 4), 1); + else if ((g_s._currPlace == CHAPEL) && (getRandomNumber(1, 2) == 1)) + // Type 1: Speech + _speechManager.startSpeech(8, 1, 1); + else if ((g_s._currPlace == WELL) && (getRandomNumber(1, 2) == 2)) + // Type 1: Speech + _speechManager.startSpeech(12, 1, 1); + else if (g_s._currPlace == INSIDE_WELL) + // Type 1: Speech + _speechManager.startSpeech(13, 1, 1); + else + // Type 2 : music + _speechManager.startSpeech(getRandomNumber(1, 17), 1, 2); + } +} + +/** + * Engine function - You lose! + * @remarks Originally called 'tperd' + */ +void MortevielleEngine::loseGame() { + initouv(); + g_ment = 0; + g_iouv = 0; + g_mchai = 0; + _menu.unsetSearchMenu(); + if (!_blo) + t11(MANOR_FRONT); + + _loseGame = true; + clearScreenType1(); + _screenSurface.drawBox(60, 35, 400, 50, 15); + repon(9, g_crep); + clearScreenType2(); + clearScreenType3(); + _col = false; + _syn = false; + _okdes = false; +} + +/** + * Engine function - Check inventory for a given object + * @remarks Originally called 'cherjer' + */ +bool MortevielleEngine::checkInventory(int objectId) { + bool retVal = false; + for (int i = 1; i <= 6; ++i) + retVal = (retVal || (ord(g_s._sjer[i]) == objectId)); + + if (g_s._selectedObjectId == objectId) + retVal = true; + + return retVal; +} + +/** + * Engine function - Display Dining Room + * @remarks Originally called 'st1sama' + */ +void MortevielleEngine::displayDiningRoom() { + g_s._currPlace = DINING_ROOM; + affrep(); +} + +/** + * Engine function - Start non interactive Dialog + * @remarks Originally called 'sparl' + */ +void MortevielleEngine::startDialog(int16 rep) { + const int haut[9] = { 0, 0, 1, -3, 6, -2, 2, 7, -1 }; + int key; + + assert(rep >= 0); + + _mouse.hideMouse(); + Common::String dialogStr = deline(rep + kDialogStringIndex); + displayStr(dialogStr, 230, 4, 65, 24, 5); + f3f8::draw(); + + key = 0; + do { + _speechManager.startSpeech(rep, haut[g_caff - 69], 0); + key = f3f8::waitForF3F8(); + CHECK_QUIT; + } while (key != 66); + hirs(); + _mouse.showMouse(); +} + +/** + * Engine function - End of Search: reset globals + * @remarks Originally called 'finfouill' + */ +void MortevielleEngine::endSearch() { + _heroSearching = false; + _obpart = false; + g_cs = 0; + g_is = 0; + _menu.unsetSearchMenu(); +} + +/** + * Engine function - Go to Dining room + * @remarks Originally called 't1sama' + */ +void MortevielleEngine::gotoDiningRoom() { + int day, hour, minute; + + updateHour(day, hour, minute); + if ((hour < 5) && (g_s._currPlace > ROOM18)) { + if (!checkInventory(137)) { //You don't have the keys, and it's late + g_crep = 1511; + loseGame(); + } else + displayDiningRoom(); + } else if (!g_s._alreadyEnteredManor) { //Is it your first time? + _currBitIndex = 255; // Everybody is present + showPeoplePresent(_currBitIndex); + g_caff = 77; + afdes(); + _screenSurface.drawBox(223, 47, 155, 91, 15); + repon(2, 33); + tkey1(false); + mennor(); + _mouse.hideMouse(); + hirs(); + premtet(); + startDialog(140); + drawRightFrame(); + drawClock(); + _mouse.showMouse(); + g_s._currPlace = OWN_ROOM; + affrep(); + resetPresenceInRooms(DINING_ROOM); + if (!_blo) + minute = t11(OWN_ROOM); + _currBitIndex = 0; + g_mpers = 0; + g_s._alreadyEnteredManor = true; + } else + displayDiningRoom(); +} + +/** + * Engine function - Check Manor distance (in the mountains) + * @remarks Originally called 't1neig' + */ +void MortevielleEngine::checkManorDistance() { + ++_manorDistance; + if (_manorDistance > 2) { + g_crep = 1506; + loseGame(); + } else { + _okdes = true; + g_s._currPlace = MOUNTAIN; + affrep(); + } +} + +/** + * Engine function - Go to Manor front + * @remarks Originally called 't1deva' + */ +void MortevielleEngine::gotoManorFront() { + _manorDistance = 0; + g_s._currPlace = MANOR_FRONT; + affrep(); +} + +/** + * Engine function - Go to Manor back + * @remarks Originally called 't1derr' + */ +void MortevielleEngine::gotoManorBack() { + g_s._currPlace = MANOR_BACK; + affrep(); +} + +/** + * Engine function - Dead : Flooded in Well + * @remarks Originally called 't1deau' + */ +void MortevielleEngine::floodedInWell() { + g_crep = 1503; + loseGame(); +} + +/** + * Engine function - Change Graphical Device + * @remarks Originally called 'change_gd' + */ +void MortevielleEngine::changeGraphicalDevice(int newDevice) { + _mouse.hideMouse(); + _currGraphicalDevice = newDevice; + hirs(); + _mouse.initMouse(); + _mouse.showMouse(); + drawRightFrame(); + tinke(); + drawClock(); + if (_currBitIndex != 0) + showPeoplePresent(_currBitIndex); + else + displayAloneText(); + clearScreenType2(); + clearScreenType3(); + g_maff = 68; + afdes(); + repon(2, g_crep); + _menu.displayMenu(); +} + +/** + * Called when a savegame has been loaded. + * @remarks Originally called 'antegame' + */ +void MortevielleEngine::gameLoaded() { + _mouse.hideMouse(); + _menu._menuDisplayed = false; + _loseGame = true; + _anyone = false; + _okdes = true; + _col = false; + _hiddenHero = false; + _brt = false; + g_maff = 68; + g_mnumo = OPCODE_NONE; + g_prebru = 0; + g_x = 0; + g_y = 0; + g_num = 0; + g_hdb = 0; + g_hfb = 0; + g_cs = 0; + g_is = 0; + g_ment = 0; + _syn = true; + _heroSearching = true; + g_mchai = 0; + _manorDistance = 0; + initouv(); + g_iouv = 0; + g_dobj = 0; + affrep(); + _hintPctMessage = deline(580); + + _okdes = false; + _endGame = true; + _loseGame = false; + _heroSearching = false; + + displayAloneText(); + tinke(); + drawClock(); + afdes(); + repon(2, g_crep); + clearScreenType3(); + _endGame = false; + _menu.setDestinationMenuText(g_s._currPlace); + modinv(); + if (g_s._selectedObjectId != 0) + modobj(g_s._selectedObjectId + 400); + _mouse.showMouse(); +} + +/** + * Engine function - Handle OpCodes + * @remarks Originally called 'tsitu' + */ +void MortevielleEngine::handleOpcode() { + if (!_col) + clearScreenType2(); + _syn = false; + _keyPressedEsc = false; + if (!_anyone) { + if (_brt) { + if ((g_msg[3] == MENU_MOVE) || (g_msg[4] == OPCODE_LEAVE) || (g_msg[4] == OPCODE_SLEEP) || (g_msg[4] == OPCODE_EAT)) { + g_ctrm = 4; + mennor(); + return; + } + } + if (g_msg[3] == MENU_MOVE) + fctMove(); + if (g_msg[3] == MENU_DISCUSS) + fctDiscuss(); + if (g_msg[3] == MENU_INVENTORY) + fctInventoryTake(); + if (g_msg[4] == OPCODE_ATTACH) + fctAttach(); + if (g_msg[4] == OPCODE_WAIT) + fctWait(); + if (g_msg[4] == OPCODE_FORCE) + fctForce(); + if (g_msg[4] == OPCODE_SLEEP) + fctSleep(); + if (g_msg[4] == OPCODE_LISTEN) + fctListen(); + if (g_msg[4] == OPCODE_ENTER) + fctEnter(); + if (g_msg[4] == OPCODE_CLOSE) + fctClose(); + if (g_msg[4] == OPCODE_SEARCH) + fctSearch(); + if (g_msg[4] == OPCODE_KNOCK) + fctKnock(); + if (g_msg[4] == OPCODE_SCRATCH) + fctScratch(); + if (g_msg[4] == OPCODE_READ) + fctRead(); + if (g_msg[4] == OPCODE_EAT) + fctEat(); + if (g_msg[4] == OPCODE_PLACE) + fctPlace(); + if (g_msg[4] == OPCODE_OPEN) + fctOpen(); + if (g_msg[4] == OPCODE_TAKE) + fctTake(); + if (g_msg[4] == OPCODE_LOOK) + fctLook(); + if (g_msg[4] == OPCODE_SMELL) + fctSmell(); + if (g_msg[4] == OPCODE_SOUND) + fctSound(); + if (g_msg[4] == OPCODE_LEAVE) + fctLeave(); + if (g_msg[4] == OPCODE_LIFT) + fctLift(); + if (g_msg[4] == OPCODE_TURN) + fctTurn(); + if (g_msg[4] == OPCODE_SSEARCH) + fctSelfSearch(); + if (g_msg[4] == OPCODE_SREAD) + fctSelfRead(); + if (g_msg[4] == OPCODE_SPUT) + fctSelfPut(); + if (g_msg[4] == OPCODE_SLOOK) + fctSelftLook(); + _hiddenHero = false; + + if (g_msg[4] == OPCODE_SHIDE) + fctSelfHide(); + } else { + if (_anyone) { + quelquun(); + _anyone = false; + mennor(); + return; + } + } + int hour, day, minute; + updateHour(day, hour, minute); + if ((((hour == 12) || (hour == 13) || (hour == 19)) && (g_s._currPlace != 10)) || + ((hour > 0) && (hour < 6) && (g_s._currPlace != 0))) + ++g_s._faithScore; + if (((g_s._currPlace < CRYPT) || (g_s._currPlace > MOUNTAIN)) && (g_s._currPlace != INSIDE_WELL) + && (g_s._currPlace != OWN_ROOM) && (g_s._selectedObjectId != 152) && (!_loseGame)) { + if ((g_s._faithScore > 99) && (hour > 8) && (hour < 16)) { + g_crep = 1501; + loseGame(); + } + if ((g_s._faithScore > 99) && (hour > 0) && (hour < 9)) { + g_crep = 1508; + loseGame(); + } + if ((day > 1) && (hour > 8) && (!_loseGame)) { + g_crep = 1502; + loseGame(); + } + } + mennor(); +} + +/** + * Engine function - Transform time into a char + * @remarks Originally called 'tmaj3' + */ +void MortevielleEngine::hourToChar() { + int day, hour, minute; + + g_vm->updateHour(day, hour, minute); + if (minute == 30) + minute = 1; + hour += day * 24; + minute += hour * 2; + g_s._fullHour = chr(minute); +} + +/** + * Engine function - extract time from a char + * @remarks Originally called 'theure' + */ +void MortevielleEngine::charToHour() { + int fullHour = ord(g_s._fullHour); + int tmpHour = fullHour % 48; + g_vm->_currDay = fullHour / 48; + g_vm->_currHalfHour = tmpHour % 2; + g_vm->_currHour = tmpHour / 2; + g_vm->_hour = g_vm->_currHour; + if (g_vm->_currHalfHour == 1) + g_vm->_minute = 30; + else + g_vm->_minute = 0; +} + +/** + * Engine function - Clear Screen - Type 1 + * @remarks Originally called 'clsf1' + */ +void MortevielleEngine::clearScreenType1() { + g_vm->_mouse.hideMouse(); + g_vm->_screenSurface.fillRect(0, Common::Rect(0, 11, 514, 175)); + g_vm->_mouse.showMouse(); +} + +/** + * Engine function - Clear Screen - Type 2 + * @remarks Originally called 'clsf2' + */ +void MortevielleEngine::clearScreenType2() { + g_vm->_mouse.hideMouse(); + if (g_vm->_largestClearScreen) { + g_vm->_screenSurface.fillRect(0, Common::Rect(1, 176, 633, 199)); + g_vm->_screenSurface.drawBox(0, 175, 634, 24, 15); + g_vm->_largestClearScreen = false; + } else { + g_vm->_screenSurface.fillRect(0, Common::Rect(1, 176, 633, 190)); + g_vm->_screenSurface.drawBox(0, 175, 634, 15, 15); + } + g_vm->_mouse.showMouse(); +} + +/** + * Engine function - Clear Screen - Type 3 + * @remarks Originally called 'clsf3' + */ +void MortevielleEngine::clearScreenType3() { + g_vm->_mouse.hideMouse(); + g_vm->_screenSurface.fillRect(0, Common::Rect(1, 192, 633, 199)); + g_vm->_screenSurface.drawBox(0, 191, 634, 8, 15); + g_vm->_mouse.showMouse(); +} + +/** + * Engine function - Clear Screen - Type 10 + * @remarks Originally called 'clsf10' + */ +void MortevielleEngine::clearScreenType10() { + int co, cod; + Common::String st; + + g_vm->_mouse.hideMouse(); + if (g_res == 1) { + co = 634; + cod = 534; + } else { + co = 600; + cod = 544; + } + g_vm->_screenSurface.fillRect(15, Common::Rect(cod, 93, co, 98)); + if (g_s._faithScore < 33) + st = g_vm->getEngineString(S_COOL); + else if (g_s._faithScore < 66) + st = g_vm->getEngineString(S_LOURDE); + else if (g_s._faithScore > 65) + st = g_vm->getEngineString(S_MALSAINE); + + co = 580 - (g_vm->_screenSurface.getStringWidth(st) / 2); + g_vm->_screenSurface.putxy(co, 92); + g_vm->_screenSurface.drawString(st, 4); + + g_vm->_screenSurface.fillRect(15, Common::Rect(560, 24, 610, 86)); + /* rempli(69,12,32,5,255);*/ + g_vm->_mouse.showMouse(); +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index aeaf5e27d1..477415b317 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -34,6 +34,7 @@ #include "graphics/surface.h" #include "mortevielle/graphics.h" #include "mortevielle/menu.h" +#include "mortevielle/mouse.h" #include "mortevielle/saveload.h" #include "mortevielle/sound.h" #include "mortevielle/speech.h" @@ -168,6 +169,7 @@ public: SavegameManager _savegameManager; SpeechManager _speechManager; Menu _menu; + MouseHandler _mouse; bool _quitGame; // Quit game flag. Originally called 'arret' bool _endGame; // End game flag. Originally called 'solu' @@ -289,6 +291,14 @@ public: void hourToChar(); void changeGraphicalDevice(int newDevice); + void startDialog(int16 rep); + void endSearch(); + int convertCharacterIndexToBitIndex(int characterIndex); + int convertBitIndexToCharacterIndex(int bitIndex); + void clearScreenType1(); + void clearScreenType2(); + void clearScreenType3(); + void clearScreenType10(); }; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 401a2b3f7b..c5f0e21802 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -36,21 +36,11 @@ namespace Mortevielle { const int m_arrow = 0; const int m_point_hand = 1; -bool int_m, clic; - -int m_show, - x_s, - y_s, - p_o_s, - mouse_shwn; - -int s_s[12][6]; - /** * Initialize the mouse * @remarks Originally called 'init_mouse' */ -void initMouse() { +void MouseHandler::initMouse() { registres reg; mouse_shwn = 0; @@ -81,7 +71,7 @@ void initMouse() { * Hide the mouse * @remarks Originally called 'hide_mouse' */ -void hideMouse() { +void MouseHandler::hideMouse() { --mouse_shwn; if (mouse_shwn == 0) { bool imp = odd(y_s); @@ -173,7 +163,7 @@ void hideMouse() { * Show mouse * @remarks Originally called 'show_mouse' */ -void showMouse() { +void MouseHandler::showMouse() { int k, l; mouse_shwn = mouse_shwn + 1; @@ -258,7 +248,7 @@ void showMouse() { * Set mouse position * @remarks Originally called 'pos_mouse' */ -void setMousePos(int x, int y) { +void MouseHandler::setMousePos(int x, int y) { if (x > 314 * g_res) x = 314 * g_res; else if (x < 0) @@ -278,7 +268,7 @@ void setMousePos(int x, int y) { * Get mouse poisition * @remarks Originally called 'read_pos_mouse' */ -void getMousePos_(int &x, int &y, int &c) { +void MouseHandler::getMousePos_(int &x, int &y, int &c) { x = g_vm->getMousePos().x; y = g_vm->getMousePos().y; c = g_vm->getMouseClick() ? 1 : 0; @@ -288,7 +278,7 @@ void getMousePos_(int &x, int &y, int &c) { * Move mouse * @remarks Originally called 'mov_mouse' */ -void moveMouse(bool &funct, char &key) { +void MouseHandler::moveMouse(bool &funct, char &key) { bool p_key; char in1, in2; int cx, cy, cd; @@ -443,4 +433,18 @@ void moveMouse(bool &funct, char &key) { } } +/** + * Engine function : Is mouse in a given rect? + * @remarks Originally called 'dans_rect' + */ +bool MouseHandler::isMouseIn(rectangle r) { + int x, y, c; + + getMousePos_(x, y, c); + if ((x > r._x1) && (x < r._x2) && (y > r._y1) && (y < r._y2)) + return true; + + return false; +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index 532644a255..e9cc8af7c0 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -28,24 +28,30 @@ #ifndef MORTEVIELLE_MOUSE_H #define MORTEVIELLE_MOUSE_H +#include "mortevielle/var_mor.h" + namespace Mortevielle { -extern bool int_m; - -extern int m_show, - x_s, - y_s, - p_o_s, - mouse_shwn; - -void initMouse(); -//extern void change_mouse(int t); -//extern void dessine_souris(int xf, int yf); -extern void hideMouse(); -extern void showMouse(); -extern void setMousePos(int x, int y); -extern void getMousePos_(int &x, int &y, int &c); -extern void moveMouse(bool &funct, char &key); +class MouseHandler { +protected: + int s_s[12][6]; +public: + bool int_m; + + int m_show; + int x_s; + int y_s; + int p_o_s; + int mouse_shwn; + + void initMouse(); + void hideMouse(); + void showMouse(); + void setMousePos(int x, int y); + void getMousePos_(int &x, int &y, int &c); + void moveMouse(bool &funct, char &key); + bool isMouseIn(rectangle r); +}; } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index c93107cc13..1947e3d860 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -351,7 +351,7 @@ void taffich() { } g_vm->_okdes = true; - hideMouse(); + g_vm->_mouse.hideMouse(); lgt = 0; Common::String filename; @@ -450,7 +450,7 @@ void taffich() { } charani(filename, lgt, handle); } - showMouse(); + g_vm->_mouse.showMouse(); if ((a < 27) && ((g_maff < 27) || (g_s._currPlace == LANDING)) && (g_msg[4] != OPCODE_ENTER)) { if ((a == 13) || (a == 14)) g_vm->displayAloneText(); diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 9b0f72c8e0..1ac883f53e 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -134,7 +134,7 @@ void chartex() { void dialpre() { /* debug('o3 dialpre'); */ g_crep = 998; - int_m = true; + g_vm->_mouse.int_m = true; } void music() { diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index d054308cf3..9458da38bc 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -119,7 +119,7 @@ void SavegameManager::loadSavegame(int n) { * Load a saved game */ Common::Error SavegameManager::loadGame(int n) { - hideMouse(); + g_vm->_mouse.hideMouse(); maivid(); loadSavegame(n); @@ -127,7 +127,7 @@ Common::Error SavegameManager::loadGame(int n) { g_vm->charToHour(); g_vm->initGame(); g_vm->gameLoaded(); - showMouse(); + g_vm->_mouse.showMouse(); return Common::kNoError; } @@ -138,7 +138,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { Common::OutSaveFile *f; int i; - hideMouse(); + g_vm->_mouse.hideMouse(); g_vm->hourToChar(); for (i = 0; i <= 389; ++i) @@ -167,7 +167,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { // Skipped: dialog asking to swap floppy - showMouse(); + g_vm->_mouse.showMouse(); return Common::kNoError; } -- cgit v1.2.3 From 2df7ebf1609d033628423870fba2217c855e75f3 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 20 Mar 2012 07:05:25 +0100 Subject: MORTEVIELLE: Refactor mouse class --- engines/mortevielle/dialogs.cpp | 24 ++++----- engines/mortevielle/menu.cpp | 45 ++++++++-------- engines/mortevielle/menu.h | 3 +- engines/mortevielle/mor.cpp | 8 +-- engines/mortevielle/mortevielle.cpp | 6 +-- engines/mortevielle/mortevielle.h | 2 +- engines/mortevielle/mouse.cpp | 105 +++++++++++++++--------------------- engines/mortevielle/mouse.h | 14 ++--- engines/mortevielle/ovd1.cpp | 1 - engines/mortevielle/var_mor.cpp | 6 --- engines/mortevielle/var_mor.h | 7 --- 11 files changed, 90 insertions(+), 131 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index f1faee0daa..68d2852100 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -45,7 +45,8 @@ int Alert::show(const Common::String &msg, int n) { Common::String st, chaine; int limit[3][3]; Common::String s[3]; - int cx, cy, nbcol, lignNumb; + Common::Point curPos; + int nbcol, lignNumb; bool newaff, test, test1, test2, test3, dum; Common::String cas; @@ -70,17 +71,17 @@ int Alert::show(const Common::String &msg, int n) { i = 0; g_vm->_screenSurface._textPos.y = 70; do { - cx = 320; + curPos.x = 320; st = ""; while ((chaine[i + 1] != '\174') && (chaine[i + 1] != '\135')) { ++i; st = st + chaine[i]; if (g_res == 2) - cx -= 3; + curPos.x -= 3; else - cx -= 5; + curPos.x -= 5; } - g_vm->_screenSurface.putxy(cx, g_vm->_screenSurface._textPos.y); + g_vm->_screenSurface.putxy(curPos.x, g_vm->_screenSurface._textPos.y); g_vm->_screenSurface._textPos.y += 6; g_vm->_screenSurface.drawString(st, 4); ++i; @@ -108,15 +109,14 @@ int Alert::show(const Common::String &msg, int n) { g_vm->_mouse.moveMouse(dum, dummyKey); CHECK_QUIT0; - cx = g_vm->_mouse.x_s; - cy = g_vm->_mouse.y_s; - test = (cy > 95) && (cy < 105); + curPos = g_vm->_mouse._pos; + test = (curPos.y > 95) && (curPos.y < 105); newaff = false; if (test) { - test1 = (cx > limit[1][1]) && (cx < limit[1][2]); + test1 = (curPos.x > limit[1][1]) && (curPos.x < limit[1][2]); test2 = test1; if (caseNumb > 1) - test2 = test1 || ((cx > limit[2][1]) && (cx < limit[2][2])); + test2 = test1 || ((curPos.x > limit[2][1]) && (curPos.x < limit[2][2])); if (test2) { newaff = true; if (test1) @@ -157,8 +157,8 @@ int Alert::show(const Common::String &msg, int n) { quoi = 0; g_vm->_mouse.showMouse(); } - test3 = (cy > 95) && (cy < 105) && (((cx > limit[1][1]) && (cx < limit[1][2])) - || ((cx > limit[2][1]) && (cx < limit[2][2]))); + test3 = (curPos.y > 95) && (curPos.y < 105) && (((curPos.x > limit[1][1]) && (curPos.x < limit[1][2])) + || ((curPos.x > limit[2][1]) && (curPos.x < limit[2][2]))); } while (!g_vm->getMouseClick()); g_vm->setMouseClick(false); g_vm->_mouse.hideMouse(); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 3f5db6de9a..e4f3702a7b 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -270,7 +270,7 @@ void Menu::invers(int ix) { g_msg4 = OPCODE_NONE; } -void Menu::util(int x, int y) { +void Menu::util(Common::Point pos) { int ymx = (g_menuConstants[g_msg3 - 1][3] << 3) + 16; int dxcar = g_menuConstants[g_msg3 - 1][2]; @@ -282,8 +282,8 @@ void Menu::util(int x, int y) { else ix = 3; int xmx = dxcar * ix * g_res + xmn + 2; - if ((x > xmn) && (x < xmx) && (y < ymx) && (y > 15)) { - ix = (((uint)y >> 3) - 1) + (g_msg3 << 8); + if ((pos.x > xmn) && (pos.x < xmx) && (pos.y < ymx) && (pos.y > 15)) { + ix = (((uint)pos.y >> 3) - 1) + (g_msg3 << 8); if (ix != g_msg4) { invers(1); g_msg4 = ix; @@ -417,35 +417,32 @@ void Menu::mdn() { if (!_menuActive) return; - int x = g_vm->_mouse.x_s; - int y = g_vm->_mouse.y_s; + Common::Point curPos = g_vm->_mouse._pos; if (!g_vm->getMouseClick()) { - if ((x == g_xprec) && (y == g_yprec)) + if (curPos == g_vm->_prevPos) return; - else { - g_xprec = x; - g_yprec = y; - } + else + g_vm->_prevPos = curPos; - bool tes = (y < 11) - && ((x >= (28 * g_res) && x <= (28 * g_res + 24)) - || (x >= (76 * g_res) && x <= (76 * g_res + 24)) - || ((x > 124 * g_res) && (x < 124 * g_res + 24)) - || ((x > 172 * g_res) && (x < 172 * g_res + 24)) - || ((x > 220 * g_res) && (x < 220 * g_res + 24)) - || ((x > 268 * g_res) && (x < 268 * g_res + 24))); + bool tes = (curPos.y < 11) + && ((curPos.x >= (28 * g_res) && curPos.x <= (28 * g_res + 24)) + || (curPos.x >= (76 * g_res) && curPos.x <= (76 * g_res + 24)) + || ((curPos.x > 124 * g_res) && (curPos.x < 124 * g_res + 24)) + || ((curPos.x > 172 * g_res) && (curPos.x < 172 * g_res + 24)) + || ((curPos.x > 220 * g_res) && (curPos.x < 220 * g_res + 24)) + || ((curPos.x > 268 * g_res) && (curPos.x < 268 * g_res + 24))); if (tes) { int ix; - if (x < 76 * g_res) + if (curPos.x < 76 * g_res) ix = MENU_INVENTORY; - else if (x < 124 * g_res) + else if (curPos.x < 124 * g_res) ix = MENU_MOVE; - else if (x < 172 * g_res) + else if (curPos.x < 172 * g_res) ix = MENU_ACTION; - else if (x < 220 * g_res) + else if (curPos.x < 220 * g_res) ix = MENU_SELF; - else if (x < 268 * g_res) + else if (curPos.x < 268 * g_res) ix = MENU_DISCUSS; else ix = MENU_FILE; @@ -458,8 +455,8 @@ void Menu::mdn() { g_msg4 = OPCODE_NONE; } } else { // Not in the MenuTitle line - if ((y > 11) && (_multiTitle)) - util(x, y); + if ((curPos.y > 11) && (_multiTitle)) + util(curPos); } } else { // There was a click if ((g_msg3 == MENU_FILE) && (g_msg4 != OPCODE_NONE)) { diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index adfe35981e..ccf5bd8954 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -28,13 +28,14 @@ #ifndef MORTEVIELLE_MENU_H #define MORTEVIELLE_MENU_H +#include "common/rect.h" #include "common/str.h" namespace Mortevielle { class Menu { private: - void util(int x, int y); + void util(Common::Point pos); void invers(int ix); void menuDown(int ii); public: diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 439d9255e2..041841fcca 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -756,7 +756,7 @@ void tinke() { g_vm->_minute = 30; drawClock(); } - if (g_vm->_mouse.y_s < 12) + if (g_vm->_mouse._pos.y < 12) return; if (!g_vm->_blo) { @@ -1129,7 +1129,7 @@ void tfleche() { CHECK_QUIT; if (g_vm->getMouseClick()) - inRect = (g_vm->_mouse.x_s < 256 * g_res) && (g_vm->_mouse.y_s < 176) && (g_vm->_mouse.y_s > 12); + inRect = (g_vm->_mouse._pos.x < 256 * g_res) && (g_vm->_mouse._pos.y < 176) && (g_vm->_mouse._pos.y > 12); tinke(); } while (!(qust || inRect || g_vm->_anyone)); @@ -1141,8 +1141,8 @@ void tfleche() { g_vm->_keyPressedEsc = true; if (inRect) { - g_x = g_vm->_mouse.x_s; - g_y = g_vm->_mouse.y_s; + g_x = g_vm->_mouse._pos.x; + g_y = g_vm->_mouse._pos.y; } } diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index f376e57d8d..4a8961f536 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -339,8 +339,8 @@ bool MortevielleEngine::handleEvents() { case Common::EVENT_LBUTTONUP: case Common::EVENT_MOUSEMOVE: _mousePos = Common::Point(event.mouse.x, event.mouse.y / 2); - g_vm->_mouse.x_s = event.mouse.x; - g_vm->_mouse.y_s = event.mouse.y / 2; + g_vm->_mouse._pos.x = event.mouse.x; + g_vm->_mouse._pos.y = event.mouse.y / 2; if (event.type == Common::EVENT_LBUTTONDOWN) _mouseClick = true; @@ -652,7 +652,7 @@ void MortevielleEngine::handleAction() { g_mnumo = g_msg[4]; if (!_anyone) { if ((_heroSearching) || (_obpart)) { - if (g_vm->_mouse.y_s < 12) + if (g_vm->_mouse._pos.y < 12) return; if ((g_msg[4] == OPCODE_SOUND) || (g_msg[4] == OPCODE_LIFT)) { diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 477415b317..e6df67024e 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -114,6 +114,7 @@ private: void handleAction(); public: Common::String _hintPctMessage; + Common::Point _prevPos; bool _roomPresenceLuc; bool _roomPresenceIda; @@ -126,7 +127,6 @@ public: bool _toiletsPresenceBobMax; bool _bathRoomPresenceBobMax; bool _room9PresenceLeo; - bool _soundOff; bool _largestClearScreen; bool _hiddenHero; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index c5f0e21802..a898f22bbe 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -33,38 +33,15 @@ namespace Mortevielle { -const int m_arrow = 0; -const int m_point_hand = 1; - /** * Initialize the mouse * @remarks Originally called 'init_mouse' */ void MouseHandler::initMouse() { - registres reg; - - mouse_shwn = 0; - x_s = 0; - y_s = 0; - p_o_s = 0; + _counter = 0; + _pos = Common::Point(0, 0); g_vm->setMouseClick(false); - m_show = m_arrow; - if ((READ_LE_UINT16(&g_mem[0xcc]) == 0) && (READ_LE_UINT16(&g_mem[0xce]) == 0)) - int_m = false; - - if (int_m) { - reg._ax = 0; - intr(0x33, reg); - int_m = (reg._ax == -1); - if (int_m) { - reg._ax = 4; - reg._cx = 0; - reg._dx = 0; - - intr(0x33, reg); - } - } } /** @@ -72,14 +49,13 @@ void MouseHandler::initMouse() { * @remarks Originally called 'hide_mouse' */ void MouseHandler::hideMouse() { - --mouse_shwn; - if (mouse_shwn == 0) { - bool imp = odd(y_s); - int j = p_o_s; + --_counter; + if (_counter == 0) { + int j = 0; switch (g_vm->_currGraphicalDevice) { case MODE_CGA: { int k = 0; - j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); + j = ((uint)_pos.y >> 1) * 80 + ((uint)_pos.x >> 2); do { WRITE_LE_UINT16(&g_mem[0xb000 * 16 + j], s_s[0][k]); WRITE_LE_UINT16(&g_mem[0xb800 * 16 + j + 2], s_s[1][k]); @@ -90,11 +66,12 @@ void MouseHandler::hideMouse() { } while (k < 5); } break; - case MODE_AMSTRAD1512: + case MODE_AMSTRAD1512: { + bool imp = odd(_pos.y); for (int i = 0; i <= 3; ++i) { g_port[0x3dd] = 1 << i; int k = 0; - j = p_o_s; + j = 0; do { if (imp) { WRITE_LE_UINT16(&g_mem[0xb800 * 16 + j], s_s[i][k]); @@ -108,6 +85,7 @@ void MouseHandler::hideMouse() { } while (k < 8); } break; + } case MODE_EGA: { g_port[0x3c4] = 2; g_port[0x3ce] = 8; @@ -116,7 +94,7 @@ void MouseHandler::hideMouse() { do { g_port[0x3c5] = 1 << i; int k = 0; - j = p_o_s; + j = 0; do { // Useless ? // ps = mem[0xa000 * 16 + j]; @@ -133,7 +111,7 @@ void MouseHandler::hideMouse() { } break; case MODE_HERCULES: - j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); + j = ((uint)_pos.y >> 1) * 80 + ((uint)_pos.x >> 3); for (int i = 0; i <= 5; ++i) { for (int k = 0; k <= 3; ++k) WRITE_LE_UINT16(&g_mem[0xb000 * 16 + k * 0x200 + j], s_s[i][k]); @@ -141,7 +119,7 @@ void MouseHandler::hideMouse() { } break; case MODE_TANDY: { - j = ((uint)y_s >> 2) * 160 + ((uint)x_s >> 1); + j = ((uint)_pos.y >> 2) * 160 + ((uint)_pos.x >> 1); int k = 0; do { for (int i = 0; i <= 3; ++i) { @@ -166,16 +144,15 @@ void MouseHandler::hideMouse() { void MouseHandler::showMouse() { int k, l; - mouse_shwn = mouse_shwn + 1; - if (mouse_shwn != 1) + ++_counter; + if (_counter != 1) return; - int j = p_o_s; - bool imp = odd(y_s); - int i = x_s & 7; + int j = 0; + int i = _pos.x & 7; switch (g_vm->_currGraphicalDevice) { case MODE_CGA: k = 0; - j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 2); + j = ((uint)_pos.y >> 1) * 80 + ((uint)_pos.x >> 2); do { s_s[0][k] = READ_LE_UINT16(&g_mem[0xb800 * 16 + j]); s_s[1][k] = READ_LE_UINT16(&g_mem[0xb800 * 16 + j + 2]); @@ -185,10 +162,11 @@ void MouseHandler::showMouse() { ++k; } while (k < 5); break; - case MODE_AMSTRAD1512: + case MODE_AMSTRAD1512: { + bool imp = odd(_pos.y); for (i = 0; i <= 3; ++i) { - j = p_o_s; - imp = odd(y_s); + j = 0; + imp = odd(_pos.y); g_port[0x3de] = i; k = 0; do { @@ -204,13 +182,14 @@ void MouseHandler::showMouse() { } while (k < 8); } break; + } case MODE_EGA: g_port[0x3ce] = 4; l = 0; do { g_port[0x3cf] = l; k = 0; - j = p_o_s; + j = 0; do { s_s[l][k] = g_mem[0xa000 * 16 + j] + (g_mem[(0xa000 * 16) + j + 1] << 8); j += 80; @@ -220,7 +199,7 @@ void MouseHandler::showMouse() { } while (l != 4); break; case MODE_HERCULES: - j = ((uint)y_s >> 1) * 80 + ((uint)x_s >> 3); + j = ((uint)_pos.y >> 1) * 80 + ((uint)_pos.x >> 3); for (i = 0; i <= 5; ++i) { for (k = 0; k <= 3; ++k) s_s[i][k] = READ_LE_UINT16(&g_mem[0xb000 * 16 + k * 0x200 + j]); @@ -228,7 +207,7 @@ void MouseHandler::showMouse() { } break; case MODE_TANDY: - j = ((uint)y_s >> 2) * 160 + ((uint)x_s >> 1); + j = ((uint)_pos.y >> 2) * 160 + ((uint)_pos.x >> 1); k = 0; do { for (i = 0; i <= 3; ++i) { @@ -248,20 +227,20 @@ void MouseHandler::showMouse() { * Set mouse position * @remarks Originally called 'pos_mouse' */ -void MouseHandler::setMousePos(int x, int y) { - if (x > 314 * g_res) - x = 314 * g_res; - else if (x < 0) - x = 0; - if (y > 199) - y = 199; - else if (y < 0) - y = 0; - if ((x == x_s) && (y == y_s)) +void MouseHandler::setMousePos(Common::Point newPos) { + if (newPos.x > 314 * g_res) + newPos.x = 314 * g_res; + else if (newPos.x < 0) + newPos.x = 0; + if (newPos.y > 199) + newPos.y = 199; + else if (newPos.y < 0) + newPos.y = 0; + if (newPos == _pos) return; // Set the new position - g_vm->setMousePos(Common::Point(x, y)); + g_vm->setMousePos(newPos); } /** @@ -300,16 +279,16 @@ void MouseHandler::moveMouse(bool &funct, char &key) { getMousePos_(cx, cy, cd); switch (toupper(in1)) { case '4': - cx = cx - 8; + cx -= 8; break; case '2': - cy = cy + 8; + cy += 8; break; case '6': - cx = cx + 8; + cx += 8; break; case '8': - cy = cy - 8; + cy -= 8; break; case '7': cy = 1; @@ -428,7 +407,7 @@ void MouseHandler::moveMouse(bool &funct, char &key) { break; } - setMousePos(cx, cy); + setMousePos(Common::Point(cx, cy)); p_key = g_vm->keyPressed(); } } diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index e9cc8af7c0..76a9991f44 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -33,21 +33,17 @@ namespace Mortevielle { class MouseHandler { -protected: +private: int s_s[12][6]; -public: - bool int_m; + int _counter; - int m_show; - int x_s; - int y_s; - int p_o_s; - int mouse_shwn; +public: + Common::Point _pos; void initMouse(); void hideMouse(); void showMouse(); - void setMousePos(int x, int y); + void setMousePos(Common::Point newPos); void getMousePos_(int &x, int &y, int &c); void moveMouse(bool &funct, char &key); bool isMouseIn(rectangle r); diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 1ac883f53e..2f86437b3f 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -134,7 +134,6 @@ void chartex() { void dialpre() { /* debug('o3 dialpre'); */ g_crep = 998; - g_vm->_mouse.int_m = true; } void music() { diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 495487c33e..f4a5d12955 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -105,8 +105,6 @@ int g_x, g_menup, g_mpers, g_mnumo, - g_xprec, - g_yprec, g_perdep, g_prebru, g_numpal, @@ -176,10 +174,6 @@ Common::String copy(const Common::String &s, int idx, size_t size) { int g_port[0xfff]; byte g_mem[65536 * 16]; -void intr(int intNum, registres ®s) { - warning("STUBBED: Call to DOS interrupt #%d", intNum); -} - /** * Engine function - Get a random number between two values * @remarks Originally called 'get_random_number' and 'hazard' diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 19bde4088e..d71c0d7668 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -131,10 +131,6 @@ struct sav_chaine { byte _fullHour; }; -struct registres { - int _ax, _bx, _cx, _dx, _bp, _si, _di, _ds, _es, _flags; -}; - struct ind { int _indis; byte _point; @@ -210,8 +206,6 @@ extern int g_x, g_menup, g_mpers, g_mnumo, - g_xprec, - g_yprec, g_perdep, g_prebru, g_numpal, @@ -264,7 +258,6 @@ extern byte g_mem[65536 * 16]; #define hires {} extern void palette(int v1); -extern void intr(int intNum, registres ®s); extern int getRandomNumber(int minval, int maxval); extern void s_char(int Gd, int y, int dy); -- cgit v1.2.3 From 471b085febc04c4afae1a2667def82ce588fafc0 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 20 Mar 2012 07:50:23 +0100 Subject: MORTEVIELLE: Fix regression --- engines/mortevielle/actions.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 7949d93b38..86c03b41d1 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -70,9 +70,12 @@ void MortevielleEngine::fctMove() { } else if (g_num == 7) { g_s._currPlace = ATTIC; _menu.setDestinationMenuText(ATTIC); - } else if (g_num != 6) + } + + if (g_num != 6) g_s._currPlace = ROOM26; - else if ((g_num > 1) && (g_num < 6)) + + if ((g_num > 1) && (g_num < 6)) g_ment = g_num - 1; else if (g_num > 7) g_ment = g_num - 3; -- cgit v1.2.3 From d09561e0c48486a6fcf68febd514e6c2dd63ce92 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 20 Mar 2012 22:52:59 +0100 Subject: MORTEVIELLE: More renaming --- engines/mortevielle/actions.cpp | 6 +- engines/mortevielle/menu.cpp | 87 ++++++++------ engines/mortevielle/menu.h | 12 +- engines/mortevielle/mor.cpp | 44 +++---- engines/mortevielle/mor.h | 1 - engines/mortevielle/mortevielle.cpp | 92 +++++++++------ engines/mortevielle/mortevielle.h | 3 + engines/mortevielle/outtext.cpp | 2 +- engines/mortevielle/ovd1.cpp | 4 +- engines/mortevielle/speech.cpp | 222 ++++++++++++++++++------------------ engines/mortevielle/speech.h | 2 + engines/mortevielle/var_mor.cpp | 44 +------ engines/mortevielle/var_mor.h | 74 ++++++------ 13 files changed, 285 insertions(+), 308 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 86c03b41d1..a4255fd598 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -83,7 +83,7 @@ void MortevielleEngine::fctMove() { if (g_num != 6) affrep(); else - aldepl(); + showMoveMenuAlert(); return; } tsort(); @@ -598,7 +598,7 @@ void MortevielleEngine::fctOpen() { } if (g_caff == 15) { - aldepl(); + showMoveMenuAlert(); return; } @@ -1132,7 +1132,7 @@ void MortevielleEngine::fctEnter() { gotoDiningRoom(); _menu.setDestinationMenuText(g_s._currPlace); } else if (g_s._currPlace == LANDING) - aldepl(); + showMoveMenuAlert(); else if (g_ment == 0) g_crep = 997; else if ((g_ment == 9) && (g_s._selectedObjectId != 136)) { diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index e4f3702a7b..6cf09be3c8 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -38,7 +38,16 @@ namespace Mortevielle { -/* NIVEAU 14*/ +const byte _menuConstants[8][4] = { + { 7, 37, 22, 8}, + {19, 33, 23, 7}, + {31, 89, 10, 21}, + {43, 25, 11, 5}, + {55, 37, 5, 8}, + {64, 13, 11, 2}, + {62, 22, 13, 4}, + {62, 25, 13, 5} +}; /** * Setup a menu's contents @@ -219,62 +228,66 @@ void Menu::drawMenu() { _multiTitle = false; } -void Menu::invers(int ix) { - Common::String s; - +/** + * Menu function - Invert a menu entry + * @remarks Originally called 'invers' + */ +void Menu::invert(int indx) { if (g_msg4 == OPCODE_NONE) return; int menuIndex = lo(g_msg4); - g_vm->_screenSurface.putxy(g_menuConstants[g_msg3 - 1][0] << 3, (menuIndex + 1) << 3); + g_vm->_screenSurface.putxy(_menuConstants[g_msg3 - 1][0] << 3, (menuIndex + 1) << 3); + + Common::String str; switch (g_msg3) { case 1: - s = _inventoryStringArray[menuIndex]; + str = _inventoryStringArray[menuIndex]; break; case 2: - s = _moveStringArray[menuIndex]; + str = _moveStringArray[menuIndex]; break; case 3: - s = _actionStringArray[menuIndex]; + str = _actionStringArray[menuIndex]; break; case 4: - s = _selfStringArray[menuIndex]; + str = _selfStringArray[menuIndex]; break; case 5: - s = _discussStringArray[menuIndex]; + str = _discussStringArray[menuIndex]; break; case 6: - s = g_vm->getEngineString(S_SAVE_LOAD + menuIndex); + str = g_vm->getEngineString(S_SAVE_LOAD + menuIndex); break; case 7: - s = g_vm->getEngineString(S_SAVE_LOAD + 1); - s += ' '; - s += (char)(48 + menuIndex); + str = g_vm->getEngineString(S_SAVE_LOAD + 1); + str += ' '; + str += (char)(48 + menuIndex); break; case 8: if (menuIndex == 1) { - s = g_vm->getEngineString(S_RESTART); + str = g_vm->getEngineString(S_RESTART); } else { - s = g_vm->getEngineString(S_SAVE_LOAD + 2); - s += ' '; - s += (char)(47 + menuIndex); + str = g_vm->getEngineString(S_SAVE_LOAD + 2); + str += ' '; + str += (char)(47 + menuIndex); } break; default: break; } - if ((s[0] != '*') && (s[0] != '<')) - g_vm->_screenSurface.drawString(s, ix); + if ((str[0] != '*') && (str[0] != '<')) + g_vm->_screenSurface.drawString(str, indx); else g_msg4 = OPCODE_NONE; } void Menu::util(Common::Point pos) { - int ymx = (g_menuConstants[g_msg3 - 1][3] << 3) + 16; - int dxcar = g_menuConstants[g_msg3 - 1][2]; - int xmn = (g_menuConstants[g_msg3 - 1][0] << 2) * g_res; + int ymx = (_menuConstants[g_msg3 - 1][3] << 3) + 16; + int dxcar = _menuConstants[g_msg3 - 1][2]; + int xmn = (_menuConstants[g_msg3 - 1][0] << 2) * g_res; int ix; if (g_res == 1) @@ -285,12 +298,12 @@ void Menu::util(Common::Point pos) { if ((pos.x > xmn) && (pos.x < xmx) && (pos.y < ymx) && (pos.y > 15)) { ix = (((uint)pos.y >> 3) - 1) + (g_msg3 << 8); if (ix != g_msg4) { - invers(1); + invert(1); g_msg4 = ix; - invers(0); + invert(0); } } else if (g_msg4 != OPCODE_NONE) { - invers(1); + invert(1); g_msg4 = OPCODE_NONE; } } @@ -299,8 +312,8 @@ void Menu::util(Common::Point pos) { * Draw a menu */ void Menu::menuDown(int ii) { - int cx, xcc; - int xco, nb_lig; + int cx, xcc, xco; + int lignNumb; /* debug('menuDown'); */ @@ -308,23 +321,23 @@ void Menu::menuDown(int ii) { g_vm->_backgroundSurface.copyFrom(g_vm->_screenSurface); // Draw the menu - xco = g_menuConstants[ii - 1][0]; - nb_lig = g_menuConstants[ii - 1][3]; + xco = _menuConstants[ii - 1][0]; + lignNumb = _menuConstants[ii - 1][3]; g_vm->_mouse.hideMouse(); - sauvecr(10, (g_menuConstants[ii - 1][1] + 1) << 1); + sauvecr(10, (_menuConstants[ii - 1][1] + 1) << 1); xco = xco << 3; if (g_res == 1) cx = 10; else cx = 6; - xcc = xco + (g_menuConstants[ii - 1][2] * cx) + 6; + xcc = xco + (_menuConstants[ii - 1][2] * cx) + 6; if ((ii == 4) && (g_vm->getLanguage() == Common::EN_ANY)) // Extra width needed for Self menu in English version xcc = 435; - g_vm->_screenSurface.fillRect(15, Common::Rect(xco, 12, xcc, 10 + (g_menuConstants[ii - 1][1] << 1))); - g_vm->_screenSurface.fillRect(0, Common::Rect(xcc, 12, xcc + 4, 10 + (g_menuConstants[ii - 1][1] << 1))); - g_vm->_screenSurface.fillRect(0, Common::Rect(xco, 8 + (g_menuConstants[ii - 1][1] << 1), xcc + 4, 12 + (g_menuConstants[ii - 1][1] << 1))); + g_vm->_screenSurface.fillRect(15, Common::Rect(xco, 12, xcc, 10 + (_menuConstants[ii - 1][1] << 1))); + g_vm->_screenSurface.fillRect(0, Common::Rect(xcc, 12, xcc + 4, 10 + (_menuConstants[ii - 1][1] << 1))); + g_vm->_screenSurface.fillRect(0, Common::Rect(xco, 8 + (_menuConstants[ii - 1][1] << 1), xcc + 4, 12 + (_menuConstants[ii - 1][1] << 1))); g_vm->_screenSurface.putxy(xco, 16); cx = 0; do { @@ -374,7 +387,7 @@ void Menu::menuDown(int ii) { break; } g_vm->_screenSurface.putxy(xco, g_vm->_screenSurface._textPos.y + 8); - } while (cx != nb_lig); + } while (cx != lignNumb); _multiTitle = true; g_vm->_mouse.showMouse(); } @@ -384,7 +397,7 @@ void Menu::menuDown(int ii) { */ void Menu::menuUp(int xx) { if (_multiTitle) { - charecr(10, (g_menuConstants[xx - 1][1] + 1) << 1); + charecr(10, (_menuConstants[xx - 1][1] + 1) << 1); /* Restore the background area */ assert(g_vm->_screenSurface.pitch == g_vm->_backgroundSurface.pitch); diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index ccf5bd8954..7f224a3ee5 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -33,10 +33,15 @@ namespace Mortevielle { +enum { + MENU_INVENTORY = 1, MENU_MOVE = 2, MENU_ACTION = 3, MENU_SELF = 4, + MENU_DISCUSS = 5, MENU_FILE = 6, MENU_SAVE = 7, MENU_LOAD = 8 +}; + class Menu { private: void util(Common::Point pos); - void invers(int ix); + void invert(int indx); void menuDown(int ii); public: bool _menuActive; @@ -67,10 +72,5 @@ public: void unsetSearchMenu(); }; -enum { - MENU_INVENTORY = 1, MENU_MOVE = 2, MENU_ACTION = 3, MENU_SELF = 4, - MENU_DISCUSS = 5, MENU_FILE = 6, MENU_SAVE = 7, MENU_LOAD = 8 -}; - } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 041841fcca..4ba68c3778 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -109,18 +109,6 @@ void pictout(int seg, int dep, int x, int y) { g_vm->_screenSurface.drawPicture(surface, x, y); } -void sauvecr(int y, int dy) { - g_vm->_mouse.hideMouse(); - s_sauv(g_vm->_currGraphicalDevice, y, dy); - g_vm->_mouse.showMouse(); -} - -void charecr(int y, int dy) { - g_vm->_mouse.hideMouse(); - s_char(g_vm->_currGraphicalDevice, y, dy); - g_vm->_mouse.showMouse(); -} - void adzon() { Common::File f; @@ -363,7 +351,7 @@ void repon(int f, int m) { } int chlm() { - int retval = getRandomNumber(1, 2); + int retval = g_vm->getRandomNumber(1, 2); if (retval == 2) retval = 128; @@ -459,13 +447,13 @@ void ecfren(int &p, int &rand, int cf, int roomId) { p = -400; if (p != -500) { p += cf; - rand = getRandomNumber(1, 100); + rand = g_vm->getRandomNumber(1, 100); } } void becfren(int roomId) { if ((roomId == GREEN_ROOM) || (roomId == DARKBLUE_ROOM)) { - int rand = getRandomNumber(1, 2); + int rand = g_vm->getRandomNumber(1, 2); if (roomId == GREEN_ROOM) { if (rand == 1) g_vm->_roomPresenceLuc = true; @@ -503,7 +491,7 @@ void init_nbrepm() { void phaz(int &rand, int &p, int cf) { p += cf; - rand = getRandomNumber(1, 100); + rand = g_vm->getRandomNumber(1, 100); } /** @@ -522,7 +510,7 @@ void resetVariables() { g_s._secretPassageObjectId = 0; g_s._purpleRoomObjectId = 136; g_s._cryptObjectId = 141; - g_s._faithScore = getRandomNumber(4, 10); + g_s._faithScore = g_vm->getRandomNumber(4, 10); g_s._currPlace = MANOR_FRONT; for (int i = 2; i <= 6; ++i) @@ -591,7 +579,7 @@ int t11(int roomId) { else if (roomId == CHAPEL) p = g_vm->getPresenceStatsChapel(h); p += g_s._faithScore; - rand = getRandomNumber(1, 100); + rand = g_vm->getRandomNumber(1, 100); if (rand > p) { g_vm->displayAloneText(); retVal = 0; @@ -621,7 +609,7 @@ void cavegre() { g_vm->clearScreenType3(); g_vm->prepareScreenType2(); ecr3(g_vm->getEngineString(S_SOMEONE_ENTERS)); - int rand = (getRandomNumber(0, 4)) - 2; + int rand = (g_vm->getRandomNumber(0, 4)) - 2; g_vm->_speechManager.startSpeech(2, rand, 1); // The original was doing here a useless loop. @@ -827,11 +815,11 @@ void tinke() { if (!g_vm->_brt) { g_vm->_brt = true; g_hdb = readclock(); - if (getRandomNumber(1, 5) < 5) { + if (g_vm->getRandomNumber(1, 5) < 5) { g_vm->clearScreenType3(); g_vm->prepareScreenType2(); ecr3(g_vm->getEngineString(S_HEAR_NOISE)); - int rand = (getRandomNumber(0, 4)) - 2; + int rand = (g_vm->getRandomNumber(0, 4)) - 2; g_vm->_speechManager.startSpeech(1, rand, 1); g_vm->clearScreenType3(); } @@ -1067,13 +1055,13 @@ L1: g_vm->_syn = true; g_vm->_col = true; } else { - if (getRandomNumber(1, 3) == 2) { + if (g_vm->getRandomNumber(1, 3) == 2) { g_vm->_hiddenHero = false; g_crep = 137; goto L1; } else { repon(2, 136); - int rand = (getRandomNumber(0, 4)) - 2; + int rand = (g_vm->getRandomNumber(0, 4)) - 2; g_vm->_speechManager.startSpeech(3, rand, 1); g_vm->clearScreenType2(); g_vm->displayAloneText(); @@ -1287,8 +1275,14 @@ void st13(int ob) { g_crep = 105; } -void aldepl() { - Alert::show(g_vm->getEngineString(S_USE_DEP_MENU), 1); +void sauvecr(int y, int dy) { +// g_vm->_mouse.hideMouse(); +// g_vm->_mouse.showMouse(); +} + +void charecr(int y, int dy) { +// g_vm->_mouse.hideMouse(); +// g_vm->_mouse.showMouse(); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 0cd467c177..d3defc1b04 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -114,7 +114,6 @@ extern void rechai(int &ch); extern int t23coul(); extern void maivid(); extern void st13(int ob); -extern void aldepl(); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 4a8961f536..9b7ade1967 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -339,8 +339,8 @@ bool MortevielleEngine::handleEvents() { case Common::EVENT_LBUTTONUP: case Common::EVENT_MOUSEMOVE: _mousePos = Common::Point(event.mouse.x, event.mouse.y / 2); - g_vm->_mouse._pos.x = event.mouse.x; - g_vm->_mouse._pos.y = event.mouse.y / 2; + _mouse._pos.x = event.mouse.x; + _mouse._pos.y = event.mouse.y / 2; if (event.type == Common::EVENT_LBUTTONDOWN) _mouseClick = true; @@ -550,7 +550,7 @@ void MortevielleEngine::mainGame() { initGame(); hirs(); drawRightFrame(); - g_vm->_mouse.showMouse(); + _mouse.showMouse(); // Loop to play the game do { @@ -603,7 +603,7 @@ void MortevielleEngine::handleAction() { do { _menu.mdn(); tinke(); - g_vm->_mouse.moveMouse(funct, inkey); + _mouse.moveMouse(funct, inkey); CHECK_QUIT; temps = temps + 1; } while (!((_menu._menuSelected) || (temps > lim) || (funct) || (_anyone))); @@ -652,7 +652,7 @@ void MortevielleEngine::handleAction() { g_mnumo = g_msg[4]; if (!_anyone) { if ((_heroSearching) || (_obpart)) { - if (g_vm->_mouse._pos.y < 12) + if (_mouse._pos.y < 12) return; if ((g_msg[4] == OPCODE_SOUND) || (g_msg[4] == OPCODE_LIFT)) { @@ -1989,7 +1989,7 @@ void MortevielleEngine::handleOpcode() { void MortevielleEngine::hourToChar() { int day, hour, minute; - g_vm->updateHour(day, hour, minute); + updateHour(day, hour, minute); if (minute == 30) minute = 1; hour += day * 24; @@ -2004,14 +2004,14 @@ void MortevielleEngine::hourToChar() { void MortevielleEngine::charToHour() { int fullHour = ord(g_s._fullHour); int tmpHour = fullHour % 48; - g_vm->_currDay = fullHour / 48; - g_vm->_currHalfHour = tmpHour % 2; - g_vm->_currHour = tmpHour / 2; - g_vm->_hour = g_vm->_currHour; - if (g_vm->_currHalfHour == 1) - g_vm->_minute = 30; + _currDay = fullHour / 48; + _currHalfHour = tmpHour % 2; + _currHour = tmpHour / 2; + _hour = _currHour; + if (_currHalfHour == 1) + _minute = 30; else - g_vm->_minute = 0; + _minute = 0; } /** @@ -2019,9 +2019,9 @@ void MortevielleEngine::charToHour() { * @remarks Originally called 'clsf1' */ void MortevielleEngine::clearScreenType1() { - g_vm->_mouse.hideMouse(); - g_vm->_screenSurface.fillRect(0, Common::Rect(0, 11, 514, 175)); - g_vm->_mouse.showMouse(); + _mouse.hideMouse(); + _screenSurface.fillRect(0, Common::Rect(0, 11, 514, 175)); + _mouse.showMouse(); } /** @@ -2029,16 +2029,16 @@ void MortevielleEngine::clearScreenType1() { * @remarks Originally called 'clsf2' */ void MortevielleEngine::clearScreenType2() { - g_vm->_mouse.hideMouse(); - if (g_vm->_largestClearScreen) { - g_vm->_screenSurface.fillRect(0, Common::Rect(1, 176, 633, 199)); - g_vm->_screenSurface.drawBox(0, 175, 634, 24, 15); - g_vm->_largestClearScreen = false; + _mouse.hideMouse(); + if (_largestClearScreen) { + _screenSurface.fillRect(0, Common::Rect(1, 176, 633, 199)); + _screenSurface.drawBox(0, 175, 634, 24, 15); + _largestClearScreen = false; } else { - g_vm->_screenSurface.fillRect(0, Common::Rect(1, 176, 633, 190)); - g_vm->_screenSurface.drawBox(0, 175, 634, 15, 15); + _screenSurface.fillRect(0, Common::Rect(1, 176, 633, 190)); + _screenSurface.drawBox(0, 175, 634, 15, 15); } - g_vm->_mouse.showMouse(); + _mouse.showMouse(); } /** @@ -2046,10 +2046,10 @@ void MortevielleEngine::clearScreenType2() { * @remarks Originally called 'clsf3' */ void MortevielleEngine::clearScreenType3() { - g_vm->_mouse.hideMouse(); - g_vm->_screenSurface.fillRect(0, Common::Rect(1, 192, 633, 199)); - g_vm->_screenSurface.drawBox(0, 191, 634, 8, 15); - g_vm->_mouse.showMouse(); + _mouse.hideMouse(); + _screenSurface.fillRect(0, Common::Rect(1, 192, 633, 199)); + _screenSurface.drawBox(0, 191, 634, 8, 15); + _mouse.showMouse(); } /** @@ -2060,7 +2060,7 @@ void MortevielleEngine::clearScreenType10() { int co, cod; Common::String st; - g_vm->_mouse.hideMouse(); + _mouse.hideMouse(); if (g_res == 1) { co = 634; cod = 534; @@ -2068,21 +2068,37 @@ void MortevielleEngine::clearScreenType10() { co = 600; cod = 544; } - g_vm->_screenSurface.fillRect(15, Common::Rect(cod, 93, co, 98)); + _screenSurface.fillRect(15, Common::Rect(cod, 93, co, 98)); if (g_s._faithScore < 33) - st = g_vm->getEngineString(S_COOL); + st = getEngineString(S_COOL); else if (g_s._faithScore < 66) - st = g_vm->getEngineString(S_LOURDE); + st = getEngineString(S_LOURDE); else if (g_s._faithScore > 65) - st = g_vm->getEngineString(S_MALSAINE); + st = getEngineString(S_MALSAINE); - co = 580 - (g_vm->_screenSurface.getStringWidth(st) / 2); - g_vm->_screenSurface.putxy(co, 92); - g_vm->_screenSurface.drawString(st, 4); + co = 580 - (_screenSurface.getStringWidth(st) / 2); + _screenSurface.putxy(co, 92); + _screenSurface.drawString(st, 4); - g_vm->_screenSurface.fillRect(15, Common::Rect(560, 24, 610, 86)); + _screenSurface.fillRect(15, Common::Rect(560, 24, 610, 86)); /* rempli(69,12,32,5,255);*/ - g_vm->_mouse.showMouse(); + _mouse.showMouse(); +} + +/** + * Engine function - Get a random number between two values + * @remarks Originally called 'get_random_number' and 'hazard' + */ +int MortevielleEngine::getRandomNumber(int minval, int maxval) { + return _randomSource.getRandomNumber(maxval - minval) + minval; +} + +/** + * Engine function - Show alert "use move menu" + * @remarks Originally called 'aldepl' + */ +void MortevielleEngine::showMoveMenuAlert() { + Alert::show(getEngineString(S_USE_DEP_MENU), 1); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index e6df67024e..c2fd857536 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -154,6 +154,7 @@ public: int _day; int _hour; int _minute; + float _addfix; int _c_zzz; @@ -299,6 +300,8 @@ public: void clearScreenType2(); void clearScreenType3(); void clearScreenType10(); + int getRandomNumber(int minval, int maxval); + void showMoveMenuAlert(); }; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 1947e3d860..a941f79aa1 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -136,7 +136,7 @@ Common::String deline(int num) { } else if (!g_vm->_txxFileFl) { wrkStr = g_vm->getGameString(num); } else { - int i = g_t_rec[num]._indis; + int i = g_t_rec[num]._hintId; byte k = g_t_rec[num]._point; int length = 0; bool endFl = false; diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 2f86437b3f..0a93a84516 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -119,7 +119,7 @@ void chartex() { g_vm->_txxFileFl = true; for (int i = 0; i < (ntpFile.size() / 3); ++i) { - g_t_rec[i]._indis = ntpFile.readSint16LE(); + g_t_rec[i]._hintId = ntpFile.readSint16LE(); g_t_rec[i]._point = ntpFile.readByte(); } @@ -151,7 +151,7 @@ void music() { fic.close(); g_vm->_soundManager.decodeMusic(&g_mem[0x3800 * 16], &g_mem[0x5000 * 16], 623); - g_addfix = (float)((kTempoMusic - g_addv[1])) / 256; + g_vm->_addfix = (float)((kTempoMusic - g_addv[1])) / 256; g_vm->_speechManager.cctable(g_tbi); bool fin = false; diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index bd589057c3..ba7ef62195 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -41,15 +41,15 @@ SpeechManager::SpeechManager() { } void SpeechManager::spfrac(int wor) { - g_c3._rep = (uint)wor >> 12; - if ((_typlec == 0) && (g_c3._code != 9)) - if (((g_c3._code > 4) && (g_c3._val != 20) && (g_c3._rep != 3) && (g_c3._rep != 6) && (g_c3._rep != 9)) || - ((g_c3._code < 5) && ((g_c3._val != 19) && (g_c3._val != 22) && (g_c3._rep != 4) && (g_c3._rep != 9)))) { - ++g_c3._rep; + _queue[2]._rep = (uint)wor >> 12; + if ((_typlec == 0) && (_queue[2]._code != 9)) + if (((_queue[2]._code > 4) && (_queue[2]._val != 20) && (_queue[2]._rep != 3) && (_queue[2]._rep != 6) && (_queue[2]._rep != 9)) || + ((_queue[2]._code < 5) && ((_queue[2]._val != 19) && (_queue[2]._val != 22) && (_queue[2]._rep != 4) && (_queue[2]._rep != 9)))) { + ++_queue[2]._rep; } - g_c3._freq = ((uint)wor >> 6) & 7; - g_c3._acc = ((uint)wor >> 9) & 7; + _queue[2]._freq = ((uint)wor >> 6) & 7; + _queue[2]._acc = ((uint)wor >> 9) & 7; } void SpeechManager::charg_car(int &currWordNumb) { @@ -57,31 +57,31 @@ void SpeechManager::charg_car(int &currWordNumb) { int int_ = wor & 0x3f; // 63 if ((int_ >= 0) && (int_ <= 13)) { - g_c3._val = int_; - g_c3._code = 5; + _queue[2]._val = int_; + _queue[2]._code = 5; } else if ((int_ >= 14) && (int_ <= 21)) { - g_c3._val = int_; - g_c3._code = 6; + _queue[2]._val = int_; + _queue[2]._code = 6; } else if ((int_ >= 22) && (int_ <= 47)) { int_ = int_ - 22; - g_c3._val = int_; - g_c3._code = g_typcon[int_]; + _queue[2]._val = int_; + _queue[2]._code = g_typcon[int_]; } else if ((int_ >= 48) && (int_ <= 56)) { - g_c3._val = int_ - 22; - g_c3._code = 4; + _queue[2]._val = int_ - 22; + _queue[2]._code = 4; } else { switch (int_) { case 60: - g_c3._val = 32; /* " " */ - g_c3._code = 9; + _queue[2]._val = 32; /* " " */ + _queue[2]._code = 9; break; case 61: - g_c3._val = 46; /* "." */ - g_c3._code = 9; + _queue[2]._val = 46; /* "." */ + _queue[2]._code = 9; break; case 62: - g_c3._val = 35; /* "#" */ - g_c3._code = 9; + _queue[2]._val = 35; /* "#" */ + _queue[2]._code = 9; default: break; } @@ -106,7 +106,7 @@ void SpeechManager::cctable(tablint &t) { tb[0] = 0; for (int k = 0; k <= 255; ++k) { - tb[k + 1] = g_addfix + tb[k]; + tb[k + 1] = g_vm->_addfix + tb[k]; t[255 - k] = abs((int)tb[k] + 1); } } @@ -176,40 +176,40 @@ void SpeechManager::trait_car() { byte d3; int d2, i; - switch (g_c2._code) { + switch (_queue[1]._code) { case 9: - if (g_c2._val != ord('#')) - for (i = 0; i <= g_c2._rep; ++i) - entroct(g_c2._val); + if (_queue[1]._val != ord('#')) + for (i = 0; i <= _queue[1]._rep; ++i) + entroct(_queue[1]._val); break; case 5: case 6: - if (g_c2._code == 6) - d3 = g_tabdph[(g_c2._val - 14) << 1]; + if (_queue[1]._code == 6) + d3 = g_tabdph[(_queue[1]._val - 14) << 1]; else d3 = kNullValue; - if (g_c1._code >= 5) { - veracf(g_c2._acc); - if (g_c1._code == 9) { + if (_queue[0]._code >= 5) { + veracf(_queue[1]._acc); + if (_queue[0]._code == 9) { entroct(4); if (d3 == kNullValue) - entroct(g_c2._val); + entroct(_queue[1]._val); else entroct(d3); entroct(22); } } - switch (g_c2._rep) { + switch (_queue[1]._rep) { case 0: entroct(0); - entroct(g_c2._val); + entroct(_queue[1]._val); if (d3 == kNullValue) - if (g_c3._code == 9) + if (_queue[2]._code == 9) entroct(2); else entroct(4); - else if (g_c3._code == 9) + else if (_queue[2]._code == 9) entroct(0); else entroct(1); @@ -217,13 +217,13 @@ void SpeechManager::trait_car() { case 4: case 5: case 6: - if (g_c2._rep != 4) { - i = g_c2._rep - 5; + if (_queue[1]._rep != 4) { + i = _queue[1]._rep - 5; do { --i; entroct(0); if (d3 == kNullValue) - entroct(g_c2._val); + entroct(_queue[1]._val); else entroct(d3); entroct(3); @@ -231,24 +231,24 @@ void SpeechManager::trait_car() { } if (d3 == kNullValue) { entroct(4); - entroct(g_c2._val); + entroct(_queue[1]._val); entroct(0); } else { entroct(0); - entroct(g_c2._val); + entroct(_queue[1]._val); entroct(3); } break; case 7: case 8: case 9: - if (g_c2._rep != 7) { - i = g_c2._rep - 8; + if (_queue[1]._rep != 7) { + i = _queue[1]._rep - 8; do { --i; entroct(0); if (d3 == kNullValue) - entroct(g_c2._val); + entroct(_queue[1]._val); else entroct(d3); entroct(3); @@ -256,32 +256,32 @@ void SpeechManager::trait_car() { } if (d3 == kNullValue) { entroct(0); - entroct(g_c2._val); + entroct(_queue[1]._val); entroct(2); } else { entroct(0); - entroct(g_c2._val); + entroct(_queue[1]._val); entroct(0); } break; case 1: case 2: case 3: - if (g_c2._rep != 1) { - i = g_c2._rep - 2; + if (_queue[1]._rep != 1) { + i = _queue[1]._rep - 2; do { --i; entroct(0); if (d3 == kNullValue) - entroct(g_c2._val); + entroct(_queue[1]._val); else entroct(d3); entroct(3); } while (i >= 0); } entroct(0); - entroct(g_c2._val); - if (g_c3._code == 9) + entroct(_queue[1]._val); + if (_queue[2]._code == 9) entroct(0); else entroct(1); @@ -293,16 +293,16 @@ void SpeechManager::trait_car() { case 2: case 3: - d3 = g_c2._code + 5; // 7 ou 8 => Corresponding vowel - if (g_c1._code > 4) { - veracf(g_c2._acc); - if (g_c1._code == 9) { + d3 = _queue[1]._code + 5; // 7 ou 8 => Corresponding vowel + if (_queue[0]._code > 4) { + veracf(_queue[1]._acc); + if (_queue[0]._code == 9) { entroct(4); entroct(d3); entroct(22); } } - i = g_c2._rep; + i = _queue[1]._rep; assert(i >= 0); if (i != 0) { do { @@ -312,24 +312,24 @@ void SpeechManager::trait_car() { entroct(3); } while (i > 0); } - veracf(g_c3._acc); - if (g_c3._code == 6) { + veracf(_queue[2]._acc); + if (_queue[2]._code == 6) { entroct(4); - entroct(g_tabdph[(g_c3._val - 14) << 1]); - entroct(g_c2._val); + entroct(g_tabdph[(_queue[2]._val - 14) << 1]); + entroct(_queue[1]._val); } else { entroct(4); - if (g_c3._val == 4) + if (_queue[2]._val == 4) entroct(3); else - entroct(g_c3._val); - entroct(g_c2._val); + entroct(_queue[2]._val); + entroct(_queue[1]._val); } break; case 0: case 1: - veracf(g_c2._acc); - switch (g_c3._code) { + veracf(_queue[1]._acc); + switch (_queue[2]._code) { case 2: d2 = 7; break; @@ -337,66 +337,66 @@ void SpeechManager::trait_car() { d2 = 8; break; case 6: - d2 = g_tabdph[(g_c3._val - 14) << 1]; + d2 = g_tabdph[(_queue[2]._val - 14) << 1]; break; case 5: - d2 = g_c3._val; + d2 = _queue[2]._val; break; default: d2 = 10; break; } // switch c3._code - d2 = (d2 * 26) + g_c2._val; + d2 = (d2 * 26) + _queue[1]._val; if (g_tnocon[d2] == 0) d3 = 2; else d3 = 6; - if (g_c2._rep >= 5) { - g_c2._rep = g_c2._rep - 5; + if (_queue[1]._rep >= 5) { + _queue[1]._rep -= 5; d3 = 8 - d3; // Swap 2 and 6 } - if (g_c2._code == 0) { - i = g_c2._rep; + if (_queue[1]._code == 0) { + i = _queue[1]._rep; if (i != 0) { do { --i; entroct(d3); - entroct(g_c2._val); + entroct(_queue[1]._val); entroct(3); } while (i > 0); } entroct(d3); - entroct(g_c2._val); + entroct(_queue[1]._val); entroct(4); } else { entroct(d3); - entroct(g_c2._val); + entroct(_queue[1]._val); entroct(3); - i = g_c2._rep; + i = _queue[1]._rep; if (i != 0) { do { --i; entroct(d3); - entroct(g_c2._val); + entroct(_queue[1]._val); entroct(4); } while (i > 0); } } - if (g_c3._code == 9) { + if (_queue[2]._code == 9) { entroct(d3); - entroct(g_c2._val); + entroct(_queue[1]._val); entroct(5); - } else if ((g_c3._code != 0) && (g_c3._code != 1) && (g_c3._code != 4)) { - veracf(g_c3._acc); - switch (g_c3._code) { + } else if ((_queue[2]._code != 0) && (_queue[2]._code != 1) && (_queue[2]._code != 4)) { + veracf(_queue[2]._acc); + switch (_queue[2]._code) { case 3: d2 = 8; break; case 6: - d2 = g_tabdph[(g_c3._val - 14) << 1]; + d2 = g_tabdph[(_queue[2]._val - 14) << 1]; break; case 5: - d2 = g_c3._val; + d2 = _queue[2]._val; break; default: d2 = 7; @@ -405,47 +405,47 @@ void SpeechManager::trait_car() { if (d2 == 4) d2 = 3; - if (g_intcon[g_c2._val] != 0) - ++g_c2._val; + if (g_intcon[_queue[1]._val] != 0) + ++_queue[1]._val; - if ((g_c2._val == 17) || (g_c2._val == 18)) - g_c2._val = 16; + if ((_queue[1]._val == 17) || (_queue[1]._val == 18)) + _queue[1]._val = 16; entroct(4); entroct(d2); - entroct(g_c2._val); + entroct(_queue[1]._val); } break; case 4: - veracf(g_c2._acc); - i = g_c2._rep; + veracf(_queue[1]._acc); + i = _queue[1]._rep; if (i != 0) { do { --i; entroct(2); - entroct(g_c2._val); + entroct(_queue[1]._val); entroct(3); } while (i > 0); } entroct(2); - entroct(g_c2._val); + entroct(_queue[1]._val); entroct(4); - if (g_c3._code == 9) { + if (_queue[2]._code == 9) { entroct(2); - entroct(g_c2._val); + entroct(_queue[1]._val); entroct(5); - } else if ((g_c3._code != 0) && (g_c3._code != 1) && (g_c3._code != 4)) { - veracf(g_c3._acc); - switch (g_c3._code) { + } else if ((_queue[2]._code != 0) && (_queue[2]._code != 1) && (_queue[2]._code != 4)) { + veracf(_queue[2]._acc); + switch (_queue[2]._code) { case 3: d2 = 8; break; case 6: - d2 = g_tabdph[(g_c3._val - 14) << 1]; + d2 = g_tabdph[(_queue[2]._val - 14) << 1]; break; case 5: - d2 = g_c3._val; + d2 = _queue[2]._val; break; default: d2 = 7; @@ -455,12 +455,12 @@ void SpeechManager::trait_car() { if (d2 == 4) d2 = 3; - if (g_intcon[g_c2._val] != 0) - ++g_c2._val; + if (g_intcon[_queue[1]._val] != 0) + ++_queue[1]._val; entroct(4); entroct(d2); - entroct(g_tabdbc[((g_c2._val - 26) << 1) + 1]); + entroct(g_tabdbc[((_queue[1]._val - 26) << 1) + 1]); } break; @@ -474,10 +474,10 @@ void SpeechManager::trait_car() { * @remarks Originally called 'rot_chariot' */ void SpeechManager::moveQueue() { - g_c1 = g_c2; - g_c2 = g_c3; - g_c3._val = 32; - g_c3._code = 9; + _queue[0] = _queue[1]; + _queue[1] = _queue[2]; + _queue[2]._val = 32; + _queue[2]._code = 9; } /** @@ -485,9 +485,9 @@ void SpeechManager::moveQueue() { * @remarks Originally called 'init_chariot' */ void SpeechManager::initQueue() { - g_c3._rep = 0; - g_c3._freq = 0; - g_c3._acc = 0; + _queue[2]._rep = 0; + _queue[2]._freq = 0; + _queue[2]._acc = 0; moveQueue(); moveQueue(); } @@ -542,7 +542,7 @@ void SpeechManager::startSpeech(int rep, int ht, int typ) { tempo = kTempoF; else tempo = kTempoM; - g_addfix = (float)((tempo - g_addv[0])) / 256; + g_vm->_addfix = (float)((tempo - g_addv[0])) / 256; cctable(g_tbi); switch (typ) { case 1: diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h index a0bdf8a4dd..eabffb9bba 100644 --- a/engines/mortevielle/speech.h +++ b/engines/mortevielle/speech.h @@ -60,6 +60,8 @@ class SpeechManager { private: int _typlec; int _phonemeNumb; + SpeechQueue _queue[3]; + public: SpeechManager(); void spfrac(int wor); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index f4a5d12955..392e8a21c4 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -58,18 +58,6 @@ const byte g_tnocon[364] = { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - -const byte g_menuConstants[8][4] = { - { 7, 37, 22, 8}, - {19, 33, 23, 7}, - {31, 89, 10, 21}, - {43, 25, 11, 5}, - {55, 37, 5, 8}, - {64, 13, 11, 2}, - {62, 22, 13, 4}, - {62, 25, 13, 5} -}; - const byte g_addv[2] = {8, 8}; const byte g_rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; @@ -119,18 +107,16 @@ int g_nbrep[9]; int g_nbrepm[9]; int g_msg[5]; byte g_touv[8]; -sav_chaine g_s, g_s1; +SaveStruct g_s, g_s1; byte g_bufcha[391]; byte g_lettres[7][24]; uint16 g_t_mot[maxti + 1]; int g_tay_tchar; -ind g_t_rec[maxtd + 1]; +Hint g_t_rec[maxtd + 1]; int g_l[108]; int g_tbi[256]; -chariot g_c1, g_c2, g_c3; -float g_addfix; Common::Point g_tabpal[91][17]; t_pcga g_palcga[91]; pattern g_tpt[15]; @@ -174,36 +160,10 @@ Common::String copy(const Common::String &s, int idx, size_t size) { int g_port[0xfff]; byte g_mem[65536 * 16]; -/** - * Engine function - Get a random number between two values - * @remarks Originally called 'get_random_number' and 'hazard' - */ -int getRandomNumber(int minval, int maxval) { - return g_vm->_randomSource.getRandomNumber(maxval - minval) + minval; -} - -/** - * Restore a screen sectio - */ -void s_sauv(int Gd, int y, int dy) { - // Note: May no longer be necessary, since the backgorund restore code - // is being handled slightly differently now in the menuUp() method -} - void palette(int v1) { warning("TODO: palette"); } -/** - * Restore a screen area - * @remarks Currently implemented differently in ScummVM, so this method is redundant. - * Original assembly was present in 'charecr.asm' - */ -void s_char(int Gd, int y, int dy) { - debugC(1, kMortevielleCore, "s_char called"); -} - -// (* external 'c:\mc\reusint.com'; *) void musyc(tablint &tb, int nbseg, int att) { warning("TODO: musyc"); } diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index d71c0d7668..a91e6d921b 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -76,7 +76,7 @@ const int kMenuActionStringIndex = 476; const int kMenuSelfStringIndex = 497; const int kMenuSayStringIndex = 502; const int kSecretPassageQuestionStringIndex = 510; // Unusued? - +const int kMaxPatt = 20; const int OPCODE_NONE = 0; enum verbs {OPCODE_ATTACH = 0x301, OPCODE_WAIT = 0x302, OPCODE_FORCE = 0x303, OPCODE_SLEEP = 0x304, OPCODE_LISTEN = 0x305, @@ -86,31 +86,12 @@ enum verbs {OPCODE_ATTACH = 0x301, OPCODE_WAIT = 0x302, OPCODE_FORCE = 0x303, OPCODE_TURN = 0x315, OPCODE_SHIDE = 0x401, OPCODE_SSEARCH = 0x402, OPCODE_SREAD = 0x403, OPCODE_SPUT = 0x404, OPCODE_SLOOK = 0x405}; -const int kMaxPatt = 20; - -extern const byte g_tabdbc[18]; -extern const byte g_tabdph[16]; -extern const byte g_typcon[26]; -extern const byte g_intcon[26]; -extern const byte g_tnocon[364]; - -extern const byte g_menuConstants[8][4]; - -extern const byte g_addv[2]; - -extern const byte g_rang[16]; - -/*---------------------------------------------------------------------------*/ -/*-------------------------------- TYPES --------------------------------*/ -/*---------------------------------------------------------------------------*/ - /* 9 "A glance at the forbidden$", 18 "It's already open$", 26 "A photograph$", 27 "The coat of arms$", */ - enum places { OWN_ROOM = 0, GREEN_ROOM = 1, PURPLE_ROOM = 2, TOILETS = 3, DARKBLUE_ROOM = 4, BLUE_ROOM = 5, RED_ROOM = 6, BATHROOM = 7, GREEN_ROOM2 = 8, ROOM9 = 9, @@ -120,28 +101,43 @@ enum places { DOOR = 25, ROOM26 = 26, ROOM27 = 27 }; -struct sav_chaine { +extern const byte g_tabdbc[18]; +extern const byte g_tabdph[16]; +extern const byte g_typcon[26]; +extern const byte g_intcon[26]; +extern const byte g_tnocon[364]; +extern const byte g_addv[2]; +extern const byte g_rang[16]; + +struct Hint { + int _hintId; + byte _point; +}; + +struct SaveStruct { int _faithScore; byte _pourc[11]; byte _teauto[43]; byte _sjer[31]; - int _currPlace, _atticBallHoleObjectId, _atticRodHoleObjectId, _cellarObjectId, _secretPassageObjectId, _wellObjectId; - int _selectedObjectId, _purpleRoomObjectId, _cryptObjectId; + int _currPlace; + int _atticBallHoleObjectId; + int _atticRodHoleObjectId; + int _cellarObjectId; + int _secretPassageObjectId; + int _wellObjectId; + int _selectedObjectId; + int _purpleRoomObjectId; + int _cryptObjectId; bool _alreadyEnteredManor; byte _fullHour; }; -struct ind { - int _indis; - byte _point; -}; - -struct chariot { - int _val, - _code, - _acc, - _freq, - _rep; +struct SpeechQueue { + int _val; + int _code; + int _acc; + int _freq; + int _rep; }; struct rectangle { @@ -221,18 +217,16 @@ extern int g_nbrep[9]; extern int g_nbrepm[9]; extern int g_msg[5]; extern byte g_touv[8]; -extern sav_chaine g_s, g_s1; +extern SaveStruct g_s, g_s1; extern byte g_bufcha[391]; extern byte g_lettres[7][24]; extern uint16 g_t_mot[maxti + 1]; extern int g_tay_tchar; -extern ind g_t_rec[maxtd + 1]; +extern Hint g_t_rec[maxtd + 1]; extern int g_l[108]; extern int g_tbi[256]; -extern chariot g_c1, g_c2, g_c3; -extern float g_addfix; extern Common::Point g_tabpal[91][17]; extern t_pcga g_palcga[91]; extern pattern g_tpt[15]; @@ -258,10 +252,6 @@ extern byte g_mem[65536 * 16]; #define hires {} extern void palette(int v1); -extern int getRandomNumber(int minval, int maxval); - -extern void s_char(int Gd, int y, int dy); -extern void s_sauv(int Gd, int y, int dy); } // End of namespace Mortevielle -- cgit v1.2.3 From 76f7858096a607b2de97572c89e8fc84c1a05efb Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 21 Mar 2012 08:32:36 +0100 Subject: MORTEVIELLE: More renaming --- engines/mortevielle/actions.cpp | 12 +- engines/mortevielle/asm.cpp | 52 -------- engines/mortevielle/asm.h | 36 ------ engines/mortevielle/dialogs.cpp | 6 +- engines/mortevielle/keyboard.cpp | 3 +- engines/mortevielle/menu.cpp | 8 +- engines/mortevielle/module.mk | 1 - engines/mortevielle/mor.cpp | 109 ++--------------- engines/mortevielle/mor.h | 5 +- engines/mortevielle/mortevielle.cpp | 228 +++++++++++++++++++++++++++++++++++- engines/mortevielle/mortevielle.h | 13 +- engines/mortevielle/mouse.cpp | 14 +-- engines/mortevielle/mouse.h | 6 +- engines/mortevielle/outtext.cpp | 120 +------------------ engines/mortevielle/outtext.h | 1 - engines/mortevielle/ovd1.cpp | 16 +-- engines/mortevielle/saveload.cpp | 4 +- engines/mortevielle/speech.cpp | 2 +- engines/mortevielle/var_mor.cpp | 3 +- engines/mortevielle/var_mor.h | 9 +- 20 files changed, 285 insertions(+), 363 deletions(-) delete mode 100644 engines/mortevielle/asm.cpp delete mode 100644 engines/mortevielle/asm.h diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index a4255fd598..9479ad5445 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -209,7 +209,7 @@ void MortevielleEngine::fctTake() { _obpart = false; affrep(); } else { - g_tabdon[acha + ((g_mchai - 1) * 10) + g_cs - 1] = 0; + g_tabdon[kAcha + ((g_mchai - 1) * 10) + g_cs - 1] = 0; tsuiv(); ++g_dobj; if (g_dobj > 6) { @@ -699,7 +699,7 @@ void MortevielleEngine::fctPlace() { // Do you want to enter the hidden passage? int answer = Alert::show(getEngineString(S_YES_NO), 1); if (answer == 1) { - Common::String alertTxt = deline(582); + Common::String alertTxt = g_vm->getString(582); Alert::show(alertTxt, 1); bool enterPassageFl = KnowledgeCheck::show(); @@ -722,11 +722,11 @@ void MortevielleEngine::fctPlace() { _menu.setDestinationMenuText(SECRET_PASSAGE); } else { _menu.setDestinationMenuText(g_s._currPlace); - writepal(14); + setPal(14); dessin(0); aniof(1, 2); aniof(1, 1); - alertTxt = deline(577); + alertTxt = g_vm->getString(577); Alert::show(alertTxt, 1); aniof(2, 1); g_crep = 166; @@ -1368,7 +1368,7 @@ void MortevielleEngine::fctDiscuss() { for (int ix = 1; ix <= 46; ++ix) te[ix] = false; for (int ix = 1; ix <= 45; ++ix) { - lib[ix] = deline(ix + kQuestionStringIndex); + lib[ix] = g_vm->getString(ix + kQuestionStringIndex); for (i = lib[ix].size(); i <= 40; ++i) lib[ix] = lib[ix] + ' '; } @@ -1403,7 +1403,7 @@ void MortevielleEngine::fctDiscuss() { _mouse.moveMouse(f, tou); CHECK_QUIT; - _mouse.getMousePos_(x, y, c); + _mouse.getMousePosition(x, y, c); x *= (3 - g_res); if (x > 319) cx = 41; diff --git a/engines/mortevielle/asm.cpp b/engines/mortevielle/asm.cpp deleted file mode 100644 index 2d057a38f9..0000000000 --- a/engines/mortevielle/asm.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "common/scummsys.h" - -namespace Mortevielle { - -/** - * Decodes a number of 64 byte blocks - * @param pStart Start of data - * @param count Number of 64 byte blocks - */ -void zzuul(byte *pStart, int count) { - while (count-- > 0) { - for (int idx = 0; idx < 64; ++pStart, ++idx) { - uint16 v = ((*pStart - 0x80) << 1) + 0x80; - - if (v & 0x8000) - *pStart = 0; - else if (v & 0xff00) - *pStart = 0xff; - else - *pStart = (byte)v; - } - } -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/asm.h b/engines/mortevielle/asm.h deleted file mode 100644 index 11793b3d46..0000000000 --- a/engines/mortevielle/asm.h +++ /dev/null @@ -1,36 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_ASM_H -#define MORTEVIELLE_ASM_H - -namespace Mortevielle { - -extern void zzuul(byte *pStart, int count); - -} // End of namespace Mortevielle -#endif diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 68d2852100..c20b99e12e 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -291,7 +291,7 @@ bool KnowledgeCheck::show() { int rep; int firstOption, lastOption; char key; - rectangle coor[kMaxRect]; + Rect coor[kMaxRect]; Common::String choiceArray[15]; int currChoice, prevChoice; @@ -307,7 +307,7 @@ bool KnowledgeCheck::show() { else dialogHeight = 23; g_vm->_screenSurface.fillRect(15, Common::Rect(0, 14, 630, dialogHeight)); - Common::String tmpStr = deline(textIndexArr[indx]); + Common::String tmpStr = g_vm->getString(textIndexArr[indx]); displayStr(tmpStr, 20, 15, 100, 2, 0); if (indx != 9) { @@ -322,7 +322,7 @@ bool KnowledgeCheck::show() { prevChoice = 1; for (int j = firstOption; j <= lastOption; ++j, ++prevChoice) { - tmpStr = deline(j); + tmpStr = g_vm->getString(j); if ((int) tmpStr.size() > maxLength) maxLength = tmpStr.size(); displayStr(tmpStr, 100, optionPosY, 100, 1, 0); diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index 71ab0c1e99..2ce96bcede 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -28,7 +28,6 @@ #include "mortevielle/mortevielle.h" #include "mortevielle/keyboard.h" #include "mortevielle/var_mor.h" -#include "mortevielle/asm.h" namespace Mortevielle { @@ -47,7 +46,7 @@ int testou() { break; case '\26' : if ((g_vm->_c_zzz == 1) || (g_vm->_c_zzz == 2)) { - zzuul(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); + g_vm->decodeNumber(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); ++g_vm->_c_zzz; return 61; diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 6cf09be3c8..0ba0cb5e51 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -97,7 +97,7 @@ void Menu::setDestinationMenuText(int roomId) { int destinationId = 0; for (; (destinationId < 7) && (g_vm->_v_lieu[destinationId][roomId]); ++destinationId) { - nomp = deline(g_vm->_v_lieu[destinationId][roomId] + kMenuPlaceStringIndex); + nomp = g_vm->getString(g_vm->_v_lieu[destinationId][roomId] + kMenuPlaceStringIndex); while (nomp.size() < 20) nomp += ' '; setText(_moveMenu[destinationId + 1], nomp); @@ -518,18 +518,18 @@ void Menu::initMenu() { _moveStringArray[i] = "* "; i = 1; do { - _actionStringArray[i] = deline(i + kMenuActionStringIndex); + _actionStringArray[i] = g_vm->getString(i + kMenuActionStringIndex); while (_actionStringArray[i].size() < 10) _actionStringArray[i] += ' '; if (i < 9) { if (i < 6) { - _selfStringArray[i] = deline(i + kMenuSelfStringIndex); + _selfStringArray[i] = g_vm->getString(i + kMenuSelfStringIndex); while (_selfStringArray[i].size() < 10) _selfStringArray[i] += ' '; } - _discussStringArray[i] = deline(i + kMenuSayStringIndex) + ' '; + _discussStringArray[i] = g_vm->getString(i + kMenuSayStringIndex) + ' '; } ++i; } while (i != 22); diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 07631ea264..563da9f535 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -2,7 +2,6 @@ MODULE := engines/mortevielle MODULE_OBJS := \ actions.o \ - asm.o \ detection.o \ dialogs.o \ graphics.o \ diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 4ba68c3778..77a23d31fe 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -44,16 +44,7 @@ namespace Mortevielle { -/* NIVEAU 15 */ -void copcha() { - int i = acha; - do { - g_tabdon[i] = g_tabdon[i + 390]; - ++i; - } while (i != acha + 390); -} - -void outbloc(int n, pattern p, nhom *pal) { +void outbloc(int n, Pattern p, nhom *pal) { int ad = n * 404 + 0xd700; WRITE_LE_UINT16(&g_mem[0x6000 * 16 + ad], p._tax); @@ -65,34 +56,6 @@ void outbloc(int n, pattern p, nhom *pal) { } } -void writepal(int n) { - switch (g_vm->_currGraphicalDevice) { - case MODE_TANDY: - case MODE_EGA: - case MODE_AMSTRAD1512: - for (int i = 1; i <= 16; ++i) { - g_mem[(0x7000 * 16) + (2 * i)] = g_tabpal[n][i].x; - g_mem[(0x7000 * 16) + (2 * i) + 1] = g_tabpal[n][i].y; - } - break; - case MODE_CGA: { - nhom pal[16]; - for (int i = 0; i < 16; ++i) { - pal[i] = g_palcga[n]._a[i]; - } - - if (n < 89) - palette(g_palcga[n]._p); - - for (int i = 0; i <= 15; ++i) - outbloc(i, g_tpt[pal[i]._id], pal); - } - break; - default: - break; - } -} - void pictout(int seg, int dep, int x, int y) { GfxSurface surface; @@ -199,7 +162,7 @@ void modif(int &nu) { void dessine(int ad, int x, int y) { g_vm->_mouse.hideMouse(); - writepal(g_numpal); + g_vm->setPal(g_numpal); pictout(ad, 0, x, y); g_vm->_mouse.showMouse(); } @@ -209,7 +172,7 @@ void dessine(int ad, int x, int y) { * @remarks Originally called 'dessine_rouleau' */ void drawRightFrame() { - writepal(89); + g_vm->setPal(89); if (g_vm->_currGraphicalDevice == MODE_HERCULES) { g_mem[0x7000 * 16 + 14] = 15; } @@ -228,7 +191,7 @@ void text1(int x, int y, int nb, int m) { co = 10; else co = 6; - Common::String tmpStr = deline(m); + Common::String tmpStr = g_vm->getString(m); if ((y == 182) && ((int) tmpStr.size() * co > nb * 6)) y = 176; displayStr(tmpStr, x, y, nb, 20, g_vm->_textColor); @@ -291,7 +254,7 @@ void modobj(int m) { Common::String strp = Common::String(' '); if (m != 500) - strp = deline(m - 501 + kInventoryStringIndex); + strp = g_vm->getString(m - 501 + kInventoryStringIndex); g_vm->_menu.setText(g_vm->_menu._inventoryMenu[8], strp); g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[8]); @@ -299,7 +262,7 @@ void modobj(int m) { void repon(int f, int m) { if ((m > 499) && (m < 563)) { - Common::String tmpStr = deline(m - 501 + kInventoryStringIndex); + Common::String tmpStr = g_vm->getString(m - 501 + kInventoryStringIndex); if ((int) tmpStr.size() > ((58 + (g_res - 1) * 37) << 1)) g_vm->_largestClearScreen = true; @@ -335,7 +298,7 @@ void repon(int f, int m) { else i = 5; - Common::String tmpStr = deline(m); + Common::String tmpStr = g_vm->getString(m); displayStr(tmpStr, 80, 40, 60, 25, i); if (m == 180) @@ -494,54 +457,6 @@ void phaz(int &rand, int &p, int cf) { rand = g_vm->getRandomNumber(1, 100); } -/** - * Engine function - When restarting the game, reset the main variables used by the engine - * @remarks Originally called 'inzon' - */ -void resetVariables() { - copcha(); - - g_s._alreadyEnteredManor = false; - g_s._selectedObjectId = 0; - g_s._cellarObjectId = 0; - g_s._atticBallHoleObjectId = 0; - g_s._atticRodHoleObjectId = 0; - g_s._wellObjectId = 0; - g_s._secretPassageObjectId = 0; - g_s._purpleRoomObjectId = 136; - g_s._cryptObjectId = 141; - g_s._faithScore = g_vm->getRandomNumber(4, 10); - g_s._currPlace = MANOR_FRONT; - - for (int i = 2; i <= 6; ++i) - g_s._sjer[i] = chr(0); - - g_s._sjer[1] = chr(113); - g_s._fullHour = chr(20); - - for (int i = 1; i <= 10; ++i) - g_s._pourc[i] = ' '; - - for (int i = 1; i <= 6; ++i) - g_s._teauto[i] = '*'; - - for (int i = 7; i <= 9; ++i) - g_s._teauto[i] = ' '; - - for (int i = 10; i <= 28; ++i) - g_s._teauto[i] = '*'; - - for (int i = 29; i <= 42; ++i) - g_s._teauto[i] = ' '; - - g_s._teauto[33] = '*'; - - for (int i = 1; i <= 8; ++i) - g_nbrep[i] = 0; - - init_nbrepm(); -} - int t11(int roomId) { int retVal = 0; int p, rand; @@ -876,7 +791,7 @@ void tkey1(bool d) { while (g_vm->keyPressed()) g_key = testou(); do { - g_vm->_mouse.getMousePos_(x, y, c); + g_vm->_mouse.getMousePosition(x, y, c); g_vm->keyPressed(); } while (c != 0); @@ -885,7 +800,7 @@ void tkey1(bool d) { if (d) tinke(); quest = g_vm->keyPressed(); - g_vm->_mouse.getMousePos_(x, y, c); + g_vm->_mouse.getMousePosition(x, y, c); CHECK_QUIT; } while (!(quest || (c != 0) || (d && g_vm->_anyone))); if (quest) @@ -967,7 +882,7 @@ void modinv() { if (g_s._sjer[i] != chr(0)) { ++cy; r = (ord(g_s._sjer[i]) + 400); - nomp = deline(r - 501 + kInventoryStringIndex); + nomp = g_vm->getString(r - 501 + kInventoryStringIndex); g_vm->_menu.setText(g_vm->_menu._inventoryMenu[cy], nomp); g_vm->_menu.enableMenuItem(g_vm->_menu._inventoryMenu[i]); } @@ -992,7 +907,7 @@ void premtet() { /* NIVEAU 5 */ void ajchai() { - int cy = acha + ((g_mchai - 1) * 10) - 1; + int cy = kAcha + ((g_mchai - 1) * 10) - 1; int cx = 0; do { ++cx; @@ -1077,7 +992,7 @@ void tsuiv() { int tbcl; int cl; - int cy = acha + ((g_mchai - 1) * 10) - 1; + int cy = kAcha + ((g_mchai - 1) * 10) - 1; int cx = 0; do { ++cx; diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index d3defc1b04..ebf9537992 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -42,9 +42,7 @@ static const int _actionMenu[12] = { OPCODE_NONE, OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE }; -extern void copcha(); -extern void outbloc(int n, pattern p, nhom *pal); -extern void writepal(int n); +extern void outbloc(int n, Pattern p, nhom *pal); extern void pictout(int seg, int dep, int x, int y); extern void sauvecr(int y, int dy); extern void charecr(int y, int dy); @@ -76,7 +74,6 @@ extern void becfren(int roomId); /* NIVEAU 10 */ extern void init_nbrepm(); extern void phaz(int &rand, int &p, int cf); -extern void resetVariables(); extern int t11(int roomId); extern void cavegre(); extern void writetp(Common::String s, int t); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 9b7ade1967..cd375970b7 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -30,7 +30,6 @@ #include "graphics/pixelformat.h" #include "mortevielle/mortevielle.h" #include "mortevielle/dialogs.h" -#include "mortevielle/asm.h" #include "mortevielle/keyboard.h" #include "mortevielle/menu.h" #include "mortevielle/mor.h" @@ -43,6 +42,31 @@ namespace Mortevielle { +const byte tabdr[32] = { + 32, 101, 115, 97, 114, 105, 110, + 117, 116, 111, 108, 13, 100, 99, + 112, 109, 46, 118, 130, 39, 102, + 98, 44, 113, 104, 103, 33, 76, + 85, 106, 30, 31 +}; + + +const byte tab30[32] = { + 69, 67, 74, 138, 133, 120, 77, 122, + 121, 68, 65, 63, 73, 80, 83, 82, + 156, 45, 58, 79, 49, 86, 78, 84, + 71, 81, 64, 66, 135, 34, 136, 91 +}; + + + +const byte tab31[32]= { + 93, 47, 48, 53, 50, 70, 124, 75, + 72, 147, 140, 150, 151, 57, 56, 51, + 107, 139, 55, 89, 131, 37, 54, 88, + 119, 0, 0, 0, 0, 0, 0, 0 +}; + MortevielleEngine *g_vm; MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc): @@ -164,7 +188,7 @@ Common::ErrorCode MortevielleEngine::initialise() { return result; // Load some error messages (was previously in chartex()) - _hintPctMessage = deline(580); // You should have noticed %d hints + _hintPctMessage = getString(580); // You should have noticed %d hints // Set default EGA palette _paletteManager.setDefaultPalette(); @@ -177,7 +201,7 @@ Common::ErrorCode MortevielleEngine::initialise() { charpal(); loadCFIPH(); loadCFIEC(); - zzuul(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); + decodeNumber(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); _c_zzz = 1; init_nbrepm(); initMouse(); @@ -541,7 +565,7 @@ void MortevielleEngine::mainGame() { loadCFIEC(); for (g_crep = 1; g_crep <= _c_zzz; ++g_crep) - zzuul(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); + decodeNumber(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); loadBRUIT5(); _menu.initMenu(); @@ -1684,7 +1708,7 @@ void MortevielleEngine::startDialog(int16 rep) { assert(rep >= 0); _mouse.hideMouse(); - Common::String dialogStr = deline(rep + kDialogStringIndex); + Common::String dialogStr = getString(rep + kDialogStringIndex); displayStr(dialogStr, 230, 4, 65, 24, 5); f3f8::draw(); @@ -1853,7 +1877,7 @@ void MortevielleEngine::gameLoaded() { g_iouv = 0; g_dobj = 0; affrep(); - _hintPctMessage = deline(580); + _hintPctMessage = getString(580); _okdes = false; _endGame = true; @@ -2101,4 +2125,196 @@ void MortevielleEngine::showMoveMenuAlert() { Alert::show(getEngineString(S_USE_DEP_MENU), 1); } +/** + * Decodes a number of 64 byte blocks + * @param pStart Start of data + * @param count Number of 64 byte blocks + * @remarks Originally called 'zzuul' + */ +void MortevielleEngine::decodeNumber(byte *pStart, int count) { + while (count-- > 0) { + for (int idx = 0; idx < 64; ++pStart, ++idx) { + uint16 v = ((*pStart - 0x80) << 1) + 0x80; + + if (v & 0x8000) + *pStart = 0; + else if (v & 0xff00) + *pStart = 0xff; + else + *pStart = (byte)v; + } + } +} + +void MortevielleEngine::cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { + uint16 oct, ocd; + + /* 5-8 */ + oct = g_t_mot[idx]; + oct = ((uint16)(oct << (16 - pt))) >> (16 - pt); + if (pt < 6) { + ++idx; + oct = oct << (5 - pt); + pt += 11; + oct = oct | ((uint)g_t_mot[idx] >> pt); + } else { + pt -= 5; + oct = (uint)oct >> pt; + } + + switch (oct) { + case 11: + c = '$'; + the_end = true; + break; + case 30: + case 31: + ocd = g_t_mot[idx]; + ocd = (uint16)(ocd << (16 - pt)) >> (16 - pt); + if (pt < 6) { + ++idx; + ocd = ocd << (5 - pt); + pt += 11; + ocd = ocd | ((uint)g_t_mot[idx] >> pt); + } else { + pt -= 5; + ocd = (uint)ocd >> pt; + } + + if (oct == 30) + c = chr(tab30[ocd]); + else + c = chr(tab31[ocd]); + + if (c == '\0') { + the_end = true; + c = '#'; + } + break; + default: + c = chr(tabdr[oct]); + break; + } +} + +/** + * Decode and extract the line with the given Id + * @remarks Originally called 'deline' + */ +Common::String MortevielleEngine::getString(int num) { + Common::String wrkStr = ""; + + if (num < 0) { + warning("deline: num < 0! Skipping"); + } else if (!g_vm->_txxFileFl) { + wrkStr = g_vm->getGameString(num); + } else { + int i = g_t_rec[num]._hintId; + byte k = g_t_rec[num]._point; + int length = 0; + bool endFl = false; + char let; + do { + cinq_huit(let, i, k, endFl); + if (length < 254) + wrkStr += let; + ++length; + } while (!endFl); + } + + if (wrkStr.lastChar() == '$') + // Remove trailing '$' + wrkStr.deleteLastChar(); + + return wrkStr; +} + +void MortevielleEngine::copcha() { + int i = kAcha; + do { + g_tabdon[i] = g_tabdon[i + 390]; + ++i; + } while (i != kAcha + 390); +} + +/** + * Engine function - When restarting the game, reset the main variables used by the engine + * @remarks Originally called 'inzon' + */ +void MortevielleEngine::resetVariables() { + copcha(); + + g_s._alreadyEnteredManor = false; + g_s._selectedObjectId = 0; + g_s._cellarObjectId = 0; + g_s._atticBallHoleObjectId = 0; + g_s._atticRodHoleObjectId = 0; + g_s._wellObjectId = 0; + g_s._secretPassageObjectId = 0; + g_s._purpleRoomObjectId = 136; + g_s._cryptObjectId = 141; + g_s._faithScore = g_vm->getRandomNumber(4, 10); + g_s._currPlace = MANOR_FRONT; + + for (int i = 2; i <= 6; ++i) + g_s._sjer[i] = chr(0); + + g_s._sjer[1] = chr(113); + g_s._fullHour = chr(20); + + for (int i = 1; i <= 10; ++i) + g_s._pourc[i] = ' '; + + for (int i = 1; i <= 6; ++i) + g_s._teauto[i] = '*'; + + for (int i = 7; i <= 9; ++i) + g_s._teauto[i] = ' '; + + for (int i = 10; i <= 28; ++i) + g_s._teauto[i] = '*'; + + for (int i = 29; i <= 42; ++i) + g_s._teauto[i] = ' '; + + g_s._teauto[33] = '*'; + + for (int i = 1; i <= 8; ++i) + g_nbrep[i] = 0; + + init_nbrepm(); +} + +/** + * Engine function - Set the palette + * @remarks Originally called 'writepal' + */ +void MortevielleEngine::setPal(int n) { + switch (g_vm->_currGraphicalDevice) { + case MODE_TANDY: + case MODE_EGA: + case MODE_AMSTRAD1512: + for (int i = 1; i <= 16; ++i) { + g_mem[(0x7000 * 16) + (2 * i)] = _stdPal[n][i].x; + g_mem[(0x7000 * 16) + (2 * i) + 1] = _stdPal[n][i].y; + } + break; + case MODE_CGA: { + nhom pal[16]; + for (int i = 0; i < 16; ++i) { + pal[i] = g_vm->_cgaPal[n]._a[i]; + } + + if (n < 89) + palette(g_vm->_cgaPal[n]._p); + + for (int i = 0; i <= 15; ++i) + outbloc(i, _patternArr[pal[i]._id], pal); + } + break; + default: + break; + } +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index c2fd857536..0bc6b09a87 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -80,10 +80,10 @@ enum DataType { #define MORT_DAT "mort.dat" #define GAME_FRAME_DELAY (1000 / 50) +const int kAcha = 492; const int asoul = 154; const int aouvr = 282; const int achai = 387; -const int acha = 492; const int arcf = 1272; const int arep = 1314; const int amzon = 1650; @@ -112,6 +112,8 @@ private: void mainGame(); void playGame(); void handleAction(); + void cinq_huit(char &c, int &idx, byte &pt, bool &the_end); + void copcha(); public: Common::String _hintPctMessage; Common::Point _prevPos; @@ -156,10 +158,10 @@ public: int _minute; float _addfix; - + Common::Point _stdPal[91][17]; + t_pcga _cgaPal[91]; int _c_zzz; int ptr_word; - byte _v_lieu[7][25]; ScreenSurface _screenSurface; @@ -302,6 +304,11 @@ public: void clearScreenType10(); int getRandomNumber(int minval, int maxval); void showMoveMenuAlert(); + void decodeNumber(byte *pStart, int count); + Common::String getString(int num); + void resetVariables(); + + void setPal(int n); }; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index a898f22bbe..301072391e 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -227,7 +227,7 @@ void MouseHandler::showMouse() { * Set mouse position * @remarks Originally called 'pos_mouse' */ -void MouseHandler::setMousePos(Common::Point newPos) { +void MouseHandler::setMousePosition(Common::Point newPos) { if (newPos.x > 314 * g_res) newPos.x = 314 * g_res; else if (newPos.x < 0) @@ -247,7 +247,7 @@ void MouseHandler::setMousePos(Common::Point newPos) { * Get mouse poisition * @remarks Originally called 'read_pos_mouse' */ -void MouseHandler::getMousePos_(int &x, int &y, int &c) { +void MouseHandler::getMousePosition(int &x, int &y, int &c) { x = g_vm->getMousePos().x; y = g_vm->getMousePos().y; c = g_vm->getMouseClick() ? 1 : 0; @@ -276,7 +276,7 @@ void MouseHandler::moveMouse(bool &funct, char &key) { CHECK_QUIT; in1 = g_vm->getChar(); - getMousePos_(cx, cy, cd); + getMousePosition(cx, cy, cd); switch (toupper(in1)) { case '4': cx -= 8; @@ -407,19 +407,19 @@ void MouseHandler::moveMouse(bool &funct, char &key) { break; } - setMousePos(Common::Point(cx, cy)); + setMousePosition(Common::Point(cx, cy)); p_key = g_vm->keyPressed(); } } /** - * Engine function : Is mouse in a given rect? + * Mouse function : Is mouse in a given rect? * @remarks Originally called 'dans_rect' */ -bool MouseHandler::isMouseIn(rectangle r) { +bool MouseHandler::isMouseIn(Rect r) { int x, y, c; - getMousePos_(x, y, c); + getMousePosition(x, y, c); if ((x > r._x1) && (x < r._x2) && (y > r._y1) && (y < r._y2)) return true; diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index 76a9991f44..0bf46d926d 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -43,10 +43,10 @@ public: void initMouse(); void hideMouse(); void showMouse(); - void setMousePos(Common::Point newPos); - void getMousePos_(int &x, int &y, int &c); + void setMousePosition(Common::Point newPos); + void getMousePosition(int &x, int &y, int &c); void moveMouse(bool &funct, char &key); - bool isMouseIn(rectangle r); + bool isMouseIn(Rect r); }; } // End of namespace Mortevielle diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index a941f79aa1..12c16f91b1 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -36,126 +36,8 @@ namespace Mortevielle { -Common::String delig; -const byte tabdr[32] = { - 32, 101, 115, 97, 114, 105, 110, - 117, 116, 111, 108, 13, 100, 99, - 112, 109, 46, 118, 130, 39, 102, - 98, 44, 113, 104, 103, 33, 76, - 85, 106, 30, 31 -}; - - -const byte tab30[32] = { - 69, 67, 74, 138, 133, 120, 77, 122, - 121, 68, 65, 63, 73, 80, 83, 82, - 156, 45, 58, 79, 49, 86, 78, 84, - 71, 81, 64, 66, 135, 34, 136, 91 -}; - - - -const byte tab31[32]= { - 93, 47, 48, 53, 50, 70, 124, 75, - 72, 147, 140, 150, 151, 57, 56, 51, - 107, 139, 55, 89, 131, 37, 54, 88, - 119, 0, 0, 0, 0, 0, 0, 0 -}; - -Common::String deline(int num); typedef unsigned char uchar; -static void cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { -/* - const uchar rap[32] = { - (uchar)',', (uchar)':', (uchar)'@', (uchar)'!', (uchar)'?', (uchar)'-', (uchar)'\207', - (uchar)'\240', (uchar)'\205', (uchar)'\203', (uchar)'\202', (uchar)'\212', (uchar)'\210', (uchar)'/', - (uchar)'\213', (uchar)'\214', (uchar)'\242', (uchar)'\047', (uchar)'\223', (uchar)'"', (uchar)'\227', - (uchar)'\226', (uchar)'0', (uchar)'1', (uchar)'2', (uchar)'3', (uchar)'4', (uchar)'5', - (uchar)'6', (uchar)'7', (uchar)'8', (uchar)'9' - }; -*/ - uint16 oct, ocd; - - /* 5-8 */ - oct = g_t_mot[idx]; - oct = ((uint16)(oct << (16 - pt))) >> (16 - pt); - if (pt < 6) { - ++idx; - oct = oct << (5 - pt); - pt += 11; - oct = oct | ((uint)g_t_mot[idx] >> pt); - } else { - pt -= 5; - oct = (uint)oct >> pt; - } - - switch (oct) { - case 11: - c = '$'; - the_end = true; - break; - case 30: - case 31: - ocd = g_t_mot[idx]; - ocd = (uint16)(ocd << (16 - pt)) >> (16 - pt); - if (pt < 6) { - ++idx; - ocd = ocd << (5 - pt); - pt += 11; - ocd = ocd | ((uint)g_t_mot[idx] >> pt); - } else { - pt -= 5; - ocd = (uint)ocd >> pt; - } - - if (oct == 30) - c = chr(tab30[ocd]); - else - c = chr(tab31[ocd]); - - if (c == '\0') { - the_end = true; - c = '#'; - } - break; - default: - c = chr(tabdr[oct]); - break; - } -} /* 5-8 */ - -/** - * Decode and extract the line with the given Id - */ -Common::String deline(int num) { - Common::String wrkStr = ""; - - if (num < 0) { - warning("deline: num < 0! Skipping"); - } else if (!g_vm->_txxFileFl) { - wrkStr = g_vm->getGameString(num); - } else { - int i = g_t_rec[num]._hintId; - byte k = g_t_rec[num]._point; - int length = 0; - bool endFl = false; - char let; - do { - cinq_huit(let, i, k, endFl); - if (length < 254) - wrkStr += let; - ++length; - } while (!endFl); - } - - if (wrkStr.lastChar() == '$') - // Remove trailing '$' - wrkStr.deleteLastChar(); - - return wrkStr; -} - static int l_motsuiv(int p, const char *ch, int &tab) { int c = p; @@ -429,7 +311,7 @@ void taffich() { } } g_numpal = npal; - writepal(npal); + g_vm->setPal(npal); if ((b < 15) || (b == 16) || (b == 17) || (b == 24) || (b == 26) || (b == 50)) { lgt = 0; diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index cd109ffea5..d27ca3edc9 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -35,7 +35,6 @@ namespace Mortevielle { const int kAdrAni = 0x7314; -extern Common::String deline(int num); extern void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ); extern void chardes(Common::String filename, int32 passe, int long_); extern void charani(Common::String filename, int32 skipSize, int length); diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp index 0a93a84516..178ef434ae 100644 --- a/engines/mortevielle/ovd1.cpp +++ b/engines/mortevielle/ovd1.cpp @@ -54,8 +54,8 @@ void charpal() { error("Missing file - plxx.mor"); for (int i = 0; i <= 90; ++i) { for (int j = 1; j <= 16; ++j) { - g_tabpal[i][j].x = f.readByte(); - g_tabpal[i][j].y = f.readByte(); + g_vm->_stdPal[i][j].x = f.readByte(); + g_vm->_stdPal[i][j].y = f.readByte(); } } f.close(); @@ -64,9 +64,9 @@ void charpal() { error("Missing file - cxx.mor"); for (int j = 0; j <= 90; ++j) { - g_palcga[j]._p = f.readByte(); + g_vm->_cgaPal[j]._p = f.readByte(); for (int i = 0; i <= 15; ++i) { - nhom &with = g_palcga[j]._a[i]; + nhom &with = g_vm->_cgaPal[j]._a[i]; b = f.readByte(); with._id = (uint)b >> 4; @@ -75,13 +75,13 @@ void charpal() { } } - g_palcga[10]._a[9] = g_palcga[10]._a[5]; + g_vm->_cgaPal[10]._a[9] = g_vm->_cgaPal[10]._a[5]; for (int j = 0; j <= 14; ++j) { - g_tpt[j]._tax = f.readByte(); - g_tpt[j]._tay = f.readByte(); + _patternArr[j]._tax = f.readByte(); + _patternArr[j]._tay = f.readByte(); for (int i = 1; i <= 20; ++i) for (int k = 1; k <= 20; ++k) - g_tpt[j]._des[i][k] = f.readByte(); + _patternArr[j]._des[i][k] = f.readByte(); } f.close(); } diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 9458da38bc..7ddd8b707c 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -109,7 +109,7 @@ void SavegameManager::loadSavegame(int n) { g_s = g_s1; for (int i = 0; i <= 389; ++i) - g_tabdon[i + acha] = g_bufcha[i]; + g_tabdon[i + kAcha] = g_bufcha[i]; // Close the stream delete stream; @@ -142,7 +142,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { g_vm->hourToChar(); for (i = 0; i <= 389; ++i) - g_bufcha[i] = g_tabdon[i + acha]; + g_bufcha[i] = g_tabdon[i + kAcha]; g_s1 = g_s; if (g_s1._currPlace == 26) g_s1._currPlace = 15; diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index ba7ef62195..69a0c331da 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -564,7 +564,7 @@ void SpeechManager::startSpeech(int rep, int ht, int typ) { g_t_cph[i] = savph[i]; g_mlec = _typlec; } - writepal(g_numpal); + g_vm->setPal(g_numpal); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 392e8a21c4..b3999b7c6f 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -117,9 +117,8 @@ int g_tay_tchar; Hint g_t_rec[maxtd + 1]; int g_l[108]; int g_tbi[256]; -Common::Point g_tabpal[91][17]; t_pcga g_palcga[91]; -pattern g_tpt[15]; +Pattern _patternArr[15]; byte g_adcfiec[(4088 * 16) + (311 * 0x80)]; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index a91e6d921b..b6897522b9 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -140,17 +140,16 @@ struct SpeechQueue { int _rep; }; -struct rectangle { +struct Rect { int _x1, _x2, _y1, _y2; bool _enabled; }; -struct pattern { +struct Pattern { byte _tay, _tax; byte _des[kMaxPatt + 1][kMaxPatt + 1]; }; - struct nhom { byte _id; /* number between 0 and 32 */ byte _hom[4]; @@ -227,9 +226,7 @@ extern int g_tay_tchar; extern Hint g_t_rec[maxtd + 1]; extern int g_l[108]; extern int g_tbi[256]; -extern Common::Point g_tabpal[91][17]; -extern t_pcga g_palcga[91]; -extern pattern g_tpt[15]; +extern Pattern _patternArr[15]; extern byte g_adcfiec[822 * 128]; -- cgit v1.2.3 From c1e8ff3adabac16d6c37041ac22ff1e41eaf36ed Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 22 Mar 2012 00:13:11 +0100 Subject: MORTEVIELLE: Rename more globals and move functions to MortevielleEngine. Remove ovd1 files. --- engines/mortevielle/dialogs.cpp | 2 +- engines/mortevielle/menu.cpp | 3 +- engines/mortevielle/module.mk | 1 - engines/mortevielle/mor.cpp | 137 +++++++------------ engines/mortevielle/mor.h | 3 - engines/mortevielle/mortevielle.cpp | 258 ++++++++++++++++++++++++++++++++++-- engines/mortevielle/mortevielle.h | 27 +++- engines/mortevielle/outtext.cpp | 36 ++--- engines/mortevielle/ovd1.cpp | 221 ------------------------------ engines/mortevielle/ovd1.h | 43 ------ engines/mortevielle/saveload.cpp | 41 +++--- engines/mortevielle/var_mor.cpp | 7 +- engines/mortevielle/var_mor.h | 25 +--- 13 files changed, 369 insertions(+), 435 deletions(-) delete mode 100644 engines/mortevielle/ovd1.cpp delete mode 100644 engines/mortevielle/ovd1.h diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index c20b99e12e..5191b1ed43 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -455,7 +455,7 @@ void f3f8::aff50(bool drawAni50Fl) { g_caff = 50; g_maff = 0; taffich(); - dessine(g_ades, 63, 12); + g_vm->draw(g_ades, 63, 12); if (drawAni50Fl) ani50(); else diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 0ba0cb5e51..137ff468a2 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -33,7 +33,6 @@ #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" -#include "mortevielle/ovd1.h" #include "mortevielle/var_mor.h" namespace Mortevielle { @@ -568,7 +567,7 @@ void Menu::setSearchMenu() { * @remarks Originally called 'mfouen' */ void Menu::unsetSearchMenu() { - setDestinationMenuText(g_s._currPlace); + setDestinationMenuText(g_vm->g_s._currPlace); for (int i = 1; i <= 11; ++i) enableMenuItem(_actionMenu[i]); diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 563da9f535..58978c9d25 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -11,7 +11,6 @@ MODULE_OBJS := \ mortevielle.o \ mouse.o \ outtext.o \ - ovd1.o \ saveload.o \ sound.o \ speech.o \ diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 77a23d31fe..e1206be2c2 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -44,19 +44,6 @@ namespace Mortevielle { -void outbloc(int n, Pattern p, nhom *pal) { - int ad = n * 404 + 0xd700; - - WRITE_LE_UINT16(&g_mem[0x6000 * 16 + ad], p._tax); - WRITE_LE_UINT16(&g_mem[0x6000 * 16 + ad + 2], p._tay); - ad += 4; - for (int i = 1; i <= p._tax; ++i) { - for (int j = 1; j <= p._tay; ++j) - g_mem[(0x6000 * 16) + ad + (j - 1) * p._tax + i - 1] = pal[n]._hom[p._des[i][j]]; - } -} - - void pictout(int seg, int dep, int x, int y) { GfxSurface surface; surface.decode(&g_mem[seg * 16 + dep]); @@ -159,28 +146,6 @@ void modif(int &nu) { nu -= 3976; } - -void dessine(int ad, int x, int y) { - g_vm->_mouse.hideMouse(); - g_vm->setPal(g_numpal); - pictout(ad, 0, x, y); - g_vm->_mouse.showMouse(); -} - -/** - * Draw right frame - * @remarks Originally called 'dessine_rouleau' - */ -void drawRightFrame() { - g_vm->setPal(89); - if (g_vm->_currGraphicalDevice == MODE_HERCULES) { - g_mem[0x7000 * 16 + 14] = 15; - } - g_vm->_mouse.hideMouse(); - pictout(0x73a2, 0, 0, 0); - g_vm->_mouse.showMouse(); -} - /* NIVEAU 13 */ @@ -280,12 +245,12 @@ void repon(int f, int m) { g_vm->prepareScreenType2(); text1(8, 182, 103, m); if ((m == 68) || (m == 69)) - g_s._teauto[40] = '*'; + g_vm->g_s._teauto[40] = '*'; if ((m == 104) && (g_caff == 14)) { - g_s._teauto[36] = '*'; - if (g_s._teauto[39] == '*') { - g_s._pourc[3] = '*'; - g_s._teauto[38] = '*'; + g_vm->g_s._teauto[36] = '*'; + if (g_vm->g_s._teauto[39] == '*') { + g_vm->g_s._pourc[3] = '*'; + g_vm->g_s._teauto[38] = '*'; } } break; @@ -302,9 +267,9 @@ void repon(int f, int m) { displayStr(tmpStr, 80, 40, 60, 25, i); if (m == 180) - g_s._pourc[6] = '*'; + g_vm->g_s._pourc[6] = '*'; else if (m == 179) - g_s._pourc[10] = '*'; + g_vm->g_s._pourc[10] = '*'; } break; default: @@ -461,7 +426,7 @@ int t11(int roomId) { int retVal = 0; int p, rand; - ecfren(p, rand, g_s._faithScore, roomId); + ecfren(p, rand, g_vm->g_s._faithScore, roomId); g_vm->_place = roomId; if ((roomId > OWN_ROOM) && (roomId < DINING_ROOM)) { if (p != -500) { @@ -493,7 +458,7 @@ int t11(int roomId) { p = g_vm->getPresenceStatsLanding(); else if (roomId == CHAPEL) p = g_vm->getPresenceStatsChapel(h); - p += g_s._faithScore; + p += g_vm->g_s._faithScore; rand = g_vm->getRandomNumber(1, 100); if (rand > p) { g_vm->displayAloneText(); @@ -518,9 +483,9 @@ int t11(int roomId) { } void cavegre() { - g_s._faithScore += 2; - if (g_s._faithScore > 69) - g_s._faithScore += (g_s._faithScore / 10); + g_vm->g_s._faithScore += 2; + if (g_vm->g_s._faithScore > 69) + g_vm->g_s._faithScore += (g_vm->g_s._faithScore / 10); g_vm->clearScreenType3(); g_vm->prepareScreenType2(); ecr3(g_vm->getEngineString(S_SOMEONE_ENTERS)); @@ -567,17 +532,17 @@ void aniof(int ouf, int num) { /* NIVEAU 9 */ void dessin(int ad) { if (ad != 0) - dessine(g_ades, ((ad % 160) * 2), (ad / 160)); + g_vm->draw(g_ades, ((ad % 160) * 2), (ad / 160)); else { g_vm->clearScreenType1(); if (g_caff > 99) { - dessine(g_ades, 60, 33); + g_vm->draw(g_ades, 60, 33); g_vm->_screenSurface.drawBox(118, 32, 291, 121, 15); // Medium box } else if (g_caff > 69) { - dessine(g_ades, 112, 48); // Heads + g_vm->draw(g_ades, 112, 48); // Heads g_vm->_screenSurface.drawBox(222, 47, 155, 91, 15); } else { - dessine(g_ades, 0, 12); + g_vm->draw(g_ades, 0, 12); g_vm->prepareScreenType1(); if ((g_caff < 30) || (g_caff > 32)) { for (int cx = 1; cx <= 6; ++cx) { @@ -586,16 +551,16 @@ void dessin(int ad) { } if (g_caff == 13) { - if (g_s._atticBallHoleObjectId == 141) + if (g_vm->g_s._atticBallHoleObjectId == 141) aniof(1, 7); - if (g_s._atticRodHoleObjectId == 159) + if (g_vm->g_s._atticRodHoleObjectId == 159) aniof(1, 6); - } else if ((g_caff == 14) && (g_s._cellarObjectId == 151)) + } else if ((g_caff == 14) && (g_vm->g_s._cellarObjectId == 151)) aniof(1, 2); - else if ((g_caff == 17) && (g_s._secretPassageObjectId == 143)) + else if ((g_caff == 17) && (g_vm->g_s._secretPassageObjectId == 143)) aniof(1, 1); - else if ((g_caff == 24) && (g_s._wellObjectId != 0)) + else if ((g_caff == 24) && (g_vm->g_s._wellObjectId != 0)) aniof(1, 1); } @@ -633,7 +598,7 @@ void tinke() { drawClock(); cf = 0; for (int i = 1; i <= 10; ++i) { - if (g_s._pourc[i] == '*') + if (g_vm->g_s._pourc[i] == '*') ++cf; } @@ -667,7 +632,7 @@ void tinke() { g_t = kTime2; else g_t = kTime1; - cf = g_s._faithScore; + cf = g_vm->g_s._faithScore; if ((cf > 33) && (cf < 66)) g_t -= (g_t / 3); @@ -723,7 +688,7 @@ void tinke() { g_mpers = g_vm->_currBitIndex; if ((g_mpers == 0) && (g_vm->_currBitIndex > 0)) { - if ((g_s._currPlace == ATTIC) || (g_s._currPlace == CELLAR)) { + if ((g_vm->g_s._currPlace == ATTIC) || (g_vm->g_s._currPlace == CELLAR)) { cavegre(); } else if (g_vm->_currBitIndex == 10) { g_vm->_currBitIndex = 0; @@ -751,7 +716,7 @@ void tinke() { g_vm->getPresenceBitIndex(g_vm->_place); g_vm->_brt = false; g_hdb = 0; - if ((g_s._currPlace > OWN_ROOM) && (g_s._currPlace < DINING_ROOM)) + if ((g_vm->g_s._currPlace > OWN_ROOM) && (g_vm->g_s._currPlace < DINING_ROOM)) g_vm->_anyone = true; } } @@ -822,17 +787,17 @@ void tlu(int af, int ob) { } void affrep() { - g_caff = g_s._currPlace; - g_crep = g_s._currPlace; + g_caff = g_vm->g_s._currPlace; + g_crep = g_vm->g_s._currPlace; } void tsort() { - if ((g_iouv > 0) && (g_s._currPlace != 0)) { - if (g_s._faithScore < 50) - g_s._faithScore += 2; + if ((g_iouv > 0) && (g_vm->g_s._currPlace != 0)) { + if (g_vm->g_s._faithScore < 50) + g_vm->g_s._faithScore += 2; else - g_s._faithScore += (g_s._faithScore / 10); + g_vm->g_s._faithScore += (g_vm->g_s._faithScore / 10); } for (int cx = 1; cx <= 7; ++cx) @@ -840,7 +805,7 @@ void tsort() { g_ment = 0; g_iouv = 0; g_mchai = 0; - debloc(g_s._currPlace); + debloc(g_vm->g_s._currPlace); } void st4(int ob) { @@ -879,9 +844,9 @@ void modinv() { int cy = 0; for (int i = 1; i <= 6; ++i) { - if (g_s._sjer[i] != chr(0)) { + if (g_vm->g_s._sjer[i] != chr(0)) { ++cy; - r = (ord(g_s._sjer[i]) + 400); + r = (ord(g_vm->g_s._sjer[i]) + 400); nomp = g_vm->getString(r - 501 + kInventoryStringIndex); g_vm->_menu.setText(g_vm->_menu._inventoryMenu[cy], nomp); g_vm->_menu.enableMenuItem(g_vm->_menu._inventoryMenu[i]); @@ -901,7 +866,7 @@ void mennor() { } void premtet() { - dessine(g_ades, 10, 80); + g_vm->draw(g_ades, 10, 80); g_vm->_screenSurface.drawBox(18, 79, 155, 91, 15); } @@ -914,7 +879,7 @@ void ajchai() { } while ((cx <= 9) && (g_tabdon[cy + cx] != 0)); if (g_tabdon[cy + cx] == 0) - g_tabdon[cy + cx] = g_s._selectedObjectId; + g_tabdon[cy + cx] = g_vm->g_s._selectedObjectId; else g_crep = 192; } @@ -923,10 +888,10 @@ void ajjer(int ob) { int cx = 0; do { ++cx; - } while ((cx <= 5) && (ord(g_s._sjer[cx]) != 0)); + } while ((cx <= 5) && (ord(g_vm->g_s._sjer[cx]) != 0)); - if (ord(g_s._sjer[cx]) == 0) { - g_s._sjer[(cx)] = chr(ob); + if (ord(g_vm->g_s._sjer[cx]) == 0) { + g_vm->g_s._sjer[(cx)] = chr(ob); modinv(); } else g_crep = 139; @@ -955,11 +920,11 @@ L1: g_vm->_speechManager.startSpeech(4, 4, 1); if (g_iouv == 0) - g_s._faithScore += 2; - else if (g_s._faithScore < 50) - g_s._faithScore += 4; + g_vm->g_s._faithScore += 2; + else if (g_vm->g_s._faithScore < 50) + g_vm->g_s._faithScore += 4; else - g_s._faithScore += 3 * (g_s._faithScore / 10); + g_vm->g_s._faithScore += 3 * (g_vm->g_s._faithScore / 10); tsort(); g_vm->_menu.setDestinationMenuText(LANDING); int cx = g_vm->convertBitIndexToCharacterIndex(g_vm->_currBitIndex); @@ -1002,11 +967,11 @@ void tsuiv() { } while ((tbcl == 0) && (g_cs <= 9)); if ((tbcl != 0) && (g_cs < 11)) { - ++g_is; + ++g_vm->g_is; g_caff = tbcl; g_crep = g_caff + 400; if (g_vm->_currBitIndex != 0) - g_s._faithScore += 2; + g_vm->g_s._faithScore += 2; } else { affrep(); g_vm->endSearch(); @@ -1147,20 +1112,20 @@ void treg(int ob) { void avpoing(int &ob) { g_crep = 999; - if (g_s._selectedObjectId != 0) - ajjer(g_s._selectedObjectId); + if (g_vm->g_s._selectedObjectId != 0) + ajjer(g_vm->g_s._selectedObjectId); if (g_crep != 139) { modobj(ob + 400); - g_s._selectedObjectId = ob; + g_vm->g_s._selectedObjectId = ob; ob = 0; } } void rechai(int &ch) { - int tmpPlace = g_s._currPlace; + int tmpPlace = g_vm->g_s._currPlace; - if (g_s._currPlace == CRYPT) + if (g_vm->g_s._currPlace == CRYPT) tmpPlace = CELLAR; ch = g_tabdon[achai + (tmpPlace * 7) + g_num - 1]; } @@ -1175,7 +1140,7 @@ int t23coul() { } void maivid() { - g_s._selectedObjectId = 0; + g_vm->g_s._selectedObjectId = 0; modobj(500); } diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index ebf9537992..de1b0b4a7d 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -42,7 +42,6 @@ static const int _actionMenu[12] = { OPCODE_NONE, OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE }; -extern void outbloc(int n, Pattern p, nhom *pal); extern void pictout(int seg, int dep, int x, int y); extern void sauvecr(int y, int dy); extern void charecr(int y, int dy); @@ -51,8 +50,6 @@ extern int animof(int ouf, int num); /* Niveau 14 suite */ extern int readclock(); extern void modif(int &nu); -extern void dessine(int ad, int x, int y); -extern void drawRightFrame(); /* NIVEAU 13 */ extern void text1(int x, int y, int nb, int m); extern void initouv(); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index cd375970b7..866c8e42c9 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -35,7 +35,6 @@ #include "mortevielle/mor.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" -#include "mortevielle/ovd1.h" #include "mortevielle/saveload.h" #include "mortevielle/outtext.h" #include "mortevielle/var_mor.h" @@ -180,7 +179,7 @@ Common::ErrorCode MortevielleEngine::initialise() { _txxFileFl = false; // Load texts from TXX files - chartex(); + loadTexts(); // Load the mort.dat resource Common::ErrorCode result = loadMortDat(); @@ -198,7 +197,7 @@ Common::ErrorCode MortevielleEngine::initialise() { _currGraphicalDevice = MODE_EGA; _newGraphicalDevice = _currGraphicalDevice; - charpal(); + loadPalette(); loadCFIPH(); loadCFIEC(); decodeNumber(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); @@ -211,7 +210,7 @@ Common::ErrorCode MortevielleEngine::initialise() { _largestClearScreen = false; teskbd(); - dialpre(); + showConfigScreen(); _newGraphicalDevice = _currGraphicalDevice; teskbd(); if (_newGraphicalDevice != _currGraphicalDevice) @@ -551,7 +550,7 @@ void MortevielleEngine::showIntroduction() { CHECK_QUIT; // TODO: Once music is implemented, only use the below delay if music is turned off - suite(); + showTitleScreen(); delay(3000); music(); } @@ -2125,6 +2124,15 @@ void MortevielleEngine::showMoveMenuAlert() { Alert::show(getEngineString(S_USE_DEP_MENU), 1); } +/** + * The original engine used this method to display a starting text screen letting the player + * select the graphics mode to use + * @remarks Originally called 'dialpre' + */ +void MortevielleEngine::showConfigScreen() { + g_crep = 998; +} + /** * Decodes a number of 64 byte blocks * @param pStart Start of data @@ -2206,8 +2214,8 @@ Common::String MortevielleEngine::getString(int num) { if (num < 0) { warning("deline: num < 0! Skipping"); - } else if (!g_vm->_txxFileFl) { - wrkStr = g_vm->getGameString(num); + } else if (!_txxFileFl) { + wrkStr = getGameString(num); } else { int i = g_t_rec[num]._hintId; byte k = g_t_rec[num]._point; @@ -2253,7 +2261,7 @@ void MortevielleEngine::resetVariables() { g_s._secretPassageObjectId = 0; g_s._purpleRoomObjectId = 136; g_s._cryptObjectId = 141; - g_s._faithScore = g_vm->getRandomNumber(4, 10); + g_s._faithScore = getRandomNumber(4, 10); g_s._currPlace = MANOR_FRONT; for (int i = 2; i <= 6; ++i) @@ -2290,7 +2298,7 @@ void MortevielleEngine::resetVariables() { * @remarks Originally called 'writepal' */ void MortevielleEngine::setPal(int n) { - switch (g_vm->_currGraphicalDevice) { + switch (_currGraphicalDevice) { case MODE_TANDY: case MODE_EGA: case MODE_AMSTRAD1512: @@ -2302,14 +2310,14 @@ void MortevielleEngine::setPal(int n) { case MODE_CGA: { nhom pal[16]; for (int i = 0; i < 16; ++i) { - pal[i] = g_vm->_cgaPal[n]._a[i]; + pal[i] = _cgaPal[n]._a[i]; } if (n < 89) - palette(g_vm->_cgaPal[n]._p); + palette(_cgaPal[n]._p); for (int i = 0; i <= 15; ++i) - outbloc(i, _patternArr[pal[i]._id], pal); + displayCGAPattern(i, _patternArr[pal[i]._id], pal); } break; default: @@ -2317,4 +2325,230 @@ void MortevielleEngine::setPal(int n) { } } +/** + * Engine function - Display a CGA pattern, using a specified palette + * @remarks Originally called 'outbloc' + */ +void MortevielleEngine::displayCGAPattern(int n, Pattern p, nhom *pal) { + int addr = n * 404 + 0xd700; + + WRITE_LE_UINT16(&g_mem[0x6000 * 16 + addr], p._tax); + WRITE_LE_UINT16(&g_mem[0x6000 * 16 + addr + 2], p._tay); + addr += 4; + for (int i = 0; i < p._tax; ++i) { + for (int j = 0; j < p._tay; ++j) + g_mem[(0x6000 * 16) + addr + j * p._tax + i] = pal[n]._hom[p._des[i + 1][j + 1]]; + } +} + +/** + * Engine function - Load Palette from File + * @remarks Originally called 'charpal' + */ +void MortevielleEngine::loadPalette() { + Common::File f; + byte b; + + if (!f.open("fxx.mor")) + error("Missing file - fxx.mor"); + for (int i = 0; i < 108; ++i) + g_l[i] = f.readSint16LE(); + f.close(); + + if (!f.open("plxx.mor")) + error("Missing file - plxx.mor"); + for (int i = 0; i <= 90; ++i) { + for (int j = 1; j <= 16; ++j) { + _stdPal[i][j].x = f.readByte(); + _stdPal[i][j].y = f.readByte(); + } + } + f.close(); + + if (!f.open("cxx.mor")) + error("Missing file - cxx.mor"); + + for (int j = 0; j <= 90; ++j) { + _cgaPal[j]._p = f.readByte(); + for (int i = 0; i <= 15; ++i) { + nhom &with = _cgaPal[j]._a[i]; + + b = f.readByte(); + with._id = (uint)b >> 4; + with._hom[0] = ((uint)b >> 2) & 3; + with._hom[1] = b & 3; + } + } + + _cgaPal[10]._a[9] = _cgaPal[10]._a[5]; + for (int j = 0; j <= 14; ++j) { + _patternArr[j]._tax = f.readByte(); + _patternArr[j]._tay = f.readByte(); + for (int i = 1; i <= 20; ++i) { + for (int k = 1; k <= 20; ++k) + _patternArr[j]._des[i][k] = f.readByte(); + } + } + f.close(); +} + +/** + * Engine function - Load Texts from File + * @remarks Originally called 'chartex' + */ +void MortevielleEngine::loadTexts() { + Common::File inpFile; + Common::File ntpFile; + + _txxFileFl = false; + if (getLanguage() == Common::EN_ANY) { + warning("English version expected - Switching to DAT file"); + return; + } + + if (!inpFile.open("TXX.INP")) { + if (!inpFile.open("TXX.MOR")) { + warning("Missing file - TXX.INP or .MOR - Switching to DAT file"); + return; + } + } + if (!ntpFile.open("TXX.NTP")) { + warning("Missing file - TXX.INP or .MOR - Switching to DAT file"); + return; + } + + if ((inpFile.size() > (kMaxTi * 2)) || (ntpFile.size() > (kMaxTd * 3))) { + warning("TXX file - Unexpected format - Switching to DAT file"); + return; + } + + for (int i = 0; i < inpFile.size() / 2; ++i) + g_t_mot[i] = inpFile.readUint16LE(); + + inpFile.close(); + _txxFileFl = true; + + for (int i = 0; i < (ntpFile.size() / 3); ++i) { + g_t_rec[i]._hintId = ntpFile.readSint16LE(); + g_t_rec[i]._point = ntpFile.readByte(); + } + + ntpFile.close(); + +} + +void MortevielleEngine::loadBRUIT5() { + Common::File f; + + if (!f.open("bruit5")) + error("Missing file - bruit5"); + + f.read(&g_mem[kAdrNoise5 * 16 + 0], 149 * 128); + f.close(); +} + +void MortevielleEngine::loadCFIEC() { + Common::File f; + + if (!f.open("cfiec.mor")) + error("Missing file - cfiec.mor"); + + f.read(&g_adcfiec[0], 822 * 128); + f.close(); + + _reloadCFIEC = false; +} + + +void MortevielleEngine::loadCFIPH() { + Common::File f; + + if (!f.open("cfiph.mor")) + error("Missing file - cfiph.mor"); + + for (int i = 0; i < (f.size() / 2); ++i) + g_t_cph[i] = f.readSint16LE(); + + f.close(); +} + +/** + * Engine function - Play Music + * @remarks Originally called 'music' + */ +void MortevielleEngine::music() { + if (_soundOff) + return; + + _reloadCFIEC = true; + + Common::File fic; + if (!fic.open("mort.img")) + error("Missing file - mort.img"); + + fic.read(&g_mem[0x3800 * 16 + 0], 500); + fic.read(&g_mem[0x47a0 * 16 + 0], 123); + fic.close(); + + _soundManager.decodeMusic(&g_mem[0x3800 * 16], &g_mem[0x5000 * 16], 623); + _addfix = (float)((kTempoMusic - g_addv[1])) / 256; + _speechManager.cctable(g_tbi); + + bool fin = false; + int k = 0; + do { + fin = keyPressed(); + _soundManager.musyc(g_tbi, 9958, kTempoMusic); + ++k; + fin = fin | keyPressed() | (k >= 5); + } while (!fin); + while (keyPressed()) + getChar(); +} + +/** + * Engine function - Show title screen + * @remarks Originally called 'suite' + */ +void MortevielleEngine::showTitleScreen() { + hirs(); + repon(7, 2035); + g_caff = 51; + taffich(); + teskbd(); + if (_newGraphicalDevice != _currGraphicalDevice) + _currGraphicalDevice = _newGraphicalDevice; + hirs(); + g_vm->draw(g_ades, 0, 0); + + Common::String cpr = "COPYRIGHT 1989 : LANKHOR"; + _screenSurface.putxy(104 + 72 * g_res, 185); + _screenSurface.drawString(cpr, 0); +} + +/** + * Draw picture + * @remarks Originally called 'dessine' + */ +void MortevielleEngine::draw(int ad, int x, int y) { + g_vm->_mouse.hideMouse(); + g_vm->setPal(g_numpal); + pictout(ad, 0, x, y); + g_vm->_mouse.showMouse(); +} + +/** + * Draw right frame + * @remarks Originally called 'dessine_rouleau' + */ +void MortevielleEngine::drawRightFrame() { + g_vm->setPal(89); + if (g_vm->_currGraphicalDevice == MODE_HERCULES) { + g_mem[0x7000 * 16 + 14] = 15; + } + g_vm->_mouse.hideMouse(); + pictout(0x73a2, 0, 0, 0); + g_vm->_mouse.showMouse(); +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 0bc6b09a87..b17d729296 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -90,6 +90,16 @@ const int amzon = 1650; const int fleche = 1758; const int arega = 0; +struct nhom { + byte _id; /* number between 0 and 32 */ + byte _hom[4]; +}; + +struct t_pcga { + byte _p; + nhom _a[16]; +}; + class MortevielleEngine : public Engine { private: const ADGameDescription *_gameDescription; @@ -101,6 +111,8 @@ private: Common::StringArray _engineStrings; Common::StringArray _gameStrings; + Pattern _patternArr[15]; + Common::ErrorCode initialise(); Common::ErrorCode loadMortDat(); void readStaticStrings(Common::File &f, int dataSize, DataType dataType); @@ -114,6 +126,14 @@ private: void handleAction(); void cinq_huit(char &c, int &idx, byte &pt, bool &the_end); void copcha(); + void displayCGAPattern(int n, Pattern p, nhom *pal); + void loadPalette(); + void loadTexts(); + void loadBRUIT5(); + void loadCFIEC(); + void loadCFIPH(); + void showTitleScreen(); + public: Common::String _hintPctMessage; Common::Point _prevPos; @@ -163,6 +183,8 @@ public: int _c_zzz; int ptr_word; byte _v_lieu[7][25]; + SaveStruct g_s, g_s1; + byte g_is; ScreenSurface _screenSurface; PaletteManager _paletteManager; @@ -304,11 +326,14 @@ public: void clearScreenType10(); int getRandomNumber(int minval, int maxval); void showMoveMenuAlert(); + void showConfigScreen(); void decodeNumber(byte *pStart, int count); Common::String getString(int num); void resetVariables(); - void setPal(int n); + void music(); + void draw(int ad, int x, int y); + void drawRightFrame(); }; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 12c16f91b1..6a8aaff048 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -196,37 +196,37 @@ void taffich() { switch (a) { case 16: - g_s._pourc[9] = '*'; - g_s._teauto[42] = '*'; + g_vm->g_s._pourc[9] = '*'; + g_vm->g_s._teauto[42] = '*'; break; case 20: - g_s._teauto[39] = '*'; - if (g_s._teauto[36] == '*') { - g_s._pourc[3] = '*'; - g_s._teauto[38] = '*'; + g_vm->g_s._teauto[39] = '*'; + if (g_vm->g_s._teauto[36] == '*') { + g_vm->g_s._pourc[3] = '*'; + g_vm->g_s._teauto[38] = '*'; } break; case 24: - g_s._teauto[37] = '*'; + g_vm->g_s._teauto[37] = '*'; break; case 30: - g_s._teauto[9] = '*'; + g_vm->g_s._teauto[9] = '*'; break; case 31: - g_s._pourc[4] = '*'; - g_s._teauto[35] = '*'; + g_vm->g_s._pourc[4] = '*'; + g_vm->g_s._teauto[35] = '*'; break; case 118: - g_s._teauto[41] = '*'; + g_vm->g_s._teauto[41] = '*'; break; case 143: - g_s._pourc[1] = '*'; + g_vm->g_s._pourc[1] = '*'; break; case 150: - g_s._teauto[34] = '*'; + g_vm->g_s._teauto[34] = '*'; break; case 151: - g_s._pourc[2] = '*'; + g_vm->g_s._pourc[2] = '*'; break; default: break; @@ -249,7 +249,7 @@ void taffich() { m = 2018; if (a > 99) { - if ((g_is == 1) || (g_is == 0)) + if ((g_vm->g_is == 1) || (g_vm->g_is == 0)) m = 2031; else m = 2032; @@ -258,7 +258,7 @@ void taffich() { if (((a > 69) && (a < 80)) || (a == 30) || (a == 31) || (a == 144) || (a == 147) || (a == 149)) m = 2030; - if (((a < 27) && (((g_maff > 69) && (!g_s._alreadyEnteredManor)) || (g_maff > 99))) || ((g_maff > 29) && (g_maff < 33))) + if (((a < 27) && (((g_maff > 69) && (!g_vm->g_s._alreadyEnteredManor)) || (g_maff > 99))) || ((g_maff > 29) && (g_maff < 33))) m = 2033; g_maff = a; @@ -333,11 +333,11 @@ void taffich() { charani(filename, lgt, handle); } g_vm->_mouse.showMouse(); - if ((a < 27) && ((g_maff < 27) || (g_s._currPlace == LANDING)) && (g_msg[4] != OPCODE_ENTER)) { + if ((a < 27) && ((g_maff < 27) || (g_vm->g_s._currPlace == LANDING)) && (g_msg[4] != OPCODE_ENTER)) { if ((a == 13) || (a == 14)) g_vm->displayAloneText(); else if (!g_vm->_blo) - cx = t11(g_s._currPlace); + cx = t11(g_vm->g_s._currPlace); g_mpers = 0; } } diff --git a/engines/mortevielle/ovd1.cpp b/engines/mortevielle/ovd1.cpp deleted file mode 100644 index 178ef434ae..0000000000 --- a/engines/mortevielle/ovd1.cpp +++ /dev/null @@ -1,221 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "common/file.h" -#include "mortevielle/dialogs.h" -#include "mortevielle/keyboard.h" -#include "mortevielle/menu.h" -#include "mortevielle/mor.h" -#include "mortevielle/mortevielle.h" -#include "mortevielle/mouse.h" -#include "mortevielle/outtext.h" -#include "mortevielle/ovd1.h" -#include "mortevielle/speech.h" -#include "mortevielle/sound.h" -#include "mortevielle/var_mor.h" - -namespace Mortevielle { - -void charpal() { - Common::File f; - byte b; - - if (!f.open("fxx.mor")) - error("Missing file - fxx.mor"); - for (int i = 0; i < 108; ++i) - g_l[i] = f.readSint16LE(); - f.close(); - - if (!f.open("plxx.mor")) - error("Missing file - plxx.mor"); - for (int i = 0; i <= 90; ++i) { - for (int j = 1; j <= 16; ++j) { - g_vm->_stdPal[i][j].x = f.readByte(); - g_vm->_stdPal[i][j].y = f.readByte(); - } - } - f.close(); - - if (!f.open("cxx.mor")) - error("Missing file - cxx.mor"); - - for (int j = 0; j <= 90; ++j) { - g_vm->_cgaPal[j]._p = f.readByte(); - for (int i = 0; i <= 15; ++i) { - nhom &with = g_vm->_cgaPal[j]._a[i]; - - b = f.readByte(); - with._id = (uint)b >> 4; - with._hom[0] = ((uint)b >> 2) & 3; - with._hom[1] = b & 3; - } - } - - g_vm->_cgaPal[10]._a[9] = g_vm->_cgaPal[10]._a[5]; - for (int j = 0; j <= 14; ++j) { - _patternArr[j]._tax = f.readByte(); - _patternArr[j]._tay = f.readByte(); - for (int i = 1; i <= 20; ++i) - for (int k = 1; k <= 20; ++k) - _patternArr[j]._des[i][k] = f.readByte(); - } - f.close(); -} - -void chartex() { - Common::File inpFile; - Common::File ntpFile; - - g_vm->_txxFileFl = false; - if (g_vm->getLanguage() == Common::EN_ANY) { - warning("English version expected - Switching to DAT file"); - return; - } - - if (!inpFile.open("TXX.INP")) { - if (!inpFile.open("TXX.MOR")) { - warning("Missing file - TXX.INP or .MOR - Switching to DAT file"); - return; - } - } - if (!ntpFile.open("TXX.NTP")) { - warning("Missing file - TXX.INP or .MOR - Switching to DAT file"); - return; - } - - if ((inpFile.size() > (maxti * 2)) || (ntpFile.size() > (maxtd * 3))) { - warning("TXX file - Unexpected format - Switching to DAT file"); - return; - } - - for (int i = 0; i < inpFile.size() / 2; ++i) - g_t_mot[i] = inpFile.readUint16LE(); - - inpFile.close(); - g_vm->_txxFileFl = true; - - for (int i = 0; i < (ntpFile.size() / 3); ++i) { - g_t_rec[i]._hintId = ntpFile.readSint16LE(); - g_t_rec[i]._point = ntpFile.readByte(); - } - - ntpFile.close(); - -} - -/** - * The original engine used this method to display a starting text screen letting the player - * select the graphics mode to use - */ -void dialpre() { - /* debug('o3 dialpre'); */ - g_crep = 998; -} - -void music() { - if (g_vm->_soundOff) - return; - - g_vm->_reloadCFIEC = true; - - Common::File fic; - if (!fic.open("mort.img")) - error("Missing file - mort.img"); - - fic.read(&g_mem[0x3800 * 16 + 0], 500); - fic.read(&g_mem[0x47a0 * 16 + 0], 123); - fic.close(); - - g_vm->_soundManager.decodeMusic(&g_mem[0x3800 * 16], &g_mem[0x5000 * 16], 623); - g_vm->_addfix = (float)((kTempoMusic - g_addv[1])) / 256; - g_vm->_speechManager.cctable(g_tbi); - - bool fin = false; - int k = 0; - do { - fin = g_vm->keyPressed(); - g_vm->_soundManager.musyc(g_tbi, 9958, kTempoMusic); - ++k; - fin = fin | g_vm->keyPressed() | (k >= 5); - } while (!fin); - while (g_vm->keyPressed()) - g_vm->getChar(); -} - - -void loadBRUIT5() { - Common::File f; - - if (!f.open("bruit5")) - error("Missing file - bruit5"); - - f.read(&g_mem[kAdrNoise5 * 16 + 0], 149 * 128); - f.close(); -} - -void loadCFIEC() { - Common::File f; - - if (!f.open("cfiec.mor")) - error("Missing file - cfiec.mor"); - - f.read(&g_adcfiec[0], 822 * 128); - f.close(); - - g_vm->_reloadCFIEC = false; -} - - -void loadCFIPH() { - Common::File f; - - if (!f.open("cfiph.mor")) - error("Missing file - cfiph.mor"); - - for (int i = 0; i < (f.size() / 2); ++i) - g_t_cph[i] = f.readSint16LE(); - - f.close(); -} - -void suite() { - hirs(); - repon(7, 2035); - g_caff = 51; - taffich(); - teskbd(); - if (g_vm->_newGraphicalDevice != g_vm->_currGraphicalDevice) - g_vm->_currGraphicalDevice = g_vm->_newGraphicalDevice; - hirs(); - dessine(g_ades, 0, 0); - - Common::String cpr = "COPYRIGHT 1989 : LANKHOR"; - g_vm->_screenSurface.putxy(104 + 72 * g_res, 185); - g_vm->_screenSurface.drawString(cpr, 0); -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/ovd1.h b/engines/mortevielle/ovd1.h deleted file mode 100644 index 90f9c0d235..0000000000 --- a/engines/mortevielle/ovd1.h +++ /dev/null @@ -1,43 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_OVD1_H -#define MORTEVIELLE_OVD1_H - -namespace Mortevielle { - -extern void charpal(); -extern void chartex(); -extern void dialpre(); -extern void music(); -extern void loadBRUIT5(); -extern void loadCFIEC(); -extern void loadCFIPH(); -extern void suite(); - -} // End of namespace Mortevielle -#endif diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 7ddd8b707c..c99804f34c 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -31,7 +31,6 @@ #include "mortevielle/mor.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" -#include "mortevielle/ovd1.h" #include "mortevielle/saveload.h" #include "mortevielle/var_mor.h" @@ -47,25 +46,25 @@ Common::String SavegameManager::generateSaveName(int slotNumber) { * Handle saving or loading savegame data */ void SavegameManager::sync_save(Common::Serializer &sz) { - sz.syncAsSint16LE(g_s1._faithScore); + sz.syncAsSint16LE(g_vm->g_s1._faithScore); for (int i = 0; i < 11; ++i) - sz.syncAsByte(g_s1._pourc[i]); + sz.syncAsByte(g_vm->g_s1._pourc[i]); for (int i = 0; i < 43; ++i) - sz.syncAsByte(g_s1._teauto[i]); + sz.syncAsByte(g_vm->g_s1._teauto[i]); for (int i = 0; i < 31; ++i) - sz.syncAsByte(g_s1._sjer[i]); - - sz.syncAsSint16LE(g_s1._currPlace); - sz.syncAsSint16LE(g_s1._atticBallHoleObjectId); - sz.syncAsSint16LE(g_s1._atticRodHoleObjectId); - sz.syncAsSint16LE(g_s1._cellarObjectId); - sz.syncAsSint16LE(g_s1._secretPassageObjectId); - sz.syncAsSint16LE(g_s1._wellObjectId); - sz.syncAsSint16LE(g_s1._selectedObjectId); - sz.syncAsSint16LE(g_s1._purpleRoomObjectId); - sz.syncAsSint16LE(g_s1._cryptObjectId); - sz.syncAsByte(g_s1._alreadyEnteredManor); - sz.syncAsByte(g_s1._fullHour); + sz.syncAsByte(g_vm->g_s1._sjer[i]); + + sz.syncAsSint16LE(g_vm->g_s1._currPlace); + sz.syncAsSint16LE(g_vm->g_s1._atticBallHoleObjectId); + sz.syncAsSint16LE(g_vm->g_s1._atticRodHoleObjectId); + sz.syncAsSint16LE(g_vm->g_s1._cellarObjectId); + sz.syncAsSint16LE(g_vm->g_s1._secretPassageObjectId); + sz.syncAsSint16LE(g_vm->g_s1._wellObjectId); + sz.syncAsSint16LE(g_vm->g_s1._selectedObjectId); + sz.syncAsSint16LE(g_vm->g_s1._purpleRoomObjectId); + sz.syncAsSint16LE(g_vm->g_s1._cryptObjectId); + sz.syncAsByte(g_vm->g_s1._alreadyEnteredManor); + sz.syncAsByte(g_vm->g_s1._fullHour); sz.syncBytes(g_bufcha, 391); } @@ -107,7 +106,7 @@ void SavegameManager::loadSavegame(int n) { Common::Serializer sz(stream, NULL); sync_save(sz); - g_s = g_s1; + g_vm->g_s = g_vm->g_s1; for (int i = 0; i <= 389; ++i) g_tabdon[i + kAcha] = g_bufcha[i]; @@ -143,9 +142,9 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { for (i = 0; i <= 389; ++i) g_bufcha[i] = g_tabdon[i + kAcha]; - g_s1 = g_s; - if (g_s1._currPlace == 26) - g_s1._currPlace = 15; + g_vm->g_s1 = g_vm->g_s; + if (g_vm->g_s1._currPlace == 26) + g_vm->g_s1._currPlace = 15; Common::String filename = generateSaveName(n); f = g_system->getSavefileManager()->openForSaving(filename); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index b3999b7c6f..a601c45a94 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -101,7 +101,6 @@ int g_x, int g_t_cph[6401]; byte g_tabdon[4001]; -byte g_is; int g_nbrep[9]; int g_nbrepm[9]; @@ -112,13 +111,11 @@ byte g_bufcha[391]; byte g_lettres[7][24]; -uint16 g_t_mot[maxti + 1]; +uint16 g_t_mot[kMaxTi + 1]; int g_tay_tchar; -Hint g_t_rec[maxtd + 1]; +Hint g_t_rec[kMaxTd + 1]; int g_l[108]; int g_tbi[256]; -t_pcga g_palcga[91]; -Pattern _patternArr[15]; byte g_adcfiec[(4088 * 16) + (311 * 0x80)]; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index b6897522b9..178ca2d989 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -64,8 +64,8 @@ namespace Mortevielle { /*------------------------- CONSTANTS ----------------------------------*/ /*---------------------------------------------------------------------------*/ -const int maxti = 7975; -const int maxtd = 600; +const int kMaxTi = 7975; +const int kMaxTd = 600; const int kDescriptionStringIndex = 0; // Unused const int kInventoryStringIndex = 186; @@ -150,16 +150,6 @@ struct Pattern { byte _des[kMaxPatt + 1][kMaxPatt + 1]; }; -struct nhom { - byte _id; /* number between 0 and 32 */ - byte _hom[4]; -}; - -struct t_pcga { - byte _p; - nhom _a[16]; -}; - typedef int tablint[256]; //typedef Common::Point tabdb[17]; typedef int tfxx[108]; @@ -210,23 +200,19 @@ extern int g_x, extern int g_t_cph[6401]; // Speech extern byte g_tabdon[4001]; -extern byte g_is; - extern int g_nbrep[9]; extern int g_nbrepm[9]; extern int g_msg[5]; extern byte g_touv[8]; -extern SaveStruct g_s, g_s1; extern byte g_bufcha[391]; extern byte g_lettres[7][24]; -extern uint16 g_t_mot[maxti + 1]; +extern uint16 g_t_mot[kMaxTi + 1]; extern int g_tay_tchar; -extern Hint g_t_rec[maxtd + 1]; +extern Hint g_t_rec[kMaxTd + 1]; extern int g_l[108]; extern int g_tbi[256]; -extern Pattern _patternArr[15]; extern byte g_adcfiec[822 * 128]; @@ -245,9 +231,6 @@ void Val(const Common::String &s, int &V, int Code); extern int g_port[0xfff]; extern byte g_mem[65536 * 16]; - -#define hires {} - extern void palette(int v1); } // End of namespace Mortevielle -- cgit v1.2.3 From 1a9183e0ba06e13ed1385e893ea7287412645fba Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 22 Mar 2012 08:36:59 +0100 Subject: MORTEVIELLE: More renaming --- engines/mortevielle/actions.cpp | 506 ++++++++++++++++++------------------ engines/mortevielle/menu.cpp | 6 +- engines/mortevielle/menu.h | 2 + engines/mortevielle/mor.cpp | 300 +++------------------ engines/mortevielle/mor.h | 4 - engines/mortevielle/mortevielle.cpp | 346 +++++++++++++++++++----- engines/mortevielle/mortevielle.h | 28 +- engines/mortevielle/outtext.cpp | 34 +-- engines/mortevielle/saveload.cpp | 40 +-- engines/mortevielle/speech.h | 8 + engines/mortevielle/var_mor.cpp | 1 - engines/mortevielle/var_mor.h | 34 --- 12 files changed, 655 insertions(+), 654 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 9479ad5445..3d92db84be 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -42,13 +42,13 @@ namespace Mortevielle { * @remarks Originally called 'taller' */ void MortevielleEngine::fctMove() { - if ((g_s._currPlace == ROOM26) && (g_msg[4] == _menu._moveMenu[6])) { - g_s._currPlace = LANDING; - g_caff = g_s._currPlace; + if ((_coreVar._currPlace == ROOM26) && (g_msg[4] == _menu._moveMenu[6])) { + _coreVar._currPlace = LANDING; + g_caff = _coreVar._currPlace; afdes(); - repon(2, g_s._currPlace); + repon(2, _coreVar._currPlace); } - if ((g_s._currPlace == LANDING) && (g_msg[4] == _menu._moveMenu[6])) { + if ((_coreVar._currPlace == LANDING) && (g_msg[4] == _menu._moveMenu[6])) { if (!_syn) ecr3(getEngineString(S_GO_TO)); tfleche(); @@ -65,15 +65,15 @@ void MortevielleEngine::fctMove() { return; if (g_num == 1) { - g_s._currPlace = OWN_ROOM; + _coreVar._currPlace = OWN_ROOM; _menu.setDestinationMenuText(OWN_ROOM); } else if (g_num == 7) { - g_s._currPlace = ATTIC; + _coreVar._currPlace = ATTIC; _menu.setDestinationMenuText(ATTIC); } if (g_num != 6) - g_s._currPlace = ROOM26; + _coreVar._currPlace = ROOM26; if ((g_num > 1) && (g_num < 6)) g_ment = g_num - 1; @@ -92,55 +92,55 @@ void MortevielleEngine::fctMove() { while (_menu._moveMenu[menuChoice] != g_msg[4]) ++menuChoice; - if (g_s._currPlace == MOUNTAIN) { + if (_coreVar._currPlace == MOUNTAIN) { if (menuChoice == 1) gotoManorFront(); else if (menuChoice == 2) checkManorDistance(); - _menu.setDestinationMenuText(g_s._currPlace); + _menu.setDestinationMenuText(_coreVar._currPlace); return; - } else if (g_s._currPlace == INSIDE_WELL) { + } else if (_coreVar._currPlace == INSIDE_WELL) { if (menuChoice == 1) floodedInWell(); else if (menuChoice == 2) gotoManorBack(); - _menu.setDestinationMenuText(g_s._currPlace); + _menu.setDestinationMenuText(_coreVar._currPlace); return; - } else if ((g_s._currPlace == BUREAU) && (menuChoice == 1)) + } else if ((_coreVar._currPlace == BUREAU) && (menuChoice == 1)) menuChoice = 6; - else if (g_s._currPlace == KITCHEN) { + else if (_coreVar._currPlace == KITCHEN) { if (menuChoice == 2) menuChoice = 6; else if (menuChoice == 5) menuChoice = 16; - } else if ((g_s._currPlace == CELLAR) && (menuChoice == 3)) + } else if ((_coreVar._currPlace == CELLAR) && (menuChoice == 3)) menuChoice = 6; - else if (((g_s._currPlace == LANDING) || (g_s._currPlace == ROOM26)) && (menuChoice == 4)) + else if (((_coreVar._currPlace == LANDING) || (_coreVar._currPlace == ROOM26)) && (menuChoice == 4)) menuChoice = 6; - if ((g_s._currPlace > MOUNTAIN) && (g_s._currPlace != ROOM26)) + if ((_coreVar._currPlace > MOUNTAIN) && (_coreVar._currPlace != ROOM26)) menuChoice += 10; - if ((g_s._currPlace == CHAPEL) && (menuChoice == 13)) + if ((_coreVar._currPlace == CHAPEL) && (menuChoice == 13)) menuChoice = 16; - else if (g_s._currPlace == MANOR_FRONT) { + else if (_coreVar._currPlace == MANOR_FRONT) { if (menuChoice == 12) menuChoice = 16; else if (menuChoice > 13) menuChoice = 15; - } else if ((g_s._currPlace == MANOR_BACK) && (menuChoice > 14)) + } else if ((_coreVar._currPlace == MANOR_BACK) && (menuChoice > 14)) menuChoice = 15; - else if ((g_s._currPlace == WELL) && (menuChoice > 13) && (menuChoice != 17)) + else if ((_coreVar._currPlace == WELL) && (menuChoice > 13) && (menuChoice != 17)) menuChoice = 15; if (menuChoice == 1) - g_s._currPlace = BUREAU; + _coreVar._currPlace = BUREAU; else if (menuChoice == 2) - g_s._currPlace = KITCHEN; + _coreVar._currPlace = KITCHEN; else if (menuChoice == 3) - g_s._currPlace = CELLAR; + _coreVar._currPlace = CELLAR; else if (menuChoice == 4) - g_s._currPlace = LANDING; + _coreVar._currPlace = LANDING; else if (menuChoice == 5) menuChoice = 12; else if (menuChoice == 6) @@ -151,30 +151,30 @@ void MortevielleEngine::fctMove() { else if (menuChoice == 12) gotoManorFront(); else if (menuChoice == 13) - g_s._currPlace = CHAPEL; + _coreVar._currPlace = CHAPEL; else if (menuChoice == 14) - g_s._currPlace = WELL; + _coreVar._currPlace = WELL; else if (menuChoice == 15) checkManorDistance(); else if (menuChoice == 16) gotoManorBack(); else if (menuChoice == 17) { - if ((g_s._wellObjectId != 120) && (g_s._wellObjectId != 140)) + if ((_coreVar._wellObjectId != 120) && (_coreVar._wellObjectId != 140)) g_crep = 997; - else if (g_s._wellObjectId == 120) + else if (_coreVar._wellObjectId == 120) g_crep = 181; - else if (g_s._faithScore > 80) { + else if (_coreVar._faithScore > 80) { g_crep = 1505; loseGame(); } else { - g_s._currPlace = INSIDE_WELL; + _coreVar._currPlace = INSIDE_WELL; affrep(); } } if ((menuChoice < 5) || (menuChoice == 13) || (menuChoice == 14)) affrep(); - debloc(g_s._currPlace); - _menu.setDestinationMenuText(g_s._currPlace); + debloc(_coreVar._currPlace); + _menu.setDestinationMenuText(_coreVar._currPlace); } /** @@ -187,24 +187,24 @@ void MortevielleEngine::fctTake() { avpoing(cx); if (g_crep != 139) { if (_currBitIndex > 0) - g_s._faithScore += 3; + _coreVar._faithScore += 3; if (_obpart) { - if (g_s._currPlace == PURPLE_ROOM) - g_s._purpleRoomObjectId = 0; - if (g_s._currPlace == ATTIC) { - if (g_s._atticBallHoleObjectId == g_caff) - g_s._atticBallHoleObjectId = 0; - if (g_s._atticRodHoleObjectId == g_caff) - g_s._atticRodHoleObjectId = 0; + if (_coreVar._currPlace == PURPLE_ROOM) + _coreVar._purpleRoomObjectId = 0; + if (_coreVar._currPlace == ATTIC) { + if (_coreVar._atticBallHoleObjectId == g_caff) + _coreVar._atticBallHoleObjectId = 0; + if (_coreVar._atticRodHoleObjectId == g_caff) + _coreVar._atticRodHoleObjectId = 0; } - if (g_s._currPlace == CELLAR) - g_s._cellarObjectId = 0; - if (g_s._currPlace == CRYPT) - g_s._cryptObjectId = 0; - if (g_s._currPlace == SECRET_PASSAGE) - g_s._secretPassageObjectId = 0; - if (g_s._currPlace == WELL) - g_s._wellObjectId = 0; + if (_coreVar._currPlace == CELLAR) + _coreVar._cellarObjectId = 0; + if (_coreVar._currPlace == CRYPT) + _coreVar._cryptObjectId = 0; + if (_coreVar._currPlace == SECRET_PASSAGE) + _coreVar._secretPassageObjectId = 0; + if (_coreVar._currPlace == WELL) + _coreVar._wellObjectId = 0; _menu.unsetSearchMenu(); _obpart = false; affrep(); @@ -213,7 +213,7 @@ void MortevielleEngine::fctTake() { tsuiv(); ++g_dobj; if (g_dobj > 6) { - g_s._faithScore += 2; + _coreVar._faithScore += 2; g_dobj = 0; } } @@ -233,41 +233,41 @@ void MortevielleEngine::fctTake() { } } tcoord(5); - if ((g_num == 0) || ((g_num == 1) && (g_s._currPlace == CRYPT))) { + if ((g_num == 0) || ((g_num == 1) && (_coreVar._currPlace == CRYPT))) { tcoord(8); if (g_num != 0) { if (_currBitIndex > 0) - g_s._faithScore += 3; + _coreVar._faithScore += 3; g_crep = 997; - if ((g_s._currPlace == PURPLE_ROOM) && (g_s._purpleRoomObjectId != 0)) - avpoing(g_s._purpleRoomObjectId); - if ((g_s._currPlace == ATTIC) && (g_num == 1) && (g_s._atticBallHoleObjectId != 0)) { - avpoing(g_s._atticBallHoleObjectId); + if ((_coreVar._currPlace == PURPLE_ROOM) && (_coreVar._purpleRoomObjectId != 0)) + avpoing(_coreVar._purpleRoomObjectId); + if ((_coreVar._currPlace == ATTIC) && (g_num == 1) && (_coreVar._atticBallHoleObjectId != 0)) { + avpoing(_coreVar._atticBallHoleObjectId); if ((g_crep != 997) && (g_crep != 139)) aniof(2, 7); } - if ((g_s._currPlace == ATTIC) && (g_num == 2) && (g_s._atticRodHoleObjectId != 0)) { - avpoing(g_s._atticRodHoleObjectId); + if ((_coreVar._currPlace == ATTIC) && (g_num == 2) && (_coreVar._atticRodHoleObjectId != 0)) { + avpoing(_coreVar._atticRodHoleObjectId); if ((g_crep != 997) && (g_crep != 139)) aniof(2, 6); } - if ((g_s._currPlace == CELLAR) && (g_s._cellarObjectId != 0)) { - avpoing(g_s._cellarObjectId); + if ((_coreVar._currPlace == CELLAR) && (_coreVar._cellarObjectId != 0)) { + avpoing(_coreVar._cellarObjectId); if ((g_crep != 997) && (g_crep != 139)) aniof(2, 2); } - if ((g_s._currPlace == CRYPT) && (g_s._cryptObjectId != 0)) - avpoing(g_s._cryptObjectId); + if ((_coreVar._currPlace == CRYPT) && (_coreVar._cryptObjectId != 0)) + avpoing(_coreVar._cryptObjectId); - if ((g_s._currPlace == SECRET_PASSAGE) && (g_s._secretPassageObjectId != 0)) { - avpoing(g_s._secretPassageObjectId); + if ((_coreVar._currPlace == SECRET_PASSAGE) && (_coreVar._secretPassageObjectId != 0)) { + avpoing(_coreVar._secretPassageObjectId); if ((g_crep != 997) && (g_crep != 139)) { g_crep = 182; aniof(2, 1); } } - if ((g_s._currPlace == WELL) && (g_s._wellObjectId != 0)) { - avpoing(g_s._wellObjectId); + if ((_coreVar._currPlace == WELL) && (_coreVar._wellObjectId != 0)) { + avpoing(_coreVar._wellObjectId); if ((g_crep != 997) && (g_crep != 139)) aniof(2, 1); } @@ -275,22 +275,22 @@ void MortevielleEngine::fctTake() { g_crep = 999; } } else { - if ( ((g_s._currPlace == OWN_ROOM) && (g_num == 3)) - || ((g_s._currPlace == GREEN_ROOM) && (g_num == 4)) - || ((g_s._currPlace == PURPLE_ROOM) && (g_num == 1)) - || ((g_s._currPlace == DARKBLUE_ROOM) && (g_num == 3)) - || ((g_s._currPlace == BLUE_ROOM) && (g_num == 6)) - || ((g_s._currPlace == RED_ROOM) && (g_num == 2)) - || ((g_s._currPlace == BATHROOM) && (g_num == 6)) - || ((g_s._currPlace == GREEN_ROOM2) && (g_num == 4)) - || ((g_s._currPlace == ROOM9) && (g_num == 4)) - || ((g_s._currPlace == DINING_ROOM) && (g_num > 2)) - || ((g_s._currPlace == BUREAU) && (g_num == 7)) - || ((g_s._currPlace == KITCHEN) && (g_num == 6)) - || ((g_s._currPlace == ATTIC) && (g_num > 4)) - || ((g_s._currPlace > ATTIC) && (g_s._currPlace != INSIDE_WELL)) ) + if ( ((_coreVar._currPlace == OWN_ROOM) && (g_num == 3)) + || ((_coreVar._currPlace == GREEN_ROOM) && (g_num == 4)) + || ((_coreVar._currPlace == PURPLE_ROOM) && (g_num == 1)) + || ((_coreVar._currPlace == DARKBLUE_ROOM) && (g_num == 3)) + || ((_coreVar._currPlace == BLUE_ROOM) && (g_num == 6)) + || ((_coreVar._currPlace == RED_ROOM) && (g_num == 2)) + || ((_coreVar._currPlace == BATHROOM) && (g_num == 6)) + || ((_coreVar._currPlace == GREEN_ROOM2) && (g_num == 4)) + || ((_coreVar._currPlace == ROOM9) && (g_num == 4)) + || ((_coreVar._currPlace == DINING_ROOM) && (g_num > 2)) + || ((_coreVar._currPlace == BUREAU) && (g_num == 7)) + || ((_coreVar._currPlace == KITCHEN) && (g_num == 6)) + || ((_coreVar._currPlace == ATTIC) && (g_num > 4)) + || ((_coreVar._currPlace > ATTIC) && (_coreVar._currPlace != INSIDE_WELL)) ) g_crep = 997; - else if (g_s._currPlace == INSIDE_WELL) { + else if (_coreVar._currPlace == INSIDE_WELL) { g_crep = 1504; loseGame(); } else @@ -312,11 +312,11 @@ void MortevielleEngine::fctInventoryTake() { cy = 0; do { ++cy; - if (ord(g_s._sjer[cy]) != 0) + if (ord(_coreVar._sjer[cy]) != 0) ++cz; } while (cz != cx); - cz = ord(g_s._sjer[cy]); - g_s._sjer[cy] = chr(0); + cz = ord(_coreVar._sjer[cy]); + _coreVar._sjer[cy] = chr(0); modinv(); avpoing(cz); g_crep = 998; @@ -338,19 +338,19 @@ void MortevielleEngine::fctLift() { tcoord(8); if (g_num != 0) { if (_currBitIndex > 0) - ++g_s._faithScore; + ++_coreVar._faithScore; g_crep = 997; - if ((g_s._currPlace == PURPLE_ROOM) && (g_s._purpleRoomObjectId != 0)) - treg(g_s._purpleRoomObjectId); + if ((_coreVar._currPlace == PURPLE_ROOM) && (_coreVar._purpleRoomObjectId != 0)) + treg(_coreVar._purpleRoomObjectId); } return; } if (_currBitIndex > 0) - ++g_s._faithScore; - int tmpPlace = g_s._currPlace; - if (g_s._currPlace == CRYPT) + ++_coreVar._faithScore; + int tmpPlace = _coreVar._currPlace; + if (_coreVar._currPlace == CRYPT) tmpPlace = 14; - else if (g_s._currPlace == MOUNTAIN) + else if (_coreVar._currPlace == MOUNTAIN) tmpPlace = 15; g_crep = g_tabdon[asoul + (tmpPlace << 3) + (g_num - 1)]; if (g_crep == 255) @@ -381,10 +381,10 @@ void MortevielleEngine::fctRead() { * @remarks Originally called 'tslire' */ void MortevielleEngine::fctSelfRead() { - if (g_s._selectedObjectId == 0) + if (_coreVar._selectedObjectId == 0) g_crep = 186; else - st4(g_s._selectedObjectId); + st4(_coreVar._selectedObjectId); } /** @@ -408,60 +408,60 @@ void MortevielleEngine::fctLook() { tcoord(8); g_crep = 131; if (g_num != 0) { - if (g_s._currPlace == ATTIC) { + if (_coreVar._currPlace == ATTIC) { if (g_num == 1) { g_crep = 164; - if (g_s._atticRodHoleObjectId != 0) - treg(g_s._atticRodHoleObjectId); - else if (g_s._atticBallHoleObjectId != 0) - treg(g_s._atticBallHoleObjectId); + if (_coreVar._atticRodHoleObjectId != 0) + treg(_coreVar._atticRodHoleObjectId); + else if (_coreVar._atticBallHoleObjectId != 0) + treg(_coreVar._atticBallHoleObjectId); } else { g_crep = 193; - if (g_s._atticRodHoleObjectId != 0) - treg(g_s._atticRodHoleObjectId); + if (_coreVar._atticRodHoleObjectId != 0) + treg(_coreVar._atticRodHoleObjectId); } } - if (g_s._currPlace == CELLAR) { + if (_coreVar._currPlace == CELLAR) { g_crep = 164; - if (g_s._cellarObjectId != 0) - treg(g_s._cellarObjectId); + if (_coreVar._cellarObjectId != 0) + treg(_coreVar._cellarObjectId); } - if (g_s._currPlace == SECRET_PASSAGE) { + if (_coreVar._currPlace == SECRET_PASSAGE) { g_crep = 174; - if (g_s._secretPassageObjectId != 0) - treg(g_s._secretPassageObjectId); + if (_coreVar._secretPassageObjectId != 0) + treg(_coreVar._secretPassageObjectId); } - if (g_s._currPlace == WELL) { + if (_coreVar._currPlace == WELL) { g_crep = 131; - if (g_s._wellObjectId != 0) - treg(g_s._wellObjectId); + if (_coreVar._wellObjectId != 0) + treg(_coreVar._wellObjectId); } } return; } - cx = g_s._currPlace; - if (g_s._currPlace == CHAPEL) + cx = _coreVar._currPlace; + if (_coreVar._currPlace == CHAPEL) cx = 17; - if ((g_s._currPlace > MANOR_FRONT) && (g_s._currPlace < DOOR)) + if ((_coreVar._currPlace > MANOR_FRONT) && (_coreVar._currPlace < DOOR)) cx -= 4; - if (g_s._currPlace == ROOM26) + if (_coreVar._currPlace == ROOM26) cx = 21; g_crep = g_tabdon[arega + (cx * 7) + g_num - 1]; - if ((g_s._currPlace == ATTIC) && (g_num == 8)) + if ((_coreVar._currPlace == ATTIC) && (g_num == 8)) g_crep = 126; - if (g_s._currPlace == MOUNTAIN) + if (_coreVar._currPlace == MOUNTAIN) g_crep = 103; if (g_crep == 255) g_crep = 131; - if ((g_s._currPlace == GREEN_ROOM) && (g_num == 1)) + if ((_coreVar._currPlace == GREEN_ROOM) && (g_num == 1)) treg(144); - if ((g_s._currPlace == BLUE_ROOM) && (g_num == 3)) + if ((_coreVar._currPlace == BLUE_ROOM) && (g_num == 3)) treg(147); - if ((g_s._currPlace == GREEN_ROOM2) && (g_num == 3)) + if ((_coreVar._currPlace == GREEN_ROOM2) && (g_num == 3)) treg(149); - if ((g_s._currPlace == 9) && (g_num == 2)) + if ((_coreVar._currPlace == 9) && (g_num == 2)) treg(30); - if ((g_s._currPlace == DINING_ROOM) && (g_num == 3)) + if ((_coreVar._currPlace == DINING_ROOM) && (g_num == 3)) treg(31); } @@ -470,8 +470,8 @@ void MortevielleEngine::fctLook() { * @remarks Originally called 'tsregarder' */ void MortevielleEngine::fctSelftLook() { - if (g_s._selectedObjectId != 0) - treg(g_s._selectedObjectId); + if (_coreVar._selectedObjectId != 0) + treg(_coreVar._selectedObjectId); else g_crep = 186; } @@ -495,7 +495,7 @@ void MortevielleEngine::fctSearch() { if (_anyone || _keyPressedEsc) return; - if (g_s._currPlace == INSIDE_WELL) { + if (_coreVar._currPlace == INSIDE_WELL) { g_crep = 1504; loseGame(); return; @@ -513,7 +513,7 @@ void MortevielleEngine::fctSearch() { g_crep = 187; else { if (_currBitIndex > 0) - g_s._faithScore += 3; + _coreVar._faithScore += 3; rechai(g_mchai); if (g_mchai != 0) { @@ -530,41 +530,41 @@ void MortevielleEngine::fctSearch() { g_crep = 997; if (g_num != 0) { if (_currBitIndex > 0) - g_s._faithScore += 3; - if ((g_s._currPlace != WELL) && (g_s._currPlace != SECRET_PASSAGE) && (g_s._currPlace != ATTIC)) { - if (g_s._currPlace == PURPLE_ROOM) { + _coreVar._faithScore += 3; + if ((_coreVar._currPlace != WELL) && (_coreVar._currPlace != SECRET_PASSAGE) && (_coreVar._currPlace != ATTIC)) { + if (_coreVar._currPlace == PURPLE_ROOM) { g_crep = 123; - if (g_s._purpleRoomObjectId != 0) - treg(g_s._purpleRoomObjectId); + if (_coreVar._purpleRoomObjectId != 0) + treg(_coreVar._purpleRoomObjectId); } - if (g_s._currPlace == CRYPT) { + if (_coreVar._currPlace == CRYPT) { g_crep = 123; - if (g_s._cryptObjectId != 0) - treg(g_s._cryptObjectId); + if (_coreVar._cryptObjectId != 0) + treg(_coreVar._cryptObjectId); } } } } } else { if (_currBitIndex > 0) - g_s._faithScore += 3; + _coreVar._faithScore += 3; g_crep = 997; - if (g_s._currPlace < CELLAR) - g_crep = r[g_s._currPlace]; + if (_coreVar._currPlace < CELLAR) + g_crep = r[_coreVar._currPlace]; - if ((g_s._currPlace == TOILETS) && (g_num == 2)) + if ((_coreVar._currPlace == TOILETS) && (g_num == 2)) g_crep = 162; - if (g_s._currPlace == KITCHEN) { + if (_coreVar._currPlace == KITCHEN) { if ((g_num == 3) || (g_num == 4)) g_crep = 162; else if (g_num == 5) g_crep = 159; } - if (g_s._currPlace == MOUNTAIN) + if (_coreVar._currPlace == MOUNTAIN) g_crep = 104; - else if (g_s._currPlace == CRYPT) + else if (_coreVar._currPlace == CRYPT) g_crep = 155; } } @@ -574,8 +574,8 @@ void MortevielleEngine::fctSearch() { * @remarks Originally called 'tsfouiller' */ void MortevielleEngine::fctSelfSearch() { - if (g_s._selectedObjectId != 0) - st7(g_s._selectedObjectId); + if (_coreVar._selectedObjectId != 0) + st7(_coreVar._selectedObjectId); else g_crep = 186; } @@ -609,30 +609,30 @@ void MortevielleEngine::fctOpen() { tcoord(7); if (g_num != 0) { if (_currBitIndex > 0) - g_s._faithScore += 2; + _coreVar._faithScore += 2; ++g_iouv; int tmpPlace = 0; do { ++tmpPlace; } while (!((tmpPlace > 6) || (ord(g_touv[tmpPlace]) == 0) || (ord(g_touv[tmpPlace]) == g_num))); if (ord(g_touv[tmpPlace]) != g_num) { - if (!( ((g_num == 3) && ((g_s._currPlace == OWN_ROOM) || (g_s._currPlace == 9) || (g_s._currPlace == BLUE_ROOM) || (g_s._currPlace == BATHROOM))) - || ((g_num == 4) && ((g_s._currPlace == GREEN_ROOM) || (g_s._currPlace == PURPLE_ROOM) || (g_s._currPlace == RED_ROOM))) - || ((g_s._currPlace == DARKBLUE_ROOM) && (g_num == 5)) - || ((g_num == 6) && ((g_s._currPlace == BATHROOM) || (g_s._currPlace == DINING_ROOM) || (g_s._currPlace == GREEN_ROOM2) || (g_s._currPlace == ATTIC))) - || ((g_s._currPlace == GREEN_ROOM2) && (g_num == 2)) - || ((g_s._currPlace == KITCHEN) && (g_num == 7))) ) { - if ( ((g_s._currPlace > DINING_ROOM) && (g_s._currPlace < CELLAR)) - || ((g_s._currPlace > RED_ROOM) && (g_s._currPlace < DINING_ROOM)) - || (g_s._currPlace == OWN_ROOM) || (g_s._currPlace == PURPLE_ROOM) || (g_s._currPlace == BLUE_ROOM)) { + if (!( ((g_num == 3) && ((_coreVar._currPlace == OWN_ROOM) || (_coreVar._currPlace == 9) || (_coreVar._currPlace == BLUE_ROOM) || (_coreVar._currPlace == BATHROOM))) + || ((g_num == 4) && ((_coreVar._currPlace == GREEN_ROOM) || (_coreVar._currPlace == PURPLE_ROOM) || (_coreVar._currPlace == RED_ROOM))) + || ((_coreVar._currPlace == DARKBLUE_ROOM) && (g_num == 5)) + || ((g_num == 6) && ((_coreVar._currPlace == BATHROOM) || (_coreVar._currPlace == DINING_ROOM) || (_coreVar._currPlace == GREEN_ROOM2) || (_coreVar._currPlace == ATTIC))) + || ((_coreVar._currPlace == GREEN_ROOM2) && (g_num == 2)) + || ((_coreVar._currPlace == KITCHEN) && (g_num == 7))) ) { + if ( ((_coreVar._currPlace > DINING_ROOM) && (_coreVar._currPlace < CELLAR)) + || ((_coreVar._currPlace > RED_ROOM) && (_coreVar._currPlace < DINING_ROOM)) + || (_coreVar._currPlace == OWN_ROOM) || (_coreVar._currPlace == PURPLE_ROOM) || (_coreVar._currPlace == BLUE_ROOM)) { if (getRandomNumber(1, 4) == 3) _speechManager.startSpeech(7, 9, 1); } g_touv[tmpPlace] = chr(g_num); aniof(1, g_num); } - tmpPlace = g_s._currPlace; - if (g_s._currPlace == CRYPT) + tmpPlace = _coreVar._currPlace; + if (_coreVar._currPlace == CRYPT) tmpPlace = CELLAR; g_crep = g_tabdon[aouvr + (tmpPlace * 7) + g_num - 1]; if (g_crep == 254) @@ -647,7 +647,7 @@ void MortevielleEngine::fctOpen() { * @remarks Originally called 'tmettre' */ void MortevielleEngine::fctPlace() { - if (g_s._selectedObjectId == 0) { + if (_coreVar._selectedObjectId == 0) { g_crep = 186; return; } @@ -667,28 +667,28 @@ void MortevielleEngine::fctPlace() { g_crep = 999; if (g_caff == 13) { if (g_num == 1) { - if (g_s._atticBallHoleObjectId != 0) { + if (_coreVar._atticBallHoleObjectId != 0) { g_crep = 188; } else { - g_s._atticBallHoleObjectId = g_s._selectedObjectId; - if (g_s._selectedObjectId == 141) + _coreVar._atticBallHoleObjectId = _coreVar._selectedObjectId; + if (_coreVar._selectedObjectId == 141) aniof(1, 7); } - } else if (g_s._atticRodHoleObjectId != 0) { + } else if (_coreVar._atticRodHoleObjectId != 0) { g_crep = 188; } else { - g_s._atticRodHoleObjectId = g_s._selectedObjectId; - if (g_s._selectedObjectId == 159) + _coreVar._atticRodHoleObjectId = _coreVar._selectedObjectId; + if (_coreVar._selectedObjectId == 159) aniof(1, 6); } } if (g_caff == 14) { - if (g_s._cellarObjectId != 0) { + if (_coreVar._cellarObjectId != 0) { g_crep = 188; } else { - g_s._cellarObjectId = g_s._selectedObjectId; - if (g_s._selectedObjectId == 151) { + _coreVar._cellarObjectId = _coreVar._selectedObjectId; + if (_coreVar._selectedObjectId == 151) { // Open hidden passage aniof(1, 2); aniof(1, 1); @@ -709,7 +709,7 @@ void MortevielleEngine::fctPlace() { clearScreenType2(); clearScreenType3(); _mouse.showMouse(); - tinke(); + prepareRoom(); drawClock(); if (_currBitIndex != 0) showPeoplePresent(_currBitIndex); @@ -718,10 +718,10 @@ void MortevielleEngine::fctPlace() { _menu.displayMenu(); if (enterPassageFl) { - g_s._currPlace = SECRET_PASSAGE; + _coreVar._currPlace = SECRET_PASSAGE; _menu.setDestinationMenuText(SECRET_PASSAGE); } else { - _menu.setDestinationMenuText(g_s._currPlace); + _menu.setDestinationMenuText(_coreVar._currPlace); setPal(14); dessin(0); aniof(1, 2); @@ -742,17 +742,17 @@ void MortevielleEngine::fctPlace() { } if (g_caff == 16) { - if (g_s._cryptObjectId == 0) - g_s._cryptObjectId = g_s._selectedObjectId; + if (_coreVar._cryptObjectId == 0) + _coreVar._cryptObjectId = _coreVar._selectedObjectId; else g_crep = 188; } if (g_caff == 17) { - if (g_s._secretPassageObjectId != 0) { + if (_coreVar._secretPassageObjectId != 0) { g_crep = 188; - } else if (g_s._selectedObjectId == 143) { - g_s._secretPassageObjectId = 143; + } else if (_coreVar._selectedObjectId == 143) { + _coreVar._secretPassageObjectId = 143; aniof(1, 1); } else { g_crep = 1512; @@ -761,10 +761,10 @@ void MortevielleEngine::fctPlace() { } if (g_caff == 24) { - if (g_s._wellObjectId != 0) { + if (_coreVar._wellObjectId != 0) { g_crep = 188; - } else if ((g_s._selectedObjectId == 140) || (g_s._selectedObjectId == 120)) { - g_s._wellObjectId = g_s._selectedObjectId; + } else if ((_coreVar._selectedObjectId == 140) || (_coreVar._selectedObjectId == 120)) { + _coreVar._wellObjectId = _coreVar._selectedObjectId; aniof(1, 1); } else { g_crep = 185; @@ -793,7 +793,7 @@ void MortevielleEngine::fctTurn() { tcoord(9); if (g_num != 0) { g_crep = 997; - if ((g_s._currPlace == ATTIC) && (g_s._atticRodHoleObjectId == 159) && (g_s._atticBallHoleObjectId == 141)) { + if ((_coreVar._currPlace == ATTIC) && (_coreVar._atticRodHoleObjectId == 159) && (_coreVar._atticBallHoleObjectId == 141)) { repon(2, 167); _speechManager.startSpeech(7, 9, 1); int answer = Alert::show(getEngineString(S_YES_NO), 1); @@ -802,13 +802,13 @@ void MortevielleEngine::fctTurn() { else g_crep = 168; } - if ((g_s._currPlace == SECRET_PASSAGE) && (g_s._secretPassageObjectId == 143)) { + if ((_coreVar._currPlace == SECRET_PASSAGE) && (_coreVar._secretPassageObjectId == 143)) { repon(2, 175); clearScreenType3(); _speechManager.startSpeech(6, -9, 1); int answer = Alert::show(getEngineString(S_YES_NO), 1); if (answer == 1) { - g_s._currPlace = CRYPT; + _coreVar._currPlace = CRYPT; affrep(); } else g_crep = 176; @@ -840,7 +840,7 @@ void MortevielleEngine::fctSelfHide() { * @remarks Originally called 'tattacher' */ void MortevielleEngine::fctAttach() { - if (g_s._selectedObjectId == 0) + if (_coreVar._selectedObjectId == 0) g_crep = 186; else { if (!_syn) @@ -849,10 +849,10 @@ void MortevielleEngine::fctAttach() { if (!(_anyone) && !(_keyPressedEsc)) { tcoord(8); g_crep = 997; - if ((g_num != 0) && (g_s._currPlace == WELL)) { + if ((g_num != 0) && (_coreVar._currPlace == WELL)) { g_crep = 999; - if ((g_s._selectedObjectId == 120) || (g_s._selectedObjectId == 140)) { - g_s._wellObjectId = g_s._selectedObjectId; + if ((_coreVar._selectedObjectId == 120) || (_coreVar._selectedObjectId == 140)) { + _coreVar._wellObjectId = _coreVar._selectedObjectId; aniof(1, 1); } else g_crep = 185; @@ -910,15 +910,15 @@ void MortevielleEngine::fctKnock() { if (!_syn) ecr3(getEngineString(S_HIT)); - if (g_s._currPlace == LANDING) { + if (_coreVar._currPlace == LANDING) { Alert::show(getEngineString(S_BEFORE_USE_DEP_MENU), 1); return; } - if (g_s._currPlace < DOOR) { + if (_coreVar._currPlace < DOOR) { tfleche(); if (!(_anyone) && !(_keyPressedEsc)) { - if ((g_s._currPlace < MOUNTAIN) && (g_s._currPlace != LANDING)) + if ((_coreVar._currPlace < MOUNTAIN) && (_coreVar._currPlace != LANDING)) g_crep = 133; else g_crep = 997; @@ -927,11 +927,11 @@ void MortevielleEngine::fctKnock() { return; } - if (g_s._currPlace == ROOM26) { + if (_coreVar._currPlace == ROOM26) { int rand = (getRandomNumber(0, 8)) - 4; _speechManager.startSpeech(11, rand, 1); int p; - ecfren(p, rand, g_s._faithScore, g_ment); + ecfren(p, rand, _coreVar._faithScore, g_ment); int l = g_ment; if (l != 0) { if (p != -500) { @@ -957,7 +957,7 @@ void MortevielleEngine::fctKnock() { void MortevielleEngine::fctSelfPut() { if (!_syn) ecr3(getEngineString(S_POSE)); - if (g_s._selectedObjectId == 0) + if (_coreVar._selectedObjectId == 0) g_crep = 186; else { if (g_caff > 99) { @@ -994,30 +994,30 @@ void MortevielleEngine::fctSelfPut() { if (g_num != 0) { g_crep = 998; if (g_caff == PURPLE_ROOM) { - if (g_s._purpleRoomObjectId != 0) + if (_coreVar._purpleRoomObjectId != 0) g_crep = 188; else - g_s._purpleRoomObjectId = g_s._selectedObjectId; + _coreVar._purpleRoomObjectId = _coreVar._selectedObjectId; } if (g_caff == ATTIC) { if (g_num == 1) { - if (g_s._atticBallHoleObjectId != 0) + if (_coreVar._atticBallHoleObjectId != 0) g_crep = 188; else - g_s._atticBallHoleObjectId = g_s._selectedObjectId; - } else if (g_s._atticRodHoleObjectId != 0) { + _coreVar._atticBallHoleObjectId = _coreVar._selectedObjectId; + } else if (_coreVar._atticRodHoleObjectId != 0) { g_crep = 188; } else { - g_s._atticRodHoleObjectId = g_s._selectedObjectId; + _coreVar._atticRodHoleObjectId = _coreVar._selectedObjectId; } } if (g_caff == CRYPT) { - if (g_s._cryptObjectId != 0) + if (_coreVar._cryptObjectId != 0) g_crep = 188; else - g_s._cryptObjectId = g_s._selectedObjectId; + _coreVar._cryptObjectId = _coreVar._selectedObjectId; } if (g_caff == WELL) @@ -1049,13 +1049,13 @@ void MortevielleEngine::fctSelfPut() { * @remarks Originally called 'tecouter' */ void MortevielleEngine::fctListen() { - if (g_s._currPlace != ROOM26) + if (_coreVar._currPlace != ROOM26) g_crep = 101; else { if (_currBitIndex != 0) - ++g_s._faithScore; + ++_coreVar._faithScore; int p, rand; - ecfren(p, rand, g_s._faithScore, g_ment); + ecfren(p, rand, _coreVar._faithScore, g_ment); int l = g_ment; if (l != 0) { if (p != -500) { @@ -1087,19 +1087,19 @@ void MortevielleEngine::fctListen() { * @remarks Originally called 'tmanger' */ void MortevielleEngine::fctEat() { - if ((g_s._currPlace > LANDING) && (g_s._currPlace < ROOM26)) { + if ((_coreVar._currPlace > LANDING) && (_coreVar._currPlace < ROOM26)) { g_crep = 148; } else { tsort(); - g_s._currPlace = DINING_ROOM; + _coreVar._currPlace = DINING_ROOM; g_caff = 10; - debloc(g_s._currPlace); - _menu.setDestinationMenuText(g_s._currPlace); + debloc(_coreVar._currPlace); + _menu.setDestinationMenuText(_coreVar._currPlace); int j, h, m; updateHour(j, h, m); if ((h == 12) || (h == 13) || (h == 19)) { - g_s._faithScore -= (g_s._faithScore / 7); + _coreVar._faithScore -= (_coreVar._faithScore / 7); if (h == 12) { if (m == 0) h = 4; @@ -1116,7 +1116,7 @@ void MortevielleEngine::fctEat() { g_jh += h; g_crep = 135; - tinke(); + prepareRoom(); } else { g_crep = 134; } @@ -1128,16 +1128,16 @@ void MortevielleEngine::fctEat() { * @remarks Originally called 'tentrer' */ void MortevielleEngine::fctEnter() { - if ((g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK)) { + if ((_coreVar._currPlace == MANOR_FRONT) || (_coreVar._currPlace == MANOR_BACK)) { gotoDiningRoom(); - _menu.setDestinationMenuText(g_s._currPlace); - } else if (g_s._currPlace == LANDING) + _menu.setDestinationMenuText(_coreVar._currPlace); + } else if (_coreVar._currPlace == LANDING) showMoveMenuAlert(); else if (g_ment == 0) g_crep = 997; - else if ((g_ment == 9) && (g_s._selectedObjectId != 136)) { + else if ((g_ment == 9) && (_coreVar._selectedObjectId != 136)) { g_crep = 189; - g_s._teauto[8] = '*'; + _coreVar._teauto[8] = '*'; } else { int z = 0; if (!_blo) @@ -1151,8 +1151,8 @@ void MortevielleEngine::fctEnter() { aniof(1, 1); g_x = convertBitIndexToCharacterIndex(z); - ++g_s._faithScore; - g_s._currPlace = LANDING; + ++_coreVar._faithScore; + _coreVar._currPlace = LANDING; g_msg[3] = MENU_DISCUSS; g_msg[4] = _menu._discussMenu[g_x]; _syn = true; @@ -1171,10 +1171,10 @@ void MortevielleEngine::fctEnter() { _speechManager.startSpeech(7, g_x, 1); aniof(1, 1); - g_s._currPlace = g_ment; + _coreVar._currPlace = g_ment; affrep(); - debloc(g_s._currPlace); - _menu.setDestinationMenuText(g_s._currPlace); + debloc(_coreVar._currPlace); + _menu.setDestinationMenuText(_coreVar._currPlace); g_ment = 0; g_mpers = 0; _currBitIndex = 0; @@ -1189,17 +1189,17 @@ void MortevielleEngine::fctEnter() { void MortevielleEngine::fctSleep() { int z, j, h, m; - if ((g_s._currPlace > LANDING) && (g_s._currPlace < ROOM26)) { + if ((_coreVar._currPlace > LANDING) && (_coreVar._currPlace < ROOM26)) { g_crep = 148; return; } - if (g_s._currPlace != OWN_ROOM) { + if (_coreVar._currPlace != OWN_ROOM) { tsort(); - g_s._currPlace = OWN_ROOM; + _coreVar._currPlace = OWN_ROOM; affrep(); afdes(); - debloc(g_s._currPlace); - _menu.setDestinationMenuText(g_s._currPlace); + debloc(_coreVar._currPlace); + _menu.setDestinationMenuText(_coreVar._currPlace); } clearScreenType3(); clearScreenType2(); @@ -1210,7 +1210,7 @@ void MortevielleEngine::fctSleep() { int answer; do { if (h < 8) { - g_s._faithScore -= (g_s._faithScore / 20); + _coreVar._faithScore -= (_coreVar._faithScore / 20); z = (7 - h) * 2; if (m == 30) --z; @@ -1221,7 +1221,7 @@ void MortevielleEngine::fctSleep() { ++h; if (h > 23) h = 0; - tinke(); + prepareRoom(); answer = Alert::show(getEngineString(S_YES_NO), 1); _anyone = false; } while (answer != 1); @@ -1240,11 +1240,11 @@ void MortevielleEngine::fctForce() { tfleche(); if ((!_anyone) && (!_keyPressedEsc)) { - if (g_s._currPlace != ROOM26) + if (_coreVar._currPlace != ROOM26) g_crep = 997; else { g_crep = 143; - g_s._faithScore += 2; + _coreVar._faithScore += 2; } } } @@ -1256,27 +1256,27 @@ void MortevielleEngine::fctForce() { void MortevielleEngine::fctLeave() { tsort(); g_crep = 0; - if ((g_s._currPlace == MOUNTAIN) || (g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK) || (g_s._currPlace == WELL)) + if ((_coreVar._currPlace == MOUNTAIN) || (_coreVar._currPlace == MANOR_FRONT) || (_coreVar._currPlace == MANOR_BACK) || (_coreVar._currPlace == WELL)) g_crep = 997; else { int nextPlace = OWN_ROOM; - if ((g_s._currPlace < CRYPT) || (g_s._currPlace == ROOM26)) + if ((_coreVar._currPlace < CRYPT) || (_coreVar._currPlace == ROOM26)) nextPlace = DINING_ROOM; - else if ((g_s._currPlace == DINING_ROOM) || (g_s._currPlace == CHAPEL)) + else if ((_coreVar._currPlace == DINING_ROOM) || (_coreVar._currPlace == CHAPEL)) nextPlace = MANOR_FRONT; - else if ((g_s._currPlace < DINING_ROOM) || (g_s._currPlace == ATTIC)) + else if ((_coreVar._currPlace < DINING_ROOM) || (_coreVar._currPlace == ATTIC)) nextPlace = LANDING; - else if (g_s._currPlace == CRYPT) { + else if (_coreVar._currPlace == CRYPT) { nextPlace = SECRET_PASSAGE; g_crep = 176; - } else if (g_s._currPlace == SECRET_PASSAGE) + } else if (_coreVar._currPlace == SECRET_PASSAGE) nextPlace = t23coul(); - else if (g_s._currPlace == INSIDE_WELL) + else if (_coreVar._currPlace == INSIDE_WELL) nextPlace = WELL; if (g_crep != 997) - g_s._currPlace = nextPlace; + _coreVar._currPlace = nextPlace; g_caff = nextPlace; if (g_crep == 0) @@ -1297,18 +1297,18 @@ void MortevielleEngine::fctWait() { int answer; do { ++g_jh; - tinke(); + prepareRoom(); if (!_blo) - t11(g_s._currPlace); + t11(_coreVar._currPlace); if ((_currBitIndex != 0) && (g_mpers == 0)) { g_crep = 998; - if ((g_s._currPlace == ATTIC) || (g_s._currPlace == CELLAR)) + if ((_coreVar._currPlace == ATTIC) || (_coreVar._currPlace == CELLAR)) cavegre(); - if ((g_s._currPlace > OWN_ROOM) && (g_s._currPlace < DINING_ROOM)) + if ((_coreVar._currPlace > OWN_ROOM) && (_coreVar._currPlace < DINING_ROOM)) _anyone = true; g_mpers = _currBitIndex; if (!_anyone) - tinke(); + prepareRoom(); return; } repon(2, 102); @@ -1316,7 +1316,7 @@ void MortevielleEngine::fctWait() { } while (answer != 2); g_crep = 998; if (!_anyone) - tinke(); + prepareRoom(); } /** @@ -1383,7 +1383,7 @@ void MortevielleEngine::fctDiscuss() { do { ++icm; _screenSurface.putxy(co, lig); - if (g_s._teauto[icm] == '*') { + if (_coreVar._teauto[icm] == '*') { if (te[icm]) writetp(lib[icm], 1); else @@ -1443,7 +1443,7 @@ void MortevielleEngine::fctDiscuss() { writetp(lib[choi], 1); te[choi] = ! te[choi]; } - if ((g_s._teauto[ix] == '*') || (ix == 46)) { + if ((_coreVar._teauto[ix] == '*') || (ix == 46)) { lig = ((ix - 1) % 23) << 3; if (ix > 23) co = 320; @@ -1466,7 +1466,7 @@ void MortevielleEngine::fctDiscuss() { int ix = choi - 1; if (_col) { _col = false; - g_s._currPlace = 15; + _coreVar._currPlace = 15; if (g_iouv > 0) max = 8; else @@ -1475,14 +1475,14 @@ void MortevielleEngine::fctDiscuss() { suj = 129; else { suj = 138; - g_s._faithScore += (3 * (g_s._faithScore / 10)); + _coreVar._faithScore += (3 * (_coreVar._faithScore / 10)); } } else if (g_nbrep[g_caff - 69] < g_nbrepm[g_caff - 69]) { suj = g_tabdon[arep + (ix << 3) + (g_caff - 70)]; - g_s._faithScore += g_tabdon[arcf + ix]; + _coreVar._faithScore += g_tabdon[arcf + ix]; ++g_nbrep[g_caff - 69]; } else { - g_s._faithScore += 3; + _coreVar._faithScore += 3; suj = 139; } _mouse.hideMouse(); @@ -1491,17 +1491,17 @@ void MortevielleEngine::fctDiscuss() { startDialog(suj); _mouse.showMouse(); if ((suj == 84) || (suj == 86)) { - g_s._pourc[5] = '*'; - g_s._teauto[7] = '*'; + _coreVar._pourc[5] = '*'; + _coreVar._teauto[7] = '*'; } if ((suj == 106) || (suj == 108) || (suj == 94)) { for (int indx = 29; indx <= 31; ++indx) - g_s._teauto[indx] = '*'; - g_s._pourc[7] = '*'; + _coreVar._teauto[indx] = '*'; + _coreVar._pourc[7] = '*'; } if (suj == 70) { - g_s._pourc[8] = '*'; - g_s._teauto[32] = '*'; + _coreVar._pourc[8] = '*'; + _coreVar._teauto[32] = '*'; } _mouse.hideMouse(); hirs(); @@ -1509,14 +1509,14 @@ void MortevielleEngine::fctDiscuss() { } } while ((choi != 46) && (suj != 138)); if (_col) { - g_s._faithScore += (3 * (g_s._faithScore / 10)); + _coreVar._faithScore += (3 * (_coreVar._faithScore / 10)); _mouse.hideMouse(); hirs(); premtet(); startDialog(138); _mouse.showMouse(); _col = false; - g_s._currPlace = LANDING; + _coreVar._currPlace = LANDING; } g_ctrm = 0; _mouse.hideMouse(); @@ -1524,11 +1524,11 @@ void MortevielleEngine::fctDiscuss() { drawRightFrame(); _mouse.showMouse(); showPeoplePresent(_currBitIndex); - tinke(); + prepareRoom(); drawClock(); affrep(); /* chech;*/ - _menu.setDestinationMenuText(g_s._currPlace); + _menu.setDestinationMenuText(_coreVar._currPlace); clearScreenType3(); } diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 137ff468a2..1d8a10526b 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -196,7 +196,7 @@ void Menu::displayMenu() { do { // One line after the other msk = 0x80; for (pt = 0; pt <= 7; ++pt) { - if ((g_lettres[num_letr - 1][ind_tabl] & msk) != 0) { + if ((_charArr[num_letr - 1][ind_tabl] & msk) != 0) { g_vm->_screenSurface.setPixel(Common::Point(x + 1, y + 1), 0); g_vm->_screenSurface.setPixel(Common::Point(x, y + 1), 0); g_vm->_screenSurface.setPixel(Common::Point(x, y), color); @@ -505,7 +505,7 @@ void Menu::initMenu() { if (!f.open("menu.mor")) error("Missing file - menufr.mor or menual.mor or menu.mor"); - f.read(g_lettres, 7 * 24); + f.read(_charArr, 7 * 24); f.close(); // Skipped: dialog asking to swap floppy @@ -567,7 +567,7 @@ void Menu::setSearchMenu() { * @remarks Originally called 'mfouen' */ void Menu::unsetSearchMenu() { - setDestinationMenuText(g_vm->g_s._currPlace); + setDestinationMenuText(g_vm->_coreVar._currPlace); for (int i = 1; i <= 11; ++i) enableMenuItem(_actionMenu[i]); diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index 7f224a3ee5..b600d4e3af 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -40,6 +40,8 @@ enum { class Menu { private: + byte _charArr[7][24]; + void util(Common::Point pos); void invert(int indx); void menuDown(int ii); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index e1206be2c2..ca01e01fcf 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -95,18 +95,6 @@ int animof(int ouf, int num) { return animof_result; } -/** - * Read the current system time - */ -int readclock() { - TimeDate dateTime; - g_system->getTimeAndDate(dateTime); - - int m = dateTime.tm_min * 60; - int h = dateTime.tm_hour * 3600; - return h + m + dateTime.tm_sec; -} - void modif(int &nu) { if (nu == 26) nu = 25; @@ -245,12 +233,12 @@ void repon(int f, int m) { g_vm->prepareScreenType2(); text1(8, 182, 103, m); if ((m == 68) || (m == 69)) - g_vm->g_s._teauto[40] = '*'; + g_vm->_coreVar._teauto[40] = '*'; if ((m == 104) && (g_caff == 14)) { - g_vm->g_s._teauto[36] = '*'; - if (g_vm->g_s._teauto[39] == '*') { - g_vm->g_s._pourc[3] = '*'; - g_vm->g_s._teauto[38] = '*'; + g_vm->_coreVar._teauto[36] = '*'; + if (g_vm->_coreVar._teauto[39] == '*') { + g_vm->_coreVar._pourc[3] = '*'; + g_vm->_coreVar._teauto[38] = '*'; } } break; @@ -267,9 +255,9 @@ void repon(int f, int m) { displayStr(tmpStr, 80, 40, 60, 25, i); if (m == 180) - g_vm->g_s._pourc[6] = '*'; + g_vm->_coreVar._pourc[6] = '*'; else if (m == 179) - g_vm->g_s._pourc[10] = '*'; + g_vm->_coreVar._pourc[10] = '*'; } break; default: @@ -286,57 +274,6 @@ int chlm() { return retval; } -/** - * Engine function - Draw Clock - * @remarks Originally called 'pendule' - */ -void drawClock() { - const int cv[2][12] = { - { 5, 8, 10, 8, 5, 0, -5, -8, -10, -8, -5, 0 }, - { -5, -3, 0, 3, 5, 6, 5, 3, 0, -3, -5, -6 } - }; - const int x = 580; - const int y = 123; - const int rg = 9; - int h, co; - - g_vm->_mouse.hideMouse(); - - paint_rect(570, 118, 20, 10); - paint_rect(578, 114, 6, 18); - if ((g_vm->_currGraphicalDevice == MODE_CGA) || (g_vm->_currGraphicalDevice == MODE_HERCULES)) - co = 0; - else - co = 1; - - if (g_vm->_minute == 0) - g_vm->_screenSurface.drawLine(((uint)x >> 1) * g_res, y, ((uint)x >> 1) * g_res, (y - rg), co); - else - g_vm->_screenSurface.drawLine(((uint)x >> 1) * g_res, y, ((uint)x >> 1) * g_res, (y + rg), co); - - h = g_vm->_hour; - if (h > 12) - h -= 12; - if (h == 0) - h = 12; - - g_vm->_screenSurface.drawLine(((uint)x >> 1) * g_res, y, ((uint)(x + cv[0][h - 1]) >> 1) * g_res, y + cv[1][h - 1], co); - g_vm->_mouse.showMouse(); - g_vm->_screenSurface.putxy(568, 154); - - if (g_vm->_hour > 11) - g_vm->_screenSurface.drawString("PM ", 1); - else - g_vm->_screenSurface.drawString("AM ", 1); - - g_vm->_screenSurface.putxy(550, 160); - if ((g_vm->_day >= 0) && (g_vm->_day <= 8)) { - Common::String tmp = g_vm->getEngineString(S_DAY); - tmp.insertChar((char)(g_vm->_day + 49), 0); - g_vm->_screenSurface.drawString(tmp, 1); - } -} - /************* * NIVEAU 11 * *************/ @@ -426,7 +363,7 @@ int t11(int roomId) { int retVal = 0; int p, rand; - ecfren(p, rand, g_vm->g_s._faithScore, roomId); + ecfren(p, rand, g_vm->_coreVar._faithScore, roomId); g_vm->_place = roomId; if ((roomId > OWN_ROOM) && (roomId < DINING_ROOM)) { if (p != -500) { @@ -458,7 +395,7 @@ int t11(int roomId) { p = g_vm->getPresenceStatsLanding(); else if (roomId == CHAPEL) p = g_vm->getPresenceStatsChapel(h); - p += g_vm->g_s._faithScore; + p += g_vm->_coreVar._faithScore; rand = g_vm->getRandomNumber(1, 100); if (rand > p) { g_vm->displayAloneText(); @@ -483,9 +420,9 @@ int t11(int roomId) { } void cavegre() { - g_vm->g_s._faithScore += 2; - if (g_vm->g_s._faithScore > 69) - g_vm->g_s._faithScore += (g_vm->g_s._faithScore / 10); + g_vm->_coreVar._faithScore += 2; + if (g_vm->_coreVar._faithScore > 69) + g_vm->_coreVar._faithScore += (g_vm->_coreVar._faithScore / 10); g_vm->clearScreenType3(); g_vm->prepareScreenType2(); ecr3(g_vm->getEngineString(S_SOMEONE_ENTERS)); @@ -551,16 +488,16 @@ void dessin(int ad) { } if (g_caff == 13) { - if (g_vm->g_s._atticBallHoleObjectId == 141) + if (g_vm->_coreVar._atticBallHoleObjectId == 141) aniof(1, 7); - if (g_vm->g_s._atticRodHoleObjectId == 159) + if (g_vm->_coreVar._atticRodHoleObjectId == 159) aniof(1, 6); - } else if ((g_caff == 14) && (g_vm->g_s._cellarObjectId == 151)) + } else if ((g_caff == 14) && (g_vm->_coreVar._cellarObjectId == 151)) aniof(1, 2); - else if ((g_caff == 17) && (g_vm->g_s._secretPassageObjectId == 143)) + else if ((g_caff == 17) && (g_vm->_coreVar._secretPassageObjectId == 143)) aniof(1, 1); - else if ((g_caff == 24) && (g_vm->g_s._wellObjectId != 0)) + else if ((g_caff == 24) && (g_vm->_coreVar._wellObjectId != 0)) aniof(1, 1); } @@ -570,157 +507,6 @@ void dessin(int ad) { } } -void tinke() { - Common::String d1 = g_vm->getEngineString(S_SHOULD_HAVE_NOTICED); - Common::String d2 = g_vm->getEngineString(S_NUMBER_OF_HINTS); - const char d3 = '['; - const char d4 = ']'; - const char d5 = '1'; - Common::String d6 = g_vm->getEngineString(S_OK); - int cf, day, hour, minute; - Common::String stpo; - - g_vm->_anyone = false; - g_vm->updateHour(day, hour, minute); - if (day != g_vm->_day) { - g_vm->_day = day; - int i = 0; - do { - ++i; - if (g_nbrepm[i] != 0) - --g_nbrepm[i]; - g_nbrep[i] = 0; - } while (i != 8); - } - if ((hour > g_vm->_hour) || ((hour == 0) && (g_vm->_hour == 23))) { - g_vm->_hour = hour; - g_vm->_minute = 0; - drawClock(); - cf = 0; - for (int i = 1; i <= 10; ++i) { - if (g_vm->g_s._pourc[i] == '*') - ++cf; - } - - if (cf == 10) - stpo = "10"; - else - stpo = chr(cf + 48); - - g_vm->_hintPctMessage = Common::String(d3); - g_vm->_hintPctMessage += d5; - g_vm->_hintPctMessage += d4; - g_vm->_hintPctMessage += d3; - g_vm->_hintPctMessage += d1; - g_vm->_hintPctMessage += stpo; - g_vm->_hintPctMessage += '0'; - g_vm->_hintPctMessage += d2; - g_vm->_hintPctMessage += d4; - g_vm->_hintPctMessage += d3; - g_vm->_hintPctMessage += d6; - g_vm->_hintPctMessage += d4; - } - if (minute > g_vm->_minute) { - g_vm->_minute = 30; - drawClock(); - } - if (g_vm->_mouse._pos.y < 12) - return; - - if (!g_vm->_blo) { - if ((hour == 12) || ((hour > 18) && (hour < 21)) || ((hour >= 0) && (hour < 7))) - g_t = kTime2; - else - g_t = kTime1; - cf = g_vm->g_s._faithScore; - if ((cf > 33) && (cf < 66)) - g_t -= (g_t / 3); - - if (cf > 65) - g_t -= ((g_t / 3) * 2); - - int nh = readclock(); - if ((nh - g_mh) > g_t) { - bool activeMenu = g_vm->_menu._menuActive; - g_vm->_menu.eraseMenu(); - g_jh += ((nh - g_mh) / g_t); - g_mh = nh; - switch (g_vm->_place) { - case GREEN_ROOM: - case DARKBLUE_ROOM: - g_vm->setRandomPresenceGreenRoom(cf); - break; - case PURPLE_ROOM: - g_vm->setRandomPresencePurpleRoom(cf); - break; - case BLUE_ROOM: - g_vm->setRandomPresenceBlueRoom(cf); - break; - case RED_ROOM: - case GREEN_ROOM2: - g_vm->setRandomPresenceRedRoom(cf); - break; - case ROOM9: - g_vm->setRandomPresenceRoom9(cf); - break; - case DINING_ROOM: - g_vm->setRandomPresenceDiningRoom(cf); - break; - case BUREAU: - g_vm->setRandomPresenceBureau(cf); - break; - case KITCHEN: - g_vm->setRandomPresenceKitchen(cf); - break; - case ATTIC: - case CELLAR: - g_vm->setRandomPresenceAttic(cf); - break; - case LANDING: - case ROOM26: - g_vm->setRandomPresenceLanding(cf); - break; - case CHAPEL: - g_vm->setRandomPresenceChapel(cf); - break; - } - if ((g_mpers != 0) && (g_vm->_currBitIndex != 10)) - g_mpers = g_vm->_currBitIndex; - - if ((g_mpers == 0) && (g_vm->_currBitIndex > 0)) { - if ((g_vm->g_s._currPlace == ATTIC) || (g_vm->g_s._currPlace == CELLAR)) { - cavegre(); - } else if (g_vm->_currBitIndex == 10) { - g_vm->_currBitIndex = 0; - if (!g_vm->_brt) { - g_vm->_brt = true; - g_hdb = readclock(); - if (g_vm->getRandomNumber(1, 5) < 5) { - g_vm->clearScreenType3(); - g_vm->prepareScreenType2(); - ecr3(g_vm->getEngineString(S_HEAR_NOISE)); - int rand = (g_vm->getRandomNumber(0, 4)) - 2; - g_vm->_speechManager.startSpeech(1, rand, 1); - g_vm->clearScreenType3(); - } - } - } - } - - if (activeMenu) - g_vm->_menu.drawMenu(); - } - } - g_hfb = readclock(); - if ((g_vm->_brt) && ((g_hfb - g_hdb) > 17)) { - g_vm->getPresenceBitIndex(g_vm->_place); - g_vm->_brt = false; - g_hdb = 0; - if ((g_vm->g_s._currPlace > OWN_ROOM) && (g_vm->g_s._currPlace < DINING_ROOM)) - g_vm->_anyone = true; - } -} - void fenat(char ans) { int coul; @@ -763,7 +549,7 @@ void tkey1(bool d) { // Event loop do { if (d) - tinke(); + g_vm->prepareRoom(); quest = g_vm->keyPressed(); g_vm->_mouse.getMousePosition(x, y, c); CHECK_QUIT; @@ -787,17 +573,17 @@ void tlu(int af, int ob) { } void affrep() { - g_caff = g_vm->g_s._currPlace; - g_crep = g_vm->g_s._currPlace; + g_caff = g_vm->_coreVar._currPlace; + g_crep = g_vm->_coreVar._currPlace; } void tsort() { - if ((g_iouv > 0) && (g_vm->g_s._currPlace != 0)) { - if (g_vm->g_s._faithScore < 50) - g_vm->g_s._faithScore += 2; + if ((g_iouv > 0) && (g_vm->_coreVar._currPlace != 0)) { + if (g_vm->_coreVar._faithScore < 50) + g_vm->_coreVar._faithScore += 2; else - g_vm->g_s._faithScore += (g_vm->g_s._faithScore / 10); + g_vm->_coreVar._faithScore += (g_vm->_coreVar._faithScore / 10); } for (int cx = 1; cx <= 7; ++cx) @@ -805,7 +591,7 @@ void tsort() { g_ment = 0; g_iouv = 0; g_mchai = 0; - debloc(g_vm->g_s._currPlace); + debloc(g_vm->_coreVar._currPlace); } void st4(int ob) { @@ -844,9 +630,9 @@ void modinv() { int cy = 0; for (int i = 1; i <= 6; ++i) { - if (g_vm->g_s._sjer[i] != chr(0)) { + if (g_vm->_coreVar._sjer[i] != chr(0)) { ++cy; - r = (ord(g_vm->g_s._sjer[i]) + 400); + r = (ord(g_vm->_coreVar._sjer[i]) + 400); nomp = g_vm->getString(r - 501 + kInventoryStringIndex); g_vm->_menu.setText(g_vm->_menu._inventoryMenu[cy], nomp); g_vm->_menu.enableMenuItem(g_vm->_menu._inventoryMenu[i]); @@ -879,7 +665,7 @@ void ajchai() { } while ((cx <= 9) && (g_tabdon[cy + cx] != 0)); if (g_tabdon[cy + cx] == 0) - g_tabdon[cy + cx] = g_vm->g_s._selectedObjectId; + g_tabdon[cy + cx] = g_vm->_coreVar._selectedObjectId; else g_crep = 192; } @@ -888,10 +674,10 @@ void ajjer(int ob) { int cx = 0; do { ++cx; - } while ((cx <= 5) && (ord(g_vm->g_s._sjer[cx]) != 0)); + } while ((cx <= 5) && (ord(g_vm->_coreVar._sjer[cx]) != 0)); - if (ord(g_vm->g_s._sjer[cx]) == 0) { - g_vm->g_s._sjer[(cx)] = chr(ob); + if (ord(g_vm->_coreVar._sjer[cx]) == 0) { + g_vm->_coreVar._sjer[(cx)] = chr(ob); modinv(); } else g_crep = 139; @@ -920,11 +706,11 @@ L1: g_vm->_speechManager.startSpeech(4, 4, 1); if (g_iouv == 0) - g_vm->g_s._faithScore += 2; - else if (g_vm->g_s._faithScore < 50) - g_vm->g_s._faithScore += 4; + g_vm->_coreVar._faithScore += 2; + else if (g_vm->_coreVar._faithScore < 50) + g_vm->_coreVar._faithScore += 4; else - g_vm->g_s._faithScore += 3 * (g_vm->g_s._faithScore / 10); + g_vm->_coreVar._faithScore += 3 * (g_vm->_coreVar._faithScore / 10); tsort(); g_vm->_menu.setDestinationMenuText(LANDING); int cx = g_vm->convertBitIndexToCharacterIndex(g_vm->_currBitIndex); @@ -971,7 +757,7 @@ void tsuiv() { g_caff = tbcl; g_crep = g_caff + 400; if (g_vm->_currBitIndex != 0) - g_vm->g_s._faithScore += 2; + g_vm->_coreVar._faithScore += 2; } else { affrep(); g_vm->endSearch(); @@ -998,7 +784,7 @@ void tfleche() { if (g_vm->getMouseClick()) inRect = (g_vm->_mouse._pos.x < 256 * g_res) && (g_vm->_mouse._pos.y < 176) && (g_vm->_mouse._pos.y > 12); - tinke(); + g_vm->prepareRoom(); } while (!(qust || inRect || g_vm->_anyone)); if (qust && (touch == '\103')) @@ -1112,20 +898,20 @@ void treg(int ob) { void avpoing(int &ob) { g_crep = 999; - if (g_vm->g_s._selectedObjectId != 0) - ajjer(g_vm->g_s._selectedObjectId); + if (g_vm->_coreVar._selectedObjectId != 0) + ajjer(g_vm->_coreVar._selectedObjectId); if (g_crep != 139) { modobj(ob + 400); - g_vm->g_s._selectedObjectId = ob; + g_vm->_coreVar._selectedObjectId = ob; ob = 0; } } void rechai(int &ch) { - int tmpPlace = g_vm->g_s._currPlace; + int tmpPlace = g_vm->_coreVar._currPlace; - if (g_vm->g_s._currPlace == CRYPT) + if (g_vm->_coreVar._currPlace == CRYPT) tmpPlace = CELLAR; ch = g_tabdon[achai + (tmpPlace * 7) + g_num - 1]; } @@ -1140,7 +926,7 @@ int t23coul() { } void maivid() { - g_vm->g_s._selectedObjectId = 0; + g_vm->_coreVar._selectedObjectId = 0; modobj(500); } diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index de1b0b4a7d..03a4c0f757 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -48,7 +48,6 @@ extern void charecr(int y, int dy); extern void adzon(); extern int animof(int ouf, int num); /* Niveau 14 suite */ -extern int readclock(); extern void modif(int &nu); /* NIVEAU 13 */ extern void text1(int x, int y, int nb, int m); @@ -77,8 +76,6 @@ extern void writetp(Common::String s, int t); extern void aniof(int ouf, int num); /* NIVEAU 9 */ extern void dessin(int ad); - -extern void tinke(); extern void fenat(char ans); /* NIVEAU 8 */ extern void afdes(); @@ -89,7 +86,6 @@ extern void affrep(); /* NIVEAU 6 */ extern void tsort(); extern void st4(int ob); -extern void displayDiningRoom(); extern void modinv(); extern void mennor(); extern void premtet(); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 866c8e42c9..907e305be8 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -625,10 +625,10 @@ void MortevielleEngine::handleAction() { _inMainGameLoop = true; do { _menu.mdn(); - tinke(); + prepareRoom(); _mouse.moveMouse(funct, inkey); CHECK_QUIT; - temps = temps + 1; + ++temps; } while (!((_menu._menuSelected) || (temps > lim) || (funct) || (_anyone))); _inMainGameLoop = false; @@ -682,7 +682,7 @@ void MortevielleEngine::handleAction() { oo = true; if ((g_msg[4] == OPCODE_LIFT) || (_obpart)) { endSearch(); - g_caff = g_s._currPlace; + g_caff = _coreVar._currPlace; g_crep = 998; } else tsuiv(); @@ -1432,7 +1432,7 @@ int MortevielleEngine::getPresenceBitIndex(int roomId) { void MortevielleEngine::initGame() { _place = MANOR_FRONT; g_jh = 0; - if (!g_s._alreadyEnteredManor) + if (!_coreVar._alreadyEnteredManor) _blo = true; g_t = kTime1; g_mh = readclock(); @@ -1625,21 +1625,21 @@ void MortevielleEngine::startMusicOrSpeech(int so) { if (so == 0) { /* musik(0) */ ; - } else if ((g_prebru == 0) && (!g_s._alreadyEnteredManor)) { + } else if ((g_prebru == 0) && (!_coreVar._alreadyEnteredManor)) { // Type 1: Speech _speechManager.startSpeech(10, 1, 1); ++g_prebru; } else { - if (((g_s._currPlace == MOUNTAIN) || (g_s._currPlace == MANOR_FRONT) || (g_s._currPlace == MANOR_BACK)) && (getRandomNumber(1, 3) == 2)) + if (((_coreVar._currPlace == MOUNTAIN) || (_coreVar._currPlace == MANOR_FRONT) || (_coreVar._currPlace == MANOR_BACK)) && (getRandomNumber(1, 3) == 2)) // Type 1: Speech _speechManager.startSpeech(9, getRandomNumber(2, 4), 1); - else if ((g_s._currPlace == CHAPEL) && (getRandomNumber(1, 2) == 1)) + else if ((_coreVar._currPlace == CHAPEL) && (getRandomNumber(1, 2) == 1)) // Type 1: Speech _speechManager.startSpeech(8, 1, 1); - else if ((g_s._currPlace == WELL) && (getRandomNumber(1, 2) == 2)) + else if ((_coreVar._currPlace == WELL) && (getRandomNumber(1, 2) == 2)) // Type 1: Speech _speechManager.startSpeech(12, 1, 1); - else if (g_s._currPlace == INSIDE_WELL) + else if (_coreVar._currPlace == INSIDE_WELL) // Type 1: Speech _speechManager.startSpeech(13, 1, 1); else @@ -1679,9 +1679,9 @@ void MortevielleEngine::loseGame() { bool MortevielleEngine::checkInventory(int objectId) { bool retVal = false; for (int i = 1; i <= 6; ++i) - retVal = (retVal || (ord(g_s._sjer[i]) == objectId)); + retVal = (retVal || (ord(_coreVar._sjer[i]) == objectId)); - if (g_s._selectedObjectId == objectId) + if (_coreVar._selectedObjectId == objectId) retVal = true; return retVal; @@ -1692,7 +1692,7 @@ bool MortevielleEngine::checkInventory(int objectId) { * @remarks Originally called 'st1sama' */ void MortevielleEngine::displayDiningRoom() { - g_s._currPlace = DINING_ROOM; + _coreVar._currPlace = DINING_ROOM; affrep(); } @@ -1741,13 +1741,13 @@ void MortevielleEngine::gotoDiningRoom() { int day, hour, minute; updateHour(day, hour, minute); - if ((hour < 5) && (g_s._currPlace > ROOM18)) { + if ((hour < 5) && (_coreVar._currPlace > ROOM18)) { if (!checkInventory(137)) { //You don't have the keys, and it's late g_crep = 1511; loseGame(); } else displayDiningRoom(); - } else if (!g_s._alreadyEnteredManor) { //Is it your first time? + } else if (!_coreVar._alreadyEnteredManor) { //Is it your first time? _currBitIndex = 255; // Everybody is present showPeoplePresent(_currBitIndex); g_caff = 77; @@ -1763,14 +1763,14 @@ void MortevielleEngine::gotoDiningRoom() { drawRightFrame(); drawClock(); _mouse.showMouse(); - g_s._currPlace = OWN_ROOM; + _coreVar._currPlace = OWN_ROOM; affrep(); resetPresenceInRooms(DINING_ROOM); if (!_blo) minute = t11(OWN_ROOM); _currBitIndex = 0; g_mpers = 0; - g_s._alreadyEnteredManor = true; + _coreVar._alreadyEnteredManor = true; } else displayDiningRoom(); } @@ -1786,7 +1786,7 @@ void MortevielleEngine::checkManorDistance() { loseGame(); } else { _okdes = true; - g_s._currPlace = MOUNTAIN; + _coreVar._currPlace = MOUNTAIN; affrep(); } } @@ -1797,7 +1797,7 @@ void MortevielleEngine::checkManorDistance() { */ void MortevielleEngine::gotoManorFront() { _manorDistance = 0; - g_s._currPlace = MANOR_FRONT; + _coreVar._currPlace = MANOR_FRONT; affrep(); } @@ -1806,7 +1806,7 @@ void MortevielleEngine::gotoManorFront() { * @remarks Originally called 't1derr' */ void MortevielleEngine::gotoManorBack() { - g_s._currPlace = MANOR_BACK; + _coreVar._currPlace = MANOR_BACK; affrep(); } @@ -1830,7 +1830,7 @@ void MortevielleEngine::changeGraphicalDevice(int newDevice) { _mouse.initMouse(); _mouse.showMouse(); drawRightFrame(); - tinke(); + prepareRoom(); drawClock(); if (_currBitIndex != 0) showPeoplePresent(_currBitIndex); @@ -1884,16 +1884,16 @@ void MortevielleEngine::gameLoaded() { _heroSearching = false; displayAloneText(); - tinke(); + prepareRoom(); drawClock(); afdes(); repon(2, g_crep); clearScreenType3(); _endGame = false; - _menu.setDestinationMenuText(g_s._currPlace); + _menu.setDestinationMenuText(_coreVar._currPlace); modinv(); - if (g_s._selectedObjectId != 0) - modobj(g_s._selectedObjectId + 400); + if (_coreVar._selectedObjectId != 0) + modobj(_coreVar._selectedObjectId + 400); _mouse.showMouse(); } @@ -1984,16 +1984,16 @@ void MortevielleEngine::handleOpcode() { } int hour, day, minute; updateHour(day, hour, minute); - if ((((hour == 12) || (hour == 13) || (hour == 19)) && (g_s._currPlace != 10)) || - ((hour > 0) && (hour < 6) && (g_s._currPlace != 0))) - ++g_s._faithScore; - if (((g_s._currPlace < CRYPT) || (g_s._currPlace > MOUNTAIN)) && (g_s._currPlace != INSIDE_WELL) - && (g_s._currPlace != OWN_ROOM) && (g_s._selectedObjectId != 152) && (!_loseGame)) { - if ((g_s._faithScore > 99) && (hour > 8) && (hour < 16)) { + if ((((hour == 12) || (hour == 13) || (hour == 19)) && (_coreVar._currPlace != 10)) || + ((hour > 0) && (hour < 6) && (_coreVar._currPlace != 0))) + ++_coreVar._faithScore; + if (((_coreVar._currPlace < CRYPT) || (_coreVar._currPlace > MOUNTAIN)) && (_coreVar._currPlace != INSIDE_WELL) + && (_coreVar._currPlace != OWN_ROOM) && (_coreVar._selectedObjectId != 152) && (!_loseGame)) { + if ((_coreVar._faithScore > 99) && (hour > 8) && (hour < 16)) { g_crep = 1501; loseGame(); } - if ((g_s._faithScore > 99) && (hour > 0) && (hour < 9)) { + if ((_coreVar._faithScore > 99) && (hour > 0) && (hour < 9)) { g_crep = 1508; loseGame(); } @@ -2017,7 +2017,7 @@ void MortevielleEngine::hourToChar() { minute = 1; hour += day * 24; minute += hour * 2; - g_s._fullHour = chr(minute); + _coreVar._fullHour = chr(minute); } /** @@ -2025,7 +2025,7 @@ void MortevielleEngine::hourToChar() { * @remarks Originally called 'theure' */ void MortevielleEngine::charToHour() { - int fullHour = ord(g_s._fullHour); + int fullHour = ord(_coreVar._fullHour); int tmpHour = fullHour % 48; _currDay = fullHour / 48; _currHalfHour = tmpHour % 2; @@ -2092,11 +2092,11 @@ void MortevielleEngine::clearScreenType10() { cod = 544; } _screenSurface.fillRect(15, Common::Rect(cod, 93, co, 98)); - if (g_s._faithScore < 33) + if (_coreVar._faithScore < 33) st = getEngineString(S_COOL); - else if (g_s._faithScore < 66) + else if (_coreVar._faithScore < 66) st = getEngineString(S_LOURDE); - else if (g_s._faithScore > 65) + else if (_coreVar._faithScore > 65) st = getEngineString(S_MALSAINE); co = 580 - (_screenSurface.getStringWidth(st) / 2); @@ -2252,40 +2252,40 @@ void MortevielleEngine::copcha() { void MortevielleEngine::resetVariables() { copcha(); - g_s._alreadyEnteredManor = false; - g_s._selectedObjectId = 0; - g_s._cellarObjectId = 0; - g_s._atticBallHoleObjectId = 0; - g_s._atticRodHoleObjectId = 0; - g_s._wellObjectId = 0; - g_s._secretPassageObjectId = 0; - g_s._purpleRoomObjectId = 136; - g_s._cryptObjectId = 141; - g_s._faithScore = getRandomNumber(4, 10); - g_s._currPlace = MANOR_FRONT; + _coreVar._alreadyEnteredManor = false; + _coreVar._selectedObjectId = 0; + _coreVar._cellarObjectId = 0; + _coreVar._atticBallHoleObjectId = 0; + _coreVar._atticRodHoleObjectId = 0; + _coreVar._wellObjectId = 0; + _coreVar._secretPassageObjectId = 0; + _coreVar._purpleRoomObjectId = 136; + _coreVar._cryptObjectId = 141; + _coreVar._faithScore = getRandomNumber(4, 10); + _coreVar._currPlace = MANOR_FRONT; for (int i = 2; i <= 6; ++i) - g_s._sjer[i] = chr(0); + _coreVar._sjer[i] = chr(0); - g_s._sjer[1] = chr(113); - g_s._fullHour = chr(20); + _coreVar._sjer[1] = chr(113); + _coreVar._fullHour = chr(20); for (int i = 1; i <= 10; ++i) - g_s._pourc[i] = ' '; + _coreVar._pourc[i] = ' '; for (int i = 1; i <= 6; ++i) - g_s._teauto[i] = '*'; + _coreVar._teauto[i] = '*'; for (int i = 7; i <= 9; ++i) - g_s._teauto[i] = ' '; + _coreVar._teauto[i] = ' '; for (int i = 10; i <= 28; ++i) - g_s._teauto[i] = '*'; + _coreVar._teauto[i] = '*'; for (int i = 29; i <= 42; ++i) - g_s._teauto[i] = ' '; + _coreVar._teauto[i] = ' '; - g_s._teauto[33] = '*'; + _coreVar._teauto[33] = '*'; for (int i = 1; i <= 8; ++i) g_nbrep[i] = 0; @@ -2519,7 +2519,7 @@ void MortevielleEngine::showTitleScreen() { if (_newGraphicalDevice != _currGraphicalDevice) _currGraphicalDevice = _newGraphicalDevice; hirs(); - g_vm->draw(g_ades, 0, 0); + draw(g_ades, 0, 0); Common::String cpr = "COPYRIGHT 1989 : LANKHOR"; _screenSurface.putxy(104 + 72 * g_res, 185); @@ -2531,10 +2531,10 @@ void MortevielleEngine::showTitleScreen() { * @remarks Originally called 'dessine' */ void MortevielleEngine::draw(int ad, int x, int y) { - g_vm->_mouse.hideMouse(); - g_vm->setPal(g_numpal); + _mouse.hideMouse(); + setPal(g_numpal); pictout(ad, 0, x, y); - g_vm->_mouse.showMouse(); + _mouse.showMouse(); } /** @@ -2542,13 +2542,231 @@ void MortevielleEngine::draw(int ad, int x, int y) { * @remarks Originally called 'dessine_rouleau' */ void MortevielleEngine::drawRightFrame() { - g_vm->setPal(89); - if (g_vm->_currGraphicalDevice == MODE_HERCULES) { + setPal(89); + if (_currGraphicalDevice == MODE_HERCULES) { g_mem[0x7000 * 16 + 14] = 15; } - g_vm->_mouse.hideMouse(); + _mouse.hideMouse(); pictout(0x73a2, 0, 0, 0); - g_vm->_mouse.showMouse(); + _mouse.showMouse(); +} + +/** + * Read the current system time + */ +int MortevielleEngine::readclock() { + TimeDate dateTime; + g_system->getTimeAndDate(dateTime); + + int m = dateTime.tm_min * 60; + int h = dateTime.tm_hour * 3600; + return h + m + dateTime.tm_sec; +} + +/** + * Engine function - Prepare room and hint string + * @remarks Originally called 'tinke' + */ +void MortevielleEngine::prepareRoom() { + Common::String d1 = getEngineString(S_SHOULD_HAVE_NOTICED); + Common::String d2 = getEngineString(S_NUMBER_OF_HINTS); + const char d3 = '['; + const char d4 = ']'; + const char d5 = '1'; + Common::String d6 = getEngineString(S_OK); + int cf, day, hour, minute; + Common::String stpo; + + _anyone = false; + updateHour(day, hour, minute); + if (day != _day) { + _day = day; + int i = 0; + do { + ++i; + if (g_nbrepm[i] != 0) + --g_nbrepm[i]; + g_nbrep[i] = 0; + } while (i != 8); + } + if ((hour > _hour) || ((hour == 0) && (_hour == 23))) { + _hour = hour; + _minute = 0; + drawClock(); + cf = 0; + for (int i = 1; i <= 10; ++i) { + if (_coreVar._pourc[i] == '*') + ++cf; + } + + if (cf == 10) + stpo = "10"; + else + stpo = chr(cf + 48); + + _hintPctMessage = Common::String(d3); + _hintPctMessage += d5; + _hintPctMessage += d4; + _hintPctMessage += d3; + _hintPctMessage += d1; + _hintPctMessage += stpo; + _hintPctMessage += '0'; + _hintPctMessage += d2; + _hintPctMessage += d4; + _hintPctMessage += d3; + _hintPctMessage += d6; + _hintPctMessage += d4; + } + if (minute > _minute) { + _minute = 30; + drawClock(); + } + if (_mouse._pos.y < 12) + return; + + if (!_blo) { + if ((hour == 12) || ((hour > 18) && (hour < 21)) || ((hour >= 0) && (hour < 7))) + g_t = kTime2; + else + g_t = kTime1; + cf = _coreVar._faithScore; + if ((cf > 33) && (cf < 66)) + g_t -= (g_t / 3); + + if (cf > 65) + g_t -= ((g_t / 3) * 2); + + int nh = readclock(); + if ((nh - g_mh) > g_t) { + bool activeMenu = _menu._menuActive; + _menu.eraseMenu(); + g_jh += ((nh - g_mh) / g_t); + g_mh = nh; + switch (_place) { + case GREEN_ROOM: + case DARKBLUE_ROOM: + setRandomPresenceGreenRoom(cf); + break; + case PURPLE_ROOM: + setRandomPresencePurpleRoom(cf); + break; + case BLUE_ROOM: + setRandomPresenceBlueRoom(cf); + break; + case RED_ROOM: + case GREEN_ROOM2: + setRandomPresenceRedRoom(cf); + break; + case ROOM9: + setRandomPresenceRoom9(cf); + break; + case DINING_ROOM: + setRandomPresenceDiningRoom(cf); + break; + case BUREAU: + setRandomPresenceBureau(cf); + break; + case KITCHEN: + setRandomPresenceKitchen(cf); + break; + case ATTIC: + case CELLAR: + setRandomPresenceAttic(cf); + break; + case LANDING: + case ROOM26: + setRandomPresenceLanding(cf); + break; + case CHAPEL: + setRandomPresenceChapel(cf); + break; + } + if ((g_mpers != 0) && (_currBitIndex != 10)) + g_mpers = _currBitIndex; + + if ((g_mpers == 0) && (_currBitIndex > 0)) { + if ((_coreVar._currPlace == ATTIC) || (_coreVar._currPlace == CELLAR)) { + cavegre(); + } else if (_currBitIndex == 10) { + _currBitIndex = 0; + if (!_brt) { + _brt = true; + g_hdb = readclock(); + if (getRandomNumber(1, 5) < 5) { + clearScreenType3(); + prepareScreenType2(); + ecr3(getEngineString(S_HEAR_NOISE)); + int rand = (getRandomNumber(0, 4)) - 2; + _speechManager.startSpeech(1, rand, 1); + clearScreenType3(); + } + } + } + } + + if (activeMenu) + _menu.drawMenu(); + } + } + g_hfb = readclock(); + if ((_brt) && ((g_hfb - g_hdb) > 17)) { + getPresenceBitIndex(_place); + _brt = false; + g_hdb = 0; + if ((_coreVar._currPlace > OWN_ROOM) && (_coreVar._currPlace < DINING_ROOM)) + _anyone = true; + } +} + +/** + * Engine function - Draw Clock + * @remarks Originally called 'pendule' + */ +void MortevielleEngine::drawClock() { + const int cv[2][12] = { + { 5, 8, 10, 8, 5, 0, -5, -8, -10, -8, -5, 0 }, + { -5, -3, 0, 3, 5, 6, 5, 3, 0, -3, -5, -6 } + }; + const int x = 580; + const int y = 123; + const int rg = 9; + int h, co; + + _mouse.hideMouse(); + + paint_rect(570, 118, 20, 10); + paint_rect(578, 114, 6, 18); + if ((_currGraphicalDevice == MODE_CGA) || (_currGraphicalDevice == MODE_HERCULES)) + co = 0; + else + co = 1; + + if (_minute == 0) + _screenSurface.drawLine(((uint)x >> 1) * g_res, y, ((uint)x >> 1) * g_res, (y - rg), co); + else + _screenSurface.drawLine(((uint)x >> 1) * g_res, y, ((uint)x >> 1) * g_res, (y + rg), co); + + h = _hour; + if (h > 12) + h -= 12; + if (h == 0) + h = 12; + + _screenSurface.drawLine(((uint)x >> 1) * g_res, y, ((uint)(x + cv[0][h - 1]) >> 1) * g_res, y + cv[1][h - 1], co); + _mouse.showMouse(); + _screenSurface.putxy(568, 154); + + if (_hour > 11) + _screenSurface.drawString("PM ", 1); + else + _screenSurface.drawString("AM ", 1); + + _screenSurface.putxy(550, 160); + if ((_day >= 0) && (_day <= 8)) { + Common::String tmp = getEngineString(S_DAY); + tmp.insertChar((char)(_day + 49), 0); + _screenSurface.drawString(tmp, 1); + } } } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index b17d729296..c0230cf5cc 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -100,6 +100,29 @@ struct t_pcga { nhom _a[16]; }; +struct Pattern { + byte _tay, _tax; + byte _des[kMaxPatt + 1][kMaxPatt + 1]; +}; + +struct SaveStruct { + int _faithScore; + byte _pourc[11]; + byte _teauto[43]; + byte _sjer[31]; + int _currPlace; + int _atticBallHoleObjectId; + int _atticRodHoleObjectId; + int _cellarObjectId; + int _secretPassageObjectId; + int _wellObjectId; + int _selectedObjectId; + int _purpleRoomObjectId; + int _cryptObjectId; + bool _alreadyEnteredManor; + byte _fullHour; +}; + class MortevielleEngine : public Engine { private: const ADGameDescription *_gameDescription; @@ -133,6 +156,7 @@ private: void loadCFIEC(); void loadCFIPH(); void showTitleScreen(); + int readclock(); public: Common::String _hintPctMessage; @@ -183,7 +207,7 @@ public: int _c_zzz; int ptr_word; byte _v_lieu[7][25]; - SaveStruct g_s, g_s1; + SaveStruct _coreVar, _saveStruct; byte g_is; ScreenSurface _screenSurface; @@ -334,6 +358,8 @@ public: void music(); void draw(int ad, int x, int y); void drawRightFrame(); + void prepareRoom(); + void drawClock(); }; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 6a8aaff048..22385ed0fe 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -196,37 +196,37 @@ void taffich() { switch (a) { case 16: - g_vm->g_s._pourc[9] = '*'; - g_vm->g_s._teauto[42] = '*'; + g_vm->_coreVar._pourc[9] = '*'; + g_vm->_coreVar._teauto[42] = '*'; break; case 20: - g_vm->g_s._teauto[39] = '*'; - if (g_vm->g_s._teauto[36] == '*') { - g_vm->g_s._pourc[3] = '*'; - g_vm->g_s._teauto[38] = '*'; + g_vm->_coreVar._teauto[39] = '*'; + if (g_vm->_coreVar._teauto[36] == '*') { + g_vm->_coreVar._pourc[3] = '*'; + g_vm->_coreVar._teauto[38] = '*'; } break; case 24: - g_vm->g_s._teauto[37] = '*'; + g_vm->_coreVar._teauto[37] = '*'; break; case 30: - g_vm->g_s._teauto[9] = '*'; + g_vm->_coreVar._teauto[9] = '*'; break; case 31: - g_vm->g_s._pourc[4] = '*'; - g_vm->g_s._teauto[35] = '*'; + g_vm->_coreVar._pourc[4] = '*'; + g_vm->_coreVar._teauto[35] = '*'; break; case 118: - g_vm->g_s._teauto[41] = '*'; + g_vm->_coreVar._teauto[41] = '*'; break; case 143: - g_vm->g_s._pourc[1] = '*'; + g_vm->_coreVar._pourc[1] = '*'; break; case 150: - g_vm->g_s._teauto[34] = '*'; + g_vm->_coreVar._teauto[34] = '*'; break; case 151: - g_vm->g_s._pourc[2] = '*'; + g_vm->_coreVar._pourc[2] = '*'; break; default: break; @@ -258,7 +258,7 @@ void taffich() { if (((a > 69) && (a < 80)) || (a == 30) || (a == 31) || (a == 144) || (a == 147) || (a == 149)) m = 2030; - if (((a < 27) && (((g_maff > 69) && (!g_vm->g_s._alreadyEnteredManor)) || (g_maff > 99))) || ((g_maff > 29) && (g_maff < 33))) + if (((a < 27) && (((g_maff > 69) && (!g_vm->_coreVar._alreadyEnteredManor)) || (g_maff > 99))) || ((g_maff > 29) && (g_maff < 33))) m = 2033; g_maff = a; @@ -333,11 +333,11 @@ void taffich() { charani(filename, lgt, handle); } g_vm->_mouse.showMouse(); - if ((a < 27) && ((g_maff < 27) || (g_vm->g_s._currPlace == LANDING)) && (g_msg[4] != OPCODE_ENTER)) { + if ((a < 27) && ((g_maff < 27) || (g_vm->_coreVar._currPlace == LANDING)) && (g_msg[4] != OPCODE_ENTER)) { if ((a == 13) || (a == 14)) g_vm->displayAloneText(); else if (!g_vm->_blo) - cx = t11(g_vm->g_s._currPlace); + cx = t11(g_vm->_coreVar._currPlace); g_mpers = 0; } } diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index c99804f34c..fa26132e9b 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -46,25 +46,25 @@ Common::String SavegameManager::generateSaveName(int slotNumber) { * Handle saving or loading savegame data */ void SavegameManager::sync_save(Common::Serializer &sz) { - sz.syncAsSint16LE(g_vm->g_s1._faithScore); + sz.syncAsSint16LE(g_vm->_saveStruct._faithScore); for (int i = 0; i < 11; ++i) - sz.syncAsByte(g_vm->g_s1._pourc[i]); + sz.syncAsByte(g_vm->_saveStruct._pourc[i]); for (int i = 0; i < 43; ++i) - sz.syncAsByte(g_vm->g_s1._teauto[i]); + sz.syncAsByte(g_vm->_saveStruct._teauto[i]); for (int i = 0; i < 31; ++i) - sz.syncAsByte(g_vm->g_s1._sjer[i]); - - sz.syncAsSint16LE(g_vm->g_s1._currPlace); - sz.syncAsSint16LE(g_vm->g_s1._atticBallHoleObjectId); - sz.syncAsSint16LE(g_vm->g_s1._atticRodHoleObjectId); - sz.syncAsSint16LE(g_vm->g_s1._cellarObjectId); - sz.syncAsSint16LE(g_vm->g_s1._secretPassageObjectId); - sz.syncAsSint16LE(g_vm->g_s1._wellObjectId); - sz.syncAsSint16LE(g_vm->g_s1._selectedObjectId); - sz.syncAsSint16LE(g_vm->g_s1._purpleRoomObjectId); - sz.syncAsSint16LE(g_vm->g_s1._cryptObjectId); - sz.syncAsByte(g_vm->g_s1._alreadyEnteredManor); - sz.syncAsByte(g_vm->g_s1._fullHour); + sz.syncAsByte(g_vm->_saveStruct._sjer[i]); + + sz.syncAsSint16LE(g_vm->_saveStruct._currPlace); + sz.syncAsSint16LE(g_vm->_saveStruct._atticBallHoleObjectId); + sz.syncAsSint16LE(g_vm->_saveStruct._atticRodHoleObjectId); + sz.syncAsSint16LE(g_vm->_saveStruct._cellarObjectId); + sz.syncAsSint16LE(g_vm->_saveStruct._secretPassageObjectId); + sz.syncAsSint16LE(g_vm->_saveStruct._wellObjectId); + sz.syncAsSint16LE(g_vm->_saveStruct._selectedObjectId); + sz.syncAsSint16LE(g_vm->_saveStruct._purpleRoomObjectId); + sz.syncAsSint16LE(g_vm->_saveStruct._cryptObjectId); + sz.syncAsByte(g_vm->_saveStruct._alreadyEnteredManor); + sz.syncAsByte(g_vm->_saveStruct._fullHour); sz.syncBytes(g_bufcha, 391); } @@ -106,7 +106,7 @@ void SavegameManager::loadSavegame(int n) { Common::Serializer sz(stream, NULL); sync_save(sz); - g_vm->g_s = g_vm->g_s1; + g_vm->_coreVar = g_vm->_saveStruct; for (int i = 0; i <= 389; ++i) g_tabdon[i + kAcha] = g_bufcha[i]; @@ -142,9 +142,9 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { for (i = 0; i <= 389; ++i) g_bufcha[i] = g_tabdon[i + kAcha]; - g_vm->g_s1 = g_vm->g_s; - if (g_vm->g_s1._currPlace == 26) - g_vm->g_s1._currPlace = 15; + g_vm->_saveStruct = g_vm->_coreVar; + if (g_vm->_saveStruct._currPlace == 26) + g_vm->_saveStruct._currPlace = 15; Common::String filename = generateSaveName(n); f = g_system->getSavefileManager()->openForSaving(filename); diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h index eabffb9bba..0c12a43acb 100644 --- a/engines/mortevielle/speech.h +++ b/engines/mortevielle/speech.h @@ -56,6 +56,14 @@ const int kTempoM = 89; //const int seg_syst = 0x6fed; //const int offsetb2 = 4; +struct SpeechQueue { + int _val; + int _code; + int _acc; + int _freq; + int _rep; +}; + class SpeechManager { private: int _typlec; diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index a601c45a94..8b82aaccdf 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -106,7 +106,6 @@ int g_nbrep[9]; int g_nbrepm[9]; int g_msg[5]; byte g_touv[8]; -SaveStruct g_s, g_s1; byte g_bufcha[391]; byte g_lettres[7][24]; diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 178ca2d989..a6fccb6010 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -114,44 +114,12 @@ struct Hint { byte _point; }; -struct SaveStruct { - int _faithScore; - byte _pourc[11]; - byte _teauto[43]; - byte _sjer[31]; - int _currPlace; - int _atticBallHoleObjectId; - int _atticRodHoleObjectId; - int _cellarObjectId; - int _secretPassageObjectId; - int _wellObjectId; - int _selectedObjectId; - int _purpleRoomObjectId; - int _cryptObjectId; - bool _alreadyEnteredManor; - byte _fullHour; -}; - -struct SpeechQueue { - int _val; - int _code; - int _acc; - int _freq; - int _rep; -}; - struct Rect { int _x1, _x2, _y1, _y2; bool _enabled; }; -struct Pattern { - byte _tay, _tax; - byte _des[kMaxPatt + 1][kMaxPatt + 1]; -}; - typedef int tablint[256]; -//typedef Common::Point tabdb[17]; typedef int tfxx[108]; /*---------------------------------------------------------------------------*/ @@ -206,8 +174,6 @@ extern int g_msg[5]; extern byte g_touv[8]; extern byte g_bufcha[391]; -extern byte g_lettres[7][24]; - extern uint16 g_t_mot[kMaxTi + 1]; extern int g_tay_tchar; extern Hint g_t_rec[kMaxTd + 1]; -- cgit v1.2.3 From 09e8c82e8fc29472ec18d0a7ff2c69cc9b31975d Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 23 Mar 2012 00:35:19 +0100 Subject: MORTEVIELLE: More renaming --- engines/mortevielle/actions.cpp | 58 ++++++------- engines/mortevielle/dialogs.cpp | 2 +- engines/mortevielle/keyboard.cpp | 2 +- engines/mortevielle/menu.cpp | 8 +- engines/mortevielle/mor.cpp | 64 +++++++-------- engines/mortevielle/mortevielle.cpp | 158 ++++++++++++++++++++---------------- engines/mortevielle/mortevielle.h | 18 +++- engines/mortevielle/outtext.cpp | 16 ++-- engines/mortevielle/saveload.cpp | 10 +-- engines/mortevielle/saveload.h | 2 + engines/mortevielle/speech.cpp | 26 +++--- engines/mortevielle/speech.h | 5 ++ engines/mortevielle/var_mor.cpp | 46 +---------- engines/mortevielle/var_mor.h | 25 +----- 14 files changed, 208 insertions(+), 232 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 3d92db84be..bcf291b0f1 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -42,13 +42,13 @@ namespace Mortevielle { * @remarks Originally called 'taller' */ void MortevielleEngine::fctMove() { - if ((_coreVar._currPlace == ROOM26) && (g_msg[4] == _menu._moveMenu[6])) { + if ((_coreVar._currPlace == ROOM26) && (_msg[4] == _menu._moveMenu[6])) { _coreVar._currPlace = LANDING; g_caff = _coreVar._currPlace; afdes(); repon(2, _coreVar._currPlace); } - if ((_coreVar._currPlace == LANDING) && (g_msg[4] == _menu._moveMenu[6])) { + if ((_coreVar._currPlace == LANDING) && (_msg[4] == _menu._moveMenu[6])) { if (!_syn) ecr3(getEngineString(S_GO_TO)); tfleche(); @@ -89,7 +89,7 @@ void MortevielleEngine::fctMove() { tsort(); int menuChoice = 1; - while (_menu._moveMenu[menuChoice] != g_msg[4]) + while (_menu._moveMenu[menuChoice] != _msg[4]) ++menuChoice; if (_coreVar._currPlace == MOUNTAIN) { @@ -209,7 +209,7 @@ void MortevielleEngine::fctTake() { _obpart = false; affrep(); } else { - g_tabdon[kAcha + ((g_mchai - 1) * 10) + g_cs - 1] = 0; + _tabdon[kAcha + ((g_mchai - 1) * 10) + g_cs - 1] = 0; tsuiv(); ++g_dobj; if (g_dobj > 6) { @@ -307,7 +307,7 @@ void MortevielleEngine::fctInventoryTake() { cx = 0; do { ++cx; - } while (_menu._inventoryMenu[cx] != g_msg[4]); + } while (_menu._inventoryMenu[cx] != _msg[4]); cz = 0; cy = 0; do { @@ -352,7 +352,7 @@ void MortevielleEngine::fctLift() { tmpPlace = 14; else if (_coreVar._currPlace == MOUNTAIN) tmpPlace = 15; - g_crep = g_tabdon[asoul + (tmpPlace << 3) + (g_num - 1)]; + g_crep = _tabdon[asoul + (tmpPlace << 3) + (g_num - 1)]; if (g_crep == 255) g_crep = 997; } @@ -446,7 +446,7 @@ void MortevielleEngine::fctLook() { cx -= 4; if (_coreVar._currPlace == ROOM26) cx = 21; - g_crep = g_tabdon[arega + (cx * 7) + g_num - 1]; + g_crep = _tabdon[arega + (cx * 7) + g_num - 1]; if ((_coreVar._currPlace == ATTIC) && (g_num == 8)) g_crep = 126; if (_coreVar._currPlace == MOUNTAIN) @@ -508,8 +508,8 @@ void MortevielleEngine::fctSearch() { int cx = 0; do { ++cx; - } while ((cx <= 6) && (g_num != ord(g_touv[cx]))); - if (g_num != ord(g_touv[cx])) + } while ((cx <= 6) && (g_num != ord(_touv[cx]))); + if (g_num != ord(_touv[cx])) g_crep = 187; else { if (_currBitIndex > 0) @@ -590,7 +590,7 @@ void MortevielleEngine::fctOpen() { if (g_caff == ROOM26) { if (g_ment != 0) { - g_msg[4] = OPCODE_ENTER; + _msg[4] = OPCODE_ENTER; _syn = true; } else g_crep = 997; @@ -614,8 +614,8 @@ void MortevielleEngine::fctOpen() { int tmpPlace = 0; do { ++tmpPlace; - } while (!((tmpPlace > 6) || (ord(g_touv[tmpPlace]) == 0) || (ord(g_touv[tmpPlace]) == g_num))); - if (ord(g_touv[tmpPlace]) != g_num) { + } while (!((tmpPlace > 6) || (ord(_touv[tmpPlace]) == 0) || (ord(_touv[tmpPlace]) == g_num))); + if (ord(_touv[tmpPlace]) != g_num) { if (!( ((g_num == 3) && ((_coreVar._currPlace == OWN_ROOM) || (_coreVar._currPlace == 9) || (_coreVar._currPlace == BLUE_ROOM) || (_coreVar._currPlace == BATHROOM))) || ((g_num == 4) && ((_coreVar._currPlace == GREEN_ROOM) || (_coreVar._currPlace == PURPLE_ROOM) || (_coreVar._currPlace == RED_ROOM))) || ((_coreVar._currPlace == DARKBLUE_ROOM) && (g_num == 5)) @@ -628,13 +628,13 @@ void MortevielleEngine::fctOpen() { if (getRandomNumber(1, 4) == 3) _speechManager.startSpeech(7, 9, 1); } - g_touv[tmpPlace] = chr(g_num); + _touv[tmpPlace] = chr(g_num); aniof(1, g_num); } tmpPlace = _coreVar._currPlace; if (_coreVar._currPlace == CRYPT) tmpPlace = CELLAR; - g_crep = g_tabdon[aouvr + (tmpPlace * 7) + g_num - 1]; + g_crep = _tabdon[aouvr + (tmpPlace * 7) + g_num - 1]; if (g_crep == 254) g_crep = 999; } else @@ -699,7 +699,7 @@ void MortevielleEngine::fctPlace() { // Do you want to enter the hidden passage? int answer = Alert::show(getEngineString(S_YES_NO), 1); if (answer == 1) { - Common::String alertTxt = g_vm->getString(582); + Common::String alertTxt = getString(582); Alert::show(alertTxt, 1); bool enterPassageFl = KnowledgeCheck::show(); @@ -726,7 +726,7 @@ void MortevielleEngine::fctPlace() { dessin(0); aniof(1, 2); aniof(1, 1); - alertTxt = g_vm->getString(577); + alertTxt = getString(577); Alert::show(alertTxt, 1); aniof(2, 1); g_crep = 166; @@ -881,11 +881,11 @@ void MortevielleEngine::fctClose() { int cx = 0; do { ++cx; - } while ((cx <= 6) && (g_num != ord(g_touv[cx]))); - if (g_num == ord(g_touv[cx])) { + } while ((cx <= 6) && (g_num != ord(_touv[cx]))); + if (g_num == ord(_touv[cx])) { aniof(2, g_num); g_crep = 998; - g_touv[cx] = chr(0); + _touv[cx] = chr(0); --g_iouv; if (g_iouv < 0) g_iouv = 0; @@ -981,8 +981,8 @@ void MortevielleEngine::fctSelfPut() { int cx = 0; do { ++cx; - } while ((cx <= 6) && (g_num != ord(g_touv[cx]))); - if (g_num != ord(g_touv[cx])) + } while ((cx <= 6) && (g_num != ord(_touv[cx]))); + if (g_num != ord(_touv[cx])) g_crep = 187; else { g_mchai = chai; @@ -1153,8 +1153,8 @@ void MortevielleEngine::fctEnter() { g_x = convertBitIndexToCharacterIndex(z); ++_coreVar._faithScore; _coreVar._currPlace = LANDING; - g_msg[3] = MENU_DISCUSS; - g_msg[4] = _menu._discussMenu[g_x]; + _msg[3] = MENU_DISCUSS; + _msg[4] = _menu._discussMenu[g_x]; _syn = true; if (g_ment == 9) { _col = true; @@ -1352,7 +1352,7 @@ void MortevielleEngine::fctDiscuss() { cx = 0; do { ++cx; - } while (_menu._discussMenu[cx] != g_msg[4]); + } while (_menu._discussMenu[cx] != _msg[4]); g_caff = 69 + cx; afdes(); repon(2, g_caff); @@ -1368,7 +1368,7 @@ void MortevielleEngine::fctDiscuss() { for (int ix = 1; ix <= 46; ++ix) te[ix] = false; for (int ix = 1; ix <= 45; ++ix) { - lib[ix] = g_vm->getString(ix + kQuestionStringIndex); + lib[ix] = getString(ix + kQuestionStringIndex); for (i = lib[ix].size(); i <= 40; ++i) lib[ix] = lib[ix] + ' '; } @@ -1477,10 +1477,10 @@ void MortevielleEngine::fctDiscuss() { suj = 138; _coreVar._faithScore += (3 * (_coreVar._faithScore / 10)); } - } else if (g_nbrep[g_caff - 69] < g_nbrepm[g_caff - 69]) { - suj = g_tabdon[arep + (ix << 3) + (g_caff - 70)]; - _coreVar._faithScore += g_tabdon[arcf + ix]; - ++g_nbrep[g_caff - 69]; + } else if (_nbrep[g_caff - 69] < _nbrepm[g_caff - 69]) { + suj = _tabdon[arep + (ix << 3) + (g_caff - 70)]; + _coreVar._faithScore += _tabdon[arcf + ix]; + ++_nbrep[g_caff - 69]; } else { _coreVar._faithScore += 3; suj = 139; diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 5191b1ed43..318a4ba4a9 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -217,7 +217,7 @@ void Alert::decodeAlertDetails(Common::String inputStr, int &choiceNumb, int &li col += 6; } ++i; - choiceListStr = copy(inputStr, i, 30); + choiceListStr = g_vm->copy(inputStr, i, 30); if (g_res == 2) col *= 6; else diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp index 2ce96bcede..699bd5a7bd 100644 --- a/engines/mortevielle/keyboard.cpp +++ b/engines/mortevielle/keyboard.cpp @@ -46,7 +46,7 @@ int testou() { break; case '\26' : if ((g_vm->_c_zzz == 1) || (g_vm->_c_zzz == 2)) { - g_vm->decodeNumber(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); + g_vm->decodeNumber(&g_vm->_cfiecBuffer[161 * 16], ((822 * 128) - (161 * 16)) / 64); ++g_vm->_c_zzz; return 61; diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 1d8a10526b..ec41a7eb95 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -486,8 +486,8 @@ void Menu::mdn() { // A menu was clicked on _menuSelected = (_multiTitle) && (g_msg4 != OPCODE_NONE); menuUp(g_msg3); - g_msg[4] = g_msg4; - g_msg[3] = g_msg3; + g_vm->_msg[4] = g_msg4; + g_vm->_msg[3] = g_msg3; g_msg3 = OPCODE_NONE; g_msg4 = OPCODE_NONE; @@ -542,8 +542,8 @@ void Menu::initMenu() { } g_msg3 = OPCODE_NONE; g_msg4 = OPCODE_NONE; - g_msg[3] = OPCODE_NONE; - g_msg[4] = OPCODE_NONE; + g_vm->_msg[3] = OPCODE_NONE; + g_vm->_msg[4] = OPCODE_NONE; g_vm->setMouseClick(false); } diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index ca01e01fcf..9bd3236024 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -65,13 +65,13 @@ void adzon() { if (!f.open("don.mor")) error("Missing file - don.mor"); - f.read(g_tabdon, 7 * 256); + f.read(g_vm->_tabdon, 7 * 256); f.close(); if (!f.open("bmor.mor")) error("Missing file - bmor.mor"); - f.read(&g_tabdon[fleche], 1 * 1916); + f.read(&g_vm->_tabdon[fleche], 1 * 1916); f.close(); if (!f.open("dec.mor")) @@ -152,7 +152,7 @@ void text1(int x, int y, int nb, int m) { void initouv() { for (int cx = 1; cx <= 7; ++cx) - g_touv[cx] = chr(0); + g_vm->_touv[cx] = chr(0); } void ecr2(Common::String str_) { @@ -164,18 +164,18 @@ void ecr2(Common::String str_) { g_vm->_screenSurface.drawString(str_, 5); else if ((int)str_.size() < (tlig << 1)) { g_vm->_screenSurface.putxy(8, 176); - g_vm->_screenSurface.drawString(copy(str_, 1, (tlig - 1)), 5); + g_vm->_screenSurface.drawString(g_vm->copy(str_, 1, (tlig - 1)), 5); g_vm->_screenSurface.putxy(8, 182); - g_vm->_screenSurface.drawString(copy(str_, tlig, tlig << 1), 5); + g_vm->_screenSurface.drawString(g_vm->copy(str_, tlig, tlig << 1), 5); } else { g_vm->_largestClearScreen = true; g_vm->clearScreenType2(); g_vm->_screenSurface.putxy(8, 176); - g_vm->_screenSurface.drawString(copy(str_, 1, (tlig - 1)), 5); + g_vm->_screenSurface.drawString(g_vm->copy(str_, 1, (tlig - 1)), 5); g_vm->_screenSurface.putxy(8, 182); - g_vm->_screenSurface.drawString(copy(str_, tlig, ((tlig << 1) - 1)), 5); + g_vm->_screenSurface.drawString(g_vm->copy(str_, tlig, ((tlig << 1) - 1)), 5); g_vm->_screenSurface.putxy(8, 190); - g_vm->_screenSurface.drawString(copy(str_, tlig << 1, tlig * 3), 5); + g_vm->_screenSurface.drawString(g_vm->copy(str_, tlig << 1, tlig * 3), 5); } } @@ -351,7 +351,7 @@ void init_nbrepm() { const byte ipm[9] = { 0, 4, 5, 6, 7, 5, 6, 5, 8 }; for (int idx = 0; idx < 9; ++idx) - g_nbrepm[idx] = ipm[idx]; + g_vm->_nbrepm[idx] = ipm[idx]; } void phaz(int &rand, int &p, int cf) { @@ -440,7 +440,7 @@ void writetp(Common::String s, int t) { if (g_res == 2) g_vm->_screenSurface.drawString(s, t); else - g_vm->_screenSurface.drawString(copy(s, 1, 25), t); + g_vm->_screenSurface.drawString(g_vm->copy(s, 1, 25), t); } void aniof(int ouf, int num) { @@ -483,8 +483,8 @@ void dessin(int ad) { g_vm->prepareScreenType1(); if ((g_caff < 30) || (g_caff > 32)) { for (int cx = 1; cx <= 6; ++cx) { - if (ord(g_touv[cx]) != 0) - aniof(1, ord(g_touv[cx])); + if (ord(g_vm->_touv[cx]) != 0) + aniof(1, ord(g_vm->_touv[cx])); } if (g_caff == 13) { @@ -568,7 +568,7 @@ void tlu(int af, int ob) { repon(2, 999); tkey1(true); g_caff = af; - g_msg[3] = OPCODE_NONE; + g_vm->_msg[3] = OPCODE_NONE; g_crep = 998; } @@ -587,7 +587,7 @@ void tsort() { } for (int cx = 1; cx <= 7; ++cx) - g_touv[cx] = chr(0); + g_vm->_touv[cx] = chr(0); g_ment = 0; g_iouv = 0; g_mchai = 0; @@ -648,7 +648,7 @@ void modinv() { } void mennor() { - g_vm->_menu.menuUp(g_msg[3]); + g_vm->_menu.menuUp(g_vm->_msg[3]); } void premtet() { @@ -662,10 +662,10 @@ void ajchai() { int cx = 0; do { ++cx; - } while ((cx <= 9) && (g_tabdon[cy + cx] != 0)); + } while ((cx <= 9) && (g_vm->_tabdon[cy + cx] != 0)); - if (g_tabdon[cy + cx] == 0) - g_tabdon[cy + cx] = g_vm->_coreVar._selectedObjectId; + if (g_vm->_tabdon[cy + cx] == 0) + g_vm->_tabdon[cy + cx] = g_vm->_coreVar._selectedObjectId; else g_crep = 192; } @@ -716,8 +716,8 @@ L1: int cx = g_vm->convertBitIndexToCharacterIndex(g_vm->_currBitIndex); g_caff = 69 + cx; g_crep = g_caff; - g_msg[3] = MENU_DISCUSS; - g_msg[4] = g_vm->_menu._discussMenu[cx]; + g_vm->_msg[3] = MENU_DISCUSS; + g_vm->_msg[4] = g_vm->_menu._discussMenu[cx]; g_vm->_syn = true; g_vm->_col = true; } else { @@ -749,7 +749,7 @@ void tsuiv() { ++cx; ++g_cs; cl = cy + g_cs; - tbcl = g_tabdon[cl]; + tbcl = g_vm->_tabdon[cl]; } while ((tbcl == 0) && (g_cs <= 9)); if ((tbcl != 0) && (g_cs < 11)) { @@ -811,12 +811,12 @@ void tcoord(int sx) { int atdon = amzon + 3; int cy = 0; while (cy < g_caff) { - a += g_tabdon[atdon]; + a += g_vm->_tabdon[atdon]; atdon += 4; ++cy; } - if (g_tabdon[atdon] == 0) { + if (g_vm->_tabdon[atdon] == 0) { g_crep = 997; return; } @@ -824,10 +824,10 @@ void tcoord(int sx) { a += fleche; int cb = 0; for (cy = 0; cy <= (sx - 2); ++cy) { - ib = (g_tabdon[a + cb] << 8) + g_tabdon[(a + cb + 1)]; + ib = (g_vm->_tabdon[a + cb] << 8) + g_vm->_tabdon[(a + cb + 1)]; cb += (ib * 4) + 2; } - ib = (g_tabdon[a + cb] << 8) + g_tabdon[(a + cb + 1)]; + ib = (g_vm->_tabdon[a + cb] << 8) + g_vm->_tabdon[(a + cb + 1)]; if (ib == 0) { g_crep = 997; return; @@ -836,11 +836,11 @@ void tcoord(int sx) { cy = 1; do { cb += 2; - sx = g_tabdon[a + cb] * g_res; - sy = g_tabdon[(a + cb + 1)]; + sx = g_vm->_tabdon[a + cb] * g_res; + sy = g_vm->_tabdon[(a + cb + 1)]; cb += 2; - ix = g_tabdon[a + cb] * g_res; - iy = g_tabdon[(a + cb + 1)]; + ix = g_vm->_tabdon[a + cb] * g_res; + iy = g_vm->_tabdon[(a + cb + 1)]; ++cy; } while (!(((g_x >= sx) && (g_x <= ix) && (g_y >= sy) && (g_y <= iy)) || (cy > ib))); @@ -879,7 +879,7 @@ void treg(int ob) { int mdes = g_caff; g_caff = ob; - if (((g_caff > 29) && (g_caff < 33)) || (g_caff == 144) || (g_caff == 147) || (g_caff == 149) || (g_msg[4] == OPCODE_SLOOK)) { + if (((g_caff > 29) && (g_caff < 33)) || (g_caff == 144) || (g_caff == 147) || (g_caff == 149) || (g_vm->_msg[4] == OPCODE_SLOOK)) { afdes(); if ((g_caff > 29) && (g_caff < 33)) repon(2, g_caff); @@ -887,7 +887,7 @@ void treg(int ob) { repon(2, g_caff + 400); tkey1(true); g_caff = mdes; - g_msg[3] = 0; + g_vm->_msg[3] = 0; g_crep = 998; } else { g_vm->_obpart = true; @@ -913,7 +913,7 @@ void rechai(int &ch) { if (g_vm->_coreVar._currPlace == CRYPT) tmpPlace = CELLAR; - ch = g_tabdon[achai + (tmpPlace * 7) + g_num - 1]; + ch = g_vm->_tabdon[achai + (tmpPlace * 7) + g_num - 1]; } int t23coul() { diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 907e305be8..ffad259f9d 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -200,7 +200,7 @@ Common::ErrorCode MortevielleEngine::initialise() { loadPalette(); loadCFIPH(); loadCFIEC(); - decodeNumber(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); + decodeNumber(&_cfiecBuffer[161 * 16], ((822 * 128) - (161 * 16)) / 64); _c_zzz = 1; init_nbrepm(); initMouse(); @@ -564,7 +564,7 @@ void MortevielleEngine::mainGame() { loadCFIEC(); for (g_crep = 1; g_crep <= _c_zzz; ++g_crep) - decodeNumber(&g_adcfiec[161 * 16], ((822 * 128) - (161 * 16)) / 64); + decodeNumber(&_cfiecBuffer[161 * 16], ((822 * 128) - (161 * 16)) / 64); loadBRUIT5(); _menu.initMenu(); @@ -638,18 +638,18 @@ void MortevielleEngine::handleAction() { changeGraphicalDevice((uint)(ord(inkey) - 1) >> 1); return; } - if (_menu._menuSelected && (g_msg[3] == MENU_SAVE)) { - Common::String saveName = Common::String::format("Savegame #%d", g_msg[4] & 7); - _savegameManager.saveGame(g_msg[4] & 7, saveName); + if (_menu._menuSelected && (_msg[3] == MENU_SAVE)) { + Common::String saveName = Common::String::format("Savegame #%d", _msg[4] & 7); + _savegameManager.saveGame(_msg[4] & 7, saveName); } - if (_menu._menuSelected && (g_msg[3] == MENU_LOAD)) - _savegameManager.loadGame((g_msg[4] & 7) - 1); + if (_menu._menuSelected && (_msg[3] == MENU_LOAD)) + _savegameManager.loadGame((_msg[4] & 7) - 1); if (inkey == '\103') { /* F9 */ temps = Alert::show(_hintPctMessage, 1); return; } else if (inkey == '\77') { - if ((g_mnumo != OPCODE_NONE) && ((g_msg[3] == MENU_ACTION) || (g_msg[3] == MENU_SELF))) { - g_msg[4] = g_mnumo; + if ((_menuOpcode != OPCODE_NONE) && ((_msg[3] == MENU_ACTION) || (_msg[3] == MENU_SELF))) { + _msg[4] = _menuOpcode; ecr3(getEngineString(S_IDEM)); } else return; @@ -670,17 +670,17 @@ void MortevielleEngine::handleAction() { if (g_num == 9999) g_num = 0; } else { - g_mnumo = g_msg[3]; - if ((g_msg[3] == MENU_ACTION) || (g_msg[3] == MENU_SELF)) - g_mnumo = g_msg[4]; + _menuOpcode = _msg[3]; + if ((_msg[3] == MENU_ACTION) || (_msg[3] == MENU_SELF)) + _menuOpcode = _msg[4]; if (!_anyone) { if ((_heroSearching) || (_obpart)) { if (_mouse._pos.y < 12) return; - if ((g_msg[4] == OPCODE_SOUND) || (g_msg[4] == OPCODE_LIFT)) { + if ((_msg[4] == OPCODE_SOUND) || (_msg[4] == OPCODE_LIFT)) { oo = true; - if ((g_msg[4] == OPCODE_LIFT) || (_obpart)) { + if ((_msg[4] == OPCODE_LIFT) || (_obpart)) { endSearch(); g_caff = _coreVar._currPlace; g_crep = 998; @@ -1858,7 +1858,7 @@ void MortevielleEngine::gameLoaded() { _hiddenHero = false; _brt = false; g_maff = 68; - g_mnumo = OPCODE_NONE; + _menuOpcode = OPCODE_NONE; g_prebru = 0; g_x = 0; g_y = 0; @@ -1908,71 +1908,71 @@ void MortevielleEngine::handleOpcode() { _keyPressedEsc = false; if (!_anyone) { if (_brt) { - if ((g_msg[3] == MENU_MOVE) || (g_msg[4] == OPCODE_LEAVE) || (g_msg[4] == OPCODE_SLEEP) || (g_msg[4] == OPCODE_EAT)) { + if ((_msg[3] == MENU_MOVE) || (_msg[4] == OPCODE_LEAVE) || (_msg[4] == OPCODE_SLEEP) || (_msg[4] == OPCODE_EAT)) { g_ctrm = 4; mennor(); return; } } - if (g_msg[3] == MENU_MOVE) + if (_msg[3] == MENU_MOVE) fctMove(); - if (g_msg[3] == MENU_DISCUSS) + if (_msg[3] == MENU_DISCUSS) fctDiscuss(); - if (g_msg[3] == MENU_INVENTORY) + if (_msg[3] == MENU_INVENTORY) fctInventoryTake(); - if (g_msg[4] == OPCODE_ATTACH) + if (_msg[4] == OPCODE_ATTACH) fctAttach(); - if (g_msg[4] == OPCODE_WAIT) + if (_msg[4] == OPCODE_WAIT) fctWait(); - if (g_msg[4] == OPCODE_FORCE) + if (_msg[4] == OPCODE_FORCE) fctForce(); - if (g_msg[4] == OPCODE_SLEEP) + if (_msg[4] == OPCODE_SLEEP) fctSleep(); - if (g_msg[4] == OPCODE_LISTEN) + if (_msg[4] == OPCODE_LISTEN) fctListen(); - if (g_msg[4] == OPCODE_ENTER) + if (_msg[4] == OPCODE_ENTER) fctEnter(); - if (g_msg[4] == OPCODE_CLOSE) + if (_msg[4] == OPCODE_CLOSE) fctClose(); - if (g_msg[4] == OPCODE_SEARCH) + if (_msg[4] == OPCODE_SEARCH) fctSearch(); - if (g_msg[4] == OPCODE_KNOCK) + if (_msg[4] == OPCODE_KNOCK) fctKnock(); - if (g_msg[4] == OPCODE_SCRATCH) + if (_msg[4] == OPCODE_SCRATCH) fctScratch(); - if (g_msg[4] == OPCODE_READ) + if (_msg[4] == OPCODE_READ) fctRead(); - if (g_msg[4] == OPCODE_EAT) + if (_msg[4] == OPCODE_EAT) fctEat(); - if (g_msg[4] == OPCODE_PLACE) + if (_msg[4] == OPCODE_PLACE) fctPlace(); - if (g_msg[4] == OPCODE_OPEN) + if (_msg[4] == OPCODE_OPEN) fctOpen(); - if (g_msg[4] == OPCODE_TAKE) + if (_msg[4] == OPCODE_TAKE) fctTake(); - if (g_msg[4] == OPCODE_LOOK) + if (_msg[4] == OPCODE_LOOK) fctLook(); - if (g_msg[4] == OPCODE_SMELL) + if (_msg[4] == OPCODE_SMELL) fctSmell(); - if (g_msg[4] == OPCODE_SOUND) + if (_msg[4] == OPCODE_SOUND) fctSound(); - if (g_msg[4] == OPCODE_LEAVE) + if (_msg[4] == OPCODE_LEAVE) fctLeave(); - if (g_msg[4] == OPCODE_LIFT) + if (_msg[4] == OPCODE_LIFT) fctLift(); - if (g_msg[4] == OPCODE_TURN) + if (_msg[4] == OPCODE_TURN) fctTurn(); - if (g_msg[4] == OPCODE_SSEARCH) + if (_msg[4] == OPCODE_SSEARCH) fctSelfSearch(); - if (g_msg[4] == OPCODE_SREAD) + if (_msg[4] == OPCODE_SREAD) fctSelfRead(); - if (g_msg[4] == OPCODE_SPUT) + if (_msg[4] == OPCODE_SPUT) fctSelfPut(); - if (g_msg[4] == OPCODE_SLOOK) + if (_msg[4] == OPCODE_SLOOK) fctSelftLook(); _hiddenHero = false; - if (g_msg[4] == OPCODE_SHIDE) + if (_msg[4] == OPCODE_SHIDE) fctSelfHide(); } else { if (_anyone) { @@ -2158,13 +2158,13 @@ void MortevielleEngine::cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { uint16 oct, ocd; /* 5-8 */ - oct = g_t_mot[idx]; + oct = _inpBuffer[idx]; oct = ((uint16)(oct << (16 - pt))) >> (16 - pt); if (pt < 6) { ++idx; oct = oct << (5 - pt); pt += 11; - oct = oct | ((uint)g_t_mot[idx] >> pt); + oct = oct | ((uint)_inpBuffer[idx] >> pt); } else { pt -= 5; oct = (uint)oct >> pt; @@ -2177,13 +2177,13 @@ void MortevielleEngine::cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { break; case 30: case 31: - ocd = g_t_mot[idx]; + ocd = _inpBuffer[idx]; ocd = (uint16)(ocd << (16 - pt)) >> (16 - pt); if (pt < 6) { ++idx; ocd = ocd << (5 - pt); pt += 11; - ocd = ocd | ((uint)g_t_mot[idx] >> pt); + ocd = ocd | ((uint)_inpBuffer[idx] >> pt); } else { pt -= 5; ocd = (uint)ocd >> pt; @@ -2217,21 +2217,21 @@ Common::String MortevielleEngine::getString(int num) { } else if (!_txxFileFl) { wrkStr = getGameString(num); } else { - int i = g_t_rec[num]._hintId; - byte k = g_t_rec[num]._point; + int hint = _ntpBuffer[num]._hintId; + byte point = _ntpBuffer[num]._point; int length = 0; bool endFl = false; char let; do { - cinq_huit(let, i, k, endFl); + cinq_huit(let, hint, point, endFl); if (length < 254) wrkStr += let; ++length; } while (!endFl); } - if (wrkStr.lastChar() == '$') - // Remove trailing '$' + while (wrkStr.lastChar() == '$') + // Remove trailing '$'s wrkStr.deleteLastChar(); return wrkStr; @@ -2240,7 +2240,7 @@ Common::String MortevielleEngine::getString(int num) { void MortevielleEngine::copcha() { int i = kAcha; do { - g_tabdon[i] = g_tabdon[i + 390]; + _tabdon[i] = _tabdon[i + 390]; ++i; } while (i != kAcha + 390); } @@ -2288,7 +2288,7 @@ void MortevielleEngine::resetVariables() { _coreVar._teauto[33] = '*'; for (int i = 1; i <= 8; ++i) - g_nbrep[i] = 0; + _nbrep[i] = 0; init_nbrepm(); } @@ -2352,7 +2352,7 @@ void MortevielleEngine::loadPalette() { if (!f.open("fxx.mor")) error("Missing file - fxx.mor"); for (int i = 0; i < 108; ++i) - g_l[i] = f.readSint16LE(); + _fxxBuffer[i] = f.readSint16LE(); f.close(); if (!f.open("plxx.mor")) @@ -2423,14 +2423,14 @@ void MortevielleEngine::loadTexts() { } for (int i = 0; i < inpFile.size() / 2; ++i) - g_t_mot[i] = inpFile.readUint16LE(); + _inpBuffer[i] = inpFile.readUint16LE(); inpFile.close(); _txxFileFl = true; for (int i = 0; i < (ntpFile.size() / 3); ++i) { - g_t_rec[i]._hintId = ntpFile.readSint16LE(); - g_t_rec[i]._point = ntpFile.readByte(); + _ntpBuffer[i]._hintId = ntpFile.readSint16LE(); + _ntpBuffer[i]._point = ntpFile.readByte(); } ntpFile.close(); @@ -2453,7 +2453,7 @@ void MortevielleEngine::loadCFIEC() { if (!f.open("cfiec.mor")) error("Missing file - cfiec.mor"); - f.read(&g_adcfiec[0], 822 * 128); + f.read(&_cfiecBuffer[0], 822 * 128); f.close(); _reloadCFIEC = false; @@ -2467,7 +2467,7 @@ void MortevielleEngine::loadCFIPH() { error("Missing file - cfiph.mor"); for (int i = 0; i < (f.size() / 2); ++i) - g_t_cph[i] = f.readSint16LE(); + _speechManager._cfiphBuffer[i] = f.readSint16LE(); f.close(); } @@ -2492,13 +2492,13 @@ void MortevielleEngine::music() { _soundManager.decodeMusic(&g_mem[0x3800 * 16], &g_mem[0x5000 * 16], 623); _addfix = (float)((kTempoMusic - g_addv[1])) / 256; - _speechManager.cctable(g_tbi); + _speechManager.cctable(_speechManager._tbi); bool fin = false; int k = 0; do { fin = keyPressed(); - _soundManager.musyc(g_tbi, 9958, kTempoMusic); + _soundManager.musyc(_speechManager._tbi, 9958, kTempoMusic); ++k; fin = fin | keyPressed() | (k >= 5); } while (!fin); @@ -2532,7 +2532,7 @@ void MortevielleEngine::showTitleScreen() { */ void MortevielleEngine::draw(int ad, int x, int y) { _mouse.hideMouse(); - setPal(g_numpal); + setPal(_numpal); pictout(ad, 0, x, y); _mouse.showMouse(); } @@ -2584,9 +2584,9 @@ void MortevielleEngine::prepareRoom() { int i = 0; do { ++i; - if (g_nbrepm[i] != 0) - --g_nbrepm[i]; - g_nbrep[i] = 0; + if (_nbrepm[i] != 0) + --_nbrepm[i]; + _nbrep[i] = 0; } while (i != 8); } if ((hour > _hour) || ((hour == 0) && (_hour == 23))) { @@ -2769,4 +2769,26 @@ void MortevielleEngine::drawClock() { } } +void MortevielleEngine::palette(int v1) { + warning("TODO: palette"); +} + +/** + * Returns a substring of the given string + * @param s Source string + * @param idx Starting index (1 based) + * @param size Number of characters to return + */ + +Common::String MortevielleEngine::copy(const Common::String &s, int idx, size_t size) { + // Copy the substring into a temporary buffer + char *tmp = new char[size + 1]; + strncpy(tmp, s.c_str() + idx - 1, size); + tmp[size] = '\0'; + + Common::String result(tmp); + delete[] tmp; + return result; +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index c0230cf5cc..46795e682a 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -135,6 +135,7 @@ private: Common::StringArray _gameStrings; Pattern _patternArr[15]; + int _menuOpcode; Common::ErrorCode initialise(); Common::ErrorCode loadMortDat(); @@ -156,12 +157,22 @@ private: void loadCFIEC(); void loadCFIPH(); void showTitleScreen(); - int readclock(); - + int readclock(); + void palette(int v1); public: Common::String _hintPctMessage; Common::Point _prevPos; + byte _tabdon[4001]; + byte _cfiecBuffer[822 * 128]; + int _fxxBuffer[108]; + byte _touv[8]; + int _msg[5]; + int _nbrep[9]; + int _nbrepm[9]; + uint16 _inpBuffer[kMaxTi + 1]; + Hint _ntpBuffer[kMaxTd + 1]; + bool _roomPresenceLuc; bool _roomPresenceIda; bool _purpleRoomPresenceLeo; @@ -202,6 +213,8 @@ public: int _minute; float _addfix; + int _numpal; + Common::Point _stdPal[91][17]; t_pcga _cgaPal[91]; int _c_zzz; @@ -360,6 +373,7 @@ public: void drawRightFrame(); void prepareRoom(); void drawClock(); + Common::String copy(const Common::String &s, int idx, size_t size); }; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 22385ed0fe..bb57ac07e6 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -281,16 +281,16 @@ void taffich() { npal = a; for (cx = 0; cx <= (a - 1); ++cx) - lgt = lgt + g_l[cx]; - handle = g_l[a]; + lgt += g_vm->_fxxBuffer[cx]; + handle = g_vm->_fxxBuffer[a]; filename = "DXX.mor"; } else { filename = "DZZ.mor"; - handle = g_l[87]; + handle = g_vm->_fxxBuffer[87]; if (a == 51) { lgt = handle; - handle = g_l[88]; + handle = g_vm->_fxxBuffer[88]; } g_maff = a; npal = a + 37; @@ -310,7 +310,7 @@ void taffich() { alllum[k] = -1; } } - g_numpal = npal; + g_vm->_numpal = npal; g_vm->setPal(npal); if ((b < 15) || (b == 16) || (b == 17) || (b == 24) || (b == 26) || (b == 50)) { @@ -323,8 +323,8 @@ void taffich() { else if (b > 15) --b; for (cx = 0; cx <= (b - 1); ++cx) - lgt += g_l[cx + 89]; - handle = g_l[b + 89]; + lgt += g_vm->_fxxBuffer[cx + 89]; + handle = g_vm->_fxxBuffer[b + 89]; filename = "AXX.mor"; } else if (b == 50) { filename = "AZZ.mor"; @@ -333,7 +333,7 @@ void taffich() { charani(filename, lgt, handle); } g_vm->_mouse.showMouse(); - if ((a < 27) && ((g_maff < 27) || (g_vm->_coreVar._currPlace == LANDING)) && (g_msg[4] != OPCODE_ENTER)) { + if ((a < 27) && ((g_maff < 27) || (g_vm->_coreVar._currPlace == LANDING)) && (g_vm->_msg[4] != OPCODE_ENTER)) { if ((a == 13) || (a == 14)) g_vm->displayAloneText(); else if (!g_vm->_blo) diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index fa26132e9b..d71e2fd8b7 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -66,7 +66,7 @@ void SavegameManager::sync_save(Common::Serializer &sz) { sz.syncAsByte(g_vm->_saveStruct._alreadyEnteredManor); sz.syncAsByte(g_vm->_saveStruct._fullHour); - sz.syncBytes(g_bufcha, 391); + sz.syncBytes(_tabdonSaveBuffer, 391); } /** @@ -108,7 +108,7 @@ void SavegameManager::loadSavegame(int n) { g_vm->_coreVar = g_vm->_saveStruct; for (int i = 0; i <= 389; ++i) - g_tabdon[i + kAcha] = g_bufcha[i]; + g_vm->_tabdon[i + kAcha] = _tabdonSaveBuffer[i]; // Close the stream delete stream; @@ -141,10 +141,10 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { g_vm->hourToChar(); for (i = 0; i <= 389; ++i) - g_bufcha[i] = g_tabdon[i + kAcha]; + _tabdonSaveBuffer[i] = g_vm->_tabdon[i + kAcha]; g_vm->_saveStruct = g_vm->_coreVar; - if (g_vm->_saveStruct._currPlace == 26) - g_vm->_saveStruct._currPlace = 15; + if (g_vm->_saveStruct._currPlace == ROOM26) + g_vm->_saveStruct._currPlace = LANDING; Common::String filename = generateSaveName(n); f = g_system->getSavefileManager()->openForSaving(filename); diff --git a/engines/mortevielle/saveload.h b/engines/mortevielle/saveload.h index c1c3c80c09..a89fc9db89 100644 --- a/engines/mortevielle/saveload.h +++ b/engines/mortevielle/saveload.h @@ -49,6 +49,8 @@ struct SavegameHeader { class SavegameManager { private: + byte _tabdonSaveBuffer[391]; + void sync_save(Common::Serializer &sz); public: void loadSavegame(int n); diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 69a0c331da..7d235cd6e5 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -93,8 +93,8 @@ void SpeechManager::charg_car(int &currWordNumb) { void SpeechManager::entroct(byte o) { - g_mem[kAdrTroct * 16 + g_ptr_oct] = o; - ++g_ptr_oct; + g_mem[kAdrTroct * 16 + _ptr_oct] = o; + ++_ptr_oct; } void SpeechManager::veracf(byte b) { @@ -115,7 +115,7 @@ void SpeechManager::regenbruit() { int i = kOffsetB3 + 8590; int j = 0; do { - g_t_cph[j] = READ_LE_UINT16(&g_mem[kAdrNoise3 + i]); + _cfiphBuffer[j] = READ_LE_UINT16(&g_mem[kAdrNoise3 + i]); i += 2; ++j; } while (i < kOffsetB3 + 8790); @@ -148,7 +148,7 @@ void SpeechManager::loadPhonemeSounds() { error("Missing file - phbrui.mor"); for (int i = 1; i <= 3; ++i) - g_t_cph[i] = f.readSint16LE(); + _cfiphBuffer[i] = f.readSint16LE(); f.close(); } @@ -499,13 +499,13 @@ void SpeechManager::initQueue() { void SpeechManager::handlePhoneme() { const int deca[3] = {300, 30, 40}; - int startPos = swap(g_t_cph[_phonemeNumb - 1]) + deca[_typlec]; - int endPos = swap(g_t_cph[_phonemeNumb]) + deca[_typlec]; + int startPos = swap(_cfiphBuffer[_phonemeNumb - 1]) + deca[_typlec]; + int endPos = swap(_cfiphBuffer[_phonemeNumb]) + deca[_typlec]; int wordCount = endPos - startPos; for (int i = (uint)startPos >> 1, currWord = 0; i < (int)((uint)endPos >> 1); i++, currWord += 2) - WRITE_LE_UINT16(&g_mem[kAdrWord + currWord], g_t_cph[i]); + WRITE_LE_UINT16(&g_mem[kAdrWord + currWord], _cfiphBuffer[i]); - g_ptr_oct = 0; + _ptr_oct = 0; int currWord = 0; initQueue(); @@ -536,14 +536,14 @@ void SpeechManager::startSpeech(int rep, int ht, int typ) { _typlec = typ; if (_typlec != 0) { for (int i = 0; i <= 500; ++i) - savph[i] = g_t_cph[i]; + savph[i] = _cfiphBuffer[i]; tempo = kTempoNoise; } else if (g_haut > 5) tempo = kTempoF; else tempo = kTempoM; g_vm->_addfix = (float)((tempo - g_addv[0])) / 256; - cctable(g_tbi); + cctable(_tbi); switch (typ) { case 1: loadNoise(); @@ -558,13 +558,13 @@ void SpeechManager::startSpeech(int rep, int ht, int typ) { break; } handlePhoneme(); - g_vm->_soundManager.litph(g_tbi, typ, tempo); + g_vm->_soundManager.litph(_tbi, typ, tempo); if (_typlec != 0) for (int i = 0; i <= 500; ++i) { - g_t_cph[i] = savph[i]; + _cfiphBuffer[i] = savph[i]; g_mlec = _typlec; } - g_vm->setPal(g_numpal); + g_vm->setPal(g_vm->_numpal); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h index 0c12a43acb..9eccd04d5f 100644 --- a/engines/mortevielle/speech.h +++ b/engines/mortevielle/speech.h @@ -68,9 +68,14 @@ class SpeechManager { private: int _typlec; int _phonemeNumb; + SpeechQueue _queue[3]; + int _ptr_oct; public: + int _cfiphBuffer[6401]; + int _tbi[256]; + SpeechManager(); void spfrac(int wor); void charg_car(int &currWordNumb); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 8b82aaccdf..b6cc46c93e 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -92,31 +92,8 @@ int g_x, g_mchai, g_menup, g_mpers, - g_mnumo, g_perdep, - g_prebru, - g_numpal, - g_ptr_oct, - g_k_tempo; - -int g_t_cph[6401]; -byte g_tabdon[4001]; - -int g_nbrep[9]; -int g_nbrepm[9]; -int g_msg[5]; -byte g_touv[8]; -byte g_bufcha[391]; - -byte g_lettres[7][24]; - -uint16 g_t_mot[kMaxTi + 1]; -int g_tay_tchar; -Hint g_t_rec[kMaxTd + 1]; -int g_l[108]; -int g_tbi[256]; - -byte g_adcfiec[(4088 * 16) + (311 * 0x80)]; + g_prebru; /*---------------------------------------------------------------------------*/ /*-------------------- PROCEDURES AND FONCTIONS -----------------------*/ @@ -131,23 +108,6 @@ void hirs() { g_vm->_screenSurface.clearScreen(); } -/** - * Returns a substring of the given string - * @param s Source string - * @param idx Starting index (1 based) - * @param size Number of characters to return - */ -Common::String copy(const Common::String &s, int idx, size_t size) { - // Copy the substring into a temporary buffer - char *tmp = new char[size + 1]; - strncpy(tmp, s.c_str() + idx - 1, size); - tmp[size] = '\0'; - - Common::String result(tmp); - delete[] tmp; - return result; -} - /*---------------------------------------------------------------------------*/ /*------------------------------ STUBS ------------------------------*/ /*---------------------------------------------------------------------------*/ @@ -155,10 +115,6 @@ Common::String copy(const Common::String &s, int idx, size_t size) { int g_port[0xfff]; byte g_mem[65536 * 16]; -void palette(int v1) { - warning("TODO: palette"); -} - void musyc(tablint &tb, int nbseg, int att) { warning("TODO: musyc"); } diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index a6fccb6010..26e4edde27 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -158,36 +158,14 @@ extern int g_x, g_mchai, g_menup, g_mpers, - g_mnumo, g_perdep, - g_prebru, - g_numpal, - g_ptr_oct, - g_k_tempo; - -extern int g_t_cph[6401]; // Speech -extern byte g_tabdon[4001]; - -extern int g_nbrep[9]; -extern int g_nbrepm[9]; -extern int g_msg[5]; -extern byte g_touv[8]; -extern byte g_bufcha[391]; - -extern uint16 g_t_mot[kMaxTi + 1]; -extern int g_tay_tchar; -extern Hint g_t_rec[kMaxTd + 1]; -extern int g_l[108]; -extern int g_tbi[256]; - -extern byte g_adcfiec[822 * 128]; + g_prebru; /*---------------------------------------------------------------------------*/ /*------------------- PROCEDURES AND FONCTIONS ------------------------*/ /*---------------------------------------------------------------------------*/ void hirs(); -Common::String copy(const Common::String &s, int idx, size_t size); void Val(const Common::String &s, int &V, int Code); /*---------------------------------------------------------------------------*/ @@ -197,7 +175,6 @@ void Val(const Common::String &s, int &V, int Code); extern int g_port[0xfff]; extern byte g_mem[65536 * 16]; -extern void palette(int v1); } // End of namespace Mortevielle -- cgit v1.2.3 From 0111cea7d7b9164125cb6163050d1ddfcc1335f8 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 23 Mar 2012 07:44:04 +0100 Subject: MORTEVIELLE: More renaming --- engines/mortevielle/actions.cpp | 12 +++---- engines/mortevielle/dialogs.cpp | 4 +-- engines/mortevielle/graphics.cpp | 2 +- engines/mortevielle/menu.cpp | 70 ++++++++++++++++++------------------- engines/mortevielle/menu.h | 2 ++ engines/mortevielle/mor.cpp | 31 +++++++--------- engines/mortevielle/mor.h | 1 - engines/mortevielle/mortevielle.cpp | 37 ++++++++++++-------- engines/mortevielle/mortevielle.h | 18 +++++++--- engines/mortevielle/mouse.cpp | 58 +++++++++++++++--------------- engines/mortevielle/mouse.h | 3 +- engines/mortevielle/outtext.cpp | 13 +++---- engines/mortevielle/speech.cpp | 64 ++++++++++++++++++++++----------- engines/mortevielle/speech.h | 1 + engines/mortevielle/var_mor.cpp | 48 ------------------------- engines/mortevielle/var_mor.h | 33 ----------------- 16 files changed, 176 insertions(+), 221 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index bcf291b0f1..1c3314fe90 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -209,7 +209,7 @@ void MortevielleEngine::fctTake() { _obpart = false; affrep(); } else { - _tabdon[kAcha + ((g_mchai - 1) * 10) + g_cs - 1] = 0; + _tabdon[kAcha + ((_mchai - 1) * 10) + g_cs - 1] = 0; tsuiv(); ++g_dobj; if (g_dobj > 6) { @@ -515,8 +515,8 @@ void MortevielleEngine::fctSearch() { if (_currBitIndex > 0) _coreVar._faithScore += 3; - rechai(g_mchai); - if (g_mchai != 0) { + rechai(_mchai); + if (_mchai != 0) { g_cs = 0; g_is = 0; _heroSearching = true; @@ -891,8 +891,8 @@ void MortevielleEngine::fctClose() { g_iouv = 0; int chai = 9999; rechai(chai); - if (g_mchai == chai) - g_mchai = 0; + if (_mchai == chai) + _mchai = 0; } else { g_crep = 187; } @@ -985,7 +985,7 @@ void MortevielleEngine::fctSelfPut() { if (g_num != ord(_touv[cx])) g_crep = 187; else { - g_mchai = chai; + _mchai = chai; g_crep = 999; } } diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 318a4ba4a9..b14af53b00 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -299,7 +299,7 @@ bool KnowledgeCheck::show() { for (int indx = 0; indx < 10; ++indx) { g_vm->_mouse.hideMouse(); - hirs(); + g_vm->hirs(); g_vm->_mouse.showMouse(); int dialogHeight; if (g_res == 1) @@ -429,7 +429,7 @@ void f3f8::checkForF8(int SpeechNum, bool drawAni50Fl) { if (g_vm->_newGraphicalDevice != g_vm->_currGraphicalDevice) { g_vm->_currGraphicalDevice = g_vm->_newGraphicalDevice; - hirs(); + g_vm->hirs(); aff50(drawAni50Fl); } } while (g_key != 66); // keycode for F8 diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index dc63e05c22..2e9e0195a6 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -913,7 +913,7 @@ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { (x + surface.w) * 2, (y + surface.h) * 2)); // Get a lookup for the palette mapping - const byte *paletteMap = &g_mem[0x7000 * 16 + 2]; + const byte *paletteMap = &g_vm->_mem[0x7000 * 16 + 2]; // Loop through writing for (int yp = 0; yp < surface.h; ++yp) { diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index ec41a7eb95..1b030935cb 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -220,8 +220,8 @@ void Menu::displayMenu() { void Menu::drawMenu() { displayMenu(); _menuActive = true; - g_msg4 = OPCODE_NONE; - g_msg3 = OPCODE_NONE; + _msg4 = OPCODE_NONE; + _msg3 = OPCODE_NONE; _menuSelected = false; g_vm->setMouseClick(false); _multiTitle = false; @@ -232,15 +232,15 @@ void Menu::drawMenu() { * @remarks Originally called 'invers' */ void Menu::invert(int indx) { - if (g_msg4 == OPCODE_NONE) + if (_msg4 == OPCODE_NONE) return; - int menuIndex = lo(g_msg4); + int menuIndex = lo(_msg4); - g_vm->_screenSurface.putxy(_menuConstants[g_msg3 - 1][0] << 3, (menuIndex + 1) << 3); + g_vm->_screenSurface.putxy(_menuConstants[_msg3 - 1][0] << 3, (menuIndex + 1) << 3); Common::String str; - switch (g_msg3) { + switch (_msg3) { case 1: str = _inventoryStringArray[menuIndex]; break; @@ -279,14 +279,14 @@ void Menu::invert(int indx) { if ((str[0] != '*') && (str[0] != '<')) g_vm->_screenSurface.drawString(str, indx); else - g_msg4 = OPCODE_NONE; + _msg4 = OPCODE_NONE; } void Menu::util(Common::Point pos) { - int ymx = (_menuConstants[g_msg3 - 1][3] << 3) + 16; - int dxcar = _menuConstants[g_msg3 - 1][2]; - int xmn = (_menuConstants[g_msg3 - 1][0] << 2) * g_res; + int ymx = (_menuConstants[_msg3 - 1][3] << 3) + 16; + int dxcar = _menuConstants[_msg3 - 1][2]; + int xmn = (_menuConstants[_msg3 - 1][0] << 2) * g_res; int ix; if (g_res == 1) @@ -295,15 +295,15 @@ void Menu::util(Common::Point pos) { ix = 3; int xmx = dxcar * ix * g_res + xmn + 2; if ((pos.x > xmn) && (pos.x < xmx) && (pos.y < ymx) && (pos.y > 15)) { - ix = (((uint)pos.y >> 3) - 1) + (g_msg3 << 8); - if (ix != g_msg4) { + ix = (((uint)pos.y >> 3) - 1) + (_msg3 << 8); + if (ix != _msg4) { invert(1); - g_msg4 = ix; + _msg4 = ix; invert(0); } - } else if (g_msg4 != OPCODE_NONE) { + } else if (_msg4 != OPCODE_NONE) { invert(1); - g_msg4 = OPCODE_NONE; + _msg4 = OPCODE_NONE; } } @@ -419,7 +419,7 @@ void Menu::menuUp(int xx) { void Menu::eraseMenu() { _menuActive = false; g_vm->setMouseClick(false); - menuUp(g_msg3); + menuUp(_msg3); } /** @@ -459,37 +459,37 @@ void Menu::mdn() { else ix = MENU_FILE; - if ((ix != g_msg3) || (!_multiTitle)) - if (!((ix == MENU_FILE) && ((g_msg3 == MENU_SAVE) || (g_msg3 == MENU_LOAD)))) { - menuUp(g_msg3); + if ((ix != _msg3) || (!_multiTitle)) + if (!((ix == MENU_FILE) && ((_msg3 == MENU_SAVE) || (_msg3 == MENU_LOAD)))) { + menuUp(_msg3); menuDown(ix); - g_msg3 = ix; - g_msg4 = OPCODE_NONE; + _msg3 = ix; + _msg4 = OPCODE_NONE; } } else { // Not in the MenuTitle line if ((curPos.y > 11) && (_multiTitle)) util(curPos); } } else { // There was a click - if ((g_msg3 == MENU_FILE) && (g_msg4 != OPCODE_NONE)) { + if ((_msg3 == MENU_FILE) && (_msg4 != OPCODE_NONE)) { // Another menu to be _displayed g_vm->setMouseClick(false); - menuUp(g_msg3); - if (lo(g_msg4) == 1) - g_msg3 = 7; + menuUp(_msg3); + if (lo(_msg4) == 1) + _msg3 = 7; else - g_msg3 = 8; - menuDown(g_msg3); + _msg3 = 8; + menuDown(_msg3); g_vm->setMouseClick(false); } else { // A menu was clicked on - _menuSelected = (_multiTitle) && (g_msg4 != OPCODE_NONE); - menuUp(g_msg3); - g_vm->_msg[4] = g_msg4; - g_vm->_msg[3] = g_msg3; - g_msg3 = OPCODE_NONE; - g_msg4 = OPCODE_NONE; + _menuSelected = (_multiTitle) && (_msg4 != OPCODE_NONE); + menuUp(_msg3); + g_vm->_msg[4] = _msg4; + g_vm->_msg[3] = _msg3; + _msg3 = OPCODE_NONE; + _msg4 = OPCODE_NONE; g_vm->setMouseClick(false); } @@ -540,8 +540,8 @@ void Menu::initMenu() { if (i > 6) g_vm->_menu.disableMenuItem(_inventoryMenu[i]); } - g_msg3 = OPCODE_NONE; - g_msg4 = OPCODE_NONE; + _msg3 = OPCODE_NONE; + _msg4 = OPCODE_NONE; g_vm->_msg[3] = OPCODE_NONE; g_vm->_msg[4] = OPCODE_NONE; g_vm->setMouseClick(false); diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index b600d4e3af..f4d12bc676 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -41,6 +41,8 @@ enum { class Menu { private: byte _charArr[7][24]; + int _msg3; + int _msg4; void util(Common::Point pos); void invert(int indx); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 9bd3236024..4c1d4dedf9 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -46,15 +46,15 @@ namespace Mortevielle { void pictout(int seg, int dep, int x, int y) { GfxSurface surface; - surface.decode(&g_mem[seg * 16 + dep]); + surface.decode(&g_vm->_mem[seg * 16 + dep]); if (g_vm->_currGraphicalDevice == MODE_HERCULES) { - g_mem[0x7000 * 16 + 2] = 0; - g_mem[0x7000 * 16 + 32] = 15; + g_vm->_mem[0x7000 * 16 + 2] = 0; + g_vm->_mem[0x7000 * 16 + 32] = 15; } - if ((g_caff != 51) && (READ_LE_UINT16(&g_mem[0x7000 * 16 + 0x4138]) > 0x100)) - WRITE_LE_UINT16(&g_mem[0x7000 * 16 + 0x4138], 0x100); + if ((g_caff != 51) && (READ_LE_UINT16(&g_vm->_mem[0x7000 * 16 + 0x4138]) > 0x100)) + WRITE_LE_UINT16(&g_vm->_mem[0x7000 * 16 + 0x4138], 0x100); g_vm->_screenSurface.drawPicture(surface, x, y); } @@ -77,7 +77,7 @@ void adzon() { if (!f.open("dec.mor")) error("Missing file - dec.mor"); - f.read(&g_mem[0x73a2 * 16 + 0], 1 * 1664); + f.read(&g_vm->_mem[0x73a2 * 16 + 0], 1 * 1664); f.close(); } @@ -85,12 +85,12 @@ void adzon() { * Returns the offset within the compressed image data resource of the desired image */ int animof(int ouf, int num) { - int nani = g_mem[kAdrAni * 16 + 1]; + int nani = g_vm->_mem[kAdrAni * 16 + 1]; int aux = num; if (ouf != 1) aux += nani; - int animof_result = (nani << 2) + 2 + READ_BE_UINT16(&g_mem[kAdrAni * 16 + (aux << 1)]); + int animof_result = (nani << 2) + 2 + READ_BE_UINT16(&g_vm->_mem[kAdrAni * 16 + (aux << 1)]); return animof_result; } @@ -185,13 +185,6 @@ void ecr3(Common::String text) { g_vm->_screenSurface.drawString(text, 5); } -void stop() { - hirs(); - g_vm->_currGraphicalDevice = MODE_AMSTRAD1512; - hirs(); - g_vm->quitGame(); -} - void paint_rect(int x, int y, int dx, int dy) { int co; @@ -460,7 +453,7 @@ void aniof(int ouf, int num) { int offset = animof(ouf, num); GfxSurface surface; - surface.decode(&g_mem[ad * 16 + offset]); + surface.decode(&g_vm->_mem[ad * 16 + offset]); g_vm->_screenSurface.drawPicture(surface, 0, 12); g_vm->prepareScreenType1(); @@ -590,7 +583,7 @@ void tsort() { g_vm->_touv[cx] = chr(0); g_ment = 0; g_iouv = 0; - g_mchai = 0; + g_vm->_mchai = 0; debloc(g_vm->_coreVar._currPlace); } @@ -658,7 +651,7 @@ void premtet() { /* NIVEAU 5 */ void ajchai() { - int cy = kAcha + ((g_mchai - 1) * 10) - 1; + int cy = kAcha + ((g_vm->_mchai - 1) * 10) - 1; int cx = 0; do { ++cx; @@ -743,7 +736,7 @@ void tsuiv() { int tbcl; int cl; - int cy = kAcha + ((g_mchai - 1) * 10) - 1; + int cy = kAcha + ((g_vm->_mchai - 1) * 10) - 1; int cx = 0; do { ++cx; diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 03a4c0f757..30b0cafb47 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -54,7 +54,6 @@ extern void text1(int x, int y, int nb, int m); extern void initouv(); extern void ecr2(Common::String str_); extern void ecr3(Common::String text); -extern void stop(); extern void paint_rect(int x, int y, int dx, int dy); /* NIVEAU 12 */ extern void modobj(int m); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index ffad259f9d..05d6e05a56 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -541,7 +541,7 @@ Common::Error MortevielleEngine::run() { */ void MortevielleEngine::showIntroduction() { f3f8::aff50(false); - g_mlec = 0; + _speechManager._mlec = 0; f3f8::checkForF8(142, false); CHECK_QUIT; @@ -1656,7 +1656,7 @@ void MortevielleEngine::loseGame() { initouv(); g_ment = 0; g_iouv = 0; - g_mchai = 0; + _mchai = 0; _menu.unsetSearchMenu(); if (!_blo) t11(MANOR_FRONT); @@ -1870,7 +1870,7 @@ void MortevielleEngine::gameLoaded() { g_ment = 0; _syn = true; _heroSearching = true; - g_mchai = 0; + _mchai = 0; _manorDistance = 0; initouv(); g_iouv = 0; @@ -2303,8 +2303,8 @@ void MortevielleEngine::setPal(int n) { case MODE_EGA: case MODE_AMSTRAD1512: for (int i = 1; i <= 16; ++i) { - g_mem[(0x7000 * 16) + (2 * i)] = _stdPal[n][i].x; - g_mem[(0x7000 * 16) + (2 * i) + 1] = _stdPal[n][i].y; + g_vm->_mem[(0x7000 * 16) + (2 * i)] = _stdPal[n][i].x; + g_vm->_mem[(0x7000 * 16) + (2 * i) + 1] = _stdPal[n][i].y; } break; case MODE_CGA: { @@ -2332,12 +2332,12 @@ void MortevielleEngine::setPal(int n) { void MortevielleEngine::displayCGAPattern(int n, Pattern p, nhom *pal) { int addr = n * 404 + 0xd700; - WRITE_LE_UINT16(&g_mem[0x6000 * 16 + addr], p._tax); - WRITE_LE_UINT16(&g_mem[0x6000 * 16 + addr + 2], p._tay); + WRITE_LE_UINT16(&g_vm->_mem[0x6000 * 16 + addr], p._tax); + WRITE_LE_UINT16(&g_vm->_mem[0x6000 * 16 + addr + 2], p._tay); addr += 4; for (int i = 0; i < p._tax; ++i) { for (int j = 0; j < p._tay; ++j) - g_mem[(0x6000 * 16) + addr + j * p._tax + i] = pal[n]._hom[p._des[i + 1][j + 1]]; + g_vm->_mem[(0x6000 * 16) + addr + j * p._tax + i] = pal[n]._hom[p._des[i + 1][j + 1]]; } } @@ -2443,7 +2443,7 @@ void MortevielleEngine::loadBRUIT5() { if (!f.open("bruit5")) error("Missing file - bruit5"); - f.read(&g_mem[kAdrNoise5 * 16 + 0], 149 * 128); + f.read(&g_vm->_mem[kAdrNoise5 * 16 + 0], 149 * 128); f.close(); } @@ -2486,12 +2486,12 @@ void MortevielleEngine::music() { if (!fic.open("mort.img")) error("Missing file - mort.img"); - fic.read(&g_mem[0x3800 * 16 + 0], 500); - fic.read(&g_mem[0x47a0 * 16 + 0], 123); + fic.read(&g_vm->_mem[0x3800 * 16 + 0], 500); + fic.read(&g_vm->_mem[0x47a0 * 16 + 0], 123); fic.close(); - _soundManager.decodeMusic(&g_mem[0x3800 * 16], &g_mem[0x5000 * 16], 623); - _addfix = (float)((kTempoMusic - g_addv[1])) / 256; + _soundManager.decodeMusic(&g_vm->_mem[0x3800 * 16], &g_vm->_mem[0x5000 * 16], 623); + _addfix = (float)((kTempoMusic - 8)) / 256; _speechManager.cctable(_speechManager._tbi); bool fin = false; @@ -2544,7 +2544,7 @@ void MortevielleEngine::draw(int ad, int x, int y) { void MortevielleEngine::drawRightFrame() { setPal(89); if (_currGraphicalDevice == MODE_HERCULES) { - g_mem[0x7000 * 16 + 14] = 15; + g_vm->_mem[0x7000 * 16 + 14] = 15; } _mouse.hideMouse(); pictout(0x73a2, 0, 0, 0); @@ -2791,4 +2791,13 @@ Common::String MortevielleEngine::copy(const Common::String &s, int idx, size_t return result; } +void MortevielleEngine::hirs() { + // Note: The original used this to set the graphics mode and clear the screen, both at + // the start of the game, and whenever the screen need to be cleared. As such, this + // method is deprecated in favour of clearing the screen + debugC(1, kMortevielleCore, "TODO: hirs is deprecated in favour of ScreenSurface::clearScreen"); + + g_vm->_screenSurface.clearScreen(); +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 46795e682a..69cb12ab67 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -123,6 +123,11 @@ struct SaveStruct { byte _fullHour; }; +struct Hint { + int _hintId; + byte _point; +}; + class MortevielleEngine : public Engine { private: const ADGameDescription *_gameDescription; @@ -211,17 +216,20 @@ public: int _day; int _hour; int _minute; + int _mchai; float _addfix; - - int _numpal; - + SaveStruct _coreVar, _saveStruct; Common::Point _stdPal[91][17]; t_pcga _cgaPal[91]; + int _c_zzz; int ptr_word; byte _v_lieu[7][25]; - SaveStruct _coreVar, _saveStruct; byte g_is; + int _numpal; + + // TODO: Replace the following with proper implementations, or refactor out the code using them + byte _mem[65536 * 16]; ScreenSurface _screenSurface; PaletteManager _paletteManager; @@ -374,7 +382,7 @@ public: void prepareRoom(); void drawClock(); Common::String copy(const Common::String &s, int idx, size_t size); - + void hirs(); }; extern MortevielleEngine *g_vm; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 301072391e..bd7e489aa9 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -57,10 +57,10 @@ void MouseHandler::hideMouse() { int k = 0; j = ((uint)_pos.y >> 1) * 80 + ((uint)_pos.x >> 2); do { - WRITE_LE_UINT16(&g_mem[0xb000 * 16 + j], s_s[0][k]); - WRITE_LE_UINT16(&g_mem[0xb800 * 16 + j + 2], s_s[1][k]); - WRITE_LE_UINT16(&g_mem[0xba00 * 16 + j], s_s[2][k]); - WRITE_LE_UINT16(&g_mem[0xba00 * 16 + j + 2], s_s[3][k]); + WRITE_LE_UINT16(&g_vm->_mem[0xb000 * 16 + j], s_s[0][k]); + WRITE_LE_UINT16(&g_vm->_mem[0xb800 * 16 + j + 2], s_s[1][k]); + WRITE_LE_UINT16(&g_vm->_mem[0xba00 * 16 + j], s_s[2][k]); + WRITE_LE_UINT16(&g_vm->_mem[0xba00 * 16 + j + 2], s_s[3][k]); j += 80; ++k; } while (k < 5); @@ -69,15 +69,15 @@ void MouseHandler::hideMouse() { case MODE_AMSTRAD1512: { bool imp = odd(_pos.y); for (int i = 0; i <= 3; ++i) { - g_port[0x3dd] = 1 << i; + _port[0x3dd] = 1 << i; int k = 0; j = 0; do { if (imp) { - WRITE_LE_UINT16(&g_mem[0xb800 * 16 + j], s_s[i][k]); + WRITE_LE_UINT16(&g_vm->_mem[0xb800 * 16 + j], s_s[i][k]); j += 80 - 0x2000; } else { - WRITE_LE_UINT16(&g_mem[0xb800 * 16 + j], s_s[i][k]); + WRITE_LE_UINT16(&g_vm->_mem[0xb800 * 16 + j], s_s[i][k]); j += 0x2000; } imp = !imp; @@ -87,22 +87,22 @@ void MouseHandler::hideMouse() { break; } case MODE_EGA: { - g_port[0x3c4] = 2; - g_port[0x3ce] = 8; - g_port[0x3cf] = 255; + _port[0x3c4] = 2; + _port[0x3ce] = 8; + _port[0x3cf] = 255; int i = 0; do { - g_port[0x3c5] = 1 << i; + _port[0x3c5] = 1 << i; int k = 0; j = 0; do { // Useless ? // ps = mem[0xa000 * 16 + j]; - g_mem[0xa000 * 16 + j] = lo(s_s[i][k]); + g_vm->_mem[0xa000 * 16 + j] = lo(s_s[i][k]); // Useless ?? // ps = mem[0xa000 * 16 + j + 1]; - g_mem[0xa000 * 16 + j + 1] = hi(s_s[i][k]); + g_vm->_mem[0xa000 * 16 + j + 1] = hi(s_s[i][k]); j += 80; ++k; } while (k < 8); @@ -114,7 +114,7 @@ void MouseHandler::hideMouse() { j = ((uint)_pos.y >> 1) * 80 + ((uint)_pos.x >> 3); for (int i = 0; i <= 5; ++i) { for (int k = 0; k <= 3; ++k) - WRITE_LE_UINT16(&g_mem[0xb000 * 16 + k * 0x200 + j], s_s[i][k]); + WRITE_LE_UINT16(&g_vm->_mem[0xb000 * 16 + k * 0x200 + j], s_s[i][k]); j += 80; } break; @@ -123,8 +123,8 @@ void MouseHandler::hideMouse() { int k = 0; do { for (int i = 0; i <= 3; ++i) { - WRITE_LE_UINT16(&g_mem[0xb800 * 16 + 0x200 * i + j], s_s[k][i + (k << 2)]); - WRITE_LE_UINT16(&g_mem[0xb800 * 16 + 0x200 * i + j + 2], s_s[k + 3][i + (k << 2)]); + WRITE_LE_UINT16(&g_vm->_mem[0xb800 * 16 + 0x200 * i + j], s_s[k][i + (k << 2)]); + WRITE_LE_UINT16(&g_vm->_mem[0xb800 * 16 + 0x200 * i + j + 2], s_s[k + 3][i + (k << 2)]); } j += 160; ++k; @@ -154,10 +154,10 @@ void MouseHandler::showMouse() { k = 0; j = ((uint)_pos.y >> 1) * 80 + ((uint)_pos.x >> 2); do { - s_s[0][k] = READ_LE_UINT16(&g_mem[0xb800 * 16 + j]); - s_s[1][k] = READ_LE_UINT16(&g_mem[0xb800 * 16 + j + 2]); - s_s[2][k] = READ_LE_UINT16(&g_mem[0xba00 * 16 + j]); - s_s[3][k] = READ_LE_UINT16(&g_mem[0xba00 * 16 + j + 2]); + s_s[0][k] = READ_LE_UINT16(&g_vm->_mem[0xb800 * 16 + j]); + s_s[1][k] = READ_LE_UINT16(&g_vm->_mem[0xb800 * 16 + j + 2]); + s_s[2][k] = READ_LE_UINT16(&g_vm->_mem[0xba00 * 16 + j]); + s_s[3][k] = READ_LE_UINT16(&g_vm->_mem[0xba00 * 16 + j + 2]); j += 80; ++k; } while (k < 5); @@ -167,14 +167,14 @@ void MouseHandler::showMouse() { for (i = 0; i <= 3; ++i) { j = 0; imp = odd(_pos.y); - g_port[0x3de] = i; + _port[0x3de] = i; k = 0; do { if (imp) { - s_s[i][k] = READ_LE_UINT16(&g_mem[0xb800 * 16 + j]); + s_s[i][k] = READ_LE_UINT16(&g_vm->_mem[0xb800 * 16 + j]); j += 80 - 0x2000; } else { - s_s[i][k] = READ_LE_UINT16(&g_mem[0xb800 * 16 + j]); + s_s[i][k] = READ_LE_UINT16(&g_vm->_mem[0xb800 * 16 + j]); j += 0x2000; } imp = !imp; @@ -184,14 +184,14 @@ void MouseHandler::showMouse() { break; } case MODE_EGA: - g_port[0x3ce] = 4; + _port[0x3ce] = 4; l = 0; do { - g_port[0x3cf] = l; + _port[0x3cf] = l; k = 0; j = 0; do { - s_s[l][k] = g_mem[0xa000 * 16 + j] + (g_mem[(0xa000 * 16) + j + 1] << 8); + s_s[l][k] = g_vm->_mem[0xa000 * 16 + j] + (g_vm->_mem[(0xa000 * 16) + j + 1] << 8); j += 80; ++k; } while (k < 8); @@ -202,7 +202,7 @@ void MouseHandler::showMouse() { j = ((uint)_pos.y >> 1) * 80 + ((uint)_pos.x >> 3); for (i = 0; i <= 5; ++i) { for (k = 0; k <= 3; ++k) - s_s[i][k] = READ_LE_UINT16(&g_mem[0xb000 * 16 + k * 0x200 + j]); + s_s[i][k] = READ_LE_UINT16(&g_vm->_mem[0xb000 * 16 + k * 0x200 + j]); j += 80; } break; @@ -211,8 +211,8 @@ void MouseHandler::showMouse() { k = 0; do { for (i = 0; i <= 3; ++i) { - s_s[k][i + (k << 2)] = READ_LE_UINT16(&g_mem[0xb800 * 16 + 0x200 * i + j]); - s_s[k + 3][i + (k << 2)] = READ_LE_UINT16(&g_mem[0xb800 * 16 + 0x200 * i + j + 2]); + s_s[k][i + (k << 2)] = READ_LE_UINT16(&g_vm->_mem[0xb800 * 16 + 0x200 * i + j]); + s_s[k + 3][i + (k << 2)] = READ_LE_UINT16(&g_vm->_mem[0xb800 * 16 + 0x200 * i + j + 2]); } j += 160; ++k; diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index 0bf46d926d..b570f8913c 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -36,7 +36,8 @@ class MouseHandler { private: int s_s[12][6]; int _counter; - + // TODO: Replace the following with proper implementations, or refactor out the code using them + int _port[0xfff]; public: Common::Point _pos; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index bb57ac07e6..8a3ecb8041 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -37,6 +37,7 @@ namespace Mortevielle { typedef unsigned char uchar; +const byte _rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; static int l_motsuiv(int p, const char *ch, int &tab) { int c = p; @@ -140,14 +141,14 @@ void chardes(Common::String filename, int32 skipSize, int length) { int totalLength = length + remainingSkipSize; int memIndx = 0x6000 * 16; while (totalLength > 0) { - f.read(&g_mem[memIndx], 128); + f.read(&g_vm->_mem[memIndx], 128); totalLength -= 128; memIndx += 128; } f.close(); for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) - g_mem[0x7000 * 16 + i - remainingSkipSize] = g_mem[0x6000 * 16 + i]; + g_vm->_mem[0x7000 * 16 + i - remainingSkipSize] = g_vm->_mem[0x6000 * 16 + i]; } void charani(Common::String filename, int32 skipSize, int length) { @@ -167,14 +168,14 @@ void charani(Common::String filename, int32 skipSize, int length) { int fullLength = length + remainingSkipSize; int memIndx = 0x6000 * 16; while (fullLength > 0) { - f.read(&g_mem[memIndx], 128); + f.read(&g_vm->_mem[memIndx], 128); fullLength -= 128; memIndx += 128; } f.close(); for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) - g_mem[kAdrAni * 16 + i - remainingSkipSize] = g_mem[0x6000 * 16 + i]; + g_vm->_mem[kAdrAni * 16 + i - remainingSkipSize] = g_vm->_mem[0x6000 * 16 + i]; } void taffich() { @@ -298,7 +299,7 @@ void taffich() { chardes(filename, lgt, handle); if (g_vm->_currGraphicalDevice == MODE_HERCULES) { for (int i = 0; i <= 15; ++i) { - int palh = READ_LE_UINT16(&g_mem[(0x7000 * 16) + ((i + 1) << 1)]); + int palh = READ_LE_UINT16(&g_vm->_mem[(0x7000 * 16) + ((i + 1) << 1)]); alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); } for (int i = 0; i <= 15; ++i) { @@ -306,7 +307,7 @@ void taffich() { for (int j = 0; j <= 15; ++j) if (alllum[j] > alllum[k]) k = j; - g_mem[(0x7000 * 16) + 2 + (k << 1)] = g_rang[i]; + g_vm->_mem[(0x7000 * 16) + 2 + (k << 1)] = _rang[i]; alllum[k] = -1; } } diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 7d235cd6e5..d8731f96ac 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -35,6 +35,28 @@ namespace Mortevielle { +const byte _tnocon[364] = { + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +const byte _intcon[26] = {1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}; +const byte _typcon[26] = {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3}; +const byte _tabdph[16] = {0, 10, 2, 0, 2, 10, 3, 0, 3, 7, 5, 0, 6, 7, 7, 10}; +const byte _tabdbc[18] = {7, 23, 7, 14, 13, 9, 14, 9, 5, 12, 6, 12, 13, 4, 0, 4, 5, 9}; + SpeechManager::SpeechManager() { _typlec = 0; _phonemeNumb = 0; @@ -53,7 +75,7 @@ void SpeechManager::spfrac(int wor) { } void SpeechManager::charg_car(int &currWordNumb) { - int wor = swap(READ_LE_UINT16(&g_mem[kAdrWord + currWordNumb])); + int wor = swap(READ_LE_UINT16(&g_vm->_mem[kAdrWord + currWordNumb])); int int_ = wor & 0x3f; // 63 if ((int_ >= 0) && (int_ <= 13)) { @@ -65,7 +87,7 @@ void SpeechManager::charg_car(int &currWordNumb) { } else if ((int_ >= 22) && (int_ <= 47)) { int_ = int_ - 22; _queue[2]._val = int_; - _queue[2]._code = g_typcon[int_]; + _queue[2]._code = _typcon[int_]; } else if ((int_ >= 48) && (int_ <= 56)) { _queue[2]._val = int_ - 22; _queue[2]._code = 4; @@ -93,7 +115,7 @@ void SpeechManager::charg_car(int &currWordNumb) { void SpeechManager::entroct(byte o) { - g_mem[kAdrTroct * 16 + _ptr_oct] = o; + g_vm->_mem[kAdrTroct * 16 + _ptr_oct] = o; ++_ptr_oct; } @@ -115,7 +137,7 @@ void SpeechManager::regenbruit() { int i = kOffsetB3 + 8590; int j = 0; do { - _cfiphBuffer[j] = READ_LE_UINT16(&g_mem[kAdrNoise3 + i]); + _cfiphBuffer[j] = READ_LE_UINT16(&g_vm->_mem[kAdrNoise3 + i]); i += 2; ++j; } while (i < kOffsetB3 + 8790); @@ -131,9 +153,9 @@ void SpeechManager::loadMusicSound() { if (!f.open("sonmus.mor")) error("Missing file - sonmus.mor"); - f.read(&g_mem[0x7414 * 16 + 0], 273); + f.read(&g_vm->_mem[0x7414 * 16 + 0], 273); - g_vm->_soundManager.decodeMusic(&g_mem[0x7414 * 16], &g_mem[kAdrNoise * 16], 273); + g_vm->_soundManager.decodeMusic(&g_vm->_mem[0x7414 * 16], &g_vm->_mem[kAdrNoise * 16], 273); f.close(); } @@ -164,10 +186,10 @@ void SpeechManager::loadNoise() { if (!f.open("bruits")) //Translation: "noise" error("Missing file - bruits"); - f.read(&g_mem[kAdrNoise * 16 + 0], 250); + f.read(&g_vm->_mem[kAdrNoise * 16 + 0], 250); for (i = 0; i <= 19013; ++i) - g_mem[kAdrNoise * 16 + 32000 + i] = g_mem[kAdrNoise5 + i]; - f.read(&g_mem[kAdrNoise1 * 16 + kOffsetB1], 149); + g_vm->_mem[kAdrNoise * 16 + 32000 + i] = g_vm->_mem[kAdrNoise5 + i]; + f.read(&g_vm->_mem[kAdrNoise1 * 16 + kOffsetB1], 149); f.close(); } @@ -185,7 +207,7 @@ void SpeechManager::trait_car() { case 5: case 6: if (_queue[1]._code == 6) - d3 = g_tabdph[(_queue[1]._val - 14) << 1]; + d3 = _tabdph[(_queue[1]._val - 14) << 1]; else d3 = kNullValue; if (_queue[0]._code >= 5) { @@ -315,7 +337,7 @@ void SpeechManager::trait_car() { veracf(_queue[2]._acc); if (_queue[2]._code == 6) { entroct(4); - entroct(g_tabdph[(_queue[2]._val - 14) << 1]); + entroct(_tabdph[(_queue[2]._val - 14) << 1]); entroct(_queue[1]._val); } else { entroct(4); @@ -337,7 +359,7 @@ void SpeechManager::trait_car() { d2 = 8; break; case 6: - d2 = g_tabdph[(_queue[2]._val - 14) << 1]; + d2 = _tabdph[(_queue[2]._val - 14) << 1]; break; case 5: d2 = _queue[2]._val; @@ -347,7 +369,7 @@ void SpeechManager::trait_car() { break; } // switch c3._code d2 = (d2 * 26) + _queue[1]._val; - if (g_tnocon[d2] == 0) + if (_tnocon[d2] == 0) d3 = 2; else d3 = 6; @@ -393,7 +415,7 @@ void SpeechManager::trait_car() { d2 = 8; break; case 6: - d2 = g_tabdph[(_queue[2]._val - 14) << 1]; + d2 = _tabdph[(_queue[2]._val - 14) << 1]; break; case 5: d2 = _queue[2]._val; @@ -405,7 +427,7 @@ void SpeechManager::trait_car() { if (d2 == 4) d2 = 3; - if (g_intcon[_queue[1]._val] != 0) + if (_intcon[_queue[1]._val] != 0) ++_queue[1]._val; if ((_queue[1]._val == 17) || (_queue[1]._val == 18)) @@ -442,7 +464,7 @@ void SpeechManager::trait_car() { d2 = 8; break; case 6: - d2 = g_tabdph[(_queue[2]._val - 14) << 1]; + d2 = _tabdph[(_queue[2]._val - 14) << 1]; break; case 5: d2 = _queue[2]._val; @@ -455,12 +477,12 @@ void SpeechManager::trait_car() { if (d2 == 4) d2 = 3; - if (g_intcon[_queue[1]._val] != 0) + if (_intcon[_queue[1]._val] != 0) ++_queue[1]._val; entroct(4); entroct(d2); - entroct(g_tabdbc[((_queue[1]._val - 26) << 1) + 1]); + entroct(_tabdbc[((_queue[1]._val - 26) << 1) + 1]); } break; @@ -503,7 +525,7 @@ void SpeechManager::handlePhoneme() { int endPos = swap(_cfiphBuffer[_phonemeNumb]) + deca[_typlec]; int wordCount = endPos - startPos; for (int i = (uint)startPos >> 1, currWord = 0; i < (int)((uint)endPos >> 1); i++, currWord += 2) - WRITE_LE_UINT16(&g_mem[kAdrWord + currWord], _cfiphBuffer[i]); + WRITE_LE_UINT16(&g_vm->_mem[kAdrWord + currWord], _cfiphBuffer[i]); _ptr_oct = 0; int currWord = 0; @@ -542,7 +564,7 @@ void SpeechManager::startSpeech(int rep, int ht, int typ) { tempo = kTempoF; else tempo = kTempoM; - g_vm->_addfix = (float)((tempo - g_addv[0])) / 256; + g_vm->_addfix = (float)((tempo - 8)) / 256; cctable(_tbi); switch (typ) { case 1: @@ -562,7 +584,7 @@ void SpeechManager::startSpeech(int rep, int ht, int typ) { if (_typlec != 0) for (int i = 0; i <= 500; ++i) { _cfiphBuffer[i] = savph[i]; - g_mlec = _typlec; + _mlec = _typlec; } g_vm->setPal(g_vm->_numpal); } diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h index 9eccd04d5f..6521fd9927 100644 --- a/engines/mortevielle/speech.h +++ b/engines/mortevielle/speech.h @@ -75,6 +75,7 @@ private: public: int _cfiphBuffer[6401]; int _tbi[256]; + int _mlec; SpeechManager(); void spfrac(int wor); diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index b6cc46c93e..6fc0593d65 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -33,35 +33,6 @@ namespace Mortevielle { -/*---------------------------------------------------------------------------*/ -/*------------------------------ CONSTANTS ------------------------------*/ -/*---------------------------------------------------------------------------*/ - -const byte g_tabdbc[18] = {7, 23, 7, 14, 13, 9, 14, 9, 5, 12, 6, 12, 13, 4, 0, 4, 5, 9}; -const byte g_tabdph[16] = {0, 10, 2, 0, 2, 10, 3, 0, 3, 7, 5, 0, 6, 7, 7, 10}; -const byte g_typcon[26] = {0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3}; -const byte g_intcon[26] = {1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}; -const byte g_tnocon[364] = { - 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 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, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - -const byte g_addv[2] = {8, 8}; - -const byte g_rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; - /*---------------------------------------------------------------------------*/ /*------------------------------ VARIABLES ------------------------------*/ /*---------------------------------------------------------------------------*/ @@ -86,11 +57,8 @@ int g_x, g_iouv, g_ctrm, g_dobj, - g_msg3, - g_msg4, g_mlec, g_mchai, - g_menup, g_mpers, g_perdep, g_prebru; @@ -99,22 +67,6 @@ int g_x, /*-------------------- PROCEDURES AND FONCTIONS -----------------------*/ /*---------------------------------------------------------------------------*/ -void hirs() { - // Note: The original used this to set the graphics mode and clear the screen, both at - // the start of the game, and whenever the screen need to be cleared. As such, this - // method is deprecated in favour of clearing the screen - debugC(1, kMortevielleCore, "TODO: hirs is deprecated in favour of ScreenSurface::clearScreen"); - - g_vm->_screenSurface.clearScreen(); -} - -/*---------------------------------------------------------------------------*/ -/*------------------------------ STUBS ------------------------------*/ -/*---------------------------------------------------------------------------*/ - -int g_port[0xfff]; -byte g_mem[65536 * 16]; - void musyc(tablint &tb, int nbseg, int att) { warning("TODO: musyc"); } diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 26e4edde27..9ac807aa95 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -101,19 +101,6 @@ enum places { DOOR = 25, ROOM26 = 26, ROOM27 = 27 }; -extern const byte g_tabdbc[18]; -extern const byte g_tabdph[16]; -extern const byte g_typcon[26]; -extern const byte g_intcon[26]; -extern const byte g_tnocon[364]; -extern const byte g_addv[2]; -extern const byte g_rang[16]; - -struct Hint { - int _hintId; - byte _point; -}; - struct Rect { int _x1, _x2, _y1, _y2; bool _enabled; @@ -152,30 +139,10 @@ extern int g_x, g_iouv, g_ctrm, g_dobj, - g_msg3, - g_msg4, - g_mlec, - g_mchai, - g_menup, g_mpers, g_perdep, g_prebru; -/*---------------------------------------------------------------------------*/ -/*------------------- PROCEDURES AND FONCTIONS ------------------------*/ -/*---------------------------------------------------------------------------*/ - -void hirs(); -void Val(const Common::String &s, int &V, int Code); - -/*---------------------------------------------------------------------------*/ -/*------------------------------ STUBS ------------------------------*/ -/*---------------------------------------------------------------------------*/ -// TODO: Replace the following with proper implementations, or refactor out the code using them - -extern int g_port[0xfff]; -extern byte g_mem[65536 * 16]; - } // End of namespace Mortevielle #endif -- cgit v1.2.3 From cdcb8d3645e86cac1f42ee5015b67521129efaf7 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 23 Mar 2012 23:26:27 +0100 Subject: MORTEVIELLE: More renaming, add a piece of code to improve CGA/EGA switching --- engines/mortevielle/actions.cpp | 608 ++++++++++++++++++------------------ engines/mortevielle/dialogs.cpp | 41 ++- engines/mortevielle/graphics.cpp | 6 +- engines/mortevielle/menu.cpp | 34 +- engines/mortevielle/mor.cpp | 408 ++++++------------------ engines/mortevielle/mor.h | 17 +- engines/mortevielle/mortevielle.cpp | 403 ++++++++++++++++++------ engines/mortevielle/mortevielle.h | 44 ++- engines/mortevielle/mouse.cpp | 22 +- engines/mortevielle/outtext.cpp | 32 +- engines/mortevielle/speech.cpp | 8 +- engines/mortevielle/var_mor.cpp | 30 -- engines/mortevielle/var_mor.h | 28 -- 13 files changed, 828 insertions(+), 853 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 1c3314fe90..174af9fd1a 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -44,7 +44,7 @@ namespace Mortevielle { void MortevielleEngine::fctMove() { if ((_coreVar._currPlace == ROOM26) && (_msg[4] == _menu._moveMenu[6])) { _coreVar._currPlace = LANDING; - g_caff = _coreVar._currPlace; + _caff = _coreVar._currPlace; afdes(); repon(2, _coreVar._currPlace); } @@ -61,26 +61,26 @@ void MortevielleEngine::fctMove() { tcoord(1); - if (g_num == 0) + if (_num == 0) return; - if (g_num == 1) { + if (_num == 1) { _coreVar._currPlace = OWN_ROOM; _menu.setDestinationMenuText(OWN_ROOM); - } else if (g_num == 7) { + } else if (_num == 7) { _coreVar._currPlace = ATTIC; _menu.setDestinationMenuText(ATTIC); } - if (g_num != 6) + if (_num != 6) _coreVar._currPlace = ROOM26; - if ((g_num > 1) && (g_num < 6)) - g_ment = g_num - 1; - else if (g_num > 7) - g_ment = g_num - 3; + if ((_num > 1) && (_num < 6)) + _ment = _num - 1; + else if (_num > 7) + _ment = _num - 3; - if (g_num != 6) + if (_num != 6) affrep(); else showMoveMenuAlert(); @@ -160,11 +160,11 @@ void MortevielleEngine::fctMove() { gotoManorBack(); else if (menuChoice == 17) { if ((_coreVar._wellObjectId != 120) && (_coreVar._wellObjectId != 140)) - g_crep = 997; + _crep = 997; else if (_coreVar._wellObjectId == 120) - g_crep = 181; + _crep = 181; else if (_coreVar._faithScore > 80) { - g_crep = 1505; + _crep = 1505; loseGame(); } else { _coreVar._currPlace = INSIDE_WELL; @@ -182,19 +182,19 @@ void MortevielleEngine::fctMove() { * @remarks Originally called 'tprendre' */ void MortevielleEngine::fctTake() { - if (g_caff > 99) { - int cx = g_caff; + if (_caff > 99) { + int cx = _caff; avpoing(cx); - if (g_crep != 139) { + if (_crep != 139) { if (_currBitIndex > 0) _coreVar._faithScore += 3; if (_obpart) { if (_coreVar._currPlace == PURPLE_ROOM) _coreVar._purpleRoomObjectId = 0; if (_coreVar._currPlace == ATTIC) { - if (_coreVar._atticBallHoleObjectId == g_caff) + if (_coreVar._atticBallHoleObjectId == _caff) _coreVar._atticBallHoleObjectId = 0; - if (_coreVar._atticRodHoleObjectId == g_caff) + if (_coreVar._atticRodHoleObjectId == _caff) _coreVar._atticRodHoleObjectId = 0; } if (_coreVar._currPlace == CELLAR) @@ -209,12 +209,12 @@ void MortevielleEngine::fctTake() { _obpart = false; affrep(); } else { - _tabdon[kAcha + ((_mchai - 1) * 10) + g_cs - 1] = 0; + _tabdon[kAcha + ((_mchai - 1) * 10) + _cs - 1] = 0; tsuiv(); - ++g_dobj; - if (g_dobj > 6) { + ++_dobj; + if (_dobj > 6) { _coreVar._faithScore += 2; - g_dobj = 0; + _dobj = 0; } } } @@ -225,35 +225,35 @@ void MortevielleEngine::fctTake() { tfleche(); if ((_anyone) || (_keyPressedEsc)) return; - if (g_caff == 3) { + if (_caff == 3) { tcoord(2); - if (g_num == 1) { - g_crep = 152; + if (_num == 1) { + _crep = 152; return; } } tcoord(5); - if ((g_num == 0) || ((g_num == 1) && (_coreVar._currPlace == CRYPT))) { + if ((_num == 0) || ((_num == 1) && (_coreVar._currPlace == CRYPT))) { tcoord(8); - if (g_num != 0) { + if (_num != 0) { if (_currBitIndex > 0) _coreVar._faithScore += 3; - g_crep = 997; + _crep = 997; if ((_coreVar._currPlace == PURPLE_ROOM) && (_coreVar._purpleRoomObjectId != 0)) avpoing(_coreVar._purpleRoomObjectId); - if ((_coreVar._currPlace == ATTIC) && (g_num == 1) && (_coreVar._atticBallHoleObjectId != 0)) { + if ((_coreVar._currPlace == ATTIC) && (_num == 1) && (_coreVar._atticBallHoleObjectId != 0)) { avpoing(_coreVar._atticBallHoleObjectId); - if ((g_crep != 997) && (g_crep != 139)) + if ((_crep != 997) && (_crep != 139)) aniof(2, 7); } - if ((_coreVar._currPlace == ATTIC) && (g_num == 2) && (_coreVar._atticRodHoleObjectId != 0)) { + if ((_coreVar._currPlace == ATTIC) && (_num == 2) && (_coreVar._atticRodHoleObjectId != 0)) { avpoing(_coreVar._atticRodHoleObjectId); - if ((g_crep != 997) && (g_crep != 139)) + if ((_crep != 997) && (_crep != 139)) aniof(2, 6); } if ((_coreVar._currPlace == CELLAR) && (_coreVar._cellarObjectId != 0)) { avpoing(_coreVar._cellarObjectId); - if ((g_crep != 997) && (g_crep != 139)) + if ((_crep != 997) && (_crep != 139)) aniof(2, 2); } if ((_coreVar._currPlace == CRYPT) && (_coreVar._cryptObjectId != 0)) @@ -261,40 +261,40 @@ void MortevielleEngine::fctTake() { if ((_coreVar._currPlace == SECRET_PASSAGE) && (_coreVar._secretPassageObjectId != 0)) { avpoing(_coreVar._secretPassageObjectId); - if ((g_crep != 997) && (g_crep != 139)) { - g_crep = 182; + if ((_crep != 997) && (_crep != 139)) { + _crep = 182; aniof(2, 1); } } if ((_coreVar._currPlace == WELL) && (_coreVar._wellObjectId != 0)) { avpoing(_coreVar._wellObjectId); - if ((g_crep != 997) && (g_crep != 139)) + if ((_crep != 997) && (_crep != 139)) aniof(2, 1); } - if ((g_crep != 997) && (g_crep != 182) && (g_crep != 139)) - g_crep = 999; + if ((_crep != 997) && (_crep != 182) && (_crep != 139)) + _crep = 999; } } else { - if ( ((_coreVar._currPlace == OWN_ROOM) && (g_num == 3)) - || ((_coreVar._currPlace == GREEN_ROOM) && (g_num == 4)) - || ((_coreVar._currPlace == PURPLE_ROOM) && (g_num == 1)) - || ((_coreVar._currPlace == DARKBLUE_ROOM) && (g_num == 3)) - || ((_coreVar._currPlace == BLUE_ROOM) && (g_num == 6)) - || ((_coreVar._currPlace == RED_ROOM) && (g_num == 2)) - || ((_coreVar._currPlace == BATHROOM) && (g_num == 6)) - || ((_coreVar._currPlace == GREEN_ROOM2) && (g_num == 4)) - || ((_coreVar._currPlace == ROOM9) && (g_num == 4)) - || ((_coreVar._currPlace == DINING_ROOM) && (g_num > 2)) - || ((_coreVar._currPlace == BUREAU) && (g_num == 7)) - || ((_coreVar._currPlace == KITCHEN) && (g_num == 6)) - || ((_coreVar._currPlace == ATTIC) && (g_num > 4)) + if ( ((_coreVar._currPlace == OWN_ROOM) && (_num == 3)) + || ((_coreVar._currPlace == GREEN_ROOM) && (_num == 4)) + || ((_coreVar._currPlace == PURPLE_ROOM) && (_num == 1)) + || ((_coreVar._currPlace == DARKBLUE_ROOM) && (_num == 3)) + || ((_coreVar._currPlace == BLUE_ROOM) && (_num == 6)) + || ((_coreVar._currPlace == RED_ROOM) && (_num == 2)) + || ((_coreVar._currPlace == BATHROOM) && (_num == 6)) + || ((_coreVar._currPlace == GREEN_ROOM2) && (_num == 4)) + || ((_coreVar._currPlace == ROOM9) && (_num == 4)) + || ((_coreVar._currPlace == DINING_ROOM) && (_num > 2)) + || ((_coreVar._currPlace == BUREAU) && (_num == 7)) + || ((_coreVar._currPlace == KITCHEN) && (_num == 6)) + || ((_coreVar._currPlace == ATTIC) && (_num > 4)) || ((_coreVar._currPlace > ATTIC) && (_coreVar._currPlace != INSIDE_WELL)) ) - g_crep = 997; + _crep = 997; else if (_coreVar._currPlace == INSIDE_WELL) { - g_crep = 1504; + _crep = 1504; loseGame(); } else - g_crep = 120; + _crep = 120; } } /** @@ -319,7 +319,7 @@ void MortevielleEngine::fctInventoryTake() { _coreVar._sjer[cy] = chr(0); modinv(); avpoing(cz); - g_crep = 998; + _crep = 998; clearScreenType2(); } @@ -334,12 +334,12 @@ void MortevielleEngine::fctLift() { if ((_anyone) || (_keyPressedEsc)) return; tcoord(3); - if (g_num == 0) { + if (_num == 0) { tcoord(8); - if (g_num != 0) { + if (_num != 0) { if (_currBitIndex > 0) ++_coreVar._faithScore; - g_crep = 997; + _crep = 997; if ((_coreVar._currPlace == PURPLE_ROOM) && (_coreVar._purpleRoomObjectId != 0)) treg(_coreVar._purpleRoomObjectId); } @@ -352,9 +352,9 @@ void MortevielleEngine::fctLift() { tmpPlace = 14; else if (_coreVar._currPlace == MOUNTAIN) tmpPlace = 15; - g_crep = _tabdon[asoul + (tmpPlace << 3) + (g_num - 1)]; - if (g_crep == 255) - g_crep = 997; + _crep = _tabdon[asoul + (tmpPlace << 3) + (_num - 1)]; + if (_crep == 255) + _crep = 997; } /** @@ -362,16 +362,16 @@ void MortevielleEngine::fctLift() { * @remarks Originally called 'tlire' */ void MortevielleEngine::fctRead() { - if (g_caff > 99) - st4(g_caff); + if (_caff > 99) + st4(_caff); else { if (!_syn) ecr3(getEngineString(S_READ)); tfleche(); if (!(_anyone) && !(_keyPressedEsc)) { tcoord(4); - if (g_num != 0) - g_crep = 107; + if (_num != 0) + _crep = 107; } } } @@ -382,7 +382,7 @@ void MortevielleEngine::fctRead() { */ void MortevielleEngine::fctSelfRead() { if (_coreVar._selectedObjectId == 0) - g_crep = 186; + _crep = 186; else st4(_coreVar._selectedObjectId); } @@ -394,8 +394,8 @@ void MortevielleEngine::fctSelfRead() { void MortevielleEngine::fctLook() { int cx; - if (g_caff > 99) { - g_crep = 103; + if (_caff > 99) { + _crep = 103; return; } if (!_syn) @@ -404,35 +404,35 @@ void MortevielleEngine::fctLook() { if ((_anyone) || (_keyPressedEsc)) return; tcoord(5); - if (g_num == 0) { + if (_num == 0) { tcoord(8); - g_crep = 131; - if (g_num != 0) { + _crep = 131; + if (_num != 0) { if (_coreVar._currPlace == ATTIC) { - if (g_num == 1) { - g_crep = 164; + if (_num == 1) { + _crep = 164; if (_coreVar._atticRodHoleObjectId != 0) treg(_coreVar._atticRodHoleObjectId); else if (_coreVar._atticBallHoleObjectId != 0) treg(_coreVar._atticBallHoleObjectId); } else { - g_crep = 193; + _crep = 193; if (_coreVar._atticRodHoleObjectId != 0) treg(_coreVar._atticRodHoleObjectId); } } if (_coreVar._currPlace == CELLAR) { - g_crep = 164; + _crep = 164; if (_coreVar._cellarObjectId != 0) treg(_coreVar._cellarObjectId); } if (_coreVar._currPlace == SECRET_PASSAGE) { - g_crep = 174; + _crep = 174; if (_coreVar._secretPassageObjectId != 0) treg(_coreVar._secretPassageObjectId); } if (_coreVar._currPlace == WELL) { - g_crep = 131; + _crep = 131; if (_coreVar._wellObjectId != 0) treg(_coreVar._wellObjectId); } @@ -446,22 +446,22 @@ void MortevielleEngine::fctLook() { cx -= 4; if (_coreVar._currPlace == ROOM26) cx = 21; - g_crep = _tabdon[arega + (cx * 7) + g_num - 1]; - if ((_coreVar._currPlace == ATTIC) && (g_num == 8)) - g_crep = 126; + _crep = _tabdon[arega + (cx * 7) + _num - 1]; + if ((_coreVar._currPlace == ATTIC) && (_num == 8)) + _crep = 126; if (_coreVar._currPlace == MOUNTAIN) - g_crep = 103; - if (g_crep == 255) - g_crep = 131; - if ((_coreVar._currPlace == GREEN_ROOM) && (g_num == 1)) + _crep = 103; + if (_crep == 255) + _crep = 131; + if ((_coreVar._currPlace == GREEN_ROOM) && (_num == 1)) treg(144); - if ((_coreVar._currPlace == BLUE_ROOM) && (g_num == 3)) + if ((_coreVar._currPlace == BLUE_ROOM) && (_num == 3)) treg(147); - if ((_coreVar._currPlace == GREEN_ROOM2) && (g_num == 3)) + if ((_coreVar._currPlace == GREEN_ROOM2) && (_num == 3)) treg(149); - if ((_coreVar._currPlace == 9) && (g_num == 2)) + if ((_coreVar._currPlace == 9) && (_num == 2)) treg(30); - if ((_coreVar._currPlace == DINING_ROOM) && (g_num == 3)) + if ((_coreVar._currPlace == DINING_ROOM) && (_num == 3)) treg(31); } @@ -473,7 +473,7 @@ void MortevielleEngine::fctSelftLook() { if (_coreVar._selectedObjectId != 0) treg(_coreVar._selectedObjectId); else - g_crep = 186; + _crep = 186; } /** @@ -483,8 +483,8 @@ void MortevielleEngine::fctSelftLook() { void MortevielleEngine::fctSearch() { const byte r[14] = {123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}; - if (g_caff > 99) { - st7(g_caff); + if (_caff > 99) { + st7(_caff); return; } @@ -496,49 +496,49 @@ void MortevielleEngine::fctSearch() { return; if (_coreVar._currPlace == INSIDE_WELL) { - g_crep = 1504; + _crep = 1504; loseGame(); return; } tcoord(6); - if (g_num == 0) { + if (_num == 0) { tcoord(7); - if (g_num != 0) { + if (_num != 0) { int cx = 0; do { ++cx; - } while ((cx <= 6) && (g_num != ord(_touv[cx]))); - if (g_num != ord(_touv[cx])) - g_crep = 187; + } while ((cx <= 6) && (_num != ord(_touv[cx]))); + if (_num != ord(_touv[cx])) + _crep = 187; else { if (_currBitIndex > 0) _coreVar._faithScore += 3; rechai(_mchai); if (_mchai != 0) { - g_cs = 0; - g_is = 0; + _cs = 0; + _is = 0; _heroSearching = true; _menu.setSearchMenu(); tsuiv(); } else - g_crep = 997; + _crep = 997; } } else { tcoord(8); - g_crep = 997; - if (g_num != 0) { + _crep = 997; + if (_num != 0) { if (_currBitIndex > 0) _coreVar._faithScore += 3; if ((_coreVar._currPlace != WELL) && (_coreVar._currPlace != SECRET_PASSAGE) && (_coreVar._currPlace != ATTIC)) { if (_coreVar._currPlace == PURPLE_ROOM) { - g_crep = 123; + _crep = 123; if (_coreVar._purpleRoomObjectId != 0) treg(_coreVar._purpleRoomObjectId); } if (_coreVar._currPlace == CRYPT) { - g_crep = 123; + _crep = 123; if (_coreVar._cryptObjectId != 0) treg(_coreVar._cryptObjectId); } @@ -548,24 +548,24 @@ void MortevielleEngine::fctSearch() { } else { if (_currBitIndex > 0) _coreVar._faithScore += 3; - g_crep = 997; + _crep = 997; if (_coreVar._currPlace < CELLAR) - g_crep = r[_coreVar._currPlace]; + _crep = r[_coreVar._currPlace]; - if ((_coreVar._currPlace == TOILETS) && (g_num == 2)) - g_crep = 162; + if ((_coreVar._currPlace == TOILETS) && (_num == 2)) + _crep = 162; if (_coreVar._currPlace == KITCHEN) { - if ((g_num == 3) || (g_num == 4)) - g_crep = 162; - else if (g_num == 5) - g_crep = 159; + if ((_num == 3) || (_num == 4)) + _crep = 162; + else if (_num == 5) + _crep = 159; } if (_coreVar._currPlace == MOUNTAIN) - g_crep = 104; + _crep = 104; else if (_coreVar._currPlace == CRYPT) - g_crep = 155; + _crep = 155; } } @@ -577,7 +577,7 @@ void MortevielleEngine::fctSelfSearch() { if (_coreVar._selectedObjectId != 0) st7(_coreVar._selectedObjectId); else - g_crep = 186; + _crep = 186; } /** @@ -588,16 +588,16 @@ void MortevielleEngine::fctOpen() { if (!_syn) ecr3(getEngineString(S_OPEN)); - if (g_caff == ROOM26) { - if (g_ment != 0) { + if (_caff == ROOM26) { + if (_ment != 0) { _msg[4] = OPCODE_ENTER; _syn = true; } else - g_crep = 997; + _crep = 997; return; } - if (g_caff == 15) { + if (_caff == 15) { showMoveMenuAlert(); return; } @@ -607,38 +607,38 @@ void MortevielleEngine::fctOpen() { return; tcoord(7); - if (g_num != 0) { + if (_num != 0) { if (_currBitIndex > 0) _coreVar._faithScore += 2; - ++g_iouv; + ++_iouv; int tmpPlace = 0; do { ++tmpPlace; - } while (!((tmpPlace > 6) || (ord(_touv[tmpPlace]) == 0) || (ord(_touv[tmpPlace]) == g_num))); - if (ord(_touv[tmpPlace]) != g_num) { - if (!( ((g_num == 3) && ((_coreVar._currPlace == OWN_ROOM) || (_coreVar._currPlace == 9) || (_coreVar._currPlace == BLUE_ROOM) || (_coreVar._currPlace == BATHROOM))) - || ((g_num == 4) && ((_coreVar._currPlace == GREEN_ROOM) || (_coreVar._currPlace == PURPLE_ROOM) || (_coreVar._currPlace == RED_ROOM))) - || ((_coreVar._currPlace == DARKBLUE_ROOM) && (g_num == 5)) - || ((g_num == 6) && ((_coreVar._currPlace == BATHROOM) || (_coreVar._currPlace == DINING_ROOM) || (_coreVar._currPlace == GREEN_ROOM2) || (_coreVar._currPlace == ATTIC))) - || ((_coreVar._currPlace == GREEN_ROOM2) && (g_num == 2)) - || ((_coreVar._currPlace == KITCHEN) && (g_num == 7))) ) { + } while (!((tmpPlace > 6) || (ord(_touv[tmpPlace]) == 0) || (ord(_touv[tmpPlace]) == _num))); + if (ord(_touv[tmpPlace]) != _num) { + if (!( ((_num == 3) && ((_coreVar._currPlace == OWN_ROOM) || (_coreVar._currPlace == 9) || (_coreVar._currPlace == BLUE_ROOM) || (_coreVar._currPlace == BATHROOM))) + || ((_num == 4) && ((_coreVar._currPlace == GREEN_ROOM) || (_coreVar._currPlace == PURPLE_ROOM) || (_coreVar._currPlace == RED_ROOM))) + || ((_coreVar._currPlace == DARKBLUE_ROOM) && (_num == 5)) + || ((_num == 6) && ((_coreVar._currPlace == BATHROOM) || (_coreVar._currPlace == DINING_ROOM) || (_coreVar._currPlace == GREEN_ROOM2) || (_coreVar._currPlace == ATTIC))) + || ((_coreVar._currPlace == GREEN_ROOM2) && (_num == 2)) + || ((_coreVar._currPlace == KITCHEN) && (_num == 7))) ) { if ( ((_coreVar._currPlace > DINING_ROOM) && (_coreVar._currPlace < CELLAR)) || ((_coreVar._currPlace > RED_ROOM) && (_coreVar._currPlace < DINING_ROOM)) || (_coreVar._currPlace == OWN_ROOM) || (_coreVar._currPlace == PURPLE_ROOM) || (_coreVar._currPlace == BLUE_ROOM)) { if (getRandomNumber(1, 4) == 3) _speechManager.startSpeech(7, 9, 1); } - _touv[tmpPlace] = chr(g_num); - aniof(1, g_num); + _touv[tmpPlace] = chr(_num); + aniof(1, _num); } tmpPlace = _coreVar._currPlace; if (_coreVar._currPlace == CRYPT) tmpPlace = CELLAR; - g_crep = _tabdon[aouvr + (tmpPlace * 7) + g_num - 1]; - if (g_crep == 254) - g_crep = 999; + _crep = _tabdon[aouvr + (tmpPlace * 7) + _num - 1]; + if (_crep == 254) + _crep = 999; } else - g_crep = 18; + _crep = 18; } } @@ -648,7 +648,7 @@ void MortevielleEngine::fctOpen() { */ void MortevielleEngine::fctPlace() { if (_coreVar._selectedObjectId == 0) { - g_crep = 186; + _crep = 186; return; } @@ -657,25 +657,25 @@ void MortevielleEngine::fctPlace() { tfleche(); if (_keyPressedEsc) - g_crep = 998; + _crep = 998; if ((_anyone) || (_keyPressedEsc)) return; tcoord(8); - if (g_num != 0) { - g_crep = 999; - if (g_caff == 13) { - if (g_num == 1) { + if (_num != 0) { + _crep = 999; + if (_caff == 13) { + if (_num == 1) { if (_coreVar._atticBallHoleObjectId != 0) { - g_crep = 188; + _crep = 188; } else { _coreVar._atticBallHoleObjectId = _coreVar._selectedObjectId; if (_coreVar._selectedObjectId == 141) aniof(1, 7); } } else if (_coreVar._atticRodHoleObjectId != 0) { - g_crep = 188; + _crep = 188; } else { _coreVar._atticRodHoleObjectId = _coreVar._selectedObjectId; if (_coreVar._selectedObjectId == 159) @@ -683,9 +683,9 @@ void MortevielleEngine::fctPlace() { } } - if (g_caff == 14) { + if (_caff == 14) { if (_coreVar._cellarObjectId != 0) { - g_crep = 188; + _crep = 188; } else { _coreVar._cellarObjectId = _coreVar._selectedObjectId; if (_coreVar._selectedObjectId == 151) { @@ -729,49 +729,49 @@ void MortevielleEngine::fctPlace() { alertTxt = getString(577); Alert::show(alertTxt, 1); aniof(2, 1); - g_crep = 166; + _crep = 166; } affrep(); } else { aniof(2, 1); - g_crep = 166; + _crep = 166; } return; } } } - if (g_caff == 16) { + if (_caff == 16) { if (_coreVar._cryptObjectId == 0) _coreVar._cryptObjectId = _coreVar._selectedObjectId; else - g_crep = 188; + _crep = 188; } - if (g_caff == 17) { + if (_caff == 17) { if (_coreVar._secretPassageObjectId != 0) { - g_crep = 188; + _crep = 188; } else if (_coreVar._selectedObjectId == 143) { _coreVar._secretPassageObjectId = 143; aniof(1, 1); } else { - g_crep = 1512; + _crep = 1512; loseGame(); } } - if (g_caff == 24) { + if (_caff == 24) { if (_coreVar._wellObjectId != 0) { - g_crep = 188; + _crep = 188; } else if ((_coreVar._selectedObjectId == 140) || (_coreVar._selectedObjectId == 120)) { _coreVar._wellObjectId = _coreVar._selectedObjectId; aniof(1, 1); } else { - g_crep = 185; + _crep = 185; } } - if (g_crep != 188) + if (_crep != 188) maivid(); } } @@ -781,8 +781,8 @@ void MortevielleEngine::fctPlace() { * @remarks Originally called 'ttourner' */ void MortevielleEngine::fctTurn() { - if (g_caff > 99) { - g_crep = 149; + if (_caff > 99) { + _crep = 149; return; } if (!_syn) @@ -791,8 +791,8 @@ void MortevielleEngine::fctTurn() { if ((_anyone) || (_keyPressedEsc)) return; tcoord(9); - if (g_num != 0) { - g_crep = 997; + if (_num != 0) { + _crep = 997; if ((_coreVar._currPlace == ATTIC) && (_coreVar._atticRodHoleObjectId == 159) && (_coreVar._atticBallHoleObjectId == 141)) { repon(2, 167); _speechManager.startSpeech(7, 9, 1); @@ -800,7 +800,7 @@ void MortevielleEngine::fctTurn() { if (answer == 1) _endGame = true; else - g_crep = 168; + _crep = 168; } if ((_coreVar._currPlace == SECRET_PASSAGE) && (_coreVar._secretPassageObjectId == 143)) { repon(2, 175); @@ -811,7 +811,7 @@ void MortevielleEngine::fctTurn() { _coreVar._currPlace = CRYPT; affrep(); } else - g_crep = 176; + _crep = 176; } } } @@ -826,11 +826,11 @@ void MortevielleEngine::fctSelfHide() { tfleche(); if (!(_anyone) && !(_keyPressedEsc)) { tcoord(10); - if (g_num == 0) + if (_num == 0) _hiddenHero = false; else { _hiddenHero = true; - g_crep = 999; + _crep = 999; } } } @@ -841,21 +841,21 @@ void MortevielleEngine::fctSelfHide() { */ void MortevielleEngine::fctAttach() { if (_coreVar._selectedObjectId == 0) - g_crep = 186; + _crep = 186; else { if (!_syn) ecr3(getEngineString(S_TIE)); tfleche(); if (!(_anyone) && !(_keyPressedEsc)) { tcoord(8); - g_crep = 997; - if ((g_num != 0) && (_coreVar._currPlace == WELL)) { - g_crep = 999; + _crep = 997; + if ((_num != 0) && (_coreVar._currPlace == WELL)) { + _crep = 999; if ((_coreVar._selectedObjectId == 120) || (_coreVar._selectedObjectId == 140)) { _coreVar._wellObjectId = _coreVar._selectedObjectId; aniof(1, 1); } else - g_crep = 185; + _crep = 185; maivid(); } } @@ -870,36 +870,36 @@ void MortevielleEngine::fctClose() { if (!_syn) ecr3(getEngineString(S_CLOSE)); - if (g_caff < ROOM26) { + if (_caff < ROOM26) { tfleche(); if (_keyPressedEsc) - g_crep = 998; + _crep = 998; if ((_anyone) || (_keyPressedEsc)) return; tcoord(7); - if (g_num != 0) { + if (_num != 0) { int cx = 0; do { ++cx; - } while ((cx <= 6) && (g_num != ord(_touv[cx]))); - if (g_num == ord(_touv[cx])) { - aniof(2, g_num); - g_crep = 998; + } while ((cx <= 6) && (_num != ord(_touv[cx]))); + if (_num == ord(_touv[cx])) { + aniof(2, _num); + _crep = 998; _touv[cx] = chr(0); - --g_iouv; - if (g_iouv < 0) - g_iouv = 0; + --_iouv; + if (_iouv < 0) + _iouv = 0; int chai = 9999; rechai(chai); if (_mchai == chai) _mchai = 0; } else { - g_crep = 187; + _crep = 187; } } } - if (g_caff == ROOM26) - g_crep = 999; + if (_caff == ROOM26) + _crep = 999; } /** @@ -919,9 +919,9 @@ void MortevielleEngine::fctKnock() { tfleche(); if (!(_anyone) && !(_keyPressedEsc)) { if ((_coreVar._currPlace < MOUNTAIN) && (_coreVar._currPlace != LANDING)) - g_crep = 133; + _crep = 133; else - g_crep = 997; + _crep = 997; } return; @@ -931,12 +931,12 @@ void MortevielleEngine::fctKnock() { int rand = (getRandomNumber(0, 8)) - 4; _speechManager.startSpeech(11, rand, 1); int p; - ecfren(p, rand, _coreVar._faithScore, g_ment); - int l = g_ment; + ecfren(p, rand, _coreVar._faithScore, _ment); + int l = _ment; if (l != 0) { if (p != -500) { if (rand > p) - g_crep = 190; + _crep = 190; else { becfren(l); getKnockAnswer(); @@ -945,8 +945,8 @@ void MortevielleEngine::fctKnock() { getKnockAnswer(); } - if (g_ment == 8) - g_crep = 190; + if (_ment == 8) + _crep = 190; } } @@ -958,12 +958,12 @@ void MortevielleEngine::fctSelfPut() { if (!_syn) ecr3(getEngineString(S_POSE)); if (_coreVar._selectedObjectId == 0) - g_crep = 186; + _crep = 186; else { - if (g_caff > 99) { - g_crep = 999; + if (_caff > 99) { + _crep = 999; ajchai(); - if (g_crep != 192) + if (_crep != 192) maivid(); return; } @@ -971,74 +971,74 @@ void MortevielleEngine::fctSelfPut() { if ((_anyone) || (_keyPressedEsc)) return; tcoord(7); - g_crep = 124; - if (g_num != 0) { + _crep = 124; + if (_num != 0) { int chai; rechai(chai); if (chai == 0) - g_crep = 997; + _crep = 997; else { int cx = 0; do { ++cx; - } while ((cx <= 6) && (g_num != ord(_touv[cx]))); - if (g_num != ord(_touv[cx])) - g_crep = 187; + } while ((cx <= 6) && (_num != ord(_touv[cx]))); + if (_num != ord(_touv[cx])) + _crep = 187; else { _mchai = chai; - g_crep = 999; + _crep = 999; } } } else { tcoord(8); - if (g_num != 0) { - g_crep = 998; - if (g_caff == PURPLE_ROOM) { + if (_num != 0) { + _crep = 998; + if (_caff == PURPLE_ROOM) { if (_coreVar._purpleRoomObjectId != 0) - g_crep = 188; + _crep = 188; else _coreVar._purpleRoomObjectId = _coreVar._selectedObjectId; } - if (g_caff == ATTIC) { - if (g_num == 1) { + if (_caff == ATTIC) { + if (_num == 1) { if (_coreVar._atticBallHoleObjectId != 0) - g_crep = 188; + _crep = 188; else _coreVar._atticBallHoleObjectId = _coreVar._selectedObjectId; } else if (_coreVar._atticRodHoleObjectId != 0) { - g_crep = 188; + _crep = 188; } else { _coreVar._atticRodHoleObjectId = _coreVar._selectedObjectId; } } - if (g_caff == CRYPT) { + if (_caff == CRYPT) { if (_coreVar._cryptObjectId != 0) - g_crep = 188; + _crep = 188; else _coreVar._cryptObjectId = _coreVar._selectedObjectId; } - if (g_caff == WELL) - g_crep = 185; - if ((g_caff == CELLAR) || (g_caff == SECRET_PASSAGE)) - g_crep = 124; + if (_caff == WELL) + _crep = 185; + if ((_caff == CELLAR) || (_caff == SECRET_PASSAGE)) + _crep = 124; } else { - g_crep = 124; - if (g_caff == WELL) { + _crep = 124; + if (_caff == WELL) { tcoord(5); - if (g_num != 0) - g_crep = 185; + if (_num != 0) + _crep = 185; } } } - if (g_caff == INSIDE_WELL) - g_crep = 185; - if ((g_crep == 999) || (g_crep == 185) || (g_crep == 998)) { - if (g_crep == 999) + if (_caff == INSIDE_WELL) + _crep = 185; + if ((_crep == 999) || (_crep == 185) || (_crep == 998)) { + if (_crep == 999) ajchai(); - if (g_crep != 192) + if (_crep != 192) maivid(); } } @@ -1050,17 +1050,17 @@ void MortevielleEngine::fctSelfPut() { */ void MortevielleEngine::fctListen() { if (_coreVar._currPlace != ROOM26) - g_crep = 101; + _crep = 101; else { if (_currBitIndex != 0) ++_coreVar._faithScore; int p, rand; - ecfren(p, rand, _coreVar._faithScore, g_ment); - int l = g_ment; + ecfren(p, rand, _coreVar._faithScore, _ment); + int l = _ment; if (l != 0) { if (p != -500) { if (rand > p) - g_crep = 101; + _crep = 101; else { becfren(l); int j, h, m; @@ -1068,16 +1068,16 @@ void MortevielleEngine::fctListen() { rand = getRandomNumber(1, 100); if ((h >= 0) && (h < 8)) { if (rand > 30) - g_crep = 101; + _crep = 101; else - g_crep = 178; + _crep = 178; } else if (rand > 70) - g_crep = 101; + _crep = 101; else - g_crep = 178; + _crep = 178; } } else - g_crep = 178; + _crep = 178; } } } @@ -1088,11 +1088,11 @@ void MortevielleEngine::fctListen() { */ void MortevielleEngine::fctEat() { if ((_coreVar._currPlace > LANDING) && (_coreVar._currPlace < ROOM26)) { - g_crep = 148; + _crep = 148; } else { tsort(); _coreVar._currPlace = DINING_ROOM; - g_caff = 10; + _caff = 10; debloc(_coreVar._currPlace); _menu.setDestinationMenuText(_coreVar._currPlace); @@ -1114,11 +1114,11 @@ void MortevielleEngine::fctEat() { h = 1; } - g_jh += h; - g_crep = 135; + _jh += h; + _crep = 135; prepareRoom(); } else { - g_crep = 134; + _crep = 134; } } } @@ -1133,50 +1133,50 @@ void MortevielleEngine::fctEnter() { _menu.setDestinationMenuText(_coreVar._currPlace); } else if (_coreVar._currPlace == LANDING) showMoveMenuAlert(); - else if (g_ment == 0) - g_crep = 997; - else if ((g_ment == 9) && (_coreVar._selectedObjectId != 136)) { - g_crep = 189; + else if (_ment == 0) + _crep = 997; + else if ((_ment == 9) && (_coreVar._selectedObjectId != 136)) { + _crep = 189; _coreVar._teauto[8] = '*'; } else { int z = 0; if (!_blo) - z = t11(g_ment); + z = t11(_ment); if (z != 0) { - if ((g_ment == 3) || (g_ment == 7)) - g_crep = 179; + if ((_ment == 3) || (_ment == 7)) + _crep = 179; else { - g_x = (getRandomNumber(0, 10)) - 5; - _speechManager.startSpeech(7, g_x, 1); + _x = (getRandomNumber(0, 10)) - 5; + _speechManager.startSpeech(7, _x, 1); aniof(1, 1); - g_x = convertBitIndexToCharacterIndex(z); + _x = convertBitIndexToCharacterIndex(z); ++_coreVar._faithScore; _coreVar._currPlace = LANDING; _msg[3] = MENU_DISCUSS; - _msg[4] = _menu._discussMenu[g_x]; + _msg[4] = _menu._discussMenu[_x]; _syn = true; - if (g_ment == 9) { + if (_ment == 9) { _col = true; - g_caff = 70; + _caff = 70; afdes(); - repon(2, g_caff); + repon(2, _caff); } else _col = false; - debloc(g_ment); - g_ment = 0; + debloc(_ment); + _ment = 0; } } else { - g_x = (getRandomNumber(0, 10)) - 5; - _speechManager.startSpeech(7, g_x, 1); + _x = (getRandomNumber(0, 10)) - 5; + _speechManager.startSpeech(7, _x, 1); aniof(1, 1); - _coreVar._currPlace = g_ment; + _coreVar._currPlace = _ment; affrep(); debloc(_coreVar._currPlace); _menu.setDestinationMenuText(_coreVar._currPlace); - g_ment = 0; - g_mpers = 0; + _ment = 0; + _savedBitIndex = 0; _currBitIndex = 0; } } @@ -1190,7 +1190,7 @@ void MortevielleEngine::fctSleep() { int z, j, h, m; if ((_coreVar._currPlace > LANDING) && (_coreVar._currPlace < ROOM26)) { - g_crep = 148; + _crep = 148; return; } if (_coreVar._currPlace != OWN_ROOM) { @@ -1214,10 +1214,10 @@ void MortevielleEngine::fctSleep() { z = (7 - h) * 2; if (m == 30) --z; - g_jh += z; + _jh += z; h = 7; } - g_jh += 2; + _jh += 2; ++h; if (h > 23) h = 0; @@ -1225,8 +1225,8 @@ void MortevielleEngine::fctSleep() { answer = Alert::show(getEngineString(S_YES_NO), 1); _anyone = false; } while (answer != 1); - g_crep = 998; - g_num = 0; + _crep = 998; + _num = 0; } /** @@ -1236,14 +1236,14 @@ void MortevielleEngine::fctSleep() { void MortevielleEngine::fctForce() { if (!_syn) ecr3(getEngineString(S_SMASH)); - if (g_caff < 25) + if (_caff < 25) tfleche(); if ((!_anyone) && (!_keyPressedEsc)) { if (_coreVar._currPlace != ROOM26) - g_crep = 997; + _crep = 997; else { - g_crep = 143; + _crep = 143; _coreVar._faithScore += 2; } } @@ -1255,9 +1255,9 @@ void MortevielleEngine::fctForce() { */ void MortevielleEngine::fctLeave() { tsort(); - g_crep = 0; + _crep = 0; if ((_coreVar._currPlace == MOUNTAIN) || (_coreVar._currPlace == MANOR_FRONT) || (_coreVar._currPlace == MANOR_BACK) || (_coreVar._currPlace == WELL)) - g_crep = 997; + _crep = 997; else { int nextPlace = OWN_ROOM; @@ -1269,18 +1269,18 @@ void MortevielleEngine::fctLeave() { nextPlace = LANDING; else if (_coreVar._currPlace == CRYPT) { nextPlace = SECRET_PASSAGE; - g_crep = 176; + _crep = 176; } else if (_coreVar._currPlace == SECRET_PASSAGE) nextPlace = t23coul(); else if (_coreVar._currPlace == INSIDE_WELL) nextPlace = WELL; - if (g_crep != 997) + if (_crep != 997) _coreVar._currPlace = nextPlace; - g_caff = nextPlace; - if (g_crep == 0) - g_crep = nextPlace; + _caff = nextPlace; + if (_crep == 0) + _crep = nextPlace; debloc(nextPlace); _menu.setDestinationMenuText(nextPlace); } @@ -1291,22 +1291,22 @@ void MortevielleEngine::fctLeave() { * @remarks Originally called 'tattendre' */ void MortevielleEngine::fctWait() { - g_mpers = 0; + _savedBitIndex = 0; clearScreenType3(); int answer; do { - ++g_jh; + ++_jh; prepareRoom(); if (!_blo) t11(_coreVar._currPlace); - if ((_currBitIndex != 0) && (g_mpers == 0)) { - g_crep = 998; + if ((_currBitIndex != 0) && (_savedBitIndex == 0)) { + _crep = 998; if ((_coreVar._currPlace == ATTIC) || (_coreVar._currPlace == CELLAR)) - cavegre(); + initCaveOrCellar(); if ((_coreVar._currPlace > OWN_ROOM) && (_coreVar._currPlace < DINING_ROOM)) _anyone = true; - g_mpers = _currBitIndex; + _savedBitIndex = _currBitIndex; if (!_anyone) prepareRoom(); return; @@ -1314,7 +1314,7 @@ void MortevielleEngine::fctWait() { repon(2, 102); answer = Alert::show(getEngineString(S_YES_NO), 1); } while (answer != 2); - g_crep = 998; + _crep = 998; if (!_anyone) prepareRoom(); } @@ -1326,11 +1326,11 @@ void MortevielleEngine::fctWait() { void MortevielleEngine::fctSound() { if (!_syn) ecr3(getEngineString(S_PROBE2)); - if (g_caff < 27) { + if (_caff < 27) { tfleche(); if (!(_anyone) && (!_keyPressedEsc)) - g_crep = 145; - g_num = 0; + _crep = 145; + _num = 0; } } @@ -1353,10 +1353,10 @@ void MortevielleEngine::fctDiscuss() { do { ++cx; } while (_menu._discussMenu[cx] != _msg[4]); - g_caff = 69 + cx; + _caff = 69 + cx; afdes(); - repon(2, g_caff); - suj = g_caff + 60; + repon(2, _caff); + suj = _caff + 60; } tkey1(false); mennor(); @@ -1404,7 +1404,7 @@ void MortevielleEngine::fctDiscuss() { CHECK_QUIT; _mouse.getMousePosition(x, y, c); - x *= (3 - g_res); + x *= (3 - _res); if (x > 319) cx = 41; else @@ -1467,7 +1467,7 @@ void MortevielleEngine::fctDiscuss() { if (_col) { _col = false; _coreVar._currPlace = 15; - if (g_iouv > 0) + if (_iouv > 0) max = 8; else max = 4; @@ -1477,10 +1477,10 @@ void MortevielleEngine::fctDiscuss() { suj = 138; _coreVar._faithScore += (3 * (_coreVar._faithScore / 10)); } - } else if (_nbrep[g_caff - 69] < _nbrepm[g_caff - 69]) { - suj = _tabdon[arep + (ix << 3) + (g_caff - 70)]; + } else if (_nbrep[_caff - 69] < _nbrepm[_caff - 69]) { + suj = _tabdon[arep + (ix << 3) + (_caff - 70)]; _coreVar._faithScore += _tabdon[arcf + ix]; - ++_nbrep[g_caff - 69]; + ++_nbrep[_caff - 69]; } else { _coreVar._faithScore += 3; suj = 139; @@ -1518,7 +1518,7 @@ void MortevielleEngine::fctDiscuss() { _col = false; _coreVar._currPlace = LANDING; } - g_ctrm = 0; + _controlMenu = 0; _mouse.hideMouse(); hirs(); drawRightFrame(); @@ -1537,17 +1537,17 @@ void MortevielleEngine::fctDiscuss() { * @remarks Originally called 'tsentir' */ void MortevielleEngine::fctSmell() { - g_crep = 119; - if (g_caff < ROOM26) { + _crep = 119; + if (_caff < ROOM26) { if (!_syn) ecr3(getEngineString(S_SMELL)); tfleche(); if (!(_anyone) && !(_keyPressedEsc)) - if (g_caff == 16) - g_crep = 153; - } else if (g_caff == 123) - g_crep = 110; - g_num = 0; + if (_caff == 16) + _crep = 153; + } else if (_caff == 123) + _crep = 110; + _num = 0; } /** @@ -1555,13 +1555,13 @@ void MortevielleEngine::fctSmell() { * @remarks Originally called 'tgratter' */ void MortevielleEngine::fctScratch() { - g_crep = 155; - if (g_caff < 27) { + _crep = 155; + if (_caff < 27) { if (!_syn) ecr3(getEngineString(S_SCRATCH)); tfleche(); } - g_num = 0; + _num = 0; } /** @@ -1578,7 +1578,7 @@ void MortevielleEngine::endGame() { repon(9, 1509); tkey1(false); _mouse.hideMouse(); - g_caff = 70; + _caff = 70; taffich(); hirs(); premtet(); @@ -1588,7 +1588,7 @@ void MortevielleEngine::endGame() { repon(9, 1509); repon(2, 142); tkey1(false); - g_caff = 32; + _caff = 32; afdes(); repon(6, 34); repon(2, 35); diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index b14af53b00..1f97ee0fe6 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -76,7 +76,7 @@ int Alert::show(const Common::String &msg, int n) { while ((chaine[i + 1] != '\174') && (chaine[i + 1] != '\135')) { ++i; st = st + chaine[i]; - if (g_res == 2) + if (g_vm->_res == 2) curPos.x -= 3; else curPos.x -= 5; @@ -93,12 +93,12 @@ int Alert::show(const Common::String &msg, int n) { esp = (uint)(nbcol - caseNumb * 40) >> 1; coldep = 320 - ((uint)nbcol >> 1) + ((uint)esp >> 1); setButtonText(cas, coldep, caseNumb, &s[0], esp); - limit[1][1] = ((uint)(coldep) >> 1) * g_res; + limit[1][1] = ((uint)(coldep) >> 1) * g_vm->_res; limit[1][2] = limit[1][1] + 40; if (caseNumb == 1) { limit[2][1] = limit[2][2]; } else { - limit[2][1] = ((uint)(320 + ((uint)esp >> 1)) >> 1) * g_res; + limit[2][1] = ((uint)(320 + ((uint)esp >> 1)) >> 1) * g_vm->_res; limit[2][2] = (limit[2][1]) + 40; } g_vm->_mouse.showMouse(); @@ -218,7 +218,7 @@ void Alert::decodeAlertDetails(Common::String inputStr, int &choiceNumb, int &li } ++i; choiceListStr = g_vm->copy(inputStr, i, 30); - if (g_res == 2) + if (g_vm->_res == 2) col *= 6; else col *= 10; @@ -302,7 +302,7 @@ bool KnowledgeCheck::show() { g_vm->hirs(); g_vm->_mouse.showMouse(); int dialogHeight; - if (g_res == 1) + if (g_vm->_res == 1) dialogHeight = 29; else dialogHeight = 23; @@ -331,8 +331,8 @@ bool KnowledgeCheck::show() { } for (int j = 1; j <= lastOption - firstOption + 1; ++j) { - coor[j]._x1 = 45 * g_res; - coor[j]._x2 = (maxLength * 3 + 55) * g_res; + coor[j]._x1 = 45 * g_vm->_res; + coor[j]._x2 = (maxLength * 3 + 55) * g_vm->_res; coor[j]._y1 = 27 + j * 8; coor[j]._y2 = 34 + j * 8; coor[j]._enabled = true; @@ -342,7 +342,7 @@ bool KnowledgeCheck::show() { } } coor[lastOption - firstOption + 2]._enabled = false; - if (g_res == 1) + if (g_vm->_res == 1) rep = 10; else rep = 6; @@ -424,7 +424,7 @@ void f3f8::checkForF8(int SpeechNum, bool drawAni50Fl) { teskbd(); do { g_vm->_speechManager.startSpeech(SpeechNum, 0, 0); - g_key = waitForF3F8(); + g_vm->_key = waitForF3F8(); CHECK_QUIT; if (g_vm->_newGraphicalDevice != g_vm->_currGraphicalDevice) { @@ -432,7 +432,7 @@ void f3f8::checkForF8(int SpeechNum, bool drawAni50Fl) { g_vm->hirs(); aff50(drawAni50Fl); } - } while (g_key != 66); // keycode for F8 + } while (g_vm->_key != 66); // keycode for F8 } /** @@ -452,27 +452,26 @@ int f3f8::waitForF3F8() { } void f3f8::aff50(bool drawAni50Fl) { - g_caff = 50; - g_maff = 0; + g_vm->_caff = 50; + g_vm->_maff = 0; taffich(); - g_vm->draw(g_ades, 63, 12); + g_vm->draw(kAdrDes, 63, 12); if (drawAni50Fl) ani50(); else - repon(2, kDialogStringIndex + 142); + g_vm->repon(2, kDialogStringIndex + 142); // Draw the f3/f8 dialog draw(); } void f3f8::ani50() { - g_crep = animof(1, 1); - pictout(kAdrAni, g_crep, 63, 12); - g_crep = animof(2, 1); - pictout(kAdrAni, g_crep, 63, 12); - g_vm->_largestClearScreen = (g_res == 1); - repon(2, kDialogStringIndex + 143); + g_vm->_crep = g_vm->animof(1, 1); + g_vm->pictout(kAdrAni, g_vm->_crep, 63, 12); + g_vm->_crep = g_vm->animof(2, 1); + g_vm->pictout(kAdrAni, g_vm->_crep, 63, 12); + g_vm->_largestClearScreen = (g_vm->_res == 1); + g_vm->repon(2, kDialogStringIndex + 143); } - } // End of namespace Mortevielle diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 2e9e0195a6..42dd3c7cc7 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -992,7 +992,7 @@ void ScreenSurface::writeCharacter(const Common::Point &pt, unsigned char ch, in * simulate the original 640x400 surface, all Y values have to be doubled */ void ScreenSurface::drawBox(int x, int y, int dx, int dy, int col) { - if (g_res == 1) { + if (g_vm->_res == 1) { x = (uint)x >> 1; dx = (uint)dx >> 1; } @@ -1059,7 +1059,7 @@ void ScreenSurface::drawString(const Common::String &l, int command) { g_vm->_mouse.hideMouse(); pt = _textPos; - if (g_res == 2) + if (g_vm->_res == 2) i = 6; else i = 10; @@ -1101,7 +1101,7 @@ void ScreenSurface::drawString(const Common::String &l, int command) { * Gets the width in pixels of the specified string */ int ScreenSurface::getStringWidth(const Common::String &s) { - int charWidth = (g_res == 2) ? 6 : 10; + int charWidth = (g_vm->_res == 2) ? 6 : 10; return s.size() * charWidth; } diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 1b030935cb..5bc0940f6c 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -180,7 +180,7 @@ void Menu::displayMenu() { g_vm->_mouse.hideMouse(); g_vm->_screenSurface.fillRect(7, Common::Rect(0, 0, 639, 10)); - col = 28 * g_res; + col = 28 * g_vm->_res; if (g_vm->_currGraphicalDevice == MODE_CGA) color = 1; else @@ -209,7 +209,7 @@ void Menu::displayMenu() { } while (k != 3); ++y; } while (y != 9); - col += 48 * g_res; + col += 48 * g_vm->_res; } while (num_letr != 6); g_vm->_mouse.showMouse(); } @@ -286,14 +286,14 @@ void Menu::util(Common::Point pos) { int ymx = (_menuConstants[_msg3 - 1][3] << 3) + 16; int dxcar = _menuConstants[_msg3 - 1][2]; - int xmn = (_menuConstants[_msg3 - 1][0] << 2) * g_res; + int xmn = (_menuConstants[_msg3 - 1][0] << 2) * g_vm->_res; int ix; - if (g_res == 1) + if (g_vm->_res == 1) ix = 5; else ix = 3; - int xmx = dxcar * ix * g_res + xmn + 2; + int xmx = dxcar * ix * g_vm->_res + xmn + 2; if ((pos.x > xmn) && (pos.x < xmx) && (pos.y < ymx) && (pos.y > 15)) { ix = (((uint)pos.y >> 3) - 1) + (_msg3 << 8); if (ix != _msg4) { @@ -325,7 +325,7 @@ void Menu::menuDown(int ii) { g_vm->_mouse.hideMouse(); sauvecr(10, (_menuConstants[ii - 1][1] + 1) << 1); xco = xco << 3; - if (g_res == 1) + if (g_vm->_res == 1) cx = 10; else cx = 6; @@ -437,24 +437,24 @@ void Menu::mdn() { g_vm->_prevPos = curPos; bool tes = (curPos.y < 11) - && ((curPos.x >= (28 * g_res) && curPos.x <= (28 * g_res + 24)) - || (curPos.x >= (76 * g_res) && curPos.x <= (76 * g_res + 24)) - || ((curPos.x > 124 * g_res) && (curPos.x < 124 * g_res + 24)) - || ((curPos.x > 172 * g_res) && (curPos.x < 172 * g_res + 24)) - || ((curPos.x > 220 * g_res) && (curPos.x < 220 * g_res + 24)) - || ((curPos.x > 268 * g_res) && (curPos.x < 268 * g_res + 24))); + && ((curPos.x >= (28 * g_vm->_res) && curPos.x <= (28 * g_vm->_res + 24)) + || (curPos.x >= (76 * g_vm->_res) && curPos.x <= (76 * g_vm->_res + 24)) + || ((curPos.x > 124 * g_vm->_res) && (curPos.x < 124 * g_vm->_res + 24)) + || ((curPos.x > 172 * g_vm->_res) && (curPos.x < 172 * g_vm->_res + 24)) + || ((curPos.x > 220 * g_vm->_res) && (curPos.x < 220 * g_vm->_res + 24)) + || ((curPos.x > 268 * g_vm->_res) && (curPos.x < 268 * g_vm->_res + 24))); if (tes) { int ix; - if (curPos.x < 76 * g_res) + if (curPos.x < 76 * g_vm->_res) ix = MENU_INVENTORY; - else if (curPos.x < 124 * g_res) + else if (curPos.x < 124 * g_vm->_res) ix = MENU_MOVE; - else if (curPos.x < 172 * g_res) + else if (curPos.x < 172 * g_vm->_res) ix = MENU_ACTION; - else if (curPos.x < 220 * g_res) + else if (curPos.x < 220 * g_vm->_res) ix = MENU_SELF; - else if (curPos.x < 268 * g_res) + else if (curPos.x < 268 * g_vm->_res) ix = MENU_DISCUSS; else ix = MENU_FILE; diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 4c1d4dedf9..85e34b6680 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -44,147 +44,6 @@ namespace Mortevielle { -void pictout(int seg, int dep, int x, int y) { - GfxSurface surface; - surface.decode(&g_vm->_mem[seg * 16 + dep]); - - if (g_vm->_currGraphicalDevice == MODE_HERCULES) { - g_vm->_mem[0x7000 * 16 + 2] = 0; - g_vm->_mem[0x7000 * 16 + 32] = 15; - } - - if ((g_caff != 51) && (READ_LE_UINT16(&g_vm->_mem[0x7000 * 16 + 0x4138]) > 0x100)) - WRITE_LE_UINT16(&g_vm->_mem[0x7000 * 16 + 0x4138], 0x100); - - g_vm->_screenSurface.drawPicture(surface, x, y); -} - -void adzon() { - Common::File f; - - if (!f.open("don.mor")) - error("Missing file - don.mor"); - - f.read(g_vm->_tabdon, 7 * 256); - f.close(); - - if (!f.open("bmor.mor")) - error("Missing file - bmor.mor"); - - f.read(&g_vm->_tabdon[fleche], 1 * 1916); - f.close(); - - if (!f.open("dec.mor")) - error("Missing file - dec.mor"); - - f.read(&g_vm->_mem[0x73a2 * 16 + 0], 1 * 1664); - f.close(); -} - -/** - * Returns the offset within the compressed image data resource of the desired image - */ -int animof(int ouf, int num) { - int nani = g_vm->_mem[kAdrAni * 16 + 1]; - int aux = num; - if (ouf != 1) - aux += nani; - - int animof_result = (nani << 2) + 2 + READ_BE_UINT16(&g_vm->_mem[kAdrAni * 16 + (aux << 1)]); - - return animof_result; -} - -void modif(int &nu) { - if (nu == 26) - nu = 25; - else if ((nu > 29) && (nu < 36)) - nu -= 4; - else if ((nu > 69) && (nu < 78)) - nu -= 37; - else if ((nu > 99) && (nu < 194)) - nu -= 59; - else if ((nu > 996) && (nu < 1000)) - nu -= 862; - else if ((nu > 1500) && (nu < 1507)) - nu -= 1363; - else if ((nu > 1507) && (nu < 1513)) - nu -= 1364; - else if ((nu > 1999) && (nu < 2002)) - nu -= 1851; - else if (nu == 2010) - nu = 151; - else if ((nu > 2011) && (nu < 2025)) - nu -= 1860; - else if (nu == 2026) - nu = 165; - else if ((nu > 2029) && (nu < 2037)) - nu -= 1864; - else if ((nu > 3000) && (nu < 3005)) - nu -= 2828; - else if (nu == 4100) - nu = 177; - else if (nu == 4150) - nu = 178; - else if ((nu > 4151) && (nu < 4156)) - nu -= 3973; - else if (nu == 4157) - nu = 183; - else if ((nu == 4160) || (nu == 4161)) - nu -= 3976; -} - -/* NIVEAU 13 */ - - -void text1(int x, int y, int nb, int m) { - int co; - - if (g_res == 1) - co = 10; - else - co = 6; - Common::String tmpStr = g_vm->getString(m); - if ((y == 182) && ((int) tmpStr.size() * co > nb * 6)) - y = 176; - displayStr(tmpStr, x, y, nb, 20, g_vm->_textColor); -} - -void initouv() { - for (int cx = 1; cx <= 7; ++cx) - g_vm->_touv[cx] = chr(0); -} - -void ecr2(Common::String str_) { - // Some dead code was present in the original: removed - g_vm->_screenSurface.putxy(8, 177); - int tlig = 59 + (g_res - 1) * 36; - - if ((int)str_.size() < tlig) - g_vm->_screenSurface.drawString(str_, 5); - else if ((int)str_.size() < (tlig << 1)) { - g_vm->_screenSurface.putxy(8, 176); - g_vm->_screenSurface.drawString(g_vm->copy(str_, 1, (tlig - 1)), 5); - g_vm->_screenSurface.putxy(8, 182); - g_vm->_screenSurface.drawString(g_vm->copy(str_, tlig, tlig << 1), 5); - } else { - g_vm->_largestClearScreen = true; - g_vm->clearScreenType2(); - g_vm->_screenSurface.putxy(8, 176); - g_vm->_screenSurface.drawString(g_vm->copy(str_, 1, (tlig - 1)), 5); - g_vm->_screenSurface.putxy(8, 182); - g_vm->_screenSurface.drawString(g_vm->copy(str_, tlig, ((tlig << 1) - 1)), 5); - g_vm->_screenSurface.putxy(8, 190); - g_vm->_screenSurface.drawString(g_vm->copy(str_, tlig << 1, tlig * 3), 5); - } -} - -void ecr3(Common::String text) { - g_vm->clearScreenType3(); - g_vm->_screenSurface.putxy(8, 192); - g_vm->_screenSurface.drawString(text, 5); -} - void paint_rect(int x, int y, int dx, int dy) { int co; @@ -206,59 +65,6 @@ void modobj(int m) { g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[8]); } -void repon(int f, int m) { - if ((m > 499) && (m < 563)) { - Common::String tmpStr = g_vm->getString(m - 501 + kInventoryStringIndex); - - if ((int) tmpStr.size() > ((58 + (g_res - 1) * 37) << 1)) - g_vm->_largestClearScreen = true; - else - g_vm->_largestClearScreen = false; - - g_vm->clearScreenType2(); - displayStr(tmpStr, 8, 176, 85, 3, 5); - } else { - modif(m); - switch (f) { - case 2: - case 8: - g_vm->clearScreenType2(); - g_vm->prepareScreenType2(); - text1(8, 182, 103, m); - if ((m == 68) || (m == 69)) - g_vm->_coreVar._teauto[40] = '*'; - if ((m == 104) && (g_caff == 14)) { - g_vm->_coreVar._teauto[36] = '*'; - if (g_vm->_coreVar._teauto[39] == '*') { - g_vm->_coreVar._pourc[3] = '*'; - g_vm->_coreVar._teauto[38] = '*'; - } - } - break; - case 1: - case 6: - case 9: { - int i; - if ((f == 1) || (f == 6)) - i = 4; - else - i = 5; - - Common::String tmpStr = g_vm->getString(m); - displayStr(tmpStr, 80, 40, 60, 25, i); - - if (m == 180) - g_vm->_coreVar._pourc[6] = '*'; - else if (m == 179) - g_vm->_coreVar._pourc[10] = '*'; - } - break; - default: - break; - } - } -} - int chlm() { int retval = g_vm->getRandomNumber(1, 2); if (retval == 2) @@ -272,12 +78,12 @@ int chlm() { *************/ void debloc(int roomId) { - g_num = 0; - g_x = 0; - g_y = 0; + g_vm->_num = 0; + g_vm->_x = 0; + g_vm->_y = 0; if ((roomId != ROOM26) && (roomId != LANDING)) g_vm->resetPresenceInRooms(roomId); - g_mpers = g_vm->_currBitIndex; + g_vm->_savedBitIndex = g_vm->_currBitIndex; } void ecfren(int &p, int &rand, int cf, int roomId) { @@ -412,37 +218,20 @@ int t11(int roomId) { return retVal; } -void cavegre() { - g_vm->_coreVar._faithScore += 2; - if (g_vm->_coreVar._faithScore > 69) - g_vm->_coreVar._faithScore += (g_vm->_coreVar._faithScore / 10); - g_vm->clearScreenType3(); - g_vm->prepareScreenType2(); - ecr3(g_vm->getEngineString(S_SOMEONE_ENTERS)); - int rand = (g_vm->getRandomNumber(0, 4)) - 2; - g_vm->_speechManager.startSpeech(2, rand, 1); - - // The original was doing here a useless loop. - // It has been removed - - g_vm->clearScreenType3(); - g_vm->displayAloneText(); -} - void writetp(Common::String s, int t) { - if (g_res == 2) + if (g_vm->_res == 2) g_vm->_screenSurface.drawString(s, t); else g_vm->_screenSurface.drawString(g_vm->copy(s, 1, 25), t); } void aniof(int ouf, int num) { - if ((g_caff == 7) && ((num == 4) || (num == 5))) + if ((g_vm->_caff == 7) && ((num == 4) || (num == 5))) return; - if ((g_caff == 10) && (num == 7)) + if ((g_vm->_caff == 10) && (num == 7)) num = 6; - else if (g_caff == 12) { + else if (g_vm->_caff == 12) { if (num == 3) num = 4; else if (num == 4) @@ -450,7 +239,7 @@ void aniof(int ouf, int num) { } int ad = kAdrAni; - int offset = animof(ouf, num); + int offset = g_vm->animof(ouf, num); GfxSurface surface; surface.decode(&g_vm->_mem[ad * 16 + offset]); @@ -462,39 +251,39 @@ void aniof(int ouf, int num) { /* NIVEAU 9 */ void dessin(int ad) { if (ad != 0) - g_vm->draw(g_ades, ((ad % 160) * 2), (ad / 160)); + g_vm->draw(kAdrDes, ((ad % 160) * 2), (ad / 160)); else { g_vm->clearScreenType1(); - if (g_caff > 99) { - g_vm->draw(g_ades, 60, 33); + if (g_vm->_caff > 99) { + g_vm->draw(kAdrDes, 60, 33); g_vm->_screenSurface.drawBox(118, 32, 291, 121, 15); // Medium box - } else if (g_caff > 69) { - g_vm->draw(g_ades, 112, 48); // Heads + } else if (g_vm->_caff > 69) { + g_vm->draw(kAdrDes, 112, 48); // Heads g_vm->_screenSurface.drawBox(222, 47, 155, 91, 15); } else { - g_vm->draw(g_ades, 0, 12); + g_vm->draw(kAdrDes, 0, 12); g_vm->prepareScreenType1(); - if ((g_caff < 30) || (g_caff > 32)) { + if ((g_vm->_caff < 30) || (g_vm->_caff > 32)) { for (int cx = 1; cx <= 6; ++cx) { if (ord(g_vm->_touv[cx]) != 0) aniof(1, ord(g_vm->_touv[cx])); } - if (g_caff == 13) { + if (g_vm->_caff == 13) { if (g_vm->_coreVar._atticBallHoleObjectId == 141) aniof(1, 7); if (g_vm->_coreVar._atticRodHoleObjectId == 159) aniof(1, 6); - } else if ((g_caff == 14) && (g_vm->_coreVar._cellarObjectId == 151)) + } else if ((g_vm->_caff == 14) && (g_vm->_coreVar._cellarObjectId == 151)) aniof(1, 2); - else if ((g_caff == 17) && (g_vm->_coreVar._secretPassageObjectId == 143)) + else if ((g_vm->_caff == 17) && (g_vm->_coreVar._secretPassageObjectId == 143)) aniof(1, 1); - else if ((g_caff == 24) && (g_vm->_coreVar._wellObjectId != 0)) + else if ((g_vm->_caff == 24) && (g_vm->_coreVar._wellObjectId != 0)) aniof(1, 1); } - if (g_caff < ROOM26) + if (g_vm->_caff < ROOM26) g_vm->startMusicOrSpeech(1); } } @@ -533,7 +322,8 @@ void tkey1(bool d) { // Wait for release from any key or mouse button while (g_vm->keyPressed()) - g_key = testou(); + g_vm->_key = testou(); + do { g_vm->_mouse.getMousePosition(x, y, c); g_vm->keyPressed(); @@ -555,24 +345,24 @@ void tkey1(bool d) { /* NIVEAU 7 */ void tlu(int af, int ob) { - g_caff = 32; + g_vm->_caff = 32; afdes(); - repon(6, ob + 4000); - repon(2, 999); + g_vm->repon(6, ob + 4000); + g_vm->repon(2, 999); tkey1(true); - g_caff = af; + g_vm->_caff = af; g_vm->_msg[3] = OPCODE_NONE; - g_crep = 998; + g_vm->_crep = 998; } void affrep() { - g_caff = g_vm->_coreVar._currPlace; - g_crep = g_vm->_coreVar._currPlace; + g_vm->_caff = g_vm->_coreVar._currPlace; + g_vm->_crep = g_vm->_coreVar._currPlace; } void tsort() { - if ((g_iouv > 0) && (g_vm->_coreVar._currPlace != 0)) { + if ((g_vm->_iouv > 0) && (g_vm->_coreVar._currPlace != 0)) { if (g_vm->_coreVar._faithScore < 50) g_vm->_coreVar._faithScore += 2; else @@ -581,24 +371,24 @@ void tsort() { for (int cx = 1; cx <= 7; ++cx) g_vm->_touv[cx] = chr(0); - g_ment = 0; - g_iouv = 0; + g_vm->_ment = 0; + g_vm->_iouv = 0; g_vm->_mchai = 0; debloc(g_vm->_coreVar._currPlace); } void st4(int ob) { - g_crep = 997; + g_vm->_crep = 997; switch (ob) { case 114 : - g_crep = 109; + g_vm->_crep = 109; break; case 110 : - g_crep = 107; + g_vm->_crep = 107; break; case 158 : - g_crep = 113; + g_vm->_crep = 113; break; case 152: case 153: @@ -610,7 +400,7 @@ void st4(int ob) { case 157: case 160: case 161 : - tlu(g_caff, ob); + tlu(g_vm->_caff, ob); break; default: break; @@ -645,7 +435,7 @@ void mennor() { } void premtet() { - g_vm->draw(g_ades, 10, 80); + g_vm->draw(kAdrDes, 10, 80); g_vm->_screenSurface.drawBox(18, 79, 155, 91, 15); } @@ -660,7 +450,7 @@ void ajchai() { if (g_vm->_tabdon[cy + cx] == 0) g_vm->_tabdon[cy + cx] = g_vm->_coreVar._selectedObjectId; else - g_crep = 192; + g_vm->_crep = 192; } void ajjer(int ob) { @@ -673,32 +463,26 @@ void ajjer(int ob) { g_vm->_coreVar._sjer[(cx)] = chr(ob); modinv(); } else - g_crep = 139; + g_vm->_crep = 139; } -void tctrm() { - repon(2, (3000 + g_ctrm)); - g_ctrm = 0; -} - - void quelquun() { if (g_vm->_menu._menuDisplayed) g_vm->_menu.eraseMenu(); g_vm->endSearch(); - g_crep = 997; + g_vm->_crep = 997; L1: if (!g_vm->_hiddenHero) { - if (g_crep == 997) - g_crep = 138; - repon(2, g_crep); - if (g_crep == 138) + if (g_vm->_crep == 997) + g_vm->_crep = 138; + g_vm->repon(2, g_vm->_crep); + if (g_vm->_crep == 138) g_vm->_speechManager.startSpeech(5, 2, 1); else g_vm->_speechManager.startSpeech(4, 4, 1); - if (g_iouv == 0) + if (g_vm->_iouv == 0) g_vm->_coreVar._faithScore += 2; else if (g_vm->_coreVar._faithScore < 50) g_vm->_coreVar._faithScore += 4; @@ -707,8 +491,8 @@ L1: tsort(); g_vm->_menu.setDestinationMenuText(LANDING); int cx = g_vm->convertBitIndexToCharacterIndex(g_vm->_currBitIndex); - g_caff = 69 + cx; - g_crep = g_caff; + g_vm->_caff = 69 + cx; + g_vm->_crep = g_vm->_caff; g_vm->_msg[3] = MENU_DISCUSS; g_vm->_msg[4] = g_vm->_menu._discussMenu[cx]; g_vm->_syn = true; @@ -716,10 +500,10 @@ L1: } else { if (g_vm->getRandomNumber(1, 3) == 2) { g_vm->_hiddenHero = false; - g_crep = 137; + g_vm->_crep = 137; goto L1; } else { - repon(2, 136); + g_vm->repon(2, 136); int rand = (g_vm->getRandomNumber(0, 4)) - 2; g_vm->_speechManager.startSpeech(3, rand, 1); g_vm->clearScreenType2(); @@ -740,22 +524,22 @@ void tsuiv() { int cx = 0; do { ++cx; - ++g_cs; - cl = cy + g_cs; + ++g_vm->_cs; + cl = cy + g_vm->_cs; tbcl = g_vm->_tabdon[cl]; - } while ((tbcl == 0) && (g_cs <= 9)); + } while ((tbcl == 0) && (g_vm->_cs <= 9)); - if ((tbcl != 0) && (g_cs < 11)) { - ++g_vm->g_is; - g_caff = tbcl; - g_crep = g_caff + 400; + if ((tbcl != 0) && (g_vm->_cs < 11)) { + ++g_vm->_is; + g_vm->_caff = tbcl; + g_vm->_crep = g_vm->_caff + 400; if (g_vm->_currBitIndex != 0) g_vm->_coreVar._faithScore += 2; } else { affrep(); g_vm->endSearch(); if (cx > 9) - g_crep = 131; + g_vm->_crep = 131; } } @@ -763,7 +547,7 @@ void tfleche() { bool qust; char touch; - if (g_num == 9999) + if (g_vm->_num == 9999) return; fenat(chr(152)); @@ -776,20 +560,20 @@ void tfleche() { CHECK_QUIT; if (g_vm->getMouseClick()) - inRect = (g_vm->_mouse._pos.x < 256 * g_res) && (g_vm->_mouse._pos.y < 176) && (g_vm->_mouse._pos.y > 12); + inRect = (g_vm->_mouse._pos.x < 256 * g_vm->_res) && (g_vm->_mouse._pos.y < 176) && (g_vm->_mouse._pos.y > 12); g_vm->prepareRoom(); } while (!(qust || inRect || g_vm->_anyone)); if (qust && (touch == '\103')) Alert::show(g_vm->_hintPctMessage, 1); - } while (!((touch == '\73') || ((touch == '\104') && (g_x != 0) && (g_y != 0)) || (g_vm->_anyone) || (inRect))); + } while (!((touch == '\73') || ((touch == '\104') && (g_vm->_x != 0) && (g_vm->_y != 0)) || (g_vm->_anyone) || (inRect))); if (touch == '\73') g_vm->_keyPressedEsc = true; if (inRect) { - g_x = g_vm->_mouse._pos.x; - g_y = g_vm->_mouse._pos.y; + g_vm->_x = g_vm->_mouse._pos.x; + g_vm->_y = g_vm->_mouse._pos.y; } } @@ -798,23 +582,23 @@ void tcoord(int sx) { int ib; - g_num = 0; - g_crep = 999; + g_vm->_num = 0; + g_vm->_crep = 999; int a = 0; int atdon = amzon + 3; int cy = 0; - while (cy < g_caff) { + while (cy < g_vm->_caff) { a += g_vm->_tabdon[atdon]; atdon += 4; ++cy; } if (g_vm->_tabdon[atdon] == 0) { - g_crep = 997; + g_vm->_crep = 997; return; } - a += fleche; + a += kFleche; int cb = 0; for (cy = 0; cy <= (sx - 2); ++cy) { ib = (g_vm->_tabdon[a + cb] << 8) + g_vm->_tabdon[(a + cb + 1)]; @@ -822,27 +606,27 @@ void tcoord(int sx) { } ib = (g_vm->_tabdon[a + cb] << 8) + g_vm->_tabdon[(a + cb + 1)]; if (ib == 0) { - g_crep = 997; + g_vm->_crep = 997; return; } cy = 1; do { cb += 2; - sx = g_vm->_tabdon[a + cb] * g_res; + sx = g_vm->_tabdon[a + cb] * g_vm->_res; sy = g_vm->_tabdon[(a + cb + 1)]; cb += 2; - ix = g_vm->_tabdon[a + cb] * g_res; + ix = g_vm->_tabdon[a + cb] * g_vm->_res; iy = g_vm->_tabdon[(a + cb + 1)]; ++cy; - } while (!(((g_x >= sx) && (g_x <= ix) && (g_y >= sy) && (g_y <= iy)) || (cy > ib))); + } while (!(((g_vm->_x >= sx) && (g_vm->_x <= ix) && (g_vm->_y >= sy) && (g_vm->_y <= iy)) || (cy > ib))); - if ((g_x >= sx) && (g_x <= ix) && (g_y >= sy) && (g_y <= iy)) { - g_num = cy - 1; + if ((g_vm->_x >= sx) && (g_vm->_x <= ix) && (g_vm->_y >= sy) && (g_vm->_y <= iy)) { + g_vm->_num = cy - 1; return; } - g_crep = 997; + g_vm->_crep = 997; } @@ -850,51 +634,51 @@ void st7(int ob) { switch (ob) { case 116: case 144: - g_crep = 104; + g_vm->_crep = 104; break; case 126: case 111: - g_crep = 108; + g_vm->_crep = 108; break; case 132: - g_crep = 111; + g_vm->_crep = 111; break; case 142: - g_crep = 112; + g_vm->_crep = 112; break; default: - g_crep = 183; + g_vm->_crep = 183; st4(ob); } } void treg(int ob) { - int mdes = g_caff; - g_caff = ob; + int mdes = g_vm->_caff; + g_vm->_caff = ob; - if (((g_caff > 29) && (g_caff < 33)) || (g_caff == 144) || (g_caff == 147) || (g_caff == 149) || (g_vm->_msg[4] == OPCODE_SLOOK)) { + if (((g_vm->_caff > 29) && (g_vm->_caff < 33)) || (g_vm->_caff == 144) || (g_vm->_caff == 147) || (g_vm->_caff == 149) || (g_vm->_msg[4] == OPCODE_SLOOK)) { afdes(); - if ((g_caff > 29) && (g_caff < 33)) - repon(2, g_caff); + if ((g_vm->_caff > 29) && (g_vm->_caff < 33)) + g_vm->repon(2, g_vm->_caff); else - repon(2, g_caff + 400); + g_vm->repon(2, g_vm->_caff + 400); tkey1(true); - g_caff = mdes; + g_vm->_caff = mdes; g_vm->_msg[3] = 0; - g_crep = 998; + g_vm->_crep = 998; } else { g_vm->_obpart = true; - g_crep = g_caff + 400; + g_vm->_crep = g_vm->_caff + 400; g_vm->_menu.setSearchMenu(); } } void avpoing(int &ob) { - g_crep = 999; + g_vm->_crep = 999; if (g_vm->_coreVar._selectedObjectId != 0) ajjer(g_vm->_coreVar._selectedObjectId); - if (g_crep != 139) { + if (g_vm->_crep != 139) { modobj(ob + 400); g_vm->_coreVar._selectedObjectId = ob; ob = 0; @@ -906,12 +690,12 @@ void rechai(int &ch) { if (g_vm->_coreVar._currPlace == CRYPT) tmpPlace = CELLAR; - ch = g_vm->_tabdon[achai + (tmpPlace * 7) + g_num - 1]; + ch = g_vm->_tabdon[achai + (tmpPlace * 7) + g_vm->_num - 1]; } int t23coul() { if (!g_vm->checkInventory(143)) { - g_crep = 1512; + g_vm->_crep = 1512; g_vm->loseGame(); } @@ -929,9 +713,9 @@ void st13(int ob) { (ob == 110) || (ob == 153) || (ob == 154) || (ob == 155) || (ob == 156) || (ob == 157) || (ob == 144) || (ob == 158) || (ob == 150) || (ob == 152)) - g_crep = 999; + g_vm->_crep = 999; else - g_crep = 105; + g_vm->_crep = 105; } void sauvecr(int y, int dy) { diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 30b0cafb47..667883ccf4 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -42,24 +42,11 @@ static const int _actionMenu[12] = { OPCODE_NONE, OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE }; -extern void pictout(int seg, int dep, int x, int y); -extern void sauvecr(int y, int dy); -extern void charecr(int y, int dy); -extern void adzon(); -extern int animof(int ouf, int num); -/* Niveau 14 suite */ -extern void modif(int &nu); /* NIVEAU 13 */ -extern void text1(int x, int y, int nb, int m); -extern void initouv(); -extern void ecr2(Common::String str_); -extern void ecr3(Common::String text); extern void paint_rect(int x, int y, int dx, int dy); /* NIVEAU 12 */ extern void modobj(int m); -extern void repon(int f, int m); extern int chlm(); -extern void drawClock(); /************* * NIVEAU 11 * *************/ @@ -70,7 +57,6 @@ extern void becfren(int roomId); extern void init_nbrepm(); extern void phaz(int &rand, int &p, int cf); extern int t11(int roomId); -extern void cavegre(); extern void writetp(Common::String s, int t); extern void aniof(int ouf, int num); /* NIVEAU 9 */ @@ -91,7 +77,6 @@ extern void premtet(); /* NIVEAU 5 */ extern void ajchai(); extern void ajjer(int ob); -extern void tctrm(); extern void quelquun(); extern void tsuiv(); extern void tfleche(); @@ -104,5 +89,7 @@ extern int t23coul(); extern void maivid(); extern void st13(int ob); +extern void sauvecr(int y, int dy); +extern void charecr(int y, int dy); } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 05d6e05a56..536fe09114 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -175,7 +175,7 @@ Common::ErrorCode MortevielleEngine::initialise() { // Set the screen mode _currGraphicalDevice = MODE_EGA; - g_res = 2; + _res = 2; _txxFileFl = false; // Load texts from TXX files @@ -216,7 +216,6 @@ Common::ErrorCode MortevielleEngine::initialise() { if (_newGraphicalDevice != _currGraphicalDevice) _currGraphicalDevice = _newGraphicalDevice; hirs(); - g_ades = 0x7000; return Common::kNoError; } @@ -563,7 +562,7 @@ void MortevielleEngine::mainGame() { if (_reloadCFIEC) loadCFIEC(); - for (g_crep = 1; g_crep <= _c_zzz; ++g_crep) + for (_crep = 1; _crep <= _c_zzz; ++_crep) decodeNumber(&_cfiecBuffer[161 * 16], ((822 * 128) - (161 * 16)) / 64); loadBRUIT5(); @@ -613,12 +612,12 @@ void MortevielleEngine::handleAction() { clearScreenType3(); oo = false; - g_ctrm = 0; + _controlMenu = 0; if (!_keyPressedEsc) { _menu.drawMenu(); _menu._menuDisplayed = true; temps = 0; - g_key = 0; + _key = 0; funct = false; inkey = '.'; @@ -654,8 +653,8 @@ void MortevielleEngine::handleAction() { } else return; } else if (inkey == '\104') { - if ((g_x != 0) && (g_y != 0)) - g_num = 9999; + if ((_x != 0) && (_y != 0)) + _num = 9999; return; } } @@ -667,8 +666,8 @@ void MortevielleEngine::handleAction() { return; if (temps > lim) { repon(2, 141); - if (g_num == 9999) - g_num = 0; + if (_num == 9999) + _num = 0; } else { _menuOpcode = _msg[3]; if ((_msg[3] == MENU_ACTION) || (_msg[3] == MENU_SELF)) @@ -682,8 +681,8 @@ void MortevielleEngine::handleAction() { oo = true; if ((_msg[4] == OPCODE_LIFT) || (_obpart)) { endSearch(); - g_caff = _coreVar._currPlace; - g_crep = 998; + _caff = _coreVar._currPlace; + _crep = 998; } else tsuiv(); mennor(); @@ -694,18 +693,18 @@ void MortevielleEngine::handleAction() { if (! oo) handleOpcode(); - if ((g_ctrm == 0) && (! _loseGame) && (! _endGame)) { + if ((_controlMenu == 0) && (! _loseGame) && (! _endGame)) { taffich(); if (_okdes) { _okdes = false; dessin(0); } if ((!_syn) || (_col)) - repon(2, g_crep); + repon(2, _crep); } } while (_syn); - if (g_ctrm != 0) - tctrm(); + if (_controlMenu != 0) + displayControlMenu(); } } } @@ -767,7 +766,7 @@ void MortevielleEngine::prepareScreenType3() { */ void MortevielleEngine::updateHour(int &day, int &hour, int &minute) { int newHour = readclock(); - int th = g_jh + ((newHour - g_mh) / g_t); + int th = _jh + ((newHour - _mh) / _t); minute = ((th % 2) + _currHalfHour) * 30; hour = ((uint)th >> 1) + _currHour; if (minute == 60) { @@ -1381,12 +1380,12 @@ void MortevielleEngine::getKnockAnswer() { updateHour(day, hour, minute); if ((hour >= 0) && (hour < 8)) - g_crep = 190; + _crep = 190; else { if (getRandomNumber(1, 100) > 70) - g_crep = 190; + _crep = 190; else - g_crep = 147; + _crep = 147; } } @@ -1431,11 +1430,11 @@ int MortevielleEngine::getPresenceBitIndex(int roomId) { */ void MortevielleEngine::initGame() { _place = MANOR_FRONT; - g_jh = 0; + _jh = 0; if (!_coreVar._alreadyEnteredManor) _blo = true; - g_t = kTime1; - g_mh = readclock(); + _t = kTime1; + _mh = readclock(); } /** @@ -1625,10 +1624,10 @@ void MortevielleEngine::startMusicOrSpeech(int so) { if (so == 0) { /* musik(0) */ ; - } else if ((g_prebru == 0) && (!_coreVar._alreadyEnteredManor)) { + } else if ((_prebru == 0) && (!_coreVar._alreadyEnteredManor)) { // Type 1: Speech _speechManager.startSpeech(10, 1, 1); - ++g_prebru; + ++_prebru; } else { if (((_coreVar._currPlace == MOUNTAIN) || (_coreVar._currPlace == MANOR_FRONT) || (_coreVar._currPlace == MANOR_BACK)) && (getRandomNumber(1, 3) == 2)) // Type 1: Speech @@ -1654,8 +1653,8 @@ void MortevielleEngine::startMusicOrSpeech(int so) { */ void MortevielleEngine::loseGame() { initouv(); - g_ment = 0; - g_iouv = 0; + _ment = 0; + _iouv = 0; _mchai = 0; _menu.unsetSearchMenu(); if (!_blo) @@ -1664,7 +1663,7 @@ void MortevielleEngine::loseGame() { _loseGame = true; clearScreenType1(); _screenSurface.drawBox(60, 35, 400, 50, 15); - repon(9, g_crep); + repon(9, _crep); clearScreenType2(); clearScreenType3(); _col = false; @@ -1713,7 +1712,7 @@ void MortevielleEngine::startDialog(int16 rep) { key = 0; do { - _speechManager.startSpeech(rep, haut[g_caff - 69], 0); + _speechManager.startSpeech(rep, haut[_caff - 69], 0); key = f3f8::waitForF3F8(); CHECK_QUIT; } while (key != 66); @@ -1728,8 +1727,8 @@ void MortevielleEngine::startDialog(int16 rep) { void MortevielleEngine::endSearch() { _heroSearching = false; _obpart = false; - g_cs = 0; - g_is = 0; + _cs = 0; + _is = 0; _menu.unsetSearchMenu(); } @@ -1743,14 +1742,14 @@ void MortevielleEngine::gotoDiningRoom() { updateHour(day, hour, minute); if ((hour < 5) && (_coreVar._currPlace > ROOM18)) { if (!checkInventory(137)) { //You don't have the keys, and it's late - g_crep = 1511; + _crep = 1511; loseGame(); } else displayDiningRoom(); } else if (!_coreVar._alreadyEnteredManor) { //Is it your first time? _currBitIndex = 255; // Everybody is present showPeoplePresent(_currBitIndex); - g_caff = 77; + _caff = 77; afdes(); _screenSurface.drawBox(223, 47, 155, 91, 15); repon(2, 33); @@ -1769,7 +1768,7 @@ void MortevielleEngine::gotoDiningRoom() { if (!_blo) minute = t11(OWN_ROOM); _currBitIndex = 0; - g_mpers = 0; + _savedBitIndex = 0; _coreVar._alreadyEnteredManor = true; } else displayDiningRoom(); @@ -1782,7 +1781,7 @@ void MortevielleEngine::gotoDiningRoom() { void MortevielleEngine::checkManorDistance() { ++_manorDistance; if (_manorDistance > 2) { - g_crep = 1506; + _crep = 1506; loseGame(); } else { _okdes = true; @@ -1815,7 +1814,7 @@ void MortevielleEngine::gotoManorBack() { * @remarks Originally called 't1deau' */ void MortevielleEngine::floodedInWell() { - g_crep = 1503; + _crep = 1503; loseGame(); } @@ -1838,9 +1837,9 @@ void MortevielleEngine::changeGraphicalDevice(int newDevice) { displayAloneText(); clearScreenType2(); clearScreenType3(); - g_maff = 68; + _maff = 68; afdes(); - repon(2, g_crep); + repon(2, _crep); _menu.displayMenu(); } @@ -1857,24 +1856,24 @@ void MortevielleEngine::gameLoaded() { _col = false; _hiddenHero = false; _brt = false; - g_maff = 68; + _maff = 68; _menuOpcode = OPCODE_NONE; - g_prebru = 0; - g_x = 0; - g_y = 0; - g_num = 0; - g_hdb = 0; - g_hfb = 0; - g_cs = 0; - g_is = 0; - g_ment = 0; + _prebru = 0; + _x = 0; + _y = 0; + _num = 0; + _startHour = 0; + _endHour = 0; + _cs = 0; + _is = 0; + _ment = 0; _syn = true; _heroSearching = true; _mchai = 0; _manorDistance = 0; initouv(); - g_iouv = 0; - g_dobj = 0; + _iouv = 0; + _dobj = 0; affrep(); _hintPctMessage = getString(580); @@ -1887,7 +1886,7 @@ void MortevielleEngine::gameLoaded() { prepareRoom(); drawClock(); afdes(); - repon(2, g_crep); + repon(2, _crep); clearScreenType3(); _endGame = false; _menu.setDestinationMenuText(_coreVar._currPlace); @@ -1909,7 +1908,7 @@ void MortevielleEngine::handleOpcode() { if (!_anyone) { if (_brt) { if ((_msg[3] == MENU_MOVE) || (_msg[4] == OPCODE_LEAVE) || (_msg[4] == OPCODE_SLEEP) || (_msg[4] == OPCODE_EAT)) { - g_ctrm = 4; + _controlMenu = 4; mennor(); return; } @@ -1990,15 +1989,15 @@ void MortevielleEngine::handleOpcode() { if (((_coreVar._currPlace < CRYPT) || (_coreVar._currPlace > MOUNTAIN)) && (_coreVar._currPlace != INSIDE_WELL) && (_coreVar._currPlace != OWN_ROOM) && (_coreVar._selectedObjectId != 152) && (!_loseGame)) { if ((_coreVar._faithScore > 99) && (hour > 8) && (hour < 16)) { - g_crep = 1501; + _crep = 1501; loseGame(); } if ((_coreVar._faithScore > 99) && (hour > 0) && (hour < 9)) { - g_crep = 1508; + _crep = 1508; loseGame(); } if ((day > 1) && (hour > 8) && (!_loseGame)) { - g_crep = 1502; + _crep = 1502; loseGame(); } } @@ -2084,7 +2083,7 @@ void MortevielleEngine::clearScreenType10() { Common::String st; _mouse.hideMouse(); - if (g_res == 1) { + if (_res == 1) { co = 634; cod = 534; } else { @@ -2130,7 +2129,7 @@ void MortevielleEngine::showMoveMenuAlert() { * @remarks Originally called 'dialpre' */ void MortevielleEngine::showConfigScreen() { - g_crep = 998; + _crep = 998; } /** @@ -2303,8 +2302,8 @@ void MortevielleEngine::setPal(int n) { case MODE_EGA: case MODE_AMSTRAD1512: for (int i = 1; i <= 16; ++i) { - g_vm->_mem[(0x7000 * 16) + (2 * i)] = _stdPal[n][i].x; - g_vm->_mem[(0x7000 * 16) + (2 * i) + 1] = _stdPal[n][i].y; + _mem[(0x7000 * 16) + (2 * i)] = _stdPal[n][i].x; + _mem[(0x7000 * 16) + (2 * i) + 1] = _stdPal[n][i].y; } break; case MODE_CGA: { @@ -2332,12 +2331,12 @@ void MortevielleEngine::setPal(int n) { void MortevielleEngine::displayCGAPattern(int n, Pattern p, nhom *pal) { int addr = n * 404 + 0xd700; - WRITE_LE_UINT16(&g_vm->_mem[0x6000 * 16 + addr], p._tax); - WRITE_LE_UINT16(&g_vm->_mem[0x6000 * 16 + addr + 2], p._tay); + WRITE_LE_UINT16(&_mem[0x6000 * 16 + addr], p._tax); + WRITE_LE_UINT16(&_mem[0x6000 * 16 + addr + 2], p._tay); addr += 4; for (int i = 0; i < p._tax; ++i) { for (int j = 0; j < p._tay; ++j) - g_vm->_mem[(0x6000 * 16) + addr + j * p._tax + i] = pal[n]._hom[p._des[i + 1][j + 1]]; + _mem[(0x6000 * 16) + addr + j * p._tax + i] = pal[n]._hom[p._des[i + 1][j + 1]]; } } @@ -2443,7 +2442,7 @@ void MortevielleEngine::loadBRUIT5() { if (!f.open("bruit5")) error("Missing file - bruit5"); - f.read(&g_vm->_mem[kAdrNoise5 * 16 + 0], 149 * 128); + f.read(&_mem[kAdrNoise5 * 16 + 0], 149 * 128); f.close(); } @@ -2486,12 +2485,12 @@ void MortevielleEngine::music() { if (!fic.open("mort.img")) error("Missing file - mort.img"); - fic.read(&g_vm->_mem[0x3800 * 16 + 0], 500); - fic.read(&g_vm->_mem[0x47a0 * 16 + 0], 123); + fic.read(&_mem[0x3800 * 16 + 0], 500); + fic.read(&_mem[0x47a0 * 16 + 0], 123); fic.close(); - _soundManager.decodeMusic(&g_vm->_mem[0x3800 * 16], &g_vm->_mem[0x5000 * 16], 623); - _addfix = (float)((kTempoMusic - 8)) / 256; + _soundManager.decodeMusic(&_mem[0x3800 * 16], &_mem[0x5000 * 16], 623); + _addFix = (float)((kTempoMusic - 8)) / 256; _speechManager.cctable(_speechManager._tbi); bool fin = false; @@ -2513,16 +2512,16 @@ void MortevielleEngine::music() { void MortevielleEngine::showTitleScreen() { hirs(); repon(7, 2035); - g_caff = 51; + _caff = 51; taffich(); teskbd(); if (_newGraphicalDevice != _currGraphicalDevice) _currGraphicalDevice = _newGraphicalDevice; hirs(); - draw(g_ades, 0, 0); + draw(kAdrDes, 0, 0); Common::String cpr = "COPYRIGHT 1989 : LANKHOR"; - _screenSurface.putxy(104 + 72 * g_res, 185); + _screenSurface.putxy(104 + 72 * _res, 185); _screenSurface.drawString(cpr, 0); } @@ -2544,7 +2543,7 @@ void MortevielleEngine::draw(int ad, int x, int y) { void MortevielleEngine::drawRightFrame() { setPal(89); if (_currGraphicalDevice == MODE_HERCULES) { - g_vm->_mem[0x7000 * 16 + 14] = 15; + _mem[0x7000 * 16 + 14] = 15; } _mouse.hideMouse(); pictout(0x73a2, 0, 0, 0); @@ -2626,22 +2625,22 @@ void MortevielleEngine::prepareRoom() { if (!_blo) { if ((hour == 12) || ((hour > 18) && (hour < 21)) || ((hour >= 0) && (hour < 7))) - g_t = kTime2; + _t = kTime2; else - g_t = kTime1; + _t = kTime1; cf = _coreVar._faithScore; if ((cf > 33) && (cf < 66)) - g_t -= (g_t / 3); + _t -= (_t / 3); if (cf > 65) - g_t -= ((g_t / 3) * 2); + _t -= ((_t / 3) * 2); int nh = readclock(); - if ((nh - g_mh) > g_t) { + if ((nh - _mh) > _t) { bool activeMenu = _menu._menuActive; _menu.eraseMenu(); - g_jh += ((nh - g_mh) / g_t); - g_mh = nh; + _jh += ((nh - _mh) / _t); + _mh = nh; switch (_place) { case GREEN_ROOM: case DARKBLUE_ROOM: @@ -2681,17 +2680,17 @@ void MortevielleEngine::prepareRoom() { setRandomPresenceChapel(cf); break; } - if ((g_mpers != 0) && (_currBitIndex != 10)) - g_mpers = _currBitIndex; + if ((_savedBitIndex != 0) && (_currBitIndex != 10)) + _savedBitIndex = _currBitIndex; - if ((g_mpers == 0) && (_currBitIndex > 0)) { + if ((_savedBitIndex == 0) && (_currBitIndex > 0)) { if ((_coreVar._currPlace == ATTIC) || (_coreVar._currPlace == CELLAR)) { - cavegre(); + initCaveOrCellar(); } else if (_currBitIndex == 10) { _currBitIndex = 0; if (!_brt) { _brt = true; - g_hdb = readclock(); + _startHour = readclock(); if (getRandomNumber(1, 5) < 5) { clearScreenType3(); prepareScreenType2(); @@ -2708,11 +2707,11 @@ void MortevielleEngine::prepareRoom() { _menu.drawMenu(); } } - g_hfb = readclock(); - if ((_brt) && ((g_hfb - g_hdb) > 17)) { + _endHour = readclock(); + if ((_brt) && ((_endHour - _startHour) > 17)) { getPresenceBitIndex(_place); _brt = false; - g_hdb = 0; + _startHour = 0; if ((_coreVar._currPlace > OWN_ROOM) && (_coreVar._currPlace < DINING_ROOM)) _anyone = true; } @@ -2742,9 +2741,9 @@ void MortevielleEngine::drawClock() { co = 1; if (_minute == 0) - _screenSurface.drawLine(((uint)x >> 1) * g_res, y, ((uint)x >> 1) * g_res, (y - rg), co); + _screenSurface.drawLine(((uint)x >> 1) * _res, y, ((uint)x >> 1) * _res, (y - rg), co); else - _screenSurface.drawLine(((uint)x >> 1) * g_res, y, ((uint)x >> 1) * g_res, (y + rg), co); + _screenSurface.drawLine(((uint)x >> 1) * _res, y, ((uint)x >> 1) * _res, (y + rg), co); h = _hour; if (h > 12) @@ -2752,7 +2751,7 @@ void MortevielleEngine::drawClock() { if (h == 0) h = 12; - _screenSurface.drawLine(((uint)x >> 1) * g_res, y, ((uint)(x + cv[0][h - 1]) >> 1) * g_res, y + cv[1][h - 1], co); + _screenSurface.drawLine(((uint)x >> 1) * _res, y, ((uint)(x + cv[0][h - 1]) >> 1) * _res, y + cv[1][h - 1], co); _mouse.showMouse(); _screenSurface.putxy(568, 154); @@ -2797,7 +2796,233 @@ void MortevielleEngine::hirs() { // method is deprecated in favour of clearing the screen debugC(1, kMortevielleCore, "TODO: hirs is deprecated in favour of ScreenSurface::clearScreen"); - g_vm->_screenSurface.clearScreen(); + if (_currGraphicalDevice == MODE_CGA) + _res = 1; + else + _res = 2; + + _screenSurface.clearScreen(); +} + +/** + * Init room : Cave or Cellar + * @remarks Originally called 'cavegre' + */ +void MortevielleEngine::initCaveOrCellar() { + _coreVar._faithScore += 2; + if (_coreVar._faithScore > 69) + _coreVar._faithScore += (_coreVar._faithScore / 10); + clearScreenType3(); + prepareScreenType2(); + ecr3(getEngineString(S_SOMEONE_ENTERS)); + int rand = (getRandomNumber(0, 4)) - 2; + _speechManager.startSpeech(2, rand, 1); + + // The original was doing here a useless loop. + // It has been removed + + clearScreenType3(); + displayAloneText(); +} + +/** + * Display control menu string + * @remarks Originally called 'tctrm' + */ +void MortevielleEngine::displayControlMenu() { + repon(2, (3000 + _controlMenu)); + _controlMenu = 0; +} + +void MortevielleEngine::pictout(int seg, int dep, int x, int y) { + GfxSurface surface; + surface.decode(&_mem[seg * 16 + dep]); + + if (_currGraphicalDevice == MODE_HERCULES) { + _mem[0x7000 * 16 + 2] = 0; + _mem[0x7000 * 16 + 32] = 15; + } + + if ((_caff != 51) && (READ_LE_UINT16(&_mem[0x7000 * 16 + 0x4138]) > 0x100)) + WRITE_LE_UINT16(&_mem[0x7000 * 16 + 0x4138], 0x100); + + _screenSurface.drawPicture(surface, x, y); +} + +void MortevielleEngine::adzon() { + Common::File f; + + if (!f.open("don.mor")) + error("Missing file - don.mor"); + + f.read(_tabdon, 7 * 256); + f.close(); + + if (!f.open("bmor.mor")) + error("Missing file - bmor.mor"); + + f.read(&_tabdon[kFleche], 1 * 1916); + f.close(); + + if (!f.open("dec.mor")) + error("Missing file - dec.mor"); + + f.read(&_mem[0x73a2 * 16 + 0], 1 * 1664); + f.close(); +} + +/** + * Returns the offset within the compressed image data resource of the desired image + */ +int MortevielleEngine::animof(int ouf, int num) { + int nani = _mem[kAdrAni * 16 + 1]; + int aux = num; + if (ouf != 1) + aux += nani; + + int animof_result = (nani << 2) + 2 + READ_BE_UINT16(&_mem[kAdrAni * 16 + (aux << 1)]); + + return animof_result; +} + +void MortevielleEngine::text1(int x, int y, int nb, int m) { + int co; + + if (_res == 1) + co = 10; + else + co = 6; + Common::String tmpStr = getString(m); + if ((y == 182) && ((int) tmpStr.size() * co > nb * 6)) + y = 176; + displayStr(tmpStr, x, y, nb, 20, _textColor); +} + +void MortevielleEngine::repon(int f, int m) { + if ((m > 499) && (m < 563)) { + Common::String tmpStr = getString(m - 501 + kInventoryStringIndex); + + if ((int) tmpStr.size() > ((58 + (_res - 1) * 37) << 1)) + _largestClearScreen = true; + else + _largestClearScreen = false; + + clearScreenType2(); + displayStr(tmpStr, 8, 176, 85, 3, 5); + } else { + modif(m); + switch (f) { + case 2: + case 8: + clearScreenType2(); + prepareScreenType2(); + text1(8, 182, 103, m); + if ((m == 68) || (m == 69)) + _coreVar._teauto[40] = '*'; + if ((m == 104) && (_caff == 14)) { + _coreVar._teauto[36] = '*'; + if (_coreVar._teauto[39] == '*') { + _coreVar._pourc[3] = '*'; + _coreVar._teauto[38] = '*'; + } + } + break; + case 1: + case 6: + case 9: { + int i; + if ((f == 1) || (f == 6)) + i = 4; + else + i = 5; + + Common::String tmpStr = getString(m); + displayStr(tmpStr, 80, 40, 60, 25, i); + + if (m == 180) + _coreVar._pourc[6] = '*'; + else if (m == 179) + _coreVar._pourc[10] = '*'; + } + break; + default: + break; + } + } +} + +void MortevielleEngine::modif(int &nu) { + if (nu == 26) + nu = 25; + else if ((nu > 29) && (nu < 36)) + nu -= 4; + else if ((nu > 69) && (nu < 78)) + nu -= 37; + else if ((nu > 99) && (nu < 194)) + nu -= 59; + else if ((nu > 996) && (nu < 1000)) + nu -= 862; + else if ((nu > 1500) && (nu < 1507)) + nu -= 1363; + else if ((nu > 1507) && (nu < 1513)) + nu -= 1364; + else if ((nu > 1999) && (nu < 2002)) + nu -= 1851; + else if (nu == 2010) + nu = 151; + else if ((nu > 2011) && (nu < 2025)) + nu -= 1860; + else if (nu == 2026) + nu = 165; + else if ((nu > 2029) && (nu < 2037)) + nu -= 1864; + else if ((nu > 3000) && (nu < 3005)) + nu -= 2828; + else if (nu == 4100) + nu = 177; + else if (nu == 4150) + nu = 178; + else if ((nu > 4151) && (nu < 4156)) + nu -= 3973; + else if (nu == 4157) + nu = 183; + else if ((nu == 4160) || (nu == 4161)) + nu -= 3976; +} + +void MortevielleEngine::initouv() { + for (int cx = 1; cx <= 7; ++cx) + _touv[cx] = chr(0); +} + +void MortevielleEngine::ecr2(Common::String text) { + // Some dead code was present in the original: removed + _screenSurface.putxy(8, 177); + int tlig = 59 + (_res - 1) * 36; + + if ((int)text.size() < tlig) + _screenSurface.drawString(text, 5); + else if ((int)text.size() < (tlig << 1)) { + _screenSurface.putxy(8, 176); + _screenSurface.drawString(copy(text, 1, (tlig - 1)), 5); + _screenSurface.putxy(8, 182); + _screenSurface.drawString(copy(text, tlig, tlig << 1), 5); + } else { + _largestClearScreen = true; + clearScreenType2(); + _screenSurface.putxy(8, 176); + _screenSurface.drawString(copy(text, 1, (tlig - 1)), 5); + _screenSurface.putxy(8, 182); + _screenSurface.drawString(copy(text, tlig, ((tlig << 1) - 1)), 5); + _screenSurface.putxy(8, 190); + _screenSurface.drawString(copy(text, tlig << 1, tlig * 3), 5); + } +} + +void MortevielleEngine::ecr3(Common::String text) { + clearScreenType3(); + _screenSurface.putxy(8, 192); + _screenSurface.drawString(text, 5); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 69cb12ab67..924e92b3d4 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -81,13 +81,15 @@ enum DataType { #define GAME_FRAME_DELAY (1000 / 50) const int kAcha = 492; +const int kAdrDes = 0x7000; +const int kFleche = 1758; + const int asoul = 154; const int aouvr = 282; const int achai = 387; const int arcf = 1272; const int arep = 1314; const int amzon = 1650; -const int fleche = 1758; const int arega = 0; struct nhom { @@ -164,6 +166,12 @@ private: void showTitleScreen(); int readclock(); void palette(int v1); + + void adzon(); + void text1(int x, int y, int nb, int m); + void modif(int &nu); + void initouv(); + public: Common::String _hintPctMessage; Common::Point _prevPos; @@ -210,6 +218,7 @@ public: int _place; int _manorDistance; int _currBitIndex; + int _savedBitIndex; int _currDay; int _currHour; int _currHalfHour; @@ -217,16 +226,35 @@ public: int _hour; int _minute; int _mchai; - float _addfix; + float _addFix; SaveStruct _coreVar, _saveStruct; Common::Point _stdPal[91][17]; t_pcga _cgaPal[91]; + int _key; + int _controlMenu; + int _startHour; + int _endHour; int _c_zzz; int ptr_word; byte _v_lieu[7][25]; - byte g_is; + byte _is; int _numpal; + int _ment; + int _iouv; + int _caff; + int _maff; + int _dobj; + int _num; + int _crep; + int _cs; + int _res; + int _prebru; + int _t; + int _x; + int _y; + int _jh; + int _mh; // TODO: Replace the following with proper implementations, or refactor out the code using them byte _mem[65536 * 16]; @@ -383,6 +411,16 @@ public: void drawClock(); Common::String copy(const Common::String &s, int idx, size_t size); void hirs(); + void initCaveOrCellar(); + void displayControlMenu(); + + + void pictout(int seg, int dep, int x, int y); + int animof(int ouf, int num); + void repon(int f, int m); + void ecr2(Common::String text); + void ecr3(Common::String text); + }; extern MortevielleEngine *g_vm; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index bd7e489aa9..e18090e1dd 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -228,8 +228,8 @@ void MouseHandler::showMouse() { * @remarks Originally called 'pos_mouse' */ void MouseHandler::setMousePosition(Common::Point newPos) { - if (newPos.x > 314 * g_res) - newPos.x = 314 * g_res; + if (newPos.x > 314 * g_vm->_res) + newPos.x = 314 * g_vm->_res; else if (newPos.x < 0) newPos.x = 0; if (newPos.y > 199) @@ -299,16 +299,16 @@ void MouseHandler::moveMouse(bool &funct, char &key) { cy = 190; break; case '9': - cx = 315 * g_res; + cx = 315 * g_vm->_res; cy = 1; break; case '3': cy = 190; - cx = 315 * g_res; + cx = 315 * g_vm->_res; break; case '5': cy = 100; - cx = 155 * g_res; + cx = 155 * g_vm->_res; break; case ' ': case '\15': @@ -362,27 +362,27 @@ void MouseHandler::moveMouse(bool &funct, char &key) { } break; case 'I': - cx = g_res * 32; + cx = g_vm->_res * 32; cy = 8; break; case 'D': - cx = 80 * g_res; + cx = 80 * g_vm->_res; cy = 8; break; case 'A': - cx = 126 * g_res; + cx = 126 * g_vm->_res; cy = 8; break; case 'S': - cx = 174 * g_res; + cx = 174 * g_vm->_res; cy = 8; break; case 'P': - cx = 222 * g_res; + cx = 222 * g_vm->_res; cy = 8; break; case 'F': - cx = g_res * 270; + cx = g_vm->_res * 270; cy = 8; break; case '\23': diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 8a3ecb8041..92831ec2f4 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -61,7 +61,7 @@ void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ) inputStr += '$'; g_vm->_screenSurface.putxy(x, y); - if (g_res == 1) + if (g_vm->_res == 1) tab = 10; else tab = 6; @@ -186,13 +186,13 @@ void taffich() { int32 lgt; int alllum[16]; - int a = g_caff; + int a = g_vm->_caff; if ((a >= 153) && (a <= 161)) a = tran2[a - 153]; else if ((a >= 136) && (a <= 140)) a = tran1[a - 136]; int b = a; - if (g_maff == a) + if (g_vm->_maff == a) return; switch (a) { @@ -246,11 +246,11 @@ void taffich() { m = 2010; if (a == 32) m = 2034; - if ((a == 17) && (g_maff == 14)) + if ((a == 17) && (g_vm->_maff == 14)) m = 2018; if (a > 99) { - if ((g_vm->g_is == 1) || (g_vm->g_is == 0)) + if ((g_vm->_is == 1) || (g_vm->_is == 0)) m = 2031; else m = 2032; @@ -259,26 +259,26 @@ void taffich() { if (((a > 69) && (a < 80)) || (a == 30) || (a == 31) || (a == 144) || (a == 147) || (a == 149)) m = 2030; - if (((a < 27) && (((g_maff > 69) && (!g_vm->_coreVar._alreadyEnteredManor)) || (g_maff > 99))) || ((g_maff > 29) && (g_maff < 33))) + if (((a < 27) && (((g_vm->_maff > 69) && (!g_vm->_coreVar._alreadyEnteredManor)) || (g_vm->_maff > 99))) || ((g_vm->_maff > 29) && (g_vm->_maff < 33))) m = 2033; - g_maff = a; + g_vm->_maff = a; if (a == 159) a = 86; else if (a > 140) - a = a - 67; + a -= 67; else if (a > 137) - a = a - 66; + a -= 66; else if (a > 99) - a = a - 64; + a -= 64; else if (a > 69) - a = a - 42; + a -= 42; else if (a > 29) - a = a - 5; + a -= 5; else if (a == 26) a = 24; else if (a > 18) - a = a - 1; + --a; npal = a; for (cx = 0; cx <= (a - 1); ++cx) @@ -293,7 +293,7 @@ void taffich() { lgt = handle; handle = g_vm->_fxxBuffer[88]; } - g_maff = a; + g_vm->_maff = a; npal = a + 37; } chardes(filename, lgt, handle); @@ -334,12 +334,12 @@ void taffich() { charani(filename, lgt, handle); } g_vm->_mouse.showMouse(); - if ((a < 27) && ((g_maff < 27) || (g_vm->_coreVar._currPlace == LANDING)) && (g_vm->_msg[4] != OPCODE_ENTER)) { + if ((a < 27) && ((g_vm->_maff < 27) || (g_vm->_coreVar._currPlace == LANDING)) && (g_vm->_msg[4] != OPCODE_ENTER)) { if ((a == 13) || (a == 14)) g_vm->displayAloneText(); else if (!g_vm->_blo) cx = t11(g_vm->_coreVar._currPlace); - g_mpers = 0; + g_vm->_savedBitIndex = 0; } } diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index d8731f96ac..5b9e8415dc 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -128,7 +128,7 @@ void SpeechManager::cctable(tablint &t) { tb[0] = 0; for (int k = 0; k <= 255; ++k) { - tb[k + 1] = g_vm->_addfix + tb[k]; + tb[k + 1] = g_vm->_addFix + tb[k]; t[255 - k] = abs((int)tb[k] + 1); } } @@ -554,17 +554,17 @@ void SpeechManager::startSpeech(int rep, int ht, int typ) { return; _phonemeNumb = rep; - g_haut = ht; + int haut = ht; _typlec = typ; if (_typlec != 0) { for (int i = 0; i <= 500; ++i) savph[i] = _cfiphBuffer[i]; tempo = kTempoNoise; - } else if (g_haut > 5) + } else if (haut > 5) tempo = kTempoF; else tempo = kTempoM; - g_vm->_addfix = (float)((tempo - 8)) / 256; + g_vm->_addFix = (float)((tempo - 8)) / 256; cctable(_tbi); switch (typ) { case 1: diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp index 6fc0593d65..a451cb651f 100644 --- a/engines/mortevielle/var_mor.cpp +++ b/engines/mortevielle/var_mor.cpp @@ -33,36 +33,6 @@ namespace Mortevielle { -/*---------------------------------------------------------------------------*/ -/*------------------------------ VARIABLES ------------------------------*/ -/*---------------------------------------------------------------------------*/ - -int g_x, - g_y, - g_t, - g_jh, - g_mh, - g_cs, - g_hdb, - g_hfb, - g_key, - g_num, - g_res, - g_ment, - g_haut, - g_caff, - g_maff, - g_crep, - g_ades, - g_iouv, - g_ctrm, - g_dobj, - g_mlec, - g_mchai, - g_mpers, - g_perdep, - g_prebru; - /*---------------------------------------------------------------------------*/ /*-------------------- PROCEDURES AND FONCTIONS -----------------------*/ /*---------------------------------------------------------------------------*/ diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 9ac807aa95..ddde25a464 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -115,34 +115,6 @@ typedef int tfxx[108]; enum GraphicModes { MODE_AMSTRAD1512 = 0, MODE_CGA = 1, MODE_EGA = 2, MODE_HERCULES = 3, MODE_TANDY = 4 }; -/*---------------------------------------------------------------------------*/ -/*------------------------------ VARIABLES ------------------------------*/ -/*---------------------------------------------------------------------------*/ - -extern int g_x, - g_y, - g_t, - g_jh, - g_mh, - g_cs, - g_hdb, - g_hfb, - g_key, - g_num, - g_res, - g_ment, - g_haut, - g_caff, - g_maff, - g_crep, - g_ades, - g_iouv, - g_ctrm, - g_dobj, - g_mpers, - g_perdep, - g_prebru; - } // End of namespace Mortevielle #endif -- cgit v1.2.3 From a87b992e8dd144c869db8498925662119f822d20 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 24 Mar 2012 09:47:36 +0100 Subject: MORTEVIELLE: Move functions out of mor.cpp --- engines/mortevielle/actions.cpp | 37 +++++---- engines/mortevielle/graphics.cpp | 15 ++++ engines/mortevielle/graphics.h | 3 +- engines/mortevielle/mor.cpp | 125 ++---------------------------- engines/mortevielle/mor.h | 13 ---- engines/mortevielle/mortevielle.cpp | 146 +++++++++++++++++++++++++++++++++--- engines/mortevielle/mortevielle.h | 7 ++ engines/mortevielle/saveload.cpp | 2 +- engines/mortevielle/var_mor.h | 8 +- 9 files changed, 188 insertions(+), 168 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 174af9fd1a..70979becfd 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -173,7 +173,7 @@ void MortevielleEngine::fctMove() { } if ((menuChoice < 5) || (menuChoice == 13) || (menuChoice == 14)) affrep(); - debloc(_coreVar._currPlace); + resetRoomVariables(_coreVar._currPlace); _menu.setDestinationMenuText(_coreVar._currPlace); } @@ -693,7 +693,7 @@ void MortevielleEngine::fctPlace() { aniof(1, 2); aniof(1, 1); repon(2, 165); - maivid(); + displayEmptyHand(); _speechManager.startSpeech(6, -9, 1); // Do you want to enter the hidden passage? @@ -772,7 +772,7 @@ void MortevielleEngine::fctPlace() { } if (_crep != 188) - maivid(); + displayEmptyHand(); } } @@ -856,7 +856,7 @@ void MortevielleEngine::fctAttach() { aniof(1, 1); } else _crep = 185; - maivid(); + displayEmptyHand(); } } } @@ -930,15 +930,14 @@ void MortevielleEngine::fctKnock() { if (_coreVar._currPlace == ROOM26) { int rand = (getRandomNumber(0, 8)) - 4; _speechManager.startSpeech(11, rand, 1); - int p; - ecfren(p, rand, _coreVar._faithScore, _ment); + int p = getPresenceStats(rand, _coreVar._faithScore, _ment); int l = _ment; if (l != 0) { if (p != -500) { if (rand > p) _crep = 190; else { - becfren(l); + setPresenceFlags(l); getKnockAnswer(); } } else @@ -964,7 +963,7 @@ void MortevielleEngine::fctSelfPut() { _crep = 999; ajchai(); if (_crep != 192) - maivid(); + displayEmptyHand(); return; } tfleche(); @@ -1039,7 +1038,7 @@ void MortevielleEngine::fctSelfPut() { if (_crep == 999) ajchai(); if (_crep != 192) - maivid(); + displayEmptyHand(); } } } @@ -1054,15 +1053,15 @@ void MortevielleEngine::fctListen() { else { if (_currBitIndex != 0) ++_coreVar._faithScore; - int p, rand; - ecfren(p, rand, _coreVar._faithScore, _ment); + int rand; + int p = getPresenceStats(rand, _coreVar._faithScore, _ment); int l = _ment; if (l != 0) { if (p != -500) { if (rand > p) _crep = 101; else { - becfren(l); + setPresenceFlags(l); int j, h, m; updateHour(j, h, m); rand = getRandomNumber(1, 100); @@ -1093,7 +1092,7 @@ void MortevielleEngine::fctEat() { tsort(); _coreVar._currPlace = DINING_ROOM; _caff = 10; - debloc(_coreVar._currPlace); + resetRoomVariables(_coreVar._currPlace); _menu.setDestinationMenuText(_coreVar._currPlace); int j, h, m; @@ -1163,7 +1162,7 @@ void MortevielleEngine::fctEnter() { repon(2, _caff); } else _col = false; - debloc(_ment); + resetRoomVariables(_ment); _ment = 0; } } else { @@ -1173,7 +1172,7 @@ void MortevielleEngine::fctEnter() { _coreVar._currPlace = _ment; affrep(); - debloc(_coreVar._currPlace); + resetRoomVariables(_coreVar._currPlace); _menu.setDestinationMenuText(_coreVar._currPlace); _ment = 0; _savedBitIndex = 0; @@ -1198,7 +1197,7 @@ void MortevielleEngine::fctSleep() { _coreVar._currPlace = OWN_ROOM; affrep(); afdes(); - debloc(_coreVar._currPlace); + resetRoomVariables(_coreVar._currPlace); _menu.setDestinationMenuText(_coreVar._currPlace); } clearScreenType3(); @@ -1281,7 +1280,7 @@ void MortevielleEngine::fctLeave() { _caff = nextPlace; if (_crep == 0) _crep = nextPlace; - debloc(nextPlace); + resetRoomVariables(nextPlace); _menu.setDestinationMenuText(nextPlace); } } @@ -1571,7 +1570,7 @@ void MortevielleEngine::fctScratch() { void MortevielleEngine::endGame() { _quitGame = true; tlu(13, 152); - maivid(); + displayEmptyHand(); clearScreenType1(); clearScreenType2(); clearScreenType3(); @@ -1610,7 +1609,7 @@ void MortevielleEngine::askRestart() { clearScreenType2(); startMusicOrSpeech(0); tkey1(false); - maivid(); + displayEmptyHand(); resetVariables(); initGame(); _currHour = 10; diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 42dd3c7cc7..2b6607513b 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -1143,4 +1143,19 @@ void ScreenSurface::drawLine(int x, int y, int xx, int yy, int coul) { } } +/** + * Draw plain rectangle + * @remarks Originally called 'paint_rect' + */ +void ScreenSurface::drawRectangle(int x, int y, int dx, int dy) { + int co; + + if (g_vm->_currGraphicalDevice == MODE_CGA) + co = 3; + else + co = 11; + g_vm->_screenSurface.fillRect(co, Common::Rect(x, y, x + dx, y + dy)); +} + + } // End of namespace Mortevielle diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 9f4a4799ab..498322680d 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -93,8 +93,9 @@ public: void clearScreen(); void putxy(int x, int y) { _textPos = Common::Point(x, y); } void drawString(const Common::String &l, int command); - int getStringWidth(const Common::String &s); + int getStringWidth(const Common::String &s); void drawLine(int x, int y, int xx, int yy, int coul); + void drawRectangle(int x, int y, int dx, int dy); // TODO: Refactor code to remove this method, for increased performance void setPixel(const Common::Point &pt, int palIndex); diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp index 85e34b6680..09857c8014 100644 --- a/engines/mortevielle/mor.cpp +++ b/engines/mortevielle/mor.cpp @@ -44,115 +44,7 @@ namespace Mortevielle { -void paint_rect(int x, int y, int dx, int dy) { - int co; - - if (g_vm->_currGraphicalDevice == MODE_CGA) - co = 3; - else - co = 11; - g_vm->_screenSurface.fillRect(co, Common::Rect(x, y, x + dx, y + dy)); -} - -/* NIVEAU 12 */ -void modobj(int m) { - Common::String strp = Common::String(' '); - - if (m != 500) - strp = g_vm->getString(m - 501 + kInventoryStringIndex); - - g_vm->_menu.setText(g_vm->_menu._inventoryMenu[8], strp); - g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[8]); -} - -int chlm() { - int retval = g_vm->getRandomNumber(1, 2); - if (retval == 2) - retval = 128; - - return retval; -} - -/************* - * NIVEAU 11 * - *************/ - -void debloc(int roomId) { - g_vm->_num = 0; - g_vm->_x = 0; - g_vm->_y = 0; - if ((roomId != ROOM26) && (roomId != LANDING)) - g_vm->resetPresenceInRooms(roomId); - g_vm->_savedBitIndex = g_vm->_currBitIndex; -} - -void ecfren(int &p, int &rand, int cf, int roomId) { - if (roomId == OWN_ROOM) - g_vm->displayAloneText(); - p = -500; - rand = 0; - if ( ((roomId == GREEN_ROOM) && (!g_vm->_roomPresenceLuc) && (!g_vm->_roomPresenceIda)) - || ((roomId == DARKBLUE_ROOM) && (!g_vm->_roomPresenceGuy) && (!g_vm->_roomPresenceEva)) ) - p = g_vm->getPresenceStatsGreenRoom(); - if ((roomId == PURPLE_ROOM) && (!g_vm->_purpleRoomPresenceLeo) && (!g_vm->_room9PresenceLeo)) - p = g_vm->getPresenceStatsPurpleRoom(); - if ( ((roomId == TOILETS) && (!g_vm->_toiletsPresenceBobMax)) - || ((roomId == BATHROOM) && (!g_vm->_bathRoomPresenceBobMax)) ) - p = g_vm->getPresenceStatsToilets(); - if ((roomId == BLUE_ROOM) && (!g_vm->_roomPresenceMax)) - p = g_vm->getPresenceStatsBlueRoom(); - if ( ((roomId == RED_ROOM) && (!g_vm->_roomPresenceBob)) - || ((roomId == GREEN_ROOM2) && (!g_vm->_roomPresencePat))) - p = g_vm->getPresenceStatsRedRoom(); - if ((roomId == ROOM9) && (!g_vm->_room9PresenceLeo) && (!g_vm->_purpleRoomPresenceLeo)) - p = 10; - if ( ((roomId == PURPLE_ROOM) && (g_vm->_room9PresenceLeo)) - || ((roomId == ROOM9) && (g_vm->_purpleRoomPresenceLeo))) - p = -400; - if (p != -500) { - p += cf; - rand = g_vm->getRandomNumber(1, 100); - } -} - -void becfren(int roomId) { - if ((roomId == GREEN_ROOM) || (roomId == DARKBLUE_ROOM)) { - int rand = g_vm->getRandomNumber(1, 2); - if (roomId == GREEN_ROOM) { - if (rand == 1) - g_vm->_roomPresenceLuc = true; - else - g_vm->_roomPresenceIda = true; - } else { // roomId == DARKBLUE_ROOM - if (rand == 1) - g_vm->_roomPresenceGuy = true; - else - g_vm->_roomPresenceEva = true; - } - } else if (roomId == PURPLE_ROOM) - g_vm->_purpleRoomPresenceLeo = true; - else if (roomId == TOILETS) - g_vm->_toiletsPresenceBobMax = true; - else if (roomId == BLUE_ROOM) - g_vm->_roomPresenceMax = true; - else if (roomId == RED_ROOM) - g_vm->_roomPresenceBob = true; - else if (roomId == BATHROOM) - g_vm->_bathRoomPresenceBobMax = true; - else if (roomId == GREEN_ROOM2) - g_vm->_roomPresencePat = true; - else if (roomId == ROOM9) - g_vm->_room9PresenceLeo = true; -} - /* NIVEAU 10 */ -void init_nbrepm() { - const byte ipm[9] = { 0, 4, 5, 6, 7, 5, 6, 5, 8 }; - - for (int idx = 0; idx < 9; ++idx) - g_vm->_nbrepm[idx] = ipm[idx]; -} - void phaz(int &rand, int &p, int cf) { p += cf; rand = g_vm->getRandomNumber(1, 100); @@ -160,9 +52,9 @@ void phaz(int &rand, int &p, int cf) { int t11(int roomId) { int retVal = 0; - int p, rand; + int rand; - ecfren(p, rand, g_vm->_coreVar._faithScore, roomId); + int p = g_vm->getPresenceStats(rand, g_vm->_coreVar._faithScore, roomId); g_vm->_place = roomId; if ((roomId > OWN_ROOM) && (roomId < DINING_ROOM)) { if (p != -500) { @@ -170,7 +62,7 @@ int t11(int roomId) { g_vm->displayAloneText(); retVal = 0; } else { - becfren(g_vm->_place); + g_vm->setPresenceFlags(g_vm->_place); retVal = g_vm->getPresenceBitIndex(g_vm->_place); } } else @@ -374,7 +266,7 @@ void tsort() { g_vm->_ment = 0; g_vm->_iouv = 0; g_vm->_mchai = 0; - debloc(g_vm->_coreVar._currPlace); + g_vm->resetRoomVariables(g_vm->_coreVar._currPlace); } void st4(int ob) { @@ -508,7 +400,7 @@ L1: g_vm->_speechManager.startSpeech(3, rand, 1); g_vm->clearScreenType2(); g_vm->displayAloneText(); - debloc(21); + g_vm->resetRoomVariables(MANOR_FRONT); affrep(); } } @@ -679,7 +571,7 @@ void avpoing(int &ob) { ajjer(g_vm->_coreVar._selectedObjectId); if (g_vm->_crep != 139) { - modobj(ob + 400); + g_vm->displayItemInHand(ob + 400); g_vm->_coreVar._selectedObjectId = ob; ob = 0; } @@ -702,11 +594,6 @@ int t23coul() { return CELLAR; } -void maivid() { - g_vm->_coreVar._selectedObjectId = 0; - modobj(500); -} - void st13(int ob) { if ((ob == 114) || (ob == 116) || (ob == 126) || (ob == 132) || (ob == 111) || (ob == 106) || (ob == 102) || (ob == 100) || diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h index 667883ccf4..b55dc46537 100644 --- a/engines/mortevielle/mor.h +++ b/engines/mortevielle/mor.h @@ -42,19 +42,7 @@ static const int _actionMenu[12] = { OPCODE_NONE, OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE }; -/* NIVEAU 13 */ -extern void paint_rect(int x, int y, int dx, int dy); -/* NIVEAU 12 */ -extern void modobj(int m); -extern int chlm(); -/************* - * NIVEAU 11 * - *************/ -extern void debloc(int roomId); -extern void ecfren(int &p, int &rand, int cf, int roomId); -extern void becfren(int roomId); /* NIVEAU 10 */ -extern void init_nbrepm(); extern void phaz(int &rand, int &p, int cf); extern int t11(int roomId); extern void writetp(Common::String s, int t); @@ -86,7 +74,6 @@ extern void treg(int ob); extern void avpoing(int &ob); extern void rechai(int &ch); extern int t23coul(); -extern void maivid(); extern void st13(int ob); extern void sauvecr(int y, int dy); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 536fe09114..cd5c2151b2 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -1256,7 +1256,7 @@ int MortevielleEngine::setPresenceDiningRoom(int hour) { int retVal = 0; if ((hour >= 0) && (hour < 8)) - retVal = chlm(); + retVal = checkLeoMaxRandomPresence(); else { int min = 0, max = 0; if ((hour > 7) && (hour < 10)) { @@ -1287,7 +1287,7 @@ int MortevielleEngine::setPresenceBureau(int hour) { int retVal = 0; if ((hour >= 0) && (hour < 8)) - retVal = chlm(); + retVal = checkLeoMaxRandomPresence(); else { int min = 0, max = 0; if (((hour > 7) && (hour < 10)) || ((hour > 20) && (hour < 24))) { @@ -1312,7 +1312,7 @@ int MortevielleEngine::setPresenceBureau(int hour) { * @remarks Originally called 'quelq12' */ int MortevielleEngine::setPresenceKitchen() { - int retVal = chlm(); + int retVal = checkLeoMaxRandomPresence(); showPeoplePresent(retVal); return retVal; @@ -1351,7 +1351,7 @@ int MortevielleEngine::setPresenceChapel(int hour) { int retVal = 0; if (((hour >= 0) && (hour < 10)) || ((hour > 18) && (hour < 24))) - retVal = chlm(); + retVal = checkLeoMaxRandomPresence(); else { int min = 0, max = 0; if ((hour > 9) && (hour < 12)) { @@ -1892,7 +1892,7 @@ void MortevielleEngine::gameLoaded() { _menu.setDestinationMenuText(_coreVar._currPlace); modinv(); if (_coreVar._selectedObjectId != 0) - modobj(_coreVar._selectedObjectId + 400); + displayItemInHand(_coreVar._selectedObjectId + 400); _mouse.showMouse(); } @@ -2733,8 +2733,8 @@ void MortevielleEngine::drawClock() { _mouse.hideMouse(); - paint_rect(570, 118, 20, 10); - paint_rect(578, 114, 6, 18); + _screenSurface.drawRectangle(570, 118, 20, 10); + _screenSurface.drawRectangle(578, 114, 6, 18); if ((_currGraphicalDevice == MODE_CGA) || (_currGraphicalDevice == MODE_HERCULES)) co = 0; else @@ -2796,9 +2796,13 @@ void MortevielleEngine::hirs() { // method is deprecated in favour of clearing the screen debugC(1, kMortevielleCore, "TODO: hirs is deprecated in favour of ScreenSurface::clearScreen"); - if (_currGraphicalDevice == MODE_CGA) + if (_currGraphicalDevice == MODE_TANDY) { + _screenSurface.fillRect(0, Common::Rect(0, 0, 639, 200)); _res = 1; - else + } else if (_currGraphicalDevice == MODE_CGA) { + palette(1); + _res = 1; + } else _res = 2; _screenSurface.clearScreen(); @@ -3025,4 +3029,128 @@ void MortevielleEngine::ecr3(Common::String text) { _screenSurface.drawString(text, 5); } +/** + * Display item in hand + * @remarks Originally called 'modobj' + */ +void MortevielleEngine::displayItemInHand(int objId) { + Common::String strp = Common::String(' '); + + if (objId != 500) + strp = getString(objId - 501 + kInventoryStringIndex); + + _menu.setText(_menu._inventoryMenu[8], strp); + _menu.disableMenuItem(_menu._inventoryMenu[8]); +} + +/** + * Display empty hand + * @remarks Originally called 'maivid' + */ +void MortevielleEngine::displayEmptyHand() { + _coreVar._selectedObjectId = 0; + displayItemInHand(500); +} + +/** + * Set a random presence: Leo or Max + * @remarks Originally called 'chlm' + */ +int MortevielleEngine::checkLeoMaxRandomPresence() { + int retval = getRandomNumber(1, 2); + if (retval == 2) + retval = 128; + + return retval; +} + +/** + * Reset room variables + * @remarks Originally called 'debloc' + */ +void MortevielleEngine::resetRoomVariables(int roomId) { + _num = 0; + _x = 0; + _y = 0; + if ((roomId != ROOM26) && (roomId != LANDING)) + resetPresenceInRooms(roomId); + _savedBitIndex = _currBitIndex; +} + +/** + * Compute presence stats + * @remarks Originally called 'ecfren' + */ +int MortevielleEngine::getPresenceStats(int &rand, int cf, int roomId) { + if (roomId == OWN_ROOM) + displayAloneText(); + int retVal = -500; + rand = 0; + if ( ((roomId == GREEN_ROOM) && (!_roomPresenceLuc) && (!_roomPresenceIda)) + || ((roomId == DARKBLUE_ROOM) && (!_roomPresenceGuy) && (!_roomPresenceEva)) ) + retVal = getPresenceStatsGreenRoom(); + if ((roomId == PURPLE_ROOM) && (!_purpleRoomPresenceLeo) && (!_room9PresenceLeo)) + retVal = getPresenceStatsPurpleRoom(); + if ( ((roomId == TOILETS) && (!_toiletsPresenceBobMax)) + || ((roomId == BATHROOM) && (!_bathRoomPresenceBobMax)) ) + retVal = getPresenceStatsToilets(); + if ((roomId == BLUE_ROOM) && (!_roomPresenceMax)) + retVal = getPresenceStatsBlueRoom(); + if ( ((roomId == RED_ROOM) && (!_roomPresenceBob)) + || ((roomId == GREEN_ROOM2) && (!_roomPresencePat))) + retVal = getPresenceStatsRedRoom(); + if ((roomId == ROOM9) && (!_room9PresenceLeo) && (!_purpleRoomPresenceLeo)) + retVal = 10; + if ( ((roomId == PURPLE_ROOM) && (_room9PresenceLeo)) + || ((roomId == ROOM9) && (_purpleRoomPresenceLeo))) + retVal = -400; + if (retVal != -500) { + retVal += cf; + rand = getRandomNumber(1, 100); + } + + return retVal; +} + +/** + * Set presence flags + * @remarks Originally called 'becfren' + */ +void MortevielleEngine::setPresenceFlags(int roomId) { + if ((roomId == GREEN_ROOM) || (roomId == DARKBLUE_ROOM)) { + int rand = g_vm->getRandomNumber(1, 2); + if (roomId == GREEN_ROOM) { + if (rand == 1) + g_vm->_roomPresenceLuc = true; + else + g_vm->_roomPresenceIda = true; + } else { // roomId == DARKBLUE_ROOM + if (rand == 1) + g_vm->_roomPresenceGuy = true; + else + g_vm->_roomPresenceEva = true; + } + } else if (roomId == PURPLE_ROOM) + g_vm->_purpleRoomPresenceLeo = true; + else if (roomId == TOILETS) + g_vm->_toiletsPresenceBobMax = true; + else if (roomId == BLUE_ROOM) + g_vm->_roomPresenceMax = true; + else if (roomId == RED_ROOM) + g_vm->_roomPresenceBob = true; + else if (roomId == BATHROOM) + g_vm->_bathRoomPresenceBobMax = true; + else if (roomId == GREEN_ROOM2) + g_vm->_roomPresencePat = true; + else if (roomId == ROOM9) + g_vm->_room9PresenceLeo = true; +} + +void MortevielleEngine::init_nbrepm() { + static const byte ipm[9] = { 0, 4, 5, 6, 7, 5, 6, 5, 8 }; + + for (int idx = 0; idx < 9; ++idx) + g_vm->_nbrepm[idx] = ipm[idx]; +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 924e92b3d4..bb594d2415 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -166,6 +166,7 @@ private: void showTitleScreen(); int readclock(); void palette(int v1); + int checkLeoMaxRandomPresence(); void adzon(); void text1(int x, int y, int nb, int m); @@ -413,6 +414,11 @@ public: void hirs(); void initCaveOrCellar(); void displayControlMenu(); + void displayItemInHand(int objId); + void displayEmptyHand(); + void resetRoomVariables(int roomId); + int getPresenceStats(int &rand, int cf, int roomId); + void setPresenceFlags(int roomId); void pictout(int seg, int dep, int x, int y); @@ -420,6 +426,7 @@ public: void repon(int f, int m); void ecr2(Common::String text); void ecr3(Common::String text); + void init_nbrepm(); }; diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index d71e2fd8b7..daa59b231b 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -119,7 +119,7 @@ void SavegameManager::loadSavegame(int n) { */ Common::Error SavegameManager::loadGame(int n) { g_vm->_mouse.hideMouse(); - maivid(); + g_vm->displayEmptyHand(); loadSavegame(n); /* Initialization */ diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index ddde25a464..3086f9eb20 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -101,6 +101,8 @@ enum places { DOOR = 25, ROOM26 = 26, ROOM27 = 27 }; +enum GraphicModes { MODE_AMSTRAD1512 = 0, MODE_CGA = 1, MODE_EGA = 2, MODE_HERCULES = 3, MODE_TANDY = 4 }; + struct Rect { int _x1, _x2, _y1, _y2; bool _enabled; @@ -109,12 +111,6 @@ struct Rect { typedef int tablint[256]; typedef int tfxx[108]; -/*---------------------------------------------------------------------------*/ -/*------------------------------ ENUMS ------------------------------*/ -/*---------------------------------------------------------------------------*/ - -enum GraphicModes { MODE_AMSTRAD1512 = 0, MODE_CGA = 1, MODE_EGA = 2, MODE_HERCULES = 3, MODE_TANDY = 4 }; - } // End of namespace Mortevielle #endif -- cgit v1.2.3 From 7b94de6408f6c83287870ceb137471f2055f76f9 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 24 Mar 2012 15:19:54 +0100 Subject: MORTEVIELLE: Get rid of mor.cpp --- engines/mortevielle/actions.cpp | 117 ++++--- engines/mortevielle/dialogs.cpp | 5 +- engines/mortevielle/menu.cpp | 37 ++- engines/mortevielle/menu.h | 3 +- engines/mortevielle/module.mk | 1 - engines/mortevielle/mor.cpp | 618 ------------------------------------ engines/mortevielle/mor.h | 82 ----- engines/mortevielle/mortevielle.cpp | 596 ++++++++++++++++++++++++++++++++-- engines/mortevielle/mortevielle.h | 40 ++- engines/mortevielle/outtext.cpp | 3 +- engines/mortevielle/saveload.cpp | 1 - engines/mortevielle/speech.cpp | 1 - 12 files changed, 706 insertions(+), 798 deletions(-) delete mode 100644 engines/mortevielle/mor.cpp delete mode 100644 engines/mortevielle/mor.h diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 70979becfd..0247eca2e1 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -28,7 +28,6 @@ #include "common/scummsys.h" #include "mortevielle/dialogs.h" #include "mortevielle/menu.h" -#include "mortevielle/mor.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" @@ -59,17 +58,17 @@ void MortevielleEngine::fctMove() { if ((_anyone) || (_keyPressedEsc)) return; - tcoord(1); + setCoordinates(1); if (_num == 0) return; if (_num == 1) { _coreVar._currPlace = OWN_ROOM; - _menu.setDestinationMenuText(OWN_ROOM); + _menu.setDestinationText(OWN_ROOM); } else if (_num == 7) { _coreVar._currPlace = ATTIC; - _menu.setDestinationMenuText(ATTIC); + _menu.setDestinationText(ATTIC); } if (_num != 6) @@ -86,7 +85,7 @@ void MortevielleEngine::fctMove() { showMoveMenuAlert(); return; } - tsort(); + exitRoom(); int menuChoice = 1; while (_menu._moveMenu[menuChoice] != _msg[4]) @@ -97,14 +96,14 @@ void MortevielleEngine::fctMove() { gotoManorFront(); else if (menuChoice == 2) checkManorDistance(); - _menu.setDestinationMenuText(_coreVar._currPlace); + _menu.setDestinationText(_coreVar._currPlace); return; } else if (_coreVar._currPlace == INSIDE_WELL) { if (menuChoice == 1) floodedInWell(); else if (menuChoice == 2) gotoManorBack(); - _menu.setDestinationMenuText(_coreVar._currPlace); + _menu.setDestinationText(_coreVar._currPlace); return; } else if ((_coreVar._currPlace == BUREAU) && (menuChoice == 1)) menuChoice = 6; @@ -174,7 +173,7 @@ void MortevielleEngine::fctMove() { if ((menuChoice < 5) || (menuChoice == 13) || (menuChoice == 14)) affrep(); resetRoomVariables(_coreVar._currPlace); - _menu.setDestinationMenuText(_coreVar._currPlace); + _menu.setDestinationText(_coreVar._currPlace); } /** @@ -226,15 +225,15 @@ void MortevielleEngine::fctTake() { if ((_anyone) || (_keyPressedEsc)) return; if (_caff == 3) { - tcoord(2); + setCoordinates(2); if (_num == 1) { _crep = 152; return; } } - tcoord(5); + setCoordinates(5); if ((_num == 0) || ((_num == 1) && (_coreVar._currPlace == CRYPT))) { - tcoord(8); + setCoordinates(8); if (_num != 0) { if (_currBitIndex > 0) _coreVar._faithScore += 3; @@ -302,14 +301,12 @@ void MortevielleEngine::fctTake() { * @remarks Originally called 'tsprendre' */ void MortevielleEngine::fctInventoryTake() { - int cx, cy, cz; - - cx = 0; + int cx = 0; do { ++cx; } while (_menu._inventoryMenu[cx] != _msg[4]); - cz = 0; - cy = 0; + int cz = 0; + int cy = 0; do { ++cy; if (ord(_coreVar._sjer[cy]) != 0) @@ -317,7 +314,7 @@ void MortevielleEngine::fctInventoryTake() { } while (cz != cx); cz = ord(_coreVar._sjer[cy]); _coreVar._sjer[cy] = chr(0); - modinv(); + _menu.setInventoryText(); avpoing(cz); _crep = 998; clearScreenType2(); @@ -333,9 +330,9 @@ void MortevielleEngine::fctLift() { tfleche(); if ((_anyone) || (_keyPressedEsc)) return; - tcoord(3); + setCoordinates(3); if (_num == 0) { - tcoord(8); + setCoordinates(8); if (_num != 0) { if (_currBitIndex > 0) ++_coreVar._faithScore; @@ -363,13 +360,13 @@ void MortevielleEngine::fctLift() { */ void MortevielleEngine::fctRead() { if (_caff > 99) - st4(_caff); + getReadDescription(_caff); else { if (!_syn) ecr3(getEngineString(S_READ)); tfleche(); if (!(_anyone) && !(_keyPressedEsc)) { - tcoord(4); + setCoordinates(4); if (_num != 0) _crep = 107; } @@ -384,7 +381,7 @@ void MortevielleEngine::fctSelfRead() { if (_coreVar._selectedObjectId == 0) _crep = 186; else - st4(_coreVar._selectedObjectId); + getReadDescription(_coreVar._selectedObjectId); } /** @@ -403,9 +400,9 @@ void MortevielleEngine::fctLook() { tfleche(); if ((_anyone) || (_keyPressedEsc)) return; - tcoord(5); + setCoordinates(5); if (_num == 0) { - tcoord(8); + setCoordinates(8); _crep = 131; if (_num != 0) { if (_coreVar._currPlace == ATTIC) { @@ -484,7 +481,7 @@ void MortevielleEngine::fctSearch() { const byte r[14] = {123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}; if (_caff > 99) { - st7(_caff); + getSearchDescription(_caff); return; } @@ -501,9 +498,9 @@ void MortevielleEngine::fctSearch() { return; } - tcoord(6); + setCoordinates(6); if (_num == 0) { - tcoord(7); + setCoordinates(7); if (_num != 0) { int cx = 0; do { @@ -526,7 +523,7 @@ void MortevielleEngine::fctSearch() { _crep = 997; } } else { - tcoord(8); + setCoordinates(8); _crep = 997; if (_num != 0) { if (_currBitIndex > 0) @@ -575,7 +572,7 @@ void MortevielleEngine::fctSearch() { */ void MortevielleEngine::fctSelfSearch() { if (_coreVar._selectedObjectId != 0) - st7(_coreVar._selectedObjectId); + getSearchDescription(_coreVar._selectedObjectId); else _crep = 186; } @@ -606,7 +603,7 @@ void MortevielleEngine::fctOpen() { if ((_anyone) || (_keyPressedEsc)) return; - tcoord(7); + setCoordinates(7); if (_num != 0) { if (_currBitIndex > 0) _coreVar._faithScore += 2; @@ -662,7 +659,7 @@ void MortevielleEngine::fctPlace() { if ((_anyone) || (_keyPressedEsc)) return; - tcoord(8); + setCoordinates(8); if (_num != 0) { _crep = 999; if (_caff == 13) { @@ -719,11 +716,11 @@ void MortevielleEngine::fctPlace() { _menu.displayMenu(); if (enterPassageFl) { _coreVar._currPlace = SECRET_PASSAGE; - _menu.setDestinationMenuText(SECRET_PASSAGE); + _menu.setDestinationText(SECRET_PASSAGE); } else { - _menu.setDestinationMenuText(_coreVar._currPlace); + _menu.setDestinationText(_coreVar._currPlace); setPal(14); - dessin(0); + dessin(); aniof(1, 2); aniof(1, 1); alertTxt = getString(577); @@ -790,7 +787,7 @@ void MortevielleEngine::fctTurn() { tfleche(); if ((_anyone) || (_keyPressedEsc)) return; - tcoord(9); + setCoordinates(9); if (_num != 0) { _crep = 997; if ((_coreVar._currPlace == ATTIC) && (_coreVar._atticRodHoleObjectId == 159) && (_coreVar._atticBallHoleObjectId == 141)) { @@ -825,7 +822,7 @@ void MortevielleEngine::fctSelfHide() { ecr3(getEngineString(S_HIDE_SELF)); tfleche(); if (!(_anyone) && !(_keyPressedEsc)) { - tcoord(10); + setCoordinates(10); if (_num == 0) _hiddenHero = false; else { @@ -847,7 +844,7 @@ void MortevielleEngine::fctAttach() { ecr3(getEngineString(S_TIE)); tfleche(); if (!(_anyone) && !(_keyPressedEsc)) { - tcoord(8); + setCoordinates(8); _crep = 997; if ((_num != 0) && (_coreVar._currPlace == WELL)) { _crep = 999; @@ -876,7 +873,7 @@ void MortevielleEngine::fctClose() { _crep = 998; if ((_anyone) || (_keyPressedEsc)) return; - tcoord(7); + setCoordinates(7); if (_num != 0) { int cx = 0; do { @@ -969,7 +966,7 @@ void MortevielleEngine::fctSelfPut() { tfleche(); if ((_anyone) || (_keyPressedEsc)) return; - tcoord(7); + setCoordinates(7); _crep = 124; if (_num != 0) { int chai; @@ -989,7 +986,7 @@ void MortevielleEngine::fctSelfPut() { } } } else { - tcoord(8); + setCoordinates(8); if (_num != 0) { _crep = 998; if (_caff == PURPLE_ROOM) { @@ -1026,7 +1023,7 @@ void MortevielleEngine::fctSelfPut() { } else { _crep = 124; if (_caff == WELL) { - tcoord(5); + setCoordinates(5); if (_num != 0) _crep = 185; } @@ -1089,11 +1086,11 @@ void MortevielleEngine::fctEat() { if ((_coreVar._currPlace > LANDING) && (_coreVar._currPlace < ROOM26)) { _crep = 148; } else { - tsort(); + exitRoom(); _coreVar._currPlace = DINING_ROOM; _caff = 10; resetRoomVariables(_coreVar._currPlace); - _menu.setDestinationMenuText(_coreVar._currPlace); + _menu.setDestinationText(_coreVar._currPlace); int j, h, m; updateHour(j, h, m); @@ -1129,7 +1126,7 @@ void MortevielleEngine::fctEat() { void MortevielleEngine::fctEnter() { if ((_coreVar._currPlace == MANOR_FRONT) || (_coreVar._currPlace == MANOR_BACK)) { gotoDiningRoom(); - _menu.setDestinationMenuText(_coreVar._currPlace); + _menu.setDestinationText(_coreVar._currPlace); } else if (_coreVar._currPlace == LANDING) showMoveMenuAlert(); else if (_ment == 0) @@ -1140,7 +1137,7 @@ void MortevielleEngine::fctEnter() { } else { int z = 0; if (!_blo) - z = t11(_ment); + z = getPresence(_ment); if (z != 0) { if ((_ment == 3) || (_ment == 7)) _crep = 179; @@ -1173,7 +1170,7 @@ void MortevielleEngine::fctEnter() { _coreVar._currPlace = _ment; affrep(); resetRoomVariables(_coreVar._currPlace); - _menu.setDestinationMenuText(_coreVar._currPlace); + _menu.setDestinationText(_coreVar._currPlace); _ment = 0; _savedBitIndex = 0; _currBitIndex = 0; @@ -1193,12 +1190,12 @@ void MortevielleEngine::fctSleep() { return; } if (_coreVar._currPlace != OWN_ROOM) { - tsort(); + exitRoom(); _coreVar._currPlace = OWN_ROOM; affrep(); afdes(); resetRoomVariables(_coreVar._currPlace); - _menu.setDestinationMenuText(_coreVar._currPlace); + _menu.setDestinationText(_coreVar._currPlace); } clearScreenType3(); clearScreenType2(); @@ -1253,7 +1250,7 @@ void MortevielleEngine::fctForce() { * @remarks Originally called 'tsortir' */ void MortevielleEngine::fctLeave() { - tsort(); + exitRoom(); _crep = 0; if ((_coreVar._currPlace == MOUNTAIN) || (_coreVar._currPlace == MANOR_FRONT) || (_coreVar._currPlace == MANOR_BACK) || (_coreVar._currPlace == WELL)) _crep = 997; @@ -1270,7 +1267,7 @@ void MortevielleEngine::fctLeave() { nextPlace = SECRET_PASSAGE; _crep = 176; } else if (_coreVar._currPlace == SECRET_PASSAGE) - nextPlace = t23coul(); + nextPlace = checkLeaveSecretPassage(); else if (_coreVar._currPlace == INSIDE_WELL) nextPlace = WELL; @@ -1281,7 +1278,7 @@ void MortevielleEngine::fctLeave() { if (_crep == 0) _crep = nextPlace; resetRoomVariables(nextPlace); - _menu.setDestinationMenuText(nextPlace); + _menu.setDestinationText(nextPlace); } } @@ -1298,7 +1295,7 @@ void MortevielleEngine::fctWait() { ++_jh; prepareRoom(); if (!_blo) - t11(_coreVar._currPlace); + getPresence(_coreVar._currPlace); if ((_currBitIndex != 0) && (_savedBitIndex == 0)) { _crep = 998; if ((_coreVar._currPlace == ATTIC) || (_coreVar._currPlace == CELLAR)) @@ -1357,7 +1354,7 @@ void MortevielleEngine::fctDiscuss() { repon(2, _caff); suj = _caff + 60; } - tkey1(false); + testKey(false); mennor(); _mouse.hideMouse(); hirs(); @@ -1527,7 +1524,7 @@ void MortevielleEngine::fctDiscuss() { drawClock(); affrep(); /* chech;*/ - _menu.setDestinationMenuText(_coreVar._currPlace); + _menu.setDestinationText(_coreVar._currPlace); clearScreenType3(); } @@ -1575,7 +1572,7 @@ void MortevielleEngine::endGame() { clearScreenType2(); clearScreenType3(); repon(9, 1509); - tkey1(false); + testKey(false); _mouse.hideMouse(); _caff = 70; taffich(); @@ -1586,18 +1583,18 @@ void MortevielleEngine::endGame() { clearScreenType1(); repon(9, 1509); repon(2, 142); - tkey1(false); + testKey(false); _caff = 32; afdes(); repon(6, 34); repon(2, 35); startMusicOrSpeech(0); - tkey1(false); + testKey(false); // A wait message was displayed. - // tkey1 was called before and after. + // testKey (aka tkey1) was called before and after. // Most likely the double call is useless, thus removed // - // tkey1(false); + // testKey(false); resetVariables(); } @@ -1608,7 +1605,7 @@ void MortevielleEngine::endGame() { void MortevielleEngine::askRestart() { clearScreenType2(); startMusicOrSpeech(0); - tkey1(false); + testKey(false); displayEmptyHand(); resetVariables(); initGame(); diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 1f97ee0fe6..19ff58071c 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -29,7 +29,6 @@ #include "mortevielle/dialogs.h" #include "mortevielle/keyboard.h" #include "mortevielle/mortevielle.h" -#include "mortevielle/mor.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/speech.h" @@ -61,7 +60,7 @@ int Alert::show(const Common::String &msg, int n) { g_vm->setMouseClick(false); decodeAlertDetails(msg, caseNumb, lignNumb, nbcol, chaine, cas); - sauvecr(50, (NUM_LINES + 1) << 4); + g_vm->sauvecr(50, (NUM_LINES + 1) << 4); i = 0; if (chaine == "") { @@ -170,7 +169,7 @@ int Alert::show(const Common::String &msg, int n) { tmp4 += " "; g_vm->_screenSurface.drawString(tmp4, 1); } - charecr(50, (NUM_LINES + 1) << 4); + g_vm->charecr(50, (NUM_LINES + 1) << 4); g_vm->_mouse.showMouse(); /* Restore the background area */ diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 5bc0940f6c..d7ece8a7eb 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -29,7 +29,6 @@ #include "common/str.h" #include "common/textconsole.h" #include "mortevielle/menu.h" -#include "mortevielle/mor.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" @@ -88,7 +87,7 @@ void Menu::setText(int menuId, Common::String name) { * Init destination menu * @remarks Originally called 'tmlieu' */ -void Menu::setDestinationMenuText(int roomId) { +void Menu::setDestinationText(int roomId) { Common::String nomp; if (roomId == 26) @@ -323,7 +322,7 @@ void Menu::menuDown(int ii) { xco = _menuConstants[ii - 1][0]; lignNumb = _menuConstants[ii - 1][3]; g_vm->_mouse.hideMouse(); - sauvecr(10, (_menuConstants[ii - 1][1] + 1) << 1); + g_vm->sauvecr(10, (_menuConstants[ii - 1][1] + 1) << 1); xco = xco << 3; if (g_vm->_res == 1) cx = 10; @@ -396,7 +395,7 @@ void Menu::menuDown(int ii) { */ void Menu::menuUp(int xx) { if (_multiTitle) { - charecr(10, (_menuConstants[xx - 1][1] + 1) << 1); + g_vm->charecr(10, (_menuConstants[xx - 1][1] + 1) << 1); /* Restore the background area */ assert(g_vm->_screenSurface.pitch == g_vm->_backgroundSurface.pitch); @@ -538,7 +537,7 @@ void Menu::initMenu() { _moveMenu[i] = 0x200 + i; _inventoryMenu[i] = 0x100 + i; if (i > 6) - g_vm->_menu.disableMenuItem(_inventoryMenu[i]); + disableMenuItem(_inventoryMenu[i]); } _msg3 = OPCODE_NONE; _msg4 = OPCODE_NONE; @@ -567,7 +566,7 @@ void Menu::setSearchMenu() { * @remarks Originally called 'mfouen' */ void Menu::unsetSearchMenu() { - setDestinationMenuText(g_vm->_coreVar._currPlace); + setDestinationText(g_vm->_coreVar._currPlace); for (int i = 1; i <= 11; ++i) enableMenuItem(_actionMenu[i]); @@ -575,4 +574,30 @@ void Menu::unsetSearchMenu() { setText(OPCODE_LIFT, g_vm->getEngineString(S_RAISE)); } +/** + * Set Inventory menu texts + * @remarks Originally called 'modinv' + */ +void Menu::setInventoryText() { + int r; + Common::String nomp; + + int cy = 0; + for (int i = 1; i <= 6; ++i) { + if (g_vm->_coreVar._sjer[i] != chr(0)) { + ++cy; + r = (ord(g_vm->_coreVar._sjer[i]) + 400); + nomp = g_vm->getString(r - 501 + kInventoryStringIndex); + setText(_inventoryMenu[cy], nomp); + enableMenuItem(_inventoryMenu[i]); + } + } + + if (cy < 6) { + for (int i = cy + 1; i <= 6; ++i) { + setText(_inventoryMenu[i], " "); + disableMenuItem(_inventoryMenu[i]); + } + } +} } // End of namespace Mortevielle diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index f4d12bc676..37612edd06 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -62,7 +62,8 @@ public: int _moveMenu[8]; void setText(int menuId, Common::String name); - void setDestinationMenuText(int roomId); + void setDestinationText(int roomId); + void setInventoryText(); void disableMenuItem(int menuId); void enableMenuItem(int menuId); void displayMenu(); diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 58978c9d25..fe02e1114f 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -7,7 +7,6 @@ MODULE_OBJS := \ graphics.o \ keyboard.o \ menu.o \ - mor.o \ mortevielle.o \ mouse.o \ outtext.o \ diff --git a/engines/mortevielle/mor.cpp b/engines/mortevielle/mor.cpp deleted file mode 100644 index 09857c8014..0000000000 --- a/engines/mortevielle/mor.cpp +++ /dev/null @@ -1,618 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "common/endian.h" -#include "common/file.h" -#include "common/str.h" -#include "common/system.h" -#include "common/textconsole.h" -#include "mortevielle/dialogs.h" -#include "mortevielle/graphics.h" -#include "mortevielle/menu.h" -#include "mortevielle/mor.h" -#include "mortevielle/mortevielle.h" -#include "mortevielle/mouse.h" -#include "mortevielle/outtext.h" -#include "mortevielle/speech.h" -#include "mortevielle/var_mor.h" - -#include "mortevielle/keyboard.h" - -namespace Mortevielle { - -/* NIVEAU 10 */ -void phaz(int &rand, int &p, int cf) { - p += cf; - rand = g_vm->getRandomNumber(1, 100); -} - -int t11(int roomId) { - int retVal = 0; - int rand; - - int p = g_vm->getPresenceStats(rand, g_vm->_coreVar._faithScore, roomId); - g_vm->_place = roomId; - if ((roomId > OWN_ROOM) && (roomId < DINING_ROOM)) { - if (p != -500) { - if (rand > p) { - g_vm->displayAloneText(); - retVal = 0; - } else { - g_vm->setPresenceFlags(g_vm->_place); - retVal = g_vm->getPresenceBitIndex(g_vm->_place); - } - } else - retVal = g_vm->getPresenceBitIndex(g_vm->_place); - } - - if (roomId > ROOM9) { - if ((roomId > LANDING) && (roomId != CHAPEL) && (roomId != ROOM26)) - g_vm->displayAloneText(); - else { - int h = 0; - if (roomId == DINING_ROOM) - p = g_vm->getPresenceStatsDiningRoom(h); - else if (roomId == BUREAU) - p = g_vm->getPresenceStatsBureau(h); - else if (roomId == KITCHEN) - p = g_vm->getPresenceStatsKitchen(); - else if ((roomId == ATTIC) || (roomId == CELLAR)) - p = g_vm->getPresenceStatsAttic(); - else if ((roomId == LANDING) || (roomId == ROOM26)) - p = g_vm->getPresenceStatsLanding(); - else if (roomId == CHAPEL) - p = g_vm->getPresenceStatsChapel(h); - p += g_vm->_coreVar._faithScore; - rand = g_vm->getRandomNumber(1, 100); - if (rand > p) { - g_vm->displayAloneText(); - retVal = 0; - } else { - if (roomId == DINING_ROOM) - p = g_vm->setPresenceDiningRoom(h); - else if (roomId == BUREAU) - p = g_vm->setPresenceBureau(h); - else if ((roomId == KITCHEN) || (roomId == ATTIC) || (roomId == CELLAR)) - p = g_vm->setPresenceKitchen(); - else if ((roomId == LANDING) || (roomId == ROOM26)) - p = g_vm->setPresenceLanding(); - else if (roomId == CHAPEL) - p = g_vm->setPresenceChapel(h); - retVal = p; - } - } - } - - return retVal; -} - -void writetp(Common::String s, int t) { - if (g_vm->_res == 2) - g_vm->_screenSurface.drawString(s, t); - else - g_vm->_screenSurface.drawString(g_vm->copy(s, 1, 25), t); -} - -void aniof(int ouf, int num) { - if ((g_vm->_caff == 7) && ((num == 4) || (num == 5))) - return; - - if ((g_vm->_caff == 10) && (num == 7)) - num = 6; - else if (g_vm->_caff == 12) { - if (num == 3) - num = 4; - else if (num == 4) - num = 3; - } - - int ad = kAdrAni; - int offset = g_vm->animof(ouf, num); - - GfxSurface surface; - surface.decode(&g_vm->_mem[ad * 16 + offset]); - g_vm->_screenSurface.drawPicture(surface, 0, 12); - - g_vm->prepareScreenType1(); -} - -/* NIVEAU 9 */ -void dessin(int ad) { - if (ad != 0) - g_vm->draw(kAdrDes, ((ad % 160) * 2), (ad / 160)); - else { - g_vm->clearScreenType1(); - if (g_vm->_caff > 99) { - g_vm->draw(kAdrDes, 60, 33); - g_vm->_screenSurface.drawBox(118, 32, 291, 121, 15); // Medium box - } else if (g_vm->_caff > 69) { - g_vm->draw(kAdrDes, 112, 48); // Heads - g_vm->_screenSurface.drawBox(222, 47, 155, 91, 15); - } else { - g_vm->draw(kAdrDes, 0, 12); - g_vm->prepareScreenType1(); - if ((g_vm->_caff < 30) || (g_vm->_caff > 32)) { - for (int cx = 1; cx <= 6; ++cx) { - if (ord(g_vm->_touv[cx]) != 0) - aniof(1, ord(g_vm->_touv[cx])); - } - - if (g_vm->_caff == 13) { - if (g_vm->_coreVar._atticBallHoleObjectId == 141) - aniof(1, 7); - - if (g_vm->_coreVar._atticRodHoleObjectId == 159) - aniof(1, 6); - } else if ((g_vm->_caff == 14) && (g_vm->_coreVar._cellarObjectId == 151)) - aniof(1, 2); - else if ((g_vm->_caff == 17) && (g_vm->_coreVar._secretPassageObjectId == 143)) - aniof(1, 1); - else if ((g_vm->_caff == 24) && (g_vm->_coreVar._wellObjectId != 0)) - aniof(1, 1); - } - - if (g_vm->_caff < ROOM26) - g_vm->startMusicOrSpeech(1); - } - } -} - -void fenat(char ans) { - int coul; - - g_vm->_mouse.hideMouse(); - if (g_vm->_currGraphicalDevice == MODE_CGA) - coul = 2; - else if (g_vm->_currGraphicalDevice == MODE_HERCULES) - coul = 1; - else - coul = 12; - - g_vm->_screenSurface.writeCharacter(Common::Point(306, 193), ord(ans), coul); - g_vm->_screenSurface.drawBox(300, 191, 16, 8, 15); - g_vm->_mouse.showMouse(); -} - - -/* NIVEAU 8 */ -void afdes() { - taffich(); - dessin(0); - g_vm->_okdes = false; -} - -void tkey1(bool d) { - bool quest = false; - int x, y, c; - - g_vm->_mouse.hideMouse(); - fenat('K'); - - // Wait for release from any key or mouse button - while (g_vm->keyPressed()) - g_vm->_key = testou(); - - do { - g_vm->_mouse.getMousePosition(x, y, c); - g_vm->keyPressed(); - } while (c != 0); - - // Event loop - do { - if (d) - g_vm->prepareRoom(); - quest = g_vm->keyPressed(); - g_vm->_mouse.getMousePosition(x, y, c); - CHECK_QUIT; - } while (!(quest || (c != 0) || (d && g_vm->_anyone))); - if (quest) - testou(); - g_vm->setMouseClick(false); - g_vm->_mouse.showMouse(); -} - -/* NIVEAU 7 */ -void tlu(int af, int ob) { - g_vm->_caff = 32; - afdes(); - g_vm->repon(6, ob + 4000); - g_vm->repon(2, 999); - tkey1(true); - g_vm->_caff = af; - g_vm->_msg[3] = OPCODE_NONE; - g_vm->_crep = 998; -} - -void affrep() { - g_vm->_caff = g_vm->_coreVar._currPlace; - g_vm->_crep = g_vm->_coreVar._currPlace; -} - -void tsort() { - - if ((g_vm->_iouv > 0) && (g_vm->_coreVar._currPlace != 0)) { - if (g_vm->_coreVar._faithScore < 50) - g_vm->_coreVar._faithScore += 2; - else - g_vm->_coreVar._faithScore += (g_vm->_coreVar._faithScore / 10); - } - - for (int cx = 1; cx <= 7; ++cx) - g_vm->_touv[cx] = chr(0); - g_vm->_ment = 0; - g_vm->_iouv = 0; - g_vm->_mchai = 0; - g_vm->resetRoomVariables(g_vm->_coreVar._currPlace); -} - -void st4(int ob) { - g_vm->_crep = 997; - - switch (ob) { - case 114 : - g_vm->_crep = 109; - break; - case 110 : - g_vm->_crep = 107; - break; - case 158 : - g_vm->_crep = 113; - break; - case 152: - case 153: - case 154: - case 155: - case 156: - case 150: - case 100: - case 157: - case 160: - case 161 : - tlu(g_vm->_caff, ob); - break; - default: - break; - } -} - -void modinv() { - int r; - Common::String nomp; - - int cy = 0; - for (int i = 1; i <= 6; ++i) { - if (g_vm->_coreVar._sjer[i] != chr(0)) { - ++cy; - r = (ord(g_vm->_coreVar._sjer[i]) + 400); - nomp = g_vm->getString(r - 501 + kInventoryStringIndex); - g_vm->_menu.setText(g_vm->_menu._inventoryMenu[cy], nomp); - g_vm->_menu.enableMenuItem(g_vm->_menu._inventoryMenu[i]); - } - } - - if (cy < 6) { - for (int i = cy + 1; i <= 6; ++i) { - g_vm->_menu.setText(g_vm->_menu._inventoryMenu[i], " "); - g_vm->_menu.disableMenuItem(g_vm->_menu._inventoryMenu[i]); - } - } -} - -void mennor() { - g_vm->_menu.menuUp(g_vm->_msg[3]); -} - -void premtet() { - g_vm->draw(kAdrDes, 10, 80); - g_vm->_screenSurface.drawBox(18, 79, 155, 91, 15); -} - -/* NIVEAU 5 */ -void ajchai() { - int cy = kAcha + ((g_vm->_mchai - 1) * 10) - 1; - int cx = 0; - do { - ++cx; - } while ((cx <= 9) && (g_vm->_tabdon[cy + cx] != 0)); - - if (g_vm->_tabdon[cy + cx] == 0) - g_vm->_tabdon[cy + cx] = g_vm->_coreVar._selectedObjectId; - else - g_vm->_crep = 192; -} - -void ajjer(int ob) { - int cx = 0; - do { - ++cx; - } while ((cx <= 5) && (ord(g_vm->_coreVar._sjer[cx]) != 0)); - - if (ord(g_vm->_coreVar._sjer[cx]) == 0) { - g_vm->_coreVar._sjer[(cx)] = chr(ob); - modinv(); - } else - g_vm->_crep = 139; -} - -void quelquun() { - if (g_vm->_menu._menuDisplayed) - g_vm->_menu.eraseMenu(); - - g_vm->endSearch(); - g_vm->_crep = 997; -L1: - if (!g_vm->_hiddenHero) { - if (g_vm->_crep == 997) - g_vm->_crep = 138; - g_vm->repon(2, g_vm->_crep); - if (g_vm->_crep == 138) - g_vm->_speechManager.startSpeech(5, 2, 1); - else - g_vm->_speechManager.startSpeech(4, 4, 1); - - if (g_vm->_iouv == 0) - g_vm->_coreVar._faithScore += 2; - else if (g_vm->_coreVar._faithScore < 50) - g_vm->_coreVar._faithScore += 4; - else - g_vm->_coreVar._faithScore += 3 * (g_vm->_coreVar._faithScore / 10); - tsort(); - g_vm->_menu.setDestinationMenuText(LANDING); - int cx = g_vm->convertBitIndexToCharacterIndex(g_vm->_currBitIndex); - g_vm->_caff = 69 + cx; - g_vm->_crep = g_vm->_caff; - g_vm->_msg[3] = MENU_DISCUSS; - g_vm->_msg[4] = g_vm->_menu._discussMenu[cx]; - g_vm->_syn = true; - g_vm->_col = true; - } else { - if (g_vm->getRandomNumber(1, 3) == 2) { - g_vm->_hiddenHero = false; - g_vm->_crep = 137; - goto L1; - } else { - g_vm->repon(2, 136); - int rand = (g_vm->getRandomNumber(0, 4)) - 2; - g_vm->_speechManager.startSpeech(3, rand, 1); - g_vm->clearScreenType2(); - g_vm->displayAloneText(); - g_vm->resetRoomVariables(MANOR_FRONT); - affrep(); - } - } - if (g_vm->_menu._menuDisplayed) - g_vm->_menu.drawMenu(); -} - -void tsuiv() { - int tbcl; - int cl; - - int cy = kAcha + ((g_vm->_mchai - 1) * 10) - 1; - int cx = 0; - do { - ++cx; - ++g_vm->_cs; - cl = cy + g_vm->_cs; - tbcl = g_vm->_tabdon[cl]; - } while ((tbcl == 0) && (g_vm->_cs <= 9)); - - if ((tbcl != 0) && (g_vm->_cs < 11)) { - ++g_vm->_is; - g_vm->_caff = tbcl; - g_vm->_crep = g_vm->_caff + 400; - if (g_vm->_currBitIndex != 0) - g_vm->_coreVar._faithScore += 2; - } else { - affrep(); - g_vm->endSearch(); - if (cx > 9) - g_vm->_crep = 131; - } -} - -void tfleche() { - bool qust; - char touch; - - if (g_vm->_num == 9999) - return; - - fenat(chr(152)); - bool inRect = false; - do { - touch = '\0'; - - do { - g_vm->_mouse.moveMouse(qust, touch); - CHECK_QUIT; - - if (g_vm->getMouseClick()) - inRect = (g_vm->_mouse._pos.x < 256 * g_vm->_res) && (g_vm->_mouse._pos.y < 176) && (g_vm->_mouse._pos.y > 12); - g_vm->prepareRoom(); - } while (!(qust || inRect || g_vm->_anyone)); - - if (qust && (touch == '\103')) - Alert::show(g_vm->_hintPctMessage, 1); - } while (!((touch == '\73') || ((touch == '\104') && (g_vm->_x != 0) && (g_vm->_y != 0)) || (g_vm->_anyone) || (inRect))); - - if (touch == '\73') - g_vm->_keyPressedEsc = true; - - if (inRect) { - g_vm->_x = g_vm->_mouse._pos.x; - g_vm->_y = g_vm->_mouse._pos.y; - } -} - -void tcoord(int sx) { - int sy, ix, iy; - int ib; - - - g_vm->_num = 0; - g_vm->_crep = 999; - int a = 0; - int atdon = amzon + 3; - int cy = 0; - while (cy < g_vm->_caff) { - a += g_vm->_tabdon[atdon]; - atdon += 4; - ++cy; - } - - if (g_vm->_tabdon[atdon] == 0) { - g_vm->_crep = 997; - return; - } - - a += kFleche; - int cb = 0; - for (cy = 0; cy <= (sx - 2); ++cy) { - ib = (g_vm->_tabdon[a + cb] << 8) + g_vm->_tabdon[(a + cb + 1)]; - cb += (ib * 4) + 2; - } - ib = (g_vm->_tabdon[a + cb] << 8) + g_vm->_tabdon[(a + cb + 1)]; - if (ib == 0) { - g_vm->_crep = 997; - return; - } - - cy = 1; - do { - cb += 2; - sx = g_vm->_tabdon[a + cb] * g_vm->_res; - sy = g_vm->_tabdon[(a + cb + 1)]; - cb += 2; - ix = g_vm->_tabdon[a + cb] * g_vm->_res; - iy = g_vm->_tabdon[(a + cb + 1)]; - ++cy; - } while (!(((g_vm->_x >= sx) && (g_vm->_x <= ix) && (g_vm->_y >= sy) && (g_vm->_y <= iy)) || (cy > ib))); - - if ((g_vm->_x >= sx) && (g_vm->_x <= ix) && (g_vm->_y >= sy) && (g_vm->_y <= iy)) { - g_vm->_num = cy - 1; - return; - } - - g_vm->_crep = 997; -} - - -void st7(int ob) { - switch (ob) { - case 116: - case 144: - g_vm->_crep = 104; - break; - case 126: - case 111: - g_vm->_crep = 108; - break; - case 132: - g_vm->_crep = 111; - break; - case 142: - g_vm->_crep = 112; - break; - default: - g_vm->_crep = 183; - st4(ob); - } -} - -void treg(int ob) { - int mdes = g_vm->_caff; - g_vm->_caff = ob; - - if (((g_vm->_caff > 29) && (g_vm->_caff < 33)) || (g_vm->_caff == 144) || (g_vm->_caff == 147) || (g_vm->_caff == 149) || (g_vm->_msg[4] == OPCODE_SLOOK)) { - afdes(); - if ((g_vm->_caff > 29) && (g_vm->_caff < 33)) - g_vm->repon(2, g_vm->_caff); - else - g_vm->repon(2, g_vm->_caff + 400); - tkey1(true); - g_vm->_caff = mdes; - g_vm->_msg[3] = 0; - g_vm->_crep = 998; - } else { - g_vm->_obpart = true; - g_vm->_crep = g_vm->_caff + 400; - g_vm->_menu.setSearchMenu(); - } -} - -void avpoing(int &ob) { - g_vm->_crep = 999; - if (g_vm->_coreVar._selectedObjectId != 0) - ajjer(g_vm->_coreVar._selectedObjectId); - - if (g_vm->_crep != 139) { - g_vm->displayItemInHand(ob + 400); - g_vm->_coreVar._selectedObjectId = ob; - ob = 0; - } -} - -void rechai(int &ch) { - int tmpPlace = g_vm->_coreVar._currPlace; - - if (g_vm->_coreVar._currPlace == CRYPT) - tmpPlace = CELLAR; - ch = g_vm->_tabdon[achai + (tmpPlace * 7) + g_vm->_num - 1]; -} - -int t23coul() { - if (!g_vm->checkInventory(143)) { - g_vm->_crep = 1512; - g_vm->loseGame(); - } - - return CELLAR; -} - -void st13(int ob) { - if ((ob == 114) || (ob == 116) || (ob == 126) || (ob == 132) || - (ob == 111) || (ob == 106) || (ob == 102) || (ob == 100) || - (ob == 110) || (ob == 153) || (ob == 154) || (ob == 155) || - (ob == 156) || (ob == 157) || (ob == 144) || (ob == 158) || - (ob == 150) || (ob == 152)) - g_vm->_crep = 999; - else - g_vm->_crep = 105; -} - -void sauvecr(int y, int dy) { -// g_vm->_mouse.hideMouse(); -// g_vm->_mouse.showMouse(); -} - -void charecr(int y, int dy) { -// g_vm->_mouse.hideMouse(); -// g_vm->_mouse.showMouse(); -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/mor.h b/engines/mortevielle/mor.h deleted file mode 100644 index b55dc46537..0000000000 --- a/engines/mortevielle/mor.h +++ /dev/null @@ -1,82 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_MOR_H -#define MORTEVIELLE_MOR_H - -#include "common/str.h" -#include "mortevielle/var_mor.h" - -namespace Mortevielle { - -const int kTime1 = 410; -const int kTime2 = 250; - -static const int _actionMenu[12] = { OPCODE_NONE, - OPCODE_SHIDE, OPCODE_ATTACH, OPCODE_FORCE, OPCODE_SLEEP, - OPCODE_ENTER, OPCODE_CLOSE, OPCODE_KNOCK, OPCODE_EAT, - OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE -}; - -/* NIVEAU 10 */ -extern void phaz(int &rand, int &p, int cf); -extern int t11(int roomId); -extern void writetp(Common::String s, int t); -extern void aniof(int ouf, int num); -/* NIVEAU 9 */ -extern void dessin(int ad); -extern void fenat(char ans); -/* NIVEAU 8 */ -extern void afdes(); -extern void tkey1(bool d); -/* NIVEAU 7 */ -extern void tlu(int af, int ob); -extern void affrep(); -/* NIVEAU 6 */ -extern void tsort(); -extern void st4(int ob); -extern void modinv(); -extern void mennor(); -extern void premtet(); -/* NIVEAU 5 */ -extern void ajchai(); -extern void ajjer(int ob); -extern void quelquun(); -extern void tsuiv(); -extern void tfleche(); -extern void tcoord(int sx); -extern void st7(int ob); -extern void treg(int ob); -extern void avpoing(int &ob); -extern void rechai(int &ch); -extern int t23coul(); -extern void st13(int ob); - -extern void sauvecr(int y, int dy); -extern void charecr(int y, int dy); -} // End of namespace Mortevielle -#endif diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index cd5c2151b2..6d1a949516 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -32,7 +32,6 @@ #include "mortevielle/dialogs.h" #include "mortevielle/keyboard.h" #include "mortevielle/menu.h" -#include "mortevielle/mor.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/saveload.h" @@ -697,7 +696,7 @@ void MortevielleEngine::handleAction() { taffich(); if (_okdes) { _okdes = false; - dessin(0); + dessin(); } if ((!_syn) || (_col)) repon(2, _crep); @@ -1658,7 +1657,7 @@ void MortevielleEngine::loseGame() { _mchai = 0; _menu.unsetSearchMenu(); if (!_blo) - t11(MANOR_FRONT); + getPresence(MANOR_FRONT); _loseGame = true; clearScreenType1(); @@ -1753,7 +1752,7 @@ void MortevielleEngine::gotoDiningRoom() { afdes(); _screenSurface.drawBox(223, 47, 155, 91, 15); repon(2, 33); - tkey1(false); + testKey(false); mennor(); _mouse.hideMouse(); hirs(); @@ -1766,7 +1765,7 @@ void MortevielleEngine::gotoDiningRoom() { affrep(); resetPresenceInRooms(DINING_ROOM); if (!_blo) - minute = t11(OWN_ROOM); + getPresence(OWN_ROOM); _currBitIndex = 0; _savedBitIndex = 0; _coreVar._alreadyEnteredManor = true; @@ -1889,8 +1888,8 @@ void MortevielleEngine::gameLoaded() { repon(2, _crep); clearScreenType3(); _endGame = false; - _menu.setDestinationMenuText(_coreVar._currPlace); - modinv(); + _menu.setDestinationText(_coreVar._currPlace); + _menu.setInventoryText(); if (_coreVar._selectedObjectId != 0) displayItemInHand(_coreVar._selectedObjectId + 400); _mouse.showMouse(); @@ -1975,7 +1974,7 @@ void MortevielleEngine::handleOpcode() { fctSelfHide(); } else { if (_anyone) { - quelquun(); + interactNPC(); _anyone = false; mennor(); return; @@ -3118,39 +3117,594 @@ int MortevielleEngine::getPresenceStats(int &rand, int cf, int roomId) { */ void MortevielleEngine::setPresenceFlags(int roomId) { if ((roomId == GREEN_ROOM) || (roomId == DARKBLUE_ROOM)) { - int rand = g_vm->getRandomNumber(1, 2); + int rand = getRandomNumber(1, 2); if (roomId == GREEN_ROOM) { if (rand == 1) - g_vm->_roomPresenceLuc = true; + _roomPresenceLuc = true; else - g_vm->_roomPresenceIda = true; + _roomPresenceIda = true; } else { // roomId == DARKBLUE_ROOM if (rand == 1) - g_vm->_roomPresenceGuy = true; + _roomPresenceGuy = true; else - g_vm->_roomPresenceEva = true; + _roomPresenceEva = true; } } else if (roomId == PURPLE_ROOM) - g_vm->_purpleRoomPresenceLeo = true; + _purpleRoomPresenceLeo = true; else if (roomId == TOILETS) - g_vm->_toiletsPresenceBobMax = true; + _toiletsPresenceBobMax = true; else if (roomId == BLUE_ROOM) - g_vm->_roomPresenceMax = true; + _roomPresenceMax = true; else if (roomId == RED_ROOM) - g_vm->_roomPresenceBob = true; + _roomPresenceBob = true; else if (roomId == BATHROOM) - g_vm->_bathRoomPresenceBobMax = true; + _bathRoomPresenceBobMax = true; else if (roomId == GREEN_ROOM2) - g_vm->_roomPresencePat = true; + _roomPresencePat = true; else if (roomId == ROOM9) - g_vm->_room9PresenceLeo = true; + _room9PresenceLeo = true; } void MortevielleEngine::init_nbrepm() { static const byte ipm[9] = { 0, 4, 5, 6, 7, 5, 6, 5, 8 }; for (int idx = 0; idx < 9; ++idx) - g_vm->_nbrepm[idx] = ipm[idx]; + _nbrepm[idx] = ipm[idx]; +} + +void MortevielleEngine::phaz(int &rand, int &p, int cf) { + p += cf; + rand = getRandomNumber(1, 100); +} + +/** + * Get Presence + * @remarks Originally called 't11' + */ +int MortevielleEngine::getPresence(int roomId) { + int retVal = 0; + int rand; + + int p = getPresenceStats(rand, _coreVar._faithScore, roomId); + _place = roomId; + if ((roomId > OWN_ROOM) && (roomId < DINING_ROOM)) { + if (p != -500) { + if (rand > p) { + displayAloneText(); + retVal = 0; + } else { + setPresenceFlags(_place); + retVal = getPresenceBitIndex(_place); + } + } else + retVal = getPresenceBitIndex(_place); + } + + if (roomId > ROOM9) { + if ((roomId > LANDING) && (roomId != CHAPEL) && (roomId != ROOM26)) + displayAloneText(); + else { + int h = 0; + if (roomId == DINING_ROOM) + p = getPresenceStatsDiningRoom(h); + else if (roomId == BUREAU) + p = getPresenceStatsBureau(h); + else if (roomId == KITCHEN) + p = getPresenceStatsKitchen(); + else if ((roomId == ATTIC) || (roomId == CELLAR)) + p = getPresenceStatsAttic(); + else if ((roomId == LANDING) || (roomId == ROOM26)) + p = getPresenceStatsLanding(); + else if (roomId == CHAPEL) + p = getPresenceStatsChapel(h); + p += _coreVar._faithScore; + rand = getRandomNumber(1, 100); + if (rand > p) { + displayAloneText(); + retVal = 0; + } else { + if (roomId == DINING_ROOM) + p = setPresenceDiningRoom(h); + else if (roomId == BUREAU) + p = setPresenceBureau(h); + else if ((roomId == KITCHEN) || (roomId == ATTIC) || (roomId == CELLAR)) + p = setPresenceKitchen(); + else if ((roomId == LANDING) || (roomId == ROOM26)) + p = setPresenceLanding(); + else if (roomId == CHAPEL) + p = setPresenceChapel(h); + retVal = p; + } + } + } + + return retVal; +} + +void MortevielleEngine::writetp(Common::String s, int t) { + if (_res == 2) + _screenSurface.drawString(s, t); + else + _screenSurface.drawString(copy(s, 1, 25), t); +} + +void MortevielleEngine::aniof(int ouf, int num) { + if ((_caff == 7) && ((num == 4) || (num == 5))) + return; + + if ((_caff == 10) && (num == 7)) + num = 6; + else if (_caff == 12) { + if (num == 3) + num = 4; + else if (num == 4) + num = 3; + } + + int ad = kAdrAni; + int offset = animof(ouf, num); + + GfxSurface surface; + surface.decode(&_mem[ad * 16 + offset]); + _screenSurface.drawPicture(surface, 0, 12); + + prepareScreenType1(); +} + +void MortevielleEngine::dessin() { + clearScreenType1(); + if (_caff > 99) { + draw(kAdrDes, 60, 33); + _screenSurface.drawBox(118, 32, 291, 121, 15); // Medium box + } else if (_caff > 69) { + draw(kAdrDes, 112, 48); // Heads + _screenSurface.drawBox(222, 47, 155, 91, 15); + } else { + draw(kAdrDes, 0, 12); + prepareScreenType1(); + if ((_caff < 30) || (_caff > 32)) { + for (int cx = 1; cx <= 6; ++cx) { + if (ord(_touv[cx]) != 0) + aniof(1, ord(_touv[cx])); + } + + if (_caff == 13) { + if (_coreVar._atticBallHoleObjectId == 141) + aniof(1, 7); + + if (_coreVar._atticRodHoleObjectId == 159) + aniof(1, 6); + } else if ((_caff == 14) && (_coreVar._cellarObjectId == 151)) + aniof(1, 2); + else if ((_caff == 17) && (_coreVar._secretPassageObjectId == 143)) + aniof(1, 1); + else if ((_caff == 24) && (_coreVar._wellObjectId != 0)) + aniof(1, 1); + } + + if (_caff < ROOM26) + startMusicOrSpeech(1); + } +} + +void MortevielleEngine::afdes() { + taffich(); + dessin(); + _okdes = false; +} + +/** + * Engine function - Place + * @remarks Originally called 'tkey1' + */ +void MortevielleEngine::testKey(bool d) { + bool quest = false; + int x, y, c; + + _mouse.hideMouse(); + fenat('K'); + + // Wait for release from any key or mouse button + while (keyPressed()) + _key = testou(); + + do { + _mouse.getMousePosition(x, y, c); + keyPressed(); + } while (c != 0); + + // Event loop + do { + if (d) + prepareRoom(); + quest = keyPressed(); + _mouse.getMousePosition(x, y, c); + CHECK_QUIT; + } while (!(quest || (c != 0) || (d && _anyone))); + if (quest) + testou(); + setMouseClick(false); + _mouse.showMouse(); +} + +void MortevielleEngine::tlu(int af, int ob) { + _caff = 32; + afdes(); + repon(6, ob + 4000); + repon(2, 999); + testKey(true); + _caff = af; + _msg[3] = OPCODE_NONE; + _crep = 998; +} + +void MortevielleEngine::affrep() { + _caff = _coreVar._currPlace; + _crep = _coreVar._currPlace; +} + +/** + * Exit room + * @remarks Originally called 'tsort' + */ +void MortevielleEngine::exitRoom() { + if ((_iouv > 0) && (_coreVar._currPlace != OWN_ROOM)) { + if (_coreVar._faithScore < 50) + _coreVar._faithScore += 2; + else + _coreVar._faithScore += (_coreVar._faithScore / 10); + } + + for (int cx = 1; cx <= 7; ++cx) + _touv[cx] = chr(0); + _ment = 0; + _iouv = 0; + _mchai = 0; + resetRoomVariables(_coreVar._currPlace); +} + +/** + * get 'read' description + * @remarks Originally called 'st4' + */ +void MortevielleEngine::getReadDescription(int objId) { + _crep = 997; + + switch (objId) { + case 114 : + _crep = 109; + break; + case 110 : + _crep = 107; + break; + case 158 : + _crep = 113; + break; + case 152: + case 153: + case 154: + case 155: + case 156: + case 150: + case 100: + case 157: + case 160: + case 161 : + tlu(_caff, objId); + break; + default: + break; + } +} + +/** + * get 'search' description + * @remarks Originally called 'st7' + */ +void MortevielleEngine::getSearchDescription(int objId) { + switch (objId) { + case 116: + case 144: + _crep = 104; + break; + case 126: + case 111: + _crep = 108; + break; + case 132: + _crep = 111; + break; + case 142: + _crep = 112; + break; + default: + _crep = 183; + getReadDescription(objId); + } +} + +void MortevielleEngine::mennor() { + g_vm->_menu.menuUp(g_vm->_msg[3]); +} + +void MortevielleEngine::premtet() { + g_vm->draw(kAdrDes, 10, 80); + g_vm->_screenSurface.drawBox(18, 79, 155, 91, 15); +} + +void MortevielleEngine::ajchai() { + int cy = kAcha + ((g_vm->_mchai - 1) * 10) - 1; + int cx = 0; + do { + ++cx; + } while ((cx <= 9) && (g_vm->_tabdon[cy + cx] != 0)); + + if (g_vm->_tabdon[cy + cx] == 0) + g_vm->_tabdon[cy + cx] = g_vm->_coreVar._selectedObjectId; + else + g_vm->_crep = 192; +} + +void MortevielleEngine::ajjer(int ob) { + int cx = 0; + do { + ++cx; + } while ((cx <= 5) && (ord(g_vm->_coreVar._sjer[cx]) != 0)); + + if (ord(g_vm->_coreVar._sjer[cx]) == 0) { + g_vm->_coreVar._sjer[(cx)] = chr(ob); + g_vm->_menu.setInventoryText(); + } else + g_vm->_crep = 139; +} + +/** + * Interact with NPC + * @remarks Originally called 'quelquun' + */ +void MortevielleEngine::interactNPC() { + if (g_vm->_menu._menuDisplayed) + g_vm->_menu.eraseMenu(); + + g_vm->endSearch(); + g_vm->_crep = 997; +L1: + if (!g_vm->_hiddenHero) { + if (g_vm->_crep == 997) + g_vm->_crep = 138; + g_vm->repon(2, g_vm->_crep); + if (g_vm->_crep == 138) + g_vm->_speechManager.startSpeech(5, 2, 1); + else + g_vm->_speechManager.startSpeech(4, 4, 1); + + if (g_vm->_iouv == 0) + g_vm->_coreVar._faithScore += 2; + else if (g_vm->_coreVar._faithScore < 50) + g_vm->_coreVar._faithScore += 4; + else + g_vm->_coreVar._faithScore += 3 * (g_vm->_coreVar._faithScore / 10); + g_vm->exitRoom(); + g_vm->_menu.setDestinationText(LANDING); + int cx = g_vm->convertBitIndexToCharacterIndex(g_vm->_currBitIndex); + g_vm->_caff = 69 + cx; + g_vm->_crep = g_vm->_caff; + g_vm->_msg[3] = MENU_DISCUSS; + g_vm->_msg[4] = g_vm->_menu._discussMenu[cx]; + g_vm->_syn = true; + g_vm->_col = true; + } else { + if (g_vm->getRandomNumber(1, 3) == 2) { + g_vm->_hiddenHero = false; + g_vm->_crep = 137; + goto L1; + } else { + g_vm->repon(2, 136); + int rand = (g_vm->getRandomNumber(0, 4)) - 2; + g_vm->_speechManager.startSpeech(3, rand, 1); + g_vm->clearScreenType2(); + g_vm->displayAloneText(); + g_vm->resetRoomVariables(MANOR_FRONT); + g_vm->affrep(); + } + } + if (g_vm->_menu._menuDisplayed) + g_vm->_menu.drawMenu(); +} + +void MortevielleEngine::tsuiv() { + int tbcl; + int cy = kAcha + ((g_vm->_mchai - 1) * 10) - 1; + int cx = 0; + do { + ++cx; + ++g_vm->_cs; + int cl = cy + g_vm->_cs; + tbcl = g_vm->_tabdon[cl]; + } while ((tbcl == 0) && (g_vm->_cs <= 9)); + + if ((tbcl != 0) && (g_vm->_cs < 11)) { + ++g_vm->_is; + g_vm->_caff = tbcl; + g_vm->_crep = g_vm->_caff + 400; + if (g_vm->_currBitIndex != 0) + g_vm->_coreVar._faithScore += 2; + } else { + g_vm->affrep(); + g_vm->endSearch(); + if (cx > 9) + g_vm->_crep = 131; + } +} + +void MortevielleEngine::tfleche() { + bool qust; + char touch; + + if (g_vm->_num == 9999) + return; + + fenat(chr(152)); + bool inRect = false; + do { + touch = '\0'; + + do { + g_vm->_mouse.moveMouse(qust, touch); + CHECK_QUIT; + + if (g_vm->getMouseClick()) + inRect = (g_vm->_mouse._pos.x < 256 * g_vm->_res) && (g_vm->_mouse._pos.y < 176) && (g_vm->_mouse._pos.y > 12); + g_vm->prepareRoom(); + } while (!(qust || inRect || g_vm->_anyone)); + + if (qust && (touch == '\103')) + Alert::show(g_vm->_hintPctMessage, 1); + } while (!((touch == '\73') || ((touch == '\104') && (g_vm->_x != 0) && (g_vm->_y != 0)) || (g_vm->_anyone) || (inRect))); + + if (touch == '\73') + g_vm->_keyPressedEsc = true; + + if (inRect) { + g_vm->_x = g_vm->_mouse._pos.x; + g_vm->_y = g_vm->_mouse._pos.y; + } +} + +/** + * Set coordinates + * @remarks Originally called 'tcoord' + */ +void MortevielleEngine::setCoordinates(int sx) { + int sy, ix, iy; + int ib; + + + g_vm->_num = 0; + g_vm->_crep = 999; + int a = 0; + int atdon = amzon + 3; + int cy = 0; + while (cy < g_vm->_caff) { + a += g_vm->_tabdon[atdon]; + atdon += 4; + ++cy; + } + + if (g_vm->_tabdon[atdon] == 0) { + g_vm->_crep = 997; + return; + } + + a += kFleche; + int cb = 0; + for (cy = 0; cy <= (sx - 2); ++cy) { + ib = (g_vm->_tabdon[a + cb] << 8) + g_vm->_tabdon[(a + cb + 1)]; + cb += (ib * 4) + 2; + } + ib = (g_vm->_tabdon[a + cb] << 8) + g_vm->_tabdon[(a + cb + 1)]; + if (ib == 0) { + g_vm->_crep = 997; + return; + } + + cy = 1; + do { + cb += 2; + sx = g_vm->_tabdon[a + cb] * g_vm->_res; + sy = g_vm->_tabdon[(a + cb + 1)]; + cb += 2; + ix = g_vm->_tabdon[a + cb] * g_vm->_res; + iy = g_vm->_tabdon[(a + cb + 1)]; + ++cy; + } while (!(((g_vm->_x >= sx) && (g_vm->_x <= ix) && (g_vm->_y >= sy) && (g_vm->_y <= iy)) || (cy > ib))); + + if ((g_vm->_x >= sx) && (g_vm->_x <= ix) && (g_vm->_y >= sy) && (g_vm->_y <= iy)) { + g_vm->_num = cy - 1; + return; + } + + g_vm->_crep = 997; +} + +void MortevielleEngine::treg(int objId) { + int mdes = g_vm->_caff; + g_vm->_caff = objId; + + if (((g_vm->_caff > 29) && (g_vm->_caff < 33)) || (g_vm->_caff == 144) || (g_vm->_caff == 147) || (g_vm->_caff == 149) || (g_vm->_msg[4] == OPCODE_SLOOK)) { + g_vm->afdes(); + if ((g_vm->_caff > 29) && (g_vm->_caff < 33)) + g_vm->repon(2, g_vm->_caff); + else + g_vm->repon(2, g_vm->_caff + 400); + g_vm->testKey(true); + g_vm->_caff = mdes; + g_vm->_msg[3] = 0; + g_vm->_crep = 998; + } else { + g_vm->_obpart = true; + g_vm->_crep = g_vm->_caff + 400; + g_vm->_menu.setSearchMenu(); + } +} + +void MortevielleEngine::avpoing(int &objId) { + g_vm->_crep = 999; + if (g_vm->_coreVar._selectedObjectId != 0) + g_vm->ajjer(g_vm->_coreVar._selectedObjectId); + + if (g_vm->_crep != 139) { + g_vm->displayItemInHand(objId + 400); + g_vm->_coreVar._selectedObjectId = objId; + objId = 0; + } +} + +void MortevielleEngine::rechai(int &ch) { + int tmpPlace = g_vm->_coreVar._currPlace; + + if (g_vm->_coreVar._currPlace == CRYPT) + tmpPlace = CELLAR; + ch = g_vm->_tabdon[achai + (tmpPlace * 7) + g_vm->_num - 1]; +} + +/** + * Check before leaving the secret passage + * @remarks Originally called 't23coul' + */ +int MortevielleEngine::checkLeaveSecretPassage() { + if (!g_vm->checkInventory(143)) { + g_vm->_crep = 1512; + g_vm->loseGame(); + } + + return CELLAR; +} + +void MortevielleEngine::fenat(char ans) { + int coul; + + g_vm->_mouse.hideMouse(); + if (g_vm->_currGraphicalDevice == MODE_CGA) + coul = 2; + else if (g_vm->_currGraphicalDevice == MODE_HERCULES) + coul = 1; + else + coul = 12; + + g_vm->_screenSurface.writeCharacter(Common::Point(306, 193), ord(ans), coul); + g_vm->_screenSurface.drawBox(300, 191, 16, 8, 15); + g_vm->_mouse.showMouse(); +} + +void MortevielleEngine::sauvecr(int y, int dy) { +// _mouse.hideMouse(); +// _mouse.showMouse(); +} + +void MortevielleEngine::charecr(int y, int dy) { +// _mouse.hideMouse(); +// _mouse.showMouse(); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index bb594d2415..6e55bebd7e 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -73,6 +73,12 @@ enum DataType { kGameStrings = 1 }; +static const int _actionMenu[12] = { OPCODE_NONE, + OPCODE_SHIDE, OPCODE_ATTACH, OPCODE_FORCE, OPCODE_SLEEP, + OPCODE_ENTER, OPCODE_CLOSE, OPCODE_KNOCK, OPCODE_EAT, + OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE +}; + #define SCREEN_WIDTH 640 #define SCREEN_HEIGHT 400 #define SCREEN_ORIG_HEIGHT 200 @@ -80,6 +86,9 @@ enum DataType { #define MORT_DAT "mort.dat" #define GAME_FRAME_DELAY (1000 / 50) +const int kTime1 = 410; +const int kTime2 = 250; + const int kAcha = 492; const int kAdrDes = 0x7000; const int kFleche = 1758; @@ -167,11 +176,18 @@ private: int readclock(); void palette(int v1); int checkLeoMaxRandomPresence(); + void interactNPC(); void adzon(); void text1(int x, int y, int nb, int m); void modif(int &nu); void initouv(); + void phaz(int &rand, int &p, int cf); + void writetp(Common::String s, int t); + void premtet(); + void ajchai(); + void tfleche(); + void setCoordinates(int sx); public: Common::String _hintPctMessage; @@ -417,9 +433,14 @@ public: void displayItemInHand(int objId); void displayEmptyHand(); void resetRoomVariables(int roomId); - int getPresenceStats(int &rand, int cf, int roomId); + int getPresenceStats(int &rand, int cf, int roomId); void setPresenceFlags(int roomId); - + int getPresence(int roomId); + void testKey(bool d); + void exitRoom(); + void getReadDescription(int objId); + void getSearchDescription(int objId); + int checkLeaveSecretPassage(); void pictout(int seg, int dep, int x, int y); int animof(int ouf, int num); @@ -427,6 +448,21 @@ public: void ecr2(Common::String text); void ecr3(Common::String text); void init_nbrepm(); + void aniof(int ouf, int num); + void dessin(); + void afdes(); + void tlu(int af, int ob); + void affrep(); + void mennor(); + void ajjer(int ob); + void tsuiv(); + void treg(int objId); + void avpoing(int &objId); + void rechai(int &ch); + void fenat(char ans); + + void sauvecr(int y, int dy); + void charecr(int y, int dy); }; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 92831ec2f4..35d42251b1 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -27,7 +27,6 @@ #include "common/file.h" #include "common/str.h" -#include "mortevielle/mor.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/graphics.h" @@ -338,7 +337,7 @@ void taffich() { if ((a == 13) || (a == 14)) g_vm->displayAloneText(); else if (!g_vm->_blo) - cx = t11(g_vm->_coreVar._currPlace); + g_vm->getPresence(g_vm->_coreVar._currPlace); g_vm->_savedBitIndex = 0; } } diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index daa59b231b..4c5e6252d5 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -28,7 +28,6 @@ #include "common/file.h" #include "common/system.h" #include "mortevielle/dialogs.h" -#include "mortevielle/mor.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/saveload.h" diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 5b9e8415dc..c374d20a6d 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -30,7 +30,6 @@ #include "mortevielle/speech.h" #include "mortevielle/sound.h" #include "mortevielle/mortevielle.h" -#include "mortevielle/mor.h" #include "mortevielle/var_mor.h" namespace Mortevielle { -- cgit v1.2.3 From 4b9e71952c8384267251c31aae3fb5bcd34f7bff Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 24 Mar 2012 22:00:28 +0100 Subject: MORTEVIELLE: More renaming and refactoring --- engines/mortevielle/actions.cpp | 2 +- engines/mortevielle/dialogs.cpp | 17 +- engines/mortevielle/keyboard.cpp | 71 ----- engines/mortevielle/keyboard.h | 38 --- engines/mortevielle/module.mk | 1 - engines/mortevielle/mortevielle.cpp | 306 +++++++++++---------- engines/mortevielle/mortevielle.h | 512 ++++++++++++++++++++---------------- engines/mortevielle/mouse.cpp | 8 - engines/mortevielle/mouse.h | 2 - engines/mortevielle/outtext.cpp | 33 ++- engines/mortevielle/outtext.h | 13 +- engines/mortevielle/var_mor.h | 70 ----- 12 files changed, 495 insertions(+), 578 deletions(-) delete mode 100644 engines/mortevielle/keyboard.cpp delete mode 100644 engines/mortevielle/keyboard.h diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 0247eca2e1..1a6614953d 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -1575,7 +1575,7 @@ void MortevielleEngine::endGame() { testKey(false); _mouse.hideMouse(); _caff = 70; - taffich(); + _text.taffich(); hirs(); premtet(); startDialog(141); diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 19ff58071c..f04233d908 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -27,7 +27,6 @@ #include "common/str.h" #include "mortevielle/dialogs.h" -#include "mortevielle/keyboard.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" @@ -307,7 +306,7 @@ bool KnowledgeCheck::show() { dialogHeight = 23; g_vm->_screenSurface.fillRect(15, Common::Rect(0, 14, 630, dialogHeight)); Common::String tmpStr = g_vm->getString(textIndexArr[indx]); - displayStr(tmpStr, 20, 15, 100, 2, 0); + g_vm->_text.displayStr(tmpStr, 20, 15, 100, 2, 0); if (indx != 9) { firstOption = textIndexArr[indx] + 1; @@ -324,7 +323,7 @@ bool KnowledgeCheck::show() { tmpStr = g_vm->getString(j); if ((int) tmpStr.size() > maxLength) maxLength = tmpStr.size(); - displayStr(tmpStr, 100, optionPosY, 100, 1, 0); + g_vm->_text.displayStr(tmpStr, 100, optionPosY, 100, 1, 0); choiceArray[prevChoice] = tmpStr; optionPosY += 8; } @@ -362,16 +361,16 @@ bool KnowledgeCheck::show() { if (coor[currChoice]._enabled) { if ((prevChoice != 0) && (prevChoice != currChoice)) { tmpStr = choiceArray[prevChoice] + '$'; - displayStr(tmpStr, 100, 27 + (prevChoice * 8), 100, 1, 0); + g_vm->_text.displayStr(tmpStr, 100, 27 + (prevChoice * 8), 100, 1, 0); } if (prevChoice != currChoice) { tmpStr = choiceArray[currChoice] + '$'; - displayStr(tmpStr, 100, 27 + (currChoice * 8), 100, 1, 1); + g_vm->_text.displayStr(tmpStr, 100, 27 + (currChoice * 8), 100, 1, 1); prevChoice = currChoice; } } else if (prevChoice != 0) { tmpStr = choiceArray[prevChoice] + '$'; - displayStr(tmpStr, 100, 27 + (prevChoice * 8), 100, 1, 0); + g_vm->_text.displayStr(tmpStr, 100, 27 + (prevChoice * 8), 100, 1, 0); prevChoice = 0; } } while (!((prevChoice != 0) && g_vm->getMouseClick())); @@ -420,7 +419,7 @@ void f3f8::draw() { * @remarks Originally called 'diver' */ void f3f8::checkForF8(int SpeechNum, bool drawAni50Fl) { - teskbd(); + g_vm->testKeyboard(); do { g_vm->_speechManager.startSpeech(SpeechNum, 0, 0); g_vm->_key = waitForF3F8(); @@ -442,7 +441,7 @@ int f3f8::waitForF3F8() { int key; do { - key = testou(); + key = g_vm->testou(); if (g_vm->shouldQuit()) return key; } while ((key != 61) && (key != 66)); @@ -453,7 +452,7 @@ int f3f8::waitForF3F8() { void f3f8::aff50(bool drawAni50Fl) { g_vm->_caff = 50; g_vm->_maff = 0; - taffich(); + g_vm->_text.taffich(); g_vm->draw(kAdrDes, 63, 12); if (drawAni50Fl) ani50(); diff --git a/engines/mortevielle/keyboard.cpp b/engines/mortevielle/keyboard.cpp deleted file mode 100644 index 699bd5a7bd..0000000000 --- a/engines/mortevielle/keyboard.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "mortevielle/mortevielle.h" -#include "mortevielle/keyboard.h" -#include "mortevielle/var_mor.h" - -namespace Mortevielle { - -char readkey1() { - char c = g_vm->getChar(); - - return c; -} - -int testou() { - char ch = g_vm->getChar(); - - switch (ch) { - case '\23' : - g_vm->_soundOff = !g_vm->_soundOff; - break; - case '\26' : - if ((g_vm->_c_zzz == 1) || (g_vm->_c_zzz == 2)) { - g_vm->decodeNumber(&g_vm->_cfiecBuffer[161 * 16], ((822 * 128) - (161 * 16)) / 64); - ++g_vm->_c_zzz; - - return 61; - } - break; - case '\33' : - if (g_vm->keyPressed()) - ch = g_vm->getChar(); - break; - default: - break; - } - - return ord(ch); -} - -void teskbd() { - if (g_vm->keyPressed()) - testou(); -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/keyboard.h b/engines/mortevielle/keyboard.h deleted file mode 100644 index 7b2510fe06..0000000000 --- a/engines/mortevielle/keyboard.h +++ /dev/null @@ -1,38 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_KEYBOARD_H -#define MORTEVIELLE_KEYBOARD_H - -namespace Mortevielle { - -extern char readkey1(); -extern int testou(); -extern void teskbd(); - -} // End of namespace Mortevielle -#endif diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index fe02e1114f..8cad2b8ad0 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -5,7 +5,6 @@ MODULE_OBJS := \ detection.o \ dialogs.o \ graphics.o \ - keyboard.o \ menu.o \ mortevielle.o \ mouse.o \ diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 6d1a949516..fec14739c3 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -30,7 +30,6 @@ #include "graphics/pixelformat.h" #include "mortevielle/mortevielle.h" #include "mortevielle/dialogs.h" -#include "mortevielle/keyboard.h" #include "mortevielle/menu.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" @@ -208,10 +207,10 @@ Common::ErrorCode MortevielleEngine::initialise() { _soundOff = false; _largestClearScreen = false; - teskbd(); + testKeyboard(); showConfigScreen(); _newGraphicalDevice = _currGraphicalDevice; - teskbd(); + testKeyboard(); if (_newGraphicalDevice != _currGraphicalDevice) _currGraphicalDevice = _newGraphicalDevice; hirs(); @@ -693,7 +692,7 @@ void MortevielleEngine::handleAction() { handleOpcode(); if ((_controlMenu == 0) && (! _loseGame) && (! _endGame)) { - taffich(); + g_vm->_text.taffich(); if (_okdes) { _okdes = false; dessin(); @@ -1706,7 +1705,7 @@ void MortevielleEngine::startDialog(int16 rep) { _mouse.hideMouse(); Common::String dialogStr = getString(rep + kDialogStringIndex); - displayStr(dialogStr, 230, 4, 65, 24, 5); + _text.displayStr(dialogStr, 230, 4, 65, 24, 5); f3f8::draw(); key = 0; @@ -2512,8 +2511,8 @@ void MortevielleEngine::showTitleScreen() { hirs(); repon(7, 2035); _caff = 51; - taffich(); - teskbd(); + _text.taffich(); + testKeyboard(); if (_newGraphicalDevice != _currGraphicalDevice) _currGraphicalDevice = _newGraphicalDevice; hirs(); @@ -2898,7 +2897,7 @@ void MortevielleEngine::text1(int x, int y, int nb, int m) { Common::String tmpStr = getString(m); if ((y == 182) && ((int) tmpStr.size() * co > nb * 6)) y = 176; - displayStr(tmpStr, x, y, nb, 20, _textColor); + _text.displayStr(tmpStr, x, y, nb, 20, _textColor); } void MortevielleEngine::repon(int f, int m) { @@ -2911,7 +2910,7 @@ void MortevielleEngine::repon(int f, int m) { _largestClearScreen = false; clearScreenType2(); - displayStr(tmpStr, 8, 176, 85, 3, 5); + _text.displayStr(tmpStr, 8, 176, 85, 3, 5); } else { modif(m); switch (f) { @@ -2940,7 +2939,7 @@ void MortevielleEngine::repon(int f, int m) { i = 5; Common::String tmpStr = getString(m); - displayStr(tmpStr, 80, 40, 60, 25, i); + _text.displayStr(tmpStr, 80, 40, 60, 25, i); if (m == 180) _coreVar._pourc[6] = '*'; @@ -3288,7 +3287,7 @@ void MortevielleEngine::dessin() { } void MortevielleEngine::afdes() { - taffich(); + _text.taffich(); dessin(); _okdes = false; } @@ -3424,38 +3423,38 @@ void MortevielleEngine::getSearchDescription(int objId) { } void MortevielleEngine::mennor() { - g_vm->_menu.menuUp(g_vm->_msg[3]); + _menu.menuUp(_msg[3]); } void MortevielleEngine::premtet() { - g_vm->draw(kAdrDes, 10, 80); - g_vm->_screenSurface.drawBox(18, 79, 155, 91, 15); + draw(kAdrDes, 10, 80); + _screenSurface.drawBox(18, 79, 155, 91, 15); } void MortevielleEngine::ajchai() { - int cy = kAcha + ((g_vm->_mchai - 1) * 10) - 1; + int cy = kAcha + ((_mchai - 1) * 10) - 1; int cx = 0; do { ++cx; - } while ((cx <= 9) && (g_vm->_tabdon[cy + cx] != 0)); + } while ((cx <= 9) && (_tabdon[cy + cx] != 0)); - if (g_vm->_tabdon[cy + cx] == 0) - g_vm->_tabdon[cy + cx] = g_vm->_coreVar._selectedObjectId; + if (_tabdon[cy + cx] == 0) + _tabdon[cy + cx] = _coreVar._selectedObjectId; else - g_vm->_crep = 192; + _crep = 192; } void MortevielleEngine::ajjer(int ob) { int cx = 0; do { ++cx; - } while ((cx <= 5) && (ord(g_vm->_coreVar._sjer[cx]) != 0)); + } while ((cx <= 5) && (ord(_coreVar._sjer[cx]) != 0)); - if (ord(g_vm->_coreVar._sjer[cx]) == 0) { - g_vm->_coreVar._sjer[(cx)] = chr(ob); - g_vm->_menu.setInventoryText(); + if (ord(_coreVar._sjer[cx]) == 0) { + _coreVar._sjer[(cx)] = chr(ob); + _menu.setInventoryText(); } else - g_vm->_crep = 139; + _crep = 139; } /** @@ -3463,77 +3462,77 @@ void MortevielleEngine::ajjer(int ob) { * @remarks Originally called 'quelquun' */ void MortevielleEngine::interactNPC() { - if (g_vm->_menu._menuDisplayed) - g_vm->_menu.eraseMenu(); + if (_menu._menuDisplayed) + _menu.eraseMenu(); - g_vm->endSearch(); - g_vm->_crep = 997; + endSearch(); + _crep = 997; L1: - if (!g_vm->_hiddenHero) { - if (g_vm->_crep == 997) - g_vm->_crep = 138; - g_vm->repon(2, g_vm->_crep); - if (g_vm->_crep == 138) - g_vm->_speechManager.startSpeech(5, 2, 1); + if (!_hiddenHero) { + if (_crep == 997) + _crep = 138; + repon(2, _crep); + if (_crep == 138) + _speechManager.startSpeech(5, 2, 1); else - g_vm->_speechManager.startSpeech(4, 4, 1); + _speechManager.startSpeech(4, 4, 1); - if (g_vm->_iouv == 0) - g_vm->_coreVar._faithScore += 2; - else if (g_vm->_coreVar._faithScore < 50) - g_vm->_coreVar._faithScore += 4; + if (_iouv == 0) + _coreVar._faithScore += 2; + else if (_coreVar._faithScore < 50) + _coreVar._faithScore += 4; else - g_vm->_coreVar._faithScore += 3 * (g_vm->_coreVar._faithScore / 10); - g_vm->exitRoom(); - g_vm->_menu.setDestinationText(LANDING); - int cx = g_vm->convertBitIndexToCharacterIndex(g_vm->_currBitIndex); - g_vm->_caff = 69 + cx; - g_vm->_crep = g_vm->_caff; - g_vm->_msg[3] = MENU_DISCUSS; - g_vm->_msg[4] = g_vm->_menu._discussMenu[cx]; - g_vm->_syn = true; - g_vm->_col = true; + _coreVar._faithScore += 3 * (_coreVar._faithScore / 10); + exitRoom(); + _menu.setDestinationText(LANDING); + int cx = convertBitIndexToCharacterIndex(_currBitIndex); + _caff = 69 + cx; + _crep = _caff; + _msg[3] = MENU_DISCUSS; + _msg[4] = _menu._discussMenu[cx]; + _syn = true; + _col = true; } else { - if (g_vm->getRandomNumber(1, 3) == 2) { - g_vm->_hiddenHero = false; - g_vm->_crep = 137; + if (getRandomNumber(1, 3) == 2) { + _hiddenHero = false; + _crep = 137; goto L1; } else { - g_vm->repon(2, 136); - int rand = (g_vm->getRandomNumber(0, 4)) - 2; - g_vm->_speechManager.startSpeech(3, rand, 1); - g_vm->clearScreenType2(); - g_vm->displayAloneText(); - g_vm->resetRoomVariables(MANOR_FRONT); - g_vm->affrep(); + repon(2, 136); + int rand = (getRandomNumber(0, 4)) - 2; + _speechManager.startSpeech(3, rand, 1); + clearScreenType2(); + displayAloneText(); + resetRoomVariables(MANOR_FRONT); + affrep(); } } - if (g_vm->_menu._menuDisplayed) - g_vm->_menu.drawMenu(); + if (_menu._menuDisplayed) + _menu.drawMenu(); } void MortevielleEngine::tsuiv() { int tbcl; - int cy = kAcha + ((g_vm->_mchai - 1) * 10) - 1; + int cy = kAcha + ((_mchai - 1) * 10) - 1; int cx = 0; do { ++cx; - ++g_vm->_cs; - int cl = cy + g_vm->_cs; - tbcl = g_vm->_tabdon[cl]; - } while ((tbcl == 0) && (g_vm->_cs <= 9)); - - if ((tbcl != 0) && (g_vm->_cs < 11)) { - ++g_vm->_is; - g_vm->_caff = tbcl; - g_vm->_crep = g_vm->_caff + 400; - if (g_vm->_currBitIndex != 0) - g_vm->_coreVar._faithScore += 2; + ++_cs; + int cl = cy + _cs; + tbcl = _tabdon[cl]; + } while ((tbcl == 0) && (_cs <= 9)); + + if ((tbcl != 0) && (_cs < 11)) { + ++_is; + _caff = tbcl; + _crep = _caff + 400; + if (_currBitIndex != 0) + _coreVar._faithScore += 2; } else { - g_vm->affrep(); - g_vm->endSearch(); + affrep(); + endSearch(); if (cx > 9) - g_vm->_crep = 131; + _crep = 131; } } @@ -3541,7 +3540,7 @@ void MortevielleEngine::tfleche() { bool qust; char touch; - if (g_vm->_num == 9999) + if (_num == 9999) return; fenat(chr(152)); @@ -3550,24 +3549,24 @@ void MortevielleEngine::tfleche() { touch = '\0'; do { - g_vm->_mouse.moveMouse(qust, touch); + _mouse.moveMouse(qust, touch); CHECK_QUIT; - if (g_vm->getMouseClick()) - inRect = (g_vm->_mouse._pos.x < 256 * g_vm->_res) && (g_vm->_mouse._pos.y < 176) && (g_vm->_mouse._pos.y > 12); - g_vm->prepareRoom(); - } while (!(qust || inRect || g_vm->_anyone)); + if (getMouseClick()) + inRect = (_mouse._pos.x < 256 * _res) && (_mouse._pos.y < 176) && (_mouse._pos.y > 12); + prepareRoom(); + } while (!(qust || inRect || _anyone)); if (qust && (touch == '\103')) - Alert::show(g_vm->_hintPctMessage, 1); - } while (!((touch == '\73') || ((touch == '\104') && (g_vm->_x != 0) && (g_vm->_y != 0)) || (g_vm->_anyone) || (inRect))); + Alert::show(_hintPctMessage, 1); + } while (!((touch == '\73') || ((touch == '\104') && (_x != 0) && (_y != 0)) || (_anyone) || (inRect))); if (touch == '\73') - g_vm->_keyPressedEsc = true; + _keyPressedEsc = true; if (inRect) { - g_vm->_x = g_vm->_mouse._pos.x; - g_vm->_y = g_vm->_mouse._pos.y; + _x = _mouse._pos.x; + _y = _mouse._pos.y; } } @@ -3580,92 +3579,92 @@ void MortevielleEngine::setCoordinates(int sx) { int ib; - g_vm->_num = 0; - g_vm->_crep = 999; + _num = 0; + _crep = 999; int a = 0; int atdon = amzon + 3; int cy = 0; - while (cy < g_vm->_caff) { - a += g_vm->_tabdon[atdon]; + while (cy < _caff) { + a += _tabdon[atdon]; atdon += 4; ++cy; } - if (g_vm->_tabdon[atdon] == 0) { - g_vm->_crep = 997; + if (_tabdon[atdon] == 0) { + _crep = 997; return; } a += kFleche; int cb = 0; for (cy = 0; cy <= (sx - 2); ++cy) { - ib = (g_vm->_tabdon[a + cb] << 8) + g_vm->_tabdon[(a + cb + 1)]; + ib = (_tabdon[a + cb] << 8) + _tabdon[(a + cb + 1)]; cb += (ib * 4) + 2; } - ib = (g_vm->_tabdon[a + cb] << 8) + g_vm->_tabdon[(a + cb + 1)]; + ib = (_tabdon[a + cb] << 8) + _tabdon[(a + cb + 1)]; if (ib == 0) { - g_vm->_crep = 997; + _crep = 997; return; } cy = 1; do { cb += 2; - sx = g_vm->_tabdon[a + cb] * g_vm->_res; - sy = g_vm->_tabdon[(a + cb + 1)]; + sx = _tabdon[a + cb] * _res; + sy = _tabdon[(a + cb + 1)]; cb += 2; - ix = g_vm->_tabdon[a + cb] * g_vm->_res; - iy = g_vm->_tabdon[(a + cb + 1)]; + ix = _tabdon[a + cb] * _res; + iy = _tabdon[(a + cb + 1)]; ++cy; - } while (!(((g_vm->_x >= sx) && (g_vm->_x <= ix) && (g_vm->_y >= sy) && (g_vm->_y <= iy)) || (cy > ib))); + } while (!(((_x >= sx) && (_x <= ix) && (_y >= sy) && (_y <= iy)) || (cy > ib))); - if ((g_vm->_x >= sx) && (g_vm->_x <= ix) && (g_vm->_y >= sy) && (g_vm->_y <= iy)) { - g_vm->_num = cy - 1; + if ((_x >= sx) && (_x <= ix) && (_y >= sy) && (_y <= iy)) { + _num = cy - 1; return; } - g_vm->_crep = 997; + _crep = 997; } void MortevielleEngine::treg(int objId) { - int mdes = g_vm->_caff; - g_vm->_caff = objId; + int mdes = _caff; + _caff = objId; - if (((g_vm->_caff > 29) && (g_vm->_caff < 33)) || (g_vm->_caff == 144) || (g_vm->_caff == 147) || (g_vm->_caff == 149) || (g_vm->_msg[4] == OPCODE_SLOOK)) { - g_vm->afdes(); - if ((g_vm->_caff > 29) && (g_vm->_caff < 33)) - g_vm->repon(2, g_vm->_caff); + if (((_caff > 29) && (_caff < 33)) || (_caff == 144) || (_caff == 147) || (_caff == 149) || (_msg[4] == OPCODE_SLOOK)) { + afdes(); + if ((_caff > 29) && (_caff < 33)) + repon(2, _caff); else - g_vm->repon(2, g_vm->_caff + 400); - g_vm->testKey(true); - g_vm->_caff = mdes; - g_vm->_msg[3] = 0; - g_vm->_crep = 998; + repon(2, _caff + 400); + testKey(true); + _caff = mdes; + _msg[3] = 0; + _crep = 998; } else { - g_vm->_obpart = true; - g_vm->_crep = g_vm->_caff + 400; - g_vm->_menu.setSearchMenu(); + _obpart = true; + _crep = _caff + 400; + _menu.setSearchMenu(); } } void MortevielleEngine::avpoing(int &objId) { - g_vm->_crep = 999; - if (g_vm->_coreVar._selectedObjectId != 0) - g_vm->ajjer(g_vm->_coreVar._selectedObjectId); + _crep = 999; + if (_coreVar._selectedObjectId != 0) + ajjer(_coreVar._selectedObjectId); - if (g_vm->_crep != 139) { - g_vm->displayItemInHand(objId + 400); - g_vm->_coreVar._selectedObjectId = objId; + if (_crep != 139) { + displayItemInHand(objId + 400); + _coreVar._selectedObjectId = objId; objId = 0; } } void MortevielleEngine::rechai(int &ch) { - int tmpPlace = g_vm->_coreVar._currPlace; + int tmpPlace = _coreVar._currPlace; - if (g_vm->_coreVar._currPlace == CRYPT) + if (_coreVar._currPlace == CRYPT) tmpPlace = CELLAR; - ch = g_vm->_tabdon[achai + (tmpPlace * 7) + g_vm->_num - 1]; + ch = _tabdon[achai + (tmpPlace * 7) + _num - 1]; } /** @@ -3673,9 +3672,9 @@ void MortevielleEngine::rechai(int &ch) { * @remarks Originally called 't23coul' */ int MortevielleEngine::checkLeaveSecretPassage() { - if (!g_vm->checkInventory(143)) { - g_vm->_crep = 1512; - g_vm->loseGame(); + if (!checkInventory(143)) { + _crep = 1512; + loseGame(); } return CELLAR; @@ -3684,17 +3683,52 @@ int MortevielleEngine::checkLeaveSecretPassage() { void MortevielleEngine::fenat(char ans) { int coul; - g_vm->_mouse.hideMouse(); - if (g_vm->_currGraphicalDevice == MODE_CGA) + _mouse.hideMouse(); + if (_currGraphicalDevice == MODE_CGA) coul = 2; - else if (g_vm->_currGraphicalDevice == MODE_HERCULES) + else if (_currGraphicalDevice == MODE_HERCULES) coul = 1; else coul = 12; - g_vm->_screenSurface.writeCharacter(Common::Point(306, 193), ord(ans), coul); - g_vm->_screenSurface.drawBox(300, 191, 16, 8, 15); - g_vm->_mouse.showMouse(); + _screenSurface.writeCharacter(Common::Point(306, 193), ord(ans), coul); + _screenSurface.drawBox(300, 191, 16, 8, 15); + _mouse.showMouse(); +} + +/** + * Test Keyboard + * @remarks Originally called 'teskbd' + */ +void MortevielleEngine::testKeyboard() { + if (keyPressed()) + testou(); +} + +int MortevielleEngine::testou() { + char ch = getChar(); + + switch (ch) { + case '\23' : + _soundOff = !_soundOff; + break; + case '\26' : + if ((_c_zzz == 1) || (_c_zzz == 2)) { + decodeNumber(&_cfiecBuffer[161 * 16], ((822 * 128) - (161 * 16)) / 64); + ++_c_zzz; + + return 61; + } + break; + case '\33' : + if (keyPressed()) + ch = getChar(); + break; + default: + break; + } + + return ord(ch); } void MortevielleEngine::sauvecr(int y, int dy) { diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 6e55bebd7e..514b929a22 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -38,9 +38,32 @@ #include "mortevielle/saveload.h" #include "mortevielle/sound.h" #include "mortevielle/speech.h" +#include "mortevielle/outtext.h" namespace Mortevielle { +/*---------------------------------------------------------------------------*/ +/*------------------- MEMORY MAP ------------------------*/ +/*---------------------------------------------------------------------------*/ +/* The following is a list of physical addresses in memory currently used + * by the game. + * + * Address + * ------- + * 5000:0 - Music data + * 6000:0 - Decompressed current image + * 7000:0+ - Compressed images + * 7000:2 - 16 words representing palette map + * 7000:4138 - width, height, x/y offset of decoded image + */ + +#define ord(v) ((int) v) +#define chr(v) ((unsigned char) v) +#define lo(v) ((v) & 0xff) +#define hi(v) (((v) >> 8) & 0xff) +#define swap(v) (((lo(v)) << 8) | ((hi(v)) >> 8)) +#define odd(v) (((v) % 2) == 1) + // Debug channels enum { kMortevielleCore = 1 << 0, @@ -73,12 +96,6 @@ enum DataType { kGameStrings = 1 }; -static const int _actionMenu[12] = { OPCODE_NONE, - OPCODE_SHIDE, OPCODE_ATTACH, OPCODE_FORCE, OPCODE_SLEEP, - OPCODE_ENTER, OPCODE_CLOSE, OPCODE_KNOCK, OPCODE_EAT, - OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE -}; - #define SCREEN_WIDTH 640 #define SCREEN_HEIGHT 400 #define SCREEN_ORIG_HEIGHT 200 @@ -101,6 +118,51 @@ const int arep = 1314; const int amzon = 1650; const int arega = 0; +const int kMaxTi = 7975; +const int kMaxTd = 600; + +const int kDescriptionStringIndex = 0; // Unused +const int kInventoryStringIndex = 186; +const int kQuestionStringIndex = 247; +const int kDialogStringIndex = 292; +const int kMenuPlaceStringIndex = 435; +const int kMenuActionStringIndex = 476; +const int kMenuSelfStringIndex = 497; +const int kMenuSayStringIndex = 502; +const int kSecretPassageQuestionStringIndex = 510; // Unusued? +const int kMaxPatt = 20; + +const int OPCODE_NONE = 0; +enum verbs {OPCODE_ATTACH = 0x301, OPCODE_WAIT = 0x302, OPCODE_FORCE = 0x303, OPCODE_SLEEP = 0x304, OPCODE_LISTEN = 0x305, + OPCODE_ENTER = 0x306, OPCODE_CLOSE = 0x307, OPCODE_SEARCH = 0x308, OPCODE_KNOCK = 0x309, OPCODE_SCRATCH = 0x30a, + OPCODE_READ = 0x30b, OPCODE_EAT = 0x30c, OPCODE_PLACE = 0x30d, OPCODE_OPEN = 0x30e, OPCODE_TAKE = 0x30f, + OPCODE_LOOK = 0x310, OPCODE_SMELL = 0x311, OPCODE_SOUND = 0x312, OPCODE_LEAVE = 0x313, OPCODE_LIFT = 0x314, + OPCODE_TURN = 0x315, OPCODE_SHIDE = 0x401, OPCODE_SSEARCH = 0x402, OPCODE_SREAD = 0x403, OPCODE_SPUT = 0x404, + OPCODE_SLOOK = 0x405}; + +static const int _actionMenu[12] = { OPCODE_NONE, + OPCODE_SHIDE, OPCODE_ATTACH, OPCODE_FORCE, OPCODE_SLEEP, + OPCODE_ENTER, OPCODE_CLOSE, OPCODE_KNOCK, OPCODE_EAT, + OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE +}; + +/* +9 "A glance at the forbidden$", +18 "It's already open$", +26 "A photograph$", +27 "The coat of arms$", +*/ +enum places { + OWN_ROOM = 0, GREEN_ROOM = 1, PURPLE_ROOM = 2, TOILETS = 3, DARKBLUE_ROOM = 4, + BLUE_ROOM = 5, RED_ROOM = 6, BATHROOM = 7, GREEN_ROOM2 = 8, ROOM9 = 9, + DINING_ROOM = 10, BUREAU = 11, KITCHEN = 12, ATTIC = 13, CELLAR = 14, + LANDING = 15, CRYPT = 16, SECRET_PASSAGE = 17, ROOM18 = 18, MOUNTAIN = 19, + CHAPEL = 20, MANOR_FRONT = 21, MANOR_BACK = 22, INSIDE_WELL = 23, WELL = 24, + DOOR = 25, ROOM26 = 26, ROOM27 = 27 +}; + +enum GraphicModes { MODE_AMSTRAD1512 = 0, MODE_CGA = 1, MODE_EGA = 2, MODE_HERCULES = 3, MODE_TANDY = 4 }; + struct nhom { byte _id; /* number between 0 and 32 */ byte _hom[4]; @@ -144,15 +206,79 @@ private: const ADGameDescription *_gameDescription; Common::Stack _keypresses; uint32 _lastGameFrame; - bool _mouseClick; Common::Point _mousePos; - bool _inMainGameLoop; // Flag when the main game loop is active Common::StringArray _engineStrings; Common::StringArray _gameStrings; Pattern _patternArr[15]; int _menuOpcode; + bool _mouseClick; + bool _inMainGameLoop; // Flag when the main game loop is active + bool _quitGame; // Quit game flag. Originally called 'arret' + bool _endGame; // End game flag. Originally called 'solu' + bool _loseGame; // Lose game flag. Originally called 'perdu' + bool _txxFileFl; // Flag used to determine if texts are from the original files or from a DAT file + bool _roomPresenceLuc; + bool _roomPresenceIda; + bool _purpleRoomPresenceLeo; + bool _roomPresenceGuy; + bool _roomPresenceEva; + bool _roomPresenceMax; + bool _roomPresenceBob; + bool _roomPresencePat; + bool _toiletsPresenceBobMax; + bool _bathRoomPresenceBobMax; + bool _room9PresenceLeo; + bool _hiddenHero; + bool _heroSearching; + bool _keyPressedEsc; + bool _reloadCFIEC; + bool _col; + bool _syn; + bool _obpart; + bool _anyone; + bool _brt; + + int _textColor; + int _place; + int _manorDistance; + int _currBitIndex; + int _currDay; + int _currHour; + int _currHalfHour; + int _day; + int _hour; + int _minute; + int _mchai; + int _controlMenu; + int _startHour; + int _endHour; + Common::Point _stdPal[91][17]; + t_pcga _cgaPal[91]; + + int _c_zzz; + int _ment; + int _iouv; + int _dobj; + int _num; + int _cs; + int _prebru; + int _t; + int _x; + int _y; + int _jh; + int _mh; + + + Common::String _hintPctMessage; + byte _cfiecBuffer[822 * 128]; + byte _touv[8]; + int _nbrep[9]; + int _nbrepm[9]; + uint16 _inpBuffer[kMaxTi + 1]; + Hint _ntpBuffer[kMaxTd + 1]; + Common::ErrorCode initialise(); Common::ErrorCode loadMortDat(); void readStaticStrings(Common::File &f, int dataSize, DataType dataType); @@ -164,8 +290,6 @@ private: void mainGame(); void playGame(); void handleAction(); - void cinq_huit(char &c, int &idx, byte &pt, bool &the_end); - void copcha(); void displayCGAPattern(int n, Pattern p, nhom *pal); void loadPalette(); void loadTexts(); @@ -177,7 +301,122 @@ private: void palette(int v1); int checkLeoMaxRandomPresence(); void interactNPC(); + void initCaveOrCellar(); + void displayControlMenu(); + void displayItemInHand(int objId); + void resetRoomVariables(int roomId); + int getPresenceStats(int &rand, int cf, int roomId); + void setPresenceFlags(int roomId); + void testKey(bool d); + void exitRoom(); + void getReadDescription(int objId); + void getSearchDescription(int objId); + int checkLeaveSecretPassage(); + void changeGraphicalDevice(int newDevice); + void startDialog(int16 rep); + void endSearch(); + int convertCharacterIndexToBitIndex(int characterIndex); + int convertBitIndexToCharacterIndex(int bitIndex); + void clearScreenType1(); + void clearScreenType2(); + void clearScreenType3(); + void clearScreenType10(); + int getRandomNumber(int minval, int maxval); + void showMoveMenuAlert(); + void showConfigScreen(); + void decodeNumber(byte *pStart, int count); + void resetVariables(); + void music(); + void drawRightFrame(); + void prepareRoom(); + void drawClock(); + void checkManorDistance(); + void gotoManorFront(); + void gotoManorBack(); + void gotoDiningRoom(); + bool checkInventory(int objectId); + void loseGame(); + void floodedInWell(); + void displayDiningRoom(); + void startMusicOrSpeech(int so); + void setTextColor(int col); + void prepareScreenType1(); + void prepareScreenType2(); + void prepareScreenType3(); + void updateHour(int &day, int &hour, int &minute); + void getKnockAnswer(); + int getPresenceStatsGreenRoom(); + int getPresenceStatsPurpleRoom(); + int getPresenceStatsToilets(); + int getPresenceStatsBlueRoom(); + int getPresenceStatsRedRoom(); + int getPresenceStatsDiningRoom(int &hour); + int getPresenceStatsBureau(int &hour); + int getPresenceStatsKitchen(); + int getPresenceStatsAttic(); + int getPresenceStatsLanding(); + int getPresenceStatsChapel(int &hour); + int getPresenceBitIndex(int roomId); + void setPresenceGreenRoom(int roomId); + void setPresencePurpleRoom(); + void setPresenceBlueRoom(); + void setPresenceRedRoom(int roomId); + int setPresenceDiningRoom(int hour); + int setPresenceBureau(int hour); + int setPresenceKitchen(); + int setPresenceLanding(); + int setPresenceChapel(int hour); + void setRandomPresenceGreenRoom(int cf); + void setRandomPresencePurpleRoom(int cf); + void setRandomPresenceBlueRoom(int cf); + void setRandomPresenceRedRoom(int cf); + void setRandomPresenceRoom9(int cf); + void setRandomPresenceDiningRoom(int cf); + void setRandomPresenceBureau(int cf); + void setRandomPresenceKitchen(int cf); + void setRandomPresenceAttic(int cf); + void setRandomPresenceLanding(int cf); + void setRandomPresenceChapel(int cf); + void loadPlaces(); + void resetPresenceInRooms(int roomId); + void showPeoplePresent(int bitIndex); + int selectCharacters(int min, int max); + void fctMove(); + void fctTake(); + void fctInventoryTake(); + void fctLift(); + void fctRead(); + void fctSelfRead(); + void fctLook(); + void fctSelftLook(); + void fctSearch(); + void fctSelfSearch(); + void fctOpen(); + void fctPlace(); + void fctTurn(); + void fctSelfHide(); + void fctAttach(); + void fctClose(); + void fctKnock(); + void fctSelfPut(); + void fctListen(); + void fctEat(); + void fctEnter(); + void fctSleep(); + void fctForce(); + void fctLeave(); + void fctWait(); + void fctSound(); + void fctDiscuss(); + void fctSmell(); + void fctScratch(); + void endGame(); + void askRestart(); + void delay(int amount); + void handleOpcode(); + void cinq_huit(char &c, int &idx, byte &pt, bool &the_end); + void copcha(); void adzon(); void text1(int x, int y, int nb, int m); void modif(int &nu); @@ -188,90 +427,45 @@ private: void ajchai(); void tfleche(); void setCoordinates(int sx); + void ecr2(Common::String text); + void ecr3(Common::String text); + void init_nbrepm(); + void aniof(int ouf, int num); + void dessin(); + void afdes(); + void tlu(int af, int ob); + void affrep(); + void mennor(); + void ajjer(int ob); + void tsuiv(); + void treg(int objId); + void avpoing(int &objId); + void rechai(int &ch); + void fenat(char ans); public: - Common::String _hintPctMessage; Common::Point _prevPos; - - byte _tabdon[4001]; - byte _cfiecBuffer[822 * 128]; - int _fxxBuffer[108]; - byte _touv[8]; int _msg[5]; - int _nbrep[9]; - int _nbrepm[9]; - uint16 _inpBuffer[kMaxTi + 1]; - Hint _ntpBuffer[kMaxTd + 1]; - - bool _roomPresenceLuc; - bool _roomPresenceIda; - bool _purpleRoomPresenceLeo; - bool _roomPresenceGuy; - bool _roomPresenceEva; - bool _roomPresenceMax; - bool _roomPresenceBob; - bool _roomPresencePat; - bool _toiletsPresenceBobMax; - bool _bathRoomPresenceBobMax; - bool _room9PresenceLeo; + int _fxxBuffer[108]; + byte _tabdon[4001]; bool _soundOff; - bool _largestClearScreen; - bool _hiddenHero; - bool _heroSearching; - bool _keyPressedEsc; - bool _reloadCFIEC; - bool _blo; - bool _col; - bool _syn; - bool _obpart; bool _okdes; - bool _anyone; - bool _brt; - - int _textColor; - int _currGraphicalDevice; - int _newGraphicalDevice; - int _place; - int _manorDistance; - int _currBitIndex; - int _savedBitIndex; - int _currDay; - int _currHour; - int _currHalfHour; - int _day; - int _hour; - int _minute; - int _mchai; + bool _largestClearScreen; + int _currGraphicalDevice; + int _newGraphicalDevice; float _addFix; + int _savedBitIndex; + int _numpal; + int _key; SaveStruct _coreVar, _saveStruct; - Common::Point _stdPal[91][17]; - t_pcga _cgaPal[91]; - int _key; - int _controlMenu; - int _startHour; - int _endHour; - int _c_zzz; - int ptr_word; - byte _v_lieu[7][25]; - byte _is; - int _numpal; - int _ment; - int _iouv; - int _caff; int _maff; - int _dobj; - int _num; - int _crep; - int _cs; int _res; - int _prebru; - int _t; - int _x; - int _y; - int _jh; - int _mh; + int _caff; + int _crep; + byte _is; + byte _v_lieu[7][25]; // TODO: Replace the following with proper implementations, or refactor out the code using them byte _mem[65536 * 16]; @@ -285,11 +479,7 @@ public: SpeechManager _speechManager; Menu _menu; MouseHandler _mouse; - - bool _quitGame; // Quit game flag. Originally called 'arret' - bool _endGame; // End game flag. Originally called 'solu' - bool _loseGame; // Lose game flag. Originally called 'perdu' - bool _txxFileFl; // Flag used to determine if texts are from the original files or from a DAT file + TextHandler _text; MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc); ~MortevielleEngine(); @@ -302,165 +492,33 @@ public: uint32 getGameFlags() const; Common::Language getLanguage() const; - bool keyPressed(); int getChar(); + bool keyPressed(); Common::Point getMousePos() const { return _mousePos; } void setMousePos(const Common::Point &pt); bool getMouseClick() const { return _mouseClick; } void setMouseClick(bool v) { _mouseClick = v; } - void delay(int amount); Common::String getEngineString(int idx) const { return _engineStrings[idx]; } Common::String getGameString(int idx) const { return _gameStrings[idx]; } - void handleOpcode(); - void endGame(); - void askRestart(); void gameLoaded(); - - void fctMove(); - void fctTake(); - void fctInventoryTake(); - void fctLift(); - void fctRead(); - void fctSelfRead(); - void fctLook(); - void fctSelftLook(); - void fctSearch(); - void fctSelfSearch(); - void fctOpen(); - void fctPlace(); - void fctTurn(); - void fctSelfHide(); - void fctAttach(); - void fctClose(); - void fctKnock(); - void fctSelfPut(); - void fctListen(); - void fctEat(); - void fctEnter(); - void fctSleep(); - void fctForce(); - void fctLeave(); - void fctWait(); - void fctSound(); - void fctDiscuss(); - void fctSmell(); - void fctScratch(); - - int getPresenceStatsGreenRoom(); - int getPresenceStatsPurpleRoom(); - int getPresenceStatsToilets(); - int getPresenceStatsBlueRoom(); - int getPresenceStatsRedRoom(); - int getPresenceStatsDiningRoom(int &hour); - int getPresenceStatsBureau(int &hour); - int getPresenceStatsKitchen(); - int getPresenceStatsAttic(); - int getPresenceStatsLanding(); - int getPresenceStatsChapel(int &hour); - int getPresenceBitIndex(int roomId); - void setPresenceGreenRoom(int roomId); - void setPresencePurpleRoom(); - void setPresenceBlueRoom(); - void setPresenceRedRoom(int roomId); - int setPresenceDiningRoom(int hour); - int setPresenceBureau(int hour); - int setPresenceKitchen(); - int setPresenceLanding(); - int setPresenceChapel(int hour); - void setRandomPresenceGreenRoom(int cf); - void setRandomPresencePurpleRoom(int cf); - void setRandomPresenceBlueRoom(int cf); - void setRandomPresenceRedRoom(int cf); - void setRandomPresenceRoom9(int cf); - void setRandomPresenceDiningRoom(int cf); - void setRandomPresenceBureau(int cf); - void setRandomPresenceKitchen(int cf); - void setRandomPresenceAttic(int cf); - void setRandomPresenceLanding(int cf); - void setRandomPresenceChapel(int cf); - - void loadPlaces(); void initGame(); - void resetPresenceInRooms(int roomId); - void showPeoplePresent(int bitIndex); - int selectCharacters(int min, int max); void displayAloneText(); - - void checkManorDistance(); - void gotoManorFront(); - void gotoManorBack(); - void gotoDiningRoom(); - bool checkInventory(int objectId); - void loseGame(); - void floodedInWell(); - void displayDiningRoom(); - void startMusicOrSpeech(int so); - void setTextColor(int col); - void prepareScreenType1(); - void prepareScreenType2(); - void prepareScreenType3(); - void updateHour(int &day, int &hour, int &minute); - void getKnockAnswer(); + void draw(int ad, int x, int y); void charToHour(); void hourToChar(); - - void changeGraphicalDevice(int newDevice); - void startDialog(int16 rep); - void endSearch(); - int convertCharacterIndexToBitIndex(int characterIndex); - int convertBitIndexToCharacterIndex(int bitIndex); - void clearScreenType1(); - void clearScreenType2(); - void clearScreenType3(); - void clearScreenType10(); - int getRandomNumber(int minval, int maxval); - void showMoveMenuAlert(); - void showConfigScreen(); - void decodeNumber(byte *pStart, int count); Common::String getString(int num); - void resetVariables(); void setPal(int n); - void music(); - void draw(int ad, int x, int y); - void drawRightFrame(); - void prepareRoom(); - void drawClock(); Common::String copy(const Common::String &s, int idx, size_t size); - void hirs(); - void initCaveOrCellar(); - void displayControlMenu(); - void displayItemInHand(int objId); - void displayEmptyHand(); - void resetRoomVariables(int roomId); - int getPresenceStats(int &rand, int cf, int roomId); - void setPresenceFlags(int roomId); + void testKeyboard(); int getPresence(int roomId); - void testKey(bool d); - void exitRoom(); - void getReadDescription(int objId); - void getSearchDescription(int objId); - int checkLeaveSecretPassage(); + void displayEmptyHand(); - void pictout(int seg, int dep, int x, int y); - int animof(int ouf, int num); + void hirs(); + int testou(); void repon(int f, int m); - void ecr2(Common::String text); - void ecr3(Common::String text); - void init_nbrepm(); - void aniof(int ouf, int num); - void dessin(); - void afdes(); - void tlu(int af, int ob); - void affrep(); - void mennor(); - void ajjer(int ob); - void tsuiv(); - void treg(int objId); - void avpoing(int &objId); - void rechai(int &ch); - void fenat(char ans); - + int animof(int ouf, int num); + void pictout(int seg, int dep, int x, int y); void sauvecr(int y, int dy); void charecr(int y, int dy); diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index e18090e1dd..ff50e8b882 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -69,7 +69,6 @@ void MouseHandler::hideMouse() { case MODE_AMSTRAD1512: { bool imp = odd(_pos.y); for (int i = 0; i <= 3; ++i) { - _port[0x3dd] = 1 << i; int k = 0; j = 0; do { @@ -87,12 +86,8 @@ void MouseHandler::hideMouse() { break; } case MODE_EGA: { - _port[0x3c4] = 2; - _port[0x3ce] = 8; - _port[0x3cf] = 255; int i = 0; do { - _port[0x3c5] = 1 << i; int k = 0; j = 0; do { @@ -167,7 +162,6 @@ void MouseHandler::showMouse() { for (i = 0; i <= 3; ++i) { j = 0; imp = odd(_pos.y); - _port[0x3de] = i; k = 0; do { if (imp) { @@ -184,10 +178,8 @@ void MouseHandler::showMouse() { break; } case MODE_EGA: - _port[0x3ce] = 4; l = 0; do { - _port[0x3cf] = l; k = 0; j = 0; do { diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index b570f8913c..efbb52aa49 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -36,8 +36,6 @@ class MouseHandler { private: int s_s[12][6]; int _counter; - // TODO: Replace the following with proper implementations, or refactor out the code using them - int _port[0xfff]; public: Common::Point _pos; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 35d42251b1..f53a7b2804 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -35,10 +35,11 @@ namespace Mortevielle { -typedef unsigned char uchar; -const byte _rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; - -static int l_motsuiv(int p, const char *ch, int &tab) { +/** + * Next word + * @remarks Originally called 'l_motsuiv' + */ +int TextHandler::nextWord(int p, const char *ch, int &tab) { int c = p; while ((ch[p] != ' ') && (ch[p] != '$') && (ch[p] != '@')) @@ -51,7 +52,7 @@ static int l_motsuiv(int p, const char *ch, int &tab) { * Engine function - Display Text * @remarks Originally called 'afftex' */ -void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ) { +void TextHandler::displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ) { int tab; Common::String s; int i, j; @@ -87,7 +88,7 @@ void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ) s += ' '; xc += tab; ++p; - if (l_motsuiv(p, inputStr.c_str(), tab) + xc > xf) { + if (nextWord(p, inputStr.c_str(), tab) + xc > xf) { g_vm->_screenSurface.drawString(s, typ); s = ""; xc = x; @@ -123,7 +124,11 @@ void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ) } } -void chardes(Common::String filename, int32 skipSize, int length) { +/** + * Load DES file + * @remarks Originally called 'chardes' + */ +void TextHandler::loadDesFile(Common::String filename, int32 skipSize, int length) { Common::File f; if (!f.open(filename)) error("Missing file %s", filename.c_str()); @@ -150,7 +155,11 @@ void chardes(Common::String filename, int32 skipSize, int length) { g_vm->_mem[0x7000 * 16 + i - remainingSkipSize] = g_vm->_mem[0x6000 * 16 + i]; } -void charani(Common::String filename, int32 skipSize, int length) { +/** + * Load ANI file + * @remarks Originally called 'charani' + */ +void TextHandler::loadAniFile(Common::String filename, int32 skipSize, int length) { Common::File f; if (!f.open(filename)) error("Missing file - %s", filename.c_str()); @@ -177,7 +186,9 @@ void charani(Common::String filename, int32 skipSize, int length) { g_vm->_mem[kAdrAni * 16 + i - remainingSkipSize] = g_vm->_mem[0x6000 * 16 + i]; } -void taffich() { +void TextHandler::taffich() { + static const byte _rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; + byte tran1[] = { 121, 121, 138, 139, 120 }; byte tran2[] = { 150, 150, 152, 152, 100, 110, 159, 100, 100 }; @@ -295,7 +306,7 @@ void taffich() { g_vm->_maff = a; npal = a + 37; } - chardes(filename, lgt, handle); + loadDesFile(filename, lgt, handle); if (g_vm->_currGraphicalDevice == MODE_HERCULES) { for (int i = 0; i <= 15; ++i) { int palh = READ_LE_UINT16(&g_vm->_mem[(0x7000 * 16) + ((i + 1) << 1)]); @@ -330,7 +341,7 @@ void taffich() { filename = "AZZ.mor"; handle = 1260; } - charani(filename, lgt, handle); + loadAniFile(filename, lgt, handle); } g_vm->_mouse.showMouse(); if ((a < 27) && ((g_vm->_maff < 27) || (g_vm->_coreVar._currPlace == LANDING)) && (g_vm->_msg[4] != OPCODE_ENTER)) { diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index d27ca3edc9..3664fd6fa5 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -35,10 +35,15 @@ namespace Mortevielle { const int kAdrAni = 0x7314; -extern void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ); -extern void chardes(Common::String filename, int32 passe, int long_); -extern void charani(Common::String filename, int32 skipSize, int length); -extern void taffich(); +class TextHandler { +private: + int nextWord(int p, const char *ch, int &tab); +public: + void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ); + void loadDesFile(Common::String filename, int32 passe, int long_); + void loadAniFile(Common::String filename, int32 skipSize, int length); + void taffich(); +}; } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 3086f9eb20..0e12c5f953 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -33,76 +33,6 @@ namespace Mortevielle { -/*---------------------------------------------------------------------------*/ -/*------------------- MEMORY MAP ------------------------*/ -/*---------------------------------------------------------------------------*/ -/* The following is a list of physical addresses in memory currently used - * by the game. - * - * Address - * ------- - * 5000:0 - Music data - * 6000:0 - Decompressed current image - * 7000:0+ - Compressed images - * 7000:2 - 16 words representing palette map - * 7000:4138 - width, height, x/y offset of decoded image - */ - - -/*---------------------------------------------------------------------------*/ -/*------------------------- DEFINES ----------------------------------*/ -/*---------------------------------------------------------------------------*/ - -#define ord(v) ((int) v) -#define chr(v) ((unsigned char) v) -#define lo(v) ((v) & 0xff) -#define hi(v) (((v) >> 8) & 0xff) -#define swap(v) (((lo(v)) << 8) | ((hi(v)) >> 8)) -#define odd(v) (((v) % 2) == 1) - -/*---------------------------------------------------------------------------*/ -/*------------------------- CONSTANTS ----------------------------------*/ -/*---------------------------------------------------------------------------*/ - -const int kMaxTi = 7975; -const int kMaxTd = 600; - -const int kDescriptionStringIndex = 0; // Unused -const int kInventoryStringIndex = 186; -const int kQuestionStringIndex = 247; -const int kDialogStringIndex = 292; -const int kMenuPlaceStringIndex = 435; -const int kMenuActionStringIndex = 476; -const int kMenuSelfStringIndex = 497; -const int kMenuSayStringIndex = 502; -const int kSecretPassageQuestionStringIndex = 510; // Unusued? -const int kMaxPatt = 20; - -const int OPCODE_NONE = 0; -enum verbs {OPCODE_ATTACH = 0x301, OPCODE_WAIT = 0x302, OPCODE_FORCE = 0x303, OPCODE_SLEEP = 0x304, OPCODE_LISTEN = 0x305, - OPCODE_ENTER = 0x306, OPCODE_CLOSE = 0x307, OPCODE_SEARCH = 0x308, OPCODE_KNOCK = 0x309, OPCODE_SCRATCH = 0x30a, - OPCODE_READ = 0x30b, OPCODE_EAT = 0x30c, OPCODE_PLACE = 0x30d, OPCODE_OPEN = 0x30e, OPCODE_TAKE = 0x30f, - OPCODE_LOOK = 0x310, OPCODE_SMELL = 0x311, OPCODE_SOUND = 0x312, OPCODE_LEAVE = 0x313, OPCODE_LIFT = 0x314, - OPCODE_TURN = 0x315, OPCODE_SHIDE = 0x401, OPCODE_SSEARCH = 0x402, OPCODE_SREAD = 0x403, OPCODE_SPUT = 0x404, - OPCODE_SLOOK = 0x405}; - -/* -9 "A glance at the forbidden$", -18 "It's already open$", -26 "A photograph$", -27 "The coat of arms$", -*/ -enum places { - OWN_ROOM = 0, GREEN_ROOM = 1, PURPLE_ROOM = 2, TOILETS = 3, DARKBLUE_ROOM = 4, - BLUE_ROOM = 5, RED_ROOM = 6, BATHROOM = 7, GREEN_ROOM2 = 8, ROOM9 = 9, - DINING_ROOM = 10, BUREAU = 11, KITCHEN = 12, ATTIC = 13, CELLAR = 14, - LANDING = 15, CRYPT = 16, SECRET_PASSAGE = 17, ROOM18 = 18, MOUNTAIN = 19, - CHAPEL = 20, MANOR_FRONT = 21, MANOR_BACK = 22, INSIDE_WELL = 23, WELL = 24, - DOOR = 25, ROOM26 = 26, ROOM27 = 27 -}; - -enum GraphicModes { MODE_AMSTRAD1512 = 0, MODE_CGA = 1, MODE_EGA = 2, MODE_HERCULES = 3, MODE_TANDY = 4 }; - struct Rect { int _x1, _x2, _y1, _y2; bool _enabled; -- cgit v1.2.3 From 26a38fb1e67a82b59b21b038c08dc3c5169eaa78 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 24 Mar 2012 22:48:47 +0100 Subject: MORTEVIELLE: rename some constants --- engines/mortevielle/actions.cpp | 10 +++++----- engines/mortevielle/mortevielle.cpp | 4 ++-- engines/mortevielle/mortevielle.h | 14 +++++++------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 1a6614953d..011728870c 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -349,7 +349,7 @@ void MortevielleEngine::fctLift() { tmpPlace = 14; else if (_coreVar._currPlace == MOUNTAIN) tmpPlace = 15; - _crep = _tabdon[asoul + (tmpPlace << 3) + (_num - 1)]; + _crep = _tabdon[kAsoul + (tmpPlace << 3) + (_num - 1)]; if (_crep == 255) _crep = 997; } @@ -443,7 +443,7 @@ void MortevielleEngine::fctLook() { cx -= 4; if (_coreVar._currPlace == ROOM26) cx = 21; - _crep = _tabdon[arega + (cx * 7) + _num - 1]; + _crep = _tabdon[kArega + (cx * 7) + _num - 1]; if ((_coreVar._currPlace == ATTIC) && (_num == 8)) _crep = 126; if (_coreVar._currPlace == MOUNTAIN) @@ -631,7 +631,7 @@ void MortevielleEngine::fctOpen() { tmpPlace = _coreVar._currPlace; if (_coreVar._currPlace == CRYPT) tmpPlace = CELLAR; - _crep = _tabdon[aouvr + (tmpPlace * 7) + _num - 1]; + _crep = _tabdon[kAouvr + (tmpPlace * 7) + _num - 1]; if (_crep == 254) _crep = 999; } else @@ -1474,8 +1474,8 @@ void MortevielleEngine::fctDiscuss() { _coreVar._faithScore += (3 * (_coreVar._faithScore / 10)); } } else if (_nbrep[_caff - 69] < _nbrepm[_caff - 69]) { - suj = _tabdon[arep + (ix << 3) + (_caff - 70)]; - _coreVar._faithScore += _tabdon[arcf + ix]; + suj = _tabdon[kArep + (ix << 3) + (_caff - 70)]; + _coreVar._faithScore += _tabdon[kArcf + ix]; ++_nbrep[_caff - 69]; } else { _coreVar._faithScore += 3; diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index fec14739c3..2c3313ea45 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -3582,7 +3582,7 @@ void MortevielleEngine::setCoordinates(int sx) { _num = 0; _crep = 999; int a = 0; - int atdon = amzon + 3; + int atdon = kAmzon + 3; int cy = 0; while (cy < _caff) { a += _tabdon[atdon]; @@ -3664,7 +3664,7 @@ void MortevielleEngine::rechai(int &ch) { if (_coreVar._currPlace == CRYPT) tmpPlace = CELLAR; - ch = _tabdon[achai + (tmpPlace * 7) + _num - 1]; + ch = _tabdon[kAchai + (tmpPlace * 7) + _num - 1]; } /** diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 514b929a22..98d4b042bb 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -110,13 +110,13 @@ const int kAcha = 492; const int kAdrDes = 0x7000; const int kFleche = 1758; -const int asoul = 154; -const int aouvr = 282; -const int achai = 387; -const int arcf = 1272; -const int arep = 1314; -const int amzon = 1650; -const int arega = 0; +const int kAsoul = 154; +const int kAouvr = 282; +const int kAchai = 387; +const int kArcf = 1272; +const int kArep = 1314; +const int kAmzon = 1650; +const int kArega = 0; const int kMaxTi = 7975; const int kMaxTd = 600; -- cgit v1.2.3 From 67c95912f69ff24595fe8a07e1ce5e4d9befffe3 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 26 Mar 2012 23:55:00 +0200 Subject: MORTEVIELLE: rename Rect --- engines/mortevielle/dialogs.cpp | 12 ++++++------ engines/mortevielle/mouse.cpp | 4 ++-- engines/mortevielle/mouse.h | 2 +- engines/mortevielle/var_mor.h | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index f04233d908..395f6b6c9c 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -289,7 +289,7 @@ bool KnowledgeCheck::show() { int rep; int firstOption, lastOption; char key; - Rect coor[kMaxRect]; + Hotspot coor[kMaxRect]; Common::String choiceArray[15]; int currChoice, prevChoice; @@ -329,10 +329,10 @@ bool KnowledgeCheck::show() { } for (int j = 1; j <= lastOption - firstOption + 1; ++j) { - coor[j]._x1 = 45 * g_vm->_res; - coor[j]._x2 = (maxLength * 3 + 55) * g_vm->_res; - coor[j]._y1 = 27 + j * 8; - coor[j]._y2 = 34 + j * 8; + coor[j]._rect.left = 45 * g_vm->_res; + coor[j]._rect.right = (maxLength * 3 + 55) * g_vm->_res; + coor[j]._rect.top = 27 + j * 8; + coor[j]._rect.bottom = 34 + j * 8; coor[j]._enabled = true; while ((int)choiceArray[j].size() < maxLength) { @@ -356,7 +356,7 @@ bool KnowledgeCheck::show() { CHECK_QUIT0; currChoice = 1; - while (coor[currChoice]._enabled && !g_vm->_mouse.isMouseIn(coor[currChoice])) + while (coor[currChoice]._enabled && !g_vm->_mouse.isMouseIn(coor[currChoice]._rect)) ++currChoice; if (coor[currChoice]._enabled) { if ((prevChoice != 0) && (prevChoice != currChoice)) { diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index ff50e8b882..f914860820 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -408,11 +408,11 @@ void MouseHandler::moveMouse(bool &funct, char &key) { * Mouse function : Is mouse in a given rect? * @remarks Originally called 'dans_rect' */ -bool MouseHandler::isMouseIn(Rect r) { +bool MouseHandler::isMouseIn(Common::Rect r) { int x, y, c; getMousePosition(x, y, c); - if ((x > r._x1) && (x < r._x2) && (y > r._y1) && (y < r._y2)) + if ((x > r.left) && (x < r.right) && (y > r.top) && (y < r.bottom)) return true; return false; diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index efbb52aa49..b93ce6136d 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -45,7 +45,7 @@ public: void setMousePosition(Common::Point newPos); void getMousePosition(int &x, int &y, int &c); void moveMouse(bool &funct, char &key); - bool isMouseIn(Rect r); + bool isMouseIn(Common::Rect r); }; } // End of namespace Mortevielle diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h index 0e12c5f953..bddf85cd90 100644 --- a/engines/mortevielle/var_mor.h +++ b/engines/mortevielle/var_mor.h @@ -33,8 +33,8 @@ namespace Mortevielle { -struct Rect { - int _x1, _x2, _y1, _y2; +struct Hotspot { + Common::Rect _rect; bool _enabled; }; -- cgit v1.2.3 From a1c268e08296c08e147a537c1bb4bba23794d891 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 27 Mar 2012 22:44:43 +0200 Subject: MORTEVIELLE: Fix regression in previous commit --- engines/mortevielle/dialogs.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 395f6b6c9c..b90f165b6c 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -284,12 +284,19 @@ bool KnowledgeCheck::show() { const int textIndexArr[10] = {511, 516, 524, 531, 545, 552, 559, 563, 570, 576}; const int correctAnswerArr[10] = {4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }; + char key; int optionPosY; int maxLength; int rep; int firstOption, lastOption; - char key; - Hotspot coor[kMaxRect]; + + Hotspot coor[kMaxRect+1]; + + for (int i = 0; i < kMaxRect; ++i) { + coor[i]._rect = Common::Rect(); + coor[i]._enabled = false; + } + Common::String choiceArray[15]; int currChoice, prevChoice; @@ -329,10 +336,7 @@ bool KnowledgeCheck::show() { } for (int j = 1; j <= lastOption - firstOption + 1; ++j) { - coor[j]._rect.left = 45 * g_vm->_res; - coor[j]._rect.right = (maxLength * 3 + 55) * g_vm->_res; - coor[j]._rect.top = 27 + j * 8; - coor[j]._rect.bottom = 34 + j * 8; + coor[j]._rect = Common::Rect(45 * g_vm->_res, 27 + j * 8, (maxLength * 3 + 55) * g_vm->_res, 34 + j * 8); coor[j]._enabled = true; while ((int)choiceArray[j].size() < maxLength) { -- cgit v1.2.3 From cdea613e51db56477ab213a3a0e87c3773348d08 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 27 Mar 2012 22:54:50 +0200 Subject: MORTEVIELLE: Remove trailing spaces --- engines/mortevielle/actions.cpp | 18 ++++++------ engines/mortevielle/detection.cpp | 2 +- engines/mortevielle/dialogs.cpp | 4 +-- engines/mortevielle/dialogs.h | 2 +- engines/mortevielle/graphics.cpp | 50 ++++++++++++++++---------------- engines/mortevielle/menu.cpp | 12 ++++---- engines/mortevielle/mortevielle.cpp | 58 ++++++++++++++++++------------------- engines/mortevielle/mortevielle.h | 18 ++++++------ engines/mortevielle/mouse.cpp | 4 +-- engines/mortevielle/outtext.cpp | 4 +-- engines/mortevielle/saveload.cpp | 20 ++++++------- engines/mortevielle/sound.cpp | 2 +- engines/mortevielle/sound.h | 4 +-- engines/mortevielle/speech.cpp | 8 ++--- 14 files changed, 103 insertions(+), 103 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 011728870c..48d73a20fd 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -70,10 +70,10 @@ void MortevielleEngine::fctMove() { _coreVar._currPlace = ATTIC; _menu.setDestinationText(ATTIC); } - + if (_num != 6) _coreVar._currPlace = ROOM26; - + if ((_num > 1) && (_num < 6)) _ment = _num - 1; else if (_num > 7) @@ -116,10 +116,10 @@ void MortevielleEngine::fctMove() { menuChoice = 6; else if (((_coreVar._currPlace == LANDING) || (_coreVar._currPlace == ROOM26)) && (menuChoice == 4)) menuChoice = 6; - + if ((_coreVar._currPlace > MOUNTAIN) && (_coreVar._currPlace != ROOM26)) menuChoice += 10; - + if ((_coreVar._currPlace == CHAPEL) && (menuChoice == 13)) menuChoice = 16; else if (_coreVar._currPlace == MANOR_FRONT) { @@ -710,7 +710,7 @@ void MortevielleEngine::fctPlace() { drawClock(); if (_currBitIndex != 0) showPeoplePresent(_currBitIndex); - else + else displayAloneText(); _menu.displayMenu(); @@ -1109,7 +1109,7 @@ void MortevielleEngine::fctEat() { else h = 1; } - + _jh += h; _crep = 135; prepareRoom(); @@ -1145,7 +1145,7 @@ void MortevielleEngine::fctEnter() { _x = (getRandomNumber(0, 10)) - 5; _speechManager.startSpeech(7, _x, 1); aniof(1, 1); - + _x = convertBitIndexToCharacterIndex(z); ++_coreVar._faithScore; _coreVar._currPlace = LANDING; @@ -1166,7 +1166,7 @@ void MortevielleEngine::fctEnter() { _x = (getRandomNumber(0, 10)) - 5; _speechManager.startSpeech(7, _x, 1); aniof(1, 1); - + _coreVar._currPlace = _ment; affrep(); resetRoomVariables(_coreVar._currPlace); @@ -1590,7 +1590,7 @@ void MortevielleEngine::endGame() { repon(2, 35); startMusicOrSpeech(0); testKey(false); - // A wait message was displayed. + // A wait message was displayed. // testKey (aka tkey1) was called before and after. // Most likely the double call is useless, thus removed // diff --git a/engines/mortevielle/detection.cpp b/engines/mortevielle/detection.cpp index 5997b4c349..994563d497 100644 --- a/engines/mortevielle/detection.cpp +++ b/engines/mortevielle/detection.cpp @@ -41,7 +41,7 @@ static const PlainGameDescriptor MortevielleGame[] = { class MortevielleMetaEngine : public AdvancedMetaEngine { public: - MortevielleMetaEngine() : AdvancedMetaEngine(Mortevielle::MortevielleGameDescriptions, sizeof(ADGameDescription), + MortevielleMetaEngine() : AdvancedMetaEngine(Mortevielle::MortevielleGameDescriptions, sizeof(ADGameDescription), MortevielleGame) { _md5Bytes = 512; _singleid = "mortevielle"; diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index b90f165b6c..b53a9d5e80 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -418,7 +418,7 @@ void f3f8::draw() { } /** - * Alert function - Loop until F8 is pressed, update + * Alert function - Loop until F8 is pressed, update * Graphical Device if modified * @remarks Originally called 'diver' */ @@ -462,7 +462,7 @@ void f3f8::aff50(bool drawAni50Fl) { ani50(); else g_vm->repon(2, kDialogStringIndex + 142); - + // Draw the f3/f8 dialog draw(); } diff --git a/engines/mortevielle/dialogs.h b/engines/mortevielle/dialogs.h index 40109c894b..db13c09b54 100644 --- a/engines/mortevielle/dialogs.h +++ b/engines/mortevielle/dialogs.h @@ -58,6 +58,6 @@ public: static void aff50(bool drawAni50Fl); static void ani50(); }; - + } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 2b6607513b..e290f60e69 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -31,8 +31,8 @@ namespace Mortevielle { /*-------------------------------------------------------------------------* - * Palette Manager - * + * Palette Manager + * *-------------------------------------------------------------------------*/ /** @@ -71,7 +71,7 @@ void PaletteManager::setDefaultPalette() { /*-------------------------------------------------------------------------* * Image decoding - * + * * The code in this section is responsible for decoding image resources. * Images are broken down into rectangular sections, which can use one * of 18 different encoding methods. @@ -138,7 +138,7 @@ void GfxSurface::decode(const byte *pSrc) { _xSize = READ_BE_UINT16(pSrc + 2) + 1; _ySize = READ_BE_UINT16(pSrc + 4) + 1; majTtxTty(); - + pSrc += 6; pDest = &outputBuffer[0]; @@ -159,7 +159,7 @@ void GfxSurface::decode(const byte *pSrc) { const byte *pSrcSaved = pSrc; bool savedNibbleFlag = _nibbleFlag; int savedLookupIndex = _lookupIndex; - + do { pSrc = pSrcSaved; _nibbleFlag = savedNibbleFlag; @@ -237,7 +237,7 @@ void GfxSurface::decode(const byte *pSrc) { pDest = &outputBuffer[_yp * DEFAULT_WIDTH + _xp]; pSrcStart = pSrc; INCR_TAIX; - + for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDest += DEFAULT_WIDTH) { byte *pDestLine = pDest; for (int xCtr = 0; xCtr < _xSize; ++xCtr) { @@ -490,7 +490,7 @@ void GfxSurface::horizontal(const byte *&pSrc, byte *&pDest, const byte *&pLooku break; continue; } - + bool continueFlag = false; do { for (int xIndex = 0; xIndex < _xSize; ++xIndex) { @@ -599,7 +599,7 @@ void GfxSurface::vertical(const byte *&pSrc, byte *&pDest, const byte *&pLookup) pDest += _thickness; drawIndex += _thickness; } - + while (_xSize < (drawIndex + _thickness)) { if (--_thickness == 0) return; @@ -622,7 +622,7 @@ void GfxSurface::vertical(const byte *&pSrc, byte *&pDest, const byte *&pLookup) for (int xCtr = 0; xCtr < _thickness; ++xCtr) *--pDest = csuiv(pSrc, pLookup); } - } + } if ((_ySize % 2) == 0) { pDest += _thickness; drawIndex += _thickness; @@ -743,7 +743,7 @@ void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { NIH(); increments(pDest); } - + NIH(); NIV(); increments(pDest); @@ -780,7 +780,7 @@ void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { NIH(); increments(pDest); } - + NIH(); NIV(); increments(pDest); @@ -791,13 +791,13 @@ void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { break; } else { pDest += _xInc; - + if (--drawIndex == 0) { TF2(pSrc, pDest, pLookup, diagIndex); NIH(); break; } - } + } NIH(); } @@ -885,7 +885,7 @@ void ScreenSurface::updateScreen() { // Iterate through copying dirty areas to the screen for (Common::List::iterator i = _dirtyRects.begin(); i != _dirtyRects.end(); ++i) { Common::Rect r = *i; - g_system->copyRectToScreen((const byte *)getBasePtr(r.left, r.top), pitch, + g_system->copyRectToScreen((const byte *)getBasePtr(r.left, r.top), pitch, r.left, r.top, r.width(), r.height()); } _dirtyRects.clear(); @@ -896,7 +896,7 @@ void ScreenSurface::updateScreen() { /** * Draws a decoded picture on the screen - * @remarks - Because the ScummVM surface is using a double height 640x400 surface to + * @remarks - Because the ScummVM surface is using a double height 640x400 surface to * simulate the original 640x400 surface, all Y values have to be doubled. * - Image resources are stored at 320x200, so when drawn onto the screen a single pixel * from the source image is drawn using the two pixels at the given index in the palette map @@ -909,13 +909,13 @@ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { y += surface._offset.y; // Lock the affected area of the surface to write to - Graphics::Surface destSurface = lockArea(Common::Rect(x * 2, y * 2, + Graphics::Surface destSurface = lockArea(Common::Rect(x * 2, y * 2, (x + surface.w) * 2, (y + surface.h) * 2)); // Get a lookup for the palette mapping const byte *paletteMap = &g_vm->_mem[0x7000 * 16 + 2]; - // Loop through writing + // Loop through writing for (int yp = 0; yp < surface.h; ++yp) { if (((y + yp) < 0) || ((y + yp) >= 200)) continue; @@ -948,7 +948,7 @@ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { void ScreenSurface::copyFrom(Graphics::Surface &src, int x, int y) { Graphics::Surface destSurface = lockArea(Common::Rect(x, y, x + src.w, y + src.h)); - // Loop through writing + // Loop through writing for (int yp = 0; yp < src.h; ++yp) { if (((y + yp) < 0) || ((y + yp) >= SCREEN_HEIGHT)) continue; @@ -961,11 +961,11 @@ void ScreenSurface::copyFrom(Graphics::Surface &src, int x, int y) { /** * Draws a character at the specified co-ordinates - * @remarks Because the ScummVM surface is using a double height 640x400 surface to + * @remarks Because the ScummVM surface is using a double height 640x400 surface to * simulate the original 640x400 surface, all Y values have to be doubled */ void ScreenSurface::writeCharacter(const Common::Point &pt, unsigned char ch, int palIndex) { - Graphics::Surface destSurface = lockArea(Common::Rect(pt.x, pt.y * 2, + Graphics::Surface destSurface = lockArea(Common::Rect(pt.x, pt.y * 2, pt.x + FONT_WIDTH, (pt.y + FONT_HEIGHT) * 2)); // Get the start of the character to use @@ -988,7 +988,7 @@ void ScreenSurface::writeCharacter(const Common::Point &pt, unsigned char ch, in /** * Draws a box at the specified position and size - * @remarks Because the ScummVM surface is using a double height 640x400 surface to + * @remarks Because the ScummVM surface is using a double height 640x400 surface to * simulate the original 640x400 surface, all Y values have to be doubled */ void ScreenSurface::drawBox(int x, int y, int dx, int dy, int col) { @@ -1011,13 +1011,13 @@ void ScreenSurface::drawBox(int x, int y, int dx, int dy, int col) { /** * Fills an area with the specified colour - * @remarks Because the ScummVM surface is using a double height 640x400 surface to + * @remarks Because the ScummVM surface is using a double height 640x400 surface to * simulate the original 640x400 surface, all Y values have to be doubled */ void ScreenSurface::fillRect(int colour, const Common::Rect &bounds) { Graphics::Surface destSurface = lockArea(Common::Rect(bounds.left, bounds.top * 2, bounds.right, bounds.bottom * 2)); - + // Fill the area destSurface.fillRect(Common::Rect(0, 0, destSurface.w, destSurface.h), colour); } @@ -1032,7 +1032,7 @@ void ScreenSurface::clearScreen() { /** * Sets a single pixel at the specified co-ordinates - * @remarks Because the ScummVM surface is using a double height 640x400 surface to + * @remarks Because the ScummVM surface is using a double height 640x400 surface to * simulate the original 640x400 surface, all Y values have to be doubled */ void ScreenSurface::setPixel(const Common::Point &pt, int palIndex) { @@ -1115,7 +1115,7 @@ void ScreenSurface::drawLine(int x, int y, int xx, int yy, int coul) { yr = y; xro = xx; yro = yy; - + if (abs(y - yy) > abs(x - xx)) { a = (float)((x - xx)) / (y - yy); b = (yr * xro - yro * xr) / (y - yy); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index d7ece8a7eb..4dcb034f76 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -177,7 +177,7 @@ void Menu::displayMenu() { int pt, x, y, color, msk, num_letr; g_vm->_mouse.hideMouse(); - + g_vm->_screenSurface.fillRect(7, Common::Rect(0, 0, 639, 10)); col = 28 * g_vm->_res; if (g_vm->_currGraphicalDevice == MODE_CGA) @@ -434,9 +434,9 @@ void Menu::mdn() { return; else g_vm->_prevPos = curPos; - - bool tes = (curPos.y < 11) - && ((curPos.x >= (28 * g_vm->_res) && curPos.x <= (28 * g_vm->_res + 24)) + + bool tes = (curPos.y < 11) + && ((curPos.x >= (28 * g_vm->_res) && curPos.x <= (28 * g_vm->_res + 24)) || (curPos.x >= (76 * g_vm->_res) && curPos.x <= (76 * g_vm->_res + 24)) || ((curPos.x > 124 * g_vm->_res) && (curPos.x < 124 * g_vm->_res + 24)) || ((curPos.x > 172 * g_vm->_res) && (curPos.x < 172 * g_vm->_res + 24)) @@ -481,7 +481,7 @@ void Menu::mdn() { menuDown(_msg3); g_vm->setMouseClick(false); - } else { + } else { // A menu was clicked on _menuSelected = (_multiTitle) && (_msg4 != OPCODE_NONE); menuUp(_msg3); @@ -551,7 +551,7 @@ void Menu::initMenu() { * @remarks Originally called 'mfoudi' */ void Menu::setSearchMenu() { - for (int i = 1; i <= 7; ++i) + for (int i = 1; i <= 7; ++i) disableMenuItem(_moveMenu[i]); for (int i = 1; i <= 11; ++i) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 2c3313ea45..af4db82bae 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -86,7 +86,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _toiletsPresenceBobMax = false; _bathRoomPresenceBobMax = false; _room9PresenceLeo = false; - + _soundOff = false; _largestClearScreen = false; _hiddenHero = false; @@ -144,7 +144,7 @@ bool MortevielleEngine::canSaveGameStateCurrently() { * Load in a savegame at the specified slot number */ Common::Error MortevielleEngine::loadGameState(int slot) { - return _savegameManager.loadGame(slot); + return _savegameManager.loadGame(slot); } /** @@ -153,7 +153,7 @@ Common::Error MortevielleEngine::loadGameState(int slot) { Common::Error MortevielleEngine::saveGameState(int slot, const Common::String &desc) { if (slot == 0) return Common::kWritingFailed; - + return _savegameManager.saveGame(slot, desc); } @@ -296,7 +296,7 @@ void MortevielleEngine::readStaticStrings(Common::File &f, int dataSize, DataTyp char ch; while ((ch = (char)f.readByte()) != '\0') s += ch; - + if (dataType == kStaticStrings) _engineStrings.push_back(s); else if (dataType == kGameStrings) @@ -319,7 +319,7 @@ bool MortevielleEngine::keyPressed() { // Check if it's time to draw the next frame if (g_system->getMillis() > (_lastGameFrame + GAME_FRAME_DELAY)) { _lastGameFrame = g_system->getMillis(); - + _screenSurface.updateScreen(); } @@ -327,7 +327,7 @@ bool MortevielleEngine::keyPressed() { g_system->delayMillis(5); // Return if there are any pending key presses - return !_keypresses.empty(); + return !_keypresses.empty(); } /** @@ -387,7 +387,7 @@ void MortevielleEngine::addKeypress(Common::Event &evt) { // Handle alphabetic keys if ((evt.kbd.keycode >= Common::KEYCODE_a) && (evt.kbd.keycode <= Common::KEYCODE_z)) { - if (evt.kbd.hasFlags(Common::KBD_CTRL)) + if (evt.kbd.hasFlags(Common::KBD_CTRL)) ch = evt.kbd.keycode - Common::KEYCODE_a + 1; else ch = evt.kbd.keycode - Common::KEYCODE_a + 'A'; @@ -560,7 +560,7 @@ void MortevielleEngine::mainGame() { if (_reloadCFIEC) loadCFIEC(); - for (_crep = 1; _crep <= _c_zzz; ++_crep) + for (_crep = 1; _crep <= _c_zzz; ++_crep) decodeNumber(&_cfiecBuffer[161 * 16], ((822 * 128) - (161 * 16)) / 64); loadBRUIT5(); @@ -719,7 +719,7 @@ void MortevielleEngine::loadPlaces() { for (int i = 0; i < 7; ++i) { for (int j = 0; j < 25; ++j) - _v_lieu[i][j] = f.readByte(); + _v_lieu[i][j] = f.readByte(); } f.close(); @@ -846,7 +846,7 @@ void MortevielleEngine::resetPresenceInRooms(int roomId) { } /** - * Engine function - Show the people present in the given room + * Engine function - Show the people present in the given room * @remarks Originally called 'affper' */ void MortevielleEngine::showPeoplePresent(int bitIndex) { @@ -937,8 +937,8 @@ int MortevielleEngine::getPresenceStatsGreenRoom() { int retVal = 0; updateHour(day, hour, minute); - // The original uses an || instead of an &&, resulting - // in an always true condition. Based on the other tests, + // The original uses an || instead of an &&, resulting + // in an always true condition. Based on the other tests, // and on other scenes, we use an && instead. if ((hour > 7) && (hour < 11)) retVal = 25; @@ -978,7 +978,7 @@ int MortevielleEngine::getPresenceStatsPurpleRoom() { retVal = 20; else if ((hour >= 0) && (hour < 8)) retVal = 50; - + return retVal; } @@ -1707,7 +1707,7 @@ void MortevielleEngine::startDialog(int16 rep) { Common::String dialogStr = getString(rep + kDialogStringIndex); _text.displayStr(dialogStr, 230, 4, 65, 24, 5); f3f8::draw(); - + key = 0; do { _speechManager.startSpeech(rep, haut[_caff - 69], 0); @@ -1808,7 +1808,7 @@ void MortevielleEngine::gotoManorBack() { } /** - * Engine function - Dead : Flooded in Well + * Engine function - Dead : Flooded in Well * @remarks Originally called 't1deau' */ void MortevielleEngine::floodedInWell() { @@ -2095,7 +2095,7 @@ void MortevielleEngine::clearScreenType10() { st = getEngineString(S_LOURDE); else if (_coreVar._faithScore > 65) st = getEngineString(S_MALSAINE); - + co = 580 - (_screenSurface.getStringWidth(st) / 2); _screenSurface.putxy(co, 92); _screenSurface.drawString(st, 4); @@ -2145,7 +2145,7 @@ void MortevielleEngine::decodeNumber(byte *pStart, int count) { *pStart = 0; else if (v & 0xff00) *pStart = 0xff; - else + else *pStart = (byte)v; } } @@ -2312,7 +2312,7 @@ void MortevielleEngine::setPal(int n) { if (n < 89) palette(_cgaPal[n]._p); - + for (int i = 0; i <= 15; ++i) displayCGAPattern(i, _patternArr[pal[i]._id], pal); } @@ -2361,7 +2361,7 @@ void MortevielleEngine::loadPalette() { } } f.close(); - + if (!f.open("cxx.mor")) error("Missing file - cxx.mor"); @@ -2408,16 +2408,16 @@ void MortevielleEngine::loadTexts() { warning("Missing file - TXX.INP or .MOR - Switching to DAT file"); return; } - } + } if (!ntpFile.open("TXX.NTP")) { warning("Missing file - TXX.INP or .MOR - Switching to DAT file"); return; } - + if ((inpFile.size() > (kMaxTi * 2)) || (ntpFile.size() > (kMaxTd * 3))) { warning("TXX file - Unexpected format - Switching to DAT file"); return; - } + } for (int i = 0; i < inpFile.size() / 2; ++i) _inpBuffer[i] = inpFile.readUint16LE(); @@ -2478,7 +2478,7 @@ void MortevielleEngine::music() { return; _reloadCFIEC = true; - + Common::File fic; if (!fic.open("mort.img")) error("Missing file - mort.img"); @@ -2730,7 +2730,7 @@ void MortevielleEngine::drawClock() { int h, co; _mouse.hideMouse(); - + _screenSurface.drawRectangle(570, 118, 20, 10); _screenSurface.drawRectangle(578, 114, 6, 18); if ((_currGraphicalDevice == MODE_CGA) || (_currGraphicalDevice == MODE_HERCULES)) @@ -2740,7 +2740,7 @@ void MortevielleEngine::drawClock() { if (_minute == 0) _screenSurface.drawLine(((uint)x >> 1) * _res, y, ((uint)x >> 1) * _res, (y - rg), co); - else + else _screenSurface.drawLine(((uint)x >> 1) * _res, y, ((uint)x >> 1) * _res, (y + rg), co); h = _hour; @@ -3058,7 +3058,7 @@ int MortevielleEngine::checkLeoMaxRandomPresence() { int retval = getRandomNumber(1, 2); if (retval == 2) retval = 128; - + return retval; } @@ -3230,7 +3230,7 @@ void MortevielleEngine::writetp(Common::String s, int t) { void MortevielleEngine::aniof(int ouf, int num) { if ((_caff == 7) && ((num == 4) || (num == 5))) return; - + if ((_caff == 10) && (num == 7)) num = 6; else if (_caff == 12) { @@ -3280,7 +3280,7 @@ void MortevielleEngine::dessin() { else if ((_caff == 24) && (_coreVar._wellObjectId != 0)) aniof(1, 1); } - + if (_caff < ROOM26) startMusicOrSpeech(1); } @@ -3311,7 +3311,7 @@ void MortevielleEngine::testKey(bool d) { _mouse.getMousePosition(x, y, c); keyPressed(); } while (c != 0); - + // Event loop do { if (d) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 98d4b042bb..68ea2277e9 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -61,7 +61,7 @@ namespace Mortevielle { #define chr(v) ((unsigned char) v) #define lo(v) ((v) & 0xff) #define hi(v) (((v) >> 8) & 0xff) -#define swap(v) (((lo(v)) << 8) | ((hi(v)) >> 8)) +#define swap(v) (((lo(v)) << 8) | ((hi(v)) >> 8)) #define odd(v) (((v) % 2) == 1) // Debug channels @@ -79,12 +79,12 @@ enum { // Static string list enum { - S_YES_NO = 0, S_GO_TO = 1, S_SOMEONE_ENTERS = 2, S_COOL = 3, S_LOURDE = 4, + S_YES_NO = 0, S_GO_TO = 1, S_SOMEONE_ENTERS = 2, S_COOL = 3, S_LOURDE = 4, S_MALSAINE = 5, S_IDEM = 6, S_YOU = 7, S_ARE = 8, S_ALONE = 9, S_HEAR_NOISE = 10, S_SHOULD_HAVE_NOTICED = 11, S_NUMBER_OF_HINTS = 12, - S_WANT_TO_WAKE_UP = 13, S_OK = 14, S_SAVE_LOAD = 15, S_RESTART = 18, S_F3 = 19, - S_F8 = 20, S_HIDE_SELF = 21, S_TAKE = 22, S_PROBE = 23, S_RAISE = 24, S_SUITE = 25, - S_STOP = 26, S_USE_DEP_MENU = 27, S_LIFT = 28, S_READ = 29, + S_WANT_TO_WAKE_UP = 13, S_OK = 14, S_SAVE_LOAD = 15, S_RESTART = 18, S_F3 = 19, + S_F8 = 20, S_HIDE_SELF = 21, S_TAKE = 22, S_PROBE = 23, S_RAISE = 24, S_SUITE = 25, + S_STOP = 26, S_USE_DEP_MENU = 27, S_LIFT = 28, S_READ = 29, S_LOOK = 30, S_SEARCH = 31, S_OPEN = 32, S_PUT = 33, S_TURN = 34, S_TIE = 35, S_CLOSE = 36, S_HIT = 37, S_POSE = 38, S_SMASH = 39, @@ -133,7 +133,7 @@ const int kSecretPassageQuestionStringIndex = 510; // Unusued? const int kMaxPatt = 20; const int OPCODE_NONE = 0; -enum verbs {OPCODE_ATTACH = 0x301, OPCODE_WAIT = 0x302, OPCODE_FORCE = 0x303, OPCODE_SLEEP = 0x304, OPCODE_LISTEN = 0x305, +enum verbs {OPCODE_ATTACH = 0x301, OPCODE_WAIT = 0x302, OPCODE_FORCE = 0x303, OPCODE_SLEEP = 0x304, OPCODE_LISTEN = 0x305, OPCODE_ENTER = 0x306, OPCODE_CLOSE = 0x307, OPCODE_SEARCH = 0x308, OPCODE_KNOCK = 0x309, OPCODE_SCRATCH = 0x30a, OPCODE_READ = 0x30b, OPCODE_EAT = 0x30c, OPCODE_PLACE = 0x30d, OPCODE_OPEN = 0x30e, OPCODE_TAKE = 0x30f, OPCODE_LOOK = 0x310, OPCODE_SMELL = 0x311, OPCODE_SOUND = 0x312, OPCODE_LEAVE = 0x313, OPCODE_LIFT = 0x314, @@ -141,7 +141,7 @@ enum verbs {OPCODE_ATTACH = 0x301, OPCODE_WAIT = 0x302, OPCODE_FORCE = 0x303, OPCODE_SLOOK = 0x405}; static const int _actionMenu[12] = { OPCODE_NONE, - OPCODE_SHIDE, OPCODE_ATTACH, OPCODE_FORCE, OPCODE_SLEEP, + OPCODE_SHIDE, OPCODE_ATTACH, OPCODE_FORCE, OPCODE_SLEEP, OPCODE_ENTER, OPCODE_CLOSE, OPCODE_KNOCK, OPCODE_EAT, OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE }; @@ -155,8 +155,8 @@ static const int _actionMenu[12] = { OPCODE_NONE, enum places { OWN_ROOM = 0, GREEN_ROOM = 1, PURPLE_ROOM = 2, TOILETS = 3, DARKBLUE_ROOM = 4, BLUE_ROOM = 5, RED_ROOM = 6, BATHROOM = 7, GREEN_ROOM2 = 8, ROOM9 = 9, - DINING_ROOM = 10, BUREAU = 11, KITCHEN = 12, ATTIC = 13, CELLAR = 14, - LANDING = 15, CRYPT = 16, SECRET_PASSAGE = 17, ROOM18 = 18, MOUNTAIN = 19, + DINING_ROOM = 10, BUREAU = 11, KITCHEN = 12, ATTIC = 13, CELLAR = 14, + LANDING = 15, CRYPT = 16, SECRET_PASSAGE = 17, ROOM18 = 18, MOUNTAIN = 19, CHAPEL = 20, MANOR_FRONT = 21, MANOR_BACK = 22, INSIDE_WELL = 23, WELL = 24, DOOR = 25, ROOM26 = 26, ROOM27 = 27 }; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index f914860820..8516643835 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -40,7 +40,7 @@ namespace Mortevielle { void MouseHandler::initMouse() { _counter = 0; _pos = Common::Point(0, 0); - + g_vm->setMouseClick(false); } @@ -108,7 +108,7 @@ void MouseHandler::hideMouse() { case MODE_HERCULES: j = ((uint)_pos.y >> 1) * 80 + ((uint)_pos.x >> 3); for (int i = 0; i <= 5; ++i) { - for (int k = 0; k <= 3; ++k) + for (int k = 0; k <= 3; ++k) WRITE_LE_UINT16(&g_vm->_mem[0xb000 * 16 + k * 0x200 + j], s_s[i][k]); j += 80; } diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index f53a7b2804..eb79963191 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -58,7 +58,7 @@ void TextHandler::displayStr(Common::String inputStr, int x, int y, int dx, int int i, j; // Safeguard: add $ just in case - inputStr += '$'; + inputStr += '$'; g_vm->_screenSurface.putxy(x, y); if (g_vm->_res == 1) @@ -151,7 +151,7 @@ void TextHandler::loadDesFile(Common::String filename, int32 skipSize, int lengt } f.close(); - for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) + for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) g_vm->_mem[0x7000 * 16 + i - remainingSkipSize] = g_vm->_mem[0x6000 * 16 + i]; } diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 4c5e6252d5..8ce97fbac0 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -110,7 +110,7 @@ void SavegameManager::loadSavegame(int n) { g_vm->_tabdon[i + kAcha] = _tabdonSaveBuffer[i]; // Close the stream - delete stream; + delete stream; } /** @@ -120,7 +120,7 @@ Common::Error SavegameManager::loadGame(int n) { g_vm->_mouse.hideMouse(); g_vm->displayEmptyHand(); loadSavegame(n); - + /* Initialization */ g_vm->charToHour(); g_vm->initGame(); @@ -138,13 +138,13 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { g_vm->_mouse.hideMouse(); g_vm->hourToChar(); - + for (i = 0; i <= 389; ++i) _tabdonSaveBuffer[i] = g_vm->_tabdon[i + kAcha]; g_vm->_saveStruct = g_vm->_coreVar; if (g_vm->_saveStruct._currPlace == ROOM26) g_vm->_saveStruct._currPlace = LANDING; - + Common::String filename = generateSaveName(n); f = g_system->getSavefileManager()->openForSaving(filename); @@ -162,7 +162,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { // Close the save file f->finalize(); delete f; - + // Skipped: dialog asking to swap floppy g_vm->_mouse.showMouse(); @@ -252,18 +252,18 @@ SaveStateList SavegameManager::listSaves(const char *target) { // ScummVm savegame. Read in the header to get the savegame name SavegameHeader header; validFlag = readSavegameHeader(in, header); - + if (validFlag) { delete header.thumbnail; saveDescription = header.saveName; } } else if (file->size() == 497) { // Form an appropriate savegame name - saveDescription = (slotNumber == 0) ? "Initial game state" : + saveDescription = (slotNumber == 0) ? "Initial game state" : Common::String::format("Savegame #%d", slotNumber); validFlag = true; } - + if (validFlag) // Got a valid savegame saveList.push_back(SaveStateDescriptor(slotNumber, saveDescription)); @@ -278,7 +278,7 @@ SaveStateList SavegameManager::listSaves(const char *target) { SaveStateDescriptor SavegameManager::querySaveMetaInfos(int slot) { Common::String fileName = Mortevielle::SavegameManager::generateSaveName(slot); Common::InSaveFile *f = g_system->getSavefileManager()->openForLoading(fileName); - + if (f) { // Check to see if it's a ScummVM savegame or not char buffer[4]; @@ -311,7 +311,7 @@ SaveStateDescriptor SavegameManager::querySaveMetaInfos(int slot) { return desc; } } - + return SaveStateDescriptor(); } diff --git a/engines/mortevielle/sound.cpp b/engines/mortevielle/sound.cpp index 5f634c595c..9f0738c6c8 100644 --- a/engines/mortevielle/sound.cpp +++ b/engines/mortevielle/sound.cpp @@ -178,7 +178,7 @@ void SoundManager::playNote(int frequency, int32 length) { void SoundManager::musyc(tablint &tb, int nbseg, int att) { #ifdef DEBUG const byte *pSrc = &mem[0x5000 * 16]; - + // Convert the countdown amount to a tempo rate, and then to note length in microseconds int tempo = TIMER_FREQUENCY / att; int length = 1000000 / tempo; diff --git a/engines/mortevielle/sound.h b/engines/mortevielle/sound.h index 5c70bc8d0f..c469706305 100644 --- a/engines/mortevielle/sound.h +++ b/engines/mortevielle/sound.h @@ -48,7 +48,7 @@ struct SpeakerNote { length = noteLength; } }; - + /** * This is a modified PC Speaker class that allows the queueing of an entire song * sequence one note at a time. @@ -103,7 +103,7 @@ public: void decodeMusic(const byte *PSrc, byte *PDest, int NbreSeg); void litph(tablint &t, int typ, int tempo); - void musyc(tablint &tb, int nbseg, int att); + void musyc(tablint &tb, int nbseg, int att); }; } // End of namespace Mortevielle diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index c374d20a6d..08f773cca1 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -151,7 +151,7 @@ void SpeechManager::loadMusicSound() { if (!f.open("sonmus.mor")) error("Missing file - sonmus.mor"); - + f.read(&g_vm->_mem[0x7414 * 16 + 0], 273); g_vm->_soundManager.decodeMusic(&g_vm->_mem[0x7414 * 16], &g_vm->_mem[kAdrNoise * 16], 273); @@ -348,7 +348,7 @@ void SpeechManager::trait_car() { } break; case 0: - case 1: + case 1: veracf(_queue[1]._acc); switch (_queue[2]._code) { case 2: @@ -436,7 +436,7 @@ void SpeechManager::trait_car() { entroct(d2); entroct(_queue[1]._val); } - + break; case 4: veracf(_queue[1]._acc); @@ -483,7 +483,7 @@ void SpeechManager::trait_car() { entroct(d2); entroct(_tabdbc[((_queue[1]._val - 26) << 1) + 1]); } - + break; default: break; -- cgit v1.2.3 From 76bf72ce695ebaf465025cdbd2a5f4e37dfce681 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 28 Mar 2012 07:59:22 +0200 Subject: MORTEVIELLE: Fix invert in Dep menu. Still a bit short due to Inventory width too small. Also add some ingame same/load slots --- engines/mortevielle/menu.cpp | 8 +++----- engines/mortevielle/mortevielle.cpp | 6 +++--- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 4dcb034f76..4616d1387c 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -43,8 +43,8 @@ const byte _menuConstants[8][4] = { {43, 25, 11, 5}, {55, 37, 5, 8}, {64, 13, 11, 2}, - {62, 22, 13, 4}, - {62, 25, 13, 5} + {62, 42, 13, 9}, + {62, 46, 13, 10} }; /** @@ -56,7 +56,7 @@ void Menu::setText(int menuId, Common::String name) { byte l = lo(menuId); Common::String s = name; - while (s.size() < 30) + while (s.size() < 20) s += ' '; switch (h) { @@ -313,8 +313,6 @@ void Menu::menuDown(int ii) { int cx, xcc, xco; int lignNumb; - /* debug('menuDown'); */ - // Make a copy of the current screen surface for later restore g_vm->_backgroundSurface.copyFrom(g_vm->_screenSurface); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index af4db82bae..ed9441c5ab 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -636,11 +636,11 @@ void MortevielleEngine::handleAction() { return; } if (_menu._menuSelected && (_msg[3] == MENU_SAVE)) { - Common::String saveName = Common::String::format("Savegame #%d", _msg[4] & 7); - _savegameManager.saveGame(_msg[4] & 7, saveName); + Common::String saveName = Common::String::format("Savegame #%d", _msg[4] & 15); + _savegameManager.saveGame(_msg[4] & 15, saveName); } if (_menu._menuSelected && (_msg[3] == MENU_LOAD)) - _savegameManager.loadGame((_msg[4] & 7) - 1); + _savegameManager.loadGame((_msg[4] & 15) - 1); if (inkey == '\103') { /* F9 */ temps = Alert::show(_hintPctMessage, 1); return; -- cgit v1.2.3 From 64ef9378a2bd4e9490843695db0da8a7a4bb869c Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 28 Mar 2012 08:05:12 +0200 Subject: MORTEVIELLE: Enlarge Inventory menu display to match Depl menu. --- engines/mortevielle/menu.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 4616d1387c..a9fea17fcb 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -37,7 +37,7 @@ namespace Mortevielle { const byte _menuConstants[8][4] = { - { 7, 37, 22, 8}, + { 7, 37, 23, 8}, {19, 33, 23, 7}, {31, 89, 10, 21}, {43, 25, 11, 5}, @@ -56,7 +56,7 @@ void Menu::setText(int menuId, Common::String name) { byte l = lo(menuId); Common::String s = name; - while (s.size() < 20) + while (s.size() < 22) s += ' '; switch (h) { -- cgit v1.2.3 From 16194412155e82b64736eb46cd37e702463e1416 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 28 Mar 2012 20:39:42 +0200 Subject: MORTEVIELLE: Remove var_mor --- engines/mortevielle/actions.cpp | 1 - engines/mortevielle/dialogs.cpp | 4 ++-- engines/mortevielle/dialogs.h | 8 ++++++- engines/mortevielle/graphics.cpp | 1 - engines/mortevielle/menu.cpp | 1 - engines/mortevielle/module.mk | 3 +-- engines/mortevielle/mortevielle.cpp | 1 - engines/mortevielle/mouse.cpp | 1 - engines/mortevielle/mouse.h | 2 +- engines/mortevielle/outtext.cpp | 1 - engines/mortevielle/outtext.h | 1 - engines/mortevielle/saveload.cpp | 1 - engines/mortevielle/sound.h | 3 ++- engines/mortevielle/speech.cpp | 1 - engines/mortevielle/speech.h | 2 +- engines/mortevielle/var_mor.cpp | 44 ----------------------------------- engines/mortevielle/var_mor.h | 46 ------------------------------------- 17 files changed, 14 insertions(+), 107 deletions(-) delete mode 100644 engines/mortevielle/var_mor.cpp delete mode 100644 engines/mortevielle/var_mor.h diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 48d73a20fd..2f39b61bad 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -32,7 +32,6 @@ #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/speech.h" -#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index b53a9d5e80..1947705fe5 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -290,9 +290,9 @@ bool KnowledgeCheck::show() { int rep; int firstOption, lastOption; - Hotspot coor[kMaxRect+1]; + Hotspot coor[kMaxHotspots+1]; - for (int i = 0; i < kMaxRect; ++i) { + for (int i = 0; i <= kMaxHotspots; ++i) { coor[i]._rect = Common::Rect(); coor[i]._enabled = false; } diff --git a/engines/mortevielle/dialogs.h b/engines/mortevielle/dialogs.h index db13c09b54..1ed87456a9 100644 --- a/engines/mortevielle/dialogs.h +++ b/engines/mortevielle/dialogs.h @@ -28,12 +28,18 @@ #ifndef MORTEVIELLE_ALERT_H #define MORTEVIELLE_ALERT_H +#include "common/rect.h" #include "common/str.h" namespace Mortevielle { static const int NUM_LINES = 7; -const int kMaxRect = 14; +const int kMaxHotspots = 14; + +struct Hotspot { + Common::Rect _rect; + bool _enabled; +}; class Alert { private: diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index e290f60e69..a49bda7b73 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -26,7 +26,6 @@ #include "mortevielle/graphics.h" #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" -#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index a9fea17fcb..1cfafb8ff1 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -32,7 +32,6 @@ #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" -#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 8cad2b8ad0..38e6e0508d 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -11,8 +11,7 @@ MODULE_OBJS := \ outtext.o \ saveload.o \ sound.o \ - speech.o \ - var_mor.o + speech.o # This module can be built as a plugin ifeq ($(ENABLE_MORTEVIELLE), DYNAMIC_PLUGIN) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index ed9441c5ab..94821bf7cd 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -35,7 +35,6 @@ #include "mortevielle/outtext.h" #include "mortevielle/saveload.h" #include "mortevielle/outtext.h" -#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 8516643835..b46b1d6598 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -29,7 +29,6 @@ #include "common/rect.h" #include "mortevielle/mouse.h" #include "mortevielle/mortevielle.h" -#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index b93ce6136d..0e235ad894 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -28,7 +28,7 @@ #ifndef MORTEVIELLE_MOUSE_H #define MORTEVIELLE_MOUSE_H -#include "mortevielle/var_mor.h" +#include "common/rect.h" namespace Mortevielle { diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index eb79963191..75d9bde9ff 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -31,7 +31,6 @@ #include "mortevielle/outtext.h" #include "mortevielle/graphics.h" #include "mortevielle/mortevielle.h" -#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index 3664fd6fa5..cc7bb1fb4a 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -29,7 +29,6 @@ #define MORTEVIELLE_OUTTEXT_H #include "common/str.h" -#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 8ce97fbac0..af00de265e 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -31,7 +31,6 @@ #include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/saveload.h" -#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/sound.h b/engines/mortevielle/sound.h index c469706305..9ad46e84d3 100644 --- a/engines/mortevielle/sound.h +++ b/engines/mortevielle/sound.h @@ -32,10 +32,11 @@ #include "audio/mixer.h" #include "common/mutex.h" #include "common/queue.h" -#include "mortevielle/var_mor.h" namespace Mortevielle { +typedef int tablint[256]; + /** * Structure used to store pending notes to play */ diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 08f773cca1..09b0af730e 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -30,7 +30,6 @@ #include "mortevielle/speech.h" #include "mortevielle/sound.h" #include "mortevielle/mortevielle.h" -#include "mortevielle/var_mor.h" namespace Mortevielle { diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h index 6521fd9927..f9af192089 100644 --- a/engines/mortevielle/speech.h +++ b/engines/mortevielle/speech.h @@ -29,7 +29,7 @@ #define MORTEVIELLE_PAROLE_H #include "common/scummsys.h" -#include "mortevielle/var_mor.h" +#include "mortevielle/sound.h" namespace Mortevielle { diff --git a/engines/mortevielle/var_mor.cpp b/engines/mortevielle/var_mor.cpp deleted file mode 100644 index a451cb651f..0000000000 --- a/engines/mortevielle/var_mor.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#include "common/debug.h" -#include "common/str.h" -#include "common/textconsole.h" -#include "mortevielle/mortevielle.h" -#include "mortevielle/var_mor.h" - -namespace Mortevielle { - -/*---------------------------------------------------------------------------*/ -/*-------------------- PROCEDURES AND FONCTIONS -----------------------*/ -/*---------------------------------------------------------------------------*/ - -void musyc(tablint &tb, int nbseg, int att) { - warning("TODO: musyc"); -} - -} // End of namespace Mortevielle diff --git a/engines/mortevielle/var_mor.h b/engines/mortevielle/var_mor.h deleted file mode 100644 index bddf85cd90..0000000000 --- a/engines/mortevielle/var_mor.h +++ /dev/null @@ -1,46 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * 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. - * - */ - -/* - * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor - */ - -#ifndef MORTEVIELLE_VAR_H -#define MORTEVIELLE_VAR_H - -#include "common/rect.h" -#include "common/str.h" - -namespace Mortevielle { - -struct Hotspot { - Common::Rect _rect; - bool _enabled; -}; - -typedef int tablint[256]; -typedef int tfxx[108]; - -} // End of namespace Mortevielle - -#endif -- cgit v1.2.3 From f91e909afa4e3e839f29d2ba643ecd69da88c817 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 29 Mar 2012 11:39:04 +0200 Subject: MORTEVIELLE: Start adding German DOS version --- engines/mortevielle/mortevielle.cpp | 37 +++++++++++++++++++++++++++++-------- engines/mortevielle/mortevielle.h | 2 +- engines/mortevielle/outtext.cpp | 6 +++++- engines/mortevielle/speech.h | 2 +- 4 files changed, 36 insertions(+), 11 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 94821bf7cd..5be59d5ec5 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -214,6 +214,8 @@ Common::ErrorCode MortevielleEngine::initialise() { _currGraphicalDevice = _newGraphicalDevice; hirs(); + free(_cfiecBuffer); + free(_speechManager._cfiphBuffer); return Common::kNoError; } @@ -714,7 +716,8 @@ void MortevielleEngine::loadPlaces() { Common::File f; if (!f.open("MXX.mor")) - error("Missing file - MXX.mor"); + if (!f.open("MFXX.mor")) + error("Missing file - MXX.mor"); for (int i = 0; i < 7; ++i) { for (int j = 0; j < 25; ++j) @@ -2345,8 +2348,13 @@ void MortevielleEngine::loadPalette() { Common::File f; byte b; - if (!f.open("fxx.mor")) - error("Missing file - fxx.mor"); + if (!f.open("fxx.mor")) { + if (f.open("mfxx.mor")) + f.seek(7 * 25); + else + error("Missing file - fxx.mor"); + } + for (int i = 0; i < 108; ++i) _fxxBuffer[i] = f.readSint16LE(); f.close(); @@ -2446,10 +2454,19 @@ void MortevielleEngine::loadBRUIT5() { void MortevielleEngine::loadCFIEC() { Common::File f; - if (!f.open("cfiec.mor")) - error("Missing file - cfiec.mor"); + if (!f.open("cfiec.mor")) { + if (!f.open("alcfiec.mor")) + error("Missing file - *cfiec.mor"); + } + + int size = ((f.size() / 128) + 1) * 128; + + if (!_reloadCFIEC) + _cfiecBuffer = (byte *)malloc(sizeof(byte) * size); + + for (int i = 0; i < size; ++i) + _cfiecBuffer[i] = f.readByte(); - f.read(&_cfiecBuffer[0], 822 * 128); f.close(); _reloadCFIEC = false; @@ -2459,8 +2476,12 @@ void MortevielleEngine::loadCFIEC() { void MortevielleEngine::loadCFIPH() { Common::File f; - if (!f.open("cfiph.mor")) - error("Missing file - cfiph.mor"); + if (!f.open("cfiph.mor")) { + if (!f.open("alcfiph.mor")) + error("Missing file - *cfiph.mor"); + } + + _speechManager._cfiphBuffer = (int16 *)malloc(sizeof(int16) * (f.size() / 2)); for (int i = 0; i < (f.size() / 2); ++i) _speechManager._cfiphBuffer[i] = f.readSint16LE(); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 68ea2277e9..e22732600f 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -272,7 +272,7 @@ private: Common::String _hintPctMessage; - byte _cfiecBuffer[822 * 128]; + byte *_cfiecBuffer; byte _touv[8]; int _nbrep[9]; int _nbrepm[9]; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 75d9bde9ff..e44dc989c6 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -296,7 +296,11 @@ void TextHandler::taffich() { filename = "DXX.mor"; } else { - filename = "DZZ.mor"; + if (g_vm->getLanguage() == Common::DE_DEU) + filename = "DZZALL"; + else + filename = "DZZ.mor"; + handle = g_vm->_fxxBuffer[87]; if (a == 51) { lgt = handle; diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h index f9af192089..42be466a57 100644 --- a/engines/mortevielle/speech.h +++ b/engines/mortevielle/speech.h @@ -73,7 +73,7 @@ private: int _ptr_oct; public: - int _cfiphBuffer[6401]; + int16 *_cfiphBuffer; int _tbi[256]; int _mlec; -- cgit v1.2.3 From d8b8f93c4c51ac0ea8dbc105e3dad17c36866e18 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 29 Mar 2012 12:40:49 +0200 Subject: MORTEVIELLE: Start updating tools to add support to German DOS version --- devtools/create_mortdat/create_mortdat.cpp | 31 +- devtools/create_mortdat/enginetext.h | 53 +++ devtools/create_mortdat/gametext.h | 602 ++++++++++++++++++++++++++++- devtools/extract_mort/extract_mort.cpp | 15 +- dists/engine-data/mort.dat | Bin 51315 -> 79412 bytes engines/mortevielle/mortevielle.cpp | 17 +- 6 files changed, 697 insertions(+), 21 deletions(-) diff --git a/devtools/create_mortdat/create_mortdat.cpp b/devtools/create_mortdat/create_mortdat.cpp index 4c1dd14fdb..6fe115d5c4 100644 --- a/devtools/create_mortdat/create_mortdat.cpp +++ b/devtools/create_mortdat/create_mortdat.cpp @@ -57,25 +57,32 @@ void openOutputFile(const char *outFilename) { * Write out the data for the font */ void writeFontBlock() { + const int knownAddr[2] = {0x36b0, 0x36c0}; byte checkBuffer[7]; byte fontBuffer[121 * 6]; // Move to just prior the font data and verify that we're reading the known mort.com - mortCom.seek(0x36b0); - mortCom.read(checkBuffer, 7); - - if ((checkBuffer[0] != 0x59) || (checkBuffer[1] != 0x5B) || (checkBuffer[2] != 0x58) || - (checkBuffer[3] != 0xC3) || (checkBuffer[4] != 0xE8) || (checkBuffer[5] != 0xD6) || - (checkBuffer[6] != 0x02)) { - printf("Invalid mort.com input file"); - exit(0); + for (int i = 0; i <= 2; ++i) { + if ( i == 2) { + printf("Invalid mort.com input file"); + exit(0); + } + + mortCom.seek(knownAddr[i]); + mortCom.read(checkBuffer, 7); + + if ((checkBuffer[0] == 0x59) && (checkBuffer[1] == 0x5B) && (checkBuffer[2] == 0x58) || + (checkBuffer[3] == 0xC3) && (checkBuffer[4] == 0xE8) && (checkBuffer[5] == 0xD6) || + (checkBuffer[6] == 0x02)) { + break; + } } // Read in the data mortCom.read(fontBuffer, 121 * 6); // Write out a section header to the output file and the font data - char fontHeader[4] = { 'F', 'O', 'N', 'T' }; + const char fontHeader[4] = { 'F', 'O', 'N', 'T' }; outputFile.write(fontHeader, 4); // Section Id outputFile.writeWord(121 * 6); // Section size @@ -84,8 +91,8 @@ void writeFontBlock() { void writeStaticStrings(const char **strings, DataType dataType, int languageId) { // Write out a section header - char sStaticStrings[4] = { 'S', 'S', 'T', 'R' }; - char sGameStrings[4] = { 'G', 'S', 'T', 'R' }; + const char sStaticStrings[4] = { 'S', 'S', 'T', 'R' }; + const char sGameStrings[4] = { 'G', 'S', 'T', 'R' }; if (dataType == kStaticStrings) outputFile.write(sStaticStrings, 4); @@ -119,6 +126,7 @@ void writeStaticStrings(const char **strings, DataType dataType, int languageId) void writeEngineStrings() { writeStaticStrings(engineDataEn, kStaticStrings, 1); writeStaticStrings(engineDataFr, kStaticStrings, 0); + writeStaticStrings(engineDataDe, kStaticStrings, 2); } /** @@ -127,6 +135,7 @@ void writeEngineStrings() { void writeGameStrings() { writeStaticStrings(gameDataEn, kGameStrings, 1); writeStaticStrings(gameDataFr, kGameStrings, 0); + writeStaticStrings(gameDataDe, kGameStrings, 2); } void process() { diff --git a/devtools/create_mortdat/enginetext.h b/devtools/create_mortdat/enginetext.h index d9b3b05e2b..68db310a6b 100644 --- a/devtools/create_mortdat/enginetext.h +++ b/devtools/create_mortdat/enginetext.h @@ -133,4 +133,57 @@ const char *engineDataFr[] = { NULL }; +const char *engineDataDe[] = { + "[2][ ][JA][NEIN]", + "Go to", + "Someone enters, looks surised, but says nothing", + "Cool", + "Schwer", + "Ungesund", + "Idem", + "You", + "are", + "Alone", + + "Verdammt! Sie hoeren ein Geraeush...", + "Sie haetten ", + "% der Hinweise| bemerken muessen...", + "Do you want to wake up?", + "OK", + "", + " schreiben", + + " lesen", + " Restart ", + "F3 nochmals", + "F8: stop", + "Hide self", + "take", + " probe ", + " raise ", + " -WEITER- ", + " -STOP- ", + "[1][ Benutzen Sie jetzt das Menue DEP...][OK]", + "lift", + "read", + + "look", + "search", + "open", + "put", + "turn", + "tie", + "close", + "hit", + "pose", + "smash", + + "smell", + "scratch", + "probe", + "[1][ Benutzen Sie jetzt das Menue DEP...][OK]", + "& tag", + NULL +}; + #endif diff --git a/devtools/create_mortdat/gametext.h b/devtools/create_mortdat/gametext.h index b9ef039c74..0e0948e95f 100644 --- a/devtools/create_mortdat/gametext.h +++ b/devtools/create_mortdat/gametext.h @@ -609,7 +609,7 @@ const char *gameDataEn[] = { "[1][ | Disk error | All stop... ][ok]$", "[1][ | You should have noticed |00% of the clues ][ok]$", "[3][ | insert disk 2 | in drive A ][ok]$", - "TBT - [1][|Avant d'aller plus loin, vous faites|un point sur l'‚tat de vos connaissances][ok]$", + "TBT - [1][ |Avant d'aller plus loin, vous faites|un point sur l'‚tat de vos connaissances][ok]$", "TBT - MASTER .$", "TBT - rorL$", NULL @@ -1193,14 +1193,602 @@ const char *gameDataFr[] = { "L‚o$", "Max$", "Murielle partageait une occupation avec une autre personne . Qui ?$", - "[1][|Seul le hazard vous a permis d'arriver ici . Vous pr‚f‚rez|retourner enqu‚ter afin de mieux comprendre ...][ok]$", - "[1][|Ins‚rez la disquette 1 dans le lecteur A][ok]$", - "[1][|! ERREUR DISQUETTE !|On arrete tout][ok]$", - "[1][|Vous devriez avoir remarqu‚|00% des indices][ok]$", - "[1][|Ins‚rez la disquette 2 dans le lecteur A][ok]$", - "[1][|Avant d'aller plus loin, vous faites|un point sur l'‚tat de vos connaissances][ok]$", + "[1][ |Seul le hazard vous a permis d'arriver ici . Vous pr‚f‚rez|retourner enqu‚ter afin de mieux comprendre ...][ok]$", + "[1][ |Ins‚rez la disquette 1 dans le lecteur A][ok]$", + "[1][ |! ERREUR DISQUETTE !|On arrete tout][ok]$", + "[1][ |Vous devriez avoir remarqu‚|00% des indices][ok]$", + "[1][ |Ins‚rez la disquette 2 dans le lecteur A][ok]$", + "[1][ |Avant d'aller plus loin, vous faites|un point sur l'‚tat de vos connaissances][ok]$", " MASTER .$", " rorL$", }; +const char *gameDataDe[] = { + "TBT - Calm within the storm$", + "TBT - Discussed in colours$", + "TBT - Your mauve!$", + "TBT - Be kind enough to leave the room...$", + "TBT - If you're NOT overdrawn...$", + "TBT - If you're feeling blue...$", + "TBT - Read what's on the walls?$", + "TBT - Water sports$", + "TBT - Room for envy?$", + "TBT - A glance at the forbidden$", + "TBT - Smell of a woodfire and tobacco$", + "TBT - Tobacco and old books$", + "TBT - Onions, cinnamon and spirits$", + "TBT - A place seldom visited$", + "TBT - Humidity and decay$", + "TBT - Sorry, no ""door to door""$", + "TBT - Rotting corpse: deady cryptomania$", + "TBT - And what's more, there are disused traps$", + "TBT - It's already open$", + "TBT - Danger: avalanches$", + "TBT - Proper Charlie's place?$", + "TBT - An imposing building$", + "TBT - The other side of the mystery$", + "TBT - Strange horoscope$", + "TBT - Look out... but she wishes well?$", + "TBT - An oak door$", + "TBT - A photograph$", + "TBT - The coat of arms$", + "TBT - $", + "TBT - Max, the servant, welcomes you and shows you to your room$", + "TBT - Mortville 6/2/51@ My dear Jerome@Regarding my telegram, I must tell you the reason for my wor-@ries. A year ago, Murielle, my lady companion, disappeared. The de@part may have had something to do@with the financial success of themanor, or... A silence hard to un@derstand for my son Guy. Not ha@ving been able to see the light of day over this affair, I count @on you to sort things out. If my state of health doesn't improve, @take the decisions that you feel @are apropriate.@ Kind regards, Julia DEFRANCK$", + "TBT - Later, Guy will inform you of Leo's suicide after a@heavy bet at the races$", + "TBT - F3: AGAIN F8: STOP$", + "TBT - The master of the premises$", + "TBT - The future heir$", + "TBT - JULIA's son$", + "TBT - A pretty picture$", + "TBT - Superman!$", + "TBT - Ida's husband$", + "TBT - Interesting remarks?$", + "TBT - Service included!$", + "TBT - Nothing underneath$", + "TBT - You could hear a pin drop$", + "TBT - Half an hour passes: nothing! Wait any longer?$", + "TBT - Admire! Contemplate!$", + "TBT - No! Nothing!$", + "TBT - Impossible$", + "TBT - That stains!$", + "TBT - A treatise on the history of the area$", + "TBT - A few coins...$", + "TBT - First commandment...$", + "TBT - Pleasing to the nostrils!$", + "TBT - Spades, Hearts...$", + "TBT - Just a spoonful of sugar...$", + "TBT - A romantic novel$", + "TBT - Worth more than a penny, (whistle)$", + "TBT - Just needs a little patience$", + "TBT - Watch the sharp bends$", + "TBT - Deep and dark$", + "TBT - Normal sensations$", + "TBT - Sniff!$", + "TBT - Not discreet! Be content to watch!$", + "TBT - Bless you! Dusty!$", + "TBT - The canvas is signed, the wallpaper is not!$", + "TBT - Nothing, Unlucky!$", + "TBT - Be more discreet!$", + "TBT - The shutters are closed$", + "TBT - Snow! And more snow!$", + "TBT - Brilliant! The work of a master!$", + "TBT - No doubt at all! A genuine fake!$", + "TBT - Hmm! A cheap reproduction!$", + "TBT - A rare and valuable piece$", + "TBT - Nothing special$", + "TBT - Linen, personal belongings...$", + "TBT - Not just anywhere!$", + "TBT - It's not time!$", + "TBT - One doesn't speak with ones mouth full!$", + "TBT - Someone comes in, messes about then goes out again$", + "TBT - Someone's approaching your hiding-place$", + "TBT - Someone surprises you!$", + "TBT - Impossible! You're too loaded!$", + "TBT - Try again!$", + "TBT - Still puzzled!?$", + "TBT - You leave Mortville.In Paris a message awaits you...$", + "TBT - You hurt yourself$", + "TBT - Nothing more here$", + "TBT - The sound seems normal$", + "TBT - It doesn't move$", + "TBT - You are answered$", + "TBT - Not the right moment!$", + "TBT - The same matter, from another angle!$", + "TBT - The reflection is tarnished, but the frame is gold!$", + "TBT - Bric-a-brac$", + "TBT - Face to face with failure!$", + "TBT - Smells like something you'd rather not see!$", + "TBT - Cleaning products$", + "TBT - Got an itch?$", + "TBT - It's stuck, frozen. Brrr!$", + "TBT - All the locks are jammed!$", + "TBT - Papers$", + "TBT - No! Father christmas hasn't got himself stuck!$", + "TBT - It leads onto a corridor$", + "TBT - China, silverware...$", + "TBT - No! It's not Julia's remains!$", + "TBT - An old engraving$", + "TBT - You find a deep diamond-shaped opening$", + "TBT - The wall slides open! A passage! Do you follow it?$", + "TBT - The passageway closes$", + "TBT - A secret drawer: a notebook! Do you read it?$", + "TBT - The drawer shuts$", + "TBT - Nothing! Flesh and blood stuck to the stone$", + "TBT - Certain details lead you to believe death was not immediate!$", + "TBT - A rotten affair!$", + "TBT - Did she cling to dear life with just one finger?$", + "TBT - Has the treasure packed its trunk?$", + "TBT - A slot the size of a coin$", + "TBT - Part of the stone wall pivots.A crypt! Do you enter?$", + "TBT - The ring turns, the wall closes$", + "TBT - A stone column behind the altar$", + "TBT - There is a noise!$", + "TBT - Occupied!$", + "TBT - Take another chance?$", + "TBT - Too deep!$", + "TBT - The cellar wall pivots$", + "TBT - Nothing$", + "TBT - The one and only!$", + "TBT - The object slides to the bottom$", + "TBT - You have nothing in hand$", + "TBT - It is not open$", + "TBT - There is already something$", + "TBT - The door is locked$", + "TBT - No reply$", + "TBT - A solid wooden ball$", + "TBT - There's no more space$", + "TBT - A wooden ball pierced through the side$", + "TBT - ? ?$", + "TBT - Your move$", + "TBT - OK !$", + "TBT - Suddenly Max arrives with your suitcase: \"Thank you for your @visit!\".Mister discreet \"private eye\" (in need of a private optici@an!). Thoroughly demoralised, you@leave the manor. You are useless!$", + "TBT - Leo interrupts: \"The storm has died down,I am going into town in@1 hour. Get ready\". You have lost@time...but not your life$", + "TBT - Congestion, the deadly flu... You@are stuck here! Your whole case@sinks slowly beneath the water$", + "TBT - The water is rising fast,freezing your last illusions. Before you@have time to react...you are dead$", + "TBT - As soon as you reach the bottom of the well, a hand cuts the rope@Farewell sweet life!$", + "TBT - The storm covers your footprints.A wall of silence falls heavily@on your shoulders. Slowly you succumb to frosbite...$", + "TBT - You're not completely alone! A cold blade plunges into your backup@In future, be more care!$", + "TBT - You don't know what implication Leo may have had in Murielle's@death. Was she dead outright? In@any case,the family problems thatyou have uncovered in the course@of your enquiries would explain Leo's behaviour. You're not sure@that's the reason Julia had asked@for your help, but that's reason enough for you!Out of respect for@her, after taking certain precau-@tions you have a revealing talk with Leo.$", + "TBT - $", + "TBT - You don't have the keys to the manor. Your cries rest unheard@You're going to catch... your death!$", + "TBT - With a circular movement, the sword slices across you. Guts and@intestines spill out all over. A sorry state of affairs!$", + "TBT - Home, Sweet home !$", + "TBT - The mystery behind a closed door$", + "TBT - Bewitching charm of these old rooms$", + "TBT - An empty stomach$", + "TBT - Closer to heaven? Not so sure$", + "TBT - Afraid of the dark?$", + "TBT - Old rugs and a glint of gold$", + "TBT - Anguish!$", + "TBT - Safe? Perhaps not!$", + "TBT - A little ill at ease, eh!?$", + "TBT - Always further$", + "TBT - Your way of the cross!$", + "TBT - On the trail of...$", + "TBT - Watch what's hiding$", + "TBT - The road down to hell$", + "TBT - Feeling well? You look a little pale$", + "TBT - What lurks behind...?$", + "TBT - Close-up on:$", + "TBT - You notice, amongst other things$", + "TBT - And...$", + "TBT - That's all!$", + "TBT - A bit of reading$", + "TBT - The adventure awaits, you set off!$", + "TBT - Don't mess up YOUR next ADVENTURE!$", + "TBT - I don't understand$", + "TBT - There is an easier way$", + "TBT - No, not just now$", + "TBT - Too late$", + "TBT - $", + "TBT - Like a deep stony stare, a solitary eye that points towards the@stars; the artery that links hea-ven and hell. You must fathom@these depths keeping hold of that@which is, and will become. Monday, Tuesday, Wednesday, Sunday, from@Monday 1st to Sunday 1st,plunging from one day to the next your@\"IS\" or \"WILL BECOME\". Carrying your burden with love and light,@the smallest oversight will seal your fate.$", + "TBT - 10/1/51: We think we've solved the mystery of the manuscript and@located the crypt. Is it the idea@of success in what seems like a dream that disturbs me so? I feel@I have committed myself rather too much, as far as Leo is concer@ned... No! I should go on. @I should have put Guy in the pic-ture but for a week now, I've had@no news of him$", + "TBT - Take your prayers as you would to the holy place. From the pillar@of wisdom, bring the sun to his@knees. Thus will it show you the place to offer alms of another@kind and like young Arthur, open the way of darkness.White is your@colour, golden your hearth. So@advance with caution Orpheus and light your way unto the sad@virgin. Offer her the circle of the man with three faces. That he@may regain the world and turn with it to its original@inglory!$", + "TBT - The mountains are the fangs in a monstrous mouth opening on the@finity of a celestial orgy, grin-ding the stars as we grind our@teeth into dust. You will drop your chord of stone at your feet.@The laugh of silence at the@highest pitch, and in your right hand, the measure of genius. Thus@will you pass between the two crescents beyond the abyss of the@wall of silence. The key to the melody is within your grasp. It@suffices to find the note that clashes.$", + "TBT - 9/12 INTER. 518 3/13 EXPENS. 23@ 9/12 SALES 1203 7/12 CHEQUE 1598@ TOTAL 1721 TOTAL 1721$", + "TBT - 5/1/51@@ Luc, my love@ Guy knows about us. After an argument I told him everything! I@think only of you. Max keeps pes-tering me, but it's finished with @him. He should stick to his pots and pans! When can you and I be alone together? For you I would@get a divorce.@I love you.@ Eva$", + "TBT - Mortville, 10/2/51@@ Pat@ I recall you owe me 50000 frs that I lent you for your business@I need that money, can you repay me quickly?@ Guy$", + "TBT - Mortville, 15/2/51@ Dear Sir@ I am writing to you on the sub-ject of our business deal. I have@decided to go all the way in the certainty that my partner, Pat@DEFRANCK, has been forging the accounts. @In spite of$", + "TBT - A pipe$", + "TBT - A pen$", + "TBT - A lighter$", + "TBT - A retort$", + "TBT - A shaving brush$", + "TBT - A tin of paint$", + "TBT - A flute$", + "TBT - An expensive ring$", + "TBT - A reel of thread$", + "TBT - An old book$", + "TBT - A wallet$", + "TBT - A dagger$", + "TBT - A pistol$", + "TBT - A bible$", + "TBT - A candle$", + "TBT - A jewellery box$", + "TBT - An iron$", + "TBT - A photo$", + "TBT - A pocket watch$", + "TBT - A rope$", + "TBT - Keys$", + "TBT - A pearl necklace$", + "TBT - A bottle of perfume$", + "TBT - Binoculars$", + "TBT - Glasses$", + "TBT - A leather purse$", + "TBT - A tennis ball$", + "TBT - Ammunition$", + "TBT - A cut-throat razor$", + "TBT - A hairbrush$", + "TBT - A clothes brush$", + "TBT - A pack of cards$", + "TBT - A shoe horn$", + "TBT - A screwdriver$", + "TBT - A hammer$", + "TBT - Keys$", + "TBT - Keys$", + "TBT - An ashtray$", + "TBT - A paintbrush$", + "TBT - A rope$", + "TBT - A wooden object$", + "TBT - Sleeping pills$", + "TBT - A gold ring$", + "TBT - A jewellery box$", + "TBT - An alarm clock$", + "TBT - A coat of armour$", + "TBT - A candlestick$", + "TBT - A pair of gloves$", + "TBT - A engraved goblet$", + "TBT - A parchment$", + "TBT - A dagger$", + "TBT - A dossier$", + "TBT - A parchment$", + "TBT - A parchment$", + "TBT - A dossier$", + "TBT - A dossier$", + "TBT - A letter$", + "TBT - A novel$", + "TBT - A wooden rod$", + "TBT - An envelope$", + "TBT - A letter$", + "TBT - An envelope$", + "TBT - Julia$", + "TBT - Julia's death$", + "TBT - Julia's relationships$", + "TBT - A message from Julia$", + "TBT - Julia's inheritance$", + "TBT - Julia's final actions$", + "TBT - Julia's gifts$", + "TBT - Julia's bedroom$", + "TBT - The photo at Julia's home$", + "TBT - Julia and yourself...$", + "TBT - L‚o's occupations$", + "TBT - Pat's occupations$", + "TBT - Guy's occupations$", + "TBT - Bob's occupations$", + "TBT - Eva's occupations$", + "TBT - Luc's occupations$", + "TBT - Ida's occupations$", + "TBT - Max's occupations$", + "TBT - Your occupations$", + "TBT - L‚o's relationships$", + "TBT - Pat's relationships$", + "TBT - Guy's relationships$", + "TBT - Bob's relationships$", + "TBT - Eva's relationships$", + "TBT - Luc's relationships$", + "TBT - Ida's relationships$", + "TBT - Max's relationships$", + "TBT - Your relationships$", + "TBT - Murielle$", + "TBT - Murielle's relationships$", + "TBT - Murielle and yourself...$", + "TBT - Murielle's disappearance$", + "TBT - The wall of silence$", + "TBT - The manuscripts$", + "TBT - The coat of arms$", + "TBT - Engravings in the cellar$", + "TBT - The well$", + "TBT - The secret passages$", + "TBT - The chapel$", + "TBT - The paintings$", + "TBT - The photo of the attic$", + "TBT - The body in the crypt$", + "TBT - $", + "TBT - $", + "TBT - END OF THE CONVERSATION$", + "TBT - Les vieux appelaient ainsi la chaine de montagne qui se dresse au pied du manoir !$", + "TBT - C'est le massif montagneux que l'on aper‡oit devant le manoir$", + "TBT - Je n'en sais rien !$", + "TBT - Elle est morte d'une embolie pulmonaire$", + "TBT - Ma m‚re est morte soudainement . Son ‚tat semblait pourtant s'tre am‚lior‚$", + "TBT - Madame DEFRANCK est morte d'un coup de froid$", + "TBT - Elle est morte d'une embolie pulmonaire$", + "TBT - Pardonnez moi mais je pr‚fŠre, actuellement garder le silence$", + "TBT - Ce sont toujours les meilleurs qui partent les premiers$", + "TBT - J'aimais beaucoup ma mŠre . Je regrette seulement qu'elle soit morte dans le manoir des DEFRANCK$", + "TBT - C'est une r‚gion qui a un pass‚ charg‚ et j'ai largement de quoi m'occuper . Et puis j'aime beaucoup les chevaux..$", + "TBT - C'est un passionn‚ d'histoire et un joueur inv‚t‚r‚ . D'ailleurs, voici un an il a gagn‚ une grosse somme$", + "TBT - Il a d‚j… beaucoup a faire avec la gestion et l'entretien du manoir ...$", + "TBT - Je suis PDG d'une petite soci‚t‚ de parfums . Mais quand je suis ici, je me repose$", + "TBT - C'est un homme dynamique qui a r‚ussi dans le parfum$", + "TBT - Lui ! C'est un arriviste v‚reux ! Les parfums ont du endormir son bon sens . D'ailleurs ici il passe ses soir‚es dans sa chambre$", + "TBT - J'ai ‚t‚ trŠs pr‚occup‚ par la sant‚ de ma mŠre, et maintenant je n'ai plus go–t … rien$", + "TBT - Il aurait mieux fait de s'occuper un peu plus de moi et un peu moins de sa mŠre$", + "TBT - Ce sont ses affaires ...$", + "TBT - Il n'a pas trop de chance en ce moment bien que ses affaires soient satisfaisantes$", + "TBT - Je travaille avec Pat mais ‡a ne va pas trŠs fort en ce moment$", + "TBT - Ah oui ?! Il a des occupations ? Il ferait bien de s'en occuper s‚rieusement alors$", + "TBT - Lui et Pat sont associ‚s . Je crois que ‡a ne va pas trop mal$", + "TBT - Je m'occupe de moi et c'est d‚j… beaucoup . Et vous ?$", + "TBT - Oh ‡a ! Je lui fais confiance . Elle sait s'occuper$", + "TBT - Mais ! Vous n'avez pas encore d‚couvert son occupation principale ..?$", + "TBT - Elle fait dans la d‚coration avec beaucoup dego–t d'ailleurs . Elle est toujours trŠs bien habill‚e$", + "TBT - Si les bijoux vous interessent, j'ai quelques affaires interessantes … saisir rapidement$", + "TBT - Les bijoux ...$", + "TBT - Je ne sais pas, mais j'aimerais bien qu'il s'occupe un peu moins de mes affaires !$", + "TBT - Quand on est une femme d'int‚rieur on trouve toujours de quoi s'occuper...$", + "TBT - Elle pourrait rester sans rien faire, mais non ! Elle coud, elle lit ...$", + "TBT - Elle n'a s–rement pas des occupations trŠs ‚panouissantes ...$", + "TBT - Une femme comme il n'y en a plus : Elle s'interesse a tout !$", + "TBT - Entre la cuisine et le m‚nage, je n'ai pas beaucoup de temps … vous accorder$", + "TBT - Je ne sais pas comment il s'y prend pour tout faire . C'est merveilleux !$", + "TBT - Il en ferait plus si il s'occupait moins des rag“ts et de la bouteille$", + "TBT - Je suis trŠs ind‚pendant . Tant qu'on ne s'occupe pas de mes affaires : Pas de problŠme$", + "TBT - C'est un ‚go‹ste . Je me demande si il aime autre chose que ses chevaux et ses grimoires$", + "TBT - Je crois qu'il s'entend bien avec tout le monde, mis … part, peut tre, avec Guy$", + "TBT - C'est un homme de caractŠre . Il faut savoir le prendre ..$", + "TBT - Les affaires sont les affaires . Quant … la famille, je la laisse pour ce qu'elle est ...$", + "TBT - Relations ? Relations amicales ? Relations financiŠres sans doute$", + "TBT - Moi je n'ai rien … lui reprocher$", + "TBT - C'est un homme d'affaire d‚brouillard . Il nage parfois … contre-courant mais ... il s'en sortira toujours$", + "TBT - Ils m'ennuient tous .. Non ! Ce n'est mme pas ‡a .. Quoique .. certains ..$", + "TBT - A l'inverse de sa mŠre, c'est une personne trŠs renferm‚e ! Alors question relations ..$", + "TBT - Il doit sans doute faire beaucoup d'effort pour rester agr‚able malgr‚ tous ses ennuis$", + "TBT - Ses relations amoureuses : C'est termin‚ . Ses relations avec moi : Pas vraiment commenc‚es . Quant aux autres : Je ne suis pas les \"autres\"$", + "TBT - J'aime bien tout le monde, tant qu'on ne m'escroque pas$", + "TBT - Il ne suffit pas d'avoir un peu d'argent et d'tre beau parleur pour plaire … tout le monde$", + "TBT - Sans histoire .. C'est quelqu'un d'agr‚able et g‚n‚reux . De plus, il ne manque pas d'humour$", + "TBT - Actuellement je m'entends plut“t bien avec tout le monde . Mais, ici, je ne vais pas m'‚tendre sur le sujet$", + "TBT - Beau plumage, mais ‡a ne vole pas haut ... Parlez en … son mari$", + "TBT - C'est pour un rendez-vous ?$", + "TBT - Elle est trŠs vivante ! Elle ne s'embarrasse pas de pr‚jug‚s stupides$", + "TBT - Dans mon m‚tier, on c“toit surtout des belles femmes et des truands$", + "TBT - La seule valeur s–re chez lui, c'est ses bijoux .. Et sa femme, mais ‡a il ne s'en rend pas compte$", + "TBT - C'est quelqu'un d'interessant . De pas toujours facile … comprendre, mais qui m‚rite le d‚tour$", + "TBT - Je ne d‚teste personne, mais j'aime les choses et les gens quand ils sont … leur place$", + "TBT - C'est entre nous . Mais voyez : quand je parle avec elle, je me sens vite … l'‚troit !$", + "TBT - Pour ne pas s'entendre avec elle, faut y mettre de la mauvaise volont‚$", + "TBT - Vous savez dans mon m‚tier on entend tout mais on ne retient rien, et le service est bien fait$", + "TBT - C'est un hypocrite, un larbin ! Personnellement je ne lui fais pas confiance$", + "TBT - Je ne connait pas le fond de sa pens‚e mais c'est quelqu'un de toujours trŠs correct et impeccable$", + "TBT - C'‚tait une personne qui a v‚cu au manoir, il y a un an .. peut tre plus$", + "TBT - C'‚tait plus qu'une amie pour ma mŠre . En ces moments, j'aurais aim‚ qu'elle soit … mes cot‚s$", + "TBT - Murielle a ‚t‚ la dame de compagnie de Julia$", + "TBT - Elle aussi, faisait des recherches ...$", + "TBT - C'‚tait une femme trŠs cultiv‚e . Son brusque d‚part, il y a un an, m'a surpris et beaucoup chagrin‚$", + "TBT - Elle partageait avec L‚o sa passion de l'histoire et de la r‚gion$", + "TBT - Je crois que tout le monde l'aimait bien$", + "TBT - Elle s'entendait bien avec tout le monde . Elle aimait beaucoup son fils . Quant aux relations belle-mŠre, belle-fille ..$", + "TBT - A part L‚o, elle avait de trŠs bon rapport avec Max ...$", + "TBT - Bien que vos relations furent peu soutenues, J‚r“me, elle vous portait toujours dans son coeur ...$", + "TBT - A part sa famille, pas grand monde$", + "TBT - Ah oui ! Je crois qu'elle a beaucoup regrett‚ le d‚part de cette amie .. euh ! Marielle .. ou Mireille ...$", + "TBT - Non rien !$", + "TBT - Non ... Pas que le sache$", + "TBT - J'ai connu Julia en achetant le manoir . C'‚tait son seul bien . Mais toute ma fortune ‚tait la sienne ...$", + "TBT - Si ce n'est quelques objets personnels, je crois qu'elle n'avait plus rien … elle$", + "TBT - Je crois que toute sa fortune venait de L‚o . Alors, Pfuuut !$", + "TBT - A part la lettre pour vous que j'ai post‚, rien de bien important !$", + "TBT - J'ai ‚t‚ trŠs heureuse qu'elle m'offre sa bible reli‚e$", + "TBT - Ca a ‚t‚ rapide et elle n'a pas eu le temps de prendre des dispositions particuliŠres$", + "TBT - Son dernier pr‚sent m'a surpris$", + "TBT - Quel cadeau ?$", + "TBT - Un chandellier ...$", + "TBT - Oui, j'ai eu un cadeau . Ma femme a mme eu une bible$", + "TBT - Et bien oui ! Comme tout le monde, je crois$", + "TBT - Un poignard$", + "TBT - Je n'ai jamais ‚t‚ fouiller dans le grenier !$", + "TBT - Vous avez un don de double-vue ou un passe-partout$", + "TBT - Le portrait d'une jeune fille : C'est Murielle ...$", + "TBT - Vous savez, je la connaissais assez peu$", + "TBT - Elle ‚tait trŠs charmante, mais c'‚tait surtout la dame de compagnie de Julia$", + "TBT - C'est la seule femme vraiment interessante que j'ai rencontr‚$", + "TBT - Elle avait de grandes connaissances historiques, et la consulter ‚tait trŠs enrichissant$", + "TBT - Je me suis toujours demand‚ ce que certains pouvaient lui trouver !$", + "TBT - Si la chambre est ferm‚e, demandez … L‚o$", + "TBT - J'ai ferm‚ sa chambre aprŠs sa mort et j'aimerais qu'il en soit ainsi encore un certain temps$", + "TBT - Vous savez ce que c'est : Des relations familiales$", + "TBT - Durant toutes ces ann‚es, je ne l'ai jamais servie … contre-coeur$", + "TBT - Je l'aimais autant qu'elle m'aimais, je crois$", + "TBT - De quel droit avez-vous p‚n‚tr‚ dans la chambre de ma femme ?!!$", + "TBT - C'est sans doute la photo de Murielle avec le filleul de Julia$", + "TBT - Je ne me rappelle pas$", + "TBT - C'est Murielle . C'est moi qui l'ai prise. et d'ailleurs elle est tir‚e … l'envers$", + "TBT - Vous tes bien curieux !... C'est sans valeur$", + "TBT - Grimoires, parchemins et manuscrits : C'est le domaine de L‚o$", + "TBT - Dommage que la devise soit manquante ...$", + "TBT - C'est trŠs beau ... Et trŠs vieux ...$", + "TBT - Tiens ! C'est un endroit que je n'ai jamais visit‚$", + "TBT - D'apr‚s L‚o, il semblerait que les Lunes soient plus r‚centes$", + "TBT - Mme par ce temps, vous avez d‚nich‚ un soleil ...$", + "TBT - Profond et inqui‚tant : Le progrŠs a du bon$", + "TBT - Ca reste pour moi le plus grand des mystŠres$", + "TBT - Les derniers temps elle parlait d'un voyage . Et puis ...$", + "TBT - Il y a un peu plus d'un an, un soir, elle a d‚cid‚ de partir ...$", + "TBT - De toutes fa‡ons elle n'‚tait pas faite pour vivre ici$", + "TBT - Quoi ?! Quel corps ? Quel crypte ?$", + "TBT - Si il y en a, je ne les ai jamais trouv‚ ...$", + "TBT - Bien s–r ! ... Et des fant“mes aussi ...$", + "TBT - C'est la plus vielle de la r‚gion : Elle date du XI eme siŠcle$", + "TBT - Elle fut l‚gŠrement restaur‚e aprŠs la r‚volution$", + "TBT - Julia aimait beaucoup la peinture$", + "TBT - Ils ont diff‚rents styles, mais n'ont pas tous une trŠs grande valeur$", + "TBT - Que faites-vous l… ?$", + "TBT - Je suis s–r que vous cherchez quelque chose ici$", + "TBT - Je vous ‚coute$", + "TBT - Que d‚sirez-vous ?$", + "TBT - Oui ?$", + "TBT - Je suis … vous ...$", + "TBT - C'est pourquoi ?$", + "TBT - Allez-y$", + "TBT - C'est … quel sujet ?$", + "TBT - Max : … votre service, monsieur$", + "TBT - De toutes fa‡ons vous n'avez rien … faire ici ! Sortez !!$", + "TBT - Vous tes trop curieux !$", + "TBT - J‚r“me ! Il y a longtemps ... Quelle tristesse, Julia est morte . Sa famille est ici : Guy, son fils . Eva, sa brue . L‚o, son mari bien s–r . Son beau fils, Pat . Des cousins : Bob, Ida, Luc . La tempŠte redouble, il vous faut rester . Les repas sont … 12h et 19h et il y a un recueillement … la chapelle tous les jours … 10h$", + "TBT - En vous voyant j'ai compris que vous decouvririez la v‚rit‚ ... Car je savais pourquoi vous veniez : J'avais retrouv‚ le brouillon de la lettre de Julia . Mais je suis trŠs joueur, alors ... Elle n'avait pas voulu que votre tche soit trop facile, pour me prot‚ger, sans doute, mais elle n'a pu mourir avec cette incertitude sur la conscience . Avez vous d‚couvert que le mur du silence est le nom que les ma‡ons ont donn‚ au mur qui porte ce blason, lors de la construction du manoir ? .. Et ces cadeaux que Julia a laiss‚ avant de mourir ‚taient autant de faux indices qui ne servaient qu'… faire ressortir l'importance des parchemins ... Effectivement, il y a plus d'un an, je travailais avec Murielle au d‚cryptage de ces manuscrits que je venais de trouver . Ma femme a fait la relation entre notre travail et la disparition de Murielle mais elle n'a jamais eu de preuves . Si ce n'est cette bague qu'elle a retrouv‚ un jour dans mes affaires . Une nuit, nous nous sommes aventur‚s dans le passage secret que nous avions d‚couvert . Murielle est morte par accident dans la piŠce de la vierge . J'ai r‚cup‚r‚ la bague rapidement, trouv‚ le tr‚sor et me suis enfuis . Je ne pensais pas qu'elle vivait encore, et je n'ai rien dit car j'avais besoin d'argent . J'ai fait passer cette somme sur le compte des courses de chevaux ...Partez maintenant, puisque vous n'tes pas de la police . Laissez moi seul !$", + "TBT - F‚vrier 1951 ... Profession : detective priv‚ . Le froid figeait Paris et mes affaires lorsque ...$", + "TBT - Une lettre, un appel, des souvenirs d'une enfance encore proche . Que de jeux dans les piŠces d‚labr‚es du manoir de Mortevielle . Julia, une vieille femme a pr‚sent .$", + "TBT - to the bureau$", + "TBT - to the kitchen$", + "TBT - to the cellar$", + "TBT - to the landing$", + "TBT - outside$", + "TBT - to the dining room$", + "TBT - inside the manor$", + "TBT - front of the manor$", + "TBT - to the chapel$", + "TBT - to the weel$", + "TBT - north$", + "TBT - behind the manor$", + "TBT - south$", + "TBT - east$", + "TBT - west$", + "TBT - towards the manor$", + "TBT - further$", + "TBT - in the water$", + "TBT - out of the weel$", + "TBT - in the weel$", + "TBT - choice on screen$", + "TBT - In the MYSTERY series...$", + "TBT - MORTVILLE MANOR$", + "TBT - $", + "TBT - From an original idea of...$", + "TBT - Bernard GRELAUD and Bruno GOURIER$", + "TBT - $", + "TBT - Directed by: KYILKHOR CREATION and LANGLOIS$", + "TBT - $", + "TBT - With the cooperation of...$", + "TBT - B‚atrice et Jean_Luc LANGLOIS$", + "TBT - for the music and the voices,$", + "TBT - Bernard GRELAUD for the graphic conception,$", + "TBT - MARIA-DOLORES for the graphic direction,$", + "TBT - Bruno GOURIER for the technical direction,$", + "TBT - Mick ANDON for the translation. $", + "TBT - $", + "TBT - Publisher: KYILKHOR and B&JL LANGLOIS $", + "TBT - COPYRIGHT 1987: KYILKHOR and B&JL LANGLOIS$", + "TBT - $", + "TBT - YOUR MOVE$", + "TBT - attach$", + "TBT - wait$", + "TBT - force$", + "TBT - sleep$", + "TBT - listen$", + "TBT - enter$", + "TBT - close$", + "TBT - search$", + "TBT - knock$", + "TBT - scratch$", + "TBT - read$", + "TBT - eat$", + "TBT - place$", + "TBT - open$", + "TBT - take$", + "TBT - look$", + "TBT - smell$", + "TBT - sound$", + "TBT - leave$", + "TBT - lift$", + "TBT - turn$", + "TBT - hide yourself$", + "TBT - search$", + "TBT - read$", + "TBT - put$", + "TBT - look$", + "TBT - Leo$", + "TBT - Pat$", + "TBT - Guy$", + "TBT - Eva$", + "TBT - Bob$", + "TBT - Luc$", + "TBT - Ida$", + "TBT - Max$", + "TBT - JULIA...$", + "TBT - - Did she commit suicide?$", + "TBT - - Was she murdered?$", + "TBT - - Did she die by accident?$", + "TBT - - Did she die of natural causes?$", + "TBT - Where did the money come from@for the restoration of the manor?$", + "TBT - - Blackmail$", + "TBT - - Honest work$", + "TBT - - Inheritance$", + "TBT - - Races$", + "TBT - - Rents$", + "TBT - - Hold-up$", + "TBT - - Other$", + "TBT - What is Leo's hobby?$", + "TBT - - Historical research$", + "TBT - - Politics$", + "TBT - - Painting$", + "TBT - - Drugs$", + "TBT - - Occult sciences$", + "TBT - - Management of a sect$", + "TBT - Julia left several clues that are@represented in one place. Which?$", + "TBT - - Chapel$", + "TBT - - Outside$", + "TBT - - Cellar$", + "TBT - - Attic$", + "TBT - - Kitchen$", + "TBT - - Dining room$", + "TBT - - Julia's room$", + "TBT - - Leo's room$", + "TBT - - Pat's room$", + "TBT - - Bob's room$", + "TBT - - Max's room$", + "TBT - - Luc/Ida's room$", + "TBT - - Guy/Eva's room$", + "TBT - The main clue that leads you@to the underground door is:$", + "TBT - - A dagger$", + "TBT - - A ring$", + "TBT - - A book$", + "TBT - - A parchment$", + "TBT - - A letter$", + "TBT - - A pendulum$", + "TBT - How many parchments were there in the manor?$", + "TBT - - 0$", + "TBT - - 1$", + "TBT - - 2$", + "TBT - - 3$", + "TBT - - 4$", + "TBT - - 5$", + "TBT - How many persons are involved in@this story?@(Julia included, but not yourself)$", + "TBT - - 9$", + "TBT - - 10$", + "TBT - - 11$", + "TBT - What was the first name@of the unknown character?$", + "TBT - - Mireille$", + "TBT - - Fran‡oise$", + "TBT - - Maguy$", + "TBT - - Emilie$", + "TBT - - Murielle$", + "TBT - - Sophie$", + "TBT - Wo did Murielle have an affair with?$", + "TBT - - Bob$", + "TBT - - Luc$", + "TBT - - Guy$", + "TBT - - Leo$", + "TBT - - Max$", + "TBT - Murielle shared an occupation@with one other person. Who?$", + "TBT - [1][You realize that certain elements of|this investigation remain a mystery for you.|Therefore, you decide first to learn|more before undertaking new risks..][ok]$", + "TBT - [3][ | insert disk 1 | in drive A ][ok]$", + "TBT - [1][ | Disk error | All stop... ][ok]$", + "TBT - [1][ | You should have noticed |00% of the clues ][ok]$", + "TBT - [3][ | insert disk 2 | in drive A ][ok]$", + "TBT - [1][ |Avant d'aller plus loin, vous faites|un point sur l'‚tat de vos connaissances][ok]$", + "TBT - MASTER .$", + "TBT - rorL$", + NULL +}; #endif diff --git a/devtools/extract_mort/extract_mort.cpp b/devtools/extract_mort/extract_mort.cpp index 192ea50723..477ca44631 100644 --- a/devtools/extract_mort/extract_mort.cpp +++ b/devtools/extract_mort/extract_mort.cpp @@ -272,11 +272,22 @@ static void export_strings(const char *textFilename) { uint16 *strData; // Open input and output files - txxInp.open("TXX.INP", kFileReadMode); - txxNtp.open("TXX.NTP", kFileReadMode); + if (!txxInp.open("TXX.INP", kFileReadMode)) { + if (!txxInp.open("TXX.MOR", kFileReadMode)) { + printf("Missing TXX.INP/MOR"); + exit(-1); + } + } + if (!txxNtp.open("TXX.NTP", kFileReadMode)) { + if (!txxNtp.open("TXX.IND", kFileReadMode)) { + printf("Missing TXX.NTP/IND"); + exit(-1); + } + } textFile.open(textFilename, kFileWriteMode); // Read all the compressed string data into a buffer + printf("%d %d", txxInp.size(), txxNtp.size()); strData = (uint16 *)malloc(txxInp.size()); txxInp.read(strData, txxInp.size()); diff --git a/dists/engine-data/mort.dat b/dists/engine-data/mort.dat index 2f31c0a7d9..4415f57c29 100644 Binary files a/dists/engine-data/mort.dat and b/dists/engine-data/mort.dat differ diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 5be59d5ec5..b8be8384de 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -279,7 +279,22 @@ Common::ErrorCode MortevielleEngine::loadMortDat() { */ void MortevielleEngine::readStaticStrings(Common::File &f, int dataSize, DataType dataType) { // Figure out what language Id is needed - byte desiredLanguageId = (getLanguage() == Common::EN_ANY) ? LANG_ENGLISH : LANG_FRENCH; + byte desiredLanguageId; + switch(getLanguage()) { + case Common::EN_ANY: + desiredLanguageId = LANG_ENGLISH; + break; + case Common::FR_FRA: + desiredLanguageId = LANG_FRENCH; + break; + case Common::DE_DEU: + desiredLanguageId = LANG_GERMAN; + break; + default: + warning("Language not supported, switching to English"); + desiredLanguageId = LANG_ENGLISH; + break; + } // Read in the language byte languageId = f.readByte(); -- cgit v1.2.3 From 410f803e9124d94813bc4d29d5b7659d58c31476 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 29 Mar 2012 12:49:25 +0200 Subject: MORTEVIELLE: Get rid of the hardcoded size of _cfiecBuffer --- engines/mortevielle/mortevielle.cpp | 10 +++++----- engines/mortevielle/mortevielle.h | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index b8be8384de..38355ec558 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -197,7 +197,7 @@ Common::ErrorCode MortevielleEngine::initialise() { loadPalette(); loadCFIPH(); loadCFIEC(); - decodeNumber(&_cfiecBuffer[161 * 16], ((822 * 128) - (161 * 16)) / 64); + decodeNumber(&_cfiecBuffer[161 * 16], (_cfiecBufferSize - (161 * 16)) / 64); _c_zzz = 1; init_nbrepm(); initMouse(); @@ -2474,12 +2474,12 @@ void MortevielleEngine::loadCFIEC() { error("Missing file - *cfiec.mor"); } - int size = ((f.size() / 128) + 1) * 128; + _cfiecBufferSize = ((f.size() / 128) + 1) * 128; if (!_reloadCFIEC) - _cfiecBuffer = (byte *)malloc(sizeof(byte) * size); + _cfiecBuffer = (byte *)malloc(sizeof(byte) * _cfiecBufferSize); - for (int i = 0; i < size; ++i) + for (int i = 0; i < _cfiecBufferSize; ++i) _cfiecBuffer[i] = f.readByte(); f.close(); @@ -3749,7 +3749,7 @@ int MortevielleEngine::testou() { break; case '\26' : if ((_c_zzz == 1) || (_c_zzz == 2)) { - decodeNumber(&_cfiecBuffer[161 * 16], ((822 * 128) - (161 * 16)) / 64); + decodeNumber(&_cfiecBuffer[161 * 16], (_cfiecBufferSize - (161 * 16)) / 64); ++_c_zzz; return 61; diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index e22732600f..97bc814d61 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -273,6 +273,7 @@ private: Common::String _hintPctMessage; byte *_cfiecBuffer; + int _cfiecBufferSize; byte _touv[8]; int _nbrep[9]; int _nbrepm[9]; -- cgit v1.2.3 From b27b77b3547dd0d3045da48ee7944bc65d19cd17 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 29 Mar 2012 16:39:18 +0200 Subject: MORTEVIELLE: Modify copyright string to include 1987. --- engines/mortevielle/actions.cpp | 2 +- engines/mortevielle/detection.cpp | 2 +- engines/mortevielle/dialogs.cpp | 2 +- engines/mortevielle/dialogs.h | 2 +- engines/mortevielle/graphics.cpp | 5 +++++ engines/mortevielle/graphics.h | 5 +++++ engines/mortevielle/menu.cpp | 2 +- engines/mortevielle/menu.h | 2 +- engines/mortevielle/mortevielle.cpp | 5 +++++ engines/mortevielle/mortevielle.h | 5 +++++ engines/mortevielle/mouse.cpp | 2 +- engines/mortevielle/mouse.h | 2 +- engines/mortevielle/outtext.cpp | 2 +- engines/mortevielle/outtext.h | 2 +- engines/mortevielle/saveload.cpp | 2 +- engines/mortevielle/saveload.h | 2 +- engines/mortevielle/sound.cpp | 2 +- engines/mortevielle/sound.h | 2 +- engines/mortevielle/speech.cpp | 2 +- engines/mortevielle/speech.h | 2 +- 20 files changed, 36 insertions(+), 16 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 2f39b61bad..4e6dfb0cf0 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -22,7 +22,7 @@ /* * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor + * Copyright (c) 1987-1989 Lankhor */ #include "common/scummsys.h" diff --git a/engines/mortevielle/detection.cpp b/engines/mortevielle/detection.cpp index 994563d497..9fe0927706 100644 --- a/engines/mortevielle/detection.cpp +++ b/engines/mortevielle/detection.cpp @@ -51,7 +51,7 @@ public: } virtual const char *getOriginalCopyright() const { - return "Mortville Manor (C) 1988-89 Lankhor"; + return "Mortville Manor (C) 1987-89 Lankhor"; } virtual bool createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const; diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 1947705fe5..0a1cb420de 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -22,7 +22,7 @@ /* * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor + * Copyright (c) 1987-1989 Lankhor */ #include "common/str.h" diff --git a/engines/mortevielle/dialogs.h b/engines/mortevielle/dialogs.h index 1ed87456a9..740b5facd4 100644 --- a/engines/mortevielle/dialogs.h +++ b/engines/mortevielle/dialogs.h @@ -22,7 +22,7 @@ /* * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor + * Copyright (c) 1987-1989 Lankhor */ #ifndef MORTEVIELLE_ALERT_H diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index a49bda7b73..fec2cfbf6b 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -20,6 +20,11 @@ * */ +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1987-1989 Lankhor + */ + #include "common/endian.h" #include "common/system.h" #include "graphics/palette.h" diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 498322680d..03e0d016ec 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -20,6 +20,11 @@ * */ +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1987-1989 Lankhor + */ + #ifndef MORTEVIELLE_GRAPHICS_H #define MORTEVIELLE_GRAPHICS_H diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 1cfafb8ff1..99509f8490 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -22,7 +22,7 @@ /* * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor + * Copyright (c) 1987-1989 Lankhor */ #include "common/scummsys.h" diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index 37612edd06..03c091909e 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -22,7 +22,7 @@ /* * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor + * Copyright (c) 1987-1989 Lankhor */ #ifndef MORTEVIELLE_MENU_H diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 38355ec558..c93722cb54 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -20,6 +20,11 @@ * */ +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1987-1989 Lankhor + */ + #include "common/system.h" #include "common/config-manager.h" #include "common/debug-channels.h" diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 97bc814d61..3f5c133010 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -20,6 +20,11 @@ * */ +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1987-1989 Lankhor + */ + #ifndef MORTEVIELLE_H #define MORTEVIELLE_H diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index b46b1d6598..598677f762 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -22,7 +22,7 @@ /* * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor + * Copyright (c) 1987-1989 Lankhor */ #include "common/endian.h" diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index 0e235ad894..abfc315677 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -22,7 +22,7 @@ /* * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor + * Copyright (c) 1987-1989 Lankhor */ #ifndef MORTEVIELLE_MOUSE_H diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index e44dc989c6..9e903bb133 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -22,7 +22,7 @@ /* * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor + * Copyright (c) 1987-1989 Lankhor */ #include "common/file.h" diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index cc7bb1fb4a..25162981c6 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -22,7 +22,7 @@ /* * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor + * Copyright (c) 1987-1989 Lankhor */ #ifndef MORTEVIELLE_OUTTEXT_H diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index af00de265e..48ae04678d 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -22,7 +22,7 @@ /* * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor + * Copyright (c) 1987-1989 Lankhor */ #include "common/file.h" diff --git a/engines/mortevielle/saveload.h b/engines/mortevielle/saveload.h index a89fc9db89..21522102a2 100644 --- a/engines/mortevielle/saveload.h +++ b/engines/mortevielle/saveload.h @@ -22,7 +22,7 @@ /* * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor + * Copyright (c) 1987-1989 Lankhor */ #ifndef MORTEVIELLE_SAVELOAD_H diff --git a/engines/mortevielle/sound.cpp b/engines/mortevielle/sound.cpp index 9f0738c6c8..bb85221d75 100644 --- a/engines/mortevielle/sound.cpp +++ b/engines/mortevielle/sound.cpp @@ -22,7 +22,7 @@ /* * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor + * Copyright (c) 1987-1989 Lankhor */ #include "common/scummsys.h" diff --git a/engines/mortevielle/sound.h b/engines/mortevielle/sound.h index 9ad46e84d3..675fc78f78 100644 --- a/engines/mortevielle/sound.h +++ b/engines/mortevielle/sound.h @@ -22,7 +22,7 @@ /* * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor + * Copyright (c) 1987-1989 Lankhor */ #ifndef MORTEVIELLE_SOUND_H diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 09b0af730e..2c15db253d 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -22,7 +22,7 @@ /* * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor + * Copyright (c) 1987-1989 Lankhor */ #include "common/endian.h" diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h index 42be466a57..c27f2bfc15 100644 --- a/engines/mortevielle/speech.h +++ b/engines/mortevielle/speech.h @@ -22,7 +22,7 @@ /* * This code is based on original Mortville Manor DOS source code - * Copyright (c) 1988-1989 Lankhor + * Copyright (c) 1987-1989 Lankhor */ #ifndef MORTEVIELLE_PAROLE_H -- cgit v1.2.3 From c7eba15ee74cc2b44b3a222b25eb149cc90b8009 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 29 Mar 2012 17:55:18 +0200 Subject: MORTEVIELLE: Fix regression in 4edc3bff94b4cb27b32f46a4934bf486ab834e1c --- engines/mortevielle/actions.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 4e6dfb0cf0..cf68d7d496 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -68,9 +68,7 @@ void MortevielleEngine::fctMove() { } else if (_num == 7) { _coreVar._currPlace = ATTIC; _menu.setDestinationText(ATTIC); - } - - if (_num != 6) + } else if (_num != 6) _coreVar._currPlace = ROOM26; if ((_num > 1) && (_num < 6)) -- cgit v1.2.3 From d31151eb5532bb72acc407b3e02a5b973dcbdc4e Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 29 Mar 2012 19:15:12 +0200 Subject: MORTEVIELLE: Fix regression in 2c73b82b8ee95f9809af5e0d9893245f2c57247e --- engines/mortevielle/mortevielle.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index c93722cb54..a5c5dab2e9 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -2243,8 +2243,7 @@ Common::String MortevielleEngine::getString(int num) { char let; do { cinq_huit(let, hint, point, endFl); - if (length < 254) - wrkStr += let; + wrkStr += let; ++length; } while (!endFl); } -- cgit v1.2.3 From 025d3a9eee31b344ec4f4efc9a89d2f9e67f9802 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 30 May 2012 23:28:11 +0200 Subject: MORTEVIELLE: Some renaming --- engines/mortevielle/dialogs.cpp | 145 ++++++++++++++++++++-------------------- engines/mortevielle/dialogs.h | 2 +- 2 files changed, 74 insertions(+), 73 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 0a1cb420de..b2be026ff5 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -39,41 +39,38 @@ namespace Mortevielle { * @remarks Originally called 'do_alert' */ int Alert::show(const Common::String &msg, int n) { - int coldep, esp, i, caseNumb, quoi, ix; - Common::String st, chaine; - int limit[3][3]; - Common::String s[3]; - Common::Point curPos; - int nbcol, lignNumb; - bool newaff, test, test1, test2, test3, dum; - Common::String cas; - // Make a copy of the current screen surface for later restore g_vm->_backgroundSurface.copyFrom(g_vm->_screenSurface); - memset(&limit[0][0], 0, sizeof(int) * 3 * 3); - int do_alert_result; g_vm->_mouse.hideMouse(); while (g_vm->keyPressed()) g_vm->getChar(); g_vm->setMouseClick(false); - decodeAlertDetails(msg, caseNumb, lignNumb, nbcol, chaine, cas); + + int colNumb = 0; + int lignNumb = 0; + int caseNumb = 0; + Common::String alertStr = ""; + Common::String caseStr; + + decodeAlertDetails(msg, caseNumb, lignNumb, colNumb, alertStr, caseStr); g_vm->sauvecr(50, (NUM_LINES + 1) << 4); - i = 0; - if (chaine == "") { - drawAlertBox(10, 5, nbcol); + int i = 0; + Common::Point curPos; + if (alertStr == "") { + drawAlertBox(10, 5, colNumb); } else { - drawAlertBox(8, 7, nbcol); + drawAlertBox(8, 7, colNumb); i = 0; g_vm->_screenSurface._textPos.y = 70; do { curPos.x = 320; - st = ""; - while ((chaine[i + 1] != '\174') && (chaine[i + 1] != '\135')) { + Common::String displayStr = ""; + while ((alertStr[i + 1] != '\174') && (alertStr[i + 1] != '\135')) { ++i; - st = st + chaine[i]; + displayStr += alertStr[i]; if (g_vm->_res == 2) curPos.x -= 3; else @@ -81,78 +78,87 @@ int Alert::show(const Common::String &msg, int n) { } g_vm->_screenSurface.putxy(curPos.x, g_vm->_screenSurface._textPos.y); g_vm->_screenSurface._textPos.y += 6; - g_vm->_screenSurface.drawString(st, 4); + g_vm->_screenSurface.drawString(displayStr, 4); ++i; - } while (chaine[i] != ']'); + } while (alertStr[i] != ']'); } + int esp; if (caseNumb == 1) - esp = nbcol - 40; + esp = colNumb - 40; else - esp = (uint)(nbcol - caseNumb * 40) >> 1; - coldep = 320 - ((uint)nbcol >> 1) + ((uint)esp >> 1); - setButtonText(cas, coldep, caseNumb, &s[0], esp); - limit[1][1] = ((uint)(coldep) >> 1) * g_vm->_res; + esp = (uint)(colNumb - caseNumb * 40) / 2; + + int coldep = 320 - ((uint)colNumb / 2) + ((uint)esp / 2); + Common::String buttonStr[3]; + setButtonText(caseStr, coldep, caseNumb, &buttonStr[0], esp); + + int limit[3][3]; + memset(&limit[0][0], 0, sizeof(int) * 3 * 3); + + limit[1][1] = ((uint)(coldep) / 2) * g_vm->_res; limit[1][2] = limit[1][1] + 40; if (caseNumb == 1) { limit[2][1] = limit[2][2]; } else { - limit[2][1] = ((uint)(320 + ((uint)esp >> 1)) >> 1) * g_vm->_res; + limit[2][1] = ((uint)(320 + ((uint)esp >> 1)) / 2) * g_vm->_res; limit[2][2] = (limit[2][1]) + 40; } g_vm->_mouse.showMouse(); - quoi = 0; - dum = false; + int id = 0; + bool dummyFl = false; + bool test3; do { char dummyKey = '\377'; - g_vm->_mouse.moveMouse(dum, dummyKey); + g_vm->_mouse.moveMouse(dummyFl, dummyKey); CHECK_QUIT0; curPos = g_vm->_mouse._pos; - test = (curPos.y > 95) && (curPos.y < 105); - newaff = false; - if (test) { - test1 = (curPos.x > limit[1][1]) && (curPos.x < limit[1][2]); - test2 = test1; + bool newaff = false; + if ((curPos.y > 95) && (curPos.y < 105)) { + bool test1 = (curPos.x > limit[1][1]) && (curPos.x < limit[1][2]); + bool test2 = test1; if (caseNumb > 1) - test2 = test1 || ((curPos.x > limit[2][1]) && (curPos.x < limit[2][2])); + test2 |= ((curPos.x > limit[2][1]) && (curPos.x < limit[2][2])); if (test2) { newaff = true; + + int ix; if (test1) ix = 1; else ix = 2; - if (ix != quoi) { + if (ix != id) { g_vm->_mouse.hideMouse(); - if (quoi != 0) { - setPosition(quoi, coldep, esp); + if (id != 0) { + setPosition(id, coldep, esp); - Common::String tmp(" "); - tmp += s[quoi]; - tmp += " "; - g_vm->_screenSurface.drawString(tmp, 0); + Common::String tmpStr(" "); + tmpStr += buttonStr[id]; + tmpStr += " "; + g_vm->_screenSurface.drawString(tmpStr, 0); } setPosition(ix, coldep, esp); Common::String tmp2 = " "; - tmp2 += s[ix]; + tmp2 += buttonStr[ix]; tmp2 += " "; g_vm->_screenSurface.drawString(tmp2, 1); - quoi = ix; + id = ix; g_vm->_mouse.showMouse(); } } } - if ((quoi != 0) && ! newaff) { + if ((id != 0) && !newaff) { g_vm->_mouse.hideMouse(); - setPosition(quoi, coldep, esp); + setPosition(id, coldep, esp); Common::String tmp3(" "); - tmp3 += s[quoi]; + tmp3 += buttonStr[id]; tmp3 += " "; g_vm->_screenSurface.drawString(tmp3, 0); - quoi = 0; + id = 0; g_vm->_mouse.showMouse(); } test3 = (curPos.y > 95) && (curPos.y < 105) && (((curPos.x > limit[1][1]) && (curPos.x < limit[1][2])) @@ -161,21 +167,20 @@ int Alert::show(const Common::String &msg, int n) { g_vm->setMouseClick(false); g_vm->_mouse.hideMouse(); if (!test3) { - quoi = n; + id = n; setPosition(n, coldep, esp); Common::String tmp4(" "); - tmp4 += s[n]; + tmp4 += buttonStr[n]; tmp4 += " "; g_vm->_screenSurface.drawString(tmp4, 1); } - g_vm->charecr(50, (NUM_LINES + 1) << 4); + g_vm->charecr(50, (NUM_LINES + 1) * 16); g_vm->_mouse.showMouse(); /* Restore the background area */ g_vm->_screenSurface.copyFrom(g_vm->_backgroundSurface, 0, 0); - do_alert_result = quoi; - return do_alert_result; + return id; } /** @@ -233,10 +238,10 @@ void Alert::setPosition(int ji, int coldep, int esp) { void Alert::drawAlertBox(int lidep, int nli, int tx) { if (tx > 640) tx = 640; - int x = 320 - ((uint)tx >> 1); - int y = (lidep - 1) << 3; + int x = 320 - ((uint)tx / 2); + int y = (lidep - 1) * 8; int xx = x + tx; - int yy = y + (nli << 3); + int yy = y + (nli * 8); g_vm->_screenSurface.fillRect(15, Common::Rect(x, y, xx, yy)); g_vm->_screenSurface.fillRect(0, Common::Rect(x, y + 2, xx, y + 4)); g_vm->_screenSurface.fillRect(0, Common::Rect(x, yy - 4, xx, yy - 2)); @@ -247,16 +252,13 @@ void Alert::drawAlertBox(int lidep, int nli, int tx) { * @remarks Originally called 'fait_choix' */ void Alert::setButtonText(Common::String c, int coldep, int nbcase, Common::String *str, int esp) { - int i, l, x; - char ch; - - i = 1; - x = coldep; - for (l = 1; l <= nbcase; ++l) { + int i = 1; + int x = coldep; + for (int l = 1; l <= nbcase; ++l) { str[l] = ""; do { ++i; - ch = c[i]; + char ch = c[i]; str[l] += ch; } while (c[i + 1] != ']'); i += 2; @@ -284,12 +286,6 @@ bool KnowledgeCheck::show() { const int textIndexArr[10] = {511, 516, 524, 531, 545, 552, 559, 563, 570, 576}; const int correctAnswerArr[10] = {4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }; - char key; - int optionPosY; - int maxLength; - int rep; - int firstOption, lastOption; - Hotspot coor[kMaxHotspots+1]; for (int i = 0; i <= kMaxHotspots; ++i) { @@ -315,6 +311,9 @@ bool KnowledgeCheck::show() { Common::String tmpStr = g_vm->getString(textIndexArr[indx]); g_vm->_text.displayStr(tmpStr, 20, 15, 100, 2, 0); + int firstOption; + int lastOption; + if (indx != 9) { firstOption = textIndexArr[indx] + 1; lastOption = textIndexArr[indx + 1] - 1; @@ -322,8 +321,8 @@ bool KnowledgeCheck::show() { firstOption = 503; lastOption = 510; } - optionPosY = 35; - maxLength = 0; + int optionPosY = 35; + int maxLength = 0; prevChoice = 1; for (int j = firstOption; j <= lastOption; ++j, ++prevChoice) { @@ -344,6 +343,7 @@ bool KnowledgeCheck::show() { } } coor[lastOption - firstOption + 2]._enabled = false; + int rep; if (g_vm->_res == 1) rep = 10; else @@ -356,6 +356,7 @@ bool KnowledgeCheck::show() { do { g_vm->setMouseClick(false); bool flag; + char key; g_vm->_mouse.moveMouse(flag, key); CHECK_QUIT0; diff --git a/engines/mortevielle/dialogs.h b/engines/mortevielle/dialogs.h index 740b5facd4..9b980af379 100644 --- a/engines/mortevielle/dialogs.h +++ b/engines/mortevielle/dialogs.h @@ -48,7 +48,7 @@ private: static void drawAlertBox(int lidep, int nli, int tx); static void setButtonText(Common::String c, int coldep, int nbcase, Common::String *str, int esp); public: - static int show(const Common::String &s, int n); + static int show(const Common::String &msg, int n); }; class KnowledgeCheck { -- cgit v1.2.3 From 4c9c1e17d174528877a5b0b9e175c9853c833d50 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 30 May 2012 23:29:25 +0200 Subject: TOOLS: Translate a couple of strings used in Mortevielle English --- devtools/create_mortdat/enginetext.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/devtools/create_mortdat/enginetext.h b/devtools/create_mortdat/enginetext.h index 68db310a6b..c4929141d3 100644 --- a/devtools/create_mortdat/enginetext.h +++ b/devtools/create_mortdat/enginetext.h @@ -30,9 +30,9 @@ const char *engineDataEn[] = { "[2][ ][YES][NO]", "Go to", "Someone enters, looks surised, but says nothing", - "Cool", - " Lourde ", - "Malsaine", + " Cool ", + "Oppressive", + " Tense ", "Idem", "You", "are", @@ -47,14 +47,14 @@ const char *engineDataEn[] = { " Save", " Load", - " Restart ", + " Restart", "F3: Repeat", "F8: Proceed", "Hide self", "take", " probe ", " raise ", - " -SUITE- ", + " -MORE- ", " -STOP- ", "[1] [So, use the DEP menu] [Ok]", "lift", -- cgit v1.2.3 From 47a9db86a17e5735a75c518ddd8a783cf30ae005 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 14 Jun 2012 18:47:03 +0200 Subject: MORTEVIELLE: Fix recurrent Valgrind warnings (thanks DrMcCoy for reporting) --- engines/mortevielle/mortevielle.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index a5c5dab2e9..21f2ba314e 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -112,7 +112,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _place = -1; _c_zzz = -1; - + _caff = -1; } MortevielleEngine::~MortevielleEngine() { @@ -489,6 +489,8 @@ static byte CURSOR_ARROW_DATA[16 * 16] = { void MortevielleEngine::initMouse() { CursorMan.replaceCursor(CURSOR_ARROW_DATA, 16, 16, 0, 0, 0xff); CursorMan.showMouse(true); + + _mouse.initMouse(); } /** -- cgit v1.2.3 From 200436dc60d5b96af46e87d88671fc635f94f16b Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 15 Jun 2012 00:27:59 +0200 Subject: MORTEVIELLE: Initialize some more variables --- engines/mortevielle/mortevielle.cpp | 2 ++ engines/mortevielle/speech.cpp | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 21f2ba314e..8ff7d02c9e 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -113,6 +113,8 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _c_zzz = -1; _caff = -1; + + memset(_mem, 0, sizeof(_mem)); } MortevielleEngine::~MortevielleEngine() { diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 2c15db253d..0d06edcd48 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -58,6 +58,14 @@ const byte _tabdbc[18] = {7, 23, 7, 14, 13, 9, 14, 9, 5, 12, 6, 12, 13, 4, 0, 4, SpeechManager::SpeechManager() { _typlec = 0; _phonemeNumb = 0; + + for (int i = 0; i < 3; i++) { + _queue[i]._val; + _queue[i]._code; + _queue[i]._acc; + _queue[i]._freq; + _queue[i]._rep; + } } void SpeechManager::spfrac(int wor) { -- cgit v1.2.3 From 39e2f21bae36b71e54a7f1698cab77715f4e7017 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 15 Jun 2012 00:27:59 +0200 Subject: MORTEVIELLE: Initialize some more variables --- engines/mortevielle/speech.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 0d06edcd48..853d6baae0 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -60,11 +60,11 @@ SpeechManager::SpeechManager() { _phonemeNumb = 0; for (int i = 0; i < 3; i++) { - _queue[i]._val; - _queue[i]._code; - _queue[i]._acc; - _queue[i]._freq; - _queue[i]._rep; + _queue[i]._val = 0; + _queue[i]._code = 0; + _queue[i]._acc = 0; + _queue[i]._freq = 0; + _queue[i]._rep = 0; } } -- cgit v1.2.3 From 1274c02d1d1dc4c0af156e7f769e9155499b67a1 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 15 Jun 2012 20:39:03 +0200 Subject: MORTEVIELLE: Fix a couple of Valgrind warnings --- engines/mortevielle/mortevielle.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 8ff7d02c9e..58708f3bcb 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -113,8 +113,10 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _c_zzz = -1; _caff = -1; + _day = 0; memset(_mem, 0, sizeof(_mem)); + _anyone = false; } MortevielleEngine::~MortevielleEngine() { @@ -2483,11 +2485,12 @@ void MortevielleEngine::loadCFIEC() { } _cfiecBufferSize = ((f.size() / 128) + 1) * 128; + int32 fileSize = f.size(); if (!_reloadCFIEC) _cfiecBuffer = (byte *)malloc(sizeof(byte) * _cfiecBufferSize); - for (int i = 0; i < _cfiecBufferSize; ++i) + for (int32 i = 0; i < fileSize; ++i) _cfiecBuffer[i] = f.readByte(); f.close(); -- cgit v1.2.3 From e0ca30ad3da63f8dee025244b4ec6d4a719c1258 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 8 Oct 2012 08:00:00 +0200 Subject: MORTEVIELLE: Get rid of some magic values --- engines/mortevielle/actions.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index cf68d7d496..bff5d638ee 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -453,7 +453,7 @@ void MortevielleEngine::fctLook() { treg(147); if ((_coreVar._currPlace == GREEN_ROOM2) && (_num == 3)) treg(149); - if ((_coreVar._currPlace == 9) && (_num == 2)) + if ((_coreVar._currPlace == ROOM9) && (_num == 2)) treg(30); if ((_coreVar._currPlace == DINING_ROOM) && (_num == 3)) treg(31); @@ -610,7 +610,7 @@ void MortevielleEngine::fctOpen() { ++tmpPlace; } while (!((tmpPlace > 6) || (ord(_touv[tmpPlace]) == 0) || (ord(_touv[tmpPlace]) == _num))); if (ord(_touv[tmpPlace]) != _num) { - if (!( ((_num == 3) && ((_coreVar._currPlace == OWN_ROOM) || (_coreVar._currPlace == 9) || (_coreVar._currPlace == BLUE_ROOM) || (_coreVar._currPlace == BATHROOM))) + if (!( ((_num == 3) && ((_coreVar._currPlace == OWN_ROOM) || (_coreVar._currPlace == ROOM9) || (_coreVar._currPlace == BLUE_ROOM) || (_coreVar._currPlace == BATHROOM))) || ((_num == 4) && ((_coreVar._currPlace == GREEN_ROOM) || (_coreVar._currPlace == PURPLE_ROOM) || (_coreVar._currPlace == RED_ROOM))) || ((_coreVar._currPlace == DARKBLUE_ROOM) && (_num == 5)) || ((_num == 6) && ((_coreVar._currPlace == BATHROOM) || (_coreVar._currPlace == DINING_ROOM) || (_coreVar._currPlace == GREEN_ROOM2) || (_coreVar._currPlace == ATTIC))) @@ -926,7 +926,7 @@ void MortevielleEngine::fctKnock() { _speechManager.startSpeech(11, rand, 1); int p = getPresenceStats(rand, _coreVar._faithScore, _ment); int l = _ment; - if (l != 0) { + if (l != OWN_ROOM) { if (p != -500) { if (rand > p) _crep = 190; @@ -938,7 +938,7 @@ void MortevielleEngine::fctKnock() { getKnockAnswer(); } - if (_ment == 8) + if (_ment == GREEN_ROOM2) _crep = 190; } } @@ -1050,7 +1050,7 @@ void MortevielleEngine::fctListen() { int rand; int p = getPresenceStats(rand, _coreVar._faithScore, _ment); int l = _ment; - if (l != 0) { + if (l != OWN_ROOM) { if (p != -500) { if (rand > p) _crep = 101; -- cgit v1.2.3 From b2f2f8d7b08b40e43702e8db325f8136066f10be Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 10 Oct 2012 08:19:54 +0200 Subject: MORTEVIELLE: Some renaming --- engines/mortevielle/actions.cpp | 50 ++++++++++++++++++------------------- engines/mortevielle/mortevielle.cpp | 30 +++++++++++----------- engines/mortevielle/mortevielle.h | 14 +++++------ 3 files changed, 47 insertions(+), 47 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index bff5d638ee..f53dd91497 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -72,9 +72,9 @@ void MortevielleEngine::fctMove() { _coreVar._currPlace = ROOM26; if ((_num > 1) && (_num < 6)) - _ment = _num - 1; + _roomDoorId = _num - 1; else if (_num > 7) - _ment = _num - 3; + _roomDoorId = _num - 3; if (_num != 6) affrep(); @@ -207,10 +207,10 @@ void MortevielleEngine::fctTake() { } else { _tabdon[kAcha + ((_mchai - 1) * 10) + _cs - 1] = 0; tsuiv(); - ++_dobj; - if (_dobj > 6) { + ++_takeObjCount; + if (_takeObjCount > 6) { _coreVar._faithScore += 2; - _dobj = 0; + _takeObjCount = 0; } } } @@ -583,7 +583,7 @@ void MortevielleEngine::fctOpen() { ecr3(getEngineString(S_OPEN)); if (_caff == ROOM26) { - if (_ment != 0) { + if (_roomDoorId != OWN_ROOM) { _msg[4] = OPCODE_ENTER; _syn = true; } else @@ -604,7 +604,7 @@ void MortevielleEngine::fctOpen() { if (_num != 0) { if (_currBitIndex > 0) _coreVar._faithScore += 2; - ++_iouv; + ++_openObjCount; int tmpPlace = 0; do { ++tmpPlace; @@ -880,9 +880,9 @@ void MortevielleEngine::fctClose() { aniof(2, _num); _crep = 998; _touv[cx] = chr(0); - --_iouv; - if (_iouv < 0) - _iouv = 0; + --_openObjCount; + if (_openObjCount < 0) + _openObjCount = 0; int chai = 9999; rechai(chai); if (_mchai == chai) @@ -924,8 +924,8 @@ void MortevielleEngine::fctKnock() { if (_coreVar._currPlace == ROOM26) { int rand = (getRandomNumber(0, 8)) - 4; _speechManager.startSpeech(11, rand, 1); - int p = getPresenceStats(rand, _coreVar._faithScore, _ment); - int l = _ment; + int p = getPresenceStats(rand, _coreVar._faithScore, _roomDoorId); + int l = _roomDoorId; if (l != OWN_ROOM) { if (p != -500) { if (rand > p) @@ -938,7 +938,7 @@ void MortevielleEngine::fctKnock() { getKnockAnswer(); } - if (_ment == GREEN_ROOM2) + if (_roomDoorId == GREEN_ROOM2) _crep = 190; } } @@ -1048,8 +1048,8 @@ void MortevielleEngine::fctListen() { if (_currBitIndex != 0) ++_coreVar._faithScore; int rand; - int p = getPresenceStats(rand, _coreVar._faithScore, _ment); - int l = _ment; + int p = getPresenceStats(rand, _coreVar._faithScore, _roomDoorId); + int l = _roomDoorId; if (l != OWN_ROOM) { if (p != -500) { if (rand > p) @@ -1126,17 +1126,17 @@ void MortevielleEngine::fctEnter() { _menu.setDestinationText(_coreVar._currPlace); } else if (_coreVar._currPlace == LANDING) showMoveMenuAlert(); - else if (_ment == 0) + else if (_roomDoorId == OWN_ROOM) _crep = 997; - else if ((_ment == 9) && (_coreVar._selectedObjectId != 136)) { + else if ((_roomDoorId == ROOM9) && (_coreVar._selectedObjectId != 136)) { _crep = 189; _coreVar._teauto[8] = '*'; } else { int z = 0; if (!_blo) - z = getPresence(_ment); + z = getPresence(_roomDoorId); if (z != 0) { - if ((_ment == 3) || (_ment == 7)) + if ((_roomDoorId == TOILETS) || (_roomDoorId == BATHROOM)) _crep = 179; else { _x = (getRandomNumber(0, 10)) - 5; @@ -1149,26 +1149,26 @@ void MortevielleEngine::fctEnter() { _msg[3] = MENU_DISCUSS; _msg[4] = _menu._discussMenu[_x]; _syn = true; - if (_ment == 9) { + if (_roomDoorId == ROOM9) { _col = true; _caff = 70; afdes(); repon(2, _caff); } else _col = false; - resetRoomVariables(_ment); - _ment = 0; + resetRoomVariables(_roomDoorId); + _roomDoorId = OWN_ROOM; } } else { _x = (getRandomNumber(0, 10)) - 5; _speechManager.startSpeech(7, _x, 1); aniof(1, 1); - _coreVar._currPlace = _ment; + _coreVar._currPlace = _roomDoorId; affrep(); resetRoomVariables(_coreVar._currPlace); _menu.setDestinationText(_coreVar._currPlace); - _ment = 0; + _roomDoorId = OWN_ROOM; _savedBitIndex = 0; _currBitIndex = 0; } @@ -1460,7 +1460,7 @@ void MortevielleEngine::fctDiscuss() { if (_col) { _col = false; _coreVar._currPlace = 15; - if (_iouv > 0) + if (_openObjCount > 0) max = 8; else max = 4; diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 58708f3bcb..9f41292f49 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -111,7 +111,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _newGraphicalDevice = -1; _place = -1; - _c_zzz = -1; + _x26KeyCount = -1; _caff = -1; _day = 0; @@ -207,7 +207,7 @@ Common::ErrorCode MortevielleEngine::initialise() { loadCFIPH(); loadCFIEC(); decodeNumber(&_cfiecBuffer[161 * 16], (_cfiecBufferSize - (161 * 16)) / 64); - _c_zzz = 1; + _x26KeyCount = 1; init_nbrepm(); initMouse(); @@ -587,7 +587,7 @@ void MortevielleEngine::mainGame() { if (_reloadCFIEC) loadCFIEC(); - for (_crep = 1; _crep <= _c_zzz; ++_crep) + for (_crep = 1; _crep <= _x26KeyCount; ++_crep) decodeNumber(&_cfiecBuffer[161 * 16], ((822 * 128) - (161 * 16)) / 64); loadBRUIT5(); @@ -1679,8 +1679,8 @@ void MortevielleEngine::startMusicOrSpeech(int so) { */ void MortevielleEngine::loseGame() { initouv(); - _ment = 0; - _iouv = 0; + _roomDoorId = OWN_ROOM; + _openObjCount = 0; _mchai = 0; _menu.unsetSearchMenu(); if (!_blo) @@ -1892,14 +1892,14 @@ void MortevielleEngine::gameLoaded() { _endHour = 0; _cs = 0; _is = 0; - _ment = 0; + _roomDoorId = OWN_ROOM; _syn = true; _heroSearching = true; _mchai = 0; _manorDistance = 0; initouv(); - _iouv = 0; - _dobj = 0; + _openObjCount = 0; + _takeObjCount = 0; affrep(); _hintPctMessage = getString(580); @@ -3393,7 +3393,7 @@ void MortevielleEngine::affrep() { * @remarks Originally called 'tsort' */ void MortevielleEngine::exitRoom() { - if ((_iouv > 0) && (_coreVar._currPlace != OWN_ROOM)) { + if ((_openObjCount > 0) && (_coreVar._currPlace != OWN_ROOM)) { if (_coreVar._faithScore < 50) _coreVar._faithScore += 2; else @@ -3402,8 +3402,8 @@ void MortevielleEngine::exitRoom() { for (int cx = 1; cx <= 7; ++cx) _touv[cx] = chr(0); - _ment = 0; - _iouv = 0; + _roomDoorId = OWN_ROOM; + _openObjCount = 0; _mchai = 0; resetRoomVariables(_coreVar._currPlace); } @@ -3523,7 +3523,7 @@ L1: else _speechManager.startSpeech(4, 4, 1); - if (_iouv == 0) + if (_openObjCount == 0) _coreVar._faithScore += 2; else if (_coreVar._faithScore < 50) _coreVar._faithScore += 4; @@ -3568,7 +3568,7 @@ void MortevielleEngine::tsuiv() { tbcl = _tabdon[cl]; } while ((tbcl == 0) && (_cs <= 9)); - if ((tbcl != 0) && (_cs < 11)) { + if ((tbcl != 0) && (_cs < 11)) { // 2nd check useless as _cs is <= 10 ++_is; _caff = tbcl; _crep = _caff + 400; @@ -3759,9 +3759,9 @@ int MortevielleEngine::testou() { _soundOff = !_soundOff; break; case '\26' : - if ((_c_zzz == 1) || (_c_zzz == 2)) { + if ((_x26KeyCount == 1) || (_x26KeyCount == 2)) { decodeNumber(&_cfiecBuffer[161 * 16], (_cfiecBufferSize - (161 * 16)) / 64); - ++_c_zzz; + ++_x26KeyCount; return 61; } diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 3f5c133010..ec7e86f1fa 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -157,7 +157,7 @@ static const int _actionMenu[12] = { OPCODE_NONE, 26 "A photograph$", 27 "The coat of arms$", */ -enum places { +enum Places { OWN_ROOM = 0, GREEN_ROOM = 1, PURPLE_ROOM = 2, TOILETS = 3, DARKBLUE_ROOM = 4, BLUE_ROOM = 5, RED_ROOM = 6, BATHROOM = 7, GREEN_ROOM2 = 8, ROOM9 = 9, DINING_ROOM = 10, BUREAU = 11, KITCHEN = 12, ATTIC = 13, CELLAR = 14, @@ -173,7 +173,7 @@ struct nhom { byte _hom[4]; }; -struct t_pcga { +struct CgaPalette { byte _p; nhom _a[16]; }; @@ -260,12 +260,12 @@ private: int _startHour; int _endHour; Common::Point _stdPal[91][17]; - t_pcga _cgaPal[91]; + CgaPalette _cgaPal[91]; - int _c_zzz; - int _ment; - int _iouv; - int _dobj; + int _x26KeyCount; + int _roomDoorId; + int _openObjCount; + int _takeObjCount; int _num; int _cs; int _prebru; -- cgit v1.2.3 From bba9d9fc807a28dc485a8c214d7425cb95285636 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 10 Oct 2012 08:29:27 +0200 Subject: MORTEVIELLE: Fix merge --- engines/configure.engines | 1 + engines/plugins_table.h | 3 +++ 2 files changed, 4 insertions(+) diff --git a/engines/configure.engines b/engines/configure.engines index a8eb89a7fa..ee29e3223a 100644 --- a/engines/configure.engines +++ b/engines/configure.engines @@ -24,6 +24,7 @@ add_engine lastexpress "The Last Express" no "" "" "16bit" add_engine lure "Lure of the Temptress" yes add_engine made "MADE" yes add_engine mohawk "Mohawk" yes "cstime myst riven" "Living Books" +add_engine mortevielle "Mortevielle" no add_engine cstime "Where in Time is Carmen Sandiego?" no add_engine riven "Riven: The Sequel to Myst" no "" "" "16bit" add_engine myst "Myst" no "" "" "16bit" diff --git a/engines/plugins_table.h b/engines/plugins_table.h index 010de0d5e2..5097c87a9d 100644 --- a/engines/plugins_table.h +++ b/engines/plugins_table.h @@ -41,6 +41,9 @@ LINK_PLUGIN(HUGO) #if PLUGIN_ENABLED_STATIC(KYRA) LINK_PLUGIN(KYRA) #endif +#if PLUGIN_ENABLED_STATIC(MORTEVIELLE) +LINK_PLUGIN(MORTEVIELLE) +#endif #if PLUGIN_ENABLED_STATIC(LASTEXPRESS) LINK_PLUGIN(LASTEXPRESS) #endif -- cgit v1.2.3 From 6238c034fd20017ec6734a43ba4ad1c36c9741c2 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 11 Oct 2012 00:45:46 +0200 Subject: MORTEVIELLE: Some more renaming --- engines/mortevielle/actions.cpp | 64 +++++----- engines/mortevielle/dialogs.cpp | 4 +- engines/mortevielle/mortevielle.cpp | 235 +++++++++++++++++++----------------- engines/mortevielle/mortevielle.h | 18 +-- 4 files changed, 169 insertions(+), 152 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index f53dd91497..2e4a237d53 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -43,8 +43,8 @@ void MortevielleEngine::fctMove() { if ((_coreVar._currPlace == ROOM26) && (_msg[4] == _menu._moveMenu[6])) { _coreVar._currPlace = LANDING; _caff = _coreVar._currPlace; - afdes(); - repon(2, _coreVar._currPlace); + drawPictureWithText(); + handleDescriptionText(2, _coreVar._currPlace); } if ((_coreVar._currPlace == LANDING) && (_msg[4] == _menu._moveMenu[6])) { if (!_syn) @@ -314,7 +314,7 @@ void MortevielleEngine::fctInventoryTake() { _menu.setInventoryText(); avpoing(cz); _crep = 998; - clearScreenType2(); + clearDescriptionBar(); } /** @@ -686,7 +686,7 @@ void MortevielleEngine::fctPlace() { // Open hidden passage aniof(1, 2); aniof(1, 1); - repon(2, 165); + handleDescriptionText(2, 165); displayEmptyHand(); _speechManager.startSpeech(6, -9, 1); @@ -700,8 +700,8 @@ void MortevielleEngine::fctPlace() { _mouse.hideMouse(); hirs(); drawRightFrame(); - clearScreenType2(); - clearScreenType3(); + clearDescriptionBar(); + clearVerbBar(); _mouse.showMouse(); prepareRoom(); drawClock(); @@ -717,7 +717,7 @@ void MortevielleEngine::fctPlace() { } else { _menu.setDestinationText(_coreVar._currPlace); setPal(14); - dessin(); + drawPicture(); aniof(1, 2); aniof(1, 1); alertTxt = getString(577); @@ -788,7 +788,7 @@ void MortevielleEngine::fctTurn() { if (_num != 0) { _crep = 997; if ((_coreVar._currPlace == ATTIC) && (_coreVar._atticRodHoleObjectId == 159) && (_coreVar._atticBallHoleObjectId == 141)) { - repon(2, 167); + handleDescriptionText(2, 167); _speechManager.startSpeech(7, 9, 1); int answer = Alert::show(getEngineString(S_YES_NO), 1); if (answer == 1) @@ -797,8 +797,8 @@ void MortevielleEngine::fctTurn() { _crep = 168; } if ((_coreVar._currPlace == SECRET_PASSAGE) && (_coreVar._secretPassageObjectId == 143)) { - repon(2, 175); - clearScreenType3(); + handleDescriptionText(2, 175); + clearVerbBar(); _speechManager.startSpeech(6, -9, 1); int answer = Alert::show(getEngineString(S_YES_NO), 1); if (answer == 1) { @@ -1152,8 +1152,8 @@ void MortevielleEngine::fctEnter() { if (_roomDoorId == ROOM9) { _col = true; _caff = 70; - afdes(); - repon(2, _caff); + drawPictureWithText(); + handleDescriptionText(2, _caff); } else _col = false; resetRoomVariables(_roomDoorId); @@ -1190,12 +1190,12 @@ void MortevielleEngine::fctSleep() { exitRoom(); _coreVar._currPlace = OWN_ROOM; affrep(); - afdes(); + drawPictureWithText(); resetRoomVariables(_coreVar._currPlace); _menu.setDestinationText(_coreVar._currPlace); } - clearScreenType3(); - clearScreenType2(); + clearVerbBar(); + clearDescriptionBar(); prepareScreenType2(); ecr2(getEngineString(S_WANT_TO_WAKE_UP)); updateHour(j, h, m); @@ -1285,7 +1285,7 @@ void MortevielleEngine::fctLeave() { */ void MortevielleEngine::fctWait() { _savedBitIndex = 0; - clearScreenType3(); + clearVerbBar(); int answer; do { @@ -1304,7 +1304,7 @@ void MortevielleEngine::fctWait() { prepareRoom(); return; } - repon(2, 102); + handleDescriptionText(2, 102); answer = Alert::show(getEngineString(S_YES_NO), 1); } while (answer != 2); _crep = 998; @@ -1347,8 +1347,8 @@ void MortevielleEngine::fctDiscuss() { ++cx; } while (_menu._discussMenu[cx] != _msg[4]); _caff = 69 + cx; - afdes(); - repon(2, _caff); + drawPictureWithText(); + handleDescriptionText(2, _caff); suj = _caff + 60; } testKey(false); @@ -1522,7 +1522,7 @@ void MortevielleEngine::fctDiscuss() { affrep(); /* chech;*/ _menu.setDestinationText(_coreVar._currPlace); - clearScreenType3(); + clearVerbBar(); } /** @@ -1565,10 +1565,10 @@ void MortevielleEngine::endGame() { _quitGame = true; tlu(13, 152); displayEmptyHand(); - clearScreenType1(); - clearScreenType2(); - clearScreenType3(); - repon(9, 1509); + clearUpperLeftPart(); + clearDescriptionBar(); + clearVerbBar(); + handleDescriptionText(9, 1509); testKey(false); _mouse.hideMouse(); _caff = 70; @@ -1577,14 +1577,14 @@ void MortevielleEngine::endGame() { premtet(); startDialog(141); _mouse.showMouse(); - clearScreenType1(); - repon(9, 1509); - repon(2, 142); + clearUpperLeftPart(); + handleDescriptionText(9, 1509); + handleDescriptionText(2, 142); testKey(false); _caff = 32; - afdes(); - repon(6, 34); - repon(2, 35); + drawPictureWithText(); + handleDescriptionText(6, 34); + handleDescriptionText(2, 35); startMusicOrSpeech(0); testKey(false); // A wait message was displayed. @@ -1600,7 +1600,7 @@ void MortevielleEngine::endGame() { * @remarks Originally called 'tencore' */ void MortevielleEngine::askRestart() { - clearScreenType2(); + clearDescriptionBar(); startMusicOrSpeech(0); testKey(false); displayEmptyHand(); @@ -1612,7 +1612,7 @@ void MortevielleEngine::askRestart() { _minute = 0; _hour = 10; _day = 0; - repon(2, 180); + handleDescriptionText(2, 180); int answer = Alert::show(getEngineString(S_YES_NO), 1); _quitGame = (answer != 1); diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index b2be026ff5..f0f4452899 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -462,7 +462,7 @@ void f3f8::aff50(bool drawAni50Fl) { if (drawAni50Fl) ani50(); else - g_vm->repon(2, kDialogStringIndex + 142); + g_vm->handleDescriptionText(2, kDialogStringIndex + 142); // Draw the f3/f8 dialog draw(); @@ -474,7 +474,7 @@ void f3f8::ani50() { g_vm->_crep = g_vm->animof(2, 1); g_vm->pictout(kAdrAni, g_vm->_crep, 63, 12); g_vm->_largestClearScreen = (g_vm->_res == 1); - g_vm->repon(2, kDialogStringIndex + 143); + g_vm->handleDescriptionText(2, kDialogStringIndex + 143); } } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 9f41292f49..a6fda733f2 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -635,7 +635,7 @@ void MortevielleEngine::handleAction() { char inkey = '\0'; bool oo, funct = 0; - clearScreenType3(); + clearVerbBar(); oo = false; _controlMenu = 0; if (!_keyPressedEsc) { @@ -690,7 +690,7 @@ void MortevielleEngine::handleAction() { if ((funct) && (inkey != '\77')) return; if (temps > lim) { - repon(2, 141); + handleDescriptionText(2, 141); if (_num == 9999) _num = 0; } else { @@ -722,10 +722,10 @@ void MortevielleEngine::handleAction() { g_vm->_text.taffich(); if (_okdes) { _okdes = false; - dessin(); + drawPicture(); } if ((!_syn) || (_col)) - repon(2, _crep); + handleDescriptionText(2, _crep); } } while (_syn); if (_controlMenu != 0) @@ -883,7 +883,7 @@ void MortevielleEngine::showPeoplePresent(int bitIndex) { for (int i = 1; i <= 8; ++i) _menu.disableMenuItem(_menu._discussMenu[i]); - clearScreenType10(); + clearUpperRightPart(); if ((bitIndex & 128) == 128) { _screenSurface.putxy(xp, 24); _screenSurface.drawString("LEO", 4); @@ -1082,7 +1082,7 @@ void MortevielleEngine::displayAloneText() { Common::String sAre = getEngineString(S_ARE); Common::String sAlone = getEngineString(S_ALONE); - clearScreenType10(); + clearUpperRightPart(); _screenSurface.putxy(580 - (_screenSurface.getStringWidth(sYou) / 2), 30); _screenSurface.drawString(sYou, 4); _screenSurface.putxy(580 - (_screenSurface.getStringWidth(sAre) / 2), 50); @@ -1687,11 +1687,11 @@ void MortevielleEngine::loseGame() { getPresence(MANOR_FRONT); _loseGame = true; - clearScreenType1(); + clearUpperLeftPart(); _screenSurface.drawBox(60, 35, 400, 50, 15); - repon(9, _crep); - clearScreenType2(); - clearScreenType3(); + handleDescriptionText(9, _crep); + clearDescriptionBar(); + clearVerbBar(); _col = false; _syn = false; _okdes = false; @@ -1776,9 +1776,9 @@ void MortevielleEngine::gotoDiningRoom() { _currBitIndex = 255; // Everybody is present showPeoplePresent(_currBitIndex); _caff = 77; - afdes(); + drawPictureWithText(); _screenSurface.drawBox(223, 47, 155, 91, 15); - repon(2, 33); + handleDescriptionText(2, 33); testKey(false); mennor(); _mouse.hideMouse(); @@ -1861,11 +1861,11 @@ void MortevielleEngine::changeGraphicalDevice(int newDevice) { showPeoplePresent(_currBitIndex); else displayAloneText(); - clearScreenType2(); - clearScreenType3(); + clearDescriptionBar(); + clearVerbBar(); _maff = 68; - afdes(); - repon(2, _crep); + drawPictureWithText(); + handleDescriptionText(2, _crep); _menu.displayMenu(); } @@ -1911,9 +1911,9 @@ void MortevielleEngine::gameLoaded() { displayAloneText(); prepareRoom(); drawClock(); - afdes(); - repon(2, _crep); - clearScreenType3(); + drawPictureWithText(); + handleDescriptionText(2, _crep); + clearVerbBar(); _endGame = false; _menu.setDestinationText(_coreVar._currPlace); _menu.setInventoryText(); @@ -1928,7 +1928,7 @@ void MortevielleEngine::gameLoaded() { */ void MortevielleEngine::handleOpcode() { if (!_col) - clearScreenType2(); + clearDescriptionBar(); _syn = false; _keyPressedEsc = false; if (!_anyone) { @@ -2063,20 +2063,20 @@ void MortevielleEngine::charToHour() { } /** - * Engine function - Clear Screen - Type 1 + * Engine function - Clear upper left part of Screen - Type 1 * @remarks Originally called 'clsf1' */ -void MortevielleEngine::clearScreenType1() { +void MortevielleEngine::clearUpperLeftPart() { _mouse.hideMouse(); _screenSurface.fillRect(0, Common::Rect(0, 11, 514, 175)); _mouse.showMouse(); } /** - * Engine function - Clear Screen - Type 2 + * Engine function - Clear low bar used by description * @remarks Originally called 'clsf2' */ -void MortevielleEngine::clearScreenType2() { +void MortevielleEngine::clearDescriptionBar() { _mouse.hideMouse(); if (_largestClearScreen) { _screenSurface.fillRect(0, Common::Rect(1, 176, 633, 199)); @@ -2090,10 +2090,10 @@ void MortevielleEngine::clearScreenType2() { } /** - * Engine function - Clear Screen - Type 3 + * Engine function - Clear lowest bar used by verbs * @remarks Originally called 'clsf3' */ -void MortevielleEngine::clearScreenType3() { +void MortevielleEngine::clearVerbBar() { _mouse.hideMouse(); _screenSurface.fillRect(0, Common::Rect(1, 192, 633, 199)); _screenSurface.drawBox(0, 191, 634, 8, 15); @@ -2101,22 +2101,23 @@ void MortevielleEngine::clearScreenType3() { } /** - * Engine function - Clear Screen - Type 10 + * Engine function - Clear upper right part of the screen * @remarks Originally called 'clsf10' */ -void MortevielleEngine::clearScreenType10() { - int co, cod; +void MortevielleEngine::clearUpperRightPart() { + int x1, x2; Common::String st; _mouse.hideMouse(); if (_res == 1) { - co = 634; - cod = 534; + x2 = 634; + x1 = 534; } else { - co = 600; - cod = 544; + x2 = 600; + x1 = 544; } - _screenSurface.fillRect(15, Common::Rect(cod, 93, co, 98)); + // Clear ambiance description + _screenSurface.fillRect(15, Common::Rect(x1, 93, x2, 98)); if (_coreVar._faithScore < 33) st = getEngineString(S_COOL); else if (_coreVar._faithScore < 66) @@ -2124,12 +2125,12 @@ void MortevielleEngine::clearScreenType10() { else if (_coreVar._faithScore > 65) st = getEngineString(S_MALSAINE); - co = 580 - (_screenSurface.getStringWidth(st) / 2); - _screenSurface.putxy(co, 92); + x1 = 580 - (_screenSurface.getStringWidth(st) / 2); + _screenSurface.putxy(x1, 92); _screenSurface.drawString(st, 4); + // Clear person list _screenSurface.fillRect(15, Common::Rect(560, 24, 610, 86)); - /* rempli(69,12,32,5,255);*/ _mouse.showMouse(); } @@ -2555,7 +2556,7 @@ void MortevielleEngine::music() { */ void MortevielleEngine::showTitleScreen() { hirs(); - repon(7, 2035); + handleDescriptionText(7, 2035); _caff = 51; _text.taffich(); testKeyboard(); @@ -2736,12 +2737,12 @@ void MortevielleEngine::prepareRoom() { _brt = true; _startHour = readclock(); if (getRandomNumber(1, 5) < 5) { - clearScreenType3(); + clearVerbBar(); prepareScreenType2(); ecr3(getEngineString(S_HEAR_NOISE)); int rand = (getRandomNumber(0, 4)) - 2; _speechManager.startSpeech(1, rand, 1); - clearScreenType3(); + clearVerbBar(); } } } @@ -2860,7 +2861,7 @@ void MortevielleEngine::initCaveOrCellar() { _coreVar._faithScore += 2; if (_coreVar._faithScore > 69) _coreVar._faithScore += (_coreVar._faithScore / 10); - clearScreenType3(); + clearVerbBar(); prepareScreenType2(); ecr3(getEngineString(S_SOMEONE_ENTERS)); int rand = (getRandomNumber(0, 4)) - 2; @@ -2869,7 +2870,7 @@ void MortevielleEngine::initCaveOrCellar() { // The original was doing here a useless loop. // It has been removed - clearScreenType3(); + clearVerbBar(); displayAloneText(); } @@ -2878,7 +2879,7 @@ void MortevielleEngine::initCaveOrCellar() { * @remarks Originally called 'tctrm' */ void MortevielleEngine::displayControlMenu() { - repon(2, (3000 + _controlMenu)); + handleDescriptionText(2, (3000 + _controlMenu)); _controlMenu = 0; } @@ -2933,41 +2934,49 @@ int MortevielleEngine::animof(int ouf, int num) { return animof_result; } -void MortevielleEngine::text1(int x, int y, int nb, int m) { +/** + * Display text in description bar + * @remarks Originally called 'text1' + */ +void MortevielleEngine::displayTextInDescriptionBar(int x, int y, int nb, int mesgId) { int co; if (_res == 1) co = 10; else co = 6; - Common::String tmpStr = getString(m); + Common::String tmpStr = getString(mesgId); if ((y == 182) && ((int) tmpStr.size() * co > nb * 6)) y = 176; _text.displayStr(tmpStr, x, y, nb, 20, _textColor); } -void MortevielleEngine::repon(int f, int m) { - if ((m > 499) && (m < 563)) { - Common::String tmpStr = getString(m - 501 + kInventoryStringIndex); +/** + * Display description text + * @remarks Originally called 'repon' + */ +void MortevielleEngine::handleDescriptionText(int f, int mesgId) { + if ((mesgId > 499) && (mesgId < 563)) { + Common::String tmpStr = getString(mesgId - 501 + kInventoryStringIndex); if ((int) tmpStr.size() > ((58 + (_res - 1) * 37) << 1)) _largestClearScreen = true; else _largestClearScreen = false; - clearScreenType2(); + clearDescriptionBar(); _text.displayStr(tmpStr, 8, 176, 85, 3, 5); } else { - modif(m); + mapMessageId(mesgId); switch (f) { case 2: case 8: - clearScreenType2(); + clearDescriptionBar(); prepareScreenType2(); - text1(8, 182, 103, m); - if ((m == 68) || (m == 69)) + displayTextInDescriptionBar(8, 182, 103, mesgId); + if ((mesgId == 68) || (mesgId == 69)) _coreVar._teauto[40] = '*'; - if ((m == 104) && (_caff == 14)) { + if ((mesgId == 104) && (_caff == 14)) { _coreVar._teauto[36] = '*'; if (_coreVar._teauto[39] == '*') { _coreVar._pourc[3] = '*'; @@ -2984,12 +2993,12 @@ void MortevielleEngine::repon(int f, int m) { else i = 5; - Common::String tmpStr = getString(m); + Common::String tmpStr = getString(mesgId); _text.displayStr(tmpStr, 80, 40, 60, 25, i); - if (m == 180) + if (mesgId == 180) _coreVar._pourc[6] = '*'; - else if (m == 179) + else if (mesgId == 179) _coreVar._pourc[10] = '*'; } break; @@ -2999,43 +3008,47 @@ void MortevielleEngine::repon(int f, int m) { } } -void MortevielleEngine::modif(int &nu) { - if (nu == 26) - nu = 25; - else if ((nu > 29) && (nu < 36)) - nu -= 4; - else if ((nu > 69) && (nu < 78)) - nu -= 37; - else if ((nu > 99) && (nu < 194)) - nu -= 59; - else if ((nu > 996) && (nu < 1000)) - nu -= 862; - else if ((nu > 1500) && (nu < 1507)) - nu -= 1363; - else if ((nu > 1507) && (nu < 1513)) - nu -= 1364; - else if ((nu > 1999) && (nu < 2002)) - nu -= 1851; - else if (nu == 2010) - nu = 151; - else if ((nu > 2011) && (nu < 2025)) - nu -= 1860; - else if (nu == 2026) - nu = 165; - else if ((nu > 2029) && (nu < 2037)) - nu -= 1864; - else if ((nu > 3000) && (nu < 3005)) - nu -= 2828; - else if (nu == 4100) - nu = 177; - else if (nu == 4150) - nu = 178; - else if ((nu > 4151) && (nu < 4156)) - nu -= 3973; - else if (nu == 4157) - nu = 183; - else if ((nu == 4160) || (nu == 4161)) - nu -= 3976; +/** + * Recompute message Id + * @remarks Originally called 'modif' + */ +void MortevielleEngine::mapMessageId(int &mesgId) { + if (mesgId == 26) + mesgId = 25; + else if ((mesgId > 29) && (mesgId < 36)) + mesgId -= 4; + else if ((mesgId > 69) && (mesgId < 78)) + mesgId -= 37; + else if ((mesgId > 99) && (mesgId < 194)) + mesgId -= 59; + else if ((mesgId > 996) && (mesgId < 1000)) + mesgId -= 862; + else if ((mesgId > 1500) && (mesgId < 1507)) + mesgId -= 1363; + else if ((mesgId > 1507) && (mesgId < 1513)) + mesgId -= 1364; + else if ((mesgId > 1999) && (mesgId < 2002)) + mesgId -= 1851; + else if (mesgId == 2010) + mesgId = 151; + else if ((mesgId > 2011) && (mesgId < 2025)) + mesgId -= 1860; + else if (mesgId == 2026) + mesgId = 165; + else if ((mesgId > 2029) && (mesgId < 2037)) + mesgId -= 1864; + else if ((mesgId > 3000) && (mesgId < 3005)) + mesgId -= 2828; + else if (mesgId == 4100) + mesgId = 177; + else if (mesgId == 4150) + mesgId = 178; + else if ((mesgId > 4151) && (mesgId < 4156)) + mesgId -= 3973; + else if (mesgId == 4157) + mesgId = 183; + else if ((mesgId == 4160) || (mesgId == 4161)) + mesgId -= 3976; } void MortevielleEngine::initouv() { @@ -3057,7 +3070,7 @@ void MortevielleEngine::ecr2(Common::String text) { _screenSurface.drawString(copy(text, tlig, tlig << 1), 5); } else { _largestClearScreen = true; - clearScreenType2(); + clearDescriptionBar(); _screenSurface.putxy(8, 176); _screenSurface.drawString(copy(text, 1, (tlig - 1)), 5); _screenSurface.putxy(8, 182); @@ -3068,7 +3081,7 @@ void MortevielleEngine::ecr2(Common::String text) { } void MortevielleEngine::ecr3(Common::String text) { - clearScreenType3(); + clearVerbBar(); _screenSurface.putxy(8, 192); _screenSurface.drawString(text, 5); } @@ -3296,8 +3309,12 @@ void MortevielleEngine::aniof(int ouf, int num) { prepareScreenType1(); } -void MortevielleEngine::dessin() { - clearScreenType1(); +/** + * Draw Picture + * @remarks Originally called 'dessin' + */ +void MortevielleEngine::drawPicture() { + clearUpperLeftPart(); if (_caff > 99) { draw(kAdrDes, 60, 33); _screenSurface.drawBox(118, 32, 291, 121, 15); // Medium box @@ -3332,9 +3349,9 @@ void MortevielleEngine::dessin() { } } -void MortevielleEngine::afdes() { +void MortevielleEngine::drawPictureWithText() { _text.taffich(); - dessin(); + drawPicture(); _okdes = false; } @@ -3374,9 +3391,9 @@ void MortevielleEngine::testKey(bool d) { void MortevielleEngine::tlu(int af, int ob) { _caff = 32; - afdes(); - repon(6, ob + 4000); - repon(2, 999); + drawPictureWithText(); + handleDescriptionText(6, ob + 4000); + handleDescriptionText(2, 999); testKey(true); _caff = af; _msg[3] = OPCODE_NONE; @@ -3517,7 +3534,7 @@ L1: if (!_hiddenHero) { if (_crep == 997) _crep = 138; - repon(2, _crep); + handleDescriptionText(2, _crep); if (_crep == 138) _speechManager.startSpeech(5, 2, 1); else @@ -3544,10 +3561,10 @@ L1: _crep = 137; goto L1; } else { - repon(2, 136); + handleDescriptionText(2, 136); int rand = (getRandomNumber(0, 4)) - 2; _speechManager.startSpeech(3, rand, 1); - clearScreenType2(); + clearDescriptionBar(); displayAloneText(); resetRoomVariables(MANOR_FRONT); affrep(); @@ -3677,11 +3694,11 @@ void MortevielleEngine::treg(int objId) { _caff = objId; if (((_caff > 29) && (_caff < 33)) || (_caff == 144) || (_caff == 147) || (_caff == 149) || (_msg[4] == OPCODE_SLOOK)) { - afdes(); + drawPictureWithText(); if ((_caff > 29) && (_caff < 33)) - repon(2, _caff); + handleDescriptionText(2, _caff); else - repon(2, _caff + 400); + handleDescriptionText(2, _caff + 400); testKey(true); _caff = mdes; _msg[3] = 0; diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index ec7e86f1fa..20390af293 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -323,10 +323,10 @@ private: void endSearch(); int convertCharacterIndexToBitIndex(int characterIndex); int convertBitIndexToCharacterIndex(int bitIndex); - void clearScreenType1(); - void clearScreenType2(); - void clearScreenType3(); - void clearScreenType10(); + void clearUpperLeftPart(); + void clearDescriptionBar(); + void clearVerbBar(); + void clearUpperRightPart(); int getRandomNumber(int minval, int maxval); void showMoveMenuAlert(); void showConfigScreen(); @@ -424,8 +424,8 @@ private: void cinq_huit(char &c, int &idx, byte &pt, bool &the_end); void copcha(); void adzon(); - void text1(int x, int y, int nb, int m); - void modif(int &nu); + void displayTextInDescriptionBar(int x, int y, int nb, int mesgId); + void mapMessageId(int &mesgId); void initouv(); void phaz(int &rand, int &p, int cf); void writetp(Common::String s, int t); @@ -437,8 +437,8 @@ private: void ecr3(Common::String text); void init_nbrepm(); void aniof(int ouf, int num); - void dessin(); - void afdes(); + void drawPicture(); + void drawPictureWithText(); void tlu(int af, int ob); void affrep(); void mennor(); @@ -522,7 +522,7 @@ public: void hirs(); int testou(); - void repon(int f, int m); + void handleDescriptionText(int f, int mesgId); int animof(int ouf, int num); void pictout(int seg, int dep, int x, int y); void sauvecr(int y, int dy); -- cgit v1.2.3 From 957c220556b6c643a27bafc400f064addc853cd0 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 12 Oct 2012 07:31:30 +0200 Subject: MORTEVIELLE: Some more renaming --- engines/mortevielle/actions.cpp | 20 ++++++++++---------- engines/mortevielle/mortevielle.cpp | 37 ++++++++++++++++++++----------------- engines/mortevielle/mortevielle.h | 6 +++--- engines/mortevielle/outtext.cpp | 2 +- 4 files changed, 34 insertions(+), 31 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 2e4a237d53..9aca451685 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -52,7 +52,7 @@ void MortevielleEngine::fctMove() { tfleche(); if (_keyPressedEsc) - _okdes = false; + _destinationOk = false; if ((_anyone) || (_keyPressedEsc)) return; @@ -180,7 +180,7 @@ void MortevielleEngine::fctMove() { void MortevielleEngine::fctTake() { if (_caff > 99) { int cx = _caff; - avpoing(cx); + putInHand(cx); if (_crep != 139) { if (_currBitIndex > 0) _coreVar._faithScore += 3; @@ -236,34 +236,34 @@ void MortevielleEngine::fctTake() { _coreVar._faithScore += 3; _crep = 997; if ((_coreVar._currPlace == PURPLE_ROOM) && (_coreVar._purpleRoomObjectId != 0)) - avpoing(_coreVar._purpleRoomObjectId); + putInHand(_coreVar._purpleRoomObjectId); if ((_coreVar._currPlace == ATTIC) && (_num == 1) && (_coreVar._atticBallHoleObjectId != 0)) { - avpoing(_coreVar._atticBallHoleObjectId); + putInHand(_coreVar._atticBallHoleObjectId); if ((_crep != 997) && (_crep != 139)) aniof(2, 7); } if ((_coreVar._currPlace == ATTIC) && (_num == 2) && (_coreVar._atticRodHoleObjectId != 0)) { - avpoing(_coreVar._atticRodHoleObjectId); + putInHand(_coreVar._atticRodHoleObjectId); if ((_crep != 997) && (_crep != 139)) aniof(2, 6); } if ((_coreVar._currPlace == CELLAR) && (_coreVar._cellarObjectId != 0)) { - avpoing(_coreVar._cellarObjectId); + putInHand(_coreVar._cellarObjectId); if ((_crep != 997) && (_crep != 139)) aniof(2, 2); } if ((_coreVar._currPlace == CRYPT) && (_coreVar._cryptObjectId != 0)) - avpoing(_coreVar._cryptObjectId); + putInHand(_coreVar._cryptObjectId); if ((_coreVar._currPlace == SECRET_PASSAGE) && (_coreVar._secretPassageObjectId != 0)) { - avpoing(_coreVar._secretPassageObjectId); + putInHand(_coreVar._secretPassageObjectId); if ((_crep != 997) && (_crep != 139)) { _crep = 182; aniof(2, 1); } } if ((_coreVar._currPlace == WELL) && (_coreVar._wellObjectId != 0)) { - avpoing(_coreVar._wellObjectId); + putInHand(_coreVar._wellObjectId); if ((_crep != 997) && (_crep != 139)) aniof(2, 1); } @@ -312,7 +312,7 @@ void MortevielleEngine::fctInventoryTake() { cz = ord(_coreVar._sjer[cy]); _coreVar._sjer[cy] = chr(0); _menu.setInventoryText(); - avpoing(cz); + putInHand(cz); _crep = 998; clearDescriptionBar(); } diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index a6fda733f2..df80408b63 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -102,9 +102,9 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _col = false; _syn = false; _obpart = false; - _okdes = false; + _destinationOk = false; _anyone = false; - _brt = false; + _uptodatePresence = false; _textColor = 0; _currGraphicalDevice = -1; @@ -116,7 +116,6 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _day = 0; memset(_mem, 0, sizeof(_mem)); - _anyone = false; } MortevielleEngine::~MortevielleEngine() { @@ -720,8 +719,8 @@ void MortevielleEngine::handleAction() { if ((_controlMenu == 0) && (! _loseGame) && (! _endGame)) { g_vm->_text.taffich(); - if (_okdes) { - _okdes = false; + if (_destinationOk) { + _destinationOk = false; drawPicture(); } if ((!_syn) || (_col)) @@ -1694,7 +1693,7 @@ void MortevielleEngine::loseGame() { clearVerbBar(); _col = false; _syn = false; - _okdes = false; + _destinationOk = false; } /** @@ -1810,7 +1809,7 @@ void MortevielleEngine::checkManorDistance() { _crep = 1506; loseGame(); } else { - _okdes = true; + _destinationOk = true; _coreVar._currPlace = MOUNTAIN; affrep(); } @@ -1878,10 +1877,10 @@ void MortevielleEngine::gameLoaded() { _menu._menuDisplayed = false; _loseGame = true; _anyone = false; - _okdes = true; + _destinationOk = true; _col = false; _hiddenHero = false; - _brt = false; + _uptodatePresence = false; _maff = 68; _menuOpcode = OPCODE_NONE; _prebru = 0; @@ -1903,7 +1902,7 @@ void MortevielleEngine::gameLoaded() { affrep(); _hintPctMessage = getString(580); - _okdes = false; + _destinationOk = false; _endGame = true; _loseGame = false; _heroSearching = false; @@ -1932,7 +1931,7 @@ void MortevielleEngine::handleOpcode() { _syn = false; _keyPressedEsc = false; if (!_anyone) { - if (_brt) { + if (_uptodatePresence) { if ((_msg[3] == MENU_MOVE) || (_msg[4] == OPCODE_LEAVE) || (_msg[4] == OPCODE_SLEEP) || (_msg[4] == OPCODE_EAT)) { _controlMenu = 4; mennor(); @@ -2733,8 +2732,8 @@ void MortevielleEngine::prepareRoom() { initCaveOrCellar(); } else if (_currBitIndex == 10) { _currBitIndex = 0; - if (!_brt) { - _brt = true; + if (!_uptodatePresence) { + _uptodatePresence = true; _startHour = readclock(); if (getRandomNumber(1, 5) < 5) { clearVerbBar(); @@ -2753,9 +2752,9 @@ void MortevielleEngine::prepareRoom() { } } _endHour = readclock(); - if ((_brt) && ((_endHour - _startHour) > 17)) { + if ((_uptodatePresence) && ((_endHour - _startHour) > 17)) { getPresenceBitIndex(_place); - _brt = false; + _uptodatePresence = false; _startHour = 0; if ((_coreVar._currPlace > OWN_ROOM) && (_coreVar._currPlace < DINING_ROOM)) _anyone = true; @@ -3352,7 +3351,7 @@ void MortevielleEngine::drawPicture() { void MortevielleEngine::drawPictureWithText() { _text.taffich(); drawPicture(); - _okdes = false; + _destinationOk = false; } /** @@ -3710,7 +3709,11 @@ void MortevielleEngine::treg(int objId) { } } -void MortevielleEngine::avpoing(int &objId) { +/** + * Engine function - Put in hand + * @remarks Originally called 'avpoing' + */ +void MortevielleEngine::putInHand(int &objId) { _crep = 999; if (_coreVar._selectedObjectId != 0) ajjer(_coreVar._selectedObjectId); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 20390af293..390ff7a1ef 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -243,7 +243,7 @@ private: bool _syn; bool _obpart; bool _anyone; - bool _brt; + bool _uptodatePresence; int _textColor; int _place; @@ -445,7 +445,7 @@ private: void ajjer(int ob); void tsuiv(); void treg(int objId); - void avpoing(int &objId); + void putInHand(int &objId); void rechai(int &ch); void fenat(char ans); @@ -456,7 +456,7 @@ public: byte _tabdon[4001]; bool _soundOff; bool _blo; - bool _okdes; + bool _destinationOk; bool _largestClearScreen; int _currGraphicalDevice; int _newGraphicalDevice; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 9e903bb133..e105002f7c 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -242,7 +242,7 @@ void TextHandler::taffich() { break; } - g_vm->_okdes = true; + g_vm->_destinationOk = true; g_vm->_mouse.hideMouse(); lgt = 0; Common::String filename; -- cgit v1.2.3 From 121039101d1b48eaad9e2da6935ff008a02061d1 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 12 Oct 2012 07:46:58 +0200 Subject: MORTEVIELLE: Remove dead code. m was computed to in order to display a message while loading the next resource. As there are no more delays, the message isn't displayed anymore, thus it's useless to compute the message id. --- engines/mortevielle/actions.cpp | 1 - engines/mortevielle/mortevielle.cpp | 5 +---- engines/mortevielle/mortevielle.h | 2 +- engines/mortevielle/outtext.cpp | 23 ----------------------- 4 files changed, 2 insertions(+), 29 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 9aca451685..5bcaf4cf03 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -512,7 +512,6 @@ void MortevielleEngine::fctSearch() { rechai(_mchai); if (_mchai != 0) { _cs = 0; - _is = 0; _heroSearching = true; _menu.setSearchMenu(); tsuiv(); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index df80408b63..e4e9610f4a 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -1753,7 +1753,6 @@ void MortevielleEngine::endSearch() { _heroSearching = false; _obpart = false; _cs = 0; - _is = 0; _menu.unsetSearchMenu(); } @@ -1890,7 +1889,6 @@ void MortevielleEngine::gameLoaded() { _startHour = 0; _endHour = 0; _cs = 0; - _is = 0; _roomDoorId = OWN_ROOM; _syn = true; _heroSearching = true; @@ -3584,8 +3582,7 @@ void MortevielleEngine::tsuiv() { tbcl = _tabdon[cl]; } while ((tbcl == 0) && (_cs <= 9)); - if ((tbcl != 0) && (_cs < 11)) { // 2nd check useless as _cs is <= 10 - ++_is; + if ((tbcl != 0) && (_cs < 11)) { _caff = tbcl; _crep = _caff + 400; if (_currBitIndex != 0) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 390ff7a1ef..59fd6f645b 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -470,7 +470,7 @@ public: int _res; int _caff; int _crep; - byte _is; +// byte _is; byte _v_lieu[7][25]; // TODO: Replace the following with proper implementations, or refactor out the code using them diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index e105002f7c..e18c5c1692 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -248,29 +248,6 @@ void TextHandler::taffich() { Common::String filename; if ((a != 50) && (a != 51)) { - int m = a + 2000; - if ((m > 2001) && (m < 2010)) - m = 2001; - if (m == 2011) - m = 2010; - if (a == 32) - m = 2034; - if ((a == 17) && (g_vm->_maff == 14)) - m = 2018; - - if (a > 99) { - if ((g_vm->_is == 1) || (g_vm->_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) && (((g_vm->_maff > 69) && (!g_vm->_coreVar._alreadyEnteredManor)) || (g_vm->_maff > 99))) || ((g_vm->_maff > 29) && (g_vm->_maff < 33))) - m = 2033; - g_vm->_maff = a; if (a == 159) a = 86; -- cgit v1.2.3 From c33462da12e9704ad196edf29ee48d0c90d0f0d7 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 13 Oct 2012 12:10:48 +0200 Subject: MORTEVIELLE: More renaming --- engines/mortevielle/actions.cpp | 65 ++++++++++++++++++++++--------------- engines/mortevielle/mortevielle.cpp | 50 ++++++++++++++-------------- engines/mortevielle/mortevielle.h | 23 +++++++------ 3 files changed, 74 insertions(+), 64 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 5bcaf4cf03..1bf64cca0f 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -205,7 +205,7 @@ void MortevielleEngine::fctTake() { _obpart = false; affrep(); } else { - _tabdon[kAcha + ((_mchai - 1) * 10) + _cs - 1] = 0; + _tabdon[kAcha + ((_mchai - 1) * 10) + _searchCount - 1] = 0; tsuiv(); ++_takeObjCount; if (_takeObjCount > 6) { @@ -502,8 +502,8 @@ void MortevielleEngine::fctSearch() { int cx = 0; do { ++cx; - } while ((cx <= 6) && (_num != ord(_touv[cx]))); - if (_num != ord(_touv[cx])) + } while ((cx <= 6) && (_num != ord(_openObjects[cx]))); + if (_num != ord(_openObjects[cx])) _crep = 187; else { if (_currBitIndex > 0) @@ -511,7 +511,7 @@ void MortevielleEngine::fctSearch() { rechai(_mchai); if (_mchai != 0) { - _cs = 0; + _searchCount = 0; _heroSearching = true; _menu.setSearchMenu(); tsuiv(); @@ -590,7 +590,7 @@ void MortevielleEngine::fctOpen() { return; } - if (_caff == 15) { + if (_caff == LANDING) { showMoveMenuAlert(); return; } @@ -607,21 +607,31 @@ void MortevielleEngine::fctOpen() { int tmpPlace = 0; do { ++tmpPlace; - } while (!((tmpPlace > 6) || (ord(_touv[tmpPlace]) == 0) || (ord(_touv[tmpPlace]) == _num))); - if (ord(_touv[tmpPlace]) != _num) { - if (!( ((_num == 3) && ((_coreVar._currPlace == OWN_ROOM) || (_coreVar._currPlace == ROOM9) || (_coreVar._currPlace == BLUE_ROOM) || (_coreVar._currPlace == BATHROOM))) - || ((_num == 4) && ((_coreVar._currPlace == GREEN_ROOM) || (_coreVar._currPlace == PURPLE_ROOM) || (_coreVar._currPlace == RED_ROOM))) + } while (!((tmpPlace > 6) || (ord(_openObjects[tmpPlace]) == 0) || (ord(_openObjects[tmpPlace]) == _num))); + if (ord(_openObjects[tmpPlace]) != _num) { + if (!( ((_num == 3) && ((_coreVar._currPlace == OWN_ROOM) + || (_coreVar._currPlace == ROOM9) + || (_coreVar._currPlace == BLUE_ROOM) + || (_coreVar._currPlace == BATHROOM))) + || ((_num == 4) && ((_coreVar._currPlace == GREEN_ROOM) + || (_coreVar._currPlace == PURPLE_ROOM) + || (_coreVar._currPlace == RED_ROOM))) || ((_coreVar._currPlace == DARKBLUE_ROOM) && (_num == 5)) - || ((_num == 6) && ((_coreVar._currPlace == BATHROOM) || (_coreVar._currPlace == DINING_ROOM) || (_coreVar._currPlace == GREEN_ROOM2) || (_coreVar._currPlace == ATTIC))) + || ((_num == 6) && ((_coreVar._currPlace == BATHROOM) + || (_coreVar._currPlace == DINING_ROOM) + || (_coreVar._currPlace == GREEN_ROOM2) + || (_coreVar._currPlace == ATTIC))) || ((_coreVar._currPlace == GREEN_ROOM2) && (_num == 2)) || ((_coreVar._currPlace == KITCHEN) && (_num == 7))) ) { if ( ((_coreVar._currPlace > DINING_ROOM) && (_coreVar._currPlace < CELLAR)) || ((_coreVar._currPlace > RED_ROOM) && (_coreVar._currPlace < DINING_ROOM)) - || (_coreVar._currPlace == OWN_ROOM) || (_coreVar._currPlace == PURPLE_ROOM) || (_coreVar._currPlace == BLUE_ROOM)) { + || (_coreVar._currPlace == OWN_ROOM) + || (_coreVar._currPlace == PURPLE_ROOM) + || (_coreVar._currPlace == BLUE_ROOM)) { if (getRandomNumber(1, 4) == 3) _speechManager.startSpeech(7, 9, 1); } - _touv[tmpPlace] = chr(_num); + _openObjects[tmpPlace] = chr(_num); aniof(1, _num); } tmpPlace = _coreVar._currPlace; @@ -631,6 +641,7 @@ void MortevielleEngine::fctOpen() { if (_crep == 254) _crep = 999; } else + // display "Already Opened" _crep = 18; } } @@ -874,11 +885,11 @@ void MortevielleEngine::fctClose() { int cx = 0; do { ++cx; - } while ((cx <= 6) && (_num != ord(_touv[cx]))); - if (_num == ord(_touv[cx])) { + } while ((cx <= 6) && (_num != ord(_openObjects[cx]))); + if (_num == ord(_openObjects[cx])) { aniof(2, _num); _crep = 998; - _touv[cx] = chr(0); + _openObjects[cx] = chr(0); --_openObjCount; if (_openObjCount < 0) _openObjCount = 0; @@ -973,8 +984,8 @@ void MortevielleEngine::fctSelfPut() { int cx = 0; do { ++cx; - } while ((cx <= 6) && (_num != ord(_touv[cx]))); - if (_num != ord(_touv[cx])) + } while ((cx <= 6) && (_num != ord(_openObjects[cx]))); + if (_num != ord(_openObjects[cx])) _crep = 187; else { _mchai = chai; @@ -1106,7 +1117,7 @@ void MortevielleEngine::fctEat() { h = 1; } - _jh += h; + _currentHourCount += h; _crep = 135; prepareRoom(); } else { @@ -1138,15 +1149,15 @@ void MortevielleEngine::fctEnter() { if ((_roomDoorId == TOILETS) || (_roomDoorId == BATHROOM)) _crep = 179; else { - _x = (getRandomNumber(0, 10)) - 5; - _speechManager.startSpeech(7, _x, 1); + int randVal = (getRandomNumber(0, 10)) - 5; + _speechManager.startSpeech(7, randVal, 1); aniof(1, 1); - _x = convertBitIndexToCharacterIndex(z); + int charIndex = convertBitIndexToCharacterIndex(z); ++_coreVar._faithScore; _coreVar._currPlace = LANDING; _msg[3] = MENU_DISCUSS; - _msg[4] = _menu._discussMenu[_x]; + _msg[4] = _menu._discussMenu[charIndex]; _syn = true; if (_roomDoorId == ROOM9) { _col = true; @@ -1159,8 +1170,8 @@ void MortevielleEngine::fctEnter() { _roomDoorId = OWN_ROOM; } } else { - _x = (getRandomNumber(0, 10)) - 5; - _speechManager.startSpeech(7, _x, 1); + int randVal = (getRandomNumber(0, 10)) - 5; + _speechManager.startSpeech(7, randVal, 1); aniof(1, 1); _coreVar._currPlace = _roomDoorId; @@ -1206,10 +1217,10 @@ void MortevielleEngine::fctSleep() { z = (7 - h) * 2; if (m == 30) --z; - _jh += z; + _currentHourCount += z; h = 7; } - _jh += 2; + _currentHourCount += 2; ++h; if (h > 23) h = 0; @@ -1288,7 +1299,7 @@ void MortevielleEngine::fctWait() { int answer; do { - ++_jh; + ++_currentHourCount; prepareRoom(); if (!_blo) getPresence(_coreVar._currPlace); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index e4e9610f4a..68889b4796 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -791,7 +791,7 @@ void MortevielleEngine::prepareScreenType3() { */ void MortevielleEngine::updateHour(int &day, int &hour, int &minute) { int newHour = readclock(); - int th = _jh + ((newHour - _mh) / _t); + int th = _currentHourCount + ((newHour - _currentDayHour) / _inGameHourDuration); minute = ((th % 2) + _currHalfHour) * 30; hour = ((uint)th >> 1) + _currHour; if (minute == 60) { @@ -1455,11 +1455,11 @@ int MortevielleEngine::getPresenceBitIndex(int roomId) { */ void MortevielleEngine::initGame() { _place = MANOR_FRONT; - _jh = 0; + _currentHourCount = 0; if (!_coreVar._alreadyEnteredManor) _blo = true; - _t = kTime1; - _mh = readclock(); + _inGameHourDuration = kTime1; + _currentDayHour = readclock(); } /** @@ -1649,10 +1649,10 @@ void MortevielleEngine::startMusicOrSpeech(int so) { if (so == 0) { /* musik(0) */ ; - } else if ((_prebru == 0) && (!_coreVar._alreadyEnteredManor)) { + } else if ((!_introSpeechPlayed) && (!_coreVar._alreadyEnteredManor)) { // Type 1: Speech _speechManager.startSpeech(10, 1, 1); - ++_prebru; + _introSpeechPlayed = true; } else { if (((_coreVar._currPlace == MOUNTAIN) || (_coreVar._currPlace == MANOR_FRONT) || (_coreVar._currPlace == MANOR_BACK)) && (getRandomNumber(1, 3) == 2)) // Type 1: Speech @@ -1752,7 +1752,7 @@ void MortevielleEngine::startDialog(int16 rep) { void MortevielleEngine::endSearch() { _heroSearching = false; _obpart = false; - _cs = 0; + _searchCount = 0; _menu.unsetSearchMenu(); } @@ -1882,13 +1882,13 @@ void MortevielleEngine::gameLoaded() { _uptodatePresence = false; _maff = 68; _menuOpcode = OPCODE_NONE; - _prebru = 0; + _introSpeechPlayed = false; _x = 0; _y = 0; _num = 0; _startHour = 0; _endHour = 0; - _cs = 0; + _searchCount = 0; _roomDoorId = OWN_ROOM; _syn = true; _heroSearching = true; @@ -2667,22 +2667,22 @@ void MortevielleEngine::prepareRoom() { if (!_blo) { if ((hour == 12) || ((hour > 18) && (hour < 21)) || ((hour >= 0) && (hour < 7))) - _t = kTime2; + _inGameHourDuration = kTime2; else - _t = kTime1; + _inGameHourDuration = kTime1; cf = _coreVar._faithScore; if ((cf > 33) && (cf < 66)) - _t -= (_t / 3); + _inGameHourDuration -= (_inGameHourDuration / 3); if (cf > 65) - _t -= ((_t / 3) * 2); + _inGameHourDuration -= ((_inGameHourDuration / 3) * 2); - int nh = readclock(); - if ((nh - _mh) > _t) { + int newHour = readclock(); + if ((newHour - _currentDayHour) > _inGameHourDuration) { bool activeMenu = _menu._menuActive; _menu.eraseMenu(); - _jh += ((nh - _mh) / _t); - _mh = nh; + _currentHourCount += ((newHour - _currentDayHour) / _inGameHourDuration); + _currentDayHour = newHour; switch (_place) { case GREEN_ROOM: case DARKBLUE_ROOM: @@ -3050,7 +3050,7 @@ void MortevielleEngine::mapMessageId(int &mesgId) { void MortevielleEngine::initouv() { for (int cx = 1; cx <= 7; ++cx) - _touv[cx] = chr(0); + _openObjects[cx] = chr(0); } void MortevielleEngine::ecr2(Common::String text) { @@ -3323,8 +3323,8 @@ void MortevielleEngine::drawPicture() { prepareScreenType1(); if ((_caff < 30) || (_caff > 32)) { for (int cx = 1; cx <= 6; ++cx) { - if (ord(_touv[cx]) != 0) - aniof(1, ord(_touv[cx])); + if (ord(_openObjects[cx]) != 0) + aniof(1, ord(_openObjects[cx])); } if (_caff == 13) { @@ -3415,7 +3415,7 @@ void MortevielleEngine::exitRoom() { } for (int cx = 1; cx <= 7; ++cx) - _touv[cx] = chr(0); + _openObjects[cx] = chr(0); _roomDoorId = OWN_ROOM; _openObjCount = 0; _mchai = 0; @@ -3577,12 +3577,12 @@ void MortevielleEngine::tsuiv() { int cx = 0; do { ++cx; - ++_cs; - int cl = cy + _cs; + ++_searchCount; + int cl = cy + _searchCount; tbcl = _tabdon[cl]; - } while ((tbcl == 0) && (_cs <= 9)); + } while ((tbcl == 0) && (_searchCount <= 9)); - if ((tbcl != 0) && (_cs < 11)) { + if ((tbcl != 0) && (_searchCount < 11)) { _caff = tbcl; _crep = _caff + 400; if (_currBitIndex != 0) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 59fd6f645b..a57a304ad1 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -267,23 +267,22 @@ private: int _openObjCount; int _takeObjCount; int _num; - int _cs; - int _prebru; - int _t; + int _searchCount; + bool _introSpeechPlayed; + int _inGameHourDuration; int _x; int _y; - int _jh; - int _mh; - + int _currentHourCount; + int _currentDayHour; Common::String _hintPctMessage; - byte *_cfiecBuffer; - int _cfiecBufferSize; - byte _touv[8]; - int _nbrep[9]; - int _nbrepm[9]; + byte *_cfiecBuffer; + int _cfiecBufferSize; + byte _openObjects[8]; + int _nbrep[9]; + int _nbrepm[9]; uint16 _inpBuffer[kMaxTi + 1]; - Hint _ntpBuffer[kMaxTd + 1]; + Hint _ntpBuffer[kMaxTd + 1]; Common::ErrorCode initialise(); Common::ErrorCode loadMortDat(); -- cgit v1.2.3 From d7a9cfb80fd574643130f8ea43ff2f206627614c Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 13 Oct 2012 12:41:27 +0200 Subject: MORTEVIELLE: rework _openObjects use, rename resetOpenObjects --- engines/mortevielle/actions.cpp | 20 ++++++++++---------- engines/mortevielle/mortevielle.cpp | 24 +++++++++++++----------- engines/mortevielle/mortevielle.h | 4 ++-- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 1bf64cca0f..2f4af8538d 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -502,8 +502,8 @@ void MortevielleEngine::fctSearch() { int cx = 0; do { ++cx; - } while ((cx <= 6) && (_num != ord(_openObjects[cx]))); - if (_num != ord(_openObjects[cx])) + } while ((cx <= 6) && (_num != _openObjects[cx])); + if (_num != _openObjects[cx]) _crep = 187; else { if (_currBitIndex > 0) @@ -607,8 +607,8 @@ void MortevielleEngine::fctOpen() { int tmpPlace = 0; do { ++tmpPlace; - } while (!((tmpPlace > 6) || (ord(_openObjects[tmpPlace]) == 0) || (ord(_openObjects[tmpPlace]) == _num))); - if (ord(_openObjects[tmpPlace]) != _num) { + } while (!((tmpPlace > 6) || (_openObjects[tmpPlace] == 0) || (_openObjects[tmpPlace] == _num))); + if (_openObjects[tmpPlace] != _num) { if (!( ((_num == 3) && ((_coreVar._currPlace == OWN_ROOM) || (_coreVar._currPlace == ROOM9) || (_coreVar._currPlace == BLUE_ROOM) @@ -631,7 +631,7 @@ void MortevielleEngine::fctOpen() { if (getRandomNumber(1, 4) == 3) _speechManager.startSpeech(7, 9, 1); } - _openObjects[tmpPlace] = chr(_num); + _openObjects[tmpPlace] = _num; aniof(1, _num); } tmpPlace = _coreVar._currPlace; @@ -885,11 +885,11 @@ void MortevielleEngine::fctClose() { int cx = 0; do { ++cx; - } while ((cx <= 6) && (_num != ord(_openObjects[cx]))); - if (_num == ord(_openObjects[cx])) { + } while ((cx <= 6) && (_num != _openObjects[cx])); + if (_num == _openObjects[cx]) { aniof(2, _num); _crep = 998; - _openObjects[cx] = chr(0); + _openObjects[cx] = 0; --_openObjCount; if (_openObjCount < 0) _openObjCount = 0; @@ -984,8 +984,8 @@ void MortevielleEngine::fctSelfPut() { int cx = 0; do { ++cx; - } while ((cx <= 6) && (_num != ord(_openObjects[cx]))); - if (_num != ord(_openObjects[cx])) + } while ((cx <= 6) && (_num != _openObjects[cx])); + if (_num != _openObjects[cx]) _crep = 187; else { _mchai = chai; diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 68889b4796..088c8809cd 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -1677,9 +1677,8 @@ void MortevielleEngine::startMusicOrSpeech(int so) { * @remarks Originally called 'tperd' */ void MortevielleEngine::loseGame() { - initouv(); + resetOpenObjects(); _roomDoorId = OWN_ROOM; - _openObjCount = 0; _mchai = 0; _menu.unsetSearchMenu(); if (!_blo) @@ -1894,8 +1893,7 @@ void MortevielleEngine::gameLoaded() { _heroSearching = true; _mchai = 0; _manorDistance = 0; - initouv(); - _openObjCount = 0; + resetOpenObjects(); _takeObjCount = 0; affrep(); _hintPctMessage = getString(580); @@ -3048,9 +3046,14 @@ void MortevielleEngine::mapMessageId(int &mesgId) { mesgId -= 3976; } -void MortevielleEngine::initouv() { +/** + * Initialize open objects array + * @remarks Originally called 'initouv' + */ +void MortevielleEngine::resetOpenObjects() { for (int cx = 1; cx <= 7; ++cx) - _openObjects[cx] = chr(0); + _openObjects[cx] = 0; + _openObjCount = 0; } void MortevielleEngine::ecr2(Common::String text) { @@ -3323,8 +3326,8 @@ void MortevielleEngine::drawPicture() { prepareScreenType1(); if ((_caff < 30) || (_caff > 32)) { for (int cx = 1; cx <= 6; ++cx) { - if (ord(_openObjects[cx]) != 0) - aniof(1, ord(_openObjects[cx])); + if (_openObjects[cx] != 0) + aniof(1, _openObjects[cx]); } if (_caff == 13) { @@ -3414,10 +3417,9 @@ void MortevielleEngine::exitRoom() { _coreVar._faithScore += (_coreVar._faithScore / 10); } - for (int cx = 1; cx <= 7; ++cx) - _openObjects[cx] = chr(0); + resetOpenObjects(); + _roomDoorId = OWN_ROOM; - _openObjCount = 0; _mchai = 0; resetRoomVariables(_coreVar._currPlace); } diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index a57a304ad1..7e0f717142 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -278,7 +278,7 @@ private: Common::String _hintPctMessage; byte *_cfiecBuffer; int _cfiecBufferSize; - byte _openObjects[8]; + int _openObjects[8]; int _nbrep[9]; int _nbrepm[9]; uint16 _inpBuffer[kMaxTi + 1]; @@ -425,7 +425,7 @@ private: void adzon(); void displayTextInDescriptionBar(int x, int y, int nb, int mesgId); void mapMessageId(int &mesgId); - void initouv(); + void resetOpenObjects(); void phaz(int &rand, int &p, int cf); void writetp(Common::String s, int t); void premtet(); -- cgit v1.2.3 From ad3c7febd7b5f03d72b30e6ff1d0e8cbd2114b8f Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 14 Oct 2012 10:28:03 +0200 Subject: MORTEVIELLE: Some more renaming --- engines/mortevielle/actions.cpp | 159 +++++++++++++++++++----------------- engines/mortevielle/menu.cpp | 5 +- engines/mortevielle/mortevielle.cpp | 41 ++++++---- engines/mortevielle/mortevielle.h | 5 +- engines/mortevielle/mouse.cpp | 14 ++-- engines/mortevielle/mouse.h | 2 +- engines/mortevielle/saveload.cpp | 2 +- 7 files changed, 122 insertions(+), 106 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 2f4af8538d..6d8e095a3a 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -298,19 +298,19 @@ void MortevielleEngine::fctTake() { * @remarks Originally called 'tsprendre' */ void MortevielleEngine::fctInventoryTake() { - int cx = 0; + int inventIndex = 0; do { - ++cx; - } while (_menu._inventoryMenu[cx] != _msg[4]); + ++inventIndex; + } while (_menu._inventoryMenu[inventIndex] != _msg[4]); int cz = 0; int cy = 0; do { ++cy; - if (ord(_coreVar._sjer[cy]) != 0) + if (_coreVar._inventory[cy] != 0) ++cz; - } while (cz != cx); - cz = ord(_coreVar._sjer[cy]); - _coreVar._sjer[cy] = chr(0); + } while (cz != inventIndex); + cz = _coreVar._inventory[cy]; + _coreVar._inventory[cy] = 0; _menu.setInventoryText(); putInHand(cz); _crep = 998; @@ -1342,15 +1342,18 @@ void MortevielleEngine::fctSound() { * @remarks Originally called 'tparler' */ void MortevielleEngine::fctDiscuss() { - bool te[47]; - int cy, cx, max, suj, co, lig, icm, i, choi, x, y, c; - char tou; + bool questionAsked[47]; + int cy, cx; + int x, y; +// int c; Common::String lib[47]; - bool f; + + int choice; + int displId; endSearch(); if (_col) - suj = 128; + displId = 128; else { cx = 0; do { @@ -1359,54 +1362,55 @@ void MortevielleEngine::fctDiscuss() { _caff = 69 + cx; drawPictureWithText(); handleDescriptionText(2, _caff); - suj = _caff + 60; + displId = _caff + 60; } testKey(false); mennor(); _mouse.hideMouse(); hirs(); premtet(); - startDialog(suj); + startDialog(displId); hirs(); for (int ix = 1; ix <= 46; ++ix) - te[ix] = false; + questionAsked[ix] = false; for (int ix = 1; ix <= 45; ++ix) { lib[ix] = getString(ix + kQuestionStringIndex); - for (i = lib[ix].size(); i <= 40; ++i) + for (int i = lib[ix].size(); i <= 40; ++i) lib[ix] = lib[ix] + ' '; } lib[46] = lib[45]; lib[45] = ' '; _mouse.showMouse(); do { - choi = 0; - icm = 0; - co = 0; - lig = 0; - do { - ++icm; - _screenSurface.putxy(co, lig); + choice = 0; + int posX = 0; + int posY = 0; + for (int icm = 1; icm < 43; icm++) { + _screenSurface.putxy(posX, posY); if (_coreVar._teauto[icm] == '*') { - if (te[icm]) + // If question already asked, write it in reverse video + if (questionAsked[icm]) writetp(lib[icm], 1); else writetp(lib[icm], 0); } if (icm == 23) { - lig = 0; - co = 320; + posY = 0; + posX = 320; } else - lig = lig + 8; - } while (icm != 42); + posY += 8; + } _screenSurface.putxy(320, 176); writetp(lib[46], 0); - tou = '\0'; + char retKey = '\0'; + bool click; do { - _mouse.moveMouse(f, tou); + bool dummyFl; + _mouse.moveMouse(dummyFl, retKey); CHECK_QUIT; - _mouse.getMousePosition(x, y, c); + _mouse.getMousePosition(x, y, click); x *= (3 - _res); if (x > 319) cx = 41; @@ -1414,95 +1418,98 @@ void MortevielleEngine::fctDiscuss() { cx = 1; cy = ((uint)y >> 3) + 1; // 0-199 => 1-25 if ((cy > 23) || ((cx == 41) && ((cy >= 20) && (cy <= 22)))) { - if (choi != 0) { - lig = ((choi - 1) % 23) << 3; - if (choi > 23) - co = 320; + if (choice != 0) { + posY = ((choice - 1) % 23) << 3; + if (choice > 23) + posX = 320; else - co = 0; - _screenSurface.putxy(co, lig); - if (te[choi]) - writetp(lib[choi], 0); + posX = 0; + _screenSurface.putxy(posX, posY); + if (questionAsked[choice]) + writetp(lib[choice], 0); else - writetp(lib[choi], 1); - te[choi] = !te[choi]; - choi = 0; + writetp(lib[choice], 1); + questionAsked[choice] = !questionAsked[choice]; + choice = 0; } } else { int ix = cy; if (cx == 41) ix += 23; - if (ix != choi) { - if (choi != 0) { - lig = ((choi - 1) % 23) << 3; - if (choi > 23) - co = 320; + if (ix != choice) { + if (choice != 0) { + posY = ((choice - 1) % 23) << 3; + if (choice > 23) + posX = 320; else - co = 0; - _screenSurface.putxy(co, lig); - if (te[choi]) - writetp(lib[choi], 0); + posX = 0; + _screenSurface.putxy(posX, posY); + if (questionAsked[choice]) + writetp(lib[choice], 0); else - writetp(lib[choi], 1); - te[choi] = ! te[choi]; + writetp(lib[choice], 1); + questionAsked[choice] = ! questionAsked[choice]; } if ((_coreVar._teauto[ix] == '*') || (ix == 46)) { - lig = ((ix - 1) % 23) << 3; + posY = ((ix - 1) % 23) << 3; if (ix > 23) - co = 320; + posX = 320; else - co = 0; - _screenSurface.putxy(co, lig); - if (te[ix]) + posX = 0; + _screenSurface.putxy(posX, posY); + if (questionAsked[ix]) writetp(lib[ix], 0); else writetp(lib[ix], 1); - te[ix] = ! te[ix]; - choi = ix; + questionAsked[ix] = ! questionAsked[ix]; + choice = ix; } else - choi = 0; + choice = 0; } } - } while (!((tou == '\15') || (((c != 0) || getMouseClick()) && (choi != 0)))); + } while (!((retKey == '\15') || (((click != 0) || getMouseClick()) && (choice != 0)))); setMouseClick(false); - if (choi != 46) { - int ix = choi - 1; + + // If choice is not "End of Conversation" + if (choice != 46) { + int ix = choice - 1; if (_col) { _col = false; _coreVar._currPlace = 15; + int maxRandVal; if (_openObjCount > 0) - max = 8; + maxRandVal = 8; else - max = 4; - if (getRandomNumber(1, max) == 2) - suj = 129; + maxRandVal = 4; + if (getRandomNumber(1, maxRandVal) == 2) + displId = 129; else { - suj = 138; + displId = 138; _coreVar._faithScore += (3 * (_coreVar._faithScore / 10)); } } else if (_nbrep[_caff - 69] < _nbrepm[_caff - 69]) { - suj = _tabdon[kArep + (ix << 3) + (_caff - 70)]; + displId = _tabdon[kArep + (ix << 3) + (_caff - 70)]; _coreVar._faithScore += _tabdon[kArcf + ix]; ++_nbrep[_caff - 69]; } else { _coreVar._faithScore += 3; - suj = 139; + displId = 139; } _mouse.hideMouse(); hirs(); premtet(); - startDialog(suj); + startDialog(displId); _mouse.showMouse(); - if ((suj == 84) || (suj == 86)) { + if ((displId == 84) || (displId == 86)) { _coreVar._pourc[5] = '*'; _coreVar._teauto[7] = '*'; } - if ((suj == 106) || (suj == 108) || (suj == 94)) { + if ((displId == 106) || (displId == 108) || (displId == 94)) { for (int indx = 29; indx <= 31; ++indx) _coreVar._teauto[indx] = '*'; _coreVar._pourc[7] = '*'; } - if (suj == 70) { + if (displId == 70) { _coreVar._pourc[8] = '*'; _coreVar._teauto[32] = '*'; } @@ -1510,7 +1517,7 @@ void MortevielleEngine::fctDiscuss() { hirs(); _mouse.showMouse(); } - } while ((choi != 46) && (suj != 138)); + } while ((choice != 46) && (displId != 138)); if (_col) { _coreVar._faithScore += (3 * (_coreVar._faithScore / 10)); _mouse.hideMouse(); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 99509f8490..f03d6661e4 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -576,14 +576,13 @@ void Menu::unsetSearchMenu() { * @remarks Originally called 'modinv' */ void Menu::setInventoryText() { - int r; Common::String nomp; int cy = 0; for (int i = 1; i <= 6; ++i) { - if (g_vm->_coreVar._sjer[i] != chr(0)) { + if (g_vm->_coreVar._inventory[i] != 0) { ++cy; - r = (ord(g_vm->_coreVar._sjer[i]) + 400); + int r = g_vm->_coreVar._inventory[i] + 400; nomp = g_vm->getString(r - 501 + kInventoryStringIndex); setText(_inventoryMenu[cy], nomp); enableMenuItem(_inventoryMenu[i]); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 088c8809cd..782c811b1f 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -1702,7 +1702,7 @@ void MortevielleEngine::loseGame() { bool MortevielleEngine::checkInventory(int objectId) { bool retVal = false; for (int i = 1; i <= 6; ++i) - retVal = (retVal || (ord(_coreVar._sjer[i]) == objectId)); + retVal = (retVal || (_coreVar._inventory[i] == objectId)); if (_coreVar._selectedObjectId == objectId) retVal = true; @@ -2234,7 +2234,7 @@ Common::String MortevielleEngine::getString(int num) { Common::String wrkStr = ""; if (num < 0) { - warning("deline: num < 0! Skipping"); + warning("getString(%d): num < 0! Skipping", num); } else if (!_txxFileFl) { wrkStr = getGameString(num); } else { @@ -2285,9 +2285,11 @@ void MortevielleEngine::resetVariables() { _coreVar._currPlace = MANOR_FRONT; for (int i = 2; i <= 6; ++i) - _coreVar._sjer[i] = chr(0); + _coreVar._inventory[i] = 0; + + // Only object in inventory: a gun + _coreVar._inventory[1] = 113; - _coreVar._sjer[1] = chr(113); _coreVar._fullHour = chr(20); for (int i = 1; i <= 10; ++i) @@ -3361,7 +3363,8 @@ void MortevielleEngine::drawPictureWithText() { */ void MortevielleEngine::testKey(bool d) { bool quest = false; - int x, y, c; + int x, y; + bool click; _mouse.hideMouse(); fenat('K'); @@ -3371,18 +3374,18 @@ void MortevielleEngine::testKey(bool d) { _key = testou(); do { - _mouse.getMousePosition(x, y, c); + _mouse.getMousePosition(x, y, click); keyPressed(); - } while (c != 0); + } while (click); // Event loop do { if (d) prepareRoom(); quest = keyPressed(); - _mouse.getMousePosition(x, y, c); + _mouse.getMousePosition(x, y, click); CHECK_QUIT; - } while (!(quest || (c != 0) || (d && _anyone))); + } while (!(quest || (click) || (d && _anyone))); if (quest) testou(); setMouseClick(false); @@ -3506,16 +3509,21 @@ void MortevielleEngine::ajchai() { _crep = 192; } -void MortevielleEngine::ajjer(int ob) { - int cx = 0; +/** + * Check if inventory is full and, if not, add object in it. + * @remarks Originally called 'ajjer' + */ +void MortevielleEngine::addObjectToInventory(int objectId) { + int i = 0; do { - ++cx; - } while ((cx <= 5) && (ord(_coreVar._sjer[cx]) != 0)); + ++i; + } while ((i <= 5) && (_coreVar._inventory[i] != 0)); - if (ord(_coreVar._sjer[cx]) == 0) { - _coreVar._sjer[(cx)] = chr(ob); + if (_coreVar._inventory[i] == 0) { + _coreVar._inventory[i] = objectId; _menu.setInventoryText(); } else + // Inventory is full _crep = 139; } @@ -3715,8 +3723,9 @@ void MortevielleEngine::treg(int objId) { void MortevielleEngine::putInHand(int &objId) { _crep = 999; if (_coreVar._selectedObjectId != 0) - ajjer(_coreVar._selectedObjectId); + addObjectToInventory(_coreVar._selectedObjectId); + // If inventory wasn't full if (_crep != 139) { displayItemInHand(objId + 400); _coreVar._selectedObjectId = objId; diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 7e0f717142..1141f70026 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -187,7 +187,7 @@ struct SaveStruct { int _faithScore; byte _pourc[11]; byte _teauto[43]; - byte _sjer[31]; + byte _inventory[31]; int _currPlace; int _atticBallHoleObjectId; int _atticRodHoleObjectId; @@ -441,7 +441,7 @@ private: void tlu(int af, int ob); void affrep(); void mennor(); - void ajjer(int ob); + void addObjectToInventory(int objectId); void tsuiv(); void treg(int objId); void putInHand(int &objId); @@ -469,7 +469,6 @@ public: int _res; int _caff; int _crep; -// byte _is; byte _v_lieu[7][25]; // TODO: Replace the following with proper implementations, or refactor out the code using them diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 598677f762..96b40d8114 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -238,10 +238,10 @@ void MouseHandler::setMousePosition(Common::Point newPos) { * Get mouse poisition * @remarks Originally called 'read_pos_mouse' */ -void MouseHandler::getMousePosition(int &x, int &y, int &c) { +void MouseHandler::getMousePosition(int &x, int &y, bool &click) { x = g_vm->getMousePos().x; y = g_vm->getMousePos().y; - c = g_vm->getMouseClick() ? 1 : 0; + click = g_vm->getMouseClick(); } /** @@ -251,7 +251,8 @@ void MouseHandler::getMousePosition(int &x, int &y, int &c) { void MouseHandler::moveMouse(bool &funct, char &key) { bool p_key; char in1, in2; - int cx, cy, cd; + int cx, cy; + bool click; // Set defaults and check pending events funct = false; @@ -267,7 +268,7 @@ void MouseHandler::moveMouse(bool &funct, char &key) { CHECK_QUIT; in1 = g_vm->getChar(); - getMousePosition(cx, cy, cd); + getMousePosition(cx, cy, click); switch (toupper(in1)) { case '4': cx -= 8; @@ -408,9 +409,10 @@ void MouseHandler::moveMouse(bool &funct, char &key) { * @remarks Originally called 'dans_rect' */ bool MouseHandler::isMouseIn(Common::Rect r) { - int x, y, c; + int x, y; + bool click; - getMousePosition(x, y, c); + getMousePosition(x, y, click); if ((x > r.left) && (x < r.right) && (y > r.top) && (y < r.bottom)) return true; diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index abfc315677..58e3fc78d0 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -43,7 +43,7 @@ public: void hideMouse(); void showMouse(); void setMousePosition(Common::Point newPos); - void getMousePosition(int &x, int &y, int &c); + void getMousePosition(int &x, int &y, bool &click); void moveMouse(bool &funct, char &key); bool isMouseIn(Common::Rect r); }; diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 48ae04678d..e4fb38c20a 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -50,7 +50,7 @@ void SavegameManager::sync_save(Common::Serializer &sz) { for (int i = 0; i < 43; ++i) sz.syncAsByte(g_vm->_saveStruct._teauto[i]); for (int i = 0; i < 31; ++i) - sz.syncAsByte(g_vm->_saveStruct._sjer[i]); + sz.syncAsByte(g_vm->_saveStruct._inventory[i]); sz.syncAsSint16LE(g_vm->_saveStruct._currPlace); sz.syncAsSint16LE(g_vm->_saveStruct._atticBallHoleObjectId); -- cgit v1.2.3 From 3f60cd79fed0e245dffe97e8cd33a7990ae90f48 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 14 Oct 2012 21:59:27 +0200 Subject: MORTEVIELLE: More renaming --- engines/mortevielle/actions.cpp | 72 +++++++-------- engines/mortevielle/dialogs.cpp | 16 ++-- engines/mortevielle/graphics.cpp | 6 +- engines/mortevielle/menu.cpp | 38 ++++---- engines/mortevielle/mortevielle.cpp | 173 +++++++++++++++++------------------- engines/mortevielle/mortevielle.h | 33 +++---- engines/mortevielle/mouse.cpp | 22 ++--- engines/mortevielle/outtext.cpp | 32 +++---- engines/mortevielle/saveload.cpp | 4 +- 9 files changed, 193 insertions(+), 203 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 6d8e095a3a..392ea17df1 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -48,7 +48,7 @@ void MortevielleEngine::fctMove() { } if ((_coreVar._currPlace == LANDING) && (_msg[4] == _menu._moveMenu[6])) { if (!_syn) - ecr3(getEngineString(S_GO_TO)); + displayTextInVerbBar(getEngineString(S_GO_TO)); tfleche(); if (_keyPressedEsc) @@ -217,7 +217,7 @@ void MortevielleEngine::fctTake() { return; } if (!_syn) - ecr3(getEngineString(S_TAKE)); + displayTextInVerbBar(getEngineString(S_TAKE)); tfleche(); if ((_anyone) || (_keyPressedEsc)) return; @@ -323,7 +323,7 @@ void MortevielleEngine::fctInventoryTake() { */ void MortevielleEngine::fctLift() { if (!_syn) - ecr3(getEngineString(S_LIFT)); + displayTextInVerbBar(getEngineString(S_LIFT)); tfleche(); if ((_anyone) || (_keyPressedEsc)) return; @@ -360,7 +360,7 @@ void MortevielleEngine::fctRead() { getReadDescription(_caff); else { if (!_syn) - ecr3(getEngineString(S_READ)); + displayTextInVerbBar(getEngineString(S_READ)); tfleche(); if (!(_anyone) && !(_keyPressedEsc)) { setCoordinates(4); @@ -393,7 +393,7 @@ void MortevielleEngine::fctLook() { return; } if (!_syn) - ecr3(getEngineString(S_LOOK)); + displayTextInVerbBar(getEngineString(S_LOOK)); tfleche(); if ((_anyone) || (_keyPressedEsc)) return; @@ -483,7 +483,7 @@ void MortevielleEngine::fctSearch() { } if (!_syn) - ecr3(getEngineString(S_SEARCH)); + displayTextInVerbBar(getEngineString(S_SEARCH)); tfleche(); if (_anyone || _keyPressedEsc) @@ -579,7 +579,7 @@ void MortevielleEngine::fctSelfSearch() { */ void MortevielleEngine::fctOpen() { if (!_syn) - ecr3(getEngineString(S_OPEN)); + displayTextInVerbBar(getEngineString(S_OPEN)); if (_caff == ROOM26) { if (_roomDoorId != OWN_ROOM) { @@ -657,7 +657,7 @@ void MortevielleEngine::fctPlace() { } if (!_syn) - ecr3(getEngineString(S_PUT)); + displayTextInVerbBar(getEngineString(S_PUT)); tfleche(); if (_keyPressedEsc) @@ -669,7 +669,7 @@ void MortevielleEngine::fctPlace() { setCoordinates(8); if (_num != 0) { _crep = 999; - if (_caff == 13) { + if (_caff == ATTIC) { if (_num == 1) { if (_coreVar._atticBallHoleObjectId != 0) { _crep = 188; @@ -687,7 +687,7 @@ void MortevielleEngine::fctPlace() { } } - if (_caff == 14) { + if (_caff == CELLAR) { if (_coreVar._cellarObjectId != 0) { _crep = 188; } else { @@ -745,14 +745,14 @@ void MortevielleEngine::fctPlace() { } } - if (_caff == 16) { + if (_caff == CRYPT) { if (_coreVar._cryptObjectId == 0) _coreVar._cryptObjectId = _coreVar._selectedObjectId; else _crep = 188; } - if (_caff == 17) { + if (_caff == SECRET_PASSAGE) { if (_coreVar._secretPassageObjectId != 0) { _crep = 188; } else if (_coreVar._selectedObjectId == 143) { @@ -764,7 +764,7 @@ void MortevielleEngine::fctPlace() { } } - if (_caff == 24) { + if (_caff == WELL) { if (_coreVar._wellObjectId != 0) { _crep = 188; } else if ((_coreVar._selectedObjectId == 140) || (_coreVar._selectedObjectId == 120)) { @@ -790,7 +790,7 @@ void MortevielleEngine::fctTurn() { return; } if (!_syn) - ecr3(getEngineString(S_TURN)); + displayTextInVerbBar(getEngineString(S_TURN)); tfleche(); if ((_anyone) || (_keyPressedEsc)) return; @@ -826,7 +826,7 @@ void MortevielleEngine::fctTurn() { */ void MortevielleEngine::fctSelfHide() { if (!_syn) - ecr3(getEngineString(S_HIDE_SELF)); + displayTextInVerbBar(getEngineString(S_HIDE_SELF)); tfleche(); if (!(_anyone) && !(_keyPressedEsc)) { setCoordinates(10); @@ -848,7 +848,7 @@ void MortevielleEngine::fctAttach() { _crep = 186; else { if (!_syn) - ecr3(getEngineString(S_TIE)); + displayTextInVerbBar(getEngineString(S_TIE)); tfleche(); if (!(_anyone) && !(_keyPressedEsc)) { setCoordinates(8); @@ -872,7 +872,7 @@ void MortevielleEngine::fctAttach() { */ void MortevielleEngine::fctClose() { if (!_syn) - ecr3(getEngineString(S_CLOSE)); + displayTextInVerbBar(getEngineString(S_CLOSE)); if (_caff < ROOM26) { tfleche(); @@ -912,7 +912,7 @@ void MortevielleEngine::fctClose() { */ void MortevielleEngine::fctKnock() { if (!_syn) - ecr3(getEngineString(S_HIT)); + displayTextInVerbBar(getEngineString(S_HIT)); if (_coreVar._currPlace == LANDING) { Alert::show(getEngineString(S_BEFORE_USE_DEP_MENU), 1); @@ -959,7 +959,7 @@ void MortevielleEngine::fctKnock() { */ void MortevielleEngine::fctSelfPut() { if (!_syn) - ecr3(getEngineString(S_POSE)); + displayTextInVerbBar(getEngineString(S_POSE)); if (_coreVar._selectedObjectId == 0) _crep = 186; else { @@ -1095,7 +1095,7 @@ void MortevielleEngine::fctEat() { } else { exitRoom(); _coreVar._currPlace = DINING_ROOM; - _caff = 10; + _caff = DINING_ROOM; resetRoomVariables(_coreVar._currPlace); _menu.setDestinationText(_coreVar._currPlace); @@ -1140,7 +1140,7 @@ void MortevielleEngine::fctEnter() { _crep = 997; else if ((_roomDoorId == ROOM9) && (_coreVar._selectedObjectId != 136)) { _crep = 189; - _coreVar._teauto[8] = '*'; + _coreVar._availableQuestion[8] = '*'; } else { int z = 0; if (!_blo) @@ -1238,8 +1238,8 @@ void MortevielleEngine::fctSleep() { */ void MortevielleEngine::fctForce() { if (!_syn) - ecr3(getEngineString(S_SMASH)); - if (_caff < 25) + displayTextInVerbBar(getEngineString(S_SMASH)); + if (_caff < DOOR) tfleche(); if ((!_anyone) && (!_keyPressedEsc)) { @@ -1328,7 +1328,7 @@ void MortevielleEngine::fctWait() { */ void MortevielleEngine::fctSound() { if (!_syn) - ecr3(getEngineString(S_PROBE2)); + displayTextInVerbBar(getEngineString(S_PROBE2)); if (_caff < 27) { tfleche(); if (!(_anyone) && (!_keyPressedEsc)) @@ -1387,7 +1387,7 @@ void MortevielleEngine::fctDiscuss() { int posY = 0; for (int icm = 1; icm < 43; icm++) { _screenSurface.putxy(posX, posY); - if (_coreVar._teauto[icm] == '*') { + if (_coreVar._availableQuestion[icm] == '*') { // If question already asked, write it in reverse video if (questionAsked[icm]) writetp(lib[icm], 1); @@ -1411,7 +1411,7 @@ void MortevielleEngine::fctDiscuss() { CHECK_QUIT; _mouse.getMousePosition(x, y, click); - x *= (3 - _res); + x *= (3 - _resolutionScaler); if (x > 319) cx = 41; else @@ -1450,7 +1450,7 @@ void MortevielleEngine::fctDiscuss() { writetp(lib[choice], 1); questionAsked[choice] = ! questionAsked[choice]; } - if ((_coreVar._teauto[ix] == '*') || (ix == 46)) { + if ((_coreVar._availableQuestion[ix] == '*') || (ix == 46)) { posY = ((ix - 1) % 23) << 3; if (ix > 23) posX = 320; @@ -1501,17 +1501,17 @@ void MortevielleEngine::fctDiscuss() { startDialog(displId); _mouse.showMouse(); if ((displId == 84) || (displId == 86)) { - _coreVar._pourc[5] = '*'; - _coreVar._teauto[7] = '*'; + _coreVar._pctHintFound[5] = '*'; + _coreVar._availableQuestion[7] = '*'; } if ((displId == 106) || (displId == 108) || (displId == 94)) { for (int indx = 29; indx <= 31; ++indx) - _coreVar._teauto[indx] = '*'; - _coreVar._pourc[7] = '*'; + _coreVar._availableQuestion[indx] = '*'; + _coreVar._pctHintFound[7] = '*'; } if (displId == 70) { - _coreVar._pourc[8] = '*'; - _coreVar._teauto[32] = '*'; + _coreVar._pctHintFound[8] = '*'; + _coreVar._availableQuestion[32] = '*'; } _mouse.hideMouse(); hirs(); @@ -1550,10 +1550,10 @@ void MortevielleEngine::fctSmell() { _crep = 119; if (_caff < ROOM26) { if (!_syn) - ecr3(getEngineString(S_SMELL)); + displayTextInVerbBar(getEngineString(S_SMELL)); tfleche(); if (!(_anyone) && !(_keyPressedEsc)) - if (_caff == 16) + if (_caff == CRYPT) _crep = 153; } else if (_caff == 123) _crep = 110; @@ -1568,7 +1568,7 @@ void MortevielleEngine::fctScratch() { _crep = 155; if (_caff < 27) { if (!_syn) - ecr3(getEngineString(S_SCRATCH)); + displayTextInVerbBar(getEngineString(S_SCRATCH)); tfleche(); } _num = 0; diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index f0f4452899..ee6eb697fb 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -71,7 +71,7 @@ int Alert::show(const Common::String &msg, int n) { while ((alertStr[i + 1] != '\174') && (alertStr[i + 1] != '\135')) { ++i; displayStr += alertStr[i]; - if (g_vm->_res == 2) + if (g_vm->_resolutionScaler == 2) curPos.x -= 3; else curPos.x -= 5; @@ -95,12 +95,12 @@ int Alert::show(const Common::String &msg, int n) { int limit[3][3]; memset(&limit[0][0], 0, sizeof(int) * 3 * 3); - limit[1][1] = ((uint)(coldep) / 2) * g_vm->_res; + limit[1][1] = ((uint)(coldep) / 2) * g_vm->_resolutionScaler; limit[1][2] = limit[1][1] + 40; if (caseNumb == 1) { limit[2][1] = limit[2][2]; } else { - limit[2][1] = ((uint)(320 + ((uint)esp >> 1)) / 2) * g_vm->_res; + limit[2][1] = ((uint)(320 + ((uint)esp >> 1)) / 2) * g_vm->_resolutionScaler; limit[2][2] = (limit[2][1]) + 40; } g_vm->_mouse.showMouse(); @@ -221,7 +221,7 @@ void Alert::decodeAlertDetails(Common::String inputStr, int &choiceNumb, int &li } ++i; choiceListStr = g_vm->copy(inputStr, i, 30); - if (g_vm->_res == 2) + if (g_vm->_resolutionScaler == 2) col *= 6; else col *= 10; @@ -303,7 +303,7 @@ bool KnowledgeCheck::show() { g_vm->hirs(); g_vm->_mouse.showMouse(); int dialogHeight; - if (g_vm->_res == 1) + if (g_vm->_resolutionScaler == 1) dialogHeight = 29; else dialogHeight = 23; @@ -335,7 +335,7 @@ bool KnowledgeCheck::show() { } for (int j = 1; j <= lastOption - firstOption + 1; ++j) { - coor[j]._rect = Common::Rect(45 * g_vm->_res, 27 + j * 8, (maxLength * 3 + 55) * g_vm->_res, 34 + j * 8); + coor[j]._rect = Common::Rect(45 * g_vm->_resolutionScaler, 27 + j * 8, (maxLength * 3 + 55) * g_vm->_resolutionScaler, 34 + j * 8); coor[j]._enabled = true; while ((int)choiceArray[j].size() < maxLength) { @@ -344,7 +344,7 @@ bool KnowledgeCheck::show() { } coor[lastOption - firstOption + 2]._enabled = false; int rep; - if (g_vm->_res == 1) + if (g_vm->_resolutionScaler == 1) rep = 10; else rep = 6; @@ -473,7 +473,7 @@ void f3f8::ani50() { g_vm->pictout(kAdrAni, g_vm->_crep, 63, 12); g_vm->_crep = g_vm->animof(2, 1); g_vm->pictout(kAdrAni, g_vm->_crep, 63, 12); - g_vm->_largestClearScreen = (g_vm->_res == 1); + g_vm->_largestClearScreen = (g_vm->_resolutionScaler == 1); g_vm->handleDescriptionText(2, kDialogStringIndex + 143); } diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index fec2cfbf6b..5bf3aedc99 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -996,7 +996,7 @@ void ScreenSurface::writeCharacter(const Common::Point &pt, unsigned char ch, in * simulate the original 640x400 surface, all Y values have to be doubled */ void ScreenSurface::drawBox(int x, int y, int dx, int dy, int col) { - if (g_vm->_res == 1) { + if (g_vm->_resolutionScaler == 1) { x = (uint)x >> 1; dx = (uint)dx >> 1; } @@ -1063,7 +1063,7 @@ void ScreenSurface::drawString(const Common::String &l, int command) { g_vm->_mouse.hideMouse(); pt = _textPos; - if (g_vm->_res == 2) + if (g_vm->_resolutionScaler == 2) i = 6; else i = 10; @@ -1105,7 +1105,7 @@ void ScreenSurface::drawString(const Common::String &l, int command) { * Gets the width in pixels of the specified string */ int ScreenSurface::getStringWidth(const Common::String &s) { - int charWidth = (g_vm->_res == 2) ? 6 : 10; + int charWidth = (g_vm->_resolutionScaler == 2) ? 6 : 10; return s.size() * charWidth; } diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index f03d6661e4..8e6d94c449 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -93,8 +93,8 @@ void Menu::setDestinationText(int roomId) { roomId = LANDING; int destinationId = 0; - for (; (destinationId < 7) && (g_vm->_v_lieu[destinationId][roomId]); ++destinationId) { - nomp = g_vm->getString(g_vm->_v_lieu[destinationId][roomId] + kMenuPlaceStringIndex); + for (; (destinationId < 7) && (g_vm->_destinationArray[destinationId][roomId]); ++destinationId) { + nomp = g_vm->getString(g_vm->_destinationArray[destinationId][roomId] + kMenuPlaceStringIndex); while (nomp.size() < 20) nomp += ' '; setText(_moveMenu[destinationId + 1], nomp); @@ -178,7 +178,7 @@ void Menu::displayMenu() { g_vm->_mouse.hideMouse(); g_vm->_screenSurface.fillRect(7, Common::Rect(0, 0, 639, 10)); - col = 28 * g_vm->_res; + col = 28 * g_vm->_resolutionScaler; if (g_vm->_currGraphicalDevice == MODE_CGA) color = 1; else @@ -207,7 +207,7 @@ void Menu::displayMenu() { } while (k != 3); ++y; } while (y != 9); - col += 48 * g_vm->_res; + col += 48 * g_vm->_resolutionScaler; } while (num_letr != 6); g_vm->_mouse.showMouse(); } @@ -284,14 +284,14 @@ void Menu::util(Common::Point pos) { int ymx = (_menuConstants[_msg3 - 1][3] << 3) + 16; int dxcar = _menuConstants[_msg3 - 1][2]; - int xmn = (_menuConstants[_msg3 - 1][0] << 2) * g_vm->_res; + int xmn = (_menuConstants[_msg3 - 1][0] << 2) * g_vm->_resolutionScaler; int ix; - if (g_vm->_res == 1) + if (g_vm->_resolutionScaler == 1) ix = 5; else ix = 3; - int xmx = dxcar * ix * g_vm->_res + xmn + 2; + int xmx = dxcar * ix * g_vm->_resolutionScaler + xmn + 2; if ((pos.x > xmn) && (pos.x < xmx) && (pos.y < ymx) && (pos.y > 15)) { ix = (((uint)pos.y >> 3) - 1) + (_msg3 << 8); if (ix != _msg4) { @@ -321,7 +321,7 @@ void Menu::menuDown(int ii) { g_vm->_mouse.hideMouse(); g_vm->sauvecr(10, (_menuConstants[ii - 1][1] + 1) << 1); xco = xco << 3; - if (g_vm->_res == 1) + if (g_vm->_resolutionScaler == 1) cx = 10; else cx = 6; @@ -433,24 +433,24 @@ void Menu::mdn() { g_vm->_prevPos = curPos; bool tes = (curPos.y < 11) - && ((curPos.x >= (28 * g_vm->_res) && curPos.x <= (28 * g_vm->_res + 24)) - || (curPos.x >= (76 * g_vm->_res) && curPos.x <= (76 * g_vm->_res + 24)) - || ((curPos.x > 124 * g_vm->_res) && (curPos.x < 124 * g_vm->_res + 24)) - || ((curPos.x > 172 * g_vm->_res) && (curPos.x < 172 * g_vm->_res + 24)) - || ((curPos.x > 220 * g_vm->_res) && (curPos.x < 220 * g_vm->_res + 24)) - || ((curPos.x > 268 * g_vm->_res) && (curPos.x < 268 * g_vm->_res + 24))); + && ((curPos.x >= (28 * g_vm->_resolutionScaler) && curPos.x <= (28 * g_vm->_resolutionScaler + 24)) + || (curPos.x >= (76 * g_vm->_resolutionScaler) && curPos.x <= (76 * g_vm->_resolutionScaler + 24)) + || ((curPos.x > 124 * g_vm->_resolutionScaler) && (curPos.x < 124 * g_vm->_resolutionScaler + 24)) + || ((curPos.x > 172 * g_vm->_resolutionScaler) && (curPos.x < 172 * g_vm->_resolutionScaler + 24)) + || ((curPos.x > 220 * g_vm->_resolutionScaler) && (curPos.x < 220 * g_vm->_resolutionScaler + 24)) + || ((curPos.x > 268 * g_vm->_resolutionScaler) && (curPos.x < 268 * g_vm->_resolutionScaler + 24))); if (tes) { int ix; - if (curPos.x < 76 * g_vm->_res) + if (curPos.x < 76 * g_vm->_resolutionScaler) ix = MENU_INVENTORY; - else if (curPos.x < 124 * g_vm->_res) + else if (curPos.x < 124 * g_vm->_resolutionScaler) ix = MENU_MOVE; - else if (curPos.x < 172 * g_vm->_res) + else if (curPos.x < 172 * g_vm->_resolutionScaler) ix = MENU_ACTION; - else if (curPos.x < 220 * g_vm->_res) + else if (curPos.x < 220 * g_vm->_resolutionScaler) ix = MENU_SELF; - else if (curPos.x < 268 * g_vm->_res) + else if (curPos.x < 268 * g_vm->_resolutionScaler) ix = MENU_DISCUSS; else ix = MENU_FILE; diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 782c811b1f..2b95bcea0e 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -180,7 +180,7 @@ Common::ErrorCode MortevielleEngine::initialise() { // Set the screen mode _currGraphicalDevice = MODE_EGA; - _res = 2; + _resolutionScaler = 2; _txxFileFl = false; // Load texts from TXX files @@ -673,7 +673,7 @@ void MortevielleEngine::handleAction() { } else if (inkey == '\77') { if ((_menuOpcode != OPCODE_NONE) && ((_msg[3] == MENU_ACTION) || (_msg[3] == MENU_SELF))) { _msg[4] = _menuOpcode; - ecr3(getEngineString(S_IDEM)); + displayTextInVerbBar(getEngineString(S_IDEM)); } else return; } else if (inkey == '\104') { @@ -746,7 +746,7 @@ void MortevielleEngine::loadPlaces() { for (int i = 0; i < 7; ++i) { for (int j = 0; j < 25; ++j) - _v_lieu[i][j] = f.readByte(); + _destinationArray[i][j] = f.readByte(); } f.close(); @@ -2004,8 +2004,8 @@ void MortevielleEngine::handleOpcode() { } int hour, day, minute; updateHour(day, hour, minute); - if ((((hour == 12) || (hour == 13) || (hour == 19)) && (_coreVar._currPlace != 10)) || - ((hour > 0) && (hour < 6) && (_coreVar._currPlace != 0))) + if ((((hour == 12) || (hour == 13) || (hour == 19)) && (_coreVar._currPlace != DINING_ROOM)) || + ((hour > 0) && (hour < 6) && (_coreVar._currPlace != OWN_ROOM))) ++_coreVar._faithScore; if (((_coreVar._currPlace < CRYPT) || (_coreVar._currPlace > MOUNTAIN)) && (_coreVar._currPlace != INSIDE_WELL) && (_coreVar._currPlace != OWN_ROOM) && (_coreVar._selectedObjectId != 152) && (!_loseGame)) { @@ -2104,7 +2104,7 @@ void MortevielleEngine::clearUpperRightPart() { Common::String st; _mouse.hideMouse(); - if (_res == 1) { + if (_resolutionScaler == 1) { x2 = 634; x1 = 534; } else { @@ -2293,21 +2293,21 @@ void MortevielleEngine::resetVariables() { _coreVar._fullHour = chr(20); for (int i = 1; i <= 10; ++i) - _coreVar._pourc[i] = ' '; + _coreVar._pctHintFound[i] = ' '; for (int i = 1; i <= 6; ++i) - _coreVar._teauto[i] = '*'; + _coreVar._availableQuestion[i] = '*'; for (int i = 7; i <= 9; ++i) - _coreVar._teauto[i] = ' '; + _coreVar._availableQuestion[i] = ' '; for (int i = 10; i <= 28; ++i) - _coreVar._teauto[i] = '*'; + _coreVar._availableQuestion[i] = '*'; for (int i = 29; i <= 42; ++i) - _coreVar._teauto[i] = ' '; + _coreVar._availableQuestion[i] = ' '; - _coreVar._teauto[33] = '*'; + _coreVar._availableQuestion[33] = '*'; for (int i = 1; i <= 8; ++i) _nbrep[i] = 0; @@ -2563,7 +2563,7 @@ void MortevielleEngine::showTitleScreen() { draw(kAdrDes, 0, 0); Common::String cpr = "COPYRIGHT 1989 : LANKHOR"; - _screenSurface.putxy(104 + 72 * _res, 185); + _screenSurface.putxy(104 + 72 * _resolutionScaler, 185); _screenSurface.drawString(cpr, 0); } @@ -2609,14 +2609,7 @@ int MortevielleEngine::readclock() { * @remarks Originally called 'tinke' */ void MortevielleEngine::prepareRoom() { - Common::String d1 = getEngineString(S_SHOULD_HAVE_NOTICED); - Common::String d2 = getEngineString(S_NUMBER_OF_HINTS); - const char d3 = '['; - const char d4 = ']'; - const char d5 = '1'; - Common::String d6 = getEngineString(S_OK); - int cf, day, hour, minute; - Common::String stpo; + int day, hour, minute; _anyone = false; updateHour(day, hour, minute); @@ -2634,29 +2627,26 @@ void MortevielleEngine::prepareRoom() { _hour = hour; _minute = 0; drawClock(); - cf = 0; + int hintCount = 0; for (int i = 1; i <= 10; ++i) { - if (_coreVar._pourc[i] == '*') - ++cf; + if (_coreVar._pctHintFound[i] == '*') + ++hintCount; } - if (cf == 10) - stpo = "10"; + Common::String pctStr; + if (hintCount == 10) + pctStr = "10"; else - stpo = chr(cf + 48); - - _hintPctMessage = Common::String(d3); - _hintPctMessage += d5; - _hintPctMessage += d4; - _hintPctMessage += d3; - _hintPctMessage += d1; - _hintPctMessage += stpo; + pctStr = chr(hintCount + 48); + + _hintPctMessage = "[1]["; + _hintPctMessage += getEngineString(S_SHOULD_HAVE_NOTICED); + _hintPctMessage += pctStr; _hintPctMessage += '0'; - _hintPctMessage += d2; - _hintPctMessage += d4; - _hintPctMessage += d3; - _hintPctMessage += d6; - _hintPctMessage += d4; + _hintPctMessage += getEngineString(S_NUMBER_OF_HINTS); + _hintPctMessage += "]["; + _hintPctMessage += getEngineString(S_OK); + _hintPctMessage += ']'; } if (minute > _minute) { _minute = 30; @@ -2670,11 +2660,10 @@ void MortevielleEngine::prepareRoom() { _inGameHourDuration = kTime2; else _inGameHourDuration = kTime1; - cf = _coreVar._faithScore; - if ((cf > 33) && (cf < 66)) + if ((_coreVar._faithScore > 33) && (_coreVar._faithScore < 66)) _inGameHourDuration -= (_inGameHourDuration / 3); - if (cf > 65) + if (_coreVar._faithScore > 65) _inGameHourDuration -= ((_inGameHourDuration / 3) * 2); int newHour = readclock(); @@ -2686,40 +2675,40 @@ void MortevielleEngine::prepareRoom() { switch (_place) { case GREEN_ROOM: case DARKBLUE_ROOM: - setRandomPresenceGreenRoom(cf); + setRandomPresenceGreenRoom(_coreVar._faithScore); break; case PURPLE_ROOM: - setRandomPresencePurpleRoom(cf); + setRandomPresencePurpleRoom(_coreVar._faithScore); break; case BLUE_ROOM: - setRandomPresenceBlueRoom(cf); + setRandomPresenceBlueRoom(_coreVar._faithScore); break; case RED_ROOM: case GREEN_ROOM2: - setRandomPresenceRedRoom(cf); + setRandomPresenceRedRoom(_coreVar._faithScore); break; case ROOM9: - setRandomPresenceRoom9(cf); + setRandomPresenceRoom9(_coreVar._faithScore); break; case DINING_ROOM: - setRandomPresenceDiningRoom(cf); + setRandomPresenceDiningRoom(_coreVar._faithScore); break; case BUREAU: - setRandomPresenceBureau(cf); + setRandomPresenceBureau(_coreVar._faithScore); break; case KITCHEN: - setRandomPresenceKitchen(cf); + setRandomPresenceKitchen(_coreVar._faithScore); break; case ATTIC: case CELLAR: - setRandomPresenceAttic(cf); + setRandomPresenceAttic(_coreVar._faithScore); break; case LANDING: case ROOM26: - setRandomPresenceLanding(cf); + setRandomPresenceLanding(_coreVar._faithScore); break; case CHAPEL: - setRandomPresenceChapel(cf); + setRandomPresenceChapel(_coreVar._faithScore); break; } if ((_savedBitIndex != 0) && (_currBitIndex != 10)) @@ -2736,7 +2725,7 @@ void MortevielleEngine::prepareRoom() { if (getRandomNumber(1, 5) < 5) { clearVerbBar(); prepareScreenType2(); - ecr3(getEngineString(S_HEAR_NOISE)); + displayTextInVerbBar(getEngineString(S_HEAR_NOISE)); int rand = (getRandomNumber(0, 4)) - 2; _speechManager.startSpeech(1, rand, 1); clearVerbBar(); @@ -2771,29 +2760,29 @@ void MortevielleEngine::drawClock() { const int x = 580; const int y = 123; const int rg = 9; - int h, co; + int hourColor; _mouse.hideMouse(); _screenSurface.drawRectangle(570, 118, 20, 10); _screenSurface.drawRectangle(578, 114, 6, 18); if ((_currGraphicalDevice == MODE_CGA) || (_currGraphicalDevice == MODE_HERCULES)) - co = 0; + hourColor = 0; else - co = 1; + hourColor = 1; if (_minute == 0) - _screenSurface.drawLine(((uint)x >> 1) * _res, y, ((uint)x >> 1) * _res, (y - rg), co); + _screenSurface.drawLine(((uint)x >> 1) * _resolutionScaler, y, ((uint)x >> 1) * _resolutionScaler, (y - rg), hourColor); else - _screenSurface.drawLine(((uint)x >> 1) * _res, y, ((uint)x >> 1) * _res, (y + rg), co); + _screenSurface.drawLine(((uint)x >> 1) * _resolutionScaler, y, ((uint)x >> 1) * _resolutionScaler, (y + rg), hourColor); - h = _hour; - if (h > 12) - h -= 12; - if (h == 0) - h = 12; + int hour12 = _hour; + if (hour12 > 12) + hour12 -= 12; + if (hour12 == 0) + hour12 = 12; - _screenSurface.drawLine(((uint)x >> 1) * _res, y, ((uint)(x + cv[0][h - 1]) >> 1) * _res, y + cv[1][h - 1], co); + _screenSurface.drawLine(((uint)x >> 1) * _resolutionScaler, y, ((uint)(x + cv[0][hour12 - 1]) >> 1) * _resolutionScaler, y + cv[1][hour12 - 1], hourColor); _mouse.showMouse(); _screenSurface.putxy(568, 154); @@ -2840,12 +2829,12 @@ void MortevielleEngine::hirs() { if (_currGraphicalDevice == MODE_TANDY) { _screenSurface.fillRect(0, Common::Rect(0, 0, 639, 200)); - _res = 1; + _resolutionScaler = 1; } else if (_currGraphicalDevice == MODE_CGA) { palette(1); - _res = 1; + _resolutionScaler = 1; } else - _res = 2; + _resolutionScaler = 2; _screenSurface.clearScreen(); } @@ -2860,7 +2849,7 @@ void MortevielleEngine::initCaveOrCellar() { _coreVar._faithScore += (_coreVar._faithScore / 10); clearVerbBar(); prepareScreenType2(); - ecr3(getEngineString(S_SOMEONE_ENTERS)); + displayTextInVerbBar(getEngineString(S_SOMEONE_ENTERS)); int rand = (getRandomNumber(0, 4)) - 2; _speechManager.startSpeech(2, rand, 1); @@ -2938,7 +2927,7 @@ int MortevielleEngine::animof(int ouf, int num) { void MortevielleEngine::displayTextInDescriptionBar(int x, int y, int nb, int mesgId) { int co; - if (_res == 1) + if (_resolutionScaler == 1) co = 10; else co = 6; @@ -2956,7 +2945,7 @@ void MortevielleEngine::handleDescriptionText(int f, int mesgId) { if ((mesgId > 499) && (mesgId < 563)) { Common::String tmpStr = getString(mesgId - 501 + kInventoryStringIndex); - if ((int) tmpStr.size() > ((58 + (_res - 1) * 37) << 1)) + if ((int) tmpStr.size() > ((58 + (_resolutionScaler - 1) * 37) << 1)) _largestClearScreen = true; else _largestClearScreen = false; @@ -2972,12 +2961,12 @@ void MortevielleEngine::handleDescriptionText(int f, int mesgId) { prepareScreenType2(); displayTextInDescriptionBar(8, 182, 103, mesgId); if ((mesgId == 68) || (mesgId == 69)) - _coreVar._teauto[40] = '*'; - if ((mesgId == 104) && (_caff == 14)) { - _coreVar._teauto[36] = '*'; - if (_coreVar._teauto[39] == '*') { - _coreVar._pourc[3] = '*'; - _coreVar._teauto[38] = '*'; + _coreVar._availableQuestion[40] = '*'; + if ((mesgId == 104) && (_caff == CELLAR)) { + _coreVar._availableQuestion[36] = '*'; + if (_coreVar._availableQuestion[39] == '*') { + _coreVar._pctHintFound[3] = '*'; + _coreVar._availableQuestion[38] = '*'; } } break; @@ -2994,9 +2983,9 @@ void MortevielleEngine::handleDescriptionText(int f, int mesgId) { _text.displayStr(tmpStr, 80, 40, 60, 25, i); if (mesgId == 180) - _coreVar._pourc[6] = '*'; + _coreVar._pctHintFound[6] = '*'; else if (mesgId == 179) - _coreVar._pourc[10] = '*'; + _coreVar._pctHintFound[10] = '*'; } break; default: @@ -3061,7 +3050,7 @@ void MortevielleEngine::resetOpenObjects() { void MortevielleEngine::ecr2(Common::String text) { // Some dead code was present in the original: removed _screenSurface.putxy(8, 177); - int tlig = 59 + (_res - 1) * 36; + int tlig = 59 + (_resolutionScaler - 1) * 36; if ((int)text.size() < tlig) _screenSurface.drawString(text, 5); @@ -3082,7 +3071,7 @@ void MortevielleEngine::ecr2(Common::String text) { } } -void MortevielleEngine::ecr3(Common::String text) { +void MortevielleEngine::displayTextInVerbBar(Common::String text) { clearVerbBar(); _screenSurface.putxy(8, 192); _screenSurface.drawString(text, 5); @@ -3282,19 +3271,19 @@ int MortevielleEngine::getPresence(int roomId) { } void MortevielleEngine::writetp(Common::String s, int t) { - if (_res == 2) + if (_resolutionScaler == 2) _screenSurface.drawString(s, t); else _screenSurface.drawString(copy(s, 1, 25), t); } void MortevielleEngine::aniof(int ouf, int num) { - if ((_caff == 7) && ((num == 4) || (num == 5))) + if ((_caff == BATHROOM) && ((num == 4) || (num == 5))) return; - if ((_caff == 10) && (num == 7)) + if ((_caff == DINING_ROOM) && (num == 7)) num = 6; - else if (_caff == 12) { + else if (_caff == KITCHEN) { if (num == 3) num = 4; else if (num == 4) @@ -3332,17 +3321,17 @@ void MortevielleEngine::drawPicture() { aniof(1, _openObjects[cx]); } - if (_caff == 13) { + if (_caff == ATTIC) { if (_coreVar._atticBallHoleObjectId == 141) aniof(1, 7); if (_coreVar._atticRodHoleObjectId == 159) aniof(1, 6); - } else if ((_caff == 14) && (_coreVar._cellarObjectId == 151)) + } else if ((_caff == CELLAR) && (_coreVar._cellarObjectId == 151)) aniof(1, 2); - else if ((_caff == 17) && (_coreVar._secretPassageObjectId == 143)) + else if ((_caff == SECRET_PASSAGE) && (_coreVar._secretPassageObjectId == 143)) aniof(1, 1); - else if ((_caff == 24) && (_coreVar._wellObjectId != 0)) + else if ((_caff == WELL) && (_coreVar._wellObjectId != 0)) aniof(1, 1); } @@ -3622,7 +3611,7 @@ void MortevielleEngine::tfleche() { CHECK_QUIT; if (getMouseClick()) - inRect = (_mouse._pos.x < 256 * _res) && (_mouse._pos.y < 176) && (_mouse._pos.y > 12); + inRect = (_mouse._pos.x < 256 * _resolutionScaler) && (_mouse._pos.y < 176) && (_mouse._pos.y > 12); prepareRoom(); } while (!(qust || inRect || _anyone)); @@ -3679,10 +3668,10 @@ void MortevielleEngine::setCoordinates(int sx) { cy = 1; do { cb += 2; - sx = _tabdon[a + cb] * _res; + sx = _tabdon[a + cb] * _resolutionScaler; sy = _tabdon[(a + cb + 1)]; cb += 2; - ix = _tabdon[a + cb] * _res; + ix = _tabdon[a + cb] * _resolutionScaler; iy = _tabdon[(a + cb + 1)]; ++cy; } while (!(((_x >= sx) && (_x <= ix) && (_y >= sy) && (_y <= iy)) || (cy > ib))); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 1141f70026..81baab91b4 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -154,8 +154,7 @@ static const int _actionMenu[12] = { OPCODE_NONE, /* 9 "A glance at the forbidden$", 18 "It's already open$", -26 "A photograph$", -27 "The coat of arms$", +26 "A photograph$" */ enum Places { OWN_ROOM = 0, GREEN_ROOM = 1, PURPLE_ROOM = 2, TOILETS = 3, DARKBLUE_ROOM = 4, @@ -163,7 +162,7 @@ enum Places { DINING_ROOM = 10, BUREAU = 11, KITCHEN = 12, ATTIC = 13, CELLAR = 14, LANDING = 15, CRYPT = 16, SECRET_PASSAGE = 17, ROOM18 = 18, MOUNTAIN = 19, CHAPEL = 20, MANOR_FRONT = 21, MANOR_BACK = 22, INSIDE_WELL = 23, WELL = 24, - DOOR = 25, ROOM26 = 26, ROOM27 = 27 + DOOR = 25, ROOM26 = 26, COAT_ARMS = 27 }; enum GraphicModes { MODE_AMSTRAD1512 = 0, MODE_CGA = 1, MODE_EGA = 2, MODE_HERCULES = 3, MODE_TANDY = 4 }; @@ -185,8 +184,8 @@ struct Pattern { struct SaveStruct { int _faithScore; - byte _pourc[11]; - byte _teauto[43]; + byte _pctHintFound[11]; + byte _availableQuestion[43]; byte _inventory[31]; int _currPlace; int _atticBallHoleObjectId; @@ -420,31 +419,32 @@ private: void delay(int amount); void handleOpcode(); - void cinq_huit(char &c, int &idx, byte &pt, bool &the_end); - void copcha(); - void adzon(); void displayTextInDescriptionBar(int x, int y, int nb, int mesgId); void mapMessageId(int &mesgId); void resetOpenObjects(); + void setCoordinates(int sx); + void displayTextInVerbBar(Common::String text); + void drawPicture(); + void drawPictureWithText(); + void addObjectToInventory(int objectId); + void putInHand(int &objId); + + void cinq_huit(char &c, int &idx, byte &pt, bool &the_end); + void copcha(); + void adzon(); void phaz(int &rand, int &p, int cf); void writetp(Common::String s, int t); void premtet(); void ajchai(); void tfleche(); - void setCoordinates(int sx); void ecr2(Common::String text); - void ecr3(Common::String text); void init_nbrepm(); void aniof(int ouf, int num); - void drawPicture(); - void drawPictureWithText(); void tlu(int af, int ob); void affrep(); void mennor(); - void addObjectToInventory(int objectId); void tsuiv(); void treg(int objId); - void putInHand(int &objId); void rechai(int &ch); void fenat(char ans); @@ -466,10 +466,11 @@ public: SaveStruct _coreVar, _saveStruct; int _maff; - int _res; int _caff; int _crep; - byte _v_lieu[7][25]; + + int _resolutionScaler; + byte _destinationArray[7][25]; // TODO: Replace the following with proper implementations, or refactor out the code using them byte _mem[65536 * 16]; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 96b40d8114..bc0f5fe7d3 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -219,8 +219,8 @@ void MouseHandler::showMouse() { * @remarks Originally called 'pos_mouse' */ void MouseHandler::setMousePosition(Common::Point newPos) { - if (newPos.x > 314 * g_vm->_res) - newPos.x = 314 * g_vm->_res; + if (newPos.x > 314 * g_vm->_resolutionScaler) + newPos.x = 314 * g_vm->_resolutionScaler; else if (newPos.x < 0) newPos.x = 0; if (newPos.y > 199) @@ -291,16 +291,16 @@ void MouseHandler::moveMouse(bool &funct, char &key) { cy = 190; break; case '9': - cx = 315 * g_vm->_res; + cx = 315 * g_vm->_resolutionScaler; cy = 1; break; case '3': cy = 190; - cx = 315 * g_vm->_res; + cx = 315 * g_vm->_resolutionScaler; break; case '5': cy = 100; - cx = 155 * g_vm->_res; + cx = 155 * g_vm->_resolutionScaler; break; case ' ': case '\15': @@ -354,27 +354,27 @@ void MouseHandler::moveMouse(bool &funct, char &key) { } break; case 'I': - cx = g_vm->_res * 32; + cx = g_vm->_resolutionScaler * 32; cy = 8; break; case 'D': - cx = 80 * g_vm->_res; + cx = 80 * g_vm->_resolutionScaler; cy = 8; break; case 'A': - cx = 126 * g_vm->_res; + cx = 126 * g_vm->_resolutionScaler; cy = 8; break; case 'S': - cx = 174 * g_vm->_res; + cx = 174 * g_vm->_resolutionScaler; cy = 8; break; case 'P': - cx = 222 * g_vm->_res; + cx = 222 * g_vm->_resolutionScaler; cy = 8; break; case 'F': - cx = g_vm->_res * 270; + cx = g_vm->_resolutionScaler * 270; cy = 8; break; case '\23': diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index e18c5c1692..4bdfcb4699 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -60,7 +60,7 @@ void TextHandler::displayStr(Common::String inputStr, int x, int y, int dx, int inputStr += '$'; g_vm->_screenSurface.putxy(x, y); - if (g_vm->_res == 1) + if (g_vm->_resolutionScaler == 1) tab = 10; else tab = 6; @@ -206,37 +206,37 @@ void TextHandler::taffich() { switch (a) { case 16: - g_vm->_coreVar._pourc[9] = '*'; - g_vm->_coreVar._teauto[42] = '*'; + g_vm->_coreVar._pctHintFound[9] = '*'; + g_vm->_coreVar._availableQuestion[42] = '*'; break; case 20: - g_vm->_coreVar._teauto[39] = '*'; - if (g_vm->_coreVar._teauto[36] == '*') { - g_vm->_coreVar._pourc[3] = '*'; - g_vm->_coreVar._teauto[38] = '*'; + g_vm->_coreVar._availableQuestion[39] = '*'; + if (g_vm->_coreVar._availableQuestion[36] == '*') { + g_vm->_coreVar._pctHintFound[3] = '*'; + g_vm->_coreVar._availableQuestion[38] = '*'; } break; case 24: - g_vm->_coreVar._teauto[37] = '*'; + g_vm->_coreVar._availableQuestion[37] = '*'; break; case 30: - g_vm->_coreVar._teauto[9] = '*'; + g_vm->_coreVar._availableQuestion[9] = '*'; break; - case 31: - g_vm->_coreVar._pourc[4] = '*'; - g_vm->_coreVar._teauto[35] = '*'; + case 31: // Coat of arms + g_vm->_coreVar._pctHintFound[4] = '*'; + g_vm->_coreVar._availableQuestion[35] = '*'; break; case 118: - g_vm->_coreVar._teauto[41] = '*'; + g_vm->_coreVar._availableQuestion[41] = '*'; break; case 143: - g_vm->_coreVar._pourc[1] = '*'; + g_vm->_coreVar._pctHintFound[1] = '*'; break; case 150: - g_vm->_coreVar._teauto[34] = '*'; + g_vm->_coreVar._availableQuestion[34] = '*'; break; case 151: - g_vm->_coreVar._pourc[2] = '*'; + g_vm->_coreVar._pctHintFound[2] = '*'; break; default: break; diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index e4fb38c20a..093f22e9cf 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -46,9 +46,9 @@ Common::String SavegameManager::generateSaveName(int slotNumber) { void SavegameManager::sync_save(Common::Serializer &sz) { sz.syncAsSint16LE(g_vm->_saveStruct._faithScore); for (int i = 0; i < 11; ++i) - sz.syncAsByte(g_vm->_saveStruct._pourc[i]); + sz.syncAsByte(g_vm->_saveStruct._pctHintFound[i]); for (int i = 0; i < 43; ++i) - sz.syncAsByte(g_vm->_saveStruct._teauto[i]); + sz.syncAsByte(g_vm->_saveStruct._availableQuestion[i]); for (int i = 0; i < 31; ++i) sz.syncAsByte(g_vm->_saveStruct._inventory[i]); -- cgit v1.2.3 From 42b0f5535e8bc55417af91bc49e1ebf8500d4bd4 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 20 Feb 2013 23:54:14 +0100 Subject: MORTEVIELLE:Add initial English translation --- devtools/create_mortdat/gametext.h | 286 ++++++++++++++++++------------------- 1 file changed, 143 insertions(+), 143 deletions(-) diff --git a/devtools/create_mortdat/gametext.h b/devtools/create_mortdat/gametext.h index 0e0948e95f..9efb55bc53 100644 --- a/devtools/create_mortdat/gametext.h +++ b/devtools/create_mortdat/gametext.h @@ -320,149 +320,149 @@ const char *gameDataEn[] = { "$", "$", "END OF THE CONVERSATION$", - "TBT - Les vieux appelaient ainsi la chaine de montagne qui se dresse au pied du manoir !$", - "TBT - C'est le massif montagneux que l'on aper‡oit devant le manoir$", - "TBT - Je n'en sais rien !$", - "TBT - Elle est morte d'une embolie pulmonaire$", - "TBT - Ma m‚re est morte soudainement . Son ‚tat semblait pourtant s'tre am‚lior‚$", - "TBT - Madame DEFRANCK est morte d'un coup de froid$", - "TBT - Elle est morte d'une embolie pulmonaire$", - "TBT - Pardonnez moi mais je pr‚fŠre, actuellement garder le silence$", - "TBT - Ce sont toujours les meilleurs qui partent les premiers$", - "TBT - J'aimais beaucoup ma mŠre . Je regrette seulement qu'elle soit morte dans le manoir des DEFRANCK$", - "TBT - C'est une r‚gion qui a un pass‚ charg‚ et j'ai largement de quoi m'occuper . Et puis j'aime beaucoup les chevaux..$", - "TBT - C'est un passionn‚ d'histoire et un joueur inv‚t‚r‚ . D'ailleurs, voici un an il a gagn‚ une grosse somme$", - "TBT - Il a d‚j… beaucoup a faire avec la gestion et l'entretien du manoir ...$", - "TBT - Je suis PDG d'une petite soci‚t‚ de parfums . Mais quand je suis ici, je me repose$", - "TBT - C'est un homme dynamique qui a r‚ussi dans le parfum$", - "TBT - Lui ! C'est un arriviste v‚reux ! Les parfums ont du endormir son bon sens . D'ailleurs ici il passe ses soir‚es dans sa chambre$", - "TBT - J'ai ‚t‚ trŠs pr‚occup‚ par la sant‚ de ma mŠre, et maintenant je n'ai plus go–t … rien$", - "TBT - Il aurait mieux fait de s'occuper un peu plus de moi et un peu moins de sa mŠre$", - "TBT - Ce sont ses affaires ...$", - "TBT - Il n'a pas trop de chance en ce moment bien que ses affaires soient satisfaisantes$", - "TBT - Je travaille avec Pat mais ‡a ne va pas trŠs fort en ce moment$", - "TBT - Ah oui ?! Il a des occupations ? Il ferait bien de s'en occuper s‚rieusement alors$", - "TBT - Lui et Pat sont associ‚s . Je crois que ‡a ne va pas trop mal$", - "TBT - Je m'occupe de moi et c'est d‚j… beaucoup . Et vous ?$", - "TBT - Oh ‡a ! Je lui fais confiance . Elle sait s'occuper$", - "TBT - Mais ! Vous n'avez pas encore d‚couvert son occupation principale ..?$", - "TBT - Elle fait dans la d‚coration avec beaucoup dego–t d'ailleurs . Elle est toujours trŠs bien habill‚e$", - "TBT - Si les bijoux vous interessent, j'ai quelques affaires interessantes … saisir rapidement$", - "TBT - Les bijoux ...$", - "TBT - Je ne sais pas, mais j'aimerais bien qu'il s'occupe un peu moins de mes affaires !$", - "TBT - Quand on est une femme d'int‚rieur on trouve toujours de quoi s'occuper...$", - "TBT - Elle pourrait rester sans rien faire, mais non ! Elle coud, elle lit ...$", - "TBT - Elle n'a s–rement pas des occupations trŠs ‚panouissantes ...$", - "TBT - Une femme comme il n'y en a plus : Elle s'interesse a tout !$", - "TBT - Entre la cuisine et le m‚nage, je n'ai pas beaucoup de temps … vous accorder$", - "TBT - Je ne sais pas comment il s'y prend pour tout faire . C'est merveilleux !$", - "TBT - Il en ferait plus si il s'occupait moins des rag“ts et de la bouteille$", - "TBT - Je suis trŠs ind‚pendant . Tant qu'on ne s'occupe pas de mes affaires : Pas de problŠme$", - "TBT - C'est un ‚go‹ste . Je me demande si il aime autre chose que ses chevaux et ses grimoires$", - "TBT - Je crois qu'il s'entend bien avec tout le monde, mis … part, peut tre, avec Guy$", - "TBT - C'est un homme de caractŠre . Il faut savoir le prendre ..$", - "TBT - Les affaires sont les affaires . Quant … la famille, je la laisse pour ce qu'elle est ...$", - "TBT - Relations ? Relations amicales ? Relations financiŠres sans doute$", - "TBT - Moi je n'ai rien … lui reprocher$", - "TBT - C'est un homme d'affaire d‚brouillard . Il nage parfois … contre-courant mais ... il s'en sortira toujours$", - "TBT - Ils m'ennuient tous .. Non ! Ce n'est mme pas ‡a .. Quoique .. certains ..$", - "TBT - A l'inverse de sa mŠre, c'est une personne trŠs renferm‚e ! Alors question relations ..$", - "TBT - Il doit sans doute faire beaucoup d'effort pour rester agr‚able malgr‚ tous ses ennuis$", - "TBT - Ses relations amoureuses : C'est termin‚ . Ses relations avec moi : Pas vraiment commenc‚es . Quant aux autres : Je ne suis pas les \"autres\"$", - "TBT - J'aime bien tout le monde, tant qu'on ne m'escroque pas$", - "TBT - Il ne suffit pas d'avoir un peu d'argent et d'tre beau parleur pour plaire … tout le monde$", - "TBT - Sans histoire .. C'est quelqu'un d'agr‚able et g‚n‚reux . De plus, il ne manque pas d'humour$", - "TBT - Actuellement je m'entends plut“t bien avec tout le monde . Mais, ici, je ne vais pas m'‚tendre sur le sujet$", - "TBT - Beau plumage, mais ‡a ne vole pas haut ... Parlez en … son mari$", - "TBT - C'est pour un rendez-vous ?$", - "TBT - Elle est trŠs vivante ! Elle ne s'embarrasse pas de pr‚jug‚s stupides$", - "TBT - Dans mon m‚tier, on c“toit surtout des belles femmes et des truands$", - "TBT - La seule valeur s–re chez lui, c'est ses bijoux .. Et sa femme, mais ‡a il ne s'en rend pas compte$", - "TBT - C'est quelqu'un d'interessant . De pas toujours facile … comprendre, mais qui m‚rite le d‚tour$", - "TBT - Je ne d‚teste personne, mais j'aime les choses et les gens quand ils sont … leur place$", - "TBT - C'est entre nous . Mais voyez : quand je parle avec elle, je me sens vite … l'‚troit !$", - "TBT - Pour ne pas s'entendre avec elle, faut y mettre de la mauvaise volont‚$", - "TBT - Vous savez dans mon m‚tier on entend tout mais on ne retient rien, et le service est bien fait$", - "TBT - C'est un hypocrite, un larbin ! Personnellement je ne lui fais pas confiance$", - "TBT - Je ne connait pas le fond de sa pens‚e mais c'est quelqu'un de toujours trŠs correct et impeccable$", - "TBT - C'‚tait une personne qui a v‚cu au manoir, il y a un an .. peut tre plus$", - "TBT - C'‚tait plus qu'une amie pour ma mŠre . En ces moments, j'aurais aim‚ qu'elle soit … mes cot‚s$", - "TBT - Murielle a ‚t‚ la dame de compagnie de Julia$", - "TBT - Elle aussi, faisait des recherches ...$", - "TBT - C'‚tait une femme trŠs cultiv‚e . Son brusque d‚part, il y a un an, m'a surpris et beaucoup chagrin‚$", - "TBT - Elle partageait avec L‚o sa passion de l'histoire et de la r‚gion$", - "TBT - Je crois que tout le monde l'aimait bien$", - "TBT - Elle s'entendait bien avec tout le monde . Elle aimait beaucoup son fils . Quant aux relations belle-mŠre, belle-fille ..$", - "TBT - A part L‚o, elle avait de trŠs bon rapport avec Max ...$", - "TBT - Bien que vos relations furent peu soutenues, J‚r“me, elle vous portait toujours dans son coeur ...$", - "TBT - A part sa famille, pas grand monde$", - "TBT - Ah oui ! Je crois qu'elle a beaucoup regrett‚ le d‚part de cette amie .. euh ! Marielle .. ou Mireille ...$", - "TBT - Non rien !$", - "TBT - Non ... Pas que le sache$", - "TBT - J'ai connu Julia en achetant le manoir . C'‚tait son seul bien . Mais toute ma fortune ‚tait la sienne ...$", - "TBT - Si ce n'est quelques objets personnels, je crois qu'elle n'avait plus rien … elle$", - "TBT - Je crois que toute sa fortune venait de L‚o . Alors, Pfuuut !$", - "TBT - A part la lettre pour vous que j'ai post‚, rien de bien important !$", - "TBT - J'ai ‚t‚ trŠs heureuse qu'elle m'offre sa bible reli‚e$", - "TBT - Ca a ‚t‚ rapide et elle n'a pas eu le temps de prendre des dispositions particuliŠres$", - "TBT - Son dernier pr‚sent m'a surpris$", - "TBT - Quel cadeau ?$", - "TBT - Un chandellier ...$", - "TBT - Oui, j'ai eu un cadeau . Ma femme a mme eu une bible$", - "TBT - Et bien oui ! Comme tout le monde, je crois$", - "TBT - Un poignard$", - "TBT - Je n'ai jamais ‚t‚ fouiller dans le grenier !$", - "TBT - Vous avez un don de double-vue ou un passe-partout$", - "TBT - Le portrait d'une jeune fille : C'est Murielle ...$", - "TBT - Vous savez, je la connaissais assez peu$", - "TBT - Elle ‚tait trŠs charmante, mais c'‚tait surtout la dame de compagnie de Julia$", - "TBT - C'est la seule femme vraiment interessante que j'ai rencontr‚$", - "TBT - Elle avait de grandes connaissances historiques, et la consulter ‚tait trŠs enrichissant$", - "TBT - Je me suis toujours demand‚ ce que certains pouvaient lui trouver !$", - "TBT - Si la chambre est ferm‚e, demandez … L‚o$", - "TBT - J'ai ferm‚ sa chambre aprŠs sa mort et j'aimerais qu'il en soit ainsi encore un certain temps$", - "TBT - Vous savez ce que c'est : Des relations familiales$", - "TBT - Durant toutes ces ann‚es, je ne l'ai jamais servie … contre-coeur$", - "TBT - Je l'aimais autant qu'elle m'aimais, je crois$", - "TBT - De quel droit avez-vous p‚n‚tr‚ dans la chambre de ma femme ?!!$", - "TBT - C'est sans doute la photo de Murielle avec le filleul de Julia$", - "TBT - Je ne me rappelle pas$", - "TBT - C'est Murielle . C'est moi qui l'ai prise. et d'ailleurs elle est tir‚e … l'envers$", - "TBT - Vous tes bien curieux !... C'est sans valeur$", - "TBT - Grimoires, parchemins et manuscrits : C'est le domaine de L‚o$", - "TBT - Dommage que la devise soit manquante ...$", - "TBT - C'est trŠs beau ... Et trŠs vieux ...$", - "TBT - Tiens ! C'est un endroit que je n'ai jamais visit‚$", - "TBT - D'apr‚s L‚o, il semblerait que les Lunes soient plus r‚centes$", - "TBT - Mme par ce temps, vous avez d‚nich‚ un soleil ...$", - "TBT - Profond et inqui‚tant : Le progrŠs a du bon$", - "TBT - Ca reste pour moi le plus grand des mystŠres$", - "TBT - Les derniers temps elle parlait d'un voyage . Et puis ...$", - "TBT - Il y a un peu plus d'un an, un soir, elle a d‚cid‚ de partir ...$", - "TBT - De toutes fa‡ons elle n'‚tait pas faite pour vivre ici$", - "TBT - Quoi ?! Quel corps ? Quel crypte ?$", - "TBT - Si il y en a, je ne les ai jamais trouv‚ ...$", - "TBT - Bien s–r ! ... Et des fant“mes aussi ...$", - "TBT - C'est la plus vielle de la r‚gion : Elle date du XI eme siŠcle$", - "TBT - Elle fut l‚gŠrement restaur‚e aprŠs la r‚volution$", - "TBT - Julia aimait beaucoup la peinture$", - "TBT - Ils ont diff‚rents styles, mais n'ont pas tous une trŠs grande valeur$", - "TBT - Que faites-vous l… ?$", - "TBT - Je suis s–r que vous cherchez quelque chose ici$", - "TBT - Je vous ‚coute$", - "TBT - Que d‚sirez-vous ?$", - "TBT - Oui ?$", - "TBT - Je suis … vous ...$", - "TBT - C'est pourquoi ?$", - "TBT - Allez-y$", - "TBT - C'est … quel sujet ?$", - "TBT - Max : … votre service, monsieur$", - "TBT - De toutes fa‡ons vous n'avez rien … faire ici ! Sortez !!$", - "TBT - Vous tes trop curieux !$", - "TBT - J‚r“me ! Il y a longtemps ... Quelle tristesse, Julia est morte . Sa famille est ici : Guy, son fils . Eva, sa brue . L‚o, son mari bien s–r . Son beau fils, Pat . Des cousins : Bob, Ida, Luc . La tempŠte redouble, il vous faut rester . Les repas sont … 12h et 19h et il y a un recueillement … la chapelle tous les jours … 10h$", - "TBT - En vous voyant j'ai compris que vous decouvririez la v‚rit‚ ... Car je savais pourquoi vous veniez : J'avais retrouv‚ le brouillon de la lettre de Julia . Mais je suis trŠs joueur, alors ... Elle n'avait pas voulu que votre tche soit trop facile, pour me prot‚ger, sans doute, mais elle n'a pu mourir avec cette incertitude sur la conscience . Avez vous d‚couvert que le mur du silence est le nom que les ma‡ons ont donn‚ au mur qui porte ce blason, lors de la construction du manoir ? .. Et ces cadeaux que Julia a laiss‚ avant de mourir ‚taient autant de faux indices qui ne servaient qu'… faire ressortir l'importance des parchemins ... Effectivement, il y a plus d'un an, je travailais avec Murielle au d‚cryptage de ces manuscrits que je venais de trouver . Ma femme a fait la relation entre notre travail et la disparition de Murielle mais elle n'a jamais eu de preuves . Si ce n'est cette bague qu'elle a retrouv‚ un jour dans mes affaires . Une nuit, nous nous sommes aventur‚s dans le passage secret que nous avions d‚couvert . Murielle est morte par accident dans la piŠce de la vierge . J'ai r‚cup‚r‚ la bague rapidement, trouv‚ le tr‚sor et me suis enfuis . Je ne pensais pas qu'elle vivait encore, et je n'ai rien dit car j'avais besoin d'argent . J'ai fait passer cette somme sur le compte des courses de chevaux ...Partez maintenant, puisque vous n'tes pas de la police . Laissez moi seul !$", - "TBT - F‚vrier 1951 ... Profession : detective priv‚ . Le froid figeait Paris et mes affaires lorsque ...$", - "TBT - Une lettre, un appel, des souvenirs d'une enfance encore proche . Que de jeux dans les piŠces d‚labr‚es du manoir de Mortevielle . Julia, une vieille femme a pr‚sent .$", + "That was the name old people gave to the mountain range that lies at the foot of the manor!$", + "These are the mountains one can see in front of the manor$", + "I don't know!$", + "She died from pulmonary embolism$", + "Mother died suddenly. And yet her health had seemed to improve‚$", + "Miss DEFRANCK died from a cold$", + "She died from pulmonary embolism$", + "Excuse me but I prefer to say nothing for now$", + "Only the good die young$", + "I loved my mother . My only regret is that she died in the DEFRANCK's manor$", + "That region has a lot of history and there is plenty to keep me busy. And also I love horses..$", + "He is a history enthusiast and a gambler. By the way he won a large sum one year ago$", + "He is already very busy with the management and maintenance of the mansion...$", + "I am the CEO of a small perfume company. But when I am here, I rest$", + "He is a dynamic man who has succeeded in perfurmes$", + "Him! He is an upstart rogue! Perfumes must have killed his common sense. Moreover, when he's here he spends his evenings in his room$", + "I was very concerned about my mother's health, and now I don't feel like doing anything at all$", + "He would have done better to look after me a bit more and a bit less after his mother$", + "(313) It is his business...$", + "He does not have much luck at the moment although his business is satisfactory$", + "I work with Pat but it's not going too well at the moment$", + "Oh really?! He has activities? He better take care of them seriously then$", + "Him and Pat are patners. I think it's going pretty well$", + "I take care of myself and that's already lots. How about you?$", + "(319) Oh that! I trust her. She knows how to keep herself busy$", + "(320) What! You have not yet discovered her main occupation..?$", + "She is working in the decoration business, and tastefully with that. She is always very well dressed$", + "If you like jewels, I have some good deals to propose for a short while$", + "The jewels...$", + "I don't know, but I'd like him to give me a bit more slack!$", + "When one is a housewife, one always find something to do...$", + "She could stay there doing nothing, but no! She sews, she reads ...$", + "She probably doesn't have very fulfilling occupations...$", + "A woman like there is no more: She is interested in everything!$", + "With the cooking and the cleaning I do not have much time for you$", + "I do not know how he manages to do everything. That's wonderful!$", + "He would do more if he showed less interest in gossip and alcohol$", + "I am very independant. As long as nobody interferes in my business: No problem$", + "He is selfish. I wonder if he likes something else than his horses and grimoires$", + "I think he gets along well with everyone, except, perhaps, with Guy$", + "He has a temper. You have to learn how to deal with him ..$", + "Business is business. As for the family, I leave it as it is ...$", + "Relations? Friendly relations? Financial relations, without a doubt$", + "Oh I don't have anything against him$", + "He is a resourceful businessman. He sometimes tries to swim upstream but … he will always find a way to make it work$", + "(340) They all bore me .. No! Not even that .. Even if .. some people ..$", + "Contrary to his mother, he is a very shy person ! So when you say relations ..$", + "He must be trying very hard to remain nice despite all his troubles$", + "(343) His romantic relationship: it's over. His relationship with me: hasn't really started. As for the other ones: I don't follow the \"other ones\"$", + "I like everyone, as long as they are not trying to screw me over$", + "It is not enough to have a bit of money and to know how to talk for everyone to like you$", + "Not much to say about him .. He is a nice and generous man. And what's more, he can be quite funny$", + "Nowadays I get along rather well with everyone. But, here, I am not going to say more about this$", + "(348) Nice feathers, but a bird's brain... Ask her husband$", + "Is it for an appointment?$", + "(350) She is very lively! She does not burden herself with stupids prejudices$", + "In my line of work, one mostly encounters beautiful women and gangsters$", + "The only sure thing he has going for him, it's his jewelery .. And his wife, but he doesn't realize that$", + "It's an interesting character. Who is not always very easy to follow, but worth knowing$", + "I hate no one, but I like things and people when they stay where they should be$", + "This stays between us. But you see: when I speak with her, I soon start to feel a bit uncomfortable!$", + "You'd have to try hard to not get along with her$", + "You know, in my line of work you hear everything but don't remember anything, and service is well done$", + "He's a submissive hypocrite! Personally I don't trust him$", + "I don't know what he thinks deep down inside, but he's always polite and impeccable$", + "Someone who lived in the manor, a year ago .. maybe more$", + "She was more than a friend to my mother. In these moments, I would have loved to have her by my side$", + "Murielle has been Julia's lady-in-waiting$", + "She, too, was doing some research ...$", + "She was a very educated person. Her abrupt leaving, a year ago, surprised me and caused me great sorrow$", + "Her and Leo shared a common passion for history and the local area$", + "I think everyone liked her$", + "She got along with everyone. She loved her son dearly. As for the relations between mother-in-law and daughter-in-law ..$", + "Apart from Leo, she got along very well with Max ...$", + "Even if your relations were unfrequent, Jerome, there was still a place for you in her heart ...$", + "(370) Apart from her family, not a lot of people$", + "Oh right! I think she deeply regretted this friend's leaving .. err! Marielle .. or Mireille ...$", + "No, nothing!$", + "No … Not that I know of$", + "I met Julia when buying the manor. It was the only thing she owned. But all my wealth was hers ...$", + "Apart from a few personal belongings, I think she didn't own anything anymore$", + "I think all her fortune came from Leo. So, pfft!$", + "(377) Apart from the letter for you I posted, nothing very important!$", + "I was very happy she gave me her bound bible as a present$", + "It happened fast and she didn't have time to make any particular will$", + "Her last gift suprised me$", + "Which gift?$", + "A chandelier ...$", + "Yes, I got a present. My wife even got a bible$", + "Well yes! Like everyone, I believe$", + "A dagger$", + "I have never been looking around in the attic!$", + "(387) You either can read the past or pick a door$", + "The portrait of a young girl: it's Murielle ...$", + "You know, I didn't know her that well$", + "She was very charming, but above all she was Julia's lady-in-waiting$", + "She was the only truly interesting woman I've met$", + "She had a great knowledge in history, and you learned a great deal when you asked her about it$", + "(393) I've always wondered why some people fancied her!$", + "If the room is closed, ask Leo$", + "(395) I closed her door after her death and I'd like it to remain this way for a while$", + "You know how it is: family relations$", + "All those years, I've never regretted serving her$", + "I loved her as much as she loved me, I think$", + "What made you think you could enter my wife's room?!!$", + "It must be the picture of Murielle with Julia's godson$", + "I don't remember$", + "This is Murielle. I took that picture, and actually they developed it backwards$", + "You sure are curious!... It's not worth anything$", + "(404) Grimoires, parchment and manuscripts: it is Leo's realm$", + "Too bad the motto doesn't appear here ...$", + "This is beautiful … And very old ...$", + "Hey! That's a place I've never visited$", + "According to Leo, it seems that the Moons are more recent$", + "Even under this weather, you managed to find a sun ...$", + "Profound and disturbing: Progress is good$", + "For me, it remains the biggest of all mysteries$", + "The last days she was talking about a trip. And then ...$", + "A little over a year ago, one night, she decided to leave ...$", + "In any case, she wasn't meant to live here$", + "What?! Whose body? Which crypt?$", + "If there are any, I have never found them ...$", + "Of course! And ghosts too ...$", + "It's the oldest in the area: it is from the 11th century$", + "It was slightly renovated after the French Revolution$", + "Julia loved paintings$", + "They are different in styles, but not all of them are worth a lot$", + "What are you doing h-$", + "I'm sure you are looking for something in here$", + "I'm listening$", + "What do you want?$", + "Yes?$", + "I'm all yours ...$", + "What's the matter?$", + "Go ahead$", + "What is it about?$", + "Max: at your service, sir$", + "In any case you have no business being in here! Get out!!$", + "You are too curious!$", + "Jerome! It's been a while … I'm very sad to announce you that Julia died. Her family is here: Guy, her son; Eva, her daughter-in-law; Leo, her husband, of course; her son-in-law Pat; cousins, too: Bob, Ida, Luc. The storm is getting stronger, you must stay here. Meals are served at 12am and 7pm, and there is a mass at the chapel every day at 10am$", + "When I saw you I knew you would uncover the truth … I knew why you were here: I had found the draft of Julia's letter. But I love to play, so … She hadn't wanted your task to be too easy, to protect me, probably, but she couldn't die knowing this mystery would remain unsolved. Did you find out that the wall of silence is the name the builders gave, during the construction of the manor, to the wall on which the coat of arms hangs? .. And those gifts Julia left before dying were as many false leads, and their true purpose was to highlight how important the parchments were … That's right, more than a year ago I was working with Murielle on the decryption of those manuscripts I had just found. My wife made the connection between our work and Murielle's disappearance, but she never had any proof. Except that ring she found one day while going through my belongings. One night, we went exploring the secret passage we had found. Murielle died by accident in the room of the Virgin. I quickly took the ring from her, found the treasure and ran away. I didn't think she was still alive, and I didn't say a word because I needed the money. I told everyone the money was coming from a winning bet at the horseraces … Leave now, since you're not a policeman. Leave me alone!$", + "February 1951 ,,, Occupation: private eye. The cold was freezing Paris off, and my cases as well, when ...$", + "A letter, a call, memories from a childhood not that long ago. Echoes of the many games we played in the disused rooms of Mortville Manor … And Julia, now an old woman.$", " to the bureau$", " to the kitchen$", " to the cellar$", -- cgit v1.2.3 From 0a1dd302fe6b6e14e90801a949ef038b3b64e726 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 21 Feb 2013 00:53:52 +0100 Subject: MORTEVIELLE: Some renaming, remove useless variables, add debugger --- engines/mortevielle/debugger.cpp | 36 +++++++++++++++++++++++++++++ engines/mortevielle/debugger.h | 45 +++++++++++++++++++++++++++++++++++++ engines/mortevielle/graphics.h | 4 ++-- engines/mortevielle/menu.cpp | 7 +++--- engines/mortevielle/menu.h | 4 ++-- engines/mortevielle/module.mk | 1 + engines/mortevielle/mortevielle.cpp | 23 ++++++++++++------- engines/mortevielle/mortevielle.h | 2 ++ 8 files changed, 107 insertions(+), 15 deletions(-) create mode 100644 engines/mortevielle/debugger.cpp create mode 100644 engines/mortevielle/debugger.h diff --git a/engines/mortevielle/debugger.cpp b/engines/mortevielle/debugger.cpp new file mode 100644 index 0000000000..fc0e54ab6d --- /dev/null +++ b/engines/mortevielle/debugger.cpp @@ -0,0 +1,36 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +#include "mortevielle/debugger.h" +#include "mortevielle/mortevielle.h" + +namespace Mortevielle { + +Debugger::Debugger() : GUI::Debugger() { + DCmd_Register("continue", WRAP_METHOD(Debugger, Cmd_Exit)); +} + +void Debugger::setParent(MortevielleEngine *vm) { + _vm = vm; +} + +} // End of namespace Mortevielle diff --git a/engines/mortevielle/debugger.h b/engines/mortevielle/debugger.h new file mode 100644 index 0000000000..57ca94e78b --- /dev/null +++ b/engines/mortevielle/debugger.h @@ -0,0 +1,45 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +#ifndef MORTEVIELLE_DEBUGGER_H +#define MORTEVIELLE_DEBUGGER_H + +#include "common/scummsys.h" +#include "gui/debugger.h" + +namespace Mortevielle { + +class MortevielleEngine; + +class Debugger : public GUI::Debugger { +private: + MortevielleEngine *_vm; + +public: + Debugger(); + virtual ~Debugger() {} + void setParent(MortevielleEngine *vm); +}; + +} // End of namespace Mortevielle + +#endif diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 03e0d016ec..7bf39c3662 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -48,8 +48,8 @@ public: class GfxSurface: public Graphics::Surface { private: int _xp, _yp; - int _xSize, _ySize, _var12; - int _var14, _lookupIndex, _lookupValue; + int _xSize, _ySize; + int _lookupIndex, _lookupValue; bool _nibbleFlag; int _thickness; int _yInc, _yEnd, _xInc, _xEnd; diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 8e6d94c449..5d64961f23 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -390,9 +390,9 @@ void Menu::menuDown(int ii) { /** * Menu is being removed, so restore the previous background area. */ -void Menu::menuUp(int xx) { +void Menu::menuUp(int msgId) { if (_multiTitle) { - g_vm->charecr(10, (_menuConstants[xx - 1][1] + 1) << 1); + g_vm->charecr(10, (_menuConstants[msgId - 1][1] + 1) << 1); /* Restore the background area */ assert(g_vm->_screenSurface.pitch == g_vm->_backgroundSurface.pitch); @@ -420,8 +420,9 @@ void Menu::eraseMenu() { /** * Handle updates to the menu + * @remarks Originally called 'mdn' */ -void Menu::mdn() { +void Menu::updateMenu() { if (!_menuActive) return; diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index 03c091909e..712242e6bc 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -68,9 +68,9 @@ public: void enableMenuItem(int menuId); void displayMenu(); void drawMenu(); - void menuUp(int xx); + void menuUp(int msgId); void eraseMenu(); - void mdn(); + void updateMenu(); void initMenu(); void setSearchMenu(); diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 38e6e0508d..9cce597566 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -2,6 +2,7 @@ MODULE := engines/mortevielle MODULE_OBJS := \ actions.o \ + debugger.o \ detection.o \ dialogs.o \ graphics.o \ diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 2b95bcea0e..3875d8d458 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -74,6 +74,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g Engine(system), _gameDescription(gameDesc), _randomSource("mortevielle"), _soundManager(_mixer) { g_vm = this; + _debugger.setParent(this); _lastGameFrame = 0; _mouseClick = false; _inMainGameLoop = false; @@ -345,6 +346,8 @@ bool MortevielleEngine::keyPressed() { _lastGameFrame = g_system->getMillis(); _screenSurface.updateScreen(); + + _debugger.onFrame(); } // Delay briefly to keep CPU usage down @@ -409,8 +412,13 @@ void MortevielleEngine::addKeypress(Common::Event &evt) { // Character to add char ch = evt.kbd.ascii; - // Handle alphabetic keys - if ((evt.kbd.keycode >= Common::KEYCODE_a) && (evt.kbd.keycode <= Common::KEYCODE_z)) { + // Check for debugger + if ((evt.kbd.keycode == Common::KEYCODE_d) && (evt.kbd.flags & Common::KBD_CTRL)) { + // Attach to the debugger + _debugger.attach(); + _debugger.onFrame(); + } else if ((evt.kbd.keycode >= Common::KEYCODE_a) && (evt.kbd.keycode <= Common::KEYCODE_z)) { + // Handle alphabetic keys if (evt.kbd.hasFlags(Common::KBD_CTRL)) ch = evt.kbd.keycode - Common::KEYCODE_a + 1; else @@ -523,6 +531,8 @@ void MortevielleEngine::delay(int amount) { if (g_system->getMillis() > (_lastGameFrame + GAME_FRAME_DELAY)) { _lastGameFrame = g_system->getMillis(); _screenSurface.updateScreen(); + + _debugger.onFrame(); } g_system->delayMillis(10); @@ -647,7 +657,7 @@ void MortevielleEngine::handleAction() { _inMainGameLoop = true; do { - _menu.mdn(); + _menu.updateMenu(); prepareRoom(); _mouse.moveMouse(funct, inkey); CHECK_QUIT; @@ -982,7 +992,7 @@ int MortevielleEngine::getPresenceStatsGreenRoom() { else if ((hour >= 0) && (hour < 8)) retVal = 70; - _menu.mdn(); + _menu.updateMenu(); return retVal; } @@ -2258,11 +2268,8 @@ Common::String MortevielleEngine::getString(int num) { } void MortevielleEngine::copcha() { - int i = kAcha; - do { + for (int i = kAcha; i < kAcha + 390; i++) _tabdon[i] = _tabdon[i + 390]; - ++i; - } while (i != kAcha + 390); } /** diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 81baab91b4..aeef3dd1e2 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -37,6 +37,7 @@ #include "engines/engine.h" #include "common/error.h" #include "graphics/surface.h" +#include "mortevielle/debugger.h" #include "mortevielle/graphics.h" #include "mortevielle/menu.h" #include "mortevielle/mouse.h" @@ -475,6 +476,7 @@ public: // TODO: Replace the following with proper implementations, or refactor out the code using them byte _mem[65536 * 16]; + Debugger _debugger; ScreenSurface _screenSurface; PaletteManager _paletteManager; GfxSurface _backgroundSurface; -- cgit v1.2.3 From fab337c61c551beea5c8181a0d83694755e3867d Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 21 Feb 2013 00:55:58 +0100 Subject: MORTEVIELLE: Add new DAT file containing initial English translation --- dists/engine-data/mort.dat | Bin 79412 -> 77851 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dists/engine-data/mort.dat b/dists/engine-data/mort.dat index 4415f57c29..f9cd1ec127 100644 Binary files a/dists/engine-data/mort.dat and b/dists/engine-data/mort.dat differ -- cgit v1.2.3 From a5e263cd0533409c8b718363ccd1c8f04a801db5 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 21 Feb 2013 07:57:31 +0100 Subject: MORTEVIELLE: Add two debug functions required to check the English translation --- engines/mortevielle/debugger.cpp | 17 +++++++++++++++++ engines/mortevielle/debugger.h | 4 ++++ 2 files changed, 21 insertions(+) diff --git a/engines/mortevielle/debugger.cpp b/engines/mortevielle/debugger.cpp index fc0e54ab6d..b0b9dc7d2c 100644 --- a/engines/mortevielle/debugger.cpp +++ b/engines/mortevielle/debugger.cpp @@ -27,8 +27,25 @@ namespace Mortevielle { Debugger::Debugger() : GUI::Debugger() { DCmd_Register("continue", WRAP_METHOD(Debugger, Cmd_Exit)); + DCmd_Register("show_questions", WRAP_METHOD(Debugger, Cmd_showAllQuestions)); + DCmd_Register("reset_parano", WRAP_METHOD(Debugger, Cmd_resetParano)); } +bool Debugger::Cmd_showAllQuestions(int argc, const char **argv) { + for (int i = 1; i <= 10; ++i) + _vm->_coreVar._pctHintFound[i] = '*'; + + for (int i = 1; i <= 42; ++i) + _vm->_coreVar._availableQuestion[i] = '*'; + + return true; +} + +bool Debugger::Cmd_resetParano(int argc, const char **argv) { + _vm->_coreVar._faithScore = 0; + + return true; +} void Debugger::setParent(MortevielleEngine *vm) { _vm = vm; } diff --git a/engines/mortevielle/debugger.h b/engines/mortevielle/debugger.h index 57ca94e78b..9041d90110 100644 --- a/engines/mortevielle/debugger.h +++ b/engines/mortevielle/debugger.h @@ -34,6 +34,10 @@ class Debugger : public GUI::Debugger { private: MortevielleEngine *_vm; +protected: + bool Cmd_showAllQuestions(int argc, const char **argv); + bool Cmd_resetParano(int argc, const char **argv); + public: Debugger(); virtual ~Debugger() {} -- cgit v1.2.3 From 2ea263f62bbab12447d1f0080f8d93f1d706eeaf Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 22 Feb 2013 13:42:01 +0100 Subject: MORTEVIELLE: Fix minor glitches in DAT file --- devtools/create_mortdat/gametext.h | 760 ++++++++++++++++++------------------- dists/engine-data/mort.dat | Bin 77851 -> 77839 bytes 2 files changed, 380 insertions(+), 380 deletions(-) diff --git a/devtools/create_mortdat/gametext.h b/devtools/create_mortdat/gametext.h index 9efb55bc53..bd3c340f1b 100644 --- a/devtools/create_mortdat/gametext.h +++ b/devtools/create_mortdat/gametext.h @@ -285,7 +285,7 @@ const char *gameDataEn[] = { "Julia's bedroom$", "The photo at Julia's home$", "Julia and yourself...$", - "L‚o's occupations$", + "Léo's occupations$", "Pat's occupations$", "Guy's occupations$", "Bob's occupations$", @@ -294,7 +294,7 @@ const char *gameDataEn[] = { "Ida's occupations$", "Max's occupations$", "Your occupations$", - "L‚o's relationships$", + "Léo's relationships$", "Pat's relationships$", "Guy's relationships$", "Bob's relationships$", @@ -324,7 +324,7 @@ const char *gameDataEn[] = { "These are the mountains one can see in front of the manor$", "I don't know!$", "She died from pulmonary embolism$", - "Mother died suddenly. And yet her health had seemed to improve‚$", + "Mother died suddenly. And yet her health had seemed to improve$", "Miss DEFRANCK died from a cold$", "She died from pulmonary embolism$", "Excuse me but I prefer to say nothing for now$", @@ -345,13 +345,13 @@ const char *gameDataEn[] = { "Him and Pat are patners. I think it's going pretty well$", "I take care of myself and that's already lots. How about you?$", "(319) Oh that! I trust her. She knows how to keep herself busy$", - "(320) What! You have not yet discovered her main occupation..?$", + "(320) What! You have not yet discovered her main occupation...?$", "She is working in the decoration business, and tastefully with that. She is always very well dressed$", "If you like jewels, I have some good deals to propose for a short while$", "The jewels...$", "I don't know, but I'd like him to give me a bit more slack!$", "When one is a housewife, one always find something to do...$", - "She could stay there doing nothing, but no! She sews, she reads ...$", + "She could stay there doing nothing, but no! She sews, she reads...$", "She probably doesn't have very fulfilling occupations...$", "A woman like there is no more: She is interested in everything!$", "With the cooking and the cleaning I do not have much time for you$", @@ -360,24 +360,24 @@ const char *gameDataEn[] = { "I am very independant. As long as nobody interferes in my business: No problem$", "He is selfish. I wonder if he likes something else than his horses and grimoires$", "I think he gets along well with everyone, except, perhaps, with Guy$", - "He has a temper. You have to learn how to deal with him ..$", - "Business is business. As for the family, I leave it as it is ...$", + "He has a temper. You have to learn how to deal with him...$", + "Business is business. As for the family, I leave it as it is...$", "Relations? Friendly relations? Financial relations, without a doubt$", "Oh I don't have anything against him$", - "He is a resourceful businessman. He sometimes tries to swim upstream but … he will always find a way to make it work$", - "(340) They all bore me .. No! Not even that .. Even if .. some people ..$", - "Contrary to his mother, he is a very shy person ! So when you say relations ..$", + "He is a resourceful businessman. He sometimes tries to swim upstream but... he will always find a way to make it work$", + "(340) They all bore me... No! Not even that... Even if... some people...$", + "Contrary to his mother, he is a very shy person ! So when you say relations...$", "He must be trying very hard to remain nice despite all his troubles$", "(343) His romantic relationship: it's over. His relationship with me: hasn't really started. As for the other ones: I don't follow the \"other ones\"$", "I like everyone, as long as they are not trying to screw me over$", "It is not enough to have a bit of money and to know how to talk for everyone to like you$", - "Not much to say about him .. He is a nice and generous man. And what's more, he can be quite funny$", + "Not much to say about him... He is a nice and generous man. And what's more, he can be quite funny$", "Nowadays I get along rather well with everyone. But, here, I am not going to say more about this$", "(348) Nice feathers, but a bird's brain... Ask her husband$", "Is it for an appointment?$", "(350) She is very lively! She does not burden herself with stupids prejudices$", "In my line of work, one mostly encounters beautiful women and gangsters$", - "The only sure thing he has going for him, it's his jewelery .. And his wife, but he doesn't realize that$", + "The only sure thing he has going for him, it's his jewelery... And his wife, but he doesn't realize that$", "It's an interesting character. Who is not always very easy to follow, but worth knowing$", "I hate no one, but I like things and people when they stay where they should be$", "This stays between us. But you see: when I speak with her, I soon start to feel a bit uncomfortable!$", @@ -385,21 +385,21 @@ const char *gameDataEn[] = { "You know, in my line of work you hear everything but don't remember anything, and service is well done$", "He's a submissive hypocrite! Personally I don't trust him$", "I don't know what he thinks deep down inside, but he's always polite and impeccable$", - "Someone who lived in the manor, a year ago .. maybe more$", + "Someone who lived in the manor, a year ago... maybe more$", "She was more than a friend to my mother. In these moments, I would have loved to have her by my side$", "Murielle has been Julia's lady-in-waiting$", - "She, too, was doing some research ...$", + "She, too, was doing some research...$", "She was a very educated person. Her abrupt leaving, a year ago, surprised me and caused me great sorrow$", "Her and Leo shared a common passion for history and the local area$", "I think everyone liked her$", - "She got along with everyone. She loved her son dearly. As for the relations between mother-in-law and daughter-in-law ..$", - "Apart from Leo, she got along very well with Max ...$", - "Even if your relations were unfrequent, Jerome, there was still a place for you in her heart ...$", + "She got along with everyone. She loved her son dearly. As for the relations between mother-in-law and daughter-in-law...$", + "Apart from Leo, she got along very well with Max....$", + "Even if your relations were unfrequent, Jerome, there was still a place for you in her heart...$", "(370) Apart from her family, not a lot of people$", - "Oh right! I think she deeply regretted this friend's leaving .. err! Marielle .. or Mireille ...$", + "Oh right! I think she deeply regretted this friend's leaving... err! Marielle... or Mireille...$", "No, nothing!$", - "No … Not that I know of$", - "I met Julia when buying the manor. It was the only thing she owned. But all my wealth was hers ...$", + "No... Not that I know of$", + "I met Julia when buying the manor. It was the only thing she owned. But all my wealth was hers...$", "Apart from a few personal belongings, I think she didn't own anything anymore$", "I think all her fortune came from Leo. So, pfft!$", "(377) Apart from the letter for you I posted, nothing very important!$", @@ -407,13 +407,13 @@ const char *gameDataEn[] = { "It happened fast and she didn't have time to make any particular will$", "Her last gift suprised me$", "Which gift?$", - "A chandelier ...$", + "A chandelier...$", "Yes, I got a present. My wife even got a bible$", "Well yes! Like everyone, I believe$", "A dagger$", "I have never been looking around in the attic!$", "(387) You either can read the past or pick a door$", - "The portrait of a young girl: it's Murielle ...$", + "The portrait of a young girl: it's Murielle...$", "You know, I didn't know her that well$", "She was very charming, but above all she was Julia's lady-in-waiting$", "She was the only truly interesting woman I've met$", @@ -430,19 +430,19 @@ const char *gameDataEn[] = { "This is Murielle. I took that picture, and actually they developed it backwards$", "You sure are curious!... It's not worth anything$", "(404) Grimoires, parchment and manuscripts: it is Leo's realm$", - "Too bad the motto doesn't appear here ...$", - "This is beautiful … And very old ...$", + "Too bad the motto doesn't appear here...$", + "This is beautiful... And very old...$", "Hey! That's a place I've never visited$", "According to Leo, it seems that the Moons are more recent$", - "Even under this weather, you managed to find a sun ...$", + "Even under this weather, you managed to find a sun...$", "Profound and disturbing: Progress is good$", "For me, it remains the biggest of all mysteries$", - "The last days she was talking about a trip. And then ...$", - "A little over a year ago, one night, she decided to leave ...$", + "The last days she was talking about a trip. And then...$", + "A little over a year ago, one night, she decided to leave...$", "In any case, she wasn't meant to live here$", "What?! Whose body? Which crypt?$", - "If there are any, I have never found them ...$", - "Of course! And ghosts too ...$", + "If there are any, I have never found them...$", + "Of course! And ghosts too...$", "It's the oldest in the area: it is from the 11th century$", "It was slightly renovated after the French Revolution$", "Julia loved paintings$", @@ -452,17 +452,17 @@ const char *gameDataEn[] = { "I'm listening$", "What do you want?$", "Yes?$", - "I'm all yours ...$", + "I'm all yours...$", "What's the matter?$", "Go ahead$", "What is it about?$", "Max: at your service, sir$", "In any case you have no business being in here! Get out!!$", "You are too curious!$", - "Jerome! It's been a while … I'm very sad to announce you that Julia died. Her family is here: Guy, her son; Eva, her daughter-in-law; Leo, her husband, of course; her son-in-law Pat; cousins, too: Bob, Ida, Luc. The storm is getting stronger, you must stay here. Meals are served at 12am and 7pm, and there is a mass at the chapel every day at 10am$", - "When I saw you I knew you would uncover the truth … I knew why you were here: I had found the draft of Julia's letter. But I love to play, so … She hadn't wanted your task to be too easy, to protect me, probably, but she couldn't die knowing this mystery would remain unsolved. Did you find out that the wall of silence is the name the builders gave, during the construction of the manor, to the wall on which the coat of arms hangs? .. And those gifts Julia left before dying were as many false leads, and their true purpose was to highlight how important the parchments were … That's right, more than a year ago I was working with Murielle on the decryption of those manuscripts I had just found. My wife made the connection between our work and Murielle's disappearance, but she never had any proof. Except that ring she found one day while going through my belongings. One night, we went exploring the secret passage we had found. Murielle died by accident in the room of the Virgin. I quickly took the ring from her, found the treasure and ran away. I didn't think she was still alive, and I didn't say a word because I needed the money. I told everyone the money was coming from a winning bet at the horseraces … Leave now, since you're not a policeman. Leave me alone!$", - "February 1951 ,,, Occupation: private eye. The cold was freezing Paris off, and my cases as well, when ...$", - "A letter, a call, memories from a childhood not that long ago. Echoes of the many games we played in the disused rooms of Mortville Manor … And Julia, now an old woman.$", + "Jerome! It's been a while... I'm very sad to announce you that Julia died. Her family is here: Guy, her son; Eva, her daughter-in-law; Leo, her husband, of course; her son-in-law Pat; cousins, too: Bob, Ida, Luc. The storm is getting stronger, you must stay here. Meals are served at 12am and 7pm, and there is a mass at the chapel every day at 10am$", + "When I saw you I knew you would uncover the truth... I knew why you were here: I had found the draft of Julia's letter. But I love to play, so ŕ She hadn't wanted your task to be too easy, to protect me, probably, but she couldn't die knowing this mystery would remain unsolved. Did you find out that the wall of silence is the name the builders gave, during the construction of the manor, to the wall on which the coat of arms hangs?.. And those gifts Julia left before dying were as many false leads, and their true purpose was to highlight how important the parchments were ŕ That's right, more than a year ago I was working with Murielle on the decryption of those manuscripts I had just found. My wife made the connection between our work and Murielle's disappearance, but she never had any proof. Except that ring she found one day while going through my belongings. One night, we went exploring the secret passage we had found. Murielle died by accident in the room of the Virgin. I quickly took the ring from her, found the treasure and ran away. I didn't think she was still alive, and I didn't say a word because I needed the money. I told everyone the money was coming from a winning bet at the horseraces ŕ Leave now, since you're not a policeman. Leave me alone!$", + "February 1951... Occupation: private eye. The cold was freezing Paris off, and my cases as well, when...$", + "A letter, a call, memories from a childhood not that long ago. Echoes of the many games we played in the disused rooms of Mortville Manor... And Julia, now an old woman.$", " to the bureau$", " to the kitchen$", " to the cellar$", @@ -493,7 +493,7 @@ const char *gameDataEn[] = { "Directed by: KYILKHOR CREATION and LANGLOIS$", "$", "With the cooperation of...$", - "B‚atrice et Jean_Luc LANGLOIS$", + "Béatrice et Jean_Luc LANGLOIS$", "for the music and the voices,$", "Bernard GRELAUD for the graphic conception,$", "MARIA-DOLORES for the graphic direction,$", @@ -592,7 +592,7 @@ const char *gameDataEn[] = { "- 11$", "What was the first name@of the unknown character?$", "- Mireille$", - "- Fran‡oise$", + "- Françoise$", "- Maguy$", "- Emilie$", "- Murielle$", @@ -609,7 +609,7 @@ const char *gameDataEn[] = { "[1][ | Disk error | All stop... ][ok]$", "[1][ | You should have noticed |00% of the clues ][ok]$", "[3][ | insert disk 2 | in drive A ][ok]$", - "TBT - [1][ |Avant d'aller plus loin, vous faites|un point sur l'‚tat de vos connaissances][ok]$", + "TBT - [1][ |Avant d'aller plus loin, vous faites|un point sur l'état de vos connaissances][ok]$", "TBT - MASTER .$", "TBT - rorL$", NULL @@ -617,9 +617,9 @@ const char *gameDataEn[] = { const char *gameDataFr[] = { "Le calme dans la tourmente$", - "Des go—ts et des couleurs!$", + "Des goűts et des couleurs!$", "Mauve qui peut!$", - "PriŠre de laisser en sortant...$", + "Pričre de laisser en sortant...$", "Trou noir troublant$", "Bleu... comme \"peur bleue\"!$", "Chambre de \"Saigneur\"!$", @@ -629,33 +629,33 @@ const char *gameDataFr[] = { "Odeur de feux de bois et de tabac$", "Tabac et vieux bouquins$", "Oignons, cannelle et spiritueux$", - "Un endroit bien peu visit‚$", - "Humidit‚ et moisissure$", + "Un endroit bien peu visité$", + "Humidité et moisissure$", "Avis aux colporteurs...$", - "Corps putr‚fi‚ : cryptomanie mortelle!$", - "Et en plus... des piŠges d‚samorc‚s!$", - "C'est d‚j… ouvert$", + "Corps putréfié : cryptomanie mortelle!$", + "Et en plus... des pičges désamorcés!$", + "C'est déjŕ ouvert$", "Danger : avalanches$", - "Une odeur de saintet‚!$", + "Une odeur de sainteté!$", "Une btisse imposante$", - "L'envers du mystŠre!$", - "Dr“le d'horoscope!$", + "L'envers du mystčre!$", + "Drôle d'horoscope!$", "Tant va la cruche...$", - "Une porte en chŠne$", + "Une porte en chčne$", "Une photo$", "Les armoiries$", "$", - "Max, le domestique, vous accueille puis vous conduit … votre chambre$", - "Mortevielle, le 16/2/51@ Mon cher J‚r“me,@ Suite … mon t‚l‚gramme, je vous fais part des raisons de mon inqui‚tude :il y a un an, Murielle, ma dame de compagnie, disparaissait . D‚part ayant rapport avec le renouveau financier du Manoir, ou... Silence difficile … comprendre, surtout pour mon fils Guy . N'ayant pu jusqu'… pr‚sent, faire le jour sur cette affaire, je compte sur vous pour la mener … bien . Si mon ‚tat de sant‚ ne s'am‚liorait pas, prenez les d‚cisions qui vous sembleront le plus appropri‚es...@ Amiti‚s. JULIA DEFRANCK$", - "Plus tard, Guy vous apprendra le suicide de L‚o... aprŠs un pari insens‚ aux courses!$", + "Max, le domestique, vous accueille puis vous conduit ŕ votre chambre$", + "Mortevielle, le 16/2/51@ Mon cher Jérôme,@ Suite ŕ mon télégramme, je vous fais part des raisons de mon inquiétude :il y a un an, Murielle, ma dame de compagnie, disparaissait . Départ ayant rapport avec le renouveau financier du Manoir, ou... Silence difficile ŕ comprendre, surtout pour mon fils Guy . N'ayant pu jusqu'ŕ présent, faire le jour sur cette affaire, je compte sur vous pour la mener ŕ bien . Si mon état de santé ne s'améliorait pas, prenez les décisions qui vous sembleront le plus appropriées...@ Amitiés. JULIA DEFRANCK$", + "Plus tard, Guy vous apprendra le suicide de Léo... aprčs un pari insensé aux courses!$", "F3: encore@F8: suite$", - "Le maŚtre des lieux$", - "Le futur h‚ritier$", + "Le maître des lieux$", + "Le futur héritier$", "Le fils de JULIA$", "Joli brin!!!$", "Superman!$", "Le mari d'Ida$", - "Propos int‚ressants?$", + "Propos intéressants?$", "Service compris...$", "Rien dessous!$", "Un ange passe...$", @@ -663,61 +663,61 @@ const char *gameDataFr[] = { "Admirez! Contemplez!$", "Non ! Rien !$", "Impossible$", - "‡a tache !$", - "Un trait‚ sur l'histoire de la r‚gion$", - "Quelques piŠces$", + "ça tache !$", + "Un traité sur l'histoire de la région$", + "Quelques pičces$", "Premier commandement...$", - "Des p‚tales plein les narines !$", + "Des pétales plein les narines !$", "Pique, Coeur...$", - "‡a ne manque pas de cachets !$", + "ça ne manque pas de cachets !$", "Un roman d'amour$", "Souffler n'est pas jouer$", - "Pas une r‚ussite!$", + "Pas une réussite!$", "Gare aux rebondissements !$", "Sombre et profond...$", "Sensations normales$", "Sniff!$", "Pas discret ! Contentez-vous de regarder !$", - "Atchoum! De la p... poussiŠre$", - "La toile est sign‚e... pas le papier peint !$", + "Atchoum! De la p... poussičre$", + "La toile est signée... pas le papier peint !$", "Pas de chance, rien !$", "Soyez plus discret !$", "Les volets sont clos$", "De la neige, encore de la neige !$", - "G‚nial : une toile de maŚtre !$", - "Aucun doute : une v‚ritable imitation$", + "Génial : une toile de maître !$", + "Aucun doute : une véritable imitation$", "Hum ! Vous tiquez : de l'antique en toc !$", - "Une piŠce rare de valeur !$", + "Une pičce rare de valeur !$", "Rien de remarquable$", "Linge, objets personnels...$", - "Pas n'importe o— !$", + "Pas n'importe oů !$", "Ce n'est pas l'heure !$", - "On ne parle pas la bouche pleine ! Donc, une fois le repas termin‚...$", + "On ne parle pas la bouche pleine ! Donc, une fois le repas terminé...$", "Quelqu'un entre, s'affaire, ressort...$", "On s'approche de votre cachette !$", "On vous surprend !$", - "Non : vous tes trop charg‚ !$", + "Non : vous ętes trop chargé !$", "Essayez de nouveau$", "Vous restez perplexe !?$", "Vous quittez le Manoir. A Paris, un message vous attend...$", - "A‹e, a‹e, a‹e !$", + "Aďe, aďe, aďe !$", "Rien de plus$", - "Le son paraŚt normal$", + "Le son paraît normal$", "Ca ne bouge pas$", - "On vous r‚pond$", + "On vous répond$", "Pas le moment !$", - "Mme matiŠre, autre face !$", - "Le reflet est piqu‚, mais le cadre est d'or$", + "Męme matičre, autre face !$", + "Le reflet est piqué, mais le cadre est d'or$", "Bibelots, babioles...$", - "Vous essuyez un ‚chec !$", + "Vous essuyez un échec !$", "Il est des odeurs... qu'il vaut mieux ne pas voir !$", - "Des produits m‚nagers$", - "‡a vous d‚mange ?$", - "C'est coinc‚, gel‚ ! Brrrr...$", - "Les huisseries sont bloqu‚es !$", + "Des produits ménagers$", + "ça vous démange ?$", + "C'est coincé, gelé ! Brrrr...$", + "Les huisseries sont bloquées !$", "Des papiers...$", - "Non ! Le pŠre Nol n'est pas coinc‚ !$", - "‡a donne sur un couloir$", + "Non ! Le pčre Noęl n'est pas coincé !$", + "ça donne sur un couloir$", "Vaisselle, argenterie...$", "Non ! Ce ne sont pas les restes de Julia !$", "Une gravure ancienne$", @@ -726,17 +726,17 @@ const char *gameDataFr[] = { "Le passage se ferme$", "Un tiroir secret... Un livret ! Le lisez-vous ?$", "Le tiroir se referme$", - "Rien ! Sang et chairs collent … la pierre !$", - "Des d‚tails vous font supposer que... la mort ne fut pas imm‚diate !$", - "Des projets v‚reux ?$", - "Sa vie n'aurait-elle tenu qu'… un doigt ?$", - "Un tr‚sor se serait-il fait la malle ?$", - "Une fente de la taille d'une piŠce !$", - "Quelques pierres pivotent... Une crypte ! Y p‚n‚trez-vous ?$", + "Rien ! Sang et chairs collent ŕ la pierre !$", + "Des détails vous font supposer que... la mort ne fut pas immédiate !$", + "Des projets véreux ?$", + "Sa vie n'aurait-elle tenu qu'ŕ un doigt ?$", + "Un trésor se serait-il fait la malle ?$", + "Une fente de la taille d'une pičce !$", + "Quelques pierres pivotent... Une crypte ! Y pénétrez-vous ?$", "La bague tourne, le mur se referme...$", - "Une colonne de pierres derriŠre l'autel$", + "Une colonne de pierres derričre l'autel$", "Il y a du bruit...$", - "Occup‚ !$", + "Occupé !$", "Retentez-vous votre chance ?$", "Trop profond !$", "Le mur de la cave pivote$", @@ -745,45 +745,45 @@ const char *gameDataFr[] = { "L'objet glisse au fond...$", "Vous n'avez rien en main$", "Ce n'est pas ouvert$", - "Il y a d‚j… quelque chose$", - "La porte est ferm‚e$", - "Pas de r‚ponse$", + "Il y a déjŕ quelque chose$", + "La porte est fermée$", + "Pas de réponse$", "Une boule de bois pleine$", "Il n'y a plus de place$", - "Une boule de bois perc‚e par le travers$", + "Une boule de bois percée par le travers$", "? ?$", "A vous de jouer$", "OK !$", - "Soudain Max survient avec votre valise : \"Merci de votre visite ! D‚tective \"priv‚\"... de bon sens et de discr‚tion sans doute\" . D‚‡u d‚moralis‚, vous quittez le manoir@Vous Štes NUL !$", - "L‚o vous interrompt : \"la tempŠte est calm‚e. Je pars en ville dans 1 heure. Tenez-vous prt!\"... Bon... Vous avez perdu du temps... mais pas la vie$", - "Congestion, grippe fatale : vous y restez ! Votre enquŠte tombe … l'eau$", - "L'eau monte trŠs vite et refroidit vos derniŠres illusions... Avant que vous n'ayez eu le temps de r‚agir, vous Štes mort!$", - "A peine Štes-vous au fond du puits qu'une main tranche la corde... Adieu la vie!$", - "La tempŠte recouvre vos traces . Un mur de silence s'abat sur vos ‚paules . Lentement vous succombez … la morsure du froid !$", - "Pas si seul que ‡a ! Une lame glac‚e s'enfonce dans votre dos. A l'avenir, soyez plus prudent!$", - "Vous ignorez la responsabilit‚ exacte de L‚o dans la mort de Murielle... Est-elle morte sur le coup ? De toutes fa‡ons les problŠmes familiaux d‚couverts lors de votre enquŠte justifient l'attitude de L‚o... Vous n'Štes pas s—r que Julia vous ait appel‚ pour ‡a mais c'est suffisant pour vous ! Par respect pour elle, et aprŠs certaines pr‚cautions, vous avez une entrevue r‚v‚latrice avec L‚o$", + "Soudain Max survient avec votre valise : \"Merci de votre visite ! Détective \"privé\"... de bon sens et de discrétion sans doute\" . Déçu démoralisé, vous quittez le manoir@Vous čtes NUL !$", + "Léo vous interrompt : \"la tempčte est calmée. Je pars en ville dans 1 heure. Tenez-vous pręt!\"... Bon... Vous avez perdu du temps... mais pas la vie$", + "Congestion, grippe fatale : vous y restez ! Votre enqučte tombe ŕ l'eau$", + "L'eau monte trčs vite et refroidit vos derničres illusions... Avant que vous n'ayez eu le temps de réagir, vous čtes mort!$", + "A peine čtes-vous au fond du puits qu'une main tranche la corde... Adieu la vie!$", + "La tempčte recouvre vos traces . Un mur de silence s'abat sur vos épaules . Lentement vous succombez ŕ la morsure du froid !$", + "Pas si seul que ça ! Une lame glacée s'enfonce dans votre dos. A l'avenir, soyez plus prudent!$", + "Vous ignorez la responsabilité exacte de Léo dans la mort de Murielle... Est-elle morte sur le coup ? De toutes façons les problčmes familiaux découverts lors de votre enqučte justifient l'attitude de Léo... Vous n'čtes pas sűr que Julia vous ait appelé pour ça mais c'est suffisant pour vous ! Par respect pour elle, et aprčs certaines précautions, vous avez une entrevue révélatrice avec Léo$", "$", - "Vous n'avez pas les clefs du Manoir . Vos appels restent sans r‚ponse . Vous allez attraper... la mort !$", - "D'un mouvement circulaire, l'‚p‚e vous fend par le travers : tripes et boyaux … l'air, bonjour les vers!$", + "Vous n'avez pas les clefs du Manoir . Vos appels restent sans réponse . Vous allez attraper... la mort !$", + "D'un mouvement circulaire, l'épée vous fend par le travers : tripes et boyaux ŕ l'air, bonjour les vers!$", "Home, Sweet home !$", - "MystŠre d'une porte close$", - "Charme envo—tant de vieilles piŠces$", + "Mystčre d'une porte close$", + "Charme envoűtant de vieilles pičces$", "La faim au ventre$", - "Plus prŠs du ciel? Pas s—r !$", + "Plus prčs du ciel? Pas sűr !$", "Peur du noir?$", "Vieux tapis et reflets d'or$", "Angoisse !$", - "Sauv‚ ? Pas certain !$", - "Mal … l'aise, hein !$", + "Sauvé ? Pas certain !$", + "Mal ŕ l'aise, hein !$", "Toujours plus loin !$", "Votre chemin de croix !$", - "A la d‚couverte de...$", - "Attention … ce que cache...$", + "A la découverte de...$", + "Attention ŕ ce que cache...$", "Une descente aux Enfers !$", "Si ce n'est pas dans vos cordes :@ ne soyez pas sot!$", - "Avant la mise en piŠce !$", + "Avant la mise en pičce !$", "Gros plan sur :$", - "Vous remarquez particuliŠrement...$", + "Vous remarquez particuličrement...$", "Et encore...$", "C'est fini !$", "Un peu de lecture$", @@ -794,17 +794,17 @@ const char *gameDataFr[] = { "Non ! Pas ce coup-ci$", "Trop tard$", "$", - "Comme un regard profond tout couvert de peaux-pierres, pointant son oeil obscur aux astres de lumiŠre, il est la gorge reliant le ciel et les enfers . Il faut aller au fond de cette artŠre comme un rat au coeur mme de la terre !@Lundi, Mardi, Mercredi, Dimanche du 1e lundi au 1e dimanche, tu installeras \"ce rat\" entre chacun des jours . N'omets rien car ta venue serait ta retenue !@Porte ton fardeau comme un oeuf nouveau et donne lui le jour avec force et amour.$", - "10/1/50: Nous avons r‚solu le mystŠre du manuscrit et localis‚ la crypte . Est-ce l'id‚e d'aboutir dans ce qui n'‚tait qu'un \"rŠve\" qui me rend si anxieuse ?@Je regrette de m'tre engag‚e vis … vis de L‚o . Non! je dois continuer ! J'aurais d— mettre Guy au courant... mais, depuis une semaine, je n'ai aucune nouvelle .$", - "Porte ta priŠre au lieu saint qui se doit, changes-en l'air, tu auras la matiŠre !@Du pilier de la haute sagesse, le soleil aux genoux te montrera l'espace par lequel ton …me s'ouvrira un chemin et gagnera son Šre . Avance comme un Orph‚e peu soucieux des t‚nŠbres : le blanc est ta couleur, l'or ta demeure . Eclaire ton chemin jusqu'… la myst‚rieuse . Offre-lui le cercle de l'homme aux trois facettes . Qu'il regagne le monde et qu'il tourne avec lui dans la richesse premiŠre.$", - "Les montagnes sont les crocs d'une gueule dantesque ouverte … l'infini de quelqu' orgie c‚leste, mastiquant des ‚toiles comme nous broyons du noir .@Tu d‚poseras l'accord de pierre … tes pieds, le rire du silence sur la gamme d'en haut et dans ta main droite, une toile d'un mŠtre . Tu passeras ainsi entre les deux croissants, par del… les abŚmes du Mur du Silence . La Cl‚ des champs est … ta port‚e, tu n'as qu'… retrouver la note qui d‚note.$", + "Comme un regard profond tout couvert de peaux-pierres, pointant son oeil obscur aux astres de lumičre, il est la gorge reliant le ciel et les enfers . Il faut aller au fond de cette artčre comme un rat au coeur męme de la terre !@Lundi, Mardi, Mercredi, Dimanche du 1e lundi au 1e dimanche, tu installeras \"ce rat\" entre chacun des jours . N'omets rien car ta venue serait ta retenue !@Porte ton fardeau comme un oeuf nouveau et donne lui le jour avec force et amour.$", + "10/1/50: Nous avons résolu le mystčre du manuscrit et localisé la crypte . Est-ce l'idée d'aboutir dans ce qui n'était qu'un \"ręve\" qui me rend si anxieuse ?@Je regrette de m'ętre engagée vis ŕ vis de Léo . Non! je dois continuer ! J'aurais dű mettre Guy au courant... mais, depuis une semaine, je n'ai aucune nouvelle .$", + "Porte ta pričre au lieu saint qui se doit, changes-en l'air, tu auras la matičre !@Du pilier de la haute sagesse, le soleil aux genoux te montrera l'espace par lequel ton âme s'ouvrira un chemin et gagnera son čre . Avance comme un Orphée peu soucieux des ténčbres : le blanc est ta couleur, l'or ta demeure . Eclaire ton chemin jusqu'ŕ la mystérieuse . Offre-lui le cercle de l'homme aux trois facettes . Qu'il regagne le monde et qu'il tourne avec lui dans la richesse premičre.$", + "Les montagnes sont les crocs d'une gueule dantesque ouverte ŕ l'infini de quelqu' orgie céleste, mastiquant des étoiles comme nous broyons du noir .@Tu déposeras l'accord de pierre ŕ tes pieds, le rire du silence sur la gamme d'en haut et dans ta main droite, une toile d'un mčtre . Tu passeras ainsi entre les deux croissants, par delŕ les abîmes du Mur du Silence . La Clé des champs est ŕ ta portée, tu n'as qu'ŕ retrouver la note qui dénote.$", " DECEMBRE@ 9 REMISE 518 13 AGIOS 23@ 19 VIREMENT 1203 17 TRESOR 1598@ TOTAL 1721 TOTAL 1721$", - " Le 5/01/51@@ Luc, mon amour@ Guy connaŚt notre liaison . A la suite d'une dispute, je lui ai tout dit . Je ne pense qu'… toi ! Max me relance mais j'ai d‚finitivement rompu avec lui . Qu'il reste … ses gamelles . Quand pourrons-nous nous voir seuls ? Pour toi je divorcerai... Je t'aime .@ ton Eva$", - " Mortevielle, le 10/2/51@@ Pat,@ Je te rappelle que tu me dois 50000 F que je t'ai pr‚t‚s pour ton affaire . J'en ai besoin, peux-tu me les rendre assez vite?@ Guy$", - " Mortevielle, le 15/2/51@ MaŚtre,@ Je vous ‚cris au sujet de notre affaire. Je suis d‚cid‚ … aller jusqu'au bout, certain que mon associ‚, Pat DEFRANCK, a falsifi‚ un livre de comptes . Malgr‚$", + " Le 5/01/51@@ Luc, mon amour@ Guy connaît notre liaison . A la suite d'une dispute, je lui ai tout dit . Je ne pense qu'ŕ toi ! Max me relance mais j'ai définitivement rompu avec lui . Qu'il reste ŕ ses gamelles . Quand pourrons-nous nous voir seuls ? Pour toi je divorcerai... Je t'aime .@ ton Eva$", + " Mortevielle, le 10/2/51@@ Pat,@ Je te rappelle que tu me dois 50000 F que je t'ai prétés pour ton affaire . J'en ai besoin, peux-tu me les rendre assez vite?@ Guy$", + " Mortevielle, le 15/2/51@ Maître,@ Je vous écris au sujet de notre affaire. Je suis décidé ŕ aller jusqu'au bout, certain que mon associé, Pat DEFRANCK, a falsifié un livre de comptes . Malgré$", " Une pipe$", - " Un stylo … plume$", - " Un briquet … essence$", + " Un stylo ŕ plume$", + " Un briquet ŕ essence$", " Une cornue$", " Un blaireau$", " Un pot de peinture$", @@ -814,13 +814,13 @@ const char *gameDataFr[] = { " Un vieux bouquin$", " Un porte-monnaie$", " Un poignard$", - " Un r‚volver$", + " Un révolver$", " Une bible$", " Une bougie$", - " Un coffret … bijoux$", - " Un fer … repasser$", + " Un coffret ŕ bijoux$", + " Un fer ŕ repasser$", " Une photo$", - " Une montre … gousset$", + " Une montre ŕ gousset$", " Une corde$", " Des clefs$", " Un collier de perles$", @@ -830,9 +830,9 @@ const char *gameDataFr[] = { " Une bourse en cuir$", " Une balle de tennis$", " Des munitions$", - " Un rasoir … main$", - " Une brosse … cheveux$", - " Une brosse … linge$", + " Un rasoir ŕ main$", + " Une brosse ŕ cheveux$", + " Une brosse ŕ linge$", " Un jeu de cartes$", " Un chausse pied$", " Un tournevis$", @@ -843,14 +843,14 @@ const char *gameDataFr[] = { " Un pinceau$", " Une corde$", " Un objet en bois$", - " Des somnifŠres$", + " Des somnifčres$", " Une bague en or$", - " Un coffret … bijoux$", - " Un r‚veil matin$", + " Un coffret ŕ bijoux$", + " Un réveil matin$", " Une cotte de mailles$", " Un chandellier$", " Une paire de gants$", - " Une coupe cisel‚e$", + " Une coupe ciselée$", " Un parchemin$", " Un poignard$", " Un dossier$", @@ -868,13 +868,13 @@ const char *gameDataFr[] = { "La mort de Julia$", "Les relations de Julia$", "Un message de Julia$", - "L'h‚ritage de Julia$", + "L'héritage de Julia$", "Derniers actes de Julia$", "Les cadeaux de Julia$", "La chambre de Julia$", "La photo chez Julia$", "Julia et vous...$", - "Les occupations de L‚o$", + "Les occupations de Léo$", "Les occupations de Pat$", "Les occupations de Guy$", "Les occupations de Bob$", @@ -883,7 +883,7 @@ const char *gameDataFr[] = { "Les occupations d'Ida$", "Les occupations de Max$", "Vos occupations$", - "Les relations de L‚o$", + "Les relations de Léo$", "Les relations de Pat$", "Les relations de Guy$", "Les relations de Bob$", @@ -910,169 +910,169 @@ const char *gameDataFr[] = { "$", "FIN DE LA CONVERSATION$", "Les vieux appelaient ainsi la chaine de montagne qui se dresse au pied du manoir !$", - "C'est le massif montagneux que l'on aper‡oit devant le manoir$", + "C'est le massif montagneux que l'on aperçoit devant le manoir$", "Je n'en sais rien !$", "Elle est morte d'une embolie pulmonaire$", - "Ma m‚re est morte soudainement . Son ‚tat semblait pourtant s'tre am‚lior‚$", + "Ma mére est morte soudainement . Son état semblait pourtant s'ętre amélioré$", "Madame DEFRANCK est morte d'un coup de froid$", "Elle est morte d'une embolie pulmonaire$", - "Pardonnez moi mais je pr‚fŠre, actuellement garder le silence$", + "Pardonnez moi mais je préfčre, actuellement garder le silence$", "Ce sont toujours les meilleurs qui partent les premiers$", - "J'aimais beaucoup ma mŠre . Je regrette seulement qu'elle soit morte dans le manoir des DEFRANCK$", - "C'est une r‚gion qui a un pass‚ charg‚ et j'ai largement de quoi m'occuper . Et puis j'aime beaucoup les chevaux..$", - "C'est un passionn‚ d'histoire et un joueur inv‚t‚r‚ . D'ailleurs, voici un an il a gagn‚ une grosse somme$", - "Il a d‚j… beaucoup a faire avec la gestion et l'entretien du manoir ...$", - "Je suis PDG d'une petite soci‚t‚ de parfums . Mais quand je suis ici, je me repose$", - "C'est un homme dynamique qui a r‚ussi dans le parfum$", - "Lui ! C'est un arriviste v‚reux ! Les parfums ont du endormir son bon sens . D'ailleurs ici il passe ses soir‚es dans sa chambre$", - "J'ai ‚t‚ trŠs pr‚occup‚ par la sant‚ de ma mŠre, et maintenant je n'ai plus go–t … rien$", - "Il aurait mieux fait de s'occuper un peu plus de moi et un peu moins de sa mŠre$", + "J'aimais beaucoup ma mčre . Je regrette seulement qu'elle soit morte dans le manoir des DEFRANCK$", + "C'est une région qui a un passé chargé et j'ai largement de quoi m'occuper . Et puis j'aime beaucoup les chevaux..$", + "C'est un passionné d'histoire et un joueur invétéré . D'ailleurs, voici un an il a gagné une grosse somme$", + "Il a déjŕ beaucoup a faire avec la gestion et l'entretien du manoir ...$", + "Je suis PDG d'une petite société de parfums . Mais quand je suis ici, je me repose$", + "C'est un homme dynamique qui a réussi dans le parfum$", + "Lui ! C'est un arriviste véreux ! Les parfums ont du endormir son bon sens . D'ailleurs ici il passe ses soirées dans sa chambre$", + "J'ai été trčs préoccupé par la santé de ma mčre, et maintenant je n'ai plus goűt ŕ rien$", + "Il aurait mieux fait de s'occuper un peu plus de moi et un peu moins de sa mčre$", "Ce sont ses affaires ...$", "Il n'a pas trop de chance en ce moment bien que ses affaires soient satisfaisantes$", - "Je travaille avec Pat mais ‡a ne va pas trŠs fort en ce moment$", - "Ah oui ?! Il a des occupations ? Il ferait bien de s'en occuper s‚rieusement alors$", - "Lui et Pat sont associ‚s . Je crois que ‡a ne va pas trop mal$", - "Je m'occupe de moi et c'est d‚j… beaucoup . Et vous ?$", - "Oh ‡a ! Je lui fais confiance . Elle sait s'occuper$", - "Mais ! Vous n'avez pas encore d‚couvert son occupation principale ..?$", - "Elle fait dans la d‚coration avec beaucoup dego–t d'ailleurs . Elle est toujours trŠs bien habill‚e$", - "Si les bijoux vous interessent, j'ai quelques affaires interessantes … saisir rapidement$", + "Je travaille avec Pat mais ça ne va pas trčs fort en ce moment$", + "Ah oui ?! Il a des occupations ? Il ferait bien de s'en occuper sérieusement alors$", + "Lui et Pat sont associés . Je crois que ça ne va pas trop mal$", + "Je m'occupe de moi et c'est déjŕ beaucoup . Et vous ?$", + "Oh ça ! Je lui fais confiance . Elle sait s'occuper$", + "Mais ! Vous n'avez pas encore découvert son occupation principale ...?$", + "Elle fait dans la décoration avec beaucoup degoűt d'ailleurs . Elle est toujours trčs bien habillée$", + "Si les bijoux vous interessent, j'ai quelques affaires interessantes ŕ saisir rapidement$", "Les bijoux ...$", "Je ne sais pas, mais j'aimerais bien qu'il s'occupe un peu moins de mes affaires !$", - "Quand on est une femme d'int‚rieur on trouve toujours de quoi s'occuper...$", + "Quand on est une femme d'intérieur on trouve toujours de quoi s'occuper...$", "Elle pourrait rester sans rien faire, mais non ! Elle coud, elle lit ...$", - "Elle n'a s–rement pas des occupations trŠs ‚panouissantes ...$", + "Elle n'a sűrement pas des occupations trčs épanouissantes ...$", "Une femme comme il n'y en a plus : Elle s'interesse a tout !$", - "Entre la cuisine et le m‚nage, je n'ai pas beaucoup de temps … vous accorder$", + "Entre la cuisine et le ménage, je n'ai pas beaucoup de temps ŕ vous accorder$", "Je ne sais pas comment il s'y prend pour tout faire . C'est merveilleux !$", - "Il en ferait plus si il s'occupait moins des rag“ts et de la bouteille$", - "Je suis trŠs ind‚pendant . Tant qu'on ne s'occupe pas de mes affaires : Pas de problŠme$", - "C'est un ‚go‹ste . Je me demande si il aime autre chose que ses chevaux et ses grimoires$", - "Je crois qu'il s'entend bien avec tout le monde, mis … part, peut tre, avec Guy$", - "C'est un homme de caractŠre . Il faut savoir le prendre ..$", - "Les affaires sont les affaires . Quant … la famille, je la laisse pour ce qu'elle est ...$", - "Relations ? Relations amicales ? Relations financiŠres sans doute$", - "Moi je n'ai rien … lui reprocher$", - "C'est un homme d'affaire d‚brouillard . Il nage parfois … contre-courant mais ... il s'en sortira toujours$", - "Ils m'ennuient tous .. Non ! Ce n'est mme pas ‡a .. Quoique .. certains ..$", - "A l'inverse de sa mŠre, c'est une personne trŠs renferm‚e ! Alors question relations ..$", - "Il doit sans doute faire beaucoup d'effort pour rester agr‚able malgr‚ tous ses ennuis$", - "Ses relations amoureuses : C'est termin‚ . Ses relations avec moi : Pas vraiment commenc‚es . Quant aux autres : Je ne suis pas les \"autres\"$", + "Il en ferait plus si il s'occupait moins des ragôts et de la bouteille$", + "Je suis trčs indépendant . Tant qu'on ne s'occupe pas de mes affaires : Pas de problčme$", + "C'est un égoďste . Je me demande si il aime autre chose que ses chevaux et ses grimoires$", + "Je crois qu'il s'entend bien avec tout le monde, mis ŕ part, peut ętre, avec Guy$", + "C'est un homme de caractčre . Il faut savoir le prendre ..$", + "Les affaires sont les affaires . Quant ŕ la famille, je la laisse pour ce qu'elle est ...$", + "Relations ? Relations amicales ? Relations financičres sans doute$", + "Moi je n'ai rien ŕ lui reprocher$", + "C'est un homme d'affaire débrouillard . Il nage parfois ŕ contre-courant mais ... il s'en sortira toujours$", + "Ils m'ennuient tous .. Non ! Ce n'est męme pas ça .. Quoique .. certains ..$", + "A l'inverse de sa mčre, c'est une personne trčs renfermée ! Alors question relations ..$", + "Il doit sans doute faire beaucoup d'effort pour rester agréable malgré tous ses ennuis$", + "Ses relations amoureuses : C'est terminé . Ses relations avec moi : Pas vraiment commencées . Quant aux autres : Je ne suis pas les \"autres\"$", "J'aime bien tout le monde, tant qu'on ne m'escroque pas$", - "Il ne suffit pas d'avoir un peu d'argent et d'tre beau parleur pour plaire … tout le monde$", - "Sans histoire .. C'est quelqu'un d'agr‚able et g‚n‚reux . De plus, il ne manque pas d'humour$", - "Actuellement je m'entends plut“t bien avec tout le monde . Mais, ici, je ne vais pas m'‚tendre sur le sujet$", - "Beau plumage, mais ‡a ne vole pas haut ... Parlez en … son mari$", + "Il ne suffit pas d'avoir un peu d'argent et d'ętre beau parleur pour plaire ŕ tout le monde$", + "Sans histoire .. C'est quelqu'un d'agréable et généreux . De plus, il ne manque pas d'humour$", + "Actuellement je m'entends plutôt bien avec tout le monde . Mais, ici, je ne vais pas m'étendre sur le sujet$", + "Beau plumage, mais ça ne vole pas haut ... Parlez en ŕ son mari$", "C'est pour un rendez-vous ?$", - "Elle est trŠs vivante ! Elle ne s'embarrasse pas de pr‚jug‚s stupides$", - "Dans mon m‚tier, on c“toit surtout des belles femmes et des truands$", - "La seule valeur s–re chez lui, c'est ses bijoux .. Et sa femme, mais ‡a il ne s'en rend pas compte$", - "C'est quelqu'un d'interessant . De pas toujours facile … comprendre, mais qui m‚rite le d‚tour$", - "Je ne d‚teste personne, mais j'aime les choses et les gens quand ils sont … leur place$", - "C'est entre nous . Mais voyez : quand je parle avec elle, je me sens vite … l'‚troit !$", - "Pour ne pas s'entendre avec elle, faut y mettre de la mauvaise volont‚$", - "Vous savez dans mon m‚tier on entend tout mais on ne retient rien, et le service est bien fait$", + "Elle est trčs vivante ! Elle ne s'embarrasse pas de préjugés stupides$", + "Dans mon métier, on côtoit surtout des belles femmes et des truands$", + "La seule valeur sűre chez lui, c'est ses bijoux .. Et sa femme, mais ça il ne s'en rend pas compte$", + "C'est quelqu'un d'interessant . De pas toujours facile ŕ comprendre, mais qui mérite le détour$", + "Je ne déteste personne, mais j'aime les choses et les gens quand ils sont ŕ leur place$", + "C'est entre nous . Mais voyez : quand je parle avec elle, je me sens vite ŕ l'étroit !$", + "Pour ne pas s'entendre avec elle, faut y mettre de la mauvaise volonté$", + "Vous savez dans mon métier on entend tout mais on ne retient rien, et le service est bien fait$", "C'est un hypocrite, un larbin ! Personnellement je ne lui fais pas confiance$", - "Je ne connait pas le fond de sa pens‚e mais c'est quelqu'un de toujours trŠs correct et impeccable$", - "C'‚tait une personne qui a v‚cu au manoir, il y a un an .. peut tre plus$", - "C'‚tait plus qu'une amie pour ma mŠre . En ces moments, j'aurais aim‚ qu'elle soit … mes cot‚s$", - "Murielle a ‚t‚ la dame de compagnie de Julia$", + "Je ne connait pas le fond de sa pensée mais c'est quelqu'un de toujours trčs correct et impeccable$", + "C'était une personne qui a vécu au manoir, il y a un an .. peut ętre plus$", + "C'était plus qu'une amie pour ma mčre . En ces moments, j'aurais aimé qu'elle soit ŕ mes cotés$", + "Murielle a été la dame de compagnie de Julia$", "Elle aussi, faisait des recherches ...$", - "C'‚tait une femme trŠs cultiv‚e . Son brusque d‚part, il y a un an, m'a surpris et beaucoup chagrin‚$", - "Elle partageait avec L‚o sa passion de l'histoire et de la r‚gion$", + "C'était une femme trčs cultivée . Son brusque départ, il y a un an, m'a surpris et beaucoup chagriné$", + "Elle partageait avec Léo sa passion de l'histoire et de la région$", "Je crois que tout le monde l'aimait bien$", - "Elle s'entendait bien avec tout le monde . Elle aimait beaucoup son fils . Quant aux relations belle-mŠre, belle-fille ..$", - "A part L‚o, elle avait de trŠs bon rapport avec Max ...$", - "Bien que vos relations furent peu soutenues, J‚r“me, elle vous portait toujours dans son coeur ...$", + "Elle s'entendait bien avec tout le monde . Elle aimait beaucoup son fils . Quant aux relations belle-mčre, belle-fille ..$", + "A part Léo, elle avait de trčs bon rapport avec Max ...$", + "Bien que vos relations furent peu soutenues, Jérôme, elle vous portait toujours dans son coeur ...$", "A part sa famille, pas grand monde$", - "Ah oui ! Je crois qu'elle a beaucoup regrett‚ le d‚part de cette amie .. euh ! Marielle .. ou Mireille ...$", + "Ah oui ! Je crois qu'elle a beaucoup regretté le départ de cette amie .. euh ! Marielle .. ou Mireille ...$", "Non rien !$", "Non ... Pas que le sache$", - "J'ai connu Julia en achetant le manoir . C'‚tait son seul bien . Mais toute ma fortune ‚tait la sienne ...$", - "Si ce n'est quelques objets personnels, je crois qu'elle n'avait plus rien … elle$", - "Je crois que toute sa fortune venait de L‚o . Alors, Pfuuut !$", - "A part la lettre pour vous que j'ai post‚, rien de bien important !$", - "J'ai ‚t‚ trŠs heureuse qu'elle m'offre sa bible reli‚e$", - "Ca a ‚t‚ rapide et elle n'a pas eu le temps de prendre des dispositions particuliŠres$", - "Son dernier pr‚sent m'a surpris$", + "J'ai connu Julia en achetant le manoir . C'était son seul bien . Mais toute ma fortune était la sienne ...$", + "Si ce n'est quelques objets personnels, je crois qu'elle n'avait plus rien ŕ elle$", + "Je crois que toute sa fortune venait de Léo . Alors, Pfuuut !$", + "A part la lettre pour vous que j'ai posté, rien de bien important !$", + "J'ai été trčs heureuse qu'elle m'offre sa bible reliée$", + "Ca a été rapide et elle n'a pas eu le temps de prendre des dispositions particuličres$", + "Son dernier présent m'a surpris$", "Quel cadeau ?$", "Un chandellier ...$", - "Oui, j'ai eu un cadeau . Ma femme a mme eu une bible$", + "Oui, j'ai eu un cadeau . Ma femme a męme eu une bible$", "Et bien oui ! Comme tout le monde, je crois$", "Un poignard$", - "Je n'ai jamais ‚t‚ fouiller dans le grenier !$", + "Je n'ai jamais été fouiller dans le grenier !$", "Vous avez un don de double-vue ou un passe-partout$", "Le portrait d'une jeune fille : C'est Murielle ...$", "Vous savez, je la connaissais assez peu$", - "Elle ‚tait trŠs charmante, mais c'‚tait surtout la dame de compagnie de Julia$", - "C'est la seule femme vraiment interessante que j'ai rencontr‚$", - "Elle avait de grandes connaissances historiques, et la consulter ‚tait trŠs enrichissant$", - "Je me suis toujours demand‚ ce que certains pouvaient lui trouver !$", - "Si la chambre est ferm‚e, demandez … L‚o$", - "J'ai ferm‚ sa chambre aprŠs sa mort et j'aimerais qu'il en soit ainsi encore un certain temps$", + "Elle était trčs charmante, mais c'était surtout la dame de compagnie de Julia$", + "C'est la seule femme vraiment interessante que j'ai rencontré$", + "Elle avait de grandes connaissances historiques, et la consulter était trčs enrichissant$", + "Je me suis toujours demandé ce que certains pouvaient lui trouver !$", + "Si la chambre est fermée, demandez ŕ Léo$", + "J'ai fermé sa chambre aprčs sa mort et j'aimerais qu'il en soit ainsi encore un certain temps$", "Vous savez ce que c'est : Des relations familiales$", - "Durant toutes ces ann‚es, je ne l'ai jamais servie … contre-coeur$", + "Durant toutes ces années, je ne l'ai jamais servie ŕ contre-coeur$", "Je l'aimais autant qu'elle m'aimais, je crois$", - "De quel droit avez-vous p‚n‚tr‚ dans la chambre de ma femme ?!!$", + "De quel droit avez-vous pénétré dans la chambre de ma femme ?!!$", "C'est sans doute la photo de Murielle avec le filleul de Julia$", "Je ne me rappelle pas$", - "C'est Murielle . C'est moi qui l'ai prise. et d'ailleurs elle est tir‚e … l'envers$", - "Vous tes bien curieux !... C'est sans valeur$", - "Grimoires, parchemins et manuscrits : C'est le domaine de L‚o$", + "C'est Murielle . C'est moi qui l'ai prise. et d'ailleurs elle est tirée ŕ l'envers$", + "Vous ętes bien curieux !... C'est sans valeur$", + "Grimoires, parchemins et manuscrits : C'est le domaine de Léo$", "Dommage que la devise soit manquante ...$", - "C'est trŠs beau ... Et trŠs vieux ...$", - "Tiens ! C'est un endroit que je n'ai jamais visit‚$", - "D'apr‚s L‚o, il semblerait que les Lunes soient plus r‚centes$", - "Mme par ce temps, vous avez d‚nich‚ un soleil ...$", - "Profond et inqui‚tant : Le progrŠs a du bon$", - "Ca reste pour moi le plus grand des mystŠres$", + "C'est trčs beau ... Et trčs vieux ...$", + "Tiens ! C'est un endroit que je n'ai jamais visité$", + "D'aprés Léo, il semblerait que les Lunes soient plus récentes$", + "Męme par ce temps, vous avez déniché un soleil ...$", + "Profond et inquiétant : Le progrčs a du bon$", + "Ca reste pour moi le plus grand des mystčres$", "Les derniers temps elle parlait d'un voyage . Et puis ...$", - "Il y a un peu plus d'un an, un soir, elle a d‚cid‚ de partir ...$", - "De toutes fa‡ons elle n'‚tait pas faite pour vivre ici$", + "Il y a un peu plus d'un an, un soir, elle a décidé de partir ...$", + "De toutes façons elle n'était pas faite pour vivre ici$", "Quoi ?! Quel corps ? Quel crypte ?$", - "Si il y en a, je ne les ai jamais trouv‚ ...$", - "Bien s–r ! ... Et des fant“mes aussi ...$", - "C'est la plus vielle de la r‚gion : Elle date du XI eme siŠcle$", - "Elle fut l‚gŠrement restaur‚e aprŠs la r‚volution$", + "Si il y en a, je ne les ai jamais trouvé ...$", + "Bien sűr ! ... Et des fantômes aussi ...$", + "C'est la plus vielle de la région : Elle date du XI eme sičcle$", + "Elle fut légčrement restaurée aprčs la révolution$", "Julia aimait beaucoup la peinture$", - "Ils ont diff‚rents styles, mais n'ont pas tous une trŠs grande valeur$", - "Que faites-vous l… ?$", - "Je suis s–r que vous cherchez quelque chose ici$", - "Je vous ‚coute$", - "Que d‚sirez-vous ?$", + "Ils ont différents styles, mais n'ont pas tous une trčs grande valeur$", + "Que faites-vous lŕ ?$", + "Je suis sűr que vous cherchez quelque chose ici$", + "Je vous écoute$", + "Que désirez-vous ?$", "Oui ?$", - "Je suis … vous ...$", + "Je suis ŕ vous ...$", "C'est pourquoi ?$", "Allez-y$", - "C'est … quel sujet ?$", - "Max : … votre service, monsieur$", - "De toutes fa‡ons vous n'avez rien … faire ici ! Sortez !!$", - "Vous tes trop curieux !$", - "J‚r“me ! Il y a longtemps ... Quelle tristesse, Julia est morte . Sa famille est ici : Guy, son fils . Eva, sa brue . L‚o, son mari bien s–r . Son beau fils, Pat . Des cousins : Bob, Ida, Luc . La tempŠte redouble, il vous faut rester . Les repas sont … 12h et 19h et il y a un recueillement … la chapelle tous les jours … 10h$", - "En vous voyant j'ai compris que vous decouvririez la v‚rit‚ ... Car je savais pourquoi vous veniez : J'avais retrouv‚ le brouillon de la lettre de Julia . Mais je suis trŠs joueur, alors ... Elle n'avait pas voulu que votre tche soit trop facile, pour me prot‚ger, sans doute, mais elle n'a pu mourir avec cette incertitude sur la conscience . Avez vous d‚couvert que le mur du silence est le nom que les ma‡ons ont donn‚ au mur qui porte ce blason, lors de la construction du manoir ? .. Et ces cadeaux que Julia a laiss‚ avant de mourir ‚taient autant de faux indices qui ne servaient qu'… faire ressortir l'importance des parchemins ... Effectivement, il y a plus d'un an, je travailais avec Murielle au d‚cryptage de ces manuscrits que je venais de trouver . Ma femme a fait la relation entre notre travail et la disparition de Murielle mais elle n'a jamais eu de preuves . Si ce n'est cette bague qu'elle a retrouv‚ un jour dans mes affaires . Une nuit, nous nous sommes aventur‚s dans le passage secret que nous avions d‚couvert . Murielle est morte par accident dans la piŠce de la vierge . J'ai r‚cup‚r‚ la bague rapidement, trouv‚ le tr‚sor et me suis enfuis . Je ne pensais pas qu'elle vivait encore, et je n'ai rien dit car j'avais besoin d'argent . J'ai fait passer cette somme sur le compte des courses de chevaux ...Partez maintenant, puisque vous n'tes pas de la police . Laissez moi seul !$", - "F‚vrier 1951 ... Profession : detective priv‚ . Le froid figeait Paris et mes affaires lorsque ...$", - "Une lettre, un appel, des souvenirs d'une enfance encore proche . Que de jeux dans les piŠces d‚labr‚es du manoir de Mortevielle . Julia, une vieille femme a pr‚sent .$", + "C'est ŕ quel sujet ?$", + "Max : ŕ votre service, monsieur$", + "De toutes façons vous n'avez rien ŕ faire ici ! Sortez !!$", + "Vous ętes trop curieux !$", + "Jérôme ! Il y a longtemps ... Quelle tristesse, Julia est morte . Sa famille est ici : Guy, son fils . Eva, sa brue . Léo, son mari bien sűr . Son beau fils, Pat . Des cousins : Bob, Ida, Luc . La tempčte redouble, il vous faut rester . Les repas sont ŕ 12h et 19h et il y a un recueillement ŕ la chapelle tous les jours ŕ 10h$", + "En vous voyant j'ai compris que vous decouvririez la vérité ... Car je savais pourquoi vous veniez : J'avais retrouvé le brouillon de la lettre de Julia . Mais je suis trčs joueur, alors ... Elle n'avait pas voulu que votre tche soit trop facile, pour me protéger, sans doute, mais elle n'a pu mourir avec cette incertitude sur la conscience . Avez vous découvert que le mur du silence est le nom que les maçons ont donné au mur qui porte ce blason, lors de la construction du manoir ? .. Et ces cadeaux que Julia a laissé avant de mourir étaient autant de faux indices qui ne servaient qu'ŕ faire ressortir l'importance des parchemins ... Effectivement, il y a plus d'un an, je travailais avec Murielle au décryptage de ces manuscrits que je venais de trouver . Ma femme a fait la relation entre notre travail et la disparition de Murielle mais elle n'a jamais eu de preuves . Si ce n'est cette bague qu'elle a retrouvé un jour dans mes affaires . Une nuit, nous nous sommes aventurés dans le passage secret que nous avions découvert . Murielle est morte par accident dans la pičce de la vierge . J'ai récupéré la bague rapidement, trouvé le trésor et me suis enfuis . Je ne pensais pas qu'elle vivait encore, et je n'ai rien dit car j'avais besoin d'argent . J'ai fait passer cette somme sur le compte des courses de chevaux ...Partez maintenant, puisque vous n'ętes pas de la police . Laissez moi seul !$", + "Février 1951 ... Profession : detective privé . Le froid figeait Paris et mes affaires lorsque ...$", + "Une lettre, un appel, des souvenirs d'une enfance encore proche . Que de jeux dans les pičces délabrées du manoir de Mortevielle . Julia, une vieille femme a présent .$", " au bureau$", - " … la cuisine$", - " … la cave$", + " ŕ la cuisine$", + " ŕ la cave$", " dans le couloir$", " dehors$", - " la salle … manger$", + " la salle ŕ manger$", " dans le manoir$", " devant le manoir$", - " … la chapelle$", + " ŕ la chapelle$", " devant le puits$", " au nord$", - " derriŠre le manoir$", + " derričre le manoir$", " au sud$", - " … l'est$", - " … l'ouest$", + " ŕ l'est$", + " ŕ l'ouest$", " vers le manoir$", " plus loin$", " dans l'eau$", " hors du puits$", " dans le puits$", - " choix sur ‚cran$", + " choix sur écran$", " Dans la serie MYSTERE...$", " LE MANOIR DE MORTEVIELLE$", "$", @@ -1095,9 +1095,9 @@ const char *gameDataFr[] = { " A VOUS DE JOUER$", " attacher$", " attendre$", - " d‚foncer$", + " défoncer$", " dormir$", - " ‚couter$", + " écouter$", " entrer$", " fermer$", " fouiller$", @@ -1119,7 +1119,7 @@ const char *gameDataFr[] = { " lire$", " poser$", " regarder$", - " L‚o$", + " Léo$", " Pat$", " Guy$", " Eva$", @@ -1128,40 +1128,40 @@ const char *gameDataFr[] = { " Ida$", " Max$", "Comment Julia est-elle morte ?$", - "Elle s'est suicid‚e$", - "Elle est morte assassin‚e$", + "Elle s'est suicidée$", + "Elle est morte assassinée$", "Elle est morte accidentellement$", "Elle est morte naturellement$", - "D'o— provenait l'argent qui a permis la restauration du manoir ?$", + "D'oů provenait l'argent qui a permis la restauration du manoir ?$", "chantage$", "travail$", - "h‚ritage$", + "héritage$", "courses$", "rentes$", "hold-up$", - "d‚couverte$", - "Quel est le hobby de L‚o ?$", + "découverte$", + "Quel est le hobby de Léo ?$", "recherches historiques$", "politique$", "peinture$", "drogue$", "sciences occultes$", "direction d'une secte$", - "Julia a laiss‚ une s‚rie d'indices . Ceux-ci sont repr‚sent‚s en un seul lieu . Lequel ?$", + "Julia a laissé une série d'indices . Ceux-ci sont représentés en un seul lieu . Lequel ?$", "Chapelle$", - "Ext‚rieur$", + "Extérieur$", "Cave$", "Grenier$", "Cuisine$", - "Salle … manger$", + "Salle ŕ manger$", "Chambre Julia$", - "Chambre L‚o$", + "Chambre Léo$", "Chambre Pat$", "Chambre Bob$", "Chambre Max$", "Chambre Luc/Ida$", "Chambre Guy/Eva$", - "L'indice principal qui vous a permis d'arriver … la porte du souterrain est :$", + "L'indice principal qui vous a permis d'arriver ŕ la porte du souterrain est :$", "Un poignard$", "Une bague$", "Un livre$", @@ -1175,30 +1175,30 @@ const char *gameDataFr[] = { "Trois$", "Quatre$", "Cinq$", - "Combien de personnes sont m‚l‚es … cette histoire - Julia y comprise, vous except‚ - ?$", + "Combien de personnes sont mélées ŕ cette histoire - Julia y comprise, vous excepté - ?$", "Neuf$", "Dix$", "Onze$", - "Quel ‚tait le pr‚nom de la personne inconnue ?$", + "Quel était le prénom de la personne inconnue ?$", "Mireille$", - "Fran‡oise$", + "Françoise$", "Maguy$", "Emilie$", "Murielle$", "Sophie$", - "De qui Murielle ‚tait-elle la maŚtresse ?$", + "De qui Murielle était-elle la maîtresse ?$", "Bob$", "Luc$", "Guy$", - "L‚o$", + "Léo$", "Max$", "Murielle partageait une occupation avec une autre personne . Qui ?$", - "[1][ |Seul le hazard vous a permis d'arriver ici . Vous pr‚f‚rez|retourner enqu‚ter afin de mieux comprendre ...][ok]$", - "[1][ |Ins‚rez la disquette 1 dans le lecteur A][ok]$", + "[1][ |Seul le hazard vous a permis d'arriver ici . Vous préférez|retourner enquéter afin de mieux comprendre ...][ok]$", + "[1][ |Insérez la disquette 1 dans le lecteur A][ok]$", "[1][ |! ERREUR DISQUETTE !|On arrete tout][ok]$", - "[1][ |Vous devriez avoir remarqu‚|00% des indices][ok]$", - "[1][ |Ins‚rez la disquette 2 dans le lecteur A][ok]$", - "[1][ |Avant d'aller plus loin, vous faites|un point sur l'‚tat de vos connaissances][ok]$", + "[1][ |Vous devriez avoir remarqué|00% des indices][ok]$", + "[1][ |Insérez la disquette 2 dans le lecteur A][ok]$", + "[1][ |Avant d'aller plus loin, vous faites|un point sur l'état de vos connaissances][ok]$", " MASTER .$", " rorL$", }; @@ -1462,7 +1462,7 @@ const char *gameDataDe[] = { "TBT - Julia's bedroom$", "TBT - The photo at Julia's home$", "TBT - Julia and yourself...$", - "TBT - L‚o's occupations$", + "TBT - Léo's occupations$", "TBT - Pat's occupations$", "TBT - Guy's occupations$", "TBT - Bob's occupations$", @@ -1471,7 +1471,7 @@ const char *gameDataDe[] = { "TBT - Ida's occupations$", "TBT - Max's occupations$", "TBT - Your occupations$", - "TBT - L‚o's relationships$", + "TBT - Léo's relationships$", "TBT - Pat's relationships$", "TBT - Guy's relationships$", "TBT - Bob's relationships$", @@ -1498,148 +1498,148 @@ const char *gameDataDe[] = { "TBT - $", "TBT - END OF THE CONVERSATION$", "TBT - Les vieux appelaient ainsi la chaine de montagne qui se dresse au pied du manoir !$", - "TBT - C'est le massif montagneux que l'on aper‡oit devant le manoir$", + "TBT - C'est le massif montagneux que l'on aperçoit devant le manoir$", "TBT - Je n'en sais rien !$", "TBT - Elle est morte d'une embolie pulmonaire$", - "TBT - Ma m‚re est morte soudainement . Son ‚tat semblait pourtant s'tre am‚lior‚$", + "TBT - Ma mére est morte soudainement . Son état semblait pourtant s'ętre amélioré$", "TBT - Madame DEFRANCK est morte d'un coup de froid$", "TBT - Elle est morte d'une embolie pulmonaire$", - "TBT - Pardonnez moi mais je pr‚fŠre, actuellement garder le silence$", + "TBT - Pardonnez moi mais je préfčre, actuellement garder le silence$", "TBT - Ce sont toujours les meilleurs qui partent les premiers$", - "TBT - J'aimais beaucoup ma mŠre . Je regrette seulement qu'elle soit morte dans le manoir des DEFRANCK$", - "TBT - C'est une r‚gion qui a un pass‚ charg‚ et j'ai largement de quoi m'occuper . Et puis j'aime beaucoup les chevaux..$", - "TBT - C'est un passionn‚ d'histoire et un joueur inv‚t‚r‚ . D'ailleurs, voici un an il a gagn‚ une grosse somme$", - "TBT - Il a d‚j… beaucoup a faire avec la gestion et l'entretien du manoir ...$", - "TBT - Je suis PDG d'une petite soci‚t‚ de parfums . Mais quand je suis ici, je me repose$", - "TBT - C'est un homme dynamique qui a r‚ussi dans le parfum$", - "TBT - Lui ! C'est un arriviste v‚reux ! Les parfums ont du endormir son bon sens . D'ailleurs ici il passe ses soir‚es dans sa chambre$", - "TBT - J'ai ‚t‚ trŠs pr‚occup‚ par la sant‚ de ma mŠre, et maintenant je n'ai plus go–t … rien$", - "TBT - Il aurait mieux fait de s'occuper un peu plus de moi et un peu moins de sa mŠre$", + "TBT - J'aimais beaucoup ma mčre . Je regrette seulement qu'elle soit morte dans le manoir des DEFRANCK$", + "TBT - C'est une région qui a un passé chargé et j'ai largement de quoi m'occuper . Et puis j'aime beaucoup les chevaux..$", + "TBT - C'est un passionné d'histoire et un joueur invétéré . D'ailleurs, voici un an il a gagné une grosse somme$", + "TBT - Il a déjŕ beaucoup a faire avec la gestion et l'entretien du manoir ...$", + "TBT - Je suis PDG d'une petite société de parfums . Mais quand je suis ici, je me repose$", + "TBT - C'est un homme dynamique qui a réussi dans le parfum$", + "TBT - Lui ! C'est un arriviste véreux ! Les parfums ont du endormir son bon sens . D'ailleurs ici il passe ses soirées dans sa chambre$", + "TBT - J'ai été trčs préoccupé par la santé de ma mčre, et maintenant je n'ai plus goűt ŕ rien$", + "TBT - Il aurait mieux fait de s'occuper un peu plus de moi et un peu moins de sa mčre$", "TBT - Ce sont ses affaires ...$", "TBT - Il n'a pas trop de chance en ce moment bien que ses affaires soient satisfaisantes$", - "TBT - Je travaille avec Pat mais ‡a ne va pas trŠs fort en ce moment$", - "TBT - Ah oui ?! Il a des occupations ? Il ferait bien de s'en occuper s‚rieusement alors$", - "TBT - Lui et Pat sont associ‚s . Je crois que ‡a ne va pas trop mal$", - "TBT - Je m'occupe de moi et c'est d‚j… beaucoup . Et vous ?$", - "TBT - Oh ‡a ! Je lui fais confiance . Elle sait s'occuper$", - "TBT - Mais ! Vous n'avez pas encore d‚couvert son occupation principale ..?$", - "TBT - Elle fait dans la d‚coration avec beaucoup dego–t d'ailleurs . Elle est toujours trŠs bien habill‚e$", - "TBT - Si les bijoux vous interessent, j'ai quelques affaires interessantes … saisir rapidement$", + "TBT - Je travaille avec Pat mais ça ne va pas trčs fort en ce moment$", + "TBT - Ah oui ?! Il a des occupations ? Il ferait bien de s'en occuper sérieusement alors$", + "TBT - Lui et Pat sont associés . Je crois que ça ne va pas trop mal$", + "TBT - Je m'occupe de moi et c'est déjŕ beaucoup . Et vous ?$", + "TBT - Oh ça ! Je lui fais confiance . Elle sait s'occuper$", + "TBT - Mais ! Vous n'avez pas encore découvert son occupation principale ..?$", + "TBT - Elle fait dans la décoration avec beaucoup degoűt d'ailleurs . Elle est toujours trčs bien habillée$", + "TBT - Si les bijoux vous interessent, j'ai quelques affaires interessantes ŕ saisir rapidement$", "TBT - Les bijoux ...$", "TBT - Je ne sais pas, mais j'aimerais bien qu'il s'occupe un peu moins de mes affaires !$", - "TBT - Quand on est une femme d'int‚rieur on trouve toujours de quoi s'occuper...$", + "TBT - Quand on est une femme d'intérieur on trouve toujours de quoi s'occuper...$", "TBT - Elle pourrait rester sans rien faire, mais non ! Elle coud, elle lit ...$", - "TBT - Elle n'a s–rement pas des occupations trŠs ‚panouissantes ...$", + "TBT - Elle n'a sűrement pas des occupations trčs épanouissantes ...$", "TBT - Une femme comme il n'y en a plus : Elle s'interesse a tout !$", - "TBT - Entre la cuisine et le m‚nage, je n'ai pas beaucoup de temps … vous accorder$", + "TBT - Entre la cuisine et le ménage, je n'ai pas beaucoup de temps ŕ vous accorder$", "TBT - Je ne sais pas comment il s'y prend pour tout faire . C'est merveilleux !$", - "TBT - Il en ferait plus si il s'occupait moins des rag“ts et de la bouteille$", - "TBT - Je suis trŠs ind‚pendant . Tant qu'on ne s'occupe pas de mes affaires : Pas de problŠme$", - "TBT - C'est un ‚go‹ste . Je me demande si il aime autre chose que ses chevaux et ses grimoires$", - "TBT - Je crois qu'il s'entend bien avec tout le monde, mis … part, peut tre, avec Guy$", - "TBT - C'est un homme de caractŠre . Il faut savoir le prendre ..$", - "TBT - Les affaires sont les affaires . Quant … la famille, je la laisse pour ce qu'elle est ...$", - "TBT - Relations ? Relations amicales ? Relations financiŠres sans doute$", - "TBT - Moi je n'ai rien … lui reprocher$", - "TBT - C'est un homme d'affaire d‚brouillard . Il nage parfois … contre-courant mais ... il s'en sortira toujours$", - "TBT - Ils m'ennuient tous .. Non ! Ce n'est mme pas ‡a .. Quoique .. certains ..$", - "TBT - A l'inverse de sa mŠre, c'est une personne trŠs renferm‚e ! Alors question relations ..$", - "TBT - Il doit sans doute faire beaucoup d'effort pour rester agr‚able malgr‚ tous ses ennuis$", - "TBT - Ses relations amoureuses : C'est termin‚ . Ses relations avec moi : Pas vraiment commenc‚es . Quant aux autres : Je ne suis pas les \"autres\"$", + "TBT - Il en ferait plus si il s'occupait moins des ragôts et de la bouteille$", + "TBT - Je suis trčs indépendant . Tant qu'on ne s'occupe pas de mes affaires : Pas de problčme$", + "TBT - C'est un égoďste . Je me demande si il aime autre chose que ses chevaux et ses grimoires$", + "TBT - Je crois qu'il s'entend bien avec tout le monde, mis ŕ part, peut ętre, avec Guy$", + "TBT - C'est un homme de caractčre . Il faut savoir le prendre ..$", + "TBT - Les affaires sont les affaires . Quant ŕ la famille, je la laisse pour ce qu'elle est ...$", + "TBT - Relations ? Relations amicales ? Relations financičres sans doute$", + "TBT - Moi je n'ai rien ŕ lui reprocher$", + "TBT - C'est un homme d'affaire débrouillard . Il nage parfois ŕ contre-courant mais ... il s'en sortira toujours$", + "TBT - Ils m'ennuient tous .. Non ! Ce n'est męme pas ça .. Quoique .. certains ..$", + "TBT - A l'inverse de sa mčre, c'est une personne trčs renfermée ! Alors question relations ..$", + "TBT - Il doit sans doute faire beaucoup d'effort pour rester agréable malgré tous ses ennuis$", + "TBT - Ses relations amoureuses : C'est terminé . Ses relations avec moi : Pas vraiment commencées . Quant aux autres : Je ne suis pas les \"autres\"$", "TBT - J'aime bien tout le monde, tant qu'on ne m'escroque pas$", - "TBT - Il ne suffit pas d'avoir un peu d'argent et d'tre beau parleur pour plaire … tout le monde$", - "TBT - Sans histoire .. C'est quelqu'un d'agr‚able et g‚n‚reux . De plus, il ne manque pas d'humour$", - "TBT - Actuellement je m'entends plut“t bien avec tout le monde . Mais, ici, je ne vais pas m'‚tendre sur le sujet$", - "TBT - Beau plumage, mais ‡a ne vole pas haut ... Parlez en … son mari$", + "TBT - Il ne suffit pas d'avoir un peu d'argent et d'ętre beau parleur pour plaire ŕ tout le monde$", + "TBT - Sans histoire .. C'est quelqu'un d'agréable et généreux . De plus, il ne manque pas d'humour$", + "TBT - Actuellement je m'entends plutôt bien avec tout le monde . Mais, ici, je ne vais pas m'étendre sur le sujet$", + "TBT - Beau plumage, mais ça ne vole pas haut ... Parlez en ŕ son mari$", "TBT - C'est pour un rendez-vous ?$", - "TBT - Elle est trŠs vivante ! Elle ne s'embarrasse pas de pr‚jug‚s stupides$", - "TBT - Dans mon m‚tier, on c“toit surtout des belles femmes et des truands$", - "TBT - La seule valeur s–re chez lui, c'est ses bijoux .. Et sa femme, mais ‡a il ne s'en rend pas compte$", - "TBT - C'est quelqu'un d'interessant . De pas toujours facile … comprendre, mais qui m‚rite le d‚tour$", - "TBT - Je ne d‚teste personne, mais j'aime les choses et les gens quand ils sont … leur place$", - "TBT - C'est entre nous . Mais voyez : quand je parle avec elle, je me sens vite … l'‚troit !$", - "TBT - Pour ne pas s'entendre avec elle, faut y mettre de la mauvaise volont‚$", - "TBT - Vous savez dans mon m‚tier on entend tout mais on ne retient rien, et le service est bien fait$", + "TBT - Elle est trčs vivante ! Elle ne s'embarrasse pas de préjugés stupides$", + "TBT - Dans mon métier, on côtoit surtout des belles femmes et des truands$", + "TBT - La seule valeur sűre chez lui, c'est ses bijoux .. Et sa femme, mais ça il ne s'en rend pas compte$", + "TBT - C'est quelqu'un d'interessant . De pas toujours facile ŕ comprendre, mais qui mérite le détour$", + "TBT - Je ne déteste personne, mais j'aime les choses et les gens quand ils sont ŕ leur place$", + "TBT - C'est entre nous . Mais voyez : quand je parle avec elle, je me sens vite ŕ l'étroit !$", + "TBT - Pour ne pas s'entendre avec elle, faut y mettre de la mauvaise volonté$", + "TBT - Vous savez dans mon métier on entend tout mais on ne retient rien, et le service est bien fait$", "TBT - C'est un hypocrite, un larbin ! Personnellement je ne lui fais pas confiance$", - "TBT - Je ne connait pas le fond de sa pens‚e mais c'est quelqu'un de toujours trŠs correct et impeccable$", - "TBT - C'‚tait une personne qui a v‚cu au manoir, il y a un an .. peut tre plus$", - "TBT - C'‚tait plus qu'une amie pour ma mŠre . En ces moments, j'aurais aim‚ qu'elle soit … mes cot‚s$", - "TBT - Murielle a ‚t‚ la dame de compagnie de Julia$", + "TBT - Je ne connait pas le fond de sa pensée mais c'est quelqu'un de toujours trčs correct et impeccable$", + "TBT - C'était une personne qui a vécu au manoir, il y a un an .. peut ętre plus$", + "TBT - C'était plus qu'une amie pour ma mčre . En ces moments, j'aurais aimé qu'elle soit ŕ mes cotés$", + "TBT - Murielle a été la dame de compagnie de Julia$", "TBT - Elle aussi, faisait des recherches ...$", - "TBT - C'‚tait une femme trŠs cultiv‚e . Son brusque d‚part, il y a un an, m'a surpris et beaucoup chagrin‚$", - "TBT - Elle partageait avec L‚o sa passion de l'histoire et de la r‚gion$", + "TBT - C'était une femme trčs cultivée . Son brusque départ, il y a un an, m'a surpris et beaucoup chagriné$", + "TBT - Elle partageait avec Léo sa passion de l'histoire et de la région$", "TBT - Je crois que tout le monde l'aimait bien$", - "TBT - Elle s'entendait bien avec tout le monde . Elle aimait beaucoup son fils . Quant aux relations belle-mŠre, belle-fille ..$", - "TBT - A part L‚o, elle avait de trŠs bon rapport avec Max ...$", - "TBT - Bien que vos relations furent peu soutenues, J‚r“me, elle vous portait toujours dans son coeur ...$", + "TBT - Elle s'entendait bien avec tout le monde . Elle aimait beaucoup son fils . Quant aux relations belle-mčre, belle-fille ..$", + "TBT - A part Léo, elle avait de trčs bon rapport avec Max ...$", + "TBT - Bien que vos relations furent peu soutenues, Jérôme, elle vous portait toujours dans son coeur ...$", "TBT - A part sa famille, pas grand monde$", - "TBT - Ah oui ! Je crois qu'elle a beaucoup regrett‚ le d‚part de cette amie .. euh ! Marielle .. ou Mireille ...$", + "TBT - Ah oui ! Je crois qu'elle a beaucoup regretté le départ de cette amie .. euh ! Marielle .. ou Mireille ...$", "TBT - Non rien !$", "TBT - Non ... Pas que le sache$", - "TBT - J'ai connu Julia en achetant le manoir . C'‚tait son seul bien . Mais toute ma fortune ‚tait la sienne ...$", - "TBT - Si ce n'est quelques objets personnels, je crois qu'elle n'avait plus rien … elle$", - "TBT - Je crois que toute sa fortune venait de L‚o . Alors, Pfuuut !$", - "TBT - A part la lettre pour vous que j'ai post‚, rien de bien important !$", - "TBT - J'ai ‚t‚ trŠs heureuse qu'elle m'offre sa bible reli‚e$", - "TBT - Ca a ‚t‚ rapide et elle n'a pas eu le temps de prendre des dispositions particuliŠres$", - "TBT - Son dernier pr‚sent m'a surpris$", + "TBT - J'ai connu Julia en achetant le manoir . C'était son seul bien . Mais toute ma fortune était la sienne ...$", + "TBT - Si ce n'est quelques objets personnels, je crois qu'elle n'avait plus rien ŕ elle$", + "TBT - Je crois que toute sa fortune venait de Léo . Alors, Pfuuut !$", + "TBT - A part la lettre pour vous que j'ai posté, rien de bien important !$", + "TBT - J'ai été trčs heureuse qu'elle m'offre sa bible reliée$", + "TBT - Ca a été rapide et elle n'a pas eu le temps de prendre des dispositions particuličres$", + "TBT - Son dernier présent m'a surpris$", "TBT - Quel cadeau ?$", "TBT - Un chandellier ...$", - "TBT - Oui, j'ai eu un cadeau . Ma femme a mme eu une bible$", + "TBT - Oui, j'ai eu un cadeau . Ma femme a męme eu une bible$", "TBT - Et bien oui ! Comme tout le monde, je crois$", "TBT - Un poignard$", - "TBT - Je n'ai jamais ‚t‚ fouiller dans le grenier !$", + "TBT - Je n'ai jamais été fouiller dans le grenier !$", "TBT - Vous avez un don de double-vue ou un passe-partout$", "TBT - Le portrait d'une jeune fille : C'est Murielle ...$", "TBT - Vous savez, je la connaissais assez peu$", - "TBT - Elle ‚tait trŠs charmante, mais c'‚tait surtout la dame de compagnie de Julia$", - "TBT - C'est la seule femme vraiment interessante que j'ai rencontr‚$", - "TBT - Elle avait de grandes connaissances historiques, et la consulter ‚tait trŠs enrichissant$", - "TBT - Je me suis toujours demand‚ ce que certains pouvaient lui trouver !$", - "TBT - Si la chambre est ferm‚e, demandez … L‚o$", - "TBT - J'ai ferm‚ sa chambre aprŠs sa mort et j'aimerais qu'il en soit ainsi encore un certain temps$", + "TBT - Elle était trčs charmante, mais c'était surtout la dame de compagnie de Julia$", + "TBT - C'est la seule femme vraiment interessante que j'ai rencontré$", + "TBT - Elle avait de grandes connaissances historiques, et la consulter était trčs enrichissant$", + "TBT - Je me suis toujours demandé ce que certains pouvaient lui trouver !$", + "TBT - Si la chambre est fermée, demandez ŕ Léo$", + "TBT - J'ai fermé sa chambre aprčs sa mort et j'aimerais qu'il en soit ainsi encore un certain temps$", "TBT - Vous savez ce que c'est : Des relations familiales$", - "TBT - Durant toutes ces ann‚es, je ne l'ai jamais servie … contre-coeur$", + "TBT - Durant toutes ces années, je ne l'ai jamais servie ŕ contre-coeur$", "TBT - Je l'aimais autant qu'elle m'aimais, je crois$", - "TBT - De quel droit avez-vous p‚n‚tr‚ dans la chambre de ma femme ?!!$", + "TBT - De quel droit avez-vous pénétré dans la chambre de ma femme ?!!$", "TBT - C'est sans doute la photo de Murielle avec le filleul de Julia$", "TBT - Je ne me rappelle pas$", - "TBT - C'est Murielle . C'est moi qui l'ai prise. et d'ailleurs elle est tir‚e … l'envers$", - "TBT - Vous tes bien curieux !... C'est sans valeur$", - "TBT - Grimoires, parchemins et manuscrits : C'est le domaine de L‚o$", + "TBT - C'est Murielle . C'est moi qui l'ai prise. et d'ailleurs elle est tirée ŕ l'envers$", + "TBT - Vous ętes bien curieux !... C'est sans valeur$", + "TBT - Grimoires, parchemins et manuscrits : C'est le domaine de Léo$", "TBT - Dommage que la devise soit manquante ...$", - "TBT - C'est trŠs beau ... Et trŠs vieux ...$", - "TBT - Tiens ! C'est un endroit que je n'ai jamais visit‚$", - "TBT - D'apr‚s L‚o, il semblerait que les Lunes soient plus r‚centes$", - "TBT - Mme par ce temps, vous avez d‚nich‚ un soleil ...$", - "TBT - Profond et inqui‚tant : Le progrŠs a du bon$", - "TBT - Ca reste pour moi le plus grand des mystŠres$", + "TBT - C'est trčs beau ... Et trčs vieux ...$", + "TBT - Tiens ! C'est un endroit que je n'ai jamais visité$", + "TBT - D'aprés Léo, il semblerait que les Lunes soient plus récentes$", + "TBT - Męme par ce temps, vous avez déniché un soleil ...$", + "TBT - Profond et inquiétant : Le progrčs a du bon$", + "TBT - Ca reste pour moi le plus grand des mystčres$", "TBT - Les derniers temps elle parlait d'un voyage . Et puis ...$", - "TBT - Il y a un peu plus d'un an, un soir, elle a d‚cid‚ de partir ...$", - "TBT - De toutes fa‡ons elle n'‚tait pas faite pour vivre ici$", + "TBT - Il y a un peu plus d'un an, un soir, elle a décidé de partir ...$", + "TBT - De toutes façons elle n'était pas faite pour vivre ici$", "TBT - Quoi ?! Quel corps ? Quel crypte ?$", - "TBT - Si il y en a, je ne les ai jamais trouv‚ ...$", - "TBT - Bien s–r ! ... Et des fant“mes aussi ...$", - "TBT - C'est la plus vielle de la r‚gion : Elle date du XI eme siŠcle$", - "TBT - Elle fut l‚gŠrement restaur‚e aprŠs la r‚volution$", + "TBT - Si il y en a, je ne les ai jamais trouvé ...$", + "TBT - Bien sűr ! ... Et des fantômes aussi ...$", + "TBT - C'est la plus vielle de la région : Elle date du XI eme sičcle$", + "TBT - Elle fut légčrement restaurée aprčs la révolution$", "TBT - Julia aimait beaucoup la peinture$", - "TBT - Ils ont diff‚rents styles, mais n'ont pas tous une trŠs grande valeur$", - "TBT - Que faites-vous l… ?$", - "TBT - Je suis s–r que vous cherchez quelque chose ici$", - "TBT - Je vous ‚coute$", - "TBT - Que d‚sirez-vous ?$", + "TBT - Ils ont différents styles, mais n'ont pas tous une trčs grande valeur$", + "TBT - Que faites-vous lŕ ?$", + "TBT - Je suis sűr que vous cherchez quelque chose ici$", + "TBT - Je vous écoute$", + "TBT - Que désirez-vous ?$", "TBT - Oui ?$", - "TBT - Je suis … vous ...$", + "TBT - Je suis ŕ vous ...$", "TBT - C'est pourquoi ?$", "TBT - Allez-y$", - "TBT - C'est … quel sujet ?$", - "TBT - Max : … votre service, monsieur$", - "TBT - De toutes fa‡ons vous n'avez rien … faire ici ! Sortez !!$", - "TBT - Vous tes trop curieux !$", - "TBT - J‚r“me ! Il y a longtemps ... Quelle tristesse, Julia est morte . Sa famille est ici : Guy, son fils . Eva, sa brue . L‚o, son mari bien s–r . Son beau fils, Pat . Des cousins : Bob, Ida, Luc . La tempŠte redouble, il vous faut rester . Les repas sont … 12h et 19h et il y a un recueillement … la chapelle tous les jours … 10h$", - "TBT - En vous voyant j'ai compris que vous decouvririez la v‚rit‚ ... Car je savais pourquoi vous veniez : J'avais retrouv‚ le brouillon de la lettre de Julia . Mais je suis trŠs joueur, alors ... Elle n'avait pas voulu que votre tche soit trop facile, pour me prot‚ger, sans doute, mais elle n'a pu mourir avec cette incertitude sur la conscience . Avez vous d‚couvert que le mur du silence est le nom que les ma‡ons ont donn‚ au mur qui porte ce blason, lors de la construction du manoir ? .. Et ces cadeaux que Julia a laiss‚ avant de mourir ‚taient autant de faux indices qui ne servaient qu'… faire ressortir l'importance des parchemins ... Effectivement, il y a plus d'un an, je travailais avec Murielle au d‚cryptage de ces manuscrits que je venais de trouver . Ma femme a fait la relation entre notre travail et la disparition de Murielle mais elle n'a jamais eu de preuves . Si ce n'est cette bague qu'elle a retrouv‚ un jour dans mes affaires . Une nuit, nous nous sommes aventur‚s dans le passage secret que nous avions d‚couvert . Murielle est morte par accident dans la piŠce de la vierge . J'ai r‚cup‚r‚ la bague rapidement, trouv‚ le tr‚sor et me suis enfuis . Je ne pensais pas qu'elle vivait encore, et je n'ai rien dit car j'avais besoin d'argent . J'ai fait passer cette somme sur le compte des courses de chevaux ...Partez maintenant, puisque vous n'tes pas de la police . Laissez moi seul !$", - "TBT - F‚vrier 1951 ... Profession : detective priv‚ . Le froid figeait Paris et mes affaires lorsque ...$", - "TBT - Une lettre, un appel, des souvenirs d'une enfance encore proche . Que de jeux dans les piŠces d‚labr‚es du manoir de Mortevielle . Julia, une vieille femme a pr‚sent .$", + "TBT - C'est ŕ quel sujet ?$", + "TBT - Max : ŕ votre service, monsieur$", + "TBT - De toutes façons vous n'avez rien ŕ faire ici ! Sortez !!$", + "TBT - Vous ętes trop curieux !$", + "TBT - Jérôme ! Il y a longtemps ... Quelle tristesse, Julia est morte . Sa famille est ici : Guy, son fils . Eva, sa brue . Léo, son mari bien sűr . Son beau fils, Pat . Des cousins : Bob, Ida, Luc . La tempčte redouble, il vous faut rester . Les repas sont ŕ 12h et 19h et il y a un recueillement ŕ la chapelle tous les jours ŕ 10h$", + "TBT - En vous voyant j'ai compris que vous decouvririez la vérité ... Car je savais pourquoi vous veniez : J'avais retrouvé le brouillon de la lettre de Julia . Mais je suis trčs joueur, alors ... Elle n'avait pas voulu que votre tche soit trop facile, pour me protéger, sans doute, mais elle n'a pu mourir avec cette incertitude sur la conscience . Avez vous découvert que le mur du silence est le nom que les maçons ont donné au mur qui porte ce blason, lors de la construction du manoir ? .. Et ces cadeaux que Julia a laissé avant de mourir étaient autant de faux indices qui ne servaient qu'ŕ faire ressortir l'importance des parchemins ... Effectivement, il y a plus d'un an, je travailais avec Murielle au décryptage de ces manuscrits que je venais de trouver . Ma femme a fait la relation entre notre travail et la disparition de Murielle mais elle n'a jamais eu de preuves . Si ce n'est cette bague qu'elle a retrouvé un jour dans mes affaires . Une nuit, nous nous sommes aventurés dans le passage secret que nous avions découvert . Murielle est morte par accident dans la pičce de la vierge . J'ai récupéré la bague rapidement, trouvé le trésor et me suis enfuis . Je ne pensais pas qu'elle vivait encore, et je n'ai rien dit car j'avais besoin d'argent . J'ai fait passer cette somme sur le compte des courses de chevaux ...Partez maintenant, puisque vous n'ętes pas de la police . Laissez moi seul !$", + "TBT - Février 1951 ... Profession : detective privé . Le froid figeait Paris et mes affaires lorsque ...$", + "TBT - Une lettre, un appel, des souvenirs d'une enfance encore proche . Que de jeux dans les pičces délabrées du manoir de Mortevielle . Julia, une vieille femme a présent .$", "TBT - to the bureau$", "TBT - to the kitchen$", "TBT - to the cellar$", @@ -1670,7 +1670,7 @@ const char *gameDataDe[] = { "TBT - Directed by: KYILKHOR CREATION and LANGLOIS$", "TBT - $", "TBT - With the cooperation of...$", - "TBT - B‚atrice et Jean_Luc LANGLOIS$", + "TBT - Béatrice et Jean_Luc LANGLOIS$", "TBT - for the music and the voices,$", "TBT - Bernard GRELAUD for the graphic conception,$", "TBT - MARIA-DOLORES for the graphic direction,$", @@ -1769,7 +1769,7 @@ const char *gameDataDe[] = { "TBT - - 11$", "TBT - What was the first name@of the unknown character?$", "TBT - - Mireille$", - "TBT - - Fran‡oise$", + "TBT - - Françoise$", "TBT - - Maguy$", "TBT - - Emilie$", "TBT - - Murielle$", @@ -1786,7 +1786,7 @@ const char *gameDataDe[] = { "TBT - [1][ | Disk error | All stop... ][ok]$", "TBT - [1][ | You should have noticed |00% of the clues ][ok]$", "TBT - [3][ | insert disk 2 | in drive A ][ok]$", - "TBT - [1][ |Avant d'aller plus loin, vous faites|un point sur l'‚tat de vos connaissances][ok]$", + "TBT - [1][ |Avant d'aller plus loin, vous faites|un point sur l'état de vos connaissances][ok]$", "TBT - MASTER .$", "TBT - rorL$", NULL diff --git a/dists/engine-data/mort.dat b/dists/engine-data/mort.dat index f9cd1ec127..0731d3c2c9 100644 Binary files a/dists/engine-data/mort.dat and b/dists/engine-data/mort.dat differ -- cgit v1.2.3 From 348e149739c6d97f282e352f6a97db6fff0be2dc Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 25 Feb 2013 08:21:38 +0100 Subject: MORTEVIELLE: Integrate translations fixes. --- devtools/create_mortdat/gametext.h | 782 ++++++++++++++++++------------------- dists/engine-data/mort.dat | Bin 77839 -> 77889 bytes 2 files changed, 391 insertions(+), 391 deletions(-) diff --git a/devtools/create_mortdat/gametext.h b/devtools/create_mortdat/gametext.h index bd3c340f1b..ebaa422f2c 100644 --- a/devtools/create_mortdat/gametext.h +++ b/devtools/create_mortdat/gametext.h @@ -103,7 +103,7 @@ const char *gameDataEn[] = { "Linen, personal belongings...$", "Not just anywhere!$", "It's not time!$", - "One doesn't speak with ones mouth full!$", + "One doesn't speak with ones mouth full! So once the meal is over...$", "Someone comes in, messes about then goes out again$", "Someone's approaching your hiding-place$", "Someone surprises you!$", @@ -120,7 +120,7 @@ const char *gameDataEn[] = { "The same matter, from another angle!$", "The reflection is tarnished, but the frame is gold!$", "Bric-a-brac$", - "Face to face with failure!$", + "Facing failure!$", "Smells like something you'd rather not see!$", "Cleaning products$", "Got an itch?$", @@ -168,11 +168,11 @@ const char *gameDataEn[] = { "Suddenly Max arrives with your suitcase: \"Thank you for your @visit!\".Mister discreet \"private eye\" (in need of a private optici@an!). Thoroughly demoralised, you@leave the manor. You are useless!$", "Leo interrupts: \"The storm has died down,I am going into town in@1 hour. Get ready\". You have lost@time...but not your life$", "Congestion, the deadly flu... You@are stuck here! Your whole case@sinks slowly beneath the water$", - "The water is rising fast,freezing your last illusions. Before you@have time to react...you are dead$", + "The water is rising fast, freezing your last illusions. Before you@have time to react...you are dead$", "As soon as you reach the bottom of the well, a hand cuts the rope@Farewell sweet life!$", "The storm covers your footprints.A wall of silence falls heavily@on your shoulders. Slowly you succumb to frosbite...$", - "You're not completely alone! A cold blade plunges into your backup@In future, be more care!$", - "You don't know what implication Leo may have had in Murielle's@death. Was she dead outright? In@any case,the family problems thatyou have uncovered in the course@of your enquiries would explain Leo's behaviour. You're not sure@that's the reason Julia had asked@for your help, but that's reason enough for you!Out of respect for@her, after taking certain precau-@tions you have a revealing talk with Leo.$", + "You're not completely alone! A cold blade plunges into your back@In future, be more careful!$", + "You don't know what implication Leo may have had in Murielle's@death. Was she dead outright? In@any case, the family problems that you have uncovered in the course@of your enquiries would explain Leo's behaviour. You're not sure@that's the reason Julia had asked@for your help, but that's reason enough for you!Out of respect for@her, after taking certain precau-@tions you have a revealing talk with Leo.$", "$", "You don't have the keys to the manor. Your cries rest unheard@You're going to catch... your death!$", "With a circular movement, the sword slices across you. Guts and@intestines spill out all over. A sorry state of affairs!$", @@ -205,8 +205,8 @@ const char *gameDataEn[] = { "No, not just now$", "Too late$", "$", - "Like a deep stony stare, a solitary eye that points towards the@stars; the artery that links hea-ven and hell. You must fathom@these depths keeping hold of that@which is, and will become. Monday, Tuesday, Wednesday, Sunday, from@Monday 1st to Sunday 1st,plunging from one day to the next your@\"IS\" or \"WILL BECOME\". Carrying your burden with love and light,@the smallest oversight will seal your fate.$", - "10/1/51: We think we've solved the mystery of the manuscript and@located the crypt. Is it the idea@of success in what seems like a dream that disturbs me so? I feel@I have committed myself rather too much, as far as Leo is concer@ned... No! I should go on. @I should have put Guy in the pic-ture but for a week now, I've had@no news of him$", + "Like a deep stony stare, a solitary eye that points towards the@stars; the artery that links hea-ven and hell. You must fathom@these depths keeping hold of that@which is, and will become. Monday, Tuesday, Wednesday, Sunday, from@the first Monday to the first Sunday,plunging from one day to the next your@\"IS\" or \"WILL BECOME\". Carrying your burden with love and light,@the smallest oversight will seal your fate.$", + "10/1/51: We think we've solved the mystery of the manuscript and@located the crypt. Is it the idea@of success in what seems like a dream that disturbs me so? I feel@I have committed myself rather too much, as far as Leo is @concerned... No! I mustgo on. @I should have put Guy in the picture but for a week now, I've had@no news of him$", "Take your prayers as you would to the holy place. From the pillar@of wisdom, bring the sun to his@knees. Thus will it show you the place to offer alms of another@kind and like young Arthur, open the way of darkness.White is your@colour, golden your hearth. So@advance with caution Orpheus and light your way unto the sad@virgin. Offer her the circle of the man with three faces. That he@may regain the world and turn with it to its original@inglory!$", "The mountains are the fangs in a monstrous mouth opening on the@finity of a celestial orgy, grin-ding the stars as we grind our@teeth into dust. You will drop your chord of stone at your feet.@The laugh of silence at the@highest pitch, and in your right hand, the measure of genius. Thus@will you pass between the two crescents beyond the abyss of the@wall of silence. The key to the melody is within your grasp. It@suffices to find the note that clashes.$", " 9/12 INTER. 518 3/13 EXPENS. 23@ 9/12 SALES 1203 7/12 CHEQUE 1598@ TOTAL 1721 TOTAL 1721$", @@ -285,7 +285,7 @@ const char *gameDataEn[] = { "Julia's bedroom$", "The photo at Julia's home$", "Julia and yourself...$", - "Léo's occupations$", + "L‚o's occupations$", "Pat's occupations$", "Guy's occupations$", "Bob's occupations$", @@ -294,7 +294,7 @@ const char *gameDataEn[] = { "Ida's occupations$", "Max's occupations$", "Your occupations$", - "Léo's relationships$", + "L‚o's relationships$", "Pat's relationships$", "Guy's relationships$", "Bob's relationships$", @@ -324,7 +324,7 @@ const char *gameDataEn[] = { "These are the mountains one can see in front of the manor$", "I don't know!$", "She died from pulmonary embolism$", - "Mother died suddenly. And yet her health had seemed to improve$", + "Mother died suddenly. And yet her health had seemed to improve‚$", "Miss DEFRANCK died from a cold$", "She died from pulmonary embolism$", "Excuse me but I prefer to say nothing for now$", @@ -345,20 +345,20 @@ const char *gameDataEn[] = { "Him and Pat are patners. I think it's going pretty well$", "I take care of myself and that's already lots. How about you?$", "(319) Oh that! I trust her. She knows how to keep herself busy$", - "(320) What! You have not yet discovered her main occupation...?$", + "(320) What! You have not yet discovered her main occupation..?$", "She is working in the decoration business, and tastefully with that. She is always very well dressed$", "If you like jewels, I have some good deals to propose for a short while$", "The jewels...$", "I don't know, but I'd like him to give me a bit more slack!$", "When one is a housewife, one always find something to do...$", "She could stay there doing nothing, but no! She sews, she reads...$", - "She probably doesn't have very fulfilling occupations...$", + "She has probably not very fulfilling occupations...$", "A woman like there is no more: She is interested in everything!$", "With the cooking and the cleaning I do not have much time for you$", - "I do not know how he manages to do everything. That's wonderful!$", + "I do not know how he manages to do everything. That's wonderful!", "He would do more if he showed less interest in gossip and alcohol$", "I am very independant. As long as nobody interferes in my business: No problem$", - "He is selfish. I wonder if he likes something else than his horses and grimoires$", + "He is selfish. I wonder if he likes something other than his horses and grimoires$", "I think he gets along well with everyone, except, perhaps, with Guy$", "He has a temper. You have to learn how to deal with him...$", "Business is business. As for the family, I leave it as it is...$", @@ -388,12 +388,12 @@ const char *gameDataEn[] = { "Someone who lived in the manor, a year ago... maybe more$", "She was more than a friend to my mother. In these moments, I would have loved to have her by my side$", "Murielle has been Julia's lady-in-waiting$", - "She, too, was doing some research...$", + "She, too, was doing some research....$", "She was a very educated person. Her abrupt leaving, a year ago, surprised me and caused me great sorrow$", "Her and Leo shared a common passion for history and the local area$", "I think everyone liked her$", "She got along with everyone. She loved her son dearly. As for the relations between mother-in-law and daughter-in-law...$", - "Apart from Leo, she got along very well with Max....$", + "Apart from Leo, she got along very well with Max...$", "Even if your relations were unfrequent, Jerome, there was still a place for you in her heart...$", "(370) Apart from her family, not a lot of people$", "Oh right! I think she deeply regretted this friend's leaving... err! Marielle... or Mireille...$", @@ -460,10 +460,10 @@ const char *gameDataEn[] = { "In any case you have no business being in here! Get out!!$", "You are too curious!$", "Jerome! It's been a while... I'm very sad to announce you that Julia died. Her family is here: Guy, her son; Eva, her daughter-in-law; Leo, her husband, of course; her son-in-law Pat; cousins, too: Bob, Ida, Luc. The storm is getting stronger, you must stay here. Meals are served at 12am and 7pm, and there is a mass at the chapel every day at 10am$", - "When I saw you I knew you would uncover the truth... I knew why you were here: I had found the draft of Julia's letter. But I love to play, so ŕ She hadn't wanted your task to be too easy, to protect me, probably, but she couldn't die knowing this mystery would remain unsolved. Did you find out that the wall of silence is the name the builders gave, during the construction of the manor, to the wall on which the coat of arms hangs?.. And those gifts Julia left before dying were as many false leads, and their true purpose was to highlight how important the parchments were ŕ That's right, more than a year ago I was working with Murielle on the decryption of those manuscripts I had just found. My wife made the connection between our work and Murielle's disappearance, but she never had any proof. Except that ring she found one day while going through my belongings. One night, we went exploring the secret passage we had found. Murielle died by accident in the room of the Virgin. I quickly took the ring from her, found the treasure and ran away. I didn't think she was still alive, and I didn't say a word because I needed the money. I told everyone the money was coming from a winning bet at the horseraces ŕ Leave now, since you're not a policeman. Leave me alone!$", + "When I saw you I knew you would uncover the truth... I knew why you were here: I had found the draft of Julia's letter. But I love to play, so... She hadn't wanted your task to be too easy, to protect me, probably, but she couldn't die knowing this mystery would remain unsolved. Did you find out that the wall of silence is the name the builders gave, during the construction of the manor, to the wall on which the coat of arms hangs?... And those gifts Julia left before dying were as many false leads, and their true purpose was to highlight how important the parchments were... That's right, more than a year ago I was working with Murielle on the decryption of those manuscripts I had just found. My wife made the connection between our work and Murielle's disappearance, but she never had any proof. Except that ring she found one day while going through my belongings. One night, we went exploring the secret passage we had found. Murielle died by accident in the room of the Virgin. I quickly took the ring from her, found the treasure and ran away. I didn't think she was still alive, and I didn't say a word because I needed the money. I told everyone the money was coming from a winning bet at the horseraces... Leave now, since you're not a policeman. Leave me alone!$", "February 1951... Occupation: private eye. The cold was freezing Paris off, and my cases as well, when...$", "A letter, a call, memories from a childhood not that long ago. Echoes of the many games we played in the disused rooms of Mortville Manor... And Julia, now an old woman.$", - " to the bureau$", + " to the office$", " to the kitchen$", " to the cellar$", " to the landing$", @@ -472,7 +472,7 @@ const char *gameDataEn[] = { " inside the manor$", " front of the manor$", " to the chapel$", - " to the weel$", + " to the well$", " north$", " behind the manor$", " south$", @@ -481,8 +481,8 @@ const char *gameDataEn[] = { " towards the manor$", " further$", " in the water$", - " out of the weel$", - " in the weel$", + " out of the well$", + " in the well$", " choice on screen$", "In the MYSTERY series...$", "MORTVILLE MANOR$", @@ -493,7 +493,7 @@ const char *gameDataEn[] = { "Directed by: KYILKHOR CREATION and LANGLOIS$", "$", "With the cooperation of...$", - "Béatrice et Jean_Luc LANGLOIS$", + "B‚atrice et Jean_Luc LANGLOIS$", "for the music and the voices,$", "Bernard GRELAUD for the graphic conception,$", "MARIA-DOLORES for the graphic direction,$", @@ -543,7 +543,7 @@ const char *gameDataEn[] = { "- Was she murdered?$", "- Did she die by accident?$", "- Did she die of natural causes?$", - "Where did the money come from@for the restoration of the manor?$", + "Where did the money used for the@restoration of the manor come from?$", "- Blackmail$", "- Honest work$", "- Inheritance$", @@ -557,8 +557,8 @@ const char *gameDataEn[] = { "- Painting$", "- Drugs$", "- Occult sciences$", - "- Management of a sect$", - "Julia left several clues that are@represented in one place. Which?$", + "- Leader of a sect$", + "Julia left several clues that are@represented in one place. Which one?$", "- Chapel$", "- Outside$", "- Cellar$", @@ -572,7 +572,7 @@ const char *gameDataEn[] = { "- Max's room$", "- Luc/Ida's room$", "- Guy/Eva's room$", - "The main clue that leads you@to the underground door is:$", + "The main clue that lead you@to the underground door is:$", "- A dagger$", "- A ring$", "- A book$", @@ -580,24 +580,24 @@ const char *gameDataEn[] = { "- A letter$", "- A pendulum$", "How many parchments were there in the manor?$", - "- 0$", - "- 1$", - "- 2$", - "- 3$", - "- 4$", - "- 5$", - "How many persons are involved in@this story?@(Julia included, but not yourself)$", - "- 9$", - "- 10$", - "- 11$", + "- None$", + "- Just one$", + "- Two$", + "- Three$", + "- Four$", + "- Five$", + "How many persons are involved in@this story?@(including Julia, but not yourself)$", + "- Nine$", + "- Ten$", + "- Eleven$", "What was the first name@of the unknown character?$", "- Mireille$", - "- Françoise$", + "- Fran‡oise$", "- Maguy$", "- Emilie$", "- Murielle$", "- Sophie$", - "Wo did Murielle have an affair with?$", + "Who did Murielle have an affair with?$", "- Bob$", "- Luc$", "- Guy$", @@ -609,7 +609,7 @@ const char *gameDataEn[] = { "[1][ | Disk error | All stop... ][ok]$", "[1][ | You should have noticed |00% of the clues ][ok]$", "[3][ | insert disk 2 | in drive A ][ok]$", - "TBT - [1][ |Avant d'aller plus loin, vous faites|un point sur l'état de vos connaissances][ok]$", + "[1][ |Before going any further, you decide to| look back on the knowledge you gained][ok]$", "TBT - MASTER .$", "TBT - rorL$", NULL @@ -617,9 +617,9 @@ const char *gameDataEn[] = { const char *gameDataFr[] = { "Le calme dans la tourmente$", - "Des goűts et des couleurs!$", + "Des go—ts et des couleurs!$", "Mauve qui peut!$", - "Pričre de laisser en sortant...$", + "PriŠre de laisser en sortant...$", "Trou noir troublant$", "Bleu... comme \"peur bleue\"!$", "Chambre de \"Saigneur\"!$", @@ -629,33 +629,33 @@ const char *gameDataFr[] = { "Odeur de feux de bois et de tabac$", "Tabac et vieux bouquins$", "Oignons, cannelle et spiritueux$", - "Un endroit bien peu visité$", - "Humidité et moisissure$", + "Un endroit bien peu visit‚$", + "Humidit‚ et moisissure$", "Avis aux colporteurs...$", - "Corps putréfié : cryptomanie mortelle!$", - "Et en plus... des pičges désamorcés!$", - "C'est déjŕ ouvert$", + "Corps putr‚fi‚ : cryptomanie mortelle!$", + "Et en plus... des piŠges d‚samorc‚s!$", + "C'est d‚j… ouvert$", "Danger : avalanches$", - "Une odeur de sainteté!$", + "Une odeur de saintet‚!$", "Une btisse imposante$", - "L'envers du mystčre!$", - "Drôle d'horoscope!$", + "L'envers du mystŠre!$", + "Dr“le d'horoscope!$", "Tant va la cruche...$", - "Une porte en chčne$", + "Une porte en chŠne$", "Une photo$", "Les armoiries$", "$", - "Max, le domestique, vous accueille puis vous conduit ŕ votre chambre$", - "Mortevielle, le 16/2/51@ Mon cher Jérôme,@ Suite ŕ mon télégramme, je vous fais part des raisons de mon inquiétude :il y a un an, Murielle, ma dame de compagnie, disparaissait . Départ ayant rapport avec le renouveau financier du Manoir, ou... Silence difficile ŕ comprendre, surtout pour mon fils Guy . N'ayant pu jusqu'ŕ présent, faire le jour sur cette affaire, je compte sur vous pour la mener ŕ bien . Si mon état de santé ne s'améliorait pas, prenez les décisions qui vous sembleront le plus appropriées...@ Amitiés. JULIA DEFRANCK$", - "Plus tard, Guy vous apprendra le suicide de Léo... aprčs un pari insensé aux courses!$", + "Max, le domestique, vous accueille puis vous conduit … votre chambre$", + "Mortevielle, le 16/2/51@ Mon cher J‚r“me,@ Suite … mon t‚l‚gramme, je vous fais part des raisons de mon inqui‚tude :il y a un an, Murielle, ma dame de compagnie, disparaissait . D‚part ayant rapport avec le renouveau financier du Manoir, ou... Silence difficile … comprendre, surtout pour mon fils Guy . N'ayant pu jusqu'… pr‚sent, faire le jour sur cette affaire, je compte sur vous pour la mener … bien . Si mon ‚tat de sant‚ ne s'am‚liorait pas, prenez les d‚cisions qui vous sembleront le plus appropri‚es...@ Amiti‚s. JULIA DEFRANCK$", + "Plus tard, Guy vous apprendra le suicide de L‚o... aprŠs un pari insens‚ aux courses!$", "F3: encore@F8: suite$", - "Le maître des lieux$", - "Le futur héritier$", + "Le maŚtre des lieux$", + "Le futur h‚ritier$", "Le fils de JULIA$", "Joli brin!!!$", "Superman!$", "Le mari d'Ida$", - "Propos intéressants?$", + "Propos int‚ressants?$", "Service compris...$", "Rien dessous!$", "Un ange passe...$", @@ -663,61 +663,61 @@ const char *gameDataFr[] = { "Admirez! Contemplez!$", "Non ! Rien !$", "Impossible$", - "ça tache !$", - "Un traité sur l'histoire de la région$", - "Quelques pičces$", + "‡a tache !$", + "Un trait‚ sur l'histoire de la r‚gion$", + "Quelques piŠces$", "Premier commandement...$", - "Des pétales plein les narines !$", + "Des p‚tales plein les narines !$", "Pique, Coeur...$", - "ça ne manque pas de cachets !$", + "‡a ne manque pas de cachets !$", "Un roman d'amour$", "Souffler n'est pas jouer$", - "Pas une réussite!$", + "Pas une r‚ussite!$", "Gare aux rebondissements !$", "Sombre et profond...$", "Sensations normales$", "Sniff!$", "Pas discret ! Contentez-vous de regarder !$", - "Atchoum! De la p... poussičre$", - "La toile est signée... pas le papier peint !$", + "Atchoum! De la p... poussiŠre$", + "La toile est sign‚e... pas le papier peint !$", "Pas de chance, rien !$", "Soyez plus discret !$", "Les volets sont clos$", "De la neige, encore de la neige !$", - "Génial : une toile de maître !$", - "Aucun doute : une véritable imitation$", + "G‚nial : une toile de maŚtre !$", + "Aucun doute : une v‚ritable imitation$", "Hum ! Vous tiquez : de l'antique en toc !$", - "Une pičce rare de valeur !$", + "Une piŠce rare de valeur !$", "Rien de remarquable$", "Linge, objets personnels...$", - "Pas n'importe oů !$", + "Pas n'importe o— !$", "Ce n'est pas l'heure !$", - "On ne parle pas la bouche pleine ! Donc, une fois le repas terminé...$", + "On ne parle pas la bouche pleine ! Donc, une fois le repas termin‚...$", "Quelqu'un entre, s'affaire, ressort...$", "On s'approche de votre cachette !$", "On vous surprend !$", - "Non : vous ętes trop chargé !$", + "Non : vous tes trop charg‚ !$", "Essayez de nouveau$", "Vous restez perplexe !?$", "Vous quittez le Manoir. A Paris, un message vous attend...$", - "Aďe, aďe, aďe !$", + "A‹e, a‹e, a‹e !$", "Rien de plus$", - "Le son paraît normal$", + "Le son paraŚt normal$", "Ca ne bouge pas$", - "On vous répond$", + "On vous r‚pond$", "Pas le moment !$", - "Męme matičre, autre face !$", - "Le reflet est piqué, mais le cadre est d'or$", + "Mme matiŠre, autre face !$", + "Le reflet est piqu‚, mais le cadre est d'or$", "Bibelots, babioles...$", - "Vous essuyez un échec !$", + "Vous essuyez un ‚chec !$", "Il est des odeurs... qu'il vaut mieux ne pas voir !$", - "Des produits ménagers$", - "ça vous démange ?$", - "C'est coincé, gelé ! Brrrr...$", - "Les huisseries sont bloquées !$", + "Des produits m‚nagers$", + "‡a vous d‚mange ?$", + "C'est coinc‚, gel‚ ! Brrrr...$", + "Les huisseries sont bloqu‚es !$", "Des papiers...$", - "Non ! Le pčre Noęl n'est pas coincé !$", - "ça donne sur un couloir$", + "Non ! Le pŠre Nol n'est pas coinc‚ !$", + "‡a donne sur un couloir$", "Vaisselle, argenterie...$", "Non ! Ce ne sont pas les restes de Julia !$", "Une gravure ancienne$", @@ -726,17 +726,17 @@ const char *gameDataFr[] = { "Le passage se ferme$", "Un tiroir secret... Un livret ! Le lisez-vous ?$", "Le tiroir se referme$", - "Rien ! Sang et chairs collent ŕ la pierre !$", - "Des détails vous font supposer que... la mort ne fut pas immédiate !$", - "Des projets véreux ?$", - "Sa vie n'aurait-elle tenu qu'ŕ un doigt ?$", - "Un trésor se serait-il fait la malle ?$", - "Une fente de la taille d'une pičce !$", - "Quelques pierres pivotent... Une crypte ! Y pénétrez-vous ?$", + "Rien ! Sang et chairs collent … la pierre !$", + "Des d‚tails vous font supposer que... la mort ne fut pas imm‚diate !$", + "Des projets v‚reux ?$", + "Sa vie n'aurait-elle tenu qu'… un doigt ?$", + "Un tr‚sor se serait-il fait la malle ?$", + "Une fente de la taille d'une piŠce !$", + "Quelques pierres pivotent... Une crypte ! Y p‚n‚trez-vous ?$", "La bague tourne, le mur se referme...$", - "Une colonne de pierres derričre l'autel$", + "Une colonne de pierres derriŠre l'autel$", "Il y a du bruit...$", - "Occupé !$", + "Occup‚ !$", "Retentez-vous votre chance ?$", "Trop profond !$", "Le mur de la cave pivote$", @@ -745,45 +745,45 @@ const char *gameDataFr[] = { "L'objet glisse au fond...$", "Vous n'avez rien en main$", "Ce n'est pas ouvert$", - "Il y a déjŕ quelque chose$", - "La porte est fermée$", - "Pas de réponse$", + "Il y a d‚j… quelque chose$", + "La porte est ferm‚e$", + "Pas de r‚ponse$", "Une boule de bois pleine$", "Il n'y a plus de place$", - "Une boule de bois percée par le travers$", + "Une boule de bois perc‚e par le travers$", "? ?$", "A vous de jouer$", "OK !$", - "Soudain Max survient avec votre valise : \"Merci de votre visite ! Détective \"privé\"... de bon sens et de discrétion sans doute\" . Déçu démoralisé, vous quittez le manoir@Vous čtes NUL !$", - "Léo vous interrompt : \"la tempčte est calmée. Je pars en ville dans 1 heure. Tenez-vous pręt!\"... Bon... Vous avez perdu du temps... mais pas la vie$", - "Congestion, grippe fatale : vous y restez ! Votre enqučte tombe ŕ l'eau$", - "L'eau monte trčs vite et refroidit vos derničres illusions... Avant que vous n'ayez eu le temps de réagir, vous čtes mort!$", - "A peine čtes-vous au fond du puits qu'une main tranche la corde... Adieu la vie!$", - "La tempčte recouvre vos traces . Un mur de silence s'abat sur vos épaules . Lentement vous succombez ŕ la morsure du froid !$", - "Pas si seul que ça ! Une lame glacée s'enfonce dans votre dos. A l'avenir, soyez plus prudent!$", - "Vous ignorez la responsabilité exacte de Léo dans la mort de Murielle... Est-elle morte sur le coup ? De toutes façons les problčmes familiaux découverts lors de votre enqučte justifient l'attitude de Léo... Vous n'čtes pas sűr que Julia vous ait appelé pour ça mais c'est suffisant pour vous ! Par respect pour elle, et aprčs certaines précautions, vous avez une entrevue révélatrice avec Léo$", + "Soudain Max survient avec votre valise : \"Merci de votre visite ! D‚tective \"priv‚\"... de bon sens et de discr‚tion sans doute\" . D‚‡u d‚moralis‚, vous quittez le manoir@Vous Štes NUL !$", + "L‚o vous interrompt : \"la tempŠte est calm‚e. Je pars en ville dans 1 heure. Tenez-vous prt!\"... Bon... Vous avez perdu du temps... mais pas la vie$", + "Congestion, grippe fatale : vous y restez ! Votre enquŠte tombe … l'eau$", + "L'eau monte trŠs vite et refroidit vos derniŠres illusions... Avant que vous n'ayez eu le temps de r‚agir, vous Štes mort!$", + "A peine Štes-vous au fond du puits qu'une main tranche la corde... Adieu la vie!$", + "La tempŠte recouvre vos traces . Un mur de silence s'abat sur vos ‚paules . Lentement vous succombez … la morsure du froid !$", + "Pas si seul que ‡a ! Une lame glac‚e s'enfonce dans votre dos. A l'avenir, soyez plus prudent!$", + "Vous ignorez la responsabilit‚ exacte de L‚o dans la mort de Murielle... Est-elle morte sur le coup ? De toutes fa‡ons les problŠmes familiaux d‚couverts lors de votre enquŠte justifient l'attitude de L‚o... Vous n'Štes pas s—r que Julia vous ait appel‚ pour ‡a mais c'est suffisant pour vous ! Par respect pour elle, et aprŠs certaines pr‚cautions, vous avez une entrevue r‚v‚latrice avec L‚o$", "$", - "Vous n'avez pas les clefs du Manoir . Vos appels restent sans réponse . Vous allez attraper... la mort !$", - "D'un mouvement circulaire, l'épée vous fend par le travers : tripes et boyaux ŕ l'air, bonjour les vers!$", + "Vous n'avez pas les clefs du Manoir . Vos appels restent sans r‚ponse . Vous allez attraper... la mort !$", + "D'un mouvement circulaire, l'‚p‚e vous fend par le travers : tripes et boyaux … l'air, bonjour les vers!$", "Home, Sweet home !$", - "Mystčre d'une porte close$", - "Charme envoűtant de vieilles pičces$", + "MystŠre d'une porte close$", + "Charme envo—tant de vieilles piŠces$", "La faim au ventre$", - "Plus prčs du ciel? Pas sűr !$", + "Plus prŠs du ciel? Pas s—r !$", "Peur du noir?$", "Vieux tapis et reflets d'or$", "Angoisse !$", - "Sauvé ? Pas certain !$", - "Mal ŕ l'aise, hein !$", + "Sauv‚ ? Pas certain !$", + "Mal … l'aise, hein !$", "Toujours plus loin !$", "Votre chemin de croix !$", - "A la découverte de...$", - "Attention ŕ ce que cache...$", + "A la d‚couverte de...$", + "Attention … ce que cache...$", "Une descente aux Enfers !$", "Si ce n'est pas dans vos cordes :@ ne soyez pas sot!$", - "Avant la mise en pičce !$", + "Avant la mise en piŠce !$", "Gros plan sur :$", - "Vous remarquez particuličrement...$", + "Vous remarquez particuliŠrement...$", "Et encore...$", "C'est fini !$", "Un peu de lecture$", @@ -794,17 +794,17 @@ const char *gameDataFr[] = { "Non ! Pas ce coup-ci$", "Trop tard$", "$", - "Comme un regard profond tout couvert de peaux-pierres, pointant son oeil obscur aux astres de lumičre, il est la gorge reliant le ciel et les enfers . Il faut aller au fond de cette artčre comme un rat au coeur męme de la terre !@Lundi, Mardi, Mercredi, Dimanche du 1e lundi au 1e dimanche, tu installeras \"ce rat\" entre chacun des jours . N'omets rien car ta venue serait ta retenue !@Porte ton fardeau comme un oeuf nouveau et donne lui le jour avec force et amour.$", - "10/1/50: Nous avons résolu le mystčre du manuscrit et localisé la crypte . Est-ce l'idée d'aboutir dans ce qui n'était qu'un \"ręve\" qui me rend si anxieuse ?@Je regrette de m'ętre engagée vis ŕ vis de Léo . Non! je dois continuer ! J'aurais dű mettre Guy au courant... mais, depuis une semaine, je n'ai aucune nouvelle .$", - "Porte ta pričre au lieu saint qui se doit, changes-en l'air, tu auras la matičre !@Du pilier de la haute sagesse, le soleil aux genoux te montrera l'espace par lequel ton âme s'ouvrira un chemin et gagnera son čre . Avance comme un Orphée peu soucieux des ténčbres : le blanc est ta couleur, l'or ta demeure . Eclaire ton chemin jusqu'ŕ la mystérieuse . Offre-lui le cercle de l'homme aux trois facettes . Qu'il regagne le monde et qu'il tourne avec lui dans la richesse premičre.$", - "Les montagnes sont les crocs d'une gueule dantesque ouverte ŕ l'infini de quelqu' orgie céleste, mastiquant des étoiles comme nous broyons du noir .@Tu déposeras l'accord de pierre ŕ tes pieds, le rire du silence sur la gamme d'en haut et dans ta main droite, une toile d'un mčtre . Tu passeras ainsi entre les deux croissants, par delŕ les abîmes du Mur du Silence . La Clé des champs est ŕ ta portée, tu n'as qu'ŕ retrouver la note qui dénote.$", + "Comme un regard profond tout couvert de peaux-pierres, pointant son oeil obscur aux astres de lumiŠre, il est la gorge reliant le ciel et les enfers . Il faut aller au fond de cette artŠre comme un rat au coeur mme de la terre !@Lundi, Mardi, Mercredi, Dimanche du 1e lundi au 1e dimanche, tu installeras \"ce rat\" entre chacun des jours . N'omets rien car ta venue serait ta retenue !@Porte ton fardeau comme un oeuf nouveau et donne lui le jour avec force et amour.$", + "10/1/50: Nous avons r‚solu le mystŠre du manuscrit et localis‚ la crypte . Est-ce l'id‚e d'aboutir dans ce qui n'‚tait qu'un \"rŠve\" qui me rend si anxieuse ?@Je regrette de m'tre engag‚e vis … vis de L‚o . Non! je dois continuer ! J'aurais d— mettre Guy au courant... mais, depuis une semaine, je n'ai aucune nouvelle .$", + "Porte ta priŠre au lieu saint qui se doit, changes-en l'air, tu auras la matiŠre !@Du pilier de la haute sagesse, le soleil aux genoux te montrera l'espace par lequel ton …me s'ouvrira un chemin et gagnera son Šre . Avance comme un Orph‚e peu soucieux des t‚nŠbres : le blanc est ta couleur, l'or ta demeure . Eclaire ton chemin jusqu'… la myst‚rieuse . Offre-lui le cercle de l'homme aux trois facettes . Qu'il regagne le monde et qu'il tourne avec lui dans la richesse premiŠre.$", + "Les montagnes sont les crocs d'une gueule dantesque ouverte … l'infini de quelqu' orgie c‚leste, mastiquant des ‚toiles comme nous broyons du noir .@Tu d‚poseras l'accord de pierre … tes pieds, le rire du silence sur la gamme d'en haut et dans ta main droite, une toile d'un mŠtre . Tu passeras ainsi entre les deux croissants, par del… les abŚmes du Mur du Silence . La Cl‚ des champs est … ta port‚e, tu n'as qu'… retrouver la note qui d‚note.$", " DECEMBRE@ 9 REMISE 518 13 AGIOS 23@ 19 VIREMENT 1203 17 TRESOR 1598@ TOTAL 1721 TOTAL 1721$", - " Le 5/01/51@@ Luc, mon amour@ Guy connaît notre liaison . A la suite d'une dispute, je lui ai tout dit . Je ne pense qu'ŕ toi ! Max me relance mais j'ai définitivement rompu avec lui . Qu'il reste ŕ ses gamelles . Quand pourrons-nous nous voir seuls ? Pour toi je divorcerai... Je t'aime .@ ton Eva$", - " Mortevielle, le 10/2/51@@ Pat,@ Je te rappelle que tu me dois 50000 F que je t'ai prétés pour ton affaire . J'en ai besoin, peux-tu me les rendre assez vite?@ Guy$", - " Mortevielle, le 15/2/51@ Maître,@ Je vous écris au sujet de notre affaire. Je suis décidé ŕ aller jusqu'au bout, certain que mon associé, Pat DEFRANCK, a falsifié un livre de comptes . Malgré$", + " Le 5/01/51@@ Luc, mon amour@ Guy connaŚt notre liaison . A la suite d'une dispute, je lui ai tout dit . Je ne pense qu'… toi ! Max me relance mais j'ai d‚finitivement rompu avec lui . Qu'il reste … ses gamelles . Quand pourrons-nous nous voir seuls ? Pour toi je divorcerai... Je t'aime .@ ton Eva$", + " Mortevielle, le 10/2/51@@ Pat,@ Je te rappelle que tu me dois 50000 F que je t'ai pr‚t‚s pour ton affaire . J'en ai besoin, peux-tu me les rendre assez vite?@ Guy$", + " Mortevielle, le 15/2/51@ MaŚtre,@ Je vous ‚cris au sujet de notre affaire. Je suis d‚cid‚ … aller jusqu'au bout, certain que mon associ‚, Pat DEFRANCK, a falsifi‚ un livre de comptes . Malgr‚$", " Une pipe$", - " Un stylo ŕ plume$", - " Un briquet ŕ essence$", + " Un stylo … plume$", + " Un briquet … essence$", " Une cornue$", " Un blaireau$", " Un pot de peinture$", @@ -814,13 +814,13 @@ const char *gameDataFr[] = { " Un vieux bouquin$", " Un porte-monnaie$", " Un poignard$", - " Un révolver$", + " Un r‚volver$", " Une bible$", " Une bougie$", - " Un coffret ŕ bijoux$", - " Un fer ŕ repasser$", + " Un coffret … bijoux$", + " Un fer … repasser$", " Une photo$", - " Une montre ŕ gousset$", + " Une montre … gousset$", " Une corde$", " Des clefs$", " Un collier de perles$", @@ -830,9 +830,9 @@ const char *gameDataFr[] = { " Une bourse en cuir$", " Une balle de tennis$", " Des munitions$", - " Un rasoir ŕ main$", - " Une brosse ŕ cheveux$", - " Une brosse ŕ linge$", + " Un rasoir … main$", + " Une brosse … cheveux$", + " Une brosse … linge$", " Un jeu de cartes$", " Un chausse pied$", " Un tournevis$", @@ -843,14 +843,14 @@ const char *gameDataFr[] = { " Un pinceau$", " Une corde$", " Un objet en bois$", - " Des somnifčres$", + " Des somnifŠres$", " Une bague en or$", - " Un coffret ŕ bijoux$", - " Un réveil matin$", + " Un coffret … bijoux$", + " Un r‚veil matin$", " Une cotte de mailles$", " Un chandellier$", " Une paire de gants$", - " Une coupe ciselée$", + " Une coupe cisel‚e$", " Un parchemin$", " Un poignard$", " Un dossier$", @@ -868,13 +868,13 @@ const char *gameDataFr[] = { "La mort de Julia$", "Les relations de Julia$", "Un message de Julia$", - "L'héritage de Julia$", + "L'h‚ritage de Julia$", "Derniers actes de Julia$", "Les cadeaux de Julia$", "La chambre de Julia$", "La photo chez Julia$", "Julia et vous...$", - "Les occupations de Léo$", + "Les occupations de L‚o$", "Les occupations de Pat$", "Les occupations de Guy$", "Les occupations de Bob$", @@ -883,7 +883,7 @@ const char *gameDataFr[] = { "Les occupations d'Ida$", "Les occupations de Max$", "Vos occupations$", - "Les relations de Léo$", + "Les relations de L‚o$", "Les relations de Pat$", "Les relations de Guy$", "Les relations de Bob$", @@ -910,169 +910,169 @@ const char *gameDataFr[] = { "$", "FIN DE LA CONVERSATION$", "Les vieux appelaient ainsi la chaine de montagne qui se dresse au pied du manoir !$", - "C'est le massif montagneux que l'on aperçoit devant le manoir$", + "C'est le massif montagneux que l'on aper‡oit devant le manoir$", "Je n'en sais rien !$", "Elle est morte d'une embolie pulmonaire$", - "Ma mére est morte soudainement . Son état semblait pourtant s'ętre amélioré$", + "Ma m‚re est morte soudainement . Son ‚tat semblait pourtant s'tre am‚lior‚$", "Madame DEFRANCK est morte d'un coup de froid$", "Elle est morte d'une embolie pulmonaire$", - "Pardonnez moi mais je préfčre, actuellement garder le silence$", + "Pardonnez moi mais je pr‚fŠre, actuellement garder le silence$", "Ce sont toujours les meilleurs qui partent les premiers$", - "J'aimais beaucoup ma mčre . Je regrette seulement qu'elle soit morte dans le manoir des DEFRANCK$", - "C'est une région qui a un passé chargé et j'ai largement de quoi m'occuper . Et puis j'aime beaucoup les chevaux..$", - "C'est un passionné d'histoire et un joueur invétéré . D'ailleurs, voici un an il a gagné une grosse somme$", - "Il a déjŕ beaucoup a faire avec la gestion et l'entretien du manoir ...$", - "Je suis PDG d'une petite société de parfums . Mais quand je suis ici, je me repose$", - "C'est un homme dynamique qui a réussi dans le parfum$", - "Lui ! C'est un arriviste véreux ! Les parfums ont du endormir son bon sens . D'ailleurs ici il passe ses soirées dans sa chambre$", - "J'ai été trčs préoccupé par la santé de ma mčre, et maintenant je n'ai plus goűt ŕ rien$", - "Il aurait mieux fait de s'occuper un peu plus de moi et un peu moins de sa mčre$", - "Ce sont ses affaires ...$", + "J'aimais beaucoup ma mŠre . Je regrette seulement qu'elle soit morte dans le manoir des DEFRANCK$", + "C'est une r‚gion qui a un pass‚ charg‚ et j'ai largement de quoi m'occuper . Et puis j'aime beaucoup les chevaux..$", + "C'est un passionn‚ d'histoire et un joueur inv‚t‚r‚ . D'ailleurs, voici un an il a gagn‚ une grosse somme$", + "Il a d‚j… beaucoup a faire avec la gestion et l'entretien du manoir...$", + "Je suis PDG d'une petite soci‚t‚ de parfums . Mais quand je suis ici, je me repose$", + "C'est un homme dynamique qui a r‚ussi dans le parfum$", + "Lui ! C'est un arriviste v‚reux ! Les parfums ont du endormir son bon sens . D'ailleurs ici il passe ses soir‚es dans sa chambre$", + "J'ai ‚t‚ trŠs pr‚occup‚ par la sant‚ de ma mŠre, et maintenant je n'ai plus go–t … rien$", + "Il aurait mieux fait de s'occuper un peu plus de moi et un peu moins de sa mŠre$", + "Ce sont ses affaires...$", "Il n'a pas trop de chance en ce moment bien que ses affaires soient satisfaisantes$", - "Je travaille avec Pat mais ça ne va pas trčs fort en ce moment$", - "Ah oui ?! Il a des occupations ? Il ferait bien de s'en occuper sérieusement alors$", - "Lui et Pat sont associés . Je crois que ça ne va pas trop mal$", - "Je m'occupe de moi et c'est déjŕ beaucoup . Et vous ?$", - "Oh ça ! Je lui fais confiance . Elle sait s'occuper$", - "Mais ! Vous n'avez pas encore découvert son occupation principale ...?$", - "Elle fait dans la décoration avec beaucoup degoűt d'ailleurs . Elle est toujours trčs bien habillée$", - "Si les bijoux vous interessent, j'ai quelques affaires interessantes ŕ saisir rapidement$", - "Les bijoux ...$", + "Je travaille avec Pat mais ‡a ne va pas trŠs fort en ce moment$", + "Ah oui ?! Il a des occupations ? Il ferait bien de s'en occuper s‚rieusement alors$", + "Lui et Pat sont associ‚s . Je crois que ‡a ne va pas trop mal$", + "Je m'occupe de moi et c'est d‚j… beaucoup . Et vous ?$", + "Oh ‡a ! Je lui fais confiance . Elle sait s'occuper$", + "Mais ! Vous n'avez pas encore d‚couvert son occupation principale..?$", + "Elle fait dans la d‚coration avec beaucoup dego–t d'ailleurs. Elle est toujours trŠs bien habill‚e$", + "Si les bijoux vous interessent, j'ai quelques affaires interessantes … saisir rapidement$", + "Les bijoux...$", "Je ne sais pas, mais j'aimerais bien qu'il s'occupe un peu moins de mes affaires !$", - "Quand on est une femme d'intérieur on trouve toujours de quoi s'occuper...$", + "Quand on est une femme d'int‚rieur on trouve toujours de quoi s'occuper...$", "Elle pourrait rester sans rien faire, mais non ! Elle coud, elle lit ...$", - "Elle n'a sűrement pas des occupations trčs épanouissantes ...$", + "Elle n'a s–rement pas des occupations trŠs ‚panouissantes ...$", "Une femme comme il n'y en a plus : Elle s'interesse a tout !$", - "Entre la cuisine et le ménage, je n'ai pas beaucoup de temps ŕ vous accorder$", + "Entre la cuisine et le m‚nage, je n'ai pas beaucoup de temps … vous accorder$", "Je ne sais pas comment il s'y prend pour tout faire . C'est merveilleux !$", - "Il en ferait plus si il s'occupait moins des ragôts et de la bouteille$", - "Je suis trčs indépendant . Tant qu'on ne s'occupe pas de mes affaires : Pas de problčme$", - "C'est un égoďste . Je me demande si il aime autre chose que ses chevaux et ses grimoires$", - "Je crois qu'il s'entend bien avec tout le monde, mis ŕ part, peut ętre, avec Guy$", - "C'est un homme de caractčre . Il faut savoir le prendre ..$", - "Les affaires sont les affaires . Quant ŕ la famille, je la laisse pour ce qu'elle est ...$", - "Relations ? Relations amicales ? Relations financičres sans doute$", - "Moi je n'ai rien ŕ lui reprocher$", - "C'est un homme d'affaire débrouillard . Il nage parfois ŕ contre-courant mais ... il s'en sortira toujours$", - "Ils m'ennuient tous .. Non ! Ce n'est męme pas ça .. Quoique .. certains ..$", - "A l'inverse de sa mčre, c'est une personne trčs renfermée ! Alors question relations ..$", - "Il doit sans doute faire beaucoup d'effort pour rester agréable malgré tous ses ennuis$", - "Ses relations amoureuses : C'est terminé . Ses relations avec moi : Pas vraiment commencées . Quant aux autres : Je ne suis pas les \"autres\"$", + "Il en ferait plus si il s'occupait moins des rag“ts et de la bouteille$", + "Je suis trŠs ind‚pendant . Tant qu'on ne s'occupe pas de mes affaires : Pas de problŠme$", + "C'est un ‚go‹ste . Je me demande si il aime autre chose que ses chevaux et ses grimoires$", + "Je crois qu'il s'entend bien avec tout le monde, mis … part, peut tre, avec Guy$", + "C'est un homme de caractŠre . Il faut savoir le prendre ..$", + "Les affaires sont les affaires . Quant … la famille, je la laisse pour ce qu'elle est ...$", + "Relations ? Relations amicales ? Relations financiŠres sans doute$", + "Moi je n'ai rien … lui reprocher$", + "C'est un homme d'affaire d‚brouillard . Il nage parfois … contre-courant mais ... il s'en sortira toujours$", + "Ils m'ennuient tous .. Non ! Ce n'est mme pas ‡a .. Quoique .. certains ..$", + "A l'inverse de sa mŠre, c'est une personne trŠs renferm‚e ! Alors question relations ..$", + "Il doit sans doute faire beaucoup d'effort pour rester agr‚able malgr‚ tous ses ennuis$", + "Ses relations amoureuses : C'est termin‚ . Ses relations avec moi : Pas vraiment commenc‚es . Quant aux autres : Je ne suis pas les \"autres\"$", "J'aime bien tout le monde, tant qu'on ne m'escroque pas$", - "Il ne suffit pas d'avoir un peu d'argent et d'ętre beau parleur pour plaire ŕ tout le monde$", - "Sans histoire .. C'est quelqu'un d'agréable et généreux . De plus, il ne manque pas d'humour$", - "Actuellement je m'entends plutôt bien avec tout le monde . Mais, ici, je ne vais pas m'étendre sur le sujet$", - "Beau plumage, mais ça ne vole pas haut ... Parlez en ŕ son mari$", + "Il ne suffit pas d'avoir un peu d'argent et d'tre beau parleur pour plaire … tout le monde$", + "Sans histoire .. C'est quelqu'un d'agr‚able et g‚n‚reux . De plus, il ne manque pas d'humour$", + "Actuellement je m'entends plut“t bien avec tout le monde . Mais, ici, je ne vais pas m'‚tendre sur le sujet$", + "Beau plumage, mais ‡a ne vole pas haut ... Parlez en … son mari$", "C'est pour un rendez-vous ?$", - "Elle est trčs vivante ! Elle ne s'embarrasse pas de préjugés stupides$", - "Dans mon métier, on côtoit surtout des belles femmes et des truands$", - "La seule valeur sűre chez lui, c'est ses bijoux .. Et sa femme, mais ça il ne s'en rend pas compte$", - "C'est quelqu'un d'interessant . De pas toujours facile ŕ comprendre, mais qui mérite le détour$", - "Je ne déteste personne, mais j'aime les choses et les gens quand ils sont ŕ leur place$", - "C'est entre nous . Mais voyez : quand je parle avec elle, je me sens vite ŕ l'étroit !$", - "Pour ne pas s'entendre avec elle, faut y mettre de la mauvaise volonté$", - "Vous savez dans mon métier on entend tout mais on ne retient rien, et le service est bien fait$", + "Elle est trŠs vivante ! Elle ne s'embarrasse pas de pr‚jug‚s stupides$", + "Dans mon m‚tier, on c“toit surtout des belles femmes et des truands$", + "La seule valeur s–re chez lui, c'est ses bijoux .. Et sa femme, mais ‡a il ne s'en rend pas compte$", + "C'est quelqu'un d'interessant . De pas toujours facile … comprendre, mais qui m‚rite le d‚tour$", + "Je ne d‚teste personne, mais j'aime les choses et les gens quand ils sont … leur place$", + "C'est entre nous . Mais voyez : quand je parle avec elle, je me sens vite … l'‚troit !$", + "Pour ne pas s'entendre avec elle, faut y mettre de la mauvaise volont‚$", + "Vous savez dans mon m‚tier on entend tout mais on ne retient rien, et le service est bien fait$", "C'est un hypocrite, un larbin ! Personnellement je ne lui fais pas confiance$", - "Je ne connait pas le fond de sa pensée mais c'est quelqu'un de toujours trčs correct et impeccable$", - "C'était une personne qui a vécu au manoir, il y a un an .. peut ętre plus$", - "C'était plus qu'une amie pour ma mčre . En ces moments, j'aurais aimé qu'elle soit ŕ mes cotés$", - "Murielle a été la dame de compagnie de Julia$", + "Je ne connait pas le fond de sa pens‚e mais c'est quelqu'un de toujours trŠs correct et impeccable$", + "C'‚tait une personne qui a v‚cu au manoir, il y a un an .. peut tre plus$", + "C'‚tait plus qu'une amie pour ma mŠre . En ces moments, j'aurais aim‚ qu'elle soit … mes cot‚s$", + "Murielle a ‚t‚ la dame de compagnie de Julia$", "Elle aussi, faisait des recherches ...$", - "C'était une femme trčs cultivée . Son brusque départ, il y a un an, m'a surpris et beaucoup chagriné$", - "Elle partageait avec Léo sa passion de l'histoire et de la région$", + "C'‚tait une femme trŠs cultiv‚e . Son brusque d‚part, il y a un an, m'a surpris et beaucoup chagrin‚$", + "Elle partageait avec L‚o sa passion de l'histoire et de la r‚gion$", "Je crois que tout le monde l'aimait bien$", - "Elle s'entendait bien avec tout le monde . Elle aimait beaucoup son fils . Quant aux relations belle-mčre, belle-fille ..$", - "A part Léo, elle avait de trčs bon rapport avec Max ...$", - "Bien que vos relations furent peu soutenues, Jérôme, elle vous portait toujours dans son coeur ...$", + "Elle s'entendait bien avec tout le monde . Elle aimait beaucoup son fils . Quant aux relations belle-mŠre, belle-fille ..$", + "A part L‚o, elle avait de trŠs bon rapport avec Max ...$", + "Bien que vos relations furent peu soutenues, J‚r“me, elle vous portait toujours dans son coeur ...$", "A part sa famille, pas grand monde$", - "Ah oui ! Je crois qu'elle a beaucoup regretté le départ de cette amie .. euh ! Marielle .. ou Mireille ...$", + "Ah oui ! Je crois qu'elle a beaucoup regrett‚ le d‚part de cette amie .. euh ! Marielle .. ou Mireille ...$", "Non rien !$", "Non ... Pas que le sache$", - "J'ai connu Julia en achetant le manoir . C'était son seul bien . Mais toute ma fortune était la sienne ...$", - "Si ce n'est quelques objets personnels, je crois qu'elle n'avait plus rien ŕ elle$", - "Je crois que toute sa fortune venait de Léo . Alors, Pfuuut !$", - "A part la lettre pour vous que j'ai posté, rien de bien important !$", - "J'ai été trčs heureuse qu'elle m'offre sa bible reliée$", - "Ca a été rapide et elle n'a pas eu le temps de prendre des dispositions particuličres$", - "Son dernier présent m'a surpris$", + "J'ai connu Julia en achetant le manoir . C'‚tait son seul bien . Mais toute ma fortune ‚tait la sienne ...$", + "Si ce n'est quelques objets personnels, je crois qu'elle n'avait plus rien … elle$", + "Je crois que toute sa fortune venait de L‚o . Alors, Pfuuut !$", + "A part la lettre pour vous que j'ai post‚, rien de bien important !$", + "J'ai ‚t‚ trŠs heureuse qu'elle m'offre sa bible reli‚e$", + "Ca a ‚t‚ rapide et elle n'a pas eu le temps de prendre des dispositions particuliŠres$", + "Son dernier pr‚sent m'a surpris$", "Quel cadeau ?$", "Un chandellier ...$", - "Oui, j'ai eu un cadeau . Ma femme a męme eu une bible$", + "Oui, j'ai eu un cadeau . Ma femme a mme eu une bible$", "Et bien oui ! Comme tout le monde, je crois$", "Un poignard$", - "Je n'ai jamais été fouiller dans le grenier !$", + "Je n'ai jamais ‚t‚ fouiller dans le grenier !$", "Vous avez un don de double-vue ou un passe-partout$", "Le portrait d'une jeune fille : C'est Murielle ...$", "Vous savez, je la connaissais assez peu$", - "Elle était trčs charmante, mais c'était surtout la dame de compagnie de Julia$", - "C'est la seule femme vraiment interessante que j'ai rencontré$", - "Elle avait de grandes connaissances historiques, et la consulter était trčs enrichissant$", - "Je me suis toujours demandé ce que certains pouvaient lui trouver !$", - "Si la chambre est fermée, demandez ŕ Léo$", - "J'ai fermé sa chambre aprčs sa mort et j'aimerais qu'il en soit ainsi encore un certain temps$", + "Elle ‚tait trŠs charmante, mais c'‚tait surtout la dame de compagnie de Julia$", + "C'est la seule femme vraiment interessante que j'ai rencontr‚$", + "Elle avait de grandes connaissances historiques, et la consulter ‚tait trŠs enrichissant$", + "Je me suis toujours demand‚ ce que certains pouvaient lui trouver !$", + "Si la chambre est ferm‚e, demandez … L‚o$", + "J'ai ferm‚ sa chambre aprŠs sa mort et j'aimerais qu'il en soit ainsi encore un certain temps$", "Vous savez ce que c'est : Des relations familiales$", - "Durant toutes ces années, je ne l'ai jamais servie ŕ contre-coeur$", + "Durant toutes ces ann‚es, je ne l'ai jamais servie … contre-coeur$", "Je l'aimais autant qu'elle m'aimais, je crois$", - "De quel droit avez-vous pénétré dans la chambre de ma femme ?!!$", + "De quel droit avez-vous p‚n‚tr‚ dans la chambre de ma femme ?!!$", "C'est sans doute la photo de Murielle avec le filleul de Julia$", "Je ne me rappelle pas$", - "C'est Murielle . C'est moi qui l'ai prise. et d'ailleurs elle est tirée ŕ l'envers$", - "Vous ętes bien curieux !... C'est sans valeur$", - "Grimoires, parchemins et manuscrits : C'est le domaine de Léo$", + "C'est Murielle . C'est moi qui l'ai prise. et d'ailleurs elle est tir‚e … l'envers$", + "Vous tes bien curieux !... C'est sans valeur$", + "Grimoires, parchemins et manuscrits : C'est le domaine de L‚o$", "Dommage que la devise soit manquante ...$", - "C'est trčs beau ... Et trčs vieux ...$", - "Tiens ! C'est un endroit que je n'ai jamais visité$", - "D'aprés Léo, il semblerait que les Lunes soient plus récentes$", - "Męme par ce temps, vous avez déniché un soleil ...$", - "Profond et inquiétant : Le progrčs a du bon$", - "Ca reste pour moi le plus grand des mystčres$", + "C'est trŠs beau ... Et trŠs vieux ...$", + "Tiens ! C'est un endroit que je n'ai jamais visit‚$", + "D'apr‚s L‚o, il semblerait que les Lunes soient plus r‚centes$", + "Mme par ce temps, vous avez d‚nich‚ un soleil ...$", + "Profond et inqui‚tant : Le progrŠs a du bon$", + "Ca reste pour moi le plus grand des mystŠres$", "Les derniers temps elle parlait d'un voyage . Et puis ...$", - "Il y a un peu plus d'un an, un soir, elle a décidé de partir ...$", - "De toutes façons elle n'était pas faite pour vivre ici$", + "Il y a un peu plus d'un an, un soir, elle a d‚cid‚ de partir ...$", + "De toutes fa‡ons elle n'‚tait pas faite pour vivre ici$", "Quoi ?! Quel corps ? Quel crypte ?$", - "Si il y en a, je ne les ai jamais trouvé ...$", - "Bien sűr ! ... Et des fantômes aussi ...$", - "C'est la plus vielle de la région : Elle date du XI eme sičcle$", - "Elle fut légčrement restaurée aprčs la révolution$", + "Si il y en a, je ne les ai jamais trouv‚ ...$", + "Bien s–r ! ... Et des fant“mes aussi ...$", + "C'est la plus vielle de la r‚gion : Elle date du XI eme siŠcle$", + "Elle fut l‚gŠrement restaur‚e aprŠs la r‚volution$", "Julia aimait beaucoup la peinture$", - "Ils ont différents styles, mais n'ont pas tous une trčs grande valeur$", - "Que faites-vous lŕ ?$", - "Je suis sűr que vous cherchez quelque chose ici$", - "Je vous écoute$", - "Que désirez-vous ?$", + "Ils ont diff‚rents styles, mais n'ont pas tous une trŠs grande valeur$", + "Que faites-vous l… ?$", + "Je suis s–r que vous cherchez quelque chose ici$", + "Je vous ‚coute$", + "Que d‚sirez-vous ?$", "Oui ?$", - "Je suis ŕ vous ...$", + "Je suis … vous ...$", "C'est pourquoi ?$", "Allez-y$", - "C'est ŕ quel sujet ?$", - "Max : ŕ votre service, monsieur$", - "De toutes façons vous n'avez rien ŕ faire ici ! Sortez !!$", - "Vous ętes trop curieux !$", - "Jérôme ! Il y a longtemps ... Quelle tristesse, Julia est morte . Sa famille est ici : Guy, son fils . Eva, sa brue . Léo, son mari bien sűr . Son beau fils, Pat . Des cousins : Bob, Ida, Luc . La tempčte redouble, il vous faut rester . Les repas sont ŕ 12h et 19h et il y a un recueillement ŕ la chapelle tous les jours ŕ 10h$", - "En vous voyant j'ai compris que vous decouvririez la vérité ... Car je savais pourquoi vous veniez : J'avais retrouvé le brouillon de la lettre de Julia . Mais je suis trčs joueur, alors ... Elle n'avait pas voulu que votre tche soit trop facile, pour me protéger, sans doute, mais elle n'a pu mourir avec cette incertitude sur la conscience . Avez vous découvert que le mur du silence est le nom que les maçons ont donné au mur qui porte ce blason, lors de la construction du manoir ? .. Et ces cadeaux que Julia a laissé avant de mourir étaient autant de faux indices qui ne servaient qu'ŕ faire ressortir l'importance des parchemins ... Effectivement, il y a plus d'un an, je travailais avec Murielle au décryptage de ces manuscrits que je venais de trouver . Ma femme a fait la relation entre notre travail et la disparition de Murielle mais elle n'a jamais eu de preuves . Si ce n'est cette bague qu'elle a retrouvé un jour dans mes affaires . Une nuit, nous nous sommes aventurés dans le passage secret que nous avions découvert . Murielle est morte par accident dans la pičce de la vierge . J'ai récupéré la bague rapidement, trouvé le trésor et me suis enfuis . Je ne pensais pas qu'elle vivait encore, et je n'ai rien dit car j'avais besoin d'argent . J'ai fait passer cette somme sur le compte des courses de chevaux ...Partez maintenant, puisque vous n'ętes pas de la police . Laissez moi seul !$", - "Février 1951 ... Profession : detective privé . Le froid figeait Paris et mes affaires lorsque ...$", - "Une lettre, un appel, des souvenirs d'une enfance encore proche . Que de jeux dans les pičces délabrées du manoir de Mortevielle . Julia, une vieille femme a présent .$", + "C'est … quel sujet ?$", + "Max : … votre service, monsieur$", + "De toutes fa‡ons vous n'avez rien … faire ici ! Sortez !!$", + "Vous tes trop curieux !$", + "J‚r“me ! Il y a longtemps ... Quelle tristesse, Julia est morte . Sa famille est ici : Guy, son fils . Eva, sa brue . L‚o, son mari bien s–r . Son beau fils, Pat . Des cousins : Bob, Ida, Luc . La tempŠte redouble, il vous faut rester . Les repas sont … 12h et 19h et il y a un recueillement … la chapelle tous les jours … 10h$", + "En vous voyant j'ai compris que vous decouvririez la v‚rit‚ ... Car je savais pourquoi vous veniez : J'avais retrouv‚ le brouillon de la lettre de Julia . Mais je suis trŠs joueur, alors ... Elle n'avait pas voulu que votre tche soit trop facile, pour me prot‚ger, sans doute, mais elle n'a pu mourir avec cette incertitude sur la conscience . Avez vous d‚couvert que le mur du silence est le nom que les ma‡ons ont donn‚ au mur qui porte ce blason, lors de la construction du manoir ? .. Et ces cadeaux que Julia a laiss‚ avant de mourir ‚taient autant de faux indices qui ne servaient qu'… faire ressortir l'importance des parchemins ... Effectivement, il y a plus d'un an, je travailais avec Murielle au d‚cryptage de ces manuscrits que je venais de trouver . Ma femme a fait la relation entre notre travail et la disparition de Murielle mais elle n'a jamais eu de preuves . Si ce n'est cette bague qu'elle a retrouv‚ un jour dans mes affaires . Une nuit, nous nous sommes aventur‚s dans le passage secret que nous avions d‚couvert . Murielle est morte par accident dans la piŠce de la vierge . J'ai r‚cup‚r‚ la bague rapidement, trouv‚ le tr‚sor et me suis enfuis . Je ne pensais pas qu'elle vivait encore, et je n'ai rien dit car j'avais besoin d'argent . J'ai fait passer cette somme sur le compte des courses de chevaux ...Partez maintenant, puisque vous n'tes pas de la police . Laissez moi seul !$", + "F‚vrier 1951 ... Profession : detective priv‚ . Le froid figeait Paris et mes affaires lorsque ...$", + "Une lettre, un appel, des souvenirs d'une enfance encore proche . Que de jeux dans les piŠces d‚labr‚es du manoir de Mortevielle . Julia, une vieille femme a pr‚sent .$", " au bureau$", - " ŕ la cuisine$", - " ŕ la cave$", + " … la cuisine$", + " … la cave$", " dans le couloir$", " dehors$", - " la salle ŕ manger$", + " la salle … manger$", " dans le manoir$", " devant le manoir$", - " ŕ la chapelle$", + " … la chapelle$", " devant le puits$", " au nord$", - " derričre le manoir$", + " derriŠre le manoir$", " au sud$", - " ŕ l'est$", - " ŕ l'ouest$", + " … l'est$", + " … l'ouest$", " vers le manoir$", " plus loin$", " dans l'eau$", " hors du puits$", " dans le puits$", - " choix sur écran$", + " choix sur ‚cran$", " Dans la serie MYSTERE...$", " LE MANOIR DE MORTEVIELLE$", "$", @@ -1095,9 +1095,9 @@ const char *gameDataFr[] = { " A VOUS DE JOUER$", " attacher$", " attendre$", - " défoncer$", + " d‚foncer$", " dormir$", - " écouter$", + " ‚couter$", " entrer$", " fermer$", " fouiller$", @@ -1119,7 +1119,7 @@ const char *gameDataFr[] = { " lire$", " poser$", " regarder$", - " Léo$", + " L‚o$", " Pat$", " Guy$", " Eva$", @@ -1128,40 +1128,40 @@ const char *gameDataFr[] = { " Ida$", " Max$", "Comment Julia est-elle morte ?$", - "Elle s'est suicidée$", - "Elle est morte assassinée$", + "Elle s'est suicid‚e$", + "Elle est morte assassin‚e$", "Elle est morte accidentellement$", "Elle est morte naturellement$", - "D'oů provenait l'argent qui a permis la restauration du manoir ?$", + "D'o— provenait l'argent qui a permis la restauration du manoir ?$", "chantage$", "travail$", - "héritage$", + "h‚ritage$", "courses$", "rentes$", "hold-up$", - "découverte$", - "Quel est le hobby de Léo ?$", + "d‚couverte$", + "Quel est le hobby de L‚o ?$", "recherches historiques$", "politique$", "peinture$", "drogue$", "sciences occultes$", "direction d'une secte$", - "Julia a laissé une série d'indices . Ceux-ci sont représentés en un seul lieu . Lequel ?$", + "Julia a laiss‚ une s‚rie d'indices . Ceux-ci sont repr‚sent‚s en un seul lieu . Lequel ?$", "Chapelle$", - "Extérieur$", + "Ext‚rieur$", "Cave$", "Grenier$", "Cuisine$", - "Salle ŕ manger$", + "Salle … manger$", "Chambre Julia$", - "Chambre Léo$", + "Chambre L‚o$", "Chambre Pat$", "Chambre Bob$", "Chambre Max$", "Chambre Luc/Ida$", "Chambre Guy/Eva$", - "L'indice principal qui vous a permis d'arriver ŕ la porte du souterrain est :$", + "L'indice principal qui vous a permis d'arriver … la porte du souterrain est :$", "Un poignard$", "Une bague$", "Un livre$", @@ -1175,30 +1175,30 @@ const char *gameDataFr[] = { "Trois$", "Quatre$", "Cinq$", - "Combien de personnes sont mélées ŕ cette histoire - Julia y comprise, vous excepté - ?$", + "Combien de personnes sont m‚l‚es … cette histoire - Julia y comprise, vous except‚ - ?$", "Neuf$", "Dix$", "Onze$", - "Quel était le prénom de la personne inconnue ?$", + "Quel ‚tait le pr‚nom de la personne inconnue ?$", "Mireille$", - "Françoise$", + "Fran‡oise$", "Maguy$", "Emilie$", "Murielle$", "Sophie$", - "De qui Murielle était-elle la maîtresse ?$", + "De qui Murielle ‚tait-elle la maŚtresse ?$", "Bob$", "Luc$", "Guy$", - "Léo$", + "L‚o$", "Max$", "Murielle partageait une occupation avec une autre personne . Qui ?$", - "[1][ |Seul le hazard vous a permis d'arriver ici . Vous préférez|retourner enquéter afin de mieux comprendre ...][ok]$", - "[1][ |Insérez la disquette 1 dans le lecteur A][ok]$", + "[1][ |Seul le hazard vous a permis d'arriver ici . Vous pr‚f‚rez|retourner enqu‚ter afin de mieux comprendre ...][ok]$", + "[1][ |Ins‚rez la disquette 1 dans le lecteur A][ok]$", "[1][ |! ERREUR DISQUETTE !|On arrete tout][ok]$", - "[1][ |Vous devriez avoir remarqué|00% des indices][ok]$", - "[1][ |Insérez la disquette 2 dans le lecteur A][ok]$", - "[1][ |Avant d'aller plus loin, vous faites|un point sur l'état de vos connaissances][ok]$", + "[1][ |Vous devriez avoir remarqu‚|00% des indices][ok]$", + "[1][ |Ins‚rez la disquette 2 dans le lecteur A][ok]$", + "[1][ |Avant d'aller plus loin, vous faites|un point sur l'‚tat de vos connaissances][ok]$", " MASTER .$", " rorL$", }; @@ -1280,7 +1280,7 @@ const char *gameDataDe[] = { "TBT - Linen, personal belongings...$", "TBT - Not just anywhere!$", "TBT - It's not time!$", - "TBT - One doesn't speak with ones mouth full!$", + "TBT - One doesn't speak with ones mouth full! So once the meal is over...$", "TBT - Someone comes in, messes about then goes out again$", "TBT - Someone's approaching your hiding-place$", "TBT - Someone surprises you!$", @@ -1297,7 +1297,7 @@ const char *gameDataDe[] = { "TBT - The same matter, from another angle!$", "TBT - The reflection is tarnished, but the frame is gold!$", "TBT - Bric-a-brac$", - "TBT - Face to face with failure!$", + "TBT - Facing failure!$", "TBT - Smells like something you'd rather not see!$", "TBT - Cleaning products$", "TBT - Got an itch?$", @@ -1462,7 +1462,7 @@ const char *gameDataDe[] = { "TBT - Julia's bedroom$", "TBT - The photo at Julia's home$", "TBT - Julia and yourself...$", - "TBT - Léo's occupations$", + "TBT - L‚o's occupations$", "TBT - Pat's occupations$", "TBT - Guy's occupations$", "TBT - Bob's occupations$", @@ -1471,7 +1471,7 @@ const char *gameDataDe[] = { "TBT - Ida's occupations$", "TBT - Max's occupations$", "TBT - Your occupations$", - "TBT - Léo's relationships$", + "TBT - L‚o's relationships$", "TBT - Pat's relationships$", "TBT - Guy's relationships$", "TBT - Bob's relationships$", @@ -1498,149 +1498,149 @@ const char *gameDataDe[] = { "TBT - $", "TBT - END OF THE CONVERSATION$", "TBT - Les vieux appelaient ainsi la chaine de montagne qui se dresse au pied du manoir !$", - "TBT - C'est le massif montagneux que l'on aperçoit devant le manoir$", + "TBT - C'est le massif montagneux que l'on aper‡oit devant le manoir$", "TBT - Je n'en sais rien !$", "TBT - Elle est morte d'une embolie pulmonaire$", - "TBT - Ma mére est morte soudainement . Son état semblait pourtant s'ętre amélioré$", + "TBT - Ma m‚re est morte soudainement . Son ‚tat semblait pourtant s'tre am‚lior‚$", "TBT - Madame DEFRANCK est morte d'un coup de froid$", "TBT - Elle est morte d'une embolie pulmonaire$", - "TBT - Pardonnez moi mais je préfčre, actuellement garder le silence$", + "TBT - Pardonnez moi mais je pr‚fŠre, actuellement garder le silence$", "TBT - Ce sont toujours les meilleurs qui partent les premiers$", - "TBT - J'aimais beaucoup ma mčre . Je regrette seulement qu'elle soit morte dans le manoir des DEFRANCK$", - "TBT - C'est une région qui a un passé chargé et j'ai largement de quoi m'occuper . Et puis j'aime beaucoup les chevaux..$", - "TBT - C'est un passionné d'histoire et un joueur invétéré . D'ailleurs, voici un an il a gagné une grosse somme$", - "TBT - Il a déjŕ beaucoup a faire avec la gestion et l'entretien du manoir ...$", - "TBT - Je suis PDG d'une petite société de parfums . Mais quand je suis ici, je me repose$", - "TBT - C'est un homme dynamique qui a réussi dans le parfum$", - "TBT - Lui ! C'est un arriviste véreux ! Les parfums ont du endormir son bon sens . D'ailleurs ici il passe ses soirées dans sa chambre$", - "TBT - J'ai été trčs préoccupé par la santé de ma mčre, et maintenant je n'ai plus goűt ŕ rien$", - "TBT - Il aurait mieux fait de s'occuper un peu plus de moi et un peu moins de sa mčre$", + "TBT - J'aimais beaucoup ma mŠre . Je regrette seulement qu'elle soit morte dans le manoir des DEFRANCK$", + "TBT - C'est une r‚gion qui a un pass‚ charg‚ et j'ai largement de quoi m'occuper . Et puis j'aime beaucoup les chevaux..$", + "TBT - C'est un passionn‚ d'histoire et un joueur inv‚t‚r‚ . D'ailleurs, voici un an il a gagn‚ une grosse somme$", + "TBT - Il a d‚j… beaucoup a faire avec la gestion et l'entretien du manoir ...$", + "TBT - Je suis PDG d'une petite soci‚t‚ de parfums . Mais quand je suis ici, je me repose$", + "TBT - C'est un homme dynamique qui a r‚ussi dans le parfum$", + "TBT - Lui ! C'est un arriviste v‚reux ! Les parfums ont du endormir son bon sens . D'ailleurs ici il passe ses soir‚es dans sa chambre$", + "TBT - J'ai ‚t‚ trŠs pr‚occup‚ par la sant‚ de ma mŠre, et maintenant je n'ai plus go–t … rien$", + "TBT - Il aurait mieux fait de s'occuper un peu plus de moi et un peu moins de sa mŠre$", "TBT - Ce sont ses affaires ...$", "TBT - Il n'a pas trop de chance en ce moment bien que ses affaires soient satisfaisantes$", - "TBT - Je travaille avec Pat mais ça ne va pas trčs fort en ce moment$", - "TBT - Ah oui ?! Il a des occupations ? Il ferait bien de s'en occuper sérieusement alors$", - "TBT - Lui et Pat sont associés . Je crois que ça ne va pas trop mal$", - "TBT - Je m'occupe de moi et c'est déjŕ beaucoup . Et vous ?$", - "TBT - Oh ça ! Je lui fais confiance . Elle sait s'occuper$", - "TBT - Mais ! Vous n'avez pas encore découvert son occupation principale ..?$", - "TBT - Elle fait dans la décoration avec beaucoup degoűt d'ailleurs . Elle est toujours trčs bien habillée$", - "TBT - Si les bijoux vous interessent, j'ai quelques affaires interessantes ŕ saisir rapidement$", + "TBT - Je travaille avec Pat mais ‡a ne va pas trŠs fort en ce moment$", + "TBT - Ah oui ?! Il a des occupations ? Il ferait bien de s'en occuper s‚rieusement alors$", + "TBT - Lui et Pat sont associ‚s . Je crois que ‡a ne va pas trop mal$", + "TBT - Je m'occupe de moi et c'est d‚j… beaucoup . Et vous ?$", + "TBT - Oh ‡a ! Je lui fais confiance . Elle sait s'occuper$", + "TBT - Mais ! Vous n'avez pas encore d‚couvert son occupation principale ..?$", + "TBT - Elle fait dans la d‚coration avec beaucoup dego–t d'ailleurs . Elle est toujours trŠs bien habill‚e$", + "TBT - Si les bijoux vous interessent, j'ai quelques affaires interessantes … saisir rapidement$", "TBT - Les bijoux ...$", "TBT - Je ne sais pas, mais j'aimerais bien qu'il s'occupe un peu moins de mes affaires !$", - "TBT - Quand on est une femme d'intérieur on trouve toujours de quoi s'occuper...$", + "TBT - Quand on est une femme d'int‚rieur on trouve toujours de quoi s'occuper...$", "TBT - Elle pourrait rester sans rien faire, mais non ! Elle coud, elle lit ...$", - "TBT - Elle n'a sűrement pas des occupations trčs épanouissantes ...$", + "TBT - Elle n'a s–rement pas des occupations trŠs ‚panouissantes ...$", "TBT - Une femme comme il n'y en a plus : Elle s'interesse a tout !$", - "TBT - Entre la cuisine et le ménage, je n'ai pas beaucoup de temps ŕ vous accorder$", + "TBT - Entre la cuisine et le m‚nage, je n'ai pas beaucoup de temps … vous accorder$", "TBT - Je ne sais pas comment il s'y prend pour tout faire . C'est merveilleux !$", - "TBT - Il en ferait plus si il s'occupait moins des ragôts et de la bouteille$", - "TBT - Je suis trčs indépendant . Tant qu'on ne s'occupe pas de mes affaires : Pas de problčme$", - "TBT - C'est un égoďste . Je me demande si il aime autre chose que ses chevaux et ses grimoires$", - "TBT - Je crois qu'il s'entend bien avec tout le monde, mis ŕ part, peut ętre, avec Guy$", - "TBT - C'est un homme de caractčre . Il faut savoir le prendre ..$", - "TBT - Les affaires sont les affaires . Quant ŕ la famille, je la laisse pour ce qu'elle est ...$", - "TBT - Relations ? Relations amicales ? Relations financičres sans doute$", - "TBT - Moi je n'ai rien ŕ lui reprocher$", - "TBT - C'est un homme d'affaire débrouillard . Il nage parfois ŕ contre-courant mais ... il s'en sortira toujours$", - "TBT - Ils m'ennuient tous .. Non ! Ce n'est męme pas ça .. Quoique .. certains ..$", - "TBT - A l'inverse de sa mčre, c'est une personne trčs renfermée ! Alors question relations ..$", - "TBT - Il doit sans doute faire beaucoup d'effort pour rester agréable malgré tous ses ennuis$", - "TBT - Ses relations amoureuses : C'est terminé . Ses relations avec moi : Pas vraiment commencées . Quant aux autres : Je ne suis pas les \"autres\"$", + "TBT - Il en ferait plus si il s'occupait moins des rag“ts et de la bouteille$", + "TBT - Je suis trŠs ind‚pendant . Tant qu'on ne s'occupe pas de mes affaires : Pas de problŠme$", + "TBT - C'est un ‚go‹ste . Je me demande si il aime autre chose que ses chevaux et ses grimoires$", + "TBT - Je crois qu'il s'entend bien avec tout le monde, mis … part, peut tre, avec Guy$", + "TBT - C'est un homme de caractŠre . Il faut savoir le prendre ..$", + "TBT - Les affaires sont les affaires . Quant … la famille, je la laisse pour ce qu'elle est ...$", + "TBT - Relations ? Relations amicales ? Relations financiŠres sans doute$", + "TBT - Moi je n'ai rien … lui reprocher$", + "TBT - C'est un homme d'affaire d‚brouillard . Il nage parfois … contre-courant mais ... il s'en sortira toujours$", + "TBT - Ils m'ennuient tous .. Non ! Ce n'est mme pas ‡a .. Quoique .. certains ..$", + "TBT - A l'inverse de sa mŠre, c'est une personne trŠs renferm‚e ! Alors question relations ..$", + "TBT - Il doit sans doute faire beaucoup d'effort pour rester agr‚able malgr‚ tous ses ennuis$", + "TBT - Ses relations amoureuses : C'est termin‚ . Ses relations avec moi : Pas vraiment commenc‚es . Quant aux autres : Je ne suis pas les \"autres\"$", "TBT - J'aime bien tout le monde, tant qu'on ne m'escroque pas$", - "TBT - Il ne suffit pas d'avoir un peu d'argent et d'ętre beau parleur pour plaire ŕ tout le monde$", - "TBT - Sans histoire .. C'est quelqu'un d'agréable et généreux . De plus, il ne manque pas d'humour$", - "TBT - Actuellement je m'entends plutôt bien avec tout le monde . Mais, ici, je ne vais pas m'étendre sur le sujet$", - "TBT - Beau plumage, mais ça ne vole pas haut ... Parlez en ŕ son mari$", + "TBT - Il ne suffit pas d'avoir un peu d'argent et d'tre beau parleur pour plaire … tout le monde$", + "TBT - Sans histoire .. C'est quelqu'un d'agr‚able et g‚n‚reux . De plus, il ne manque pas d'humour$", + "TBT - Actuellement je m'entends plut“t bien avec tout le monde . Mais, ici, je ne vais pas m'‚tendre sur le sujet$", + "TBT - Beau plumage, mais ‡a ne vole pas haut ... Parlez en … son mari$", "TBT - C'est pour un rendez-vous ?$", - "TBT - Elle est trčs vivante ! Elle ne s'embarrasse pas de préjugés stupides$", - "TBT - Dans mon métier, on côtoit surtout des belles femmes et des truands$", - "TBT - La seule valeur sűre chez lui, c'est ses bijoux .. Et sa femme, mais ça il ne s'en rend pas compte$", - "TBT - C'est quelqu'un d'interessant . De pas toujours facile ŕ comprendre, mais qui mérite le détour$", - "TBT - Je ne déteste personne, mais j'aime les choses et les gens quand ils sont ŕ leur place$", - "TBT - C'est entre nous . Mais voyez : quand je parle avec elle, je me sens vite ŕ l'étroit !$", - "TBT - Pour ne pas s'entendre avec elle, faut y mettre de la mauvaise volonté$", - "TBT - Vous savez dans mon métier on entend tout mais on ne retient rien, et le service est bien fait$", + "TBT - Elle est trŠs vivante ! Elle ne s'embarrasse pas de pr‚jug‚s stupides$", + "TBT - Dans mon m‚tier, on c“toit surtout des belles femmes et des truands$", + "TBT - La seule valeur s–re chez lui, c'est ses bijoux .. Et sa femme, mais ‡a il ne s'en rend pas compte$", + "TBT - C'est quelqu'un d'interessant . De pas toujours facile … comprendre, mais qui m‚rite le d‚tour$", + "TBT - Je ne d‚teste personne, mais j'aime les choses et les gens quand ils sont … leur place$", + "TBT - C'est entre nous . Mais voyez : quand je parle avec elle, je me sens vite … l'‚troit !$", + "TBT - Pour ne pas s'entendre avec elle, faut y mettre de la mauvaise volont‚$", + "TBT - Vous savez dans mon m‚tier on entend tout mais on ne retient rien, et le service est bien fait$", "TBT - C'est un hypocrite, un larbin ! Personnellement je ne lui fais pas confiance$", - "TBT - Je ne connait pas le fond de sa pensée mais c'est quelqu'un de toujours trčs correct et impeccable$", - "TBT - C'était une personne qui a vécu au manoir, il y a un an .. peut ętre plus$", - "TBT - C'était plus qu'une amie pour ma mčre . En ces moments, j'aurais aimé qu'elle soit ŕ mes cotés$", - "TBT - Murielle a été la dame de compagnie de Julia$", + "TBT - Je ne connait pas le fond de sa pens‚e mais c'est quelqu'un de toujours trŠs correct et impeccable$", + "TBT - C'‚tait une personne qui a v‚cu au manoir, il y a un an .. peut tre plus$", + "TBT - C'‚tait plus qu'une amie pour ma mŠre . En ces moments, j'aurais aim‚ qu'elle soit … mes cot‚s$", + "TBT - Murielle a ‚t‚ la dame de compagnie de Julia$", "TBT - Elle aussi, faisait des recherches ...$", - "TBT - C'était une femme trčs cultivée . Son brusque départ, il y a un an, m'a surpris et beaucoup chagriné$", - "TBT - Elle partageait avec Léo sa passion de l'histoire et de la région$", + "TBT - C'‚tait une femme trŠs cultiv‚e . Son brusque d‚part, il y a un an, m'a surpris et beaucoup chagrin‚$", + "TBT - Elle partageait avec L‚o sa passion de l'histoire et de la r‚gion$", "TBT - Je crois que tout le monde l'aimait bien$", - "TBT - Elle s'entendait bien avec tout le monde . Elle aimait beaucoup son fils . Quant aux relations belle-mčre, belle-fille ..$", - "TBT - A part Léo, elle avait de trčs bon rapport avec Max ...$", - "TBT - Bien que vos relations furent peu soutenues, Jérôme, elle vous portait toujours dans son coeur ...$", + "TBT - Elle s'entendait bien avec tout le monde . Elle aimait beaucoup son fils . Quant aux relations belle-mŠre, belle-fille ..$", + "TBT - A part L‚o, elle avait de trŠs bon rapport avec Max ...$", + "TBT - Bien que vos relations furent peu soutenues, J‚r“me, elle vous portait toujours dans son coeur ...$", "TBT - A part sa famille, pas grand monde$", - "TBT - Ah oui ! Je crois qu'elle a beaucoup regretté le départ de cette amie .. euh ! Marielle .. ou Mireille ...$", + "TBT - Ah oui ! Je crois qu'elle a beaucoup regrett‚ le d‚part de cette amie .. euh ! Marielle .. ou Mireille ...$", "TBT - Non rien !$", "TBT - Non ... Pas que le sache$", - "TBT - J'ai connu Julia en achetant le manoir . C'était son seul bien . Mais toute ma fortune était la sienne ...$", - "TBT - Si ce n'est quelques objets personnels, je crois qu'elle n'avait plus rien ŕ elle$", - "TBT - Je crois que toute sa fortune venait de Léo . Alors, Pfuuut !$", - "TBT - A part la lettre pour vous que j'ai posté, rien de bien important !$", - "TBT - J'ai été trčs heureuse qu'elle m'offre sa bible reliée$", - "TBT - Ca a été rapide et elle n'a pas eu le temps de prendre des dispositions particuličres$", - "TBT - Son dernier présent m'a surpris$", + "TBT - J'ai connu Julia en achetant le manoir . C'‚tait son seul bien . Mais toute ma fortune ‚tait la sienne ...$", + "TBT - Si ce n'est quelques objets personnels, je crois qu'elle n'avait plus rien … elle$", + "TBT - Je crois que toute sa fortune venait de L‚o . Alors, Pfuuut !$", + "TBT - A part la lettre pour vous que j'ai post‚, rien de bien important !$", + "TBT - J'ai ‚t‚ trŠs heureuse qu'elle m'offre sa bible reli‚e$", + "TBT - Ca a ‚t‚ rapide et elle n'a pas eu le temps de prendre des dispositions particuliŠres$", + "TBT - Son dernier pr‚sent m'a surpris$", "TBT - Quel cadeau ?$", "TBT - Un chandellier ...$", - "TBT - Oui, j'ai eu un cadeau . Ma femme a męme eu une bible$", + "TBT - Oui, j'ai eu un cadeau . Ma femme a mme eu une bible$", "TBT - Et bien oui ! Comme tout le monde, je crois$", "TBT - Un poignard$", - "TBT - Je n'ai jamais été fouiller dans le grenier !$", + "TBT - Je n'ai jamais ‚t‚ fouiller dans le grenier !$", "TBT - Vous avez un don de double-vue ou un passe-partout$", "TBT - Le portrait d'une jeune fille : C'est Murielle ...$", "TBT - Vous savez, je la connaissais assez peu$", - "TBT - Elle était trčs charmante, mais c'était surtout la dame de compagnie de Julia$", - "TBT - C'est la seule femme vraiment interessante que j'ai rencontré$", - "TBT - Elle avait de grandes connaissances historiques, et la consulter était trčs enrichissant$", - "TBT - Je me suis toujours demandé ce que certains pouvaient lui trouver !$", - "TBT - Si la chambre est fermée, demandez ŕ Léo$", - "TBT - J'ai fermé sa chambre aprčs sa mort et j'aimerais qu'il en soit ainsi encore un certain temps$", + "TBT - Elle ‚tait trŠs charmante, mais c'‚tait surtout la dame de compagnie de Julia$", + "TBT - C'est la seule femme vraiment interessante que j'ai rencontr‚$", + "TBT - Elle avait de grandes connaissances historiques, et la consulter ‚tait trŠs enrichissant$", + "TBT - Je me suis toujours demand‚ ce que certains pouvaient lui trouver !$", + "TBT - Si la chambre est ferm‚e, demandez … L‚o$", + "TBT - J'ai ferm‚ sa chambre aprŠs sa mort et j'aimerais qu'il en soit ainsi encore un certain temps$", "TBT - Vous savez ce que c'est : Des relations familiales$", - "TBT - Durant toutes ces années, je ne l'ai jamais servie ŕ contre-coeur$", + "TBT - Durant toutes ces ann‚es, je ne l'ai jamais servie … contre-coeur$", "TBT - Je l'aimais autant qu'elle m'aimais, je crois$", - "TBT - De quel droit avez-vous pénétré dans la chambre de ma femme ?!!$", + "TBT - De quel droit avez-vous p‚n‚tr‚ dans la chambre de ma femme ?!!$", "TBT - C'est sans doute la photo de Murielle avec le filleul de Julia$", "TBT - Je ne me rappelle pas$", - "TBT - C'est Murielle . C'est moi qui l'ai prise. et d'ailleurs elle est tirée ŕ l'envers$", - "TBT - Vous ętes bien curieux !... C'est sans valeur$", - "TBT - Grimoires, parchemins et manuscrits : C'est le domaine de Léo$", + "TBT - C'est Murielle . C'est moi qui l'ai prise. et d'ailleurs elle est tir‚e … l'envers$", + "TBT - Vous tes bien curieux !... C'est sans valeur$", + "TBT - Grimoires, parchemins et manuscrits : C'est le domaine de L‚o$", "TBT - Dommage que la devise soit manquante ...$", - "TBT - C'est trčs beau ... Et trčs vieux ...$", - "TBT - Tiens ! C'est un endroit que je n'ai jamais visité$", - "TBT - D'aprés Léo, il semblerait que les Lunes soient plus récentes$", - "TBT - Męme par ce temps, vous avez déniché un soleil ...$", - "TBT - Profond et inquiétant : Le progrčs a du bon$", - "TBT - Ca reste pour moi le plus grand des mystčres$", + "TBT - C'est trŠs beau ... Et trŠs vieux ...$", + "TBT - Tiens ! C'est un endroit que je n'ai jamais visit‚$", + "TBT - D'apr‚s L‚o, il semblerait que les Lunes soient plus r‚centes$", + "TBT - Mme par ce temps, vous avez d‚nich‚ un soleil ...$", + "TBT - Profond et inqui‚tant : Le progrŠs a du bon$", + "TBT - Ca reste pour moi le plus grand des mystŠres$", "TBT - Les derniers temps elle parlait d'un voyage . Et puis ...$", - "TBT - Il y a un peu plus d'un an, un soir, elle a décidé de partir ...$", - "TBT - De toutes façons elle n'était pas faite pour vivre ici$", + "TBT - Il y a un peu plus d'un an, un soir, elle a d‚cid‚ de partir ...$", + "TBT - De toutes fa‡ons elle n'‚tait pas faite pour vivre ici$", "TBT - Quoi ?! Quel corps ? Quel crypte ?$", - "TBT - Si il y en a, je ne les ai jamais trouvé ...$", - "TBT - Bien sűr ! ... Et des fantômes aussi ...$", - "TBT - C'est la plus vielle de la région : Elle date du XI eme sičcle$", - "TBT - Elle fut légčrement restaurée aprčs la révolution$", + "TBT - Si il y en a, je ne les ai jamais trouv‚ ...$", + "TBT - Bien s–r ! ... Et des fant“mes aussi ...$", + "TBT - C'est la plus vielle de la r‚gion : Elle date du XI eme siŠcle$", + "TBT - Elle fut l‚gŠrement restaur‚e aprŠs la r‚volution$", "TBT - Julia aimait beaucoup la peinture$", - "TBT - Ils ont différents styles, mais n'ont pas tous une trčs grande valeur$", - "TBT - Que faites-vous lŕ ?$", - "TBT - Je suis sűr que vous cherchez quelque chose ici$", - "TBT - Je vous écoute$", - "TBT - Que désirez-vous ?$", + "TBT - Ils ont diff‚rents styles, mais n'ont pas tous une trŠs grande valeur$", + "TBT - Que faites-vous l… ?$", + "TBT - Je suis s–r que vous cherchez quelque chose ici$", + "TBT - Je vous ‚coute$", + "TBT - Que d‚sirez-vous ?$", "TBT - Oui ?$", - "TBT - Je suis ŕ vous ...$", + "TBT - Je suis … vous ...$", "TBT - C'est pourquoi ?$", "TBT - Allez-y$", - "TBT - C'est ŕ quel sujet ?$", - "TBT - Max : ŕ votre service, monsieur$", - "TBT - De toutes façons vous n'avez rien ŕ faire ici ! Sortez !!$", - "TBT - Vous ętes trop curieux !$", - "TBT - Jérôme ! Il y a longtemps ... Quelle tristesse, Julia est morte . Sa famille est ici : Guy, son fils . Eva, sa brue . Léo, son mari bien sűr . Son beau fils, Pat . Des cousins : Bob, Ida, Luc . La tempčte redouble, il vous faut rester . Les repas sont ŕ 12h et 19h et il y a un recueillement ŕ la chapelle tous les jours ŕ 10h$", - "TBT - En vous voyant j'ai compris que vous decouvririez la vérité ... Car je savais pourquoi vous veniez : J'avais retrouvé le brouillon de la lettre de Julia . Mais je suis trčs joueur, alors ... Elle n'avait pas voulu que votre tche soit trop facile, pour me protéger, sans doute, mais elle n'a pu mourir avec cette incertitude sur la conscience . Avez vous découvert que le mur du silence est le nom que les maçons ont donné au mur qui porte ce blason, lors de la construction du manoir ? .. Et ces cadeaux que Julia a laissé avant de mourir étaient autant de faux indices qui ne servaient qu'ŕ faire ressortir l'importance des parchemins ... Effectivement, il y a plus d'un an, je travailais avec Murielle au décryptage de ces manuscrits que je venais de trouver . Ma femme a fait la relation entre notre travail et la disparition de Murielle mais elle n'a jamais eu de preuves . Si ce n'est cette bague qu'elle a retrouvé un jour dans mes affaires . Une nuit, nous nous sommes aventurés dans le passage secret que nous avions découvert . Murielle est morte par accident dans la pičce de la vierge . J'ai récupéré la bague rapidement, trouvé le trésor et me suis enfuis . Je ne pensais pas qu'elle vivait encore, et je n'ai rien dit car j'avais besoin d'argent . J'ai fait passer cette somme sur le compte des courses de chevaux ...Partez maintenant, puisque vous n'ętes pas de la police . Laissez moi seul !$", - "TBT - Février 1951 ... Profession : detective privé . Le froid figeait Paris et mes affaires lorsque ...$", - "TBT - Une lettre, un appel, des souvenirs d'une enfance encore proche . Que de jeux dans les pičces délabrées du manoir de Mortevielle . Julia, une vieille femme a présent .$", - "TBT - to the bureau$", + "TBT - C'est … quel sujet ?$", + "TBT - Max : … votre service, monsieur$", + "TBT - De toutes fa‡ons vous n'avez rien … faire ici ! Sortez !!$", + "TBT - Vous tes trop curieux !$", + "TBT - J‚r“me ! Il y a longtemps ... Quelle tristesse, Julia est morte . Sa famille est ici : Guy, son fils . Eva, sa brue . L‚o, son mari bien s–r . Son beau fils, Pat . Des cousins : Bob, Ida, Luc . La tempŠte redouble, il vous faut rester . Les repas sont … 12h et 19h et il y a un recueillement … la chapelle tous les jours … 10h$", + "TBT - En vous voyant j'ai compris que vous decouvririez la v‚rit‚ ... Car je savais pourquoi vous veniez : J'avais retrouv‚ le brouillon de la lettre de Julia . Mais je suis trŠs joueur, alors ... Elle n'avait pas voulu que votre tche soit trop facile, pour me prot‚ger, sans doute, mais elle n'a pu mourir avec cette incertitude sur la conscience . Avez vous d‚couvert que le mur du silence est le nom que les ma‡ons ont donn‚ au mur qui porte ce blason, lors de la construction du manoir ? .. Et ces cadeaux que Julia a laiss‚ avant de mourir ‚taient autant de faux indices qui ne servaient qu'… faire ressortir l'importance des parchemins ... Effectivement, il y a plus d'un an, je travailais avec Murielle au d‚cryptage de ces manuscrits que je venais de trouver . Ma femme a fait la relation entre notre travail et la disparition de Murielle mais elle n'a jamais eu de preuves . Si ce n'est cette bague qu'elle a retrouv‚ un jour dans mes affaires . Une nuit, nous nous sommes aventur‚s dans le passage secret que nous avions d‚couvert . Murielle est morte par accident dans la piŠce de la vierge . J'ai r‚cup‚r‚ la bague rapidement, trouv‚ le tr‚sor et me suis enfuis . Je ne pensais pas qu'elle vivait encore, et je n'ai rien dit car j'avais besoin d'argent . J'ai fait passer cette somme sur le compte des courses de chevaux ...Partez maintenant, puisque vous n'tes pas de la police . Laissez moi seul !$", + "TBT - F‚vrier 1951 ... Profession : detective priv‚ . Le froid figeait Paris et mes affaires lorsque ...$", + "TBT - Une lettre, un appel, des souvenirs d'une enfance encore proche . Que de jeux dans les piŠces d‚labr‚es du manoir de Mortevielle . Julia, une vieille femme a pr‚sent .$", + "TBT - to the office$", "TBT - to the kitchen$", "TBT - to the cellar$", "TBT - to the landing$", @@ -1649,7 +1649,7 @@ const char *gameDataDe[] = { "TBT - inside the manor$", "TBT - front of the manor$", "TBT - to the chapel$", - "TBT - to the weel$", + "TBT - to the well$", "TBT - north$", "TBT - behind the manor$", "TBT - south$", @@ -1658,8 +1658,8 @@ const char *gameDataDe[] = { "TBT - towards the manor$", "TBT - further$", "TBT - in the water$", - "TBT - out of the weel$", - "TBT - in the weel$", + "TBT - out of the well$", + "TBT - in the well$", "TBT - choice on screen$", "TBT - In the MYSTERY series...$", "TBT - MORTVILLE MANOR$", @@ -1670,7 +1670,7 @@ const char *gameDataDe[] = { "TBT - Directed by: KYILKHOR CREATION and LANGLOIS$", "TBT - $", "TBT - With the cooperation of...$", - "TBT - Béatrice et Jean_Luc LANGLOIS$", + "TBT - B‚atrice et Jean_Luc LANGLOIS$", "TBT - for the music and the voices,$", "TBT - Bernard GRELAUD for the graphic conception,$", "TBT - MARIA-DOLORES for the graphic direction,$", @@ -1720,7 +1720,7 @@ const char *gameDataDe[] = { "TBT - - Was she murdered?$", "TBT - - Did she die by accident?$", "TBT - - Did she die of natural causes?$", - "TBT - Where did the money come from@for the restoration of the manor?$", + "TBT - Where did the money used@for the restoration of the manor come from?$", "TBT - - Blackmail$", "TBT - - Honest work$", "TBT - - Inheritance$", @@ -1769,7 +1769,7 @@ const char *gameDataDe[] = { "TBT - - 11$", "TBT - What was the first name@of the unknown character?$", "TBT - - Mireille$", - "TBT - - Françoise$", + "TBT - - Fran‡oise$", "TBT - - Maguy$", "TBT - - Emilie$", "TBT - - Murielle$", @@ -1786,7 +1786,7 @@ const char *gameDataDe[] = { "TBT - [1][ | Disk error | All stop... ][ok]$", "TBT - [1][ | You should have noticed |00% of the clues ][ok]$", "TBT - [3][ | insert disk 2 | in drive A ][ok]$", - "TBT - [1][ |Avant d'aller plus loin, vous faites|un point sur l'état de vos connaissances][ok]$", + "TBT - [1][ |Avant d'aller plus loin, vous faites|un point sur l'‚tat de vos connaissances][ok]$", "TBT - MASTER .$", "TBT - rorL$", NULL diff --git a/dists/engine-data/mort.dat b/dists/engine-data/mort.dat index 0731d3c2c9..125d37fdbb 100644 Binary files a/dists/engine-data/mort.dat and b/dists/engine-data/mort.dat differ -- cgit v1.2.3 From 9c6590fdeb546f2c55f57ca645d8bf7b5618ac9a Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 25 Feb 2013 23:22:07 +0100 Subject: MORTEVIELLE: remove a magic value, initialize the last bytes of cfiecBuffer --- engines/mortevielle/mortevielle.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 3875d8d458..664908440f 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -597,7 +597,7 @@ void MortevielleEngine::mainGame() { loadCFIEC(); for (_crep = 1; _crep <= _x26KeyCount; ++_crep) - decodeNumber(&_cfiecBuffer[161 * 16], ((822 * 128) - (161 * 16)) / 64); + decodeNumber(&_cfiecBuffer[161 * 16], (_cfiecBufferSize - (161 * 16)) / 64); loadBRUIT5(); _menu.initMenu(); @@ -2498,6 +2498,9 @@ void MortevielleEngine::loadCFIEC() { for (int32 i = 0; i < fileSize; ++i) _cfiecBuffer[i] = f.readByte(); + for (int i = fileSize; i < _cfiecBufferSize; i++) + _cfiecBuffer[i] = 0; + f.close(); _reloadCFIEC = false; -- cgit v1.2.3 From a81f13c14ed9177d0cbf1dc6f173e195c12d9ee2 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 24 Jun 2013 23:48:00 +0200 Subject: MORTEVIELLE: Remove CHECK_QUIT macros --- engines/mortevielle/actions.cpp | 3 ++- engines/mortevielle/dialogs.cpp | 9 ++++++--- engines/mortevielle/mortevielle.cpp | 26 +++++++++++++++++--------- engines/mortevielle/mortevielle.h | 3 --- engines/mortevielle/mouse.cpp | 3 ++- 5 files changed, 27 insertions(+), 17 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 392ea17df1..47ffb2e4ba 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -1408,7 +1408,8 @@ void MortevielleEngine::fctDiscuss() { do { bool dummyFl; _mouse.moveMouse(dummyFl, retKey); - CHECK_QUIT; + if (g_vm->shouldQuit()) + return; _mouse.getMousePosition(x, y, click); x *= (3 - _resolutionScaler); diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index ee6eb697fb..90c53d1648 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -110,7 +110,8 @@ int Alert::show(const Common::String &msg, int n) { do { char dummyKey = '\377'; g_vm->_mouse.moveMouse(dummyFl, dummyKey); - CHECK_QUIT0; + if (g_vm->shouldQuit()) + return 0; curPos = g_vm->_mouse._pos; bool newaff = false; @@ -358,7 +359,8 @@ bool KnowledgeCheck::show() { bool flag; char key; g_vm->_mouse.moveMouse(flag, key); - CHECK_QUIT0; + if (g_vm->shouldQuit()) + return false; currChoice = 1; while (coor[currChoice]._enabled && !g_vm->_mouse.isMouseIn(coor[currChoice]._rect)) @@ -428,7 +430,8 @@ void f3f8::checkForF8(int SpeechNum, bool drawAni50Fl) { do { g_vm->_speechManager.startSpeech(SpeechNum, 0, 0); g_vm->_key = waitForF3F8(); - CHECK_QUIT; + if (g_vm->shouldQuit()) + return; if (g_vm->_newGraphicalDevice != g_vm->_currGraphicalDevice) { g_vm->_currGraphicalDevice = g_vm->_newGraphicalDevice; diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 664908440f..b013f87a1a 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -576,13 +576,15 @@ void MortevielleEngine::showIntroduction() { f3f8::aff50(false); _speechManager._mlec = 0; f3f8::checkForF8(142, false); - CHECK_QUIT; + if (g_vm->shouldQuit()) + return; f3f8::ani50(); f3f8::checkForF8(143, true); - CHECK_QUIT; + if (g_vm->shouldQuit()) + return; - // TODO: Once music is implemented, only use the below delay if music is turned off + // TODO: Once music (Amiga/Atari ports) is implemented, only use the below delay if music is turned off showTitleScreen(); delay(3000); music(); @@ -611,7 +613,8 @@ void MortevielleEngine::mainGame() { // Loop to play the game do { playGame(); - CHECK_QUIT; + if (g_vm->shouldQuit()) + return; } while (!_quitGame); } @@ -625,7 +628,8 @@ void MortevielleEngine::playGame() { // Loop handling actions until the game has to be quit, or show the lose or end sequence do { handleAction(); - CHECK_QUIT; + if (g_vm->shouldQuit()) + return; } while (!((_quitGame) || (_endGame) || (_loseGame))); if (_endGame) @@ -660,7 +664,8 @@ void MortevielleEngine::handleAction() { _menu.updateMenu(); prepareRoom(); _mouse.moveMouse(funct, inkey); - CHECK_QUIT; + if (g_vm->shouldQuit()) + return; ++temps; } while (!((_menu._menuSelected) || (temps > lim) || (funct) || (_anyone))); _inMainGameLoop = false; @@ -1748,7 +1753,8 @@ void MortevielleEngine::startDialog(int16 rep) { do { _speechManager.startSpeech(rep, haut[_caff - 69], 0); key = f3f8::waitForF3F8(); - CHECK_QUIT; + if (g_vm->shouldQuit()) + return; } while (key != 66); hirs(); _mouse.showMouse(); @@ -3383,7 +3389,8 @@ void MortevielleEngine::testKey(bool d) { prepareRoom(); quest = keyPressed(); _mouse.getMousePosition(x, y, click); - CHECK_QUIT; + if (g_vm->shouldQuit()) + return; } while (!(quest || (click) || (d && _anyone))); if (quest) testou(); @@ -3618,7 +3625,8 @@ void MortevielleEngine::tfleche() { do { _mouse.moveMouse(qust, touch); - CHECK_QUIT; + if (g_vm->shouldQuit()) + return; if (getMouseClick()) inRect = (_mouse._pos.x < 256 * _resolutionScaler) && (_mouse._pos.y < 176) && (_mouse._pos.y > 12); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index aeef3dd1e2..bdf28e4514 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -533,9 +533,6 @@ public: extern MortevielleEngine *g_vm; -#define CHECK_QUIT if (g_vm->shouldQuit()) { return; } -#define CHECK_QUIT0 if (g_vm->shouldQuit()) { return 0; } - } // End of namespace Mortevielle #endif diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index bc0f5fe7d3..a6105d85de 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -265,7 +265,8 @@ void MouseHandler::moveMouse(bool &funct, char &key) { // Handle any pending keypresses while (p_key) { - CHECK_QUIT; + if (g_vm->shouldQuit()) + return; in1 = g_vm->getChar(); getMousePosition(cx, cy, click); -- cgit v1.2.3 From 16c814ee6ee68b4359a1924c3086a3efb492b130 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 25 Jun 2013 08:00:11 +0200 Subject: MORTEVIELLE: Replace g_vm in Menu --- engines/mortevielle/menu.cpp | 168 ++++++++++++++++++------------------ engines/mortevielle/menu.h | 5 +- engines/mortevielle/mortevielle.cpp | 2 +- 3 files changed, 90 insertions(+), 85 deletions(-) diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 5d64961f23..8c9fc038fc 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -93,8 +93,8 @@ void Menu::setDestinationText(int roomId) { roomId = LANDING; int destinationId = 0; - for (; (destinationId < 7) && (g_vm->_destinationArray[destinationId][roomId]); ++destinationId) { - nomp = g_vm->getString(g_vm->_destinationArray[destinationId][roomId] + kMenuPlaceStringIndex); + for (; (destinationId < 7) && (_vm->_destinationArray[destinationId][roomId]); ++destinationId) { + nomp = _vm->getString(_vm->_destinationArray[destinationId][roomId] + kMenuPlaceStringIndex); while (nomp.size() < 20) nomp += ' '; setText(_moveMenu[destinationId + 1], nomp); @@ -175,11 +175,11 @@ void Menu::displayMenu() { int pt, x, y, color, msk, num_letr; - g_vm->_mouse.hideMouse(); + _vm->_mouse.hideMouse(); - g_vm->_screenSurface.fillRect(7, Common::Rect(0, 0, 639, 10)); - col = 28 * g_vm->_resolutionScaler; - if (g_vm->_currGraphicalDevice == MODE_CGA) + _vm->_screenSurface.fillRect(7, Common::Rect(0, 0, 639, 10)); + col = 28 * _vm->_resolutionScaler; + if (_vm->_currGraphicalDevice == MODE_CGA) color = 1; else color = 9; @@ -195,9 +195,9 @@ void Menu::displayMenu() { msk = 0x80; for (pt = 0; pt <= 7; ++pt) { if ((_charArr[num_letr - 1][ind_tabl] & msk) != 0) { - g_vm->_screenSurface.setPixel(Common::Point(x + 1, y + 1), 0); - g_vm->_screenSurface.setPixel(Common::Point(x, y + 1), 0); - g_vm->_screenSurface.setPixel(Common::Point(x, y), color); + _vm->_screenSurface.setPixel(Common::Point(x + 1, y + 1), 0); + _vm->_screenSurface.setPixel(Common::Point(x, y + 1), 0); + _vm->_screenSurface.setPixel(Common::Point(x, y), color); } msk = (uint)msk >> 1; ++x; @@ -207,9 +207,9 @@ void Menu::displayMenu() { } while (k != 3); ++y; } while (y != 9); - col += 48 * g_vm->_resolutionScaler; + col += 48 * _vm->_resolutionScaler; } while (num_letr != 6); - g_vm->_mouse.showMouse(); + _vm->_mouse.showMouse(); } /** @@ -221,7 +221,7 @@ void Menu::drawMenu() { _msg4 = OPCODE_NONE; _msg3 = OPCODE_NONE; _menuSelected = false; - g_vm->setMouseClick(false); + _vm->setMouseClick(false); _multiTitle = false; } @@ -235,7 +235,7 @@ void Menu::invert(int indx) { int menuIndex = lo(_msg4); - g_vm->_screenSurface.putxy(_menuConstants[_msg3 - 1][0] << 3, (menuIndex + 1) << 3); + _vm->_screenSurface.putxy(_menuConstants[_msg3 - 1][0] << 3, (menuIndex + 1) << 3); Common::String str; switch (_msg3) { @@ -255,18 +255,18 @@ void Menu::invert(int indx) { str = _discussStringArray[menuIndex]; break; case 6: - str = g_vm->getEngineString(S_SAVE_LOAD + menuIndex); + str = _vm->getEngineString(S_SAVE_LOAD + menuIndex); break; case 7: - str = g_vm->getEngineString(S_SAVE_LOAD + 1); + str = _vm->getEngineString(S_SAVE_LOAD + 1); str += ' '; str += (char)(48 + menuIndex); break; case 8: if (menuIndex == 1) { - str = g_vm->getEngineString(S_RESTART); + str = _vm->getEngineString(S_RESTART); } else { - str = g_vm->getEngineString(S_SAVE_LOAD + 2); + str = _vm->getEngineString(S_SAVE_LOAD + 2); str += ' '; str += (char)(47 + menuIndex); } @@ -275,7 +275,7 @@ void Menu::invert(int indx) { break; } if ((str[0] != '*') && (str[0] != '<')) - g_vm->_screenSurface.drawString(str, indx); + _vm->_screenSurface.drawString(str, indx); else _msg4 = OPCODE_NONE; } @@ -284,14 +284,14 @@ void Menu::util(Common::Point pos) { int ymx = (_menuConstants[_msg3 - 1][3] << 3) + 16; int dxcar = _menuConstants[_msg3 - 1][2]; - int xmn = (_menuConstants[_msg3 - 1][0] << 2) * g_vm->_resolutionScaler; + int xmn = (_menuConstants[_msg3 - 1][0] << 2) * _vm->_resolutionScaler; int ix; - if (g_vm->_resolutionScaler == 1) + if (_vm->_resolutionScaler == 1) ix = 5; else ix = 3; - int xmx = dxcar * ix * g_vm->_resolutionScaler + xmn + 2; + int xmx = dxcar * ix * _vm->_resolutionScaler + xmn + 2; if ((pos.x > xmn) && (pos.x < xmx) && (pos.y < ymx) && (pos.y > 15)) { ix = (((uint)pos.y >> 3) - 1) + (_msg3 << 8); if (ix != _msg4) { @@ -313,78 +313,78 @@ void Menu::menuDown(int ii) { int lignNumb; // Make a copy of the current screen surface for later restore - g_vm->_backgroundSurface.copyFrom(g_vm->_screenSurface); + _vm->_backgroundSurface.copyFrom(_vm->_screenSurface); // Draw the menu xco = _menuConstants[ii - 1][0]; lignNumb = _menuConstants[ii - 1][3]; - g_vm->_mouse.hideMouse(); - g_vm->sauvecr(10, (_menuConstants[ii - 1][1] + 1) << 1); + _vm->_mouse.hideMouse(); + _vm->sauvecr(10, (_menuConstants[ii - 1][1] + 1) << 1); xco = xco << 3; - if (g_vm->_resolutionScaler == 1) + if (_vm->_resolutionScaler == 1) cx = 10; else cx = 6; xcc = xco + (_menuConstants[ii - 1][2] * cx) + 6; - if ((ii == 4) && (g_vm->getLanguage() == Common::EN_ANY)) + if ((ii == 4) && (_vm->getLanguage() == Common::EN_ANY)) // Extra width needed for Self menu in English version xcc = 435; - g_vm->_screenSurface.fillRect(15, Common::Rect(xco, 12, xcc, 10 + (_menuConstants[ii - 1][1] << 1))); - g_vm->_screenSurface.fillRect(0, Common::Rect(xcc, 12, xcc + 4, 10 + (_menuConstants[ii - 1][1] << 1))); - g_vm->_screenSurface.fillRect(0, Common::Rect(xco, 8 + (_menuConstants[ii - 1][1] << 1), xcc + 4, 12 + (_menuConstants[ii - 1][1] << 1))); - g_vm->_screenSurface.putxy(xco, 16); + _vm->_screenSurface.fillRect(15, Common::Rect(xco, 12, xcc, 10 + (_menuConstants[ii - 1][1] << 1))); + _vm->_screenSurface.fillRect(0, Common::Rect(xcc, 12, xcc + 4, 10 + (_menuConstants[ii - 1][1] << 1))); + _vm->_screenSurface.fillRect(0, Common::Rect(xco, 8 + (_menuConstants[ii - 1][1] << 1), xcc + 4, 12 + (_menuConstants[ii - 1][1] << 1))); + _vm->_screenSurface.putxy(xco, 16); cx = 0; do { ++cx; switch (ii) { case 1: if (_inventoryStringArray[cx][0] != '*') - g_vm->_screenSurface.drawString(_inventoryStringArray[cx], 4); + _vm->_screenSurface.drawString(_inventoryStringArray[cx], 4); break; case 2: if (_moveStringArray[cx][0] != '*') - g_vm->_screenSurface.drawString(_moveStringArray[cx], 4); + _vm->_screenSurface.drawString(_moveStringArray[cx], 4); break; case 3: if (_actionStringArray[cx][0] != '*') - g_vm->_screenSurface.drawString(_actionStringArray[cx], 4); + _vm->_screenSurface.drawString(_actionStringArray[cx], 4); break; case 4: if (_selfStringArray[cx][0] != '*') - g_vm->_screenSurface.drawString(_selfStringArray[cx], 4); + _vm->_screenSurface.drawString(_selfStringArray[cx], 4); break; case 5: if (_discussStringArray[cx][0] != '*') - g_vm->_screenSurface.drawString(_discussStringArray[cx], 4); + _vm->_screenSurface.drawString(_discussStringArray[cx], 4); break; case 6: - g_vm->_screenSurface.drawString(g_vm->getEngineString(S_SAVE_LOAD + cx), 4); + _vm->_screenSurface.drawString(_vm->getEngineString(S_SAVE_LOAD + cx), 4); break; case 7: { - Common::String s = g_vm->getEngineString(S_SAVE_LOAD + 1); + Common::String s = _vm->getEngineString(S_SAVE_LOAD + 1); s += ' '; s += (char)(48 + cx); - g_vm->_screenSurface.drawString(s, 4); + _vm->_screenSurface.drawString(s, 4); } break; case 8: if (cx == 1) - g_vm->_screenSurface.drawString(g_vm->getEngineString(S_RESTART), 4); + _vm->_screenSurface.drawString(_vm->getEngineString(S_RESTART), 4); else { - Common::String s = g_vm->getEngineString(S_SAVE_LOAD + 2); + Common::String s = _vm->getEngineString(S_SAVE_LOAD + 2); s += ' '; s += (char)(47 + cx); - g_vm->_screenSurface.drawString(s, 4); + _vm->_screenSurface.drawString(s, 4); } break; default: break; } - g_vm->_screenSurface.putxy(xco, g_vm->_screenSurface._textPos.y + 8); + _vm->_screenSurface.putxy(xco, _vm->_screenSurface._textPos.y + 8); } while (cx != lignNumb); _multiTitle = true; - g_vm->_mouse.showMouse(); + _vm->_mouse.showMouse(); } /** @@ -392,14 +392,14 @@ void Menu::menuDown(int ii) { */ void Menu::menuUp(int msgId) { if (_multiTitle) { - g_vm->charecr(10, (_menuConstants[msgId - 1][1] + 1) << 1); + _vm->charecr(10, (_menuConstants[msgId - 1][1] + 1) << 1); /* Restore the background area */ - assert(g_vm->_screenSurface.pitch == g_vm->_backgroundSurface.pitch); + assert(_vm->_screenSurface.pitch == _vm->_backgroundSurface.pitch); // Get a pointer to the source and destination of the area to restore - const byte *pSrc = (const byte *)g_vm->_backgroundSurface.getBasePtr(0, 10); - Graphics::Surface destArea = g_vm->_screenSurface.lockArea(Common::Rect(0, 10, SCREEN_WIDTH, SCREEN_HEIGHT)); + const byte *pSrc = (const byte *)_vm->_backgroundSurface.getBasePtr(0, 10); + Graphics::Surface destArea = _vm->_screenSurface.lockArea(Common::Rect(0, 10, SCREEN_WIDTH, SCREEN_HEIGHT)); byte *pDest = (byte *)destArea.getBasePtr(0, 0); // Copy the data @@ -414,7 +414,7 @@ void Menu::menuUp(int msgId) { */ void Menu::eraseMenu() { _menuActive = false; - g_vm->setMouseClick(false); + _vm->setMouseClick(false); menuUp(_msg3); } @@ -426,32 +426,32 @@ void Menu::updateMenu() { if (!_menuActive) return; - Common::Point curPos = g_vm->_mouse._pos; - if (!g_vm->getMouseClick()) { - if (curPos == g_vm->_prevPos) + Common::Point curPos = _vm->_mouse._pos; + if (!_vm->getMouseClick()) { + if (curPos == _vm->_prevPos) return; else - g_vm->_prevPos = curPos; + _vm->_prevPos = curPos; bool tes = (curPos.y < 11) - && ((curPos.x >= (28 * g_vm->_resolutionScaler) && curPos.x <= (28 * g_vm->_resolutionScaler + 24)) - || (curPos.x >= (76 * g_vm->_resolutionScaler) && curPos.x <= (76 * g_vm->_resolutionScaler + 24)) - || ((curPos.x > 124 * g_vm->_resolutionScaler) && (curPos.x < 124 * g_vm->_resolutionScaler + 24)) - || ((curPos.x > 172 * g_vm->_resolutionScaler) && (curPos.x < 172 * g_vm->_resolutionScaler + 24)) - || ((curPos.x > 220 * g_vm->_resolutionScaler) && (curPos.x < 220 * g_vm->_resolutionScaler + 24)) - || ((curPos.x > 268 * g_vm->_resolutionScaler) && (curPos.x < 268 * g_vm->_resolutionScaler + 24))); + && ((curPos.x >= (28 * _vm->_resolutionScaler) && curPos.x <= (28 * _vm->_resolutionScaler + 24)) + || (curPos.x >= (76 * _vm->_resolutionScaler) && curPos.x <= (76 * _vm->_resolutionScaler + 24)) + || ((curPos.x > 124 * _vm->_resolutionScaler) && (curPos.x < 124 * _vm->_resolutionScaler + 24)) + || ((curPos.x > 172 * _vm->_resolutionScaler) && (curPos.x < 172 * _vm->_resolutionScaler + 24)) + || ((curPos.x > 220 * _vm->_resolutionScaler) && (curPos.x < 220 * _vm->_resolutionScaler + 24)) + || ((curPos.x > 268 * _vm->_resolutionScaler) && (curPos.x < 268 * _vm->_resolutionScaler + 24))); if (tes) { int ix; - if (curPos.x < 76 * g_vm->_resolutionScaler) + if (curPos.x < 76 * _vm->_resolutionScaler) ix = MENU_INVENTORY; - else if (curPos.x < 124 * g_vm->_resolutionScaler) + else if (curPos.x < 124 * _vm->_resolutionScaler) ix = MENU_MOVE; - else if (curPos.x < 172 * g_vm->_resolutionScaler) + else if (curPos.x < 172 * _vm->_resolutionScaler) ix = MENU_ACTION; - else if (curPos.x < 220 * g_vm->_resolutionScaler) + else if (curPos.x < 220 * _vm->_resolutionScaler) ix = MENU_SELF; - else if (curPos.x < 268 * g_vm->_resolutionScaler) + else if (curPos.x < 268 * _vm->_resolutionScaler) ix = MENU_DISCUSS; else ix = MENU_FILE; @@ -470,7 +470,7 @@ void Menu::updateMenu() { } else { // There was a click if ((_msg3 == MENU_FILE) && (_msg4 != OPCODE_NONE)) { // Another menu to be _displayed - g_vm->setMouseClick(false); + _vm->setMouseClick(false); menuUp(_msg3); if (lo(_msg4) == 1) _msg3 = 7; @@ -478,22 +478,24 @@ void Menu::updateMenu() { _msg3 = 8; menuDown(_msg3); - g_vm->setMouseClick(false); + _vm->setMouseClick(false); } else { // A menu was clicked on _menuSelected = (_multiTitle) && (_msg4 != OPCODE_NONE); menuUp(_msg3); - g_vm->_msg[4] = _msg4; - g_vm->_msg[3] = _msg3; + _vm->_msg[4] = _msg4; + _vm->_msg[3] = _msg3; _msg3 = OPCODE_NONE; _msg4 = OPCODE_NONE; - g_vm->setMouseClick(false); + _vm->setMouseClick(false); } } } -void Menu::initMenu() { +void Menu::initMenu(MortevielleEngine *vm) { + _vm = vm; + int i; Common::File f; @@ -514,18 +516,18 @@ void Menu::initMenu() { _moveStringArray[i] = "* "; i = 1; do { - _actionStringArray[i] = g_vm->getString(i + kMenuActionStringIndex); + _actionStringArray[i] = _vm->getString(i + kMenuActionStringIndex); while (_actionStringArray[i].size() < 10) _actionStringArray[i] += ' '; if (i < 9) { if (i < 6) { - _selfStringArray[i] = g_vm->getString(i + kMenuSelfStringIndex); + _selfStringArray[i] = _vm->getString(i + kMenuSelfStringIndex); while (_selfStringArray[i].size() < 10) _selfStringArray[i] += ' '; } - _discussStringArray[i] = g_vm->getString(i + kMenuSayStringIndex) + ' '; + _discussStringArray[i] = _vm->getString(i + kMenuSayStringIndex) + ' '; } ++i; } while (i != 22); @@ -539,9 +541,9 @@ void Menu::initMenu() { } _msg3 = OPCODE_NONE; _msg4 = OPCODE_NONE; - g_vm->_msg[3] = OPCODE_NONE; - g_vm->_msg[4] = OPCODE_NONE; - g_vm->setMouseClick(false); + _vm->_msg[3] = OPCODE_NONE; + _vm->_msg[4] = OPCODE_NONE; + _vm->setMouseClick(false); } /** @@ -555,8 +557,8 @@ void Menu::setSearchMenu() { for (int i = 1; i <= 11; ++i) disableMenuItem(_actionMenu[i]); - setText(OPCODE_SOUND, g_vm->getEngineString(S_SUITE)); - setText(OPCODE_LIFT, g_vm->getEngineString(S_STOP)); + setText(OPCODE_SOUND, _vm->getEngineString(S_SUITE)); + setText(OPCODE_LIFT, _vm->getEngineString(S_STOP)); } /** @@ -564,12 +566,12 @@ void Menu::setSearchMenu() { * @remarks Originally called 'mfouen' */ void Menu::unsetSearchMenu() { - setDestinationText(g_vm->_coreVar._currPlace); + setDestinationText(_vm->_coreVar._currPlace); for (int i = 1; i <= 11; ++i) enableMenuItem(_actionMenu[i]); - setText(OPCODE_SOUND, g_vm->getEngineString(S_PROBE)); - setText(OPCODE_LIFT, g_vm->getEngineString(S_RAISE)); + setText(OPCODE_SOUND, _vm->getEngineString(S_PROBE)); + setText(OPCODE_LIFT, _vm->getEngineString(S_RAISE)); } /** @@ -581,10 +583,10 @@ void Menu::setInventoryText() { int cy = 0; for (int i = 1; i <= 6; ++i) { - if (g_vm->_coreVar._inventory[i] != 0) { + if (_vm->_coreVar._inventory[i] != 0) { ++cy; - int r = g_vm->_coreVar._inventory[i] + 400; - nomp = g_vm->getString(r - 501 + kInventoryStringIndex); + int r = _vm->_coreVar._inventory[i] + 400; + nomp = _vm->getString(r - 501 + kInventoryStringIndex); setText(_inventoryMenu[cy], nomp); enableMenuItem(_inventoryMenu[i]); } diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index 712242e6bc..61430bfdaa 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -32,6 +32,7 @@ #include "common/str.h" namespace Mortevielle { +class MortevielleEngine; enum { MENU_INVENTORY = 1, MENU_MOVE = 2, MENU_ACTION = 3, MENU_SELF = 4, @@ -40,6 +41,8 @@ enum { class Menu { private: + MortevielleEngine *_vm; + byte _charArr[7][24]; int _msg3; int _msg4; @@ -71,7 +74,7 @@ public: void menuUp(int msgId); void eraseMenu(); void updateMenu(); - void initMenu(); + void initMenu(MortevielleEngine *vm); void setSearchMenu(); void unsetSearchMenu(); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index b013f87a1a..86e7a12371 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -602,7 +602,7 @@ void MortevielleEngine::mainGame() { decodeNumber(&_cfiecBuffer[161 * 16], (_cfiecBufferSize - (161 * 16)) / 64); loadBRUIT5(); - _menu.initMenu(); + _menu.initMenu(this); charToHour(); initGame(); -- cgit v1.2.3 From 785db3b190f5449c83fa3c235d65835e49307778 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 25 Jun 2013 20:40:06 +0200 Subject: MORTEVIELLE: Replace g_vm in ScreenSurface --- engines/mortevielle/debugger.cpp | 1 + engines/mortevielle/graphics.cpp | 30 +++++++++++++++++------------- engines/mortevielle/graphics.h | 12 +++++++++--- engines/mortevielle/mortevielle.cpp | 2 ++ 4 files changed, 29 insertions(+), 16 deletions(-) diff --git a/engines/mortevielle/debugger.cpp b/engines/mortevielle/debugger.cpp index b0b9dc7d2c..9c24954f83 100644 --- a/engines/mortevielle/debugger.cpp +++ b/engines/mortevielle/debugger.cpp @@ -46,6 +46,7 @@ bool Debugger::Cmd_resetParano(int argc, const char **argv) { return true; } + void Debugger::setParent(MortevielleEngine *vm) { _vm = vm; } diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 5bf3aedc99..39a38c2580 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -917,7 +917,7 @@ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { (x + surface.w) * 2, (y + surface.h) * 2)); // Get a lookup for the palette mapping - const byte *paletteMap = &g_vm->_mem[0x7000 * 16 + 2]; + const byte *paletteMap = &_vm->_mem[0x7000 * 16 + 2]; // Loop through writing for (int yp = 0; yp < surface.h; ++yp) { @@ -996,7 +996,7 @@ void ScreenSurface::writeCharacter(const Common::Point &pt, unsigned char ch, in * simulate the original 640x400 surface, all Y values have to be doubled */ void ScreenSurface::drawBox(int x, int y, int dx, int dy, int col) { - if (g_vm->_resolutionScaler == 1) { + if (_vm->_resolutionScaler == 1) { x = (uint)x >> 1; dx = (uint)dx >> 1; } @@ -1060,10 +1060,10 @@ void ScreenSurface::drawString(const Common::String &l, int command) { if (l == "") return; - g_vm->_mouse.hideMouse(); + _vm->_mouse.hideMouse(); pt = _textPos; - if (g_vm->_resolutionScaler == 2) + if (_vm->_resolutionScaler == 2) i = 6; else i = 10; @@ -1073,7 +1073,7 @@ void ScreenSurface::drawString(const Common::String &l, int command) { case 1: case 3: { cecr = 0; - g_vm->_screenSurface.fillRect(15, Common::Rect(pt.x, pt.y, x, pt.y + 7)); + _vm->_screenSurface.fillRect(15, Common::Rect(pt.x, pt.y, x, pt.y + 7)); } break; case 4: @@ -1085,7 +1085,7 @@ void ScreenSurface::drawString(const Common::String &l, int command) { case 0: case 2: { cecr = 15; - g_vm->_screenSurface.fillRect(0, Common::Rect(pt.x, pt.y, x, pt.y + 7)); + _vm->_screenSurface.fillRect(0, Common::Rect(pt.x, pt.y, x, pt.y + 7)); } break; default: @@ -1095,17 +1095,17 @@ void ScreenSurface::drawString(const Common::String &l, int command) { pt.x += 1; pt.y += 1; for (x = 1; (x <= (int)l.size()) && (l[x - 1] != 0); ++x) { - g_vm->_screenSurface.writeCharacter(Common::Point(pt.x, pt.y), ord(l[x - 1]), cecr); + _vm->_screenSurface.writeCharacter(Common::Point(pt.x, pt.y), ord(l[x - 1]), cecr); pt.x += i; } - g_vm->_mouse.showMouse(); + _vm->_mouse.showMouse(); } /** * Gets the width in pixels of the specified string */ int ScreenSurface::getStringWidth(const Common::String &s) { - int charWidth = (g_vm->_resolutionScaler == 2) ? 6 : 10; + int charWidth = (_vm->_resolutionScaler == 2) ? 6 : 10; return s.size() * charWidth; } @@ -1129,7 +1129,7 @@ void ScreenSurface::drawLine(int x, int y, int xx, int yy, int coul) { else step = 1; do { - g_vm->_screenSurface.setPixel(Common::Point(abs((int)(a * i + b)), i), coul); + _vm->_screenSurface.setPixel(Common::Point(abs((int)(a * i + b)), i), coul); i += step; } while (i != yy); } else { @@ -1141,7 +1141,7 @@ void ScreenSurface::drawLine(int x, int y, int xx, int yy, int coul) { else step = 1; do { - g_vm->_screenSurface.setPixel(Common::Point(i, abs((int)(a * i + b))), coul); + _vm->_screenSurface.setPixel(Common::Point(i, abs((int)(a * i + b))), coul); i = i + step; } while (i != xx); } @@ -1154,11 +1154,15 @@ void ScreenSurface::drawLine(int x, int y, int xx, int yy, int coul) { void ScreenSurface::drawRectangle(int x, int y, int dx, int dy) { int co; - if (g_vm->_currGraphicalDevice == MODE_CGA) + if (_vm->_currGraphicalDevice == MODE_CGA) co = 3; else co = 11; - g_vm->_screenSurface.fillRect(co, Common::Rect(x, y, x + dx, y + dy)); + _vm->_screenSurface.fillRect(co, Common::Rect(x, y, x + dx, y + dy)); +} + +void ScreenSurface::setParent(MortevielleEngine *vm) { + _vm = vm; } diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 7bf39c3662..026950e127 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -34,10 +34,13 @@ #include "graphics/surface.h" namespace Mortevielle { +class MortevielleEngine; class PaletteManager { -public: +private: void setPalette(const int *palette, uint idx, uint size); + +public: void setDefaultPalette(); }; @@ -74,7 +77,7 @@ public: Common::Point _offset; // Transparency palette index int _transparency; -public: + ~GfxSurface(); void decode(const byte *pSrc); @@ -82,11 +85,13 @@ public: class ScreenSurface: public Graphics::Surface { private: + MortevielleEngine *_vm; + Common::List _dirtyRects; byte _fontData[FONT_NUM_CHARS * FONT_HEIGHT]; + public: Common::Point _textPos; // Original called xwhere/ywhere -public: void readFontData(Common::File &f, int dataSize); Graphics::Surface lockArea(const Common::Rect &bounds); void updateScreen(); @@ -101,6 +106,7 @@ public: int getStringWidth(const Common::String &s); void drawLine(int x, int y, int xx, int yy, int coul); void drawRectangle(int x, int y, int dx, int dy); + void setParent(MortevielleEngine *vm); // TODO: Refactor code to remove this method, for increased performance void setPixel(const Common::Point &pt, int palIndex); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 86e7a12371..b651f43d74 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -75,6 +75,8 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _soundManager(_mixer) { g_vm = this; _debugger.setParent(this); + _screenSurface.setParent(this); + _lastGameFrame = 0; _mouseClick = false; _inMainGameLoop = false; -- cgit v1.2.3 From 25c786dbe9f9a7f7680470614977ddde668136d8 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 25 Jun 2013 21:01:49 +0200 Subject: MORTEVIELLE: Replace g_vm in MouseHandler --- engines/mortevielle/mortevielle.cpp | 1 + engines/mortevielle/mouse.cpp | 100 +++++++++++++++++++----------------- engines/mortevielle/mouse.h | 4 ++ 3 files changed, 57 insertions(+), 48 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index b651f43d74..7834366dd9 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -76,6 +76,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g g_vm = this; _debugger.setParent(this); _screenSurface.setParent(this); + _mouse.setParent(this); _lastGameFrame = 0; _mouseClick = false; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index a6105d85de..4d3d8bb2ab 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -40,7 +40,7 @@ void MouseHandler::initMouse() { _counter = 0; _pos = Common::Point(0, 0); - g_vm->setMouseClick(false); + _vm->setMouseClick(false); } /** @@ -51,15 +51,15 @@ void MouseHandler::hideMouse() { --_counter; if (_counter == 0) { int j = 0; - switch (g_vm->_currGraphicalDevice) { + switch (_vm->_currGraphicalDevice) { case MODE_CGA: { int k = 0; j = ((uint)_pos.y >> 1) * 80 + ((uint)_pos.x >> 2); do { - WRITE_LE_UINT16(&g_vm->_mem[0xb000 * 16 + j], s_s[0][k]); - WRITE_LE_UINT16(&g_vm->_mem[0xb800 * 16 + j + 2], s_s[1][k]); - WRITE_LE_UINT16(&g_vm->_mem[0xba00 * 16 + j], s_s[2][k]); - WRITE_LE_UINT16(&g_vm->_mem[0xba00 * 16 + j + 2], s_s[3][k]); + WRITE_LE_UINT16(&_vm->_mem[0xb000 * 16 + j], s_s[0][k]); + WRITE_LE_UINT16(&_vm->_mem[0xb800 * 16 + j + 2], s_s[1][k]); + WRITE_LE_UINT16(&_vm->_mem[0xba00 * 16 + j], s_s[2][k]); + WRITE_LE_UINT16(&_vm->_mem[0xba00 * 16 + j + 2], s_s[3][k]); j += 80; ++k; } while (k < 5); @@ -72,10 +72,10 @@ void MouseHandler::hideMouse() { j = 0; do { if (imp) { - WRITE_LE_UINT16(&g_vm->_mem[0xb800 * 16 + j], s_s[i][k]); + WRITE_LE_UINT16(&_vm->_mem[0xb800 * 16 + j], s_s[i][k]); j += 80 - 0x2000; } else { - WRITE_LE_UINT16(&g_vm->_mem[0xb800 * 16 + j], s_s[i][k]); + WRITE_LE_UINT16(&_vm->_mem[0xb800 * 16 + j], s_s[i][k]); j += 0x2000; } imp = !imp; @@ -92,11 +92,11 @@ void MouseHandler::hideMouse() { do { // Useless ? // ps = mem[0xa000 * 16 + j]; - g_vm->_mem[0xa000 * 16 + j] = lo(s_s[i][k]); + _vm->_mem[0xa000 * 16 + j] = lo(s_s[i][k]); // Useless ?? // ps = mem[0xa000 * 16 + j + 1]; - g_vm->_mem[0xa000 * 16 + j + 1] = hi(s_s[i][k]); + _vm->_mem[0xa000 * 16 + j + 1] = hi(s_s[i][k]); j += 80; ++k; } while (k < 8); @@ -108,7 +108,7 @@ void MouseHandler::hideMouse() { j = ((uint)_pos.y >> 1) * 80 + ((uint)_pos.x >> 3); for (int i = 0; i <= 5; ++i) { for (int k = 0; k <= 3; ++k) - WRITE_LE_UINT16(&g_vm->_mem[0xb000 * 16 + k * 0x200 + j], s_s[i][k]); + WRITE_LE_UINT16(&_vm->_mem[0xb000 * 16 + k * 0x200 + j], s_s[i][k]); j += 80; } break; @@ -117,8 +117,8 @@ void MouseHandler::hideMouse() { int k = 0; do { for (int i = 0; i <= 3; ++i) { - WRITE_LE_UINT16(&g_vm->_mem[0xb800 * 16 + 0x200 * i + j], s_s[k][i + (k << 2)]); - WRITE_LE_UINT16(&g_vm->_mem[0xb800 * 16 + 0x200 * i + j + 2], s_s[k + 3][i + (k << 2)]); + WRITE_LE_UINT16(&_vm->_mem[0xb800 * 16 + 0x200 * i + j], s_s[k][i + (k << 2)]); + WRITE_LE_UINT16(&_vm->_mem[0xb800 * 16 + 0x200 * i + j + 2], s_s[k + 3][i + (k << 2)]); } j += 160; ++k; @@ -143,15 +143,15 @@ void MouseHandler::showMouse() { return; int j = 0; int i = _pos.x & 7; - switch (g_vm->_currGraphicalDevice) { + switch (_vm->_currGraphicalDevice) { case MODE_CGA: k = 0; j = ((uint)_pos.y >> 1) * 80 + ((uint)_pos.x >> 2); do { - s_s[0][k] = READ_LE_UINT16(&g_vm->_mem[0xb800 * 16 + j]); - s_s[1][k] = READ_LE_UINT16(&g_vm->_mem[0xb800 * 16 + j + 2]); - s_s[2][k] = READ_LE_UINT16(&g_vm->_mem[0xba00 * 16 + j]); - s_s[3][k] = READ_LE_UINT16(&g_vm->_mem[0xba00 * 16 + j + 2]); + s_s[0][k] = READ_LE_UINT16(&_vm->_mem[0xb800 * 16 + j]); + s_s[1][k] = READ_LE_UINT16(&_vm->_mem[0xb800 * 16 + j + 2]); + s_s[2][k] = READ_LE_UINT16(&_vm->_mem[0xba00 * 16 + j]); + s_s[3][k] = READ_LE_UINT16(&_vm->_mem[0xba00 * 16 + j + 2]); j += 80; ++k; } while (k < 5); @@ -164,10 +164,10 @@ void MouseHandler::showMouse() { k = 0; do { if (imp) { - s_s[i][k] = READ_LE_UINT16(&g_vm->_mem[0xb800 * 16 + j]); + s_s[i][k] = READ_LE_UINT16(&_vm->_mem[0xb800 * 16 + j]); j += 80 - 0x2000; } else { - s_s[i][k] = READ_LE_UINT16(&g_vm->_mem[0xb800 * 16 + j]); + s_s[i][k] = READ_LE_UINT16(&_vm->_mem[0xb800 * 16 + j]); j += 0x2000; } imp = !imp; @@ -182,7 +182,7 @@ void MouseHandler::showMouse() { k = 0; j = 0; do { - s_s[l][k] = g_vm->_mem[0xa000 * 16 + j] + (g_vm->_mem[(0xa000 * 16) + j + 1] << 8); + s_s[l][k] = _vm->_mem[0xa000 * 16 + j] + (_vm->_mem[(0xa000 * 16) + j + 1] << 8); j += 80; ++k; } while (k < 8); @@ -193,7 +193,7 @@ void MouseHandler::showMouse() { j = ((uint)_pos.y >> 1) * 80 + ((uint)_pos.x >> 3); for (i = 0; i <= 5; ++i) { for (k = 0; k <= 3; ++k) - s_s[i][k] = READ_LE_UINT16(&g_vm->_mem[0xb000 * 16 + k * 0x200 + j]); + s_s[i][k] = READ_LE_UINT16(&_vm->_mem[0xb000 * 16 + k * 0x200 + j]); j += 80; } break; @@ -202,8 +202,8 @@ void MouseHandler::showMouse() { k = 0; do { for (i = 0; i <= 3; ++i) { - s_s[k][i + (k << 2)] = READ_LE_UINT16(&g_vm->_mem[0xb800 * 16 + 0x200 * i + j]); - s_s[k + 3][i + (k << 2)] = READ_LE_UINT16(&g_vm->_mem[0xb800 * 16 + 0x200 * i + j + 2]); + s_s[k][i + (k << 2)] = READ_LE_UINT16(&_vm->_mem[0xb800 * 16 + 0x200 * i + j]); + s_s[k + 3][i + (k << 2)] = READ_LE_UINT16(&_vm->_mem[0xb800 * 16 + 0x200 * i + j + 2]); } j += 160; ++k; @@ -219,8 +219,8 @@ void MouseHandler::showMouse() { * @remarks Originally called 'pos_mouse' */ void MouseHandler::setMousePosition(Common::Point newPos) { - if (newPos.x > 314 * g_vm->_resolutionScaler) - newPos.x = 314 * g_vm->_resolutionScaler; + if (newPos.x > 314 * _vm->_resolutionScaler) + newPos.x = 314 * _vm->_resolutionScaler; else if (newPos.x < 0) newPos.x = 0; if (newPos.y > 199) @@ -231,7 +231,7 @@ void MouseHandler::setMousePosition(Common::Point newPos) { return; // Set the new position - g_vm->setMousePos(newPos); + _vm->setMousePos(newPos); } /** @@ -239,9 +239,9 @@ void MouseHandler::setMousePosition(Common::Point newPos) { * @remarks Originally called 'read_pos_mouse' */ void MouseHandler::getMousePosition(int &x, int &y, bool &click) { - x = g_vm->getMousePos().x; - y = g_vm->getMousePos().y; - click = g_vm->getMouseClick(); + x = _vm->getMousePos().x; + y = _vm->getMousePos().y; + click = _vm->getMouseClick(); } /** @@ -257,18 +257,18 @@ void MouseHandler::moveMouse(bool &funct, char &key) { // Set defaults and check pending events funct = false; key = '\377'; - p_key = g_vm->keyPressed(); + p_key = _vm->keyPressed(); // If mouse button clicked, return it - if (g_vm->getMouseClick()) + if (_vm->getMouseClick()) return; // Handle any pending keypresses while (p_key) { - if (g_vm->shouldQuit()) + if (_vm->shouldQuit()) return; - in1 = g_vm->getChar(); + in1 = _vm->getChar(); getMousePosition(cx, cy, click); switch (toupper(in1)) { case '4': @@ -292,27 +292,27 @@ void MouseHandler::moveMouse(bool &funct, char &key) { cy = 190; break; case '9': - cx = 315 * g_vm->_resolutionScaler; + cx = 315 * _vm->_resolutionScaler; cy = 1; break; case '3': cy = 190; - cx = 315 * g_vm->_resolutionScaler; + cx = 315 * _vm->_resolutionScaler; break; case '5': cy = 100; - cx = 155 * g_vm->_resolutionScaler; + cx = 155 * _vm->_resolutionScaler; break; case ' ': case '\15': - g_vm->setMouseClick(true); + _vm->setMouseClick(true); return; break; case '\33': - p_key = g_vm->keyPressed(); + p_key = _vm->keyPressed(); if (p_key) { - in2 = g_vm->getChar(); + in2 = _vm->getChar(); if ((in2 >= ';') && (in2 <= 'D')) { funct = true; @@ -355,31 +355,31 @@ void MouseHandler::moveMouse(bool &funct, char &key) { } break; case 'I': - cx = g_vm->_resolutionScaler * 32; + cx = _vm->_resolutionScaler * 32; cy = 8; break; case 'D': - cx = 80 * g_vm->_resolutionScaler; + cx = 80 * _vm->_resolutionScaler; cy = 8; break; case 'A': - cx = 126 * g_vm->_resolutionScaler; + cx = 126 * _vm->_resolutionScaler; cy = 8; break; case 'S': - cx = 174 * g_vm->_resolutionScaler; + cx = 174 * _vm->_resolutionScaler; cy = 8; break; case 'P': - cx = 222 * g_vm->_resolutionScaler; + cx = 222 * _vm->_resolutionScaler; cy = 8; break; case 'F': - cx = g_vm->_resolutionScaler * 270; + cx = _vm->_resolutionScaler * 270; cy = 8; break; case '\23': - g_vm->_soundOff = !g_vm->_soundOff; + _vm->_soundOff = !_vm->_soundOff; return; break; case '\24': // ^T => mode tandy @@ -401,7 +401,7 @@ void MouseHandler::moveMouse(bool &funct, char &key) { } setMousePosition(Common::Point(cx, cy)); - p_key = g_vm->keyPressed(); + p_key = _vm->keyPressed(); } } @@ -420,4 +420,8 @@ bool MouseHandler::isMouseIn(Common::Rect r) { return false; } +void MouseHandler::setParent(MortevielleEngine *vm) { + _vm = vm; +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/mouse.h b/engines/mortevielle/mouse.h index 58e3fc78d0..1b9856e2c4 100644 --- a/engines/mortevielle/mouse.h +++ b/engines/mortevielle/mouse.h @@ -31,14 +31,18 @@ #include "common/rect.h" namespace Mortevielle { +class MortevielleEngine; class MouseHandler { private: + MortevielleEngine *_vm; + int s_s[12][6]; int _counter; public: Common::Point _pos; + void setParent(MortevielleEngine *vm); void initMouse(); void hideMouse(); void showMouse(); -- cgit v1.2.3 From a3f77d63df7d462d8c9c8e85cca9ccc84f5f1e70 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 25 Jun 2013 21:49:30 +0200 Subject: MORTEVIELLE: Replace g_vm in TextHandler --- engines/mortevielle/mortevielle.cpp | 1 + engines/mortevielle/outtext.cpp | 108 +++++++++++++++++++----------------- engines/mortevielle/outtext.h | 3 + 3 files changed, 60 insertions(+), 52 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 7834366dd9..104a340317 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -77,6 +77,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _debugger.setParent(this); _screenSurface.setParent(this); _mouse.setParent(this); + _text.setParent(this); _lastGameFrame = 0; _mouseClick = false; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 4bdfcb4699..7778eb3484 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -59,8 +59,8 @@ void TextHandler::displayStr(Common::String inputStr, int x, int y, int dx, int // Safeguard: add $ just in case inputStr += '$'; - g_vm->_screenSurface.putxy(x, y); - if (g_vm->_resolutionScaler == 1) + _vm->_screenSurface.putxy(x, y); + if (_vm->_resolutionScaler == 1) tab = 10; else tab = 6; @@ -76,43 +76,43 @@ void TextHandler::displayStr(Common::String inputStr, int x, int y, int dx, int while (!stringParsed) { switch (inputStr[p]) { case '@': - g_vm->_screenSurface.drawString(s, typ); + _vm->_screenSurface.drawString(s, typ); s = ""; ++p; xc = x; yc += 6; - g_vm->_screenSurface.putxy(xc, yc); + _vm->_screenSurface.putxy(xc, yc); break; case ' ': s += ' '; xc += tab; ++p; if (nextWord(p, inputStr.c_str(), tab) + xc > xf) { - g_vm->_screenSurface.drawString(s, typ); + _vm->_screenSurface.drawString(s, typ); s = ""; xc = x; yc += 6; if (yc > yf) { - while (!g_vm->keyPressed()) + while (!_vm->keyPressed()) ; i = y; do { j = x; do { - g_vm->_screenSurface.putxy(j, i); - g_vm->_screenSurface.drawString(" ", 0); + _vm->_screenSurface.putxy(j, i); + _vm->_screenSurface.drawString(" ", 0); j += 6; } while (j <= xf); i += 6; } while (i <= yf); yc = y; } - g_vm->_screenSurface.putxy(xc, yc); + _vm->_screenSurface.putxy(xc, yc); } break; case '$': stringParsed = true; - g_vm->_screenSurface.drawString(s, typ); + _vm->_screenSurface.drawString(s, typ); break; default: s += inputStr[p]; @@ -144,14 +144,14 @@ void TextHandler::loadDesFile(Common::String filename, int32 skipSize, int lengt int totalLength = length + remainingSkipSize; int memIndx = 0x6000 * 16; while (totalLength > 0) { - f.read(&g_vm->_mem[memIndx], 128); + f.read(&_vm->_mem[memIndx], 128); totalLength -= 128; memIndx += 128; } f.close(); for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) - g_vm->_mem[0x7000 * 16 + i - remainingSkipSize] = g_vm->_mem[0x6000 * 16 + i]; + _vm->_mem[0x7000 * 16 + i - remainingSkipSize] = _vm->_mem[0x6000 * 16 + i]; } /** @@ -175,14 +175,14 @@ void TextHandler::loadAniFile(Common::String filename, int32 skipSize, int lengt int fullLength = length + remainingSkipSize; int memIndx = 0x6000 * 16; while (fullLength > 0) { - f.read(&g_vm->_mem[memIndx], 128); + f.read(&_vm->_mem[memIndx], 128); fullLength -= 128; memIndx += 128; } f.close(); for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) - g_vm->_mem[kAdrAni * 16 + i - remainingSkipSize] = g_vm->_mem[0x6000 * 16 + i]; + _vm->_mem[kAdrAni * 16 + i - remainingSkipSize] = _vm->_mem[0x6000 * 16 + i]; } void TextHandler::taffich() { @@ -195,60 +195,60 @@ void TextHandler::taffich() { int32 lgt; int alllum[16]; - int a = g_vm->_caff; + int a = _vm->_caff; if ((a >= 153) && (a <= 161)) a = tran2[a - 153]; else if ((a >= 136) && (a <= 140)) a = tran1[a - 136]; int b = a; - if (g_vm->_maff == a) + if (_vm->_maff == a) return; switch (a) { case 16: - g_vm->_coreVar._pctHintFound[9] = '*'; - g_vm->_coreVar._availableQuestion[42] = '*'; + _vm->_coreVar._pctHintFound[9] = '*'; + _vm->_coreVar._availableQuestion[42] = '*'; break; case 20: - g_vm->_coreVar._availableQuestion[39] = '*'; - if (g_vm->_coreVar._availableQuestion[36] == '*') { - g_vm->_coreVar._pctHintFound[3] = '*'; - g_vm->_coreVar._availableQuestion[38] = '*'; + _vm->_coreVar._availableQuestion[39] = '*'; + if (_vm->_coreVar._availableQuestion[36] == '*') { + _vm->_coreVar._pctHintFound[3] = '*'; + _vm->_coreVar._availableQuestion[38] = '*'; } break; case 24: - g_vm->_coreVar._availableQuestion[37] = '*'; + _vm->_coreVar._availableQuestion[37] = '*'; break; case 30: - g_vm->_coreVar._availableQuestion[9] = '*'; + _vm->_coreVar._availableQuestion[9] = '*'; break; case 31: // Coat of arms - g_vm->_coreVar._pctHintFound[4] = '*'; - g_vm->_coreVar._availableQuestion[35] = '*'; + _vm->_coreVar._pctHintFound[4] = '*'; + _vm->_coreVar._availableQuestion[35] = '*'; break; case 118: - g_vm->_coreVar._availableQuestion[41] = '*'; + _vm->_coreVar._availableQuestion[41] = '*'; break; case 143: - g_vm->_coreVar._pctHintFound[1] = '*'; + _vm->_coreVar._pctHintFound[1] = '*'; break; case 150: - g_vm->_coreVar._availableQuestion[34] = '*'; + _vm->_coreVar._availableQuestion[34] = '*'; break; case 151: - g_vm->_coreVar._pctHintFound[2] = '*'; + _vm->_coreVar._pctHintFound[2] = '*'; break; default: break; } - g_vm->_destinationOk = true; - g_vm->_mouse.hideMouse(); + _vm->_destinationOk = true; + _vm->_mouse.hideMouse(); lgt = 0; Common::String filename; if ((a != 50) && (a != 51)) { - g_vm->_maff = a; + _vm->_maff = a; if (a == 159) a = 86; else if (a > 140) @@ -268,28 +268,28 @@ void TextHandler::taffich() { npal = a; for (cx = 0; cx <= (a - 1); ++cx) - lgt += g_vm->_fxxBuffer[cx]; - handle = g_vm->_fxxBuffer[a]; + lgt += _vm->_fxxBuffer[cx]; + handle = _vm->_fxxBuffer[a]; filename = "DXX.mor"; } else { - if (g_vm->getLanguage() == Common::DE_DEU) + if (_vm->getLanguage() == Common::DE_DEU) filename = "DZZALL"; else filename = "DZZ.mor"; - handle = g_vm->_fxxBuffer[87]; + handle = _vm->_fxxBuffer[87]; if (a == 51) { lgt = handle; - handle = g_vm->_fxxBuffer[88]; + handle = _vm->_fxxBuffer[88]; } - g_vm->_maff = a; + _vm->_maff = a; npal = a + 37; } loadDesFile(filename, lgt, handle); - if (g_vm->_currGraphicalDevice == MODE_HERCULES) { + if (_vm->_currGraphicalDevice == MODE_HERCULES) { for (int i = 0; i <= 15; ++i) { - int palh = READ_LE_UINT16(&g_vm->_mem[(0x7000 * 16) + ((i + 1) << 1)]); + int palh = READ_LE_UINT16(&_vm->_mem[(0x7000 * 16) + ((i + 1) << 1)]); alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); } for (int i = 0; i <= 15; ++i) { @@ -297,12 +297,12 @@ void TextHandler::taffich() { for (int j = 0; j <= 15; ++j) if (alllum[j] > alllum[k]) k = j; - g_vm->_mem[(0x7000 * 16) + 2 + (k << 1)] = _rang[i]; + _vm->_mem[(0x7000 * 16) + 2 + (k << 1)] = _rang[i]; alllum[k] = -1; } } - g_vm->_numpal = npal; - g_vm->setPal(npal); + _vm->_numpal = npal; + _vm->setPal(npal); if ((b < 15) || (b == 16) || (b == 17) || (b == 24) || (b == 26) || (b == 50)) { lgt = 0; @@ -314,8 +314,8 @@ void TextHandler::taffich() { else if (b > 15) --b; for (cx = 0; cx <= (b - 1); ++cx) - lgt += g_vm->_fxxBuffer[cx + 89]; - handle = g_vm->_fxxBuffer[b + 89]; + lgt += _vm->_fxxBuffer[cx + 89]; + handle = _vm->_fxxBuffer[b + 89]; filename = "AXX.mor"; } else if (b == 50) { filename = "AZZ.mor"; @@ -323,14 +323,18 @@ void TextHandler::taffich() { } loadAniFile(filename, lgt, handle); } - g_vm->_mouse.showMouse(); - if ((a < 27) && ((g_vm->_maff < 27) || (g_vm->_coreVar._currPlace == LANDING)) && (g_vm->_msg[4] != OPCODE_ENTER)) { + _vm->_mouse.showMouse(); + if ((a < 27) && ((_vm->_maff < 27) || (_vm->_coreVar._currPlace == LANDING)) && (_vm->_msg[4] != OPCODE_ENTER)) { if ((a == 13) || (a == 14)) - g_vm->displayAloneText(); - else if (!g_vm->_blo) - g_vm->getPresence(g_vm->_coreVar._currPlace); - g_vm->_savedBitIndex = 0; + _vm->displayAloneText(); + else if (!_vm->_blo) + _vm->getPresence(_vm->_coreVar._currPlace); + _vm->_savedBitIndex = 0; } } +void TextHandler::setParent(MortevielleEngine *vm) { + _vm = vm; +} + } // End of namespace Mortevielle diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index 25162981c6..a4b078682a 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -31,13 +31,16 @@ #include "common/str.h" namespace Mortevielle { +class MortevielleEngine; const int kAdrAni = 0x7314; class TextHandler { private: + MortevielleEngine *_vm; int nextWord(int p, const char *ch, int &tab); public: + void setParent(MortevielleEngine *vm); void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ); void loadDesFile(Common::String filename, int32 passe, int long_); void loadAniFile(Common::String filename, int32 skipSize, int length); -- cgit v1.2.3 From 1989cc9911709ccddf3999b772e786ec79f8fc3f Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 26 Jun 2013 01:06:22 +0200 Subject: MORTEVIELLE: Replace g_vm in SoundManager --- engines/mortevielle/mortevielle.cpp | 1 + engines/mortevielle/sound.cpp | 7 +++++-- engines/mortevielle/sound.h | 3 +++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 104a340317..54bd0301aa 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -78,6 +78,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _screenSurface.setParent(this); _mouse.setParent(this); _text.setParent(this); + _soundManager.setParent(this); _lastGameFrame = 0; _mouseClick = false; diff --git a/engines/mortevielle/sound.cpp b/engines/mortevielle/sound.cpp index bb85221d75..478af41c87 100644 --- a/engines/mortevielle/sound.cpp +++ b/engines/mortevielle/sound.cpp @@ -192,10 +192,13 @@ void SoundManager::musyc(tablint &tb, int nbseg, int att) { } // Keep waiting until the song has been finished - while (_speakerStream->isPlaying() && !g_vm->shouldQuit()) { - g_vm->delay(10); + while (_speakerStream->isPlaying() && !_vm->shouldQuit()) { + _vm->delay(10); } #endif } +void SoundManager::setParent(MortevielleEngine *vm) { + _vm = vm; +} } // End of namespace Mortevielle diff --git a/engines/mortevielle/sound.h b/engines/mortevielle/sound.h index 675fc78f78..a47e8db32e 100644 --- a/engines/mortevielle/sound.h +++ b/engines/mortevielle/sound.h @@ -34,6 +34,7 @@ #include "common/queue.h" namespace Mortevielle { +class MortevielleEngine; typedef int tablint[256]; @@ -93,6 +94,7 @@ public: class SoundManager { private: + MortevielleEngine *_vm; Audio::Mixer *_mixer; PCSpeaker *_speakerStream; Audio::SoundHandle _speakerHandle; @@ -100,6 +102,7 @@ public: SoundManager(Audio::Mixer *mixer); ~SoundManager(); + void setParent(MortevielleEngine *vm); void playNote(int frequency, int32 length); void decodeMusic(const byte *PSrc, byte *PDest, int NbreSeg); -- cgit v1.2.3 From 5086153512d78e0ee5b46808bbf2ba7a8259ab54 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 26 Jun 2013 07:42:49 +0200 Subject: MORTEVIELLE: Replace g_vm in SpeechManager --- engines/mortevielle/mortevielle.cpp | 1 + engines/mortevielle/speech.cpp | 31 +++++++++++++++++-------------- engines/mortevielle/speech.h | 3 +++ 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 54bd0301aa..6199252674 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -79,6 +79,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _mouse.setParent(this); _text.setParent(this); _soundManager.setParent(this); + _speechManager.setParent(this); _lastGameFrame = 0; _mouseClick = false; diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 853d6baae0..1fe130af83 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -81,7 +81,7 @@ void SpeechManager::spfrac(int wor) { } void SpeechManager::charg_car(int &currWordNumb) { - int wor = swap(READ_LE_UINT16(&g_vm->_mem[kAdrWord + currWordNumb])); + int wor = swap(READ_LE_UINT16(&_vm->_mem[kAdrWord + currWordNumb])); int int_ = wor & 0x3f; // 63 if ((int_ >= 0) && (int_ <= 13)) { @@ -121,7 +121,7 @@ void SpeechManager::charg_car(int &currWordNumb) { void SpeechManager::entroct(byte o) { - g_vm->_mem[kAdrTroct * 16 + _ptr_oct] = o; + _vm->_mem[kAdrTroct * 16 + _ptr_oct] = o; ++_ptr_oct; } @@ -134,7 +134,7 @@ void SpeechManager::cctable(tablint &t) { tb[0] = 0; for (int k = 0; k <= 255; ++k) { - tb[k + 1] = g_vm->_addFix + tb[k]; + tb[k + 1] = _vm->_addFix + tb[k]; t[255 - k] = abs((int)tb[k] + 1); } } @@ -143,7 +143,7 @@ void SpeechManager::regenbruit() { int i = kOffsetB3 + 8590; int j = 0; do { - _cfiphBuffer[j] = READ_LE_UINT16(&g_vm->_mem[kAdrNoise3 + i]); + _cfiphBuffer[j] = READ_LE_UINT16(&_vm->_mem[kAdrNoise3 + i]); i += 2; ++j; } while (i < kOffsetB3 + 8790); @@ -159,9 +159,9 @@ void SpeechManager::loadMusicSound() { if (!f.open("sonmus.mor")) error("Missing file - sonmus.mor"); - f.read(&g_vm->_mem[0x7414 * 16 + 0], 273); + f.read(&_vm->_mem[0x7414 * 16 + 0], 273); - g_vm->_soundManager.decodeMusic(&g_vm->_mem[0x7414 * 16], &g_vm->_mem[kAdrNoise * 16], 273); + _vm->_soundManager.decodeMusic(&_vm->_mem[0x7414 * 16], &_vm->_mem[kAdrNoise * 16], 273); f.close(); } @@ -192,10 +192,10 @@ void SpeechManager::loadNoise() { if (!f.open("bruits")) //Translation: "noise" error("Missing file - bruits"); - f.read(&g_vm->_mem[kAdrNoise * 16 + 0], 250); + f.read(&_vm->_mem[kAdrNoise * 16 + 0], 250); for (i = 0; i <= 19013; ++i) - g_vm->_mem[kAdrNoise * 16 + 32000 + i] = g_vm->_mem[kAdrNoise5 + i]; - f.read(&g_vm->_mem[kAdrNoise1 * 16 + kOffsetB1], 149); + _vm->_mem[kAdrNoise * 16 + 32000 + i] = _vm->_mem[kAdrNoise5 + i]; + f.read(&_vm->_mem[kAdrNoise1 * 16 + kOffsetB1], 149); f.close(); } @@ -531,7 +531,7 @@ void SpeechManager::handlePhoneme() { int endPos = swap(_cfiphBuffer[_phonemeNumb]) + deca[_typlec]; int wordCount = endPos - startPos; for (int i = (uint)startPos >> 1, currWord = 0; i < (int)((uint)endPos >> 1); i++, currWord += 2) - WRITE_LE_UINT16(&g_vm->_mem[kAdrWord + currWord], _cfiphBuffer[i]); + WRITE_LE_UINT16(&_vm->_mem[kAdrWord + currWord], _cfiphBuffer[i]); _ptr_oct = 0; int currWord = 0; @@ -556,7 +556,7 @@ void SpeechManager::startSpeech(int rep, int ht, int typ) { int savph[501]; int tempo; - if (g_vm->_soundOff) + if (_vm->_soundOff) return; _phonemeNumb = rep; @@ -570,7 +570,7 @@ void SpeechManager::startSpeech(int rep, int ht, int typ) { tempo = kTempoF; else tempo = kTempoM; - g_vm->_addFix = (float)((tempo - 8)) / 256; + _vm->_addFix = (float)((tempo - 8)) / 256; cctable(_tbi); switch (typ) { case 1: @@ -586,13 +586,16 @@ void SpeechManager::startSpeech(int rep, int ht, int typ) { break; } handlePhoneme(); - g_vm->_soundManager.litph(_tbi, typ, tempo); + _vm->_soundManager.litph(_tbi, typ, tempo); if (_typlec != 0) for (int i = 0; i <= 500; ++i) { _cfiphBuffer[i] = savph[i]; _mlec = _typlec; } - g_vm->setPal(g_vm->_numpal); + _vm->setPal(_vm->_numpal); } +void SpeechManager::setParent(MortevielleEngine *vm) { + _vm = vm; +} } // End of namespace Mortevielle diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h index c27f2bfc15..4f98c4c3d7 100644 --- a/engines/mortevielle/speech.h +++ b/engines/mortevielle/speech.h @@ -66,6 +66,8 @@ struct SpeechQueue { class SpeechManager { private: + MortevielleEngine *_vm; + int _typlec; int _phonemeNumb; @@ -78,6 +80,7 @@ public: int _mlec; SpeechManager(); + void setParent(MortevielleEngine *vm); void spfrac(int wor); void charg_car(int &currWordNumb); void entroct(byte o); -- cgit v1.2.3 From cf26edf3854ec2441e9ce5e11fada17cfc530754 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 26 Jun 2013 07:51:11 +0200 Subject: MORTEVIELLE: Remove some useless g_vm --- engines/mortevielle/actions.cpp | 2 +- engines/mortevielle/mortevielle.cpp | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 47ffb2e4ba..3a27c27069 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -1408,7 +1408,7 @@ void MortevielleEngine::fctDiscuss() { do { bool dummyFl; _mouse.moveMouse(dummyFl, retKey); - if (g_vm->shouldQuit()) + if (shouldQuit()) return; _mouse.getMousePosition(x, y, click); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 6199252674..c6cafac9d6 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -582,12 +582,12 @@ void MortevielleEngine::showIntroduction() { f3f8::aff50(false); _speechManager._mlec = 0; f3f8::checkForF8(142, false); - if (g_vm->shouldQuit()) + if (shouldQuit()) return; f3f8::ani50(); f3f8::checkForF8(143, true); - if (g_vm->shouldQuit()) + if (shouldQuit()) return; // TODO: Once music (Amiga/Atari ports) is implemented, only use the below delay if music is turned off @@ -619,7 +619,7 @@ void MortevielleEngine::mainGame() { // Loop to play the game do { playGame(); - if (g_vm->shouldQuit()) + if (shouldQuit()) return; } while (!_quitGame); } @@ -634,7 +634,7 @@ void MortevielleEngine::playGame() { // Loop handling actions until the game has to be quit, or show the lose or end sequence do { handleAction(); - if (g_vm->shouldQuit()) + if (shouldQuit()) return; } while (!((_quitGame) || (_endGame) || (_loseGame))); @@ -670,7 +670,7 @@ void MortevielleEngine::handleAction() { _menu.updateMenu(); prepareRoom(); _mouse.moveMouse(funct, inkey); - if (g_vm->shouldQuit()) + if (shouldQuit()) return; ++temps; } while (!((_menu._menuSelected) || (temps > lim) || (funct) || (_anyone))); @@ -739,7 +739,7 @@ void MortevielleEngine::handleAction() { handleOpcode(); if ((_controlMenu == 0) && (! _loseGame) && (! _endGame)) { - g_vm->_text.taffich(); + _text.taffich(); if (_destinationOk) { _destinationOk = false; drawPicture(); @@ -1759,7 +1759,7 @@ void MortevielleEngine::startDialog(int16 rep) { do { _speechManager.startSpeech(rep, haut[_caff - 69], 0); key = f3f8::waitForF3F8(); - if (g_vm->shouldQuit()) + if (shouldQuit()) return; } while (key != 66); hirs(); @@ -3395,7 +3395,7 @@ void MortevielleEngine::testKey(bool d) { prepareRoom(); quest = keyPressed(); _mouse.getMousePosition(x, y, click); - if (g_vm->shouldQuit()) + if (shouldQuit()) return; } while (!(quest || (click) || (d && _anyone))); if (quest) @@ -3631,7 +3631,7 @@ void MortevielleEngine::tfleche() { do { _mouse.moveMouse(qust, touch); - if (g_vm->shouldQuit()) + if (shouldQuit()) return; if (getMouseClick()) -- cgit v1.2.3 From 7aceea722161038fa892f89d81479c06c5ab6a18 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 26 Jun 2013 08:29:09 +0200 Subject: MORTEVIELLE: Introduce DialogManager and get rid of static functions --- engines/mortevielle/actions.cpp | 20 ++++++++++---------- engines/mortevielle/dialogs.cpp | 27 +++++++++++++++------------ engines/mortevielle/dialogs.h | 34 +++++++++++++++------------------- engines/mortevielle/mortevielle.cpp | 19 ++++++++++--------- engines/mortevielle/mortevielle.h | 3 ++- 5 files changed, 52 insertions(+), 51 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 3a27c27069..9026df8470 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -701,12 +701,12 @@ void MortevielleEngine::fctPlace() { _speechManager.startSpeech(6, -9, 1); // Do you want to enter the hidden passage? - int answer = Alert::show(getEngineString(S_YES_NO), 1); + int answer = _dialogManager.show(getEngineString(S_YES_NO), 1); if (answer == 1) { Common::String alertTxt = getString(582); - Alert::show(alertTxt, 1); + _dialogManager.show(alertTxt, 1); - bool enterPassageFl = KnowledgeCheck::show(); + bool enterPassageFl = _dialogManager.showKnowledgeCheck(); _mouse.hideMouse(); hirs(); drawRightFrame(); @@ -731,7 +731,7 @@ void MortevielleEngine::fctPlace() { aniof(1, 2); aniof(1, 1); alertTxt = getString(577); - Alert::show(alertTxt, 1); + _dialogManager.show(alertTxt, 1); aniof(2, 1); _crep = 166; } @@ -800,7 +800,7 @@ void MortevielleEngine::fctTurn() { if ((_coreVar._currPlace == ATTIC) && (_coreVar._atticRodHoleObjectId == 159) && (_coreVar._atticBallHoleObjectId == 141)) { handleDescriptionText(2, 167); _speechManager.startSpeech(7, 9, 1); - int answer = Alert::show(getEngineString(S_YES_NO), 1); + int answer = _dialogManager.show(getEngineString(S_YES_NO), 1); if (answer == 1) _endGame = true; else @@ -810,7 +810,7 @@ void MortevielleEngine::fctTurn() { handleDescriptionText(2, 175); clearVerbBar(); _speechManager.startSpeech(6, -9, 1); - int answer = Alert::show(getEngineString(S_YES_NO), 1); + int answer = _dialogManager.show(getEngineString(S_YES_NO), 1); if (answer == 1) { _coreVar._currPlace = CRYPT; affrep(); @@ -915,7 +915,7 @@ void MortevielleEngine::fctKnock() { displayTextInVerbBar(getEngineString(S_HIT)); if (_coreVar._currPlace == LANDING) { - Alert::show(getEngineString(S_BEFORE_USE_DEP_MENU), 1); + _dialogManager.show(getEngineString(S_BEFORE_USE_DEP_MENU), 1); return; } @@ -1225,7 +1225,7 @@ void MortevielleEngine::fctSleep() { if (h > 23) h = 0; prepareRoom(); - answer = Alert::show(getEngineString(S_YES_NO), 1); + answer = _dialogManager.show(getEngineString(S_YES_NO), 1); _anyone = false; } while (answer != 1); _crep = 998; @@ -1315,7 +1315,7 @@ void MortevielleEngine::fctWait() { return; } handleDescriptionText(2, 102); - answer = Alert::show(getEngineString(S_YES_NO), 1); + answer = _dialogManager.show(getEngineString(S_YES_NO), 1); } while (answer != 2); _crep = 998; if (!_anyone) @@ -1632,7 +1632,7 @@ void MortevielleEngine::askRestart() { _day = 0; handleDescriptionText(2, 180); - int answer = Alert::show(getEngineString(S_YES_NO), 1); + int answer = _dialogManager.show(getEngineString(S_YES_NO), 1); _quitGame = (answer != 1); } diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 90c53d1648..4c7fddfccd 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -38,7 +38,7 @@ namespace Mortevielle { * Alert function - Show * @remarks Originally called 'do_alert' */ -int Alert::show(const Common::String &msg, int n) { +int DialogManager::show(const Common::String &msg, int n) { // Make a copy of the current screen surface for later restore g_vm->_backgroundSurface.copyFrom(g_vm->_screenSurface); @@ -188,7 +188,7 @@ int Alert::show(const Common::String &msg, int n) { * Alert function - Decode Alert Details * @remarks Originally called 'decod' */ -void Alert::decodeAlertDetails(Common::String inputStr, int &choiceNumb, int &lineNumb, int &col, Common::String &choiceStr, Common::String &choiceListStr) { +void DialogManager::decodeAlertDetails(Common::String inputStr, int &choiceNumb, int &lineNumb, int &col, Common::String &choiceStr, Common::String &choiceListStr) { // The second character of the string contains the number of choices choiceNumb = atoi(inputStr.c_str() + 1); @@ -228,7 +228,7 @@ void Alert::decodeAlertDetails(Common::String inputStr, int &choiceNumb, int &li col *= 10; } -void Alert::setPosition(int ji, int coldep, int esp) { +void DialogManager::setPosition(int ji, int coldep, int esp) { g_vm->_screenSurface.putxy(coldep + (40 + esp) * (ji - 1), 98); } @@ -236,7 +236,7 @@ void Alert::setPosition(int ji, int coldep, int esp) { * Alert function - Draw Alert Box * @remarks Originally called 'fait_boite' */ -void Alert::drawAlertBox(int lidep, int nli, int tx) { +void DialogManager::drawAlertBox(int lidep, int nli, int tx) { if (tx > 640) tx = 640; int x = 320 - ((uint)tx / 2); @@ -252,7 +252,7 @@ void Alert::drawAlertBox(int lidep, int nli, int tx) { * Alert function - Set Button Text * @remarks Originally called 'fait_choix' */ -void Alert::setButtonText(Common::String c, int coldep, int nbcase, Common::String *str, int esp) { +void DialogManager::setButtonText(Common::String c, int coldep, int nbcase, Common::String *str, int esp) { int i = 1; int x = coldep; for (int l = 1; l <= nbcase; ++l) { @@ -283,7 +283,7 @@ void Alert::setButtonText(Common::String c, int coldep, int nbcase, Common::Stri /** * Questions asked before entering the hidden passage */ -bool KnowledgeCheck::show() { +bool DialogManager::showKnowledgeCheck() { const int textIndexArr[10] = {511, 516, 524, 531, 545, 552, 559, 563, 570, 576}; const int correctAnswerArr[10] = {4, 7, 1, 6, 4, 4, 2, 5, 3, 1 }; @@ -402,7 +402,7 @@ bool KnowledgeCheck::show() { /** * Draw the F3/F8 dialog */ -void f3f8::draw() { +void DialogManager::drawF3F8() { Common::String f3 = g_vm->getEngineString(S_F3); Common::String f8 = g_vm->getEngineString(S_F8); @@ -425,7 +425,7 @@ void f3f8::draw() { * Graphical Device if modified * @remarks Originally called 'diver' */ -void f3f8::checkForF8(int SpeechNum, bool drawAni50Fl) { +void DialogManager::checkForF8(int SpeechNum, bool drawAni50Fl) { g_vm->testKeyboard(); do { g_vm->_speechManager.startSpeech(SpeechNum, 0, 0); @@ -445,7 +445,7 @@ void f3f8::checkForF8(int SpeechNum, bool drawAni50Fl) { * Alert function - Loop until F3 or F8 is pressed * @remarks Originally called 'atf3f8' */ -int f3f8::waitForF3F8() { +int DialogManager::waitForF3F8() { int key; do { @@ -457,7 +457,7 @@ int f3f8::waitForF3F8() { return key; } -void f3f8::aff50(bool drawAni50Fl) { +void DialogManager::aff50(bool drawAni50Fl) { g_vm->_caff = 50; g_vm->_maff = 0; g_vm->_text.taffich(); @@ -468,10 +468,10 @@ void f3f8::aff50(bool drawAni50Fl) { g_vm->handleDescriptionText(2, kDialogStringIndex + 142); // Draw the f3/f8 dialog - draw(); + drawF3F8(); } -void f3f8::ani50() { +void DialogManager::ani50() { g_vm->_crep = g_vm->animof(1, 1); g_vm->pictout(kAdrAni, g_vm->_crep, 63, 12); g_vm->_crep = g_vm->animof(2, 1); @@ -480,4 +480,7 @@ void f3f8::ani50() { g_vm->handleDescriptionText(2, kDialogStringIndex + 143); } +void DialogManager::setParent(MortevielleEngine *vm) { + _vm = vm; +} } // End of namespace Mortevielle diff --git a/engines/mortevielle/dialogs.h b/engines/mortevielle/dialogs.h index 9b980af379..35c3c34cac 100644 --- a/engines/mortevielle/dialogs.h +++ b/engines/mortevielle/dialogs.h @@ -32,6 +32,7 @@ #include "common/str.h" namespace Mortevielle { +class MortevielleEngine; static const int NUM_LINES = 7; const int kMaxHotspots = 14; @@ -41,28 +42,23 @@ struct Hotspot { bool _enabled; }; -class Alert { +class DialogManager { private: - static void decodeAlertDetails(Common::String inputStr, int &choiceNumb, int &lineNumb, int &col, Common::String &choiceStr, Common::String &choiceListStr); - static void setPosition(int ji, int coldep, int esp); - static void drawAlertBox(int lidep, int nli, int tx); - static void setButtonText(Common::String c, int coldep, int nbcase, Common::String *str, int esp); -public: - static int show(const Common::String &msg, int n); -}; - -class KnowledgeCheck { -public: - static bool show(); -}; + MortevielleEngine *_vm; -class f3f8 { + void decodeAlertDetails(Common::String inputStr, int &choiceNumb, int &lineNumb, int &col, Common::String &choiceStr, Common::String &choiceListStr); + void setPosition(int ji, int coldep, int esp); + void drawAlertBox(int lidep, int nli, int tx); + void setButtonText(Common::String c, int coldep, int nbcase, Common::String *str, int esp); public: - static void draw(); - static void checkForF8(int SpeechNum, bool drawAni50Fl); - static int waitForF3F8(); - static void aff50(bool drawAni50Fl); - static void ani50(); + void setParent(MortevielleEngine *vm); + int show(const Common::String &msg, int n); + void drawF3F8(); + void checkForF8(int SpeechNum, bool drawAni50Fl); + int waitForF3F8(); + void aff50(bool drawAni50Fl); + void ani50(); + bool showKnowledgeCheck(); }; } // End of namespace Mortevielle diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index c6cafac9d6..95750f5c4a 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -75,6 +75,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _soundManager(_mixer) { g_vm = this; _debugger.setParent(this); + _dialogManager.setParent(this); _screenSurface.setParent(this); _mouse.setParent(this); _text.setParent(this); @@ -579,14 +580,14 @@ Common::Error MortevielleEngine::run() { * Show the game introduction */ void MortevielleEngine::showIntroduction() { - f3f8::aff50(false); + _dialogManager.aff50(false); _speechManager._mlec = 0; - f3f8::checkForF8(142, false); + _dialogManager.checkForF8(142, false); if (shouldQuit()) return; - f3f8::ani50(); - f3f8::checkForF8(143, true); + _dialogManager.ani50(); + _dialogManager.checkForF8(143, true); if (shouldQuit()) return; @@ -689,7 +690,7 @@ void MortevielleEngine::handleAction() { if (_menu._menuSelected && (_msg[3] == MENU_LOAD)) _savegameManager.loadGame((_msg[4] & 15) - 1); if (inkey == '\103') { /* F9 */ - temps = Alert::show(_hintPctMessage, 1); + temps = _dialogManager.show(_hintPctMessage, 1); return; } else if (inkey == '\77') { if ((_menuOpcode != OPCODE_NONE) && ((_msg[3] == MENU_ACTION) || (_msg[3] == MENU_SELF))) { @@ -1753,12 +1754,12 @@ void MortevielleEngine::startDialog(int16 rep) { _mouse.hideMouse(); Common::String dialogStr = getString(rep + kDialogStringIndex); _text.displayStr(dialogStr, 230, 4, 65, 24, 5); - f3f8::draw(); + _dialogManager.drawF3F8(); key = 0; do { _speechManager.startSpeech(rep, haut[_caff - 69], 0); - key = f3f8::waitForF3F8(); + key = _dialogManager.waitForF3F8(); if (shouldQuit()) return; } while (key != 66); @@ -2164,7 +2165,7 @@ int MortevielleEngine::getRandomNumber(int minval, int maxval) { * @remarks Originally called 'aldepl' */ void MortevielleEngine::showMoveMenuAlert() { - Alert::show(getEngineString(S_USE_DEP_MENU), 1); + _dialogManager.show(getEngineString(S_USE_DEP_MENU), 1); } /** @@ -3640,7 +3641,7 @@ void MortevielleEngine::tfleche() { } while (!(qust || inRect || _anyone)); if (qust && (touch == '\103')) - Alert::show(_hintPctMessage, 1); + _dialogManager.show(_hintPctMessage, 1); } while (!((touch == '\73') || ((touch == '\104') && (_x != 0) && (_y != 0)) || (_anyone) || (inRect))); if (touch == '\73') diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index bdf28e4514..9facc5ef86 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -38,6 +38,7 @@ #include "common/error.h" #include "graphics/surface.h" #include "mortevielle/debugger.h" +#include "mortevielle/dialogs.h" #include "mortevielle/graphics.h" #include "mortevielle/menu.h" #include "mortevielle/mouse.h" @@ -487,6 +488,7 @@ public: Menu _menu; MouseHandler _mouse; TextHandler _text; + DialogManager _dialogManager; MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc); ~MortevielleEngine(); @@ -528,7 +530,6 @@ public: void pictout(int seg, int dep, int x, int y); void sauvecr(int y, int dy); void charecr(int y, int dy); - }; extern MortevielleEngine *g_vm; -- cgit v1.2.3 From ac387835e4527c1814919093b4e4bc9798d5742d Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 26 Jun 2013 08:30:47 +0200 Subject: MORTEVIELLE: Use _vm instead of g_vm in DialogManager --- engines/mortevielle/dialogs.cpp | 178 ++++++++++++++++++++-------------------- 1 file changed, 89 insertions(+), 89 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 4c7fddfccd..1fadf1eaab 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -40,13 +40,13 @@ namespace Mortevielle { */ int DialogManager::show(const Common::String &msg, int n) { // Make a copy of the current screen surface for later restore - g_vm->_backgroundSurface.copyFrom(g_vm->_screenSurface); + _vm->_backgroundSurface.copyFrom(_vm->_screenSurface); - g_vm->_mouse.hideMouse(); - while (g_vm->keyPressed()) - g_vm->getChar(); + _vm->_mouse.hideMouse(); + while (_vm->keyPressed()) + _vm->getChar(); - g_vm->setMouseClick(false); + _vm->setMouseClick(false); int colNumb = 0; int lignNumb = 0; @@ -55,7 +55,7 @@ int DialogManager::show(const Common::String &msg, int n) { Common::String caseStr; decodeAlertDetails(msg, caseNumb, lignNumb, colNumb, alertStr, caseStr); - g_vm->sauvecr(50, (NUM_LINES + 1) << 4); + _vm->sauvecr(50, (NUM_LINES + 1) << 4); int i = 0; Common::Point curPos; @@ -64,21 +64,21 @@ int DialogManager::show(const Common::String &msg, int n) { } else { drawAlertBox(8, 7, colNumb); i = 0; - g_vm->_screenSurface._textPos.y = 70; + _vm->_screenSurface._textPos.y = 70; do { curPos.x = 320; Common::String displayStr = ""; while ((alertStr[i + 1] != '\174') && (alertStr[i + 1] != '\135')) { ++i; displayStr += alertStr[i]; - if (g_vm->_resolutionScaler == 2) + if (_vm->_resolutionScaler == 2) curPos.x -= 3; else curPos.x -= 5; } - g_vm->_screenSurface.putxy(curPos.x, g_vm->_screenSurface._textPos.y); - g_vm->_screenSurface._textPos.y += 6; - g_vm->_screenSurface.drawString(displayStr, 4); + _vm->_screenSurface.putxy(curPos.x, _vm->_screenSurface._textPos.y); + _vm->_screenSurface._textPos.y += 6; + _vm->_screenSurface.drawString(displayStr, 4); ++i; } while (alertStr[i] != ']'); } @@ -95,25 +95,25 @@ int DialogManager::show(const Common::String &msg, int n) { int limit[3][3]; memset(&limit[0][0], 0, sizeof(int) * 3 * 3); - limit[1][1] = ((uint)(coldep) / 2) * g_vm->_resolutionScaler; + limit[1][1] = ((uint)(coldep) / 2) * _vm->_resolutionScaler; limit[1][2] = limit[1][1] + 40; if (caseNumb == 1) { limit[2][1] = limit[2][2]; } else { - limit[2][1] = ((uint)(320 + ((uint)esp >> 1)) / 2) * g_vm->_resolutionScaler; + limit[2][1] = ((uint)(320 + ((uint)esp >> 1)) / 2) * _vm->_resolutionScaler; limit[2][2] = (limit[2][1]) + 40; } - g_vm->_mouse.showMouse(); + _vm->_mouse.showMouse(); int id = 0; bool dummyFl = false; bool test3; do { char dummyKey = '\377'; - g_vm->_mouse.moveMouse(dummyFl, dummyKey); - if (g_vm->shouldQuit()) + _vm->_mouse.moveMouse(dummyFl, dummyKey); + if (_vm->shouldQuit()) return 0; - curPos = g_vm->_mouse._pos; + curPos = _vm->_mouse._pos; bool newaff = false; if ((curPos.y > 95) && (curPos.y < 105)) { bool test1 = (curPos.x > limit[1][1]) && (curPos.x < limit[1][2]); @@ -129,57 +129,57 @@ int DialogManager::show(const Common::String &msg, int n) { else ix = 2; if (ix != id) { - g_vm->_mouse.hideMouse(); + _vm->_mouse.hideMouse(); if (id != 0) { setPosition(id, coldep, esp); Common::String tmpStr(" "); tmpStr += buttonStr[id]; tmpStr += " "; - g_vm->_screenSurface.drawString(tmpStr, 0); + _vm->_screenSurface.drawString(tmpStr, 0); } setPosition(ix, coldep, esp); Common::String tmp2 = " "; tmp2 += buttonStr[ix]; tmp2 += " "; - g_vm->_screenSurface.drawString(tmp2, 1); + _vm->_screenSurface.drawString(tmp2, 1); id = ix; - g_vm->_mouse.showMouse(); + _vm->_mouse.showMouse(); } } } if ((id != 0) && !newaff) { - g_vm->_mouse.hideMouse(); + _vm->_mouse.hideMouse(); setPosition(id, coldep, esp); Common::String tmp3(" "); tmp3 += buttonStr[id]; tmp3 += " "; - g_vm->_screenSurface.drawString(tmp3, 0); + _vm->_screenSurface.drawString(tmp3, 0); id = 0; - g_vm->_mouse.showMouse(); + _vm->_mouse.showMouse(); } test3 = (curPos.y > 95) && (curPos.y < 105) && (((curPos.x > limit[1][1]) && (curPos.x < limit[1][2])) || ((curPos.x > limit[2][1]) && (curPos.x < limit[2][2]))); - } while (!g_vm->getMouseClick()); - g_vm->setMouseClick(false); - g_vm->_mouse.hideMouse(); + } while (!_vm->getMouseClick()); + _vm->setMouseClick(false); + _vm->_mouse.hideMouse(); if (!test3) { id = n; setPosition(n, coldep, esp); Common::String tmp4(" "); tmp4 += buttonStr[n]; tmp4 += " "; - g_vm->_screenSurface.drawString(tmp4, 1); + _vm->_screenSurface.drawString(tmp4, 1); } - g_vm->charecr(50, (NUM_LINES + 1) * 16); - g_vm->_mouse.showMouse(); + _vm->charecr(50, (NUM_LINES + 1) * 16); + _vm->_mouse.showMouse(); /* Restore the background area */ - g_vm->_screenSurface.copyFrom(g_vm->_backgroundSurface, 0, 0); + _vm->_screenSurface.copyFrom(_vm->_backgroundSurface, 0, 0); return id; } @@ -221,15 +221,15 @@ void DialogManager::decodeAlertDetails(Common::String inputStr, int &choiceNumb, col += 6; } ++i; - choiceListStr = g_vm->copy(inputStr, i, 30); - if (g_vm->_resolutionScaler == 2) + choiceListStr = _vm->copy(inputStr, i, 30); + if (_vm->_resolutionScaler == 2) col *= 6; else col *= 10; } void DialogManager::setPosition(int ji, int coldep, int esp) { - g_vm->_screenSurface.putxy(coldep + (40 + esp) * (ji - 1), 98); + _vm->_screenSurface.putxy(coldep + (40 + esp) * (ji - 1), 98); } /** @@ -243,9 +243,9 @@ void DialogManager::drawAlertBox(int lidep, int nli, int tx) { int y = (lidep - 1) * 8; int xx = x + tx; int yy = y + (nli * 8); - g_vm->_screenSurface.fillRect(15, Common::Rect(x, y, xx, yy)); - g_vm->_screenSurface.fillRect(0, Common::Rect(x, y + 2, xx, y + 4)); - g_vm->_screenSurface.fillRect(0, Common::Rect(x, yy - 4, xx, yy - 2)); + _vm->_screenSurface.fillRect(15, Common::Rect(x, y, xx, yy)); + _vm->_screenSurface.fillRect(0, Common::Rect(x, y + 2, xx, y + 4)); + _vm->_screenSurface.fillRect(0, Common::Rect(x, yy - 4, xx, yy - 2)); } /** @@ -267,13 +267,13 @@ void DialogManager::setButtonText(Common::String c, int coldep, int nbcase, Comm while (str[l].size() < 3) str[l] += ' '; - g_vm->_screenSurface.putxy(x, 98); + _vm->_screenSurface.putxy(x, 98); Common::String tmp(" "); tmp += str[l]; tmp += " "; - g_vm->_screenSurface.drawString(tmp, 0); + _vm->_screenSurface.drawString(tmp, 0); x += esp + 40; } } @@ -300,17 +300,17 @@ bool DialogManager::showKnowledgeCheck() { int correctCount = 0; for (int indx = 0; indx < 10; ++indx) { - g_vm->_mouse.hideMouse(); - g_vm->hirs(); - g_vm->_mouse.showMouse(); + _vm->_mouse.hideMouse(); + _vm->hirs(); + _vm->_mouse.showMouse(); int dialogHeight; - if (g_vm->_resolutionScaler == 1) + if (_vm->_resolutionScaler == 1) dialogHeight = 29; else dialogHeight = 23; - g_vm->_screenSurface.fillRect(15, Common::Rect(0, 14, 630, dialogHeight)); - Common::String tmpStr = g_vm->getString(textIndexArr[indx]); - g_vm->_text.displayStr(tmpStr, 20, 15, 100, 2, 0); + _vm->_screenSurface.fillRect(15, Common::Rect(0, 14, 630, dialogHeight)); + Common::String tmpStr = _vm->getString(textIndexArr[indx]); + _vm->_text.displayStr(tmpStr, 20, 15, 100, 2, 0); int firstOption; int lastOption; @@ -327,16 +327,16 @@ bool DialogManager::showKnowledgeCheck() { prevChoice = 1; for (int j = firstOption; j <= lastOption; ++j, ++prevChoice) { - tmpStr = g_vm->getString(j); + tmpStr = _vm->getString(j); if ((int) tmpStr.size() > maxLength) maxLength = tmpStr.size(); - g_vm->_text.displayStr(tmpStr, 100, optionPosY, 100, 1, 0); + _vm->_text.displayStr(tmpStr, 100, optionPosY, 100, 1, 0); choiceArray[prevChoice] = tmpStr; optionPosY += 8; } for (int j = 1; j <= lastOption - firstOption + 1; ++j) { - coor[j]._rect = Common::Rect(45 * g_vm->_resolutionScaler, 27 + j * 8, (maxLength * 3 + 55) * g_vm->_resolutionScaler, 34 + j * 8); + coor[j]._rect = Common::Rect(45 * _vm->_resolutionScaler, 27 + j * 8, (maxLength * 3 + 55) * _vm->_resolutionScaler, 34 + j * 8); coor[j]._enabled = true; while ((int)choiceArray[j].size() < maxLength) { @@ -345,42 +345,42 @@ bool DialogManager::showKnowledgeCheck() { } coor[lastOption - firstOption + 2]._enabled = false; int rep; - if (g_vm->_resolutionScaler == 1) + if (_vm->_resolutionScaler == 1) rep = 10; else rep = 6; - g_vm->_screenSurface.drawBox(80, 33, 40 + (maxLength * rep), (lastOption - firstOption) * 8 + 16, 15); + _vm->_screenSurface.drawBox(80, 33, 40 + (maxLength * rep), (lastOption - firstOption) * 8 + 16, 15); rep = 0; prevChoice = 0; warning("Expected answer: %d", correctAnswerArr[indx]); do { - g_vm->setMouseClick(false); + _vm->setMouseClick(false); bool flag; char key; - g_vm->_mouse.moveMouse(flag, key); - if (g_vm->shouldQuit()) + _vm->_mouse.moveMouse(flag, key); + if (_vm->shouldQuit()) return false; currChoice = 1; - while (coor[currChoice]._enabled && !g_vm->_mouse.isMouseIn(coor[currChoice]._rect)) + while (coor[currChoice]._enabled && !_vm->_mouse.isMouseIn(coor[currChoice]._rect)) ++currChoice; if (coor[currChoice]._enabled) { if ((prevChoice != 0) && (prevChoice != currChoice)) { tmpStr = choiceArray[prevChoice] + '$'; - g_vm->_text.displayStr(tmpStr, 100, 27 + (prevChoice * 8), 100, 1, 0); + _vm->_text.displayStr(tmpStr, 100, 27 + (prevChoice * 8), 100, 1, 0); } if (prevChoice != currChoice) { tmpStr = choiceArray[currChoice] + '$'; - g_vm->_text.displayStr(tmpStr, 100, 27 + (currChoice * 8), 100, 1, 1); + _vm->_text.displayStr(tmpStr, 100, 27 + (currChoice * 8), 100, 1, 1); prevChoice = currChoice; } } else if (prevChoice != 0) { tmpStr = choiceArray[prevChoice] + '$'; - g_vm->_text.displayStr(tmpStr, 100, 27 + (prevChoice * 8), 100, 1, 0); + _vm->_text.displayStr(tmpStr, 100, 27 + (prevChoice * 8), 100, 1, 0); prevChoice = 0; } - } while (!((prevChoice != 0) && g_vm->getMouseClick())); + } while (!((prevChoice != 0) && _vm->getMouseClick())); if (prevChoice == correctAnswerArr[indx]) // Answer is correct @@ -403,21 +403,21 @@ bool DialogManager::showKnowledgeCheck() { * Draw the F3/F8 dialog */ void DialogManager::drawF3F8() { - Common::String f3 = g_vm->getEngineString(S_F3); - Common::String f8 = g_vm->getEngineString(S_F8); + Common::String f3 = _vm->getEngineString(S_F3); + Common::String f8 = _vm->getEngineString(S_F8); // Write the F3 and F8 text strings - g_vm->_screenSurface.putxy(3, 44); - g_vm->_screenSurface.drawString(f3, 5); - g_vm->_screenSurface._textPos.y = 51; - g_vm->_screenSurface.drawString(f8, 5); + _vm->_screenSurface.putxy(3, 44); + _vm->_screenSurface.drawString(f3, 5); + _vm->_screenSurface._textPos.y = 51; + _vm->_screenSurface.drawString(f8, 5); // Get the width of the written text strings - int f3Width = g_vm->_screenSurface.getStringWidth(f3); - int f8Width = g_vm->_screenSurface.getStringWidth(f8); + int f3Width = _vm->_screenSurface.getStringWidth(f3); + int f8Width = _vm->_screenSurface.getStringWidth(f8); // Write out the bounding box - g_vm->_screenSurface.drawBox(0, 42, MAX(f3Width, f8Width) + 6, 16, 7); + _vm->_screenSurface.drawBox(0, 42, MAX(f3Width, f8Width) + 6, 16, 7); } /** @@ -426,19 +426,19 @@ void DialogManager::drawF3F8() { * @remarks Originally called 'diver' */ void DialogManager::checkForF8(int SpeechNum, bool drawAni50Fl) { - g_vm->testKeyboard(); + _vm->testKeyboard(); do { - g_vm->_speechManager.startSpeech(SpeechNum, 0, 0); - g_vm->_key = waitForF3F8(); - if (g_vm->shouldQuit()) + _vm->_speechManager.startSpeech(SpeechNum, 0, 0); + _vm->_key = waitForF3F8(); + if (_vm->shouldQuit()) return; - if (g_vm->_newGraphicalDevice != g_vm->_currGraphicalDevice) { - g_vm->_currGraphicalDevice = g_vm->_newGraphicalDevice; - g_vm->hirs(); + if (_vm->_newGraphicalDevice != _vm->_currGraphicalDevice) { + _vm->_currGraphicalDevice = _vm->_newGraphicalDevice; + _vm->hirs(); aff50(drawAni50Fl); } - } while (g_vm->_key != 66); // keycode for F8 + } while (_vm->_key != 66); // keycode for F8 } /** @@ -449,8 +449,8 @@ int DialogManager::waitForF3F8() { int key; do { - key = g_vm->testou(); - if (g_vm->shouldQuit()) + key = _vm->testou(); + if (_vm->shouldQuit()) return key; } while ((key != 61) && (key != 66)); @@ -458,26 +458,26 @@ int DialogManager::waitForF3F8() { } void DialogManager::aff50(bool drawAni50Fl) { - g_vm->_caff = 50; - g_vm->_maff = 0; - g_vm->_text.taffich(); - g_vm->draw(kAdrDes, 63, 12); + _vm->_caff = 50; + _vm->_maff = 0; + _vm->_text.taffich(); + _vm->draw(kAdrDes, 63, 12); if (drawAni50Fl) ani50(); else - g_vm->handleDescriptionText(2, kDialogStringIndex + 142); + _vm->handleDescriptionText(2, kDialogStringIndex + 142); // Draw the f3/f8 dialog drawF3F8(); } void DialogManager::ani50() { - g_vm->_crep = g_vm->animof(1, 1); - g_vm->pictout(kAdrAni, g_vm->_crep, 63, 12); - g_vm->_crep = g_vm->animof(2, 1); - g_vm->pictout(kAdrAni, g_vm->_crep, 63, 12); - g_vm->_largestClearScreen = (g_vm->_resolutionScaler == 1); - g_vm->handleDescriptionText(2, kDialogStringIndex + 143); + _vm->_crep = _vm->animof(1, 1); + _vm->pictout(kAdrAni, _vm->_crep, 63, 12); + _vm->_crep = _vm->animof(2, 1); + _vm->pictout(kAdrAni, _vm->_crep, 63, 12); + _vm->_largestClearScreen = (_vm->_resolutionScaler == 1); + _vm->handleDescriptionText(2, kDialogStringIndex + 143); } void DialogManager::setParent(MortevielleEngine *vm) { -- cgit v1.2.3 From 10a23f4d92f50467b0541474acd6a54068fb8483 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 26 Jun 2013 23:16:49 +0200 Subject: MORTEVIELLE: Remove useless static --- engines/mortevielle/saveload.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/mortevielle/saveload.h b/engines/mortevielle/saveload.h index 21522102a2..140b039b51 100644 --- a/engines/mortevielle/saveload.h +++ b/engines/mortevielle/saveload.h @@ -57,7 +57,7 @@ public: Common::Error loadGame(int n); Common::Error saveGame(int n, const Common::String &saveName); - static void writeSavegameHeader(Common::OutSaveFile *out, const Common::String &saveName); + void writeSavegameHeader(Common::OutSaveFile *out, const Common::String &saveName); static bool readSavegameHeader(Common::InSaveFile *in, SavegameHeader &header); static Common::String generateSaveName(int slotNumber); static SaveStateList listSaves(const char *target); -- cgit v1.2.3 From b770e315264cf97f5a673499514eb573b54676bb Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 26 Jun 2013 23:31:54 +0200 Subject: MORTEVIELLE: Fix compilation --- engines/mortevielle/detection_tables.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/engines/mortevielle/detection_tables.h b/engines/mortevielle/detection_tables.h index 2b9a4511da..689fee1222 100644 --- a/engines/mortevielle/detection_tables.h +++ b/engines/mortevielle/detection_tables.h @@ -33,7 +33,7 @@ static const ADGameDescription MortevielleGameDescriptions[] = { AD_LISTEND }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -47,7 +47,7 @@ static const ADGameDescription MortevielleGameDescriptions[] = { AD_LISTEND }, Common::FR_FRA, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -61,7 +61,7 @@ static const ADGameDescription MortevielleGameDescriptions[] = { AD_LISTEND }, Common::DE_DEU, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, @@ -77,7 +77,7 @@ static const ADGameDescription MortevielleGameDescriptions[] = { AD_LISTEND }, Common::EN_ANY, - Common::kPlatformPC, + Common::kPlatformDOS, ADGF_NO_FLAGS, GUIO0() }, -- cgit v1.2.3 From 1e2a9900f21daed825dd5498bb51868bd0714a1a Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 27 Jun 2013 20:19:27 +0200 Subject: MORTEVIELLE: Move misc functions from Mortevielle to Utils --- engines/mortevielle/module.mk | 3 +- engines/mortevielle/mortevielle.cpp | 3417 ---------------------------------- engines/mortevielle/utils.cpp | 3454 +++++++++++++++++++++++++++++++++++ 3 files changed, 3456 insertions(+), 3418 deletions(-) create mode 100644 engines/mortevielle/utils.cpp diff --git a/engines/mortevielle/module.mk b/engines/mortevielle/module.mk index 9cce597566..e18657cb6a 100644 --- a/engines/mortevielle/module.mk +++ b/engines/mortevielle/module.mk @@ -12,7 +12,8 @@ MODULE_OBJS := \ outtext.o \ saveload.o \ sound.o \ - speech.o + speech.o \ + utils.o # This module can be built as a plugin ifeq ($(ENABLE_MORTEVIELLE), DYNAMIC_PLUGIN) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 95750f5c4a..6977ab47c0 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -30,7 +30,6 @@ #include "common/debug-channels.h" #include "engines/util.h" #include "engines/engine.h" -#include "graphics/cursorman.h" #include "graphics/palette.h" #include "graphics/pixelformat.h" #include "mortevielle/mortevielle.h" @@ -43,31 +42,6 @@ namespace Mortevielle { -const byte tabdr[32] = { - 32, 101, 115, 97, 114, 105, 110, - 117, 116, 111, 108, 13, 100, 99, - 112, 109, 46, 118, 130, 39, 102, - 98, 44, 113, 104, 103, 33, 76, - 85, 106, 30, 31 -}; - - -const byte tab30[32] = { - 69, 67, 74, 138, 133, 120, 77, 122, - 121, 68, 65, 63, 73, 80, 83, 82, - 156, 45, 58, 79, 49, 86, 78, 84, - 71, 81, 64, 66, 135, 34, 136, 91 -}; - - - -const byte tab31[32]= { - 93, 47, 48, 53, 50, 70, 124, 75, - 72, 147, 140, 150, 151, 57, 56, 51, - 107, 139, 55, 89, 131, 37, 54, 88, - 119, 0, 0, 0, 0, 0, 0, 0 -}; - MortevielleEngine *g_vm; MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *gameDesc): @@ -339,213 +313,6 @@ void MortevielleEngine::readStaticStrings(Common::File &f, int dataSize, DataTyp assert(dataSize == 0); } -/** - * Check is a key was pressed - * It also delays the engine and check if the screen has to be updated - * @remarks Originally called 'keypressed' - */ -bool MortevielleEngine::keyPressed() { - // Check for any pending key presses - handleEvents(); - - // Check if it's time to draw the next frame - if (g_system->getMillis() > (_lastGameFrame + GAME_FRAME_DELAY)) { - _lastGameFrame = g_system->getMillis(); - - _screenSurface.updateScreen(); - - _debugger.onFrame(); - } - - // Delay briefly to keep CPU usage down - g_system->delayMillis(5); - - // Return if there are any pending key presses - return !_keypresses.empty(); -} - -/** - * Wait for a keypress - * @remarks Originally called 'get_ch' - */ -int MortevielleEngine::getChar() { - // If there isn't any pending keypress, wait until there is - while (!shouldQuit() && _keypresses.empty()) { - keyPressed(); - } - - // Return the top keypress - return shouldQuit() ? 0 : _keypresses.pop(); -} - -/** - * Handle pending events - * @remarks Since the ScummVM screen surface is double height to handle 640x200 using 640x400, - * the mouse Y position is divided by 2 to keep the game thinking the Y goes from 0 - 199 - */ -bool MortevielleEngine::handleEvents() { - Common::Event event; - if (!g_system->getEventManager()->pollEvent(event)) - return false; - - switch (event.type) { - case Common::EVENT_LBUTTONDOWN: - case Common::EVENT_LBUTTONUP: - case Common::EVENT_MOUSEMOVE: - _mousePos = Common::Point(event.mouse.x, event.mouse.y / 2); - _mouse._pos.x = event.mouse.x; - _mouse._pos.y = event.mouse.y / 2; - - if (event.type == Common::EVENT_LBUTTONDOWN) - _mouseClick = true; - else if (event.type == Common::EVENT_LBUTTONUP) - _mouseClick = false; - - break; - case Common::EVENT_KEYDOWN: - addKeypress(event); - break; - default: - break; - } - - return true; -} - -/** - * Add the specified key to the pending keypress stack - */ -void MortevielleEngine::addKeypress(Common::Event &evt) { - // Character to add - char ch = evt.kbd.ascii; - - // Check for debugger - if ((evt.kbd.keycode == Common::KEYCODE_d) && (evt.kbd.flags & Common::KBD_CTRL)) { - // Attach to the debugger - _debugger.attach(); - _debugger.onFrame(); - } else if ((evt.kbd.keycode >= Common::KEYCODE_a) && (evt.kbd.keycode <= Common::KEYCODE_z)) { - // Handle alphabetic keys - if (evt.kbd.hasFlags(Common::KBD_CTRL)) - ch = evt.kbd.keycode - Common::KEYCODE_a + 1; - else - ch = evt.kbd.keycode - Common::KEYCODE_a + 'A'; - } else if ((evt.kbd.keycode >= Common::KEYCODE_F1) && (evt.kbd.keycode <= Common::KEYCODE_F12)) { - // Handle function keys - ch = 59 + evt.kbd.keycode - Common::KEYCODE_F1; - } else { - // Series of special cases - switch (evt.kbd.keycode) { - case Common::KEYCODE_KP4: - case Common::KEYCODE_LEFT: - ch = '4'; - break; - case Common::KEYCODE_KP2: - case Common::KEYCODE_DOWN: - ch = '2'; - break; - case Common::KEYCODE_KP6: - case Common::KEYCODE_RIGHT: - ch = '6'; - break; - case Common::KEYCODE_KP8: - case Common::KEYCODE_UP: - ch = '8'; - break; - case Common::KEYCODE_KP7: - ch = '7'; - break; - case Common::KEYCODE_KP1: - ch = '1'; - break; - case Common::KEYCODE_KP9: - ch = '9'; - break; - case Common::KEYCODE_KP3: - ch = '3'; - break; - case Common::KEYCODE_KP5: - ch = '5'; - break; - case Common::KEYCODE_RETURN: - ch = '\13'; - break; - case Common::KEYCODE_ESCAPE: - ch = '\33'; - break; - default: - break; - } - } - - if (ch != 0) - _keypresses.push(ch); -} - -static byte CURSOR_ARROW_DATA[16 * 16] = { - 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x0f, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x0f, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x0f, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x0f, 0x0f, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff -}; - -/** - * Initialise the mouse - */ -void MortevielleEngine::initMouse() { - CursorMan.replaceCursor(CURSOR_ARROW_DATA, 16, 16, 0, 0, 0xff); - CursorMan.showMouse(true); - - _mouse.initMouse(); -} - -/** - * Sets the mouse position - * @remarks Since the ScummVM screen surface is double height to handle 640x200 using 640x400, - * the mouse Y position is doubled to convert from 0-199 to 0-399 - */ -void MortevielleEngine::setMousePos(const Common::Point &pt) { - // Adjust the passed position from simulated 640x200 to 640x400 co-ordinates - Common::Point newPoint(pt.x, (pt.y == 199) ? 399 : pt.y * 2); - - if (newPoint != _mousePos) - // Warp the mouse to the new position - g_system->warpMouse(newPoint.x, newPoint.y); - - // Save the new position - _mousePos = newPoint; -} - -/** - * Delay by a given amount - */ -void MortevielleEngine::delay(int amount) { - uint32 endTime = g_system->getMillis() + amount; - - while (g_system->getMillis() < endTime) { - if (g_system->getMillis() > (_lastGameFrame + GAME_FRAME_DELAY)) { - _lastGameFrame = g_system->getMillis(); - _screenSurface.updateScreen(); - - _debugger.onFrame(); - } - - g_system->delayMillis(10); - } -} - /*-------------------------------------------------------------------------*/ Common::Error MortevielleEngine::run() { @@ -645,3188 +412,4 @@ void MortevielleEngine::playGame() { askRestart(); } -/** - * Waits for the user to select an action, and then handles it - * @remarks Originally called tecran - */ -void MortevielleEngine::handleAction() { - const int lim = 20000; - int temps = 0; - char inkey = '\0'; - bool oo, funct = 0; - - clearVerbBar(); - oo = false; - _controlMenu = 0; - if (!_keyPressedEsc) { - _menu.drawMenu(); - _menu._menuDisplayed = true; - temps = 0; - _key = 0; - funct = false; - inkey = '.'; - - _inMainGameLoop = true; - do { - _menu.updateMenu(); - prepareRoom(); - _mouse.moveMouse(funct, inkey); - if (shouldQuit()) - return; - ++temps; - } while (!((_menu._menuSelected) || (temps > lim) || (funct) || (_anyone))); - _inMainGameLoop = false; - - _menu.eraseMenu(); - _menu._menuDisplayed = false; - if ((inkey == '\1') || (inkey == '\3') || (inkey == '\5') || (inkey == '\7') || (inkey == '\11')) { - changeGraphicalDevice((uint)(ord(inkey) - 1) >> 1); - return; - } - if (_menu._menuSelected && (_msg[3] == MENU_SAVE)) { - Common::String saveName = Common::String::format("Savegame #%d", _msg[4] & 15); - _savegameManager.saveGame(_msg[4] & 15, saveName); - } - if (_menu._menuSelected && (_msg[3] == MENU_LOAD)) - _savegameManager.loadGame((_msg[4] & 15) - 1); - if (inkey == '\103') { /* F9 */ - temps = _dialogManager.show(_hintPctMessage, 1); - return; - } else if (inkey == '\77') { - if ((_menuOpcode != OPCODE_NONE) && ((_msg[3] == MENU_ACTION) || (_msg[3] == MENU_SELF))) { - _msg[4] = _menuOpcode; - displayTextInVerbBar(getEngineString(S_IDEM)); - } else - return; - } else if (inkey == '\104') { - if ((_x != 0) && (_y != 0)) - _num = 9999; - return; - } - } - if (inkey == '\73') { - _quitGame = true; - hourToChar(); - } else { - if ((funct) && (inkey != '\77')) - return; - if (temps > lim) { - handleDescriptionText(2, 141); - if (_num == 9999) - _num = 0; - } else { - _menuOpcode = _msg[3]; - if ((_msg[3] == MENU_ACTION) || (_msg[3] == MENU_SELF)) - _menuOpcode = _msg[4]; - if (!_anyone) { - if ((_heroSearching) || (_obpart)) { - if (_mouse._pos.y < 12) - return; - - if ((_msg[4] == OPCODE_SOUND) || (_msg[4] == OPCODE_LIFT)) { - oo = true; - if ((_msg[4] == OPCODE_LIFT) || (_obpart)) { - endSearch(); - _caff = _coreVar._currPlace; - _crep = 998; - } else - tsuiv(); - mennor(); - } - } - } - do { - if (! oo) - handleOpcode(); - - if ((_controlMenu == 0) && (! _loseGame) && (! _endGame)) { - _text.taffich(); - if (_destinationOk) { - _destinationOk = false; - drawPicture(); - } - if ((!_syn) || (_col)) - handleDescriptionText(2, _crep); - } - } while (_syn); - if (_controlMenu != 0) - displayControlMenu(); - } - } -} - -/** - * Engine function - Init Places - * @remarks Originally called 'init_lieu' - */ -void MortevielleEngine::loadPlaces() { - Common::File f; - - if (!f.open("MXX.mor")) - if (!f.open("MFXX.mor")) - error("Missing file - MXX.mor"); - - for (int i = 0; i < 7; ++i) { - for (int j = 0; j < 25; ++j) - _destinationArray[i][j] = f.readByte(); - } - - f.close(); -} - -/** - * Set Text Color - * @remarks Originally called 'text_color' - */ -void MortevielleEngine::setTextColor(int col) { - _textColor = col; -} - -/** - * Prepare screen - Type 1! - * @remarks Originally called 'ecrf1' - */ -void MortevielleEngine::prepareScreenType1() { - // Large drawing - _screenSurface.drawBox(0, 11, 512, 163, 15); -} - -/** - * Prepare room - Type 2! - * @remarks Originally called 'ecrf2' - */ -void MortevielleEngine::prepareScreenType2() { - setTextColor(5); -} - -/** - * Prepare room - Type 3! - * @remarks Originally called 'ecrf7' - */ -void MortevielleEngine::prepareScreenType3() { - setTextColor(4); -} - -/** - * Engine function - Update hour - * @remarks Originally called 'calch' - */ -void MortevielleEngine::updateHour(int &day, int &hour, int &minute) { - int newHour = readclock(); - int th = _currentHourCount + ((newHour - _currentDayHour) / _inGameHourDuration); - minute = ((th % 2) + _currHalfHour) * 30; - hour = ((uint)th >> 1) + _currHour; - if (minute == 60) { - minute = 0; - ++hour; - } - day = (hour / 24) + _currDay; - hour = hour - ((day - _currDay) * 24); -} - -/** - * Engine function - Convert character index to bit index - * @remarks Originally called 'conv' - */ -int MortevielleEngine::convertCharacterIndexToBitIndex(int characterIndex) { - return 128 >> (characterIndex - 1); -} - -/** - * Engine function - Convert bit index to character index - * @remarks Originally called 'tip' - */ -int MortevielleEngine::convertBitIndexToCharacterIndex(int bitIndex) { - int retVal = 0; - - if (bitIndex == 128) - retVal = 1; - else if (bitIndex == 64) - retVal = 2; - else if (bitIndex == 32) - retVal = 3; - else if (bitIndex == 16) - retVal = 4; - else if (bitIndex == 8) - retVal = 5; - else if (bitIndex == 4) - retVal = 6; - else if (bitIndex == 2) - retVal = 7; - else if (bitIndex == 1) - retVal = 8; - - return retVal; -} - -/** - * Engine function - Reset presence in other rooms - * @remarks Originally called 't5' - */ -void MortevielleEngine::resetPresenceInRooms(int roomId) { - if (roomId == DINING_ROOM) - _blo = false; - - if (roomId != GREEN_ROOM) { - _roomPresenceLuc = false; - _roomPresenceIda = false; - } - - if (roomId != PURPLE_ROOM) - _purpleRoomPresenceLeo = false; - - if (roomId != DARKBLUE_ROOM) { - _roomPresenceGuy = false; - _roomPresenceEva = false; - } - - if (roomId != BLUE_ROOM) - _roomPresenceMax = false; - if (roomId != RED_ROOM) - _roomPresenceBob = false; - if (roomId != GREEN_ROOM2) - _roomPresencePat = false; - if (roomId != TOILETS) - _toiletsPresenceBobMax = false; - if (roomId != BATHROOM) - _bathRoomPresenceBobMax = false; - if (roomId != ROOM9) - _room9PresenceLeo = false; -} - -/** - * Engine function - Show the people present in the given room - * @remarks Originally called 'affper' - */ -void MortevielleEngine::showPeoplePresent(int bitIndex) { - int xp = 580 - (_screenSurface.getStringWidth("LEO") / 2); - - for (int i = 1; i <= 8; ++i) - _menu.disableMenuItem(_menu._discussMenu[i]); - - clearUpperRightPart(); - if ((bitIndex & 128) == 128) { - _screenSurface.putxy(xp, 24); - _screenSurface.drawString("LEO", 4); - _menu.enableMenuItem(_menu._discussMenu[1]); - } - if ((bitIndex & 64) == 64) { - _screenSurface.putxy(xp, 32); - _screenSurface.drawString("PAT", 4); - _menu.enableMenuItem(_menu._discussMenu[2]); - } - if ((bitIndex & 32) == 32) { - _screenSurface.putxy(xp, 40); - _screenSurface.drawString("GUY", 4); - _menu.enableMenuItem(_menu._discussMenu[3]); - } - if ((bitIndex & 16) == 16) { - _screenSurface.putxy(xp, 48); - _screenSurface.drawString("EVA", 4); - _menu.enableMenuItem(_menu._discussMenu[4]); - } - if ((bitIndex & 8) == 8) { - _screenSurface.putxy(xp, 56); - _screenSurface.drawString("BOB", 4); - _menu.enableMenuItem(_menu._discussMenu[5]); - } - if ((bitIndex & 4) == 4) { - _screenSurface.putxy(xp, 64); - _screenSurface.drawString("LUC", 4); - _menu.enableMenuItem(_menu._discussMenu[6]); - } - if ((bitIndex & 2) == 2) { - _screenSurface.putxy(xp, 72); - _screenSurface.drawString("IDA", 4); - _menu.enableMenuItem(_menu._discussMenu[7]); - } - if ((bitIndex & 1) == 1) { - _screenSurface.putxy(xp, 80); - _screenSurface.drawString("MAX", 4); - _menu.enableMenuItem(_menu._discussMenu[8]); - } - _currBitIndex = bitIndex; -} - -/** - * Engine function - Select random characters - * @remarks Originally called 'choix' - */ -int MortevielleEngine::selectCharacters(int min, int max) { - bool invertSelection = false; - int rand = getRandomNumber(min, max); - - if (rand > 4) { - rand = 8 - rand; - invertSelection = true; - } - - int i = 0; - int retVal = 0; - while (i < rand) { - int charIndex = getRandomNumber(1, 8); - int charBitIndex = convertCharacterIndexToBitIndex(charIndex); - if ((retVal & charBitIndex) != charBitIndex) { - ++i; - retVal |= charBitIndex; - } - } - if (invertSelection) - retVal = 255 - retVal; - - return retVal; -} - -/** - * Engine function - Get Presence Statistics - Green Room - * @remarks Originally called 'cpl1' - */ -int MortevielleEngine::getPresenceStatsGreenRoom() { - int day, hour, minute; - int retVal = 0; - - updateHour(day, hour, minute); - // The original uses an || instead of an &&, resulting - // in an always true condition. Based on the other tests, - // and on other scenes, we use an && instead. - if ((hour > 7) && (hour < 11)) - retVal = 25; - else if ((hour > 10) && (hour < 14)) - retVal = 35; - else if ((hour > 13) && (hour < 16)) - retVal = 50; - else if ((hour > 15) && (hour < 18)) - retVal = 5; - else if ((hour > 17) && (hour < 22)) - retVal = 35; - else if ((hour > 21) && (hour < 24)) - retVal = 50; - else if ((hour >= 0) && (hour < 8)) - retVal = 70; - - _menu.updateMenu(); - - return retVal; -} -/** - * Engine function - Get Presence Statistics - Purple Room - * @remarks Originally called 'cpl2' - */ -int MortevielleEngine::getPresenceStatsPurpleRoom() { - int day, hour, minute; - int retVal = 0; - - updateHour(day, hour, minute); - if ((hour > 7) && (hour < 11)) - retVal = -2; - else if (hour == 11) - retVal = 100; - else if ((hour > 11) && (hour < 23)) - retVal = 10; - else if (hour == 23) - retVal = 20; - else if ((hour >= 0) && (hour < 8)) - retVal = 50; - - return retVal; -} - -/** - * Engine function - Get Presence Statistics - Toilets - * @remarks Originally called 'cpl3' - */ -int MortevielleEngine::getPresenceStatsToilets() { - int day, hour, minute; - int retVal = 0; - - updateHour(day, hour, minute); - if (((hour > 8) && (hour < 10)) || ((hour > 19) && (hour < 24))) - retVal = 34; - else if (((hour > 9) && (hour < 20)) || ((hour >= 0) && (hour < 9))) - retVal = 0; - - return retVal; -} - -/** - * Engine function - Get Presence Statistics - Blue Room - * @remarks Originally called 'cpl5' - */ -int MortevielleEngine::getPresenceStatsBlueRoom() { - int day, hour, minute; - int retVal = 0; - - updateHour(day, hour, minute); - if ((hour > 6) && (hour < 10)) - retVal = 0; - else if (hour == 10) - retVal = 100; - else if ((hour > 10) && (hour < 24)) - retVal = 15; - else if ((hour >= 0) && (hour < 7)) - retVal = 50; - - return retVal; -} - -/** - * Engine function - Get Presence Statistics - Red Room - * @remarks Originally called 'cpl6' - */ -int MortevielleEngine::getPresenceStatsRedRoom() { - int day, hour, minute; - int retVal = 0; - - updateHour(day, hour, minute); - if (((hour > 7) && (hour < 13)) || ((hour > 17) && (hour < 20))) - retVal = -2; - else if (((hour > 12) && (hour < 17)) || ((hour > 19) && (hour < 24))) - retVal = 35; - else if (hour == 17) - retVal = 100; - else if ((hour >= 0) && (hour < 8)) - retVal = 60; - - return retVal; -} - -/** - * Shows the "you are alone" message in the status area - * on the right hand side of the screen - * @remarks Originally called 'person' - */ -void MortevielleEngine::displayAloneText() { - for (int cf = 1; cf <= 8; ++cf) - _menu.disableMenuItem(_menu._discussMenu[cf]); - - Common::String sYou = getEngineString(S_YOU); - Common::String sAre = getEngineString(S_ARE); - Common::String sAlone = getEngineString(S_ALONE); - - clearUpperRightPart(); - _screenSurface.putxy(580 - (_screenSurface.getStringWidth(sYou) / 2), 30); - _screenSurface.drawString(sYou, 4); - _screenSurface.putxy(580 - (_screenSurface.getStringWidth(sAre) / 2), 50); - _screenSurface.drawString(sAre, 4); - _screenSurface.putxy(580 - (_screenSurface.getStringWidth(sAlone) / 2), 70); - _screenSurface.drawString(sAlone, 4); - - _currBitIndex = 0; -} - -/** - * Engine function - Get Presence Statistics - Room Bureau - * @remarks Originally called 'cpl10' - */ -int MortevielleEngine::getPresenceStatsDiningRoom(int &hour) { - int day, minute; - - int retVal = 0; - updateHour(day, hour, minute); - if (((hour > 7) && (hour < 11)) || ((hour > 11) && (hour < 14)) || ((hour > 18) && (hour < 21))) - retVal = 100; - else if ((hour == 11) || ((hour > 20) && (hour < 24))) - retVal = 45; - else if (((hour > 13) && (hour < 17)) || (hour == 18)) - retVal = 35; - else if (hour == 17) - retVal = 60; - else if ((hour >= 0) && (hour < 8)) - retVal = 5; - - return retVal; -} - -/** - * Engine function - Get Presence Statistics - Room Bureau - * @remarks Originally called 'cpl11' - */ -int MortevielleEngine::getPresenceStatsBureau(int &hour) { - int day, minute; - int retVal = 0; - - updateHour(day, hour, minute); - if (((hour > 8) && (hour < 12)) || ((hour > 20) && (hour < 24))) - retVal = 25; - else if (((hour > 11) && (hour < 14)) || ((hour > 18) && (hour < 21))) - retVal = 5; - else if ((hour > 13) && (hour < 17)) - retVal = 55; - else if ((hour > 16) && (hour < 19)) - retVal = 45; - else if ((hour >= 0) && (hour < 9)) - retVal = 0; - - return retVal; -} - -/** - * Engine function - Get Presence Statistics - Room Kitchen - * @remarks Originally called 'cpl12' - */ -int MortevielleEngine::getPresenceStatsKitchen() { - int day, hour, minute; - int retVal = 0; - - updateHour(day, hour, minute); - if (((hour > 8) && (hour < 15)) || ((hour > 16) && (hour < 22))) - retVal = 55; - else if (((hour > 14) && (hour < 17)) || ((hour > 21) && (hour < 24))) - retVal = 25; - else if ((hour >= 0) && (hour < 5)) - retVal = 0; - else if ((hour > 4) && (hour < 9)) - retVal = 15; - - return retVal; -} - -/** - * Engine function - Get Presence Statistics - Room Attic - * @remarks Originally called 'cpl13' - */ -int MortevielleEngine::getPresenceStatsAttic() { - return 0; -} - -/** - * Engine function - Get Presence Statistics - Room Landing - * @remarks Originally called 'cpl15' - */ -int MortevielleEngine::getPresenceStatsLanding() { - int day, hour, minute; - int retVal = 0; - - updateHour(day, hour, minute); - if ((hour > 7) && (hour < 12)) - retVal = 25; - else if ((hour > 11) && (hour < 14)) - retVal = 0; - else if ((hour > 13) && (hour < 18)) - retVal = 10; - else if ((hour > 17) && (hour < 20)) - retVal = 55; - else if ((hour > 19) && (hour < 22)) - retVal = 5; - else if ((hour > 21) && (hour < 24)) - retVal = 15; - else if ((hour >= 0) && (hour < 8)) - retVal = -15; - - return retVal; -} - -/** - * Engine function - Get Presence Statistics - Room Chapel - * @remarks Originally called 'cpl20' - */ -int MortevielleEngine::getPresenceStatsChapel(int &hour) { - int day, minute; - int retVal = 0; - - updateHour(day, hour, minute); - if (hour == 10) - retVal = 65; - else if ((hour > 10) && (hour < 21)) - retVal = 5; - else if ((hour > 20) && (hour < 24)) - retVal = -15; - else if ((hour >= 0) && (hour < 5)) - retVal = -300; - else if ((hour > 4) && (hour < 10)) - retVal = -5; - - return retVal; -} - -/** - * Engine function - Check who is in the Green Room - * @remarks Originally called 'quelq1' - */ -void MortevielleEngine::setPresenceGreenRoom(int roomId) { - int rand = getRandomNumber(1, 2); - if (roomId == GREEN_ROOM) { - if (rand == 1) - _roomPresenceLuc = true; - else - _roomPresenceIda = true; - } else if (roomId == DARKBLUE_ROOM) { - if (rand == 1) - _roomPresenceGuy = true; - else - _roomPresenceEva = true; - } - - _currBitIndex = 10; -} - -/** - * Engine function - Check who is in the Purple Room - * @remarks Originally called 'quelq2' - */ -void MortevielleEngine::setPresencePurpleRoom() { - if (_place == PURPLE_ROOM) - _purpleRoomPresenceLeo = true; - else - _room9PresenceLeo = true; - - _currBitIndex = 10; -} - -/** - * Engine function - Check who is in the Blue Room - * @remarks Originally called 'quelq5' - */ -void MortevielleEngine::setPresenceBlueRoom() { - _roomPresenceMax = true; - _currBitIndex = 10; -} - -/** - * Engine function - Check who is in the Red Room - * @remarks Originally called 'quelq6' - */ -void MortevielleEngine::setPresenceRedRoom(int roomId) { - if (roomId == RED_ROOM) - _roomPresenceBob = true; - else if (roomId == GREEN_ROOM2) - _roomPresencePat = true; - - _currBitIndex = 10; -} - -/** - * Engine function - Check who is in the Dining Room - * @remarks Originally called 'quelq10' - */ -int MortevielleEngine::setPresenceDiningRoom(int hour) { - int retVal = 0; - - if ((hour >= 0) && (hour < 8)) - retVal = checkLeoMaxRandomPresence(); - else { - int min = 0, max = 0; - if ((hour > 7) && (hour < 10)) { - min = 5; - max = 7; - } else if ((hour > 9) && (hour < 12)) { - min = 1; - max = 4; - } else if (((hour > 11) && (hour < 15)) || ((hour > 18) && (hour < 21))) { - min = 6; - max = 8; - } else if (((hour > 14) && (hour < 19)) || ((hour > 20) && (hour < 24))) { - min = 1; - max = 5; - } - retVal = selectCharacters(min, max); - } - showPeoplePresent(retVal); - - return retVal; -} - -/** - * Engine function - Check who is in the Bureau - * @remarks Originally called 'quelq11' - */ -int MortevielleEngine::setPresenceBureau(int hour) { - int retVal = 0; - - if ((hour >= 0) && (hour < 8)) - retVal = checkLeoMaxRandomPresence(); - else { - int min = 0, max = 0; - if (((hour > 7) && (hour < 10)) || ((hour > 20) && (hour < 24))) { - min = 1; - max = 3; - } else if (((hour > 9) && (hour < 12)) || ((hour > 13) && (hour < 19))) { - min = 1; - max = 4; - } else if (((hour > 11) && (hour < 14)) || ((hour > 18) && (hour < 21))) { - min = 1; - max = 2; - } - retVal = selectCharacters(min, max); - } - showPeoplePresent(retVal); - - return retVal; -} - -/** - * Engine function - Check who is in the Kitchen - * @remarks Originally called 'quelq12' - */ -int MortevielleEngine::setPresenceKitchen() { - int retVal = checkLeoMaxRandomPresence(); - showPeoplePresent(retVal); - - return retVal; -} - -/** - * Engine function - Check who is in the Landing - * @remarks Originally called 'quelq15' - */ -int MortevielleEngine::setPresenceLanding() { - bool test = false; - int rand = 0; - do { - rand = getRandomNumber(1, 8); - test = (((rand == 1) && (_purpleRoomPresenceLeo || _room9PresenceLeo)) || - ((rand == 2) && _roomPresencePat) || - ((rand == 3) && _roomPresenceGuy) || - ((rand == 4) && _roomPresenceEva) || - ((rand == 5) && _roomPresenceBob) || - ((rand == 6) && _roomPresenceLuc) || - ((rand == 7) && _roomPresenceIda) || - ((rand == 8) && _roomPresenceMax)); - } while (test); - - int retVal = convertCharacterIndexToBitIndex(rand); - showPeoplePresent(retVal); - - return retVal; -} - -/** - * Engine function - Check who is in the chapel - * @remarks Originally called 'quelq20' - */ -int MortevielleEngine::setPresenceChapel(int hour) { - int retVal = 0; - - if (((hour >= 0) && (hour < 10)) || ((hour > 18) && (hour < 24))) - retVal = checkLeoMaxRandomPresence(); - else { - int min = 0, max = 0; - if ((hour > 9) && (hour < 12)) { - min = 3; - max = 7; - } else if ((hour > 11) && (hour < 18)) { - min = 1; - max = 2; - } else if (hour == 18) { - min = 2; - max = 4; - } - retVal = selectCharacters(min, max); - } - showPeoplePresent(retVal); - - return retVal; -} - -/** - * Engine function - Get the answer after you known a door - * @remarks Originally called 'frap' - */ -void MortevielleEngine::getKnockAnswer() { - int day, hour, minute; - - updateHour(day, hour, minute); - if ((hour >= 0) && (hour < 8)) - _crep = 190; - else { - if (getRandomNumber(1, 100) > 70) - _crep = 190; - else - _crep = 147; - } -} - -/** - * Engine function - Get Room Presence Bit Index - * @remarks Originally called 'nouvp' - */ -int MortevielleEngine::getPresenceBitIndex(int roomId) { - int bitIndex = 0; - if (roomId == GREEN_ROOM) { - if (_roomPresenceLuc) - bitIndex = 4; // LUC - if (_roomPresenceIda) - bitIndex = 2; // IDA - } else if ( ((roomId == PURPLE_ROOM) && (_purpleRoomPresenceLeo)) - || ((roomId == ROOM9) && (_room9PresenceLeo))) - bitIndex = 128; // LEO - else if (roomId == DARKBLUE_ROOM) { - if (_roomPresenceGuy) - bitIndex = 32; // GUY - if (_roomPresenceEva) - bitIndex = 16; // EVA - } else if ((roomId == BLUE_ROOM) && (_roomPresenceMax)) - bitIndex = 1; // MAX - else if ((roomId == RED_ROOM) && (_roomPresenceBob)) - bitIndex = 8; // BOB - else if ((roomId == GREEN_ROOM2) && (_roomPresencePat)) - bitIndex = 64; // PAT - else if ( ((roomId == TOILETS) && (_toiletsPresenceBobMax)) - || ((roomId == BATHROOM) && (_bathRoomPresenceBobMax)) ) - bitIndex = 9; // BOB + MAX - - if (bitIndex != 9) - showPeoplePresent(bitIndex); - - return bitIndex; -} - -/** - * Engine function - initGame - * @remarks Originally called 'dprog' - */ -void MortevielleEngine::initGame() { - _place = MANOR_FRONT; - _currentHourCount = 0; - if (!_coreVar._alreadyEnteredManor) - _blo = true; - _inGameHourDuration = kTime1; - _currentDayHour = readclock(); -} - -/** - * Engine function - Set Random Presence - Green Room - * @remarks Originally called 'pl1' - */ -void MortevielleEngine::setRandomPresenceGreenRoom(int cf) { - if ( ((_place == GREEN_ROOM) && (!_roomPresenceLuc) && (!_roomPresenceIda)) - || ((_place == DARKBLUE_ROOM) && (!_roomPresenceGuy) && (!_roomPresenceEva)) ) { - int p = getPresenceStatsGreenRoom(); - int rand; - phaz(rand, p, cf); - - if (rand > p) - displayAloneText(); - else - setPresenceGreenRoom(_place); - } -} - -/** - * Engine function - Set Random Presence - Purple Room - * @remarks Originally called 'pl2' - */ -void MortevielleEngine::setRandomPresencePurpleRoom(int cf) { - if (!_purpleRoomPresenceLeo) { - int p = getPresenceStatsPurpleRoom(); - int rand; - phaz(rand, p, cf); - - if (rand > p) - displayAloneText(); - else - setPresencePurpleRoom(); - } -} - -/** - * Engine function - Set Random Presence - Blue Room - * @remarks Originally called 'pl5' - */ -void MortevielleEngine::setRandomPresenceBlueRoom(int cf) { - if (!_roomPresenceMax) { - int p = getPresenceStatsBlueRoom(); - int rand; - - phaz(rand, p, cf); - - if (rand > p) - displayAloneText(); - else - setPresenceBlueRoom(); - } -} - -/** - * Engine function - Set Random Presence - Red Room - * @remarks Originally called 'pl6' - */ -void MortevielleEngine::setRandomPresenceRedRoom(int cf) { - if ( ((_place == RED_ROOM) && (!_roomPresenceBob)) - || ((_place == GREEN_ROOM2) && (!_roomPresencePat)) ) { - int p = getPresenceStatsRedRoom(); - int rand; - - phaz(rand, p, cf); - - if (rand > p) - displayAloneText(); - else - setPresenceRedRoom(_place); - } -} - -/** - * Engine function - Set Random Presence - Room 9 - * @remarks Originally called 'pl9' - */ -void MortevielleEngine::setRandomPresenceRoom9(int cf) { - if (!_room9PresenceLeo) { - cf = -10; - int p, rand; - phaz(rand, p, cf); - - if (rand > p) - displayAloneText(); - else - setPresencePurpleRoom(); - } -} - -/** - * Engine function - Set Random Presence - Dining Room - * @remarks Originally called 'pl10' - */ -void MortevielleEngine::setRandomPresenceDiningRoom(int cf) { - int h, rand; - int p = getPresenceStatsDiningRoom(h); - phaz(rand, p, cf); - - if (rand > p) - displayAloneText(); - else - setPresenceDiningRoom(h); -} - -/** - * Engine function - Set Random Presence - Bureau - * @remarks Originally called 'pl11' - */ -void MortevielleEngine::setRandomPresenceBureau(int cf) { - int h, rand; - - int p = getPresenceStatsBureau(h); - phaz(rand, p, cf); - if (rand > p) - displayAloneText(); - else - setPresenceBureau(h); -} - -/** - * Engine function - Set Random Presence - Kitchen - * @remarks Originally called 'pl12' - */ -void MortevielleEngine::setRandomPresenceKitchen(int cf) { - int p, rand; - - p = getPresenceStatsKitchen(); - phaz(rand, p, cf); - if (rand > p) - displayAloneText(); - else - setPresenceKitchen(); -} - -/** - * Engine function - Set Random Presence - Attic / Cellar - * @remarks Originally called 'pl13' - */ -void MortevielleEngine::setRandomPresenceAttic(int cf) { - int p, rand; - - p = getPresenceStatsAttic(); - phaz(rand, p, cf); - if (rand > p) - displayAloneText(); - else - setPresenceKitchen(); -} - -/** - * Engine function - Set Random Presence - Landing - * @remarks Originally called 'pl15' - */ -void MortevielleEngine::setRandomPresenceLanding(int cf) { - int p, rand; - - p = getPresenceStatsLanding(); - phaz(rand, p, cf); - if (rand > p) - displayAloneText(); - else - setPresenceLanding(); -} - -/** - * Engine function - Set Random Presence - Chapel - * @remarks Originally called 'pl20' - */ -void MortevielleEngine::setRandomPresenceChapel(int cf) { - int h, rand; - - int p = getPresenceStatsChapel(h); - phaz(rand, p, cf); - if (rand > p) - displayAloneText(); - else - setPresenceChapel(h); -} - -/** - * Start music or speech - * @remarks Originally called 'musique' - */ -void MortevielleEngine::startMusicOrSpeech(int so) { - if (so == 0) { - /* musik(0) */ - ; - } else if ((!_introSpeechPlayed) && (!_coreVar._alreadyEnteredManor)) { - // Type 1: Speech - _speechManager.startSpeech(10, 1, 1); - _introSpeechPlayed = true; - } else { - if (((_coreVar._currPlace == MOUNTAIN) || (_coreVar._currPlace == MANOR_FRONT) || (_coreVar._currPlace == MANOR_BACK)) && (getRandomNumber(1, 3) == 2)) - // Type 1: Speech - _speechManager.startSpeech(9, getRandomNumber(2, 4), 1); - else if ((_coreVar._currPlace == CHAPEL) && (getRandomNumber(1, 2) == 1)) - // Type 1: Speech - _speechManager.startSpeech(8, 1, 1); - else if ((_coreVar._currPlace == WELL) && (getRandomNumber(1, 2) == 2)) - // Type 1: Speech - _speechManager.startSpeech(12, 1, 1); - else if (_coreVar._currPlace == INSIDE_WELL) - // Type 1: Speech - _speechManager.startSpeech(13, 1, 1); - else - // Type 2 : music - _speechManager.startSpeech(getRandomNumber(1, 17), 1, 2); - } -} - -/** - * Engine function - You lose! - * @remarks Originally called 'tperd' - */ -void MortevielleEngine::loseGame() { - resetOpenObjects(); - _roomDoorId = OWN_ROOM; - _mchai = 0; - _menu.unsetSearchMenu(); - if (!_blo) - getPresence(MANOR_FRONT); - - _loseGame = true; - clearUpperLeftPart(); - _screenSurface.drawBox(60, 35, 400, 50, 15); - handleDescriptionText(9, _crep); - clearDescriptionBar(); - clearVerbBar(); - _col = false; - _syn = false; - _destinationOk = false; -} - -/** - * Engine function - Check inventory for a given object - * @remarks Originally called 'cherjer' - */ -bool MortevielleEngine::checkInventory(int objectId) { - bool retVal = false; - for (int i = 1; i <= 6; ++i) - retVal = (retVal || (_coreVar._inventory[i] == objectId)); - - if (_coreVar._selectedObjectId == objectId) - retVal = true; - - return retVal; -} - -/** - * Engine function - Display Dining Room - * @remarks Originally called 'st1sama' - */ -void MortevielleEngine::displayDiningRoom() { - _coreVar._currPlace = DINING_ROOM; - affrep(); -} - -/** - * Engine function - Start non interactive Dialog - * @remarks Originally called 'sparl' - */ -void MortevielleEngine::startDialog(int16 rep) { - const int haut[9] = { 0, 0, 1, -3, 6, -2, 2, 7, -1 }; - int key; - - assert(rep >= 0); - - _mouse.hideMouse(); - Common::String dialogStr = getString(rep + kDialogStringIndex); - _text.displayStr(dialogStr, 230, 4, 65, 24, 5); - _dialogManager.drawF3F8(); - - key = 0; - do { - _speechManager.startSpeech(rep, haut[_caff - 69], 0); - key = _dialogManager.waitForF3F8(); - if (shouldQuit()) - return; - } while (key != 66); - hirs(); - _mouse.showMouse(); -} - -/** - * Engine function - End of Search: reset globals - * @remarks Originally called 'finfouill' - */ -void MortevielleEngine::endSearch() { - _heroSearching = false; - _obpart = false; - _searchCount = 0; - _menu.unsetSearchMenu(); -} - -/** - * Engine function - Go to Dining room - * @remarks Originally called 't1sama' - */ -void MortevielleEngine::gotoDiningRoom() { - int day, hour, minute; - - updateHour(day, hour, minute); - if ((hour < 5) && (_coreVar._currPlace > ROOM18)) { - if (!checkInventory(137)) { //You don't have the keys, and it's late - _crep = 1511; - loseGame(); - } else - displayDiningRoom(); - } else if (!_coreVar._alreadyEnteredManor) { //Is it your first time? - _currBitIndex = 255; // Everybody is present - showPeoplePresent(_currBitIndex); - _caff = 77; - drawPictureWithText(); - _screenSurface.drawBox(223, 47, 155, 91, 15); - handleDescriptionText(2, 33); - testKey(false); - mennor(); - _mouse.hideMouse(); - hirs(); - premtet(); - startDialog(140); - drawRightFrame(); - drawClock(); - _mouse.showMouse(); - _coreVar._currPlace = OWN_ROOM; - affrep(); - resetPresenceInRooms(DINING_ROOM); - if (!_blo) - getPresence(OWN_ROOM); - _currBitIndex = 0; - _savedBitIndex = 0; - _coreVar._alreadyEnteredManor = true; - } else - displayDiningRoom(); -} - -/** - * Engine function - Check Manor distance (in the mountains) - * @remarks Originally called 't1neig' - */ -void MortevielleEngine::checkManorDistance() { - ++_manorDistance; - if (_manorDistance > 2) { - _crep = 1506; - loseGame(); - } else { - _destinationOk = true; - _coreVar._currPlace = MOUNTAIN; - affrep(); - } -} - -/** - * Engine function - Go to Manor front - * @remarks Originally called 't1deva' - */ -void MortevielleEngine::gotoManorFront() { - _manorDistance = 0; - _coreVar._currPlace = MANOR_FRONT; - affrep(); -} - -/** - * Engine function - Go to Manor back - * @remarks Originally called 't1derr' - */ -void MortevielleEngine::gotoManorBack() { - _coreVar._currPlace = MANOR_BACK; - affrep(); -} - -/** - * Engine function - Dead : Flooded in Well - * @remarks Originally called 't1deau' - */ -void MortevielleEngine::floodedInWell() { - _crep = 1503; - loseGame(); -} - -/** - * Engine function - Change Graphical Device - * @remarks Originally called 'change_gd' - */ -void MortevielleEngine::changeGraphicalDevice(int newDevice) { - _mouse.hideMouse(); - _currGraphicalDevice = newDevice; - hirs(); - _mouse.initMouse(); - _mouse.showMouse(); - drawRightFrame(); - prepareRoom(); - drawClock(); - if (_currBitIndex != 0) - showPeoplePresent(_currBitIndex); - else - displayAloneText(); - clearDescriptionBar(); - clearVerbBar(); - _maff = 68; - drawPictureWithText(); - handleDescriptionText(2, _crep); - _menu.displayMenu(); -} - -/** - * Called when a savegame has been loaded. - * @remarks Originally called 'antegame' - */ -void MortevielleEngine::gameLoaded() { - _mouse.hideMouse(); - _menu._menuDisplayed = false; - _loseGame = true; - _anyone = false; - _destinationOk = true; - _col = false; - _hiddenHero = false; - _uptodatePresence = false; - _maff = 68; - _menuOpcode = OPCODE_NONE; - _introSpeechPlayed = false; - _x = 0; - _y = 0; - _num = 0; - _startHour = 0; - _endHour = 0; - _searchCount = 0; - _roomDoorId = OWN_ROOM; - _syn = true; - _heroSearching = true; - _mchai = 0; - _manorDistance = 0; - resetOpenObjects(); - _takeObjCount = 0; - affrep(); - _hintPctMessage = getString(580); - - _destinationOk = false; - _endGame = true; - _loseGame = false; - _heroSearching = false; - - displayAloneText(); - prepareRoom(); - drawClock(); - drawPictureWithText(); - handleDescriptionText(2, _crep); - clearVerbBar(); - _endGame = false; - _menu.setDestinationText(_coreVar._currPlace); - _menu.setInventoryText(); - if (_coreVar._selectedObjectId != 0) - displayItemInHand(_coreVar._selectedObjectId + 400); - _mouse.showMouse(); -} - -/** - * Engine function - Handle OpCodes - * @remarks Originally called 'tsitu' - */ -void MortevielleEngine::handleOpcode() { - if (!_col) - clearDescriptionBar(); - _syn = false; - _keyPressedEsc = false; - if (!_anyone) { - if (_uptodatePresence) { - if ((_msg[3] == MENU_MOVE) || (_msg[4] == OPCODE_LEAVE) || (_msg[4] == OPCODE_SLEEP) || (_msg[4] == OPCODE_EAT)) { - _controlMenu = 4; - mennor(); - return; - } - } - if (_msg[3] == MENU_MOVE) - fctMove(); - if (_msg[3] == MENU_DISCUSS) - fctDiscuss(); - if (_msg[3] == MENU_INVENTORY) - fctInventoryTake(); - if (_msg[4] == OPCODE_ATTACH) - fctAttach(); - if (_msg[4] == OPCODE_WAIT) - fctWait(); - if (_msg[4] == OPCODE_FORCE) - fctForce(); - if (_msg[4] == OPCODE_SLEEP) - fctSleep(); - if (_msg[4] == OPCODE_LISTEN) - fctListen(); - if (_msg[4] == OPCODE_ENTER) - fctEnter(); - if (_msg[4] == OPCODE_CLOSE) - fctClose(); - if (_msg[4] == OPCODE_SEARCH) - fctSearch(); - if (_msg[4] == OPCODE_KNOCK) - fctKnock(); - if (_msg[4] == OPCODE_SCRATCH) - fctScratch(); - if (_msg[4] == OPCODE_READ) - fctRead(); - if (_msg[4] == OPCODE_EAT) - fctEat(); - if (_msg[4] == OPCODE_PLACE) - fctPlace(); - if (_msg[4] == OPCODE_OPEN) - fctOpen(); - if (_msg[4] == OPCODE_TAKE) - fctTake(); - if (_msg[4] == OPCODE_LOOK) - fctLook(); - if (_msg[4] == OPCODE_SMELL) - fctSmell(); - if (_msg[4] == OPCODE_SOUND) - fctSound(); - if (_msg[4] == OPCODE_LEAVE) - fctLeave(); - if (_msg[4] == OPCODE_LIFT) - fctLift(); - if (_msg[4] == OPCODE_TURN) - fctTurn(); - if (_msg[4] == OPCODE_SSEARCH) - fctSelfSearch(); - if (_msg[4] == OPCODE_SREAD) - fctSelfRead(); - if (_msg[4] == OPCODE_SPUT) - fctSelfPut(); - if (_msg[4] == OPCODE_SLOOK) - fctSelftLook(); - _hiddenHero = false; - - if (_msg[4] == OPCODE_SHIDE) - fctSelfHide(); - } else { - if (_anyone) { - interactNPC(); - _anyone = false; - mennor(); - return; - } - } - int hour, day, minute; - updateHour(day, hour, minute); - if ((((hour == 12) || (hour == 13) || (hour == 19)) && (_coreVar._currPlace != DINING_ROOM)) || - ((hour > 0) && (hour < 6) && (_coreVar._currPlace != OWN_ROOM))) - ++_coreVar._faithScore; - if (((_coreVar._currPlace < CRYPT) || (_coreVar._currPlace > MOUNTAIN)) && (_coreVar._currPlace != INSIDE_WELL) - && (_coreVar._currPlace != OWN_ROOM) && (_coreVar._selectedObjectId != 152) && (!_loseGame)) { - if ((_coreVar._faithScore > 99) && (hour > 8) && (hour < 16)) { - _crep = 1501; - loseGame(); - } - if ((_coreVar._faithScore > 99) && (hour > 0) && (hour < 9)) { - _crep = 1508; - loseGame(); - } - if ((day > 1) && (hour > 8) && (!_loseGame)) { - _crep = 1502; - loseGame(); - } - } - mennor(); -} - -/** - * Engine function - Transform time into a char - * @remarks Originally called 'tmaj3' - */ -void MortevielleEngine::hourToChar() { - int day, hour, minute; - - updateHour(day, hour, minute); - if (minute == 30) - minute = 1; - hour += day * 24; - minute += hour * 2; - _coreVar._fullHour = chr(minute); -} - -/** - * Engine function - extract time from a char - * @remarks Originally called 'theure' - */ -void MortevielleEngine::charToHour() { - int fullHour = ord(_coreVar._fullHour); - int tmpHour = fullHour % 48; - _currDay = fullHour / 48; - _currHalfHour = tmpHour % 2; - _currHour = tmpHour / 2; - _hour = _currHour; - if (_currHalfHour == 1) - _minute = 30; - else - _minute = 0; -} - -/** - * Engine function - Clear upper left part of Screen - Type 1 - * @remarks Originally called 'clsf1' - */ -void MortevielleEngine::clearUpperLeftPart() { - _mouse.hideMouse(); - _screenSurface.fillRect(0, Common::Rect(0, 11, 514, 175)); - _mouse.showMouse(); -} - -/** - * Engine function - Clear low bar used by description - * @remarks Originally called 'clsf2' - */ -void MortevielleEngine::clearDescriptionBar() { - _mouse.hideMouse(); - if (_largestClearScreen) { - _screenSurface.fillRect(0, Common::Rect(1, 176, 633, 199)); - _screenSurface.drawBox(0, 175, 634, 24, 15); - _largestClearScreen = false; - } else { - _screenSurface.fillRect(0, Common::Rect(1, 176, 633, 190)); - _screenSurface.drawBox(0, 175, 634, 15, 15); - } - _mouse.showMouse(); -} - -/** - * Engine function - Clear lowest bar used by verbs - * @remarks Originally called 'clsf3' - */ -void MortevielleEngine::clearVerbBar() { - _mouse.hideMouse(); - _screenSurface.fillRect(0, Common::Rect(1, 192, 633, 199)); - _screenSurface.drawBox(0, 191, 634, 8, 15); - _mouse.showMouse(); -} - -/** - * Engine function - Clear upper right part of the screen - * @remarks Originally called 'clsf10' - */ -void MortevielleEngine::clearUpperRightPart() { - int x1, x2; - Common::String st; - - _mouse.hideMouse(); - if (_resolutionScaler == 1) { - x2 = 634; - x1 = 534; - } else { - x2 = 600; - x1 = 544; - } - // Clear ambiance description - _screenSurface.fillRect(15, Common::Rect(x1, 93, x2, 98)); - if (_coreVar._faithScore < 33) - st = getEngineString(S_COOL); - else if (_coreVar._faithScore < 66) - st = getEngineString(S_LOURDE); - else if (_coreVar._faithScore > 65) - st = getEngineString(S_MALSAINE); - - x1 = 580 - (_screenSurface.getStringWidth(st) / 2); - _screenSurface.putxy(x1, 92); - _screenSurface.drawString(st, 4); - - // Clear person list - _screenSurface.fillRect(15, Common::Rect(560, 24, 610, 86)); - _mouse.showMouse(); -} - -/** - * Engine function - Get a random number between two values - * @remarks Originally called 'get_random_number' and 'hazard' - */ -int MortevielleEngine::getRandomNumber(int minval, int maxval) { - return _randomSource.getRandomNumber(maxval - minval) + minval; -} - -/** - * Engine function - Show alert "use move menu" - * @remarks Originally called 'aldepl' - */ -void MortevielleEngine::showMoveMenuAlert() { - _dialogManager.show(getEngineString(S_USE_DEP_MENU), 1); -} - -/** - * The original engine used this method to display a starting text screen letting the player - * select the graphics mode to use - * @remarks Originally called 'dialpre' - */ -void MortevielleEngine::showConfigScreen() { - _crep = 998; -} - -/** - * Decodes a number of 64 byte blocks - * @param pStart Start of data - * @param count Number of 64 byte blocks - * @remarks Originally called 'zzuul' - */ -void MortevielleEngine::decodeNumber(byte *pStart, int count) { - while (count-- > 0) { - for (int idx = 0; idx < 64; ++pStart, ++idx) { - uint16 v = ((*pStart - 0x80) << 1) + 0x80; - - if (v & 0x8000) - *pStart = 0; - else if (v & 0xff00) - *pStart = 0xff; - else - *pStart = (byte)v; - } - } -} - -void MortevielleEngine::cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { - uint16 oct, ocd; - - /* 5-8 */ - oct = _inpBuffer[idx]; - oct = ((uint16)(oct << (16 - pt))) >> (16 - pt); - if (pt < 6) { - ++idx; - oct = oct << (5 - pt); - pt += 11; - oct = oct | ((uint)_inpBuffer[idx] >> pt); - } else { - pt -= 5; - oct = (uint)oct >> pt; - } - - switch (oct) { - case 11: - c = '$'; - the_end = true; - break; - case 30: - case 31: - ocd = _inpBuffer[idx]; - ocd = (uint16)(ocd << (16 - pt)) >> (16 - pt); - if (pt < 6) { - ++idx; - ocd = ocd << (5 - pt); - pt += 11; - ocd = ocd | ((uint)_inpBuffer[idx] >> pt); - } else { - pt -= 5; - ocd = (uint)ocd >> pt; - } - - if (oct == 30) - c = chr(tab30[ocd]); - else - c = chr(tab31[ocd]); - - if (c == '\0') { - the_end = true; - c = '#'; - } - break; - default: - c = chr(tabdr[oct]); - break; - } -} - -/** - * Decode and extract the line with the given Id - * @remarks Originally called 'deline' - */ -Common::String MortevielleEngine::getString(int num) { - Common::String wrkStr = ""; - - if (num < 0) { - warning("getString(%d): num < 0! Skipping", num); - } else if (!_txxFileFl) { - wrkStr = getGameString(num); - } else { - int hint = _ntpBuffer[num]._hintId; - byte point = _ntpBuffer[num]._point; - int length = 0; - bool endFl = false; - char let; - do { - cinq_huit(let, hint, point, endFl); - wrkStr += let; - ++length; - } while (!endFl); - } - - while (wrkStr.lastChar() == '$') - // Remove trailing '$'s - wrkStr.deleteLastChar(); - - return wrkStr; -} - -void MortevielleEngine::copcha() { - for (int i = kAcha; i < kAcha + 390; i++) - _tabdon[i] = _tabdon[i + 390]; -} - -/** - * Engine function - When restarting the game, reset the main variables used by the engine - * @remarks Originally called 'inzon' - */ -void MortevielleEngine::resetVariables() { - copcha(); - - _coreVar._alreadyEnteredManor = false; - _coreVar._selectedObjectId = 0; - _coreVar._cellarObjectId = 0; - _coreVar._atticBallHoleObjectId = 0; - _coreVar._atticRodHoleObjectId = 0; - _coreVar._wellObjectId = 0; - _coreVar._secretPassageObjectId = 0; - _coreVar._purpleRoomObjectId = 136; - _coreVar._cryptObjectId = 141; - _coreVar._faithScore = getRandomNumber(4, 10); - _coreVar._currPlace = MANOR_FRONT; - - for (int i = 2; i <= 6; ++i) - _coreVar._inventory[i] = 0; - - // Only object in inventory: a gun - _coreVar._inventory[1] = 113; - - _coreVar._fullHour = chr(20); - - for (int i = 1; i <= 10; ++i) - _coreVar._pctHintFound[i] = ' '; - - for (int i = 1; i <= 6; ++i) - _coreVar._availableQuestion[i] = '*'; - - for (int i = 7; i <= 9; ++i) - _coreVar._availableQuestion[i] = ' '; - - for (int i = 10; i <= 28; ++i) - _coreVar._availableQuestion[i] = '*'; - - for (int i = 29; i <= 42; ++i) - _coreVar._availableQuestion[i] = ' '; - - _coreVar._availableQuestion[33] = '*'; - - for (int i = 1; i <= 8; ++i) - _nbrep[i] = 0; - - init_nbrepm(); -} - -/** - * Engine function - Set the palette - * @remarks Originally called 'writepal' - */ -void MortevielleEngine::setPal(int n) { - switch (_currGraphicalDevice) { - case MODE_TANDY: - case MODE_EGA: - case MODE_AMSTRAD1512: - for (int i = 1; i <= 16; ++i) { - _mem[(0x7000 * 16) + (2 * i)] = _stdPal[n][i].x; - _mem[(0x7000 * 16) + (2 * i) + 1] = _stdPal[n][i].y; - } - break; - case MODE_CGA: { - nhom pal[16]; - for (int i = 0; i < 16; ++i) { - pal[i] = _cgaPal[n]._a[i]; - } - - if (n < 89) - palette(_cgaPal[n]._p); - - for (int i = 0; i <= 15; ++i) - displayCGAPattern(i, _patternArr[pal[i]._id], pal); - } - break; - default: - break; - } -} - -/** - * Engine function - Display a CGA pattern, using a specified palette - * @remarks Originally called 'outbloc' - */ -void MortevielleEngine::displayCGAPattern(int n, Pattern p, nhom *pal) { - int addr = n * 404 + 0xd700; - - WRITE_LE_UINT16(&_mem[0x6000 * 16 + addr], p._tax); - WRITE_LE_UINT16(&_mem[0x6000 * 16 + addr + 2], p._tay); - addr += 4; - for (int i = 0; i < p._tax; ++i) { - for (int j = 0; j < p._tay; ++j) - _mem[(0x6000 * 16) + addr + j * p._tax + i] = pal[n]._hom[p._des[i + 1][j + 1]]; - } -} - -/** - * Engine function - Load Palette from File - * @remarks Originally called 'charpal' - */ -void MortevielleEngine::loadPalette() { - Common::File f; - byte b; - - if (!f.open("fxx.mor")) { - if (f.open("mfxx.mor")) - f.seek(7 * 25); - else - error("Missing file - fxx.mor"); - } - - for (int i = 0; i < 108; ++i) - _fxxBuffer[i] = f.readSint16LE(); - f.close(); - - if (!f.open("plxx.mor")) - error("Missing file - plxx.mor"); - for (int i = 0; i <= 90; ++i) { - for (int j = 1; j <= 16; ++j) { - _stdPal[i][j].x = f.readByte(); - _stdPal[i][j].y = f.readByte(); - } - } - f.close(); - - if (!f.open("cxx.mor")) - error("Missing file - cxx.mor"); - - for (int j = 0; j <= 90; ++j) { - _cgaPal[j]._p = f.readByte(); - for (int i = 0; i <= 15; ++i) { - nhom &with = _cgaPal[j]._a[i]; - - b = f.readByte(); - with._id = (uint)b >> 4; - with._hom[0] = ((uint)b >> 2) & 3; - with._hom[1] = b & 3; - } - } - - _cgaPal[10]._a[9] = _cgaPal[10]._a[5]; - for (int j = 0; j <= 14; ++j) { - _patternArr[j]._tax = f.readByte(); - _patternArr[j]._tay = f.readByte(); - for (int i = 1; i <= 20; ++i) { - for (int k = 1; k <= 20; ++k) - _patternArr[j]._des[i][k] = f.readByte(); - } - } - f.close(); -} - -/** - * Engine function - Load Texts from File - * @remarks Originally called 'chartex' - */ -void MortevielleEngine::loadTexts() { - Common::File inpFile; - Common::File ntpFile; - - _txxFileFl = false; - if (getLanguage() == Common::EN_ANY) { - warning("English version expected - Switching to DAT file"); - return; - } - - if (!inpFile.open("TXX.INP")) { - if (!inpFile.open("TXX.MOR")) { - warning("Missing file - TXX.INP or .MOR - Switching to DAT file"); - return; - } - } - if (!ntpFile.open("TXX.NTP")) { - warning("Missing file - TXX.INP or .MOR - Switching to DAT file"); - return; - } - - if ((inpFile.size() > (kMaxTi * 2)) || (ntpFile.size() > (kMaxTd * 3))) { - warning("TXX file - Unexpected format - Switching to DAT file"); - return; - } - - for (int i = 0; i < inpFile.size() / 2; ++i) - _inpBuffer[i] = inpFile.readUint16LE(); - - inpFile.close(); - _txxFileFl = true; - - for (int i = 0; i < (ntpFile.size() / 3); ++i) { - _ntpBuffer[i]._hintId = ntpFile.readSint16LE(); - _ntpBuffer[i]._point = ntpFile.readByte(); - } - - ntpFile.close(); - -} - -void MortevielleEngine::loadBRUIT5() { - Common::File f; - - if (!f.open("bruit5")) - error("Missing file - bruit5"); - - f.read(&_mem[kAdrNoise5 * 16 + 0], 149 * 128); - f.close(); -} - -void MortevielleEngine::loadCFIEC() { - Common::File f; - - if (!f.open("cfiec.mor")) { - if (!f.open("alcfiec.mor")) - error("Missing file - *cfiec.mor"); - } - - _cfiecBufferSize = ((f.size() / 128) + 1) * 128; - int32 fileSize = f.size(); - - if (!_reloadCFIEC) - _cfiecBuffer = (byte *)malloc(sizeof(byte) * _cfiecBufferSize); - - for (int32 i = 0; i < fileSize; ++i) - _cfiecBuffer[i] = f.readByte(); - - for (int i = fileSize; i < _cfiecBufferSize; i++) - _cfiecBuffer[i] = 0; - - f.close(); - - _reloadCFIEC = false; -} - - -void MortevielleEngine::loadCFIPH() { - Common::File f; - - if (!f.open("cfiph.mor")) { - if (!f.open("alcfiph.mor")) - error("Missing file - *cfiph.mor"); - } - - _speechManager._cfiphBuffer = (int16 *)malloc(sizeof(int16) * (f.size() / 2)); - - for (int i = 0; i < (f.size() / 2); ++i) - _speechManager._cfiphBuffer[i] = f.readSint16LE(); - - f.close(); -} - -/** - * Engine function - Play Music - * @remarks Originally called 'music' - */ -void MortevielleEngine::music() { - if (_soundOff) - return; - - _reloadCFIEC = true; - - Common::File fic; - if (!fic.open("mort.img")) - error("Missing file - mort.img"); - - fic.read(&_mem[0x3800 * 16 + 0], 500); - fic.read(&_mem[0x47a0 * 16 + 0], 123); - fic.close(); - - _soundManager.decodeMusic(&_mem[0x3800 * 16], &_mem[0x5000 * 16], 623); - _addFix = (float)((kTempoMusic - 8)) / 256; - _speechManager.cctable(_speechManager._tbi); - - bool fin = false; - int k = 0; - do { - fin = keyPressed(); - _soundManager.musyc(_speechManager._tbi, 9958, kTempoMusic); - ++k; - fin = fin | keyPressed() | (k >= 5); - } while (!fin); - while (keyPressed()) - getChar(); -} - -/** - * Engine function - Show title screen - * @remarks Originally called 'suite' - */ -void MortevielleEngine::showTitleScreen() { - hirs(); - handleDescriptionText(7, 2035); - _caff = 51; - _text.taffich(); - testKeyboard(); - if (_newGraphicalDevice != _currGraphicalDevice) - _currGraphicalDevice = _newGraphicalDevice; - hirs(); - draw(kAdrDes, 0, 0); - - Common::String cpr = "COPYRIGHT 1989 : LANKHOR"; - _screenSurface.putxy(104 + 72 * _resolutionScaler, 185); - _screenSurface.drawString(cpr, 0); -} - -/** - * Draw picture - * @remarks Originally called 'dessine' - */ -void MortevielleEngine::draw(int ad, int x, int y) { - _mouse.hideMouse(); - setPal(_numpal); - pictout(ad, 0, x, y); - _mouse.showMouse(); -} - -/** - * Draw right frame - * @remarks Originally called 'dessine_rouleau' - */ -void MortevielleEngine::drawRightFrame() { - setPal(89); - if (_currGraphicalDevice == MODE_HERCULES) { - _mem[0x7000 * 16 + 14] = 15; - } - _mouse.hideMouse(); - pictout(0x73a2, 0, 0, 0); - _mouse.showMouse(); -} - -/** - * Read the current system time - */ -int MortevielleEngine::readclock() { - TimeDate dateTime; - g_system->getTimeAndDate(dateTime); - - int m = dateTime.tm_min * 60; - int h = dateTime.tm_hour * 3600; - return h + m + dateTime.tm_sec; -} - -/** - * Engine function - Prepare room and hint string - * @remarks Originally called 'tinke' - */ -void MortevielleEngine::prepareRoom() { - int day, hour, minute; - - _anyone = false; - updateHour(day, hour, minute); - if (day != _day) { - _day = day; - int i = 0; - do { - ++i; - if (_nbrepm[i] != 0) - --_nbrepm[i]; - _nbrep[i] = 0; - } while (i != 8); - } - if ((hour > _hour) || ((hour == 0) && (_hour == 23))) { - _hour = hour; - _minute = 0; - drawClock(); - int hintCount = 0; - for (int i = 1; i <= 10; ++i) { - if (_coreVar._pctHintFound[i] == '*') - ++hintCount; - } - - Common::String pctStr; - if (hintCount == 10) - pctStr = "10"; - else - pctStr = chr(hintCount + 48); - - _hintPctMessage = "[1]["; - _hintPctMessage += getEngineString(S_SHOULD_HAVE_NOTICED); - _hintPctMessage += pctStr; - _hintPctMessage += '0'; - _hintPctMessage += getEngineString(S_NUMBER_OF_HINTS); - _hintPctMessage += "]["; - _hintPctMessage += getEngineString(S_OK); - _hintPctMessage += ']'; - } - if (minute > _minute) { - _minute = 30; - drawClock(); - } - if (_mouse._pos.y < 12) - return; - - if (!_blo) { - if ((hour == 12) || ((hour > 18) && (hour < 21)) || ((hour >= 0) && (hour < 7))) - _inGameHourDuration = kTime2; - else - _inGameHourDuration = kTime1; - if ((_coreVar._faithScore > 33) && (_coreVar._faithScore < 66)) - _inGameHourDuration -= (_inGameHourDuration / 3); - - if (_coreVar._faithScore > 65) - _inGameHourDuration -= ((_inGameHourDuration / 3) * 2); - - int newHour = readclock(); - if ((newHour - _currentDayHour) > _inGameHourDuration) { - bool activeMenu = _menu._menuActive; - _menu.eraseMenu(); - _currentHourCount += ((newHour - _currentDayHour) / _inGameHourDuration); - _currentDayHour = newHour; - switch (_place) { - case GREEN_ROOM: - case DARKBLUE_ROOM: - setRandomPresenceGreenRoom(_coreVar._faithScore); - break; - case PURPLE_ROOM: - setRandomPresencePurpleRoom(_coreVar._faithScore); - break; - case BLUE_ROOM: - setRandomPresenceBlueRoom(_coreVar._faithScore); - break; - case RED_ROOM: - case GREEN_ROOM2: - setRandomPresenceRedRoom(_coreVar._faithScore); - break; - case ROOM9: - setRandomPresenceRoom9(_coreVar._faithScore); - break; - case DINING_ROOM: - setRandomPresenceDiningRoom(_coreVar._faithScore); - break; - case BUREAU: - setRandomPresenceBureau(_coreVar._faithScore); - break; - case KITCHEN: - setRandomPresenceKitchen(_coreVar._faithScore); - break; - case ATTIC: - case CELLAR: - setRandomPresenceAttic(_coreVar._faithScore); - break; - case LANDING: - case ROOM26: - setRandomPresenceLanding(_coreVar._faithScore); - break; - case CHAPEL: - setRandomPresenceChapel(_coreVar._faithScore); - break; - } - if ((_savedBitIndex != 0) && (_currBitIndex != 10)) - _savedBitIndex = _currBitIndex; - - if ((_savedBitIndex == 0) && (_currBitIndex > 0)) { - if ((_coreVar._currPlace == ATTIC) || (_coreVar._currPlace == CELLAR)) { - initCaveOrCellar(); - } else if (_currBitIndex == 10) { - _currBitIndex = 0; - if (!_uptodatePresence) { - _uptodatePresence = true; - _startHour = readclock(); - if (getRandomNumber(1, 5) < 5) { - clearVerbBar(); - prepareScreenType2(); - displayTextInVerbBar(getEngineString(S_HEAR_NOISE)); - int rand = (getRandomNumber(0, 4)) - 2; - _speechManager.startSpeech(1, rand, 1); - clearVerbBar(); - } - } - } - } - - if (activeMenu) - _menu.drawMenu(); - } - } - _endHour = readclock(); - if ((_uptodatePresence) && ((_endHour - _startHour) > 17)) { - getPresenceBitIndex(_place); - _uptodatePresence = false; - _startHour = 0; - if ((_coreVar._currPlace > OWN_ROOM) && (_coreVar._currPlace < DINING_ROOM)) - _anyone = true; - } -} - -/** - * Engine function - Draw Clock - * @remarks Originally called 'pendule' - */ -void MortevielleEngine::drawClock() { - const int cv[2][12] = { - { 5, 8, 10, 8, 5, 0, -5, -8, -10, -8, -5, 0 }, - { -5, -3, 0, 3, 5, 6, 5, 3, 0, -3, -5, -6 } - }; - const int x = 580; - const int y = 123; - const int rg = 9; - int hourColor; - - _mouse.hideMouse(); - - _screenSurface.drawRectangle(570, 118, 20, 10); - _screenSurface.drawRectangle(578, 114, 6, 18); - if ((_currGraphicalDevice == MODE_CGA) || (_currGraphicalDevice == MODE_HERCULES)) - hourColor = 0; - else - hourColor = 1; - - if (_minute == 0) - _screenSurface.drawLine(((uint)x >> 1) * _resolutionScaler, y, ((uint)x >> 1) * _resolutionScaler, (y - rg), hourColor); - else - _screenSurface.drawLine(((uint)x >> 1) * _resolutionScaler, y, ((uint)x >> 1) * _resolutionScaler, (y + rg), hourColor); - - int hour12 = _hour; - if (hour12 > 12) - hour12 -= 12; - if (hour12 == 0) - hour12 = 12; - - _screenSurface.drawLine(((uint)x >> 1) * _resolutionScaler, y, ((uint)(x + cv[0][hour12 - 1]) >> 1) * _resolutionScaler, y + cv[1][hour12 - 1], hourColor); - _mouse.showMouse(); - _screenSurface.putxy(568, 154); - - if (_hour > 11) - _screenSurface.drawString("PM ", 1); - else - _screenSurface.drawString("AM ", 1); - - _screenSurface.putxy(550, 160); - if ((_day >= 0) && (_day <= 8)) { - Common::String tmp = getEngineString(S_DAY); - tmp.insertChar((char)(_day + 49), 0); - _screenSurface.drawString(tmp, 1); - } -} - -void MortevielleEngine::palette(int v1) { - warning("TODO: palette"); -} - -/** - * Returns a substring of the given string - * @param s Source string - * @param idx Starting index (1 based) - * @param size Number of characters to return - */ - -Common::String MortevielleEngine::copy(const Common::String &s, int idx, size_t size) { - // Copy the substring into a temporary buffer - char *tmp = new char[size + 1]; - strncpy(tmp, s.c_str() + idx - 1, size); - tmp[size] = '\0'; - - Common::String result(tmp); - delete[] tmp; - return result; -} - -void MortevielleEngine::hirs() { - // Note: The original used this to set the graphics mode and clear the screen, both at - // the start of the game, and whenever the screen need to be cleared. As such, this - // method is deprecated in favour of clearing the screen - debugC(1, kMortevielleCore, "TODO: hirs is deprecated in favour of ScreenSurface::clearScreen"); - - if (_currGraphicalDevice == MODE_TANDY) { - _screenSurface.fillRect(0, Common::Rect(0, 0, 639, 200)); - _resolutionScaler = 1; - } else if (_currGraphicalDevice == MODE_CGA) { - palette(1); - _resolutionScaler = 1; - } else - _resolutionScaler = 2; - - _screenSurface.clearScreen(); -} - -/** - * Init room : Cave or Cellar - * @remarks Originally called 'cavegre' - */ -void MortevielleEngine::initCaveOrCellar() { - _coreVar._faithScore += 2; - if (_coreVar._faithScore > 69) - _coreVar._faithScore += (_coreVar._faithScore / 10); - clearVerbBar(); - prepareScreenType2(); - displayTextInVerbBar(getEngineString(S_SOMEONE_ENTERS)); - int rand = (getRandomNumber(0, 4)) - 2; - _speechManager.startSpeech(2, rand, 1); - - // The original was doing here a useless loop. - // It has been removed - - clearVerbBar(); - displayAloneText(); -} - -/** - * Display control menu string - * @remarks Originally called 'tctrm' - */ -void MortevielleEngine::displayControlMenu() { - handleDescriptionText(2, (3000 + _controlMenu)); - _controlMenu = 0; -} - -void MortevielleEngine::pictout(int seg, int dep, int x, int y) { - GfxSurface surface; - surface.decode(&_mem[seg * 16 + dep]); - - if (_currGraphicalDevice == MODE_HERCULES) { - _mem[0x7000 * 16 + 2] = 0; - _mem[0x7000 * 16 + 32] = 15; - } - - if ((_caff != 51) && (READ_LE_UINT16(&_mem[0x7000 * 16 + 0x4138]) > 0x100)) - WRITE_LE_UINT16(&_mem[0x7000 * 16 + 0x4138], 0x100); - - _screenSurface.drawPicture(surface, x, y); -} - -void MortevielleEngine::adzon() { - Common::File f; - - if (!f.open("don.mor")) - error("Missing file - don.mor"); - - f.read(_tabdon, 7 * 256); - f.close(); - - if (!f.open("bmor.mor")) - error("Missing file - bmor.mor"); - - f.read(&_tabdon[kFleche], 1 * 1916); - f.close(); - - if (!f.open("dec.mor")) - error("Missing file - dec.mor"); - - f.read(&_mem[0x73a2 * 16 + 0], 1 * 1664); - f.close(); -} - -/** - * Returns the offset within the compressed image data resource of the desired image - */ -int MortevielleEngine::animof(int ouf, int num) { - int nani = _mem[kAdrAni * 16 + 1]; - int aux = num; - if (ouf != 1) - aux += nani; - - int animof_result = (nani << 2) + 2 + READ_BE_UINT16(&_mem[kAdrAni * 16 + (aux << 1)]); - - return animof_result; -} - -/** - * Display text in description bar - * @remarks Originally called 'text1' - */ -void MortevielleEngine::displayTextInDescriptionBar(int x, int y, int nb, int mesgId) { - int co; - - if (_resolutionScaler == 1) - co = 10; - else - co = 6; - Common::String tmpStr = getString(mesgId); - if ((y == 182) && ((int) tmpStr.size() * co > nb * 6)) - y = 176; - _text.displayStr(tmpStr, x, y, nb, 20, _textColor); -} - -/** - * Display description text - * @remarks Originally called 'repon' - */ -void MortevielleEngine::handleDescriptionText(int f, int mesgId) { - if ((mesgId > 499) && (mesgId < 563)) { - Common::String tmpStr = getString(mesgId - 501 + kInventoryStringIndex); - - if ((int) tmpStr.size() > ((58 + (_resolutionScaler - 1) * 37) << 1)) - _largestClearScreen = true; - else - _largestClearScreen = false; - - clearDescriptionBar(); - _text.displayStr(tmpStr, 8, 176, 85, 3, 5); - } else { - mapMessageId(mesgId); - switch (f) { - case 2: - case 8: - clearDescriptionBar(); - prepareScreenType2(); - displayTextInDescriptionBar(8, 182, 103, mesgId); - if ((mesgId == 68) || (mesgId == 69)) - _coreVar._availableQuestion[40] = '*'; - if ((mesgId == 104) && (_caff == CELLAR)) { - _coreVar._availableQuestion[36] = '*'; - if (_coreVar._availableQuestion[39] == '*') { - _coreVar._pctHintFound[3] = '*'; - _coreVar._availableQuestion[38] = '*'; - } - } - break; - case 1: - case 6: - case 9: { - int i; - if ((f == 1) || (f == 6)) - i = 4; - else - i = 5; - - Common::String tmpStr = getString(mesgId); - _text.displayStr(tmpStr, 80, 40, 60, 25, i); - - if (mesgId == 180) - _coreVar._pctHintFound[6] = '*'; - else if (mesgId == 179) - _coreVar._pctHintFound[10] = '*'; - } - break; - default: - break; - } - } -} - -/** - * Recompute message Id - * @remarks Originally called 'modif' - */ -void MortevielleEngine::mapMessageId(int &mesgId) { - if (mesgId == 26) - mesgId = 25; - else if ((mesgId > 29) && (mesgId < 36)) - mesgId -= 4; - else if ((mesgId > 69) && (mesgId < 78)) - mesgId -= 37; - else if ((mesgId > 99) && (mesgId < 194)) - mesgId -= 59; - else if ((mesgId > 996) && (mesgId < 1000)) - mesgId -= 862; - else if ((mesgId > 1500) && (mesgId < 1507)) - mesgId -= 1363; - else if ((mesgId > 1507) && (mesgId < 1513)) - mesgId -= 1364; - else if ((mesgId > 1999) && (mesgId < 2002)) - mesgId -= 1851; - else if (mesgId == 2010) - mesgId = 151; - else if ((mesgId > 2011) && (mesgId < 2025)) - mesgId -= 1860; - else if (mesgId == 2026) - mesgId = 165; - else if ((mesgId > 2029) && (mesgId < 2037)) - mesgId -= 1864; - else if ((mesgId > 3000) && (mesgId < 3005)) - mesgId -= 2828; - else if (mesgId == 4100) - mesgId = 177; - else if (mesgId == 4150) - mesgId = 178; - else if ((mesgId > 4151) && (mesgId < 4156)) - mesgId -= 3973; - else if (mesgId == 4157) - mesgId = 183; - else if ((mesgId == 4160) || (mesgId == 4161)) - mesgId -= 3976; -} - -/** - * Initialize open objects array - * @remarks Originally called 'initouv' - */ -void MortevielleEngine::resetOpenObjects() { - for (int cx = 1; cx <= 7; ++cx) - _openObjects[cx] = 0; - _openObjCount = 0; -} - -void MortevielleEngine::ecr2(Common::String text) { - // Some dead code was present in the original: removed - _screenSurface.putxy(8, 177); - int tlig = 59 + (_resolutionScaler - 1) * 36; - - if ((int)text.size() < tlig) - _screenSurface.drawString(text, 5); - else if ((int)text.size() < (tlig << 1)) { - _screenSurface.putxy(8, 176); - _screenSurface.drawString(copy(text, 1, (tlig - 1)), 5); - _screenSurface.putxy(8, 182); - _screenSurface.drawString(copy(text, tlig, tlig << 1), 5); - } else { - _largestClearScreen = true; - clearDescriptionBar(); - _screenSurface.putxy(8, 176); - _screenSurface.drawString(copy(text, 1, (tlig - 1)), 5); - _screenSurface.putxy(8, 182); - _screenSurface.drawString(copy(text, tlig, ((tlig << 1) - 1)), 5); - _screenSurface.putxy(8, 190); - _screenSurface.drawString(copy(text, tlig << 1, tlig * 3), 5); - } -} - -void MortevielleEngine::displayTextInVerbBar(Common::String text) { - clearVerbBar(); - _screenSurface.putxy(8, 192); - _screenSurface.drawString(text, 5); -} - -/** - * Display item in hand - * @remarks Originally called 'modobj' - */ -void MortevielleEngine::displayItemInHand(int objId) { - Common::String strp = Common::String(' '); - - if (objId != 500) - strp = getString(objId - 501 + kInventoryStringIndex); - - _menu.setText(_menu._inventoryMenu[8], strp); - _menu.disableMenuItem(_menu._inventoryMenu[8]); -} - -/** - * Display empty hand - * @remarks Originally called 'maivid' - */ -void MortevielleEngine::displayEmptyHand() { - _coreVar._selectedObjectId = 0; - displayItemInHand(500); -} - -/** - * Set a random presence: Leo or Max - * @remarks Originally called 'chlm' - */ -int MortevielleEngine::checkLeoMaxRandomPresence() { - int retval = getRandomNumber(1, 2); - if (retval == 2) - retval = 128; - - return retval; -} - -/** - * Reset room variables - * @remarks Originally called 'debloc' - */ -void MortevielleEngine::resetRoomVariables(int roomId) { - _num = 0; - _x = 0; - _y = 0; - if ((roomId != ROOM26) && (roomId != LANDING)) - resetPresenceInRooms(roomId); - _savedBitIndex = _currBitIndex; -} - -/** - * Compute presence stats - * @remarks Originally called 'ecfren' - */ -int MortevielleEngine::getPresenceStats(int &rand, int cf, int roomId) { - if (roomId == OWN_ROOM) - displayAloneText(); - int retVal = -500; - rand = 0; - if ( ((roomId == GREEN_ROOM) && (!_roomPresenceLuc) && (!_roomPresenceIda)) - || ((roomId == DARKBLUE_ROOM) && (!_roomPresenceGuy) && (!_roomPresenceEva)) ) - retVal = getPresenceStatsGreenRoom(); - if ((roomId == PURPLE_ROOM) && (!_purpleRoomPresenceLeo) && (!_room9PresenceLeo)) - retVal = getPresenceStatsPurpleRoom(); - if ( ((roomId == TOILETS) && (!_toiletsPresenceBobMax)) - || ((roomId == BATHROOM) && (!_bathRoomPresenceBobMax)) ) - retVal = getPresenceStatsToilets(); - if ((roomId == BLUE_ROOM) && (!_roomPresenceMax)) - retVal = getPresenceStatsBlueRoom(); - if ( ((roomId == RED_ROOM) && (!_roomPresenceBob)) - || ((roomId == GREEN_ROOM2) && (!_roomPresencePat))) - retVal = getPresenceStatsRedRoom(); - if ((roomId == ROOM9) && (!_room9PresenceLeo) && (!_purpleRoomPresenceLeo)) - retVal = 10; - if ( ((roomId == PURPLE_ROOM) && (_room9PresenceLeo)) - || ((roomId == ROOM9) && (_purpleRoomPresenceLeo))) - retVal = -400; - if (retVal != -500) { - retVal += cf; - rand = getRandomNumber(1, 100); - } - - return retVal; -} - -/** - * Set presence flags - * @remarks Originally called 'becfren' - */ -void MortevielleEngine::setPresenceFlags(int roomId) { - if ((roomId == GREEN_ROOM) || (roomId == DARKBLUE_ROOM)) { - int rand = getRandomNumber(1, 2); - if (roomId == GREEN_ROOM) { - if (rand == 1) - _roomPresenceLuc = true; - else - _roomPresenceIda = true; - } else { // roomId == DARKBLUE_ROOM - if (rand == 1) - _roomPresenceGuy = true; - else - _roomPresenceEva = true; - } - } else if (roomId == PURPLE_ROOM) - _purpleRoomPresenceLeo = true; - else if (roomId == TOILETS) - _toiletsPresenceBobMax = true; - else if (roomId == BLUE_ROOM) - _roomPresenceMax = true; - else if (roomId == RED_ROOM) - _roomPresenceBob = true; - else if (roomId == BATHROOM) - _bathRoomPresenceBobMax = true; - else if (roomId == GREEN_ROOM2) - _roomPresencePat = true; - else if (roomId == ROOM9) - _room9PresenceLeo = true; -} - -void MortevielleEngine::init_nbrepm() { - static const byte ipm[9] = { 0, 4, 5, 6, 7, 5, 6, 5, 8 }; - - for (int idx = 0; idx < 9; ++idx) - _nbrepm[idx] = ipm[idx]; -} - -void MortevielleEngine::phaz(int &rand, int &p, int cf) { - p += cf; - rand = getRandomNumber(1, 100); -} - -/** - * Get Presence - * @remarks Originally called 't11' - */ -int MortevielleEngine::getPresence(int roomId) { - int retVal = 0; - int rand; - - int p = getPresenceStats(rand, _coreVar._faithScore, roomId); - _place = roomId; - if ((roomId > OWN_ROOM) && (roomId < DINING_ROOM)) { - if (p != -500) { - if (rand > p) { - displayAloneText(); - retVal = 0; - } else { - setPresenceFlags(_place); - retVal = getPresenceBitIndex(_place); - } - } else - retVal = getPresenceBitIndex(_place); - } - - if (roomId > ROOM9) { - if ((roomId > LANDING) && (roomId != CHAPEL) && (roomId != ROOM26)) - displayAloneText(); - else { - int h = 0; - if (roomId == DINING_ROOM) - p = getPresenceStatsDiningRoom(h); - else if (roomId == BUREAU) - p = getPresenceStatsBureau(h); - else if (roomId == KITCHEN) - p = getPresenceStatsKitchen(); - else if ((roomId == ATTIC) || (roomId == CELLAR)) - p = getPresenceStatsAttic(); - else if ((roomId == LANDING) || (roomId == ROOM26)) - p = getPresenceStatsLanding(); - else if (roomId == CHAPEL) - p = getPresenceStatsChapel(h); - p += _coreVar._faithScore; - rand = getRandomNumber(1, 100); - if (rand > p) { - displayAloneText(); - retVal = 0; - } else { - if (roomId == DINING_ROOM) - p = setPresenceDiningRoom(h); - else if (roomId == BUREAU) - p = setPresenceBureau(h); - else if ((roomId == KITCHEN) || (roomId == ATTIC) || (roomId == CELLAR)) - p = setPresenceKitchen(); - else if ((roomId == LANDING) || (roomId == ROOM26)) - p = setPresenceLanding(); - else if (roomId == CHAPEL) - p = setPresenceChapel(h); - retVal = p; - } - } - } - - return retVal; -} - -void MortevielleEngine::writetp(Common::String s, int t) { - if (_resolutionScaler == 2) - _screenSurface.drawString(s, t); - else - _screenSurface.drawString(copy(s, 1, 25), t); -} - -void MortevielleEngine::aniof(int ouf, int num) { - if ((_caff == BATHROOM) && ((num == 4) || (num == 5))) - return; - - if ((_caff == DINING_ROOM) && (num == 7)) - num = 6; - else if (_caff == KITCHEN) { - if (num == 3) - num = 4; - else if (num == 4) - num = 3; - } - - int ad = kAdrAni; - int offset = animof(ouf, num); - - GfxSurface surface; - surface.decode(&_mem[ad * 16 + offset]); - _screenSurface.drawPicture(surface, 0, 12); - - prepareScreenType1(); -} - -/** - * Draw Picture - * @remarks Originally called 'dessin' - */ -void MortevielleEngine::drawPicture() { - clearUpperLeftPart(); - if (_caff > 99) { - draw(kAdrDes, 60, 33); - _screenSurface.drawBox(118, 32, 291, 121, 15); // Medium box - } else if (_caff > 69) { - draw(kAdrDes, 112, 48); // Heads - _screenSurface.drawBox(222, 47, 155, 91, 15); - } else { - draw(kAdrDes, 0, 12); - prepareScreenType1(); - if ((_caff < 30) || (_caff > 32)) { - for (int cx = 1; cx <= 6; ++cx) { - if (_openObjects[cx] != 0) - aniof(1, _openObjects[cx]); - } - - if (_caff == ATTIC) { - if (_coreVar._atticBallHoleObjectId == 141) - aniof(1, 7); - - if (_coreVar._atticRodHoleObjectId == 159) - aniof(1, 6); - } else if ((_caff == CELLAR) && (_coreVar._cellarObjectId == 151)) - aniof(1, 2); - else if ((_caff == SECRET_PASSAGE) && (_coreVar._secretPassageObjectId == 143)) - aniof(1, 1); - else if ((_caff == WELL) && (_coreVar._wellObjectId != 0)) - aniof(1, 1); - } - - if (_caff < ROOM26) - startMusicOrSpeech(1); - } -} - -void MortevielleEngine::drawPictureWithText() { - _text.taffich(); - drawPicture(); - _destinationOk = false; -} - -/** - * Engine function - Place - * @remarks Originally called 'tkey1' - */ -void MortevielleEngine::testKey(bool d) { - bool quest = false; - int x, y; - bool click; - - _mouse.hideMouse(); - fenat('K'); - - // Wait for release from any key or mouse button - while (keyPressed()) - _key = testou(); - - do { - _mouse.getMousePosition(x, y, click); - keyPressed(); - } while (click); - - // Event loop - do { - if (d) - prepareRoom(); - quest = keyPressed(); - _mouse.getMousePosition(x, y, click); - if (shouldQuit()) - return; - } while (!(quest || (click) || (d && _anyone))); - if (quest) - testou(); - setMouseClick(false); - _mouse.showMouse(); -} - -void MortevielleEngine::tlu(int af, int ob) { - _caff = 32; - drawPictureWithText(); - handleDescriptionText(6, ob + 4000); - handleDescriptionText(2, 999); - testKey(true); - _caff = af; - _msg[3] = OPCODE_NONE; - _crep = 998; -} - -void MortevielleEngine::affrep() { - _caff = _coreVar._currPlace; - _crep = _coreVar._currPlace; -} - -/** - * Exit room - * @remarks Originally called 'tsort' - */ -void MortevielleEngine::exitRoom() { - if ((_openObjCount > 0) && (_coreVar._currPlace != OWN_ROOM)) { - if (_coreVar._faithScore < 50) - _coreVar._faithScore += 2; - else - _coreVar._faithScore += (_coreVar._faithScore / 10); - } - - resetOpenObjects(); - - _roomDoorId = OWN_ROOM; - _mchai = 0; - resetRoomVariables(_coreVar._currPlace); -} - -/** - * get 'read' description - * @remarks Originally called 'st4' - */ -void MortevielleEngine::getReadDescription(int objId) { - _crep = 997; - - switch (objId) { - case 114 : - _crep = 109; - break; - case 110 : - _crep = 107; - break; - case 158 : - _crep = 113; - break; - case 152: - case 153: - case 154: - case 155: - case 156: - case 150: - case 100: - case 157: - case 160: - case 161 : - tlu(_caff, objId); - break; - default: - break; - } -} - -/** - * get 'search' description - * @remarks Originally called 'st7' - */ -void MortevielleEngine::getSearchDescription(int objId) { - switch (objId) { - case 116: - case 144: - _crep = 104; - break; - case 126: - case 111: - _crep = 108; - break; - case 132: - _crep = 111; - break; - case 142: - _crep = 112; - break; - default: - _crep = 183; - getReadDescription(objId); - } -} - -void MortevielleEngine::mennor() { - _menu.menuUp(_msg[3]); -} - -void MortevielleEngine::premtet() { - draw(kAdrDes, 10, 80); - _screenSurface.drawBox(18, 79, 155, 91, 15); -} - -void MortevielleEngine::ajchai() { - int cy = kAcha + ((_mchai - 1) * 10) - 1; - int cx = 0; - do { - ++cx; - } while ((cx <= 9) && (_tabdon[cy + cx] != 0)); - - if (_tabdon[cy + cx] == 0) - _tabdon[cy + cx] = _coreVar._selectedObjectId; - else - _crep = 192; -} - -/** - * Check if inventory is full and, if not, add object in it. - * @remarks Originally called 'ajjer' - */ -void MortevielleEngine::addObjectToInventory(int objectId) { - int i = 0; - do { - ++i; - } while ((i <= 5) && (_coreVar._inventory[i] != 0)); - - if (_coreVar._inventory[i] == 0) { - _coreVar._inventory[i] = objectId; - _menu.setInventoryText(); - } else - // Inventory is full - _crep = 139; -} - -/** - * Interact with NPC - * @remarks Originally called 'quelquun' - */ -void MortevielleEngine::interactNPC() { - if (_menu._menuDisplayed) - _menu.eraseMenu(); - - endSearch(); - _crep = 997; -L1: - if (!_hiddenHero) { - if (_crep == 997) - _crep = 138; - handleDescriptionText(2, _crep); - if (_crep == 138) - _speechManager.startSpeech(5, 2, 1); - else - _speechManager.startSpeech(4, 4, 1); - - if (_openObjCount == 0) - _coreVar._faithScore += 2; - else if (_coreVar._faithScore < 50) - _coreVar._faithScore += 4; - else - _coreVar._faithScore += 3 * (_coreVar._faithScore / 10); - exitRoom(); - _menu.setDestinationText(LANDING); - int cx = convertBitIndexToCharacterIndex(_currBitIndex); - _caff = 69 + cx; - _crep = _caff; - _msg[3] = MENU_DISCUSS; - _msg[4] = _menu._discussMenu[cx]; - _syn = true; - _col = true; - } else { - if (getRandomNumber(1, 3) == 2) { - _hiddenHero = false; - _crep = 137; - goto L1; - } else { - handleDescriptionText(2, 136); - int rand = (getRandomNumber(0, 4)) - 2; - _speechManager.startSpeech(3, rand, 1); - clearDescriptionBar(); - displayAloneText(); - resetRoomVariables(MANOR_FRONT); - affrep(); - } - } - if (_menu._menuDisplayed) - _menu.drawMenu(); -} - -void MortevielleEngine::tsuiv() { - int tbcl; - int cy = kAcha + ((_mchai - 1) * 10) - 1; - int cx = 0; - do { - ++cx; - ++_searchCount; - int cl = cy + _searchCount; - tbcl = _tabdon[cl]; - } while ((tbcl == 0) && (_searchCount <= 9)); - - if ((tbcl != 0) && (_searchCount < 11)) { - _caff = tbcl; - _crep = _caff + 400; - if (_currBitIndex != 0) - _coreVar._faithScore += 2; - } else { - affrep(); - endSearch(); - if (cx > 9) - _crep = 131; - } -} - -void MortevielleEngine::tfleche() { - bool qust; - char touch; - - if (_num == 9999) - return; - - fenat(chr(152)); - bool inRect = false; - do { - touch = '\0'; - - do { - _mouse.moveMouse(qust, touch); - if (shouldQuit()) - return; - - if (getMouseClick()) - inRect = (_mouse._pos.x < 256 * _resolutionScaler) && (_mouse._pos.y < 176) && (_mouse._pos.y > 12); - prepareRoom(); - } while (!(qust || inRect || _anyone)); - - if (qust && (touch == '\103')) - _dialogManager.show(_hintPctMessage, 1); - } while (!((touch == '\73') || ((touch == '\104') && (_x != 0) && (_y != 0)) || (_anyone) || (inRect))); - - if (touch == '\73') - _keyPressedEsc = true; - - if (inRect) { - _x = _mouse._pos.x; - _y = _mouse._pos.y; - } -} - -/** - * Set coordinates - * @remarks Originally called 'tcoord' - */ -void MortevielleEngine::setCoordinates(int sx) { - int sy, ix, iy; - int ib; - - - _num = 0; - _crep = 999; - int a = 0; - int atdon = kAmzon + 3; - int cy = 0; - while (cy < _caff) { - a += _tabdon[atdon]; - atdon += 4; - ++cy; - } - - if (_tabdon[atdon] == 0) { - _crep = 997; - return; - } - - a += kFleche; - int cb = 0; - for (cy = 0; cy <= (sx - 2); ++cy) { - ib = (_tabdon[a + cb] << 8) + _tabdon[(a + cb + 1)]; - cb += (ib * 4) + 2; - } - ib = (_tabdon[a + cb] << 8) + _tabdon[(a + cb + 1)]; - if (ib == 0) { - _crep = 997; - return; - } - - cy = 1; - do { - cb += 2; - sx = _tabdon[a + cb] * _resolutionScaler; - sy = _tabdon[(a + cb + 1)]; - cb += 2; - ix = _tabdon[a + cb] * _resolutionScaler; - iy = _tabdon[(a + cb + 1)]; - ++cy; - } while (!(((_x >= sx) && (_x <= ix) && (_y >= sy) && (_y <= iy)) || (cy > ib))); - - if ((_x >= sx) && (_x <= ix) && (_y >= sy) && (_y <= iy)) { - _num = cy - 1; - return; - } - - _crep = 997; -} - -void MortevielleEngine::treg(int objId) { - int mdes = _caff; - _caff = objId; - - if (((_caff > 29) && (_caff < 33)) || (_caff == 144) || (_caff == 147) || (_caff == 149) || (_msg[4] == OPCODE_SLOOK)) { - drawPictureWithText(); - if ((_caff > 29) && (_caff < 33)) - handleDescriptionText(2, _caff); - else - handleDescriptionText(2, _caff + 400); - testKey(true); - _caff = mdes; - _msg[3] = 0; - _crep = 998; - } else { - _obpart = true; - _crep = _caff + 400; - _menu.setSearchMenu(); - } -} - -/** - * Engine function - Put in hand - * @remarks Originally called 'avpoing' - */ -void MortevielleEngine::putInHand(int &objId) { - _crep = 999; - if (_coreVar._selectedObjectId != 0) - addObjectToInventory(_coreVar._selectedObjectId); - - // If inventory wasn't full - if (_crep != 139) { - displayItemInHand(objId + 400); - _coreVar._selectedObjectId = objId; - objId = 0; - } -} - -void MortevielleEngine::rechai(int &ch) { - int tmpPlace = _coreVar._currPlace; - - if (_coreVar._currPlace == CRYPT) - tmpPlace = CELLAR; - ch = _tabdon[kAchai + (tmpPlace * 7) + _num - 1]; -} - -/** - * Check before leaving the secret passage - * @remarks Originally called 't23coul' - */ -int MortevielleEngine::checkLeaveSecretPassage() { - if (!checkInventory(143)) { - _crep = 1512; - loseGame(); - } - - return CELLAR; -} - -void MortevielleEngine::fenat(char ans) { - int coul; - - _mouse.hideMouse(); - if (_currGraphicalDevice == MODE_CGA) - coul = 2; - else if (_currGraphicalDevice == MODE_HERCULES) - coul = 1; - else - coul = 12; - - _screenSurface.writeCharacter(Common::Point(306, 193), ord(ans), coul); - _screenSurface.drawBox(300, 191, 16, 8, 15); - _mouse.showMouse(); -} - -/** - * Test Keyboard - * @remarks Originally called 'teskbd' - */ -void MortevielleEngine::testKeyboard() { - if (keyPressed()) - testou(); -} - -int MortevielleEngine::testou() { - char ch = getChar(); - - switch (ch) { - case '\23' : - _soundOff = !_soundOff; - break; - case '\26' : - if ((_x26KeyCount == 1) || (_x26KeyCount == 2)) { - decodeNumber(&_cfiecBuffer[161 * 16], (_cfiecBufferSize - (161 * 16)) / 64); - ++_x26KeyCount; - - return 61; - } - break; - case '\33' : - if (keyPressed()) - ch = getChar(); - break; - default: - break; - } - - return ord(ch); -} - -void MortevielleEngine::sauvecr(int y, int dy) { -// _mouse.hideMouse(); -// _mouse.showMouse(); -} - -void MortevielleEngine::charecr(int y, int dy) { -// _mouse.hideMouse(); -// _mouse.showMouse(); -} - } // End of namespace Mortevielle diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp new file mode 100644 index 0000000000..f2d0c952dc --- /dev/null +++ b/engines/mortevielle/utils.cpp @@ -0,0 +1,3454 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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. + * + */ + +/* + * This code is based on original Mortville Manor DOS source code + * Copyright (c) 1987-1989 Lankhor + */ + +#include "common/scummsys.h" +#include "graphics/cursorman.h" + +#include "mortevielle/dialogs.h" +#include "mortevielle/menu.h" +#include "mortevielle/mortevielle.h" +#include "mortevielle/mouse.h" +#include "mortevielle/outtext.h" +#include "mortevielle/speech.h" + +namespace Mortevielle { + +/** + * Check is a key was pressed + * It also delays the engine and check if the screen has to be updated + * @remarks Originally called 'keypressed' + */ +bool MortevielleEngine::keyPressed() { + // Check for any pending key presses + handleEvents(); + + // Check if it's time to draw the next frame + if (g_system->getMillis() > (_lastGameFrame + GAME_FRAME_DELAY)) { + _lastGameFrame = g_system->getMillis(); + + _screenSurface.updateScreen(); + + _debugger.onFrame(); + } + + // Delay briefly to keep CPU usage down + g_system->delayMillis(5); + + // Return if there are any pending key presses + return !_keypresses.empty(); +} + +/** + * Wait for a keypress + * @remarks Originally called 'get_ch' + */ +int MortevielleEngine::getChar() { + // If there isn't any pending keypress, wait until there is + while (!shouldQuit() && _keypresses.empty()) { + keyPressed(); + } + + // Return the top keypress + return shouldQuit() ? 0 : _keypresses.pop(); +} + +/** + * Handle pending events + * @remarks Since the ScummVM screen surface is double height to handle 640x200 using 640x400, + * the mouse Y position is divided by 2 to keep the game thinking the Y goes from 0 - 199 + */ +bool MortevielleEngine::handleEvents() { + Common::Event event; + if (!g_system->getEventManager()->pollEvent(event)) + return false; + + switch (event.type) { + case Common::EVENT_LBUTTONDOWN: + case Common::EVENT_LBUTTONUP: + case Common::EVENT_MOUSEMOVE: + _mousePos = Common::Point(event.mouse.x, event.mouse.y / 2); + _mouse._pos.x = event.mouse.x; + _mouse._pos.y = event.mouse.y / 2; + + if (event.type == Common::EVENT_LBUTTONDOWN) + _mouseClick = true; + else if (event.type == Common::EVENT_LBUTTONUP) + _mouseClick = false; + + break; + case Common::EVENT_KEYDOWN: + addKeypress(event); + break; + default: + break; + } + + return true; +} + +/** + * Add the specified key to the pending keypress stack + */ +void MortevielleEngine::addKeypress(Common::Event &evt) { + // Character to add + char ch = evt.kbd.ascii; + + // Check for debugger + if ((evt.kbd.keycode == Common::KEYCODE_d) && (evt.kbd.flags & Common::KBD_CTRL)) { + // Attach to the debugger + _debugger.attach(); + _debugger.onFrame(); + } else if ((evt.kbd.keycode >= Common::KEYCODE_a) && (evt.kbd.keycode <= Common::KEYCODE_z)) { + // Handle alphabetic keys + if (evt.kbd.hasFlags(Common::KBD_CTRL)) + ch = evt.kbd.keycode - Common::KEYCODE_a + 1; + else + ch = evt.kbd.keycode - Common::KEYCODE_a + 'A'; + } else if ((evt.kbd.keycode >= Common::KEYCODE_F1) && (evt.kbd.keycode <= Common::KEYCODE_F12)) { + // Handle function keys + ch = 59 + evt.kbd.keycode - Common::KEYCODE_F1; + } else { + // Series of special cases + switch (evt.kbd.keycode) { + case Common::KEYCODE_KP4: + case Common::KEYCODE_LEFT: + ch = '4'; + break; + case Common::KEYCODE_KP2: + case Common::KEYCODE_DOWN: + ch = '2'; + break; + case Common::KEYCODE_KP6: + case Common::KEYCODE_RIGHT: + ch = '6'; + break; + case Common::KEYCODE_KP8: + case Common::KEYCODE_UP: + ch = '8'; + break; + case Common::KEYCODE_KP7: + ch = '7'; + break; + case Common::KEYCODE_KP1: + ch = '1'; + break; + case Common::KEYCODE_KP9: + ch = '9'; + break; + case Common::KEYCODE_KP3: + ch = '3'; + break; + case Common::KEYCODE_KP5: + ch = '5'; + break; + case Common::KEYCODE_RETURN: + ch = '\13'; + break; + case Common::KEYCODE_ESCAPE: + ch = '\33'; + break; + default: + break; + } + } + + if (ch != 0) + _keypresses.push(ch); +} + + +static byte CURSOR_ARROW_DATA[16 * 16] = { + 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x0f, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + +/** + * Initialize the mouse + */ +void MortevielleEngine::initMouse() { + CursorMan.replaceCursor(CURSOR_ARROW_DATA, 16, 16, 0, 0, 0xff); + CursorMan.showMouse(true); + + _mouse.initMouse(); +} + +/** + * Sets the mouse position + * @remarks Since the ScummVM screen surface is double height to handle 640x200 using 640x400, + * the mouse Y position is doubled to convert from 0-199 to 0-399 + */ +void MortevielleEngine::setMousePos(const Common::Point &pt) { + // Adjust the passed position from simulated 640x200 to 640x400 co-ordinates + Common::Point newPoint(pt.x, (pt.y == 199) ? 399 : pt.y * 2); + + if (newPoint != _mousePos) + // Warp the mouse to the new position + g_system->warpMouse(newPoint.x, newPoint.y); + + // Save the new position + _mousePos = newPoint; +} + +/** + * Delay by a given amount + */ +void MortevielleEngine::delay(int amount) { + uint32 endTime = g_system->getMillis() + amount; + + while (g_system->getMillis() < endTime) { + if (g_system->getMillis() > (_lastGameFrame + GAME_FRAME_DELAY)) { + _lastGameFrame = g_system->getMillis(); + _screenSurface.updateScreen(); + + _debugger.onFrame(); + } + + g_system->delayMillis(10); + } +} + +/** + * Waits for the user to select an action, and then handles it + * @remarks Originally called tecran + */ +void MortevielleEngine::handleAction() { + const int lim = 20000; + int temps = 0; + char inkey = '\0'; + bool oo, funct = 0; + + clearVerbBar(); + oo = false; + _controlMenu = 0; + if (!_keyPressedEsc) { + _menu.drawMenu(); + _menu._menuDisplayed = true; + temps = 0; + _key = 0; + funct = false; + inkey = '.'; + + _inMainGameLoop = true; + do { + _menu.updateMenu(); + prepareRoom(); + _mouse.moveMouse(funct, inkey); + if (shouldQuit()) + return; + ++temps; + } while (!((_menu._menuSelected) || (temps > lim) || (funct) || (_anyone))); + _inMainGameLoop = false; + + _menu.eraseMenu(); + _menu._menuDisplayed = false; + if ((inkey == '\1') || (inkey == '\3') || (inkey == '\5') || (inkey == '\7') || (inkey == '\11')) { + changeGraphicalDevice((uint)(ord(inkey) - 1) >> 1); + return; + } + if (_menu._menuSelected && (_msg[3] == MENU_SAVE)) { + Common::String saveName = Common::String::format("Savegame #%d", _msg[4] & 15); + _savegameManager.saveGame(_msg[4] & 15, saveName); + } + if (_menu._menuSelected && (_msg[3] == MENU_LOAD)) + _savegameManager.loadGame((_msg[4] & 15) - 1); + if (inkey == '\103') { /* F9 */ + temps = _dialogManager.show(_hintPctMessage, 1); + return; + } else if (inkey == '\77') { + if ((_menuOpcode != OPCODE_NONE) && ((_msg[3] == MENU_ACTION) || (_msg[3] == MENU_SELF))) { + _msg[4] = _menuOpcode; + displayTextInVerbBar(getEngineString(S_IDEM)); + } else + return; + } else if (inkey == '\104') { + if ((_x != 0) && (_y != 0)) + _num = 9999; + return; + } + } + if (inkey == '\73') { + _quitGame = true; + hourToChar(); + } else { + if ((funct) && (inkey != '\77')) + return; + if (temps > lim) { + handleDescriptionText(2, 141); + if (_num == 9999) + _num = 0; + } else { + _menuOpcode = _msg[3]; + if ((_msg[3] == MENU_ACTION) || (_msg[3] == MENU_SELF)) + _menuOpcode = _msg[4]; + if (!_anyone) { + if ((_heroSearching) || (_obpart)) { + if (_mouse._pos.y < 12) + return; + + if ((_msg[4] == OPCODE_SOUND) || (_msg[4] == OPCODE_LIFT)) { + oo = true; + if ((_msg[4] == OPCODE_LIFT) || (_obpart)) { + endSearch(); + _caff = _coreVar._currPlace; + _crep = 998; + } else + tsuiv(); + mennor(); + } + } + } + do { + if (! oo) + handleOpcode(); + + if ((_controlMenu == 0) && (! _loseGame) && (! _endGame)) { + _text.taffich(); + if (_destinationOk) { + _destinationOk = false; + drawPicture(); + } + if ((!_syn) || (_col)) + handleDescriptionText(2, _crep); + } + } while (_syn); + if (_controlMenu != 0) + displayControlMenu(); + } + } +} + +/** + * Engine function - Init Places + * @remarks Originally called 'init_lieu' + */ +void MortevielleEngine::loadPlaces() { + Common::File f; + + if (!f.open("MXX.mor")) + if (!f.open("MFXX.mor")) + error("Missing file - MXX.mor"); + + for (int i = 0; i < 7; ++i) { + for (int j = 0; j < 25; ++j) + _destinationArray[i][j] = f.readByte(); + } + + f.close(); +} + +/** + * Set Text Color + * @remarks Originally called 'text_color' + */ +void MortevielleEngine::setTextColor(int col) { + _textColor = col; +} + +/** + * Prepare screen - Type 1! + * @remarks Originally called 'ecrf1' + */ +void MortevielleEngine::prepareScreenType1() { + // Large drawing + _screenSurface.drawBox(0, 11, 512, 163, 15); +} + +/** + * Prepare room - Type 2! + * @remarks Originally called 'ecrf2' + */ +void MortevielleEngine::prepareScreenType2() { + setTextColor(5); +} + +/** + * Prepare room - Type 3! + * @remarks Originally called 'ecrf7' + */ +void MortevielleEngine::prepareScreenType3() { + setTextColor(4); +} + +/** + * Engine function - Update hour + * @remarks Originally called 'calch' + */ +void MortevielleEngine::updateHour(int &day, int &hour, int &minute) { + int newHour = readclock(); + int th = _currentHourCount + ((newHour - _currentDayHour) / _inGameHourDuration); + minute = ((th % 2) + _currHalfHour) * 30; + hour = ((uint)th >> 1) + _currHour; + if (minute == 60) { + minute = 0; + ++hour; + } + day = (hour / 24) + _currDay; + hour = hour - ((day - _currDay) * 24); +} + +/** + * Engine function - Convert character index to bit index + * @remarks Originally called 'conv' + */ +int MortevielleEngine::convertCharacterIndexToBitIndex(int characterIndex) { + return 128 >> (characterIndex - 1); +} + +/** + * Engine function - Convert bit index to character index + * @remarks Originally called 'tip' + */ +int MortevielleEngine::convertBitIndexToCharacterIndex(int bitIndex) { + int retVal = 0; + + if (bitIndex == 128) + retVal = 1; + else if (bitIndex == 64) + retVal = 2; + else if (bitIndex == 32) + retVal = 3; + else if (bitIndex == 16) + retVal = 4; + else if (bitIndex == 8) + retVal = 5; + else if (bitIndex == 4) + retVal = 6; + else if (bitIndex == 2) + retVal = 7; + else if (bitIndex == 1) + retVal = 8; + + return retVal; +} + +/** + * Engine function - Reset presence in other rooms + * @remarks Originally called 't5' + */ +void MortevielleEngine::resetPresenceInRooms(int roomId) { + if (roomId == DINING_ROOM) + _blo = false; + + if (roomId != GREEN_ROOM) { + _roomPresenceLuc = false; + _roomPresenceIda = false; + } + + if (roomId != PURPLE_ROOM) + _purpleRoomPresenceLeo = false; + + if (roomId != DARKBLUE_ROOM) { + _roomPresenceGuy = false; + _roomPresenceEva = false; + } + + if (roomId != BLUE_ROOM) + _roomPresenceMax = false; + if (roomId != RED_ROOM) + _roomPresenceBob = false; + if (roomId != GREEN_ROOM2) + _roomPresencePat = false; + if (roomId != TOILETS) + _toiletsPresenceBobMax = false; + if (roomId != BATHROOM) + _bathRoomPresenceBobMax = false; + if (roomId != ROOM9) + _room9PresenceLeo = false; +} + +/** + * Engine function - Show the people present in the given room + * @remarks Originally called 'affper' + */ +void MortevielleEngine::showPeoplePresent(int bitIndex) { + int xp = 580 - (_screenSurface.getStringWidth("LEO") / 2); + + for (int i = 1; i <= 8; ++i) + _menu.disableMenuItem(_menu._discussMenu[i]); + + clearUpperRightPart(); + if ((bitIndex & 128) == 128) { + _screenSurface.putxy(xp, 24); + _screenSurface.drawString("LEO", 4); + _menu.enableMenuItem(_menu._discussMenu[1]); + } + if ((bitIndex & 64) == 64) { + _screenSurface.putxy(xp, 32); + _screenSurface.drawString("PAT", 4); + _menu.enableMenuItem(_menu._discussMenu[2]); + } + if ((bitIndex & 32) == 32) { + _screenSurface.putxy(xp, 40); + _screenSurface.drawString("GUY", 4); + _menu.enableMenuItem(_menu._discussMenu[3]); + } + if ((bitIndex & 16) == 16) { + _screenSurface.putxy(xp, 48); + _screenSurface.drawString("EVA", 4); + _menu.enableMenuItem(_menu._discussMenu[4]); + } + if ((bitIndex & 8) == 8) { + _screenSurface.putxy(xp, 56); + _screenSurface.drawString("BOB", 4); + _menu.enableMenuItem(_menu._discussMenu[5]); + } + if ((bitIndex & 4) == 4) { + _screenSurface.putxy(xp, 64); + _screenSurface.drawString("LUC", 4); + _menu.enableMenuItem(_menu._discussMenu[6]); + } + if ((bitIndex & 2) == 2) { + _screenSurface.putxy(xp, 72); + _screenSurface.drawString("IDA", 4); + _menu.enableMenuItem(_menu._discussMenu[7]); + } + if ((bitIndex & 1) == 1) { + _screenSurface.putxy(xp, 80); + _screenSurface.drawString("MAX", 4); + _menu.enableMenuItem(_menu._discussMenu[8]); + } + _currBitIndex = bitIndex; +} + +/** + * Engine function - Select random characters + * @remarks Originally called 'choix' + */ +int MortevielleEngine::selectCharacters(int min, int max) { + bool invertSelection = false; + int rand = getRandomNumber(min, max); + + if (rand > 4) { + rand = 8 - rand; + invertSelection = true; + } + + int i = 0; + int retVal = 0; + while (i < rand) { + int charIndex = getRandomNumber(1, 8); + int charBitIndex = convertCharacterIndexToBitIndex(charIndex); + if ((retVal & charBitIndex) != charBitIndex) { + ++i; + retVal |= charBitIndex; + } + } + if (invertSelection) + retVal = 255 - retVal; + + return retVal; +} + +/** + * Engine function - Get Presence Statistics - Green Room + * @remarks Originally called 'cpl1' + */ +int MortevielleEngine::getPresenceStatsGreenRoom() { + int day, hour, minute; + int retVal = 0; + + updateHour(day, hour, minute); + // The original uses an || instead of an &&, resulting + // in an always true condition. Based on the other tests, + // and on other scenes, we use an && instead. + if ((hour > 7) && (hour < 11)) + retVal = 25; + else if ((hour > 10) && (hour < 14)) + retVal = 35; + else if ((hour > 13) && (hour < 16)) + retVal = 50; + else if ((hour > 15) && (hour < 18)) + retVal = 5; + else if ((hour > 17) && (hour < 22)) + retVal = 35; + else if ((hour > 21) && (hour < 24)) + retVal = 50; + else if ((hour >= 0) && (hour < 8)) + retVal = 70; + + _menu.updateMenu(); + + return retVal; +} +/** + * Engine function - Get Presence Statistics - Purple Room + * @remarks Originally called 'cpl2' + */ +int MortevielleEngine::getPresenceStatsPurpleRoom() { + int day, hour, minute; + int retVal = 0; + + updateHour(day, hour, minute); + if ((hour > 7) && (hour < 11)) + retVal = -2; + else if (hour == 11) + retVal = 100; + else if ((hour > 11) && (hour < 23)) + retVal = 10; + else if (hour == 23) + retVal = 20; + else if ((hour >= 0) && (hour < 8)) + retVal = 50; + + return retVal; +} + +/** + * Engine function - Get Presence Statistics - Toilets + * @remarks Originally called 'cpl3' + */ +int MortevielleEngine::getPresenceStatsToilets() { + int day, hour, minute; + int retVal = 0; + + updateHour(day, hour, minute); + if (((hour > 8) && (hour < 10)) || ((hour > 19) && (hour < 24))) + retVal = 34; + else if (((hour > 9) && (hour < 20)) || ((hour >= 0) && (hour < 9))) + retVal = 0; + + return retVal; +} + +/** + * Engine function - Get Presence Statistics - Blue Room + * @remarks Originally called 'cpl5' + */ +int MortevielleEngine::getPresenceStatsBlueRoom() { + int day, hour, minute; + int retVal = 0; + + updateHour(day, hour, minute); + if ((hour > 6) && (hour < 10)) + retVal = 0; + else if (hour == 10) + retVal = 100; + else if ((hour > 10) && (hour < 24)) + retVal = 15; + else if ((hour >= 0) && (hour < 7)) + retVal = 50; + + return retVal; +} + +/** + * Engine function - Get Presence Statistics - Red Room + * @remarks Originally called 'cpl6' + */ +int MortevielleEngine::getPresenceStatsRedRoom() { + int day, hour, minute; + int retVal = 0; + + updateHour(day, hour, minute); + if (((hour > 7) && (hour < 13)) || ((hour > 17) && (hour < 20))) + retVal = -2; + else if (((hour > 12) && (hour < 17)) || ((hour > 19) && (hour < 24))) + retVal = 35; + else if (hour == 17) + retVal = 100; + else if ((hour >= 0) && (hour < 8)) + retVal = 60; + + return retVal; +} + +/** + * Shows the "you are alone" message in the status area + * on the right hand side of the screen + * @remarks Originally called 'person' + */ +void MortevielleEngine::displayAloneText() { + for (int cf = 1; cf <= 8; ++cf) + _menu.disableMenuItem(_menu._discussMenu[cf]); + + Common::String sYou = getEngineString(S_YOU); + Common::String sAre = getEngineString(S_ARE); + Common::String sAlone = getEngineString(S_ALONE); + + clearUpperRightPart(); + _screenSurface.putxy(580 - (_screenSurface.getStringWidth(sYou) / 2), 30); + _screenSurface.drawString(sYou, 4); + _screenSurface.putxy(580 - (_screenSurface.getStringWidth(sAre) / 2), 50); + _screenSurface.drawString(sAre, 4); + _screenSurface.putxy(580 - (_screenSurface.getStringWidth(sAlone) / 2), 70); + _screenSurface.drawString(sAlone, 4); + + _currBitIndex = 0; +} + +/** + * Engine function - Get Presence Statistics - Room Bureau + * @remarks Originally called 'cpl10' + */ +int MortevielleEngine::getPresenceStatsDiningRoom(int &hour) { + int day, minute; + + int retVal = 0; + updateHour(day, hour, minute); + if (((hour > 7) && (hour < 11)) || ((hour > 11) && (hour < 14)) || ((hour > 18) && (hour < 21))) + retVal = 100; + else if ((hour == 11) || ((hour > 20) && (hour < 24))) + retVal = 45; + else if (((hour > 13) && (hour < 17)) || (hour == 18)) + retVal = 35; + else if (hour == 17) + retVal = 60; + else if ((hour >= 0) && (hour < 8)) + retVal = 5; + + return retVal; +} + +/** + * Engine function - Get Presence Statistics - Room Bureau + * @remarks Originally called 'cpl11' + */ +int MortevielleEngine::getPresenceStatsBureau(int &hour) { + int day, minute; + int retVal = 0; + + updateHour(day, hour, minute); + if (((hour > 8) && (hour < 12)) || ((hour > 20) && (hour < 24))) + retVal = 25; + else if (((hour > 11) && (hour < 14)) || ((hour > 18) && (hour < 21))) + retVal = 5; + else if ((hour > 13) && (hour < 17)) + retVal = 55; + else if ((hour > 16) && (hour < 19)) + retVal = 45; + else if ((hour >= 0) && (hour < 9)) + retVal = 0; + + return retVal; +} + +/** + * Engine function - Get Presence Statistics - Room Kitchen + * @remarks Originally called 'cpl12' + */ +int MortevielleEngine::getPresenceStatsKitchen() { + int day, hour, minute; + int retVal = 0; + + updateHour(day, hour, minute); + if (((hour > 8) && (hour < 15)) || ((hour > 16) && (hour < 22))) + retVal = 55; + else if (((hour > 14) && (hour < 17)) || ((hour > 21) && (hour < 24))) + retVal = 25; + else if ((hour >= 0) && (hour < 5)) + retVal = 0; + else if ((hour > 4) && (hour < 9)) + retVal = 15; + + return retVal; +} + +/** + * Engine function - Get Presence Statistics - Room Attic + * @remarks Originally called 'cpl13' + */ +int MortevielleEngine::getPresenceStatsAttic() { + return 0; +} + +/** + * Engine function - Get Presence Statistics - Room Landing + * @remarks Originally called 'cpl15' + */ +int MortevielleEngine::getPresenceStatsLanding() { + int day, hour, minute; + int retVal = 0; + + updateHour(day, hour, minute); + if ((hour > 7) && (hour < 12)) + retVal = 25; + else if ((hour > 11) && (hour < 14)) + retVal = 0; + else if ((hour > 13) && (hour < 18)) + retVal = 10; + else if ((hour > 17) && (hour < 20)) + retVal = 55; + else if ((hour > 19) && (hour < 22)) + retVal = 5; + else if ((hour > 21) && (hour < 24)) + retVal = 15; + else if ((hour >= 0) && (hour < 8)) + retVal = -15; + + return retVal; +} + +/** + * Engine function - Get Presence Statistics - Room Chapel + * @remarks Originally called 'cpl20' + */ +int MortevielleEngine::getPresenceStatsChapel(int &hour) { + int day, minute; + int retVal = 0; + + updateHour(day, hour, minute); + if (hour == 10) + retVal = 65; + else if ((hour > 10) && (hour < 21)) + retVal = 5; + else if ((hour > 20) && (hour < 24)) + retVal = -15; + else if ((hour >= 0) && (hour < 5)) + retVal = -300; + else if ((hour > 4) && (hour < 10)) + retVal = -5; + + return retVal; +} + +/** + * Engine function - Check who is in the Green Room + * @remarks Originally called 'quelq1' + */ +void MortevielleEngine::setPresenceGreenRoom(int roomId) { + int rand = getRandomNumber(1, 2); + if (roomId == GREEN_ROOM) { + if (rand == 1) + _roomPresenceLuc = true; + else + _roomPresenceIda = true; + } else if (roomId == DARKBLUE_ROOM) { + if (rand == 1) + _roomPresenceGuy = true; + else + _roomPresenceEva = true; + } + + _currBitIndex = 10; +} + +/** + * Engine function - Check who is in the Purple Room + * @remarks Originally called 'quelq2' + */ +void MortevielleEngine::setPresencePurpleRoom() { + if (_place == PURPLE_ROOM) + _purpleRoomPresenceLeo = true; + else + _room9PresenceLeo = true; + + _currBitIndex = 10; +} + +/** + * Engine function - Check who is in the Blue Room + * @remarks Originally called 'quelq5' + */ +void MortevielleEngine::setPresenceBlueRoom() { + _roomPresenceMax = true; + _currBitIndex = 10; +} + +/** + * Engine function - Check who is in the Red Room + * @remarks Originally called 'quelq6' + */ +void MortevielleEngine::setPresenceRedRoom(int roomId) { + if (roomId == RED_ROOM) + _roomPresenceBob = true; + else if (roomId == GREEN_ROOM2) + _roomPresencePat = true; + + _currBitIndex = 10; +} + +/** + * Engine function - Check who is in the Dining Room + * @remarks Originally called 'quelq10' + */ +int MortevielleEngine::setPresenceDiningRoom(int hour) { + int retVal = 0; + + if ((hour >= 0) && (hour < 8)) + retVal = checkLeoMaxRandomPresence(); + else { + int min = 0, max = 0; + if ((hour > 7) && (hour < 10)) { + min = 5; + max = 7; + } else if ((hour > 9) && (hour < 12)) { + min = 1; + max = 4; + } else if (((hour > 11) && (hour < 15)) || ((hour > 18) && (hour < 21))) { + min = 6; + max = 8; + } else if (((hour > 14) && (hour < 19)) || ((hour > 20) && (hour < 24))) { + min = 1; + max = 5; + } + retVal = selectCharacters(min, max); + } + showPeoplePresent(retVal); + + return retVal; +} + +/** + * Engine function - Check who is in the Bureau + * @remarks Originally called 'quelq11' + */ +int MortevielleEngine::setPresenceBureau(int hour) { + int retVal = 0; + + if ((hour >= 0) && (hour < 8)) + retVal = checkLeoMaxRandomPresence(); + else { + int min = 0, max = 0; + if (((hour > 7) && (hour < 10)) || ((hour > 20) && (hour < 24))) { + min = 1; + max = 3; + } else if (((hour > 9) && (hour < 12)) || ((hour > 13) && (hour < 19))) { + min = 1; + max = 4; + } else if (((hour > 11) && (hour < 14)) || ((hour > 18) && (hour < 21))) { + min = 1; + max = 2; + } + retVal = selectCharacters(min, max); + } + showPeoplePresent(retVal); + + return retVal; +} + +/** + * Engine function - Check who is in the Kitchen + * @remarks Originally called 'quelq12' + */ +int MortevielleEngine::setPresenceKitchen() { + int retVal = checkLeoMaxRandomPresence(); + showPeoplePresent(retVal); + + return retVal; +} + +/** + * Engine function - Check who is in the Landing + * @remarks Originally called 'quelq15' + */ +int MortevielleEngine::setPresenceLanding() { + bool test = false; + int rand = 0; + do { + rand = getRandomNumber(1, 8); + test = (((rand == 1) && (_purpleRoomPresenceLeo || _room9PresenceLeo)) || + ((rand == 2) && _roomPresencePat) || + ((rand == 3) && _roomPresenceGuy) || + ((rand == 4) && _roomPresenceEva) || + ((rand == 5) && _roomPresenceBob) || + ((rand == 6) && _roomPresenceLuc) || + ((rand == 7) && _roomPresenceIda) || + ((rand == 8) && _roomPresenceMax)); + } while (test); + + int retVal = convertCharacterIndexToBitIndex(rand); + showPeoplePresent(retVal); + + return retVal; +} + +/** + * Engine function - Check who is in the chapel + * @remarks Originally called 'quelq20' + */ +int MortevielleEngine::setPresenceChapel(int hour) { + int retVal = 0; + + if (((hour >= 0) && (hour < 10)) || ((hour > 18) && (hour < 24))) + retVal = checkLeoMaxRandomPresence(); + else { + int min = 0, max = 0; + if ((hour > 9) && (hour < 12)) { + min = 3; + max = 7; + } else if ((hour > 11) && (hour < 18)) { + min = 1; + max = 2; + } else if (hour == 18) { + min = 2; + max = 4; + } + retVal = selectCharacters(min, max); + } + showPeoplePresent(retVal); + + return retVal; +} + +/** + * Engine function - Get the answer after you known a door + * @remarks Originally called 'frap' + */ +void MortevielleEngine::getKnockAnswer() { + int day, hour, minute; + + updateHour(day, hour, minute); + if ((hour >= 0) && (hour < 8)) + _crep = 190; + else { + if (getRandomNumber(1, 100) > 70) + _crep = 190; + else + _crep = 147; + } +} + +/** + * Engine function - Get Room Presence Bit Index + * @remarks Originally called 'nouvp' + */ +int MortevielleEngine::getPresenceBitIndex(int roomId) { + int bitIndex = 0; + if (roomId == GREEN_ROOM) { + if (_roomPresenceLuc) + bitIndex = 4; // LUC + if (_roomPresenceIda) + bitIndex = 2; // IDA + } else if ( ((roomId == PURPLE_ROOM) && (_purpleRoomPresenceLeo)) + || ((roomId == ROOM9) && (_room9PresenceLeo))) + bitIndex = 128; // LEO + else if (roomId == DARKBLUE_ROOM) { + if (_roomPresenceGuy) + bitIndex = 32; // GUY + if (_roomPresenceEva) + bitIndex = 16; // EVA + } else if ((roomId == BLUE_ROOM) && (_roomPresenceMax)) + bitIndex = 1; // MAX + else if ((roomId == RED_ROOM) && (_roomPresenceBob)) + bitIndex = 8; // BOB + else if ((roomId == GREEN_ROOM2) && (_roomPresencePat)) + bitIndex = 64; // PAT + else if ( ((roomId == TOILETS) && (_toiletsPresenceBobMax)) + || ((roomId == BATHROOM) && (_bathRoomPresenceBobMax)) ) + bitIndex = 9; // BOB + MAX + + if (bitIndex != 9) + showPeoplePresent(bitIndex); + + return bitIndex; +} + +/** + * Engine function - initGame + * @remarks Originally called 'dprog' + */ +void MortevielleEngine::initGame() { + _place = MANOR_FRONT; + _currentHourCount = 0; + if (!_coreVar._alreadyEnteredManor) + _blo = true; + _inGameHourDuration = kTime1; + _currentDayHour = readclock(); +} + +/** + * Engine function - Set Random Presence - Green Room + * @remarks Originally called 'pl1' + */ +void MortevielleEngine::setRandomPresenceGreenRoom(int cf) { + if ( ((_place == GREEN_ROOM) && (!_roomPresenceLuc) && (!_roomPresenceIda)) + || ((_place == DARKBLUE_ROOM) && (!_roomPresenceGuy) && (!_roomPresenceEva)) ) { + int p = getPresenceStatsGreenRoom(); + int rand; + phaz(rand, p, cf); + + if (rand > p) + displayAloneText(); + else + setPresenceGreenRoom(_place); + } +} + +/** + * Engine function - Set Random Presence - Purple Room + * @remarks Originally called 'pl2' + */ +void MortevielleEngine::setRandomPresencePurpleRoom(int cf) { + if (!_purpleRoomPresenceLeo) { + int p = getPresenceStatsPurpleRoom(); + int rand; + phaz(rand, p, cf); + + if (rand > p) + displayAloneText(); + else + setPresencePurpleRoom(); + } +} + +/** + * Engine function - Set Random Presence - Blue Room + * @remarks Originally called 'pl5' + */ +void MortevielleEngine::setRandomPresenceBlueRoom(int cf) { + if (!_roomPresenceMax) { + int p = getPresenceStatsBlueRoom(); + int rand; + + phaz(rand, p, cf); + + if (rand > p) + displayAloneText(); + else + setPresenceBlueRoom(); + } +} + +/** + * Engine function - Set Random Presence - Red Room + * @remarks Originally called 'pl6' + */ +void MortevielleEngine::setRandomPresenceRedRoom(int cf) { + if ( ((_place == RED_ROOM) && (!_roomPresenceBob)) + || ((_place == GREEN_ROOM2) && (!_roomPresencePat)) ) { + int p = getPresenceStatsRedRoom(); + int rand; + + phaz(rand, p, cf); + + if (rand > p) + displayAloneText(); + else + setPresenceRedRoom(_place); + } +} + +/** + * Engine function - Set Random Presence - Room 9 + * @remarks Originally called 'pl9' + */ +void MortevielleEngine::setRandomPresenceRoom9(int cf) { + if (!_room9PresenceLeo) { + cf = -10; + int p, rand; + phaz(rand, p, cf); + + if (rand > p) + displayAloneText(); + else + setPresencePurpleRoom(); + } +} + +/** + * Engine function - Set Random Presence - Dining Room + * @remarks Originally called 'pl10' + */ +void MortevielleEngine::setRandomPresenceDiningRoom(int cf) { + int h, rand; + int p = getPresenceStatsDiningRoom(h); + phaz(rand, p, cf); + + if (rand > p) + displayAloneText(); + else + setPresenceDiningRoom(h); +} + +/** + * Engine function - Set Random Presence - Bureau + * @remarks Originally called 'pl11' + */ +void MortevielleEngine::setRandomPresenceBureau(int cf) { + int h, rand; + + int p = getPresenceStatsBureau(h); + phaz(rand, p, cf); + if (rand > p) + displayAloneText(); + else + setPresenceBureau(h); +} + +/** + * Engine function - Set Random Presence - Kitchen + * @remarks Originally called 'pl12' + */ +void MortevielleEngine::setRandomPresenceKitchen(int cf) { + int p, rand; + + p = getPresenceStatsKitchen(); + phaz(rand, p, cf); + if (rand > p) + displayAloneText(); + else + setPresenceKitchen(); +} + +/** + * Engine function - Set Random Presence - Attic / Cellar + * @remarks Originally called 'pl13' + */ +void MortevielleEngine::setRandomPresenceAttic(int cf) { + int p, rand; + + p = getPresenceStatsAttic(); + phaz(rand, p, cf); + if (rand > p) + displayAloneText(); + else + setPresenceKitchen(); +} + +/** + * Engine function - Set Random Presence - Landing + * @remarks Originally called 'pl15' + */ +void MortevielleEngine::setRandomPresenceLanding(int cf) { + int p, rand; + + p = getPresenceStatsLanding(); + phaz(rand, p, cf); + if (rand > p) + displayAloneText(); + else + setPresenceLanding(); +} + +/** + * Engine function - Set Random Presence - Chapel + * @remarks Originally called 'pl20' + */ +void MortevielleEngine::setRandomPresenceChapel(int cf) { + int h, rand; + + int p = getPresenceStatsChapel(h); + phaz(rand, p, cf); + if (rand > p) + displayAloneText(); + else + setPresenceChapel(h); +} + +/** + * Start music or speech + * @remarks Originally called 'musique' + */ +void MortevielleEngine::startMusicOrSpeech(int so) { + if (so == 0) { + /* musik(0) */ + ; + } else if ((!_introSpeechPlayed) && (!_coreVar._alreadyEnteredManor)) { + // Type 1: Speech + _speechManager.startSpeech(10, 1, 1); + _introSpeechPlayed = true; + } else { + if (((_coreVar._currPlace == MOUNTAIN) || (_coreVar._currPlace == MANOR_FRONT) || (_coreVar._currPlace == MANOR_BACK)) && (getRandomNumber(1, 3) == 2)) + // Type 1: Speech + _speechManager.startSpeech(9, getRandomNumber(2, 4), 1); + else if ((_coreVar._currPlace == CHAPEL) && (getRandomNumber(1, 2) == 1)) + // Type 1: Speech + _speechManager.startSpeech(8, 1, 1); + else if ((_coreVar._currPlace == WELL) && (getRandomNumber(1, 2) == 2)) + // Type 1: Speech + _speechManager.startSpeech(12, 1, 1); + else if (_coreVar._currPlace == INSIDE_WELL) + // Type 1: Speech + _speechManager.startSpeech(13, 1, 1); + else + // Type 2 : music + _speechManager.startSpeech(getRandomNumber(1, 17), 1, 2); + } +} + +/** + * Engine function - You lose! + * @remarks Originally called 'tperd' + */ +void MortevielleEngine::loseGame() { + resetOpenObjects(); + _roomDoorId = OWN_ROOM; + _mchai = 0; + _menu.unsetSearchMenu(); + if (!_blo) + getPresence(MANOR_FRONT); + + _loseGame = true; + clearUpperLeftPart(); + _screenSurface.drawBox(60, 35, 400, 50, 15); + handleDescriptionText(9, _crep); + clearDescriptionBar(); + clearVerbBar(); + _col = false; + _syn = false; + _destinationOk = false; +} + +/** + * Engine function - Check inventory for a given object + * @remarks Originally called 'cherjer' + */ +bool MortevielleEngine::checkInventory(int objectId) { + bool retVal = false; + for (int i = 1; i <= 6; ++i) + retVal = (retVal || (_coreVar._inventory[i] == objectId)); + + if (_coreVar._selectedObjectId == objectId) + retVal = true; + + return retVal; +} + +/** + * Engine function - Display Dining Room + * @remarks Originally called 'st1sama' + */ +void MortevielleEngine::displayDiningRoom() { + _coreVar._currPlace = DINING_ROOM; + affrep(); +} + +/** + * Engine function - Start non interactive Dialog + * @remarks Originally called 'sparl' + */ +void MortevielleEngine::startDialog(int16 rep) { + const int haut[9] = { 0, 0, 1, -3, 6, -2, 2, 7, -1 }; + int key; + + assert(rep >= 0); + + _mouse.hideMouse(); + Common::String dialogStr = getString(rep + kDialogStringIndex); + _text.displayStr(dialogStr, 230, 4, 65, 24, 5); + _dialogManager.drawF3F8(); + + key = 0; + do { + _speechManager.startSpeech(rep, haut[_caff - 69], 0); + key = _dialogManager.waitForF3F8(); + if (shouldQuit()) + return; + } while (key != 66); + hirs(); + _mouse.showMouse(); +} + +/** + * Engine function - End of Search: reset globals + * @remarks Originally called 'finfouill' + */ +void MortevielleEngine::endSearch() { + _heroSearching = false; + _obpart = false; + _searchCount = 0; + _menu.unsetSearchMenu(); +} + +/** + * Engine function - Go to Dining room + * @remarks Originally called 't1sama' + */ +void MortevielleEngine::gotoDiningRoom() { + int day, hour, minute; + + updateHour(day, hour, minute); + if ((hour < 5) && (_coreVar._currPlace > ROOM18)) { + if (!checkInventory(137)) { //You don't have the keys, and it's late + _crep = 1511; + loseGame(); + } else + displayDiningRoom(); + } else if (!_coreVar._alreadyEnteredManor) { //Is it your first time? + _currBitIndex = 255; // Everybody is present + showPeoplePresent(_currBitIndex); + _caff = 77; + drawPictureWithText(); + _screenSurface.drawBox(223, 47, 155, 91, 15); + handleDescriptionText(2, 33); + testKey(false); + mennor(); + _mouse.hideMouse(); + hirs(); + premtet(); + startDialog(140); + drawRightFrame(); + drawClock(); + _mouse.showMouse(); + _coreVar._currPlace = OWN_ROOM; + affrep(); + resetPresenceInRooms(DINING_ROOM); + if (!_blo) + getPresence(OWN_ROOM); + _currBitIndex = 0; + _savedBitIndex = 0; + _coreVar._alreadyEnteredManor = true; + } else + displayDiningRoom(); +} + +/** + * Engine function - Check Manor distance (in the mountains) + * @remarks Originally called 't1neig' + */ +void MortevielleEngine::checkManorDistance() { + ++_manorDistance; + if (_manorDistance > 2) { + _crep = 1506; + loseGame(); + } else { + _destinationOk = true; + _coreVar._currPlace = MOUNTAIN; + affrep(); + } +} + +/** + * Engine function - Go to Manor front + * @remarks Originally called 't1deva' + */ +void MortevielleEngine::gotoManorFront() { + _manorDistance = 0; + _coreVar._currPlace = MANOR_FRONT; + affrep(); +} + +/** + * Engine function - Go to Manor back + * @remarks Originally called 't1derr' + */ +void MortevielleEngine::gotoManorBack() { + _coreVar._currPlace = MANOR_BACK; + affrep(); +} + +/** + * Engine function - Dead : Flooded in Well + * @remarks Originally called 't1deau' + */ +void MortevielleEngine::floodedInWell() { + _crep = 1503; + loseGame(); +} + +/** + * Engine function - Change Graphical Device + * @remarks Originally called 'change_gd' + */ +void MortevielleEngine::changeGraphicalDevice(int newDevice) { + _mouse.hideMouse(); + _currGraphicalDevice = newDevice; + hirs(); + _mouse.initMouse(); + _mouse.showMouse(); + drawRightFrame(); + prepareRoom(); + drawClock(); + if (_currBitIndex != 0) + showPeoplePresent(_currBitIndex); + else + displayAloneText(); + clearDescriptionBar(); + clearVerbBar(); + _maff = 68; + drawPictureWithText(); + handleDescriptionText(2, _crep); + _menu.displayMenu(); +} + +/** + * Called when a savegame has been loaded. + * @remarks Originally called 'antegame' + */ +void MortevielleEngine::gameLoaded() { + _mouse.hideMouse(); + _menu._menuDisplayed = false; + _loseGame = true; + _anyone = false; + _destinationOk = true; + _col = false; + _hiddenHero = false; + _uptodatePresence = false; + _maff = 68; + _menuOpcode = OPCODE_NONE; + _introSpeechPlayed = false; + _x = 0; + _y = 0; + _num = 0; + _startHour = 0; + _endHour = 0; + _searchCount = 0; + _roomDoorId = OWN_ROOM; + _syn = true; + _heroSearching = true; + _mchai = 0; + _manorDistance = 0; + resetOpenObjects(); + _takeObjCount = 0; + affrep(); + _hintPctMessage = getString(580); + + _destinationOk = false; + _endGame = true; + _loseGame = false; + _heroSearching = false; + + displayAloneText(); + prepareRoom(); + drawClock(); + drawPictureWithText(); + handleDescriptionText(2, _crep); + clearVerbBar(); + _endGame = false; + _menu.setDestinationText(_coreVar._currPlace); + _menu.setInventoryText(); + if (_coreVar._selectedObjectId != 0) + displayItemInHand(_coreVar._selectedObjectId + 400); + _mouse.showMouse(); +} + +/** + * Engine function - Handle OpCodes + * @remarks Originally called 'tsitu' + */ +void MortevielleEngine::handleOpcode() { + if (!_col) + clearDescriptionBar(); + _syn = false; + _keyPressedEsc = false; + if (!_anyone) { + if (_uptodatePresence) { + if ((_msg[3] == MENU_MOVE) || (_msg[4] == OPCODE_LEAVE) || (_msg[4] == OPCODE_SLEEP) || (_msg[4] == OPCODE_EAT)) { + _controlMenu = 4; + mennor(); + return; + } + } + if (_msg[3] == MENU_MOVE) + fctMove(); + if (_msg[3] == MENU_DISCUSS) + fctDiscuss(); + if (_msg[3] == MENU_INVENTORY) + fctInventoryTake(); + if (_msg[4] == OPCODE_ATTACH) + fctAttach(); + if (_msg[4] == OPCODE_WAIT) + fctWait(); + if (_msg[4] == OPCODE_FORCE) + fctForce(); + if (_msg[4] == OPCODE_SLEEP) + fctSleep(); + if (_msg[4] == OPCODE_LISTEN) + fctListen(); + if (_msg[4] == OPCODE_ENTER) + fctEnter(); + if (_msg[4] == OPCODE_CLOSE) + fctClose(); + if (_msg[4] == OPCODE_SEARCH) + fctSearch(); + if (_msg[4] == OPCODE_KNOCK) + fctKnock(); + if (_msg[4] == OPCODE_SCRATCH) + fctScratch(); + if (_msg[4] == OPCODE_READ) + fctRead(); + if (_msg[4] == OPCODE_EAT) + fctEat(); + if (_msg[4] == OPCODE_PLACE) + fctPlace(); + if (_msg[4] == OPCODE_OPEN) + fctOpen(); + if (_msg[4] == OPCODE_TAKE) + fctTake(); + if (_msg[4] == OPCODE_LOOK) + fctLook(); + if (_msg[4] == OPCODE_SMELL) + fctSmell(); + if (_msg[4] == OPCODE_SOUND) + fctSound(); + if (_msg[4] == OPCODE_LEAVE) + fctLeave(); + if (_msg[4] == OPCODE_LIFT) + fctLift(); + if (_msg[4] == OPCODE_TURN) + fctTurn(); + if (_msg[4] == OPCODE_SSEARCH) + fctSelfSearch(); + if (_msg[4] == OPCODE_SREAD) + fctSelfRead(); + if (_msg[4] == OPCODE_SPUT) + fctSelfPut(); + if (_msg[4] == OPCODE_SLOOK) + fctSelftLook(); + _hiddenHero = false; + + if (_msg[4] == OPCODE_SHIDE) + fctSelfHide(); + } else { + if (_anyone) { + interactNPC(); + _anyone = false; + mennor(); + return; + } + } + int hour, day, minute; + updateHour(day, hour, minute); + if ((((hour == 12) || (hour == 13) || (hour == 19)) && (_coreVar._currPlace != DINING_ROOM)) || + ((hour > 0) && (hour < 6) && (_coreVar._currPlace != OWN_ROOM))) + ++_coreVar._faithScore; + if (((_coreVar._currPlace < CRYPT) || (_coreVar._currPlace > MOUNTAIN)) && (_coreVar._currPlace != INSIDE_WELL) + && (_coreVar._currPlace != OWN_ROOM) && (_coreVar._selectedObjectId != 152) && (!_loseGame)) { + if ((_coreVar._faithScore > 99) && (hour > 8) && (hour < 16)) { + _crep = 1501; + loseGame(); + } + if ((_coreVar._faithScore > 99) && (hour > 0) && (hour < 9)) { + _crep = 1508; + loseGame(); + } + if ((day > 1) && (hour > 8) && (!_loseGame)) { + _crep = 1502; + loseGame(); + } + } + mennor(); +} + +/** + * Engine function - Transform time into a char + * @remarks Originally called 'tmaj3' + */ +void MortevielleEngine::hourToChar() { + int day, hour, minute; + + updateHour(day, hour, minute); + if (minute == 30) + minute = 1; + hour += day * 24; + minute += hour * 2; + _coreVar._fullHour = chr(minute); +} + +/** + * Engine function - extract time from a char + * @remarks Originally called 'theure' + */ +void MortevielleEngine::charToHour() { + int fullHour = ord(_coreVar._fullHour); + int tmpHour = fullHour % 48; + _currDay = fullHour / 48; + _currHalfHour = tmpHour % 2; + _currHour = tmpHour / 2; + _hour = _currHour; + if (_currHalfHour == 1) + _minute = 30; + else + _minute = 0; +} + +/** + * Engine function - Clear upper left part of Screen - Type 1 + * @remarks Originally called 'clsf1' + */ +void MortevielleEngine::clearUpperLeftPart() { + _mouse.hideMouse(); + _screenSurface.fillRect(0, Common::Rect(0, 11, 514, 175)); + _mouse.showMouse(); +} + +/** + * Engine function - Clear low bar used by description + * @remarks Originally called 'clsf2' + */ +void MortevielleEngine::clearDescriptionBar() { + _mouse.hideMouse(); + if (_largestClearScreen) { + _screenSurface.fillRect(0, Common::Rect(1, 176, 633, 199)); + _screenSurface.drawBox(0, 175, 634, 24, 15); + _largestClearScreen = false; + } else { + _screenSurface.fillRect(0, Common::Rect(1, 176, 633, 190)); + _screenSurface.drawBox(0, 175, 634, 15, 15); + } + _mouse.showMouse(); +} + +/** + * Engine function - Clear lowest bar used by verbs + * @remarks Originally called 'clsf3' + */ +void MortevielleEngine::clearVerbBar() { + _mouse.hideMouse(); + _screenSurface.fillRect(0, Common::Rect(1, 192, 633, 199)); + _screenSurface.drawBox(0, 191, 634, 8, 15); + _mouse.showMouse(); +} + +/** + * Engine function - Clear upper right part of the screen + * @remarks Originally called 'clsf10' + */ +void MortevielleEngine::clearUpperRightPart() { + int x1, x2; + Common::String st; + + _mouse.hideMouse(); + if (_resolutionScaler == 1) { + x2 = 634; + x1 = 534; + } else { + x2 = 600; + x1 = 544; + } + // Clear ambiance description + _screenSurface.fillRect(15, Common::Rect(x1, 93, x2, 98)); + if (_coreVar._faithScore < 33) + st = getEngineString(S_COOL); + else if (_coreVar._faithScore < 66) + st = getEngineString(S_LOURDE); + else if (_coreVar._faithScore > 65) + st = getEngineString(S_MALSAINE); + + x1 = 580 - (_screenSurface.getStringWidth(st) / 2); + _screenSurface.putxy(x1, 92); + _screenSurface.drawString(st, 4); + + // Clear person list + _screenSurface.fillRect(15, Common::Rect(560, 24, 610, 86)); + _mouse.showMouse(); +} + +/** + * Engine function - Get a random number between two values + * @remarks Originally called 'get_random_number' and 'hazard' + */ +int MortevielleEngine::getRandomNumber(int minval, int maxval) { + return _randomSource.getRandomNumber(maxval - minval) + minval; +} + +/** + * Engine function - Show alert "use move menu" + * @remarks Originally called 'aldepl' + */ +void MortevielleEngine::showMoveMenuAlert() { + _dialogManager.show(getEngineString(S_USE_DEP_MENU), 1); +} + +/** + * The original engine used this method to display a starting text screen letting the player + * select the graphics mode to use + * @remarks Originally called 'dialpre' + */ +void MortevielleEngine::showConfigScreen() { + _crep = 998; +} + +/** + * Decodes a number of 64 byte blocks + * @param pStart Start of data + * @param count Number of 64 byte blocks + * @remarks Originally called 'zzuul' + */ +void MortevielleEngine::decodeNumber(byte *pStart, int count) { + while (count-- > 0) { + for (int idx = 0; idx < 64; ++pStart, ++idx) { + uint16 v = ((*pStart - 0x80) << 1) + 0x80; + + if (v & 0x8000) + *pStart = 0; + else if (v & 0xff00) + *pStart = 0xff; + else + *pStart = (byte)v; + } + } +} + +const byte tabdr[32] = { + 32, 101, 115, 97, 114, 105, 110, + 117, 116, 111, 108, 13, 100, 99, + 112, 109, 46, 118, 130, 39, 102, + 98, 44, 113, 104, 103, 33, 76, + 85, 106, 30, 31 +}; + +const byte tab30[32] = { + 69, 67, 74, 138, 133, 120, 77, 122, + 121, 68, 65, 63, 73, 80, 83, 82, + 156, 45, 58, 79, 49, 86, 78, 84, + 71, 81, 64, 66, 135, 34, 136, 91 +}; + +const byte tab31[32]= { + 93, 47, 48, 53, 50, 70, 124, 75, + 72, 147, 140, 150, 151, 57, 56, 51, + 107, 139, 55, 89, 131, 37, 54, 88, + 119, 0, 0, 0, 0, 0, 0, 0 +}; + +void MortevielleEngine::cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { + uint16 oct, ocd; + + /* 5-8 */ + oct = _inpBuffer[idx]; + oct = ((uint16)(oct << (16 - pt))) >> (16 - pt); + if (pt < 6) { + ++idx; + oct = oct << (5 - pt); + pt += 11; + oct = oct | ((uint)_inpBuffer[idx] >> pt); + } else { + pt -= 5; + oct = (uint)oct >> pt; + } + + switch (oct) { + case 11: + c = '$'; + the_end = true; + break; + case 30: + case 31: + ocd = _inpBuffer[idx]; + ocd = (uint16)(ocd << (16 - pt)) >> (16 - pt); + if (pt < 6) { + ++idx; + ocd = ocd << (5 - pt); + pt += 11; + ocd = ocd | ((uint)_inpBuffer[idx] >> pt); + } else { + pt -= 5; + ocd = (uint)ocd >> pt; + } + + if (oct == 30) + c = chr(tab30[ocd]); + else + c = chr(tab31[ocd]); + + if (c == '\0') { + the_end = true; + c = '#'; + } + break; + default: + c = chr(tabdr[oct]); + break; + } +} + +/** + * Decode and extract the line with the given Id + * @remarks Originally called 'deline' + */ +Common::String MortevielleEngine::getString(int num) { + Common::String wrkStr = ""; + + if (num < 0) { + warning("getString(%d): num < 0! Skipping", num); + } else if (!_txxFileFl) { + wrkStr = getGameString(num); + } else { + int hint = _ntpBuffer[num]._hintId; + byte point = _ntpBuffer[num]._point; + int length = 0; + bool endFl = false; + char let; + do { + cinq_huit(let, hint, point, endFl); + wrkStr += let; + ++length; + } while (!endFl); + } + + while (wrkStr.lastChar() == '$') + // Remove trailing '$'s + wrkStr.deleteLastChar(); + + return wrkStr; +} + +void MortevielleEngine::copcha() { + for (int i = kAcha; i < kAcha + 390; i++) + _tabdon[i] = _tabdon[i + 390]; +} + +/** + * Engine function - When restarting the game, reset the main variables used by the engine + * @remarks Originally called 'inzon' + */ +void MortevielleEngine::resetVariables() { + copcha(); + + _coreVar._alreadyEnteredManor = false; + _coreVar._selectedObjectId = 0; + _coreVar._cellarObjectId = 0; + _coreVar._atticBallHoleObjectId = 0; + _coreVar._atticRodHoleObjectId = 0; + _coreVar._wellObjectId = 0; + _coreVar._secretPassageObjectId = 0; + _coreVar._purpleRoomObjectId = 136; + _coreVar._cryptObjectId = 141; + _coreVar._faithScore = getRandomNumber(4, 10); + _coreVar._currPlace = MANOR_FRONT; + + for (int i = 2; i <= 6; ++i) + _coreVar._inventory[i] = 0; + + // Only object in inventory: a gun + _coreVar._inventory[1] = 113; + + _coreVar._fullHour = chr(20); + + for (int i = 1; i <= 10; ++i) + _coreVar._pctHintFound[i] = ' '; + + for (int i = 1; i <= 6; ++i) + _coreVar._availableQuestion[i] = '*'; + + for (int i = 7; i <= 9; ++i) + _coreVar._availableQuestion[i] = ' '; + + for (int i = 10; i <= 28; ++i) + _coreVar._availableQuestion[i] = '*'; + + for (int i = 29; i <= 42; ++i) + _coreVar._availableQuestion[i] = ' '; + + _coreVar._availableQuestion[33] = '*'; + + for (int i = 1; i <= 8; ++i) + _nbrep[i] = 0; + + init_nbrepm(); +} + +/** + * Engine function - Set the palette + * @remarks Originally called 'writepal' + */ +void MortevielleEngine::setPal(int n) { + switch (_currGraphicalDevice) { + case MODE_TANDY: + case MODE_EGA: + case MODE_AMSTRAD1512: + for (int i = 1; i <= 16; ++i) { + _mem[(0x7000 * 16) + (2 * i)] = _stdPal[n][i].x; + _mem[(0x7000 * 16) + (2 * i) + 1] = _stdPal[n][i].y; + } + break; + case MODE_CGA: { + nhom pal[16]; + for (int i = 0; i < 16; ++i) { + pal[i] = _cgaPal[n]._a[i]; + } + + if (n < 89) + palette(_cgaPal[n]._p); + + for (int i = 0; i <= 15; ++i) + displayCGAPattern(i, _patternArr[pal[i]._id], pal); + } + break; + default: + break; + } +} + +/** + * Engine function - Display a CGA pattern, using a specified palette + * @remarks Originally called 'outbloc' + */ +void MortevielleEngine::displayCGAPattern(int n, Pattern p, nhom *pal) { + int addr = n * 404 + 0xd700; + + WRITE_LE_UINT16(&_mem[0x6000 * 16 + addr], p._tax); + WRITE_LE_UINT16(&_mem[0x6000 * 16 + addr + 2], p._tay); + addr += 4; + for (int i = 0; i < p._tax; ++i) { + for (int j = 0; j < p._tay; ++j) + _mem[(0x6000 * 16) + addr + j * p._tax + i] = pal[n]._hom[p._des[i + 1][j + 1]]; + } +} + +/** + * Engine function - Load Palette from File + * @remarks Originally called 'charpal' + */ +void MortevielleEngine::loadPalette() { + Common::File f; + byte b; + + if (!f.open("fxx.mor")) { + if (f.open("mfxx.mor")) + f.seek(7 * 25); + else + error("Missing file - fxx.mor"); + } + + for (int i = 0; i < 108; ++i) + _fxxBuffer[i] = f.readSint16LE(); + f.close(); + + if (!f.open("plxx.mor")) + error("Missing file - plxx.mor"); + for (int i = 0; i <= 90; ++i) { + for (int j = 1; j <= 16; ++j) { + _stdPal[i][j].x = f.readByte(); + _stdPal[i][j].y = f.readByte(); + } + } + f.close(); + + if (!f.open("cxx.mor")) + error("Missing file - cxx.mor"); + + for (int j = 0; j <= 90; ++j) { + _cgaPal[j]._p = f.readByte(); + for (int i = 0; i <= 15; ++i) { + nhom &with = _cgaPal[j]._a[i]; + + b = f.readByte(); + with._id = (uint)b >> 4; + with._hom[0] = ((uint)b >> 2) & 3; + with._hom[1] = b & 3; + } + } + + _cgaPal[10]._a[9] = _cgaPal[10]._a[5]; + for (int j = 0; j <= 14; ++j) { + _patternArr[j]._tax = f.readByte(); + _patternArr[j]._tay = f.readByte(); + for (int i = 1; i <= 20; ++i) { + for (int k = 1; k <= 20; ++k) + _patternArr[j]._des[i][k] = f.readByte(); + } + } + f.close(); +} + +/** + * Engine function - Load Texts from File + * @remarks Originally called 'chartex' + */ +void MortevielleEngine::loadTexts() { + Common::File inpFile; + Common::File ntpFile; + + _txxFileFl = false; + if (getLanguage() == Common::EN_ANY) { + warning("English version expected - Switching to DAT file"); + return; + } + + if (!inpFile.open("TXX.INP")) { + if (!inpFile.open("TXX.MOR")) { + warning("Missing file - TXX.INP or .MOR - Switching to DAT file"); + return; + } + } + if (!ntpFile.open("TXX.NTP")) { + warning("Missing file - TXX.INP or .MOR - Switching to DAT file"); + return; + } + + if ((inpFile.size() > (kMaxTi * 2)) || (ntpFile.size() > (kMaxTd * 3))) { + warning("TXX file - Unexpected format - Switching to DAT file"); + return; + } + + for (int i = 0; i < inpFile.size() / 2; ++i) + _inpBuffer[i] = inpFile.readUint16LE(); + + inpFile.close(); + _txxFileFl = true; + + for (int i = 0; i < (ntpFile.size() / 3); ++i) { + _ntpBuffer[i]._hintId = ntpFile.readSint16LE(); + _ntpBuffer[i]._point = ntpFile.readByte(); + } + + ntpFile.close(); + +} + +void MortevielleEngine::loadBRUIT5() { + Common::File f; + + if (!f.open("bruit5")) + error("Missing file - bruit5"); + + f.read(&_mem[kAdrNoise5 * 16 + 0], 149 * 128); + f.close(); +} + +void MortevielleEngine::loadCFIEC() { + Common::File f; + + if (!f.open("cfiec.mor")) { + if (!f.open("alcfiec.mor")) + error("Missing file - *cfiec.mor"); + } + + _cfiecBufferSize = ((f.size() / 128) + 1) * 128; + int32 fileSize = f.size(); + + if (!_reloadCFIEC) + _cfiecBuffer = (byte *)malloc(sizeof(byte) * _cfiecBufferSize); + + for (int32 i = 0; i < fileSize; ++i) + _cfiecBuffer[i] = f.readByte(); + + for (int i = fileSize; i < _cfiecBufferSize; i++) + _cfiecBuffer[i] = 0; + + f.close(); + + _reloadCFIEC = false; +} + + +void MortevielleEngine::loadCFIPH() { + Common::File f; + + if (!f.open("cfiph.mor")) { + if (!f.open("alcfiph.mor")) + error("Missing file - *cfiph.mor"); + } + + _speechManager._cfiphBuffer = (int16 *)malloc(sizeof(int16) * (f.size() / 2)); + + for (int i = 0; i < (f.size() / 2); ++i) + _speechManager._cfiphBuffer[i] = f.readSint16LE(); + + f.close(); +} + +/** + * Engine function - Play Music + * @remarks Originally called 'music' + */ +void MortevielleEngine::music() { + if (_soundOff) + return; + + _reloadCFIEC = true; + + Common::File fic; + if (!fic.open("mort.img")) + error("Missing file - mort.img"); + + fic.read(&_mem[0x3800 * 16 + 0], 500); + fic.read(&_mem[0x47a0 * 16 + 0], 123); + fic.close(); + + _soundManager.decodeMusic(&_mem[0x3800 * 16], &_mem[0x5000 * 16], 623); + _addFix = (float)((kTempoMusic - 8)) / 256; + _speechManager.cctable(_speechManager._tbi); + + bool fin = false; + int k = 0; + do { + fin = keyPressed(); + _soundManager.musyc(_speechManager._tbi, 9958, kTempoMusic); + ++k; + fin = fin | keyPressed() | (k >= 5); + } while (!fin); + while (keyPressed()) + getChar(); +} + +/** + * Engine function - Show title screen + * @remarks Originally called 'suite' + */ +void MortevielleEngine::showTitleScreen() { + hirs(); + handleDescriptionText(7, 2035); + _caff = 51; + _text.taffich(); + testKeyboard(); + if (_newGraphicalDevice != _currGraphicalDevice) + _currGraphicalDevice = _newGraphicalDevice; + hirs(); + draw(kAdrDes, 0, 0); + + Common::String cpr = "COPYRIGHT 1989 : LANKHOR"; + _screenSurface.putxy(104 + 72 * _resolutionScaler, 185); + _screenSurface.drawString(cpr, 0); +} + +/** + * Draw picture + * @remarks Originally called 'dessine' + */ +void MortevielleEngine::draw(int ad, int x, int y) { + _mouse.hideMouse(); + setPal(_numpal); + pictout(ad, 0, x, y); + _mouse.showMouse(); +} + +/** + * Draw right frame + * @remarks Originally called 'dessine_rouleau' + */ +void MortevielleEngine::drawRightFrame() { + setPal(89); + if (_currGraphicalDevice == MODE_HERCULES) { + _mem[0x7000 * 16 + 14] = 15; + } + _mouse.hideMouse(); + pictout(0x73a2, 0, 0, 0); + _mouse.showMouse(); +} + +/** + * Read the current system time + */ +int MortevielleEngine::readclock() { + TimeDate dateTime; + g_system->getTimeAndDate(dateTime); + + int m = dateTime.tm_min * 60; + int h = dateTime.tm_hour * 3600; + return h + m + dateTime.tm_sec; +} + +/** + * Engine function - Prepare room and hint string + * @remarks Originally called 'tinke' + */ +void MortevielleEngine::prepareRoom() { + int day, hour, minute; + + _anyone = false; + updateHour(day, hour, minute); + if (day != _day) { + _day = day; + int i = 0; + do { + ++i; + if (_nbrepm[i] != 0) + --_nbrepm[i]; + _nbrep[i] = 0; + } while (i != 8); + } + if ((hour > _hour) || ((hour == 0) && (_hour == 23))) { + _hour = hour; + _minute = 0; + drawClock(); + int hintCount = 0; + for (int i = 1; i <= 10; ++i) { + if (_coreVar._pctHintFound[i] == '*') + ++hintCount; + } + + Common::String pctStr; + if (hintCount == 10) + pctStr = "10"; + else + pctStr = chr(hintCount + 48); + + _hintPctMessage = "[1]["; + _hintPctMessage += getEngineString(S_SHOULD_HAVE_NOTICED); + _hintPctMessage += pctStr; + _hintPctMessage += '0'; + _hintPctMessage += getEngineString(S_NUMBER_OF_HINTS); + _hintPctMessage += "]["; + _hintPctMessage += getEngineString(S_OK); + _hintPctMessage += ']'; + } + if (minute > _minute) { + _minute = 30; + drawClock(); + } + if (_mouse._pos.y < 12) + return; + + if (!_blo) { + if ((hour == 12) || ((hour > 18) && (hour < 21)) || ((hour >= 0) && (hour < 7))) + _inGameHourDuration = kTime2; + else + _inGameHourDuration = kTime1; + if ((_coreVar._faithScore > 33) && (_coreVar._faithScore < 66)) + _inGameHourDuration -= (_inGameHourDuration / 3); + + if (_coreVar._faithScore > 65) + _inGameHourDuration -= ((_inGameHourDuration / 3) * 2); + + int newHour = readclock(); + if ((newHour - _currentDayHour) > _inGameHourDuration) { + bool activeMenu = _menu._menuActive; + _menu.eraseMenu(); + _currentHourCount += ((newHour - _currentDayHour) / _inGameHourDuration); + _currentDayHour = newHour; + switch (_place) { + case GREEN_ROOM: + case DARKBLUE_ROOM: + setRandomPresenceGreenRoom(_coreVar._faithScore); + break; + case PURPLE_ROOM: + setRandomPresencePurpleRoom(_coreVar._faithScore); + break; + case BLUE_ROOM: + setRandomPresenceBlueRoom(_coreVar._faithScore); + break; + case RED_ROOM: + case GREEN_ROOM2: + setRandomPresenceRedRoom(_coreVar._faithScore); + break; + case ROOM9: + setRandomPresenceRoom9(_coreVar._faithScore); + break; + case DINING_ROOM: + setRandomPresenceDiningRoom(_coreVar._faithScore); + break; + case BUREAU: + setRandomPresenceBureau(_coreVar._faithScore); + break; + case KITCHEN: + setRandomPresenceKitchen(_coreVar._faithScore); + break; + case ATTIC: + case CELLAR: + setRandomPresenceAttic(_coreVar._faithScore); + break; + case LANDING: + case ROOM26: + setRandomPresenceLanding(_coreVar._faithScore); + break; + case CHAPEL: + setRandomPresenceChapel(_coreVar._faithScore); + break; + } + if ((_savedBitIndex != 0) && (_currBitIndex != 10)) + _savedBitIndex = _currBitIndex; + + if ((_savedBitIndex == 0) && (_currBitIndex > 0)) { + if ((_coreVar._currPlace == ATTIC) || (_coreVar._currPlace == CELLAR)) { + initCaveOrCellar(); + } else if (_currBitIndex == 10) { + _currBitIndex = 0; + if (!_uptodatePresence) { + _uptodatePresence = true; + _startHour = readclock(); + if (getRandomNumber(1, 5) < 5) { + clearVerbBar(); + prepareScreenType2(); + displayTextInVerbBar(getEngineString(S_HEAR_NOISE)); + int rand = (getRandomNumber(0, 4)) - 2; + _speechManager.startSpeech(1, rand, 1); + clearVerbBar(); + } + } + } + } + + if (activeMenu) + _menu.drawMenu(); + } + } + _endHour = readclock(); + if ((_uptodatePresence) && ((_endHour - _startHour) > 17)) { + getPresenceBitIndex(_place); + _uptodatePresence = false; + _startHour = 0; + if ((_coreVar._currPlace > OWN_ROOM) && (_coreVar._currPlace < DINING_ROOM)) + _anyone = true; + } +} + +/** + * Engine function - Draw Clock + * @remarks Originally called 'pendule' + */ +void MortevielleEngine::drawClock() { + const int cv[2][12] = { + { 5, 8, 10, 8, 5, 0, -5, -8, -10, -8, -5, 0 }, + { -5, -3, 0, 3, 5, 6, 5, 3, 0, -3, -5, -6 } + }; + const int x = 580; + const int y = 123; + const int rg = 9; + int hourColor; + + _mouse.hideMouse(); + + _screenSurface.drawRectangle(570, 118, 20, 10); + _screenSurface.drawRectangle(578, 114, 6, 18); + if ((_currGraphicalDevice == MODE_CGA) || (_currGraphicalDevice == MODE_HERCULES)) + hourColor = 0; + else + hourColor = 1; + + if (_minute == 0) + _screenSurface.drawLine(((uint)x >> 1) * _resolutionScaler, y, ((uint)x >> 1) * _resolutionScaler, (y - rg), hourColor); + else + _screenSurface.drawLine(((uint)x >> 1) * _resolutionScaler, y, ((uint)x >> 1) * _resolutionScaler, (y + rg), hourColor); + + int hour12 = _hour; + if (hour12 > 12) + hour12 -= 12; + if (hour12 == 0) + hour12 = 12; + + _screenSurface.drawLine(((uint)x >> 1) * _resolutionScaler, y, ((uint)(x + cv[0][hour12 - 1]) >> 1) * _resolutionScaler, y + cv[1][hour12 - 1], hourColor); + _mouse.showMouse(); + _screenSurface.putxy(568, 154); + + if (_hour > 11) + _screenSurface.drawString("PM ", 1); + else + _screenSurface.drawString("AM ", 1); + + _screenSurface.putxy(550, 160); + if ((_day >= 0) && (_day <= 8)) { + Common::String tmp = getEngineString(S_DAY); + tmp.insertChar((char)(_day + 49), 0); + _screenSurface.drawString(tmp, 1); + } +} + +void MortevielleEngine::palette(int v1) { + warning("TODO: palette"); +} + +/** + * Returns a substring of the given string + * @param s Source string + * @param idx Starting index (1 based) + * @param size Number of characters to return + */ + +Common::String MortevielleEngine::copy(const Common::String &s, int idx, size_t size) { + // Copy the substring into a temporary buffer + char *tmp = new char[size + 1]; + strncpy(tmp, s.c_str() + idx - 1, size); + tmp[size] = '\0'; + + Common::String result(tmp); + delete[] tmp; + return result; +} + +void MortevielleEngine::hirs() { + // Note: The original used this to set the graphics mode and clear the screen, both at + // the start of the game, and whenever the screen need to be cleared. As such, this + // method is deprecated in favour of clearing the screen + debugC(1, kMortevielleCore, "TODO: hirs is deprecated in favour of ScreenSurface::clearScreen"); + + if (_currGraphicalDevice == MODE_TANDY) { + _screenSurface.fillRect(0, Common::Rect(0, 0, 639, 200)); + _resolutionScaler = 1; + } else if (_currGraphicalDevice == MODE_CGA) { + palette(1); + _resolutionScaler = 1; + } else + _resolutionScaler = 2; + + _screenSurface.clearScreen(); +} + +/** + * Init room : Cave or Cellar + * @remarks Originally called 'cavegre' + */ +void MortevielleEngine::initCaveOrCellar() { + _coreVar._faithScore += 2; + if (_coreVar._faithScore > 69) + _coreVar._faithScore += (_coreVar._faithScore / 10); + clearVerbBar(); + prepareScreenType2(); + displayTextInVerbBar(getEngineString(S_SOMEONE_ENTERS)); + int rand = (getRandomNumber(0, 4)) - 2; + _speechManager.startSpeech(2, rand, 1); + + // The original was doing here a useless loop. + // It has been removed + + clearVerbBar(); + displayAloneText(); +} + +/** + * Display control menu string + * @remarks Originally called 'tctrm' + */ +void MortevielleEngine::displayControlMenu() { + handleDescriptionText(2, (3000 + _controlMenu)); + _controlMenu = 0; +} + +void MortevielleEngine::pictout(int seg, int dep, int x, int y) { + GfxSurface surface; + surface.decode(&_mem[seg * 16 + dep]); + + if (_currGraphicalDevice == MODE_HERCULES) { + _mem[0x7000 * 16 + 2] = 0; + _mem[0x7000 * 16 + 32] = 15; + } + + if ((_caff != 51) && (READ_LE_UINT16(&_mem[0x7000 * 16 + 0x4138]) > 0x100)) + WRITE_LE_UINT16(&_mem[0x7000 * 16 + 0x4138], 0x100); + + _screenSurface.drawPicture(surface, x, y); +} + +void MortevielleEngine::adzon() { + Common::File f; + + if (!f.open("don.mor")) + error("Missing file - don.mor"); + + f.read(_tabdon, 7 * 256); + f.close(); + + if (!f.open("bmor.mor")) + error("Missing file - bmor.mor"); + + f.read(&_tabdon[kFleche], 1 * 1916); + f.close(); + + if (!f.open("dec.mor")) + error("Missing file - dec.mor"); + + f.read(&_mem[0x73a2 * 16 + 0], 1 * 1664); + f.close(); +} + +/** + * Returns the offset within the compressed image data resource of the desired image + */ +int MortevielleEngine::animof(int ouf, int num) { + int nani = _mem[kAdrAni * 16 + 1]; + int aux = num; + if (ouf != 1) + aux += nani; + + int animof_result = (nani << 2) + 2 + READ_BE_UINT16(&_mem[kAdrAni * 16 + (aux << 1)]); + + return animof_result; +} + +/** + * Display text in description bar + * @remarks Originally called 'text1' + */ +void MortevielleEngine::displayTextInDescriptionBar(int x, int y, int nb, int mesgId) { + int co; + + if (_resolutionScaler == 1) + co = 10; + else + co = 6; + Common::String tmpStr = getString(mesgId); + if ((y == 182) && ((int) tmpStr.size() * co > nb * 6)) + y = 176; + _text.displayStr(tmpStr, x, y, nb, 20, _textColor); +} + +/** + * Display description text + * @remarks Originally called 'repon' + */ +void MortevielleEngine::handleDescriptionText(int f, int mesgId) { + if ((mesgId > 499) && (mesgId < 563)) { + Common::String tmpStr = getString(mesgId - 501 + kInventoryStringIndex); + + if ((int) tmpStr.size() > ((58 + (_resolutionScaler - 1) * 37) << 1)) + _largestClearScreen = true; + else + _largestClearScreen = false; + + clearDescriptionBar(); + _text.displayStr(tmpStr, 8, 176, 85, 3, 5); + } else { + mapMessageId(mesgId); + switch (f) { + case 2: + case 8: + clearDescriptionBar(); + prepareScreenType2(); + displayTextInDescriptionBar(8, 182, 103, mesgId); + if ((mesgId == 68) || (mesgId == 69)) + _coreVar._availableQuestion[40] = '*'; + if ((mesgId == 104) && (_caff == CELLAR)) { + _coreVar._availableQuestion[36] = '*'; + if (_coreVar._availableQuestion[39] == '*') { + _coreVar._pctHintFound[3] = '*'; + _coreVar._availableQuestion[38] = '*'; + } + } + break; + case 1: + case 6: + case 9: { + int i; + if ((f == 1) || (f == 6)) + i = 4; + else + i = 5; + + Common::String tmpStr = getString(mesgId); + _text.displayStr(tmpStr, 80, 40, 60, 25, i); + + if (mesgId == 180) + _coreVar._pctHintFound[6] = '*'; + else if (mesgId == 179) + _coreVar._pctHintFound[10] = '*'; + } + break; + default: + break; + } + } +} + +/** + * Recompute message Id + * @remarks Originally called 'modif' + */ +void MortevielleEngine::mapMessageId(int &mesgId) { + if (mesgId == 26) + mesgId = 25; + else if ((mesgId > 29) && (mesgId < 36)) + mesgId -= 4; + else if ((mesgId > 69) && (mesgId < 78)) + mesgId -= 37; + else if ((mesgId > 99) && (mesgId < 194)) + mesgId -= 59; + else if ((mesgId > 996) && (mesgId < 1000)) + mesgId -= 862; + else if ((mesgId > 1500) && (mesgId < 1507)) + mesgId -= 1363; + else if ((mesgId > 1507) && (mesgId < 1513)) + mesgId -= 1364; + else if ((mesgId > 1999) && (mesgId < 2002)) + mesgId -= 1851; + else if (mesgId == 2010) + mesgId = 151; + else if ((mesgId > 2011) && (mesgId < 2025)) + mesgId -= 1860; + else if (mesgId == 2026) + mesgId = 165; + else if ((mesgId > 2029) && (mesgId < 2037)) + mesgId -= 1864; + else if ((mesgId > 3000) && (mesgId < 3005)) + mesgId -= 2828; + else if (mesgId == 4100) + mesgId = 177; + else if (mesgId == 4150) + mesgId = 178; + else if ((mesgId > 4151) && (mesgId < 4156)) + mesgId -= 3973; + else if (mesgId == 4157) + mesgId = 183; + else if ((mesgId == 4160) || (mesgId == 4161)) + mesgId -= 3976; +} + +/** + * Initialize open objects array + * @remarks Originally called 'initouv' + */ +void MortevielleEngine::resetOpenObjects() { + for (int cx = 1; cx <= 7; ++cx) + _openObjects[cx] = 0; + _openObjCount = 0; +} + +void MortevielleEngine::ecr2(Common::String text) { + // Some dead code was present in the original: removed + _screenSurface.putxy(8, 177); + int tlig = 59 + (_resolutionScaler - 1) * 36; + + if ((int)text.size() < tlig) + _screenSurface.drawString(text, 5); + else if ((int)text.size() < (tlig << 1)) { + _screenSurface.putxy(8, 176); + _screenSurface.drawString(copy(text, 1, (tlig - 1)), 5); + _screenSurface.putxy(8, 182); + _screenSurface.drawString(copy(text, tlig, tlig << 1), 5); + } else { + _largestClearScreen = true; + clearDescriptionBar(); + _screenSurface.putxy(8, 176); + _screenSurface.drawString(copy(text, 1, (tlig - 1)), 5); + _screenSurface.putxy(8, 182); + _screenSurface.drawString(copy(text, tlig, ((tlig << 1) - 1)), 5); + _screenSurface.putxy(8, 190); + _screenSurface.drawString(copy(text, tlig << 1, tlig * 3), 5); + } +} + +void MortevielleEngine::displayTextInVerbBar(Common::String text) { + clearVerbBar(); + _screenSurface.putxy(8, 192); + _screenSurface.drawString(text, 5); +} + +/** + * Display item in hand + * @remarks Originally called 'modobj' + */ +void MortevielleEngine::displayItemInHand(int objId) { + Common::String strp = Common::String(' '); + + if (objId != 500) + strp = getString(objId - 501 + kInventoryStringIndex); + + _menu.setText(_menu._inventoryMenu[8], strp); + _menu.disableMenuItem(_menu._inventoryMenu[8]); +} + +/** + * Display empty hand + * @remarks Originally called 'maivid' + */ +void MortevielleEngine::displayEmptyHand() { + _coreVar._selectedObjectId = 0; + displayItemInHand(500); +} + +/** + * Set a random presence: Leo or Max + * @remarks Originally called 'chlm' + */ +int MortevielleEngine::checkLeoMaxRandomPresence() { + int retval = getRandomNumber(1, 2); + if (retval == 2) + retval = 128; + + return retval; +} + +/** + * Reset room variables + * @remarks Originally called 'debloc' + */ +void MortevielleEngine::resetRoomVariables(int roomId) { + _num = 0; + _x = 0; + _y = 0; + if ((roomId != ROOM26) && (roomId != LANDING)) + resetPresenceInRooms(roomId); + _savedBitIndex = _currBitIndex; +} + +/** + * Compute presence stats + * @remarks Originally called 'ecfren' + */ +int MortevielleEngine::getPresenceStats(int &rand, int cf, int roomId) { + if (roomId == OWN_ROOM) + displayAloneText(); + int retVal = -500; + rand = 0; + if ( ((roomId == GREEN_ROOM) && (!_roomPresenceLuc) && (!_roomPresenceIda)) + || ((roomId == DARKBLUE_ROOM) && (!_roomPresenceGuy) && (!_roomPresenceEva)) ) + retVal = getPresenceStatsGreenRoom(); + if ((roomId == PURPLE_ROOM) && (!_purpleRoomPresenceLeo) && (!_room9PresenceLeo)) + retVal = getPresenceStatsPurpleRoom(); + if ( ((roomId == TOILETS) && (!_toiletsPresenceBobMax)) + || ((roomId == BATHROOM) && (!_bathRoomPresenceBobMax)) ) + retVal = getPresenceStatsToilets(); + if ((roomId == BLUE_ROOM) && (!_roomPresenceMax)) + retVal = getPresenceStatsBlueRoom(); + if ( ((roomId == RED_ROOM) && (!_roomPresenceBob)) + || ((roomId == GREEN_ROOM2) && (!_roomPresencePat))) + retVal = getPresenceStatsRedRoom(); + if ((roomId == ROOM9) && (!_room9PresenceLeo) && (!_purpleRoomPresenceLeo)) + retVal = 10; + if ( ((roomId == PURPLE_ROOM) && (_room9PresenceLeo)) + || ((roomId == ROOM9) && (_purpleRoomPresenceLeo))) + retVal = -400; + if (retVal != -500) { + retVal += cf; + rand = getRandomNumber(1, 100); + } + + return retVal; +} + +/** + * Set presence flags + * @remarks Originally called 'becfren' + */ +void MortevielleEngine::setPresenceFlags(int roomId) { + if ((roomId == GREEN_ROOM) || (roomId == DARKBLUE_ROOM)) { + int rand = getRandomNumber(1, 2); + if (roomId == GREEN_ROOM) { + if (rand == 1) + _roomPresenceLuc = true; + else + _roomPresenceIda = true; + } else { // roomId == DARKBLUE_ROOM + if (rand == 1) + _roomPresenceGuy = true; + else + _roomPresenceEva = true; + } + } else if (roomId == PURPLE_ROOM) + _purpleRoomPresenceLeo = true; + else if (roomId == TOILETS) + _toiletsPresenceBobMax = true; + else if (roomId == BLUE_ROOM) + _roomPresenceMax = true; + else if (roomId == RED_ROOM) + _roomPresenceBob = true; + else if (roomId == BATHROOM) + _bathRoomPresenceBobMax = true; + else if (roomId == GREEN_ROOM2) + _roomPresencePat = true; + else if (roomId == ROOM9) + _room9PresenceLeo = true; +} + +void MortevielleEngine::init_nbrepm() { + static const byte ipm[9] = { 0, 4, 5, 6, 7, 5, 6, 5, 8 }; + + for (int idx = 0; idx < 9; ++idx) + _nbrepm[idx] = ipm[idx]; +} + +void MortevielleEngine::phaz(int &rand, int &p, int cf) { + p += cf; + rand = getRandomNumber(1, 100); +} + +/** + * Get Presence + * @remarks Originally called 't11' + */ +int MortevielleEngine::getPresence(int roomId) { + int retVal = 0; + int rand; + + int p = getPresenceStats(rand, _coreVar._faithScore, roomId); + _place = roomId; + if ((roomId > OWN_ROOM) && (roomId < DINING_ROOM)) { + if (p != -500) { + if (rand > p) { + displayAloneText(); + retVal = 0; + } else { + setPresenceFlags(_place); + retVal = getPresenceBitIndex(_place); + } + } else + retVal = getPresenceBitIndex(_place); + } + + if (roomId > ROOM9) { + if ((roomId > LANDING) && (roomId != CHAPEL) && (roomId != ROOM26)) + displayAloneText(); + else { + int h = 0; + if (roomId == DINING_ROOM) + p = getPresenceStatsDiningRoom(h); + else if (roomId == BUREAU) + p = getPresenceStatsBureau(h); + else if (roomId == KITCHEN) + p = getPresenceStatsKitchen(); + else if ((roomId == ATTIC) || (roomId == CELLAR)) + p = getPresenceStatsAttic(); + else if ((roomId == LANDING) || (roomId == ROOM26)) + p = getPresenceStatsLanding(); + else if (roomId == CHAPEL) + p = getPresenceStatsChapel(h); + p += _coreVar._faithScore; + rand = getRandomNumber(1, 100); + if (rand > p) { + displayAloneText(); + retVal = 0; + } else { + if (roomId == DINING_ROOM) + p = setPresenceDiningRoom(h); + else if (roomId == BUREAU) + p = setPresenceBureau(h); + else if ((roomId == KITCHEN) || (roomId == ATTIC) || (roomId == CELLAR)) + p = setPresenceKitchen(); + else if ((roomId == LANDING) || (roomId == ROOM26)) + p = setPresenceLanding(); + else if (roomId == CHAPEL) + p = setPresenceChapel(h); + retVal = p; + } + } + } + + return retVal; +} + +void MortevielleEngine::writetp(Common::String s, int t) { + if (_resolutionScaler == 2) + _screenSurface.drawString(s, t); + else + _screenSurface.drawString(copy(s, 1, 25), t); +} + +void MortevielleEngine::aniof(int ouf, int num) { + if ((_caff == BATHROOM) && ((num == 4) || (num == 5))) + return; + + if ((_caff == DINING_ROOM) && (num == 7)) + num = 6; + else if (_caff == KITCHEN) { + if (num == 3) + num = 4; + else if (num == 4) + num = 3; + } + + int ad = kAdrAni; + int offset = animof(ouf, num); + + GfxSurface surface; + surface.decode(&_mem[ad * 16 + offset]); + _screenSurface.drawPicture(surface, 0, 12); + + prepareScreenType1(); +} + +/** + * Draw Picture + * @remarks Originally called 'dessin' + */ +void MortevielleEngine::drawPicture() { + clearUpperLeftPart(); + if (_caff > 99) { + draw(kAdrDes, 60, 33); + _screenSurface.drawBox(118, 32, 291, 121, 15); // Medium box + } else if (_caff > 69) { + draw(kAdrDes, 112, 48); // Heads + _screenSurface.drawBox(222, 47, 155, 91, 15); + } else { + draw(kAdrDes, 0, 12); + prepareScreenType1(); + if ((_caff < 30) || (_caff > 32)) { + for (int cx = 1; cx <= 6; ++cx) { + if (_openObjects[cx] != 0) + aniof(1, _openObjects[cx]); + } + + if (_caff == ATTIC) { + if (_coreVar._atticBallHoleObjectId == 141) + aniof(1, 7); + + if (_coreVar._atticRodHoleObjectId == 159) + aniof(1, 6); + } else if ((_caff == CELLAR) && (_coreVar._cellarObjectId == 151)) + aniof(1, 2); + else if ((_caff == SECRET_PASSAGE) && (_coreVar._secretPassageObjectId == 143)) + aniof(1, 1); + else if ((_caff == WELL) && (_coreVar._wellObjectId != 0)) + aniof(1, 1); + } + + if (_caff < ROOM26) + startMusicOrSpeech(1); + } +} + +void MortevielleEngine::drawPictureWithText() { + _text.taffich(); + drawPicture(); + _destinationOk = false; +} + +/** + * Engine function - Place + * @remarks Originally called 'tkey1' + */ +void MortevielleEngine::testKey(bool d) { + bool quest = false; + int x, y; + bool click; + + _mouse.hideMouse(); + fenat('K'); + + // Wait for release from any key or mouse button + while (keyPressed()) + _key = testou(); + + do { + _mouse.getMousePosition(x, y, click); + keyPressed(); + } while (click); + + // Event loop + do { + if (d) + prepareRoom(); + quest = keyPressed(); + _mouse.getMousePosition(x, y, click); + if (shouldQuit()) + return; + } while (!(quest || (click) || (d && _anyone))); + if (quest) + testou(); + setMouseClick(false); + _mouse.showMouse(); +} + +void MortevielleEngine::tlu(int af, int ob) { + _caff = 32; + drawPictureWithText(); + handleDescriptionText(6, ob + 4000); + handleDescriptionText(2, 999); + testKey(true); + _caff = af; + _msg[3] = OPCODE_NONE; + _crep = 998; +} + +void MortevielleEngine::affrep() { + _caff = _coreVar._currPlace; + _crep = _coreVar._currPlace; +} + +/** + * Exit room + * @remarks Originally called 'tsort' + */ +void MortevielleEngine::exitRoom() { + if ((_openObjCount > 0) && (_coreVar._currPlace != OWN_ROOM)) { + if (_coreVar._faithScore < 50) + _coreVar._faithScore += 2; + else + _coreVar._faithScore += (_coreVar._faithScore / 10); + } + + resetOpenObjects(); + + _roomDoorId = OWN_ROOM; + _mchai = 0; + resetRoomVariables(_coreVar._currPlace); +} + +/** + * get 'read' description + * @remarks Originally called 'st4' + */ +void MortevielleEngine::getReadDescription(int objId) { + _crep = 997; + + switch (objId) { + case 114 : + _crep = 109; + break; + case 110 : + _crep = 107; + break; + case 158 : + _crep = 113; + break; + case 152: + case 153: + case 154: + case 155: + case 156: + case 150: + case 100: + case 157: + case 160: + case 161 : + tlu(_caff, objId); + break; + default: + break; + } +} + +/** + * get 'search' description + * @remarks Originally called 'st7' + */ +void MortevielleEngine::getSearchDescription(int objId) { + switch (objId) { + case 116: + case 144: + _crep = 104; + break; + case 126: + case 111: + _crep = 108; + break; + case 132: + _crep = 111; + break; + case 142: + _crep = 112; + break; + default: + _crep = 183; + getReadDescription(objId); + } +} + +void MortevielleEngine::mennor() { + _menu.menuUp(_msg[3]); +} + +void MortevielleEngine::premtet() { + draw(kAdrDes, 10, 80); + _screenSurface.drawBox(18, 79, 155, 91, 15); +} + +void MortevielleEngine::ajchai() { + int cy = kAcha + ((_mchai - 1) * 10) - 1; + int cx = 0; + do { + ++cx; + } while ((cx <= 9) && (_tabdon[cy + cx] != 0)); + + if (_tabdon[cy + cx] == 0) + _tabdon[cy + cx] = _coreVar._selectedObjectId; + else + _crep = 192; +} + +/** + * Check if inventory is full and, if not, add object in it. + * @remarks Originally called 'ajjer' + */ +void MortevielleEngine::addObjectToInventory(int objectId) { + int i = 0; + do { + ++i; + } while ((i <= 5) && (_coreVar._inventory[i] != 0)); + + if (_coreVar._inventory[i] == 0) { + _coreVar._inventory[i] = objectId; + _menu.setInventoryText(); + } else + // Inventory is full + _crep = 139; +} + +/** + * Interact with NPC + * @remarks Originally called 'quelquun' + */ +void MortevielleEngine::interactNPC() { + if (_menu._menuDisplayed) + _menu.eraseMenu(); + + endSearch(); + _crep = 997; +L1: + if (!_hiddenHero) { + if (_crep == 997) + _crep = 138; + handleDescriptionText(2, _crep); + if (_crep == 138) + _speechManager.startSpeech(5, 2, 1); + else + _speechManager.startSpeech(4, 4, 1); + + if (_openObjCount == 0) + _coreVar._faithScore += 2; + else if (_coreVar._faithScore < 50) + _coreVar._faithScore += 4; + else + _coreVar._faithScore += 3 * (_coreVar._faithScore / 10); + exitRoom(); + _menu.setDestinationText(LANDING); + int cx = convertBitIndexToCharacterIndex(_currBitIndex); + _caff = 69 + cx; + _crep = _caff; + _msg[3] = MENU_DISCUSS; + _msg[4] = _menu._discussMenu[cx]; + _syn = true; + _col = true; + } else { + if (getRandomNumber(1, 3) == 2) { + _hiddenHero = false; + _crep = 137; + goto L1; + } else { + handleDescriptionText(2, 136); + int rand = (getRandomNumber(0, 4)) - 2; + _speechManager.startSpeech(3, rand, 1); + clearDescriptionBar(); + displayAloneText(); + resetRoomVariables(MANOR_FRONT); + affrep(); + } + } + if (_menu._menuDisplayed) + _menu.drawMenu(); +} + +void MortevielleEngine::tsuiv() { + int tbcl; + int cy = kAcha + ((_mchai - 1) * 10) - 1; + int cx = 0; + do { + ++cx; + ++_searchCount; + int cl = cy + _searchCount; + tbcl = _tabdon[cl]; + } while ((tbcl == 0) && (_searchCount <= 9)); + + if ((tbcl != 0) && (_searchCount < 11)) { + _caff = tbcl; + _crep = _caff + 400; + if (_currBitIndex != 0) + _coreVar._faithScore += 2; + } else { + affrep(); + endSearch(); + if (cx > 9) + _crep = 131; + } +} + +void MortevielleEngine::tfleche() { + bool qust; + char touch; + + if (_num == 9999) + return; + + fenat(chr(152)); + bool inRect = false; + do { + touch = '\0'; + + do { + _mouse.moveMouse(qust, touch); + if (shouldQuit()) + return; + + if (getMouseClick()) + inRect = (_mouse._pos.x < 256 * _resolutionScaler) && (_mouse._pos.y < 176) && (_mouse._pos.y > 12); + prepareRoom(); + } while (!(qust || inRect || _anyone)); + + if (qust && (touch == '\103')) + _dialogManager.show(_hintPctMessage, 1); + } while (!((touch == '\73') || ((touch == '\104') && (_x != 0) && (_y != 0)) || (_anyone) || (inRect))); + + if (touch == '\73') + _keyPressedEsc = true; + + if (inRect) { + _x = _mouse._pos.x; + _y = _mouse._pos.y; + } +} + +/** + * Set coordinates + * @remarks Originally called 'tcoord' + */ +void MortevielleEngine::setCoordinates(int sx) { + int sy, ix, iy; + int ib; + + + _num = 0; + _crep = 999; + int a = 0; + int atdon = kAmzon + 3; + int cy = 0; + while (cy < _caff) { + a += _tabdon[atdon]; + atdon += 4; + ++cy; + } + + if (_tabdon[atdon] == 0) { + _crep = 997; + return; + } + + a += kFleche; + int cb = 0; + for (cy = 0; cy <= (sx - 2); ++cy) { + ib = (_tabdon[a + cb] << 8) + _tabdon[(a + cb + 1)]; + cb += (ib * 4) + 2; + } + ib = (_tabdon[a + cb] << 8) + _tabdon[(a + cb + 1)]; + if (ib == 0) { + _crep = 997; + return; + } + + cy = 1; + do { + cb += 2; + sx = _tabdon[a + cb] * _resolutionScaler; + sy = _tabdon[(a + cb + 1)]; + cb += 2; + ix = _tabdon[a + cb] * _resolutionScaler; + iy = _tabdon[(a + cb + 1)]; + ++cy; + } while (!(((_x >= sx) && (_x <= ix) && (_y >= sy) && (_y <= iy)) || (cy > ib))); + + if ((_x >= sx) && (_x <= ix) && (_y >= sy) && (_y <= iy)) { + _num = cy - 1; + return; + } + + _crep = 997; +} + +void MortevielleEngine::treg(int objId) { + int mdes = _caff; + _caff = objId; + + if (((_caff > 29) && (_caff < 33)) || (_caff == 144) || (_caff == 147) || (_caff == 149) || (_msg[4] == OPCODE_SLOOK)) { + drawPictureWithText(); + if ((_caff > 29) && (_caff < 33)) + handleDescriptionText(2, _caff); + else + handleDescriptionText(2, _caff + 400); + testKey(true); + _caff = mdes; + _msg[3] = 0; + _crep = 998; + } else { + _obpart = true; + _crep = _caff + 400; + _menu.setSearchMenu(); + } +} + +/** + * Engine function - Put in hand + * @remarks Originally called 'avpoing' + */ +void MortevielleEngine::putInHand(int &objId) { + _crep = 999; + if (_coreVar._selectedObjectId != 0) + addObjectToInventory(_coreVar._selectedObjectId); + + // If inventory wasn't full + if (_crep != 139) { + displayItemInHand(objId + 400); + _coreVar._selectedObjectId = objId; + objId = 0; + } +} + +void MortevielleEngine::rechai(int &ch) { + int tmpPlace = _coreVar._currPlace; + + if (_coreVar._currPlace == CRYPT) + tmpPlace = CELLAR; + ch = _tabdon[kAchai + (tmpPlace * 7) + _num - 1]; +} + +/** + * Check before leaving the secret passage + * @remarks Originally called 't23coul' + */ +int MortevielleEngine::checkLeaveSecretPassage() { + if (!checkInventory(143)) { + _crep = 1512; + loseGame(); + } + + return CELLAR; +} + +void MortevielleEngine::fenat(char ans) { + int coul; + + _mouse.hideMouse(); + if (_currGraphicalDevice == MODE_CGA) + coul = 2; + else if (_currGraphicalDevice == MODE_HERCULES) + coul = 1; + else + coul = 12; + + _screenSurface.writeCharacter(Common::Point(306, 193), ord(ans), coul); + _screenSurface.drawBox(300, 191, 16, 8, 15); + _mouse.showMouse(); +} + +/** + * Test Keyboard + * @remarks Originally called 'teskbd' + */ +void MortevielleEngine::testKeyboard() { + if (keyPressed()) + testou(); +} + +int MortevielleEngine::testou() { + char ch = getChar(); + + switch (ch) { + case '\23' : + _soundOff = !_soundOff; + break; + case '\26' : + if ((_x26KeyCount == 1) || (_x26KeyCount == 2)) { + decodeNumber(&_cfiecBuffer[161 * 16], (_cfiecBufferSize - (161 * 16)) / 64); + ++_x26KeyCount; + + return 61; + } + break; + case '\33' : + if (keyPressed()) + ch = getChar(); + break; + default: + break; + } + + return ord(ch); +} + +void MortevielleEngine::sauvecr(int y, int dy) { +// _mouse.hideMouse(); +// _mouse.showMouse(); +} + +void MortevielleEngine::charecr(int y, int dy) { +// _mouse.hideMouse(); +// _mouse.showMouse(); +} + +} // End of namespace Mortevielle -- cgit v1.2.3 From 67f08a36866f7455fe39de2514535695bdf2b541 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 28 Jun 2013 08:04:19 +0200 Subject: MORTEVIELLE: Remove 2 useless functions --- engines/mortevielle/dialogs.cpp | 2 -- engines/mortevielle/menu.cpp | 3 --- engines/mortevielle/mortevielle.h | 2 -- engines/mortevielle/utils.cpp | 10 ---------- 4 files changed, 17 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 1fadf1eaab..c53b20fa5a 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -55,7 +55,6 @@ int DialogManager::show(const Common::String &msg, int n) { Common::String caseStr; decodeAlertDetails(msg, caseNumb, lignNumb, colNumb, alertStr, caseStr); - _vm->sauvecr(50, (NUM_LINES + 1) << 4); int i = 0; Common::Point curPos; @@ -175,7 +174,6 @@ int DialogManager::show(const Common::String &msg, int n) { tmp4 += " "; _vm->_screenSurface.drawString(tmp4, 1); } - _vm->charecr(50, (NUM_LINES + 1) * 16); _vm->_mouse.showMouse(); /* Restore the background area */ diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 8c9fc038fc..408ea0746d 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -319,7 +319,6 @@ void Menu::menuDown(int ii) { xco = _menuConstants[ii - 1][0]; lignNumb = _menuConstants[ii - 1][3]; _vm->_mouse.hideMouse(); - _vm->sauvecr(10, (_menuConstants[ii - 1][1] + 1) << 1); xco = xco << 3; if (_vm->_resolutionScaler == 1) cx = 10; @@ -392,8 +391,6 @@ void Menu::menuDown(int ii) { */ void Menu::menuUp(int msgId) { if (_multiTitle) { - _vm->charecr(10, (_menuConstants[msgId - 1][1] + 1) << 1); - /* Restore the background area */ assert(_vm->_screenSurface.pitch == _vm->_backgroundSurface.pitch); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 9facc5ef86..a07af4269a 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -528,8 +528,6 @@ public: void handleDescriptionText(int f, int mesgId); int animof(int ouf, int num); void pictout(int seg, int dep, int x, int y); - void sauvecr(int y, int dy); - void charecr(int y, int dy); }; extern MortevielleEngine *g_vm; diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index f2d0c952dc..bbafbcad66 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -3441,14 +3441,4 @@ int MortevielleEngine::testou() { return ord(ch); } -void MortevielleEngine::sauvecr(int y, int dy) { -// _mouse.hideMouse(); -// _mouse.showMouse(); -} - -void MortevielleEngine::charecr(int y, int dy) { -// _mouse.hideMouse(); -// _mouse.showMouse(); -} - } // End of namespace Mortevielle -- cgit v1.2.3 From 22fada577628806c038371390c21192330f7fdae Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 28 Jun 2013 08:21:04 +0200 Subject: MORTEVIELLE: Rename displayStatusInDescriptionBar() --- engines/mortevielle/mortevielle.h | 2 +- engines/mortevielle/utils.cpp | 20 ++++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index a07af4269a..d4d57d84b7 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -448,7 +448,7 @@ private: void tsuiv(); void treg(int objId); void rechai(int &ch); - void fenat(char ans); + void displayStatusInDescriptionBar(char stat); public: Common::Point _prevPos; diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index bbafbcad66..a0b7cf3d5e 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -3001,7 +3001,7 @@ void MortevielleEngine::testKey(bool d) { bool click; _mouse.hideMouse(); - fenat('K'); + displayStatusInDescriptionBar('K'); // Wait for release from any key or mouse button while (keyPressed()) @@ -3247,7 +3247,7 @@ void MortevielleEngine::tfleche() { if (_num == 9999) return; - fenat(chr(152)); + displayStatusInDescriptionBar(chr(152)); bool inRect = false; do { touch = '\0'; @@ -3390,18 +3390,22 @@ int MortevielleEngine::checkLeaveSecretPassage() { return CELLAR; } -void MortevielleEngine::fenat(char ans) { - int coul; +/** + * Display status character in description bar + * @remarks Originally called 'fenat' + */ +void MortevielleEngine::displayStatusInDescriptionBar(char stat) { + int color; _mouse.hideMouse(); if (_currGraphicalDevice == MODE_CGA) - coul = 2; + color = 2; else if (_currGraphicalDevice == MODE_HERCULES) - coul = 1; + color = 1; else - coul = 12; + color = 12; - _screenSurface.writeCharacter(Common::Point(306, 193), ord(ans), coul); + _screenSurface.writeCharacter(Common::Point(306, 193), ord(stat), color); _screenSurface.drawBox(300, 191, 16, 8, 15); _mouse.showMouse(); } -- cgit v1.2.3 From 7be196865b21d2c71787dbe24054edfa13fb4de1 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 28 Jun 2013 20:08:24 +0200 Subject: MORTEVIELLE: Rename displayStatusArrow() --- engines/mortevielle/actions.cpp | 36 ++++++++++++++++++------------------ engines/mortevielle/mortevielle.h | 4 ++-- engines/mortevielle/utils.cpp | 6 +++++- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 9026df8470..bc811811d0 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -49,7 +49,7 @@ void MortevielleEngine::fctMove() { if ((_coreVar._currPlace == LANDING) && (_msg[4] == _menu._moveMenu[6])) { if (!_syn) displayTextInVerbBar(getEngineString(S_GO_TO)); - tfleche(); + displayStatusArrow(); if (_keyPressedEsc) _destinationOk = false; @@ -218,7 +218,7 @@ void MortevielleEngine::fctTake() { } if (!_syn) displayTextInVerbBar(getEngineString(S_TAKE)); - tfleche(); + displayStatusArrow(); if ((_anyone) || (_keyPressedEsc)) return; if (_caff == 3) { @@ -324,7 +324,7 @@ void MortevielleEngine::fctInventoryTake() { void MortevielleEngine::fctLift() { if (!_syn) displayTextInVerbBar(getEngineString(S_LIFT)); - tfleche(); + displayStatusArrow(); if ((_anyone) || (_keyPressedEsc)) return; setCoordinates(3); @@ -361,7 +361,7 @@ void MortevielleEngine::fctRead() { else { if (!_syn) displayTextInVerbBar(getEngineString(S_READ)); - tfleche(); + displayStatusArrow(); if (!(_anyone) && !(_keyPressedEsc)) { setCoordinates(4); if (_num != 0) @@ -394,7 +394,7 @@ void MortevielleEngine::fctLook() { } if (!_syn) displayTextInVerbBar(getEngineString(S_LOOK)); - tfleche(); + displayStatusArrow(); if ((_anyone) || (_keyPressedEsc)) return; setCoordinates(5); @@ -485,7 +485,7 @@ void MortevielleEngine::fctSearch() { if (!_syn) displayTextInVerbBar(getEngineString(S_SEARCH)); - tfleche(); + displayStatusArrow(); if (_anyone || _keyPressedEsc) return; @@ -595,7 +595,7 @@ void MortevielleEngine::fctOpen() { return; } - tfleche(); + displayStatusArrow(); if ((_anyone) || (_keyPressedEsc)) return; @@ -659,7 +659,7 @@ void MortevielleEngine::fctPlace() { if (!_syn) displayTextInVerbBar(getEngineString(S_PUT)); - tfleche(); + displayStatusArrow(); if (_keyPressedEsc) _crep = 998; @@ -791,7 +791,7 @@ void MortevielleEngine::fctTurn() { } if (!_syn) displayTextInVerbBar(getEngineString(S_TURN)); - tfleche(); + displayStatusArrow(); if ((_anyone) || (_keyPressedEsc)) return; setCoordinates(9); @@ -827,7 +827,7 @@ void MortevielleEngine::fctTurn() { void MortevielleEngine::fctSelfHide() { if (!_syn) displayTextInVerbBar(getEngineString(S_HIDE_SELF)); - tfleche(); + displayStatusArrow(); if (!(_anyone) && !(_keyPressedEsc)) { setCoordinates(10); if (_num == 0) @@ -849,7 +849,7 @@ void MortevielleEngine::fctAttach() { else { if (!_syn) displayTextInVerbBar(getEngineString(S_TIE)); - tfleche(); + displayStatusArrow(); if (!(_anyone) && !(_keyPressedEsc)) { setCoordinates(8); _crep = 997; @@ -875,7 +875,7 @@ void MortevielleEngine::fctClose() { displayTextInVerbBar(getEngineString(S_CLOSE)); if (_caff < ROOM26) { - tfleche(); + displayStatusArrow(); if (_keyPressedEsc) _crep = 998; if ((_anyone) || (_keyPressedEsc)) @@ -920,7 +920,7 @@ void MortevielleEngine::fctKnock() { } if (_coreVar._currPlace < DOOR) { - tfleche(); + displayStatusArrow(); if (!(_anyone) && !(_keyPressedEsc)) { if ((_coreVar._currPlace < MOUNTAIN) && (_coreVar._currPlace != LANDING)) _crep = 133; @@ -970,7 +970,7 @@ void MortevielleEngine::fctSelfPut() { displayEmptyHand(); return; } - tfleche(); + displayStatusArrow(); if ((_anyone) || (_keyPressedEsc)) return; setCoordinates(7); @@ -1240,7 +1240,7 @@ void MortevielleEngine::fctForce() { if (!_syn) displayTextInVerbBar(getEngineString(S_SMASH)); if (_caff < DOOR) - tfleche(); + displayStatusArrow(); if ((!_anyone) && (!_keyPressedEsc)) { if (_coreVar._currPlace != ROOM26) @@ -1330,7 +1330,7 @@ void MortevielleEngine::fctSound() { if (!_syn) displayTextInVerbBar(getEngineString(S_PROBE2)); if (_caff < 27) { - tfleche(); + displayStatusArrow(); if (!(_anyone) && (!_keyPressedEsc)) _crep = 145; _num = 0; @@ -1552,7 +1552,7 @@ void MortevielleEngine::fctSmell() { if (_caff < ROOM26) { if (!_syn) displayTextInVerbBar(getEngineString(S_SMELL)); - tfleche(); + displayStatusArrow(); if (!(_anyone) && !(_keyPressedEsc)) if (_caff == CRYPT) _crep = 153; @@ -1570,7 +1570,7 @@ void MortevielleEngine::fctScratch() { if (_caff < 27) { if (!_syn) displayTextInVerbBar(getEngineString(S_SCRATCH)); - tfleche(); + displayStatusArrow(); } _num = 0; } diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index d4d57d84b7..74c1bc7e4a 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -420,6 +420,8 @@ private: void askRestart(); void delay(int amount); void handleOpcode(); + void displayStatusArrow(); + void displayStatusInDescriptionBar(char stat); void displayTextInDescriptionBar(int x, int y, int nb, int mesgId); void mapMessageId(int &mesgId); @@ -438,7 +440,6 @@ private: void writetp(Common::String s, int t); void premtet(); void ajchai(); - void tfleche(); void ecr2(Common::String text); void init_nbrepm(); void aniof(int ouf, int num); @@ -448,7 +449,6 @@ private: void tsuiv(); void treg(int objId); void rechai(int &ch); - void displayStatusInDescriptionBar(char stat); public: Common::Point _prevPos; diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index a0b7cf3d5e..bf524b6a39 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -3240,7 +3240,11 @@ void MortevielleEngine::tsuiv() { } } -void MortevielleEngine::tfleche() { +/** + * Display Arrow status + * @remarks Originally called 'tfleche' + */ +void MortevielleEngine::displayStatusArrow() { bool qust; char touch; -- cgit v1.2.3 From 554e04535f3815cdf130f1b98cc9aa1dd3b7e0bb Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 28 Jun 2013 21:13:01 +0200 Subject: MORTEVIELLE: Some more renaming, introduce MENU_NONE constant --- engines/mortevielle/actions.cpp | 18 +++++++++--------- engines/mortevielle/menu.h | 5 +++-- engines/mortevielle/mortevielle.h | 2 +- engines/mortevielle/utils.cpp | 24 ++++++++++++++---------- 4 files changed, 27 insertions(+), 22 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index bc811811d0..7181d164f7 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -77,7 +77,7 @@ void MortevielleEngine::fctMove() { _roomDoorId = _num - 3; if (_num != 6) - affrep(); + prepareDisplayText(); else showMoveMenuAlert(); return; @@ -164,11 +164,11 @@ void MortevielleEngine::fctMove() { loseGame(); } else { _coreVar._currPlace = INSIDE_WELL; - affrep(); + prepareDisplayText(); } } if ((menuChoice < 5) || (menuChoice == 13) || (menuChoice == 14)) - affrep(); + prepareDisplayText(); resetRoomVariables(_coreVar._currPlace); _menu.setDestinationText(_coreVar._currPlace); } @@ -203,7 +203,7 @@ void MortevielleEngine::fctTake() { _coreVar._wellObjectId = 0; _menu.unsetSearchMenu(); _obpart = false; - affrep(); + prepareDisplayText(); } else { _tabdon[kAcha + ((_mchai - 1) * 10) + _searchCount - 1] = 0; tsuiv(); @@ -735,7 +735,7 @@ void MortevielleEngine::fctPlace() { aniof(2, 1); _crep = 166; } - affrep(); + prepareDisplayText(); } else { aniof(2, 1); _crep = 166; @@ -813,7 +813,7 @@ void MortevielleEngine::fctTurn() { int answer = _dialogManager.show(getEngineString(S_YES_NO), 1); if (answer == 1) { _coreVar._currPlace = CRYPT; - affrep(); + prepareDisplayText(); } else _crep = 176; } @@ -1175,7 +1175,7 @@ void MortevielleEngine::fctEnter() { aniof(1, 1); _coreVar._currPlace = _roomDoorId; - affrep(); + prepareDisplayText(); resetRoomVariables(_coreVar._currPlace); _menu.setDestinationText(_coreVar._currPlace); _roomDoorId = OWN_ROOM; @@ -1199,7 +1199,7 @@ void MortevielleEngine::fctSleep() { if (_coreVar._currPlace != OWN_ROOM) { exitRoom(); _coreVar._currPlace = OWN_ROOM; - affrep(); + prepareDisplayText(); drawPictureWithText(); resetRoomVariables(_coreVar._currPlace); _menu.setDestinationText(_coreVar._currPlace); @@ -1537,7 +1537,7 @@ void MortevielleEngine::fctDiscuss() { showPeoplePresent(_currBitIndex); prepareRoom(); drawClock(); - affrep(); + prepareDisplayText(); /* chech;*/ _menu.setDestinationText(_coreVar._currPlace); clearVerbBar(); diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index 61430bfdaa..d4538effee 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -35,8 +35,9 @@ namespace Mortevielle { class MortevielleEngine; enum { - MENU_INVENTORY = 1, MENU_MOVE = 2, MENU_ACTION = 3, MENU_SELF = 4, - MENU_DISCUSS = 5, MENU_FILE = 6, MENU_SAVE = 7, MENU_LOAD = 8 + MENU_NONE = 0, MENU_INVENTORY = 1, MENU_MOVE = 2, MENU_ACTION = 3, + MENU_SELF = 4, MENU_DISCUSS = 5, MENU_FILE = 6, MENU_SAVE = 7, + MENU_LOAD = 8 }; class Menu { diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 74c1bc7e4a..ac86eb1b71 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -444,7 +444,7 @@ private: void init_nbrepm(); void aniof(int ouf, int num); void tlu(int af, int ob); - void affrep(); + void prepareDisplayText(); void mennor(); void tsuiv(); void treg(int objId); diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index bf524b6a39..8eef2783ed 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -1338,7 +1338,7 @@ bool MortevielleEngine::checkInventory(int objectId) { */ void MortevielleEngine::displayDiningRoom() { _coreVar._currPlace = DINING_ROOM; - affrep(); + prepareDisplayText(); } /** @@ -1409,7 +1409,7 @@ void MortevielleEngine::gotoDiningRoom() { drawClock(); _mouse.showMouse(); _coreVar._currPlace = OWN_ROOM; - affrep(); + prepareDisplayText(); resetPresenceInRooms(DINING_ROOM); if (!_blo) getPresence(OWN_ROOM); @@ -1432,7 +1432,7 @@ void MortevielleEngine::checkManorDistance() { } else { _destinationOk = true; _coreVar._currPlace = MOUNTAIN; - affrep(); + prepareDisplayText(); } } @@ -1443,7 +1443,7 @@ void MortevielleEngine::checkManorDistance() { void MortevielleEngine::gotoManorFront() { _manorDistance = 0; _coreVar._currPlace = MANOR_FRONT; - affrep(); + prepareDisplayText(); } /** @@ -1452,7 +1452,7 @@ void MortevielleEngine::gotoManorFront() { */ void MortevielleEngine::gotoManorBack() { _coreVar._currPlace = MANOR_BACK; - affrep(); + prepareDisplayText(); } /** @@ -1518,7 +1518,7 @@ void MortevielleEngine::gameLoaded() { _manorDistance = 0; resetOpenObjects(); _takeObjCount = 0; - affrep(); + prepareDisplayText(); _hintPctMessage = getString(580); _destinationOk = false; @@ -3038,7 +3038,11 @@ void MortevielleEngine::tlu(int af, int ob) { _crep = 998; } -void MortevielleEngine::affrep() { +/** + * Prepare Display Text + * @remarks Originally called 'affrep' + */ +void MortevielleEngine::prepareDisplayText() { _caff = _coreVar._currPlace; _crep = _coreVar._currPlace; } @@ -3209,7 +3213,7 @@ L1: clearDescriptionBar(); displayAloneText(); resetRoomVariables(MANOR_FRONT); - affrep(); + prepareDisplayText(); } } if (_menu._menuDisplayed) @@ -3233,7 +3237,7 @@ void MortevielleEngine::tsuiv() { if (_currBitIndex != 0) _coreVar._faithScore += 2; } else { - affrep(); + prepareDisplayText(); endSearch(); if (cx > 9) _crep = 131; @@ -3347,7 +3351,7 @@ void MortevielleEngine::treg(int objId) { handleDescriptionText(2, _caff + 400); testKey(true); _caff = mdes; - _msg[3] = 0; + _msg[3] = MENU_NONE; _crep = 998; } else { _obpart = true; -- cgit v1.2.3 From fae077d848ddacc083cf37ed02ea8088f52f6f1b Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 28 Jun 2013 22:07:53 +0200 Subject: MORTEVIELLE: Get rid of some magic values --- engines/mortevielle/menu.cpp | 20 ++++++++++---------- engines/mortevielle/mortevielle.h | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 408ea0746d..6035c3ae11 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -239,30 +239,30 @@ void Menu::invert(int indx) { Common::String str; switch (_msg3) { - case 1: + case MENU_INVENTORY: str = _inventoryStringArray[menuIndex]; break; - case 2: + case MENU_MOVE: str = _moveStringArray[menuIndex]; break; - case 3: + case MENU_ACTION: str = _actionStringArray[menuIndex]; break; - case 4: + case MENU_SELF: str = _selfStringArray[menuIndex]; break; - case 5: + case MENU_DISCUSS: str = _discussStringArray[menuIndex]; break; - case 6: + case MENU_FILE: str = _vm->getEngineString(S_SAVE_LOAD + menuIndex); break; - case 7: + case MENU_SAVE: str = _vm->getEngineString(S_SAVE_LOAD + 1); str += ' '; str += (char)(48 + menuIndex); break; - case 8: + case MENU_LOAD: if (menuIndex == 1) { str = _vm->getEngineString(S_RESTART); } else { @@ -470,9 +470,9 @@ void Menu::updateMenu() { _vm->setMouseClick(false); menuUp(_msg3); if (lo(_msg4) == 1) - _msg3 = 7; + _msg3 = MENU_SAVE; else - _msg3 = 8; + _msg3 = MENU_LOAD; menuDown(_msg3); _vm->setMouseClick(false); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index ac86eb1b71..e2d1a5eef2 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -432,6 +432,7 @@ private: void drawPictureWithText(); void addObjectToInventory(int objectId); void putInHand(int &objId); + void prepareDisplayText(); void cinq_huit(char &c, int &idx, byte &pt, bool &the_end); void copcha(); @@ -444,7 +445,6 @@ private: void init_nbrepm(); void aniof(int ouf, int num); void tlu(int af, int ob); - void prepareDisplayText(); void mennor(); void tsuiv(); void treg(int objId); -- cgit v1.2.3 From 8e40527813433fb43f07ea45a02740219a40341b Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 29 Jun 2013 10:30:42 +0200 Subject: MORTEVIELLE: More renaming --- engines/mortevielle/actions.cpp | 8 +++----- engines/mortevielle/dialogs.cpp | 2 +- engines/mortevielle/mortevielle.h | 6 +++--- engines/mortevielle/utils.cpp | 17 +++++++++++------ 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 7181d164f7..38cbb30927 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -509,7 +509,7 @@ void MortevielleEngine::fctSearch() { if (_currBitIndex > 0) _coreVar._faithScore += 3; - rechai(_mchai); + _mchai = rechai(); if (_mchai != 0) { _searchCount = 0; _heroSearching = true; @@ -893,8 +893,7 @@ void MortevielleEngine::fctClose() { --_openObjCount; if (_openObjCount < 0) _openObjCount = 0; - int chai = 9999; - rechai(chai); + int chai = rechai(); if (_mchai == chai) _mchai = 0; } else { @@ -976,8 +975,7 @@ void MortevielleEngine::fctSelfPut() { setCoordinates(7); _crep = 124; if (_num != 0) { - int chai; - rechai(chai); + int chai = rechai(); if (chai == 0) _crep = 997; else { diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index c53b20fa5a..69cb81b4ef 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -447,7 +447,7 @@ int DialogManager::waitForF3F8() { int key; do { - key = _vm->testou(); + key = _vm->gettKeyPressed(); if (_vm->shouldQuit()) return key; } while ((key != 61) && (key != 66)); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index e2d1a5eef2..e6f8a1f235 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -418,7 +418,6 @@ private: void fctScratch(); void endGame(); void askRestart(); - void delay(int amount); void handleOpcode(); void displayStatusArrow(); void displayStatusInDescriptionBar(char stat); @@ -448,7 +447,7 @@ private: void mennor(); void tsuiv(); void treg(int objId); - void rechai(int &ch); + int rechai(); public: Common::Point _prevPos; @@ -510,6 +509,7 @@ public: Common::String getEngineString(int idx) const { return _engineStrings[idx]; } Common::String getGameString(int idx) const { return _gameStrings[idx]; } + void delay(int amount); void gameLoaded(); void initGame(); void displayAloneText(); @@ -524,7 +524,7 @@ public: void displayEmptyHand(); void hirs(); - int testou(); + int gettKeyPressed(); void handleDescriptionText(int f, int mesgId); int animof(int ouf, int num); void pictout(int seg, int dep, int x, int y); diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 8eef2783ed..7756d913e5 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -3005,7 +3005,7 @@ void MortevielleEngine::testKey(bool d) { // Wait for release from any key or mouse button while (keyPressed()) - _key = testou(); + _key = gettKeyPressed(); do { _mouse.getMousePosition(x, y, click); @@ -3022,7 +3022,7 @@ void MortevielleEngine::testKey(bool d) { return; } while (!(quest || (click) || (d && _anyone))); if (quest) - testou(); + gettKeyPressed(); setMouseClick(false); _mouse.showMouse(); } @@ -3377,12 +3377,13 @@ void MortevielleEngine::putInHand(int &objId) { } } -void MortevielleEngine::rechai(int &ch) { +int MortevielleEngine::rechai() { int tmpPlace = _coreVar._currPlace; if (_coreVar._currPlace == CRYPT) tmpPlace = CELLAR; - ch = _tabdon[kAchai + (tmpPlace * 7) + _num - 1]; + + return _tabdon[kAchai + (tmpPlace * 7) + _num - 1]; } /** @@ -3424,10 +3425,14 @@ void MortevielleEngine::displayStatusInDescriptionBar(char stat) { */ void MortevielleEngine::testKeyboard() { if (keyPressed()) - testou(); + gettKeyPressed(); } -int MortevielleEngine::testou() { +/** + * Test Key Pressed + * @remarks Originally called 'testou' + */ +int MortevielleEngine::gettKeyPressed() { char ch = getChar(); switch (ch) { -- cgit v1.2.3 From c2610d66e1d0ceb0ab29243a0dcddd2b8dadd22e Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 29 Jun 2013 10:31:30 +0200 Subject: MORTEVIELLE: Fix compilation of music code --- engines/mortevielle/sound.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/mortevielle/sound.cpp b/engines/mortevielle/sound.cpp index 478af41c87..de5c4feba6 100644 --- a/engines/mortevielle/sound.cpp +++ b/engines/mortevielle/sound.cpp @@ -177,7 +177,7 @@ void SoundManager::playNote(int frequency, int32 length) { void SoundManager::musyc(tablint &tb, int nbseg, int att) { #ifdef DEBUG - const byte *pSrc = &mem[0x5000 * 16]; + const byte *pSrc = &_vm->_mem[0x5000 * 16]; // Convert the countdown amount to a tempo rate, and then to note length in microseconds int tempo = TIMER_FREQUENCY / att; -- cgit v1.2.3 From 730a1373d9837c340e6e646aaa4fbdce4574620a Mon Sep 17 00:00:00 2001 From: Thierry Crozat Date: Sun, 30 Jun 2013 13:26:07 -0600 Subject: MORTEVIELLE: Fix access to free'ed memory Two buffers were allocated and then free'ed in initialise(), which caused memory issues when accessed later on throughout the game. They are now free'ed from the MortevielleEngine destructor. --- engines/mortevielle/mortevielle.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 6977ab47c0..7220cd6b58 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -101,6 +101,10 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g } MortevielleEngine::~MortevielleEngine() { + // Allocated from run() > initialise() > loadCFIPH() + free(_speechManager._cfiphBuffer); + // Allocated from run() > initialise() > loadCFIEC() + free(_cfiecBuffer); } /** @@ -204,8 +208,6 @@ Common::ErrorCode MortevielleEngine::initialise() { _currGraphicalDevice = _newGraphicalDevice; hirs(); - free(_cfiecBuffer); - free(_speechManager._cfiphBuffer); return Common::kNoError; } -- cgit v1.2.3 From 8c070963684933f72581cc061f3aaf5c71960af8 Mon Sep 17 00:00:00 2001 From: Thierry Crozat Date: Sun, 30 Jun 2013 13:45:43 -0600 Subject: MORTEVIELLE: Fix memory leak with the _screenSurface The _screenSurface was not free'ed after being created. This is now done at the end of run() (the Surface is created at the start of run() when calling initialise()). Also moved a few free() from the destructor to the end of run() in case run() can be called more than once on the same engine. --- engines/mortevielle/mortevielle.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 7220cd6b58..46c7c75fa3 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -101,10 +101,6 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g } MortevielleEngine::~MortevielleEngine() { - // Allocated from run() > initialise() > loadCFIPH() - free(_speechManager._cfiphBuffer); - // Allocated from run() > initialise() > loadCFIEC() - free(_cfiecBuffer); } /** @@ -174,8 +170,10 @@ Common::ErrorCode MortevielleEngine::initialise() { // Load the mort.dat resource Common::ErrorCode result = loadMortDat(); - if (result != Common::kNoError) + if (result != Common::kNoError) { + _screenSurface.free(); return result; + } // Load some error messages (was previously in chartex()) _hintPctMessage = getString(580); // You should have noticed %d hints @@ -341,6 +339,11 @@ Common::Error MortevielleEngine::run() { // Run the main game loop mainGame(); + + // Cleanup (allocated in initialise()) + _screenSurface.free(); + free(_speechManager._cfiphBuffer); + free(_cfiecBuffer); return Common::kNoError; } -- cgit v1.2.3 From acd64c64e48a441fa3d2c7021a2651d330f1ed1a Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 1 Jul 2013 01:18:14 +0200 Subject: MORTEVIELLE: Some renaming GfxSurface --- engines/mortevielle/graphics.cpp | 90 ++++++++++++++++++++-------------------- engines/mortevielle/graphics.h | 5 ++- 2 files changed, 48 insertions(+), 47 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 39a38c2580..001c1cc421 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -81,7 +81,7 @@ void PaletteManager::setDefaultPalette() { * of 18 different encoding methods. *-------------------------------------------------------------------------*/ -#define INCR_TAIX { if (_xSize & 1) ++_xSize; } +#define INCR_XSIZE { if (_xSize & 1) ++_xSize; } #define DEFAULT_WIDTH (SCREEN_WIDTH / 2) #define BUFFER_SIZE 40000 @@ -171,7 +171,7 @@ void GfxSurface::decode(const byte *pSrc) { for (int idx = 0; idx < innerCount; ++idx, ++tableOffset) { assert(tableOffset < BUFFER_SIZE); - lookupTable[tableOffset] = suiv(pSrc); + lookupTable[tableOffset] = nextNibble(pSrc); } } while (--outerCount > 0); } while (_lookupIndex < (lookupBytes - 1)); @@ -179,7 +179,7 @@ void GfxSurface::decode(const byte *pSrc) { } else { assert(lookupBytes < BUFFER_SIZE); for (int idx = 0; idx < (lookupBytes * 2); ++idx) - lookupTable[idx] = suiv(pSrc); + lookupTable[idx] = nextNibble(pSrc); } if (_nibbleFlag) { @@ -240,12 +240,12 @@ void GfxSurface::decode(const byte *pSrc) { // Draw rect at pos pDest = &outputBuffer[_yp * DEFAULT_WIDTH + _xp]; pSrcStart = pSrc; - INCR_TAIX; + INCR_XSIZE; for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDest += DEFAULT_WIDTH) { byte *pDestLine = pDest; for (int xCtr = 0; xCtr < _xSize; ++xCtr) { - *pDestLine++ = suiv(pSrc); + *pDestLine++ = nextNibble(pSrc); } } @@ -254,15 +254,15 @@ void GfxSurface::decode(const byte *pSrc) { case 1: // Draw rect using horizontal lines alternating left to right, then right to left - INCR_TAIX; + INCR_XSIZE; for (int yCtr = 0; yCtr < _ySize; ++yCtr) { if ((yCtr % 2) == 0) { for (int xCtr = 0; xCtr < _xSize; ++xCtr) { - *pDest++ = csuiv(pSrc, pLookup); + *pDest++ = nextByte(pSrc, pLookup); } } else { for (int xCtr = 0; xCtr < _xSize; ++xCtr) { - *--pDest = csuiv(pSrc, pLookup); + *--pDest = nextByte(pSrc, pLookup); } } pDest += DEFAULT_WIDTH; @@ -274,12 +274,12 @@ void GfxSurface::decode(const byte *pSrc) { for (int xCtr = 0; xCtr < _xSize; ++xCtr) { if ((xCtr % 2) == 0) { for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDest += DEFAULT_WIDTH) { - *pDest = csuiv(pSrc, pLookup); + *pDest = nextByte(pSrc, pLookup); } } else { for (int yCtr = 0; yCtr < _ySize; ++yCtr) { pDest -= DEFAULT_WIDTH; - *pDest = csuiv(pSrc, pLookup); + *pDest = nextByte(pSrc, pLookup); } } ++pDest; @@ -310,11 +310,11 @@ void GfxSurface::decode(const byte *pSrc) { case 7: // Draw rect using horizontal lines left to right - INCR_TAIX; + INCR_XSIZE; for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDest += DEFAULT_WIDTH) { byte *pDestLine = pDest; for (int xCtr = 0; xCtr < _xSize; ++xCtr) - *pDestLine++ = csuiv(pSrc, pLookup); + *pDestLine++ = nextByte(pSrc, pLookup); } break; @@ -323,7 +323,7 @@ void GfxSurface::decode(const byte *pSrc) { for (int xCtr = 0; xCtr < _xSize; ++xCtr, ++pDest) { byte *pDestLine = pDest; for (int yCtr = 0; yCtr < _ySize; ++yCtr, pDestLine += DEFAULT_WIDTH) - *pDestLine = csuiv(pSrc, pLookup); + *pDestLine = nextByte(pSrc, pLookup); } break; @@ -342,7 +342,7 @@ void GfxSurface::decode(const byte *pSrc) { break; case 12: - INCR_TAIX; + INCR_XSIZE; _thickness = _xInc = 1; _yInc = DEFAULT_WIDTH; _yEnd = _ySize; @@ -351,7 +351,7 @@ void GfxSurface::decode(const byte *pSrc) { break; case 13: - INCR_TAIX; + INCR_XSIZE; _thickness = _xSize; _yInc = 1; _yEnd = _xSize; @@ -369,7 +369,7 @@ void GfxSurface::decode(const byte *pSrc) { break; case 15: - INCR_TAIX; + INCR_XSIZE; _thickness = 2; _yInc = DEFAULT_WIDTH; _yEnd = _ySize; @@ -388,7 +388,7 @@ void GfxSurface::decode(const byte *pSrc) { break; case 17: - INCR_TAIX; + INCR_XSIZE; _thickness = 3; _yInc = DEFAULT_WIDTH; _yEnd = _ySize; @@ -398,7 +398,7 @@ void GfxSurface::decode(const byte *pSrc) { break; case 18: - INCR_TAIX; + INCR_XSIZE; _thickness = 5; _yInc = DEFAULT_WIDTH; _yEnd = _ySize; @@ -436,7 +436,7 @@ void GfxSurface::majTtxTty() { _height += _ySize; } -byte GfxSurface::suiv(const byte *&pSrc) { +byte GfxSurface::nextNibble(const byte *&pSrc) { int v = *pSrc; if (_nibbleFlag) { ++pSrc; @@ -449,13 +449,13 @@ byte GfxSurface::suiv(const byte *&pSrc) { } } -byte GfxSurface::csuiv(const byte *&pSrc, const byte *&pLookup) { +byte GfxSurface::nextByte(const byte *&pSrc, const byte *&pLookup) { assert(pLookup); while (!_lookupValue) { int v; do { - v = suiv(pSrc) & 0xff; + v = nextNibble(pSrc) & 0xff; _lookupValue += v; } while (v == 0xf); ++pLookup; @@ -467,16 +467,16 @@ byte GfxSurface::csuiv(const byte *&pSrc, const byte *&pLookup) { int GfxSurface::desanalyse(const byte *&pSrc) { int total = 0; - int v = suiv(pSrc); - if (v == 15) { + int v = nextNibble(pSrc); + if (v == 0xf) { int v2; do { - v2 = suiv(pSrc); + v2 = nextNibble(pSrc); total += v2; - } while (v2 == 15); + } while (v2 == 0xf); total *= 15; - v = suiv(pSrc); + v = nextNibble(pSrc); } total += v; @@ -484,7 +484,7 @@ int GfxSurface::desanalyse(const byte *&pSrc) { } void GfxSurface::horizontal(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { - INCR_TAIX; + INCR_XSIZE; byte *pDestEnd = pDest + (_ySize - 1) * DEFAULT_WIDTH + _xSize; for (;;) { @@ -504,14 +504,14 @@ void GfxSurface::horizontal(const byte *&pSrc, byte *&pDest, const byte *&pLooku // Write out vertical slice top to bottom for (int yIndex = 0; yIndex < _thickness; ++yIndex, pDest += DEFAULT_WIDTH) - *pDest = csuiv(pSrc, pLookup); + *pDest = nextByte(pSrc, pLookup); ++pDest; } else { // Write out vertical slice bottom to top for (int yIndex = 0; yIndex < _thickness; ++yIndex) { pDest -= DEFAULT_WIDTH; - *pDest = csuiv(pSrc, pLookup); + *pDest = nextByte(pSrc, pLookup); } } } @@ -538,12 +538,12 @@ void GfxSurface::horizontal(const byte *&pSrc, byte *&pDest, const byte *&pLooku if ((xIndex % 2) == 0) { // Write out vertical slice top to bottom for (int yIndex = 0; yIndex < _thickness; ++yIndex, pDest += DEFAULT_WIDTH) - *pDest = csuiv(pSrc, pLookup); + *pDest = nextByte(pSrc, pLookup); } else { // Write out vertical slice top to bottom for (int yIndex = 0; yIndex < _thickness; ++yIndex) { pDest -= DEFAULT_WIDTH; - *pDest = csuiv(pSrc, pLookup); + *pDest = nextByte(pSrc, pLookup); } } } @@ -591,12 +591,12 @@ void GfxSurface::vertical(const byte *&pSrc, byte *&pDest, const byte *&pLookup) drawIndex += _thickness; for (int xCtr = 0; xCtr < _thickness; ++xCtr) - *pDest++ = csuiv(pSrc, pLookup); + *pDest++ = nextByte(pSrc, pLookup); } else { pDest += DEFAULT_WIDTH; drawIndex -= _thickness; for (int xCtr = 0; xCtr < _thickness; ++xCtr) - *--pDest = csuiv(pSrc, pLookup); + *--pDest = nextByte(pSrc, pLookup); } } if ((_ySize % 2) == 0) { @@ -618,13 +618,13 @@ void GfxSurface::vertical(const byte *&pSrc, byte *&pDest, const byte *&pLookup) drawIndex += _thickness; for (int xCtr = 0; xCtr < _thickness; ++xCtr) - *pDest++ = csuiv(pSrc, pLookup); + *pDest++ = nextByte(pSrc, pLookup); } else { pDest -= DEFAULT_WIDTH; drawIndex -= _thickness; for (int xCtr = 0; xCtr < _thickness; ++xCtr) - *--pDest = csuiv(pSrc, pLookup); + *--pDest = nextByte(pSrc, pLookup); } } if ((_ySize % 2) == 0) { @@ -645,7 +645,7 @@ void GfxSurface::decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup) while (areaNum != -1) { switch (areaNum) { case 0: - *pDest = csuiv(pSrc, pLookup); + *pDest = nextByte(pSrc, pLookup); areaNum = 1; break; @@ -663,7 +663,7 @@ void GfxSurface::decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup) ++yPos; } - *++pDest = csuiv(pSrc, pLookup); + *++pDest = nextByte(pSrc, pLookup); areaNum = 2; } else if (yPos != _ySize) { ++yPos; @@ -675,7 +675,7 @@ void GfxSurface::decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup) increments(pDest); ++drawIndex; - *++pDest = csuiv(pSrc, pLookup); + *++pDest = nextByte(pSrc, pLookup); if (drawIndex == _xSize) { areaNum = -1; @@ -705,7 +705,7 @@ void GfxSurface::decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup) ++drawIndex; --yPos; - *pDest = csuiv(pSrc, pLookup); + *pDest = nextByte(pSrc, pLookup); areaNum = 2; } else { pDest += DEFAULT_WIDTH; @@ -714,7 +714,7 @@ void GfxSurface::decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup) NIV(); increments(pDest); - *pDest = csuiv(pSrc, pLookup); + *pDest = nextByte(pSrc, pLookup); if (yPos == _ySize) areaNum = -1; @@ -734,7 +734,7 @@ void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { for (;;) { NIH(); for (int idx = 0; idx <= _thickness; ++idx) { - *pDest = csuiv(pSrc, pLookup); + *pDest = nextByte(pSrc, pLookup); NIH(); increments(pDest); } @@ -743,7 +743,7 @@ void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { pDest += _yInc; for (int idx = 0; idx <= _thickness; ++idx) { - *pDest = csuiv(pSrc, pLookup); + *pDest = nextByte(pSrc, pLookup); NIH(); increments(pDest); } @@ -771,7 +771,7 @@ void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { for (;;) { for (int idx = 0; idx <= _thickness; ++idx) { - *pDest = csuiv(pSrc, pLookup); + *pDest = nextByte(pSrc, pLookup); NIH(); increments(pDest); } @@ -780,7 +780,7 @@ void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { pDest += _yInc; for (int idx = 0; idx <= _thickness; ++idx) { - *pDest = csuiv(pSrc, pLookup); + *pDest = nextByte(pSrc, pLookup); NIH(); increments(pDest); } @@ -842,7 +842,7 @@ void GfxSurface::TF2(const byte *&pSrc, byte *&pDest, const byte *&pLookup, int v += _thickness + 1; for (int idx = 0; idx <= _thickness; ++idx) { - *pDest = csuiv(pSrc, pLookup); + *pDest = nextByte(pSrc, pLookup); pDest += _yInc; } } diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 026950e127..116eb222c2 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -58,9 +58,10 @@ private: int _yInc, _yEnd, _xInc, _xEnd; int _width, _height; + byte nextNibble(const byte *&pSrc); + byte nextByte(const byte *&pSrc, const byte *&pLookup); + void majTtxTty(); - byte suiv(const byte *&pSrc); - byte csuiv(const byte *&pSrc, const byte *&pLookup); int desanalyse(const byte *&pSrc); void horizontal(const byte *&pSrc, byte *&pDest, const byte *&pLookup); void vertical(const byte *&pSrc, byte *&pDest, const byte *&pLookup); -- cgit v1.2.3 From 51ab7a5b16edd83362107f6936975dbfd156fce9 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 1 Jul 2013 08:03:19 +0200 Subject: MORTEVIELLE: Some more renaming in GfxSurface --- engines/mortevielle/graphics.cpp | 95 ++++++++++++++++++++++++---------------- engines/mortevielle/graphics.h | 6 +-- 2 files changed, 60 insertions(+), 41 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 001c1cc421..ff6014585c 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -436,6 +436,10 @@ void GfxSurface::majTtxTty() { _height += _ySize; } +/** + * Decompression Function - get next nibble + * @remarks Originally called 'suiv' + */ byte GfxSurface::nextNibble(const byte *&pSrc) { int v = *pSrc; if (_nibbleFlag) { @@ -449,6 +453,10 @@ byte GfxSurface::nextNibble(const byte *&pSrc) { } } +/** + * Decompression Function - get next byte + * @remarks Originally called 'csuiv' + */ byte GfxSurface::nextByte(const byte *&pSrc, const byte *&pLookup) { assert(pLookup); @@ -650,14 +658,14 @@ void GfxSurface::decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup) break; case 1: - increments(pDest); + nextDecompPtr(pDest); if (!drawIndex) { - NIH(); - NIV(); + negXInc(); + negYInc(); if (yPos == _ySize) { - increments(pDest); + nextDecompPtr(pDest); ++drawIndex; } else { ++yPos; @@ -670,9 +678,9 @@ void GfxSurface::decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup) --drawIndex; areaNum = 0; } else { - NIH(); - NIV(); - increments(pDest); + negXInc(); + negYInc(); + nextDecompPtr(pDest); ++drawIndex; *++pDest = nextByte(pSrc, pLookup); @@ -686,14 +694,14 @@ void GfxSurface::decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup) break; case 2: - increments(pDest); + nextDecompPtr(pDest); if (!yPos) { - NIH(); - NIV(); + negXInc(); + negYInc(); if (drawIndex == _xSize) { - increments(pDest); + nextDecompPtr(pDest); ++yPos; } else { ++drawIndex; @@ -710,9 +718,9 @@ void GfxSurface::decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup) } else { pDest += DEFAULT_WIDTH; ++yPos; - NIH(); - NIV(); - increments(pDest); + negXInc(); + negYInc(); + nextDecompPtr(pDest); *pDest = nextByte(pSrc, pLookup); @@ -732,25 +740,25 @@ void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { while (!TFP(diagIndex)) { for (;;) { - NIH(); + negXInc(); for (int idx = 0; idx <= _thickness; ++idx) { *pDest = nextByte(pSrc, pLookup); - NIH(); - increments(pDest); + negXInc(); + nextDecompPtr(pDest); } - NIV(); + negYInc(); pDest += _yInc; for (int idx = 0; idx <= _thickness; ++idx) { *pDest = nextByte(pSrc, pLookup); - NIH(); - increments(pDest); + negXInc(); + nextDecompPtr(pDest); } - NIH(); - NIV(); - increments(pDest); + negXInc(); + negYInc(); + nextDecompPtr(pDest); ++drawIndex; if (_xEnd < (drawIndex + 1)) { @@ -772,52 +780,63 @@ void GfxSurface::diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup) { for (;;) { for (int idx = 0; idx <= _thickness; ++idx) { *pDest = nextByte(pSrc, pLookup); - NIH(); - increments(pDest); + negXInc(); + nextDecompPtr(pDest); } - NIV(); + negYInc(); pDest += _yInc; for (int idx = 0; idx <= _thickness; ++idx) { *pDest = nextByte(pSrc, pLookup); - NIH(); - increments(pDest); + negXInc(); + nextDecompPtr(pDest); } - NIH(); - NIV(); - increments(pDest); + negXInc(); + negYInc(); + nextDecompPtr(pDest); if (--drawIndex == 0) { TF1(pDest, diagIndex); - NIH(); + negXInc(); break; } else { pDest += _xInc; if (--drawIndex == 0) { TF2(pSrc, pDest, pLookup, diagIndex); - NIH(); + negXInc(); break; } } - NIH(); + negXInc(); } } } - -void GfxSurface::increments(byte *&pDest) { +/** + * Decompression Function - Move pDest ptr to next value to uncompress + * @remarks Originally called 'increments' + */ +void GfxSurface::nextDecompPtr(byte *&pDest) { pDest += _xInc + _yInc; } -void GfxSurface::NIH() { +/** + * Decompression Function - set xInc to its opposite value + * @remarks Originally called 'NIH' + */ +void GfxSurface::negXInc() { _xInc = -_xInc; } -void GfxSurface::NIV() { +/** + * Decompression Function - set yInc to its opposite value + * @remarks Originally called 'NIV' + */ +void GfxSurface::negYInc() { _yInc = -_yInc; } diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 116eb222c2..3a54f0c434 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -67,9 +67,9 @@ private: void vertical(const byte *&pSrc, byte *&pDest, const byte *&pLookup); void decom11(const byte *&pSrc, byte *&pDest, const byte *&pLookup); void diag(const byte *&pSrc, byte *&pDest, const byte *&pLookup); - void increments(byte *&pDest); - void NIH(); - void NIV(); + void nextDecompPtr(byte *&pDest); + void negXInc(); + void negYInc(); bool TFP(int v); void TF1(byte *&pDest, int &v); void TF2(const byte *&pSrc, byte *&pDest, const byte *&pLookup, int &v); -- cgit v1.2.3 From d3351c94601a6adadba0e79963cc2d24dab51d54 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 3 Jul 2013 00:38:51 +0200 Subject: MORTEVIELLE: The German version now starts with broken texts --- engines/mortevielle/mortevielle.h | 4 ++-- engines/mortevielle/utils.cpp | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index e6f8a1f235..486f93f260 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -125,7 +125,7 @@ const int kArep = 1314; const int kAmzon = 1650; const int kArega = 0; -const int kMaxTi = 7975; +const int kMaxTi = 9000; const int kMaxTd = 600; const int kDescriptionStringIndex = 0; // Unused @@ -136,7 +136,7 @@ const int kMenuPlaceStringIndex = 435; const int kMenuActionStringIndex = 476; const int kMenuSelfStringIndex = 497; const int kMenuSayStringIndex = 502; -const int kSecretPassageQuestionStringIndex = 510; // Unusued? +const int kSecretPassageQuestionStringIndex = 510; // Unused? const int kMaxPatt = 20; const int OPCODE_NONE = 0; diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 7756d913e5..8c2d375359 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2082,8 +2082,10 @@ void MortevielleEngine::loadTexts() { } } if (!ntpFile.open("TXX.NTP")) { - warning("Missing file - TXX.INP or .MOR - Switching to DAT file"); - return; + if (!ntpFile.open("TXX.IND")) { + warning("Missing file - TXX.NTP or .IND - Switching to DAT file"); + return; + } } if ((inpFile.size() > (kMaxTi * 2)) || (ntpFile.size() > (kMaxTd * 3))) { -- cgit v1.2.3 From ad47cf0d718a996b7ea9afdcac48b05022a58608 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 3 Jul 2013 00:45:56 +0200 Subject: MORTEVIELLE: Fix extraction tool to handle German DOS version --- devtools/extract_mort/extract_mort.cpp | 93 ++++++++++++++++++++++++---------- 1 file changed, 67 insertions(+), 26 deletions(-) diff --git a/devtools/extract_mort/extract_mort.cpp b/devtools/extract_mort/extract_mort.cpp index 477ca44631..0d603f78cb 100644 --- a/devtools/extract_mort/extract_mort.cpp +++ b/devtools/extract_mort/extract_mort.cpp @@ -114,37 +114,63 @@ public: }; File textFile, txxInp, txxNtp; +int _version; /*-------------------------------------------------------------------------*/ #define BUFFER_SIZE 32768 -const byte tabdr[32] = { - 32, 101, 115, 97, 114, 105, 110, +const byte tabdrFr[32] = { + 32, 101, 115, 97, 114, 105, 110, // ' e♣arinutol 117, 116, 111, 108, 13, 100, 99, 112, 109, 46, 118, 130, 39, 102, 98, 44, 113, 104, 103, 33, 76, 85, 106, 30, 31 }; -const byte tab30[32] = { - 69, 67, 74, 138, 133, 120, 77, 122, +const byte tabdrDe[32] = { + 0x20, 0x65, 0x6E, 0x69, 0x73, 0x72, 0x74, // ' e♣arinutol + 0x68, 0x61, 0x75, 0x0D, 0x63, 0x6C, 0x64, + 0x6D, 0x6F, 0x67, 0x2E, 0x62, 0x66, 0x53, + 0x2C, 0x77, 0x45, 0x7A, 0x6B, 0x44, 0x76, + 0x9C, 0x47, 0x1E, 0x1F +}; + +const byte tab30Fr[32] = { + 69, 67, 74, 138, 133, 120, 77, 122, //ECJèà¶M 121, 68, 65, 63, 73, 80, 83, 82, 156, 45, 58, 79, 49, 86, 78, 84, 71, 81, 64, 66, 135, 34, 136, 91 }; -const byte tab31[32]= { +const byte tab30De[32] = { + 0x49, 0x4D, 0x21, 0x42, 0x4C, 0x70, 0x41, 0x52, //ECJèà¶M + 0x57, 0x4E, 0x48, 0x3F, 0x46, 0x50, 0x55, 0x4B, + 0x5A, 0x4A, 0x54, 0x31, 0x4F, 0x56, 0x79, 0x3A, + 0x6A, 0x5B, 0x5D, 0x40, 0x22, 0x2F, 0x30, 0x35 +}; + +const byte tab31Fr[32]= { 93, 47, 48, 53, 50, 70, 124, 75, 72, 147, 140, 150, 151, 57, 56, 51, 107, 139, 55, 89, 131, 37, 54, 88, 119, 0, 0, 0, 0, 0, 0, 0 }; +const byte tab31De[32]= { + 0x78, 0x2D, 0x32, 0x82, 0x43, 0x39, 0x33, 0x38, + 0x7C, 0x27, 0x37, 0x3B, 0x25, 0x28, 0x29, 0x36, + 0x51, 0x59, 0x71, 0x81, 0x87, 0x88, 0x93, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +}; + +const byte *tabdr, *tab30, *tab31; +uint16 ctrlChar; + /** * Extracts a single character from the game data */ -static void extractCharacter(unsigned char &c, int &idx, int &pt, bool &the_end, const uint16 *strData) { +static void extractCharacter(unsigned char &c, uint &idx, uint &pt, bool &the_end, const uint16 *strData) { uint16 oct, ocd; /* 5-8 */ @@ -161,14 +187,10 @@ static void extractCharacter(unsigned char &c, int &idx, int &pt, bool &the_end, oct = (uint)oct >> pt; } - switch (oct) { - case 11 : { + if (oct == ctrlChar) { c = '$'; the_end = true; - } - break; - case 30: - case 31 : { + } else if (oct == 30 || oct == 31) { ocd = FROM_LE_16(strData[idx]); ocd = (uint16)(ocd << (16 - pt)) >> (16 - pt); if (pt < 6) { @@ -185,14 +207,11 @@ static void extractCharacter(unsigned char &c, int &idx, int &pt, bool &the_end, else c = (char)tab31[ocd]; - if (c == '\0') { + if (c == '\0') the_end = true; - } - } - break; - default: + } else { c = (char)tabdr[oct]; - } + } } /** @@ -293,8 +312,8 @@ static void export_strings(const char *textFilename) { // Loop through getting each string for (unsigned int strIndex = 0; strIndex < (txxNtp.size() / 3); ++strIndex) { - int indis = txxNtp.readWord(); - int point = txxNtp.readByte(); + uint indis = txxNtp.readWord(); + uint point = txxNtp.readByte(); // Extract the string int charIndex = 0; @@ -330,8 +349,14 @@ static void export_strings(const char *textFilename) { */ static void import_strings(const char *textFilename) { // Open input and output files - txxInp.open("TXX.INP", kFileWriteMode); - txxNtp.open("TXX.NTP", kFileWriteMode); + if (!txxInp.open("TXX.INP", kFileWriteMode)) { + printf("Missing TXX data file"); + exit(-1); + } + if (!txxNtp.open("TXX.NTP", kFileWriteMode)) { + printf("Missing TXX index file"); + exit(-1); + } textFile.open(textFilename, kFileReadMode); // Set up a buffer for the output compressed strings @@ -371,17 +396,33 @@ static void import_strings(const char *textFilename) { int main(int argc, char *argv[]) { - if (argc != 3) { - printf("Format: %s export|import output_file\n", argv[0]); + if (argc != 4) { + printf("Format: %s export|import v1|v2 output_file\n", argv[0]); + printf("where:\nv1: French DOS version\nv2: German DOS version\n"); printf("The program must be run from the directory with the Mortville Manor game files.\n"); exit(0); } + if (!strcmp(argv[2], "v1")) { + tab30 = tab30Fr; + tab31 = tab31Fr; + tabdr = tabdrFr; + ctrlChar = 11; + } else if (!strcmp(argv[2], "v2")) { + tab30 = tab30De; + tab31 = tab31De; + tabdr = tabdrDe; + ctrlChar = 10; + } else { + printf("Unknown version"); + exit(-1); + } + // Do the processing if (!strcmp(argv[1], "export")) - export_strings(argv[2]); + export_strings(argv[3]); else if (!strcmp(argv[1], "import")) - import_strings(argv[2]); + import_strings(argv[3]); else printf("Unknown operation specified\n"); } -- cgit v1.2.3 From a116486b777c946f9f4f3181c6d8f155b49f8279 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 3 Jul 2013 07:33:32 +0200 Subject: TOOL: Remove obsolete comments in extract_mort --- devtools/extract_mort/extract_mort.cpp | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/devtools/extract_mort/extract_mort.cpp b/devtools/extract_mort/extract_mort.cpp index 0d603f78cb..0164030769 100644 --- a/devtools/extract_mort/extract_mort.cpp +++ b/devtools/extract_mort/extract_mort.cpp @@ -121,35 +121,20 @@ int _version; #define BUFFER_SIZE 32768 const byte tabdrFr[32] = { - 32, 101, 115, 97, 114, 105, 110, // ' e♣arinutol + 32, 101, 115, 97, 114, 105, 110, 117, 116, 111, 108, 13, 100, 99, 112, 109, 46, 118, 130, 39, 102, 98, 44, 113, 104, 103, 33, 76, 85, 106, 30, 31 }; -const byte tabdrDe[32] = { - 0x20, 0x65, 0x6E, 0x69, 0x73, 0x72, 0x74, // ' e♣arinutol - 0x68, 0x61, 0x75, 0x0D, 0x63, 0x6C, 0x64, - 0x6D, 0x6F, 0x67, 0x2E, 0x62, 0x66, 0x53, - 0x2C, 0x77, 0x45, 0x7A, 0x6B, 0x44, 0x76, - 0x9C, 0x47, 0x1E, 0x1F -}; - const byte tab30Fr[32] = { - 69, 67, 74, 138, 133, 120, 77, 122, //ECJèà¶M + 69, 67, 74, 138, 133, 120, 77, 122, 121, 68, 65, 63, 73, 80, 83, 82, 156, 45, 58, 79, 49, 86, 78, 84, 71, 81, 64, 66, 135, 34, 136, 91 }; -const byte tab30De[32] = { - 0x49, 0x4D, 0x21, 0x42, 0x4C, 0x70, 0x41, 0x52, //ECJèà¶M - 0x57, 0x4E, 0x48, 0x3F, 0x46, 0x50, 0x55, 0x4B, - 0x5A, 0x4A, 0x54, 0x31, 0x4F, 0x56, 0x79, 0x3A, - 0x6A, 0x5B, 0x5D, 0x40, 0x22, 0x2F, 0x30, 0x35 -}; - const byte tab31Fr[32]= { 93, 47, 48, 53, 50, 70, 124, 75, 72, 147, 140, 150, 151, 57, 56, 51, @@ -157,6 +142,21 @@ const byte tab31Fr[32]= { 119, 0, 0, 0, 0, 0, 0, 0 }; +const byte tabdrDe[32] = { + 0x20, 0x65, 0x6E, 0x69, 0x73, 0x72, 0x74, + 0x68, 0x61, 0x75, 0x0D, 0x63, 0x6C, 0x64, + 0x6D, 0x6F, 0x67, 0x2E, 0x62, 0x66, 0x53, + 0x2C, 0x77, 0x45, 0x7A, 0x6B, 0x44, 0x76, + 0x9C, 0x47, 0x1E, 0x1F +}; + +const byte tab30De[32] = { + 0x49, 0x4D, 0x21, 0x42, 0x4C, 0x70, 0x41, 0x52, + 0x57, 0x4E, 0x48, 0x3F, 0x46, 0x50, 0x55, 0x4B, + 0x5A, 0x4A, 0x54, 0x31, 0x4F, 0x56, 0x79, 0x3A, + 0x6A, 0x5B, 0x5D, 0x40, 0x22, 0x2F, 0x30, 0x35 +}; + const byte tab31De[32]= { 0x78, 0x2D, 0x32, 0x82, 0x43, 0x39, 0x33, 0x38, 0x7C, 0x27, 0x37, 0x3B, 0x25, 0x28, 0x29, 0x36, -- cgit v1.2.3 From cabe0ed33d64cee1b8bec5be143733e655c9ab3f Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 3 Jul 2013 07:59:25 +0200 Subject: MORTEVIELLE: Fix text decryption in German version --- engines/mortevielle/utils.cpp | 60 +++++++++++++++++++++++++++++++------------ 1 file changed, 44 insertions(+), 16 deletions(-) diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 8c2d375359..fcf55cbfeb 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -1798,7 +1798,7 @@ void MortevielleEngine::decodeNumber(byte *pStart, int count) { } } -const byte tabdr[32] = { +const byte tabdrFr[32] = { 32, 101, 115, 97, 114, 105, 110, 117, 116, 111, 108, 13, 100, 99, 112, 109, 46, 118, 130, 39, 102, @@ -1806,20 +1806,45 @@ const byte tabdr[32] = { 85, 106, 30, 31 }; -const byte tab30[32] = { +const byte tab30Fr[32] = { 69, 67, 74, 138, 133, 120, 77, 122, 121, 68, 65, 63, 73, 80, 83, 82, 156, 45, 58, 79, 49, 86, 78, 84, 71, 81, 64, 66, 135, 34, 136, 91 }; -const byte tab31[32]= { +const byte tab31Fr[32]= { 93, 47, 48, 53, 50, 70, 124, 75, 72, 147, 140, 150, 151, 57, 56, 51, 107, 139, 55, 89, 131, 37, 54, 88, 119, 0, 0, 0, 0, 0, 0, 0 }; +const byte tabdrDe[32] = { + 0x20, 0x65, 0x6E, 0x69, 0x73, 0x72, 0x74, + 0x68, 0x61, 0x75, 0x0D, 0x63, 0x6C, 0x64, + 0x6D, 0x6F, 0x67, 0x2E, 0x62, 0x66, 0x53, + 0x2C, 0x77, 0x45, 0x7A, 0x6B, 0x44, 0x76, + 0x9C, 0x47, 0x1E, 0x1F +}; + +const byte tab30De[32] = { + 0x49, 0x4D, 0x21, 0x42, 0x4C, 0x70, 0x41, 0x52, + 0x57, 0x4E, 0x48, 0x3F, 0x46, 0x50, 0x55, 0x4B, + 0x5A, 0x4A, 0x54, 0x31, 0x4F, 0x56, 0x79, 0x3A, + 0x6A, 0x5B, 0x5D, 0x40, 0x22, 0x2F, 0x30, 0x35 +}; + +const byte tab31De[32]= { + 0x78, 0x2D, 0x32, 0x82, 0x43, 0x39, 0x33, 0x38, + 0x7C, 0x27, 0x37, 0x3B, 0x25, 0x28, 0x29, 0x36, + 0x51, 0x59, 0x71, 0x81, 0x87, 0x88, 0x93, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +}; + +const byte *tabdr, *tab30, *tab31; +uint16 ctrlChar; + void MortevielleEngine::cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { uint16 oct, ocd; @@ -1836,13 +1861,10 @@ void MortevielleEngine::cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { oct = (uint)oct >> pt; } - switch (oct) { - case 11: + if (oct == ctrlChar) { c = '$'; the_end = true; - break; - case 30: - case 31: + } else if (oct == 30 || oct == 31) { ocd = _inpBuffer[idx]; ocd = (uint16)(ocd << (16 - pt)) >> (16 - pt); if (pt < 6) { @@ -1864,10 +1886,8 @@ void MortevielleEngine::cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { the_end = true; c = '#'; } - break; - default: + } else { c = chr(tabdr[oct]); - break; } } @@ -2081,11 +2101,19 @@ void MortevielleEngine::loadTexts() { return; } } - if (!ntpFile.open("TXX.NTP")) { - if (!ntpFile.open("TXX.IND")) { - warning("Missing file - TXX.NTP or .IND - Switching to DAT file"); - return; - } + if (ntpFile.open("TXX.NTP")) { + tab30 = tab30Fr; + tab31 = tab31Fr; + tabdr = tabdrFr; + ctrlChar = 11; + } else if (ntpFile.open("TXX.IND")) { + tab30 = tab30De; + tab31 = tab31De; + tabdr = tabdrDe; + ctrlChar = 10; + } else { + warning("Missing file - TXX.NTP or .IND - Switching to DAT file"); + return; } if ((inpFile.size() > (kMaxTi * 2)) || (ntpFile.size() > (kMaxTd * 3))) { -- cgit v1.2.3 From dd8b8a8dd274af396d414b581c5b94fa5354c76b Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 3 Jul 2013 08:30:04 +0200 Subject: MORTEVIELLE: Some renaming in Utils --- engines/mortevielle/utils.cpp | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index fcf55cbfeb..9b140fc761 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -1798,7 +1798,7 @@ void MortevielleEngine::decodeNumber(byte *pStart, int count) { } } -const byte tabdrFr[32] = { +const byte cryptoArrDefaultFr[32] = { 32, 101, 115, 97, 114, 105, 110, 117, 116, 111, 108, 13, 100, 99, 112, 109, 46, 118, 130, 39, 102, @@ -1806,21 +1806,21 @@ const byte tabdrFr[32] = { 85, 106, 30, 31 }; -const byte tab30Fr[32] = { +const byte cryptoArr30Fr[32] = { 69, 67, 74, 138, 133, 120, 77, 122, 121, 68, 65, 63, 73, 80, 83, 82, 156, 45, 58, 79, 49, 86, 78, 84, 71, 81, 64, 66, 135, 34, 136, 91 }; -const byte tab31Fr[32]= { +const byte cryptoArr31Fr[32]= { 93, 47, 48, 53, 50, 70, 124, 75, 72, 147, 140, 150, 151, 57, 56, 51, 107, 139, 55, 89, 131, 37, 54, 88, 119, 0, 0, 0, 0, 0, 0, 0 }; -const byte tabdrDe[32] = { +const byte cryptoArrDefaultDe[32] = { 0x20, 0x65, 0x6E, 0x69, 0x73, 0x72, 0x74, 0x68, 0x61, 0x75, 0x0D, 0x63, 0x6C, 0x64, 0x6D, 0x6F, 0x67, 0x2E, 0x62, 0x66, 0x53, @@ -1828,21 +1828,21 @@ const byte tabdrDe[32] = { 0x9C, 0x47, 0x1E, 0x1F }; -const byte tab30De[32] = { +const byte cryptoArr30De[32] = { 0x49, 0x4D, 0x21, 0x42, 0x4C, 0x70, 0x41, 0x52, 0x57, 0x4E, 0x48, 0x3F, 0x46, 0x50, 0x55, 0x4B, 0x5A, 0x4A, 0x54, 0x31, 0x4F, 0x56, 0x79, 0x3A, 0x6A, 0x5B, 0x5D, 0x40, 0x22, 0x2F, 0x30, 0x35 }; -const byte tab31De[32]= { +const byte cryptoArr31De[32]= { 0x78, 0x2D, 0x32, 0x82, 0x43, 0x39, 0x33, 0x38, 0x7C, 0x27, 0x37, 0x3B, 0x25, 0x28, 0x29, 0x36, 0x51, 0x59, 0x71, 0x81, 0x87, 0x88, 0x93, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; -const byte *tabdr, *tab30, *tab31; +const byte *cryptoArrDefault, *cryptoArr30, *cryptoArr31; uint16 ctrlChar; void MortevielleEngine::cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { @@ -1878,16 +1878,16 @@ void MortevielleEngine::cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { } if (oct == 30) - c = chr(tab30[ocd]); + c = chr(cryptoArr30[ocd]); else - c = chr(tab31[ocd]); + c = chr(cryptoArr31[ocd]); if (c == '\0') { the_end = true; c = '#'; } } else { - c = chr(tabdr[oct]); + c = chr(cryptoArrDefault[oct]); } } @@ -2102,14 +2102,14 @@ void MortevielleEngine::loadTexts() { } } if (ntpFile.open("TXX.NTP")) { - tab30 = tab30Fr; - tab31 = tab31Fr; - tabdr = tabdrFr; + cryptoArr30 = cryptoArr30Fr; + cryptoArr31 = cryptoArr31Fr; + cryptoArrDefault = cryptoArrDefaultFr; ctrlChar = 11; } else if (ntpFile.open("TXX.IND")) { - tab30 = tab30De; - tab31 = tab31De; - tabdr = tabdrDe; + cryptoArr30 = cryptoArr30De; + cryptoArr31 = cryptoArr31De; + cryptoArrDefault = cryptoArrDefaultDe; ctrlChar = 10; } else { warning("Missing file - TXX.NTP or .IND - Switching to DAT file"); -- cgit v1.2.3 From 7c23eb7c44ee41ddb466d096c4863701004f5fae Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 4 Jul 2013 23:25:26 +0200 Subject: MORTEVIELLE: Add German translation in the DAT file --- devtools/create_mortdat/create_mortdat.h | 3 +- devtools/create_mortdat/gametext.h | 1170 +++++++++++++++--------------- dists/engine-data/mort.dat | Bin 77889 -> 75663 bytes 3 files changed, 587 insertions(+), 586 deletions(-) diff --git a/devtools/create_mortdat/create_mortdat.h b/devtools/create_mortdat/create_mortdat.h index 0aa6b529df..908cb61951 100644 --- a/devtools/create_mortdat/create_mortdat.h +++ b/devtools/create_mortdat/create_mortdat.h @@ -33,7 +33,8 @@ enum AccessMode { enum DataType { kStaticStrings = 0, - kGameStrings = 1 + kGameStrings = 1, + kEncryptionArrays = 2 }; #define MORT_DAT "mort.dat" diff --git a/devtools/create_mortdat/gametext.h b/devtools/create_mortdat/gametext.h index ebaa422f2c..6e43258e88 100644 --- a/devtools/create_mortdat/gametext.h +++ b/devtools/create_mortdat/gametext.h @@ -1204,591 +1204,591 @@ const char *gameDataFr[] = { }; const char *gameDataDe[] = { - "TBT - Calm within the storm$", - "TBT - Discussed in colours$", - "TBT - Your mauve!$", - "TBT - Be kind enough to leave the room...$", - "TBT - If you're NOT overdrawn...$", - "TBT - If you're feeling blue...$", - "TBT - Read what's on the walls?$", - "TBT - Water sports$", - "TBT - Room for envy?$", - "TBT - A glance at the forbidden$", - "TBT - Smell of a woodfire and tobacco$", - "TBT - Tobacco and old books$", - "TBT - Onions, cinnamon and spirits$", - "TBT - A place seldom visited$", - "TBT - Humidity and decay$", - "TBT - Sorry, no ""door to door""$", - "TBT - Rotting corpse: deady cryptomania$", - "TBT - And what's more, there are disused traps$", - "TBT - It's already open$", - "TBT - Danger: avalanches$", - "TBT - Proper Charlie's place?$", - "TBT - An imposing building$", - "TBT - The other side of the mystery$", - "TBT - Strange horoscope$", - "TBT - Look out... but she wishes well?$", - "TBT - An oak door$", - "TBT - A photograph$", - "TBT - The coat of arms$", - "TBT - $", - "TBT - Max, the servant, welcomes you and shows you to your room$", - "TBT - Mortville 6/2/51@ My dear Jerome@Regarding my telegram, I must tell you the reason for my wor-@ries. A year ago, Murielle, my lady companion, disappeared. The de@part may have had something to do@with the financial success of themanor, or... A silence hard to un@derstand for my son Guy. Not ha@ving been able to see the light of day over this affair, I count @on you to sort things out. If my state of health doesn't improve, @take the decisions that you feel @are apropriate.@ Kind regards, Julia DEFRANCK$", - "TBT - Later, Guy will inform you of Leo's suicide after a@heavy bet at the races$", - "TBT - F3: AGAIN F8: STOP$", - "TBT - The master of the premises$", - "TBT - The future heir$", - "TBT - JULIA's son$", - "TBT - A pretty picture$", - "TBT - Superman!$", - "TBT - Ida's husband$", - "TBT - Interesting remarks?$", - "TBT - Service included!$", - "TBT - Nothing underneath$", - "TBT - You could hear a pin drop$", - "TBT - Half an hour passes: nothing! Wait any longer?$", - "TBT - Admire! Contemplate!$", - "TBT - No! Nothing!$", - "TBT - Impossible$", - "TBT - That stains!$", - "TBT - A treatise on the history of the area$", - "TBT - A few coins...$", - "TBT - First commandment...$", - "TBT - Pleasing to the nostrils!$", - "TBT - Spades, Hearts...$", - "TBT - Just a spoonful of sugar...$", - "TBT - A romantic novel$", - "TBT - Worth more than a penny, (whistle)$", - "TBT - Just needs a little patience$", - "TBT - Watch the sharp bends$", - "TBT - Deep and dark$", - "TBT - Normal sensations$", - "TBT - Sniff!$", - "TBT - Not discreet! Be content to watch!$", - "TBT - Bless you! Dusty!$", - "TBT - The canvas is signed, the wallpaper is not!$", - "TBT - Nothing, Unlucky!$", - "TBT - Be more discreet!$", - "TBT - The shutters are closed$", - "TBT - Snow! And more snow!$", - "TBT - Brilliant! The work of a master!$", - "TBT - No doubt at all! A genuine fake!$", - "TBT - Hmm! A cheap reproduction!$", - "TBT - A rare and valuable piece$", - "TBT - Nothing special$", - "TBT - Linen, personal belongings...$", - "TBT - Not just anywhere!$", - "TBT - It's not time!$", - "TBT - One doesn't speak with ones mouth full! So once the meal is over...$", - "TBT - Someone comes in, messes about then goes out again$", - "TBT - Someone's approaching your hiding-place$", - "TBT - Someone surprises you!$", - "TBT - Impossible! You're too loaded!$", - "TBT - Try again!$", - "TBT - Still puzzled!?$", - "TBT - You leave Mortville.In Paris a message awaits you...$", - "TBT - You hurt yourself$", - "TBT - Nothing more here$", - "TBT - The sound seems normal$", - "TBT - It doesn't move$", - "TBT - You are answered$", - "TBT - Not the right moment!$", - "TBT - The same matter, from another angle!$", - "TBT - The reflection is tarnished, but the frame is gold!$", - "TBT - Bric-a-brac$", - "TBT - Facing failure!$", - "TBT - Smells like something you'd rather not see!$", - "TBT - Cleaning products$", - "TBT - Got an itch?$", - "TBT - It's stuck, frozen. Brrr!$", - "TBT - All the locks are jammed!$", - "TBT - Papers$", - "TBT - No! Father christmas hasn't got himself stuck!$", - "TBT - It leads onto a corridor$", - "TBT - China, silverware...$", - "TBT - No! It's not Julia's remains!$", - "TBT - An old engraving$", - "TBT - You find a deep diamond-shaped opening$", - "TBT - The wall slides open! A passage! Do you follow it?$", - "TBT - The passageway closes$", - "TBT - A secret drawer: a notebook! Do you read it?$", - "TBT - The drawer shuts$", - "TBT - Nothing! Flesh and blood stuck to the stone$", - "TBT - Certain details lead you to believe death was not immediate!$", - "TBT - A rotten affair!$", - "TBT - Did she cling to dear life with just one finger?$", - "TBT - Has the treasure packed its trunk?$", - "TBT - A slot the size of a coin$", - "TBT - Part of the stone wall pivots.A crypt! Do you enter?$", - "TBT - The ring turns, the wall closes$", - "TBT - A stone column behind the altar$", - "TBT - There is a noise!$", - "TBT - Occupied!$", - "TBT - Take another chance?$", - "TBT - Too deep!$", - "TBT - The cellar wall pivots$", - "TBT - Nothing$", - "TBT - The one and only!$", - "TBT - The object slides to the bottom$", - "TBT - You have nothing in hand$", - "TBT - It is not open$", - "TBT - There is already something$", - "TBT - The door is locked$", - "TBT - No reply$", - "TBT - A solid wooden ball$", - "TBT - There's no more space$", - "TBT - A wooden ball pierced through the side$", - "TBT - ? ?$", - "TBT - Your move$", - "TBT - OK !$", - "TBT - Suddenly Max arrives with your suitcase: \"Thank you for your @visit!\".Mister discreet \"private eye\" (in need of a private optici@an!). Thoroughly demoralised, you@leave the manor. You are useless!$", - "TBT - Leo interrupts: \"The storm has died down,I am going into town in@1 hour. Get ready\". You have lost@time...but not your life$", - "TBT - Congestion, the deadly flu... You@are stuck here! Your whole case@sinks slowly beneath the water$", - "TBT - The water is rising fast,freezing your last illusions. Before you@have time to react...you are dead$", - "TBT - As soon as you reach the bottom of the well, a hand cuts the rope@Farewell sweet life!$", - "TBT - The storm covers your footprints.A wall of silence falls heavily@on your shoulders. Slowly you succumb to frosbite...$", - "TBT - You're not completely alone! A cold blade plunges into your backup@In future, be more care!$", - "TBT - You don't know what implication Leo may have had in Murielle's@death. Was she dead outright? In@any case,the family problems thatyou have uncovered in the course@of your enquiries would explain Leo's behaviour. You're not sure@that's the reason Julia had asked@for your help, but that's reason enough for you!Out of respect for@her, after taking certain precau-@tions you have a revealing talk with Leo.$", - "TBT - $", - "TBT - You don't have the keys to the manor. Your cries rest unheard@You're going to catch... your death!$", - "TBT - With a circular movement, the sword slices across you. Guts and@intestines spill out all over. A sorry state of affairs!$", - "TBT - Home, Sweet home !$", - "TBT - The mystery behind a closed door$", - "TBT - Bewitching charm of these old rooms$", - "TBT - An empty stomach$", - "TBT - Closer to heaven? Not so sure$", - "TBT - Afraid of the dark?$", - "TBT - Old rugs and a glint of gold$", - "TBT - Anguish!$", - "TBT - Safe? Perhaps not!$", - "TBT - A little ill at ease, eh!?$", - "TBT - Always further$", - "TBT - Your way of the cross!$", - "TBT - On the trail of...$", - "TBT - Watch what's hiding$", - "TBT - The road down to hell$", - "TBT - Feeling well? You look a little pale$", - "TBT - What lurks behind...?$", - "TBT - Close-up on:$", - "TBT - You notice, amongst other things$", - "TBT - And...$", - "TBT - That's all!$", - "TBT - A bit of reading$", - "TBT - The adventure awaits, you set off!$", - "TBT - Don't mess up YOUR next ADVENTURE!$", - "TBT - I don't understand$", - "TBT - There is an easier way$", - "TBT - No, not just now$", - "TBT - Too late$", - "TBT - $", - "TBT - Like a deep stony stare, a solitary eye that points towards the@stars; the artery that links hea-ven and hell. You must fathom@these depths keeping hold of that@which is, and will become. Monday, Tuesday, Wednesday, Sunday, from@Monday 1st to Sunday 1st,plunging from one day to the next your@\"IS\" or \"WILL BECOME\". Carrying your burden with love and light,@the smallest oversight will seal your fate.$", - "TBT - 10/1/51: We think we've solved the mystery of the manuscript and@located the crypt. Is it the idea@of success in what seems like a dream that disturbs me so? I feel@I have committed myself rather too much, as far as Leo is concer@ned... No! I should go on. @I should have put Guy in the pic-ture but for a week now, I've had@no news of him$", - "TBT - Take your prayers as you would to the holy place. From the pillar@of wisdom, bring the sun to his@knees. Thus will it show you the place to offer alms of another@kind and like young Arthur, open the way of darkness.White is your@colour, golden your hearth. So@advance with caution Orpheus and light your way unto the sad@virgin. Offer her the circle of the man with three faces. That he@may regain the world and turn with it to its original@inglory!$", - "TBT - The mountains are the fangs in a monstrous mouth opening on the@finity of a celestial orgy, grin-ding the stars as we grind our@teeth into dust. You will drop your chord of stone at your feet.@The laugh of silence at the@highest pitch, and in your right hand, the measure of genius. Thus@will you pass between the two crescents beyond the abyss of the@wall of silence. The key to the melody is within your grasp. It@suffices to find the note that clashes.$", - "TBT - 9/12 INTER. 518 3/13 EXPENS. 23@ 9/12 SALES 1203 7/12 CHEQUE 1598@ TOTAL 1721 TOTAL 1721$", - "TBT - 5/1/51@@ Luc, my love@ Guy knows about us. After an argument I told him everything! I@think only of you. Max keeps pes-tering me, but it's finished with @him. He should stick to his pots and pans! When can you and I be alone together? For you I would@get a divorce.@I love you.@ Eva$", - "TBT - Mortville, 10/2/51@@ Pat@ I recall you owe me 50000 frs that I lent you for your business@I need that money, can you repay me quickly?@ Guy$", - "TBT - Mortville, 15/2/51@ Dear Sir@ I am writing to you on the sub-ject of our business deal. I have@decided to go all the way in the certainty that my partner, Pat@DEFRANCK, has been forging the accounts. @In spite of$", - "TBT - A pipe$", - "TBT - A pen$", - "TBT - A lighter$", - "TBT - A retort$", - "TBT - A shaving brush$", - "TBT - A tin of paint$", - "TBT - A flute$", - "TBT - An expensive ring$", - "TBT - A reel of thread$", - "TBT - An old book$", - "TBT - A wallet$", - "TBT - A dagger$", - "TBT - A pistol$", - "TBT - A bible$", - "TBT - A candle$", - "TBT - A jewellery box$", - "TBT - An iron$", - "TBT - A photo$", - "TBT - A pocket watch$", - "TBT - A rope$", - "TBT - Keys$", - "TBT - A pearl necklace$", - "TBT - A bottle of perfume$", - "TBT - Binoculars$", - "TBT - Glasses$", - "TBT - A leather purse$", - "TBT - A tennis ball$", - "TBT - Ammunition$", - "TBT - A cut-throat razor$", - "TBT - A hairbrush$", - "TBT - A clothes brush$", - "TBT - A pack of cards$", - "TBT - A shoe horn$", - "TBT - A screwdriver$", - "TBT - A hammer$", - "TBT - Keys$", - "TBT - Keys$", - "TBT - An ashtray$", - "TBT - A paintbrush$", - "TBT - A rope$", - "TBT - A wooden object$", - "TBT - Sleeping pills$", - "TBT - A gold ring$", - "TBT - A jewellery box$", - "TBT - An alarm clock$", - "TBT - A coat of armour$", - "TBT - A candlestick$", - "TBT - A pair of gloves$", - "TBT - A engraved goblet$", - "TBT - A parchment$", - "TBT - A dagger$", - "TBT - A dossier$", - "TBT - A parchment$", - "TBT - A parchment$", - "TBT - A dossier$", - "TBT - A dossier$", - "TBT - A letter$", - "TBT - A novel$", - "TBT - A wooden rod$", - "TBT - An envelope$", - "TBT - A letter$", - "TBT - An envelope$", - "TBT - Julia$", - "TBT - Julia's death$", - "TBT - Julia's relationships$", - "TBT - A message from Julia$", - "TBT - Julia's inheritance$", - "TBT - Julia's final actions$", - "TBT - Julia's gifts$", - "TBT - Julia's bedroom$", - "TBT - The photo at Julia's home$", - "TBT - Julia and yourself...$", - "TBT - L‚o's occupations$", - "TBT - Pat's occupations$", - "TBT - Guy's occupations$", - "TBT - Bob's occupations$", - "TBT - Eva's occupations$", - "TBT - Luc's occupations$", - "TBT - Ida's occupations$", - "TBT - Max's occupations$", - "TBT - Your occupations$", - "TBT - L‚o's relationships$", - "TBT - Pat's relationships$", - "TBT - Guy's relationships$", - "TBT - Bob's relationships$", - "TBT - Eva's relationships$", - "TBT - Luc's relationships$", - "TBT - Ida's relationships$", - "TBT - Max's relationships$", - "TBT - Your relationships$", - "TBT - Murielle$", - "TBT - Murielle's relationships$", - "TBT - Murielle and yourself...$", - "TBT - Murielle's disappearance$", - "TBT - The wall of silence$", - "TBT - The manuscripts$", - "TBT - The coat of arms$", - "TBT - Engravings in the cellar$", - "TBT - The well$", - "TBT - The secret passages$", - "TBT - The chapel$", - "TBT - The paintings$", - "TBT - The photo of the attic$", - "TBT - The body in the crypt$", - "TBT - $", - "TBT - $", - "TBT - END OF THE CONVERSATION$", - "TBT - Les vieux appelaient ainsi la chaine de montagne qui se dresse au pied du manoir !$", - "TBT - C'est le massif montagneux que l'on aper‡oit devant le manoir$", - "TBT - Je n'en sais rien !$", - "TBT - Elle est morte d'une embolie pulmonaire$", - "TBT - Ma m‚re est morte soudainement . Son ‚tat semblait pourtant s'tre am‚lior‚$", - "TBT - Madame DEFRANCK est morte d'un coup de froid$", - "TBT - Elle est morte d'une embolie pulmonaire$", - "TBT - Pardonnez moi mais je pr‚fŠre, actuellement garder le silence$", - "TBT - Ce sont toujours les meilleurs qui partent les premiers$", - "TBT - J'aimais beaucoup ma mŠre . Je regrette seulement qu'elle soit morte dans le manoir des DEFRANCK$", - "TBT - C'est une r‚gion qui a un pass‚ charg‚ et j'ai largement de quoi m'occuper . Et puis j'aime beaucoup les chevaux..$", - "TBT - C'est un passionn‚ d'histoire et un joueur inv‚t‚r‚ . D'ailleurs, voici un an il a gagn‚ une grosse somme$", - "TBT - Il a d‚j… beaucoup a faire avec la gestion et l'entretien du manoir ...$", - "TBT - Je suis PDG d'une petite soci‚t‚ de parfums . Mais quand je suis ici, je me repose$", - "TBT - C'est un homme dynamique qui a r‚ussi dans le parfum$", - "TBT - Lui ! C'est un arriviste v‚reux ! Les parfums ont du endormir son bon sens . D'ailleurs ici il passe ses soir‚es dans sa chambre$", - "TBT - J'ai ‚t‚ trŠs pr‚occup‚ par la sant‚ de ma mŠre, et maintenant je n'ai plus go–t … rien$", - "TBT - Il aurait mieux fait de s'occuper un peu plus de moi et un peu moins de sa mŠre$", - "TBT - Ce sont ses affaires ...$", - "TBT - Il n'a pas trop de chance en ce moment bien que ses affaires soient satisfaisantes$", - "TBT - Je travaille avec Pat mais ‡a ne va pas trŠs fort en ce moment$", - "TBT - Ah oui ?! Il a des occupations ? Il ferait bien de s'en occuper s‚rieusement alors$", - "TBT - Lui et Pat sont associ‚s . Je crois que ‡a ne va pas trop mal$", - "TBT - Je m'occupe de moi et c'est d‚j… beaucoup . Et vous ?$", - "TBT - Oh ‡a ! Je lui fais confiance . Elle sait s'occuper$", - "TBT - Mais ! Vous n'avez pas encore d‚couvert son occupation principale ..?$", - "TBT - Elle fait dans la d‚coration avec beaucoup dego–t d'ailleurs . Elle est toujours trŠs bien habill‚e$", - "TBT - Si les bijoux vous interessent, j'ai quelques affaires interessantes … saisir rapidement$", - "TBT - Les bijoux ...$", - "TBT - Je ne sais pas, mais j'aimerais bien qu'il s'occupe un peu moins de mes affaires !$", - "TBT - Quand on est une femme d'int‚rieur on trouve toujours de quoi s'occuper...$", - "TBT - Elle pourrait rester sans rien faire, mais non ! Elle coud, elle lit ...$", - "TBT - Elle n'a s–rement pas des occupations trŠs ‚panouissantes ...$", - "TBT - Une femme comme il n'y en a plus : Elle s'interesse a tout !$", - "TBT - Entre la cuisine et le m‚nage, je n'ai pas beaucoup de temps … vous accorder$", - "TBT - Je ne sais pas comment il s'y prend pour tout faire . C'est merveilleux !$", - "TBT - Il en ferait plus si il s'occupait moins des rag“ts et de la bouteille$", - "TBT - Je suis trŠs ind‚pendant . Tant qu'on ne s'occupe pas de mes affaires : Pas de problŠme$", - "TBT - C'est un ‚go‹ste . Je me demande si il aime autre chose que ses chevaux et ses grimoires$", - "TBT - Je crois qu'il s'entend bien avec tout le monde, mis … part, peut tre, avec Guy$", - "TBT - C'est un homme de caractŠre . Il faut savoir le prendre ..$", - "TBT - Les affaires sont les affaires . Quant … la famille, je la laisse pour ce qu'elle est ...$", - "TBT - Relations ? Relations amicales ? Relations financiŠres sans doute$", - "TBT - Moi je n'ai rien … lui reprocher$", - "TBT - C'est un homme d'affaire d‚brouillard . Il nage parfois … contre-courant mais ... il s'en sortira toujours$", - "TBT - Ils m'ennuient tous .. Non ! Ce n'est mme pas ‡a .. Quoique .. certains ..$", - "TBT - A l'inverse de sa mŠre, c'est une personne trŠs renferm‚e ! Alors question relations ..$", - "TBT - Il doit sans doute faire beaucoup d'effort pour rester agr‚able malgr‚ tous ses ennuis$", - "TBT - Ses relations amoureuses : C'est termin‚ . Ses relations avec moi : Pas vraiment commenc‚es . Quant aux autres : Je ne suis pas les \"autres\"$", - "TBT - J'aime bien tout le monde, tant qu'on ne m'escroque pas$", - "TBT - Il ne suffit pas d'avoir un peu d'argent et d'tre beau parleur pour plaire … tout le monde$", - "TBT - Sans histoire .. C'est quelqu'un d'agr‚able et g‚n‚reux . De plus, il ne manque pas d'humour$", - "TBT - Actuellement je m'entends plut“t bien avec tout le monde . Mais, ici, je ne vais pas m'‚tendre sur le sujet$", - "TBT - Beau plumage, mais ‡a ne vole pas haut ... Parlez en … son mari$", - "TBT - C'est pour un rendez-vous ?$", - "TBT - Elle est trŠs vivante ! Elle ne s'embarrasse pas de pr‚jug‚s stupides$", - "TBT - Dans mon m‚tier, on c“toit surtout des belles femmes et des truands$", - "TBT - La seule valeur s–re chez lui, c'est ses bijoux .. Et sa femme, mais ‡a il ne s'en rend pas compte$", - "TBT - C'est quelqu'un d'interessant . De pas toujours facile … comprendre, mais qui m‚rite le d‚tour$", - "TBT - Je ne d‚teste personne, mais j'aime les choses et les gens quand ils sont … leur place$", - "TBT - C'est entre nous . Mais voyez : quand je parle avec elle, je me sens vite … l'‚troit !$", - "TBT - Pour ne pas s'entendre avec elle, faut y mettre de la mauvaise volont‚$", - "TBT - Vous savez dans mon m‚tier on entend tout mais on ne retient rien, et le service est bien fait$", - "TBT - C'est un hypocrite, un larbin ! Personnellement je ne lui fais pas confiance$", - "TBT - Je ne connait pas le fond de sa pens‚e mais c'est quelqu'un de toujours trŠs correct et impeccable$", - "TBT - C'‚tait une personne qui a v‚cu au manoir, il y a un an .. peut tre plus$", - "TBT - C'‚tait plus qu'une amie pour ma mŠre . En ces moments, j'aurais aim‚ qu'elle soit … mes cot‚s$", - "TBT - Murielle a ‚t‚ la dame de compagnie de Julia$", - "TBT - Elle aussi, faisait des recherches ...$", - "TBT - C'‚tait une femme trŠs cultiv‚e . Son brusque d‚part, il y a un an, m'a surpris et beaucoup chagrin‚$", - "TBT - Elle partageait avec L‚o sa passion de l'histoire et de la r‚gion$", - "TBT - Je crois que tout le monde l'aimait bien$", - "TBT - Elle s'entendait bien avec tout le monde . Elle aimait beaucoup son fils . Quant aux relations belle-mŠre, belle-fille ..$", - "TBT - A part L‚o, elle avait de trŠs bon rapport avec Max ...$", - "TBT - Bien que vos relations furent peu soutenues, J‚r“me, elle vous portait toujours dans son coeur ...$", - "TBT - A part sa famille, pas grand monde$", - "TBT - Ah oui ! Je crois qu'elle a beaucoup regrett‚ le d‚part de cette amie .. euh ! Marielle .. ou Mireille ...$", - "TBT - Non rien !$", - "TBT - Non ... Pas que le sache$", - "TBT - J'ai connu Julia en achetant le manoir . C'‚tait son seul bien . Mais toute ma fortune ‚tait la sienne ...$", - "TBT - Si ce n'est quelques objets personnels, je crois qu'elle n'avait plus rien … elle$", - "TBT - Je crois que toute sa fortune venait de L‚o . Alors, Pfuuut !$", - "TBT - A part la lettre pour vous que j'ai post‚, rien de bien important !$", - "TBT - J'ai ‚t‚ trŠs heureuse qu'elle m'offre sa bible reli‚e$", - "TBT - Ca a ‚t‚ rapide et elle n'a pas eu le temps de prendre des dispositions particuliŠres$", - "TBT - Son dernier pr‚sent m'a surpris$", - "TBT - Quel cadeau ?$", - "TBT - Un chandellier ...$", - "TBT - Oui, j'ai eu un cadeau . Ma femme a mme eu une bible$", - "TBT - Et bien oui ! Comme tout le monde, je crois$", - "TBT - Un poignard$", - "TBT - Je n'ai jamais ‚t‚ fouiller dans le grenier !$", - "TBT - Vous avez un don de double-vue ou un passe-partout$", - "TBT - Le portrait d'une jeune fille : C'est Murielle ...$", - "TBT - Vous savez, je la connaissais assez peu$", - "TBT - Elle ‚tait trŠs charmante, mais c'‚tait surtout la dame de compagnie de Julia$", - "TBT - C'est la seule femme vraiment interessante que j'ai rencontr‚$", - "TBT - Elle avait de grandes connaissances historiques, et la consulter ‚tait trŠs enrichissant$", - "TBT - Je me suis toujours demand‚ ce que certains pouvaient lui trouver !$", - "TBT - Si la chambre est ferm‚e, demandez … L‚o$", - "TBT - J'ai ferm‚ sa chambre aprŠs sa mort et j'aimerais qu'il en soit ainsi encore un certain temps$", - "TBT - Vous savez ce que c'est : Des relations familiales$", - "TBT - Durant toutes ces ann‚es, je ne l'ai jamais servie … contre-coeur$", - "TBT - Je l'aimais autant qu'elle m'aimais, je crois$", - "TBT - De quel droit avez-vous p‚n‚tr‚ dans la chambre de ma femme ?!!$", - "TBT - C'est sans doute la photo de Murielle avec le filleul de Julia$", - "TBT - Je ne me rappelle pas$", - "TBT - C'est Murielle . C'est moi qui l'ai prise. et d'ailleurs elle est tir‚e … l'envers$", - "TBT - Vous tes bien curieux !... C'est sans valeur$", - "TBT - Grimoires, parchemins et manuscrits : C'est le domaine de L‚o$", - "TBT - Dommage que la devise soit manquante ...$", - "TBT - C'est trŠs beau ... Et trŠs vieux ...$", - "TBT - Tiens ! C'est un endroit que je n'ai jamais visit‚$", - "TBT - D'apr‚s L‚o, il semblerait que les Lunes soient plus r‚centes$", - "TBT - Mme par ce temps, vous avez d‚nich‚ un soleil ...$", - "TBT - Profond et inqui‚tant : Le progrŠs a du bon$", - "TBT - Ca reste pour moi le plus grand des mystŠres$", - "TBT - Les derniers temps elle parlait d'un voyage . Et puis ...$", - "TBT - Il y a un peu plus d'un an, un soir, elle a d‚cid‚ de partir ...$", - "TBT - De toutes fa‡ons elle n'‚tait pas faite pour vivre ici$", - "TBT - Quoi ?! Quel corps ? Quel crypte ?$", - "TBT - Si il y en a, je ne les ai jamais trouv‚ ...$", - "TBT - Bien s–r ! ... Et des fant“mes aussi ...$", - "TBT - C'est la plus vielle de la r‚gion : Elle date du XI eme siŠcle$", - "TBT - Elle fut l‚gŠrement restaur‚e aprŠs la r‚volution$", - "TBT - Julia aimait beaucoup la peinture$", - "TBT - Ils ont diff‚rents styles, mais n'ont pas tous une trŠs grande valeur$", - "TBT - Que faites-vous l… ?$", - "TBT - Je suis s–r que vous cherchez quelque chose ici$", - "TBT - Je vous ‚coute$", - "TBT - Que d‚sirez-vous ?$", - "TBT - Oui ?$", - "TBT - Je suis … vous ...$", - "TBT - C'est pourquoi ?$", - "TBT - Allez-y$", - "TBT - C'est … quel sujet ?$", - "TBT - Max : … votre service, monsieur$", - "TBT - De toutes fa‡ons vous n'avez rien … faire ici ! Sortez !!$", - "TBT - Vous tes trop curieux !$", - "TBT - J‚r“me ! Il y a longtemps ... Quelle tristesse, Julia est morte . Sa famille est ici : Guy, son fils . Eva, sa brue . L‚o, son mari bien s–r . Son beau fils, Pat . Des cousins : Bob, Ida, Luc . La tempŠte redouble, il vous faut rester . Les repas sont … 12h et 19h et il y a un recueillement … la chapelle tous les jours … 10h$", - "TBT - En vous voyant j'ai compris que vous decouvririez la v‚rit‚ ... Car je savais pourquoi vous veniez : J'avais retrouv‚ le brouillon de la lettre de Julia . Mais je suis trŠs joueur, alors ... Elle n'avait pas voulu que votre tche soit trop facile, pour me prot‚ger, sans doute, mais elle n'a pu mourir avec cette incertitude sur la conscience . Avez vous d‚couvert que le mur du silence est le nom que les ma‡ons ont donn‚ au mur qui porte ce blason, lors de la construction du manoir ? .. Et ces cadeaux que Julia a laiss‚ avant de mourir ‚taient autant de faux indices qui ne servaient qu'… faire ressortir l'importance des parchemins ... Effectivement, il y a plus d'un an, je travailais avec Murielle au d‚cryptage de ces manuscrits que je venais de trouver . Ma femme a fait la relation entre notre travail et la disparition de Murielle mais elle n'a jamais eu de preuves . Si ce n'est cette bague qu'elle a retrouv‚ un jour dans mes affaires . Une nuit, nous nous sommes aventur‚s dans le passage secret que nous avions d‚couvert . Murielle est morte par accident dans la piŠce de la vierge . J'ai r‚cup‚r‚ la bague rapidement, trouv‚ le tr‚sor et me suis enfuis . Je ne pensais pas qu'elle vivait encore, et je n'ai rien dit car j'avais besoin d'argent . J'ai fait passer cette somme sur le compte des courses de chevaux ...Partez maintenant, puisque vous n'tes pas de la police . Laissez moi seul !$", - "TBT - F‚vrier 1951 ... Profession : detective priv‚ . Le froid figeait Paris et mes affaires lorsque ...$", - "TBT - Une lettre, un appel, des souvenirs d'une enfance encore proche . Que de jeux dans les piŠces d‚labr‚es du manoir de Mortevielle . Julia, une vieille femme a pr‚sent .$", - "TBT - to the office$", - "TBT - to the kitchen$", - "TBT - to the cellar$", - "TBT - to the landing$", - "TBT - outside$", - "TBT - to the dining room$", - "TBT - inside the manor$", - "TBT - front of the manor$", - "TBT - to the chapel$", - "TBT - to the well$", - "TBT - north$", - "TBT - behind the manor$", - "TBT - south$", - "TBT - east$", - "TBT - west$", - "TBT - towards the manor$", - "TBT - further$", - "TBT - in the water$", - "TBT - out of the well$", - "TBT - in the well$", - "TBT - choice on screen$", - "TBT - In the MYSTERY series...$", - "TBT - MORTVILLE MANOR$", - "TBT - $", - "TBT - From an original idea of...$", - "TBT - Bernard GRELAUD and Bruno GOURIER$", - "TBT - $", - "TBT - Directed by: KYILKHOR CREATION and LANGLOIS$", - "TBT - $", - "TBT - With the cooperation of...$", - "TBT - B‚atrice et Jean_Luc LANGLOIS$", - "TBT - for the music and the voices,$", - "TBT - Bernard GRELAUD for the graphic conception,$", - "TBT - MARIA-DOLORES for the graphic direction,$", - "TBT - Bruno GOURIER for the technical direction,$", - "TBT - Mick ANDON for the translation. $", - "TBT - $", - "TBT - Publisher: KYILKHOR and B&JL LANGLOIS $", - "TBT - COPYRIGHT 1987: KYILKHOR and B&JL LANGLOIS$", - "TBT - $", - "TBT - YOUR MOVE$", - "TBT - attach$", - "TBT - wait$", - "TBT - force$", - "TBT - sleep$", - "TBT - listen$", - "TBT - enter$", - "TBT - close$", - "TBT - search$", - "TBT - knock$", - "TBT - scratch$", - "TBT - read$", - "TBT - eat$", - "TBT - place$", - "TBT - open$", - "TBT - take$", - "TBT - look$", - "TBT - smell$", - "TBT - sound$", - "TBT - leave$", - "TBT - lift$", - "TBT - turn$", - "TBT - hide yourself$", - "TBT - search$", - "TBT - read$", - "TBT - put$", - "TBT - look$", - "TBT - Leo$", - "TBT - Pat$", - "TBT - Guy$", - "TBT - Eva$", - "TBT - Bob$", - "TBT - Luc$", - "TBT - Ida$", - "TBT - Max$", - "TBT - JULIA...$", - "TBT - - Did she commit suicide?$", - "TBT - - Was she murdered?$", - "TBT - - Did she die by accident?$", - "TBT - - Did she die of natural causes?$", - "TBT - Where did the money used@for the restoration of the manor come from?$", - "TBT - - Blackmail$", - "TBT - - Honest work$", - "TBT - - Inheritance$", - "TBT - - Races$", - "TBT - - Rents$", - "TBT - - Hold-up$", - "TBT - - Other$", - "TBT - What is Leo's hobby?$", - "TBT - - Historical research$", - "TBT - - Politics$", - "TBT - - Painting$", - "TBT - - Drugs$", - "TBT - - Occult sciences$", - "TBT - - Management of a sect$", - "TBT - Julia left several clues that are@represented in one place. Which?$", - "TBT - - Chapel$", - "TBT - - Outside$", - "TBT - - Cellar$", - "TBT - - Attic$", - "TBT - - Kitchen$", - "TBT - - Dining room$", - "TBT - - Julia's room$", - "TBT - - Leo's room$", - "TBT - - Pat's room$", - "TBT - - Bob's room$", - "TBT - - Max's room$", - "TBT - - Luc/Ida's room$", - "TBT - - Guy/Eva's room$", - "TBT - The main clue that leads you@to the underground door is:$", - "TBT - - A dagger$", - "TBT - - A ring$", - "TBT - - A book$", - "TBT - - A parchment$", - "TBT - - A letter$", - "TBT - - A pendulum$", - "TBT - How many parchments were there in the manor?$", - "TBT - - 0$", - "TBT - - 1$", - "TBT - - 2$", - "TBT - - 3$", - "TBT - - 4$", - "TBT - - 5$", - "TBT - How many persons are involved in@this story?@(Julia included, but not yourself)$", - "TBT - - 9$", - "TBT - - 10$", - "TBT - - 11$", - "TBT - What was the first name@of the unknown character?$", - "TBT - - Mireille$", - "TBT - - Fran‡oise$", - "TBT - - Maguy$", - "TBT - - Emilie$", - "TBT - - Murielle$", - "TBT - - Sophie$", - "TBT - Wo did Murielle have an affair with?$", - "TBT - - Bob$", - "TBT - - Luc$", - "TBT - - Guy$", - "TBT - - Leo$", - "TBT - - Max$", - "TBT - Murielle shared an occupation@with one other person. Who?$", - "TBT - [1][You realize that certain elements of|this investigation remain a mystery for you.|Therefore, you decide first to learn|more before undertaking new risks..][ok]$", - "TBT - [3][ | insert disk 1 | in drive A ][ok]$", - "TBT - [1][ | Disk error | All stop... ][ok]$", - "TBT - [1][ | You should have noticed |00% of the clues ][ok]$", - "TBT - [3][ | insert disk 2 | in drive A ][ok]$", - "TBT - [1][ |Avant d'aller plus loin, vous faites|un point sur l'‚tat de vos connaissances][ok]$", - "TBT - MASTER .$", - "TBT - rorL$", + "Ruhe vor dem Sturm$", + "Geschmacklose Farben$", + "Lila, der letzte Versuch$", + "Diesen Ort bitte sauberhalten...$", + "Beaengstigendes schwarzes Loch$", + "Der blaue Salon$", + "Das blutrote Zimmer$", + "Wassersport$", + "Der gruene Star$", + "Ein Auge aufs Verbotene werfen$", + "Geruch von Kaminfeuer und Tabak$", + "Tabak und alte Buecher$", + "Zwiebeln, Zimt und Spirituosen$", + "Ein wenig besuchter Ort$", + "Feuchtigkeit und Moder$", + "Hausieren verboten!$", + "Ein verwester Koerper: toedliche Kryptomanie!$", + "Da wird einem angst$", + "Es ist schon offen$", + "Achtung: Lawinen$", + "Ein Hauch von \"Heiligkeit\"$", + "Eine grosses eindrucksvolles Gemaeuer...$", + "Die Kehrseite des Geheimnisses!$", + "Ein merkwuerdiges Horoskop!$", + "Der Krug geht so lange...$", + "Eine Eichentuer$", + "Ein Foto$", + "Die Wappen$", + "$", + "Max, der Diener, empfaengt Sie und wird Sie dann in Ihr Zimmer begleiten$", + " Morteville 16/2/51@ Mein lieber Jer“me@Im Anschluss an mein Telegramm teile ich Ihnen die Gruende meiner Unruhe mit: vor 1 Jahr verschwand meine Gesellschafterin Murielle. Eventuell hat das Verschwinden etwas mit dem finanziel len Umschwung auf dem Landsitz zu tun, oder... Eine Stille, die schwer zu verstehen ist fuer mei-nen Sohn Guy. Da ich bis heute nichts bezueglich dieser Sache unternehmen konnte, zaehle ich auf Sie, um die Affaere zu regeln. Falls sich mein Gesundheitszustand nicht bessert, treffen Sie bitte die Entscheidungen, die Sie fuer richtig halten. @ In Freundschaft. JULIA DEFRANCK$", + "Spaeter erzaehlt Ihnen Guy von Leo's Selbstmord nach einer verrueckten Wette beim Rennen!$", + "F3: WIEDERHOLUNG@F8: STOP$", + "Der Hausherr$", + "Der Zukuenftige Erbe$", + "Julias Sohn$", + "Ein niedliches Maedchen!$", + "Superman!$", + "Der Mann von Ida$", + "Interessante Aeusserungen?$", + "Service inbegriffen!$", + "Nichts darunter!$", + "Kein Mucks...$", + "Eine halbe Stunde spaeter: nichts! Warten Sie immer noch?$", + "Bewundern Sie! Denken Sie nach!$", + "Nein! Nichts!$", + "Unmoeglich$", + "Das macht Flecken!$", + "Eine Abhandlung ueber die Geschichte der Gegend$", + "Einige Muenzen$", + "Erstes Gebot...$", + "Das riecht gut!$", + "Pik, Herz...$", + "Es mangelt nicht an Pillen!$", + "Ein Liebesroman$", + "Pusten heisst noch nicht spielen$", + "Kein Erfolg!$", + "Vorsicht vor Ueberraschungen!$", + "Dunkel und tief...$", + "Normale Gefuehle$", + "Sniff!$", + "Unverschaemt! Begnuegen Sie sich mit anschauen!$", + "Gesundheit! St... Staub$", + "Das Bild ist unterzeichnet... aber nicht die Tapeten$", + "Kein Glueck, Nichts!$", + "Seien Sie diskreter!$", + "Die Vorhaenge sind geschlossen$", + "Schnee! Und noch mehr Schnee!$", + "Genial: ein Bild vom Meister!$", + "Kein Zweifel, das ist eine Faelschung!$", + "Hum! Sie stutzen - Antikes oder Schund?$", + "Ein selten wertvolles Stueck!$", + "Nichts Bemerkenswertes$", + "Waesche, persoenliche Objekte...$", + "Nicht irgendwo!$", + "Das ist nicht der Zeitpunkt!$", + "Man spricht nicht mit vollem Mund! Nenn erst einmal das essen beendet ist$", + "Jemand kommt rein, beeilt sich und geht wieder raus$", + "Man naehert sich Ihrem Versteck!$", + "Man ueberrascht Sie!$", + "Unmoeglich! Sie sind ueberlastet!$", + "Versuchen Sie es aufs neue$", + "Sie sind perplex!?$", + "Sie verlassen Morteville. In Paris erwartet Sie eine Nachricht...$", + "Sie tun sich weh!$", + "Nichts weiteres mehr hier$", + "Der Ton erscheint normal$", + "Es bewegt sich nicht$", + "Man antwortet Ihnen$", + "Nicht der Augenblick!$", + "Gleiches Material, andere Seite!$", + "Der Widerschein ist fleckig, aber der Rahmen ist aus Gold$", + "Nippsachen, wertlose Dinge...$", + "Sie erleiden einen Misserfolg!$", + "Hier stinkt es... Besser nicht anschauen!$", + "Haushaltsprodukte$", + "Da juckt Ihnen das Fell?$", + "Das ist esklemmt, zugefroren! Brrrr...$", + "Die Fensterrahmen sind blockiert!$", + "Papiere...$", + "Nein! Der Weihnachtsmann hat keine Schwierigkeiten!$", + "Da geht es auf einen Flur$", + "Geschirr, Silber...$", + "Nein! Das sind nicht die Reste von Julia!$", + "Eine alte Gravur$", + "Sie entdecken eine tiefe rhombenfoermige Oeffnung$", + "Die Mauer gleitet zur Seite! Eine Passage! Benutzen Sie sie?$", + "Der Durchgang schliesst sich$", + "Eine Geheimschublade. Ein Buechlein... Lesen Sie es?$", + "Die Schublade schliesst sich wieder$", + "Nichts! Blut und Haut kleben am Stein!$", + "Die Details lassen Sie darauf schliessen, dass der Tod nicht unmitte lbar eingetreten ist!$", + "Verdorbene Vorhaben?$", + "Hing ihr Leben an einem \"Finger\"?$", + "Ein Schatz sei verschwunden?$", + "Eine Ritze in Groesse einer Muenze!$", + "Einige Steine bewegen sich... Eine Krypta! Gehen Siehinein?$", + "Der Ring dreht sich, die Mauer schliesst sich wieder$", + "Eine Steinsaeule hinter dem Altar$", + "Es war laut...$", + "Besetzt!$", + "Versuchen Sie noch einmal Ihr Glueck?$", + "Zu tief!$", + "Die Mauer am Ende des Ganges dreht sich$", + "Nothing!$", + "Der einzigue!$", + "Das Objekt faellt hinunter...$", + "Sie haben nichts in den Haenden$", + "Es ist nicht offen$", + "Das ist schon etwas$", + "Die Tuer ist zu$", + "Keine Antwort$", + "Eine volle Holzkugel$", + "Es ist kein Platz mehr$", + "Eine, in der Mitte durchbohrte, Holzkugel$", + "? ?$", + "Sie sind dran!$", + "OK!$", + "Ploetzlich erscheint Max mit Ihrem Koffer : \"Danke fuer Ihren Besuch\" Privatdetektiv mit gutem Gespuer und zweifellos diskret. Demoralisiert verlassen Sie den Landsitz. Sie sind UNBEDEUTEND!$", + "Leo unterbricht Sie:\"Das Unwetterhat sich beruhigt. In 1 Stunde gehe ich in die Stadt. Halten Siesich bereit.\" Sie haben Zeit verloren...aber noch nicht das Leben$", + "Hochrotes Gesicht, fatale Grippe.Sie bleiben da. Ihre Nachforschun gen fallen ins Wasser$", + "Das Wasser steigt sehr schnell und daempft Ihre letzten Illusionen ... Bevor Sie Zeit haben, zu reagiren, sind Sie tot!$", + "Sie sind kaum auf dem Grund des Brunnens, als eine Hand das Seil durchschneidet. Leben, adieu!$", + "Der Sturm verwischt Ihre Spuren. Eine Mauer des Schweigens huellt Sie ein. Langsam sterben Sie den Erfrierungstod!$", + "Sie sind nicht so allein wie Sie denken. Eine kalte Klinge bohrt sich in Ihren Ruecken. Seien Sie in Zukunft vorsichtiger!$", + "Sie ignorieren die Schuld von Leoam Tode Murielles. War sie sofort tot? Auf jeden Fall gerechtfertigen die familiaeren Probleme, die waehrend Ihrer Untersuchung aufgedeckt wurden, die Haltung Leos. Sie sind nicht sicher, ob Julia Sie deswegen angerufen hat, aber es genuegt Ihnen. Aus Respekt fuer sie und nach einigen Vorsichtsmassnahmen, fuehren Sie ein aufschlussreiches Gespraech mit Leo.$", + "$", + "Sie haben keinen Schluessel fuer den Landsitz. Ihre Rufe bleiben ohne Antwort. Sie werden sterben.$", + "Mit einem fuerchterlichen Rundschlag spaltet Sie das Schwert entzwei - das Innere kehrt sich nach aussen.$", + "Home, Sweet home!$", + "Geheimnis einer geschlossenen Tuer$", + "Charme verzaubert die alten Zimmer$", + "Leerer Magen$", + "Naeher 'gen Himmel? Nicht sicher!$", + "Angst vorm Dunkeln?$", + "Alte Teppiche und Goldschimmer$", + "Angst!$", + "Gerettet? Nicht sicher!$", + "Man fuehlt sich unwohl, was!$", + "Immer noch weiter!$", + "Ihr Kreuzweg!$", + "Bei der Entdeckung von...$", + "Achtung, auf das was sich versteckt...$", + "Abstieg in die Hoelle!$", + "Na fuehlen Sie sich gut? Sie sehen etwas@ blass aus!$", + "Vor dem Eintreten!$", + "Zoom:$", + "Unter anderem bemerken Sie...$", + "Und noch mal...$", + "Es ist zu Ende!$", + "Ein wenig Lektuere$", + "Das Abenteuer wartet auf Sie: also los!$", + "Verpassen Sie nicht IHR naechstes ABENTEUER!$", + "Ich verstehe nicht$", + "Es gibt Einfacheres$", + "Nein! Nicht Diesmal$", + "Zu spaet$", + "$", + "Wie ein tiefer verschleierter Blick, sein lebloses Auge auf die Sterne gerichtet, ist er wie der Schlund, der Himmel und Hoelle verbindet. Du musst in diese Tiefe vordringen, so wie eine Ratte in die Erde. Montag, Dienstag, Mittwoch, Sonntag, vom 1. Montag bis zum 1. Sonntag -so wird jeder Tag durch das SEIN oder WERDEN bestimmt. Vebersieh nichts, denn sonst ist Dein Schicksal besiegelt.$", + "10/1/50: Wir haben das Mysterium des Manuskriptes geloest und die Krypta lokalisiert. Ist es der Gedanke, in diesem Traum mein Ziel zu erreichen, der mir so angst macht? Ich bedauere, dass ich mich gegenueber Leo so engagiert habe. Nein, ich muss weitermachen Ich haette Guy informieren muessen, aber ich habe seit einer Woche nichts mehr von ihm gehoert$", + "Trag deine Bitte an den heiligen Ort - so wirst Du mehr erfahren! Der Pfeiler der Weisheit und die Sonne an den Knien werden Dir die Stelle zeigen , die Deiner Seele den Weg in eine neue Welt oeffnen Vorwaerts Orpheus, ohne Angst vordem Ungewissen: Weiss ist Deine Farbe, Gold ist Dein Zuhause. Be-leuchte Deinen Weg, bis hin zur traurigen Jungfrau. Gib ihr den Kreis des Mannes mit den drei Gesichtern, auf dass er die Welt wieder erreicht und sich dreht in seinem urspruenglichen Reichtum$", + "Die Berge sind die Zaehne eines gigantischen unendlichen Schlundes, einer himmlischen Orgie, die Sterne verschlingend, so wie uns die Dunkelheit verschlingt. Du laesst das Seil der Steine zu Dei nen Fuessen fallen. Das Lachen der Stille und in Deiner rechten Hand das Werk eines Meisters. Anschliessend wirst Du zwischen den beiden Monden hindurchgehen; jenseits des Abgrundes der Mauer des Schweigens wirst Du den Schluessel zur Melodie findenes fehlt nur noch die passende Note...$", + " DEZEMBER@ 9 ABZUG 518 13 ZINSEN 23@19 VEBERWE. 1203 17 GUTHAB 1598@ TOTAL 1721 TOTAL 1721@$", + " 5/01/51@ Luc, mein Liebling@ Guy weiss von unserer Beziehung.Nach einem Streit habe ich ihm alles gesagt. Ich liebe nur Dich. Max sitzt mir dauernd auf dem Hals, aber ich habe definitiv mitihm gebrochen. Soll er doch bei seinen Toepfen bleiben. Wann koennen wir uns allein sehen? Wegen dir wuerde ich mich scheiden lassen@ Deine Eva$", + " Morteville, 10/2/51@ Pat@ Ich erinnere Dich daran, dass Du mir noch FF 5000,- schuldest, die ich Dir fuer Dein Geschaeft geliehen habe. Ich brauche sie jetzt. Kannst Du sie mir bitte moeglichst schnell wiedergeben?@ Guy$", + " Morteville, 15/2/51@ Lieber Herr@ Ich schreibe Ihnen unser Geschaeft betreffend. Ich bin entschlossen, bis zum Aeusserstenzu gehen, da ich mir sicher bin, dass mein Teilhaber, Pat Defranck ein Rechnungsbuch gefaelscht hat.$", + "Eine Pfeife$", + "Ein Fuellfederhalter$", + "Ein Gasfeuerzeug$", + "Eine Retorte$", + "Ein Rasierpinsel$", + "Ein Farbeimer$", + "Eine Floete$", + "Ein wertvoller Ring$", + "Eine Garnrolle$", + "Ein altes Buch$", + "Ein Portemonnaie$", + "Ein Dolch$", + "Ein Revolver$", + "Eine Bibel$", + "Eine Kerze$", + "Ein Schmuckkoffer$", + "Ein Buegeleisen$", + "Ein Foto$", + "Eine Taschenuhr$", + "Ein Seil$", + "Schluessel$", + "Ein Perlenkollier$", + "Ein Parfumflakon$", + "Ein Fernglas$", + "Eine Brille$", + "Ein Ledergeldbeutel$", + "Ein Tennisball$", + "Munition$", + "Ein Nassrasierer$", + "Eine Haarbuerste$", + "Eine Kleiderbuerste$", + "Ein Kartenspiel$", + "Ein Schuhanzieher$", + "Ein Schraubenzieher$", + "Ein Hammer$", + "Schluessel$", + "Schluessel$", + "Ein Aschenbecher$", + "Ein Pinsel$", + "Ein Seil$", + "Ein Gegenstand aus Holz$", + "Schlafmittel$", + "Ein goldener Ring$", + "Ein Schmuckkoffer$", + "Ein Wecker$", + "Ein Panzerhemd$", + "Ein Kerzenhalter$", + "Ein Paar Handschuhe$", + "Ein Ziselierter Becher$", + "Ein Pergament$", + "Ein Dolch$", + "Ein Dossier$", + "Ein Pergament$", + "Ein Pergament$", + "Ein Dossier$", + "Ein Dossier$", + "Ein Brief$", + "Ein Roman$", + "Ein Holzstock$", + "Ein Umschlag$", + "Ein Brief$", + "Ein Umschlag$", + "Julia$", + "Julias Tod$", + "Julias Beziehungen$", + "eine Nachricht von Julia$", + "Julias Erbschaft$", + "letzte Handlungen Julias$", + "Geschenk von Julia$", + "Julias Zimmer$", + "die Fotos bei Julia$", + "Julia und Sie...$", + "die Geschaefte von Leo$", + "die Geschaefte von Pat$", + "die Geschaefte von Guy$", + "die Geschaefte von Bob$", + "die Geschaefte von Eva$", + "die Geschaefte von Luc$", + "die Geschaefte von Ida$", + "die Geschaefte von Max$", + "Ihre Geschaefte$", + "Leos Beziehungen$", + "Pats Beziehungen$", + "Guys Beziehungen$", + "Bobs Beziehungen$", + "Evas Beziehungen$", + "Lucs Beziehungen$", + "Idas Beziehungen$", + "Maxs Beziehungen$", + "Ihre Beziehungen$", + "Murielle$", + "Murielles Beziehungen$", + "Murielle und Sie...$", + "Murielles Vershwinden$", + "Die Mauer des Schweigens$", + "Die manuskripte$", + "Das Wappen$", + "Die Inschriften im Keller$", + "Der Brunnen$", + "Die Geheimgaenge$", + "Die Kapelle$", + "Die Bilder$", + "Die Fotos vom Dachboden$", + "Koerper in der Krypta$", + "$", + "$", + "ENDE DER UNTERHALTUNG$", + "Die Alten nannten die Bergkette am Fusse des Landsitzes so.$", + "Das ist das Bergmassiv, das man vor dem Landsitz sieht.$", + "Ich weiss nichts davon.$", + "Sie ist an einer Lungenembolie gestorben.$", + "Meine Mutter ist ploetzlich gestorben, obwohl es schien, dass sich ihr Zustand verbesserte.$", + "Frau Defranck ist gestorben.$", + "Sie ist an einer Lungenembolie gestorben.$", + "Verzeihen Sie mir, aber ich ziehe es vor, im Moment Schweigen zu bewahren.$", + "Es sind immer die Guten, die als erste gehen muessen.$", + "Ich habe meine Mutter sehr geliebt; ich bedauere, dass sie auf dem Gut der Defrancks gestorben ist.$", + "Dies ist eine Gegend, die eine sehr bewegte Vergangenheit hat und es gibt genug Dinge, um die ich mich kuemmern kann und ausserdem liebe ich Pferde.$", + "Er interessiert sich sehr fuer Geschichte und er ist ein erfolgloser Spieler. Uebrigens hat er vor einem Jahr eine bedeutende Summe gewonnen.$", + "Er hat schon viel zu tun mit der Buchhaltung und der Verwaltung des Gutes.$", + "Ich bin Direktor einer Parfumfirma. Aber hier... Erholung.$", + "Ein dymamischer Mann, der in der Parfumbranche viel erreicht hat.$", + "Das ist ein uebler Emporkoemmling. Die Parfums muessen seinen gesunden Menschenverstand eingeschlaefert haben. Hier verbringt er seine Abende in seinem Zimmer.$", + "Vorher galt meine Hauptsorge der Gesundheit meiner Mutter. Jetzt finde ich an nichts mehr Gefallen.$", + "Er haette gut daran getan, sich ein bisschen mehr um mich zu kuemmern und etwas weniger um seine Mutter.$", + "Das sind seine Angelegenheiten.$", + "Er hat nicht viel Glueck im Moment, obwohl seine Geschaefte zufriedenstellend sind.$", + "Ich arbeite mit Pat. Es geht nicht besonders gut im Moment.$", + "Ah ja! Hat er Beschaeftigungen? Er taete besser daran, sich ernsthaft zu beschaeftigen.$", + "Er und Pat sind Geschaeftspartner. Ich glaube, es laeuft gar nicht mal schlecht.$", + "Ich kuemmere mich um mich und das ist schon genug. Und Sie?$", + "Oh, ich vetraue ihr. Sie versteht, sich zu beschaeftigen.$", + "Aber haben Sie noch nicht ihre Hauptbeschaeftigung entdeckt?$", + "Sie arbeitet in der Dekoration mit sehr viel Geschmack. Ausserdem ist sie immer sehr gut angezogen.$", + "Interessiert sie der Schmuck. Ich habe ein Geschaeft vorzuschlagen.$", + "Der Schmuck...$", + "Ich weiss nicht, aber ich glaube, ich wuerde es vorziehen, wenn er sich ein bisschen weniger um meine Angelegenheiten kuemmern wuerde.$", + "Eine Hausfrau hat immer zu tun.$", + "Sie koennte auch ohne Arbeit auskommen. Aber nein, sie naeht, sie liest...$", + "Sie hat sicherlich keine sehr erheiternden Taetigkeiten.$", + "Eine aussergewoehnliche Frau. Sie interessiert sich fuer alles.$", + "Zwischen Kueche und Haushalt habe ich nicht viel Zeit fuer sie.$", + "Wie schafft er es nur, alles zu machen? Oh Wunder!$", + "Er taete gut daran, wenn er sich weniger mit Klatsch und der Flasche beschaeftigen wuerde.$", + "Ich bin sehr selbstaendig. Solange man sich nicht um meine Angelegenheiten kuemmert, gibt es keine Probleme.$", + "Er ist ein Egoist. Ich frage mich, ob es fuer ihn noch etwas anderes gibt, als seine Pferde und seine Maerchenbuecher.$", + "Er versteht sich gut mit allen, ausser vielleicht mit Guy.$", + "Er ist ein Mann mit Charakter. Man muss ihn zu nehmen wissen.$", + "Geschaeft ist Geschaeft. Was die Familie anbetrifft...$", + "Beziehungen? Freundschaften? Finanzen zweifellos.$", + "Ich habe ihm nichts vorzuwerfen.$", + "Er ist ein pfiffiger Geschaeftsmann. Manchmal schwimmt er gegen den Strom, aber er weiss sich immer zu helfen.$", + "Sie langweilen mich alle. Nein, obwohl... einige...$", + "Im Gegensatz zur Mutter ist es eine sehr verschlossene Person. Also Frage: Beziehung.$", + "Er muss sich zweifellos sehr anstrengen, um trotz seiner Sorgen freundlich zu bleiben.$", + "Seine Liebesaffairen? Aus und vorbei. Mit mir? Es hat nie richtig angefangen. Was die anderen betrifft... ich bin nicht \"die anderen\".$", + "Ich mag jeden, solange man mich nicht betruegt.$", + "Es reicht nicht, ein bisschen Geld zu haben und ein guter Redner zu sein, um bei allen beliebt zu sein.$", + "Jemand, der nett ist und ausserdem noch Humor hat.$", + "Ueber diese Sache kann ich mich nicht auslassen.$", + "Das ist nicht besonders intelligent. Sprechen Sie mit dem Ehemann darueber.$", + "Ist es wegen eines Rendez-vous?$", + "Sie ist sehr lebhaft. sie laesst sich nicht durch Vorurteile in Verwirrung brignen.$", + "In meinem Beruf ist man vor allem schoenen Frauen und Gaunern sehr nahe.$", + "Sein einziges Vermoegen sind sein Schmuck und seine Frau, aber er ist sich dessen nicht bewusst.$", + "Jemand interessantes, aber nicht immer leicht zu verstehen, der aber die Muehe wert ist.$", + "Ich verachte niemanden, aber ich mag es sehr, wenn alles und alle dort sind, wo sie hingehoeren.$", + "Unter uns.. sehen Sie, wenn ich mit ihr spreche, fuehle ich mich schnell beengt.$", + "Um sich nicht mit ihr zu verstehen, braucht man wirklich viel schlechten Willen.$", + "In meinem Beruf hoert man alles, aber behaelt nichts. Nur der Service zaehlt.$", + "Das ist ein Heuchler, ein Kriecher. Ich persoenlich habe kein Vertrauen zu Ihm.$", + "Ich kenne seine wahren Gedanken nicht, aber er war stets korrekt.$", + "Sie hat vor einem Jahr, vielleicht laenger, auf dem Landsitz gewohnt.$", + "Mehr als eine Freundin fuer meine Mutter. In solchen Augenblicken haette ich gewuenscht, dass sie da ist.$", + "Sie war die Hausdame von Julia.$", + "Sie hat ebenfalls Recherchen angestellt. Aber Guy, der sie besser kennt als jeder andere, kann Ihnen mehr sagen.$", + "Ihre Beziehungen?... Sie war sehr kultiviert. Ihr ploetzliches Verschwinden vor einem Jahr hat mich erstaunt.$", + "Sie teilte mit Leo ihre Leidenschaft fuer Geschichte und fuer die Gegend.$", + "Ich glaube, jeder hatte sie gern.$", + "Sie verstand sich mit allen gut, aber ganz besonders liebte sie ihren Sohn. Was die Beziehungen Schwiegermutter Scwiegertochter anbetrifft...$", + "Ausser zu Leo hatte sie auch gute Beziehungen zu Max.$", + "Obwohl ihre Beziehungen nicht von Dauer waren, lag ihr immer viel an ihnen.$", + "Ausser ihrer Familie, nicht viele.$", + "Aber ja. Sie hat das Weggehen dieser Freundin sehr bedauert. Eh, Mireille, oder Marielle.$", + "Nein, nichts.$", + "Nein, nicht das ich wuesste.$", + "Ich habe Julia kennengelernt, als ich das Landgut kaufte. Es war das einzige, was ihr gehoerte, aber mein Besitz war auch der ihre.$", + "Wenn nicht einige persoenliche Dinge gewesen waeren, ich glaube, dann haette sie nichts eigenes mehr gehabt.$", + "Ich glaube, all ihr Reichtum kam von Leo. Also!$", + "Ausser des Briefes, den ich fuer sie aufgegeben habe, nichts wichtiges.$", + "Ich war gluecklich, als sie mir ihre eingebundene Bibel schenkte.$", + "Es ging schnell und sie hatte nicht die Zeit, um spezielle Entscheidungen zu treffen.$", + "Ihr letztes Geschenk hat mich ueberrascht.$", + "Was fuer ein Geschenk?$", + "Ein Kerzenleuchter.$", + "Ja, ich habe ein Geschenk bekommen. Meine Frau hat sogar eine Bibel bekommen.$", + "Aber ja. wie jeder, glaube ich.$", + "Ein Dolch$", + "Ich habe nie den Dachboden durchwuehlt.$", + "Haben Sie die Gabe eines Hellsehers, oder haben Sie einen Dietrich?$", + "Das Portrait einer jungen Frau? Das ist Murielle.$", + "Ich kannte sie zu wenig.$", + "Sehr charmant. Sie war vor allem die Hausdame von Julia.$", + "Das war die einzige wirklich interessante Frau, die ich getroffen habe.$", + "Sie hatte ein grosses Wissen vorzuweisen. Sie zu besuchen, war stets sehr bereichernd.$", + "Ich habe mich immer gefragt, was manche an ihr fanden.$", + "Das Zimmer ist verschlossen? Fragen Sie Leo.$", + "Ich habe ihr Zimmer nach ihrem Tod abgeschlossen und ich moechte, dass das auch noch eine zeitlang so bleibt.$", + "Wissen Sie, was das sind? Familienbeziehungen.$", + "In all den Jahren habe ich sie niemals gegen meinen Willen bedient.$", + "Ich habe sie so sehr geliebt, wie sie mich, glaube ich.$", + "Mit welchem Recht sind Sie in das Zimmer meiner Frau eingedrungen?$", + "Zweifellos das Foto von Murielle mit dem Patenkind von Julia.$", + "Ich erinnere mich nicht.$", + "Das ist Murielle. Ich war es, der sie fotografiert hat. Uebrigens ist das Foto seitenverkehrt abgezogen.$", + "Sie sind wirklich neugierig. Das ist wertlos.$", + "Maerchen, Pergamente und Manuskripte das ist Leos Spezialitaet.$", + "Schade, dass die Losung fehlt.$", + "Das ist sehr schoen und sehr alt.$", + "Das ist ein Ort, den ich nie gesehen habe.$", + "Leos Meinung nach schien es, als seien die Monde spaeter gemacht worden.$", + "Mme par ce temps, vous avez d‚nich‚ un soleil ...$", + "Tief und beunruhigend. Der Fortschritt hat gutes an sich.$", + "Der Rest bleibt fuer mich eines der groessten Raetsel.$", + "In letzter Zeit sprach sie oft von einer Reise und dann...$", + "An einem Abend vor mehr als einem Jahr hat sie sich entschieden wegzugehen.$", + "Auf jeden Fall war sie fuer das Leben hier nicht geschaffen.$", + "Welcher Koerper? Welche Krypta?$", + "Wenn es sie ueberhaupt gibt, ich habe sie nie gefunden.$", + "Aber sicher! Und die Fantome auch.$", + "Es ist die aelteste der Stadt. Sie stammt aus dem 11. Jahrhundert.$", + "Nach der Revolution wurde sie leicht restauriert.$", + "Julia liebte die Malerei sehr.$", + "Sie haben verschiedene Stilrichtungen, aber sie haben nicht alle Wert.$", + "Was machen Sie da ?$", + "Ich bin sicher, Sie suchen etwas!$", + "Ich hoere.$", + "Was wuenschen Sie?$", + "Ja ?$", + "Ich stehe zu Ihrer Verfuegung.$", + "Weswegen?$", + "Na los doch!$", + "Wegen was?$", + "Max: Zu Ihren Diensten, Monsieur.$", + "Auf jeden Fall haben Sie hier nichts zu suchen! Gehen Sie raus!$", + "Sie sind zu neugierig!$", + "Jerome, es ist lange her. Wie traurig, Julia ist tot. Ihre Familie ist hier. Guy, ihr Sohn, und Eva, ihre Schwiegertochter. Leo, ihr Mann, sowie ihr Schwiegersohn Pat und die Cousins Bob, Ida und Luc. Das Unwetter verstaerkt sich. Sie muessen noch bleiben. Die Mahlzeiten sind um 12 Uhr und um 19 Uhr und es findet jeden Tag um 10 Uhr eine Andacht in der Kapelle statt.$", + "Als ich Sie sah, habe ich sofort begriffen, dass Sie die Wahrheit aufdecken wuerden, da ich wusste, warum Sie gekommen sind. Ich hatte den Entwurf von Julias Brief gefunden. Aber ich bin ein begeisterter Spieler, also.... Sie haette nicht gewollte, dass ihre Aufgabe zu leicht ausfaellt, zweifellos, um mich zu schuetzen, aber sie konnten nicht sterben mit dieser Ungewissheit.Haben Sie herausgefunden, dass die \"Mauer des Schweigens\" der Name ist, den die Maurer waehrend des Baus des Landsitzes der Mauer gegeben haben, die das Wappen traegt...? Und die Geschenke, die Julia vor ihrem Tod hinterlassen hat waren sowohl falsche Hinweise wie auch ein Mittel, um die Wichtigkeit der Pergamente herauszustellen. Tatsaechlich arbeitete ich vor mehr als einem Jahr mit Murielle an der Entzifferung dieser Pergamente, die ich gefunden hatte. Meine Frau sah einen Zusammenhang zwischen unserer Arbeit und dem Verschwinden Murielles,aber sie hat nie Beweise dafuer gehabt; wenn da nicht dieser Ring gewesen waere, den sie eines Tages unter meinen Sachen wiedergefunden hat. Eines nachts sind wir in dem Geheimgang, den wir entdeckt hatten,auf Erkundung gegangen. Murielle ist durch einen Unfall im \"Jungfrauenzimmer\" ums Leben gekommen. Ich habe ihren Ring schnell an mich genommen, habe den Schatz entdeckt und mich dann aus dem Staub gemacht. Ich dachte nicht daran, dass sie unter Umstaenden noch leben koennte, und ich habe nichts gesagt, da ich Geld brauchte. Ich habe das Geld beim Pferderennen verspielt. Gehen Sie jetzt, da sie ja nicht von der Polizei sind. Lassen Sie mich allein.$", + "Februar '51, Beruf: Privatdetektiv. Die Kaelte laesst Paris und meine Unternehmungen erstarren, als...$", + "Julia, heute eine alte Frau. Nichts als Erinnerungen und Spiele in den alten Zimmern des Landsitzes von Morteville.$", + "im Buero$", + "in der Kueche$", + "im Keller$", + "auf dem Flur$", + "draussen$", + "im Esszimmer$", + "im Landsitz$", + "vor dem Landsitz$", + "in der Kapelle$", + "vor dem Brunnen$", + "im Norden$", + "hinter dem Landsitz$", + "im Sueden$", + "im Osten$", + "im Westen$", + "in Richtung Landsitz$", + "noch weiter$", + "im Wasser$", + "ausser des Brunnens$", + "im Brunnen$", + "Wahl auf dem Bild$", + " In der Reihe RAETSEL...$", + " DER LANDSITZ VON MORTEVILLE$", + "$", + " Nach einer Idee von...$", + " Bernard GRELAUD und Bruno GOURIER$", + "$", + " Realisation: LANKHOR$", + "$", + " in Zusammenarbeit mit...$", + " Beatrice und Jean-Luc LANGLOIS Musik und Stimmen,$", + " Bernard GRELAUD graphische Gestaltung,$", + " Dominique SABLONS graphische Realisation ,$", + " Bruno GOURIER technische Realisation,$", + " Gabi NURGE Uebersetzung,$", + " Clement ROQUES IBM PC Realisation.$", + "$", + " Ausgabe: LANKHOR$", + " COPYRIGHT 1989: LANKHOR$", + "$", + " SIE SIND AM ZUG$", + "abkratzen$", + "anschauen$", + "ausgehen$", + "befestig.$", + "drehen$", + "durchsuch$", + "eindrueck$", + "eintreten$", + "essen$", + "fuehlen$", + "hochheben$", + "klopfen$", + "lesen$", + "nehmen$", + "oeffnen$", + "schlafen$", + "schliess.$", + "setzen$", + "sondieren$", + "warten$", + "zuhoeren$", + "anschauen$", + "durchsuch.$", + "hinlegen$", + "lesen$", + "s. verstec$", + "Leo$", + "Pat$", + "Guy$", + "Eva$", + "Bob$", + "Luc$", + "Ida$", + "Max$", + " JULIA$", + "hat sie Selbstmord begangen ?$", + "ist sie ermordet worden ?$", + "ist sie durch Unfall gestorben ?$", + "ist sie eines natuerlichen Todes gestorben ?$", + " Woher kam das Geld, das die restaurierung des landsitzes erlaubte ?$", + "Erpressung$", + "Arbeit$", + "Erbschaft$", + "Rennen$", + "Renten$", + "Raub$", + "Verschiedenes$", + " Was ist Leos Hobby ?$", + "Historische Recherchen$", + "Politik$", + "Malerei$", + "Drogen$", + "Okkultismus$", + "Fuehrung einer Sekte$", + " Julia Hat verschiedene Indizien hinterlassen. Diese befinden sich an einem einzigen Ort. Welchem ?$", + "Kapelle$", + "Draussen$", + "Keller$", + "Dachboden$", + "Kueche$", + "Esszimmer$", + "Julias Zimmer$", + "Leos Zimmer$", + "Pats Zimmer$", + "Bobs Zimmer$", + "Maxs Zimmer$", + "Luc/Idas Zimmer$", + "Guy/Evas Zimmer$", + " Der entscheidende Hinweis, der es Ihnen ermoeglichte, bis an die Tuer des Souterrains zu gelangen, war :$", + "ein Dolch$", + "ein Ring$", + "ein Buch$", + "ein Pergament$", + "ein Brief$", + "ein Pendel$", + " Wievele Pergamente befinden sich auf dem Landsitz ?$", + "kein$", + "eins$", + "zwei$", + "drei$", + "vier$", + "fnf$", + " Wieviele Personen sind in die Geschichte verwickelt ? (Julia eingeschlossen, ausgenommen Sie)$", + "neun$", + "zehn$", + "elf$", + " Wie war der Name der unbekannten Person ?$", + "Mireille$", + "Fran‡oise$", + "Maguy$", + "Emilie$", + "Murielle$", + "Sophie$", + " Wessen Geliebte war Murielle ?$", + "Bob$", + "Luc$", + "Guy$", + "Leo$", + "Max$", + " Murielle teilte eine Beschaeftigung mit einer anderen Person. Mit wem ?$", + "[1][Allein der Zufall hat es Ihnen ermoeglicht bis hierher zu komen.| Gehen Sie zurueck und forschen Sie noch einmal nach,|damit Sie das Gaze besser verstehen...][ok]$", + "[1][Legen Sie die Diskette 1 ein][ok]$", + "[1][Problem mit der Diskette | Alles abstellen...][OK]$", + "[1][Sie haetten 00% der Hinweise| bemerken muessen][ OK ]$", + "[1][Legen Sie die Diskette 2 ein][ok]$", + "[1][Bevor Sie weitermachen, fassen Sie Ihre Kenntnisse Zusammen][ok]$", + " MASTER .$", + " sgaf", NULL }; #endif diff --git a/dists/engine-data/mort.dat b/dists/engine-data/mort.dat index 125d37fdbb..23e06fe014 100644 Binary files a/dists/engine-data/mort.dat and b/dists/engine-data/mort.dat differ -- cgit v1.2.3 From c10d050eeff2ca69bc6bdd9bc83a972981b77448 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 4 Jul 2013 23:46:52 +0200 Subject: MORTEVIELLE: Update misc files to include mort.dat --- Makefile.common | 3 +++ devtools/README | 7 +++++++ dists/engine-data/README | 5 +++++ dists/scummvm.rc | 3 +++ dists/scummvm.rc.in | 3 +++ 5 files changed, 21 insertions(+) diff --git a/Makefile.common b/Makefile.common index aec033f0c7..02c3408684 100644 --- a/Makefile.common +++ b/Makefile.common @@ -253,6 +253,9 @@ endif ifdef ENABLE_LURE DIST_FILES_ENGINEDATA+=lure.dat endif +ifdef ENABLE_MORTEVIELLE +DIST_FILES_ENGINEDATA+=mort.dat +endif ifdef ENABLE_NEVERHOOD DIST_FILES_ENGINEDATA+=neverhood.dat endif diff --git a/devtools/README b/devtools/README index c7f08d6dfa..482c24edc2 100644 --- a/devtools/README +++ b/devtools/README @@ -63,6 +63,13 @@ create_lure (dreammaster) the lure.dat file. +create_mort (Strangerke) +----------- + Gathers several information found in the original DOS executable: + - Font data + - French, German and fan-made English translation + + create_project (LordHoto, Littleboy) -------------- Creates project files for Visual Studio 2005, 2008, 2010, 2012, Xcode and diff --git a/dists/engine-data/README b/dists/engine-data/README index c9c4bd4817..9bbb006d17 100644 --- a/dists/engine-data/README +++ b/dists/engine-data/README @@ -16,6 +16,11 @@ scripts, from. lure.dat TODO +mort.dat: +File created partially by extracting font data from the French executable. It +also contains the French and German translation, as well as a custom-made +English translation. + queen.tbl: 'queen.tbl' contains a list of filenames, filesizes and offsets for the individual files saved in QUEEN.1. This data was originally included in the diff --git a/dists/scummvm.rc b/dists/scummvm.rc index f3fa14c95a..037db3ef62 100644 --- a/dists/scummvm.rc +++ b/dists/scummvm.rc @@ -32,6 +32,9 @@ kyra.dat FILE "dists/engine-data/kyra.dat" #if ENABLE_LURE == STATIC_PLUGIN lure.dat FILE "dists/engine-data/lure.dat" #endif +#if ENABLE_MORTEVIELLE == STATIC_PLUGIN +mort.dat FILE "dists/engine-data/mort.dat" +#endif #if ENABLE_NEVERHOOD == STATIC_PLUGIN neverhood.dat FILE "dists/engine-data/neverhood.dat" #endif diff --git a/dists/scummvm.rc.in b/dists/scummvm.rc.in index b7a87f4e3d..c18c18ef63 100644 --- a/dists/scummvm.rc.in +++ b/dists/scummvm.rc.in @@ -32,6 +32,9 @@ kyra.dat FILE "dists/engine-data/kyra.dat" #if ENABLE_LURE == STATIC_PLUGIN lure.dat FILE "dists/engine-data/lure.dat" #endif +#if ENABLE_MORTEVIELLE == STATIC_PLUGIN +mort.dat FILE "dists/engine-data/mort.dat" +#endif #if ENABLE_NEVERHOOD == STATIC_PLUGIN neverhood.dat FILE "dists/engine-data/neverhood.dat" #endif -- cgit v1.2.3 From ba9b17fa35eba38fada396ab98e15f850a21895e Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 6 Jul 2013 23:59:47 +0200 Subject: MORTEVIELLE: Remove unused const --- engines/mortevielle/mortevielle.h | 1 - 1 file changed, 1 deletion(-) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 486f93f260..8f9df4a1e1 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -136,7 +136,6 @@ const int kMenuPlaceStringIndex = 435; const int kMenuActionStringIndex = 476; const int kMenuSelfStringIndex = 497; const int kMenuSayStringIndex = 502; -const int kSecretPassageQuestionStringIndex = 510; // Unused? const int kMaxPatt = 20; const int OPCODE_NONE = 0; -- cgit v1.2.3 From 32c62aaf80497b24a141045aba2ceec0fd2eb60b Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 7 Jul 2013 16:09:42 +0200 Subject: MORTEVIELLE: Some renaming in Mortevielle.h --- engines/mortevielle/mortevielle.h | 8 ++++---- engines/mortevielle/utils.cpp | 20 ++++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 8f9df4a1e1..dcb61a6057 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -125,8 +125,8 @@ const int kArep = 1314; const int kAmzon = 1650; const int kArega = 0; -const int kMaxTi = 9000; -const int kMaxTd = 600; +const int kMaxDialogIndex = 9000; +const int kMaxDialogHint = 600; const int kDescriptionStringIndex = 0; // Unused const int kInventoryStringIndex = 186; @@ -281,8 +281,8 @@ private: int _openObjects[8]; int _nbrep[9]; int _nbrepm[9]; - uint16 _inpBuffer[kMaxTi + 1]; - Hint _ntpBuffer[kMaxTd + 1]; + uint16 _dialogIndexArray[kMaxDialogIndex + 1]; + Hint _dialogHintArray[kMaxDialogHint + 1]; Common::ErrorCode initialise(); Common::ErrorCode loadMortDat(); diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 9b140fc761..78a4db8ad2 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -1849,13 +1849,13 @@ void MortevielleEngine::cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { uint16 oct, ocd; /* 5-8 */ - oct = _inpBuffer[idx]; + oct = _dialogIndexArray[idx]; oct = ((uint16)(oct << (16 - pt))) >> (16 - pt); if (pt < 6) { ++idx; oct = oct << (5 - pt); pt += 11; - oct = oct | ((uint)_inpBuffer[idx] >> pt); + oct = oct | ((uint)_dialogIndexArray[idx] >> pt); } else { pt -= 5; oct = (uint)oct >> pt; @@ -1865,13 +1865,13 @@ void MortevielleEngine::cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { c = '$'; the_end = true; } else if (oct == 30 || oct == 31) { - ocd = _inpBuffer[idx]; + ocd = _dialogIndexArray[idx]; ocd = (uint16)(ocd << (16 - pt)) >> (16 - pt); if (pt < 6) { ++idx; ocd = ocd << (5 - pt); pt += 11; - ocd = ocd | ((uint)_inpBuffer[idx] >> pt); + ocd = ocd | ((uint)_dialogIndexArray[idx] >> pt); } else { pt -= 5; ocd = (uint)ocd >> pt; @@ -1903,8 +1903,8 @@ Common::String MortevielleEngine::getString(int num) { } else if (!_txxFileFl) { wrkStr = getGameString(num); } else { - int hint = _ntpBuffer[num]._hintId; - byte point = _ntpBuffer[num]._point; + int hint = _dialogHintArray[num]._hintId; + byte point = _dialogHintArray[num]._point; int length = 0; bool endFl = false; char let; @@ -2116,20 +2116,20 @@ void MortevielleEngine::loadTexts() { return; } - if ((inpFile.size() > (kMaxTi * 2)) || (ntpFile.size() > (kMaxTd * 3))) { + if ((inpFile.size() > (kMaxDialogIndex * 2)) || (ntpFile.size() > (kMaxDialogHint * 3))) { warning("TXX file - Unexpected format - Switching to DAT file"); return; } for (int i = 0; i < inpFile.size() / 2; ++i) - _inpBuffer[i] = inpFile.readUint16LE(); + _dialogIndexArray[i] = inpFile.readUint16LE(); inpFile.close(); _txxFileFl = true; for (int i = 0; i < (ntpFile.size() / 3); ++i) { - _ntpBuffer[i]._hintId = ntpFile.readSint16LE(); - _ntpBuffer[i]._point = ntpFile.readByte(); + _dialogHintArray[i]._hintId = ntpFile.readSint16LE(); + _dialogHintArray[i]._point = ntpFile.readByte(); } ntpFile.close(); -- cgit v1.2.3 From 8a098d75aa967b2361227df4a747b0eec223b098 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 12 Jul 2013 21:28:22 -0400 Subject: MORTEVIELLE: Fixed ifdef header guard naming --- engines/mortevielle/speech.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h index 4f98c4c3d7..73f8e16067 100644 --- a/engines/mortevielle/speech.h +++ b/engines/mortevielle/speech.h @@ -25,8 +25,8 @@ * Copyright (c) 1987-1989 Lankhor */ -#ifndef MORTEVIELLE_PAROLE_H -#define MORTEVIELLE_PAROLE_H +#ifndef MORTEVIELLE_SPEECH_H +#define MORTEVIELLE_SPEECH_H #include "common/scummsys.h" #include "mortevielle/sound.h" @@ -99,4 +99,5 @@ public: }; } // End of namespace Mortevielle + #endif -- cgit v1.2.3 From 364cfaf9d264045d752280a7b3fe3d3ca3e42aa4 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 13 Jul 2013 22:10:21 +0200 Subject: MORTEVIELLE: Fix some typos identified by wjp --- engines/mortevielle/mortevielle.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 46c7c75fa3..2734f8cc93 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -210,14 +210,14 @@ Common::ErrorCode MortevielleEngine::initialise() { } /** - * Loads the contents of the Mort.dat data file + * Loads the contents of the mort.dat data file */ Common::ErrorCode MortevielleEngine::loadMortDat() { Common::File f; // Open the mort.dat file if (!f.open(MORT_DAT)) { - GUIErrorMessage("Could not locate Mort.dat file"); + GUIErrorMessage("Could not locate 'mort.dat'."); return Common::kReadingFailed; } @@ -231,7 +231,7 @@ Common::ErrorCode MortevielleEngine::loadMortDat() { // Check the version if (f.readByte() < MORT_DAT_REQUIRED_VERSION) { - GUIErrorMessage("The located mort.dat data file is too a version"); + GUIErrorMessage("The located mort.dat data file is too old, please download an updated version on scummvm.org"); return Common::kReadingFailed; } f.readByte(); // Minor version -- cgit v1.2.3 From 7ca31f66d85d88cbd6c3ec951571b59e4875001d Mon Sep 17 00:00:00 2001 From: Thierry Crozat Date: Sat, 13 Jul 2013 22:40:49 +0100 Subject: MORTEVIELLE: Add missing eol character in devtool usage message --- devtools/create_mortdat/create_mortdat.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devtools/create_mortdat/create_mortdat.cpp b/devtools/create_mortdat/create_mortdat.cpp index 6fe115d5c4..2dff398de2 100644 --- a/devtools/create_mortdat/create_mortdat.cpp +++ b/devtools/create_mortdat/create_mortdat.cpp @@ -149,7 +149,7 @@ void process() { */ int main(int argc, char *argv[]) { if (argc != 2) { - printf("Usage:\n%s input_filename\nWhere input_filename is the name of the Mortevielle DOS executable", argv[0]); + printf("Usage:\n%s input_filename\nWhere input_filename is the name of the Mortevielle DOS executable.\n", argv[0]); exit(0); } -- cgit v1.2.3 From 79886597e77672dd58a453a627144eae3926b07e Mon Sep 17 00:00:00 2001 From: Thierry Crozat Date: Sat, 13 Jul 2013 22:41:25 +0100 Subject: MORTEVIELLE: Convert non-ASCII characters to their octal value --- devtools/create_mortdat/enginetext.h | 10 +- devtools/create_mortdat/gametext.h | 488 +++++++++++++++++------------------ 2 files changed, 249 insertions(+), 249 deletions(-) diff --git a/devtools/create_mortdat/enginetext.h b/devtools/create_mortdat/enginetext.h index c4929141d3..f785c4d974 100644 --- a/devtools/create_mortdat/enginetext.h +++ b/devtools/create_mortdat/enginetext.h @@ -82,19 +82,19 @@ const char *engineDataEn[] = { const char *engineDataFr[] = { "[2][ ][OUI][NON]", "aller", - "quelqu'un entre, parait ‚tonn‚ mais ne dit rien", + "quelqu'un entre, parait \202tonn\202 mais ne dit rien", "Cool", " Lourde ", "Malsaine", "Idem", "Vous", - "tes", + "\210tes", "SEUL", "Mince! Vous entendez du bruit...", - " | Vous devriez avoir remarqu‚| ", + " | Vous devriez avoir remarqu\202| ", "% des indices...", - "D‚sirez-vous vous r‚veiller?", + "D\202sirez-vous vous r\202veiller?", "OK", "", " Sauvegarde", @@ -123,7 +123,7 @@ const char *engineDataFr[] = { "fermer", "frapper", "poser", - "d‚foncer", + "d\202foncer", "sentir", "gratter", diff --git a/devtools/create_mortdat/gametext.h b/devtools/create_mortdat/gametext.h index 6e43258e88..f8fe070bf0 100644 --- a/devtools/create_mortdat/gametext.h +++ b/devtools/create_mortdat/gametext.h @@ -285,7 +285,7 @@ const char *gameDataEn[] = { "Julia's bedroom$", "The photo at Julia's home$", "Julia and yourself...$", - "L‚o's occupations$", + "L\202o's occupations$", "Pat's occupations$", "Guy's occupations$", "Bob's occupations$", @@ -294,7 +294,7 @@ const char *gameDataEn[] = { "Ida's occupations$", "Max's occupations$", "Your occupations$", - "L‚o's relationships$", + "L\202o's relationships$", "Pat's relationships$", "Guy's relationships$", "Bob's relationships$", @@ -324,7 +324,7 @@ const char *gameDataEn[] = { "These are the mountains one can see in front of the manor$", "I don't know!$", "She died from pulmonary embolism$", - "Mother died suddenly. And yet her health had seemed to improve‚$", + "Mother died suddenly. And yet her health had seemed to improve\202$", "Miss DEFRANCK died from a cold$", "She died from pulmonary embolism$", "Excuse me but I prefer to say nothing for now$", @@ -493,7 +493,7 @@ const char *gameDataEn[] = { "Directed by: KYILKHOR CREATION and LANGLOIS$", "$", "With the cooperation of...$", - "B‚atrice et Jean_Luc LANGLOIS$", + "B\202atrice et Jean_Luc LANGLOIS$", "for the music and the voices,$", "Bernard GRELAUD for the graphic conception,$", "MARIA-DOLORES for the graphic direction,$", @@ -592,7 +592,7 @@ const char *gameDataEn[] = { "- Eleven$", "What was the first name@of the unknown character?$", "- Mireille$", - "- Fran‡oise$", + "- Fran\207oise$", "- Maguy$", "- Emilie$", "- Murielle$", @@ -617,9 +617,9 @@ const char *gameDataEn[] = { const char *gameDataFr[] = { "Le calme dans la tourmente$", - "Des go—ts et des couleurs!$", + "Des go\227ts et des couleurs!$", "Mauve qui peut!$", - "PriŠre de laisser en sortant...$", + "Pri\212re de laisser en sortant...$", "Trou noir troublant$", "Bleu... comme \"peur bleue\"!$", "Chambre de \"Saigneur\"!$", @@ -629,33 +629,33 @@ const char *gameDataFr[] = { "Odeur de feux de bois et de tabac$", "Tabac et vieux bouquins$", "Oignons, cannelle et spiritueux$", - "Un endroit bien peu visit‚$", - "Humidit‚ et moisissure$", + "Un endroit bien peu visit\202$", + "Humidit\202 et moisissure$", "Avis aux colporteurs...$", - "Corps putr‚fi‚ : cryptomanie mortelle!$", - "Et en plus... des piŠges d‚samorc‚s!$", - "C'est d‚j… ouvert$", + "Corps putr\202fi\202 : cryptomanie mortelle!$", + "Et en plus... des pi\212ges d\202samorc\202s!$", + "C'est d\202j\205 ouvert$", "Danger : avalanches$", - "Une odeur de saintet‚!$", - "Une btisse imposante$", - "L'envers du mystŠre!$", - "Dr“le d'horoscope!$", + "Une odeur de saintet\202!$", + "Une b\203tisse imposante$", + "L'envers du myst\212re!$", + "Dr\223le d'horoscope!$", "Tant va la cruche...$", - "Une porte en chŠne$", + "Une porte en ch\212ne$", "Une photo$", "Les armoiries$", "$", - "Max, le domestique, vous accueille puis vous conduit … votre chambre$", - "Mortevielle, le 16/2/51@ Mon cher J‚r“me,@ Suite … mon t‚l‚gramme, je vous fais part des raisons de mon inqui‚tude :il y a un an, Murielle, ma dame de compagnie, disparaissait . D‚part ayant rapport avec le renouveau financier du Manoir, ou... Silence difficile … comprendre, surtout pour mon fils Guy . N'ayant pu jusqu'… pr‚sent, faire le jour sur cette affaire, je compte sur vous pour la mener … bien . Si mon ‚tat de sant‚ ne s'am‚liorait pas, prenez les d‚cisions qui vous sembleront le plus appropri‚es...@ Amiti‚s. JULIA DEFRANCK$", - "Plus tard, Guy vous apprendra le suicide de L‚o... aprŠs un pari insens‚ aux courses!$", + "Max, le domestique, vous accueille puis vous conduit \205 votre chambre$", + "Mortevielle, le 16/2/51@ Mon cher J\202r\223me,@ Suite \205 mon t\202l\202gramme, je vous fais part des raisons de mon inqui\202tude :il y a un an, Murielle, ma dame de compagnie, disparaissait . D\202part ayant rapport avec le renouveau financier du Manoir, ou... Silence difficile \205 comprendre, surtout pour mon fils Guy . N'ayant pu jusqu'\205 pr\202sent, faire le jour sur cette affaire, je compte sur vous pour la mener \205 bien . Si mon \202tat de sant\202 ne s'am\202liorait pas, prenez les d\202cisions qui vous sembleront le plus appropri\202es...@ Amiti\202s. JULIA DEFRANCK$", + "Plus tard, Guy vous apprendra le suicide de L\202o... apr\212s un pari insens\202 aux courses!$", "F3: encore@F8: suite$", - "Le maŚtre des lieux$", - "Le futur h‚ritier$", + "Le ma\214tre des lieux$", + "Le futur h\202ritier$", "Le fils de JULIA$", "Joli brin!!!$", "Superman!$", "Le mari d'Ida$", - "Propos int‚ressants?$", + "Propos int\202ressants?$", "Service compris...$", "Rien dessous!$", "Un ange passe...$", @@ -663,61 +663,61 @@ const char *gameDataFr[] = { "Admirez! Contemplez!$", "Non ! Rien !$", "Impossible$", - "‡a tache !$", - "Un trait‚ sur l'histoire de la r‚gion$", - "Quelques piŠces$", + "\207a tache !$", + "Un trait\202 sur l'histoire de la r\202gion$", + "Quelques pi\212ces$", "Premier commandement...$", - "Des p‚tales plein les narines !$", + "Des p\202tales plein les narines !$", "Pique, Coeur...$", - "‡a ne manque pas de cachets !$", + "\207a ne manque pas de cachets !$", "Un roman d'amour$", "Souffler n'est pas jouer$", - "Pas une r‚ussite!$", + "Pas une r\202ussite!$", "Gare aux rebondissements !$", "Sombre et profond...$", "Sensations normales$", "Sniff!$", "Pas discret ! Contentez-vous de regarder !$", - "Atchoum! De la p... poussiŠre$", - "La toile est sign‚e... pas le papier peint !$", + "Atchoum! De la p... poussi\212re$", + "La toile est sign\202e... pas le papier peint !$", "Pas de chance, rien !$", "Soyez plus discret !$", "Les volets sont clos$", "De la neige, encore de la neige !$", - "G‚nial : une toile de maŚtre !$", - "Aucun doute : une v‚ritable imitation$", + "G\202nial : une toile de ma\214tre !$", + "Aucun doute : une v\202ritable imitation$", "Hum ! Vous tiquez : de l'antique en toc !$", - "Une piŠce rare de valeur !$", + "Une pi\212ce rare de valeur !$", "Rien de remarquable$", "Linge, objets personnels...$", - "Pas n'importe o— !$", + "Pas n'importe o\227 !$", "Ce n'est pas l'heure !$", - "On ne parle pas la bouche pleine ! Donc, une fois le repas termin‚...$", + "On ne parle pas la bouche pleine ! Donc, une fois le repas termin\202...$", "Quelqu'un entre, s'affaire, ressort...$", "On s'approche de votre cachette !$", "On vous surprend !$", - "Non : vous tes trop charg‚ !$", + "Non : vous \210tes trop charg\202 !$", "Essayez de nouveau$", "Vous restez perplexe !?$", "Vous quittez le Manoir. A Paris, un message vous attend...$", - "A‹e, a‹e, a‹e !$", + "A\213e, a\213e, a\213e !$", "Rien de plus$", - "Le son paraŚt normal$", + "Le son para\214t normal$", "Ca ne bouge pas$", - "On vous r‚pond$", + "On vous r\202pond$", "Pas le moment !$", - "Mme matiŠre, autre face !$", - "Le reflet est piqu‚, mais le cadre est d'or$", + "M\210me mati\212re, autre face !$", + "Le reflet est piqu\202, mais le cadre est d'or$", "Bibelots, babioles...$", - "Vous essuyez un ‚chec !$", + "Vous essuyez un \202chec !$", "Il est des odeurs... qu'il vaut mieux ne pas voir !$", - "Des produits m‚nagers$", - "‡a vous d‚mange ?$", - "C'est coinc‚, gel‚ ! Brrrr...$", - "Les huisseries sont bloqu‚es !$", + "Des produits m\202nagers$", + "\207a vous d\202mange ?$", + "C'est coinc\202, gel\202 ! Brrrr...$", + "Les huisseries sont bloqu\202es !$", "Des papiers...$", - "Non ! Le pŠre Nol n'est pas coinc‚ !$", - "‡a donne sur un couloir$", + "Non ! Le p\212re No\210l n'est pas coinc\202 !$", + "\207a donne sur un couloir$", "Vaisselle, argenterie...$", "Non ! Ce ne sont pas les restes de Julia !$", "Une gravure ancienne$", @@ -726,17 +726,17 @@ const char *gameDataFr[] = { "Le passage se ferme$", "Un tiroir secret... Un livret ! Le lisez-vous ?$", "Le tiroir se referme$", - "Rien ! Sang et chairs collent … la pierre !$", - "Des d‚tails vous font supposer que... la mort ne fut pas imm‚diate !$", - "Des projets v‚reux ?$", - "Sa vie n'aurait-elle tenu qu'… un doigt ?$", - "Un tr‚sor se serait-il fait la malle ?$", - "Une fente de la taille d'une piŠce !$", - "Quelques pierres pivotent... Une crypte ! Y p‚n‚trez-vous ?$", + "Rien ! Sang et chairs collent \205 la pierre !$", + "Des d\202tails vous font supposer que... la mort ne fut pas imm\202diate !$", + "Des projets v\202reux ?$", + "Sa vie n'aurait-elle tenu qu'\205 un doigt ?$", + "Un tr\202sor se serait-il fait la malle ?$", + "Une fente de la taille d'une pi\212ce !$", + "Quelques pierres pivotent... Une crypte ! Y p\202n\202trez-vous ?$", "La bague tourne, le mur se referme...$", - "Une colonne de pierres derriŠre l'autel$", + "Une colonne de pierres derri\212re l'autel$", "Il y a du bruit...$", - "Occup‚ !$", + "Occup\202 !$", "Retentez-vous votre chance ?$", "Trop profond !$", "Le mur de la cave pivote$", @@ -745,45 +745,45 @@ const char *gameDataFr[] = { "L'objet glisse au fond...$", "Vous n'avez rien en main$", "Ce n'est pas ouvert$", - "Il y a d‚j… quelque chose$", - "La porte est ferm‚e$", - "Pas de r‚ponse$", + "Il y a d\202j\205 quelque chose$", + "La porte est ferm\202e$", + "Pas de r\202ponse$", "Une boule de bois pleine$", "Il n'y a plus de place$", - "Une boule de bois perc‚e par le travers$", + "Une boule de bois perc\202e par le travers$", "? ?$", "A vous de jouer$", "OK !$", - "Soudain Max survient avec votre valise : \"Merci de votre visite ! D‚tective \"priv‚\"... de bon sens et de discr‚tion sans doute\" . D‚‡u d‚moralis‚, vous quittez le manoir@Vous Štes NUL !$", - "L‚o vous interrompt : \"la tempŠte est calm‚e. Je pars en ville dans 1 heure. Tenez-vous prt!\"... Bon... Vous avez perdu du temps... mais pas la vie$", - "Congestion, grippe fatale : vous y restez ! Votre enquŠte tombe … l'eau$", - "L'eau monte trŠs vite et refroidit vos derniŠres illusions... Avant que vous n'ayez eu le temps de r‚agir, vous Štes mort!$", - "A peine Štes-vous au fond du puits qu'une main tranche la corde... Adieu la vie!$", - "La tempŠte recouvre vos traces . Un mur de silence s'abat sur vos ‚paules . Lentement vous succombez … la morsure du froid !$", - "Pas si seul que ‡a ! Une lame glac‚e s'enfonce dans votre dos. A l'avenir, soyez plus prudent!$", - "Vous ignorez la responsabilit‚ exacte de L‚o dans la mort de Murielle... Est-elle morte sur le coup ? De toutes fa‡ons les problŠmes familiaux d‚couverts lors de votre enquŠte justifient l'attitude de L‚o... Vous n'Štes pas s—r que Julia vous ait appel‚ pour ‡a mais c'est suffisant pour vous ! Par respect pour elle, et aprŠs certaines pr‚cautions, vous avez une entrevue r‚v‚latrice avec L‚o$", + "Soudain Max survient avec votre valise : \"Merci de votre visite ! D\202tective \"priv\202\"... de bon sens et de discr\202tion sans doute\" . D\202\207u d\202moralis\202, vous quittez le manoir@Vous \212tes NUL !$", + "L\202o vous interrompt : \"la temp\212te est calm\202e. Je pars en ville dans 1 heure. Tenez-vous pr\210t!\"... Bon... Vous avez perdu du temps... mais pas la vie$", + "Congestion, grippe fatale : vous y restez ! Votre enqu\212te tombe \205 l'eau$", + "L'eau monte tr\212s vite et refroidit vos derni\212res illusions... Avant que vous n'ayez eu le temps de r\202agir, vous \212tes mort!$", + "A peine \212tes-vous au fond du puits qu'une main tranche la corde... Adieu la vie!$", + "La temp\212te recouvre vos traces . Un mur de silence s'abat sur vos \202paules . Lentement vous succombez \205 la morsure du froid !$", + "Pas si seul que \207a ! Une lame glac\202e s'enfonce dans votre dos. A l'avenir, soyez plus prudent!$", + "Vous ignorez la responsabilit\202 exacte de L\202o dans la mort de Murielle... Est-elle morte sur le coup ? De toutes fa\207ons les probl\212mes familiaux d\202couverts lors de votre enqu\212te justifient l'attitude de L\202o... Vous n'\212tes pas s\227r que Julia vous ait appel\202 pour \207a mais c'est suffisant pour vous ! Par respect pour elle, et apr\212s certaines pr\202cautions, vous avez une entrevue r\202v\202latrice avec L\202o$", "$", - "Vous n'avez pas les clefs du Manoir . Vos appels restent sans r‚ponse . Vous allez attraper... la mort !$", - "D'un mouvement circulaire, l'‚p‚e vous fend par le travers : tripes et boyaux … l'air, bonjour les vers!$", + "Vous n'avez pas les clefs du Manoir . Vos appels restent sans r\202ponse . Vous allez attraper... la mort !$", + "D'un mouvement circulaire, l'\202p\202e vous fend par le travers : tripes et boyaux \205 l'air, bonjour les vers!$", "Home, Sweet home !$", - "MystŠre d'une porte close$", - "Charme envo—tant de vieilles piŠces$", + "Myst\212re d'une porte close$", + "Charme envo\227tant de vieilles pi\212ces$", "La faim au ventre$", - "Plus prŠs du ciel? Pas s—r !$", + "Plus pr\212s du ciel? Pas s\227r !$", "Peur du noir?$", "Vieux tapis et reflets d'or$", "Angoisse !$", - "Sauv‚ ? Pas certain !$", - "Mal … l'aise, hein !$", + "Sauv\202 ? Pas certain !$", + "Mal \205 l'aise, hein !$", "Toujours plus loin !$", "Votre chemin de croix !$", - "A la d‚couverte de...$", - "Attention … ce que cache...$", + "A la d\202couverte de...$", + "Attention \205 ce que cache...$", "Une descente aux Enfers !$", "Si ce n'est pas dans vos cordes :@ ne soyez pas sot!$", - "Avant la mise en piŠce !$", + "Avant la mise en pi\212ce !$", "Gros plan sur :$", - "Vous remarquez particuliŠrement...$", + "Vous remarquez particuli\212rement...$", "Et encore...$", "C'est fini !$", "Un peu de lecture$", @@ -794,17 +794,17 @@ const char *gameDataFr[] = { "Non ! Pas ce coup-ci$", "Trop tard$", "$", - "Comme un regard profond tout couvert de peaux-pierres, pointant son oeil obscur aux astres de lumiŠre, il est la gorge reliant le ciel et les enfers . Il faut aller au fond de cette artŠre comme un rat au coeur mme de la terre !@Lundi, Mardi, Mercredi, Dimanche du 1e lundi au 1e dimanche, tu installeras \"ce rat\" entre chacun des jours . N'omets rien car ta venue serait ta retenue !@Porte ton fardeau comme un oeuf nouveau et donne lui le jour avec force et amour.$", - "10/1/50: Nous avons r‚solu le mystŠre du manuscrit et localis‚ la crypte . Est-ce l'id‚e d'aboutir dans ce qui n'‚tait qu'un \"rŠve\" qui me rend si anxieuse ?@Je regrette de m'tre engag‚e vis … vis de L‚o . Non! je dois continuer ! J'aurais d— mettre Guy au courant... mais, depuis une semaine, je n'ai aucune nouvelle .$", - "Porte ta priŠre au lieu saint qui se doit, changes-en l'air, tu auras la matiŠre !@Du pilier de la haute sagesse, le soleil aux genoux te montrera l'espace par lequel ton …me s'ouvrira un chemin et gagnera son Šre . Avance comme un Orph‚e peu soucieux des t‚nŠbres : le blanc est ta couleur, l'or ta demeure . Eclaire ton chemin jusqu'… la myst‚rieuse . Offre-lui le cercle de l'homme aux trois facettes . Qu'il regagne le monde et qu'il tourne avec lui dans la richesse premiŠre.$", - "Les montagnes sont les crocs d'une gueule dantesque ouverte … l'infini de quelqu' orgie c‚leste, mastiquant des ‚toiles comme nous broyons du noir .@Tu d‚poseras l'accord de pierre … tes pieds, le rire du silence sur la gamme d'en haut et dans ta main droite, une toile d'un mŠtre . Tu passeras ainsi entre les deux croissants, par del… les abŚmes du Mur du Silence . La Cl‚ des champs est … ta port‚e, tu n'as qu'… retrouver la note qui d‚note.$", + "Comme un regard profond tout couvert de peaux-pierres, pointant son oeil obscur aux astres de lumi\212re, il est la gorge reliant le ciel et les enfers . Il faut aller au fond de cette art\212re comme un rat au coeur m\210me de la terre !@Lundi, Mardi, Mercredi, Dimanche du 1e lundi au 1e dimanche, tu installeras \"ce rat\" entre chacun des jours . N'omets rien car ta venue serait ta retenue !@Porte ton fardeau comme un oeuf nouveau et donne lui le jour avec force et amour.$", + "10/1/50: Nous avons r\202solu le myst\212re du manuscrit et localis\202 la crypte . Est-ce l'id\202e d'aboutir dans ce qui n'\202tait qu'un \"r\212ve\" qui me rend si anxieuse ?@Je regrette de m'\210tre engag\202e vis \205 vis de L\202o . Non! je dois continuer ! J'aurais d\227 mettre Guy au courant... mais, depuis une semaine, je n'ai aucune nouvelle .$", + "Porte ta pri\212re au lieu saint qui se doit, changes-en l'air, tu auras la mati\212re !@Du pilier de la haute sagesse, le soleil aux genoux te montrera l'espace par lequel ton \205me s'ouvrira un chemin et gagnera son \212re . Avance comme un Orph\202e peu soucieux des t\202n\212bres : le blanc est ta couleur, l'or ta demeure . Eclaire ton chemin jusqu'\205 la myst\202rieuse . Offre-lui le cercle de l'homme aux trois facettes . Qu'il regagne le monde et qu'il tourne avec lui dans la richesse premi\212re.$", + "Les montagnes sont les crocs d'une gueule dantesque ouverte \205 l'infini de quelqu' orgie c\202leste, mastiquant des \202toiles comme nous broyons du noir .@Tu d\202poseras l'accord de pierre \205 tes pieds, le rire du silence sur la gamme d'en haut et dans ta main droite, une toile d'un m\212tre . Tu passeras ainsi entre les deux croissants, par del\205 les ab\214mes du Mur du Silence . La Cl\202 des champs est \205 ta port\202e, tu n'as qu'\205 retrouver la note qui d\202note.$", " DECEMBRE@ 9 REMISE 518 13 AGIOS 23@ 19 VIREMENT 1203 17 TRESOR 1598@ TOTAL 1721 TOTAL 1721$", - " Le 5/01/51@@ Luc, mon amour@ Guy connaŚt notre liaison . A la suite d'une dispute, je lui ai tout dit . Je ne pense qu'… toi ! Max me relance mais j'ai d‚finitivement rompu avec lui . Qu'il reste … ses gamelles . Quand pourrons-nous nous voir seuls ? Pour toi je divorcerai... Je t'aime .@ ton Eva$", - " Mortevielle, le 10/2/51@@ Pat,@ Je te rappelle que tu me dois 50000 F que je t'ai pr‚t‚s pour ton affaire . J'en ai besoin, peux-tu me les rendre assez vite?@ Guy$", - " Mortevielle, le 15/2/51@ MaŚtre,@ Je vous ‚cris au sujet de notre affaire. Je suis d‚cid‚ … aller jusqu'au bout, certain que mon associ‚, Pat DEFRANCK, a falsifi‚ un livre de comptes . Malgr‚$", + " Le 5/01/51@@ Luc, mon amour@ Guy conna\214t notre liaison . A la suite d'une dispute, je lui ai tout dit . Je ne pense qu'\205 toi ! Max me relance mais j'ai d\202finitivement rompu avec lui . Qu'il reste \205 ses gamelles . Quand pourrons-nous nous voir seuls ? Pour toi je divorcerai... Je t'aime .@ ton Eva$", + " Mortevielle, le 10/2/51@@ Pat,@ Je te rappelle que tu me dois 50000 F que je t'ai pr\202t\202s pour ton affaire . J'en ai besoin, peux-tu me les rendre assez vite?@ Guy$", + " Mortevielle, le 15/2/51@ Ma\214tre,@ Je vous \202cris au sujet de notre affaire. Je suis d\202cid\202 \205 aller jusqu'au bout, certain que mon associ\202, Pat DEFRANCK, a falsifi\202 un livre de comptes . Malgr\202$", " Une pipe$", - " Un stylo … plume$", - " Un briquet … essence$", + " Un stylo \205 plume$", + " Un briquet \205 essence$", " Une cornue$", " Un blaireau$", " Un pot de peinture$", @@ -814,13 +814,13 @@ const char *gameDataFr[] = { " Un vieux bouquin$", " Un porte-monnaie$", " Un poignard$", - " Un r‚volver$", + " Un r\202volver$", " Une bible$", " Une bougie$", - " Un coffret … bijoux$", - " Un fer … repasser$", + " Un coffret \205 bijoux$", + " Un fer \205 repasser$", " Une photo$", - " Une montre … gousset$", + " Une montre \205 gousset$", " Une corde$", " Des clefs$", " Un collier de perles$", @@ -830,9 +830,9 @@ const char *gameDataFr[] = { " Une bourse en cuir$", " Une balle de tennis$", " Des munitions$", - " Un rasoir … main$", - " Une brosse … cheveux$", - " Une brosse … linge$", + " Un rasoir \205 main$", + " Une brosse \205 cheveux$", + " Une brosse \205 linge$", " Un jeu de cartes$", " Un chausse pied$", " Un tournevis$", @@ -843,14 +843,14 @@ const char *gameDataFr[] = { " Un pinceau$", " Une corde$", " Un objet en bois$", - " Des somnifŠres$", + " Des somnif\212res$", " Une bague en or$", - " Un coffret … bijoux$", - " Un r‚veil matin$", + " Un coffret \205 bijoux$", + " Un r\202veil matin$", " Une cotte de mailles$", " Un chandellier$", " Une paire de gants$", - " Une coupe cisel‚e$", + " Une coupe cisel\202e$", " Un parchemin$", " Un poignard$", " Un dossier$", @@ -868,13 +868,13 @@ const char *gameDataFr[] = { "La mort de Julia$", "Les relations de Julia$", "Un message de Julia$", - "L'h‚ritage de Julia$", + "L'h\202ritage de Julia$", "Derniers actes de Julia$", "Les cadeaux de Julia$", "La chambre de Julia$", "La photo chez Julia$", "Julia et vous...$", - "Les occupations de L‚o$", + "Les occupations de L\202o$", "Les occupations de Pat$", "Les occupations de Guy$", "Les occupations de Bob$", @@ -883,7 +883,7 @@ const char *gameDataFr[] = { "Les occupations d'Ida$", "Les occupations de Max$", "Vos occupations$", - "Les relations de L‚o$", + "Les relations de L\202o$", "Les relations de Pat$", "Les relations de Guy$", "Les relations de Bob$", @@ -910,169 +910,169 @@ const char *gameDataFr[] = { "$", "FIN DE LA CONVERSATION$", "Les vieux appelaient ainsi la chaine de montagne qui se dresse au pied du manoir !$", - "C'est le massif montagneux que l'on aper‡oit devant le manoir$", + "C'est le massif montagneux que l'on aper\207oit devant le manoir$", "Je n'en sais rien !$", "Elle est morte d'une embolie pulmonaire$", - "Ma m‚re est morte soudainement . Son ‚tat semblait pourtant s'tre am‚lior‚$", + "Ma m\202re est morte soudainement . Son \202tat semblait pourtant s'\210tre am\202lior\202$", "Madame DEFRANCK est morte d'un coup de froid$", "Elle est morte d'une embolie pulmonaire$", - "Pardonnez moi mais je pr‚fŠre, actuellement garder le silence$", + "Pardonnez moi mais je pr\202f\212re, actuellement garder le silence$", "Ce sont toujours les meilleurs qui partent les premiers$", - "J'aimais beaucoup ma mŠre . Je regrette seulement qu'elle soit morte dans le manoir des DEFRANCK$", - "C'est une r‚gion qui a un pass‚ charg‚ et j'ai largement de quoi m'occuper . Et puis j'aime beaucoup les chevaux..$", - "C'est un passionn‚ d'histoire et un joueur inv‚t‚r‚ . D'ailleurs, voici un an il a gagn‚ une grosse somme$", - "Il a d‚j… beaucoup a faire avec la gestion et l'entretien du manoir...$", - "Je suis PDG d'une petite soci‚t‚ de parfums . Mais quand je suis ici, je me repose$", - "C'est un homme dynamique qui a r‚ussi dans le parfum$", - "Lui ! C'est un arriviste v‚reux ! Les parfums ont du endormir son bon sens . D'ailleurs ici il passe ses soir‚es dans sa chambre$", - "J'ai ‚t‚ trŠs pr‚occup‚ par la sant‚ de ma mŠre, et maintenant je n'ai plus go–t … rien$", - "Il aurait mieux fait de s'occuper un peu plus de moi et un peu moins de sa mŠre$", + "J'aimais beaucoup ma m\212re . Je regrette seulement qu'elle soit morte dans le manoir des DEFRANCK$", + "C'est une r\202gion qui a un pass\202 charg\202 et j'ai largement de quoi m'occuper . Et puis j'aime beaucoup les chevaux..$", + "C'est un passionn\202 d'histoire et un joueur inv\202t\202r\202 . D'ailleurs, voici un an il a gagn\202 une grosse somme$", + "Il a d\202j\205 beaucoup a faire avec la gestion et l'entretien du manoir...$", + "Je suis PDG d'une petite soci\202t\202 de parfums . Mais quand je suis ici, je me repose$", + "C'est un homme dynamique qui a r\202ussi dans le parfum$", + "Lui ! C'est un arriviste v\202reux ! Les parfums ont du endormir son bon sens . D'ailleurs ici il passe ses soir\202es dans sa chambre$", + "J'ai \202t\202 tr\212s pr\202occup\202 par la sant\202 de ma m\212re, et maintenant je n'ai plus go\226t \205 rien$", + "Il aurait mieux fait de s'occuper un peu plus de moi et un peu moins de sa m\212re$", "Ce sont ses affaires...$", "Il n'a pas trop de chance en ce moment bien que ses affaires soient satisfaisantes$", - "Je travaille avec Pat mais ‡a ne va pas trŠs fort en ce moment$", - "Ah oui ?! Il a des occupations ? Il ferait bien de s'en occuper s‚rieusement alors$", - "Lui et Pat sont associ‚s . Je crois que ‡a ne va pas trop mal$", - "Je m'occupe de moi et c'est d‚j… beaucoup . Et vous ?$", - "Oh ‡a ! Je lui fais confiance . Elle sait s'occuper$", - "Mais ! Vous n'avez pas encore d‚couvert son occupation principale..?$", - "Elle fait dans la d‚coration avec beaucoup dego–t d'ailleurs. Elle est toujours trŠs bien habill‚e$", - "Si les bijoux vous interessent, j'ai quelques affaires interessantes … saisir rapidement$", + "Je travaille avec Pat mais \207a ne va pas tr\212s fort en ce moment$", + "Ah oui ?! Il a des occupations ? Il ferait bien de s'en occuper s\202rieusement alors$", + "Lui et Pat sont associ\202s . Je crois que \207a ne va pas trop mal$", + "Je m'occupe de moi et c'est d\202j\205 beaucoup . Et vous ?$", + "Oh \207a ! Je lui fais confiance . Elle sait s'occuper$", + "Mais ! Vous n'avez pas encore d\202couvert son occupation principale..?$", + "Elle fait dans la d\202coration avec beaucoup dego\226t d'ailleurs. Elle est toujours tr\212s bien habill\202e$", + "Si les bijoux vous interessent, j'ai quelques affaires interessantes \205 saisir rapidement$", "Les bijoux...$", "Je ne sais pas, mais j'aimerais bien qu'il s'occupe un peu moins de mes affaires !$", - "Quand on est une femme d'int‚rieur on trouve toujours de quoi s'occuper...$", + "Quand on est une femme d'int\202rieur on trouve toujours de quoi s'occuper...$", "Elle pourrait rester sans rien faire, mais non ! Elle coud, elle lit ...$", - "Elle n'a s–rement pas des occupations trŠs ‚panouissantes ...$", + "Elle n'a s\226rement pas des occupations tr\212s \202panouissantes ...$", "Une femme comme il n'y en a plus : Elle s'interesse a tout !$", - "Entre la cuisine et le m‚nage, je n'ai pas beaucoup de temps … vous accorder$", + "Entre la cuisine et le m\202nage, je n'ai pas beaucoup de temps \205 vous accorder$", "Je ne sais pas comment il s'y prend pour tout faire . C'est merveilleux !$", - "Il en ferait plus si il s'occupait moins des rag“ts et de la bouteille$", - "Je suis trŠs ind‚pendant . Tant qu'on ne s'occupe pas de mes affaires : Pas de problŠme$", - "C'est un ‚go‹ste . Je me demande si il aime autre chose que ses chevaux et ses grimoires$", - "Je crois qu'il s'entend bien avec tout le monde, mis … part, peut tre, avec Guy$", - "C'est un homme de caractŠre . Il faut savoir le prendre ..$", - "Les affaires sont les affaires . Quant … la famille, je la laisse pour ce qu'elle est ...$", - "Relations ? Relations amicales ? Relations financiŠres sans doute$", - "Moi je n'ai rien … lui reprocher$", - "C'est un homme d'affaire d‚brouillard . Il nage parfois … contre-courant mais ... il s'en sortira toujours$", - "Ils m'ennuient tous .. Non ! Ce n'est mme pas ‡a .. Quoique .. certains ..$", - "A l'inverse de sa mŠre, c'est une personne trŠs renferm‚e ! Alors question relations ..$", - "Il doit sans doute faire beaucoup d'effort pour rester agr‚able malgr‚ tous ses ennuis$", - "Ses relations amoureuses : C'est termin‚ . Ses relations avec moi : Pas vraiment commenc‚es . Quant aux autres : Je ne suis pas les \"autres\"$", + "Il en ferait plus si il s'occupait moins des rag\223ts et de la bouteille$", + "Je suis tr\212s ind\202pendant . Tant qu'on ne s'occupe pas de mes affaires : Pas de probl\212me$", + "C'est un \202go\213ste . Je me demande si il aime autre chose que ses chevaux et ses grimoires$", + "Je crois qu'il s'entend bien avec tout le monde, mis \205 part, peut \210tre, avec Guy$", + "C'est un homme de caract\212re . Il faut savoir le prendre ..$", + "Les affaires sont les affaires . Quant \205 la famille, je la laisse pour ce qu'elle est ...$", + "Relations ? Relations amicales ? Relations financi\212res sans doute$", + "Moi je n'ai rien \205 lui reprocher$", + "C'est un homme d'affaire d\202brouillard . Il nage parfois \205 contre-courant mais ... il s'en sortira toujours$", + "Ils m'ennuient tous .. Non ! Ce n'est m\210me pas \207a .. Quoique .. certains ..$", + "A l'inverse de sa m\212re, c'est une personne tr\212s renferm\202e ! Alors question relations ..$", + "Il doit sans doute faire beaucoup d'effort pour rester agr\202able malgr\202 tous ses ennuis$", + "Ses relations amoureuses : C'est termin\202 . Ses relations avec moi : Pas vraiment commenc\202es . Quant aux autres : Je ne suis pas les \"autres\"$", "J'aime bien tout le monde, tant qu'on ne m'escroque pas$", - "Il ne suffit pas d'avoir un peu d'argent et d'tre beau parleur pour plaire … tout le monde$", - "Sans histoire .. C'est quelqu'un d'agr‚able et g‚n‚reux . De plus, il ne manque pas d'humour$", - "Actuellement je m'entends plut“t bien avec tout le monde . Mais, ici, je ne vais pas m'‚tendre sur le sujet$", - "Beau plumage, mais ‡a ne vole pas haut ... Parlez en … son mari$", + "Il ne suffit pas d'avoir un peu d'argent et d'\210tre beau parleur pour plaire \205 tout le monde$", + "Sans histoire .. C'est quelqu'un d'agr\202able et g\202n\202reux . De plus, il ne manque pas d'humour$", + "Actuellement je m'entends plut\223t bien avec tout le monde . Mais, ici, je ne vais pas m'\202tendre sur le sujet$", + "Beau plumage, mais \207a ne vole pas haut ... Parlez en \205 son mari$", "C'est pour un rendez-vous ?$", - "Elle est trŠs vivante ! Elle ne s'embarrasse pas de pr‚jug‚s stupides$", - "Dans mon m‚tier, on c“toit surtout des belles femmes et des truands$", - "La seule valeur s–re chez lui, c'est ses bijoux .. Et sa femme, mais ‡a il ne s'en rend pas compte$", - "C'est quelqu'un d'interessant . De pas toujours facile … comprendre, mais qui m‚rite le d‚tour$", - "Je ne d‚teste personne, mais j'aime les choses et les gens quand ils sont … leur place$", - "C'est entre nous . Mais voyez : quand je parle avec elle, je me sens vite … l'‚troit !$", - "Pour ne pas s'entendre avec elle, faut y mettre de la mauvaise volont‚$", - "Vous savez dans mon m‚tier on entend tout mais on ne retient rien, et le service est bien fait$", + "Elle est tr\212s vivante ! Elle ne s'embarrasse pas de pr\202jug\202s stupides$", + "Dans mon m\202tier, on c\223toit surtout des belles femmes et des truands$", + "La seule valeur s\226re chez lui, c'est ses bijoux .. Et sa femme, mais \207a il ne s'en rend pas compte$", + "C'est quelqu'un d'interessant . De pas toujours facile \205 comprendre, mais qui m\202rite le d\202tour$", + "Je ne d\202teste personne, mais j'aime les choses et les gens quand ils sont \205 leur place$", + "C'est entre nous . Mais voyez : quand je parle avec elle, je me sens vite \205 l'\202troit !$", + "Pour ne pas s'entendre avec elle, faut y mettre de la mauvaise volont\202$", + "Vous savez dans mon m\202tier on entend tout mais on ne retient rien, et le service est bien fait$", "C'est un hypocrite, un larbin ! Personnellement je ne lui fais pas confiance$", - "Je ne connait pas le fond de sa pens‚e mais c'est quelqu'un de toujours trŠs correct et impeccable$", - "C'‚tait une personne qui a v‚cu au manoir, il y a un an .. peut tre plus$", - "C'‚tait plus qu'une amie pour ma mŠre . En ces moments, j'aurais aim‚ qu'elle soit … mes cot‚s$", - "Murielle a ‚t‚ la dame de compagnie de Julia$", + "Je ne connait pas le fond de sa pens\202e mais c'est quelqu'un de toujours tr\212s correct et impeccable$", + "C'\202tait une personne qui a v\202cu au manoir, il y a un an .. peut \210tre plus$", + "C'\202tait plus qu'une amie pour ma m\212re . En ces moments, j'aurais aim\202 qu'elle soit \205 mes cot\202s$", + "Murielle a \202t\202 la dame de compagnie de Julia$", "Elle aussi, faisait des recherches ...$", - "C'‚tait une femme trŠs cultiv‚e . Son brusque d‚part, il y a un an, m'a surpris et beaucoup chagrin‚$", - "Elle partageait avec L‚o sa passion de l'histoire et de la r‚gion$", + "C'\202tait une femme tr\212s cultiv\202e . Son brusque d\202part, il y a un an, m'a surpris et beaucoup chagrin\202$", + "Elle partageait avec L\202o sa passion de l'histoire et de la r\202gion$", "Je crois que tout le monde l'aimait bien$", - "Elle s'entendait bien avec tout le monde . Elle aimait beaucoup son fils . Quant aux relations belle-mŠre, belle-fille ..$", - "A part L‚o, elle avait de trŠs bon rapport avec Max ...$", - "Bien que vos relations furent peu soutenues, J‚r“me, elle vous portait toujours dans son coeur ...$", + "Elle s'entendait bien avec tout le monde . Elle aimait beaucoup son fils . Quant aux relations belle-m\212re, belle-fille ..$", + "A part L\202o, elle avait de tr\212s bon rapport avec Max ...$", + "Bien que vos relations furent peu soutenues, J\202r\223me, elle vous portait toujours dans son coeur ...$", "A part sa famille, pas grand monde$", - "Ah oui ! Je crois qu'elle a beaucoup regrett‚ le d‚part de cette amie .. euh ! Marielle .. ou Mireille ...$", + "Ah oui ! Je crois qu'elle a beaucoup regrett\202 le d\202part de cette amie .. euh ! Marielle .. ou Mireille ...$", "Non rien !$", "Non ... Pas que le sache$", - "J'ai connu Julia en achetant le manoir . C'‚tait son seul bien . Mais toute ma fortune ‚tait la sienne ...$", - "Si ce n'est quelques objets personnels, je crois qu'elle n'avait plus rien … elle$", - "Je crois que toute sa fortune venait de L‚o . Alors, Pfuuut !$", - "A part la lettre pour vous que j'ai post‚, rien de bien important !$", - "J'ai ‚t‚ trŠs heureuse qu'elle m'offre sa bible reli‚e$", - "Ca a ‚t‚ rapide et elle n'a pas eu le temps de prendre des dispositions particuliŠres$", - "Son dernier pr‚sent m'a surpris$", + "J'ai connu Julia en achetant le manoir . C'\202tait son seul bien . Mais toute ma fortune \202tait la sienne ...$", + "Si ce n'est quelques objets personnels, je crois qu'elle n'avait plus rien \205 elle$", + "Je crois que toute sa fortune venait de L\202o . Alors, Pfuuut !$", + "A part la lettre pour vous que j'ai post\202, rien de bien important !$", + "J'ai \202t\202 tr\212s heureuse qu'elle m'offre sa bible reli\202e$", + "Ca a \202t\202 rapide et elle n'a pas eu le temps de prendre des dispositions particuli\212res$", + "Son dernier pr\202sent m'a surpris$", "Quel cadeau ?$", "Un chandellier ...$", - "Oui, j'ai eu un cadeau . Ma femme a mme eu une bible$", + "Oui, j'ai eu un cadeau . Ma femme a m\210me eu une bible$", "Et bien oui ! Comme tout le monde, je crois$", "Un poignard$", - "Je n'ai jamais ‚t‚ fouiller dans le grenier !$", + "Je n'ai jamais \202t\202 fouiller dans le grenier !$", "Vous avez un don de double-vue ou un passe-partout$", "Le portrait d'une jeune fille : C'est Murielle ...$", "Vous savez, je la connaissais assez peu$", - "Elle ‚tait trŠs charmante, mais c'‚tait surtout la dame de compagnie de Julia$", - "C'est la seule femme vraiment interessante que j'ai rencontr‚$", - "Elle avait de grandes connaissances historiques, et la consulter ‚tait trŠs enrichissant$", - "Je me suis toujours demand‚ ce que certains pouvaient lui trouver !$", - "Si la chambre est ferm‚e, demandez … L‚o$", - "J'ai ferm‚ sa chambre aprŠs sa mort et j'aimerais qu'il en soit ainsi encore un certain temps$", + "Elle \202tait tr\212s charmante, mais c'\202tait surtout la dame de compagnie de Julia$", + "C'est la seule femme vraiment interessante que j'ai rencontr\202$", + "Elle avait de grandes connaissances historiques, et la consulter \202tait tr\212s enrichissant$", + "Je me suis toujours demand\202 ce que certains pouvaient lui trouver !$", + "Si la chambre est ferm\202e, demandez \205 L\202o$", + "J'ai ferm\202 sa chambre apr\212s sa mort et j'aimerais qu'il en soit ainsi encore un certain temps$", "Vous savez ce que c'est : Des relations familiales$", - "Durant toutes ces ann‚es, je ne l'ai jamais servie … contre-coeur$", + "Durant toutes ces ann\202es, je ne l'ai jamais servie \205 contre-coeur$", "Je l'aimais autant qu'elle m'aimais, je crois$", - "De quel droit avez-vous p‚n‚tr‚ dans la chambre de ma femme ?!!$", + "De quel droit avez-vous p\202n\202tr\202 dans la chambre de ma femme ?!!$", "C'est sans doute la photo de Murielle avec le filleul de Julia$", "Je ne me rappelle pas$", - "C'est Murielle . C'est moi qui l'ai prise. et d'ailleurs elle est tir‚e … l'envers$", - "Vous tes bien curieux !... C'est sans valeur$", - "Grimoires, parchemins et manuscrits : C'est le domaine de L‚o$", + "C'est Murielle . C'est moi qui l'ai prise. et d'ailleurs elle est tir\202e \205 l'envers$", + "Vous \210tes bien curieux !... C'est sans valeur$", + "Grimoires, parchemins et manuscrits : C'est le domaine de L\202o$", "Dommage que la devise soit manquante ...$", - "C'est trŠs beau ... Et trŠs vieux ...$", - "Tiens ! C'est un endroit que je n'ai jamais visit‚$", - "D'apr‚s L‚o, il semblerait que les Lunes soient plus r‚centes$", - "Mme par ce temps, vous avez d‚nich‚ un soleil ...$", - "Profond et inqui‚tant : Le progrŠs a du bon$", - "Ca reste pour moi le plus grand des mystŠres$", + "C'est tr\212s beau ... Et tr\212s vieux ...$", + "Tiens ! C'est un endroit que je n'ai jamais visit\202$", + "D'apr\202s L\202o, il semblerait que les Lunes soient plus r\202centes$", + "M\210me par ce temps, vous avez d\202nich\202 un soleil ...$", + "Profond et inqui\202tant : Le progr\212s a du bon$", + "Ca reste pour moi le plus grand des myst\212res$", "Les derniers temps elle parlait d'un voyage . Et puis ...$", - "Il y a un peu plus d'un an, un soir, elle a d‚cid‚ de partir ...$", - "De toutes fa‡ons elle n'‚tait pas faite pour vivre ici$", + "Il y a un peu plus d'un an, un soir, elle a d\202cid\202 de partir ...$", + "De toutes fa\207ons elle n'\202tait pas faite pour vivre ici$", "Quoi ?! Quel corps ? Quel crypte ?$", - "Si il y en a, je ne les ai jamais trouv‚ ...$", - "Bien s–r ! ... Et des fant“mes aussi ...$", - "C'est la plus vielle de la r‚gion : Elle date du XI eme siŠcle$", - "Elle fut l‚gŠrement restaur‚e aprŠs la r‚volution$", + "Si il y en a, je ne les ai jamais trouv\202 ...$", + "Bien s\226r ! ... Et des fant\223mes aussi ...$", + "C'est la plus vielle de la r\202gion : Elle date du XI eme si\212cle$", + "Elle fut l\202g\212rement restaur\202e apr\212s la r\202volution$", "Julia aimait beaucoup la peinture$", - "Ils ont diff‚rents styles, mais n'ont pas tous une trŠs grande valeur$", - "Que faites-vous l… ?$", - "Je suis s–r que vous cherchez quelque chose ici$", - "Je vous ‚coute$", - "Que d‚sirez-vous ?$", + "Ils ont diff\202rents styles, mais n'ont pas tous une tr\212s grande valeur$", + "Que faites-vous l\205 ?$", + "Je suis s\226r que vous cherchez quelque chose ici$", + "Je vous \202coute$", + "Que d\202sirez-vous ?$", "Oui ?$", - "Je suis … vous ...$", + "Je suis \205 vous ...$", "C'est pourquoi ?$", "Allez-y$", - "C'est … quel sujet ?$", - "Max : … votre service, monsieur$", - "De toutes fa‡ons vous n'avez rien … faire ici ! Sortez !!$", - "Vous tes trop curieux !$", - "J‚r“me ! Il y a longtemps ... Quelle tristesse, Julia est morte . Sa famille est ici : Guy, son fils . Eva, sa brue . L‚o, son mari bien s–r . Son beau fils, Pat . Des cousins : Bob, Ida, Luc . La tempŠte redouble, il vous faut rester . Les repas sont … 12h et 19h et il y a un recueillement … la chapelle tous les jours … 10h$", - "En vous voyant j'ai compris que vous decouvririez la v‚rit‚ ... Car je savais pourquoi vous veniez : J'avais retrouv‚ le brouillon de la lettre de Julia . Mais je suis trŠs joueur, alors ... Elle n'avait pas voulu que votre tche soit trop facile, pour me prot‚ger, sans doute, mais elle n'a pu mourir avec cette incertitude sur la conscience . Avez vous d‚couvert que le mur du silence est le nom que les ma‡ons ont donn‚ au mur qui porte ce blason, lors de la construction du manoir ? .. Et ces cadeaux que Julia a laiss‚ avant de mourir ‚taient autant de faux indices qui ne servaient qu'… faire ressortir l'importance des parchemins ... Effectivement, il y a plus d'un an, je travailais avec Murielle au d‚cryptage de ces manuscrits que je venais de trouver . Ma femme a fait la relation entre notre travail et la disparition de Murielle mais elle n'a jamais eu de preuves . Si ce n'est cette bague qu'elle a retrouv‚ un jour dans mes affaires . Une nuit, nous nous sommes aventur‚s dans le passage secret que nous avions d‚couvert . Murielle est morte par accident dans la piŠce de la vierge . J'ai r‚cup‚r‚ la bague rapidement, trouv‚ le tr‚sor et me suis enfuis . Je ne pensais pas qu'elle vivait encore, et je n'ai rien dit car j'avais besoin d'argent . J'ai fait passer cette somme sur le compte des courses de chevaux ...Partez maintenant, puisque vous n'tes pas de la police . Laissez moi seul !$", - "F‚vrier 1951 ... Profession : detective priv‚ . Le froid figeait Paris et mes affaires lorsque ...$", - "Une lettre, un appel, des souvenirs d'une enfance encore proche . Que de jeux dans les piŠces d‚labr‚es du manoir de Mortevielle . Julia, une vieille femme a pr‚sent .$", + "C'est \205 quel sujet ?$", + "Max : \205 votre service, monsieur$", + "De toutes fa\207ons vous n'avez rien \205 faire ici ! Sortez !!$", + "Vous \210tes trop curieux !$", + "J\202r\223me ! Il y a longtemps ... Quelle tristesse, Julia est morte . Sa famille est ici : Guy, son fils . Eva, sa brue . L\202o, son mari bien s\226r . Son beau fils, Pat . Des cousins : Bob, Ida, Luc . La temp\212te redouble, il vous faut rester . Les repas sont \205 12h et 19h et il y a un recueillement \205 la chapelle tous les jours \205 10h$", + "En vous voyant j'ai compris que vous decouvririez la v\202rit\202 ... Car je savais pourquoi vous veniez : J'avais retrouv\202 le brouillon de la lettre de Julia . Mais je suis tr\212s joueur, alors ... Elle n'avait pas voulu que votre t\203che soit trop facile, pour me prot\202ger, sans doute, mais elle n'a pu mourir avec cette incertitude sur la conscience . Avez vous d\202couvert que le mur du silence est le nom que les ma\207ons ont donn\202 au mur qui porte ce blason, lors de la construction du manoir ? .. Et ces cadeaux que Julia a laiss\202 avant de mourir \202taient autant de faux indices qui ne servaient qu'\205 faire ressortir l'importance des parchemins ... Effectivement, il y a plus d'un an, je travailais avec Murielle au d\202cryptage de ces manuscrits que je venais de trouver . Ma femme a fait la relation entre notre travail et la disparition de Murielle mais elle n'a jamais eu de preuves . Si ce n'est cette bague qu'elle a retrouv\202 un jour dans mes affaires . Une nuit, nous nous sommes aventur\202s dans le passage secret que nous avions d\202couvert . Murielle est morte par accident dans la pi\212ce de la vierge . J'ai r\202cup\202r\202 la bague rapidement, trouv\202 le tr\202sor et me suis enfuis . Je ne pensais pas qu'elle vivait encore, et je n'ai rien dit car j'avais besoin d'argent . J'ai fait passer cette somme sur le compte des courses de chevaux ...Partez maintenant, puisque vous n'\210tes pas de la police . Laissez moi seul !$", + "F\202vrier 1951 ... Profession : detective priv\202 . Le froid figeait Paris et mes affaires lorsque ...$", + "Une lettre, un appel, des souvenirs d'une enfance encore proche . Que de jeux dans les pi\212ces d\202labr\202es du manoir de Mortevielle . Julia, une vieille femme a pr\202sent .$", " au bureau$", - " … la cuisine$", - " … la cave$", + " \205 la cuisine$", + " \205 la cave$", " dans le couloir$", " dehors$", - " la salle … manger$", + " la salle \205 manger$", " dans le manoir$", " devant le manoir$", - " … la chapelle$", + " \205 la chapelle$", " devant le puits$", " au nord$", - " derriŠre le manoir$", + " derri\212re le manoir$", " au sud$", - " … l'est$", - " … l'ouest$", + " \205 l'est$", + " \205 l'ouest$", " vers le manoir$", " plus loin$", " dans l'eau$", " hors du puits$", " dans le puits$", - " choix sur ‚cran$", + " choix sur \202cran$", " Dans la serie MYSTERE...$", " LE MANOIR DE MORTEVIELLE$", "$", @@ -1095,9 +1095,9 @@ const char *gameDataFr[] = { " A VOUS DE JOUER$", " attacher$", " attendre$", - " d‚foncer$", + " d\202foncer$", " dormir$", - " ‚couter$", + " \202couter$", " entrer$", " fermer$", " fouiller$", @@ -1119,7 +1119,7 @@ const char *gameDataFr[] = { " lire$", " poser$", " regarder$", - " L‚o$", + " L\202o$", " Pat$", " Guy$", " Eva$", @@ -1128,40 +1128,40 @@ const char *gameDataFr[] = { " Ida$", " Max$", "Comment Julia est-elle morte ?$", - "Elle s'est suicid‚e$", - "Elle est morte assassin‚e$", + "Elle s'est suicid\202e$", + "Elle est morte assassin\202e$", "Elle est morte accidentellement$", "Elle est morte naturellement$", - "D'o— provenait l'argent qui a permis la restauration du manoir ?$", + "D'o\227 provenait l'argent qui a permis la restauration du manoir ?$", "chantage$", "travail$", - "h‚ritage$", + "h\202ritage$", "courses$", "rentes$", "hold-up$", - "d‚couverte$", - "Quel est le hobby de L‚o ?$", + "d\202couverte$", + "Quel est le hobby de L\202o ?$", "recherches historiques$", "politique$", "peinture$", "drogue$", "sciences occultes$", "direction d'une secte$", - "Julia a laiss‚ une s‚rie d'indices . Ceux-ci sont repr‚sent‚s en un seul lieu . Lequel ?$", + "Julia a laiss\202 une s\202rie d'indices . Ceux-ci sont repr\202sent\202s en un seul lieu . Lequel ?$", "Chapelle$", - "Ext‚rieur$", + "Ext\202rieur$", "Cave$", "Grenier$", "Cuisine$", - "Salle … manger$", + "Salle \205 manger$", "Chambre Julia$", - "Chambre L‚o$", + "Chambre L\202o$", "Chambre Pat$", "Chambre Bob$", "Chambre Max$", "Chambre Luc/Ida$", "Chambre Guy/Eva$", - "L'indice principal qui vous a permis d'arriver … la porte du souterrain est :$", + "L'indice principal qui vous a permis d'arriver \205 la porte du souterrain est :$", "Un poignard$", "Une bague$", "Un livre$", @@ -1175,30 +1175,30 @@ const char *gameDataFr[] = { "Trois$", "Quatre$", "Cinq$", - "Combien de personnes sont m‚l‚es … cette histoire - Julia y comprise, vous except‚ - ?$", + "Combien de personnes sont m\202l\202es \205 cette histoire - Julia y comprise, vous except\202 - ?$", "Neuf$", "Dix$", "Onze$", - "Quel ‚tait le pr‚nom de la personne inconnue ?$", + "Quel \202tait le pr\202nom de la personne inconnue ?$", "Mireille$", - "Fran‡oise$", + "Fran\207oise$", "Maguy$", "Emilie$", "Murielle$", "Sophie$", - "De qui Murielle ‚tait-elle la maŚtresse ?$", + "De qui Murielle \202tait-elle la ma\214tresse ?$", "Bob$", "Luc$", "Guy$", - "L‚o$", + "L\202o$", "Max$", "Murielle partageait une occupation avec une autre personne . Qui ?$", - "[1][ |Seul le hazard vous a permis d'arriver ici . Vous pr‚f‚rez|retourner enqu‚ter afin de mieux comprendre ...][ok]$", - "[1][ |Ins‚rez la disquette 1 dans le lecteur A][ok]$", + "[1][ |Seul le hazard vous a permis d'arriver ici . Vous pr\202f\202rez|retourner enqu\202ter afin de mieux comprendre ...][ok]$", + "[1][ |Ins\202rez la disquette 1 dans le lecteur A][ok]$", "[1][ |! ERREUR DISQUETTE !|On arrete tout][ok]$", - "[1][ |Vous devriez avoir remarqu‚|00% des indices][ok]$", - "[1][ |Ins‚rez la disquette 2 dans le lecteur A][ok]$", - "[1][ |Avant d'aller plus loin, vous faites|un point sur l'‚tat de vos connaissances][ok]$", + "[1][ |Vous devriez avoir remarqu\202|00% des indices][ok]$", + "[1][ |Ins\202rez la disquette 2 dans le lecteur A][ok]$", + "[1][ |Avant d'aller plus loin, vous faites|un point sur l'\202tat de vos connaissances][ok]$", " MASTER .$", " rorL$", }; @@ -1234,7 +1234,7 @@ const char *gameDataDe[] = { "Die Wappen$", "$", "Max, der Diener, empfaengt Sie und wird Sie dann in Ihr Zimmer begleiten$", - " Morteville 16/2/51@ Mein lieber Jer“me@Im Anschluss an mein Telegramm teile ich Ihnen die Gruende meiner Unruhe mit: vor 1 Jahr verschwand meine Gesellschafterin Murielle. Eventuell hat das Verschwinden etwas mit dem finanziel len Umschwung auf dem Landsitz zu tun, oder... Eine Stille, die schwer zu verstehen ist fuer mei-nen Sohn Guy. Da ich bis heute nichts bezueglich dieser Sache unternehmen konnte, zaehle ich auf Sie, um die Affaere zu regeln. Falls sich mein Gesundheitszustand nicht bessert, treffen Sie bitte die Entscheidungen, die Sie fuer richtig halten. @ In Freundschaft. JULIA DEFRANCK$", + " Morteville 16/2/51@ Mein lieber Jer\223me@Im Anschluss an mein Telegramm teile ich Ihnen die Gruende meiner Unruhe mit: vor 1 Jahr verschwand meine Gesellschafterin Murielle. Eventuell hat das Verschwinden etwas mit dem finanziel len Umschwung auf dem Landsitz zu tun, oder... Eine Stille, die schwer zu verstehen ist fuer mei-nen Sohn Guy. Da ich bis heute nichts bezueglich dieser Sache unternehmen konnte, zaehle ich auf Sie, um die Affaere zu regeln. Falls sich mein Gesundheitszustand nicht bessert, treffen Sie bitte die Entscheidungen, die Sie fuer richtig halten. @ In Freundschaft. JULIA DEFRANCK$", "Spaeter erzaehlt Ihnen Guy von Leo's Selbstmord nach einer verrueckten Wette beim Rennen!$", "F3: WIEDERHOLUNG@F8: STOP$", "Der Hausherr$", @@ -1611,7 +1611,7 @@ const char *gameDataDe[] = { "Das ist sehr schoen und sehr alt.$", "Das ist ein Ort, den ich nie gesehen habe.$", "Leos Meinung nach schien es, als seien die Monde spaeter gemacht worden.$", - "Mme par ce temps, vous avez d‚nich‚ un soleil ...$", + "M\210me par ce temps, vous avez d\202nich\202 un soleil ...$", "Tief und beunruhigend. Der Fortschritt hat gutes an sich.$", "Der Rest bleibt fuer mich eines der groessten Raetsel.$", "In letzter Zeit sprach sie oft von einer Reise und dann...$", @@ -1762,14 +1762,14 @@ const char *gameDataDe[] = { "zwei$", "drei$", "vier$", - "fnf$", + "f\201nf$", " Wieviele Personen sind in die Geschichte verwickelt ? (Julia eingeschlossen, ausgenommen Sie)$", "neun$", "zehn$", "elf$", " Wie war der Name der unbekannten Person ?$", "Mireille$", - "Fran‡oise$", + "Fran\207oise$", "Maguy$", "Emilie$", "Murielle$", -- cgit v1.2.3 From c16d414e9bba20f9154f6e7873bc35e1dbe2fdde Mon Sep 17 00:00:00 2001 From: Thierry Crozat Date: Sat, 13 Jul 2013 22:44:07 +0100 Subject: MORTEVIELLE: Fix typo in English text --- devtools/create_mortdat/enginetext.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/devtools/create_mortdat/enginetext.h b/devtools/create_mortdat/enginetext.h index f785c4d974..6095f09360 100644 --- a/devtools/create_mortdat/enginetext.h +++ b/devtools/create_mortdat/enginetext.h @@ -29,7 +29,7 @@ const char *engineDataEn[] = { "[2][ ][YES][NO]", "Go to", - "Someone enters, looks surised, but says nothing", + "Someone enters, looks surprised, but says nothing", " Cool ", "Oppressive", " Tense ", @@ -136,7 +136,7 @@ const char *engineDataFr[] = { const char *engineDataDe[] = { "[2][ ][JA][NEIN]", "Go to", - "Someone enters, looks surised, but says nothing", + "Someone enters, looks surprised, but says nothing", "Cool", "Schwer", "Ungesund", -- cgit v1.2.3 From e14278eb583253504e85c3f4db9d56d3b3d945fb Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 13 Jul 2013 19:10:03 -0400 Subject: MORTEVIELLE: Changed savegames to use the game target to generate filenames --- engines/mortevielle/detection.cpp | 3 ++- engines/mortevielle/mortevielle.cpp | 15 ++++++++++++- engines/mortevielle/mortevielle.h | 2 ++ engines/mortevielle/saveload.cpp | 42 +++++++++++++++++++++++-------------- engines/mortevielle/saveload.h | 15 ++++++++----- 5 files changed, 54 insertions(+), 23 deletions(-) diff --git a/engines/mortevielle/detection.cpp b/engines/mortevielle/detection.cpp index 9fe0927706..28cbc77b8b 100644 --- a/engines/mortevielle/detection.cpp +++ b/engines/mortevielle/detection.cpp @@ -89,7 +89,8 @@ SaveStateList MortevielleMetaEngine::listSaves(const char *target) const { } SaveStateDescriptor MortevielleMetaEngine::querySaveMetaInfos(const char *target, int slot) const { - return Mortevielle::SavegameManager::querySaveMetaInfos(slot); + Common::String filename = Mortevielle::MortevielleEngine::generateSaveFilename(target, slot); + return Mortevielle::SavegameManager::querySaveMetaInfos(filename); } diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 2734f8cc93..8ed6751b50 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -55,6 +55,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _text.setParent(this); _soundManager.setParent(this); _speechManager.setParent(this); + _savegameManager.setParent(this); _lastGameFrame = 0; _mouseClick = false; @@ -146,6 +147,18 @@ Common::Error MortevielleEngine::saveGameState(int slot, const Common::String &d return _savegameManager.saveGame(slot, desc); } +/** + * Support method that generates a savegame name + * @param slot Slot number + */ +Common::String MortevielleEngine::generateSaveFilename(const Common::String &target, int slot) { + if (slot == 0) + // Initial game state loaded when the game starts + return "sav0.mor"; + + return Common::String::format("%s.%03d", target.c_str(), slot); +} + /** * Initialise the game state */ @@ -335,7 +348,7 @@ Common::Error MortevielleEngine::run() { // Either load the initial game state savegame, or the specified savegame number adzon(); - _savegameManager.loadSavegame(loadSlot); + _savegameManager.loadSavegame(generateSaveFilename(loadSlot)); // Run the main game loop mainGame(); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index dcb61a6057..5255865cc5 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -498,6 +498,8 @@ public: virtual Common::Error run(); uint32 getGameFlags() const; Common::Language getLanguage() const; + static Common::String generateSaveFilename(const Common::String &target, int slot); + Common::String generateSaveFilename(int slot) { return generateSaveFilename(_targetName, slot); } int getChar(); bool keyPressed(); diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 093f22e9cf..382fd14277 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -36,8 +36,8 @@ namespace Mortevielle { static const char SAVEGAME_ID[4] = { 'M', 'O', 'R', 'T' }; -Common::String SavegameManager::generateSaveName(int slotNumber) { - return Common::String::format("sav%d.mor", slotNumber); +void SavegameManager::setParent(MortevielleEngine *vm) { + _vm = vm; } /** @@ -71,14 +71,10 @@ void SavegameManager::sync_save(Common::Serializer &sz) { * Inner code for loading a saved game * @remarks Originally called 'takesav' */ -void SavegameManager::loadSavegame(int n) { - // -- Load the file - Common::String filename = generateSaveName(n); - +void SavegameManager::loadSavegame(const Common::String &filename) { // Try loading first from the save area Common::SeekableReadStream *stream = g_system->getSavefileManager()->openForLoading(filename); - // If not present, try loading from the program folder Common::File f; if (stream == NULL) { if (!f.open(filename)) @@ -115,10 +111,10 @@ void SavegameManager::loadSavegame(int n) { /** * Load a saved game */ -Common::Error SavegameManager::loadGame(int n) { +Common::Error SavegameManager::loadGame(const Common::String &filename) { g_vm->_mouse.hideMouse(); g_vm->displayEmptyHand(); - loadSavegame(n); + loadSavegame(filename); /* Initialization */ g_vm->charToHour(); @@ -144,7 +140,7 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { if (g_vm->_saveStruct._currPlace == ROOM26) g_vm->_saveStruct._currPlace = LANDING; - Common::String filename = generateSaveName(n); + Common::String filename = _vm->generateSaveFilename(n); f = g_system->getSavefileManager()->openForSaving(filename); // Write out the savegame header @@ -168,6 +164,14 @@ Common::Error SavegameManager::saveGame(int n, const Common::String &saveName) { return Common::kNoError; } +Common::Error SavegameManager::loadGame(int slot) { + return loadGame(_vm->generateSaveFilename(slot)); +} + +Common::Error SavegameManager::saveGame(int slot) { + return saveGame(slot, _vm->generateSaveFilename(slot)); +} + void SavegameManager::writeSavegameHeader(Common::OutSaveFile *out, const Common::String &saveName) { // Write out a savegame header out->writeByte(SAVEGAME_VERSION); @@ -226,8 +230,10 @@ bool SavegameManager::readSavegameHeader(Common::InSaveFile *in, SavegameHeader return true; } -SaveStateList SavegameManager::listSaves(const char *target) { - Common::String pattern = "sav*.mor"; +SaveStateList SavegameManager::listSaves(const Common::String &target) { + Common::String pattern = target; + pattern += ".???"; + Common::StringArray files = g_system->getSavefileManager()->listSavefiles(pattern); sort(files.begin(), files.end()); // Sort (hopefully ensuring we are sorted numerically..) @@ -235,7 +241,7 @@ SaveStateList SavegameManager::listSaves(const char *target) { for (Common::StringArray::const_iterator file = files.begin(); file != files.end(); ++file) { // Obtain the last 3 digits of the filename, since they correspond to the save slot const Common::String &fname = *file; - int slotNumber = atoi(fname.c_str() + 3); + int slotNumber = atoi(fname.c_str() + fname.size() - 3); Common::InSaveFile *in = g_system->getSavefileManager()->openForLoading(fname); if (in) { @@ -274,11 +280,15 @@ SaveStateList SavegameManager::listSaves(const char *target) { return saveList; } -SaveStateDescriptor SavegameManager::querySaveMetaInfos(int slot) { - Common::String fileName = Mortevielle::SavegameManager::generateSaveName(slot); +SaveStateDescriptor SavegameManager::querySaveMetaInfos(const Common::String &fileName) { Common::InSaveFile *f = g_system->getSavefileManager()->openForLoading(fileName); if (f) { + // Get the slot number + int slot = 1; + if (fileName.size() > 4 && fileName[fileName.size() - 4] == '.') + slot = atoi(fileName.c_str() + fileName.size() - 3); + // Check to see if it's a ScummVM savegame or not char buffer[4]; f->read(buffer, 4); @@ -289,7 +299,7 @@ SaveStateDescriptor SavegameManager::querySaveMetaInfos(int slot) { // Original savegame perhaps? delete f; - SaveStateDescriptor desc(slot, Common::String::format("Savegame #%d", slot)); + SaveStateDescriptor desc(slot, Common::String::format("Savegame - %s", slot)); desc.setDeletableFlag(slot != 0); desc.setWriteProtectedFlag(slot == 0); return desc; diff --git a/engines/mortevielle/saveload.h b/engines/mortevielle/saveload.h index 140b039b51..6613b62ac7 100644 --- a/engines/mortevielle/saveload.h +++ b/engines/mortevielle/saveload.h @@ -47,21 +47,26 @@ struct SavegameHeader { int totalFrames; }; +class MortevielleEngine; + class SavegameManager { private: + MortevielleEngine *_vm; byte _tabdonSaveBuffer[391]; void sync_save(Common::Serializer &sz); public: - void loadSavegame(int n); - Common::Error loadGame(int n); + void setParent(MortevielleEngine *vm); + void loadSavegame(const Common::String &filename); + Common::Error loadGame(const Common::String &filename); Common::Error saveGame(int n, const Common::String &saveName); + Common::Error loadGame(int slot); + Common::Error saveGame(int slot); void writeSavegameHeader(Common::OutSaveFile *out, const Common::String &saveName); static bool readSavegameHeader(Common::InSaveFile *in, SavegameHeader &header); - static Common::String generateSaveName(int slotNumber); - static SaveStateList listSaves(const char *target); - static SaveStateDescriptor querySaveMetaInfos(int slot); + static SaveStateList listSaves(const Common::String &target); + static SaveStateDescriptor querySaveMetaInfos(const Common::String &fileName); }; } // End of namespace Mortevielle -- cgit v1.2.3 From 73bb5c5fbe66329f9074c2661a2035435e6756a4 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Thu, 18 Jul 2013 09:27:55 -0400 Subject: DEVTOOLS: Moved implementation of create_mortdat File class from the header file --- devtools/create_mortdat/create_mortdat.cpp | 62 +++++++++++++++++++++++++++++ devtools/create_mortdat/create_mortdat.h | 63 +++++++----------------------- 2 files changed, 76 insertions(+), 49 deletions(-) diff --git a/devtools/create_mortdat/create_mortdat.cpp b/devtools/create_mortdat/create_mortdat.cpp index 2dff398de2..cb7d6aa189 100644 --- a/devtools/create_mortdat/create_mortdat.cpp +++ b/devtools/create_mortdat/create_mortdat.cpp @@ -42,6 +42,68 @@ #include "enginetext.h" #include "gametext.h" + +bool File::open(const char *filename, AccessMode mode) { + f = fopen(filename, (mode == kFileReadMode) ? "rb" : "wb"); + return (f != NULL); +} + +void File::close() { + fclose(f); + f = NULL; +} + +int File::seek(int32 offset, int whence) { + return fseek(f, offset, whence); +} + +long File::read(void *buffer, int len) { + return fread(buffer, 1, len, f); +} +void File::write(const void *buffer, int len) { + fwrite(buffer, 1, len, f); +} + +byte File::readByte() { + byte v; + read(&v, sizeof(byte)); + return v; +} + +uint16 File::readWord() { + uint16 v; + read(&v, sizeof(uint16)); + return FROM_LE_16(v); +} + +uint32 File::readLong() { + uint32 v; + read(&v, sizeof(uint32)); + return FROM_LE_32(v); +} + +void File::writeByte(byte v) { + write(&v, sizeof(byte)); +} + +void File::writeWord(uint16 v) { + uint16 vTemp = TO_LE_16(v); + write(&vTemp, sizeof(uint16)); +} + +void File::writeLong(uint32 v) { + uint32 vTemp = TO_LE_32(v); + write(&vTemp, sizeof(uint32)); +} + +void File::writeString(const char *s) { + write(s, strlen(s) + 1); +} + +uint32 File::pos() { + return ftell(f); +} + /*-------------------------------------------------------------------------*/ void openOutputFile(const char *outFilename) { diff --git a/devtools/create_mortdat/create_mortdat.h b/devtools/create_mortdat/create_mortdat.h index 908cb61951..8c210d32d9 100644 --- a/devtools/create_mortdat/create_mortdat.h +++ b/devtools/create_mortdat/create_mortdat.h @@ -43,55 +43,20 @@ class File { private: FILE *f; public: - bool open(const char *filename, AccessMode mode = kFileReadMode) { - f = fopen(filename, (mode == kFileReadMode) ? "rb" : "wb"); - return (f != NULL); - } - void close() { - fclose(f); - f = NULL; - } - int seek(int32 offset, int whence = SEEK_SET) { - return fseek(f, offset, whence); - } - long read(void *buffer, int len) { - return fread(buffer, 1, len, f); - } - void write(const void *buffer, int len) { - fwrite(buffer, 1, len, f); - } - byte readByte() { - byte v; - read(&v, sizeof(byte)); - return v; - } - uint16 readWord() { - uint16 v; - read(&v, sizeof(uint16)); - return FROM_LE_16(v); - } - uint32 readLong() { - uint32 v; - read(&v, sizeof(uint32)); - return FROM_LE_32(v); - } - void writeByte(byte v) { - write(&v, sizeof(byte)); - } - void writeWord(uint16 v) { - uint16 vTemp = TO_LE_16(v); - write(&vTemp, sizeof(uint16)); - } - void writeLong(uint32 v) { - uint32 vTemp = TO_LE_32(v); - write(&vTemp, sizeof(uint32)); - } - void writeString(const char *s) { - write(s, strlen(s) + 1); - } - uint32 pos() { - return ftell(f); - } + bool open(const char *filename, AccessMode mode = kFileReadMode); + void close(); + int seek(int32 offset, int whence = SEEK_SET); + uint32 pos(); + long read(void *buffer, int len); + void write(const void *buffer, int len); + + byte readByte(); + uint16 readWord(); + uint32 readLong(); + void writeByte(byte v); + void writeWord(uint16 v); + void writeLong(uint32 v); + void writeString(const char *s); }; File outputFile, mortCom; -- cgit v1.2.3 From a888de559944dffdffb77d339b7758eb867ea6a0 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 17 Jul 2013 15:21:27 +0200 Subject: MORTEVIELLE: Improve German engine texts --- devtools/create_mortdat/enginetext.h | 58 ++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/devtools/create_mortdat/enginetext.h b/devtools/create_mortdat/enginetext.h index 6095f09360..e1c40f898b 100644 --- a/devtools/create_mortdat/enginetext.h +++ b/devtools/create_mortdat/enginetext.h @@ -135,52 +135,52 @@ const char *engineDataFr[] = { const char *engineDataDe[] = { "[2][ ][JA][NEIN]", - "Go to", - "Someone enters, looks surprised, but says nothing", + "gehen", + "Jemand kommt herein, scheint erstaunt, sagt nichts", "Cool", "Schwer", "Ungesund", "Idem", - "You", - "are", - "Alone", + "Sie", + "sind", + "allein", "Verdammt! Sie hoeren ein Geraeush...", "Sie haetten ", "% der Hinweise| bemerken muessen...", - "Do you want to wake up?", + "Moechten Sie aufwachen?", "OK", "", " schreiben", " lesen", - " Restart ", - "F3 nochmals", + " wieder ", + "F3: nochmals", "F8: stop", - "Hide self", - "take", - " probe ", - " raise ", + " sich verstecken", + " nehmen", + " sondieren", + " hochheben", " -WEITER- ", " -STOP- ", "[1][ Benutzen Sie jetzt das Menue DEP...][OK]", - "lift", - "read", - - "look", - "search", - "open", - "put", - "turn", - "tie", - "close", - "hit", - "pose", - "smash", - - "smell", - "scratch", - "probe", + "hochheben", + "lesen", + + "anschauen", + "durchsuchen", + "oeffnen", + "setzen", + "drehen", + "befestigen", + "schliessen", + "klopfen", + "hinlegen", + "eindruecken", + + "fuehlen", + "abkratzen", + "sondieren", "[1][ Benutzen Sie jetzt das Menue DEP...][OK]", "& tag", NULL -- cgit v1.2.3 From 69f593ad1e199a8768ed2a0b5a618b0ffaa353ae Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 17 Jul 2013 20:32:50 +0200 Subject: MORTEVIELLE: Some renaming in intro functions --- engines/mortevielle/dialogs.cpp | 20 ++++++++++++++------ engines/mortevielle/dialogs.h | 6 +++--- engines/mortevielle/mortevielle.cpp | 4 ++-- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 69cb81b4ef..1e82863237 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -423,7 +423,7 @@ void DialogManager::drawF3F8() { * Graphical Device if modified * @remarks Originally called 'diver' */ -void DialogManager::checkForF8(int SpeechNum, bool drawAni50Fl) { +void DialogManager::checkForF8(int SpeechNum, bool drawFrame2Fl) { _vm->testKeyboard(); do { _vm->_speechManager.startSpeech(SpeechNum, 0, 0); @@ -434,7 +434,7 @@ void DialogManager::checkForF8(int SpeechNum, bool drawAni50Fl) { if (_vm->_newGraphicalDevice != _vm->_currGraphicalDevice) { _vm->_currGraphicalDevice = _vm->_newGraphicalDevice; _vm->hirs(); - aff50(drawAni50Fl); + displayIntroScreen(drawFrame2Fl); } } while (_vm->_key != 66); // keycode for F8 } @@ -455,13 +455,17 @@ int DialogManager::waitForF3F8() { return key; } -void DialogManager::aff50(bool drawAni50Fl) { +/** + * Intro function - display intro screen + * @remarks Originally called 'aff50' + */ +void DialogManager::displayIntroScreen(bool drawFrame2Fl) { _vm->_caff = 50; _vm->_maff = 0; _vm->_text.taffich(); _vm->draw(kAdrDes, 63, 12); - if (drawAni50Fl) - ani50(); + if (drawFrame2Fl) + displayIntroFrame2(); else _vm->handleDescriptionText(2, kDialogStringIndex + 142); @@ -469,7 +473,11 @@ void DialogManager::aff50(bool drawAni50Fl) { drawF3F8(); } -void DialogManager::ani50() { +/** + * Intro function - display 2nd frame of intro + * @remarks Originally called 'ani50' + */ +void DialogManager::displayIntroFrame2() { _vm->_crep = _vm->animof(1, 1); _vm->pictout(kAdrAni, _vm->_crep, 63, 12); _vm->_crep = _vm->animof(2, 1); diff --git a/engines/mortevielle/dialogs.h b/engines/mortevielle/dialogs.h index 35c3c34cac..af667e40c5 100644 --- a/engines/mortevielle/dialogs.h +++ b/engines/mortevielle/dialogs.h @@ -54,10 +54,10 @@ public: void setParent(MortevielleEngine *vm); int show(const Common::String &msg, int n); void drawF3F8(); - void checkForF8(int SpeechNum, bool drawAni50Fl); + void checkForF8(int SpeechNum, bool drawFrame2Fl); int waitForF3F8(); - void aff50(bool drawAni50Fl); - void ani50(); + void displayIntroScreen(bool drawFrame2Fl); + void displayIntroFrame2(); bool showKnowledgeCheck(); }; diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 8ed6751b50..3505205977 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -365,13 +365,13 @@ Common::Error MortevielleEngine::run() { * Show the game introduction */ void MortevielleEngine::showIntroduction() { - _dialogManager.aff50(false); + _dialogManager.displayIntroScreen(false); _speechManager._mlec = 0; _dialogManager.checkForF8(142, false); if (shouldQuit()) return; - _dialogManager.ani50(); + _dialogManager.displayIntroFrame2(); _dialogManager.checkForF8(143, true); if (shouldQuit()) return; -- cgit v1.2.3 From 85d79d0af8bbdd55b0e6c7674cd260a384d408d7 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 17 Jul 2013 20:36:15 +0200 Subject: MORTEVIELLE: Enlarge F3/F8 dialog --- engines/mortevielle/dialogs.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 1e82863237..d2f9274d25 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -415,7 +415,7 @@ void DialogManager::drawF3F8() { int f8Width = _vm->_screenSurface.getStringWidth(f8); // Write out the bounding box - _vm->_screenSurface.drawBox(0, 42, MAX(f3Width, f8Width) + 6, 16, 7); + _vm->_screenSurface.drawBox(0, 42, MAX(f3Width, f8Width) + 6, 18, 7); } /** -- cgit v1.2.3 From 09ccb836a6c5b690e8c96fc1026def119dd75c5e Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 17 Jul 2013 20:40:42 +0200 Subject: MORTEVIELLE: Enlarge box around screens in order to avoid to display a line of the picture below the border --- engines/mortevielle/utils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 78a4db8ad2..cc75f2ae7b 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -388,7 +388,7 @@ void MortevielleEngine::setTextColor(int col) { */ void MortevielleEngine::prepareScreenType1() { // Large drawing - _screenSurface.drawBox(0, 11, 512, 163, 15); + _screenSurface.drawBox(0, 11, 512, 164, 15); } /** -- cgit v1.2.3 From f3a90ab1904c68cabb4c8f902b3adfcfb10479db Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 18 Jul 2013 20:24:51 +0200 Subject: MORTEVIELLE: Modify some more boxes --- engines/mortevielle/utils.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index cc75f2ae7b..6469939f17 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -1698,11 +1698,11 @@ void MortevielleEngine::clearDescriptionBar() { _mouse.hideMouse(); if (_largestClearScreen) { _screenSurface.fillRect(0, Common::Rect(1, 176, 633, 199)); - _screenSurface.drawBox(0, 175, 634, 24, 15); + _screenSurface.drawBox(0, 176, 634, 23, 15); _largestClearScreen = false; } else { _screenSurface.fillRect(0, Common::Rect(1, 176, 633, 190)); - _screenSurface.drawBox(0, 175, 634, 15, 15); + _screenSurface.drawBox(0, 176, 634, 14, 15); } _mouse.showMouse(); } @@ -2986,7 +2986,7 @@ void MortevielleEngine::drawPicture() { _screenSurface.drawBox(118, 32, 291, 121, 15); // Medium box } else if (_caff > 69) { draw(kAdrDes, 112, 48); // Heads - _screenSurface.drawBox(222, 47, 155, 91, 15); + _screenSurface.drawBox(222, 47, 155, 92, 15); } else { draw(kAdrDes, 0, 12); prepareScreenType1(); -- cgit v1.2.3 From 747d8f3047ba4520766c28c88a196b0fdcac6371 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 19 Jul 2013 10:41:09 +0200 Subject: MORTEVIELLE: Constify an array in actions, reduce the scope of some variables --- engines/mortevielle/actions.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 38cbb30927..c3b82b795e 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -386,8 +386,6 @@ void MortevielleEngine::fctSelfRead() { * @remarks Originally called 'tregarder' */ void MortevielleEngine::fctLook() { - int cx; - if (_caff > 99) { _crep = 103; return; @@ -433,7 +431,7 @@ void MortevielleEngine::fctLook() { } return; } - cx = _coreVar._currPlace; + int cx = _coreVar._currPlace; if (_coreVar._currPlace == CHAPEL) cx = 17; if ((_coreVar._currPlace > MANOR_FRONT) && (_coreVar._currPlace < DOOR)) @@ -475,7 +473,7 @@ void MortevielleEngine::fctSelftLook() { * @remarks Originally called 'tfouiller' */ void MortevielleEngine::fctSearch() { - const byte r[14] = {123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}; + static const byte r[14] = {123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}; if (_caff > 99) { getSearchDescription(_caff); @@ -1188,7 +1186,7 @@ void MortevielleEngine::fctEnter() { * @remarks Originally called 'tdormir' */ void MortevielleEngine::fctSleep() { - int z, j, h, m; + int j, h, m; if ((_coreVar._currPlace > LANDING) && (_coreVar._currPlace < ROOM26)) { _crep = 148; @@ -1212,7 +1210,7 @@ void MortevielleEngine::fctSleep() { do { if (h < 8) { _coreVar._faithScore -= (_coreVar._faithScore / 20); - z = (7 - h) * 2; + int z = (7 - h) * 2; if (m == 30) --z; _currentHourCount += z; @@ -1343,7 +1341,6 @@ void MortevielleEngine::fctDiscuss() { bool questionAsked[47]; int cy, cx; int x, y; -// int c; Common::String lib[47]; int choice; -- cgit v1.2.3 From 5924230634710250152014fd9dff10ddfcd90d2b Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 19 Jul 2013 10:59:20 +0200 Subject: MORTEVIELLE: Replace some British words by US ones --- engines/mortevielle/graphics.cpp | 12 ++++++------ engines/mortevielle/graphics.h | 2 +- engines/mortevielle/mortevielle.cpp | 12 ++++++------ engines/mortevielle/mortevielle.h | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index ff6014585c..d47b6b5a23 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -40,7 +40,7 @@ namespace Mortevielle { *-------------------------------------------------------------------------*/ /** - * Set palette entries from the 64 colour available EGA palette + * Set palette entries from the 64 color available EGA palette */ void PaletteManager::setPalette(const int *palette, uint idx, uint size) { assert((idx + size) <= 16); @@ -55,7 +55,7 @@ void PaletteManager::setPalette(const int *palette, uint idx, uint size) { *p++ = (i & 1) * 0xaa + (i >> 3 & 1) * 0x55; } - // Loop through setting palette colours based on the passed indexes + // Loop through setting palette colors based on the passed indexes for (; size > 0; --size, ++idx) { int palIndex = palette[idx]; assert(palIndex < 64); @@ -416,7 +416,7 @@ void GfxSurface::decode(const byte *pSrc) { entryIndex + 1, _xp, _yp, _width, _height, decomIndex); } - // At this point, the outputBuffer has the data for the image. Initialise the surface + // At this point, the outputBuffer has the data for the image. Initialize the surface // with the calculated size, and copy the lines to the surface create(_width, _height, Graphics::PixelFormat::createFormatCLUT8()); @@ -1033,16 +1033,16 @@ void ScreenSurface::drawBox(int x, int y, int dx, int dy, int col) { } /** - * Fills an area with the specified colour + * Fills an area with the specified color * @remarks Because the ScummVM surface is using a double height 640x400 surface to * simulate the original 640x400 surface, all Y values have to be doubled */ -void ScreenSurface::fillRect(int colour, const Common::Rect &bounds) { +void ScreenSurface::fillRect(int color, const Common::Rect &bounds) { Graphics::Surface destSurface = lockArea(Common::Rect(bounds.left, bounds.top * 2, bounds.right, bounds.bottom * 2)); // Fill the area - destSurface.fillRect(Common::Rect(0, 0, destSurface.w, destSurface.h), colour); + destSurface.fillRect(Common::Rect(0, 0, destSurface.w, destSurface.h), color); } /** diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 3a54f0c434..654814667f 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -100,7 +100,7 @@ public: void copyFrom(Graphics::Surface &src, int x, int y); void writeCharacter(const Common::Point &pt, unsigned char ch, int palIndex); void drawBox(int x, int y, int dx, int dy, int col); - void fillRect(int colour, const Common::Rect &bounds); + void fillRect(int color, const Common::Rect &bounds); void clearScreen(); void putxy(int x, int y) { _textPos = Common::Point(x, y); } void drawString(const Common::String &l, int command); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 3505205977..7829fabb5e 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -160,10 +160,10 @@ Common::String MortevielleEngine::generateSaveFilename(const Common::String &tar } /** - * Initialise the game state + * Initialize the game state */ -Common::ErrorCode MortevielleEngine::initialise() { - // Initialise graphics mode +Common::ErrorCode MortevielleEngine::initialize() { + // Initialize graphics mode initGraphics(SCREEN_WIDTH, SCREEN_HEIGHT, true); // Set debug channels @@ -329,8 +329,8 @@ void MortevielleEngine::readStaticStrings(Common::File &f, int dataSize, DataTyp /*-------------------------------------------------------------------------*/ Common::Error MortevielleEngine::run() { - // Initialise the game - Common::ErrorCode err = initialise(); + // Initialize the game + Common::ErrorCode err = initialize(); if (err != Common::kNoError) return err; @@ -353,7 +353,7 @@ Common::Error MortevielleEngine::run() { // Run the main game loop mainGame(); - // Cleanup (allocated in initialise()) + // Cleanup (allocated in initialize()) _screenSurface.free(); free(_speechManager._cfiphBuffer); free(_cfiecBuffer); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 5255865cc5..18cf274283 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -284,7 +284,7 @@ private: uint16 _dialogIndexArray[kMaxDialogIndex + 1]; Hint _dialogHintArray[kMaxDialogHint + 1]; - Common::ErrorCode initialise(); + Common::ErrorCode initialize(); Common::ErrorCode loadMortDat(); void readStaticStrings(Common::File &f, int dataSize, DataType dataType); void loadFont(Common::File &f); -- cgit v1.2.3 From eb0de360853a7c7353133ecb7f88b2839a0ee188 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 19 Jul 2013 11:21:05 +0200 Subject: MORTEVIELLE: Constify an array in graphics, reduce the scope of some variables --- engines/mortevielle/graphics.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index d47b6b5a23..c6356f48db 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -69,7 +69,7 @@ void PaletteManager::setPalette(const int *palette, uint idx, uint size) { * Set the default EGA palette */ void PaletteManager::setDefaultPalette() { - int defaultPalette[16] = { 0, 1, 2, 3, 4, 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63 }; + const int defaultPalette[16] = { 0, 1, 2, 3, 4, 5, 20, 7, 56, 57, 58, 59, 60, 61, 62, 63 }; setPalette(defaultPalette, 0, 16); } @@ -1072,21 +1072,20 @@ void ScreenSurface::setPixel(const Common::Point &pt, int palIndex) { * @remarks Originally called 'writeg' */ void ScreenSurface::drawString(const Common::String &l, int command) { - int i, x; - Common::Point pt; - int cecr = 0; - if (l == "") return; _vm->_mouse.hideMouse(); - pt = _textPos; + Common::Point pt = _textPos; + int i; if (_vm->_resolutionScaler == 2) i = 6; else i = 10; - x = pt.x + i * l.size(); + + int x = pt.x + i * l.size(); + int cecr = 0; switch (command) { case 1: -- cgit v1.2.3 From df7d181a6070b0400c38676514a43fbcfcfb0b8f Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 19 Jul 2013 11:24:42 +0200 Subject: MORTEVIELLE: Fix formatting glitch --- engines/mortevielle/graphics.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index 654814667f..fe8b365bfa 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -48,7 +48,7 @@ public: #define FONT_HEIGHT 6 #define FONT_NUM_CHARS 121 -class GfxSurface: public Graphics::Surface { +class GfxSurface : public Graphics::Surface { private: int _xp, _yp; int _xSize, _ySize; -- cgit v1.2.3 From 37a115e60b281dffa272f19060c6747c4af79ad9 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 19 Jul 2013 11:31:19 +0200 Subject: MORTEVIELLE: Use width and height provided by Graphics::Surface --- engines/mortevielle/graphics.cpp | 14 +++++++------- engines/mortevielle/graphics.h | 1 - 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index c6356f48db..0ac43a65da 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -86,7 +86,7 @@ void PaletteManager::setDefaultPalette() { #define BUFFER_SIZE 40000 void GfxSurface::decode(const byte *pSrc) { - _width = _height = 0; + w = h = 0; // If no transparency, use invalid (for EGA) palette index of 16. Otherwise get index to use _transparency = (*pSrc == 0) ? 16 : *(pSrc + 2); bool offsetFlag = *pSrc++ == 0; @@ -413,27 +413,27 @@ void GfxSurface::decode(const byte *pSrc) { pSrc = pSrcStart; debugC(2, kMortevielleGraphics, "Decoding image block %d position %d,%d size %d,%d method %d", - entryIndex + 1, _xp, _yp, _width, _height, decomIndex); + entryIndex + 1, _xp, _yp, w, h, decomIndex); } // At this point, the outputBuffer has the data for the image. Initialize the surface // with the calculated size, and copy the lines to the surface - create(_width, _height, Graphics::PixelFormat::createFormatCLUT8()); + create(w, h, Graphics::PixelFormat::createFormatCLUT8()); - for (int yCtr = 0; yCtr < _height; ++yCtr) { + for (int yCtr = 0; yCtr < h; ++yCtr) { const byte *copySrc = &outputBuffer[yCtr * DEFAULT_WIDTH]; byte *copyDest = (byte *)getBasePtr(0, yCtr); - Common::copy(copySrc, copySrc + _width, copyDest); + Common::copy(copySrc, copySrc + w, copyDest); } } void GfxSurface::majTtxTty() { if (!_yp) - _width += _xSize; + w += _xSize; if (!_xp) - _height += _ySize; + h += _ySize; } /** diff --git a/engines/mortevielle/graphics.h b/engines/mortevielle/graphics.h index fe8b365bfa..e31f5da29a 100644 --- a/engines/mortevielle/graphics.h +++ b/engines/mortevielle/graphics.h @@ -56,7 +56,6 @@ private: bool _nibbleFlag; int _thickness; int _yInc, _yEnd, _xInc, _xEnd; - int _width, _height; byte nextNibble(const byte *&pSrc); byte nextByte(const byte *&pSrc, const byte *&pLookup); -- cgit v1.2.3 From bb6db039d9258a2fdc30e5a6d185ae436c1e3d77 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 19 Jul 2013 11:33:42 +0200 Subject: MORTEVIELLE: Rename menu constant --- engines/mortevielle/menu.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index 6035c3ae11..c856f0edc2 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -35,7 +35,7 @@ namespace Mortevielle { -const byte _menuConstants[8][4] = { +const byte menuConstants[8][4] = { { 7, 37, 23, 8}, {19, 33, 23, 7}, {31, 89, 10, 21}, @@ -235,7 +235,7 @@ void Menu::invert(int indx) { int menuIndex = lo(_msg4); - _vm->_screenSurface.putxy(_menuConstants[_msg3 - 1][0] << 3, (menuIndex + 1) << 3); + _vm->_screenSurface.putxy(menuConstants[_msg3 - 1][0] << 3, (menuIndex + 1) << 3); Common::String str; switch (_msg3) { @@ -282,9 +282,9 @@ void Menu::invert(int indx) { void Menu::util(Common::Point pos) { - int ymx = (_menuConstants[_msg3 - 1][3] << 3) + 16; - int dxcar = _menuConstants[_msg3 - 1][2]; - int xmn = (_menuConstants[_msg3 - 1][0] << 2) * _vm->_resolutionScaler; + int ymx = (menuConstants[_msg3 - 1][3] << 3) + 16; + int dxcar = menuConstants[_msg3 - 1][2]; + int xmn = (menuConstants[_msg3 - 1][0] << 2) * _vm->_resolutionScaler; int ix; if (_vm->_resolutionScaler == 1) @@ -316,22 +316,22 @@ void Menu::menuDown(int ii) { _vm->_backgroundSurface.copyFrom(_vm->_screenSurface); // Draw the menu - xco = _menuConstants[ii - 1][0]; - lignNumb = _menuConstants[ii - 1][3]; + xco = menuConstants[ii - 1][0]; + lignNumb = menuConstants[ii - 1][3]; _vm->_mouse.hideMouse(); xco = xco << 3; if (_vm->_resolutionScaler == 1) cx = 10; else cx = 6; - xcc = xco + (_menuConstants[ii - 1][2] * cx) + 6; + xcc = xco + (menuConstants[ii - 1][2] * cx) + 6; if ((ii == 4) && (_vm->getLanguage() == Common::EN_ANY)) // Extra width needed for Self menu in English version xcc = 435; - _vm->_screenSurface.fillRect(15, Common::Rect(xco, 12, xcc, 10 + (_menuConstants[ii - 1][1] << 1))); - _vm->_screenSurface.fillRect(0, Common::Rect(xcc, 12, xcc + 4, 10 + (_menuConstants[ii - 1][1] << 1))); - _vm->_screenSurface.fillRect(0, Common::Rect(xco, 8 + (_menuConstants[ii - 1][1] << 1), xcc + 4, 12 + (_menuConstants[ii - 1][1] << 1))); + _vm->_screenSurface.fillRect(15, Common::Rect(xco, 12, xcc, 10 + (menuConstants[ii - 1][1] << 1))); + _vm->_screenSurface.fillRect(0, Common::Rect(xcc, 12, xcc + 4, 10 + (menuConstants[ii - 1][1] << 1))); + _vm->_screenSurface.fillRect(0, Common::Rect(xco, 8 + (menuConstants[ii - 1][1] << 1), xcc + 4, 12 + (menuConstants[ii - 1][1] << 1))); _vm->_screenSurface.putxy(xco, 16); cx = 0; do { -- cgit v1.2.3 From 67f900ed33bc56d586e3af54740060eab68273f9 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 19 Jul 2013 11:51:10 +0200 Subject: MORTEVIELLE: Reorder includes --- engines/mortevielle/actions.cpp | 5 +++-- engines/mortevielle/debugger.cpp | 2 +- engines/mortevielle/dialogs.cpp | 6 ++++-- engines/mortevielle/graphics.cpp | 7 ++++--- engines/mortevielle/menu.cpp | 10 ++++++---- engines/mortevielle/mortevielle.cpp | 16 +++++++++------- engines/mortevielle/mouse.cpp | 5 +++-- engines/mortevielle/outtext.cpp | 7 ++++--- engines/mortevielle/saveload.cpp | 7 ++++--- engines/mortevielle/sound.cpp | 5 +++-- engines/mortevielle/speech.cpp | 8 +++++--- engines/mortevielle/speech.h | 3 ++- engines/mortevielle/utils.cpp | 7 ++++--- 13 files changed, 52 insertions(+), 36 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index c3b82b795e..4fea2638f0 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -25,14 +25,15 @@ * Copyright (c) 1987-1989 Lankhor */ -#include "common/scummsys.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/dialogs.h" #include "mortevielle/menu.h" -#include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/speech.h" +#include "common/scummsys.h" + namespace Mortevielle { /** diff --git a/engines/mortevielle/debugger.cpp b/engines/mortevielle/debugger.cpp index 9c24954f83..042eb0e224 100644 --- a/engines/mortevielle/debugger.cpp +++ b/engines/mortevielle/debugger.cpp @@ -20,8 +20,8 @@ * */ -#include "mortevielle/debugger.h" #include "mortevielle/mortevielle.h" +#include "mortevielle/debugger.h" namespace Mortevielle { diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index d2f9274d25..2c644bc459 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -25,13 +25,15 @@ * Copyright (c) 1987-1989 Lankhor */ -#include "common/str.h" -#include "mortevielle/dialogs.h" #include "mortevielle/mortevielle.h" + +#include "mortevielle/dialogs.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/speech.h" +#include "common/str.h" + namespace Mortevielle { /** diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 0ac43a65da..1ced3003e2 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -25,12 +25,13 @@ * Copyright (c) 1987-1989 Lankhor */ +#include "mortevielle/mortevielle.h" +#include "mortevielle/graphics.h" +#include "mortevielle/mouse.h" + #include "common/endian.h" #include "common/system.h" #include "graphics/palette.h" -#include "mortevielle/graphics.h" -#include "mortevielle/mortevielle.h" -#include "mortevielle/mouse.h" namespace Mortevielle { diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index c856f0edc2..a28965523a 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -25,14 +25,16 @@ * Copyright (c) 1987-1989 Lankhor */ -#include "common/scummsys.h" -#include "common/str.h" -#include "common/textconsole.h" -#include "mortevielle/menu.h" #include "mortevielle/mortevielle.h" + +#include "mortevielle/menu.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" +#include "common/scummsys.h" +#include "common/str.h" +#include "common/textconsole.h" + namespace Mortevielle { const byte menuConstants[8][4] = { diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 7829fabb5e..418b0a079f 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -25,14 +25,8 @@ * Copyright (c) 1987-1989 Lankhor */ -#include "common/system.h" -#include "common/config-manager.h" -#include "common/debug-channels.h" -#include "engines/util.h" -#include "engines/engine.h" -#include "graphics/palette.h" -#include "graphics/pixelformat.h" #include "mortevielle/mortevielle.h" + #include "mortevielle/dialogs.h" #include "mortevielle/menu.h" #include "mortevielle/mouse.h" @@ -40,6 +34,14 @@ #include "mortevielle/saveload.h" #include "mortevielle/outtext.h" +#include "common/system.h" +#include "common/config-manager.h" +#include "common/debug-channels.h" +#include "engines/util.h" +#include "engines/engine.h" +#include "graphics/palette.h" +#include "graphics/pixelformat.h" + namespace Mortevielle { MortevielleEngine *g_vm; diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 4d3d8bb2ab..139ccbef6c 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -25,10 +25,11 @@ * Copyright (c) 1987-1989 Lankhor */ +#include "mortevielle/mortevielle.h" +#include "mortevielle/mouse.h" + #include "common/endian.h" #include "common/rect.h" -#include "mortevielle/mouse.h" -#include "mortevielle/mortevielle.h" namespace Mortevielle { diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 7778eb3484..81760d1afa 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -25,12 +25,13 @@ * Copyright (c) 1987-1989 Lankhor */ -#include "common/file.h" -#include "common/str.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/graphics.h" -#include "mortevielle/mortevielle.h" + +#include "common/file.h" +#include "common/str.h" namespace Mortevielle { diff --git a/engines/mortevielle/saveload.cpp b/engines/mortevielle/saveload.cpp index 382fd14277..ff3bee5c06 100644 --- a/engines/mortevielle/saveload.cpp +++ b/engines/mortevielle/saveload.cpp @@ -25,13 +25,14 @@ * Copyright (c) 1987-1989 Lankhor */ -#include "common/file.h" -#include "common/system.h" -#include "mortevielle/dialogs.h" #include "mortevielle/mortevielle.h" +#include "mortevielle/dialogs.h" #include "mortevielle/mouse.h" #include "mortevielle/saveload.h" +#include "common/file.h" +#include "common/system.h" + namespace Mortevielle { static const char SAVEGAME_ID[4] = { 'M', 'O', 'R', 'T' }; diff --git a/engines/mortevielle/sound.cpp b/engines/mortevielle/sound.cpp index de5c4feba6..d54ab71e50 100644 --- a/engines/mortevielle/sound.cpp +++ b/engines/mortevielle/sound.cpp @@ -25,9 +25,10 @@ * Copyright (c) 1987-1989 Lankhor */ -#include "common/scummsys.h" -#include "mortevielle/sound.h" #include "mortevielle/mortevielle.h" +#include "mortevielle/sound.h" + +#include "common/scummsys.h" namespace Mortevielle { diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 1fe130af83..aea49d8df1 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -25,11 +25,13 @@ * Copyright (c) 1987-1989 Lankhor */ -#include "common/endian.h" -#include "common/file.h" +#include "mortevielle/mortevielle.h" + #include "mortevielle/speech.h" #include "mortevielle/sound.h" -#include "mortevielle/mortevielle.h" + +#include "common/endian.h" +#include "common/file.h" namespace Mortevielle { diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h index 73f8e16067..7f779a86c3 100644 --- a/engines/mortevielle/speech.h +++ b/engines/mortevielle/speech.h @@ -28,9 +28,10 @@ #ifndef MORTEVIELLE_SPEECH_H #define MORTEVIELLE_SPEECH_H -#include "common/scummsys.h" #include "mortevielle/sound.h" +#include "common/scummsys.h" + namespace Mortevielle { const int kAdrNoise = 0x5cb0;/*2C00;*/ diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 6469939f17..ca6bdcdfc6 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -25,16 +25,17 @@ * Copyright (c) 1987-1989 Lankhor */ -#include "common/scummsys.h" -#include "graphics/cursorman.h" +#include "mortevielle/mortevielle.h" #include "mortevielle/dialogs.h" #include "mortevielle/menu.h" -#include "mortevielle/mortevielle.h" #include "mortevielle/mouse.h" #include "mortevielle/outtext.h" #include "mortevielle/speech.h" +#include "common/scummsys.h" +#include "graphics/cursorman.h" + namespace Mortevielle { /** -- cgit v1.2.3 From 220088d6e881988d7346adff02ff7d39e0ea00de Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 19 Jul 2013 14:03:53 +0200 Subject: MORTEVIELLE: Fix define name in Mortevielle.h --- engines/mortevielle/mortevielle.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 18cf274283..eb245c60ec 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -25,8 +25,8 @@ * Copyright (c) 1987-1989 Lankhor */ -#ifndef MORTEVIELLE_H -#define MORTEVIELLE_H +#ifndef MORTEVIELLE_MORTEVIELLE_H +#define MORTEVIELLE_MORTEVIELLE_H #include "common/events.h" #include "common/file.h" -- cgit v1.2.3 From 388b4a7b3390282b118a8b0720ae3a07c91f1934 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 19 Jul 2013 14:08:17 +0200 Subject: TOOLS: Janitorial: remove trailing spaces in extract_mort --- devtools/extract_mort/extract_mort.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/devtools/extract_mort/extract_mort.cpp b/devtools/extract_mort/extract_mort.cpp index 0164030769..fd6d8848af 100644 --- a/devtools/extract_mort/extract_mort.cpp +++ b/devtools/extract_mort/extract_mort.cpp @@ -40,7 +40,7 @@ #include "common/endian.h" enum AccessMode { - kFileReadMode = 1, + kFileReadMode = 1, kFileWriteMode = 2 }; @@ -108,7 +108,7 @@ public: fseek (f, 0, SEEK_END); int end = ftell (f); fseek (f, pos, SEEK_SET); - + return end; } }; @@ -228,7 +228,7 @@ static void addCompressedValue(int oct, int &indis, int &point, uint16 *strData) if (point < 5) { // Overlapping into next word ++indis; - + // Get the bits that fall into the next word and set it int remainder = oct & ((1 << (5 - point)) - 1); strData[indis] |= remainder << (16 - (5 - point)); -- cgit v1.2.3 From ed69aaf9991a63ad34085c67a8f5a04d968871ed Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 19 Jul 2013 14:22:28 +0200 Subject: MORTEVIELLE: Constify 3 more arrays --- engines/mortevielle/outtext.cpp | 4 ++-- engines/mortevielle/utils.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 81760d1afa..6bb775a423 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -189,8 +189,8 @@ void TextHandler::loadAniFile(Common::String filename, int32 skipSize, int lengt void TextHandler::taffich() { static const byte _rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; - byte tran1[] = { 121, 121, 138, 139, 120 }; - byte tran2[] = { 150, 150, 152, 152, 100, 110, 159, 100, 100 }; + static const byte tran1[] = { 121, 121, 138, 139, 120 }; + static const byte tran2[] = { 150, 150, 152, 152, 100, 110, 159, 100, 100 }; int cx, handle, npal; int32 lgt; diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index ca6bdcdfc6..2c1a501b19 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -182,7 +182,7 @@ void MortevielleEngine::addKeypress(Common::Event &evt) { } -static byte CURSOR_ARROW_DATA[16 * 16] = { +static const byte CURSOR_ARROW_DATA[16 * 16] = { 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -- cgit v1.2.3 From 72914aafabf88cd7b56ff2a10036e470a8d2f05b Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 19 Jul 2013 17:29:33 +0200 Subject: MORTEVIELLE: Simplify the way skip info is computed, as pointed by LordHoto --- engines/mortevielle/outtext.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 6bb775a423..d9d47a9fd3 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -133,11 +133,9 @@ void TextHandler::loadDesFile(Common::String filename, int32 skipSize, int lengt if (!f.open(filename)) error("Missing file %s", filename.c_str()); - int skipBlock = 0; - while (skipSize > 127) { - ++skipBlock; - skipSize -= 128; - } + int skipBlock = skipSize / 128; + skipSize %= 128; + if (skipBlock != 0) f.seek(skipBlock * 0x80); -- cgit v1.2.3 From 3d64ccac9c4cfbf477eb3e03273faa255d0bb6d3 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 19 Jul 2013 17:43:55 +0200 Subject: MORTEVIELLE: Fix glitch detected by criezy --- devtools/extract_mort/extract_mort.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devtools/extract_mort/extract_mort.cpp b/devtools/extract_mort/extract_mort.cpp index fd6d8848af..159309c0fa 100644 --- a/devtools/extract_mort/extract_mort.cpp +++ b/devtools/extract_mort/extract_mort.cpp @@ -322,7 +322,7 @@ static void export_strings(const char *textFilename) { do { extractCharacter(ch, indis, point, endFlag, strData); buffer[charIndex++] = ch; - if (ch == BUFFER_SIZE) { + if (charIndex == BUFFER_SIZE) { printf("Extracted string exceeded allowed buffer size.\n"); exit(1); } -- cgit v1.2.3 From 4c3b2d3f544f22c6f2404d5a25cfc23dee1d75af Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 19 Jul 2013 17:54:09 +0200 Subject: MORTEVIELLE: Add a safeguard in Copy() --- engines/mortevielle/utils.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 2c1a501b19..28f3e4f629 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2487,6 +2487,8 @@ void MortevielleEngine::palette(int v1) { */ Common::String MortevielleEngine::copy(const Common::String &s, int idx, size_t size) { + assert(idx + size < s.size()); + // Copy the substring into a temporary buffer char *tmp = new char[size + 1]; strncpy(tmp, s.c_str() + idx - 1, size); -- cgit v1.2.3 From 0e8491b162b9badbbaa72eaafebbee7cf95e732f Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 19 Jul 2013 18:00:15 +0200 Subject: MORTEVIELLE: Fix glitch in constant name. Thanks to LordHoto for pointing it out --- engines/mortevielle/speech.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h index 7f779a86c3..b3d7c15203 100644 --- a/engines/mortevielle/speech.h +++ b/engines/mortevielle/speech.h @@ -43,7 +43,7 @@ const int kAdrWord = 0x4000; const int kOffsetB1 = 6; const int kOffsetB3 = 6; -const float freq0 = 1.19318e6; +const float kfreq0 = 1.19318e6; const int kNullValue = 255; const int kTempoMusic = 71; const int kTempoNoise = 78; -- cgit v1.2.3 From a8c40e3c03dbfe70f96def059caf4f58c2f611e8 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Fri, 19 Jul 2013 22:51:25 -0400 Subject: MORTEVIELLE: Removed redundant mouse drawing code --- engines/mortevielle/mouse.cpp | 163 ++---------------------------------------- 1 file changed, 4 insertions(+), 159 deletions(-) diff --git a/engines/mortevielle/mouse.cpp b/engines/mortevielle/mouse.cpp index 139ccbef6c..dfc9ccd706 100644 --- a/engines/mortevielle/mouse.cpp +++ b/engines/mortevielle/mouse.cpp @@ -45,174 +45,19 @@ void MouseHandler::initMouse() { } /** - * Hide the mouse + * Backs up the area behind where the mouse cursor is to be drawn * @remarks Originally called 'hide_mouse' */ void MouseHandler::hideMouse() { - --_counter; - if (_counter == 0) { - int j = 0; - switch (_vm->_currGraphicalDevice) { - case MODE_CGA: { - int k = 0; - j = ((uint)_pos.y >> 1) * 80 + ((uint)_pos.x >> 2); - do { - WRITE_LE_UINT16(&_vm->_mem[0xb000 * 16 + j], s_s[0][k]); - WRITE_LE_UINT16(&_vm->_mem[0xb800 * 16 + j + 2], s_s[1][k]); - WRITE_LE_UINT16(&_vm->_mem[0xba00 * 16 + j], s_s[2][k]); - WRITE_LE_UINT16(&_vm->_mem[0xba00 * 16 + j + 2], s_s[3][k]); - j += 80; - ++k; - } while (k < 5); - } - break; - case MODE_AMSTRAD1512: { - bool imp = odd(_pos.y); - for (int i = 0; i <= 3; ++i) { - int k = 0; - j = 0; - do { - if (imp) { - WRITE_LE_UINT16(&_vm->_mem[0xb800 * 16 + j], s_s[i][k]); - j += 80 - 0x2000; - } else { - WRITE_LE_UINT16(&_vm->_mem[0xb800 * 16 + j], s_s[i][k]); - j += 0x2000; - } - imp = !imp; - ++k; - } while (k < 8); - } - break; - } - case MODE_EGA: { - int i = 0; - do { - int k = 0; - j = 0; - do { - // Useless ? - // ps = mem[0xa000 * 16 + j]; - _vm->_mem[0xa000 * 16 + j] = lo(s_s[i][k]); - - // Useless ?? - // ps = mem[0xa000 * 16 + j + 1]; - _vm->_mem[0xa000 * 16 + j + 1] = hi(s_s[i][k]); - j += 80; - ++k; - } while (k < 8); - ++i; - } while (i != 4); - } - break; - case MODE_HERCULES: - j = ((uint)_pos.y >> 1) * 80 + ((uint)_pos.x >> 3); - for (int i = 0; i <= 5; ++i) { - for (int k = 0; k <= 3; ++k) - WRITE_LE_UINT16(&_vm->_mem[0xb000 * 16 + k * 0x200 + j], s_s[i][k]); - j += 80; - } - break; - case MODE_TANDY: { - j = ((uint)_pos.y >> 2) * 160 + ((uint)_pos.x >> 1); - int k = 0; - do { - for (int i = 0; i <= 3; ++i) { - WRITE_LE_UINT16(&_vm->_mem[0xb800 * 16 + 0x200 * i + j], s_s[k][i + (k << 2)]); - WRITE_LE_UINT16(&_vm->_mem[0xb800 * 16 + 0x200 * i + j + 2], s_s[k + 3][i + (k << 2)]); - } - j += 160; - ++k; - } while (k != 3); - } - break; - default: - break; - } // case Gd - } + // No implementation needed in ScummVM } /** - * Show mouse + * Draws the mouse cursor * @remarks Originally called 'show_mouse' */ void MouseHandler::showMouse() { - int k, l; - - ++_counter; - if (_counter != 1) - return; - int j = 0; - int i = _pos.x & 7; - switch (_vm->_currGraphicalDevice) { - case MODE_CGA: - k = 0; - j = ((uint)_pos.y >> 1) * 80 + ((uint)_pos.x >> 2); - do { - s_s[0][k] = READ_LE_UINT16(&_vm->_mem[0xb800 * 16 + j]); - s_s[1][k] = READ_LE_UINT16(&_vm->_mem[0xb800 * 16 + j + 2]); - s_s[2][k] = READ_LE_UINT16(&_vm->_mem[0xba00 * 16 + j]); - s_s[3][k] = READ_LE_UINT16(&_vm->_mem[0xba00 * 16 + j + 2]); - j += 80; - ++k; - } while (k < 5); - break; - case MODE_AMSTRAD1512: { - bool imp = odd(_pos.y); - for (i = 0; i <= 3; ++i) { - j = 0; - imp = odd(_pos.y); - k = 0; - do { - if (imp) { - s_s[i][k] = READ_LE_UINT16(&_vm->_mem[0xb800 * 16 + j]); - j += 80 - 0x2000; - } else { - s_s[i][k] = READ_LE_UINT16(&_vm->_mem[0xb800 * 16 + j]); - j += 0x2000; - } - imp = !imp; - ++k; - } while (k < 8); - } - break; - } - case MODE_EGA: - l = 0; - do { - k = 0; - j = 0; - do { - s_s[l][k] = _vm->_mem[0xa000 * 16 + j] + (_vm->_mem[(0xa000 * 16) + j + 1] << 8); - j += 80; - ++k; - } while (k < 8); - ++l; - } while (l != 4); - break; - case MODE_HERCULES: - j = ((uint)_pos.y >> 1) * 80 + ((uint)_pos.x >> 3); - for (i = 0; i <= 5; ++i) { - for (k = 0; k <= 3; ++k) - s_s[i][k] = READ_LE_UINT16(&_vm->_mem[0xb000 * 16 + k * 0x200 + j]); - j += 80; - } - break; - case MODE_TANDY: - j = ((uint)_pos.y >> 2) * 160 + ((uint)_pos.x >> 1); - k = 0; - do { - for (i = 0; i <= 3; ++i) { - s_s[k][i + (k << 2)] = READ_LE_UINT16(&_vm->_mem[0xb800 * 16 + 0x200 * i + j]); - s_s[k + 3][i + (k << 2)] = READ_LE_UINT16(&_vm->_mem[0xb800 * 16 + 0x200 * i + j + 2]); - } - j += 160; - ++k; - } while (k != 3); - break; - default: - break; - } // case Gd + // ScummVM implementation uses CursorMan for drawing the cursor } /** -- cgit v1.2.3 From fadedd2eacf15110dd9f461d9e475374bb9e8a31 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 20 Jul 2013 10:17:36 +0200 Subject: MORTEVIELLE: Little refactoring of decryptNextChar() --- engines/mortevielle/mortevielle.h | 2 +- engines/mortevielle/utils.cpp | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index eb245c60ec..e941a866fc 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -432,7 +432,7 @@ private: void putInHand(int &objId); void prepareDisplayText(); - void cinq_huit(char &c, int &idx, byte &pt, bool &the_end); + bool decryptNextChar(char &c, int &idx, byte &pt); void copcha(); void adzon(); void phaz(int &rand, int &p, int cf); diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 28f3e4f629..994376b1dc 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -1846,7 +1846,15 @@ const byte cryptoArr31De[32]= { const byte *cryptoArrDefault, *cryptoArr30, *cryptoArr31; uint16 ctrlChar; -void MortevielleEngine::cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { +/** + * Decrypt the next character + * @param c OUT, next decrypted char + * @param idx IN/OUT, current buffer index + * @param pt IN/OUT, current encryption point + * @return a boolean specifying if a stop character has been encountered + * @remarks Originally called 'cinq_huit' + */ +bool MortevielleEngine::decryptNextChar(char &c, int &idx, byte &pt) { uint16 oct, ocd; /* 5-8 */ @@ -1864,7 +1872,7 @@ void MortevielleEngine::cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { if (oct == ctrlChar) { c = '$'; - the_end = true; + return true; } else if (oct == 30 || oct == 31) { ocd = _dialogIndexArray[idx]; ocd = (uint16)(ocd << (16 - pt)) >> (16 - pt); @@ -1884,12 +1892,13 @@ void MortevielleEngine::cinq_huit(char &c, int &idx, byte &pt, bool &the_end) { c = chr(cryptoArr31[ocd]); if (c == '\0') { - the_end = true; c = '#'; + return true; } } else { c = chr(cryptoArrDefault[oct]); } + return false; } /** @@ -1910,7 +1919,7 @@ Common::String MortevielleEngine::getString(int num) { bool endFl = false; char let; do { - cinq_huit(let, hint, point, endFl); + endFl = decryptNextChar(let, hint, point); wrkStr += let; ++length; } while (!endFl); -- cgit v1.2.3 From 716b28b7ea307dec85e48d118e56a56b7555bfc7 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 20 Jul 2013 10:20:19 +0200 Subject: MORTEVIELLE: Reorder some functions in mortevielle.h --- engines/mortevielle/mortevielle.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index e941a866fc..0f3d724da3 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -418,21 +418,20 @@ private: void endGame(); void askRestart(); void handleOpcode(); + void prepareDisplayText(); + bool decryptNextChar(char &c, int &idx, byte &pt); void displayStatusArrow(); void displayStatusInDescriptionBar(char stat); - void displayTextInDescriptionBar(int x, int y, int nb, int mesgId); + void displayTextInVerbBar(Common::String text); void mapMessageId(int &mesgId); void resetOpenObjects(); void setCoordinates(int sx); - void displayTextInVerbBar(Common::String text); void drawPicture(); void drawPictureWithText(); void addObjectToInventory(int objectId); void putInHand(int &objId); - void prepareDisplayText(); - bool decryptNextChar(char &c, int &idx, byte &pt); void copcha(); void adzon(); void phaz(int &rand, int &p, int cf); -- cgit v1.2.3 From d5b10f7dd405ecb9039e1d04a54bd935c1c44134 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 20 Jul 2013 10:47:32 +0200 Subject: MORTEVIELLE: Some more renaming --- engines/mortevielle/actions.cpp | 18 +++++++++--------- engines/mortevielle/graphics.cpp | 12 ++++++------ engines/mortevielle/mortevielle.h | 2 +- engines/mortevielle/utils.cpp | 10 +++++++--- 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 4fea2638f0..71f0d8f647 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -1386,9 +1386,9 @@ void MortevielleEngine::fctDiscuss() { if (_coreVar._availableQuestion[icm] == '*') { // If question already asked, write it in reverse video if (questionAsked[icm]) - writetp(lib[icm], 1); + displayQuestionText(lib[icm], 1); else - writetp(lib[icm], 0); + displayQuestionText(lib[icm], 0); } if (icm == 23) { @@ -1398,7 +1398,7 @@ void MortevielleEngine::fctDiscuss() { posY += 8; } _screenSurface.putxy(320, 176); - writetp(lib[46], 0); + displayQuestionText(lib[46], 0); char retKey = '\0'; bool click; do { @@ -1423,9 +1423,9 @@ void MortevielleEngine::fctDiscuss() { posX = 0; _screenSurface.putxy(posX, posY); if (questionAsked[choice]) - writetp(lib[choice], 0); + displayQuestionText(lib[choice], 0); else - writetp(lib[choice], 1); + displayQuestionText(lib[choice], 1); questionAsked[choice] = !questionAsked[choice]; choice = 0; } @@ -1442,9 +1442,9 @@ void MortevielleEngine::fctDiscuss() { posX = 0; _screenSurface.putxy(posX, posY); if (questionAsked[choice]) - writetp(lib[choice], 0); + displayQuestionText(lib[choice], 0); else - writetp(lib[choice], 1); + displayQuestionText(lib[choice], 1); questionAsked[choice] = ! questionAsked[choice]; } if ((_coreVar._availableQuestion[ix] == '*') || (ix == 46)) { @@ -1455,9 +1455,9 @@ void MortevielleEngine::fctDiscuss() { posX = 0; _screenSurface.putxy(posX, posY); if (questionAsked[ix]) - writetp(lib[ix], 0); + displayQuestionText(lib[ix], 0); else - writetp(lib[ix], 1); + displayQuestionText(lib[ix], 1); questionAsked[ix] = ! questionAsked[ix]; choice = ix; } else diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 1ced3003e2..e94e1ce7a3 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -1086,24 +1086,24 @@ void ScreenSurface::drawString(const Common::String &l, int command) { i = 10; int x = pt.x + i * l.size(); - int cecr = 0; + int color = 0; switch (command) { case 1: case 3: { - cecr = 0; + color = 0; _vm->_screenSurface.fillRect(15, Common::Rect(pt.x, pt.y, x, pt.y + 7)); } break; case 4: - cecr = 0; + color = 0; break; case 5: - cecr = 15; + color = 15; break; case 0: case 2: { - cecr = 15; + color = 15; _vm->_screenSurface.fillRect(0, Common::Rect(pt.x, pt.y, x, pt.y + 7)); } break; @@ -1114,7 +1114,7 @@ void ScreenSurface::drawString(const Common::String &l, int command) { pt.x += 1; pt.y += 1; for (x = 1; (x <= (int)l.size()) && (l[x - 1] != 0); ++x) { - _vm->_screenSurface.writeCharacter(Common::Point(pt.x, pt.y), ord(l[x - 1]), cecr); + _vm->_screenSurface.writeCharacter(Common::Point(pt.x, pt.y), ord(l[x - 1]), color); pt.x += i; } _vm->_mouse.showMouse(); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 0f3d724da3..b990859ac5 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -422,6 +422,7 @@ private: bool decryptNextChar(char &c, int &idx, byte &pt); void displayStatusArrow(); void displayStatusInDescriptionBar(char stat); + void displayQuestionText(Common::String s, int cmd); void displayTextInDescriptionBar(int x, int y, int nb, int mesgId); void displayTextInVerbBar(Common::String text); void mapMessageId(int &mesgId); @@ -435,7 +436,6 @@ private: void copcha(); void adzon(); void phaz(int &rand, int &p, int cf); - void writetp(Common::String s, int t); void premtet(); void ajchai(); void ecr2(Common::String text); diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 994376b1dc..8e0e76f088 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2957,11 +2957,15 @@ int MortevielleEngine::getPresence(int roomId) { return retVal; } -void MortevielleEngine::writetp(Common::String s, int t) { +/** + * Display Question String + * @remarks Originally called 'writetp' + */ +void MortevielleEngine::displayQuestionText(Common::String s, int cmd) { if (_resolutionScaler == 2) - _screenSurface.drawString(s, t); + _screenSurface.drawString(s, cmd); else - _screenSurface.drawString(copy(s, 1, 25), t); + _screenSurface.drawString(copy(s, 1, 25), cmd); } void MortevielleEngine::aniof(int ouf, int num) { -- cgit v1.2.3 From 7fbdf23dc812cfdc08cc9ef84675122847b91c44 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 20 Jul 2013 10:51:42 +0200 Subject: MORTEVIELLE: Simplify drawString code --- engines/mortevielle/graphics.cpp | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index e94e1ce7a3..cf15b07ccc 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -1079,43 +1079,38 @@ void ScreenSurface::drawString(const Common::String &l, int command) { _vm->_mouse.hideMouse(); Common::Point pt = _textPos; - int i; + int charWidth; if (_vm->_resolutionScaler == 2) - i = 6; + charWidth = 6; else - i = 10; + charWidth = 10; - int x = pt.x + i * l.size(); + int x = pt.x + charWidth * l.size(); int color = 0; switch (command) { + case 0: + case 2: + color = 15; + _vm->_screenSurface.fillRect(0, Common::Rect(pt.x, pt.y, x, pt.y + 7)); + break; case 1: - case 3: { - color = 0; + case 3: _vm->_screenSurface.fillRect(15, Common::Rect(pt.x, pt.y, x, pt.y + 7)); - } - break; - case 4: - color = 0; break; case 5: color = 15; break; - case 0: - case 2: { - color = 15; - _vm->_screenSurface.fillRect(0, Common::Rect(pt.x, pt.y, x, pt.y + 7)); - } - break; default: + // Default: Color set to zero (already done) break; } pt.x += 1; pt.y += 1; - for (x = 1; (x <= (int)l.size()) && (l[x - 1] != 0); ++x) { + for (x = 1; (x <= l.size()) && (l[x - 1] != 0); ++x) { _vm->_screenSurface.writeCharacter(Common::Point(pt.x, pt.y), ord(l[x - 1]), color); - pt.x += i; + pt.x += charWidth; } _vm->_mouse.showMouse(); } -- cgit v1.2.3 From 8b14677f57b63a36701fa9841027c6f68d476ec0 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 20 Jul 2013 11:17:18 +0200 Subject: MORTEVIELLE: Get rid of magic value 0x7000 --- engines/mortevielle/dialogs.cpp | 2 +- engines/mortevielle/graphics.cpp | 4 ++-- engines/mortevielle/mortevielle.h | 2 +- engines/mortevielle/outtext.cpp | 6 +++--- engines/mortevielle/utils.cpp | 24 ++++++++++++------------ 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 2c644bc459..d992fa0cce 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -465,7 +465,7 @@ void DialogManager::displayIntroScreen(bool drawFrame2Fl) { _vm->_caff = 50; _vm->_maff = 0; _vm->_text.taffich(); - _vm->draw(kAdrDes, 63, 12); + _vm->draw(kAdrPictureComp, 63, 12); if (drawFrame2Fl) displayIntroFrame2(); else diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index cf15b07ccc..d5036cb4d7 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -937,7 +937,7 @@ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { (x + surface.w) * 2, (y + surface.h) * 2)); // Get a lookup for the palette mapping - const byte *paletteMap = &_vm->_mem[0x7000 * 16 + 2]; + const byte *paletteMap = &_vm->_mem[kAdrPictureComp * 16 + 2]; // Loop through writing for (int yp = 0; yp < surface.h; ++yp) { @@ -1108,7 +1108,7 @@ void ScreenSurface::drawString(const Common::String &l, int command) { pt.x += 1; pt.y += 1; - for (x = 1; (x <= l.size()) && (l[x - 1] != 0); ++x) { + for (x = 1; (x <= (int)l.size()) && (l[x - 1] != 0); ++x) { _vm->_screenSurface.writeCharacter(Common::Point(pt.x, pt.y), ord(l[x - 1]), color); pt.x += charWidth; } diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index b990859ac5..d95f2dc6f6 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -63,6 +63,7 @@ namespace Mortevielle { * 7000:2 - 16 words representing palette map * 7000:4138 - width, height, x/y offset of decoded image */ +const int kAdrPictureComp = 0x7000; #define ord(v) ((int) v) #define chr(v) ((unsigned char) v) @@ -114,7 +115,6 @@ const int kTime1 = 410; const int kTime2 = 250; const int kAcha = 492; -const int kAdrDes = 0x7000; const int kFleche = 1758; const int kAsoul = 154; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index d9d47a9fd3..6e372508d7 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -150,7 +150,7 @@ void TextHandler::loadDesFile(Common::String filename, int32 skipSize, int lengt f.close(); for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) - _vm->_mem[0x7000 * 16 + i - remainingSkipSize] = _vm->_mem[0x6000 * 16 + i]; + _vm->_mem[(kAdrPictureComp * 16) + i - remainingSkipSize] = _vm->_mem[0x6000 * 16 + i]; } /** @@ -288,7 +288,7 @@ void TextHandler::taffich() { loadDesFile(filename, lgt, handle); if (_vm->_currGraphicalDevice == MODE_HERCULES) { for (int i = 0; i <= 15; ++i) { - int palh = READ_LE_UINT16(&_vm->_mem[(0x7000 * 16) + ((i + 1) << 1)]); + int palh = READ_LE_UINT16(&_vm->_mem[(kAdrPictureComp * 16) + ((i + 1) << 1)]); alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); } for (int i = 0; i <= 15; ++i) { @@ -296,7 +296,7 @@ void TextHandler::taffich() { for (int j = 0; j <= 15; ++j) if (alllum[j] > alllum[k]) k = j; - _vm->_mem[(0x7000 * 16) + 2 + (k << 1)] = _rang[i]; + _vm->_mem[(kAdrPictureComp * 16) + 2 + (k << 1)] = _rang[i]; alllum[k] = -1; } } diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 8e0e76f088..2a39e4b4f7 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -1997,8 +1997,8 @@ void MortevielleEngine::setPal(int n) { case MODE_EGA: case MODE_AMSTRAD1512: for (int i = 1; i <= 16; ++i) { - _mem[(0x7000 * 16) + (2 * i)] = _stdPal[n][i].x; - _mem[(0x7000 * 16) + (2 * i) + 1] = _stdPal[n][i].y; + _mem[(kAdrPictureComp * 16) + (2 * i)] = _stdPal[n][i].x; + _mem[(kAdrPictureComp * 16) + (2 * i) + 1] = _stdPal[n][i].y; } break; case MODE_CGA: { @@ -2245,7 +2245,7 @@ void MortevielleEngine::showTitleScreen() { if (_newGraphicalDevice != _currGraphicalDevice) _currGraphicalDevice = _newGraphicalDevice; hirs(); - draw(kAdrDes, 0, 0); + draw(kAdrPictureComp, 0, 0); Common::String cpr = "COPYRIGHT 1989 : LANKHOR"; _screenSurface.putxy(104 + 72 * _resolutionScaler, 185); @@ -2270,7 +2270,7 @@ void MortevielleEngine::draw(int ad, int x, int y) { void MortevielleEngine::drawRightFrame() { setPal(89); if (_currGraphicalDevice == MODE_HERCULES) { - _mem[0x7000 * 16 + 14] = 15; + _mem[(kAdrPictureComp * 16) + 14] = 15; } _mouse.hideMouse(); pictout(0x73a2, 0, 0, 0); @@ -2561,12 +2561,12 @@ void MortevielleEngine::pictout(int seg, int dep, int x, int y) { surface.decode(&_mem[seg * 16 + dep]); if (_currGraphicalDevice == MODE_HERCULES) { - _mem[0x7000 * 16 + 2] = 0; - _mem[0x7000 * 16 + 32] = 15; + _mem[(kAdrPictureComp * 16) + 2] = 0; + _mem[(kAdrPictureComp * 16) + 32] = 15; } - if ((_caff != 51) && (READ_LE_UINT16(&_mem[0x7000 * 16 + 0x4138]) > 0x100)) - WRITE_LE_UINT16(&_mem[0x7000 * 16 + 0x4138], 0x100); + if ((_caff != 51) && (READ_LE_UINT16(&_mem[(kAdrPictureComp * 16) + 0x4138]) > 0x100)) + WRITE_LE_UINT16(&_mem[(kAdrPictureComp * 16) + 0x4138], 0x100); _screenSurface.drawPicture(surface, x, y); } @@ -2998,13 +2998,13 @@ void MortevielleEngine::aniof(int ouf, int num) { void MortevielleEngine::drawPicture() { clearUpperLeftPart(); if (_caff > 99) { - draw(kAdrDes, 60, 33); + draw(kAdrPictureComp, 60, 33); _screenSurface.drawBox(118, 32, 291, 121, 15); // Medium box } else if (_caff > 69) { - draw(kAdrDes, 112, 48); // Heads + draw(kAdrPictureComp, 112, 48); // Heads _screenSurface.drawBox(222, 47, 155, 92, 15); } else { - draw(kAdrDes, 0, 12); + draw(kAdrPictureComp, 0, 12); prepareScreenType1(); if ((_caff < 30) || (_caff > 32)) { for (int cx = 1; cx <= 6; ++cx) { @@ -3177,7 +3177,7 @@ void MortevielleEngine::mennor() { } void MortevielleEngine::premtet() { - draw(kAdrDes, 10, 80); + draw(kAdrPictureComp, 10, 80); _screenSurface.drawBox(18, 79, 155, 91, 15); } -- cgit v1.2.3 From 66de61e812b233f19b23f08af6600ba3b73fb323 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 20 Jul 2013 11:20:51 +0200 Subject: MORTEVIELLE: Get rid of magic value 0x6000 --- engines/mortevielle/mortevielle.h | 1 + engines/mortevielle/outtext.cpp | 8 ++++---- engines/mortevielle/utils.cpp | 6 +++--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index d95f2dc6f6..2d2f598548 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -63,6 +63,7 @@ namespace Mortevielle { * 7000:2 - 16 words representing palette map * 7000:4138 - width, height, x/y offset of decoded image */ +const int kAdrPictureDecomp = 0x6000; const int kAdrPictureComp = 0x7000; #define ord(v) ((int) v) diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 6e372508d7..0bb59a66e1 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -141,7 +141,7 @@ void TextHandler::loadDesFile(Common::String filename, int32 skipSize, int lengt int remainingSkipSize = abs(skipSize); int totalLength = length + remainingSkipSize; - int memIndx = 0x6000 * 16; + int memIndx = kAdrPictureDecomp * 16; while (totalLength > 0) { f.read(&_vm->_mem[memIndx], 128); totalLength -= 128; @@ -150,7 +150,7 @@ void TextHandler::loadDesFile(Common::String filename, int32 skipSize, int lengt f.close(); for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) - _vm->_mem[(kAdrPictureComp * 16) + i - remainingSkipSize] = _vm->_mem[0x6000 * 16 + i]; + _vm->_mem[(kAdrPictureComp * 16) + i - remainingSkipSize] = _vm->_mem[(kAdrPictureDecomp * 16) + i]; } /** @@ -172,7 +172,7 @@ void TextHandler::loadAniFile(Common::String filename, int32 skipSize, int lengt int remainingSkipSize = abs(skipSize); int fullLength = length + remainingSkipSize; - int memIndx = 0x6000 * 16; + int memIndx = kAdrPictureDecomp * 16; while (fullLength > 0) { f.read(&_vm->_mem[memIndx], 128); fullLength -= 128; @@ -181,7 +181,7 @@ void TextHandler::loadAniFile(Common::String filename, int32 skipSize, int lengt f.close(); for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) - _vm->_mem[kAdrAni * 16 + i - remainingSkipSize] = _vm->_mem[0x6000 * 16 + i]; + _vm->_mem[kAdrAni * 16 + i - remainingSkipSize] = _vm->_mem[(kAdrPictureDecomp * 16) + i]; } void TextHandler::taffich() { diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 2a39e4b4f7..dafdcbecf5 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2026,12 +2026,12 @@ void MortevielleEngine::setPal(int n) { void MortevielleEngine::displayCGAPattern(int n, Pattern p, nhom *pal) { int addr = n * 404 + 0xd700; - WRITE_LE_UINT16(&_mem[0x6000 * 16 + addr], p._tax); - WRITE_LE_UINT16(&_mem[0x6000 * 16 + addr + 2], p._tay); + WRITE_LE_UINT16(&_mem[(kAdrPictureDecomp * 16) + addr], p._tax); + WRITE_LE_UINT16(&_mem[(kAdrPictureDecomp * 16) + addr + 2], p._tay); addr += 4; for (int i = 0; i < p._tax; ++i) { for (int j = 0; j < p._tay; ++j) - _mem[(0x6000 * 16) + addr + j * p._tax + i] = pal[n]._hom[p._des[i + 1][j + 1]]; + _mem[(kAdrPictureDecomp * 16) + addr + j * p._tax + i] = pal[n]._hom[p._des[i + 1][j + 1]]; } } -- cgit v1.2.3 From 0ed03cb73840e11043e51d366345d55a7f079f54 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 20 Jul 2013 11:24:54 +0200 Subject: MORTEVIELLE: Get rid of magic value 0x5000 --- engines/mortevielle/mortevielle.h | 1 + engines/mortevielle/sound.cpp | 2 +- engines/mortevielle/utils.cpp | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 2d2f598548..b5bb74ac1b 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -63,6 +63,7 @@ namespace Mortevielle { * 7000:2 - 16 words representing palette map * 7000:4138 - width, height, x/y offset of decoded image */ +const int kAdrMusic = 0x5000; const int kAdrPictureDecomp = 0x6000; const int kAdrPictureComp = 0x7000; diff --git a/engines/mortevielle/sound.cpp b/engines/mortevielle/sound.cpp index d54ab71e50..f9b53ffed7 100644 --- a/engines/mortevielle/sound.cpp +++ b/engines/mortevielle/sound.cpp @@ -178,7 +178,7 @@ void SoundManager::playNote(int frequency, int32 length) { void SoundManager::musyc(tablint &tb, int nbseg, int att) { #ifdef DEBUG - const byte *pSrc = &_vm->_mem[0x5000 * 16]; + const byte *pSrc = &_vm->_mem[kAdrMusic * 16]; // Convert the countdown amount to a tempo rate, and then to note length in microseconds int tempo = TIMER_FREQUENCY / att; diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index dafdcbecf5..216bd72337 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2216,7 +2216,7 @@ void MortevielleEngine::music() { fic.read(&_mem[0x47a0 * 16 + 0], 123); fic.close(); - _soundManager.decodeMusic(&_mem[0x3800 * 16], &_mem[0x5000 * 16], 623); + _soundManager.decodeMusic(&_mem[0x3800 * 16], &_mem[kAdrMusic * 16], 623); _addFix = (float)((kTempoMusic - 8)) / 256; _speechManager.cctable(_speechManager._tbi); -- cgit v1.2.3 From d2ca83898e0dbd0161e7fc3a8747bab7f9ef5975 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 20 Jul 2013 11:58:54 +0200 Subject: MORTEVIELLE: Make use of _mem more homogeneous, fix a couple of errors in phoneme handling --- engines/mortevielle/graphics.cpp | 2 +- engines/mortevielle/outtext.cpp | 4 ++-- engines/mortevielle/speech.cpp | 16 ++++++++-------- engines/mortevielle/utils.cpp | 17 ++++++++--------- 4 files changed, 19 insertions(+), 20 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index d5036cb4d7..f967ad9c6a 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -937,7 +937,7 @@ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { (x + surface.w) * 2, (y + surface.h) * 2)); // Get a lookup for the palette mapping - const byte *paletteMap = &_vm->_mem[kAdrPictureComp * 16 + 2]; + const byte *paletteMap = &_vm->_mem[(kAdrPictureComp * 16) + 2]; // Loop through writing for (int yp = 0; yp < surface.h; ++yp) { diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 0bb59a66e1..8e27e471eb 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -181,7 +181,7 @@ void TextHandler::loadAniFile(Common::String filename, int32 skipSize, int lengt f.close(); for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) - _vm->_mem[kAdrAni * 16 + i - remainingSkipSize] = _vm->_mem[(kAdrPictureDecomp * 16) + i]; + _vm->_mem[(kAdrAni * 16) + i - remainingSkipSize] = _vm->_mem[(kAdrPictureDecomp * 16) + i]; } void TextHandler::taffich() { @@ -288,7 +288,7 @@ void TextHandler::taffich() { loadDesFile(filename, lgt, handle); if (_vm->_currGraphicalDevice == MODE_HERCULES) { for (int i = 0; i <= 15; ++i) { - int palh = READ_LE_UINT16(&_vm->_mem[(kAdrPictureComp * 16) + ((i + 1) << 1)]); + int palh = READ_LE_UINT16(&_vm->_mem[(kAdrPictureComp * 16) + 2 + (i << 1)]); alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); } for (int i = 0; i <= 15; ++i) { diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index aea49d8df1..7f11ea20db 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -83,7 +83,7 @@ void SpeechManager::spfrac(int wor) { } void SpeechManager::charg_car(int &currWordNumb) { - int wor = swap(READ_LE_UINT16(&_vm->_mem[kAdrWord + currWordNumb])); + int wor = swap(READ_LE_UINT16(&_vm->_mem[(kAdrWord * 16) + currWordNumb])); int int_ = wor & 0x3f; // 63 if ((int_ >= 0) && (int_ <= 13)) { @@ -123,7 +123,7 @@ void SpeechManager::charg_car(int &currWordNumb) { void SpeechManager::entroct(byte o) { - _vm->_mem[kAdrTroct * 16 + _ptr_oct] = o; + _vm->_mem[(kAdrTroct * 16) + _ptr_oct] = o; ++_ptr_oct; } @@ -145,7 +145,7 @@ void SpeechManager::regenbruit() { int i = kOffsetB3 + 8590; int j = 0; do { - _cfiphBuffer[j] = READ_LE_UINT16(&_vm->_mem[kAdrNoise3 + i]); + _cfiphBuffer[j] = READ_LE_UINT16(&_vm->_mem[(kAdrNoise3 * 16) + i]); i += 2; ++j; } while (i < kOffsetB3 + 8790); @@ -161,7 +161,7 @@ void SpeechManager::loadMusicSound() { if (!f.open("sonmus.mor")) error("Missing file - sonmus.mor"); - f.read(&_vm->_mem[0x7414 * 16 + 0], 273); + f.read(&_vm->_mem[0x7414 * 16], 273); _vm->_soundManager.decodeMusic(&_vm->_mem[0x7414 * 16], &_vm->_mem[kAdrNoise * 16], 273); f.close(); @@ -194,10 +194,10 @@ void SpeechManager::loadNoise() { if (!f.open("bruits")) //Translation: "noise" error("Missing file - bruits"); - f.read(&_vm->_mem[kAdrNoise * 16 + 0], 250); + f.read(&_vm->_mem[kAdrNoise * 16], 250); for (i = 0; i <= 19013; ++i) - _vm->_mem[kAdrNoise * 16 + 32000 + i] = _vm->_mem[kAdrNoise5 + i]; - f.read(&_vm->_mem[kAdrNoise1 * 16 + kOffsetB1], 149); + _vm->_mem[(kAdrNoise * 16) + 32000 + i] = _vm->_mem[(kAdrNoise5 * 16) + i]; + f.read(&_vm->_mem[(kAdrNoise1 * 16) + kOffsetB1], 149); f.close(); } @@ -533,7 +533,7 @@ void SpeechManager::handlePhoneme() { int endPos = swap(_cfiphBuffer[_phonemeNumb]) + deca[_typlec]; int wordCount = endPos - startPos; for (int i = (uint)startPos >> 1, currWord = 0; i < (int)((uint)endPos >> 1); i++, currWord += 2) - WRITE_LE_UINT16(&_vm->_mem[kAdrWord + currWord], _cfiphBuffer[i]); + WRITE_LE_UINT16(&_vm->_mem[(kAdrWord * 16) + currWord], _cfiphBuffer[i]); _ptr_oct = 0; int currWord = 0; diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 216bd72337..20ba38b969 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2152,7 +2152,7 @@ void MortevielleEngine::loadBRUIT5() { if (!f.open("bruit5")) error("Missing file - bruit5"); - f.read(&_mem[kAdrNoise5 * 16 + 0], 149 * 128); + f.read(&_mem[kAdrNoise5 * 16], 149 * 128); f.close(); } @@ -2212,8 +2212,8 @@ void MortevielleEngine::music() { if (!fic.open("mort.img")) error("Missing file - mort.img"); - fic.read(&_mem[0x3800 * 16 + 0], 500); - fic.read(&_mem[0x47a0 * 16 + 0], 123); + fic.read(&_mem[0x3800 * 16], 500); + fic.read(&_mem[0x47a0 * 16], 123); fic.close(); _soundManager.decodeMusic(&_mem[0x3800 * 16], &_mem[kAdrMusic * 16], 623); @@ -2558,7 +2558,7 @@ void MortevielleEngine::displayControlMenu() { void MortevielleEngine::pictout(int seg, int dep, int x, int y) { GfxSurface surface; - surface.decode(&_mem[seg * 16 + dep]); + surface.decode(&_mem[(seg * 16) + dep]); if (_currGraphicalDevice == MODE_HERCULES) { _mem[(kAdrPictureComp * 16) + 2] = 0; @@ -2589,7 +2589,7 @@ void MortevielleEngine::adzon() { if (!f.open("dec.mor")) error("Missing file - dec.mor"); - f.read(&_mem[0x73a2 * 16 + 0], 1 * 1664); + f.read(&_mem[0x73a2 * 16], 1664); f.close(); } @@ -2597,12 +2597,12 @@ void MortevielleEngine::adzon() { * Returns the offset within the compressed image data resource of the desired image */ int MortevielleEngine::animof(int ouf, int num) { - int nani = _mem[kAdrAni * 16 + 1]; + int nani = _mem[(kAdrAni * 16) + 1]; int aux = num; if (ouf != 1) aux += nani; - int animof_result = (nani << 2) + 2 + READ_BE_UINT16(&_mem[kAdrAni * 16 + (aux << 1)]); + int animof_result = (nani << 2) + 2 + READ_BE_UINT16(&_mem[(kAdrAni * 16) + (aux << 1)]); return animof_result; } @@ -2981,11 +2981,10 @@ void MortevielleEngine::aniof(int ouf, int num) { num = 3; } - int ad = kAdrAni; int offset = animof(ouf, num); GfxSurface surface; - surface.decode(&_mem[ad * 16 + offset]); + surface.decode(&_mem[(kAdrAni * 16) + offset]); _screenSurface.drawPicture(surface, 0, 12); prepareScreenType1(); -- cgit v1.2.3 From 448acf74354e5e99ccb57720bc748bb88a3eba2d Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 20 Jul 2013 17:58:41 +0200 Subject: MORTEVIELLE: Get rid of some more magic values --- engines/mortevielle/mortevielle.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index b5bb74ac1b..28aa018f93 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -67,6 +67,11 @@ const int kAdrMusic = 0x5000; const int kAdrPictureDecomp = 0x6000; const int kAdrPictureComp = 0x7000; +const int kAdrEGA = 0xA000; +const int kAdrHERC = 0xB000; +const int kAdrCGA1 = 0xB800; +const int kAdrCGA2 = 0xBA00; + #define ord(v) ((int) v) #define chr(v) ((unsigned char) v) #define lo(v) ((v) & 0xff) -- cgit v1.2.3 From d0c9c44d238a5343cb0085b6a7a4b3e6fcfc7d16 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 20 Jul 2013 18:01:40 +0200 Subject: MORTEVIELLE: Remove dead code, update comment --- engines/mortevielle/actions.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 71f0d8f647..b95e3eb902 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -1603,9 +1603,7 @@ void MortevielleEngine::endGame() { testKey(false); // A wait message was displayed. // testKey (aka tkey1) was called before and after. - // Most likely the double call is useless, thus removed - // - // testKey(false); + // This double call is useless, thus removed resetVariables(); } -- cgit v1.2.3 From 042011a3fed84ff7290feb44788932c6bbba89e8 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 20 Jul 2013 23:58:47 +0200 Subject: MORTEVIELLE: Remove one more magic value, simplify draw() --- engines/mortevielle/dialogs.cpp | 2 +- engines/mortevielle/mortevielle.h | 4 +++- engines/mortevielle/utils.cpp | 18 +++++++++--------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index d992fa0cce..29722a1b59 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -465,7 +465,7 @@ void DialogManager::displayIntroScreen(bool drawFrame2Fl) { _vm->_caff = 50; _vm->_maff = 0; _vm->_text.taffich(); - _vm->draw(kAdrPictureComp, 63, 12); + _vm->draw(63, 12); if (drawFrame2Fl) displayIntroFrame2(); else diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 28aa018f93..44db0d24c3 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -67,6 +67,8 @@ const int kAdrMusic = 0x5000; const int kAdrPictureDecomp = 0x6000; const int kAdrPictureComp = 0x7000; +const int kAdrDecBuffer = 0x73A2; + const int kAdrEGA = 0xA000; const int kAdrHERC = 0xB000; const int kAdrCGA1 = 0xB800; @@ -520,7 +522,7 @@ public: void gameLoaded(); void initGame(); void displayAloneText(); - void draw(int ad, int x, int y); + void draw(int x, int y); void charToHour(); void hourToChar(); Common::String getString(int num); diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 20ba38b969..d5b777bab1 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2245,7 +2245,7 @@ void MortevielleEngine::showTitleScreen() { if (_newGraphicalDevice != _currGraphicalDevice) _currGraphicalDevice = _newGraphicalDevice; hirs(); - draw(kAdrPictureComp, 0, 0); + draw(0, 0); Common::String cpr = "COPYRIGHT 1989 : LANKHOR"; _screenSurface.putxy(104 + 72 * _resolutionScaler, 185); @@ -2256,10 +2256,10 @@ void MortevielleEngine::showTitleScreen() { * Draw picture * @remarks Originally called 'dessine' */ -void MortevielleEngine::draw(int ad, int x, int y) { +void MortevielleEngine::draw(int x, int y) { _mouse.hideMouse(); setPal(_numpal); - pictout(ad, 0, x, y); + pictout(kAdrPictureComp, 0, x, y); _mouse.showMouse(); } @@ -2273,7 +2273,7 @@ void MortevielleEngine::drawRightFrame() { _mem[(kAdrPictureComp * 16) + 14] = 15; } _mouse.hideMouse(); - pictout(0x73a2, 0, 0, 0); + pictout(kAdrDecBuffer, 0, 0, 0); _mouse.showMouse(); } @@ -2589,7 +2589,7 @@ void MortevielleEngine::adzon() { if (!f.open("dec.mor")) error("Missing file - dec.mor"); - f.read(&_mem[0x73a2 * 16], 1664); + f.read(&_mem[kAdrDecBuffer * 16], 1664); f.close(); } @@ -2997,13 +2997,13 @@ void MortevielleEngine::aniof(int ouf, int num) { void MortevielleEngine::drawPicture() { clearUpperLeftPart(); if (_caff > 99) { - draw(kAdrPictureComp, 60, 33); + draw(60, 33); _screenSurface.drawBox(118, 32, 291, 121, 15); // Medium box } else if (_caff > 69) { - draw(kAdrPictureComp, 112, 48); // Heads + draw(112, 48); // Heads _screenSurface.drawBox(222, 47, 155, 92, 15); } else { - draw(kAdrPictureComp, 0, 12); + draw(0, 12); prepareScreenType1(); if ((_caff < 30) || (_caff > 32)) { for (int cx = 1; cx <= 6; ++cx) { @@ -3176,7 +3176,7 @@ void MortevielleEngine::mennor() { } void MortevielleEngine::premtet() { - draw(kAdrPictureComp, 10, 80); + draw(10, 80); _screenSurface.drawBox(18, 79, 155, 91, 15); } -- cgit v1.2.3 From d5ad25316cf6ba5156c09e8b7d32b5b14f2455a0 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 21 Jul 2013 09:27:15 +0200 Subject: MORTEVIELLE: Remove constants previously used by the mouse code --- engines/mortevielle/mortevielle.h | 5 ----- 1 file changed, 5 deletions(-) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 44db0d24c3..d2649425e8 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -69,11 +69,6 @@ const int kAdrPictureComp = 0x7000; const int kAdrDecBuffer = 0x73A2; -const int kAdrEGA = 0xA000; -const int kAdrHERC = 0xB000; -const int kAdrCGA1 = 0xB800; -const int kAdrCGA2 = 0xBA00; - #define ord(v) ((int) v) #define chr(v) ((unsigned char) v) #define lo(v) ((v) & 0xff) -- cgit v1.2.3 From 88f5fe7329f2ee75db66c58daead78f4f4296da6 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 21 Jul 2013 19:59:58 +0200 Subject: MORTEVIELLE: Get rid of the last remaining magic values used with _mem --- engines/mortevielle/mortevielle.h | 3 +++ engines/mortevielle/speech.cpp | 4 ++-- engines/mortevielle/utils.cpp | 6 +++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index d2649425e8..28e342cb95 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -67,6 +67,9 @@ const int kAdrMusic = 0x5000; const int kAdrPictureDecomp = 0x6000; const int kAdrPictureComp = 0x7000; +const int kAdrCompMusicBuf1 = 0x7414; +const int kAdrCompMusicBuf2 = 0x3800; +const int kAdrUnknownBuf = 0x47a0; const int kAdrDecBuffer = 0x73A2; #define ord(v) ((int) v) diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 7f11ea20db..70b017c747 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -161,9 +161,9 @@ void SpeechManager::loadMusicSound() { if (!f.open("sonmus.mor")) error("Missing file - sonmus.mor"); - f.read(&_vm->_mem[0x7414 * 16], 273); + f.read(&_vm->_mem[kAdrCompMusicBuf1 * 16], 273); - _vm->_soundManager.decodeMusic(&_vm->_mem[0x7414 * 16], &_vm->_mem[kAdrNoise * 16], 273); + _vm->_soundManager.decodeMusic(&_vm->_mem[kAdrCompMusicBuf1 * 16], &_vm->_mem[kAdrNoise * 16], 273); f.close(); } diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index d5b777bab1..1a3b1f1ec1 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2212,11 +2212,11 @@ void MortevielleEngine::music() { if (!fic.open("mort.img")) error("Missing file - mort.img"); - fic.read(&_mem[0x3800 * 16], 500); - fic.read(&_mem[0x47a0 * 16], 123); + fic.read(&_mem[kAdrCompMusicBuf2 * 16], 500); + fic.read(&_mem[kAdrUnknownBuf * 16], 123); fic.close(); - _soundManager.decodeMusic(&_mem[0x3800 * 16], &_mem[kAdrMusic * 16], 623); + _soundManager.decodeMusic(&_mem[kAdrCompMusicBuf2 * 16], &_mem[kAdrMusic * 16], 623); _addFix = (float)((kTempoMusic - 8)) / 256; _speechManager.cctable(_speechManager._tbi); -- cgit v1.2.3 From 624d05d7bce2c250016362f8af4cc27125ed67b8 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 22 Jul 2013 09:25:08 +0200 Subject: MORTEVIELLE: Fix invalid read size in music code --- engines/mortevielle/mortevielle.h | 1 - engines/mortevielle/utils.cpp | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 28e342cb95..5c4389483c 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -69,7 +69,6 @@ const int kAdrPictureComp = 0x7000; const int kAdrCompMusicBuf1 = 0x7414; const int kAdrCompMusicBuf2 = 0x3800; -const int kAdrUnknownBuf = 0x47a0; const int kAdrDecBuffer = 0x73A2; #define ord(v) ((int) v) diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 1a3b1f1ec1..a23c444b2e 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2212,8 +2212,7 @@ void MortevielleEngine::music() { if (!fic.open("mort.img")) error("Missing file - mort.img"); - fic.read(&_mem[kAdrCompMusicBuf2 * 16], 500); - fic.read(&_mem[kAdrUnknownBuf * 16], 123); + fic.read(&_mem[kAdrCompMusicBuf2 * 16], 623 * 128); fic.close(); _soundManager.decodeMusic(&_mem[kAdrCompMusicBuf2 * 16], &_mem[kAdrMusic * 16], 623); -- cgit v1.2.3 From 6d2d0680a94dd47f55b94dcef8c40c1d06dd9f1d Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 22 Jul 2013 10:10:56 +0200 Subject: MORTEVIELLE: Fix some more invalid read sizes --- engines/mortevielle/speech.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 70b017c747..7fe8c54f2d 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -161,7 +161,7 @@ void SpeechManager::loadMusicSound() { if (!f.open("sonmus.mor")) error("Missing file - sonmus.mor"); - f.read(&_vm->_mem[kAdrCompMusicBuf1 * 16], 273); + f.read(&_vm->_mem[kAdrCompMusicBuf1 * 16], 273 * 128); _vm->_soundManager.decodeMusic(&_vm->_mem[kAdrCompMusicBuf1 * 16], &_vm->_mem[kAdrNoise * 16], 273); f.close(); @@ -177,7 +177,7 @@ void SpeechManager::loadPhonemeSounds() { if (!f.open("phbrui.mor")) error("Missing file - phbrui.mor"); - for (int i = 1; i <= 3; ++i) + for (int i = 1; i <= f.size() / 2; ++i) _cfiphBuffer[i] = f.readSint16LE(); f.close(); @@ -194,10 +194,10 @@ void SpeechManager::loadNoise() { if (!f.open("bruits")) //Translation: "noise" error("Missing file - bruits"); - f.read(&_vm->_mem[kAdrNoise * 16], 250); + f.read(&_vm->_mem[kAdrNoise * 16], 250 * 128); for (i = 0; i <= 19013; ++i) _vm->_mem[(kAdrNoise * 16) + 32000 + i] = _vm->_mem[(kAdrNoise5 * 16) + i]; - f.read(&_vm->_mem[(kAdrNoise1 * 16) + kOffsetB1], 149); + f.read(&_vm->_mem[(kAdrNoise1 * 16) + kOffsetB1], 149 * 128); f.close(); } -- cgit v1.2.3 From b481096d87d3a24cc8c0e0e3a6c0cf60e2d55e8a Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 22 Jul 2013 10:42:02 +0200 Subject: MORTEVIELLE: Use kAdrPictureComp in displayCGAPattern --- engines/mortevielle/utils.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index a23c444b2e..33f9b9b64e 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2026,12 +2026,12 @@ void MortevielleEngine::setPal(int n) { void MortevielleEngine::displayCGAPattern(int n, Pattern p, nhom *pal) { int addr = n * 404 + 0xd700; - WRITE_LE_UINT16(&_mem[(kAdrPictureDecomp * 16) + addr], p._tax); - WRITE_LE_UINT16(&_mem[(kAdrPictureDecomp * 16) + addr + 2], p._tay); + WRITE_LE_UINT16(&_mem[(kAdrPictureComp * 16) + addr], p._tax); + WRITE_LE_UINT16(&_mem[(kAdrPictureComp * 16) + addr + 2], p._tay); addr += 4; for (int i = 0; i < p._tax; ++i) { for (int j = 0; j < p._tay; ++j) - _mem[(kAdrPictureDecomp * 16) + addr + j * p._tax + i] = pal[n]._hom[p._des[i + 1][j + 1]]; + _mem[(kAdrPictureComp * 16) + addr + j * p._tax + i] = pal[n]._hom[p._des[i + 1][j + 1]]; } } -- cgit v1.2.3 From 4bba7fcb9048e856eeb8f35beb844890f110736e Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 22 Jul 2013 10:59:52 +0200 Subject: MORTEVIELLE: Simplify loadDesFile and loadAniFile --- engines/mortevielle/outtext.cpp | 42 ++++++----------------------------------- 1 file changed, 6 insertions(+), 36 deletions(-) diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 8e27e471eb..1e25aea229 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -133,24 +133,10 @@ void TextHandler::loadDesFile(Common::String filename, int32 skipSize, int lengt if (!f.open(filename)) error("Missing file %s", filename.c_str()); - int skipBlock = skipSize / 128; - skipSize %= 128; - - if (skipBlock != 0) - f.seek(skipBlock * 0x80); - - int remainingSkipSize = abs(skipSize); - int totalLength = length + remainingSkipSize; - int memIndx = kAdrPictureDecomp * 16; - while (totalLength > 0) { - f.read(&_vm->_mem[memIndx], 128); - totalLength -= 128; - memIndx += 128; - } + assert(skipSize + length <= f.size()); + f.seek(skipSize); + f.read(&_vm->_mem[(kAdrPictureComp * 16)], length); f.close(); - - for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) - _vm->_mem[(kAdrPictureComp * 16) + i - remainingSkipSize] = _vm->_mem[(kAdrPictureDecomp * 16) + i]; } /** @@ -162,26 +148,10 @@ void TextHandler::loadAniFile(Common::String filename, int32 skipSize, int lengt if (!f.open(filename)) error("Missing file - %s", filename.c_str()); - int skipBlock = 0; - while (skipSize > 127) { - skipSize = skipSize - 128; - ++skipBlock; - } - if (skipBlock != 0) - f.seek(skipBlock * 0x80); - - int remainingSkipSize = abs(skipSize); - int fullLength = length + remainingSkipSize; - int memIndx = kAdrPictureDecomp * 16; - while (fullLength > 0) { - f.read(&_vm->_mem[memIndx], 128); - fullLength -= 128; - memIndx += 128; - } + assert(skipSize + length <= f.size()); + f.seek(skipSize); + f.read(&_vm->_mem[(kAdrAni * 16)], length); f.close(); - - for (int i = remainingSkipSize; i <= length + remainingSkipSize; ++i) - _vm->_mem[(kAdrAni * 16) + i - remainingSkipSize] = _vm->_mem[(kAdrPictureDecomp * 16) + i]; } void TextHandler::taffich() { -- cgit v1.2.3 From f706ffbc3c53ac7a7bd1ab263bdd35cb5e446a21 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 22 Jul 2013 11:19:02 +0200 Subject: MORTEVIELLE: rename variable name not following naming conventions --- engines/mortevielle/outtext.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 1e25aea229..c998e68e3f 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -155,7 +155,7 @@ void TextHandler::loadAniFile(Common::String filename, int32 skipSize, int lengt } void TextHandler::taffich() { - static const byte _rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; + static const byte rang[16] = {15, 14, 11, 7, 13, 12, 10, 6, 9, 5, 3, 1, 2, 4, 8, 0}; static const byte tran1[] = { 121, 121, 138, 139, 120 }; static const byte tran2[] = { 150, 150, 152, 152, 100, 110, 159, 100, 100 }; @@ -266,7 +266,7 @@ void TextHandler::taffich() { for (int j = 0; j <= 15; ++j) if (alllum[j] > alllum[k]) k = j; - _vm->_mem[(kAdrPictureComp * 16) + 2 + (k << 1)] = _rang[i]; + _vm->_mem[(kAdrPictureComp * 16) + 2 + (k << 1)] = rang[i]; alllum[k] = -1; } } -- cgit v1.2.3 From 42ec5c7ed31e62fc675cf5ac14f2ad5d2dd872f0 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 22 Jul 2013 14:28:53 +0200 Subject: MORTEVIELLE: Fix glitch in one of the head display functions --- engines/mortevielle/utils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 33f9b9b64e..996175895d 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -3176,7 +3176,7 @@ void MortevielleEngine::mennor() { void MortevielleEngine::premtet() { draw(10, 80); - _screenSurface.drawBox(18, 79, 155, 91, 15); + _screenSurface.drawBox(18, 79, 155, 92, 15); } void MortevielleEngine::ajchai() { -- cgit v1.2.3 From 74e3da2d0d8c2c16f9c789cd77508ad082303526 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 22 Jul 2013 15:55:21 +0200 Subject: MORTEVIELLE: Fix another glitch in the head display functions --- engines/mortevielle/utils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 996175895d..4111a7ce55 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -1398,7 +1398,7 @@ void MortevielleEngine::gotoDiningRoom() { showPeoplePresent(_currBitIndex); _caff = 77; drawPictureWithText(); - _screenSurface.drawBox(223, 47, 155, 91, 15); + _screenSurface.drawBox(223, 47, 155, 92, 15); handleDescriptionText(2, 33); testKey(false); mennor(); -- cgit v1.2.3 From 4abc37de3fa7006e8dd934ead5e032ab5ed60b18 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 22 Jul 2013 23:37:33 +0200 Subject: MORTEVIELLE: Fix Wait and Sleep alerts --- engines/mortevielle/dialogs.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 29722a1b59..2536533251 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -220,8 +220,8 @@ void DialogManager::decodeAlertDetails(Common::String inputStr, int &choiceNumb, choiceStr += ']'; col += 6; } - ++i; - choiceListStr = _vm->copy(inputStr, i, 30); + + choiceListStr = Common::String(inputStr.c_str() + i); if (_vm->_resolutionScaler == 2) col *= 6; else -- cgit v1.2.3 From a5b18d79051a2cf660ffcffbc30dcd5f7dc69795 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 22 Jul 2013 23:59:43 +0200 Subject: MORTEVIELLE: Remove _msg array --- engines/mortevielle/actions.cpp | 16 +++---- engines/mortevielle/menu.cpp | 8 ++-- engines/mortevielle/mortevielle.h | 3 +- engines/mortevielle/outtext.cpp | 2 +- engines/mortevielle/utils.cpp | 96 +++++++++++++++++++-------------------- 5 files changed, 63 insertions(+), 62 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index b95e3eb902..b2adebfe83 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -41,13 +41,13 @@ namespace Mortevielle { * @remarks Originally called 'taller' */ void MortevielleEngine::fctMove() { - if ((_coreVar._currPlace == ROOM26) && (_msg[4] == _menu._moveMenu[6])) { + if ((_coreVar._currPlace == ROOM26) && (_currAction == _menu._moveMenu[6])) { _coreVar._currPlace = LANDING; _caff = _coreVar._currPlace; drawPictureWithText(); handleDescriptionText(2, _coreVar._currPlace); } - if ((_coreVar._currPlace == LANDING) && (_msg[4] == _menu._moveMenu[6])) { + if ((_coreVar._currPlace == LANDING) && (_currAction == _menu._moveMenu[6])) { if (!_syn) displayTextInVerbBar(getEngineString(S_GO_TO)); displayStatusArrow(); @@ -86,7 +86,7 @@ void MortevielleEngine::fctMove() { exitRoom(); int menuChoice = 1; - while (_menu._moveMenu[menuChoice] != _msg[4]) + while (_menu._moveMenu[menuChoice] != _currAction) ++menuChoice; if (_coreVar._currPlace == MOUNTAIN) { @@ -302,7 +302,7 @@ void MortevielleEngine::fctInventoryTake() { int inventIndex = 0; do { ++inventIndex; - } while (_menu._inventoryMenu[inventIndex] != _msg[4]); + } while (_menu._inventoryMenu[inventIndex] != _currAction); int cz = 0; int cy = 0; do { @@ -582,7 +582,7 @@ void MortevielleEngine::fctOpen() { if (_caff == ROOM26) { if (_roomDoorId != OWN_ROOM) { - _msg[4] = OPCODE_ENTER; + _currAction = OPCODE_ENTER; _syn = true; } else _crep = 997; @@ -1153,8 +1153,8 @@ void MortevielleEngine::fctEnter() { int charIndex = convertBitIndexToCharacterIndex(z); ++_coreVar._faithScore; _coreVar._currPlace = LANDING; - _msg[3] = MENU_DISCUSS; - _msg[4] = _menu._discussMenu[charIndex]; + _currMenu = MENU_DISCUSS; + _currAction = _menu._discussMenu[charIndex]; _syn = true; if (_roomDoorId == ROOM9) { _col = true; @@ -1354,7 +1354,7 @@ void MortevielleEngine::fctDiscuss() { cx = 0; do { ++cx; - } while (_menu._discussMenu[cx] != _msg[4]); + } while (_menu._discussMenu[cx] != _currAction); _caff = 69 + cx; drawPictureWithText(); handleDescriptionText(2, _caff); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index a28965523a..a1f628992d 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -482,8 +482,8 @@ void Menu::updateMenu() { // A menu was clicked on _menuSelected = (_multiTitle) && (_msg4 != OPCODE_NONE); menuUp(_msg3); - _vm->_msg[4] = _msg4; - _vm->_msg[3] = _msg3; + _vm->_currAction = _msg4; + _vm->_currMenu = _msg3; _msg3 = OPCODE_NONE; _msg4 = OPCODE_NONE; @@ -540,8 +540,8 @@ void Menu::initMenu(MortevielleEngine *vm) { } _msg3 = OPCODE_NONE; _msg4 = OPCODE_NONE; - _vm->_msg[3] = OPCODE_NONE; - _vm->_msg[4] = OPCODE_NONE; + _vm->_currMenu = OPCODE_NONE; + _vm->_currAction = OPCODE_NONE; _vm->setMouseClick(false); } diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 5c4389483c..f12d55baea 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -455,7 +455,8 @@ private: public: Common::Point _prevPos; - int _msg[5]; + int _currMenu; + int _currAction; int _fxxBuffer[108]; byte _tabdon[4001]; bool _soundOff; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index c998e68e3f..9673917741 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -293,7 +293,7 @@ void TextHandler::taffich() { loadAniFile(filename, lgt, handle); } _vm->_mouse.showMouse(); - if ((a < 27) && ((_vm->_maff < 27) || (_vm->_coreVar._currPlace == LANDING)) && (_vm->_msg[4] != OPCODE_ENTER)) { + if ((a < 27) && ((_vm->_maff < 27) || (_vm->_coreVar._currPlace == LANDING)) && (_vm->_currAction != OPCODE_ENTER)) { if ((a == 13) || (a == 14)) _vm->displayAloneText(); else if (!_vm->_blo) diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 4111a7ce55..63cd7b3661 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -284,18 +284,18 @@ void MortevielleEngine::handleAction() { changeGraphicalDevice((uint)(ord(inkey) - 1) >> 1); return; } - if (_menu._menuSelected && (_msg[3] == MENU_SAVE)) { - Common::String saveName = Common::String::format("Savegame #%d", _msg[4] & 15); - _savegameManager.saveGame(_msg[4] & 15, saveName); + if (_menu._menuSelected && (_currMenu == MENU_SAVE)) { + Common::String saveName = Common::String::format("Savegame #%d", _currAction & 15); + _savegameManager.saveGame(_currAction & 15, saveName); } - if (_menu._menuSelected && (_msg[3] == MENU_LOAD)) - _savegameManager.loadGame((_msg[4] & 15) - 1); + if (_menu._menuSelected && (_currMenu == MENU_LOAD)) + _savegameManager.loadGame((_currAction & 15) - 1); if (inkey == '\103') { /* F9 */ temps = _dialogManager.show(_hintPctMessage, 1); return; } else if (inkey == '\77') { - if ((_menuOpcode != OPCODE_NONE) && ((_msg[3] == MENU_ACTION) || (_msg[3] == MENU_SELF))) { - _msg[4] = _menuOpcode; + if ((_menuOpcode != OPCODE_NONE) && ((_currMenu == MENU_ACTION) || (_currMenu == MENU_SELF))) { + _currAction = _menuOpcode; displayTextInVerbBar(getEngineString(S_IDEM)); } else return; @@ -316,17 +316,17 @@ void MortevielleEngine::handleAction() { if (_num == 9999) _num = 0; } else { - _menuOpcode = _msg[3]; - if ((_msg[3] == MENU_ACTION) || (_msg[3] == MENU_SELF)) - _menuOpcode = _msg[4]; + _menuOpcode = _currMenu; + if ((_currMenu == MENU_ACTION) || (_currMenu == MENU_SELF)) + _menuOpcode = _currAction; if (!_anyone) { if ((_heroSearching) || (_obpart)) { if (_mouse._pos.y < 12) return; - if ((_msg[4] == OPCODE_SOUND) || (_msg[4] == OPCODE_LIFT)) { + if ((_currAction == OPCODE_SOUND) || (_currAction == OPCODE_LIFT)) { oo = true; - if ((_msg[4] == OPCODE_LIFT) || (_obpart)) { + if ((_currAction == OPCODE_LIFT) || (_obpart)) { endSearch(); _caff = _coreVar._currPlace; _crep = 998; @@ -1552,71 +1552,71 @@ void MortevielleEngine::handleOpcode() { _keyPressedEsc = false; if (!_anyone) { if (_uptodatePresence) { - if ((_msg[3] == MENU_MOVE) || (_msg[4] == OPCODE_LEAVE) || (_msg[4] == OPCODE_SLEEP) || (_msg[4] == OPCODE_EAT)) { + if ((_currMenu == MENU_MOVE) || (_currAction == OPCODE_LEAVE) || (_currAction == OPCODE_SLEEP) || (_currAction == OPCODE_EAT)) { _controlMenu = 4; mennor(); return; } } - if (_msg[3] == MENU_MOVE) + if (_currMenu == MENU_MOVE) fctMove(); - if (_msg[3] == MENU_DISCUSS) + if (_currMenu == MENU_DISCUSS) fctDiscuss(); - if (_msg[3] == MENU_INVENTORY) + if (_currMenu == MENU_INVENTORY) fctInventoryTake(); - if (_msg[4] == OPCODE_ATTACH) + if (_currAction == OPCODE_ATTACH) fctAttach(); - if (_msg[4] == OPCODE_WAIT) + if (_currAction == OPCODE_WAIT) fctWait(); - if (_msg[4] == OPCODE_FORCE) + if (_currAction == OPCODE_FORCE) fctForce(); - if (_msg[4] == OPCODE_SLEEP) + if (_currAction == OPCODE_SLEEP) fctSleep(); - if (_msg[4] == OPCODE_LISTEN) + if (_currAction == OPCODE_LISTEN) fctListen(); - if (_msg[4] == OPCODE_ENTER) + if (_currAction == OPCODE_ENTER) fctEnter(); - if (_msg[4] == OPCODE_CLOSE) + if (_currAction == OPCODE_CLOSE) fctClose(); - if (_msg[4] == OPCODE_SEARCH) + if (_currAction == OPCODE_SEARCH) fctSearch(); - if (_msg[4] == OPCODE_KNOCK) + if (_currAction == OPCODE_KNOCK) fctKnock(); - if (_msg[4] == OPCODE_SCRATCH) + if (_currAction == OPCODE_SCRATCH) fctScratch(); - if (_msg[4] == OPCODE_READ) + if (_currAction == OPCODE_READ) fctRead(); - if (_msg[4] == OPCODE_EAT) + if (_currAction == OPCODE_EAT) fctEat(); - if (_msg[4] == OPCODE_PLACE) + if (_currAction == OPCODE_PLACE) fctPlace(); - if (_msg[4] == OPCODE_OPEN) + if (_currAction == OPCODE_OPEN) fctOpen(); - if (_msg[4] == OPCODE_TAKE) + if (_currAction == OPCODE_TAKE) fctTake(); - if (_msg[4] == OPCODE_LOOK) + if (_currAction == OPCODE_LOOK) fctLook(); - if (_msg[4] == OPCODE_SMELL) + if (_currAction == OPCODE_SMELL) fctSmell(); - if (_msg[4] == OPCODE_SOUND) + if (_currAction == OPCODE_SOUND) fctSound(); - if (_msg[4] == OPCODE_LEAVE) + if (_currAction == OPCODE_LEAVE) fctLeave(); - if (_msg[4] == OPCODE_LIFT) + if (_currAction == OPCODE_LIFT) fctLift(); - if (_msg[4] == OPCODE_TURN) + if (_currAction == OPCODE_TURN) fctTurn(); - if (_msg[4] == OPCODE_SSEARCH) + if (_currAction == OPCODE_SSEARCH) fctSelfSearch(); - if (_msg[4] == OPCODE_SREAD) + if (_currAction == OPCODE_SREAD) fctSelfRead(); - if (_msg[4] == OPCODE_SPUT) + if (_currAction == OPCODE_SPUT) fctSelfPut(); - if (_msg[4] == OPCODE_SLOOK) + if (_currAction == OPCODE_SLOOK) fctSelftLook(); _hiddenHero = false; - if (_msg[4] == OPCODE_SHIDE) + if (_currAction == OPCODE_SHIDE) fctSelfHide(); } else { if (_anyone) { @@ -3078,7 +3078,7 @@ void MortevielleEngine::tlu(int af, int ob) { handleDescriptionText(2, 999); testKey(true); _caff = af; - _msg[3] = OPCODE_NONE; + _currMenu = OPCODE_NONE; _crep = 998; } @@ -3171,7 +3171,7 @@ void MortevielleEngine::getSearchDescription(int objId) { } void MortevielleEngine::mennor() { - _menu.menuUp(_msg[3]); + _menu.menuUp(_currMenu); } void MortevielleEngine::premtet() { @@ -3241,8 +3241,8 @@ L1: int cx = convertBitIndexToCharacterIndex(_currBitIndex); _caff = 69 + cx; _crep = _caff; - _msg[3] = MENU_DISCUSS; - _msg[4] = _menu._discussMenu[cx]; + _currMenu = MENU_DISCUSS; + _currAction = _menu._discussMenu[cx]; _syn = true; _col = true; } else { @@ -3387,7 +3387,7 @@ void MortevielleEngine::treg(int objId) { int mdes = _caff; _caff = objId; - if (((_caff > 29) && (_caff < 33)) || (_caff == 144) || (_caff == 147) || (_caff == 149) || (_msg[4] == OPCODE_SLOOK)) { + if (((_caff > 29) && (_caff < 33)) || (_caff == 144) || (_caff == 147) || (_caff == 149) || (_currAction == OPCODE_SLOOK)) { drawPictureWithText(); if ((_caff > 29) && (_caff < 33)) handleDescriptionText(2, _caff); @@ -3395,7 +3395,7 @@ void MortevielleEngine::treg(int objId) { handleDescriptionText(2, _caff + 400); testKey(true); _caff = mdes; - _msg[3] = MENU_NONE; + _currMenu = MENU_NONE; _crep = 998; } else { _obpart = true; -- cgit v1.2.3 From ee6bb6719c40dc9bdf859e2f49c637bf2ee16dee Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 23 Jul 2013 09:13:32 +0200 Subject: MORTEVIELLE: Janitorial: Misc cosmetic changes --- engines/mortevielle/actions.cpp | 8 ++++---- engines/mortevielle/mortevielle.cpp | 2 +- engines/mortevielle/outtext.cpp | 3 ++- engines/mortevielle/outtext.h | 2 +- engines/mortevielle/saveload.h | 2 +- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index b2adebfe83..62caa4829f 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -609,10 +609,10 @@ void MortevielleEngine::fctOpen() { } while (!((tmpPlace > 6) || (_openObjects[tmpPlace] == 0) || (_openObjects[tmpPlace] == _num))); if (_openObjects[tmpPlace] != _num) { if (!( ((_num == 3) && ((_coreVar._currPlace == OWN_ROOM) - || (_coreVar._currPlace == ROOM9) - || (_coreVar._currPlace == BLUE_ROOM) + || (_coreVar._currPlace == ROOM9) + || (_coreVar._currPlace == BLUE_ROOM) || (_coreVar._currPlace == BATHROOM))) - || ((_num == 4) && ((_coreVar._currPlace == GREEN_ROOM) + || ((_num == 4) && ((_coreVar._currPlace == GREEN_ROOM) || (_coreVar._currPlace == PURPLE_ROOM) || (_coreVar._currPlace == RED_ROOM))) || ((_coreVar._currPlace == DARKBLUE_ROOM) && (_num == 5)) @@ -1344,7 +1344,7 @@ void MortevielleEngine::fctDiscuss() { int x, y; Common::String lib[47]; - int choice; + int choice; int displId; endSearch(); diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 418b0a079f..3a839a23da 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -354,7 +354,7 @@ Common::Error MortevielleEngine::run() { // Run the main game loop mainGame(); - + // Cleanup (allocated in initialize()) _screenSurface.free(); free(_speechManager._cfiphBuffer); diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 9673917741..c74165e827 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -263,9 +263,10 @@ void TextHandler::taffich() { } for (int i = 0; i <= 15; ++i) { int k = 0; - for (int j = 0; j <= 15; ++j) + for (int j = 0; j <= 15; ++j) { if (alllum[j] > alllum[k]) k = j; + } _vm->_mem[(kAdrPictureComp * 16) + 2 + (k << 1)] = rang[i]; alllum[k] = -1; } diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index a4b078682a..514aae3a4c 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -42,7 +42,7 @@ private: public: void setParent(MortevielleEngine *vm); void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ); - void loadDesFile(Common::String filename, int32 passe, int long_); + void loadDesFile(Common::String filename, int32 skipSize, int length); void loadAniFile(Common::String filename, int32 skipSize, int length); void taffich(); }; diff --git a/engines/mortevielle/saveload.h b/engines/mortevielle/saveload.h index 6613b62ac7..0121a04d8e 100644 --- a/engines/mortevielle/saveload.h +++ b/engines/mortevielle/saveload.h @@ -61,7 +61,7 @@ public: Common::Error loadGame(const Common::String &filename); Common::Error saveGame(int n, const Common::String &saveName); Common::Error loadGame(int slot); - Common::Error saveGame(int slot); + Common::Error saveGame(int slot); void writeSavegameHeader(Common::OutSaveFile *out, const Common::String &saveName); static bool readSavegameHeader(Common::InSaveFile *in, SavegameHeader &header); -- cgit v1.2.3 From dcdf68b0a62391e8ea13464b42eb0f0c1caa8b4b Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 23 Jul 2013 09:31:47 +0200 Subject: MORTEVIELLE: Some more renaming --- engines/mortevielle/mortevielle.h | 2 +- engines/mortevielle/outtext.cpp | 31 +++++++++++++++++-------------- engines/mortevielle/utils.cpp | 2 +- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index f12d55baea..04ecd56ea5 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -457,7 +457,7 @@ public: Common::Point _prevPos; int _currMenu; int _currAction; - int _fxxBuffer[108]; + int _drawingSizeArr[108]; byte _tabdon[4001]; bool _soundOff; bool _blo; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index c74165e827..3164b51e5d 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -160,8 +160,8 @@ void TextHandler::taffich() { static const byte tran1[] = { 121, 121, 138, 139, 120 }; static const byte tran2[] = { 150, 150, 152, 152, 100, 110, 159, 100, 100 }; - int cx, handle, npal; - int32 lgt; + int cx, drawingSize, npal; + int32 drawingStartPos; int alllum[16]; int a = _vm->_caff; @@ -213,7 +213,7 @@ void TextHandler::taffich() { _vm->_destinationOk = true; _vm->_mouse.hideMouse(); - lgt = 0; + drawingStartPos = 0; Common::String filename; if ((a != 50) && (a != 51)) { @@ -237,8 +237,8 @@ void TextHandler::taffich() { npal = a; for (cx = 0; cx <= (a - 1); ++cx) - lgt += _vm->_fxxBuffer[cx]; - handle = _vm->_fxxBuffer[a]; + drawingStartPos += _vm->_drawingSizeArr[cx]; + drawingSize = _vm->_drawingSizeArr[a]; filename = "DXX.mor"; } else { @@ -247,15 +247,15 @@ void TextHandler::taffich() { else filename = "DZZ.mor"; - handle = _vm->_fxxBuffer[87]; + drawingSize = _vm->_drawingSizeArr[87]; if (a == 51) { - lgt = handle; - handle = _vm->_fxxBuffer[88]; + drawingStartPos = drawingSize; + drawingSize = _vm->_drawingSizeArr[88]; } _vm->_maff = a; npal = a + 37; } - loadDesFile(filename, lgt, handle); + loadDesFile(filename, drawingStartPos, drawingSize); if (_vm->_currGraphicalDevice == MODE_HERCULES) { for (int i = 0; i <= 15; ++i) { int palh = READ_LE_UINT16(&_vm->_mem[(kAdrPictureComp * 16) + 2 + (i << 1)]); @@ -275,7 +275,7 @@ void TextHandler::taffich() { _vm->setPal(npal); if ((b < 15) || (b == 16) || (b == 17) || (b == 24) || (b == 26) || (b == 50)) { - lgt = 0; + drawingStartPos = 0; if ((b < 15) || (b == 16) || (b == 17) || (b == 24) || (b == 26)) { if (b == 26) b = 18; @@ -284,14 +284,17 @@ void TextHandler::taffich() { else if (b > 15) --b; for (cx = 0; cx <= (b - 1); ++cx) - lgt += _vm->_fxxBuffer[cx + 89]; - handle = _vm->_fxxBuffer[b + 89]; + drawingStartPos += _vm->_drawingSizeArr[cx + 89]; + drawingSize = _vm->_drawingSizeArr[b + 89]; filename = "AXX.mor"; } else if (b == 50) { + // CHECKME: the size of AZZ.mor is 1280 for the DOS version + // and 1260 for the Amiga version. Maybe the 20 bytes + // are a filler, or the size should be variable. + drawingSize = 1260; filename = "AZZ.mor"; - handle = 1260; } - loadAniFile(filename, lgt, handle); + loadAniFile(filename, drawingStartPos, drawingSize); } _vm->_mouse.showMouse(); if ((a < 27) && ((_vm->_maff < 27) || (_vm->_coreVar._currPlace == LANDING)) && (_vm->_currAction != OPCODE_ENTER)) { diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 63cd7b3661..a0749a9ac7 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2051,7 +2051,7 @@ void MortevielleEngine::loadPalette() { } for (int i = 0; i < 108; ++i) - _fxxBuffer[i] = f.readSint16LE(); + _drawingSizeArr[i] = f.readSint16LE(); f.close(); if (!f.open("plxx.mor")) -- cgit v1.2.3 From 877fc1f8b9796a933a4e79f1af4a3a9634cd4e1f Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 23 Jul 2013 09:41:59 +0200 Subject: MORTEVIELLE: Clarify a part of taffich --- engines/mortevielle/outtext.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 3164b51e5d..e14fff0227 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -247,9 +247,11 @@ void TextHandler::taffich() { else filename = "DZZ.mor"; - drawingSize = _vm->_drawingSizeArr[87]; - if (a == 51) { - drawingStartPos = drawingSize; + if (a == 50) { + drawingStartPos = 0; + drawingSize = _vm->_drawingSizeArr[87]; + } else { // a == 51 + drawingStartPos = _vm->_drawingSizeArr[87]; drawingSize = _vm->_drawingSizeArr[88]; } _vm->_maff = a; @@ -290,7 +292,8 @@ void TextHandler::taffich() { } else if (b == 50) { // CHECKME: the size of AZZ.mor is 1280 for the DOS version // and 1260 for the Amiga version. Maybe the 20 bytes - // are a filler, or the size should be variable. + // are a filler (to get 10 blocks of 128 bytes), + // or the size should be variable. drawingSize = 1260; filename = "AZZ.mor"; } -- cgit v1.2.3 From de3566e82e4cf0db2e05c538bc3793389ad14e40 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 23 Jul 2013 10:18:08 +0200 Subject: MORTEVIELLE: Some more renaming --- engines/mortevielle/actions.cpp | 4 ++-- engines/mortevielle/outtext.cpp | 6 +++--- engines/mortevielle/utils.cpp | 9 +++++---- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 62caa4829f..0d2d8b4d1c 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -474,7 +474,7 @@ void MortevielleEngine::fctSelftLook() { * @remarks Originally called 'tfouiller' */ void MortevielleEngine::fctSearch() { - static const byte r[14] = {123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}; + static const byte answerArr[14] = {123, 104, 123, 131, 131, 123, 104, 131, 123, 123, 106, 123, 123, 107}; if (_caff > 99) { getSearchDescription(_caff); @@ -542,7 +542,7 @@ void MortevielleEngine::fctSearch() { _coreVar._faithScore += 3; _crep = 997; if (_coreVar._currPlace < CELLAR) - _crep = r[_coreVar._currPlace]; + _crep = answerArr[_coreVar._currPlace]; if ((_coreVar._currPlace == TOILETS) && (_num == 2)) _crep = 162; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index e14fff0227..3afab7c80b 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -289,7 +289,7 @@ void TextHandler::taffich() { drawingStartPos += _vm->_drawingSizeArr[cx + 89]; drawingSize = _vm->_drawingSizeArr[b + 89]; filename = "AXX.mor"; - } else if (b == 50) { + } else { // b == 50 // CHECKME: the size of AZZ.mor is 1280 for the DOS version // and 1260 for the Amiga version. Maybe the 20 bytes // are a filler (to get 10 blocks of 128 bytes), @@ -300,8 +300,8 @@ void TextHandler::taffich() { loadAniFile(filename, drawingStartPos, drawingSize); } _vm->_mouse.showMouse(); - if ((a < 27) && ((_vm->_maff < 27) || (_vm->_coreVar._currPlace == LANDING)) && (_vm->_currAction != OPCODE_ENTER)) { - if ((a == 13) || (a == 14)) + if ((a < COAT_ARMS) && ((_vm->_maff < COAT_ARMS) || (_vm->_coreVar._currPlace == LANDING)) && (_vm->_currAction != OPCODE_ENTER)) { + if ((a == ATTIC) || (a == CELLAR)) _vm->displayAloneText(); else if (!_vm->_blo) _vm->getPresence(_vm->_coreVar._currPlace); diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index a0749a9ac7..c9b40c475f 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -254,10 +254,11 @@ void MortevielleEngine::handleAction() { const int lim = 20000; int temps = 0; char inkey = '\0'; - bool oo, funct = 0; + bool funct = false; clearVerbBar(); - oo = false; + + bool handledOpcodeFl = false; _controlMenu = 0; if (!_keyPressedEsc) { _menu.drawMenu(); @@ -325,7 +326,7 @@ void MortevielleEngine::handleAction() { return; if ((_currAction == OPCODE_SOUND) || (_currAction == OPCODE_LIFT)) { - oo = true; + handledOpcodeFl = true; if ((_currAction == OPCODE_LIFT) || (_obpart)) { endSearch(); _caff = _coreVar._currPlace; @@ -337,7 +338,7 @@ void MortevielleEngine::handleAction() { } } do { - if (! oo) + if (!handledOpcodeFl) handleOpcode(); if ((_controlMenu == 0) && (! _loseGame) && (! _endGame)) { -- cgit v1.2.3 From be886b4e380a20aa6e3d06c98142bc4d0f604103 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 23 Jul 2013 10:44:33 +0200 Subject: MORTEVIELLE: Improve question cheat in debugger --- engines/mortevielle/debugger.cpp | 5 +++++ engines/mortevielle/mortevielle.h | 4 ++-- engines/mortevielle/utils.cpp | 8 +++----- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/engines/mortevielle/debugger.cpp b/engines/mortevielle/debugger.cpp index 042eb0e224..5e1e33575f 100644 --- a/engines/mortevielle/debugger.cpp +++ b/engines/mortevielle/debugger.cpp @@ -38,6 +38,11 @@ bool Debugger::Cmd_showAllQuestions(int argc, const char **argv) { for (int i = 1; i <= 42; ++i) _vm->_coreVar._availableQuestion[i] = '*'; + for (int i = 0; i < 9; i++) { + _vm->_nbrep[i] = 0; + _vm->_nbrepm[i] = 999; + } + return true; } diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 04ecd56ea5..c198b246ba 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -285,8 +285,6 @@ private: byte *_cfiecBuffer; int _cfiecBufferSize; int _openObjects[8]; - int _nbrep[9]; - int _nbrepm[9]; uint16 _dialogIndexArray[kMaxDialogIndex + 1]; Hint _dialogHintArray[kMaxDialogHint + 1]; @@ -471,6 +469,8 @@ public: int _key; SaveStruct _coreVar, _saveStruct; + int _nbrep[9]; + int _nbrepm[9]; int _maff; int _caff; int _crep; diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index c9b40c475f..e07623bdb7 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2300,13 +2300,11 @@ void MortevielleEngine::prepareRoom() { updateHour(day, hour, minute); if (day != _day) { _day = day; - int i = 0; - do { - ++i; - if (_nbrepm[i] != 0) + for (int i = 0; i < 9; i++) { + if (_nbrepm[i] > 0) --_nbrepm[i]; _nbrep[i] = 0; - } while (i != 8); + } } if ((hour > _hour) || ((hour == 0) && (_hour == 23))) { _hour = hour; -- cgit v1.2.3 From 95ade596a1104e12171df58031bdb88391f2518e Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 23 Jul 2013 10:51:42 +0200 Subject: MORTEVIELLE: Renaming fields and functions related to the number of answers per character --- engines/mortevielle/actions.cpp | 4 ++-- engines/mortevielle/debugger.cpp | 4 ++-- engines/mortevielle/mortevielle.cpp | 2 +- engines/mortevielle/mortevielle.h | 6 +++--- engines/mortevielle/utils.cpp | 20 ++++++++++++-------- 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 0d2d8b4d1c..9a29bbfd29 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -1484,10 +1484,10 @@ void MortevielleEngine::fctDiscuss() { displId = 138; _coreVar._faithScore += (3 * (_coreVar._faithScore / 10)); } - } else if (_nbrep[_caff - 69] < _nbrepm[_caff - 69]) { + } else if (_charAnswerCount[_caff - 69] < _charAnswerMax[_caff - 69]) { displId = _tabdon[kArep + (ix << 3) + (_caff - 70)]; _coreVar._faithScore += _tabdon[kArcf + ix]; - ++_nbrep[_caff - 69]; + ++_charAnswerCount[_caff - 69]; } else { _coreVar._faithScore += 3; displId = 139; diff --git a/engines/mortevielle/debugger.cpp b/engines/mortevielle/debugger.cpp index 5e1e33575f..4ef5151c81 100644 --- a/engines/mortevielle/debugger.cpp +++ b/engines/mortevielle/debugger.cpp @@ -39,8 +39,8 @@ bool Debugger::Cmd_showAllQuestions(int argc, const char **argv) { _vm->_coreVar._availableQuestion[i] = '*'; for (int i = 0; i < 9; i++) { - _vm->_nbrep[i] = 0; - _vm->_nbrepm[i] = 999; + _vm->_charAnswerCount[i] = 0; + _vm->_charAnswerMax[i] = 999; } return true; diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 3a839a23da..c13eba4a4a 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -206,7 +206,7 @@ Common::ErrorCode MortevielleEngine::initialize() { loadCFIEC(); decodeNumber(&_cfiecBuffer[161 * 16], (_cfiecBufferSize - (161 * 16)) / 64); _x26KeyCount = 1; - init_nbrepm(); + initMaxAnswer(); initMouse(); loadPlaces(); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index c198b246ba..45a06144cd 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -443,7 +443,7 @@ private: void premtet(); void ajchai(); void ecr2(Common::String text); - void init_nbrepm(); + void initMaxAnswer(); void aniof(int ouf, int num); void tlu(int af, int ob); void mennor(); @@ -456,6 +456,8 @@ public: int _currMenu; int _currAction; int _drawingSizeArr[108]; + int _charAnswerCount[9]; + int _charAnswerMax[9]; byte _tabdon[4001]; bool _soundOff; bool _blo; @@ -469,8 +471,6 @@ public: int _key; SaveStruct _coreVar, _saveStruct; - int _nbrep[9]; - int _nbrepm[9]; int _maff; int _caff; int _crep; diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index e07623bdb7..094e1020d1 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -1983,9 +1983,9 @@ void MortevielleEngine::resetVariables() { _coreVar._availableQuestion[33] = '*'; for (int i = 1; i <= 8; ++i) - _nbrep[i] = 0; + _charAnswerCount[i] = 0; - init_nbrepm(); + initMaxAnswer(); } /** @@ -2301,9 +2301,9 @@ void MortevielleEngine::prepareRoom() { if (day != _day) { _day = day; for (int i = 0; i < 9; i++) { - if (_nbrepm[i] > 0) - --_nbrepm[i]; - _nbrep[i] = 0; + if (_charAnswerMax[i] > 0) + --_charAnswerMax[i]; + _charAnswerCount[i] = 0; } } if ((hour > _hour) || ((hour == 0) && (_hour == 23))) { @@ -2879,11 +2879,15 @@ void MortevielleEngine::setPresenceFlags(int roomId) { _room9PresenceLeo = true; } -void MortevielleEngine::init_nbrepm() { - static const byte ipm[9] = { 0, 4, 5, 6, 7, 5, 6, 5, 8 }; +/** + * Initialize max answers per character + * @remarks Originally called 'init_nbrepm' + */ +void MortevielleEngine::initMaxAnswer() { + static const byte maxAnswer[9] = { 0, 4, 5, 6, 7, 5, 6, 5, 8 }; for (int idx = 0; idx < 9; ++idx) - _nbrepm[idx] = ipm[idx]; + _charAnswerMax[idx] = maxAnswer[idx]; } void MortevielleEngine::phaz(int &rand, int &p, int cf) { -- cgit v1.2.3 From 03e32ca3186ac95661d9ec3624338a978b76f999 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 23 Jul 2013 15:03:47 +0200 Subject: MORTEVIELLE: Get rid of phaz, Fix an uninitialized variable in setRandomPresenceRoom9 --- engines/mortevielle/mortevielle.h | 25 +++++---- engines/mortevielle/utils.cpp | 110 +++++++++++++++----------------------- 2 files changed, 55 insertions(+), 80 deletions(-) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 45a06144cd..371c812508 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -314,7 +314,7 @@ private: void displayControlMenu(); void displayItemInHand(int objId); void resetRoomVariables(int roomId); - int getPresenceStats(int &rand, int cf, int roomId); + int getPresenceStats(int &rand, int faithScore, int roomId); void setPresenceFlags(int roomId); void testKey(bool d); void exitRoom(); @@ -375,17 +375,17 @@ private: int setPresenceKitchen(); int setPresenceLanding(); int setPresenceChapel(int hour); - void setRandomPresenceGreenRoom(int cf); - void setRandomPresencePurpleRoom(int cf); - void setRandomPresenceBlueRoom(int cf); - void setRandomPresenceRedRoom(int cf); - void setRandomPresenceRoom9(int cf); - void setRandomPresenceDiningRoom(int cf); - void setRandomPresenceBureau(int cf); - void setRandomPresenceKitchen(int cf); - void setRandomPresenceAttic(int cf); - void setRandomPresenceLanding(int cf); - void setRandomPresenceChapel(int cf); + void setRandomPresenceGreenRoom(int faithScore); + void setRandomPresencePurpleRoom(int faithScore); + void setRandomPresenceBlueRoom(int faithScore); + void setRandomPresenceRedRoom(int faithScore); + void setRandomPresenceRoom9(int faithScore); + void setRandomPresenceDiningRoom(int faithScore); + void setRandomPresenceBureau(int faithScore); + void setRandomPresenceKitchen(int faithScore); + void setRandomPresenceAttic(int faithScore); + void setRandomPresenceLanding(int faithScore); + void setRandomPresenceChapel(int faithScore); void loadPlaces(); void resetPresenceInRooms(int roomId); void showPeoplePresent(int bitIndex); @@ -439,7 +439,6 @@ private: void copcha(); void adzon(); - void phaz(int &rand, int &p, int cf); void premtet(); void ajchai(); void ecr2(Common::String text); diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 094e1020d1..5bf84d9c7b 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -698,8 +698,8 @@ int MortevielleEngine::getPresenceStatsRedRoom() { * @remarks Originally called 'person' */ void MortevielleEngine::displayAloneText() { - for (int cf = 1; cf <= 8; ++cf) - _menu.disableMenuItem(_menu._discussMenu[cf]); + for (int i = 1; i <= 8; ++i) + _menu.disableMenuItem(_menu._discussMenu[i]); Common::String sYou = getEngineString(S_YOU); Common::String sAre = getEngineString(S_ARE); @@ -1090,14 +1090,12 @@ void MortevielleEngine::initGame() { * Engine function - Set Random Presence - Green Room * @remarks Originally called 'pl1' */ -void MortevielleEngine::setRandomPresenceGreenRoom(int cf) { +void MortevielleEngine::setRandomPresenceGreenRoom(int faithScore) { if ( ((_place == GREEN_ROOM) && (!_roomPresenceLuc) && (!_roomPresenceIda)) || ((_place == DARKBLUE_ROOM) && (!_roomPresenceGuy) && (!_roomPresenceEva)) ) { int p = getPresenceStatsGreenRoom(); - int rand; - phaz(rand, p, cf); - - if (rand > p) + p += faithScore; + if (getRandomNumber(1, 100) > p) displayAloneText(); else setPresenceGreenRoom(_place); @@ -1108,13 +1106,11 @@ void MortevielleEngine::setRandomPresenceGreenRoom(int cf) { * Engine function - Set Random Presence - Purple Room * @remarks Originally called 'pl2' */ -void MortevielleEngine::setRandomPresencePurpleRoom(int cf) { +void MortevielleEngine::setRandomPresencePurpleRoom(int faithScore) { if (!_purpleRoomPresenceLeo) { int p = getPresenceStatsPurpleRoom(); - int rand; - phaz(rand, p, cf); - - if (rand > p) + p += faithScore; + if (getRandomNumber(1, 100) > p) displayAloneText(); else setPresencePurpleRoom(); @@ -1125,14 +1121,11 @@ void MortevielleEngine::setRandomPresencePurpleRoom(int cf) { * Engine function - Set Random Presence - Blue Room * @remarks Originally called 'pl5' */ -void MortevielleEngine::setRandomPresenceBlueRoom(int cf) { +void MortevielleEngine::setRandomPresenceBlueRoom(int faithScore) { if (!_roomPresenceMax) { int p = getPresenceStatsBlueRoom(); - int rand; - - phaz(rand, p, cf); - - if (rand > p) + p += faithScore; + if (getRandomNumber(1, 100) > p) displayAloneText(); else setPresenceBlueRoom(); @@ -1143,15 +1136,12 @@ void MortevielleEngine::setRandomPresenceBlueRoom(int cf) { * Engine function - Set Random Presence - Red Room * @remarks Originally called 'pl6' */ -void MortevielleEngine::setRandomPresenceRedRoom(int cf) { +void MortevielleEngine::setRandomPresenceRedRoom(int faithScore) { if ( ((_place == RED_ROOM) && (!_roomPresenceBob)) || ((_place == GREEN_ROOM2) && (!_roomPresencePat)) ) { int p = getPresenceStatsRedRoom(); - int rand; - - phaz(rand, p, cf); - - if (rand > p) + p += faithScore; + if (getRandomNumber(1, 100) > p) displayAloneText(); else setPresenceRedRoom(_place); @@ -1162,13 +1152,10 @@ void MortevielleEngine::setRandomPresenceRedRoom(int cf) { * Engine function - Set Random Presence - Room 9 * @remarks Originally called 'pl9' */ -void MortevielleEngine::setRandomPresenceRoom9(int cf) { +void MortevielleEngine::setRandomPresenceRoom9(int faithScore) { if (!_room9PresenceLeo) { - cf = -10; - int p, rand; - phaz(rand, p, cf); - - if (rand > p) + faithScore = -10; + if (getRandomNumber(1, 100) > faithScore) // always true? displayAloneText(); else setPresencePurpleRoom(); @@ -1179,12 +1166,11 @@ void MortevielleEngine::setRandomPresenceRoom9(int cf) { * Engine function - Set Random Presence - Dining Room * @remarks Originally called 'pl10' */ -void MortevielleEngine::setRandomPresenceDiningRoom(int cf) { - int h, rand; +void MortevielleEngine::setRandomPresenceDiningRoom(int faithScore) { + int h; int p = getPresenceStatsDiningRoom(h); - phaz(rand, p, cf); - - if (rand > p) + p += faithScore; + if (getRandomNumber(1, 100) > p) displayAloneText(); else setPresenceDiningRoom(h); @@ -1194,12 +1180,12 @@ void MortevielleEngine::setRandomPresenceDiningRoom(int cf) { * Engine function - Set Random Presence - Bureau * @remarks Originally called 'pl11' */ -void MortevielleEngine::setRandomPresenceBureau(int cf) { - int h, rand; +void MortevielleEngine::setRandomPresenceBureau(int faithScore) { + int h; int p = getPresenceStatsBureau(h); - phaz(rand, p, cf); - if (rand > p) + p += faithScore; + if (getRandomNumber(1, 100) > p) displayAloneText(); else setPresenceBureau(h); @@ -1209,12 +1195,11 @@ void MortevielleEngine::setRandomPresenceBureau(int cf) { * Engine function - Set Random Presence - Kitchen * @remarks Originally called 'pl12' */ -void MortevielleEngine::setRandomPresenceKitchen(int cf) { - int p, rand; +void MortevielleEngine::setRandomPresenceKitchen(int faithScore) { - p = getPresenceStatsKitchen(); - phaz(rand, p, cf); - if (rand > p) + int p = getPresenceStatsKitchen(); + p += faithScore; + if (getRandomNumber(1, 100) > p) displayAloneText(); else setPresenceKitchen(); @@ -1224,12 +1209,10 @@ void MortevielleEngine::setRandomPresenceKitchen(int cf) { * Engine function - Set Random Presence - Attic / Cellar * @remarks Originally called 'pl13' */ -void MortevielleEngine::setRandomPresenceAttic(int cf) { - int p, rand; - - p = getPresenceStatsAttic(); - phaz(rand, p, cf); - if (rand > p) +void MortevielleEngine::setRandomPresenceAttic(int faithScore) { + int p = getPresenceStatsAttic(); + p += faithScore; + if (getRandomNumber(1, 100) > p) displayAloneText(); else setPresenceKitchen(); @@ -1239,12 +1222,10 @@ void MortevielleEngine::setRandomPresenceAttic(int cf) { * Engine function - Set Random Presence - Landing * @remarks Originally called 'pl15' */ -void MortevielleEngine::setRandomPresenceLanding(int cf) { - int p, rand; - - p = getPresenceStatsLanding(); - phaz(rand, p, cf); - if (rand > p) +void MortevielleEngine::setRandomPresenceLanding(int faithScore) { + int p = getPresenceStatsLanding(); + p += faithScore; + if (getRandomNumber(1, 100) > p) displayAloneText(); else setPresenceLanding(); @@ -1254,12 +1235,12 @@ void MortevielleEngine::setRandomPresenceLanding(int cf) { * Engine function - Set Random Presence - Chapel * @remarks Originally called 'pl20' */ -void MortevielleEngine::setRandomPresenceChapel(int cf) { - int h, rand; +void MortevielleEngine::setRandomPresenceChapel(int faithScore) { + int h; int p = getPresenceStatsChapel(h); - phaz(rand, p, cf); - if (rand > p) + p += faithScore; + if (getRandomNumber(1, 100) > p) displayAloneText(); else setPresenceChapel(h); @@ -2814,7 +2795,7 @@ void MortevielleEngine::resetRoomVariables(int roomId) { * Compute presence stats * @remarks Originally called 'ecfren' */ -int MortevielleEngine::getPresenceStats(int &rand, int cf, int roomId) { +int MortevielleEngine::getPresenceStats(int &rand, int faithScore, int roomId) { if (roomId == OWN_ROOM) displayAloneText(); int retVal = -500; @@ -2838,7 +2819,7 @@ int MortevielleEngine::getPresenceStats(int &rand, int cf, int roomId) { || ((roomId == ROOM9) && (_purpleRoomPresenceLeo))) retVal = -400; if (retVal != -500) { - retVal += cf; + retVal += faithScore; rand = getRandomNumber(1, 100); } @@ -2890,11 +2871,6 @@ void MortevielleEngine::initMaxAnswer() { _charAnswerMax[idx] = maxAnswer[idx]; } -void MortevielleEngine::phaz(int &rand, int &p, int cf) { - p += cf; - rand = getRandomNumber(1, 100); -} - /** * Get Presence * @remarks Originally called 't11' -- cgit v1.2.3 From 3573929625b1253f642af8f0c73487fd6d8e9ebf Mon Sep 17 00:00:00 2001 From: Strangerke Date: Tue, 23 Jul 2013 17:19:16 +0200 Subject: MORTEVIELLE: Give a better name to kAdrDecBuffer --- engines/mortevielle/mortevielle.h | 2 +- engines/mortevielle/utils.cpp | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 371c812508..6f77643186 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -69,7 +69,7 @@ const int kAdrPictureComp = 0x7000; const int kAdrCompMusicBuf1 = 0x7414; const int kAdrCompMusicBuf2 = 0x3800; -const int kAdrDecBuffer = 0x73A2; +const int kAdrRightFramePic = 0x73A2; #define ord(v) ((int) v) #define chr(v) ((unsigned char) v) diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 5bf84d9c7b..0cad1636d9 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2254,7 +2254,7 @@ void MortevielleEngine::drawRightFrame() { _mem[(kAdrPictureComp * 16) + 14] = 15; } _mouse.hideMouse(); - pictout(kAdrDecBuffer, 0, 0, 0); + pictout(kAdrRightFramePic, 0, 0, 0); _mouse.showMouse(); } @@ -2562,13 +2562,14 @@ void MortevielleEngine::adzon() { if (!f.open("bmor.mor")) error("Missing file - bmor.mor"); - f.read(&_tabdon[kFleche], 1 * 1916); + f.read(&_tabdon[kFleche], 1916); f.close(); + // Read Right Frame Drawing if (!f.open("dec.mor")) error("Missing file - dec.mor"); - f.read(&_mem[kAdrDecBuffer * 16], 1664); + f.read(&_mem[kAdrRightFramePic * 16], 1664); f.close(); } -- cgit v1.2.3 From 06e57dd53b94fa7e952a4aebf90420bff2f09d46 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 24 Jul 2013 12:30:58 +0200 Subject: MORTEVIELLE: Remove useless constant, rename another one --- engines/mortevielle/graphics.cpp | 2 +- engines/mortevielle/mortevielle.h | 3 +-- engines/mortevielle/outtext.cpp | 6 +++--- engines/mortevielle/utils.cpp | 22 +++++++++++----------- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index f967ad9c6a..cb674a2317 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -937,7 +937,7 @@ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { (x + surface.w) * 2, (y + surface.h) * 2)); // Get a lookup for the palette mapping - const byte *paletteMap = &_vm->_mem[(kAdrPictureComp * 16) + 2]; + const byte *paletteMap = &_vm->_mem[(kAdrCurrentPicture * 16) + 2]; // Loop through writing for (int yp = 0; yp < surface.h; ++yp) { diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 6f77643186..347b921efc 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -64,8 +64,7 @@ namespace Mortevielle { * 7000:4138 - width, height, x/y offset of decoded image */ const int kAdrMusic = 0x5000; -const int kAdrPictureDecomp = 0x6000; -const int kAdrPictureComp = 0x7000; +const int kAdrCurrentPicture = 0x7000; const int kAdrCompMusicBuf1 = 0x7414; const int kAdrCompMusicBuf2 = 0x3800; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 3afab7c80b..311a4c2ee4 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -135,7 +135,7 @@ void TextHandler::loadDesFile(Common::String filename, int32 skipSize, int lengt assert(skipSize + length <= f.size()); f.seek(skipSize); - f.read(&_vm->_mem[(kAdrPictureComp * 16)], length); + f.read(&_vm->_mem[(kAdrCurrentPicture * 16)], length); f.close(); } @@ -260,7 +260,7 @@ void TextHandler::taffich() { loadDesFile(filename, drawingStartPos, drawingSize); if (_vm->_currGraphicalDevice == MODE_HERCULES) { for (int i = 0; i <= 15; ++i) { - int palh = READ_LE_UINT16(&_vm->_mem[(kAdrPictureComp * 16) + 2 + (i << 1)]); + int palh = READ_LE_UINT16(&_vm->_mem[(kAdrCurrentPicture * 16) + 2 + (i << 1)]); alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); } for (int i = 0; i <= 15; ++i) { @@ -269,7 +269,7 @@ void TextHandler::taffich() { if (alllum[j] > alllum[k]) k = j; } - _vm->_mem[(kAdrPictureComp * 16) + 2 + (k << 1)] = rang[i]; + _vm->_mem[(kAdrCurrentPicture * 16) + 2 + (k << 1)] = rang[i]; alllum[k] = -1; } } diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 0cad1636d9..87bcc874b4 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -1979,8 +1979,8 @@ void MortevielleEngine::setPal(int n) { case MODE_EGA: case MODE_AMSTRAD1512: for (int i = 1; i <= 16; ++i) { - _mem[(kAdrPictureComp * 16) + (2 * i)] = _stdPal[n][i].x; - _mem[(kAdrPictureComp * 16) + (2 * i) + 1] = _stdPal[n][i].y; + _mem[(kAdrCurrentPicture * 16) + (2 * i)] = _stdPal[n][i].x; + _mem[(kAdrCurrentPicture * 16) + (2 * i) + 1] = _stdPal[n][i].y; } break; case MODE_CGA: { @@ -2008,12 +2008,12 @@ void MortevielleEngine::setPal(int n) { void MortevielleEngine::displayCGAPattern(int n, Pattern p, nhom *pal) { int addr = n * 404 + 0xd700; - WRITE_LE_UINT16(&_mem[(kAdrPictureComp * 16) + addr], p._tax); - WRITE_LE_UINT16(&_mem[(kAdrPictureComp * 16) + addr + 2], p._tay); + WRITE_LE_UINT16(&_mem[(kAdrCurrentPicture * 16) + addr], p._tax); + WRITE_LE_UINT16(&_mem[(kAdrCurrentPicture * 16) + addr + 2], p._tay); addr += 4; for (int i = 0; i < p._tax; ++i) { for (int j = 0; j < p._tay; ++j) - _mem[(kAdrPictureComp * 16) + addr + j * p._tax + i] = pal[n]._hom[p._des[i + 1][j + 1]]; + _mem[(kAdrCurrentPicture * 16) + addr + j * p._tax + i] = pal[n]._hom[p._des[i + 1][j + 1]]; } } @@ -2240,7 +2240,7 @@ void MortevielleEngine::showTitleScreen() { void MortevielleEngine::draw(int x, int y) { _mouse.hideMouse(); setPal(_numpal); - pictout(kAdrPictureComp, 0, x, y); + pictout(kAdrCurrentPicture, 0, x, y); _mouse.showMouse(); } @@ -2251,7 +2251,7 @@ void MortevielleEngine::draw(int x, int y) { void MortevielleEngine::drawRightFrame() { setPal(89); if (_currGraphicalDevice == MODE_HERCULES) { - _mem[(kAdrPictureComp * 16) + 14] = 15; + _mem[(kAdrCurrentPicture * 16) + 14] = 15; } _mouse.hideMouse(); pictout(kAdrRightFramePic, 0, 0, 0); @@ -2540,12 +2540,12 @@ void MortevielleEngine::pictout(int seg, int dep, int x, int y) { surface.decode(&_mem[(seg * 16) + dep]); if (_currGraphicalDevice == MODE_HERCULES) { - _mem[(kAdrPictureComp * 16) + 2] = 0; - _mem[(kAdrPictureComp * 16) + 32] = 15; + _mem[(kAdrCurrentPicture * 16) + 2] = 0; + _mem[(kAdrCurrentPicture * 16) + 32] = 15; } - if ((_caff != 51) && (READ_LE_UINT16(&_mem[(kAdrPictureComp * 16) + 0x4138]) > 0x100)) - WRITE_LE_UINT16(&_mem[(kAdrPictureComp * 16) + 0x4138], 0x100); + if ((_caff != 51) && (READ_LE_UINT16(&_mem[(kAdrCurrentPicture * 16) + 0x4138]) > 0x100)) + WRITE_LE_UINT16(&_mem[(kAdrCurrentPicture * 16) + 0x4138], 0x100); _screenSurface.drawPicture(surface, x, y); } -- cgit v1.2.3 From d5a6c9e4ab47c9e2b0a26fee2f9aa4da22ef5679 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 24 Jul 2013 13:16:28 +0200 Subject: MORTEVIELLE: Remove useless define --- engines/mortevielle/mortevielle.h | 1 - 1 file changed, 1 deletion(-) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 347b921efc..4fd096aa43 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -75,7 +75,6 @@ const int kAdrRightFramePic = 0x73A2; #define lo(v) ((v) & 0xff) #define hi(v) (((v) >> 8) & 0xff) #define swap(v) (((lo(v)) << 8) | ((hi(v)) >> 8)) -#define odd(v) (((v) % 2) == 1) // Debug channels enum { -- cgit v1.2.3 From 9bbfd7f628fd335c9c9f5e67e2b86f674ef23f1a Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 24 Jul 2013 15:16:56 +0200 Subject: MORTEVIELLE: Start working on displayPicture, misc renaming and refactoring --- engines/mortevielle/actions.cpp | 40 ++++++++++++------------- engines/mortevielle/dialogs.cpp | 8 ++--- engines/mortevielle/mortevielle.h | 11 +++---- engines/mortevielle/utils.cpp | 61 ++++++++++++++++++++++----------------- 4 files changed, 64 insertions(+), 56 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 9a29bbfd29..91d9177dc6 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -241,17 +241,17 @@ void MortevielleEngine::fctTake() { if ((_coreVar._currPlace == ATTIC) && (_num == 1) && (_coreVar._atticBallHoleObjectId != 0)) { putInHand(_coreVar._atticBallHoleObjectId); if ((_crep != 997) && (_crep != 139)) - aniof(2, 7); + drawAnimFrame(2, 7); } if ((_coreVar._currPlace == ATTIC) && (_num == 2) && (_coreVar._atticRodHoleObjectId != 0)) { putInHand(_coreVar._atticRodHoleObjectId); if ((_crep != 997) && (_crep != 139)) - aniof(2, 6); + drawAnimFrame(2, 6); } if ((_coreVar._currPlace == CELLAR) && (_coreVar._cellarObjectId != 0)) { putInHand(_coreVar._cellarObjectId); if ((_crep != 997) && (_crep != 139)) - aniof(2, 2); + drawAnimFrame(2, 2); } if ((_coreVar._currPlace == CRYPT) && (_coreVar._cryptObjectId != 0)) putInHand(_coreVar._cryptObjectId); @@ -260,13 +260,13 @@ void MortevielleEngine::fctTake() { putInHand(_coreVar._secretPassageObjectId); if ((_crep != 997) && (_crep != 139)) { _crep = 182; - aniof(2, 1); + drawAnimFrame(2, 1); } } if ((_coreVar._currPlace == WELL) && (_coreVar._wellObjectId != 0)) { putInHand(_coreVar._wellObjectId); if ((_crep != 997) && (_crep != 139)) - aniof(2, 1); + drawAnimFrame(2, 1); } if ((_crep != 997) && (_crep != 182) && (_crep != 139)) _crep = 999; @@ -631,7 +631,7 @@ void MortevielleEngine::fctOpen() { _speechManager.startSpeech(7, 9, 1); } _openObjects[tmpPlace] = _num; - aniof(1, _num); + drawAnimFrame(1, _num); } tmpPlace = _coreVar._currPlace; if (_coreVar._currPlace == CRYPT) @@ -675,14 +675,14 @@ void MortevielleEngine::fctPlace() { } else { _coreVar._atticBallHoleObjectId = _coreVar._selectedObjectId; if (_coreVar._selectedObjectId == 141) - aniof(1, 7); + drawAnimFrame(1, 7); } } else if (_coreVar._atticRodHoleObjectId != 0) { _crep = 188; } else { _coreVar._atticRodHoleObjectId = _coreVar._selectedObjectId; if (_coreVar._selectedObjectId == 159) - aniof(1, 6); + drawAnimFrame(1, 6); } } @@ -693,8 +693,8 @@ void MortevielleEngine::fctPlace() { _coreVar._cellarObjectId = _coreVar._selectedObjectId; if (_coreVar._selectedObjectId == 151) { // Open hidden passage - aniof(1, 2); - aniof(1, 1); + drawAnimFrame(1, 2); + drawAnimFrame(1, 1); handleDescriptionText(2, 165); displayEmptyHand(); _speechManager.startSpeech(6, -9, 1); @@ -727,16 +727,16 @@ void MortevielleEngine::fctPlace() { _menu.setDestinationText(_coreVar._currPlace); setPal(14); drawPicture(); - aniof(1, 2); - aniof(1, 1); + drawAnimFrame(1, 2); + drawAnimFrame(1, 1); alertTxt = getString(577); _dialogManager.show(alertTxt, 1); - aniof(2, 1); + drawAnimFrame(2, 1); _crep = 166; } prepareDisplayText(); } else { - aniof(2, 1); + drawAnimFrame(2, 1); _crep = 166; } return; @@ -756,7 +756,7 @@ void MortevielleEngine::fctPlace() { _crep = 188; } else if (_coreVar._selectedObjectId == 143) { _coreVar._secretPassageObjectId = 143; - aniof(1, 1); + drawAnimFrame(1, 1); } else { _crep = 1512; loseGame(); @@ -768,7 +768,7 @@ void MortevielleEngine::fctPlace() { _crep = 188; } else if ((_coreVar._selectedObjectId == 140) || (_coreVar._selectedObjectId == 120)) { _coreVar._wellObjectId = _coreVar._selectedObjectId; - aniof(1, 1); + drawAnimFrame(1, 1); } else { _crep = 185; } @@ -856,7 +856,7 @@ void MortevielleEngine::fctAttach() { _crep = 999; if ((_coreVar._selectedObjectId == 120) || (_coreVar._selectedObjectId == 140)) { _coreVar._wellObjectId = _coreVar._selectedObjectId; - aniof(1, 1); + drawAnimFrame(1, 1); } else _crep = 185; displayEmptyHand(); @@ -886,7 +886,7 @@ void MortevielleEngine::fctClose() { ++cx; } while ((cx <= 6) && (_num != _openObjects[cx])); if (_num == _openObjects[cx]) { - aniof(2, _num); + drawAnimFrame(2, _num); _crep = 998; _openObjects[cx] = 0; --_openObjCount; @@ -1148,7 +1148,7 @@ void MortevielleEngine::fctEnter() { else { int randVal = (getRandomNumber(0, 10)) - 5; _speechManager.startSpeech(7, randVal, 1); - aniof(1, 1); + drawAnimFrame(1, 1); int charIndex = convertBitIndexToCharacterIndex(z); ++_coreVar._faithScore; @@ -1169,7 +1169,7 @@ void MortevielleEngine::fctEnter() { } else { int randVal = (getRandomNumber(0, 10)) - 5; _speechManager.startSpeech(7, randVal, 1); - aniof(1, 1); + drawAnimFrame(1, 1); _coreVar._currPlace = _roomDoorId; prepareDisplayText(); diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index 2536533251..f6fe9661ac 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -480,10 +480,10 @@ void DialogManager::displayIntroScreen(bool drawFrame2Fl) { * @remarks Originally called 'ani50' */ void DialogManager::displayIntroFrame2() { - _vm->_crep = _vm->animof(1, 1); - _vm->pictout(kAdrAni, _vm->_crep, 63, 12); - _vm->_crep = _vm->animof(2, 1); - _vm->pictout(kAdrAni, _vm->_crep, 63, 12); + _vm->_crep = _vm->getAnimOffset(1, 1); + _vm->displayPicture(&_vm->_mem[(kAdrAni * 16) + _vm->_crep], 63, 12); + _vm->_crep = _vm->getAnimOffset(2, 1); + _vm->displayPicture(&_vm->_mem[(kAdrAni * 16) + _vm->_crep], 63, 12); _vm->_largestClearScreen = (_vm->_resolutionScaler == 1); _vm->handleDescriptionText(2, kDialogStringIndex + 143); } diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 4fd096aa43..27d590ddb7 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -434,14 +434,14 @@ private: void drawPictureWithText(); void addObjectToInventory(int objectId); void putInHand(int &objId); + void initMaxAnswer(); + void drawAnimFrame(int frameNum, int animId); void copcha(); void adzon(); void premtet(); void ajchai(); void ecr2(Common::String text); - void initMaxAnswer(); - void aniof(int ouf, int num); void tlu(int af, int ob); void mennor(); void tsuiv(); @@ -526,12 +526,13 @@ public: void testKeyboard(); int getPresence(int roomId); void displayEmptyHand(); + void displayPicture(const byte *pic, int x, int y); - void hirs(); int gettKeyPressed(); void handleDescriptionText(int f, int mesgId); - int animof(int ouf, int num); - void pictout(int seg, int dep, int x, int y); + int getAnimOffset(int frameNum, int animNum); + + void hirs(); }; extern MortevielleEngine *g_vm; diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 87bcc874b4..0dd197840c 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2240,7 +2240,7 @@ void MortevielleEngine::showTitleScreen() { void MortevielleEngine::draw(int x, int y) { _mouse.hideMouse(); setPal(_numpal); - pictout(kAdrCurrentPicture, 0, x, y); + displayPicture(&_mem[kAdrCurrentPicture * 16], x, y); _mouse.showMouse(); } @@ -2254,7 +2254,7 @@ void MortevielleEngine::drawRightFrame() { _mem[(kAdrCurrentPicture * 16) + 14] = 15; } _mouse.hideMouse(); - pictout(kAdrRightFramePic, 0, 0, 0); + displayPicture(&_mem[kAdrRightFramePic * 16], 0, 0); _mouse.showMouse(); } @@ -2535,9 +2535,13 @@ void MortevielleEngine::displayControlMenu() { _controlMenu = 0; } -void MortevielleEngine::pictout(int seg, int dep, int x, int y) { +/** + * Display picture at a given coordinate + * @remarks Originally called 'pictout' + */ +void MortevielleEngine::displayPicture(const byte *pic, int x, int y) { GfxSurface surface; - surface.decode(&_mem[(seg * 16) + dep]); + surface.decode(pic); if (_currGraphicalDevice == MODE_HERCULES) { _mem[(kAdrCurrentPicture * 16) + 2] = 0; @@ -2575,16 +2579,15 @@ void MortevielleEngine::adzon() { /** * Returns the offset within the compressed image data resource of the desired image + * @remarks Originally called 'animof' */ -int MortevielleEngine::animof(int ouf, int num) { - int nani = _mem[(kAdrAni * 16) + 1]; - int aux = num; - if (ouf != 1) - aux += nani; - - int animof_result = (nani << 2) + 2 + READ_BE_UINT16(&_mem[(kAdrAni * 16) + (aux << 1)]); +int MortevielleEngine::getAnimOffset(int frameNum, int animNum) { + int animCount = _mem[(kAdrAni * 16) + 1]; + int aux = animNum; + if (frameNum != 1) + aux += animCount; - return animof_result; + return (animCount << 2) + 2 + READ_BE_UINT16(&_mem[(kAdrAni * 16) + (aux << 1)]); } /** @@ -2947,20 +2950,24 @@ void MortevielleEngine::displayQuestionText(Common::String s, int cmd) { _screenSurface.drawString(copy(s, 1, 25), cmd); } -void MortevielleEngine::aniof(int ouf, int num) { - if ((_caff == BATHROOM) && ((num == 4) || (num == 5))) +/** + * Display animation frame + * @remarks Originally called 'aniof' + */ +void MortevielleEngine::drawAnimFrame(int frameNum, int animId) { + if ((_caff == BATHROOM) && ((animId == 4) || (animId == 5))) return; - if ((_caff == DINING_ROOM) && (num == 7)) - num = 6; + if ((_caff == DINING_ROOM) && (animId == 7)) + animId = 6; else if (_caff == KITCHEN) { - if (num == 3) - num = 4; - else if (num == 4) - num = 3; + if (animId == 3) + animId = 4; + else if (animId == 4) + animId = 3; } - int offset = animof(ouf, num); + int offset = getAnimOffset(frameNum, animId); GfxSurface surface; surface.decode(&_mem[(kAdrAni * 16) + offset]); @@ -2987,21 +2994,21 @@ void MortevielleEngine::drawPicture() { if ((_caff < 30) || (_caff > 32)) { for (int cx = 1; cx <= 6; ++cx) { if (_openObjects[cx] != 0) - aniof(1, _openObjects[cx]); + drawAnimFrame(1, _openObjects[cx]); } if (_caff == ATTIC) { if (_coreVar._atticBallHoleObjectId == 141) - aniof(1, 7); + drawAnimFrame(1, 7); if (_coreVar._atticRodHoleObjectId == 159) - aniof(1, 6); + drawAnimFrame(1, 6); } else if ((_caff == CELLAR) && (_coreVar._cellarObjectId == 151)) - aniof(1, 2); + drawAnimFrame(1, 2); else if ((_caff == SECRET_PASSAGE) && (_coreVar._secretPassageObjectId == 143)) - aniof(1, 1); + drawAnimFrame(1, 1); else if ((_caff == WELL) && (_coreVar._wellObjectId != 0)) - aniof(1, 1); + drawAnimFrame(1, 1); } if (_caff < ROOM26) -- cgit v1.2.3 From 91ed5173325e885f8dff9a36122a60e161cdc448 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 24 Jul 2013 18:22:35 +0200 Subject: MORTEVIELLE: Move Current Picture out of _mem buffer, some renaming --- engines/mortevielle/actions.cpp | 40 ++++++++++++++++++------------------ engines/mortevielle/graphics.cpp | 2 +- engines/mortevielle/mortevielle.cpp | 2 ++ engines/mortevielle/mortevielle.h | 4 ++-- engines/mortevielle/outtext.cpp | 15 ++++++++------ engines/mortevielle/outtext.h | 2 +- engines/mortevielle/utils.cpp | 41 +++++++++++++++++++------------------ 7 files changed, 56 insertions(+), 50 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 91d9177dc6..88eee0cf7d 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -241,17 +241,17 @@ void MortevielleEngine::fctTake() { if ((_coreVar._currPlace == ATTIC) && (_num == 1) && (_coreVar._atticBallHoleObjectId != 0)) { putInHand(_coreVar._atticBallHoleObjectId); if ((_crep != 997) && (_crep != 139)) - drawAnimFrame(2, 7); + displayAnimFrame(2, 7); } if ((_coreVar._currPlace == ATTIC) && (_num == 2) && (_coreVar._atticRodHoleObjectId != 0)) { putInHand(_coreVar._atticRodHoleObjectId); if ((_crep != 997) && (_crep != 139)) - drawAnimFrame(2, 6); + displayAnimFrame(2, 6); } if ((_coreVar._currPlace == CELLAR) && (_coreVar._cellarObjectId != 0)) { putInHand(_coreVar._cellarObjectId); if ((_crep != 997) && (_crep != 139)) - drawAnimFrame(2, 2); + displayAnimFrame(2, 2); } if ((_coreVar._currPlace == CRYPT) && (_coreVar._cryptObjectId != 0)) putInHand(_coreVar._cryptObjectId); @@ -260,13 +260,13 @@ void MortevielleEngine::fctTake() { putInHand(_coreVar._secretPassageObjectId); if ((_crep != 997) && (_crep != 139)) { _crep = 182; - drawAnimFrame(2, 1); + displayAnimFrame(2, 1); } } if ((_coreVar._currPlace == WELL) && (_coreVar._wellObjectId != 0)) { putInHand(_coreVar._wellObjectId); if ((_crep != 997) && (_crep != 139)) - drawAnimFrame(2, 1); + displayAnimFrame(2, 1); } if ((_crep != 997) && (_crep != 182) && (_crep != 139)) _crep = 999; @@ -631,7 +631,7 @@ void MortevielleEngine::fctOpen() { _speechManager.startSpeech(7, 9, 1); } _openObjects[tmpPlace] = _num; - drawAnimFrame(1, _num); + displayAnimFrame(1, _num); } tmpPlace = _coreVar._currPlace; if (_coreVar._currPlace == CRYPT) @@ -675,14 +675,14 @@ void MortevielleEngine::fctPlace() { } else { _coreVar._atticBallHoleObjectId = _coreVar._selectedObjectId; if (_coreVar._selectedObjectId == 141) - drawAnimFrame(1, 7); + displayAnimFrame(1, 7); } } else if (_coreVar._atticRodHoleObjectId != 0) { _crep = 188; } else { _coreVar._atticRodHoleObjectId = _coreVar._selectedObjectId; if (_coreVar._selectedObjectId == 159) - drawAnimFrame(1, 6); + displayAnimFrame(1, 6); } } @@ -693,8 +693,8 @@ void MortevielleEngine::fctPlace() { _coreVar._cellarObjectId = _coreVar._selectedObjectId; if (_coreVar._selectedObjectId == 151) { // Open hidden passage - drawAnimFrame(1, 2); - drawAnimFrame(1, 1); + displayAnimFrame(1, 2); + displayAnimFrame(1, 1); handleDescriptionText(2, 165); displayEmptyHand(); _speechManager.startSpeech(6, -9, 1); @@ -727,16 +727,16 @@ void MortevielleEngine::fctPlace() { _menu.setDestinationText(_coreVar._currPlace); setPal(14); drawPicture(); - drawAnimFrame(1, 2); - drawAnimFrame(1, 1); + displayAnimFrame(1, 2); + displayAnimFrame(1, 1); alertTxt = getString(577); _dialogManager.show(alertTxt, 1); - drawAnimFrame(2, 1); + displayAnimFrame(2, 1); _crep = 166; } prepareDisplayText(); } else { - drawAnimFrame(2, 1); + displayAnimFrame(2, 1); _crep = 166; } return; @@ -756,7 +756,7 @@ void MortevielleEngine::fctPlace() { _crep = 188; } else if (_coreVar._selectedObjectId == 143) { _coreVar._secretPassageObjectId = 143; - drawAnimFrame(1, 1); + displayAnimFrame(1, 1); } else { _crep = 1512; loseGame(); @@ -768,7 +768,7 @@ void MortevielleEngine::fctPlace() { _crep = 188; } else if ((_coreVar._selectedObjectId == 140) || (_coreVar._selectedObjectId == 120)) { _coreVar._wellObjectId = _coreVar._selectedObjectId; - drawAnimFrame(1, 1); + displayAnimFrame(1, 1); } else { _crep = 185; } @@ -856,7 +856,7 @@ void MortevielleEngine::fctAttach() { _crep = 999; if ((_coreVar._selectedObjectId == 120) || (_coreVar._selectedObjectId == 140)) { _coreVar._wellObjectId = _coreVar._selectedObjectId; - drawAnimFrame(1, 1); + displayAnimFrame(1, 1); } else _crep = 185; displayEmptyHand(); @@ -886,7 +886,7 @@ void MortevielleEngine::fctClose() { ++cx; } while ((cx <= 6) && (_num != _openObjects[cx])); if (_num == _openObjects[cx]) { - drawAnimFrame(2, _num); + displayAnimFrame(2, _num); _crep = 998; _openObjects[cx] = 0; --_openObjCount; @@ -1148,7 +1148,7 @@ void MortevielleEngine::fctEnter() { else { int randVal = (getRandomNumber(0, 10)) - 5; _speechManager.startSpeech(7, randVal, 1); - drawAnimFrame(1, 1); + displayAnimFrame(1, 1); int charIndex = convertBitIndexToCharacterIndex(z); ++_coreVar._faithScore; @@ -1169,7 +1169,7 @@ void MortevielleEngine::fctEnter() { } else { int randVal = (getRandomNumber(0, 10)) - 5; _speechManager.startSpeech(7, randVal, 1); - drawAnimFrame(1, 1); + displayAnimFrame(1, 1); _coreVar._currPlace = _roomDoorId; prepareDisplayText(); diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index cb674a2317..e5edeed97a 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -937,7 +937,7 @@ void ScreenSurface::drawPicture(GfxSurface &surface, int x, int y) { (x + surface.w) * 2, (y + surface.h) * 2)); // Get a lookup for the palette mapping - const byte *paletteMap = &_vm->_mem[(kAdrCurrentPicture * 16) + 2]; + const byte *paletteMap = &_vm->_curPict[2]; // Loop through writing for (int yp = 0; yp < surface.h; ++yp) { diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index c13eba4a4a..f98832f984 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -101,9 +101,11 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _day = 0; memset(_mem, 0, sizeof(_mem)); + _curPict = nullptr; } MortevielleEngine::~MortevielleEngine() { + free(_curPict); } /** diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 27d590ddb7..91a65c1e0c 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -64,7 +64,6 @@ namespace Mortevielle { * 7000:4138 - width, height, x/y offset of decoded image */ const int kAdrMusic = 0x5000; -const int kAdrCurrentPicture = 0x7000; const int kAdrCompMusicBuf1 = 0x7414; const int kAdrCompMusicBuf2 = 0x3800; @@ -435,7 +434,7 @@ private: void addObjectToInventory(int objectId); void putInHand(int &objId); void initMaxAnswer(); - void drawAnimFrame(int frameNum, int animId); + void displayAnimFrame(int frameNum, int animId); void copcha(); void adzon(); @@ -477,6 +476,7 @@ public: // TODO: Replace the following with proper implementations, or refactor out the code using them byte _mem[65536 * 16]; + byte *_curPict; Debugger _debugger; ScreenSurface _screenSurface; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 311a4c2ee4..37ea06eb33 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -125,17 +125,20 @@ void TextHandler::displayStr(Common::String inputStr, int x, int y, int dx, int } /** - * Load DES file + * Load DES (picture container) file * @remarks Originally called 'chardes' */ -void TextHandler::loadDesFile(Common::String filename, int32 skipSize, int length) { +void TextHandler::loadPictureFile(Common::String filename, int32 skipSize, int length) { Common::File f; if (!f.open(filename)) error("Missing file %s", filename.c_str()); assert(skipSize + length <= f.size()); + + free(_vm->_curPict); + _vm->_curPict = (byte *)malloc(sizeof(byte) * length); f.seek(skipSize); - f.read(&_vm->_mem[(kAdrCurrentPicture * 16)], length); + f.read(_vm->_curPict, length); f.close(); } @@ -257,10 +260,10 @@ void TextHandler::taffich() { _vm->_maff = a; npal = a + 37; } - loadDesFile(filename, drawingStartPos, drawingSize); + loadPictureFile(filename, drawingStartPos, drawingSize); if (_vm->_currGraphicalDevice == MODE_HERCULES) { for (int i = 0; i <= 15; ++i) { - int palh = READ_LE_UINT16(&_vm->_mem[(kAdrCurrentPicture * 16) + 2 + (i << 1)]); + int palh = READ_LE_UINT16(&_vm->_curPict[2 + (i << 1)]); alllum[i] = (palh & 15) + (((uint)palh >> 12) & 15) + (((uint)palh >> 8) & 15); } for (int i = 0; i <= 15; ++i) { @@ -269,7 +272,7 @@ void TextHandler::taffich() { if (alllum[j] > alllum[k]) k = j; } - _vm->_mem[(kAdrCurrentPicture * 16) + 2 + (k << 1)] = rang[i]; + _vm->_curPict[2 + (k << 1)] = rang[i]; alllum[k] = -1; } } diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index 514aae3a4c..1689e01714 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -42,7 +42,7 @@ private: public: void setParent(MortevielleEngine *vm); void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ); - void loadDesFile(Common::String filename, int32 skipSize, int length); + void loadPictureFile(Common::String filename, int32 skipSize, int length); void loadAniFile(Common::String filename, int32 skipSize, int length); void taffich(); }; diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 0dd197840c..c6dd3f90e7 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -1979,8 +1979,8 @@ void MortevielleEngine::setPal(int n) { case MODE_EGA: case MODE_AMSTRAD1512: for (int i = 1; i <= 16; ++i) { - _mem[(kAdrCurrentPicture * 16) + (2 * i)] = _stdPal[n][i].x; - _mem[(kAdrCurrentPicture * 16) + (2 * i) + 1] = _stdPal[n][i].y; + _curPict[(2 * i)] = _stdPal[n][i].x; + _curPict[(2 * i) + 1] = _stdPal[n][i].y; } break; case MODE_CGA: { @@ -2008,12 +2008,12 @@ void MortevielleEngine::setPal(int n) { void MortevielleEngine::displayCGAPattern(int n, Pattern p, nhom *pal) { int addr = n * 404 + 0xd700; - WRITE_LE_UINT16(&_mem[(kAdrCurrentPicture * 16) + addr], p._tax); - WRITE_LE_UINT16(&_mem[(kAdrCurrentPicture * 16) + addr + 2], p._tay); + WRITE_LE_UINT16(&_curPict[addr], p._tax); + WRITE_LE_UINT16(&_curPict[addr + 2], p._tay); addr += 4; for (int i = 0; i < p._tax; ++i) { for (int j = 0; j < p._tay; ++j) - _mem[(kAdrCurrentPicture * 16) + addr + j * p._tax + i] = pal[n]._hom[p._des[i + 1][j + 1]]; + _curPict[addr + j * p._tax + i] = pal[n]._hom[p._des[i + 1][j + 1]]; } } @@ -2240,7 +2240,7 @@ void MortevielleEngine::showTitleScreen() { void MortevielleEngine::draw(int x, int y) { _mouse.hideMouse(); setPal(_numpal); - displayPicture(&_mem[kAdrCurrentPicture * 16], x, y); + displayPicture(_curPict, x, y); _mouse.showMouse(); } @@ -2250,9 +2250,9 @@ void MortevielleEngine::draw(int x, int y) { */ void MortevielleEngine::drawRightFrame() { setPal(89); - if (_currGraphicalDevice == MODE_HERCULES) { - _mem[(kAdrCurrentPicture * 16) + 14] = 15; - } + if (_currGraphicalDevice == MODE_HERCULES) + _curPict[14] = 15; + _mouse.hideMouse(); displayPicture(&_mem[kAdrRightFramePic * 16], 0, 0); _mouse.showMouse(); @@ -2544,12 +2544,13 @@ void MortevielleEngine::displayPicture(const byte *pic, int x, int y) { surface.decode(pic); if (_currGraphicalDevice == MODE_HERCULES) { - _mem[(kAdrCurrentPicture * 16) + 2] = 0; - _mem[(kAdrCurrentPicture * 16) + 32] = 15; + _curPict[2] = 0; + _curPict[32] = 15; } - if ((_caff != 51) && (READ_LE_UINT16(&_mem[(kAdrCurrentPicture * 16) + 0x4138]) > 0x100)) - WRITE_LE_UINT16(&_mem[(kAdrCurrentPicture * 16) + 0x4138], 0x100); + // CHECKME: Is it useful? + // if ((_caff != 51) && (READ_LE_UINT16(&_mem[(kAdrCurrentPicture * 16) + 0x4138]) > 0x100)) + // WRITE_LE_UINT16(&_mem[(kAdrCurrentPicture * 16) + 0x4138], 0x100); _screenSurface.drawPicture(surface, x, y); } @@ -2954,7 +2955,7 @@ void MortevielleEngine::displayQuestionText(Common::String s, int cmd) { * Display animation frame * @remarks Originally called 'aniof' */ -void MortevielleEngine::drawAnimFrame(int frameNum, int animId) { +void MortevielleEngine::displayAnimFrame(int frameNum, int animId) { if ((_caff == BATHROOM) && ((animId == 4) || (animId == 5))) return; @@ -2994,21 +2995,21 @@ void MortevielleEngine::drawPicture() { if ((_caff < 30) || (_caff > 32)) { for (int cx = 1; cx <= 6; ++cx) { if (_openObjects[cx] != 0) - drawAnimFrame(1, _openObjects[cx]); + displayAnimFrame(1, _openObjects[cx]); } if (_caff == ATTIC) { if (_coreVar._atticBallHoleObjectId == 141) - drawAnimFrame(1, 7); + displayAnimFrame(1, 7); if (_coreVar._atticRodHoleObjectId == 159) - drawAnimFrame(1, 6); + displayAnimFrame(1, 6); } else if ((_caff == CELLAR) && (_coreVar._cellarObjectId == 151)) - drawAnimFrame(1, 2); + displayAnimFrame(1, 2); else if ((_caff == SECRET_PASSAGE) && (_coreVar._secretPassageObjectId == 143)) - drawAnimFrame(1, 1); + displayAnimFrame(1, 1); else if ((_caff == WELL) && (_coreVar._wellObjectId != 0)) - drawAnimFrame(1, 1); + displayAnimFrame(1, 1); } if (_caff < ROOM26) -- cgit v1.2.3 From 11df17329283b03280ec145d7909e35e4e0d28e3 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Wed, 24 Jul 2013 18:24:28 +0200 Subject: MORTEVIELLE: Remove unused code from the original compression scheme --- engines/mortevielle/utils.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index c6dd3f90e7..9cda39e9f8 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2548,10 +2548,6 @@ void MortevielleEngine::displayPicture(const byte *pic, int x, int y) { _curPict[32] = 15; } - // CHECKME: Is it useful? - // if ((_caff != 51) && (READ_LE_UINT16(&_mem[(kAdrCurrentPicture * 16) + 0x4138]) > 0x100)) - // WRITE_LE_UINT16(&_mem[(kAdrCurrentPicture * 16) + 0x4138], 0x100); - _screenSurface.drawPicture(surface, x, y); } -- cgit v1.2.3 From eb998776ac14cfd11a7baca5748dfad592fd9cd0 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 25 Jul 2013 00:50:08 +0200 Subject: MORTEVIELLE: Fix box height when searching --- engines/mortevielle/utils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 9cda39e9f8..a8394f5015 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2981,7 +2981,7 @@ void MortevielleEngine::drawPicture() { clearUpperLeftPart(); if (_caff > 99) { draw(60, 33); - _screenSurface.drawBox(118, 32, 291, 121, 15); // Medium box + _screenSurface.drawBox(118, 32, 291, 122, 15); // Medium box } else if (_caff > 69) { draw(112, 48); // Heads _screenSurface.drawBox(222, 47, 155, 92, 15); -- cgit v1.2.3 From 3f191e8f0fb3fb4dbfac8e09fc39bf33557ab4ab Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 25 Jul 2013 09:49:43 +0200 Subject: MORTEVIELLE: Fix the German 2nd intro screen (original bug) --- engines/mortevielle/outtext.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 37ea06eb33..9bc6d8ffc8 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -129,10 +129,17 @@ void TextHandler::displayStr(Common::String inputStr, int x, int y, int dx, int * @remarks Originally called 'chardes' */ void TextHandler::loadPictureFile(Common::String filename, int32 skipSize, int length) { + warning("%s - pos %d size %d", filename.c_str(), skipSize, length); Common::File f; if (!f.open(filename)) error("Missing file %s", filename.c_str()); + // HACK: The original game contains a bug in the intro screen, in German DOS version. + // The size specified in the fxx array is wrong (too short). In order to fix it, we are using + // the value -1 to force a variable read length. + if (length < 0) + length = f.size() - skipSize; + assert(skipSize + length <= f.size()); free(_vm->_curPict); @@ -251,11 +258,14 @@ void TextHandler::taffich() { filename = "DZZ.mor"; if (a == 50) { + // First intro screen drawingStartPos = 0; drawingSize = _vm->_drawingSizeArr[87]; } else { // a == 51 + // Second intro screen drawingStartPos = _vm->_drawingSizeArr[87]; - drawingSize = _vm->_drawingSizeArr[88]; + // HACK: Force a variable size in order to fix the wrong size used by the German version + drawingSize = -1; } _vm->_maff = a; npal = a + 37; -- cgit v1.2.3 From 31dffa00e094f0782561fe3f5a342caae67dfdfd Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 25 Jul 2013 09:59:25 +0200 Subject: MORTEVIELLE: Remove the check on German for the intro filename by using an alternate filename in loading code --- engines/mortevielle/outtext.cpp | 26 ++++++++++++-------------- engines/mortevielle/outtext.h | 2 +- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 9bc6d8ffc8..85cc5809dc 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -128,16 +128,16 @@ void TextHandler::displayStr(Common::String inputStr, int x, int y, int dx, int * Load DES (picture container) file * @remarks Originally called 'chardes' */ -void TextHandler::loadPictureFile(Common::String filename, int32 skipSize, int length) { - warning("%s - pos %d size %d", filename.c_str(), skipSize, length); +void TextHandler::loadPictureFile(Common::String filename, Common::String altFilename, int32 skipSize, int length) { Common::File f; - if (!f.open(filename)) - error("Missing file %s", filename.c_str()); - - // HACK: The original game contains a bug in the intro screen, in German DOS version. + if (!f.open(filename)) { + if (!f.open(altFilename)) + error("Missing file: Either %s or %s", filename.c_str(), altFilename.c_str()); + } + // HACK: The original game contains a bug in the 2nd intro screen, in German DOS version. // The size specified in the fxx array is wrong (too short). In order to fix it, we are using // the value -1 to force a variable read length. - if (length < 0) + if (length == -1) length = f.size() - skipSize; assert(skipSize + length <= f.size()); @@ -224,7 +224,7 @@ void TextHandler::taffich() { _vm->_destinationOk = true; _vm->_mouse.hideMouse(); drawingStartPos = 0; - Common::String filename; + Common::String filename, altFilename; if ((a != 50) && (a != 51)) { _vm->_maff = a; @@ -250,12 +250,10 @@ void TextHandler::taffich() { drawingStartPos += _vm->_drawingSizeArr[cx]; drawingSize = _vm->_drawingSizeArr[a]; - filename = "DXX.mor"; + altFilename = filename = "DXX.mor"; } else { - if (_vm->getLanguage() == Common::DE_DEU) - filename = "DZZALL"; - else - filename = "DZZ.mor"; + filename = "DZZ.mor"; + altFilename = "DZZALL"; if (a == 50) { // First intro screen @@ -270,7 +268,7 @@ void TextHandler::taffich() { _vm->_maff = a; npal = a + 37; } - loadPictureFile(filename, drawingStartPos, drawingSize); + loadPictureFile(filename, altFilename, drawingStartPos, drawingSize); if (_vm->_currGraphicalDevice == MODE_HERCULES) { for (int i = 0; i <= 15; ++i) { int palh = READ_LE_UINT16(&_vm->_curPict[2 + (i << 1)]); diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index 1689e01714..1c69d9b9b4 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -42,7 +42,7 @@ private: public: void setParent(MortevielleEngine *vm); void displayStr(Common::String inputStr, int x, int y, int dx, int dy, int typ); - void loadPictureFile(Common::String filename, int32 skipSize, int length); + void loadPictureFile(Common::String filename, Common::String altFilename, int32 skipSize, int length); void loadAniFile(Common::String filename, int32 skipSize, int length); void taffich(); }; -- cgit v1.2.3 From 51f69666562c86708466c85485ef2fe062f9af23 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 25 Jul 2013 10:10:09 +0200 Subject: MORTEVIELLE: Use a specific buffer instead of _mem for the right frame --- engines/mortevielle/mortevielle.h | 3 +-- engines/mortevielle/utils.cpp | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 91a65c1e0c..ae35b20554 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -67,7 +67,6 @@ const int kAdrMusic = 0x5000; const int kAdrCompMusicBuf1 = 0x7414; const int kAdrCompMusicBuf2 = 0x3800; -const int kAdrRightFramePic = 0x73A2; #define ord(v) ((int) v) #define chr(v) ((unsigned char) v) @@ -477,7 +476,7 @@ public: // TODO: Replace the following with proper implementations, or refactor out the code using them byte _mem[65536 * 16]; byte *_curPict; - + byte _rightFramePict[1664]; Debugger _debugger; ScreenSurface _screenSurface; PaletteManager _paletteManager; diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index a8394f5015..36b2d613ca 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2254,7 +2254,7 @@ void MortevielleEngine::drawRightFrame() { _curPict[14] = 15; _mouse.hideMouse(); - displayPicture(&_mem[kAdrRightFramePic * 16], 0, 0); + displayPicture(_rightFramePict, 0, 0); _mouse.showMouse(); } @@ -2570,7 +2570,7 @@ void MortevielleEngine::adzon() { if (!f.open("dec.mor")) error("Missing file - dec.mor"); - f.read(&_mem[kAdrRightFramePic * 16], 1664); + f.read(_rightFramePict, 1664); f.close(); } -- cgit v1.2.3 From e86ec8bc819b60ef026450630d69b2bdd481b97c Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 25 Jul 2013 10:24:25 +0200 Subject: MORTEVIELLE: Use variable size for _rightFramePict in order to handle the different sizes of the Amiga and Atari versions --- engines/mortevielle/mortevielle.cpp | 2 ++ engines/mortevielle/mortevielle.h | 3 ++- engines/mortevielle/utils.cpp | 4 +++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index f98832f984..7e73d116dd 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -102,10 +102,12 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g memset(_mem, 0, sizeof(_mem)); _curPict = nullptr; + _rightFramePict = nullptr; } MortevielleEngine::~MortevielleEngine() { free(_curPict); + free(_rightFramePict); } /** diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index ae35b20554..dbd0449d9a 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -476,7 +476,8 @@ public: // TODO: Replace the following with proper implementations, or refactor out the code using them byte _mem[65536 * 16]; byte *_curPict; - byte _rightFramePict[1664]; + byte *_rightFramePict; + Debugger _debugger; ScreenSurface _screenSurface; PaletteManager _paletteManager; diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 36b2d613ca..f82f6f7837 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2570,7 +2570,9 @@ void MortevielleEngine::adzon() { if (!f.open("dec.mor")) error("Missing file - dec.mor"); - f.read(_rightFramePict, 1664); + free(_rightFramePict); + _rightFramePict = (byte *)malloc(sizeof(byte) * f.size()); + f.read(_rightFramePict, f.size()); f.close(); } -- cgit v1.2.3 From 8e2fe73afab1b27d70c4cd64c66b70673df5ea98 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 25 Jul 2013 10:32:21 +0200 Subject: MORTEVIELLE: Use a specific buffer instead of _mem for the animations --- engines/mortevielle/dialogs.cpp | 4 ++-- engines/mortevielle/mortevielle.cpp | 2 ++ engines/mortevielle/mortevielle.h | 3 ++- engines/mortevielle/outtext.cpp | 5 ++++- engines/mortevielle/outtext.h | 2 -- engines/mortevielle/utils.cpp | 6 +++--- 6 files changed, 13 insertions(+), 9 deletions(-) diff --git a/engines/mortevielle/dialogs.cpp b/engines/mortevielle/dialogs.cpp index f6fe9661ac..ba5d984886 100644 --- a/engines/mortevielle/dialogs.cpp +++ b/engines/mortevielle/dialogs.cpp @@ -481,9 +481,9 @@ void DialogManager::displayIntroScreen(bool drawFrame2Fl) { */ void DialogManager::displayIntroFrame2() { _vm->_crep = _vm->getAnimOffset(1, 1); - _vm->displayPicture(&_vm->_mem[(kAdrAni * 16) + _vm->_crep], 63, 12); + _vm->displayPicture(&_vm->_curAnim[_vm->_crep], 63, 12); _vm->_crep = _vm->getAnimOffset(2, 1); - _vm->displayPicture(&_vm->_mem[(kAdrAni * 16) + _vm->_crep], 63, 12); + _vm->displayPicture(&_vm->_curAnim[_vm->_crep], 63, 12); _vm->_largestClearScreen = (_vm->_resolutionScaler == 1); _vm->handleDescriptionText(2, kDialogStringIndex + 143); } diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 7e73d116dd..8eea0cabb5 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -102,11 +102,13 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g memset(_mem, 0, sizeof(_mem)); _curPict = nullptr; + _curAnim = nullptr; _rightFramePict = nullptr; } MortevielleEngine::~MortevielleEngine() { free(_curPict); + free(_curAnim); free(_rightFramePict); } diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index dbd0449d9a..94e9716e7b 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -476,8 +476,9 @@ public: // TODO: Replace the following with proper implementations, or refactor out the code using them byte _mem[65536 * 16]; byte *_curPict; + byte *_curAnim; byte *_rightFramePict; - + Debugger _debugger; ScreenSurface _screenSurface; PaletteManager _paletteManager; diff --git a/engines/mortevielle/outtext.cpp b/engines/mortevielle/outtext.cpp index 85cc5809dc..99c06c7c4c 100644 --- a/engines/mortevielle/outtext.cpp +++ b/engines/mortevielle/outtext.cpp @@ -159,8 +159,11 @@ void TextHandler::loadAniFile(Common::String filename, int32 skipSize, int lengt error("Missing file - %s", filename.c_str()); assert(skipSize + length <= f.size()); + + free(_vm->_curAnim); + _vm->_curAnim = (byte *)malloc(sizeof(byte) * length); f.seek(skipSize); - f.read(&_vm->_mem[(kAdrAni * 16)], length); + f.read(_vm->_curAnim, length); f.close(); } diff --git a/engines/mortevielle/outtext.h b/engines/mortevielle/outtext.h index 1c69d9b9b4..44868036d5 100644 --- a/engines/mortevielle/outtext.h +++ b/engines/mortevielle/outtext.h @@ -33,8 +33,6 @@ namespace Mortevielle { class MortevielleEngine; -const int kAdrAni = 0x7314; - class TextHandler { private: MortevielleEngine *_vm; diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index f82f6f7837..001b2d3baf 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2581,12 +2581,12 @@ void MortevielleEngine::adzon() { * @remarks Originally called 'animof' */ int MortevielleEngine::getAnimOffset(int frameNum, int animNum) { - int animCount = _mem[(kAdrAni * 16) + 1]; + int animCount = _curAnim[1]; int aux = animNum; if (frameNum != 1) aux += animCount; - return (animCount << 2) + 2 + READ_BE_UINT16(&_mem[(kAdrAni * 16) + (aux << 1)]); + return (animCount << 2) + 2 + READ_BE_UINT16(&_curAnim[aux << 1]); } /** @@ -2969,7 +2969,7 @@ void MortevielleEngine::displayAnimFrame(int frameNum, int animId) { int offset = getAnimOffset(frameNum, animId); GfxSurface surface; - surface.decode(&_mem[(kAdrAni * 16) + offset]); + surface.decode(&_curAnim[offset]); _screenSurface.drawPicture(surface, 0, 12); prepareScreenType1(); -- cgit v1.2.3 From db10ddace466522062a18a0c9079292225fb53d0 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 25 Jul 2013 15:47:31 +0200 Subject: MORTEVIELLE: Use a specific buffer instead of _mem for noise5 file --- engines/mortevielle/speech.cpp | 11 ++++++++--- engines/mortevielle/speech.h | 4 +++- engines/mortevielle/utils.cpp | 5 ++++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 7fe8c54f2d..3a42c957c8 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -68,6 +68,11 @@ SpeechManager::SpeechManager() { _queue[i]._freq = 0; _queue[i]._rep = 0; } + _noise5Buf = nullptr; +} + +SpeechManager::~SpeechManager() { + free(_noise5Buf); } void SpeechManager::spfrac(int wor) { @@ -194,10 +199,10 @@ void SpeechManager::loadNoise() { if (!f.open("bruits")) //Translation: "noise" error("Missing file - bruits"); - f.read(&_vm->_mem[kAdrNoise * 16], 250 * 128); + f.read(&_vm->_mem[kAdrNoise * 16], 250 * 128); // 32000 for (i = 0; i <= 19013; ++i) - _vm->_mem[(kAdrNoise * 16) + 32000 + i] = _vm->_mem[(kAdrNoise5 * 16) + i]; - f.read(&_vm->_mem[(kAdrNoise1 * 16) + kOffsetB1], 149 * 128); + _vm->_mem[(kAdrNoise * 16) + 32000 + i] = _noise5Buf[i]; + f.read(&_vm->_mem[(kAdrNoise1 * 16) + kOffsetB1], 149 * 128); // 19072 f.close(); } diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h index b3d7c15203..ef3211dad9 100644 --- a/engines/mortevielle/speech.h +++ b/engines/mortevielle/speech.h @@ -37,7 +37,6 @@ namespace Mortevielle { const int kAdrNoise = 0x5cb0;/*2C00;*/ const int kAdrNoise1 = 0x6924; const int kAdrNoise3 = 0x6ba6;/*3AF6;*/ -const int kAdrNoise5 = 0x3b50; const int kAdrTroct = 0x406b; const int kAdrWord = 0x4000; const int kOffsetB1 = 6; @@ -79,8 +78,11 @@ public: int16 *_cfiphBuffer; int _tbi[256]; int _mlec; + byte *_noise5Buf; + int _noise5Size; SpeechManager(); + ~SpeechManager(); void setParent(MortevielleEngine *vm); void spfrac(int wor); void charg_car(int &currWordNumb); diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 001b2d3baf..2211a6d569 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2134,7 +2134,10 @@ void MortevielleEngine::loadBRUIT5() { if (!f.open("bruit5")) error("Missing file - bruit5"); - f.read(&_mem[kAdrNoise5 * 16], 149 * 128); + free(_speechManager._noise5Buf); + _speechManager._noise5Size = f.size(); + _speechManager._noise5Buf = (byte *)malloc(sizeof(byte) * _speechManager._noise5Size); + f.read(_speechManager._noise5Buf, _speechManager._noise5Size); f.close(); } -- cgit v1.2.3 From 8009b2ebd87ca546741a391e399f3633576b255b Mon Sep 17 00:00:00 2001 From: Strangerke Date: Fri, 26 Jul 2013 13:10:54 +0200 Subject: MORTEVIELLE: Remove another use of _mem --- engines/mortevielle/mortevielle.cpp | 2 ++ engines/mortevielle/mortevielle.h | 2 +- engines/mortevielle/speech.cpp | 4 +--- engines/mortevielle/utils.cpp | 13 ++++++++----- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 8eea0cabb5..616bee1a67 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -104,12 +104,14 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _curPict = nullptr; _curAnim = nullptr; _rightFramePict = nullptr; + _compMusicBuf2 = nullptr; } MortevielleEngine::~MortevielleEngine() { free(_curPict); free(_curAnim); free(_rightFramePict); + free(_compMusicBuf2); } /** diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 94e9716e7b..23003719ba 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -66,7 +66,6 @@ namespace Mortevielle { const int kAdrMusic = 0x5000; const int kAdrCompMusicBuf1 = 0x7414; -const int kAdrCompMusicBuf2 = 0x3800; #define ord(v) ((int) v) #define chr(v) ((unsigned char) v) @@ -478,6 +477,7 @@ public: byte *_curPict; byte *_curAnim; byte *_rightFramePict; + byte *_compMusicBuf2; Debugger _debugger; ScreenSurface _screenSurface; diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 3a42c957c8..899cd80472 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -194,13 +194,12 @@ void SpeechManager::loadPhonemeSounds() { */ void SpeechManager::loadNoise() { Common::File f; - int i; if (!f.open("bruits")) //Translation: "noise" error("Missing file - bruits"); f.read(&_vm->_mem[kAdrNoise * 16], 250 * 128); // 32000 - for (i = 0; i <= 19013; ++i) + for (int i = 0; i < _noise5Size; ++i) _vm->_mem[(kAdrNoise * 16) + 32000 + i] = _noise5Buf[i]; f.read(&_vm->_mem[(kAdrNoise1 * 16) + kOffsetB1], 149 * 128); // 19072 @@ -582,7 +581,6 @@ void SpeechManager::startSpeech(int rep, int ht, int typ) { switch (typ) { case 1: loadNoise(); - /*if zuul then zzuul(kAdrNoise,0,1095);*/ regenbruit(); break; case 2: diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 2211a6d569..7a8306067d 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -2193,14 +2193,17 @@ void MortevielleEngine::music() { _reloadCFIEC = true; - Common::File fic; - if (!fic.open("mort.img")) + Common::File f; + if (!f.open("mort.img")) error("Missing file - mort.img"); - fic.read(&_mem[kAdrCompMusicBuf2 * 16], 623 * 128); - fic.close(); + free(_compMusicBuf2); + int size = f.size(); + _compMusicBuf2 = (byte *)malloc(sizeof(byte) * size); + f.read(_compMusicBuf2, size); + f.close(); - _soundManager.decodeMusic(&_mem[kAdrCompMusicBuf2 * 16], &_mem[kAdrMusic * 16], 623); + _soundManager.decodeMusic(_compMusicBuf2, &_mem[kAdrMusic * 16], size / 128); _addFix = (float)((kTempoMusic - 8)) / 256; _speechManager.cctable(_speechManager._tbi); -- cgit v1.2.3 From 0b8db36af5aa5305f3c420255fb7faa5f7b9f4e4 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sat, 27 Jul 2013 00:08:56 +0200 Subject: MORTEVIELLE: Remove another use of _mem --- engines/mortevielle/mortevielle.cpp | 2 ++ engines/mortevielle/mortevielle.h | 3 +-- engines/mortevielle/speech.cpp | 8 +++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/engines/mortevielle/mortevielle.cpp b/engines/mortevielle/mortevielle.cpp index 616bee1a67..b4b46a4286 100644 --- a/engines/mortevielle/mortevielle.cpp +++ b/engines/mortevielle/mortevielle.cpp @@ -104,6 +104,7 @@ MortevielleEngine::MortevielleEngine(OSystem *system, const ADGameDescription *g _curPict = nullptr; _curAnim = nullptr; _rightFramePict = nullptr; + _compMusicBuf1 = nullptr; _compMusicBuf2 = nullptr; } @@ -111,6 +112,7 @@ MortevielleEngine::~MortevielleEngine() { free(_curPict); free(_curAnim); free(_rightFramePict); + free(_compMusicBuf1); free(_compMusicBuf2); } diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 23003719ba..6f5d4b4fac 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -65,8 +65,6 @@ namespace Mortevielle { */ const int kAdrMusic = 0x5000; -const int kAdrCompMusicBuf1 = 0x7414; - #define ord(v) ((int) v) #define chr(v) ((unsigned char) v) #define lo(v) ((v) & 0xff) @@ -477,6 +475,7 @@ public: byte *_curPict; byte *_curAnim; byte *_rightFramePict; + byte *_compMusicBuf1; byte *_compMusicBuf2; Debugger _debugger; diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 899cd80472..445f7faffb 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -162,13 +162,15 @@ void SpeechManager::regenbruit() { */ void SpeechManager::loadMusicSound() { Common::File f; - if (!f.open("sonmus.mor")) error("Missing file - sonmus.mor"); - f.read(&_vm->_mem[kAdrCompMusicBuf1 * 16], 273 * 128); + free(_vm->_compMusicBuf1); + int size = f.size(); + _vm->_compMusicBuf1 = (byte *)malloc(sizeof(byte) * size); + f.read(_vm->_compMusicBuf1, size); - _vm->_soundManager.decodeMusic(&_vm->_mem[kAdrCompMusicBuf1 * 16], &_vm->_mem[kAdrNoise * 16], 273); + _vm->_soundManager.decodeMusic(_vm->_compMusicBuf1, &_vm->_mem[kAdrNoise * 16], size / 128); f.close(); } -- cgit v1.2.3 From 1b2adafefa6512ce8f3d9b85b0d55a3c8fad4672 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Sun, 28 Jul 2013 23:35:26 +0200 Subject: MORTEVIELLE: Use heap allocation in GfxSurface::decode, remove one use of swap --- engines/mortevielle/graphics.cpp | 12 ++++++++---- engines/mortevielle/speech.cpp | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index e5edeed97a..3a411691aa 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -120,15 +120,15 @@ void GfxSurface::decode(const byte *pSrc) { } // Temporary output buffer - byte outputBuffer[65536]; - Common::fill(&outputBuffer[0], &outputBuffer[65536], _transparency); + byte *outputBuffer = (byte *)malloc(sizeof(byte) * 65536); + memset(outputBuffer, _transparency, 65536); byte *pDest = &outputBuffer[0]; const byte *pSrcStart = pSrc; const byte *pLookup = NULL; - byte lookupTable[BUFFER_SIZE]; - byte srcBuffer[BUFFER_SIZE]; + byte *lookupTable = (byte *)malloc(sizeof(byte) * BUFFER_SIZE); + byte *srcBuffer = (byte *)malloc(sizeof(byte) * BUFFER_SIZE); // Main processing loop for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex) { @@ -427,6 +427,10 @@ void GfxSurface::decode(const byte *pSrc) { Common::copy(copySrc, copySrc + w, copyDest); } + + ::free(outputBuffer); + ::free(lookupTable); + ::free(srcBuffer); } void GfxSurface::majTtxTty() { diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 445f7faffb..08c92c6560 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -88,7 +88,7 @@ void SpeechManager::spfrac(int wor) { } void SpeechManager::charg_car(int &currWordNumb) { - int wor = swap(READ_LE_UINT16(&_vm->_mem[(kAdrWord * 16) + currWordNumb])); + int wor = READ_BE_UINT16(&_vm->_mem[(kAdrWord * 16) + currWordNumb]); int int_ = wor & 0x3f; // 63 if ((int_ >= 0) && (int_ <= 13)) { -- cgit v1.2.3 From b50f0e2a0d657c64dedb5800912b9e6558e0529d Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 29 Jul 2013 01:58:03 +0200 Subject: MORTEVIELLE: Remove remaining macros, start refactoring menus, modify the way _cfiphBuffer is read/written --- engines/mortevielle/actions.cpp | 21 ++++--- engines/mortevielle/graphics.cpp | 2 +- engines/mortevielle/menu.cpp | 112 +++++++++++++++++++------------------- engines/mortevielle/menu.h | 39 +++++++++++-- engines/mortevielle/mortevielle.h | 20 ------- engines/mortevielle/speech.cpp | 23 ++++---- engines/mortevielle/speech.h | 2 +- engines/mortevielle/utils.cpp | 52 +++++++++--------- 8 files changed, 143 insertions(+), 128 deletions(-) diff --git a/engines/mortevielle/actions.cpp b/engines/mortevielle/actions.cpp index 88eee0cf7d..5738a8fd3a 100644 --- a/engines/mortevielle/actions.cpp +++ b/engines/mortevielle/actions.cpp @@ -41,13 +41,14 @@ namespace Mortevielle { * @remarks Originally called 'taller' */ void MortevielleEngine::fctMove() { - if ((_coreVar._currPlace == ROOM26) && (_currAction == _menu._moveMenu[6])) { + int oldMenu = (_menu._moveMenu[6]._menuId << 8) | _menu._moveMenu[6]._actionId; + if ((_coreVar._currPlace == ROOM26) && (_currAction == oldMenu)) { _coreVar._currPlace = LANDING; _caff = _coreVar._currPlace; drawPictureWithText(); handleDescriptionText(2, _coreVar._currPlace); } - if ((_coreVar._currPlace == LANDING) && (_currAction == _menu._moveMenu[6])) { + if ((_coreVar._currPlace == LANDING) && (_currAction == oldMenu)) { if (!_syn) displayTextInVerbBar(getEngineString(S_GO_TO)); displayStatusArrow(); @@ -85,9 +86,11 @@ void MortevielleEngine::fctMove() { } exitRoom(); int menuChoice = 1; - - while (_menu._moveMenu[menuChoice] != _currAction) + oldMenu = (_menu._moveMenu[menuChoice]._menuId << 8) | _menu._moveMenu[menuChoice]._actionId; + while (oldMenu != _currAction) { ++menuChoice; + oldMenu = (_menu._moveMenu[menuChoice]._menuId << 8) | _menu._moveMenu[menuChoice]._actionId; + } if (_coreVar._currPlace == MOUNTAIN) { if (menuChoice == 1) @@ -300,9 +303,11 @@ void MortevielleEngine::fctTake() { */ void MortevielleEngine::fctInventoryTake() { int inventIndex = 0; + int oldMenu = 0; do { ++inventIndex; - } while (_menu._inventoryMenu[inventIndex] != _currAction); + oldMenu = (_menu._inventoryMenu[inventIndex]._menuId << 8) | _menu._inventoryMenu[inventIndex]._actionId; + } while (oldMenu != _currAction); int cz = 0; int cy = 0; do { @@ -1154,7 +1159,7 @@ void MortevielleEngine::fctEnter() { ++_coreVar._faithScore; _coreVar._currPlace = LANDING; _currMenu = MENU_DISCUSS; - _currAction = _menu._discussMenu[charIndex]; + _currAction = (_menu._discussMenu[charIndex]._menuId << 8) | _menu._discussMenu[charIndex]._actionId; _syn = true; if (_roomDoorId == ROOM9) { _col = true; @@ -1352,9 +1357,11 @@ void MortevielleEngine::fctDiscuss() { displId = 128; else { cx = 0; + int oldMenu; do { ++cx; - } while (_menu._discussMenu[cx] != _currAction); + oldMenu = (_menu._discussMenu[cx]._menuId << 8) | _menu._discussMenu[cx]._actionId; + } while (oldMenu != _currAction); _caff = 69 + cx; drawPictureWithText(); handleDescriptionText(2, _caff); diff --git a/engines/mortevielle/graphics.cpp b/engines/mortevielle/graphics.cpp index 3a411691aa..8392fabd6a 100644 --- a/engines/mortevielle/graphics.cpp +++ b/engines/mortevielle/graphics.cpp @@ -1113,7 +1113,7 @@ void ScreenSurface::drawString(const Common::String &l, int command) { pt.x += 1; pt.y += 1; for (x = 1; (x <= (int)l.size()) && (l[x - 1] != 0); ++x) { - _vm->_screenSurface.writeCharacter(Common::Point(pt.x, pt.y), ord(l[x - 1]), color); + _vm->_screenSurface.writeCharacter(Common::Point(pt.x, pt.y), l[x - 1], color); pt.x += charWidth; } _vm->_mouse.showMouse(); diff --git a/engines/mortevielle/menu.cpp b/engines/mortevielle/menu.cpp index a1f628992d..f86fd208c1 100644 --- a/engines/mortevielle/menu.cpp +++ b/engines/mortevielle/menu.cpp @@ -52,32 +52,30 @@ const byte menuConstants[8][4] = { * Setup a menu's contents * @remarks Originally called 'menut' */ -void Menu::setText(int menuId, Common::String name) { - byte h = hi(menuId); - byte l = lo(menuId); +void Menu::setText(int menuId, int actionId, Common::String name) { Common::String s = name; while (s.size() < 22) s += ' '; - switch (h) { + switch (menuId) { case MENU_INVENTORY: - if (l != 7) { - _inventoryStringArray[l] = s; - _inventoryStringArray[l].insertChar(' ', 0); + if (actionId != 7) { + _inventoryStringArray[actionId] = s; + _inventoryStringArray[actionId].insertChar(' ', 0); } break; case MENU_MOVE: - _moveStringArray[l] = s; + _moveStringArray[actionId] = s; break; case MENU_ACTION: - _actionStringArray[l] = s; + _actionStringArray[actionId] = s; break; case MENU_SELF: - _selfStringArray[l] = s; + _selfStringArray[actionId] = s; break; case MENU_DISCUSS: - _discussStringArray[l] = s; + _discussStringArray[actionId] = s; break; default: break; @@ -99,40 +97,38 @@ void Menu::setDestinationText(int roomId) { nomp = _vm->getString(_vm->_destinationArray[destinationId][roomId] + kMenuPlaceStringIndex); while (nomp.size() < 20) nomp += ' '; - setText(_moveMenu[destinationId + 1], nomp); + setText(_moveMenu[destinationId + 1]._menuId, _moveMenu[destinationId + 1]._actionId, nomp); } nomp = "* "; for (int i = 7; i >= destinationId + 1; --i) - setText(_moveMenu[i], nomp); + setText(_moveMenu[i]._menuId, _moveMenu[i]._actionId, nomp); } /** * _disable a menu item - * @param menuId Hi byte represents menu number, lo byte reprsents item index + * @param menuId Menu number + * @param actionId Item index */ -void Menu::disableMenuItem(int menuId) { - byte h = hi(menuId); - byte l = lo(menuId); - - switch (h) { +void Menu::disableMenuItem(int menuId, int actionId) { + switch (menuId) { case MENU_INVENTORY: - if (l > 6) { - _inventoryStringArray[l].setChar('<', 0); - _inventoryStringArray[l].setChar('>', 21); + if (actionId > 6) { + _inventoryStringArray[actionId].setChar('<', 0); + _inventoryStringArray[actionId].setChar('>', 21); } else - _inventoryStringArray[l].setChar('*', 0); + _inventoryStringArray[actionId].setChar('*', 0); break; case MENU_MOVE: - _moveStringArray[l].setChar('*', 0); + _moveStringArray[actionId].setChar('*', 0); break; case MENU_ACTION: - _actionStringArray[l].setChar('*', 0); + _actionStringArray[actionId].setChar('*', 0); break; case MENU_SELF: - _selfStringArray[l].setChar('*', 0); + _selfStringArray[actionId].setChar('*', 0); break; case MENU_DISCUSS: - _discussStringArray[l].setChar('*', 0); + _discussStringArray[actionId].setChar('*', 0); break; default: break; @@ -141,31 +137,29 @@ void Menu::disableMenuItem(int menuId) { /** * Enable a menu item - * @param menuId Hi byte represents menu number, lo byte reprsents item index + * @param menuId Menu number + * @param actionId Item index * @remarks Originally called menu_enable */ -void Menu::enableMenuItem(int menuId) { - byte h = hi(menuId); - byte l = lo(menuId); - - switch (h) { +void Menu::enableMenuItem(int menuId, int actionId) { + switch (menuId) { case MENU_INVENTORY: - _inventoryStringArray[l].setChar(' ', 0); - _inventoryStringArray[l].setChar(' ', 21); + _inventoryStringArray[actionId].setChar(' ', 0); + _inventoryStringArray[actionId].setChar(' ', 21); break; case MENU_MOVE: - _moveStringArray[l].setChar(' ', 0); + _moveStringArray[actionId].setChar(' ', 0); break; case MENU_ACTION: - _actionStringArray[l].setChar(' ', 0); + _actionStringArray[actionId].setChar(' ', 0); break; case MENU_SELF: - _selfStringArray[l].setChar(' ', 0); + _selfStringArray[actionId].setChar(' ', 0); // The original sets two times the same value. Skipped // _selfStringArray[l].setChar(' ', 0); break; case MENU_DISCUSS: - _discussStringArray[l].setChar(' ', 0); + _discussStringArray[actionId].setChar(' ', 0); break; default: break; @@ -235,7 +229,7 @@ void Menu::invert(int indx) { if (_msg4 == OPCODE_NONE) return; - int menuIndex = lo(_msg4); + int menuIndex = _msg4 & 0xFF; _vm->_screenSurface.putxy(menuConstants[_msg3 - 1][0] << 3, (menuIndex + 1) << 3); @@ -471,7 +465,7 @@ void Menu::updateMenu() { // Another menu to be _displayed _vm->setMouseClick(false); menuUp(_msg3); - if (lo(_msg4) == 1) + if ((_msg4 & 0xFF) == 1) _msg3 = MENU_SAVE; else _msg3 = MENU_LOAD; @@ -531,12 +525,16 @@ void Menu::initMenu(MortevielleEngine *vm) { ++i; } while (i != 22); for (i = 1; i <= 8; ++i) { - _discussMenu[i] = 0x500 + i; - if (i < 8) - _moveMenu[i] = 0x200 + i; - _inventoryMenu[i] = 0x100 + i; + _discussMenu[i]._menuId = MENU_DISCUSS; + _discussMenu[i]._actionId = i; + if (i < 8) { + _moveMenu[i]._menuId = MENU_MOVE; + _moveMenu[i]._actionId = i; + } + _inventoryMenu[i]._menuId = MENU_INVENTORY; + _inventoryMenu[i]._actionId = i; if (i > 6) - disableMenuItem(_inventoryMenu[i]); + disableMenuItem(_inventoryMenu[i]._menuId, _inventoryMenu[i]._actionId); } _msg3 = OPCODE_NONE; _msg4 = OPCODE_NONE; @@ -551,13 +549,13 @@ void Menu::initMenu(MortevielleEngine *vm) { */ void Menu::setSearchMenu() { for (int i = 1; i <= 7; ++i) - disableMenuItem(_moveMenu[i]); + disableMenuItem(MENU_MOVE, _moveMenu[i]._actionId); for (int i = 1; i <= 11; ++i) - disableMenuItem(_actionMenu[i]); + disableMenuItem(_actionMenu[i]._menuId, _actionMenu[i]._actionId); - setText(OPCODE_SOUND, _vm->getEngineString(S_SUITE)); - setText(OPCODE_LIFT, _vm->getEngineString(S_STOP)); + setText(OPCODE_SOUND >> 8, OPCODE_SOUND & 0xFF, _vm->getEngineString(S_SUITE)); + setText(OPCODE_LIFT >> 8, OPCODE_LIFT & 0xFF, _vm->getEngineString(S_STOP)); } /** @@ -567,10 +565,10 @@ void Menu::setSearchMenu() { void Menu::unsetSearchMenu() { setDestinationText(_vm->_coreVar._currPlace); for (int i = 1; i <= 11; ++i) - enableMenuItem(_actionMenu[i]); + enableMenuItem(_actionMenu[i]._menuId, _actionMenu[i]._actionId); - setText(OPCODE_SOUND, _vm->getEngineString(S_PROBE)); - setText(OPCODE_LIFT, _vm->getEngineString(S_RAISE)); + setText(OPCODE_SOUND >> 8, OPCODE_SOUND & 0xFF, _vm->getEngineString(S_PROBE)); + setText(OPCODE_LIFT >> 8, OPCODE_LIFT & 0xFF, _vm->getEngineString(S_RAISE)); } /** @@ -586,15 +584,15 @@ void Menu::setInventoryText() { ++cy; int r = _vm->_coreVar._inventory[i] + 400; nomp = _vm->getString(r - 501 + kInventoryStringIndex); - setText(_inventoryMenu[cy], nomp); - enableMenuItem(_inventoryMenu[i]); + setText(_inventoryMenu[cy]._menuId, _inventoryMenu[cy]._actionId, nomp); + enableMenuItem(_inventoryMenu[i]._menuId, _inventoryMenu[i]._actionId); } } if (cy < 6) { for (int i = cy + 1; i <= 6; ++i) { - setText(_inventoryMenu[i], " "); - disableMenuItem(_inventoryMenu[i]); + setText(_inventoryMenu[i]._menuId, _inventoryMenu[i]._actionId, " "); + disableMenuItem(_inventoryMenu[i]._menuId, _inventoryMenu[i]._actionId); } } } diff --git a/engines/mortevielle/menu.h b/engines/mortevielle/menu.h index d4538effee..2428d8917b 100644 --- a/engines/mortevielle/menu.h +++ b/engines/mortevielle/menu.h @@ -40,6 +40,33 @@ enum { MENU_LOAD = 8 }; +enum verbs {OPCODE_NONE = 0, OPCODE_ATTACH = 0x301, OPCODE_WAIT = 0x302, OPCODE_FORCE = 0x303, OPCODE_SLEEP = 0x304, OPCODE_LISTEN = 0x305, +OPCODE_ENTER = 0x306, OPCODE_CLOSE = 0x307, OPCODE_SEARCH = 0x308, OPCODE_KNOCK = 0x309, OPCODE_SCRATCH = 0x30a, +OPCODE_READ = 0x30b, OPCODE_EAT = 0x30c, OPCODE_PLACE = 0x30d, OPCODE_OPEN = 0x30e, OPCODE_TAKE = 0x30f, +OPCODE_LOOK = 0x310, OPCODE_SMELL = 0x311, OPCODE_SOUND = 0x312, OPCODE_LEAVE = 0x313, OPCODE_LIFT = 0x314, +OPCODE_TURN = 0x315, OPCODE_SHIDE = 0x401, OPCODE_SSEARCH = 0x402, OPCODE_SREAD = 0x403, OPCODE_SPUT = 0x404, +OPCODE_SLOOK = 0x405}; + +struct menuItem { + int _menuId; + int _actionId; +}; + +static const menuItem _actionMenu[12] = { + {OPCODE_NONE >> 8, OPCODE_NONE & 0xFF}, + {OPCODE_SHIDE >> 8, OPCODE_SHIDE & 0xFF}, + {OPCODE_ATTACH >> 8, OPCODE_ATTACH & 0xFF}, + {OPCODE_FORCE >> 8, OPCODE_FORCE & 0xFF}, + {OPCODE_SLEEP >> 8, OPCODE_SLEEP & 0xFF}, + {OPCODE_ENTER >> 8, OPCODE_ENTER & 0xFF}, + {OPCODE_CLOSE >> 8, OPCODE_CLOSE & 0xFF}, + {OPCODE_KNOCK >> 8, OPCODE_KNOCK & 0xFF}, + {OPCODE_EAT >> 8, OPCODE_EAT & 0xFF}, + {OPCODE_PLACE >> 8, OPCODE_PLACE & 0xFF}, + {OPCODE_OPEN >> 8, OPCODE_OPEN & 0xFF}, + {OPCODE_LEAVE >> 8, OPCODE_LEAVE & 0xFF} +}; + class Menu { private: MortevielleEngine *_vm; @@ -61,15 +88,15 @@ public: Common::String _actionStringArray[22]; Common::String _selfStringArray[7]; Common::String _discussStringArray[9]; - int _discussMenu[9]; - int _inventoryMenu[9]; - int _moveMenu[8]; + menuItem _discussMenu[9]; + menuItem _inventoryMenu[9]; + menuItem _moveMenu[8]; - void setText(int menuId, Common::String name); + void setText(int menuId, int actionId, Common::String name); void setDestinationText(int roomId); void setInventoryText(); - void disableMenuItem(int menuId); - void enableMenuItem(int menuId); + void disableMenuItem(int menuId, int actionId); + void enableMenuItem(int menuId, int actionId); void displayMenu(); void drawMenu(); void menuUp(int msgId); diff --git a/engines/mortevielle/mortevielle.h b/engines/mortevielle/mortevielle.h index 6f5d4b4fac..4d07d3000f 100644 --- a/engines/mortevielle/mortevielle.h +++ b/engines/mortevielle/mortevielle.h @@ -65,12 +65,6 @@ namespace Mortevielle { */ const int kAdrMusic = 0x5000; -#define ord(v) ((int) v) -#define chr(v) ((unsigned char) v) -#define lo(v) ((v) & 0xff) -#define hi(v) (((v) >> 8) & 0xff) -#define swap(v) (((lo(v)) << 8) | ((hi(v)) >> 8)) - // Debug channels enum { kMortevielleCore = 1 << 0, @@ -137,20 +131,6 @@ const int kMenuSelfStringIndex = 497; const int kMenuSayStringIndex = 502; const int kMaxPatt = 20; -const int OPCODE_NONE = 0; -enum verbs {OPCODE_ATTACH = 0x301, OPCODE_WAIT = 0x302, OPCODE_FORCE = 0x303, OPCODE_SLEEP = 0x304, OPCODE_LISTEN = 0x305, - OPCODE_ENTER = 0x306, OPCODE_CLOSE = 0x307, OPCODE_SEARCH = 0x308, OPCODE_KNOCK = 0x309, OPCODE_SCRATCH = 0x30a, - OPCODE_READ = 0x30b, OPCODE_EAT = 0x30c, OPCODE_PLACE = 0x30d, OPCODE_OPEN = 0x30e, OPCODE_TAKE = 0x30f, - OPCODE_LOOK = 0x310, OPCODE_SMELL = 0x311, OPCODE_SOUND = 0x312, OPCODE_LEAVE = 0x313, OPCODE_LIFT = 0x314, - OPCODE_TURN = 0x315, OPCODE_SHIDE = 0x401, OPCODE_SSEARCH = 0x402, OPCODE_SREAD = 0x403, OPCODE_SPUT = 0x404, - OPCODE_SLOOK = 0x405}; - -static const int _actionMenu[12] = { OPCODE_NONE, - OPCODE_SHIDE, OPCODE_ATTACH, OPCODE_FORCE, OPCODE_SLEEP, - OPCODE_ENTER, OPCODE_CLOSE, OPCODE_KNOCK, OPCODE_EAT, - OPCODE_PLACE, OPCODE_OPEN, OPCODE_LEAVE -}; - /* 9 "A glance at the forbidden$", 18 "It's already open$", diff --git a/engines/mortevielle/speech.cpp b/engines/mortevielle/speech.cpp index 08c92c6560..68ae3dac3e 100644 --- a/engines/mortevielle/speech.cpp +++ b/engines/mortevielle/speech.cpp @@ -150,7 +150,7 @@ void SpeechManager::regenbruit() { int i = kOffsetB3 + 8590; int j = 0; do { - _cfiphBuffer[j] = READ_LE_UINT16(&_vm->_mem[(kAdrNoise3 * 16) + i]); + _cfiphBuffer[j] = READ_BE_UINT16(&_vm->_mem[(kAdrNoise3 * 16) + i]); i += 2; ++j; } while (i < kOffsetB3 + 8790); @@ -185,7 +185,7 @@ void SpeechManager::loadPhonemeSounds() { error("Missing file - phbrui.mor"); for (int i = 1; i <= f.size() / 2; ++i) - _cfiphBuffer[i] = f.readSint16LE(); + _cfiphBuffer[i] = f.readUint16BE(); f.close(); } @@ -214,7 +214,7 @@ void SpeechManager::trait_car() { switch (_queue[1]._code) { case 9: - if (_queue[1]._val != ord('#')) + if (_queue[1]._val != (int)'#') for (i = 0; i <= _queue[1]._rep; ++i) entroct(_queue[1]._val); break; @@ -533,13 +533,16 @@ void SpeechManager::initQueue() { * @remarks Originally called 'trait_ph' */ void SpeechManager::handlePhoneme() { - const int deca[3] = {300, 30, 40}; + const uint16 deca[3] = {300, 30, 40}; - int startPos = swap(_cfiphBuffer[_phonemeNumb - 1]) + deca[_typlec]; - int endPos = swap(_cfiphBuffer[_phonemeNumb]) + deca[_typlec]; + uint16 startPos = _cfiphBuffer[_phonemeNumb - 1] + deca[_typlec]; + uint16 endPos = _cfiphBuffer[_phonemeNumb] + deca[_typlec]; int wordCount = endPos - startPos; - for (int i = (uint)startPos >> 1, currWord = 0; i < (int)((uint)endPos >> 1); i++, currWord += 2) - WRITE_LE_UINT16(&_vm->_mem[(kAdrWord * 16) + currWord], _cfiphBuffer[i]); + + startPos /= 2; + endPos /= 2; + for (int i = startPos, currWord = 0; i < endPos; i++, currWord += 2) + WRITE_BE_UINT16(&_vm->_mem[(kAdrWord * 16) + currWord], _cfiphBuffer[i]); _ptr_oct = 0; int currWord = 0; @@ -553,7 +556,7 @@ void SpeechManager::handlePhoneme() { moveQueue(); trait_car(); - entroct(ord('#')); + entroct((int)'#'); } /** @@ -561,7 +564,7 @@ void SpeechManager::handlePhoneme() { * @remarks Originally called 'parole' */ void SpeechManager::startSpeech(int rep, int ht, int typ) { - int savph[501]; + uint16 savph[501]; int tempo; if (_vm->_soundOff) diff --git a/engines/mortevielle/speech.h b/engines/mortevielle/speech.h index ef3211dad9..c3c4c32942 100644 --- a/engines/mortevielle/speech.h +++ b/engines/mortevielle/speech.h @@ -75,7 +75,7 @@ private: int _ptr_oct; public: - int16 *_cfiphBuffer; + uint16 *_cfiphBuffer; int _tbi[256]; int _mlec; byte *_noise5Buf; diff --git a/engines/mortevielle/utils.cpp b/engines/mortevielle/utils.cpp index 7a8306067d..2316d1e9fd 100644 --- a/engines/mortevielle/utils.cpp +++ b/engines/mortevielle/utils.cpp @@ -282,7 +282,7 @@ void MortevielleEngine::handleAction() { _menu.eraseMenu(); _menu._menuDisplayed = false; if ((inkey == '\1') || (inkey == '\3') || (inkey == '\5') || (inkey == '\7') || (inkey == '\11')) { - changeGraphicalDevice((uint)(ord(inkey) - 1) >> 1); + changeGraphicalDevice((uint)((int)inkey - 1) >> 1); return; } if (_menu._menuSelected && (_currMenu == MENU_SAVE)) { @@ -504,48 +504,48 @@ void MortevielleEngine::showPeoplePresent(int bitIndex) { int xp = 580 - (_screenSurface.getStringWidth("LEO") / 2); for (int i = 1; i <= 8; ++i) - _menu.disableMenuItem(_menu._discussMenu[i]); + _menu.disableMenuItem(_menu._discussMenu[i]._menuId, _menu._discussMenu[i]._actionId); clearUpperRightPart(); if ((bitIndex & 128) == 128) { _screenSurface.putxy(xp, 24); _screenSurface.drawString("LEO", 4); - _menu.enableMenuItem(_menu._discussMenu[1]); + _menu.enableMenuItem(_menu._discussMenu[1]._menuId, _menu._discussMenu[1]._actionId); } if ((bitIndex & 64) == 64) { _screenSurface.putxy(xp, 32); _screenSurface.drawString("PAT", 4); - _menu.enableMenuItem(_menu._discussMenu[2]); + _menu.enableMenuItem(_menu._discussMenu[2]._menuId, _menu._discussMenu[2]._actionId); } if ((bitIndex & 32) == 32) { _screenSurface.putxy(xp, 40); _screenSurface.drawString("GUY", 4); - _menu.enableMenuItem(_menu._discussMenu[3]); + _menu.enableMenuItem(_menu._discussMenu[3]._menuId, _menu._discussMenu[3]._actionId); } if ((bitIndex & 16) == 16) { _screenSurface.putxy(xp, 48); _screenSurface.drawString("EVA", 4); - _menu.enableMenuItem(_menu._discussMenu[4]); + _menu.enableMenuItem(_menu._discussMenu[4]._menuId, _menu._discussMenu[4]._actionId); } if ((bitIndex & 8) == 8) { _screenSurface.putxy(xp, 56); _screenSurface.drawString("BOB", 4); - _menu.enableMenuItem(_menu._discussMenu[5]); + _menu.enableMenuItem(_menu._discussMenu[5]._menuId, _menu._discussMenu[5]._actionId); } if ((bitIndex & 4) == 4) { _screenSurface.putxy(xp, 64); _screenSurface.drawString("LUC", 4); - _menu.enableMenuItem(_menu._discussMenu[6]); + _menu.enableMenuItem(_menu._discussMenu[6]._menuId, _menu._discussMenu[6]._actionId); } if ((bitIndex & 2) == 2) { _screenSurface.putxy(xp, 72); _screenSurface.drawString("IDA", 4); - _menu.enableMenuItem(_menu._discussMenu[7]); + _menu.enableMenuItem(_menu._discussMenu[7]._menuId, _menu._discussMenu[7]._actionId); } if ((bitIndex & 1) == 1) { _screenSurface.putxy(xp, 80); _screenSurface.drawString("MAX", 4); - _menu.enableMenuItem(_menu._discussMenu[8]); + _menu.enableMenuItem(_menu._discussMenu[8]._menuId, _menu._discussMenu[8]._actionId); } _currBitIndex = bitIndex; } @@ -699,7 +699,7 @@ int MortevielleEngine::getPresenceStatsRedRoom() { */ void MortevielleEngine::displayAloneText() { for (int i = 1; i <= 8; ++i) - _menu.disableMenuItem(_menu._discussMenu[i]); + _menu.disableMenuItem(_menu._discussMenu[i]._menuId, _menu._discussMenu[i]._actionId); Common::String sYou = getEngineString(S_YOU); Common::String sAre = getEngineString(S_ARE); @@ -1643,7 +1643,7 @@ void MortevielleEngine::hourToChar() { minute = 1; hour += day * 24; minute += hour * 2; - _coreVar._fullHour = chr(minute); + _coreVar._fullHour = (unsigned char)minute; } /** @@ -1651,7 +1651,7 @@ void MortevielleEngine::hourToChar() { * @remarks Originally called 'theure' */ void MortevielleEngine::charToHour() { - int fullHour = ord(_coreVar._fullHour); + int fullHour = _coreVar._fullHour; int tmpHour = fullHour % 48; _currDay = fullHour / 48; _currHalfHour = tmpHour % 2; @@ -1869,16 +1869,16 @@ bool MortevielleEngine::decryptNextChar(char &c, int &idx, byte &pt) { } if (oct == 30) - c = chr(cryptoArr30[ocd]); + c = (unsigned char)cryptoArr30[ocd]; else - c = chr(cryptoArr31[ocd]); + c = (unsigned char)cryptoArr31[ocd]; if (c == '\0') { c = '#'; return true; } } else { - c = chr(cryptoArrDefault[oct]); + c = (unsigned char)cryptoArrDefault[oct]; } return false; } @@ -1944,7 +1944,7 @@ void MortevielleEngine::resetVariables() { // Only object in inventory: a gun _coreVar._inventory[1] = 113; - _coreVar._fullHour = chr(20); + _coreVar._fullHour = (unsigned char)20; for (int i = 1; i <= 10; ++i) _coreVar._pctHintFound[i] = ' '; @@ -2175,10 +2175,10 @@ void MortevielleEngine::loadCFIPH() { error("Missing file - *cfiph.mor"); } - _speechManager._cfiphBuffer = (int16 *)malloc(sizeof(int16) * (f.size() / 2)); + _speechManager._cfiphBuffer = (uint16 *)malloc(sizeof(uint16) * (f.size() / 2)); for (int i = 0; i < (f.size() / 2); ++i) - _speechManager._cfiphBuffer[i] = f.readSint16LE(); + _speechManager._cfiphBuffer[i] = f.readUint16BE(); f.close(); } @@ -2307,7 +2307,7 @@ void MortevielleEngine::prepareRoom() { if (hintCount == 10) pctStr = "10"; else - pctStr = chr(hintCount + 48); + pctStr = (unsigned char)(hintCount + 48); _hintPctMessage = "[1]["; _hintPctMessage += getEngineString(S_SHOULD_HAVE_NOTICED); @@ -2762,8 +2762,8 @@ void MortevielleEngine::displayItemInHand(int objId) { if (objId != 500) strp = getString(objId - 501 + kInventoryStringIndex); - _menu.setText(_menu._inventoryMenu[8], strp); - _menu.disableMenuItem(_menu._inventoryMenu[8]); + _menu.setText(_menu._inventoryMenu[8]._menuId, _menu._inventoryMenu[8]._actionId, strp); + _menu.disableMenuItem(_menu._inventoryMenu[8]._menuId, _menu._inventoryMenu[8]._actionId); } /** @@ -3234,7 +3234,7 @@ L1: _caff = 69 + cx; _crep = _caff; _currMenu = MENU_DISCUSS; - _currAction = _menu._discussMenu[cx]; + _currAction = (_menu._discussMenu[cx]._menuId << 8) | _menu._discussMenu[cx]._actionId; _syn = true; _col = true; } else { @@ -3291,7 +3291,7 @@ void MortevielleEngine::displayStatusArrow() { if (_num == 9999) return; - displayStatusInDescriptionBar(chr(152)); + displayStatusInDescriptionBar((unsigned char)152); bool inRect = false; do { touch = '\0'; @@ -3450,7 +3450,7 @@ void MortevielleEngine::displayStatusInDescriptionBar(char stat) { else color = 12; - _screenSurface.writeCharacter(Common::Point(306, 193), ord(stat), color); + _screenSurface.writeCharacter(Common::Point(306, 193), stat, color); _screenSurface.drawBox(300, 191, 16, 8, 15); _mouse.showMouse(); } @@ -3491,7 +3491,7 @@ int MortevielleEngine::gettKeyPressed() { break; } - return ord(ch); + return (int)ch; } } // End of namespace Mortevielle -- cgit v1.2.3 From c7277df1ed0a11c62971a859f101852083debd57 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Mon, 29 Jul 2013 07:27:31 +0200 Subject: DEVTOOLS: Add support to another DOS executable for Mortevielle --- devtools/create_mortdat/create_mortdat.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/devtools/create_mortdat/create_mortdat.cpp b/devtools/create_mortdat/create_mortdat.cpp index cb7d6aa189..653a0754eb 100644 --- a/devtools/create_mortdat/create_mortdat.cpp +++ b/devtools/create_mortdat/create_mortdat.cpp @@ -119,13 +119,13 @@ void openOutputFile(const char *outFilename) { * Write out the data for the font */ void writeFontBlock() { - const int knownAddr[2] = {0x36b0, 0x36c0}; + const int knownAddr[3] = {0x30cd, 0x36b0, 0x36c0}; byte checkBuffer[7]; byte fontBuffer[121 * 6]; // Move to just prior the font data and verify that we're reading the known mort.com - for (int i = 0; i <= 2; ++i) { - if ( i == 2) { + for (int i = 0; i <= 3; ++i) { + if ( i == 3) { printf("Invalid mort.com input file"); exit(0); } -- cgit v1.2.3