diff options
-rw-r--r-- | engines/lab/allocroom.cpp | 42 | ||||
-rw-r--r-- | engines/lab/mouse.cpp | 136 |
2 files changed, 23 insertions, 155 deletions
diff --git a/engines/lab/allocroom.cpp b/engines/lab/allocroom.cpp index 8ca69effbc..339ae0b401 100644 --- a/engines/lab/allocroom.cpp +++ b/engines/lab/allocroom.cpp @@ -176,45 +176,45 @@ static void *getCurMem(uint16 Size) { /* Grabs a chunk of memory from the room buffer, and manages it for a */ /* particular room. */ /*****************************************************************************/ -void allocRoom(void **Ptr, uint16 Size, uint16 RoomNum) { - uint16 RMarker; +void allocRoom(void **Ptr, uint16 size, uint16 roomNum) { + uint16 rMarker; bool doit = true; - if (1 & Size) /* Memory is required to be even aligned */ - Size++; + if (1 & size) /* Memory is required to be even aligned */ + size++; - RMarker = 0; + rMarker = 0; - while ((RMarker < MAXMARKERS) && doit) { - if (RoomMarkers[RMarker].RoomNum == RoomNum) + while ((rMarker < MAXMARKERS) && doit) { + if (RoomMarkers[rMarker].RoomNum == roomNum) doit = false; else - RMarker++; + rMarker++; } - if (RMarker >= MAXMARKERS) { - RMarker = CurMarker; + if (rMarker >= MAXMARKERS) { + rMarker = CurMarker; CurMarker++; if (CurMarker >= MAXMARKERS) CurMarker = 0; - freeRoom(RMarker); - RoomMarkers[RMarker].RoomNum = RoomNum; + freeRoom(rMarker); + RoomMarkers[rMarker].RoomNum = roomNum; } - *Ptr = getCurMem(Size); + *Ptr = getCurMem(size); - if (RoomMarkers[RMarker].Start0 == NULL) { - RoomMarkers[RMarker].Start0 = *Ptr; - RoomMarkers[RMarker].End0 = (void *)(((char *)(*Ptr)) + Size - 1); - } else if (*Ptr < RoomMarkers[RMarker].Start0) { - if (RoomMarkers[RMarker].Start1 == NULL) - RoomMarkers[RMarker].Start1 = *Ptr; + if (RoomMarkers[rMarker].Start0 == NULL) { + RoomMarkers[rMarker].Start0 = *Ptr; + RoomMarkers[rMarker].End0 = (void *)(((char *)(*Ptr)) + size - 1); + } else if (*Ptr < RoomMarkers[rMarker].Start0) { + if (RoomMarkers[rMarker].Start1 == NULL) + RoomMarkers[rMarker].Start1 = *Ptr; - RoomMarkers[RMarker].End1 = (void *)(((char *)(*Ptr)) + Size - 1); + RoomMarkers[rMarker].End1 = (void *)(((char *)(*Ptr)) + size - 1); } else - RoomMarkers[RMarker].End0 = (void *)(((char *)(*Ptr)) + Size - 1); + RoomMarkers[rMarker].End0 = (void *)(((char *)(*Ptr)) + size - 1); } } // End of namespace Lab diff --git a/engines/lab/mouse.cpp b/engines/lab/mouse.cpp index ff2474ed38..3d83a0d6ae 100644 --- a/engines/lab/mouse.cpp +++ b/engines/lab/mouse.cpp @@ -41,28 +41,6 @@ extern uint32 VGAScreenWidth, VGAScreenHeight; void mouseHideXY(void); -#if defined(DOSCODE) -/*****************************************************************************/ -/* Standard mouse calling template. */ -/*****************************************************************************/ -static void mouse(int16 *m1, int16 *m2, int16 *m3, int16 *m4) { - union REGS reg; - - reg.w.ax = *m1; - reg.w.bx = *m2; - reg.w.cx = *m3; - reg.w.dx = *m4; - - int386(0x33, ®, ®); - - *m1 = reg.w.ax; - *m2 = reg.w.bx; - *m3 = reg.w.cx; - *m4 = reg.w.dx; -} -#endif - - static bool LeftClick = false; static uint16 leftx = 0, lefty = 0; static bool RightClick = false; @@ -155,16 +133,10 @@ void attachGadgetList(struct Gadget *GadList) { static void drawMouse(void) { if (BackImage.ImageData) { -#if !defined(DOSCODE) - if (backx <= 640 - BackImage.Width && backy <= 480 - BackImage.Height) -#endif drawMaskImage(&MouseImage, backx, backy); } else { -#if !defined(DOSCODE) - if (CurMouseX <= 640 - MouseImage.Width && CurMouseY <= 480 - MouseImage.Height) -#endif drawMaskImage(&MouseImage, CurMouseX, CurMouseY); } } @@ -179,19 +151,13 @@ static void getBackMouse(void) { backx = CurMouseX; backy = CurMouseY; -#if !defined(DOSCODE) - - if (/* backx >= 0 && backy >= 0 && */ backx <= 640 - BackImage.Width && backy <= 480 - BackImage.Height) -#endif + if (backx <= 640 - BackImage.Width && backy <= 480 - BackImage.Height) readScreenImage(&BackImage, backx, backy); } static void restoreBackMouse(void) { if (BackImage.ImageData) { -#if !defined(DOSCODE) - - if (/* backx >= 0 && backy >= 0 && */ backx <= 640 - BackImage.Width && backy <= 480 - BackImage.Height) -#endif + if (backx <= 640 - BackImage.Width && backy <= 480 - BackImage.Height) drawImage(&BackImage, backx, backy); BackImage.ImageData = NULL; @@ -202,14 +168,7 @@ static void restoreBackMouse(void) { static struct Gadget *TempGad; -#if defined(DOSCODE) -#pragma off (check_stack) -void _loadds far mouse_handler(int32 max, int32 mcx, int32 mdx) { -#pragma aux mouse_handler parm [EAX] [ECX] [EDX] -#else void mouse_handler(int32 max, int32 mcx, int32 mdx) { -#endif - if (!IsHiRes) mcx /= 2; @@ -257,9 +216,7 @@ void mouse_handler(int32 max, int32 mcx, int32 mdx) { void updateMouse(void) { uint16 counter; -#if !defined(DOSCODE) bool doUpdateDisplay = false; -#endif if (drawmouse && !MouseHidden) { QuitMouseHandler = true; @@ -268,9 +225,7 @@ void updateMouse(void) { getBackMouse(); drawMouse(); QuitMouseHandler = false; -#if !defined(DOSCODE) doUpdateDisplay = true; -#endif } if (gadhit) { @@ -286,18 +241,12 @@ void updateMouse(void) { mouseHide(); drawImage(hitgad->Im, hitgad->x, hitgad->y); mouseShow(); -#if !defined(DOSCODE) doUpdateDisplay = true; -#endif QuitMouseHandler = false; } -#if !defined(DOSCODE) - if (doUpdateDisplay) WSDL_UpdateScreen(); - -#endif } @@ -307,52 +256,6 @@ void updateMouse(void) { /* Initializes the mouse. */ /*****************************************************************************/ bool initMouse(void) { -#if defined(DOSCODE) - void (interrupt far * int_handler)(); - int32 vector; - byte firstbyte; - struct SREGS sregs; - union REGS inregs, outregs; - int (far * function_ptr)(); - int16 m1, m2, m3, m4; - - segread(&sregs); - - /* Determine mouse-driver interrupt address */ - int_handler = _dos_getvect(0x33); /* Get interrupt vector */ - firstbyte = *(byte far *) int_handler; /* Get first instruction of interrupt */ - vector = (int32) int_handler; - - if ((vector == 0L) || (firstbyte == 0xcf)) { /* Vector should not be zero */ - /* First instruction should not be iret */ - return false; - } - - m1 = 0; - mouse(&m1, &m2, &m3, &m4); - - if (m1 != -1) - return false; - - m1 = 0x0f; - m3 = 3; - m4 = 10; - mouse(&m1, &m2, &m3, &m4); - - m1 = 0x07; - m3 = 0; - m4 = VGAScreenWidth - MouseImageWidth; - - if (!IsHiRes) m4 *= 2; - - mouse(&m1, &m2, &m3, &m4); - - m1 = 0x08; - m3 = 0; - m4 = VGAScreenHeight - MouseImageHeight; - mouse(&m1, &m2, &m3, &m4); -#endif - BackImage.ImageData = NULL; MouseImage.ImageData = MouseData; MouseImage.Width = MouseImageWidth; @@ -360,26 +263,6 @@ bool initMouse(void) { mouseMove(0, 0); -#if defined(DOSCODE) - - if (IsHiRes) { - m1 = 0x0f; - m3 = 0x03; - m4 = 0x04; - mouse(&m1, &m2, &m3, &m4); - } - - inregs.w.ax = 0xc; - inregs.w.cx = 0x01 + 0x02 + 0x08; /* mouse move, left and right mouse clicks */ - function_ptr = mouse_handler; - inregs.x.edx = FP_OFF(function_ptr); - sregs.es = FP_SEG(function_ptr); - int386x(0x33, &inregs, &outregs, &sregs); - - /* mouse reset and status */ - return mouseReset(); -#endif - return true; } @@ -389,14 +272,7 @@ bool initMouse(void) { /* Resets the mouse. */ /*****************************************************************************/ bool mouseReset(void) { -#if defined(DOSCODE) - int16 m1 = 0, dum; - - mouse(&m1, &dum, &dum, &dum); - return (m1 == -1); -#else return true; -#endif } @@ -430,9 +306,7 @@ void mouseShowXY(uint16 MouseX, uint16 MouseY) { CurMouseY = MouseY; getBackMouse(); drawMouse(); -#if !defined(DOSCODE) WSDL_UpdateScreen(); -#endif MouseHidden = false; } @@ -504,10 +378,6 @@ void mouseXY(uint16 *x, uint16 *y) { /* Moves the mouse to new co-ordinates. */ /*****************************************************************************/ void mouseMove(uint16 x, uint16 y) { -#if defined(DOSCODE) - int16 m1 = 4, dum; -#endif - if (!IsHiRes) x *= 2; @@ -521,9 +391,7 @@ void mouseMove(uint16 x, uint16 y) { getBackMouse(); drawMouse(); VGARestorePage(); -#if !defined(DOSCODE) WSDL_UpdateScreen(); -#endif QuitMouseHandler = false; } } |