=====================
*/
+//#define MMSMSORTNEWTYPE
+
void MM_ShowMemory(global_game_variables_t *gvar)
{
mmblocktype far *scan;
write(gvar->handle.debughandle,scratch,strlen(scratch));
Quit (gvar, "MM_ShowMemory: Memory block order currupted!");
}
+#ifndef MMSMSORTNEWTYPE
end = scan->length-1;
- //end = scan->start+(scan->length)-1;
+#else
+ end = scan->start+(scan->length)-1;
+#endif
y = scan->start/320;
x = scan->start%320;
VW_Hlin(x,x+end,y,color, &gvar->video.ofs);
strcat(scratch0, "+");
}
//++==++==optional strcat(scratch0, AARESET); strcat(scratch0, AAGREY); strcat(scratch0,"_");
+#ifdef MMSMSORTNEWTYPE
if (scan->next && scan->next->start > end+1)
- //if (scan->next && scan->next->start >= end+1)
+#else
+ if (scan->next && scan->next->start >= end+1)
+#endif
{
VW_Hlin(x+end+1,x+(scan->next->start-scan->start),y,0, &gvar->video.ofs); // black = free
strcat(scratch0, AARESET);
//printf("w=%u start=%04x next=%04x end=%lu\n", w/80, scan->start, (scan->next->start), end+1);
//printf("==================\n");
strcat(scratch0, "\n");
- }/*else {//if(scan->next->start <= scan->start){
+ }
+#if 0
+ else {//if(scan->next->start <= scan->start){
scan->next->start=scan->start+0x1000;
strcat(scratch0, AARESET);
strcat(scratch0, "\n");
printf("w=%x start=%x next=%x end=%u\n", w, scan->start, (scan->next->start), end+1);
printf("================\n");
getch();
- }*/
+ }
+#endif
strcat(scratch0, AARESET);
//strcat(scratch0,"\n");
strcat(scratch,"Seg:");
#include "src/lib/16_rf.h"\r
#pragma hdrstop\r
\r
+struct glob_game_vars *gvar;\r
+static word far* clockw= (word far*) 0x046C; /* 18.2hz clock */\r
+\r
/*\r
=============================================================================\r
\r
displayofs = screenstart[screenpage];\r
bufferofs = screenstart[otherpage];\r
masterofs = screenstart[2];\r
- VW_SetScreen (displayofs,0);\r
+ VL_SetScreen (displayofs,0);\r
}\r
else\r
{\r
// make a lookup table for the maps left edge\r
//\r
if (mapheight > MAXMAPHEIGHT)\r
- Quit ("RF_NewMap: Map too tall!");\r
+ Quit (gvar, "RF_NewMap: Map too tall!");\r
spot = 0;\r
for (i=0;i<mapheight;i++)\r
{\r
// new chain of animating tiles\r
\r
if (i>=MAXANIMTYPES)\r
- Quit ("RF_MarkTileGraphics: Too many unique animated tiles!");\r
+ Quit (gvar, "RF_MarkTileGraphics: Too many unique animated tiles!");\r
allanims[i].current = tile;\r
allanims[i].count = tinf[SPEED+tile];\r
\r
CA_MarkGrChunk(STARTTILE16+next);\r
next += (signed char)(tinf[ANIM+next]);\r
if (++anims > 20)\r
- Quit ("MarkTileGraphics: Unending animation!");\r
+ Quit (gvar, "MarkTileGraphics: Unending animation!");\r
}\r
\r
}\r
// new chain of animating tiles\r
\r
if (i>=MAXANIMTYPES)\r
- Quit ("RF_MarkTileGraphics: Too many unique animated tiles!");\r
+ Quit (gvar, "RF_MarkTileGraphics: Too many unique animated tiles!");\r
allanims[i].current = tilehigh;\r
allanims[i].count = tinf[MSPEED+tile];\r
\r
CA_MarkGrChunk(STARTTILE16M+next);\r
next += (signed char)(tinf[MANIM+next]);\r
if (++anims > 20)\r
- Quit ("MarkTileGraphics: Unending animation!");\r
+ Quit (gvar, "MarkTileGraphics: Unending animation!");\r
}\r
\r
}\r
if (tinf[ANIM+tile] && tinf[SPEED+tile])\r
{\r
if (!animfreeptr)\r
- Quit ("RF_CheckForAnimTile: No free spots in tilearray!");\r
+ Quit (gvar, "RF_CheckForAnimTile: No free spots in tilearray!");\r
anim = animfreeptr;\r
animfreeptr = animfreeptr->nexttile;\r
next = animhead; // stick it at the start of the list\r
if (tinf[MANIM+tile] && tinf[MSPEED+tile])\r
{\r
if (!animfreeptr)\r
- Quit ("RF_CheckForAnimTile: No free spots in tilearray!");\r
+ Quit (gvar, "RF_CheckForAnimTile: No free spots in tilearray!");\r
anim = animfreeptr;\r
animfreeptr = animfreeptr->nexttile;\r
next = animhead; // stick it at the start of the list\r
y = current->y-originytile;\r
\r
if (x>=PORTTILESWIDE || y>=PORTTILESHIGH)\r
- Quit ("RFL_AnimateTiles: Out of bounds!");\r
+ Quit (gvar, "RFL_AnimateTiles: Out of bounds!");\r
\r
updateofs = uwidthtable[y] + x;\r
RFL_NewTile(updateofs); // puts "1"s in both pages\r
{\r
hscrolledge[hscrollblocks] = y;\r
if (hscrollblocks++ == MAXSCROLLEDGES)\r
- Quit ("RF_SetScrollBlock: Too many horizontal scroll blocks");\r
+ Quit (gvar, "RF_SetScrollBlock: Too many horizontal scroll blocks");\r
}\r
else\r
{\r
vscrolledge[vscrollblocks] = x;\r
if (vscrollblocks++ == MAXSCROLLEDGES)\r
- Quit ("RF_SetScrollBlock: Too many vertical scroll blocks");\r
+ Quit (gvar, "RF_SetScrollBlock: Too many vertical scroll blocks");\r
}\r
}\r
\r
count = PORTTILESHIGH;\r
break;\r
default:\r
- Quit ("RFL_NewRow: Bad dir!");\r
+ Quit (gvar, "RFL_NewRow: Bad dir!");\r
}\r
\r
while (count--)\r
=\r
=====================\r
*/\r
-\r
+/*++++\r
void RF_MapToMap (unsigned srcx, unsigned srcy,\r
unsigned destx, unsigned desty,\r
unsigned width, unsigned height)\r
}\r
}\r
}\r
-\r
+*/\r
//===========================================================================\r
\r
\r
=\r
=====================\r
*/\r
-\r
+/*++++\r
void RF_MemToMap (unsigned far *source, unsigned plane,\r
unsigned destx, unsigned desty,\r
unsigned width, unsigned height)\r
RFL_CheckForAnimTile (destx+x,desty+y);\r
}\r
}\r
-}\r
+}*/\r
\r
//===========================================================================\r
\r
void RF_CalcTics (void)\r
{\r
long newtime,oldtimecount;\r
+ word TimeCount = *clockw;\r
\r
//\r
// calculate tics since last refresh for adaptive timing\r
oldscreen = screenstart[i] - screenmove;\r
newscreen = oldscreen + screencopy;\r
screenstart[i] = newscreen + screenmove;\r
- VW_ScreenToScreen (oldscreen,newscreen,\r
+//++++ VW_ScreenToScreen (oldscreen,newscreen,\r
PORTTILESWIDE*2,PORTTILESHIGH*16);\r
\r
if (i==screenpage)\r
- VW_SetScreen(newscreen+oldpanadjust,oldpanx & xpanmask);\r
+ VL_SetScreen(newscreen+oldpanadjust,oldpanx & xpanmask);\r
}\r
}\r
bufferofs = screenstart[otherpage];\r
// this is a brand new sprite, so allocate a block from the array\r
\r
if (!spritefreeptr)\r
- Quit ("RF_PlaceSprite: No free spots in spritearray!");\r
+ Quit (gvar, "RF_PlaceSprite: No free spots in spritearray!");\r
\r
sprite = spritefreeptr;\r
spritefreeptr = spritefreeptr->nextsprite;\r
// erase the block by copying from the master screen\r
//\r
pos = ylookup[block->screeny]+block->screenx;\r
- VW_ScreenToScreen (masterofs+pos,bufferofs+pos,\r
+//++++ VW_ScreenToScreen (masterofs+pos,bufferofs+pos,\r
block->width,block->height);\r
\r
//\r
switch (sprite->draw)\r
{\r
case spritedraw:\r
- VW_MaskBlock(grsegs[sprite->grseg], sourceofs,\r
+//++++ VW_MaskBlock(grsegs[sprite->grseg], sourceofs,\r
dest,sprite->width,height,sprite->planesize);\r
break;\r
\r
//\r
// display the changed screen\r
//\r
- VW_SetScreen(bufferofs+panadjust,panx & xpanmask);\r
+ VL_SetScreen(bufferofs+panadjust,panx & xpanmask);\r
\r
//\r
// prepare for next refresh\r
// this is a brand new sprite, so allocate a block from the array\r
\r
if (!spritefreeptr)\r
- Quit ("RF_PlaceSprite: No free spots in spritearray!");\r
+ Quit (gvar, "RF_PlaceSprite: No free spots in spritearray!");\r
\r
sprite = spritefreeptr;\r
spritefreeptr = spritefreeptr->nextsprite;\r
pos = ylookup[block->screeny]+block->screenx;\r
block->width = (block->width + (pos&1) + 1)& ~1;\r
pos &= ~1; // make sure a word copy gets used\r
- VW_ScreenToScreen (masterofs+pos,bufferofs+pos,\r
+//++++ VW_ScreenToScreen (masterofs+pos,bufferofs+pos,\r
block->width,block->height);\r
\r
//\r