diff options
author | Bertrand Augereau | 2011-11-15 12:33:13 +0100 |
---|---|---|
committer | Bertrand Augereau | 2011-11-15 13:22:30 +0100 |
commit | 5adf8b4864e80b10070ad31819271a0af7588f64 (patch) | |
tree | f15ed647e8475eb6b4a88b96cd203d72643822ea /engines/dreamweb | |
parent | bc509e9e086a5d0025e904b0a0e14fbbd23c6786 (diff) | |
download | scummvm-rg350-5adf8b4864e80b10070ad31819271a0af7588f64.tar.gz scummvm-rg350-5adf8b4864e80b10070ad31819271a0af7588f64.tar.bz2 scummvm-rg350-5adf8b4864e80b10070ad31819271a0af7588f64.zip |
DREAWMEB: 'transfertext' ported to C++
Diffstat (limited to 'engines/dreamweb')
-rw-r--r-- | engines/dreamweb/dreamgen.cpp | 30 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.h | 5 | ||||
-rw-r--r-- | engines/dreamweb/object.cpp | 14 | ||||
-rw-r--r-- | engines/dreamweb/stubs.h | 1 |
4 files changed, 17 insertions, 33 deletions
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index 407e2fcc3b..aa1ea88551 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -5284,35 +5284,6 @@ void DreamGenContext::transfercontoex() { ds.byte(si+2) = 255; } -void DreamGenContext::transfertext() { - STACK_CHECK; - es = data.word(kExtras); - al = data.byte(kExpos); - ah = 0; - _add(ax, ax); - bx = (0+2080+30000+(16*114)); - _add(bx, ax); - di = data.word(kExtextpos); - es.word(bx) = di; - _add(di, (0+2080+30000+(16*114)+((114+2)*2))); - al = data.byte(kItemtotran); - ah = 0; - _add(ax, ax); - ds = data.word(kFreedesc); - bx = (0); - _add(bx, ax); - si = (0+(82*2)); - ax = ds.word(bx); - _add(si, ax); -moretext: - _lodsb(); - _stosb(); - _inc(data.word(kExtextpos)); - _cmp(al, 0); - if (!flags.z()) - goto moretext; -} - void DreamGenContext::purgealocation() { STACK_CHECK; push(ax); @@ -16480,7 +16451,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) { case addr_transfertoex: transfertoex(); break; case addr_pickupconts: pickupconts(); break; case addr_transfercontoex: transfercontoex(); break; - case addr_transfertext: transfertext(); break; case addr_purgealocation: purgealocation(); break; case addr_emergencypurge: emergencypurge(); break; case addr_purgeanitem: purgeanitem(); break; diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index 8429913172..990bba0201 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -433,7 +433,6 @@ public: static const uint16 addr_purgeanitem = 0xc414; static const uint16 addr_emergencypurge = 0xc410; static const uint16 addr_purgealocation = 0xc40c; - static const uint16 addr_transfertext = 0xc404; static const uint16 addr_transfercontoex = 0xc400; static const uint16 addr_pickupconts = 0xc3fc; static const uint16 addr_transfertoex = 0xc3f8; @@ -1603,7 +1602,6 @@ public: void checkbasemem(); void lastfolder(); void transfermap(); - //void showreelframe(); void showmonk(); void diarykeyn(); void set16colpalette(); @@ -1658,7 +1656,7 @@ public: void actualsave(); void autolook(); void playguitar(); - void transfertext(); + //void showreelframe(); void searchforsame(); void showmainops(); void getback1(); @@ -1788,6 +1786,7 @@ public: //void plotreel(); void swapwithopen(); //void makesprite(); + //void transfertext(); void dreamweb(); void droperror(); void edenscdplayer(); diff --git a/engines/dreamweb/object.cpp b/engines/dreamweb/object.cpp index 277ad20927..9bb5a7d0b3 100644 --- a/engines/dreamweb/object.cpp +++ b/engines/dreamweb/object.cpp @@ -245,6 +245,20 @@ void DreamGenContext::inventory() { examineob(false); } +void DreamGenContext::transfertext() { + segRef(data.word(kExtras)).word(kExtextdat + data.byte(kExpos) * 2) = data.word(kExtextpos); + uint16 freeTextOffset = data.byte(kItemtotran) * 2; + uint16 srcOffset = segRef(data.word(kFreedesc)).word(kFreetextdat + freeTextOffset); + const uint8 *src = segRef(data.word(kFreedesc)).ptr(kFreetext + srcOffset, 0); + uint8 *dst = segRef(data.word(kExtras)).ptr(kExtext + data.word(kExtextpos), 0); + uint8 c; + do { + c = *src++; + *dst++ = c; + ++data.word(kExtextpos); + } while (c); +} + } /*namespace dreamgen */ diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h index 0faccc5090..a838c77137 100644 --- a/engines/dreamweb/stubs.h +++ b/engines/dreamweb/stubs.h @@ -252,4 +252,5 @@ void examineob(bool examineAgain = true); void showwatch(); void roomname(); + void transfertext(); |