diff options
-rwxr-xr-x | devtools/tasmrecover/tasm-recover | 1 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.cpp | 82 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.h | 15 | ||||
-rw-r--r-- | engines/dreamweb/dreamweb.h | 3 | ||||
-rw-r--r-- | engines/dreamweb/pathfind.cpp | 48 | ||||
-rw-r--r-- | engines/dreamweb/sprite.cpp | 4 |
6 files changed, 53 insertions, 100 deletions
diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover index 80037a9ed3..87005894a8 100755 --- a/devtools/tasmrecover/tasm-recover +++ b/devtools/tasmrecover/tasm-recover @@ -35,6 +35,7 @@ p = parser(skip_binary_data = [ 'stak', 'keyconverttab', 'atmospherelist', + 'linedata', # keypad.asm 'keypadlist', 'symbollist', diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index 127e62fb3d..3bdad08ac8 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -9844,7 +9844,7 @@ void DreamGenContext::getNamePos() { _mul(cx); dx = data; es = dx; - bx = 3368; + bx = 2968; _add(bx, ax); al = data.byte(kCursorpos); ah = 0; @@ -9998,7 +9998,7 @@ void DreamGenContext::showNames() { STACK_CHECK; dx = data; es = dx; - si = 3368+1; + si = 2968+1; di = (60)+21; bx = (52)+10; cl = 0; @@ -11670,84 +11670,34 @@ void DreamGenContext::__start() { //0x0b70: .... .... .... .... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //0x0b80: .... .... .... .... - 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x0b90: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0ba0: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0bb0: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0bc0: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0bd0: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0be0: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0bf0: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0c00: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0c10: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0c20: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0c30: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0c40: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0c50: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0c60: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0c70: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0c80: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0c90: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0ca0: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0cb0: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0cc0: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0cd0: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0ce0: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0cf0: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0d00: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - //0x0d10: .... .... .... .... - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - //0x0d20: .... .... .... .... 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, - //0x0d30: .... .... .... .... + //0x0ba0: .... .... .... .... 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, - //0x0d40: .... .... .... .... + //0x0bb0: .... .... .... .... 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, - //0x0d50: .... .... .... .... + //0x0bc0: .... .... .... .... 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, - //0x0d60: .... .... .... .... + //0x0bd0: .... .... .... .... 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, - //0x0d70: .... .... .... .... + //0x0be0: .... .... .... .... 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, - //0x0d80: .... .... .... .... + //0x0bf0: .... .... .... .... 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x44, - //0x0d90: .... .... .... ...D + //0x0c00: .... .... .... ...D 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x44, 0x30, 0x30, 0x00, 0x44, 0x52, 0x45, 0x41, - //0x0da0: REAM WEB. D00. DREA + //0x0c10: REAM WEB. D00. DREA 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x44, 0x30, 0x31, 0x00, 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, - //0x0db0: MWEB .D01 .DRE AMWE + //0x0c20: MWEB .D01 .DRE AMWE 0x42, 0x2e, 0x44, 0x30, 0x32, 0x00, 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x44, - //0x0dc0: B.D0 2.DR EAMW EB.D + //0x0c30: B.D0 2.DR EAMW EB.D 0x30, 0x33, 0x00, 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x44, 0x30, 0x34, 0x00, - //0x0dd0: 03.D REAM WEB. D04. + //0x0c40: 03.D REAM WEB. D04. 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x44, 0x30, 0x35, 0x00, 0x44, 0x52, 0x45, - //0x0de0: DREA MWEB .D05 .DRE + //0x0c50: DREA MWEB .D05 .DRE 0x41, 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x44, 0x30, 0x36, 0x00, 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, - //0x0df0: AMWE B.D0 6.DR EAMW + //0x0c60: AMWE B.D0 6.DR EAMW 0x45, 0x42, 0x2e, 0x44, 0x45, 0x4d, 0x00, 0x00, 0x00, 0x00, }; ds.assign(src, src + sizeof(src)); dreamweb(); diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index 94f4836017..aa5b10bdcd 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -509,14 +509,13 @@ public: static const uint16 kRoompics = 2816; static const uint16 kOplist = 2831; static const uint16 kInputline = 2834; - static const uint16 kLinedata = 2962; - static const uint16 kPresslist = 3362; - static const uint16 kSavenames = 3368; - static const uint16 kSavefiles = 3487; - static const uint16 kRecname = 3578; - static const uint16 kQuitrequested = 3591; - static const uint16 kSubtitles = 3592; - static const uint16 kForeignrelease = 3593; + static const uint16 kPresslist = 2962; + static const uint16 kSavenames = 2968; + static const uint16 kSavefiles = 3087; + static const uint16 kRecname = 3178; + static const uint16 kQuitrequested = 3191; + static const uint16 kSubtitles = 3192; + static const uint16 kForeignrelease = 3193; static const uint16 kBlocktextdat = (0); static const uint16 kPersonframes = (0); static const uint16 kDebuglevel1 = (0); diff --git a/engines/dreamweb/dreamweb.h b/engines/dreamweb/dreamweb.h index 8181d04706..2d59a87ea3 100644 --- a/engines/dreamweb/dreamweb.h +++ b/engines/dreamweb/dreamweb.h @@ -46,6 +46,9 @@ namespace DreamGen { const uint16 addr_backobject = 0xc170; const uint16 addr_mainman = 0xc138; +// Output of Bresenham +extern Common::Point g_lineData[200]; + } namespace DreamWeb { diff --git a/engines/dreamweb/pathfind.cpp b/engines/dreamweb/pathfind.cpp index 2353fc798f..66a02284be 100644 --- a/engines/dreamweb/pathfind.cpp +++ b/engines/dreamweb/pathfind.cpp @@ -24,6 +24,10 @@ namespace DreamGen { +// Output of Bresenham +Common::Point g_lineData[200]; + + void DreamGenContext::turnPathOn() { turnPathOn(al); } @@ -131,7 +135,7 @@ bool DreamGenContext::checkIfPathIsOn(uint8 index) { void DreamGenContext::bresenhams() { workoutFrames(); - int8 *lineData = (int8 *)data.ptr(kLinedata, 0); + Common::Point *lineData = &g_lineData[0]; int16 startX = (int16)data.word(kLinestartx); int16 startY = (int16)data.word(kLinestarty); int16 endX = (int16)data.word(kLineendx); @@ -152,13 +156,12 @@ void DreamGenContext::bresenhams() { ++deltaY; int8 x = (int8)startX; data.byte(kLinelength) = deltaY; - do { - lineData[0] = x; - lineData[1] = y; - lineData += 2; + for (; deltaY; --deltaY) { + lineData->x = x; + lineData->y = y; + ++lineData; ++y; - --deltaY; - } while (deltaY); + } return; } uint16 deltaX; @@ -182,13 +185,12 @@ void DreamGenContext::bresenhams() { int8 y = (int8)startY; ++deltaX; data.byte(kLinelength) = deltaX; - do { - lineData[0] = x; - lineData[1] = y; - lineData += 2; + for (; deltaX; --deltaX) { + lineData->x = x; + lineData->y = y; + ++lineData; ++x; - --deltaX; - } while (deltaX); + } return; } uint16 deltaY; @@ -219,10 +221,10 @@ void DreamGenContext::bresenhams() { int8 y = (int8)startY; data.byte(kLinelength) = delta1; if (data.byte(kLineroutine) != 1) { - do { - lineData[0] = x; - lineData[1] = y; - lineData += 2; + for (; delta1; --delta1) { + lineData->x = x; + lineData->y = y; + ++lineData; ++x; if (remainder < 0) { remainder += data.word(kIncrement1); @@ -230,13 +232,12 @@ void DreamGenContext::bresenhams() { remainder += data.word(kIncrement2); y += increment; } - --delta1; - } while (delta1); + } } else { - do { - lineData[0] = x; - lineData[1] = y; - lineData += 2; + for (; delta1; --delta1) { + lineData->x = x; + lineData->y = y; + ++lineData; y += increment; if (remainder < 0) { remainder += data.word(kIncrement1); @@ -244,7 +245,6 @@ void DreamGenContext::bresenhams() { remainder += data.word(kIncrement2); ++x; } - --delta1; } while (delta1); } } diff --git a/engines/dreamweb/sprite.cpp b/engines/dreamweb/sprite.cpp index dae62d7752..92b78ce896 100644 --- a/engines/dreamweb/sprite.cpp +++ b/engines/dreamweb/sprite.cpp @@ -196,8 +196,8 @@ void DreamGenContext::walking(Sprite *sprite) { comp = data.byte(kLinelength); } if (data.byte(kLinepointer) < comp) { - sprite->x = data.byte(kLinedata + data.byte(kLinepointer) * 2 + 0); - sprite->y = data.byte(kLinedata + data.byte(kLinepointer) * 2 + 1); + sprite->x = (uint8)g_lineData[data.byte(kLinepointer)].x; + sprite->y = (uint8)g_lineData[data.byte(kLinepointer)].y; return; } |