DREAMWEB: 'segRef' was redundant with 'getSegment' (thanks to Max for noting this)
This commit is contained in:
parent
734e6c49b1
commit
38ec14b15b
13 changed files with 142 additions and 148 deletions
|
@ -27,8 +27,8 @@ namespace DreamGen {
|
||||||
void DreamGenContext::doBlocks() {
|
void DreamGenContext::doBlocks() {
|
||||||
uint16 dstOffset = data.word(kMapady) * 320 + data.word(kMapadx);
|
uint16 dstOffset = data.word(kMapady) * 320 + data.word(kMapadx);
|
||||||
uint16 mapOffset = kMap + data.byte(kMapy) * kMapwidth + data.byte(kMapx);
|
uint16 mapOffset = kMap + data.byte(kMapy) * kMapwidth + data.byte(kMapx);
|
||||||
const uint8 *mapData = segRef(data.word(kMapdata)).ptr(mapOffset, 0);
|
const uint8 *mapData = getSegment(data.word(kMapdata)).ptr(mapOffset, 0);
|
||||||
const uint8 *blocks = segRef(data.word(kBackdrop)).ptr(kBlocks, 0);
|
const uint8 *blocks = getSegment(data.word(kBackdrop)).ptr(kBlocks, 0);
|
||||||
uint8 *dstBuffer = workspace() + dstOffset;
|
uint8 *dstBuffer = workspace() + dstOffset;
|
||||||
|
|
||||||
for (size_t i = 0; i < 10; ++i) {
|
for (size_t i = 0; i < 10; ++i) {
|
||||||
|
@ -113,7 +113,7 @@ void DreamGenContext::calcFrFrame() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::calcFrFrame(uint8* width, uint8* height) {
|
void DreamGenContext::calcFrFrame(uint8* width, uint8* height) {
|
||||||
const Frame *frame = (const Frame *)segRef(data.word(kFrsegment)).ptr(data.word(kCurrentframe) * sizeof(Frame), sizeof(Frame));
|
const Frame *frame = (const Frame *)getSegment(data.word(kFrsegment)).ptr(data.word(kCurrentframe) * sizeof(Frame), sizeof(Frame));
|
||||||
data.word(kSavesource) = data.word(kFramesad) + frame->ptr();
|
data.word(kSavesource) = data.word(kFramesad) + frame->ptr();
|
||||||
data.byte(kSavesize+0) = frame->width;
|
data.byte(kSavesize+0) = frame->width;
|
||||||
data.byte(kSavesize+1) = frame->height;
|
data.byte(kSavesize+1) = frame->height;
|
||||||
|
@ -139,13 +139,13 @@ void DreamGenContext::finalFrame(uint16 *x, uint16 *y) {
|
||||||
|
|
||||||
void DreamGenContext::showAllObs() {
|
void DreamGenContext::showAllObs() {
|
||||||
data.word(kListpos) = kSetlist;
|
data.word(kListpos) = kSetlist;
|
||||||
memset(segRef(data.word(kBuffers)).ptr(kSetlist, 0), 0xff, 128 * 5);
|
memset(getSegment(data.word(kBuffers)).ptr(kSetlist, 0), 0xff, 128 * 5);
|
||||||
data.word(kFrsegment) = data.word(kSetframes);
|
data.word(kFrsegment) = data.word(kSetframes);
|
||||||
data.word(kDataad) = kFramedata;
|
data.word(kDataad) = kFramedata;
|
||||||
data.word(kFramesad) = kFrames;
|
data.word(kFramesad) = kFrames;
|
||||||
|
|
||||||
const Frame *frames = (const Frame *)segRef(data.word(kFrsegment)).ptr(0, 0);
|
const Frame *frames = (const Frame *)getSegment(data.word(kFrsegment)).ptr(0, 0);
|
||||||
SetObject *setEntries = (SetObject *)segRef(data.word(kSetdat)).ptr(0, 128 * sizeof(SetObject));
|
SetObject *setEntries = (SetObject *)getSegment(data.word(kSetdat)).ptr(0, 128 * sizeof(SetObject));
|
||||||
for (size_t i = 0; i < 128; ++i) {
|
for (size_t i = 0; i < 128; ++i) {
|
||||||
SetObject *setEntry = setEntries + i;
|
SetObject *setEntry = setEntries + i;
|
||||||
if (getMapAd(setEntry->mapad) == 0)
|
if (getMapAd(setEntry->mapad) == 0)
|
||||||
|
@ -165,7 +165,7 @@ void DreamGenContext::showAllObs() {
|
||||||
} else
|
} else
|
||||||
makeBackOb(setEntry);
|
makeBackOb(setEntry);
|
||||||
|
|
||||||
ObjPos *objPos = (ObjPos *)segRef(data.word(kBuffers)).ptr(data.word(kListpos), sizeof(ObjPos));
|
ObjPos *objPos = (ObjPos *)getSegment(data.word(kBuffers)).ptr(data.word(kListpos), sizeof(ObjPos));
|
||||||
objPos->xMin = data.byte(kSavex);
|
objPos->xMin = data.byte(kSavex);
|
||||||
objPos->yMin = data.byte(kSavey);
|
objPos->yMin = data.byte(kSavey);
|
||||||
objPos->xMax = data.byte(kSavex) + data.byte(kSavesize+0);
|
objPos->xMax = data.byte(kSavex) + data.byte(kSavesize+0);
|
||||||
|
@ -202,7 +202,7 @@ bool DreamGenContext::addLength(const uint8 *mapFlags) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::getDimension(uint8 *mapXstart, uint8 *mapYstart, uint8 *mapXsize, uint8 *mapYsize) {
|
void DreamGenContext::getDimension(uint8 *mapXstart, uint8 *mapYstart, uint8 *mapXsize, uint8 *mapYsize) {
|
||||||
const uint8 *mapFlags = segRef(data.word(kBuffers)).ptr(kMapflags, 0);
|
const uint8 *mapFlags = getSegment(data.word(kBuffers)).ptr(kMapflags, 0);
|
||||||
|
|
||||||
uint8 yStart = 0;
|
uint8 yStart = 0;
|
||||||
while (! addAlong(mapFlags + 3 * 11 * yStart))
|
while (! addAlong(mapFlags + 3 * 11 * yStart))
|
||||||
|
@ -240,14 +240,14 @@ void DreamGenContext::calcMapAd() {
|
||||||
|
|
||||||
void DreamGenContext::showAllFree() {
|
void DreamGenContext::showAllFree() {
|
||||||
data.word(kListpos) = kFreelist;
|
data.word(kListpos) = kFreelist;
|
||||||
ObjPos *listPos = (ObjPos *)segRef(data.word(kBuffers)).ptr(kFreelist, 80 * sizeof(ObjPos));
|
ObjPos *listPos = (ObjPos *)getSegment(data.word(kBuffers)).ptr(kFreelist, 80 * sizeof(ObjPos));
|
||||||
memset(listPos, 0xff, 80 * sizeof(ObjPos));
|
memset(listPos, 0xff, 80 * sizeof(ObjPos));
|
||||||
|
|
||||||
data.word(kFrsegment) = data.word(kFreeframes);
|
data.word(kFrsegment) = data.word(kFreeframes);
|
||||||
data.word(kDataad) = kFrframedata;
|
data.word(kDataad) = kFrframedata;
|
||||||
data.word(kFramesad) = kFrframes;
|
data.word(kFramesad) = kFrframes;
|
||||||
data.byte(kCurrentfree) = 0;
|
data.byte(kCurrentfree) = 0;
|
||||||
const DynObject *freeObjects = (const DynObject *)segRef(data.word(kFreedat)).ptr(0, 0);
|
const DynObject *freeObjects = (const DynObject *)getSegment(data.word(kFreedat)).ptr(0, 0);
|
||||||
for(size_t i = 0; i < 80; ++i) {
|
for(size_t i = 0; i < 80; ++i) {
|
||||||
uint8 mapAd = getMapAd(freeObjects[i].mapad);
|
uint8 mapAd = getMapAd(freeObjects[i].mapad);
|
||||||
if (mapAd != 0) {
|
if (mapAd != 0) {
|
||||||
|
@ -259,8 +259,8 @@ void DreamGenContext::showAllFree() {
|
||||||
if ((width != 0) || (height != 0)) {
|
if ((width != 0) || (height != 0)) {
|
||||||
x += data.word(kMapadx);
|
x += data.word(kMapadx);
|
||||||
y += data.word(kMapady);
|
y += data.word(kMapady);
|
||||||
showFrame((Frame *)segRef(data.word(kFrsegment)).ptr(0, 0), x, y, data.word(kCurrentframe) & 0xff, 0);
|
showFrame((Frame *)getSegment(data.word(kFrsegment)).ptr(0, 0), x, y, data.word(kCurrentframe) & 0xff, 0);
|
||||||
ObjPos *objPos = (ObjPos *)segRef(data.word(kBuffers)).ptr(data.word(kListpos), sizeof(ObjPos));
|
ObjPos *objPos = (ObjPos *)getSegment(data.word(kBuffers)).ptr(data.word(kListpos), sizeof(ObjPos));
|
||||||
objPos->xMin = data.byte(kSavex);
|
objPos->xMin = data.byte(kSavex);
|
||||||
objPos->yMin = data.byte(kSavey);
|
objPos->yMin = data.byte(kSavey);
|
||||||
objPos->xMax = data.byte(kSavex) + data.byte(kSavesize+0);
|
objPos->xMax = data.byte(kSavex) + data.byte(kSavesize+0);
|
||||||
|
@ -275,9 +275,9 @@ void DreamGenContext::showAllFree() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::drawFlags() {
|
void DreamGenContext::drawFlags() {
|
||||||
uint8 *mapFlags = segRef(data.word(kBuffers)).ptr(kMapflags, 0);
|
uint8 *mapFlags = getSegment(data.word(kBuffers)).ptr(kMapflags, 0);
|
||||||
const uint8 *mapData = segRef(data.word(kMapdata)).ptr(kMap + data.byte(kMapy) * kMapwidth + data.byte(kMapx), 0);
|
const uint8 *mapData = getSegment(data.word(kMapdata)).ptr(kMap + data.byte(kMapy) * kMapwidth + data.byte(kMapx), 0);
|
||||||
const uint8 *backdropFlags = segRef(data.word(kBackdrop)).ptr(kFlags, 0);
|
const uint8 *backdropFlags = getSegment(data.word(kBackdrop)).ptr(kFlags, 0);
|
||||||
|
|
||||||
for (size_t i = 0; i < 10; ++i) {
|
for (size_t i = 0; i < 10; ++i) {
|
||||||
for (size_t j = 0; j < 11; ++j) {
|
for (size_t j = 0; j < 11; ++j) {
|
||||||
|
@ -292,13 +292,13 @@ void DreamGenContext::drawFlags() {
|
||||||
|
|
||||||
void DreamGenContext::showAllEx() {
|
void DreamGenContext::showAllEx() {
|
||||||
data.word(kListpos) = kExlist;
|
data.word(kListpos) = kExlist;
|
||||||
memset(segRef(data.word(kBuffers)).ptr(kExlist, 100 * 5), 0xff, 100 * 5);
|
memset(getSegment(data.word(kBuffers)).ptr(kExlist, 100 * 5), 0xff, 100 * 5);
|
||||||
|
|
||||||
data.word(kFrsegment) = data.word(kExtras);
|
data.word(kFrsegment) = data.word(kExtras);
|
||||||
data.word(kDataad) = kExframedata;
|
data.word(kDataad) = kExframedata;
|
||||||
data.word(kFramesad) = kExframes;
|
data.word(kFramesad) = kExframes;
|
||||||
data.byte(kCurrentex) = 0;
|
data.byte(kCurrentex) = 0;
|
||||||
DynObject *objects = (DynObject *)segRef(data.word(kExtras)).ptr(kExdata, sizeof(DynObject));
|
DynObject *objects = (DynObject *)getSegment(data.word(kExtras)).ptr(kExdata, sizeof(DynObject));
|
||||||
for (size_t i = 0; i < 100; ++i, ++data.byte(kCurrentex)) {
|
for (size_t i = 0; i < 100; ++i, ++data.byte(kCurrentex)) {
|
||||||
DynObject *object = objects + i;
|
DynObject *object = objects + i;
|
||||||
if (object->mapad[0] == 0xff)
|
if (object->mapad[0] == 0xff)
|
||||||
|
@ -313,8 +313,8 @@ void DreamGenContext::showAllEx() {
|
||||||
uint16 x, y;
|
uint16 x, y;
|
||||||
finalFrame(&x, &y);
|
finalFrame(&x, &y);
|
||||||
if ((width != 0) || (height != 0)) {
|
if ((width != 0) || (height != 0)) {
|
||||||
showFrame((Frame *)segRef(data.word(kFrsegment)).ptr(0, 0), x + data.word(kMapadx), y + data.word(kMapady), data.word(kCurrentframe) & 0xff, 0);
|
showFrame((Frame *)getSegment(data.word(kFrsegment)).ptr(0, 0), x + data.word(kMapadx), y + data.word(kMapady), data.word(kCurrentframe) & 0xff, 0);
|
||||||
ObjPos *objPos = (ObjPos *)segRef(data.word(kBuffers)).ptr(data.word(kListpos), sizeof(ObjPos));
|
ObjPos *objPos = (ObjPos *)getSegment(data.word(kBuffers)).ptr(data.word(kListpos), sizeof(ObjPos));
|
||||||
objPos->xMin = data.byte(kSavex);
|
objPos->xMin = data.byte(kSavex);
|
||||||
objPos->yMin = data.byte(kSavey);
|
objPos->yMin = data.byte(kSavey);
|
||||||
objPos->xMax = data.byte(kSavesize + 0) + data.byte(kSavex);
|
objPos->xMax = data.byte(kSavesize + 0) + data.byte(kSavex);
|
||||||
|
|
|
@ -25,11 +25,11 @@
|
||||||
namespace DreamGen {
|
namespace DreamGen {
|
||||||
|
|
||||||
void DreamGenContext::getUnderMenu() {
|
void DreamGenContext::getUnderMenu() {
|
||||||
multiGet(segRef(data.word(kBuffers)).ptr(kUndertimedtext, 0), kMenux, kMenuy, 48, 48);
|
multiGet(getSegment(data.word(kBuffers)).ptr(kUndertimedtext, 0), kMenux, kMenuy, 48, 48);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::putUnderMenu() {
|
void DreamGenContext::putUnderMenu() {
|
||||||
multiPut(segRef(data.word(kBuffers)).ptr(kUndertimedtext, 0), kMenux, kMenuy, 48, 48);
|
multiPut(getSegment(data.word(kBuffers)).ptr(kUndertimedtext, 0), kMenux, kMenuy, 48, 48);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::singleKey(uint8 key, uint16 x, uint16 y) {
|
void DreamGenContext::singleKey(uint8 key, uint16 x, uint16 y) {
|
||||||
|
|
|
@ -138,7 +138,7 @@ void DreamGenContext::input() {
|
||||||
inputLine[data.word(kCurpos) * 2 + 0] = currentKey;
|
inputLine[data.word(kCurpos) * 2 + 0] = currentKey;
|
||||||
if (currentKey > 'Z')
|
if (currentKey > 'Z')
|
||||||
continue;
|
continue;
|
||||||
multiGet(segRef(data.word(kMapstore)).ptr(data.word(kCurpos) * 256, 0), data.word(kMonadx), data.word(kMonady), 8, 8);
|
multiGet(getSegment(data.word(kMapstore)).ptr(data.word(kCurpos) * 256, 0), data.word(kMonadx), data.word(kMonady), 8, 8);
|
||||||
uint8 charWidth;
|
uint8 charWidth;
|
||||||
printChar(tempCharset(), data.word(kMonadx), data.word(kMonady), currentKey, 0, &charWidth, NULL);
|
printChar(tempCharset(), data.word(kMonadx), data.word(kMonady), currentKey, 0, &charWidth, NULL);
|
||||||
inputLine[data.word(kCurpos) * 2 + 1] = charWidth;
|
inputLine[data.word(kCurpos) * 2 + 1] = charWidth;
|
||||||
|
@ -232,7 +232,7 @@ void DreamGenContext::monMessage() {
|
||||||
|
|
||||||
void DreamGenContext::monMessage(uint8 index) {
|
void DreamGenContext::monMessage(uint8 index) {
|
||||||
assert(index > 0);
|
assert(index > 0);
|
||||||
const char *string = (const char *)segRef(data.word(kTextfile1)).ptr(kTextstart, 0);
|
const char *string = (const char *)getSegment(data.word(kTextfile1)).ptr(kTextstart, 0);
|
||||||
for (uint8 i = 0; i < index; ++i) {
|
for (uint8 i = 0; i < index; ++i) {
|
||||||
while (*string++ != '+') {
|
while (*string++ != '+') {
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
namespace DreamGen {
|
namespace DreamGen {
|
||||||
|
|
||||||
void DreamGenContext::fillRyan() {
|
void DreamGenContext::fillRyan() {
|
||||||
uint8 *inv = segRef(data.word(kBuffers)).ptr(kRyaninvlist, 60);
|
uint8 *inv = getSegment(data.word(kBuffers)).ptr(kRyaninvlist, 60);
|
||||||
findAllRyan(inv);
|
findAllRyan(inv);
|
||||||
inv += data.byte(kRyanpage) * 2 * 10;
|
inv += data.byte(kRyanpage) * 2 * 10;
|
||||||
for (size_t i = 0; i < 2; ++i) {
|
for (size_t i = 0; i < 2; ++i) {
|
||||||
|
@ -73,13 +73,13 @@ void DreamGenContext::obToInv() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::obToInv(uint8 index, uint8 flag, uint16 x, uint16 y) {
|
void DreamGenContext::obToInv(uint8 index, uint8 flag, uint16 x, uint16 y) {
|
||||||
Frame *icons1 = (Frame *)segRef(data.word(kIcons1)).ptr(0, 0);
|
Frame *icons1 = (Frame *)getSegment(data.word(kIcons1)).ptr(0, 0);
|
||||||
showFrame(icons1, x - 2, y - 1, 10, 0);
|
showFrame(icons1, x - 2, y - 1, 10, 0);
|
||||||
if (index == 0xff)
|
if (index == 0xff)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Frame *extras = (Frame *)segRef(data.word(kExtras)).ptr(0, 0);
|
Frame *extras = (Frame *)getSegment(data.word(kExtras)).ptr(0, 0);
|
||||||
Frame *frees = (Frame *)segRef(data.word(kFreeframes)).ptr(0, 0);
|
Frame *frees = (Frame *)getSegment(data.word(kFreeframes)).ptr(0, 0);
|
||||||
Frame *frames = (flag == 4) ? extras : frees;
|
Frame *frames = (flag == 4) ? extras : frees;
|
||||||
showFrame(frames, x + 18, y + 19, 3 * index + 1, 128);
|
showFrame(frames, x + 18, y + 19, 3 * index + 1, 128);
|
||||||
const DynObject *object = (const DynObject *)getAnyAdDir(index, flag);
|
const DynObject *object = (const DynObject *)getAnyAdDir(index, flag);
|
||||||
|
@ -93,9 +93,9 @@ void DreamGenContext::obPicture() {
|
||||||
return;
|
return;
|
||||||
Frame *frames;
|
Frame *frames;
|
||||||
if (data.byte(kObjecttype) == 4)
|
if (data.byte(kObjecttype) == 4)
|
||||||
frames = (Frame *)segRef(data.word(kExtras)).ptr(0, 0);
|
frames = (Frame *)getSegment(data.word(kExtras)).ptr(0, 0);
|
||||||
else
|
else
|
||||||
frames = (Frame *)segRef(data.word(kFreeframes)).ptr(0, 0);
|
frames = (Frame *)getSegment(data.word(kFreeframes)).ptr(0, 0);
|
||||||
uint8 frame = 3 * data.byte(kCommand) + 1;
|
uint8 frame = 3 * data.byte(kCommand) + 1;
|
||||||
showFrame(frames, 160, 68, frame, 0x80);
|
showFrame(frames, 160, 68, frame, 0x80);
|
||||||
}
|
}
|
||||||
|
@ -105,10 +105,10 @@ void DreamGenContext::obIcons() {
|
||||||
getAnyAd(&value1, &value2);
|
getAnyAd(&value1, &value2);
|
||||||
if (value1 != 0xff) {
|
if (value1 != 0xff) {
|
||||||
// can open it
|
// can open it
|
||||||
showFrame((Frame *)segRef(data.word(kIcons2)).ptr(0, 0), 210, 1, 4, 0);
|
showFrame((Frame *)getSegment(data.word(kIcons2)).ptr(0, 0), 210, 1, 4, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
showFrame((Frame *)segRef(data.word(kIcons2)).ptr(0, 0), 260, 1, 1, 0);
|
showFrame((Frame *)getSegment(data.word(kIcons2)).ptr(0, 0), 260, 1, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::examineOb(bool examineAgain) {
|
void DreamGenContext::examineOb(bool examineAgain) {
|
||||||
|
@ -246,11 +246,11 @@ void DreamGenContext::inventory() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::transferText() {
|
void DreamGenContext::transferText() {
|
||||||
segRef(data.word(kExtras)).word(kExtextdat + data.byte(kExpos) * 2) = data.word(kExtextpos);
|
getSegment(data.word(kExtras)).word(kExtextdat + data.byte(kExpos) * 2) = data.word(kExtextpos);
|
||||||
uint16 freeTextOffset = data.byte(kItemtotran) * 2;
|
uint16 freeTextOffset = data.byte(kItemtotran) * 2;
|
||||||
uint16 srcOffset = segRef(data.word(kFreedesc)).word(kFreetextdat + freeTextOffset);
|
uint16 srcOffset = getSegment(data.word(kFreedesc)).word(kFreetextdat + freeTextOffset);
|
||||||
const char *src = (const char *)segRef(data.word(kFreedesc)).ptr(kFreetext + srcOffset, 0);
|
const char *src = (const char *)getSegment(data.word(kFreedesc)).ptr(kFreetext + srcOffset, 0);
|
||||||
char *dst = (char *)segRef(data.word(kExtras)).ptr(kExtext + data.word(kExtextpos), 0);
|
char *dst = (char *)getSegment(data.word(kExtras)).ptr(kExtext + data.word(kExtextpos), 0);
|
||||||
|
|
||||||
size_t len = strlen(src);
|
size_t len = strlen(src);
|
||||||
memcpy(dst, src, len + 1);
|
memcpy(dst, src, len + 1);
|
||||||
|
|
|
@ -50,7 +50,7 @@ void DreamGenContext::turnPathOff(uint8 param) {
|
||||||
|
|
||||||
void DreamGenContext::turnAnyPathOn(uint8 param, uint8 room) {
|
void DreamGenContext::turnAnyPathOn(uint8 param, uint8 room) {
|
||||||
findOrMake(param, 0xff, room + 100);
|
findOrMake(param, 0xff, room + 100);
|
||||||
PathNode *paths = (PathNode *)segRef(data.word(kReels)).ptr(kPathdata + 144 * room, 0);
|
PathNode *paths = (PathNode *)getSegment(data.word(kReels)).ptr(kPathdata + 144 * room, 0);
|
||||||
paths[param].on = 0xff;
|
paths[param].on = 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ void DreamGenContext::turnAnyPathOn() {
|
||||||
|
|
||||||
void DreamGenContext::turnAnyPathOff(uint8 param, uint8 room) {
|
void DreamGenContext::turnAnyPathOff(uint8 param, uint8 room) {
|
||||||
findOrMake(param, 0x00, room + 100);
|
findOrMake(param, 0x00, room + 100);
|
||||||
PathNode *paths = (PathNode *)segRef(data.word(kReels)).ptr(kPathdata + 144 * room, 0);
|
PathNode *paths = (PathNode *)getSegment(data.word(kReels)).ptr(kPathdata + 144 * room, 0);
|
||||||
paths[param].on = 0x00;
|
paths[param].on = 0x00;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ void DreamGenContext::turnAnyPathOff() {
|
||||||
}
|
}
|
||||||
|
|
||||||
RoomPaths *DreamGenContext::getRoomsPaths() {
|
RoomPaths *DreamGenContext::getRoomsPaths() {
|
||||||
void *result = segRef(data.word(kReels)).ptr(data.byte(kRoomnum) * 144, 144);
|
void *result = getSegment(data.word(kReels)).ptr(data.byte(kRoomnum) * 144, 144);
|
||||||
return (RoomPaths *)result;
|
return (RoomPaths *)result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -95,7 +95,7 @@ void DreamGenContext::printSlow() {
|
||||||
uint8 DreamGenContext::printSlow(const uint8 *string, uint16 x, uint16 y, uint8 maxWidth, bool centered) {
|
uint8 DreamGenContext::printSlow(const uint8 *string, uint16 x, uint16 y, uint8 maxWidth, bool centered) {
|
||||||
data.byte(kPointerframe) = 1;
|
data.byte(kPointerframe) = 1;
|
||||||
data.byte(kPointermode) = 3;
|
data.byte(kPointermode) = 3;
|
||||||
const Frame* charSet = (const Frame *)segRef(data.word(kCharset1)).ptr(0, 0);
|
const Frame* charSet = (const Frame *)getSegment(data.word(kCharset1)).ptr(0, 0);
|
||||||
do {
|
do {
|
||||||
uint16 offset = x;
|
uint16 offset = x;
|
||||||
uint16 charCount = getNumber(charSet, string, maxWidth, centered, &offset);
|
uint16 charCount = getNumber(charSet, string, maxWidth, centered, &offset);
|
||||||
|
@ -149,7 +149,7 @@ uint8 DreamGenContext::printDirect(const uint8* string, uint16 x, uint16 y, uint
|
||||||
|
|
||||||
uint8 DreamGenContext::printDirect(const uint8** string, uint16 x, uint16 *y, uint8 maxWidth, bool centered) {
|
uint8 DreamGenContext::printDirect(const uint8** string, uint16 x, uint16 *y, uint8 maxWidth, bool centered) {
|
||||||
data.word(kLastxpos) = x;
|
data.word(kLastxpos) = x;
|
||||||
const Frame *charSet = (const Frame *)segRef(data.word(kCurrentset)).ptr(0, 0);
|
const Frame *charSet = (const Frame *)getSegment(data.word(kCurrentset)).ptr(0, 0);
|
||||||
while (true) {
|
while (true) {
|
||||||
uint16 offset = x;
|
uint16 offset = x;
|
||||||
uint8 charCount = getNumber(charSet, *string, maxWidth, centered, &offset);
|
uint8 charCount = getNumber(charSet, *string, maxWidth, centered, &offset);
|
||||||
|
|
|
@ -289,12 +289,6 @@ public:
|
||||||
_freeSegments.push_back(id);
|
_freeSegments.push_back(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
SegmentRef segRef(uint16 seg) {
|
|
||||||
SegmentRef result(this);
|
|
||||||
result = seg;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void _cmp(uint8 a, uint8 b) {
|
inline void _cmp(uint8 a, uint8 b) {
|
||||||
_sub(a, b);
|
_sub(a, b);
|
||||||
}
|
}
|
||||||
|
|
|
@ -226,11 +226,11 @@ void DreamGenContext::saveGame() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::namesToOld() {
|
void DreamGenContext::namesToOld() {
|
||||||
memcpy(segRef(data.word(kBuffers)).ptr(kZoomspace, 0), cs.ptr(kSavenames, 0), 17*4);
|
memcpy(getSegment(data.word(kBuffers)).ptr(kZoomspace, 0), cs.ptr(kSavenames, 0), 17*4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::oldToNames() {
|
void DreamGenContext::oldToNames() {
|
||||||
memcpy(cs.ptr(kSavenames, 0), segRef(data.word(kBuffers)).ptr(kZoomspace, 0), 17*4);
|
memcpy(cs.ptr(kSavenames, 0), getSegment(data.word(kBuffers)).ptr(kZoomspace, 0), 17*4);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::saveLoad() {
|
void DreamGenContext::saveLoad() {
|
||||||
|
@ -330,8 +330,8 @@ void DreamGenContext::savePosition(unsigned int slot, const uint8 *descbuf) {
|
||||||
engine->writeToSaveFile(data.ptr(kFileheader, kHeaderlen), kHeaderlen);
|
engine->writeToSaveFile(data.ptr(kFileheader, kHeaderlen), kHeaderlen);
|
||||||
engine->writeToSaveFile(descbuf, len[0]);
|
engine->writeToSaveFile(descbuf, len[0]);
|
||||||
engine->writeToSaveFile(data.ptr(kStartvars, len[1]), len[1]);
|
engine->writeToSaveFile(data.ptr(kStartvars, len[1]), len[1]);
|
||||||
engine->writeToSaveFile(segRef(data.word(kExtras)).ptr(kExframedata, len[2]), len[2]);
|
engine->writeToSaveFile(getSegment(data.word(kExtras)).ptr(kExframedata, len[2]), len[2]);
|
||||||
engine->writeToSaveFile(segRef(data.word(kBuffers)).ptr(kListofchanges, len[3]), len[3]);
|
engine->writeToSaveFile(getSegment(data.word(kBuffers)).ptr(kListofchanges, len[3]), len[3]);
|
||||||
engine->writeToSaveFile(data.ptr(kMadeuproomdat, len[4]), len[4]);
|
engine->writeToSaveFile(data.ptr(kMadeuproomdat, len[4]), len[4]);
|
||||||
engine->writeToSaveFile(data.ptr(kReelroutines, len[5]), len[5]);
|
engine->writeToSaveFile(data.ptr(kReelroutines, len[5]), len[5]);
|
||||||
closeFile();
|
closeFile();
|
||||||
|
@ -360,8 +360,8 @@ void DreamGenContext::loadPosition(unsigned int slot) {
|
||||||
engine->readFromSaveFile(namebuf, 17);
|
engine->readFromSaveFile(namebuf, 17);
|
||||||
}
|
}
|
||||||
engine->readFromSaveFile(data.ptr(kStartvars, len[1]), len[1]);
|
engine->readFromSaveFile(data.ptr(kStartvars, len[1]), len[1]);
|
||||||
engine->readFromSaveFile(segRef(data.word(kExtras)).ptr(kExframedata, len[2]), len[2]);
|
engine->readFromSaveFile(getSegment(data.word(kExtras)).ptr(kExframedata, len[2]), len[2]);
|
||||||
engine->readFromSaveFile(segRef(data.word(kBuffers)).ptr(kListofchanges, len[3]), len[3]);
|
engine->readFromSaveFile(getSegment(data.word(kBuffers)).ptr(kListofchanges, len[3]), len[3]);
|
||||||
engine->readFromSaveFile(data.ptr(kMadeuproomdat, len[4]), len[4]);
|
engine->readFromSaveFile(data.ptr(kMadeuproomdat, len[4]), len[4]);
|
||||||
engine->readFromSaveFile(cs.ptr(kReelroutines, len[5]), len[5]);
|
engine->readFromSaveFile(cs.ptr(kReelroutines, len[5]), len[5]);
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
namespace DreamGen {
|
namespace DreamGen {
|
||||||
|
|
||||||
Sprite *DreamGenContext::spriteTable() {
|
Sprite *DreamGenContext::spriteTable() {
|
||||||
Sprite *sprite = (Sprite *)segRef(data.word(kBuffers)).ptr(kSpritetable, 16 * sizeof(Sprite));
|
Sprite *sprite = (Sprite *)getSegment(data.word(kBuffers)).ptr(kSpritetable, 16 * sizeof(Sprite));
|
||||||
return sprite;
|
return sprite;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ void DreamGenContext::printASprite(const Sprite *sprite) {
|
||||||
c = 8;
|
c = 8;
|
||||||
else
|
else
|
||||||
c = 0;
|
c = 0;
|
||||||
showFrame((const Frame *)segRef(sprite->frameData()).ptr(0, 0), x, y, sprite->frameNumber, c);
|
showFrame((const Frame *)getSegment(sprite->frameData()).ptr(0, 0), x, y, sprite->frameNumber, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::clearSprites() {
|
void DreamGenContext::clearSprites() {
|
||||||
|
@ -254,7 +254,7 @@ void DreamGenContext::backObject() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::backObject(Sprite *sprite) {
|
void DreamGenContext::backObject(Sprite *sprite) {
|
||||||
SetObject *objData = (SetObject *)segRef(data.word(kSetdat)).ptr(sprite->objData(), 0);
|
SetObject *objData = (SetObject *)getSegment(data.word(kSetdat)).ptr(sprite->objData(), 0);
|
||||||
|
|
||||||
if (sprite->delay != 0) {
|
if (sprite->delay != 0) {
|
||||||
--sprite->delay;
|
--sprite->delay;
|
||||||
|
@ -475,18 +475,18 @@ Frame *DreamGenContext::findSource() {
|
||||||
uint16 currentFrame = data.word(kCurrentframe);
|
uint16 currentFrame = data.word(kCurrentframe);
|
||||||
if (currentFrame < 160) {
|
if (currentFrame < 160) {
|
||||||
data.word(kTakeoff) = 0;
|
data.word(kTakeoff) = 0;
|
||||||
return (Frame *)segRef(data.word(kReel1)).ptr(0, 0);
|
return (Frame *)getSegment(data.word(kReel1)).ptr(0, 0);
|
||||||
} else if (currentFrame < 320) {
|
} else if (currentFrame < 320) {
|
||||||
data.word(kTakeoff) = 160;
|
data.word(kTakeoff) = 160;
|
||||||
return (Frame *)segRef(data.word(kReel2)).ptr(0, 0);
|
return (Frame *)getSegment(data.word(kReel2)).ptr(0, 0);
|
||||||
} else {
|
} else {
|
||||||
data.word(kTakeoff) = 320;
|
data.word(kTakeoff) = 320;
|
||||||
return (Frame *)segRef(data.word(kReel3)).ptr(0, 0);
|
return (Frame *)getSegment(data.word(kReel3)).ptr(0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Reel *DreamGenContext::getReelStart() {
|
Reel *DreamGenContext::getReelStart() {
|
||||||
Reel *reel = (Reel *)segRef(data.word(kReels)).ptr(kReellist + data.word(kReelpointer) * sizeof(Reel) * 8, sizeof(Reel));
|
Reel *reel = (Reel *)getSegment(data.word(kReels)).ptr(kReellist + data.word(kReelpointer) * sizeof(Reel) * 8, sizeof(Reel));
|
||||||
return reel;
|
return reel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -520,7 +520,7 @@ const Frame *DreamGenContext::getReelFrameAX(uint16 frame) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::showRain() {
|
void DreamGenContext::showRain() {
|
||||||
Rain *rain = (Rain *)segRef(data.word(kBuffers)).ptr(kRainlist, 0);
|
Rain *rain = (Rain *)getSegment(data.word(kBuffers)).ptr(kRainlist, 0);
|
||||||
|
|
||||||
// Do nothing if there's no rain at all
|
// Do nothing if there's no rain at all
|
||||||
if (rain->x == 255)
|
if (rain->x == 255)
|
||||||
|
@ -631,7 +631,7 @@ static void (DreamGenContext::*reelCallbacksCPP[57])(ReelRoutine &) = {
|
||||||
|
|
||||||
void DreamGenContext::updatePeople() {
|
void DreamGenContext::updatePeople() {
|
||||||
data.word(kListpos) = kPeoplelist;
|
data.word(kListpos) = kPeoplelist;
|
||||||
memset(segRef(data.word(kBuffers)).ptr(kPeoplelist, 12 * sizeof(People)), 0xff, 12 * sizeof(People));
|
memset(getSegment(data.word(kBuffers)).ptr(kPeoplelist, 12 * sizeof(People)), 0xff, 12 * sizeof(People));
|
||||||
++data.word(kMaintimer);
|
++data.word(kMaintimer);
|
||||||
|
|
||||||
// The original callbacks are called with es:bx pointing to their reelRoutine entry.
|
// The original callbacks are called with es:bx pointing to their reelRoutine entry.
|
||||||
|
@ -776,7 +776,7 @@ void DreamGenContext::checkOne() {
|
||||||
void DreamGenContext::checkOne(uint8 x, uint8 y, uint8 *flag, uint8 *flagEx, uint8 *type, uint8 *flagX, uint8 *flagY) {
|
void DreamGenContext::checkOne(uint8 x, uint8 y, uint8 *flag, uint8 *flagEx, uint8 *type, uint8 *flagX, uint8 *flagY) {
|
||||||
*flagX = x / 16;
|
*flagX = x / 16;
|
||||||
*flagY = y / 16;
|
*flagY = y / 16;
|
||||||
const uint8 *tileData = segRef(data.word(kBuffers)).ptr(kMapflags + (*flagY * 11 + *flagX) * 3, 3);
|
const uint8 *tileData = getSegment(data.word(kBuffers)).ptr(kMapflags + (*flagY * 11 + *flagX) * 3, 3);
|
||||||
*flag = tileData[0];
|
*flag = tileData[0];
|
||||||
*flagEx = tileData[1];
|
*flagEx = tileData[1];
|
||||||
*type = tileData[2];
|
*type = tileData[2];
|
||||||
|
@ -802,7 +802,7 @@ void DreamGenContext::addToPeopleList() {
|
||||||
void DreamGenContext::addToPeopleList(ReelRoutine *routine) {
|
void DreamGenContext::addToPeopleList(ReelRoutine *routine) {
|
||||||
uint16 routinePointer = (const uint8 *)routine - cs.ptr(0, 0);
|
uint16 routinePointer = (const uint8 *)routine - cs.ptr(0, 0);
|
||||||
|
|
||||||
People *people = (People *)segRef(data.word(kBuffers)).ptr(data.word(kListpos), sizeof(People));
|
People *people = (People *)getSegment(data.word(kBuffers)).ptr(data.word(kListpos), sizeof(People));
|
||||||
people->setReelPointer(routine->reelPointer());
|
people->setReelPointer(routine->reelPointer());
|
||||||
people->setRoutinePointer(routinePointer);
|
people->setRoutinePointer(routinePointer);
|
||||||
people->b4 = routine->b7;
|
people->b4 = routine->b7;
|
||||||
|
@ -882,7 +882,7 @@ static const RainLocation rainLocationList[] = {
|
||||||
|
|
||||||
void DreamGenContext::initRain() {
|
void DreamGenContext::initRain() {
|
||||||
const RainLocation *r = rainLocationList;
|
const RainLocation *r = rainLocationList;
|
||||||
Rain *rainList = (Rain *)segRef(data.word(kBuffers)).ptr(kRainlist, 0);
|
Rain *rainList = (Rain *)getSegment(data.word(kBuffers)).ptr(kRainlist, 0);
|
||||||
Rain *rain = rainList;
|
Rain *rain = rainList;
|
||||||
|
|
||||||
uint8 rainSpacing = 0;
|
uint8 rainSpacing = 0;
|
||||||
|
|
|
@ -304,7 +304,7 @@ static Common::String getFilename(Context &context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8 *DreamGenContext::textUnder() {
|
uint8 *DreamGenContext::textUnder() {
|
||||||
return segRef(data.word(kBuffers)).ptr(kTextunder, 0);
|
return getSegment(data.word(kBuffers)).ptr(kTextunder, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16 DreamGenContext::standardLoad(const char *fileName) {
|
uint16 DreamGenContext::standardLoad(const char *fileName) {
|
||||||
|
@ -312,7 +312,7 @@ uint16 DreamGenContext::standardLoad(const char *fileName) {
|
||||||
engine->readFromFile(cs.ptr(kFileheader, kHeaderlen), kHeaderlen);
|
engine->readFromFile(cs.ptr(kFileheader, kHeaderlen), kHeaderlen);
|
||||||
uint16 sizeInBytes = cs.word(kFiledata);
|
uint16 sizeInBytes = cs.word(kFiledata);
|
||||||
uint16 result = allocateMem((sizeInBytes + 15) / 16);
|
uint16 result = allocateMem((sizeInBytes + 15) / 16);
|
||||||
engine->readFromFile(segRef(result).ptr(0, 0), sizeInBytes);
|
engine->readFromFile(getSegment(result).ptr(0, 0), sizeInBytes);
|
||||||
engine->closeFile();
|
engine->closeFile();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -354,7 +354,7 @@ void DreamGenContext::loadTempCharset(const char *fileName) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Frame *DreamGenContext::tempCharset() {
|
Frame *DreamGenContext::tempCharset() {
|
||||||
return (Frame *)segRef(data.word(kTempcharset)).ptr(0, 0);
|
return (Frame *)getSegment(data.word(kTempcharset)).ptr(0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::hangOnCurs(uint16 frameCount) {
|
void DreamGenContext::hangOnCurs(uint16 frameCount) {
|
||||||
|
@ -576,8 +576,8 @@ void DreamGenContext::setupTimedTemp(uint8 textIndex, uint8 voiceIndex, uint8 x,
|
||||||
data.word(kCounttotimed) = countToTimed;
|
data.word(kCounttotimed) = countToTimed;
|
||||||
data.word(kTimecount) = timeCount + countToTimed;
|
data.word(kTimecount) = timeCount + countToTimed;
|
||||||
data.word(kTimedseg) = data.word(kTextfile1);
|
data.word(kTimedseg) = data.word(kTextfile1);
|
||||||
data.word(kTimedoffset) = kTextstart + segRef(data.word(kTextfile1)).word(textIndex * 2);
|
data.word(kTimedoffset) = kTextstart + getSegment(data.word(kTextfile1)).word(textIndex * 2);
|
||||||
const uint8 *string = segRef(data.word(kTextfile1)).ptr(data.word(kTimedoffset), 0);
|
const uint8 *string = getSegment(data.word(kTextfile1)).ptr(data.word(kTimedoffset), 0);
|
||||||
debug(1, "setupTimedTemp: (%d, %d) => '%s'", textIndex, voiceIndex, string);
|
debug(1, "setupTimedTemp: (%d, %d) => '%s'", textIndex, voiceIndex, string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -802,7 +802,7 @@ void DreamGenContext::makeBackOb(SetObject *objData) {
|
||||||
uint8 type = objData->type;
|
uint8 type = objData->type;
|
||||||
Sprite *sprite = makeSprite(data.word(kObjectx), data.word(kObjecty), addr_backobject, data.word(kSetframes), 0);
|
Sprite *sprite = makeSprite(data.word(kObjectx), data.word(kObjecty), addr_backobject, data.word(kSetframes), 0);
|
||||||
|
|
||||||
uint16 objDataOffset = (uint8 *)objData - segRef(data.word(kSetdat)).ptr(0, 0);
|
uint16 objDataOffset = (uint8 *)objData - getSegment(data.word(kSetdat)).ptr(0, 0);
|
||||||
assert(objDataOffset % sizeof(SetObject) == 0);
|
assert(objDataOffset % sizeof(SetObject) == 0);
|
||||||
assert(objDataOffset < 128 * sizeof(SetObject));
|
assert(objDataOffset < 128 * sizeof(SetObject));
|
||||||
sprite->setObjData(objDataOffset);
|
sprite->setObjData(objDataOffset);
|
||||||
|
@ -833,14 +833,14 @@ void DreamGenContext::readHeader() {
|
||||||
uint16 DreamGenContext::allocateAndLoad(unsigned int size) {
|
uint16 DreamGenContext::allocateAndLoad(unsigned int size) {
|
||||||
// allocatemem adds 32 bytes, so it doesn't matter that size/16 rounds down
|
// allocatemem adds 32 bytes, so it doesn't matter that size/16 rounds down
|
||||||
uint16 result = allocateMem(size / 16);
|
uint16 result = allocateMem(size / 16);
|
||||||
engine->readFromFile(segRef(result).ptr(0, size), size);
|
engine->readFromFile(getSegment(result).ptr(0, size), size);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::clearAndLoad(uint16 seg, uint8 c,
|
void DreamGenContext::clearAndLoad(uint16 seg, uint8 c,
|
||||||
unsigned int size, unsigned int maxSize) {
|
unsigned int size, unsigned int maxSize) {
|
||||||
assert(size <= maxSize);
|
assert(size <= maxSize);
|
||||||
uint8 *buf = segRef(seg).ptr(0, maxSize);
|
uint8 *buf = getSegment(seg).ptr(0, maxSize);
|
||||||
memset(buf, c, maxSize);
|
memset(buf, c, maxSize);
|
||||||
engine->readFromFile(buf, size);
|
engine->readFromFile(buf, size);
|
||||||
}
|
}
|
||||||
|
@ -945,7 +945,7 @@ void DreamGenContext::crosshair() {
|
||||||
} else {
|
} else {
|
||||||
frame = 29;
|
frame = 29;
|
||||||
}
|
}
|
||||||
const Frame *src = (const Frame *)segRef(data.word(kIcons1)).ptr(0, 0);
|
const Frame *src = (const Frame *)getSegment(data.word(kIcons1)).ptr(0, 0);
|
||||||
showFrame(src, kZoomx + 24, kZoomy + 19, frame, 0);
|
showFrame(src, kZoomx + 24, kZoomy + 19, frame, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -964,9 +964,9 @@ void DreamGenContext::commandOnly() {
|
||||||
void DreamGenContext::commandOnly(uint8 command) {
|
void DreamGenContext::commandOnly(uint8 command) {
|
||||||
delTextLine();
|
delTextLine();
|
||||||
uint16 index = command * 2;
|
uint16 index = command * 2;
|
||||||
uint16 offset = kTextstart + segRef(data.word(kCommandtext)).word(index);
|
uint16 offset = kTextstart + getSegment(data.word(kCommandtext)).word(index);
|
||||||
uint16 y = data.word(kTextaddressy);
|
uint16 y = data.word(kTextaddressy);
|
||||||
const uint8 *string = segRef(data.word(kCommandtext)).ptr(offset, 0);
|
const uint8 *string = getSegment(data.word(kCommandtext)).ptr(offset, 0);
|
||||||
printDirect(&string, data.word(kTextaddressx), &y, data.byte(kTextlen), (bool)(data.byte(kTextlen) & 1));
|
printDirect(&string, data.word(kTextaddressx), &y, data.byte(kTextlen), (bool)(data.byte(kTextlen) & 1));
|
||||||
data.byte(kNewtextline) = 1;
|
data.byte(kNewtextline) = 1;
|
||||||
}
|
}
|
||||||
|
@ -976,7 +976,7 @@ void DreamGenContext::checkIfPerson() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DreamGenContext::checkIfPerson(uint8 x, uint8 y) {
|
bool DreamGenContext::checkIfPerson(uint8 x, uint8 y) {
|
||||||
People *people = (People *)segRef(data.word(kBuffers)).ptr(kPeoplelist, 0);
|
People *people = (People *)getSegment(data.word(kBuffers)).ptr(kPeoplelist, 0);
|
||||||
|
|
||||||
for (size_t i = 0; i < 12; ++i, ++people) {
|
for (size_t i = 0; i < 12; ++i, ++people) {
|
||||||
if (people->b4 == 255)
|
if (people->b4 == 255)
|
||||||
|
@ -1010,7 +1010,7 @@ void DreamGenContext::checkIfFree() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DreamGenContext::checkIfFree(uint8 x, uint8 y) {
|
bool DreamGenContext::checkIfFree(uint8 x, uint8 y) {
|
||||||
const ObjPos *freeList = (const ObjPos *)segRef(data.word(kBuffers)).ptr(kFreelist, 80 * sizeof(ObjPos));
|
const ObjPos *freeList = (const ObjPos *)getSegment(data.word(kBuffers)).ptr(kFreelist, 80 * sizeof(ObjPos));
|
||||||
for (size_t i = 0; i < 80; ++i) {
|
for (size_t i = 0; i < 80; ++i) {
|
||||||
const ObjPos *objPos = freeList + 79 - i;
|
const ObjPos *objPos = freeList + 79 - i;
|
||||||
if (objPos->index == 0xff || !objPos->contains(x,y))
|
if (objPos->index == 0xff || !objPos->contains(x,y))
|
||||||
|
@ -1026,7 +1026,7 @@ void DreamGenContext::checkIfEx() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DreamGenContext::checkIfEx(uint8 x, uint8 y) {
|
bool DreamGenContext::checkIfEx(uint8 x, uint8 y) {
|
||||||
const ObjPos *exList = (const ObjPos *)segRef(data.word(kBuffers)).ptr(kExlist, 100 * sizeof(ObjPos));
|
const ObjPos *exList = (const ObjPos *)getSegment(data.word(kBuffers)).ptr(kExlist, 100 * sizeof(ObjPos));
|
||||||
for (size_t i = 0; i < 100; ++i) {
|
for (size_t i = 0; i < 100; ++i) {
|
||||||
const ObjPos *objPos = exList + 99 - i;
|
const ObjPos *objPos = exList + 99 - i;
|
||||||
if (objPos->index == 0xff || !objPos->contains(x,y))
|
if (objPos->index == 0xff || !objPos->contains(x,y))
|
||||||
|
@ -1040,20 +1040,20 @@ bool DreamGenContext::checkIfEx(uint8 x, uint8 y) {
|
||||||
const uint8 *DreamGenContext::findObName(uint8 type, uint8 index) {
|
const uint8 *DreamGenContext::findObName(uint8 type, uint8 index) {
|
||||||
if (type == 5) {
|
if (type == 5) {
|
||||||
uint16 i = 64 * 2 * (index & 127);
|
uint16 i = 64 * 2 * (index & 127);
|
||||||
uint16 offset = segRef(data.word(kPeople)).word(kPersontxtdat + i) + kPersontext;
|
uint16 offset = getSegment(data.word(kPeople)).word(kPersontxtdat + i) + kPersontext;
|
||||||
return segRef(data.word(kPeople)).ptr(offset, 0);
|
return getSegment(data.word(kPeople)).ptr(offset, 0);
|
||||||
} else if (type == 4) {
|
} else if (type == 4) {
|
||||||
uint16 offset = segRef(data.word(kExtras)).word(kExtextdat + index * 2) + kExtext;
|
uint16 offset = getSegment(data.word(kExtras)).word(kExtextdat + index * 2) + kExtext;
|
||||||
return segRef(data.word(kExtras)).ptr(offset, 0);
|
return getSegment(data.word(kExtras)).ptr(offset, 0);
|
||||||
} else if (type == 2) {
|
} else if (type == 2) {
|
||||||
uint16 offset = segRef(data.word(kFreedesc)).word(kFreetextdat + index * 2) + kFreetext;
|
uint16 offset = getSegment(data.word(kFreedesc)).word(kFreetextdat + index * 2) + kFreetext;
|
||||||
return segRef(data.word(kFreedesc)).ptr(offset, 0);
|
return getSegment(data.word(kFreedesc)).ptr(offset, 0);
|
||||||
} else if (type == 1) {
|
} else if (type == 1) {
|
||||||
uint16 offset = segRef(data.word(kSetdesc)).word(kSettextdat + index * 2) + kSettext;
|
uint16 offset = getSegment(data.word(kSetdesc)).word(kSettextdat + index * 2) + kSettext;
|
||||||
return segRef(data.word(kSetdesc)).ptr(offset, 0);
|
return getSegment(data.word(kSetdesc)).ptr(offset, 0);
|
||||||
} else {
|
} else {
|
||||||
uint16 offset = segRef(data.word(kBlockdesc)).word(kBlocktextdat + index * 2) + kBlocktext;
|
uint16 offset = getSegment(data.word(kBlockdesc)).word(kBlocktextdat + index * 2) + kBlocktext;
|
||||||
return segRef(data.word(kBlockdesc)).ptr(offset, 0);
|
return getSegment(data.word(kBlockdesc)).ptr(offset, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1082,10 +1082,10 @@ void DreamGenContext::commandWithOb() {
|
||||||
void DreamGenContext::commandWithOb(uint8 command, uint8 type, uint8 index) {
|
void DreamGenContext::commandWithOb(uint8 command, uint8 type, uint8 index) {
|
||||||
uint8 commandLine[64] = "OBJECT NAME ONE ";
|
uint8 commandLine[64] = "OBJECT NAME ONE ";
|
||||||
delTextLine();
|
delTextLine();
|
||||||
uint16 commandText = kTextstart + segRef(data.word(kCommandtext)).word(command * 2);
|
uint16 commandText = kTextstart + getSegment(data.word(kCommandtext)).word(command * 2);
|
||||||
uint8 textLen = data.byte(kTextlen);
|
uint8 textLen = data.byte(kTextlen);
|
||||||
{
|
{
|
||||||
const uint8 *string = segRef(data.word(kCommandtext)).ptr(commandText, 0);
|
const uint8 *string = getSegment(data.word(kCommandtext)).ptr(commandText, 0);
|
||||||
printDirect(string, data.word(kTextaddressx), data.word(kTextaddressy), textLen, (bool)(textLen & 1));
|
printDirect(string, data.word(kTextaddressx), data.word(kTextaddressy), textLen, (bool)(textLen & 1));
|
||||||
}
|
}
|
||||||
copyName(type, index, commandLine);
|
copyName(type, index, commandLine);
|
||||||
|
@ -1101,7 +1101,7 @@ void DreamGenContext::examineObText() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::showPanel() {
|
void DreamGenContext::showPanel() {
|
||||||
Frame *frame = (Frame *)segRef(data.word(kIcons1)).ptr(0, sizeof(Frame));
|
Frame *frame = (Frame *)getSegment(data.word(kIcons1)).ptr(0, sizeof(Frame));
|
||||||
showFrame(frame, 72, 0, 19, 0);
|
showFrame(frame, 72, 0, 19, 0);
|
||||||
showFrame(frame, 192, 0, 19, 0);
|
showFrame(frame, 192, 0, 19, 0);
|
||||||
}
|
}
|
||||||
|
@ -1126,7 +1126,7 @@ void DreamGenContext::findOrMake() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::findOrMake(uint8 index, uint8 value, uint8 type) {
|
void DreamGenContext::findOrMake(uint8 index, uint8 value, uint8 type) {
|
||||||
Change *change = (Change *)segRef(data.word(kBuffers)).ptr(kListofchanges, sizeof(Change));
|
Change *change = (Change *)getSegment(data.word(kBuffers)).ptr(kListofchanges, sizeof(Change));
|
||||||
for (; change->index != 0xff; ++change) {
|
for (; change->index != 0xff; ++change) {
|
||||||
if (index == change->index && data.byte(kReallocation) == change->location && type == change->type) {
|
if (index == change->index && data.byte(kReallocation) == change->location && type == change->type) {
|
||||||
change->value = value;
|
change->value = value;
|
||||||
|
@ -1141,18 +1141,18 @@ void DreamGenContext::findOrMake(uint8 index, uint8 value, uint8 type) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::setAllChanges() {
|
void DreamGenContext::setAllChanges() {
|
||||||
Change *change = (Change *)segRef(data.word(kBuffers)).ptr(kListofchanges, sizeof(Change));
|
Change *change = (Change *)getSegment(data.word(kBuffers)).ptr(kListofchanges, sizeof(Change));
|
||||||
for (; change->index != 0xff; ++change)
|
for (; change->index != 0xff; ++change)
|
||||||
if (change->location == data.byte(kReallocation))
|
if (change->location == data.byte(kReallocation))
|
||||||
doChange(change->index, change->value, change->type);
|
doChange(change->index, change->value, change->type);
|
||||||
}
|
}
|
||||||
|
|
||||||
DynObject *DreamGenContext::getFreeAd(uint8 index) {
|
DynObject *DreamGenContext::getFreeAd(uint8 index) {
|
||||||
return (DynObject *)segRef(data.word(kFreedat)).ptr(0, 0) + index;
|
return (DynObject *)getSegment(data.word(kFreedat)).ptr(0, 0) + index;
|
||||||
}
|
}
|
||||||
|
|
||||||
DynObject *DreamGenContext::getExAd(uint8 index) {
|
DynObject *DreamGenContext::getExAd(uint8 index) {
|
||||||
return (DynObject *)segRef(data.word(kExtras)).ptr(kExdata, 0) + index;
|
return (DynObject *)getSegment(data.word(kExtras)).ptr(kExdata, 0) + index;
|
||||||
}
|
}
|
||||||
|
|
||||||
DynObject *DreamGenContext::getEitherAdCPP() {
|
DynObject *DreamGenContext::getEitherAdCPP() {
|
||||||
|
@ -1191,7 +1191,7 @@ void *DreamGenContext::getAnyAdDir(uint8 index, uint8 flag) {
|
||||||
}
|
}
|
||||||
|
|
||||||
SetObject *DreamGenContext::getSetAd(uint8 index) {
|
SetObject *DreamGenContext::getSetAd(uint8 index) {
|
||||||
return (SetObject *)segRef(data.word(kSetdat)).ptr(0, 0) + index;
|
return (SetObject *)getSegment(data.word(kSetdat)).ptr(0, 0) + index;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::doChange(uint8 index, uint8 value, uint8 type) {
|
void DreamGenContext::doChange(uint8 index, uint8 value, uint8 type) {
|
||||||
|
@ -1209,8 +1209,8 @@ void DreamGenContext::doChange(uint8 index, uint8 value, uint8 type) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::deleteTaken() {
|
void DreamGenContext::deleteTaken() {
|
||||||
const DynObject *extraObjects = (const DynObject *)segRef(data.word(kExtras)).ptr(kExdata, 0);
|
const DynObject *extraObjects = (const DynObject *)getSegment(data.word(kExtras)).ptr(kExdata, 0);
|
||||||
DynObject *freeObjects = (DynObject *)segRef(data.word(kFreedat)).ptr(0, 0);
|
DynObject *freeObjects = (DynObject *)getSegment(data.word(kFreedat)).ptr(0, 0);
|
||||||
for(size_t i = 0; i < kNumexobjects; ++i) {
|
for(size_t i = 0; i < kNumexobjects; ++i) {
|
||||||
uint8 location = extraObjects[i].initialLocation;
|
uint8 location = extraObjects[i].initialLocation;
|
||||||
if (location == data.byte(kReallocation)) {
|
if (location == data.byte(kReallocation)) {
|
||||||
|
@ -1222,7 +1222,7 @@ void DreamGenContext::deleteTaken() {
|
||||||
|
|
||||||
void DreamGenContext::getExPos() {
|
void DreamGenContext::getExPos() {
|
||||||
es = data.word(kExtras);
|
es = data.word(kExtras);
|
||||||
const DynObject *objects = (const DynObject *)segRef(data.word(kExtras)).ptr(kExdata, sizeof(DynObject));
|
const DynObject *objects = (const DynObject *)getSegment(data.word(kExtras)).ptr(kExdata, sizeof(DynObject));
|
||||||
for (size_t i = 0; i < kNumexobjects; ++i) {
|
for (size_t i = 0; i < kNumexobjects; ++i) {
|
||||||
if (objects[i].mapad[0] == 0xff) {
|
if (objects[i].mapad[0] == 0xff) {
|
||||||
data.byte(kExpos) = i;
|
data.byte(kExpos) = i;
|
||||||
|
@ -1366,7 +1366,7 @@ void DreamGenContext::delPointer() {
|
||||||
data.word(kDelherey) = data.word(kOldpointery);
|
data.word(kDelherey) = data.word(kOldpointery);
|
||||||
data.byte(kDelxs) = data.byte(kPointerxs);
|
data.byte(kDelxs) = data.byte(kPointerxs);
|
||||||
data.byte(kDelys) = data.byte(kPointerys);
|
data.byte(kDelys) = data.byte(kPointerys);
|
||||||
multiPut(segRef(data.word(kBuffers)).ptr(kPointerback, 0), data.word(kDelherex), data.word(kDelherey), data.byte(kPointerxs), data.byte(kPointerys));
|
multiPut(getSegment(data.word(kBuffers)).ptr(kPointerback, 0), data.word(kDelherex), data.word(kDelherey), data.byte(kPointerxs), data.byte(kPointerys));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::showBlink() {
|
void DreamGenContext::showBlink() {
|
||||||
|
@ -1387,7 +1387,7 @@ void DreamGenContext::showBlink() {
|
||||||
blinkFrame = 6;
|
blinkFrame = 6;
|
||||||
static const uint8 blinkTab[] = { 16,18,18,17,16,16,16 };
|
static const uint8 blinkTab[] = { 16,18,18,17,16,16,16 };
|
||||||
uint8 width, height;
|
uint8 width, height;
|
||||||
showFrame((Frame *)segRef(data.word(kIcons1)).ptr(0, 0), 44, 32, blinkTab[blinkFrame], 0, &width, &height);
|
showFrame((Frame *)getSegment(data.word(kIcons1)).ptr(0, 0), 44, 32, blinkTab[blinkFrame], 0, &width, &height);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::dumpBlink() {
|
void DreamGenContext::dumpBlink() {
|
||||||
|
@ -1531,7 +1531,7 @@ void DreamGenContext::checkCoords(const RectWithCallback *rectWithCallbacks) {
|
||||||
|
|
||||||
void DreamGenContext::showPointer() {
|
void DreamGenContext::showPointer() {
|
||||||
showBlink();
|
showBlink();
|
||||||
const Frame *icons1 = ((const Frame *)segRef(data.word(kIcons1)).ptr(0, 0));
|
const Frame *icons1 = ((const Frame *)getSegment(data.word(kIcons1)).ptr(0, 0));
|
||||||
uint16 x = data.word(kMousex);
|
uint16 x = data.word(kMousex);
|
||||||
data.word(kOldpointerx) = data.word(kMousex);
|
data.word(kOldpointerx) = data.word(kMousex);
|
||||||
uint16 y = data.word(kMousey);
|
uint16 y = data.word(kMousey);
|
||||||
|
@ -1539,9 +1539,9 @@ void DreamGenContext::showPointer() {
|
||||||
if (data.byte(kPickup) == 1) {
|
if (data.byte(kPickup) == 1) {
|
||||||
const Frame *frames;
|
const Frame *frames;
|
||||||
if (data.byte(kObjecttype) != 4)
|
if (data.byte(kObjecttype) != 4)
|
||||||
frames = (const Frame *)segRef(data.word(kFreeframes)).ptr(0, 0);
|
frames = (const Frame *)getSegment(data.word(kFreeframes)).ptr(0, 0);
|
||||||
else
|
else
|
||||||
frames = (const Frame *)segRef(data.word(kExtras)).ptr(0, 0);
|
frames = (const Frame *)getSegment(data.word(kExtras)).ptr(0, 0);
|
||||||
const Frame *frame = frames + (3 * data.byte(kItemframe) + 1);
|
const Frame *frame = frames + (3 * data.byte(kItemframe) + 1);
|
||||||
uint8 width = frame->width;
|
uint8 width = frame->width;
|
||||||
uint8 height = frame->height;
|
uint8 height = frame->height;
|
||||||
|
@ -1555,7 +1555,7 @@ void DreamGenContext::showPointer() {
|
||||||
uint16 yMin = (y >= height / 2) ? y - height / 2 : 0;
|
uint16 yMin = (y >= height / 2) ? y - height / 2 : 0;
|
||||||
data.word(kOldpointerx) = xMin;
|
data.word(kOldpointerx) = xMin;
|
||||||
data.word(kOldpointery) = yMin;
|
data.word(kOldpointery) = yMin;
|
||||||
multiGet(segRef(data.word(kBuffers)).ptr(kPointerback, 0), xMin, yMin, width, height);
|
multiGet(getSegment(data.word(kBuffers)).ptr(kPointerback, 0), xMin, yMin, width, height);
|
||||||
showFrame(frames, x, y, 3 * data.byte(kItemframe) + 1, 128);
|
showFrame(frames, x, y, 3 * data.byte(kItemframe) + 1, 128);
|
||||||
showFrame(icons1, x, y, 3, 128);
|
showFrame(icons1, x, y, 3, 128);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1568,7 +1568,7 @@ void DreamGenContext::showPointer() {
|
||||||
height = 12;
|
height = 12;
|
||||||
data.byte(kPointerxs) = width;
|
data.byte(kPointerxs) = width;
|
||||||
data.byte(kPointerys) = height;
|
data.byte(kPointerys) = height;
|
||||||
multiGet(segRef(data.word(kBuffers)).ptr(kPointerback, 0), x, y, width, height);
|
multiGet(getSegment(data.word(kBuffers)).ptr(kPointerback, 0), x, y, width, height);
|
||||||
showFrame(icons1, x, y, data.byte(kPointerframe) + 20, 0);
|
showFrame(icons1, x, y, data.byte(kPointerframe) + 20, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1632,8 +1632,8 @@ void DreamGenContext::printMessage() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::printMessage(uint16 x, uint16 y, uint8 index, uint8 maxWidth, bool centered) {
|
void DreamGenContext::printMessage(uint16 x, uint16 y, uint8 index, uint8 maxWidth, bool centered) {
|
||||||
uint16 offset = kTextstart + segRef(data.word(kCommandtext)).word(index * 2);
|
uint16 offset = kTextstart + getSegment(data.word(kCommandtext)).word(index * 2);
|
||||||
const uint8 *string = segRef(data.word(kCommandtext)).ptr(offset, 0);
|
const uint8 *string = getSegment(data.word(kCommandtext)).ptr(offset, 0);
|
||||||
printDirect(&string, x, &y, maxWidth, centered);
|
printDirect(&string, x, &y, maxWidth, centered);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1653,8 +1653,8 @@ bool DreamGenContext::compare(uint8 index, uint8 flag, const char id[4]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DreamGenContext::isItDescribed(const ObjPos *pos) {
|
bool DreamGenContext::isItDescribed(const ObjPos *pos) {
|
||||||
uint16 offset = segRef(data.word(kSetdesc)).word(kSettextdat + pos->index * 2);
|
uint16 offset = getSegment(data.word(kSetdesc)).word(kSettextdat + pos->index * 2);
|
||||||
uint8 result = segRef(data.word(kSetdesc)).byte(kSettext + offset);
|
uint8 result = getSegment(data.word(kSetdesc)).byte(kSettext + offset);
|
||||||
return result != 0;
|
return result != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1674,7 +1674,7 @@ void DreamGenContext::showIcon() {
|
||||||
panelIcons1();
|
panelIcons1();
|
||||||
zoomIcon();
|
zoomIcon();
|
||||||
} else {
|
} else {
|
||||||
Frame *tempSprites = (Frame *)segRef(data.word(kTempsprites)).ptr(0, 0);
|
Frame *tempSprites = (Frame *)getSegment(data.word(kTempsprites)).ptr(0, 0);
|
||||||
showFrame(tempSprites, 72, 2, 45, 0);
|
showFrame(tempSprites, 72, 2, 45, 0);
|
||||||
showFrame(tempSprites, 72+47, 2, 46, 0);
|
showFrame(tempSprites, 72+47, 2, 46, 0);
|
||||||
showFrame(tempSprites, 69-10, 21, 49, 0);
|
showFrame(tempSprites, 69-10, 21, 49, 0);
|
||||||
|
@ -1690,7 +1690,7 @@ void DreamGenContext::checkIfSet() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DreamGenContext::checkIfSet(uint8 x, uint8 y) {
|
bool DreamGenContext::checkIfSet(uint8 x, uint8 y) {
|
||||||
const ObjPos *setList = (const ObjPos *)segRef(data.word(kBuffers)).ptr(kSetlist, sizeof(ObjPos) * 128);
|
const ObjPos *setList = (const ObjPos *)getSegment(data.word(kBuffers)).ptr(kSetlist, sizeof(ObjPos) * 128);
|
||||||
for (size_t i = 0; i < 128; ++i) {
|
for (size_t i = 0; i < 128; ++i) {
|
||||||
const ObjPos *pos = setList + 127 - i;
|
const ObjPos *pos = setList + 127 - i;
|
||||||
if (pos->index == 0xff || !pos->contains(x,y))
|
if (pos->index == 0xff || !pos->contains(x,y))
|
||||||
|
@ -1706,7 +1706,7 @@ bool DreamGenContext::checkIfSet(uint8 x, uint8 y) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::showRyanPage() {
|
void DreamGenContext::showRyanPage() {
|
||||||
Frame *icons1 = (Frame *)segRef(data.word(kIcons1)).ptr(0, 0);
|
Frame *icons1 = (Frame *)getSegment(data.word(kIcons1)).ptr(0, 0);
|
||||||
showFrame(icons1, kInventx + 167, kInventy - 12, 12, 0);
|
showFrame(icons1, kInventx + 167, kInventy - 12, 12, 0);
|
||||||
showFrame(icons1, kInventx + 167 + 18 * data.byte(kRyanpage), kInventy - 12, 13 + data.byte(kRyanpage), 0);
|
showFrame(icons1, kInventx + 167 + 18 * data.byte(kRyanpage), kInventy - 12, 13 + data.byte(kRyanpage), 0);
|
||||||
}
|
}
|
||||||
|
@ -1857,7 +1857,7 @@ void DreamGenContext::zoomOnOff() {
|
||||||
|
|
||||||
void DreamGenContext::sortOutMap() {
|
void DreamGenContext::sortOutMap() {
|
||||||
const uint8 *src = workspace();
|
const uint8 *src = workspace();
|
||||||
uint8 *dst = (uint8 *)segRef(data.word(kMapdata)).ptr(0, 0);
|
uint8 *dst = (uint8 *)getSegment(data.word(kMapdata)).ptr(0, 0);
|
||||||
for (uint16 y = 0; y < kMaplength; ++y) {
|
for (uint16 y = 0; y < kMaplength; ++y) {
|
||||||
memcpy(dst, src, kMapwidth);
|
memcpy(dst, src, kMapwidth);
|
||||||
dst += kMapwidth;
|
dst += kMapwidth;
|
||||||
|
@ -1903,7 +1903,7 @@ void DreamGenContext::mainScreen() {
|
||||||
|
|
||||||
void DreamGenContext::showWatch() {
|
void DreamGenContext::showWatch() {
|
||||||
if (data.byte(kWatchon)) {
|
if (data.byte(kWatchon)) {
|
||||||
showFrame((Frame *)segRef(data.word(kIcons1)).ptr(0, 0), 250, 1, 6, 0);
|
showFrame((Frame *)getSegment(data.word(kIcons1)).ptr(0, 0), 250, 1, 6, 0);
|
||||||
showTime();
|
showTime();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1918,7 +1918,7 @@ void DreamGenContext::dumpWatch() {
|
||||||
void DreamGenContext::showTime() {
|
void DreamGenContext::showTime() {
|
||||||
if (data.byte(kWatchon) == 0)
|
if (data.byte(kWatchon) == 0)
|
||||||
return;
|
return;
|
||||||
Frame *charset = (Frame *)segRef(data.word(kCharset1)).ptr(0, 0);
|
Frame *charset = (Frame *)getSegment(data.word(kCharset1)).ptr(0, 0);
|
||||||
|
|
||||||
int seconds = data.byte(kSecondcount);
|
int seconds = data.byte(kSecondcount);
|
||||||
int minutes = data.byte(kMinutecount);
|
int minutes = data.byte(kMinutecount);
|
||||||
|
@ -1941,7 +1941,7 @@ void DreamGenContext::watchCount() {
|
||||||
return;
|
return;
|
||||||
++data.byte(kTimercount);
|
++data.byte(kTimercount);
|
||||||
if (data.byte(kTimercount) == 9) {
|
if (data.byte(kTimercount) == 9) {
|
||||||
showFrame((Frame *)segRef(data.word(kCharset1)).ptr(0, 0), 268+4, 21, 91*3+21, 0);
|
showFrame((Frame *)getSegment(data.word(kCharset1)).ptr(0, 0), 268+4, 21, 91*3+21, 0);
|
||||||
data.byte(kWatchdump) = 1;
|
data.byte(kWatchdump) = 1;
|
||||||
} else if (data.byte(kTimercount) == 18) {
|
} else if (data.byte(kTimercount) == 18) {
|
||||||
data.byte(kTimercount) = 0;
|
data.byte(kTimercount) = 0;
|
||||||
|
@ -1968,8 +1968,8 @@ void DreamGenContext::roomName() {
|
||||||
textIndex -= 32;
|
textIndex -= 32;
|
||||||
data.word(kLinespacing) = 7;
|
data.word(kLinespacing) = 7;
|
||||||
uint8 maxWidth = (data.byte(kWatchon) == 1) ? 120 : 160;
|
uint8 maxWidth = (data.byte(kWatchon) == 1) ? 120 : 160;
|
||||||
uint16 descOffset = segRef(data.word(kRoomdesc)).word(kIntextdat + textIndex * 2);
|
uint16 descOffset = getSegment(data.word(kRoomdesc)).word(kIntextdat + textIndex * 2);
|
||||||
const uint8 *string = segRef(data.word(kRoomdesc)).ptr(kIntext + descOffset, 0);
|
const uint8 *string = getSegment(data.word(kRoomdesc)).ptr(kIntext + descOffset, 0);
|
||||||
printDirect(string, 88, 25, maxWidth, false);
|
printDirect(string, 88, 25, maxWidth, false);
|
||||||
data.word(kLinespacing) = 10;
|
data.word(kLinespacing) = 10;
|
||||||
useCharset1();
|
useCharset1();
|
||||||
|
@ -1978,7 +1978,7 @@ void DreamGenContext::roomName() {
|
||||||
void DreamGenContext::zoomIcon() {
|
void DreamGenContext::zoomIcon() {
|
||||||
if (data.byte(kZoomon) == 0)
|
if (data.byte(kZoomon) == 0)
|
||||||
return;
|
return;
|
||||||
showFrame((Frame *)segRef(data.word(kIcons1)).ptr(0, 0), kZoomx, kZoomy-1, 8, 0);
|
showFrame((Frame *)getSegment(data.word(kIcons1)).ptr(0, 0), kZoomx, kZoomy-1, 8, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::loadRoom() {
|
void DreamGenContext::loadRoom() {
|
||||||
|
@ -2025,21 +2025,21 @@ void DreamGenContext::readSetData() {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//engine->openFile("DREAMWEB.VOL");
|
//engine->openFile("DREAMWEB.VOL");
|
||||||
//uint8 *volumeTab = segRef(data.word(kSoundbuffer)).ptr(16384, 0);
|
//uint8 *volumeTab = getSegment(data.word(kSoundbuffer)).ptr(16384, 0);
|
||||||
//engine->readFromFile(volumeTab, 2048-256);
|
//engine->readFromFile(volumeTab, 2048-256);
|
||||||
//engine->closeFile();
|
//engine->closeFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
Frame * DreamGenContext::tempGraphics() {
|
Frame * DreamGenContext::tempGraphics() {
|
||||||
return (Frame *)segRef(data.word(kTempgraphics)).ptr(0, 0);
|
return (Frame *)getSegment(data.word(kTempgraphics)).ptr(0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
Frame * DreamGenContext::tempGraphics2() {
|
Frame * DreamGenContext::tempGraphics2() {
|
||||||
return (Frame *)segRef(data.word(kTempgraphics2)).ptr(0, 0);
|
return (Frame *)getSegment(data.word(kTempgraphics2)).ptr(0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
Frame * DreamGenContext::tempGraphics3() {
|
Frame * DreamGenContext::tempGraphics3() {
|
||||||
return (Frame *)segRef(data.word(kTempgraphics3)).ptr(0, 0);
|
return (Frame *)getSegment(data.word(kTempgraphics3)).ptr(0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::playChannel0(uint8 index, uint8 repeat) {
|
void DreamGenContext::playChannel0(uint8 index, uint8 repeat) {
|
||||||
|
@ -2049,10 +2049,10 @@ void DreamGenContext::playChannel0(uint8 index, uint8 repeat) {
|
||||||
data.byte(kCh0playing) = index;
|
data.byte(kCh0playing) = index;
|
||||||
Sound *soundBank;
|
Sound *soundBank;
|
||||||
if (index >= 12) {
|
if (index >= 12) {
|
||||||
soundBank = (Sound *)segRef(data.word(kSounddata2)).ptr(0, 0);
|
soundBank = (Sound *)getSegment(data.word(kSounddata2)).ptr(0, 0);
|
||||||
index -= 12;
|
index -= 12;
|
||||||
} else
|
} else
|
||||||
soundBank = (Sound *)segRef(data.word(kSounddata)).ptr(0, 0);
|
soundBank = (Sound *)getSegment(data.word(kSounddata)).ptr(0, 0);
|
||||||
|
|
||||||
data.byte(kCh0repeat) = repeat;
|
data.byte(kCh0repeat) = repeat;
|
||||||
data.word(kCh0emmpage) = soundBank[index].emmPage;
|
data.word(kCh0emmpage) = soundBank[index].emmPage;
|
||||||
|
@ -2078,10 +2078,10 @@ void DreamGenContext::playChannel1(uint8 index) {
|
||||||
data.byte(kCh1playing) = index;
|
data.byte(kCh1playing) = index;
|
||||||
Sound *soundBank;
|
Sound *soundBank;
|
||||||
if (index >= 12) {
|
if (index >= 12) {
|
||||||
soundBank = (Sound *)segRef(data.word(kSounddata2)).ptr(0, 0);
|
soundBank = (Sound *)getSegment(data.word(kSounddata2)).ptr(0, 0);
|
||||||
index -= 12;
|
index -= 12;
|
||||||
} else
|
} else
|
||||||
soundBank = (Sound *)segRef(data.word(kSounddata)).ptr(0, 0);
|
soundBank = (Sound *)getSegment(data.word(kSounddata)).ptr(0, 0);
|
||||||
|
|
||||||
data.word(kCh1emmpage) = soundBank[index].emmPage;
|
data.word(kCh1emmpage) = soundBank[index].emmPage;
|
||||||
data.word(kCh1offset) = soundBank[index].offset();
|
data.word(kCh1offset) = soundBank[index].offset();
|
||||||
|
@ -2134,8 +2134,8 @@ void DreamGenContext::doLook() {
|
||||||
data.byte(kCommandtype) = 255;
|
data.byte(kCommandtype) = 255;
|
||||||
dumpTextLine();
|
dumpTextLine();
|
||||||
uint8 index = data.byte(kRoomnum) & 31;
|
uint8 index = data.byte(kRoomnum) & 31;
|
||||||
uint16 offset = segRef(data.word(kRoomdesc)).word(kIntextdat + index * 2);
|
uint16 offset = getSegment(data.word(kRoomdesc)).word(kIntextdat + index * 2);
|
||||||
uint8 *string = segRef(data.word(kRoomdesc)).ptr(kIntext, 0) + offset;
|
uint8 *string = getSegment(data.word(kRoomdesc)).ptr(kIntext, 0) + offset;
|
||||||
findNextColon(&string);
|
findNextColon(&string);
|
||||||
uint16 x;
|
uint16 x;
|
||||||
if (data.byte(kReallocation) < 50)
|
if (data.byte(kReallocation) < 50)
|
||||||
|
@ -2341,8 +2341,8 @@ void DreamGenContext::setLocation() {
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint8 *DreamGenContext::getTextInFile1(uint16 index) {
|
const uint8 *DreamGenContext::getTextInFile1(uint16 index) {
|
||||||
uint16 offset = segRef(data.word(kTextfile1)).word(index * 2) + kTextstart;
|
uint16 offset = getSegment(data.word(kTextfile1)).word(index * 2) + kTextstart;
|
||||||
const uint8 *string = segRef(data.word(kTextfile1)).ptr(offset, 0);
|
const uint8 *string = getSegment(data.word(kTextfile1)).ptr(offset, 0);
|
||||||
return string;
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
namespace DreamGen {
|
namespace DreamGen {
|
||||||
|
|
||||||
uint16 DreamGenContext::getPersFrame(uint8 index) {
|
uint16 DreamGenContext::getPersFrame(uint8 index) {
|
||||||
return segRef(data.word(kPeople)).word(kPersonframes + index * 2);
|
return getSegment(data.word(kPeople)).word(kPersonframes + index * 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::convIcons() {
|
void DreamGenContext::convIcons() {
|
||||||
|
|
|
@ -25,15 +25,15 @@
|
||||||
namespace DreamGen {
|
namespace DreamGen {
|
||||||
|
|
||||||
uint8 *DreamGenContext::mainPalette() {
|
uint8 *DreamGenContext::mainPalette() {
|
||||||
return segRef(data.word(kBuffers)).ptr(kMaingamepal, 256*3);
|
return getSegment(data.word(kBuffers)).ptr(kMaingamepal, 256*3);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8 *DreamGenContext::startPalette() {
|
uint8 *DreamGenContext::startPalette() {
|
||||||
return segRef(data.word(kBuffers)).ptr(kStartpal, 256*3);
|
return getSegment(data.word(kBuffers)).ptr(kStartpal, 256*3);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8 *DreamGenContext::endPalette() {
|
uint8 *DreamGenContext::endPalette() {
|
||||||
return segRef(data.word(kBuffers)).ptr(kEndpal, 256*3);
|
return getSegment(data.word(kBuffers)).ptr(kEndpal, 256*3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::clearStartPal() {
|
void DreamGenContext::clearStartPal() {
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
namespace DreamGen {
|
namespace DreamGen {
|
||||||
|
|
||||||
uint8 *DreamGenContext::workspace() {
|
uint8 *DreamGenContext::workspace() {
|
||||||
uint8 *result = segRef(data.word(kWorkspace)).ptr(0, 0);
|
uint8 *result = getSegment(data.word(kWorkspace)).ptr(0, 0);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -431,11 +431,11 @@ void DreamGenContext::zoom() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::panelToMap() {
|
void DreamGenContext::panelToMap() {
|
||||||
multiGet(segRef(data.word(kMapstore)).ptr(0, 0), data.word(kMapxstart) + data.word(kMapadx), data.word(kMapystart) + data.word(kMapady), data.byte(kMapxsize), data.byte(kMapysize));
|
multiGet(getSegment(data.word(kMapstore)).ptr(0, 0), data.word(kMapxstart) + data.word(kMapadx), data.word(kMapystart) + data.word(kMapady), data.byte(kMapxsize), data.byte(kMapysize));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::mapToPanel() {
|
void DreamGenContext::mapToPanel() {
|
||||||
multiPut(segRef(data.word(kMapstore)).ptr(0, 0), data.word(kMapxstart) + data.word(kMapadx), data.word(kMapystart) + data.word(kMapady), data.byte(kMapxsize), data.byte(kMapysize));
|
multiPut(getSegment(data.word(kMapstore)).ptr(0, 0), data.word(kMapxstart) + data.word(kMapadx), data.word(kMapystart) + data.word(kMapady), data.byte(kMapxsize), data.byte(kMapysize));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::dumpMap() {
|
void DreamGenContext::dumpMap() {
|
||||||
|
@ -443,17 +443,17 @@ void DreamGenContext::dumpMap() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::transferInv() {
|
void DreamGenContext::transferInv() {
|
||||||
const Frame *freeFrames = (const Frame *)segRef(data.word(kFreeframes)).ptr(kFrframedata, 0);
|
const Frame *freeFrames = (const Frame *)getSegment(data.word(kFreeframes)).ptr(kFrframedata, 0);
|
||||||
const Frame *freeFrame = freeFrames + (3 * data.byte(kItemtotran) + 1);
|
const Frame *freeFrame = freeFrames + (3 * data.byte(kItemtotran) + 1);
|
||||||
Frame *exFrames = (Frame *)segRef(data.word(kExtras)).ptr(kExframedata, 0);
|
Frame *exFrames = (Frame *)getSegment(data.word(kExtras)).ptr(kExframedata, 0);
|
||||||
Frame *exFrame = exFrames + (3 * data.byte(kExpos) + 1);
|
Frame *exFrame = exFrames + (3 * data.byte(kExpos) + 1);
|
||||||
exFrame->width = freeFrame->width;
|
exFrame->width = freeFrame->width;
|
||||||
exFrame->height = freeFrame->height;
|
exFrame->height = freeFrame->height;
|
||||||
exFrame->x = freeFrame->x;
|
exFrame->x = freeFrame->x;
|
||||||
exFrame->y = freeFrame->y;
|
exFrame->y = freeFrame->y;
|
||||||
uint16 byteCount = freeFrame->width * freeFrame->height;
|
uint16 byteCount = freeFrame->width * freeFrame->height;
|
||||||
const uint8 *src = segRef(data.word(kFreeframes)).ptr(kFrframes + freeFrame->ptr(), byteCount);
|
const uint8 *src = getSegment(data.word(kFreeframes)).ptr(kFrframes + freeFrame->ptr(), byteCount);
|
||||||
uint8 *dst = segRef(data.word(kExtras)).ptr(kExframes + data.word(kExframepos), byteCount);
|
uint8 *dst = getSegment(data.word(kExtras)).ptr(kExframes + data.word(kExframepos), byteCount);
|
||||||
memcpy(dst, src, byteCount);
|
memcpy(dst, src, byteCount);
|
||||||
exFrame->setPtr(data.word(kExframepos));
|
exFrame->setPtr(data.word(kExframepos));
|
||||||
data.word(kExframepos) += byteCount;
|
data.word(kExframepos) += byteCount;
|
||||||
|
@ -463,8 +463,8 @@ bool DreamGenContext::pixelCheckSet(const ObjPos *pos, uint8 x, uint8 y) {
|
||||||
x -= pos->xMin;
|
x -= pos->xMin;
|
||||||
y -= pos->yMin;
|
y -= pos->yMin;
|
||||||
SetObject *setObject = getSetAd(pos->index);
|
SetObject *setObject = getSetAd(pos->index);
|
||||||
Frame *frame = (Frame *)segRef(data.word(kSetframes)).ptr(kFramedata, 0) + setObject->index;
|
Frame *frame = (Frame *)getSegment(data.word(kSetframes)).ptr(kFramedata, 0) + setObject->index;
|
||||||
const uint8 *ptr = segRef(data.word(kSetframes)).ptr(kFrames, 0) + frame->ptr() + y * frame->width + x;
|
const uint8 *ptr = getSegment(data.word(kSetframes)).ptr(kFrames, 0) + frame->ptr() + y * frame->width + x;
|
||||||
return *ptr != 0;
|
return *ptr != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -477,7 +477,7 @@ void DreamGenContext::loadPalFromIFF() {
|
||||||
readFromFile();
|
readFromFile();
|
||||||
closeFile();
|
closeFile();
|
||||||
|
|
||||||
const uint8 *src = segRef(data.word(kMapstore)).ptr(0x30, 0);
|
const uint8 *src = getSegment(data.word(kMapstore)).ptr(0x30, 0);
|
||||||
uint8 *dst = mainPalette();
|
uint8 *dst = mainPalette();
|
||||||
for (size_t i = 0; i < 256*3; ++i) {
|
for (size_t i = 0; i < 256*3; ++i) {
|
||||||
uint8 c = src[i] / 4;
|
uint8 c = src[i] / 4;
|
||||||
|
@ -493,7 +493,7 @@ void DreamGenContext::loadPalFromIFF() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DreamGenContext::createPanel() {
|
void DreamGenContext::createPanel() {
|
||||||
Frame *icons = (Frame *)segRef(data.word(kIcons2)).ptr(0, 0);
|
Frame *icons = (Frame *)getSegment(data.word(kIcons2)).ptr(0, 0);
|
||||||
showFrame(icons, 0, 8, 0, 2);
|
showFrame(icons, 0, 8, 0, 2);
|
||||||
showFrame(icons, 160, 8, 0, 2);
|
showFrame(icons, 160, 8, 0, 2);
|
||||||
showFrame(icons, 0, 104, 0, 2);
|
showFrame(icons, 0, 104, 0, 2);
|
||||||
|
@ -502,7 +502,7 @@ void DreamGenContext::createPanel() {
|
||||||
|
|
||||||
void DreamGenContext::createPanel2() {
|
void DreamGenContext::createPanel2() {
|
||||||
createPanel();
|
createPanel();
|
||||||
Frame *icons = (Frame *)segRef(data.word(kIcons2)).ptr(0, 0);
|
Frame *icons = (Frame *)getSegment(data.word(kIcons2)).ptr(0, 0);
|
||||||
showFrame(icons, 0, 0, 5, 2);
|
showFrame(icons, 0, 0, 5, 2);
|
||||||
showFrame(icons, 160, 0, 5, 2);
|
showFrame(icons, 160, 0, 5, 2);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue