aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdevtools/tasmrecover/tasm-recover1
-rw-r--r--engines/dreamweb/dreambase.h3
-rw-r--r--engines/dreamweb/dreamgen.cpp70
-rw-r--r--engines/dreamweb/dreamgen.h1
-rw-r--r--engines/dreamweb/saveload.cpp24
5 files changed, 28 insertions, 71 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index e1d94d6bc6..9c3d150825 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -643,6 +643,7 @@ generator = cpp(context, "DreamGen", blacklist = [
'showmainops',
'showman',
'showmenu',
+ 'shownames',
'showopbox',
'showoutermenu',
'showouterpad',
diff --git a/engines/dreamweb/dreambase.h b/engines/dreamweb/dreambase.h
index bc272c1b19..d0bcc9150a 100644
--- a/engines/dreamweb/dreambase.h
+++ b/engines/dreamweb/dreambase.h
@@ -90,6 +90,9 @@ public:
void printCurs();
void delCurs();
+ // from saveload.cpp
+ void showNames();
+
// from sound.cpp
void volumeAdjust();
void cancelCh0();
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index c13586101d..fac388bbf7 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -5656,76 +5656,6 @@ nomatchslot:
goto slotloop;
}
-void DreamGenContext::showNames() {
- STACK_CHECK;
- dx = data;
- es = dx;
- si = 1521+1;
- di = (60)+21;
- bx = (52)+10;
- cl = 0;
-shownameloop:
- push(cx);
- push(di);
- push(es);
- push(bx);
- push(si);
- al = 4;
- _cmp(cl, data.byte(kCurrentslot));
- if (!flags.z())
- goto nomatchslot2;
- _cmp(data.byte(kLoadingorsave), 2);
- if (!flags.z())
- goto loadmode;
- dx = si;
- cx = 15;
- _add(si, 15);
-zerostill:
- _dec(si);
- _dec(cl);
- _cmp(es.byte(si), 1);
- if (!flags.z())
- goto foundcharacter;
- goto zerostill;
-foundcharacter:
- data.byte(kCursorpos) = cl;
- es.byte(si) = '/';
- es.byte(si+1) = 0;
- push(si);
- si = dx;
- dl = 200;
- ah = 0;
- printDirect();
- si = pop();
- es.byte(si) = 0;
- es.byte(si+1) = 1;
- goto afterprintname;
-loadmode:
- al = 0;
- dl = 200;
- ah = 0;
- data.word(kCharshift) = 91;
- printDirect();
- data.word(kCharshift) = 0;
- goto afterprintname;
-nomatchslot2:
- dl = 200;
- ah = 0;
- printDirect();
-afterprintname:
- si = pop();
- bx = pop();
- es = pop();
- di = pop();
- cx = pop();
- _add(si, 17);
- _add(bx, 10);
- _inc(cl);
- _cmp(cl, 7);
- if (!flags.z())
- goto shownameloop;
-}
-
void DreamGenContext::createName() {
STACK_CHECK;
push(ax);
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 9d83762417..889a60b357 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -663,7 +663,6 @@ public:
void createName();
void getPersonText();
void parser();
- void showNames();
void emergencyPurge();
void quitKey();
void processTrigger();
diff --git a/engines/dreamweb/saveload.cpp b/engines/dreamweb/saveload.cpp
index 916c2b56ce..9060a3f000 100644
--- a/engines/dreamweb/saveload.cpp
+++ b/engines/dreamweb/saveload.cpp
@@ -457,4 +457,28 @@ void DreamGenContext::loadSaveBox() {
loadIntoTemp("DREAMWEB.G08");
}
+// show savegame names (original interface), and set kCursorpos
+void DreamBase::showNames() {
+ for (int slot = 0; slot < 7; ++slot) {
+ // The first character of the savegame name is unused
+ Common::String name((char *)data.ptr(kSavenames + 17*slot + 1, 16));
+
+ if (slot != data.byte(kCurrentslot)) {
+ printDirect((const uint8 *)name.c_str(), kOpsx + 21, kOpsy + 10*slot + 10, 200, false);
+ continue;
+ }
+ if (data.byte(kLoadingorsave) != 2) {
+ data.word(kCharshift) = 91;
+ printDirect((const uint8 *)name.c_str(), kOpsx + 21, kOpsy + 10*slot + 10, 200, false);
+ data.word(kCharshift) = 0;
+ continue;
+ }
+
+ int pos = name.size();
+ data.byte(kCursorpos) = pos;
+ name += '/'; // cursor character
+ printDirect((const uint8 *)name.c_str(), kOpsx + 21, kOpsy + 10*slot + 10, 200, false);
+ }
+}
+
} // End of namespace DreamGen