diff options
author | Willem Jan Palenstijn | 2011-07-28 21:09:51 +0200 |
---|---|---|
committer | Willem Jan Palenstijn | 2011-07-28 21:09:51 +0200 |
commit | 7e88112ad2a27ad50f54fb84b92ec97c2262939a (patch) | |
tree | 05e2072af5017226477d7390a77fcc2e0b3252c6 | |
parent | 53e5522e5a895ba8bdd7fc20b03d0c67bc840eeb (diff) | |
download | scummvm-rg350-7e88112ad2a27ad50f54fb84b92ec97c2262939a.tar.gz scummvm-rg350-7e88112ad2a27ad50f54fb84b92ec97c2262939a.tar.bz2 scummvm-rg350-7e88112ad2a27ad50f54fb84b92ec97c2262939a.zip |
DREAMWEB: Fix kerning in printchar
ah should contain the next char to print for kernchars(), but
it was getting clobbered in one code path, and not even set in another.
-rw-r--r-- | engines/dreamweb/stubs.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index ec94ffc40c..2ac3751313 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -307,14 +307,16 @@ void DreamGenContext::printchar(uint16 dst, uint16 src, uint16* x, uint16 y, uin return; push(si); push(di); + push(ax); if (data.byte(kForeignrelease) != 0) y -= 3; showframe(dst, src, *x, y, c - 32 + data.word(kCharshift), 0, width, height); + ax = pop(); di = pop(); si = pop(); _cmp(data.byte(kKerning), 0); if (flags.z()) - kernchars(); + *width = kernchars(c, ah, *width); (*x) += *width; } @@ -408,6 +410,7 @@ void DreamGenContext::printdirect(uint16 x, uint16 *y, uint8 maxWidth, bool cent return; } c = engine->modifyChar(c); + ah = es.byte(si); // get next char for kerning uint8 width, height; push(es); printchar(es, ds, &i, *y, c, &width, &height); |