DREAMWEB: 'calcmapad' ported to C++

This commit is contained in:
Bertrand Augereau
2011-08-18 18:36:15 +02:00
parent efe76ac494
commit 1dff2ebe8e
5 changed files with 11 additions and 30 deletions
+1
View File
@@ -124,6 +124,7 @@ generator = cpp(context, "DreamGen", blacklist = [
'getxad',
'getyad',
'getmapad',
'calcmapad',
'calcfrframe',
'finalframe',
'commandonly',
+8
View File
@@ -228,5 +228,13 @@ void DreamGenContext::getdimension(uint8 *mapXstart, uint8 *mapYstart, uint8 *ma
data.byte(kMapysize) = *mapYsize << 4;
}
void DreamGenContext::calcmapad() {
uint8 mapXstart, mapYstart;
uint8 mapXsize, mapYsize;
getdimension(&mapXstart, &mapYstart, &mapXsize, &mapYsize);
data.word(kMapadx) = data.word(kMapoffsetx) - 8 * (mapXsize + 2 * mapXstart - 11);
data.word(kMapady) = data.word(kMapoffsety) - 8 * (mapYsize + 2 * mapYstart - 10);
}
} /*namespace dreamgen */
-28
View File
@@ -6401,33 +6401,6 @@ void DreamGenContext::drawfloor() {
es = pop();
}
void DreamGenContext::calcmapad() {
STACK_CHECK;
getdimension();
push(cx);
push(dx);
al = 11;
_sub(al, dl);
_sub(al, cl);
_sub(al, cl);
ax.cbw();
bx = 8;
_mul(bx);
_add(ax, data.word(kMapoffsetx));
data.word(kMapadx) = ax;
dx = pop();
cx = pop();
al = 10;
_sub(al, dh);
_sub(al, ch);
_sub(al, ch);
ax.cbw();
bx = 8;
_mul(bx);
_add(ax, data.word(kMapoffsety));
data.word(kMapady) = ax;
}
void DreamGenContext::drawflags() {
STACK_CHECK;
es = data.word(kBuffers);
@@ -18651,7 +18624,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {
case addr_deleteextext: deleteextext(); break;
case addr_blockget: blockget(); break;
case addr_drawfloor: drawfloor(); break;
case addr_calcmapad: calcmapad(); break;
case addr_drawflags: drawflags(); break;
case addr_showallfree: showallfree(); break;
case addr_showallex: showallex(); break;
+1 -2
View File
@@ -480,7 +480,6 @@ public:
static const uint16 addr_showallex = 0xc450;
static const uint16 addr_showallfree = 0xc44c;
static const uint16 addr_drawflags = 0xc43c;
static const uint16 addr_calcmapad = 0xc42c;
static const uint16 addr_drawfloor = 0xc428;
static const uint16 addr_blockget = 0xc424;
static const uint16 addr_deleteextext = 0xc420;
@@ -1586,7 +1585,7 @@ public:
void clearpalette();
void cantdrop();
void maptopanel();
void calcmapad();
//void calcmapad();
void getridofall();
void copper();
void folderhints();
+1
View File
@@ -137,6 +137,7 @@
void getdimension();
void getdimension(uint8 *mapXstart, uint8 *mapYstart, uint8 *mapXsize, uint8 *mapYsize);
void getmapad();
void calcmapad();
uint8 getmapad(const uint8 *setData);
uint8 getxad(const uint8 *setData, uint8 *result);
uint8 getyad(const uint8 *setData, uint8 *result);