diff --git a/Source/_asm.cpp b/Source/_asm.cpp deleted file mode 100644 index e9e16e89a..000000000 --- a/Source/_asm.cpp +++ /dev/null @@ -1,121 +0,0 @@ -static __inline void asm_cel_light_edge(unsigned char w, BYTE *tbl, BYTE **dst, BYTE **src); -static __inline void asm_cel_light_square(unsigned char w, BYTE *tbl, BYTE **dst, BYTE **src); -static __inline void asm_trans_light_cel_0_2(unsigned char w, BYTE *tbl, BYTE **dst, BYTE **src); -static __inline void asm_trans_light_edge_0_2(unsigned char w, BYTE *tbl, BYTE **dst, BYTE **src); -static __inline void asm_trans_light_square_0_2(unsigned char w, BYTE *tbl, BYTE **dst, BYTE **src); -static __inline void asm_trans_light_cel_1_3(unsigned char w, BYTE *tbl, BYTE **dst, BYTE **src); -static __inline void asm_trans_light_edge_1_3(unsigned char w, BYTE *tbl, BYTE **dst, BYTE **src); -static __inline void asm_trans_light_square_1_3(unsigned char w, BYTE *tbl, BYTE **dst, BYTE **src); -static __inline unsigned int asm_trans_light_mask(unsigned char w, BYTE *tbl, BYTE **dst, BYTE **src, unsigned int mask); - -static __inline void asm_cel_light_edge(unsigned char w, BYTE *tbl, BYTE **dst, BYTE **src) -{ - unsigned char l = w >> 1; - - if (w & 1) { - (*dst)[0] = tbl[(*src)[0]]; - (*src)++; - (*dst)++; - } - if (l & 1) { - (*dst)[0] = tbl[(*src)[0]]; - (*dst)[1] = tbl[(*src)[1]]; - *src += 2; - *dst += 2; - } - - asm_cel_light_square(l >> 1, tbl, dst, src); -} - -static __inline void asm_cel_light_square(unsigned char w, BYTE *tbl, BYTE **dst, BYTE **src) -{ - for (; w; --w) { - (*dst)[0] = tbl[(*src)[0]]; - (*dst)[1] = tbl[(*src)[1]]; - (*dst)[2] = tbl[(*src)[2]]; - (*dst)[3] = tbl[(*src)[3]]; - *src += 4; - *dst += 4; - } -} - -static __inline void asm_trans_light_cel_0_2(unsigned char w, BYTE *tbl, BYTE **dst, BYTE **src) -{ - if (!(w & 1)) { - asm_trans_light_edge_1_3(w >> 1, tbl, dst, src); - } else { - (*src)++; - (*dst)++; - asm_trans_light_edge_0_2(w >> 1, tbl, dst, src); - } -} - -static __inline void asm_trans_light_edge_0_2(unsigned char w, BYTE *tbl, BYTE **dst, BYTE **src) -{ - unsigned char l = w >> 1; - - if (w & 1) { - (*dst)[0] = tbl[(*src)[0]]; - *src += 2; - *dst += 2; - } - if (l) { - asm_trans_light_square_0_2(l, tbl, dst, src); - } -} - -static __inline void asm_trans_light_square_0_2(unsigned char w, BYTE *tbl, BYTE **dst, BYTE **src) -{ - for (; w; --w) { - (*dst)[0] = tbl[(*src)[0]]; - (*dst)[2] = tbl[(*src)[2]]; - *src += 4; - *dst += 4; - } -} - -static __inline void asm_trans_light_cel_1_3(unsigned char w, BYTE *tbl, BYTE **dst, BYTE **src) -{ - if (!(w & 1)) { - asm_trans_light_edge_0_2(w >> 1, tbl, dst, src); - } else { - (*dst)[0] = tbl[(*src)[0]]; - (*src)++; - (*dst)++; - asm_trans_light_edge_1_3(w >> 1, tbl, dst, src); - } -} - -static __inline void asm_trans_light_edge_1_3(unsigned char w, BYTE *tbl, BYTE **dst, BYTE **src) -{ - unsigned char l = w >> 1; - - if (w & 1) { - (*dst)[1] = tbl[(*src)[1]]; - *src += 2; - *dst += 2; - } - if (l) { - asm_trans_light_square_1_3(l, tbl, dst, src); - } -} - -static __inline void asm_trans_light_square_1_3(unsigned char w, BYTE *tbl, BYTE **dst, BYTE **src) -{ - for (; w; --w) { - (*dst)[1] = tbl[(*src)[1]]; - (*dst)[3] = tbl[(*src)[3]]; - *src += 4; - *dst += 4; - } -} - -static __inline unsigned int asm_trans_light_mask(unsigned char w, BYTE *tbl, BYTE **dst, BYTE **src, unsigned int mask) -{ - for (; w; --w, (*src)++, (*dst)++, mask *= 2) { - if (mask & 0x80000000) - (*dst)[0] = tbl[(*src)[0]]; - } - - return mask; -} diff --git a/Source/_render.cpp b/Source/_render.cpp deleted file mode 100644 index 582ce3786..000000000 --- a/Source/_render.cpp +++ /dev/null @@ -1,10251 +0,0 @@ -__declspec(naked) void drawTopArchesUpperScreen(BYTE *pBuff) -{ - __asm { - push ebx - push edx - push edi - push esi - mov edi, offset SpeedFrameTbl - mov gpCelFrame, edi - mov edi, ecx - mov eax, light_table_index - test al, al - jz loc_46316A - cmp al, lightmax - jz loc_4631CA - mov eax, level_cel_block - and eax, 8000h - jnz loc_4630FE - mov ebx, pDungeonCels - mov esi, ebx - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 2 - add ebx, eax - add esi, [ebx] - mov ebx, light_table_index - shl ebx, 8 - add ebx, pLightTbl - mov eax, level_cel_block - mov al, ah - shr eax, 4 - and eax, 0Fh - jz loc_463255 - cmp ax, 1 - jz loc_4632C5 - cmp ax, 2 - jz loc_463425 - cmp ax, 3 - jz loc_463698 - cmp ax, 4 - jz loc_46390B - jmp loc_463AB3 - loc_4630FE: - mov esi, gpCelFrame - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 4 - add eax, light_table_index - shl eax, 2 - add esi, eax - mov eax, [esi] - mov esi, pSpeedCels - add esi, eax - mov eax, level_cel_block - mov al, ah - shr eax, 4 - and eax, 0Fh - loc_463133: - cmp ax, 8 - jz loc_463C5B - cmp ax, 9 - jz loc_463CC2 - cmp ax, 0Ah - jz loc_463DA3 - cmp ax, 0Bh - jz loc_463ED8 - cmp ax, 0Ch - jz loc_464011 - jmp loc_464112 - loc_46316A: - mov eax, level_cel_block - and eax, 8000h - jz loc_46319C - mov esi, gpCelFrame - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 6 - add esi, eax - mov eax, level_cel_block - and eax, 0F000h - add eax, [esi] - mov level_cel_block, eax - loc_46319C: - mov ebx, pDungeonCels - mov esi, ebx - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 2 - add ebx, eax - add esi, [ebx] - mov eax, level_cel_block - mov al, ah - shr eax, 4 - and eax, 7 - add eax, 8 - jmp loc_463133 - loc_4631CA: - mov eax, level_cel_block - and eax, 8000h - jz loc_4631FC - mov esi, gpCelFrame - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 6 - add esi, eax - mov eax, level_cel_block - and eax, 0F000h - add eax, [esi] - mov level_cel_block, eax - loc_4631FC: - mov ebx, pDungeonCels - mov esi, ebx - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 2 - add ebx, eax - add esi, [ebx] - mov eax, level_cel_block - mov al, ah - shr eax, 4 - and eax, 7 - jz loc_46420F - cmp ax, 1 - jz loc_464263 - cmp ax, 2 - jz loc_464321 - cmp ax, 3 - jz loc_46440E - cmp ax, 4 - jz loc_4644FB - jmp loc_4645C7 - loc_463255: - push ebp - mov ebp, 10h - loc_46325B: - cmp edi, gpBufEnd - jb loc_4632BF - mov ecx, 8 - loc_463268: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_463268 - sub edi, 320h - cmp edi, gpBufEnd - jb loc_4632BF - mov ecx, 8 - loc_463299: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_463299 - sub edi, 320h - dec ebp - jnz loc_46325B - loc_4632BF: - pop ebp - jmp loc_464688 - loc_4632C5: - push ebp - mov eax, edi - and eax, 1 - mov WorldBoolFlag, eax - mov ebp, 20h - loc_4632D5: - mov edx, 20h - loc_4632DA: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js loc_4633F8 - sub edx, eax - cmp edi, gpBufEnd - jb loc_46341F - mov ecx, eax - mov eax, edi - and eax, 1 - cmp eax, WorldBoolFlag - jnz loc_463377 - push edx - shr ecx, 1 - jb loc_463340 - shr ecx, 1 - jnb loc_46331C - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_46331C: - test cl, cl - jz loc_46333E - loc_463320: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_463320 - loc_46333E: - jmp loc_463374 - loc_463340: - inc esi - inc edi - shr ecx, 1 - jnb loc_463353 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_463353: - test cl, cl - jz loc_463374 - loc_463357: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_463357 - loc_463374: - pop edx - jmp loc_4633EF - loc_463377: - push edx - shr ecx, 1 - jb loc_4633B0 - shr ecx, 1 - jnb loc_46338D - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_46338D: - test cl, cl - jz loc_4633AE - loc_463391: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_463391 - loc_4633AE: - jmp loc_4633EE - loc_4633B0: - mov dl, [esi] - mov dl, [ebx+edx] - inc esi - mov [edi], dl - inc edi - shr ecx, 1 - jnb loc_4633CC - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_4633CC: - test cl, cl - jz loc_4633EE - loc_4633D0: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_4633D0 - loc_4633EE: - pop edx - loc_4633EF: - test edx, edx - jz loc_463404 - jmp loc_4632DA - loc_4633F8: - neg al - add edi, eax - sub edx, eax - jnz loc_4632DA - loc_463404: - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - sub edi, 320h - dec ebp - jnz loc_4632D5 - loc_46341F: - pop ebp - jmp loc_464688 - loc_463425: - push ebp - xor eax, eax - mov WorldBoolFlag, eax - mov ebp, 1Eh - loc_463432: - cmp edi, gpBufEnd - jb loc_463692 - add edi, ebp - mov ecx, 20h - sub ecx, ebp - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_4634D2 - mov edx, ecx - and edx, 2 - add esi, edx - shr ecx, 1 - jb loc_463499 - shr ecx, 1 - jnb loc_463475 - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_463475: - test cl, cl - jz loc_463497 - loc_463479: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_463479 - loc_463497: - jmp loc_4634CD - loc_463499: - inc esi - inc edi - shr ecx, 1 - jnb loc_4634AC - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_4634AC: - test cl, cl - jz loc_4634CD - loc_4634B0: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_4634B0 - loc_4634CD: - jmp $+82h - loc_4634D2: - mov edx, ecx - and edx, 2 - add esi, edx - shr ecx, 1 - jb loc_463511 - shr ecx, 1 - jnb loc_4634EE - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_4634EE: - test cl, cl - jz loc_46350F - loc_4634F2: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_4634F2 - loc_46350F: - jmp loc_46354F - loc_463511: - mov dl, [esi] - mov dl, [ebx+edx] - inc esi - mov [edi], dl - inc edi - shr ecx, 1 - jnb loc_46352D - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_46352D: - test cl, cl - jz loc_46354F - loc_463531: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_463531 - loc_46354F: - sub edi, 320h - sub ebp, 2 - jge loc_463432 - mov ebp, 2 - loc_463563: - cmp edi, gpBufEnd - jb loc_463692 - add edi, ebp - mov ecx, 20h - sub ecx, ebp - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_463603 - mov edx, ecx - and edx, 2 - add esi, edx - shr ecx, 1 - jb loc_4635CA - shr ecx, 1 - jnb loc_4635A6 - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_4635A6: - test cl, cl - jz loc_4635C8 - loc_4635AA: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_4635AA - loc_4635C8: - jmp loc_4635FE - loc_4635CA: - inc esi - inc edi - shr ecx, 1 - jnb loc_4635DD - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_4635DD: - test cl, cl - jz loc_4635FE - loc_4635E1: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_4635E1 - loc_4635FE: - jmp $+82h - loc_463603: - mov edx, ecx - and edx, 2 - add esi, edx - shr ecx, 1 - jb loc_463642 - shr ecx, 1 - jnb loc_46361F - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_46361F: - test cl, cl - jz loc_463640 - loc_463623: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_463623 - loc_463640: - jmp loc_463680 - loc_463642: - mov dl, [esi] - mov dl, [ebx+edx] - inc esi - mov [edi], dl - inc edi - shr ecx, 1 - jnb loc_46365E - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_46365E: - test cl, cl - jz loc_463680 - loc_463662: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_463662 - loc_463680: - sub edi, 320h - add ebp, 2 - cmp ebp, 20h - jnz loc_463563 - loc_463692: - pop ebp - jmp loc_464688 - loc_463698: - push ebp - xor eax, eax - mov WorldBoolFlag, eax - mov ebp, 1Eh - loc_4636A5: - cmp edi, gpBufEnd - jb loc_463905 - mov ecx, 20h - sub ecx, ebp - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_463743 - shr ecx, 1 - jb loc_463703 - shr ecx, 1 - jnb loc_4636DF - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_4636DF: - test cl, cl - jz loc_463701 - loc_4636E3: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_4636E3 - loc_463701: - jmp loc_463737 - loc_463703: - inc esi - inc edi - shr ecx, 1 - jnb loc_463716 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_463716: - test cl, cl - jz loc_463737 - loc_46371A: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_46371A - loc_463737: - mov edx, esi - and edx, 2 - add esi, edx - jmp $+82h - loc_463743: - shr ecx, 1 - jb loc_46377B - shr ecx, 1 - jnb loc_463758 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_463758: - test cl, cl - jz loc_463779 - loc_46375C: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_46375C - loc_463779: - jmp loc_4637B9 - loc_46377B: - mov dl, [esi] - mov dl, [ebx+edx] - inc esi - mov [edi], dl - inc edi - shr ecx, 1 - jnb loc_463797 - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_463797: - test cl, cl - jz loc_4637B9 - loc_46379B: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_46379B - loc_4637B9: - mov edx, esi - and edx, 2 - add esi, edx - // loc_4637C0: - sub edi, 320h - add edi, ebp - sub ebp, 2 - jge loc_4636A5 - mov ebp, 2 - loc_4637D6: - cmp edi, gpBufEnd - jb loc_463905 - mov ecx, 20h - sub ecx, ebp - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_463874 - shr ecx, 1 - jb loc_463834 - shr ecx, 1 - jnb loc_463810 - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_463810: - test cl, cl - jz loc_463832 - loc_463814: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_463814 - loc_463832: - jmp loc_463868 - loc_463834: - inc esi - inc edi - shr ecx, 1 - jnb loc_463847 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_463847: - test cl, cl - jz loc_463868 - loc_46384B: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_46384B - loc_463868: - mov edx, esi - and edx, 2 - add esi, edx - jmp $+82h - loc_463874: - shr ecx, 1 - jb loc_4638AC - shr ecx, 1 - jnb loc_463889 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_463889: - test cl, cl - jz loc_4638AA - loc_46388D: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_46388D - loc_4638AA: - jmp loc_4638EA - loc_4638AC: - mov dl, [esi] - mov dl, [ebx+edx] - inc esi - mov [edi], dl - inc edi - shr ecx, 1 - jnb loc_4638C8 - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_4638C8: - test cl, cl - jz loc_4638EA - loc_4638CC: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_4638CC - loc_4638EA: - mov edx, esi - and edx, 2 - add esi, edx - // loc_4638F1: - sub edi, 320h - add edi, ebp - add ebp, 2 - cmp ebp, 20h - jnz loc_4637D6 - loc_463905: - pop ebp - jmp loc_464688 - loc_46390B: - push ebp - xor eax, eax - mov WorldBoolFlag, eax - mov ebp, 1Eh - loc_463918: - cmp edi, gpBufEnd - jb loc_463AAD - add edi, ebp - mov ecx, 20h - sub ecx, ebp - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_4639B8 - mov edx, ecx - and edx, 2 - add esi, edx - shr ecx, 1 - jb loc_46397F - shr ecx, 1 - jnb loc_46395B - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_46395B: - test cl, cl - jz loc_46397D - loc_46395F: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_46395F - loc_46397D: - jmp loc_4639B3 - loc_46397F: - inc esi - inc edi - shr ecx, 1 - jnb loc_463992 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_463992: - test cl, cl - jz loc_4639B3 - loc_463996: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_463996 - loc_4639B3: - jmp $+82h - loc_4639B8: - mov edx, ecx - and edx, 2 - add esi, edx - shr ecx, 1 - jb loc_4639F7 - shr ecx, 1 - jnb loc_4639D4 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_4639D4: - test cl, cl - jz loc_4639F5 - loc_4639D8: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_4639D8 - loc_4639F5: - jmp loc_463A35 - loc_4639F7: - mov dl, [esi] - mov dl, [ebx+edx] - inc esi - mov [edi], dl - inc edi - shr ecx, 1 - jnb loc_463A13 - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_463A13: - test cl, cl - jz loc_463A35 - loc_463A17: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_463A17 - loc_463A35: - sub edi, 320h - sub ebp, 2 - jge loc_463918 - mov ebp, 8 - loc_463A49: - cmp edi, gpBufEnd - jb loc_463AAD - mov ecx, 8 - loc_463A56: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_463A56 - sub edi, 320h - cmp edi, gpBufEnd - jb loc_463AAD - mov ecx, 8 - loc_463A87: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_463A87 - sub edi, 320h - dec ebp - jnz loc_463A49 - loc_463AAD: - pop ebp - jmp loc_464688 - loc_463AB3: - push ebp - xor eax, eax - mov WorldBoolFlag, eax - mov ebp, 1Eh - loc_463AC0: - cmp edi, gpBufEnd - jb loc_463C55 - mov ecx, 20h - sub ecx, ebp - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_463B5E - shr ecx, 1 - jb loc_463B1E - shr ecx, 1 - jnb loc_463AFA - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_463AFA: - test cl, cl - jz loc_463B1C - loc_463AFE: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_463AFE - loc_463B1C: - jmp loc_463B52 - loc_463B1E: - inc esi - inc edi - shr ecx, 1 - jnb loc_463B31 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_463B31: - test cl, cl - jz loc_463B52 - loc_463B35: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_463B35 - loc_463B52: - mov edx, esi - and edx, 2 - add esi, edx - jmp $+82h - loc_463B5E: - shr ecx, 1 - jb loc_463B96 - shr ecx, 1 - jnb loc_463B73 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_463B73: - test cl, cl - jz loc_463B94 - loc_463B77: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_463B77 - loc_463B94: - jmp loc_463BD4 - loc_463B96: - mov dl, [esi] - mov dl, [ebx+edx] - inc esi - mov [edi], dl - inc edi - shr ecx, 1 - jnb loc_463BB2 - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_463BB2: - test cl, cl - jz loc_463BD4 - loc_463BB6: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_463BB6 - loc_463BD4: - mov edx, esi - and edx, 2 - add esi, edx - // loc_463BDB: - sub edi, 320h - add edi, ebp - sub ebp, 2 - jge loc_463AC0 - mov ebp, 8 - loc_463BF1: - cmp edi, gpBufEnd - jb loc_463C55 - mov ecx, 8 - loc_463BFE: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_463BFE - sub edi, 320h - cmp edi, gpBufEnd - jb loc_463C55 - mov ecx, 8 - loc_463C2F: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_463C2F - sub edi, 320h - dec ebp - jnz loc_463BF1 - loc_463C55: - pop ebp - jmp loc_464688 - loc_463C5B: - mov edx, 10h - loc_463C60: - cmp edi, gpBufEnd - jb loc_464688 - mov ecx, 8 - loc_463C71: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_463C71 - sub edi, 320h - cmp edi, gpBufEnd - jb loc_464688 - mov ecx, 8 - loc_463C9F: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_463C9F - sub edi, 320h - dec edx - jnz loc_463C60 - jmp loc_464688 - loc_463CC2: - push ebp - mov eax, edi - and eax, 1 - mov WorldBoolFlag, eax - mov ebp, 20h - loc_463CD2: - mov edx, 20h - loc_463CD7: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js loc_463D76 - sub edx, eax - cmp edi, gpBufEnd - jb loc_463D9D - mov ecx, eax - mov eax, edi - and eax, 1 - cmp eax, WorldBoolFlag - jnz loc_463D36 - shr ecx, 1 - jnb loc_463D0D - inc esi - inc edi - test ecx, ecx - jz loc_463D6D - jmp loc_463D46 - loc_463D0D: - shr ecx, 1 - jnb loc_463D1D - inc esi - inc edi - mov al, [esi] - inc esi - mov [edi], al - inc edi - test ecx, ecx - jz loc_463D6D - loc_463D1D: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_463D1D - jmp loc_463D6D - loc_463D36: - shr ecx, 1 - jnb loc_463D46 - mov al, [esi] - inc esi - mov [edi], al - inc edi - test ecx, ecx - jz loc_463D6D - jmp loc_463D0D - loc_463D46: - shr ecx, 1 - jnb loc_463D58 - mov al, [esi] - add esi, 2 - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_463D6D - loc_463D58: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_463D58 - loc_463D6D: - test edx, edx - jz loc_463D82 - jmp loc_463CD7 - loc_463D76: - neg al - add edi, eax - sub edx, eax - jnz loc_463CD7 - loc_463D82: - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - sub edi, 320h - dec ebp - jnz loc_463CD2 - loc_463D9D: - pop ebp - jmp loc_464688 - loc_463DA3: - xor eax, eax - mov WorldBoolFlag, eax - mov edx, 1Eh - loc_463DAF: - cmp edi, gpBufEnd - jb loc_464688 - add edi, edx - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_463E04 - shr ecx, 2 - jnb loc_463DEB - mov ax, [esi+2] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - inc edi - test ecx, ecx - jz loc_463E2E - loc_463DEB: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_463DEB - jmp loc_463E2E - loc_463E04: - shr ecx, 2 - jnb loc_463E19 - mov ax, [esi+2] - add esi, 4 - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_463E2E - loc_463E19: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_463E19 - loc_463E2E: - sub edi, 320h - sub edx, 2 - jge loc_463DAF - mov edx, 2 - loc_463E42: - cmp edi, gpBufEnd - jb loc_464688 - add edi, edx - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_463E97 - shr ecx, 2 - jnb loc_463E7E - mov ax, [esi+2] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - inc edi - test ecx, ecx - jz loc_463EC1 - loc_463E7E: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_463E7E - jmp loc_463EC1 - loc_463E97: - shr ecx, 2 - jnb loc_463EAC - mov ax, [esi+2] - add esi, 4 - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_463EC1 - loc_463EAC: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_463EAC - loc_463EC1: - sub edi, 320h - add edx, 2 - cmp edx, 20h - jnz loc_463E42 - jmp loc_464688 - loc_463ED8: - push ebp - xor eax, eax - mov WorldBoolFlag, eax - mov edx, 1Eh - loc_463EE5: - cmp edi, gpBufEnd - jb loc_46400B - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov ebp, ecx - mov WorldBoolFlag, eax - jz loc_463F3A - shr ecx, 2 - jz loc_463F26 - loc_463F0F: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_463F0F - loc_463F26: - and ebp, 2 - jz loc_463F64 - mov ax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - inc edi - jmp loc_463F64 - loc_463F3A: - shr ecx, 2 - jz loc_463F54 - loc_463F3F: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_463F3F - loc_463F54: - and ebp, 2 - jz loc_463F64 - mov ax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - loc_463F64: - sub edi, 320h - add edi, edx - sub edx, 2 - jge loc_463EE5 - mov edx, 2 - loc_463F7A: - cmp edi, gpBufEnd - jb loc_46400B - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_463FCD - shr ecx, 2 - jz loc_463FB9 - loc_463FA2: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_463FA2 - loc_463FB9: - and ebp, 2 - jz loc_463FF7 - mov ax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - inc edi - jmp loc_463FF7 - loc_463FCD: - shr ecx, 2 - jz loc_463FE7 - loc_463FD2: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_463FD2 - loc_463FE7: - and ebp, 2 - jz loc_463FF7 - mov ax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - loc_463FF7: - sub edi, 320h - add edi, edx - add edx, 2 - cmp edx, 20h - jnz loc_463F7A - loc_46400B: - pop ebp - jmp loc_464688 - loc_464011: - xor eax, eax - mov WorldBoolFlag, eax - mov edx, 1Eh - loc_46401D: - cmp edi, gpBufEnd - jb loc_464688 - add edi, edx - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_464072 - shr ecx, 2 - jnb loc_464059 - mov ax, [esi+2] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - inc edi - test ecx, ecx - jz loc_46409C - loc_464059: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_464059 - jmp loc_46409C - loc_464072: - shr ecx, 2 - jnb loc_464087 - mov ax, [esi+2] - add esi, 4 - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_46409C - loc_464087: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_464087 - loc_46409C: - sub edi, 320h - sub edx, 2 - jge loc_46401D - mov edx, 8 - loc_4640B0: - cmp edi, gpBufEnd - jb loc_464688 - mov ecx, 8 - loc_4640C1: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_4640C1 - sub edi, 320h - cmp edi, gpBufEnd - jb loc_464688 - mov ecx, 8 - loc_4640EF: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_4640EF - sub edi, 320h - dec edx - jnz loc_4640B0 - jmp loc_464688 - loc_464112: - push ebp - xor eax, eax - mov WorldBoolFlag, eax - mov edx, 1Eh - loc_46411F: - cmp edi, gpBufEnd - jb loc_464209 - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov ebp, ecx - mov WorldBoolFlag, eax - jz loc_464174 - shr ecx, 2 - jz loc_464160 - loc_464149: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_464149 - loc_464160: - and ebp, 2 - jz loc_46419E - mov ax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - inc edi - jmp loc_46419E - loc_464174: - shr ecx, 2 - jz loc_46418E - loc_464179: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_464179 - loc_46418E: - and ebp, 2 - jz loc_46419E - mov ax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - loc_46419E: - sub edi, 320h - add edi, edx - sub edx, 2 - jge loc_46411F - mov edx, 8 - loc_4641B4: - cmp edi, gpBufEnd - jb loc_464209 - mov ecx, 8 - loc_4641C1: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_4641C1 - sub edi, 320h - cmp edi, gpBufEnd - jb loc_464209 - mov ecx, 8 - loc_4641EB: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_4641EB - sub edi, 320h - dec edx - jnz loc_4641B4 - loc_464209: - pop ebp - jmp loc_464688 - loc_46420F: - mov edx, 10h - xor eax, eax - loc_464216: - cmp edi, gpBufEnd - jb loc_464688 - mov ecx, 8 - loc_464227: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_464227 - sub edi, 320h - cmp edi, gpBufEnd - jb loc_464688 - mov ecx, 8 - loc_46424A: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_46424A - sub edi, 320h - dec edx - jnz loc_464216 - jmp loc_464688 - loc_464263: - push ebp - mov eax, edi - and eax, 1 - mov WorldBoolFlag, eax - mov ebp, 20h - loc_464273: - mov edx, 20h - loc_464278: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js loc_4642F4 - sub edx, eax - cmp edi, gpBufEnd - jb loc_46431B - mov ecx, eax - add esi, ecx - mov eax, edi - and eax, 1 - cmp eax, WorldBoolFlag - jnz loc_4642C7 - xor eax, eax - shr ecx, 1 - jnb loc_4642AD - inc edi - test ecx, ecx - jz loc_4642EE - jmp loc_4642D6 - loc_4642AD: - shr ecx, 1 - jnb loc_4642B9 - inc edi - mov [edi], al - inc edi - test ecx, ecx - jz loc_4642EE - loc_4642B9: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_4642B9 - jmp loc_4642EE - loc_4642C7: - xor eax, eax - shr ecx, 1 - jnb loc_4642D6 - mov [edi], al - inc edi - test ecx, ecx - jz loc_4642EE - jmp loc_4642AD - loc_4642D6: - shr ecx, 1 - jnb loc_4642E3 - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_4642EE - loc_4642E3: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_4642E3 - loc_4642EE: - test edx, edx - jz loc_464300 - jmp loc_464278 - loc_4642F4: - neg al - add edi, eax - sub edx, eax - jnz loc_464278 - loc_464300: - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - sub edi, 320h - dec ebp - jnz loc_464273 - loc_46431B: - pop ebp - jmp loc_464688 - loc_464321: - xor eax, eax - mov WorldBoolFlag, eax - mov edx, 1Eh - loc_46432D: - cmp edi, gpBufEnd - jb loc_464688 - add edi, edx - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_46436F - xor eax, eax - shr ecx, 2 - jnb loc_464361 - inc edi - mov [edi], al - inc edi - test ecx, ecx - jz loc_46438A - loc_464361: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_464361 - jmp loc_46438A - loc_46436F: - xor eax, eax - shr ecx, 2 - jnb loc_46437F - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_46438A - loc_46437F: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_46437F - loc_46438A: - sub edi, 320h - test edx, edx - jz loc_464399 - sub edx, 2 - jmp loc_46432D - loc_464399: - mov edx, 2 - loc_46439E: - cmp edi, gpBufEnd - jb loc_464688 - add edi, edx - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_4643E0 - xor eax, eax - shr ecx, 2 - jnb loc_4643D2 - inc edi - mov [edi], al - inc edi - test ecx, ecx - jz loc_4643FB - loc_4643D2: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_4643D2 - jmp loc_4643FB - loc_4643E0: - xor eax, eax - shr ecx, 2 - jnb loc_4643F0 - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_4643FB - loc_4643F0: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_4643F0 - loc_4643FB: - sub edi, 320h - add edx, 2 - cmp edx, 20h - jnz loc_46439E - jmp loc_464688 - loc_46440E: - xor eax, eax - mov WorldBoolFlag, eax - mov edx, 1Eh - loc_46441A: - cmp edi, gpBufEnd - jb loc_464688 - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_46445A - xor eax, eax - shr ecx, 2 - jnb loc_46444C - inc edi - mov [edi], al - inc edi - test ecx, ecx - jz loc_464475 - loc_46444C: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_46444C - jmp loc_464475 - loc_46445A: - xor eax, eax - shr ecx, 2 - jnb loc_46446A - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_464475 - loc_46446A: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_46446A - loc_464475: - sub edi, 320h - test edx, edx - jz loc_464486 - add edi, edx - sub edx, 2 - jmp loc_46441A - loc_464486: - mov edx, 2 - loc_46448B: - cmp edi, gpBufEnd - jb loc_464688 - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_4644CB - xor eax, eax - shr ecx, 2 - jnb loc_4644BD - inc edi - mov [edi], al - inc edi - test ecx, ecx - jz loc_4644E6 - loc_4644BD: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_4644BD - jmp loc_4644E6 - loc_4644CB: - xor eax, eax - shr ecx, 2 - jnb loc_4644DB - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_4644E6 - loc_4644DB: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_4644DB - loc_4644E6: - sub edi, 320h - add edi, edx - add edx, 2 - cmp edx, 20h - jnz loc_46448B - jmp loc_464688 - loc_4644FB: - xor eax, eax - mov WorldBoolFlag, eax - mov edx, 1Eh - loc_464507: - cmp edi, gpBufEnd - jb loc_464688 - add edi, edx - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_464549 - xor eax, eax - shr ecx, 2 - jnb loc_46453B - inc edi - mov [edi], al - inc edi - test ecx, ecx - jz loc_464564 - loc_46453B: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_46453B - jmp loc_464564 - loc_464549: - xor eax, eax - shr ecx, 2 - jnb loc_464559 - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_464564 - loc_464559: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_464559 - loc_464564: - sub edi, 320h - test edx, edx - jz loc_464573 - sub edx, 2 - jmp loc_464507 - loc_464573: - mov edx, 8 - xor eax, eax - loc_46457A: - cmp edi, gpBufEnd - jb loc_464688 - mov ecx, 8 - loc_46458B: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_46458B - sub edi, 320h - cmp edi, gpBufEnd - jb loc_464688 - mov ecx, 8 - loc_4645AE: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_4645AE - sub edi, 320h - dec edx - jnz loc_46457A - jmp loc_464688 - loc_4645C7: - xor eax, eax - mov WorldBoolFlag, eax - mov edx, 1Eh - loc_4645D3: - cmp edi, gpBufEnd - jb loc_464688 - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_464613 - xor eax, eax - shr ecx, 2 - jnb loc_464605 - inc edi - mov [edi], al - inc edi - test ecx, ecx - jz loc_46462E - loc_464605: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_464605 - jmp loc_46462E - loc_464613: - xor eax, eax - shr ecx, 2 - jnb loc_464623 - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_46462E - loc_464623: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_464623 - loc_46462E: - sub edi, 320h - test edx, edx - jz loc_46463F - add edi, edx - sub edx, 2 - jmp loc_4645D3 - loc_46463F: - mov edx, 8 - xor eax, eax - loc_464646: - cmp edi, gpBufEnd - jb loc_464688 - mov ecx, 8 - loc_464653: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_464653 - sub edi, 320h - cmp edi, gpBufEnd - jb loc_464688 - mov ecx, 8 - loc_464672: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_464672 - sub edi, 320h - dec edx - jnz loc_464646 - jmp loc_464688 - loc_464688: - pop esi - pop edi - pop edx - pop ebx - retn - } -} - -__declspec(naked) void drawBottomArchesUpperScreen(BYTE *pBuff, DWORD *pMask) -{ - __asm { - push ebx - push edi - push esi - mov edi, offset SpeedFrameTbl - mov gpCelFrame, edi - mov edi, ecx - mov gpDrawMask, edx - mov eax, light_table_index - test al, al - jz loc_4647A2 - cmp al, lightmax - jz loc_464802 - mov eax, level_cel_block - and eax, 8000h - jnz loc_464736 - mov ebx, pDungeonCels - mov esi, ebx - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 2 - add ebx, eax - add esi, [ebx] - mov ebx, light_table_index - shl ebx, 8 - add ebx, pLightTbl - mov eax, level_cel_block - mov al, ah - shr eax, 4 - and eax, 0Fh - jz loc_46488D - jz loc_464FBC - cmp ax, 1 - jz loc_4648D5 - cmp ax, 2 - jz loc_464964 - cmp ax, 3 - jz loc_464A30 - cmp ax, 4 - jz loc_464AFE - jmp loc_464BBC - loc_464736: - mov esi, gpCelFrame - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 4 - add eax, light_table_index - shl eax, 2 - add esi, eax - mov eax, [esi] - mov esi, pSpeedCels - add esi, eax - mov eax, level_cel_block - mov al, ah - shr eax, 4 - and eax, 0Fh - loc_46476B: - cmp ax, 8 - jz loc_464C7A - cmp ax, 9 - jz loc_464CC1 - cmp ax, 0Ah - jz loc_464D4B - cmp ax, 0Bh - jz loc_464DE3 - cmp ax, 0Ch - jz loc_464E7D - jmp loc_464F19 - loc_4647A2: - mov eax, level_cel_block - and eax, 8000h - jz loc_4647D4 - mov esi, gpCelFrame - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 6 - add esi, eax - mov eax, level_cel_block - and eax, 0F000h - add eax, [esi] - mov level_cel_block, eax - loc_4647D4: - mov ebx, pDungeonCels - mov esi, ebx - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 2 - add ebx, eax - add esi, [ebx] - mov eax, level_cel_block - mov al, ah - shr eax, 4 - and eax, 7 - add eax, 8 - jmp loc_46476B - loc_464802: - mov eax, level_cel_block - and eax, 8000h - jz loc_464834 - mov esi, gpCelFrame - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 6 - add esi, eax - mov eax, level_cel_block - and eax, 0F000h - add eax, [esi] - mov level_cel_block, eax - loc_464834: - mov ebx, pDungeonCels - mov esi, ebx - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 2 - add ebx, eax - add esi, [ebx] - mov eax, level_cel_block - mov al, ah - shr eax, 4 - and eax, 7 - jz loc_464FBC - cmp ax, 1 - jz loc_465002 - cmp ax, 2 - jz loc_465091 - cmp ax, 3 - jz loc_465117 - cmp ax, 4 - jz loc_46519D - jmp loc_465232 - loc_46488D: - mov edx, 20h - loc_464892: - cmp edi, gpBufEnd - jb loc_4652C1 - push edx - mov eax, gpDrawMask - mov edx, [eax] - mov ecx, 20h - loc_4648AB: - mov al, [esi] - inc esi - shl edx, 1 - jnb loc_4648B5 - xlat - mov [edi], al - loc_4648B5: - inc edi - dec ecx - jnz loc_4648AB - pop edx - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec edx - jnz loc_464892 - jmp loc_4652C1 - loc_4648D5: - mov ecx, 20h - loc_4648DA: - push ecx - mov eax, gpDrawMask - mov eax, [eax] - mov gdwCurrentMask, eax - mov edx, 20h - loc_4648EC: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js loc_464927 - sub edx, eax - cmp edi, gpBufEnd - jb loc_4652C0 - mov ecx, eax - push edx - mov edx, gdwCurrentMask - loc_46490C: - mov al, [esi] - inc esi - shl edx, 1 - jnb loc_464916 - xlat - mov [edi], al - loc_464916: - inc edi - dec ecx - jnz loc_46490C - mov gdwCurrentMask, edx - pop edx - test edx, edx - jz loc_464944 - jmp loc_4648EC - loc_464927: - neg al - add edi, eax - mov ecx, eax - and ecx, 1Fh - jz loc_464940 - push eax - mov eax, gdwCurrentMask - shl eax, cl - mov gdwCurrentMask, eax - pop eax - loc_464940: - sub edx, eax - jnz loc_4648EC - loc_464944: - pop ecx - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec ecx - jnz loc_4648DA - jmp loc_4652C1 - loc_464964: - mov edx, 1Eh - loc_464969: - cmp edi, gpBufEnd - jb loc_4652C1 - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_46499E - mov ax, [esi+2] - add esi, 4 - xlat - ror ax, 8 - xlat - ror ax, 8 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_4649BB - loc_46499E: - mov eax, [esi] - add esi, 4 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_46499E - loc_4649BB: - sub edi, 320h - sub edx, 2 - jge loc_464969 - mov edx, 2 - loc_4649CB: - cmp edi, gpBufEnd - jb loc_4652C1 - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_464A00 - mov ax, [esi+2] - add esi, 4 - xlat - ror ax, 8 - xlat - ror ax, 8 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_464A1D - loc_464A00: - mov eax, [esi] - add esi, 4 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_464A00 - loc_464A1D: - sub edi, 320h - add edx, 2 - cmp edx, 20h - jnz loc_4649CB - jmp loc_4652C1 - loc_464A30: - push ebp - mov edx, 1Eh - loc_464A36: - cmp edi, gpBufEnd - jb loc_464AF8 - mov ecx, 20h - sub ecx, edx - mov ebp, ecx - shr ecx, 2 - jz loc_464A6D - loc_464A50: - mov eax, [esi] - add esi, 4 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_464A50 - loc_464A6D: - and ebp, 2 - jz loc_464A88 - mov ax, [esi] - add esi, 4 - xlat - ror ax, 8 - xlat - ror ax, 8 - mov [edi], ax - add edi, 2 - loc_464A88: - sub edi, 320h - add edi, edx - sub edx, 2 - jge loc_464A36 - mov edx, 2 - loc_464A9A: - cmp edi, gpBufEnd - jb loc_464AF8 - mov ecx, 20h - sub ecx, edx - mov ebp, ecx - shr ecx, 2 - jz loc_464ACD - loc_464AB0: - mov eax, [esi] - add esi, 4 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_464AB0 - loc_464ACD: - and ebp, 2 - jz loc_464AE8 - mov ax, [esi] - add esi, 4 - xlat - ror ax, 8 - xlat - ror ax, 8 - mov [edi], ax - add edi, 2 - loc_464AE8: - sub edi, 320h - add edi, edx - add edx, 2 - cmp edx, 20h - jnz loc_464A9A - loc_464AF8: - pop ebp - jmp loc_4652C1 - loc_464AFE: - mov edx, 1Eh - loc_464B03: - cmp edi, gpBufEnd - jb loc_4652C1 - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_464B38 - mov ax, [esi+2] - add esi, 4 - xlat - ror ax, 8 - xlat - ror ax, 8 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_464B55 - loc_464B38: - mov eax, [esi] - add esi, 4 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_464B38 - loc_464B55: - sub edi, 320h - sub edx, 2 - jge loc_464B03 - mov eax, gpDrawMask - sub eax, 40h - mov gpDrawMask, eax - mov edx, 10h - loc_464B72: - cmp edi, gpBufEnd - jb loc_4652C1 - push edx - mov eax, gpDrawMask - mov edx, [eax] - mov ecx, 20h - mov eax, esi - and eax, 2 - add esi, eax - loc_464B92: - mov al, [esi] - inc esi - shl edx, 1 - jnb loc_464B9C - xlat - mov [edi], al - loc_464B9C: - inc edi - dec ecx - jnz loc_464B92 - pop edx - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec edx - jnz loc_464B72 - jmp loc_4652C1 - loc_464BBC: - push ebp - mov edx, 1Eh - loc_464BC2: - cmp edi, gpBufEnd - jb loc_464C74 - mov ecx, 20h - sub ecx, edx - mov ebp, ecx - shr ecx, 2 - jz loc_464BF9 - loc_464BDC: - mov eax, [esi] - add esi, 4 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_464BDC - loc_464BF9: - and ebp, 2 - jz loc_464C14 - mov ax, [esi] - add esi, 4 - xlat - ror ax, 8 - xlat - ror ax, 8 - mov [edi], ax - add edi, 2 - loc_464C14: - sub edi, 320h - add edi, edx - sub edx, 2 - jge loc_464BC2 - mov eax, gpDrawMask - sub eax, 40h - mov gpDrawMask, eax - mov edx, 10h - loc_464C33: - cmp edi, gpBufEnd - jb loc_464C74 - push edx - mov eax, gpDrawMask - mov edx, [eax] - mov ecx, 20h - loc_464C48: - mov al, [esi] - inc esi - shl edx, 1 - jnb loc_464C52 - xlat - mov [edi], al - loc_464C52: - inc edi - dec ecx - jnz loc_464C48 - mov ebp, esi - and ebp, 2 - add esi, ebp - pop edx - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec edx - jnz loc_464C33 - loc_464C74: - pop ebp - jmp loc_4652C1 - loc_464C7A: - mov edx, 20h - loc_464C7F: - cmp edi, gpBufEnd - jb loc_4652C1 - push edx - mov eax, gpDrawMask - mov edx, [eax] - mov ecx, 20h - loc_464C98: - mov al, [esi] - inc esi - shl edx, 1 - jnb loc_464CA1 - mov [edi], al - loc_464CA1: - inc edi - dec ecx - jnz loc_464C98 - pop edx - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec edx - jnz loc_464C7F - jmp loc_4652C1 - loc_464CC1: - mov ecx, 20h - loc_464CC6: - push ecx - mov eax, gpDrawMask - mov eax, [eax] - mov gdwCurrentMask, eax - mov edx, 20h - loc_464CD8: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js loc_464D12 - sub edx, eax - cmp edi, gpBufEnd - jb loc_4652C0 - push edx - mov edx, gdwCurrentMask - mov ecx, eax - loc_464CF8: - mov al, [esi] - inc esi - shl edx, 1 - jnb loc_464D01 - mov [edi], al - loc_464D01: - inc edi - dec ecx - jnz loc_464CF8 - mov gdwCurrentMask, edx - pop edx - test edx, edx - jz loc_464D2F - jmp loc_464CD8 - loc_464D12: - neg al - add edi, eax - mov ecx, eax - and ecx, 1Fh - jz loc_464D2B - mov ebx, gdwCurrentMask - shl ebx, cl - mov gdwCurrentMask, ebx - loc_464D2B: - sub edx, eax - jnz loc_464CD8 - loc_464D2F: - pop ecx - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec ecx - jnz loc_464CC6 - jmp loc_4652C1 - loc_464D4B: - mov edx, 1Eh - loc_464D50: - cmp edi, gpBufEnd - jb loc_4652C1 - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_464D7B - mov ax, [esi+2] - add esi, 4 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_464D88 - loc_464D7B: - mov eax, [esi] - add esi, 4 - mov [edi], eax - dec ecx - lea edi, [edi+4] - jnz loc_464D7B - loc_464D88: - sub edi, 320h - sub edx, 2 - jge loc_464D50 - mov edx, 2 - loc_464D98: - cmp edi, gpBufEnd - jb loc_4652C1 - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_464DC3 - mov ax, [esi+2] - add esi, 4 - mov [edi], ax - test ecx, ecx - lea edi, [edi+2] - jz loc_464DD0 - loc_464DC3: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_464DC3 - loc_464DD0: - sub edi, 320h - add edx, 2 - cmp edx, 20h - jnz loc_464D98 - jmp loc_4652C1 - loc_464DE3: - push ebp - mov edx, 1Eh - loc_464DE9: - cmp edi, gpBufEnd - jb loc_464E77 - mov ecx, 20h - sub ecx, edx - mov ebp, ecx - shr ecx, 2 - jz loc_464E10 - loc_464E03: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_464E03 - loc_464E10: - and ebp, 2 - jz loc_464E21 - mov ax, [esi] - add esi, 4 - mov [edi], ax - add edi, 2 - loc_464E21: - sub edi, 320h - add edi, edx - sub edx, 2 - jge loc_464DE9 - mov edx, 2 - loc_464E33: - cmp edi, gpBufEnd - jb loc_464E77 - mov ecx, 20h - sub ecx, edx - mov ebp, ecx - shr ecx, 2 - jz loc_464E56 - loc_464E49: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_464E49 - loc_464E56: - and ebp, 2 - jz loc_464E67 - mov ax, [esi] - add esi, 4 - mov [edi], ax - add edi, 2 - loc_464E67: - sub edi, 320h - add edi, edx - add edx, 2 - cmp edx, 20h - jnz loc_464E33 - loc_464E77: - pop ebp - jmp loc_4652C1 - loc_464E7D: - mov edx, 1Eh - loc_464E82: - cmp edi, gpBufEnd - jb loc_4652C1 - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_464EAD - mov ax, [esi+2] - add esi, 4 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_464EBA - loc_464EAD: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_464EAD - loc_464EBA: - sub edi, 320h - sub edx, 2 - jge loc_464E82 - mov eax, gpDrawMask - sub eax, 40h - mov gpDrawMask, eax - mov edx, 10h - loc_464ED7: - cmp edi, gpBufEnd - jb loc_4652C1 - push edx - mov eax, gpDrawMask - mov edx, [eax] - mov ecx, 20h - loc_464EF0: - mov al, [esi] - inc esi - shl edx, 1 - jnb loc_464EF9 - mov [edi], al - loc_464EF9: - inc edi - dec ecx - jnz loc_464EF0 - pop edx - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec edx - jnz loc_464ED7 - jmp loc_4652C1 - loc_464F19: - push ebp - mov edx, 1Eh - loc_464F1F: - cmp edi, gpBufEnd - jb loc_464FB6 - mov ecx, 20h - sub ecx, edx - mov ebp, ecx - shr ecx, 2 - jz loc_464F46 - loc_464F39: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_464F39 - loc_464F46: - and ebp, 2 - jz loc_464F57 - mov ax, [esi] - add esi, 4 - mov [edi], ax - add edi, 2 - loc_464F57: - sub edi, 320h - add edi, edx - sub edx, 2 - jge loc_464F1F - mov eax, gpDrawMask - sub eax, 40h - mov gpDrawMask, eax - mov edx, 10h - loc_464F76: - cmp edi, gpBufEnd - jb loc_464FB6 - push edx - mov eax, gpDrawMask - mov edx, [eax] - mov ecx, 20h - loc_464F8B: - mov al, [esi] - inc esi - shl edx, 1 - jnb loc_464F94 - mov [edi], al - loc_464F94: - inc edi - dec ecx - jnz loc_464F8B - mov ebp, esi - and ebp, 2 - add esi, ebp - pop edx - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec edx - jnz loc_464F76 - loc_464FB6: - pop ebp - jmp loc_4652C1 - loc_464FBC: - mov edx, 20h - loc_464FC1: - cmp edi, gpBufEnd - jb loc_4652C1 - push edx - mov eax, gpDrawMask - mov edx, [eax] - xor eax, eax - mov ecx, 20h - loc_464FDC: - shl edx, 1 - jnb loc_464FE2 - mov [edi], al - loc_464FE2: - inc edi - dec ecx - jnz loc_464FDC - pop edx - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec edx - jnz loc_464FC1 - jmp loc_4652C1 - loc_465002: - mov ecx, 20h - loc_465007: - push ecx - mov eax, gpDrawMask - mov eax, [eax] - mov gdwCurrentMask, eax - mov edx, 20h - loc_465019: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js loc_465054 - sub edx, eax - cmp edi, gpBufEnd - jb loc_4652C0 - push edx - mov edx, gdwCurrentMask - mov ecx, eax - add esi, ecx - xor eax, eax - loc_46503D: - shl edx, 1 - jnb loc_465043 - mov [edi], al - loc_465043: - inc edi - dec ecx - jnz loc_46503D - mov gdwCurrentMask, edx - pop edx - test edx, edx - jz loc_465071 - jmp loc_465019 - loc_465054: - neg al - add edi, eax - mov ecx, eax - and ecx, 1Fh - jz loc_46506D - mov ebx, gdwCurrentMask - shl ebx, cl - mov gdwCurrentMask, ebx - loc_46506D: - sub edx, eax - jnz loc_465019 - loc_465071: - pop ecx - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec ecx - jnz loc_465007 - jmp loc_4652C1 - loc_465091: - mov edx, 1Eh - xor eax, eax - loc_465098: - cmp edi, gpBufEnd - jb loc_4652C1 - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_4650BC - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_4650C4 - loc_4650BC: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_4650BC - loc_4650C4: - sub edi, 320h - test edx, edx - jz loc_4650D3 - sub edx, 2 - jmp loc_465098 - loc_4650D3: - mov edx, 2 - loc_4650D8: - cmp edi, gpBufEnd - jb loc_4652C1 - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_4650FC - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_465104 - loc_4650FC: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_4650FC - loc_465104: - sub edi, 320h - add edx, 2 - cmp edx, 20h - jnz loc_4650D8 - jmp loc_4652C1 - loc_465117: - mov edx, 1Eh - xor eax, eax - loc_46511E: - cmp edi, gpBufEnd - jb loc_4652C1 - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_465140 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_465148 - loc_465140: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465140 - loc_465148: - sub edi, 320h - test edx, edx - jz loc_465159 - add edi, edx - sub edx, 2 - jmp loc_46511E - loc_465159: - mov edx, 2 - loc_46515E: - cmp edi, gpBufEnd - jb loc_4652C1 - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_465180 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_465188 - loc_465180: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465180 - loc_465188: - sub edi, 320h - add edi, edx - add edx, 2 - cmp edx, 20h - jnz loc_46515E - jmp loc_4652C1 - loc_46519D: - mov edx, 1Eh - xor eax, eax - loc_4651A4: - cmp edi, gpBufEnd - jb loc_4652C1 - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_4651C8 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_4651D0 - loc_4651C8: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_4651C8 - loc_4651D0: - sub edi, 320h - test edx, edx - jz loc_4651DF - sub edx, 2 - jmp loc_4651A4 - loc_4651DF: - mov eax, gpDrawMask - sub eax, 40h - mov gpDrawMask, eax - mov edx, 10h - loc_4651F1: - cmp edi, gpBufEnd - jb loc_4652C1 - push edx - mov eax, gpDrawMask - mov edx, [eax] - xor eax, eax - mov ecx, 20h - loc_46520C: - shl edx, 1 - jnb loc_465212 - mov [edi], al - loc_465212: - inc edi - dec ecx - jnz loc_46520C - pop edx - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec edx - jnz loc_4651F1 - jmp loc_4652C1 - loc_465232: - mov edx, 1Eh - xor eax, eax - loc_465239: - cmp edi, gpBufEnd - jb $+82h - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_46525B - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_465263 - loc_46525B: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_46525B - loc_465263: - sub edi, 320h - test edx, edx - jz loc_465274 - add edi, edx - sub edx, 2 - jmp loc_465239 - loc_465274: - mov eax, gpDrawMask - sub eax, 40h - mov gpDrawMask, eax - mov edx, 10h - loc_465286: - cmp edi, gpBufEnd - jb loc_4652C1 - push edx - mov eax, gpDrawMask - mov edx, [eax] - xor eax, eax - mov ecx, 20h - loc_46529D: - shl edx, 1 - jnb loc_4652A3 - mov [edi], al - loc_4652A3: - inc edi - dec ecx - jnz loc_46529D - pop edx - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec edx - jnz loc_465286 - jmp loc_4652C1 - loc_4652C0: - pop eax - loc_4652C1: - pop esi - pop edi - pop ebx - retn - } -} - -__declspec(naked) void drawUpperScreen(BYTE *pBuff) -{ - __asm { - push ebx - push edx - push edi - push esi - mov edx, cel_transparency_active - test edx, edx - jz loc_465372 - mov dl, arch_draw_type - cmp dl, 0 - jnz loc_4652EC - call drawTopArchesUpperScreen - jmp loc_465F33 - loc_4652EC: - cmp dl, 1 - jnz loc_46532F - mov ebx, level_piece_id - mov al, block_lvid[ebx] - cmp al, 1 - jz loc_465307 - cmp al, 3 - jz loc_465307 - jmp loc_46532F - loc_465307: - mov edx, offset LeftMask - add edx, 7Ch - call drawBottomArchesUpperScreen - jmp loc_465F33 - cmp al, 4 - jnz loc_46532F - mov edx, offset RightMask - add edx, 7Ch - call drawBottomArchesUpperScreen - jmp loc_465F33 - loc_46532F: - cmp dl, 2 - jnz loc_465372 - mov ebx, level_piece_id - mov al, block_lvid[ebx] - cmp al, 2 - jz loc_46534A - cmp al, 3 - jz loc_46534A - jmp loc_465372 - loc_46534A: - mov edx, offset RightMask - add edx, 7Ch - call drawBottomArchesUpperScreen - jmp loc_465F33 - cmp al, 4 - jnz loc_465372 - mov edx, offset LeftMask - add edx, 7Ch - call drawBottomArchesUpperScreen - jmp loc_465F33 - loc_465372: - mov edi, offset SpeedFrameTbl - mov gpCelFrame, edi - mov edi, ecx - mov eax, light_table_index - test al, al - jz loc_465474 - cmp al, lightmax - jz loc_4654D4 - mov eax, level_cel_block - and eax, 8000h - jnz loc_46540A - mov ebx, pDungeonCels - mov esi, ebx - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 2 - add ebx, eax - add esi, [ebx] - mov ebx, light_table_index - shl ebx, 8 - add ebx, pLightTbl - mov eax, level_cel_block - shr eax, 0Ch - and eax, 0Fh - jz loc_46555D - cmp ax, 1 - jz loc_4655B5 - cmp ax, 2 - jz loc_465663 - cmp ax, 3 - jz loc_465765 - cmp ax, 4 - jz loc_465867 - jmp loc_465939 - loc_46540A: - mov esi, gpCelFrame - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 4 - add eax, light_table_index - shl eax, 2 - add esi, eax - mov eax, [esi] - mov esi, pSpeedCels - add esi, eax - mov eax, level_cel_block - shr eax, 0Ch - and eax, 0Fh - loc_46543D: - cmp ax, 8 - jz loc_465A0B - cmp ax, 9 - jz loc_465A3C - cmp ax, 0Ah - jz loc_465AA8 - cmp ax, 0Bh - jz loc_465B40 - cmp ax, 0Ch - jz loc_465BDA - jmp loc_465C53 - loc_465474: - mov eax, level_cel_block - and eax, 8000h - jz loc_4654A6 - mov esi, gpCelFrame - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 6 - add esi, eax - mov eax, level_cel_block - and eax, 0F000h - add eax, [esi] - mov level_cel_block, eax - loc_4654A6: - mov ebx, pDungeonCels - mov esi, ebx - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 2 - add ebx, eax - add esi, [ebx] - mov eax, level_cel_block - mov al, ah - shr eax, 4 - and eax, 7 - add eax, 8 - jmp loc_46543D - loc_4654D4: - mov eax, level_cel_block - and eax, 8000h - jz loc_465506 - mov esi, gpCelFrame - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 6 - add esi, eax - mov eax, level_cel_block - and eax, 0F000h - add eax, [esi] - mov level_cel_block, eax - loc_465506: - mov ebx, pDungeonCels - mov esi, ebx - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 2 - add ebx, eax - add esi, [ebx] - mov eax, level_cel_block - shr eax, 0Ch - and eax, 7 - jz loc_465CC8 - cmp ax, 1 - jz loc_465CF6 - cmp ax, 2 - jz loc_465D58 - cmp ax, 3 - jz loc_465DDE - cmp ax, 4 - jz loc_465E64 - jmp loc_465ECF - loc_46555D: - mov edx, 20h - loc_465562: - cmp edi, gpBufEnd - jb loc_465F33 - mov ecx, 20h - push edx - loc_465574: - mov eax, [esi] - add esi, 4 - mov dl, al - mov ch, [ebx+edx] - mov dl, ah - ror eax, 10h - mov [edi], ch - mov ch, [ebx+edx] - mov dl, al - mov [edi+1], ch - mov ch, [ebx+edx] - mov dl, ah - mov [edi+2], ch - mov ch, [ebx+edx] - mov [edi+3], ch - add edi, 4 - sub cl, 4 - cmp cl, 4 - jge loc_465574 - pop edx - sub edi, 320h - dec edx - jnz loc_465562 - jmp loc_465F33 - loc_4655B5: - push ebp - mov ebp, 20h - loc_4655BB: - mov edx, 20h - loc_4655C0: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js loc_465644 - sub edx, eax - cmp edi, gpBufEnd - jb loc_46565D - mov ecx, eax - push edx - cmp cl, 4 - jl loc_465611 - loc_4655DF: - mov eax, [esi] - add esi, 4 - mov dl, al - mov ch, [ebx+edx] - mov dl, ah - ror eax, 10h - mov [edi], ch - mov ch, [ebx+edx] - mov dl, al - mov [edi+1], ch - mov ch, [ebx+edx] - mov dl, ah - mov [edi+2], ch - mov ch, [ebx+edx] - mov [edi+3], ch - add edi, 4 - sub cl, 4 - cmp cl, 4 - jge loc_4655DF - loc_465611: - cmp cl, 2 - jl loc_46562C - mov dl, [esi] - mov ch, [ebx+edx] - mov [edi], ch - mov dl, [esi+1] - mov ch, [ebx+edx] - mov [edi+1], ch - add esi, 2 - add edi, 2 - loc_46562C: - and cl, 1 - jz loc_46563A - mov dl, [esi] - inc esi - mov dl, [ebx+edx] - mov [edi], dl - inc edi - loc_46563A: - pop edx - test edx, edx - jz loc_465650 - jmp loc_4655C0 - loc_465644: - neg al - add edi, eax - sub edx, eax - jnz loc_4655C0 - loc_465650: - sub edi, 320h - dec ebp - jnz loc_4655BB - loc_46565D: - pop ebp - jmp loc_465F33 - loc_465663: - push ebp - mov ebp, 1Eh - loc_465669: - cmp edi, gpBufEnd - jb loc_46575F - add edi, ebp - mov ecx, 20h - sub ecx, ebp - mov edx, ecx - and edx, 2 - add esi, edx - cmp cl, 4 - jl loc_4656BC - loc_46568A: - mov eax, [esi] - add esi, 4 - mov dl, al - mov ch, [ebx+edx] - mov dl, ah - ror eax, 10h - mov [edi], ch - mov ch, [ebx+edx] - mov dl, al - mov [edi+1], ch - mov ch, [ebx+edx] - mov dl, ah - mov [edi+2], ch - mov ch, [ebx+edx] - mov [edi+3], ch - add edi, 4 - sub cl, 4 - cmp cl, 4 - jge loc_46568A - loc_4656BC: - cmp cl, 2 - jl loc_4656D7 - mov dl, [esi] - mov ch, [ebx+edx] - mov [edi], ch - mov dl, [esi+1] - mov ch, [ebx+edx] - mov [edi+1], ch - add esi, 2 - add edi, 2 - loc_4656D7: - sub edi, 320h - sub ebp, 2 - jge loc_465669 - mov ebp, 2 - loc_4656E7: - cmp edi, gpBufEnd - jb loc_46575F - add edi, ebp - mov ecx, 20h - sub ecx, ebp - mov edx, ecx - and edx, 2 - add esi, edx - cmp cl, 4 - jl loc_465736 - loc_465704: - mov eax, [esi] - add esi, 4 - mov dl, al - mov ch, [ebx+edx] - mov dl, ah - ror eax, 10h - mov [edi], ch - mov ch, [ebx+edx] - mov dl, al - mov [edi+1], ch - mov ch, [ebx+edx] - mov dl, ah - mov [edi+2], ch - mov ch, [ebx+edx] - mov [edi+3], ch - add edi, 4 - sub cl, 4 - cmp cl, 4 - jge loc_465704 - loc_465736: - cmp cl, 2 - jl loc_465751 - mov dl, [esi] - mov ch, [ebx+edx] - mov [edi], ch - mov dl, [esi+1] - mov ch, [ebx+edx] - mov [edi+1], ch - add esi, 2 - add edi, 2 - loc_465751: - sub edi, 320h - add ebp, 2 - cmp ebp, 20h - jnz loc_4656E7 - loc_46575F: - pop ebp - jmp loc_465F33 - loc_465765: - push ebp - mov ebp, 1Eh - loc_46576B: - cmp edi, gpBufEnd - jb loc_465861 - mov ecx, 20h - sub ecx, ebp - cmp cl, 4 - jl loc_4657B5 - loc_465783: - mov eax, [esi] - add esi, 4 - mov dl, al - mov ch, [ebx+edx] - mov dl, ah - ror eax, 10h - mov [edi], ch - mov ch, [ebx+edx] - mov dl, al - mov [edi+1], ch - mov ch, [ebx+edx] - mov dl, ah - mov [edi+2], ch - mov ch, [ebx+edx] - mov [edi+3], ch - add edi, 4 - sub cl, 4 - cmp cl, 4 - jge loc_465783 - loc_4657B5: - cmp cl, 2 - jl loc_4657D0 - mov dl, [esi] - mov ch, [ebx+edx] - mov [edi], ch - mov dl, [esi+1] - mov ch, [ebx+edx] - mov [edi+1], ch - add esi, 2 - add edi, 2 - loc_4657D0: - mov edx, esi - and edx, 2 - add esi, edx - sub edi, 320h - add edi, ebp - sub ebp, 2 - jge loc_46576B - mov ebp, 2 - loc_4657E9: - cmp edi, gpBufEnd - jb loc_465861 - mov ecx, 20h - sub ecx, ebp - cmp cl, 4 - jl loc_46582F - loc_4657FD: - mov eax, [esi] - add esi, 4 - mov dl, al - mov ch, [ebx+edx] - mov dl, ah - ror eax, 10h - mov [edi], ch - mov ch, [ebx+edx] - mov dl, al - mov [edi+1], ch - mov ch, [ebx+edx] - mov dl, ah - mov [edi+2], ch - mov ch, [ebx+edx] - mov [edi+3], ch - add edi, 4 - sub cl, 4 - cmp cl, 4 - jge loc_4657FD - loc_46582F: - cmp cl, 2 - jl loc_46584A - mov dl, [esi] - mov ch, [ebx+edx] - mov [edi], ch - mov dl, [esi+1] - mov ch, [ebx+edx] - mov [edi+1], ch - add esi, 2 - add edi, 2 - loc_46584A: - mov edx, esi - and edx, 2 - add esi, edx - sub edi, 320h - add edi, ebp - add ebp, 2 - cmp ebp, 20h - jnz loc_4657E9 - loc_465861: - pop ebp - jmp loc_465F33 - loc_465867: - push ebp - mov ebp, 1Eh - loc_46586D: - cmp edi, gpBufEnd - jb loc_465933 - add edi, ebp - mov ecx, 20h - sub ecx, ebp - mov edx, ecx - and edx, 2 - add esi, edx - cmp cl, 4 - jl loc_4658C0 - loc_46588E: - mov eax, [esi] - add esi, 4 - mov dl, al - mov ch, [ebx+edx] - mov dl, ah - ror eax, 10h - mov [edi], ch - mov ch, [ebx+edx] - mov dl, al - mov [edi+1], ch - mov ch, [ebx+edx] - mov dl, ah - mov [edi+2], ch - mov ch, [ebx+edx] - mov [edi+3], ch - add edi, 4 - sub cl, 4 - cmp cl, 4 - jge loc_46588E - loc_4658C0: - cmp cl, 2 - jl loc_4658DB - mov dl, [esi] - mov ch, [ebx+edx] - mov [edi], ch - mov dl, [esi+1] - mov ch, [ebx+edx] - mov [edi+1], ch - add esi, 2 - add edi, 2 - loc_4658DB: - sub edi, 320h - sub ebp, 2 - jge loc_46586D - mov ebp, 10h - loc_4658EB: - cmp edi, gpBufEnd - jb loc_465933 - mov ecx, 20h - loc_4658F8: - mov eax, [esi] - add esi, 4 - mov dl, al - mov ch, [ebx+edx] - mov dl, ah - ror eax, 10h - mov [edi], ch - mov ch, [ebx+edx] - mov dl, al - mov [edi+1], ch - mov ch, [ebx+edx] - mov dl, ah - mov [edi+2], ch - mov ch, [ebx+edx] - mov [edi+3], ch - add edi, 4 - sub cl, 4 - cmp cl, 4 - jge loc_4658F8 - sub edi, 320h - dec ebp - jnz loc_4658EB - loc_465933: - pop ebp - jmp loc_465F33 - loc_465939: - push ebp - mov ebp, 1Eh - loc_46593F: - cmp edi, gpBufEnd - jb loc_465A05 - mov ecx, 20h - sub ecx, ebp - cmp cl, 4 - jl loc_465989 - loc_465957: - mov eax, [esi] - add esi, 4 - mov dl, al - mov ch, [ebx+edx] - mov dl, ah - ror eax, 10h - mov [edi], ch - mov ch, [ebx+edx] - mov dl, al - mov [edi+1], ch - mov ch, [ebx+edx] - mov dl, ah - mov [edi+2], ch - mov ch, [ebx+edx] - mov [edi+3], ch - add edi, 4 - sub cl, 4 - cmp cl, 4 - jge loc_465957 - loc_465989: - cmp cl, 2 - jl loc_4659A4 - mov dl, [esi] - mov ch, [ebx+edx] - mov [edi], ch - mov dl, [esi+1] - mov ch, [ebx+edx] - mov [edi+1], ch - add esi, 2 - add edi, 2 - loc_4659A4: - mov edx, esi - and edx, 2 - add esi, edx - sub edi, 320h - add edi, ebp - sub ebp, 2 - jge loc_46593F - mov ebp, 10h - loc_4659BD: - cmp edi, gpBufEnd - jb loc_465A05 - mov ecx, 20h - loc_4659CA: - mov eax, [esi] - add esi, 4 - mov dl, al - mov ch, [ebx+edx] - mov dl, ah - ror eax, 10h - mov [edi], ch - mov ch, [ebx+edx] - mov dl, al - mov [edi+1], ch - mov ch, [ebx+edx] - mov dl, ah - mov [edi+2], ch - mov ch, [ebx+edx] - mov [edi+3], ch - add edi, 4 - sub cl, 4 - cmp cl, 4 - jge loc_4659CA - sub edi, 320h - dec ebp - jnz loc_4659BD - loc_465A05: - pop ebp - jmp loc_465F33 - loc_465A0B: - mov edx, 20h - loc_465A10: - cmp edi, gpBufEnd - jb loc_465F33 - mov ecx, 8 - loc_465A21: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465A21 - sub edi, 320h - dec edx - jnz loc_465A10 - jmp loc_465F33 - loc_465A3C: - push ebp - mov ebp, 20h - loc_465A42: - mov edx, 20h - loc_465A47: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js loc_465A91 - sub edx, eax - cmp edi, gpBufEnd - jb loc_465AA2 - mov ecx, eax - shr ecx, 1 - jnb loc_465A6A - mov al, [esi] - inc esi - mov [edi], al - inc edi - test ecx, ecx - jz loc_465A8B - loc_465A6A: - shr ecx, 1 - jnb loc_465A7E - mov ax, [esi] - add esi, 2 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_465A8B - loc_465A7E: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465A7E - loc_465A8B: - test edx, edx - jz loc_465A99 - jmp loc_465A47 - loc_465A91: - neg al - add edi, eax - sub edx, eax - jnz loc_465A47 - loc_465A99: - sub edi, 320h - dec ebp - jnz loc_465A42 - loc_465AA2: - pop ebp - jmp loc_465F33 - loc_465AA8: - mov edx, 1Eh - loc_465AAD: - cmp edi, gpBufEnd - jb loc_465F33 - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_465AD8 - mov ax, [esi+2] - add esi, 4 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_465AE5 - loc_465AD8: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465AD8 - loc_465AE5: - sub edi, 320h - sub edx, 2 - jge loc_465AAD - mov edx, 2 - loc_465AF5: - cmp edi, gpBufEnd - jb loc_465F33 - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_465B20 - mov ax, [esi+2] - add esi, 4 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_465B2D - loc_465B20: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465B20 - loc_465B2D: - sub edi, 320h - add edx, 2 - cmp edx, 20h - jnz loc_465AF5 - jmp loc_465F33 - loc_465B40: - push ebp - mov edx, 1Eh - loc_465B46: - cmp edi, gpBufEnd - jb loc_465BD4 - mov ecx, 20h - sub ecx, edx - mov ebp, ecx - shr ecx, 2 - jz loc_465B6D - loc_465B60: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465B60 - loc_465B6D: - and ebp, 2 - jz loc_465B7E - mov ax, [esi] - add esi, 4 - mov [edi], ax - add edi, 2 - loc_465B7E: - sub edi, 320h - add edi, edx - sub edx, 2 - jge loc_465B46 - mov edx, 2 - loc_465B90: - cmp edi, gpBufEnd - jb loc_465BD4 - mov ecx, 20h - sub ecx, edx - mov ebp, ecx - shr ecx, 2 - jz loc_465BB3 - loc_465BA6: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465BA6 - loc_465BB3: - and ebp, 2 - jz loc_465BC4 - mov ax, [esi] - add esi, 4 - mov [edi], ax - add edi, 2 - loc_465BC4: - sub edi, 320h - add edi, edx - add edx, 2 - cmp edx, 20h - jnz loc_465B90 - loc_465BD4: - pop ebp - jmp loc_465F33 - loc_465BDA: - mov edx, 1Eh - loc_465BDF: - cmp edi, gpBufEnd - jb loc_465F33 - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_465C0A - mov ax, [esi+2] - add esi, 4 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_465C17 - loc_465C0A: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465C0A - loc_465C17: - sub edi, 320h - sub edx, 2 - jge loc_465BDF - mov edx, 10h - loc_465C27: - cmp edi, gpBufEnd - jb loc_465F33 - mov ecx, 8 - loc_465C38: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465C38 - sub edi, 320h - dec edx - jnz loc_465C27 - jmp loc_465F33 - loc_465C53: - push ebp - mov edx, 1Eh - loc_465C59: - cmp edi, gpBufEnd - jb loc_465CC2 - mov ecx, 20h - sub ecx, edx - mov ebp, ecx - shr ecx, 2 - jz loc_465C7C - loc_465C6F: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465C6F - loc_465C7C: - and ebp, 2 - jz loc_465C8D - mov ax, [esi] - add esi, 4 - mov [edi], ax - add edi, 2 - loc_465C8D: - sub edi, 320h - add edi, edx - sub edx, 2 - jge loc_465C59 - mov edx, 10h - loc_465C9F: - cmp edi, gpBufEnd - jb loc_465CC2 - mov ecx, 8 - loc_465CAC: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465CAC - sub edi, 320h - dec edx - jnz loc_465C9F - loc_465CC2: - pop ebp - jmp loc_465F33 - loc_465CC8: - mov edx, 20h - xor eax, eax - loc_465CCF: - cmp edi, gpBufEnd - jb loc_465F33 - mov ecx, 8 - loc_465CE0: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465CE0 - sub edi, 320h - dec edx - jnz loc_465CCF - jmp loc_465F33 - loc_465CF6: - push ebp - mov ebp, 20h - loc_465CFC: - mov edx, 20h - loc_465D01: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js loc_465D41 - sub edx, eax - cmp edi, gpBufEnd - jb loc_465D52 - mov ecx, eax - add esi, ecx - xor eax, eax - shr ecx, 1 - jnb loc_465D25 - mov [edi], al - inc edi - test ecx, ecx - jz loc_465D3B - loc_465D25: - shr ecx, 1 - jnb loc_465D33 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_465D3B - loc_465D33: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465D33 - loc_465D3B: - test edx, edx - jz loc_465D49 - jmp loc_465D01 - loc_465D41: - neg al - add edi, eax - sub edx, eax - jnz loc_465D01 - loc_465D49: - sub edi, 320h - dec ebp - jnz loc_465CFC - loc_465D52: - pop ebp - jmp loc_465F33 - loc_465D58: - mov edx, 1Eh - xor eax, eax - loc_465D5F: - cmp edi, gpBufEnd - jb loc_465F33 - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_465D83 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_465D8B - loc_465D83: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465D83 - loc_465D8B: - sub edi, 320h - test edx, edx - jz loc_465D9A - sub edx, 2 - jmp loc_465D5F - loc_465D9A: - mov edx, 2 - loc_465D9F: - cmp edi, gpBufEnd - jb loc_465F33 - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_465DC3 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_465DCB - loc_465DC3: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465DC3 - loc_465DCB: - sub edi, 320h - add edx, 2 - cmp edx, 20h - jnz loc_465D9F - jmp loc_465F33 - loc_465DDE: - mov edx, 1Eh - xor eax, eax - loc_465DE5: - cmp edi, gpBufEnd - jb loc_465F33 - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_465E07 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_465E0F - loc_465E07: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465E07 - loc_465E0F: - sub edi, 320h - test edx, edx - jz loc_465E20 - add edi, edx - sub edx, 2 - jmp loc_465DE5 - loc_465E20: - mov edx, 2 - loc_465E25: - cmp edi, gpBufEnd - jb loc_465F33 - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_465E47 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_465E4F - loc_465E47: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465E47 - loc_465E4F: - sub edi, 320h - add edi, edx - add edx, 2 - cmp edx, 20h - jnz loc_465E25 - jmp loc_465F33 - loc_465E64: - mov edx, 1Eh - xor eax, eax - loc_465E6B: - cmp edi, gpBufEnd - jb loc_465F33 - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_465E8F - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_465E97 - loc_465E8F: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465E8F - loc_465E97: - sub edi, 320h - test edx, edx - jz loc_465EA6 - sub edx, 2 - jmp loc_465E6B - loc_465EA6: - mov edx, 10h - loc_465EAB: - cmp edi, gpBufEnd - jb $+82h - mov ecx, 8 - loc_465EBC: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465EBC - sub edi, 320h - dec edx - jnz loc_465EAB - jmp loc_465F33 - loc_465ECF: - mov edx, 1Eh - xor eax, eax - loc_465ED6: - cmp edi, gpBufEnd - jb loc_465F33 - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_465EF4 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_465EFC - loc_465EF4: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465EF4 - loc_465EFC: - sub edi, 320h - test edx, edx - jz loc_465F0D - add edi, edx - sub edx, 2 - jmp loc_465ED6 - loc_465F0D: - mov edx, 10h - loc_465F12: - cmp edi, gpBufEnd - jb loc_465F33 - mov ecx, 8 - loc_465F1F: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_465F1F - sub edi, 320h - dec edx - jnz loc_465F12 - jmp loc_465F33 - pop eax - loc_465F33: - pop esi - pop edi - pop edx - pop ebx - retn - } -} - -__declspec(naked) void drawTopArchesLowerScreen(BYTE *pBuff) -{ - __asm { - push ebx - push edx - push edi - push esi - mov edi, offset SpeedFrameTbl - mov gpCelFrame, edi - mov edi, ecx - mov eax, light_table_index - test al, al - jz loc_466042 - cmp al, lightmax - jz loc_4660A2 - mov eax, level_cel_block - and eax, 8000h - jnz loc_465FD6 - mov ebx, pDungeonCels - mov esi, ebx - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 2 - add ebx, eax - add esi, [ebx] - mov ebx, light_table_index - shl ebx, 8 - add ebx, pLightTbl - mov eax, level_cel_block - mov al, ah - shr eax, 4 - and eax, 0Fh - jz loc_46612D - cmp ax, 1 - jz loc_4661AD - cmp ax, 2 - jz loc_466310 - cmp ax, 3 - jz loc_466611 - cmp ax, 4 - jz loc_466912 - jmp loc_466B11 - loc_465FD6: - mov esi, gpCelFrame - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 4 - add eax, light_table_index - shl eax, 2 - add esi, eax - mov eax, [esi] - mov esi, pSpeedCels - add esi, eax - mov eax, level_cel_block - mov al, ah - shr eax, 4 - and eax, 0Fh - loc_46600B: - cmp ax, 8 - jz loc_466D10 - cmp ax, 9 - jz loc_466D7F - cmp ax, 0Ah - jz loc_466E62 - cmp ax, 0Bh - jz loc_46701C - cmp ax, 0Ch - jz loc_4671E1 - jmp loc_46732D - loc_466042: - mov eax, level_cel_block - and eax, 8000h - jz loc_466074 - mov esi, gpCelFrame - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 6 - add esi, eax - mov eax, level_cel_block - and eax, 0F000h - add eax, [esi] - mov level_cel_block, eax - loc_466074: - mov ebx, pDungeonCels - mov esi, ebx - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 2 - add ebx, eax - add esi, [ebx] - mov eax, level_cel_block - mov al, ah - shr eax, 4 - and eax, 7 - add eax, 8 - jmp loc_46600B - loc_4660A2: - mov eax, level_cel_block - and eax, 8000h - jz loc_4660D4 - mov esi, gpCelFrame - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 6 - add esi, eax - mov eax, level_cel_block - and eax, 0F000h - add eax, [esi] - mov level_cel_block, eax - loc_4660D4: - mov ebx, pDungeonCels - mov esi, ebx - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 2 - add ebx, eax - add esi, [ebx] - mov eax, level_cel_block - mov al, ah - shr eax, 4 - and eax, 7 - jz loc_46747D - cmp ax, 1 - jz loc_4674D9 - cmp ax, 2 - jz loc_467599 - cmp ax, 3 - jz loc_467692 - cmp ax, 4 - jz loc_46778F - jmp loc_46786B - loc_46612D: - push ebp - mov ebp, 10h - loc_466133: - cmp edi, gpBufEnd - jb loc_466143 - add esi, 20h - add edi, 20h - jmp loc_466166 - loc_466143: - mov ecx, 8 - loc_466148: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_466148 - loc_466166: - sub edi, 320h - cmp edi, gpBufEnd - jb loc_46617C - add esi, 20h - add edi, 20h - jmp loc_46619E - loc_46617C: - mov ecx, 8 - loc_466181: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_466181 - loc_46619E: - sub edi, 320h - dec ebp - jnz loc_466133 - pop ebp - jmp loc_467944 - loc_4661AD: - push ebp - mov eax, edi - and eax, 1 - mov WorldBoolFlag, eax - mov ecx, 20h - loc_4661BD: - push ecx - mov ebp, 20h - loc_4661C3: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js loc_4662E2 - sub ebp, eax - cmp edi, gpBufEnd - jb loc_4661E3 - add esi, eax - add edi, eax - jmp loc_4662D9 - loc_4661E3: - mov ecx, eax - mov eax, edi - and eax, 1 - cmp eax, WorldBoolFlag - jnz loc_466263 - shr ecx, 1 - jb loc_46622D - shr ecx, 1 - jnb loc_466209 - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_466209: - test cl, cl - jz loc_46622B - loc_46620D: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_46620D - loc_46622B: - jmp loc_466261 - loc_46622D: - inc esi - inc edi - shr ecx, 1 - jnb loc_466240 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_466240: - test cl, cl - jz loc_466261 - loc_466244: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_466244 - loc_466261: - jmp loc_4662D9 - loc_466263: - shr ecx, 1 - jb loc_46629B - shr ecx, 1 - jnb loc_466278 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_466278: - test cl, cl - jz loc_466299 - loc_46627C: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_46627C - loc_466299: - jmp loc_4662D9 - loc_46629B: - mov dl, [esi] - mov dl, [ebx+edx] - inc esi - mov [edi], dl - inc edi - shr ecx, 1 - jnb loc_4662B7 - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_4662B7: - test cl, cl - jz loc_4662D9 - loc_4662BB: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_4662BB - loc_4662D9: - test ebp, ebp - jz loc_4662EE - jmp loc_4661C3 - loc_4662E2: - neg al - add edi, eax - sub ebp, eax - jnz loc_4661C3 - loc_4662EE: - pop ecx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - sub edi, 320h - dec ecx - jnz loc_4661BD - pop ebp - jmp loc_467944 - loc_466310: - push ebp - xor eax, eax - mov WorldBoolFlag, eax - mov ebp, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_466370 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_46635F - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub ebp, ecx - mov eax, WorldBoolFlag - shr ecx, 1 - add eax, ecx - mov WorldBoolFlag, eax - jmp loc_466370 - loc_46635F: - sub edi, 3000h - add esi, 120h - jmp loc_466490 - loc_466370: - add edi, ebp - mov ecx, 20h - sub ecx, ebp - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_466404 - mov edx, ecx - and edx, 2 - add esi, edx - shr ecx, 1 - jb loc_4663CB - shr ecx, 1 - jnb loc_4663A7 - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_4663A7: - test cl, cl - jz loc_4663C9 - loc_4663AB: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_4663AB - loc_4663C9: - jmp loc_4663FF - loc_4663CB: - inc esi - inc edi - shr ecx, 1 - jnb loc_4663DE - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_4663DE: - test cl, cl - jz loc_4663FF - loc_4663E2: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_4663E2 - loc_4663FF: - jmp $+82h - loc_466404: - mov edx, ecx - and edx, 2 - add esi, edx - shr ecx, 1 - jb loc_466443 - shr ecx, 1 - jnb loc_466420 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_466420: - test cl, cl - jz loc_466441 - loc_466424: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_466424 - loc_466441: - jmp loc_466481 - loc_466443: - mov dl, [esi] - mov dl, [ebx+edx] - inc esi - mov [edi], dl - inc edi - shr ecx, 1 - jnb loc_46645F - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_46645F: - test cl, cl - jz loc_466481 - loc_466463: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_466463 - loc_466481: - sub edi, 320h - sub ebp, 2 - jge loc_466370 - loc_466490: - mov ebp, 2 - mov eax, edi - sub eax, gpBufEnd - jb loc_4664E8 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Ah - jg loc_4664D7 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_2[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - add ebp, ecx - mov eax, WorldBoolFlag - shr ecx, 1 - add eax, ecx - mov WorldBoolFlag, eax - jmp loc_4664E8 - loc_4664D7: - sub edi, 2D00h - add esi, 100h - jmp loc_46660B - loc_4664E8: - add edi, ebp - mov ecx, 20h - sub ecx, ebp - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_46657C - mov edx, ecx - and edx, 2 - add esi, edx - shr ecx, 1 - jb loc_466543 - shr ecx, 1 - jnb loc_46651F - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_46651F: - test cl, cl - jz loc_466541 - loc_466523: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_466523 - loc_466541: - jmp loc_466577 - loc_466543: - inc esi - inc edi - shr ecx, 1 - jnb loc_466556 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_466556: - test cl, cl - jz loc_466577 - loc_46655A: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_46655A - loc_466577: - jmp $+82h - loc_46657C: - mov edx, ecx - and edx, 2 - add esi, edx - shr ecx, 1 - jb loc_4665BB - shr ecx, 1 - jnb loc_466598 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_466598: - test cl, cl - jz loc_4665B9 - loc_46659C: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_46659C - loc_4665B9: - jmp loc_4665F9 - loc_4665BB: - mov dl, [esi] - mov dl, [ebx+edx] - inc esi - mov [edi], dl - inc edi - shr ecx, 1 - jnb loc_4665D7 - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_4665D7: - test cl, cl - jz loc_4665F9 - loc_4665DB: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_4665DB - loc_4665F9: - sub edi, 320h - add ebp, 2 - cmp ebp, 20h - jnz loc_4664E8 - loc_46660B: - pop ebp - jmp loc_467944 - loc_466611: - push ebp - xor eax, eax - mov WorldBoolFlag, eax - mov ebp, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_466671 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_466660 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub ebp, ecx - mov eax, WorldBoolFlag - shr ecx, 1 - add eax, ecx - mov WorldBoolFlag, eax - jmp loc_466671 - loc_466660: - sub edi, 3000h - add esi, 120h - jmp loc_466791 - loc_466671: - mov ecx, 20h - sub ecx, ebp - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_466703 - shr ecx, 1 - jb loc_4666C3 - shr ecx, 1 - jnb loc_46669F - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_46669F: - test cl, cl - jz loc_4666C1 - loc_4666A3: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_4666A3 - loc_4666C1: - jmp loc_4666F7 - loc_4666C3: - inc esi - inc edi - shr ecx, 1 - jnb loc_4666D6 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_4666D6: - test cl, cl - jz loc_4666F7 - loc_4666DA: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_4666DA - loc_4666F7: - mov edx, esi - and edx, 2 - add esi, edx - jmp $+82h - loc_466703: - shr ecx, 1 - jb loc_46673B - shr ecx, 1 - jnb loc_466718 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_466718: - test cl, cl - jz loc_466739 - loc_46671C: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_46671C - loc_466739: - jmp loc_466779 - loc_46673B: - mov dl, [esi] - mov dl, [ebx+edx] - inc esi - mov [edi], dl - inc edi - shr ecx, 1 - jnb loc_466757 - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_466757: - test cl, cl - jz loc_466779 - loc_46675B: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_46675B - loc_466779: - mov edx, esi - and edx, 2 - add esi, edx - // loc_466780: - sub edi, 320h - add edi, ebp - sub ebp, 2 - jge loc_466671 - loc_466791: - mov ebp, 2 - mov eax, edi - sub eax, gpBufEnd - jb loc_4667E9 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Ah - jg loc_4667D8 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_2[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - add ebp, ecx - mov eax, WorldBoolFlag - shr ecx, 1 - add eax, ecx - mov WorldBoolFlag, eax - jmp loc_4667E9 - loc_4667D8: - sub edi, 2D00h - add esi, 100h - jmp loc_46690C - loc_4667E9: - mov ecx, 20h - sub ecx, ebp - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_46687B - shr ecx, 1 - jb loc_46683B - shr ecx, 1 - jnb loc_466817 - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_466817: - test cl, cl - jz loc_466839 - loc_46681B: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_46681B - loc_466839: - jmp loc_46686F - loc_46683B: - inc esi - inc edi - shr ecx, 1 - jnb loc_46684E - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_46684E: - test cl, cl - jz loc_46686F - loc_466852: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_466852 - loc_46686F: - mov edx, esi - and edx, 2 - add esi, edx - jmp $+82h - loc_46687B: - shr ecx, 1 - jb loc_4668B3 - shr ecx, 1 - jnb loc_466890 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_466890: - test cl, cl - jz loc_4668B1 - loc_466894: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_466894 - loc_4668B1: - jmp loc_4668F1 - loc_4668B3: - mov dl, [esi] - mov dl, [ebx+edx] - inc esi - mov [edi], dl - inc edi - shr ecx, 1 - jnb loc_4668CF - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_4668CF: - test cl, cl - jz loc_4668F1 - loc_4668D3: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_4668D3 - loc_4668F1: - mov edx, esi - and edx, 2 - add esi, edx - // loc_4668F8: - sub edi, 320h - add edi, ebp - add ebp, 2 - cmp ebp, 20h - jnz loc_4667E9 - loc_46690C: - pop ebp - jmp loc_467944 - loc_466912: - push ebp - xor eax, eax - mov WorldBoolFlag, eax - mov ebp, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_466972 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_466961 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub ebp, ecx - mov eax, WorldBoolFlag - shr ecx, 1 - add eax, ecx - mov WorldBoolFlag, eax - jmp loc_466972 - loc_466961: - sub edi, 3000h - add esi, 120h - jmp loc_466A92 - loc_466972: - add edi, ebp - mov ecx, 20h - sub ecx, ebp - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_466A06 - mov edx, ecx - and edx, 2 - add esi, edx - shr ecx, 1 - jb loc_4669CD - shr ecx, 1 - jnb loc_4669A9 - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_4669A9: - test cl, cl - jz loc_4669CB - loc_4669AD: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_4669AD - loc_4669CB: - jmp loc_466A01 - loc_4669CD: - inc esi - inc edi - shr ecx, 1 - jnb loc_4669E0 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_4669E0: - test cl, cl - jz loc_466A01 - loc_4669E4: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_4669E4 - loc_466A01: - jmp $+82h - loc_466A06: - mov edx, ecx - and edx, 2 - add esi, edx - shr ecx, 1 - jb loc_466A45 - shr ecx, 1 - jnb loc_466A22 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_466A22: - test cl, cl - jz loc_466A43 - loc_466A26: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_466A26 - loc_466A43: - jmp loc_466A83 - loc_466A45: - mov dl, [esi] - mov dl, [ebx+edx] - inc esi - mov [edi], dl - inc edi - shr ecx, 1 - jnb loc_466A61 - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_466A61: - test cl, cl - jz loc_466A83 - loc_466A65: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_466A65 - loc_466A83: - sub edi, 320h - sub ebp, 2 - jge loc_466972 - loc_466A92: - mov ebp, 8 - loc_466A97: - cmp edi, gpBufEnd - jb loc_466AA7 - add esi, 20h - add edi, 20h - jmp loc_466ACA - loc_466AA7: - mov ecx, 8 - loc_466AAC: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_466AAC - loc_466ACA: - sub edi, 320h - cmp edi, gpBufEnd - jb loc_466AE0 - add esi, 20h - add edi, 20h - jmp loc_466B02 - loc_466AE0: - mov ecx, 8 - loc_466AE5: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_466AE5 - loc_466B02: - sub edi, 320h - dec ebp - jnz loc_466A97 - pop ebp - jmp loc_467944 - loc_466B11: - push ebp - xor eax, eax - mov WorldBoolFlag, eax - mov ebp, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_466B71 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_466B60 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub ebp, ecx - mov eax, WorldBoolFlag - shr ecx, 1 - add eax, ecx - mov WorldBoolFlag, eax - jmp loc_466B71 - loc_466B60: - sub edi, 3000h - add esi, 120h - jmp loc_466C91 - loc_466B71: - mov ecx, 20h - sub ecx, ebp - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_466C03 - shr ecx, 1 - jb loc_466BC3 - shr ecx, 1 - jnb loc_466B9F - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_466B9F: - test cl, cl - jz loc_466BC1 - loc_466BA3: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_466BA3 - loc_466BC1: - jmp loc_466BF7 - loc_466BC3: - inc esi - inc edi - shr ecx, 1 - jnb loc_466BD6 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_466BD6: - test cl, cl - jz loc_466BF7 - loc_466BDA: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_466BDA - loc_466BF7: - mov edx, esi - and edx, 2 - add esi, edx - jmp $+82h - loc_466C03: - shr ecx, 1 - jb loc_466C3B - shr ecx, 1 - jnb loc_466C18 - mov dl, [esi] - mov dl, [ebx+edx] - add esi, 2 - mov [edi], dl - add edi, 2 - loc_466C18: - test cl, cl - jz loc_466C39 - loc_466C1C: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_466C1C - loc_466C39: - jmp loc_466C79 - loc_466C3B: - mov dl, [esi] - mov dl, [ebx+edx] - inc esi - mov [edi], dl - inc edi - shr ecx, 1 - jnb loc_466C57 - mov dl, [esi+1] - mov dl, [ebx+edx] - add esi, 2 - mov [edi+1], dl - add edi, 2 - loc_466C57: - test cl, cl - jz loc_466C79 - loc_466C5B: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_466C5B - loc_466C79: - mov edx, esi - and edx, 2 - add esi, edx - // loc_466C80: - sub edi, 320h - add edi, ebp - sub ebp, 2 - jge loc_466B71 - loc_466C91: - mov ebp, 8 - loc_466C96: - cmp edi, gpBufEnd - jb loc_466CA6 - add esi, 20h - add edi, 20h - jmp loc_466CC9 - loc_466CA6: - mov ecx, 8 - loc_466CAB: - mov eax, [esi] - add esi, 4 - mov dl, ah - shr eax, 10h - mov dl, [ebx+edx] - mov [edi+1], dl - mov dl, ah - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-1], dl - jnz loc_466CAB - loc_466CC9: - sub edi, 320h - cmp edi, gpBufEnd - jb loc_466CDF - add esi, 20h - add edi, 20h - jmp loc_466D01 - loc_466CDF: - mov ecx, 8 - loc_466CE4: - mov eax, [esi] - add esi, 4 - mov dl, al - shr eax, 10h - mov dl, [ebx+edx] - mov [edi], dl - mov dl, al - add edi, 4 - mov dl, [ebx+edx] - dec ecx - mov [edi-2], dl - jnz loc_466CE4 - loc_466D01: - sub edi, 320h - dec ebp - jnz loc_466C96 - pop ebp - jmp loc_467944 - loc_466D10: - mov edx, 10h - loc_466D15: - cmp edi, gpBufEnd - jb loc_466D25 - add esi, 20h - add edi, 20h - jmp loc_466D41 - loc_466D25: - mov ecx, 8 - loc_466D2A: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_466D2A - loc_466D41: - sub edi, 320h - cmp edi, gpBufEnd - jb loc_466D57 - add esi, 20h - add edi, 20h - jmp loc_466D71 - loc_466D57: - mov ecx, 8 - loc_466D5C: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_466D5C - loc_466D71: - sub edi, 320h - dec edx - jnz loc_466D15 - jmp loc_467944 - loc_466D7F: - mov eax, edi - and eax, 1 - mov WorldBoolFlag, eax - mov ecx, 20h - loc_466D8E: - push ecx - mov edx, 20h - loc_466D94: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js loc_466E35 - sub edx, eax - cmp edi, gpBufEnd - jb loc_466DB1 - add esi, eax - add edi, eax - jmp loc_466E2C - loc_466DB1: - mov ecx, eax - mov eax, edi - and eax, 1 - cmp eax, WorldBoolFlag - jnz loc_466DF5 - shr ecx, 1 - jnb loc_466DCC - inc esi - inc edi - test ecx, ecx - jz loc_466E2C - jmp loc_466E05 - loc_466DCC: - shr ecx, 1 - jnb loc_466DDC - inc esi - inc edi - mov al, [esi] - inc esi - mov [edi], al - inc edi - test ecx, ecx - jz loc_466E2C - loc_466DDC: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_466DDC - jmp loc_466E2C - loc_466DF5: - shr ecx, 1 - jnb loc_466E05 - mov al, [esi] - inc esi - mov [edi], al - inc edi - test ecx, ecx - jz loc_466E2C - jmp loc_466DCC - loc_466E05: - shr ecx, 1 - jnb loc_466E17 - mov al, [esi] - add esi, 2 - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_466E2C - loc_466E17: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_466E17 - loc_466E2C: - test edx, edx - jz loc_466E41 - jmp loc_466D94 - loc_466E35: - neg al - add edi, eax - sub edx, eax - jnz loc_466D94 - loc_466E41: - pop ecx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - sub edi, 320h - dec ecx - jnz loc_466D8E - jmp loc_467944 - loc_466E62: - xor eax, eax - mov WorldBoolFlag, eax - mov edx, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_466EC1 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_466EB0 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub edx, ecx - mov eax, WorldBoolFlag - shr ecx, 1 - add eax, ecx - mov WorldBoolFlag, eax - jmp loc_466EC1 - loc_466EB0: - sub edi, 3000h - add esi, 120h - jmp $+83h - loc_466EC1: - add edi, edx - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_466F0A - shr ecx, 2 - jnb loc_466EF1 - mov ax, [esi+2] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - inc edi - test ecx, ecx - jz loc_466F34 - loc_466EF1: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_466EF1 - jmp loc_466F34 - loc_466F0A: - shr ecx, 2 - jnb loc_466F1F - mov ax, [esi+2] - add esi, 4 - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_466F34 - loc_466F1F: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_466F1F - loc_466F34: - sub edi, 320h - sub edx, 2 - jge loc_466EC1 - // loc_466F3F: - mov edx, 2 - mov eax, edi - sub eax, gpBufEnd - jb loc_466F97 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Ah - jg loc_466F86 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_2[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - add edx, ecx - mov eax, WorldBoolFlag - shr ecx, 1 - add eax, ecx - mov WorldBoolFlag, eax - jmp loc_466F97 - loc_466F86: - sub edi, 2D00h - add esi, 100h - jmp loc_467944 - loc_466F97: - add edi, edx - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_466FE0 - shr ecx, 2 - jnb loc_466FC7 - mov ax, [esi+2] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - inc edi - test ecx, ecx - jz loc_467009 - loc_466FC7: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_466FC7 - jmp loc_467009 - loc_466FE0: - shr ecx, 2 - jnb loc_466FF4 - mov ax, [esi+2] - add esi, 4 - mov [edi], al - add edi, 2 - dec ecx - jz loc_467009 - loc_466FF4: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_466FF4 - loc_467009: - sub edi, 320h - add edx, 2 - cmp edx, 20h - jnz loc_466F97 - jmp loc_467944 - loc_46701C: - push ebp - xor eax, eax - mov WorldBoolFlag, eax - mov edx, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_46707C - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_46706B - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub edx, ecx - mov eax, WorldBoolFlag - shr ecx, 1 - add eax, ecx - mov WorldBoolFlag, eax - jmp loc_46707C - loc_46706B: - sub edi, 3000h - add esi, 120h - jmp loc_4670FC - loc_46707C: - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov ebp, ecx - mov WorldBoolFlag, eax - jz loc_4670C5 - shr ecx, 2 - jz loc_4670B1 - loc_46709A: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_46709A - loc_4670B1: - and ebp, 2 - jz loc_4670EF - mov ax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - inc edi - jmp loc_4670EF - loc_4670C5: - shr ecx, 2 - jz loc_4670DF - loc_4670CA: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_4670CA - loc_4670DF: - and ebp, 2 - jz loc_4670EF - mov ax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - loc_4670EF: - sub edi, 320h - add edi, edx - sub edx, 2 - jge loc_46707C - loc_4670FC: - mov edx, 2 - mov eax, edi - sub eax, gpBufEnd - jb loc_467154 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Ah - jg loc_467143 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_2[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - add edx, ecx - mov eax, WorldBoolFlag - shr ecx, 1 - add eax, ecx - mov WorldBoolFlag, eax - jmp loc_467154 - loc_467143: - sub edi, 2D00h - add esi, 100h - jmp loc_4671DB - loc_467154: - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov ebp, ecx - mov WorldBoolFlag, eax - jz loc_46719D - shr ecx, 2 - jz loc_467189 - loc_467172: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_467172 - loc_467189: - and ebp, 2 - jz loc_4671C7 - mov ax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - inc edi - jmp loc_4671C7 - loc_46719D: - shr ecx, 2 - jz loc_4671B7 - loc_4671A2: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_4671A2 - loc_4671B7: - and ebp, 2 - jz loc_4671C7 - mov ax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - loc_4671C7: - sub edi, 320h - add edi, edx - add edx, 2 - cmp edx, 20h - jnz loc_467154 - loc_4671DB: - pop ebp - jmp loc_467944 - loc_4671E1: - xor eax, eax - mov WorldBoolFlag, eax - mov edx, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_467240 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_46722F - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub edx, ecx - mov eax, WorldBoolFlag - shr ecx, 1 - add eax, ecx - mov WorldBoolFlag, eax - jmp loc_467240 - loc_46722F: - sub edi, 3000h - add esi, 120h - jmp $+83h - loc_467240: - add edi, edx - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_467289 - shr ecx, 2 - jnb loc_467270 - mov ax, [esi+2] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - inc edi - test ecx, ecx - jz loc_4672B3 - loc_467270: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_467270 - jmp loc_4672B3 - loc_467289: - shr ecx, 2 - jnb loc_46729E - mov ax, [esi+2] - add esi, 4 - mov [edi], al - test ecx, ecx - lea edi, [edi+2] - jz loc_4672B3 - loc_46729E: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - dec ecx - lea edi, [edi+2] - jnz loc_46729E - loc_4672B3: - sub edi, 320h - sub edx, 2 - jge loc_467240 - // loc_4672BE: - mov edx, 8 - loc_4672C3: - cmp edi, gpBufEnd - jb loc_4672D3 - add esi, 20h - add edi, 20h - jmp loc_4672EF - loc_4672D3: - mov ecx, 8 - loc_4672D8: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_4672D8 - loc_4672EF: - sub edi, 320h - cmp edi, gpBufEnd - jb loc_467305 - add esi, 20h - add edi, 20h - jmp loc_46731F - loc_467305: - mov ecx, 8 - loc_46730A: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_46730A - loc_46731F: - sub edi, 320h - dec edx - jnz loc_4672C3 - jmp loc_467944 - loc_46732D: - push ebp - xor eax, eax - mov WorldBoolFlag, eax - mov edx, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_46738D - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_46737C - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub edx, ecx - mov eax, WorldBoolFlag - shr ecx, 1 - add eax, ecx - mov WorldBoolFlag, eax - jmp loc_46738D - loc_46737C: - sub edi, 3000h - add esi, 120h - jmp loc_46740D - loc_46738D: - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov ebp, ecx - mov WorldBoolFlag, eax - jz loc_4673D6 - shr ecx, 2 - jz loc_4673C2 - loc_4673AB: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_4673AB - loc_4673C2: - and ebp, 2 - jz loc_467400 - mov ax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - inc edi - jmp loc_467400 - loc_4673D6: - shr ecx, 2 - jz loc_4673F0 - loc_4673DB: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_4673DB - loc_4673F0: - and ebp, 2 - jz loc_467400 - mov ax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - loc_467400: - sub edi, 320h - add edi, edx - sub edx, 2 - jge loc_46738D - loc_46740D: - mov edx, 8 - loc_467412: - cmp edi, gpBufEnd - jb loc_467422 - add esi, 20h - add edi, 20h - jmp loc_46743E - loc_467422: - mov ecx, 8 - loc_467427: - mov eax, [esi] - add esi, 4 - inc edi - ror eax, 8 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - inc edi - dec ecx - jnz loc_467427 - loc_46743E: - sub edi, 320h - cmp edi, gpBufEnd - jb loc_467454 - add esi, 20h - add edi, 20h - jmp loc_46746E - loc_467454: - mov ecx, 8 - loc_467459: - mov eax, [esi] - add esi, 4 - mov [edi], al - add edi, 2 - ror eax, 10h - mov [edi], al - add edi, 2 - dec ecx - jnz loc_467459 - loc_46746E: - sub edi, 320h - dec edx - jnz loc_467412 - pop ebp - jmp loc_467944 - loc_46747D: - mov edx, 10h - xor eax, eax - loc_467484: - cmp edi, gpBufEnd - jb loc_467494 - add esi, 20h - add edi, 20h - jmp loc_4674A5 - loc_467494: - mov ecx, 8 - loc_467499: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_467499 - loc_4674A5: - sub edi, 320h - cmp edi, gpBufEnd - jb loc_4674BB - add esi, 20h - add edi, 20h - jmp loc_4674CB - loc_4674BB: - mov ecx, 8 - loc_4674C0: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_4674C0 - loc_4674CB: - sub edi, 320h - dec edx - jnz loc_467484 - jmp loc_467944 - loc_4674D9: - mov eax, edi - and eax, 1 - mov WorldBoolFlag, eax - mov ecx, 20h - loc_4674E8: - push ecx - mov edx, 20h - loc_4674EE: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js loc_46756C - sub edx, eax - cmp edi, gpBufEnd - jb loc_467507 - add esi, eax - add edi, eax - jmp loc_467566 - loc_467507: - mov ecx, eax - add esi, ecx - mov eax, edi - and eax, 1 - cmp eax, WorldBoolFlag - jnz loc_46753F - xor eax, eax - shr ecx, 1 - jnb loc_467525 - inc edi - test ecx, ecx - jz loc_467566 - jmp loc_46754E - loc_467525: - shr ecx, 1 - jnb loc_467531 - inc edi - mov [edi], al - inc edi - test ecx, ecx - jz loc_467566 - loc_467531: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_467531 - jmp loc_467566 - loc_46753F: - xor eax, eax - shr ecx, 1 - jnb loc_46754E - mov [edi], al - inc edi - test ecx, ecx - jz loc_467566 - jmp loc_467525 - loc_46754E: - shr ecx, 1 - jnb loc_46755B - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_467566 - loc_46755B: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_46755B - loc_467566: - test edx, edx - jz loc_467578 - jmp loc_4674EE - loc_46756C: - neg al - add edi, eax - sub edx, eax - jnz loc_4674EE - loc_467578: - pop ecx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - sub edi, 320h - dec ecx - jnz loc_4674E8 - jmp loc_467944 - loc_467599: - xor eax, eax - mov WorldBoolFlag, eax - mov edx, 1Eh - loc_4675A5: - cmp edi, gpBufEnd - jb loc_4675B7 - add esi, 20h - sub esi, edx - add edi, 20h - jmp loc_467608 - loc_4675B7: - add edi, edx - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_4675ED - xor eax, eax - shr ecx, 2 - jnb loc_4675DF - inc edi - mov [edi], al - inc edi - test ecx, ecx - jz loc_467608 - loc_4675DF: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_4675DF - jmp loc_467608 - loc_4675ED: - xor eax, eax - shr ecx, 2 - jnb loc_4675FD - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_467608 - loc_4675FD: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_4675FD - loc_467608: - sub edi, 320h - test edx, edx - jz loc_467617 - sub edx, 2 - jmp loc_4675A5 - loc_467617: - mov edx, 2 - loc_46761C: - cmp edi, gpBufEnd - jb loc_46762E - add esi, 20h - sub esi, edx - add edi, 20h - jmp loc_46767F - loc_46762E: - add edi, edx - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_467664 - xor eax, eax - shr ecx, 2 - jnb loc_467656 - inc edi - mov [edi], al - inc edi - test ecx, ecx - jz loc_46767F - loc_467656: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_467656 - jmp loc_46767F - loc_467664: - xor eax, eax - shr ecx, 2 - jnb loc_467674 - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_46767F - loc_467674: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_467674 - loc_46767F: - sub edi, 320h - add edx, 2 - cmp edx, 20h - jnz loc_46761C - jmp loc_467944 - loc_467692: - xor eax, eax - mov WorldBoolFlag, eax - mov edx, 1Eh - loc_46769E: - cmp edi, gpBufEnd - jb loc_4676B2 - add esi, 20h - sub esi, edx - add edi, 20h - sub edi, edx - jmp loc_467701 - loc_4676B2: - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_4676E6 - xor eax, eax - shr ecx, 2 - jnb loc_4676D8 - inc edi - mov [edi], al - inc edi - test ecx, ecx - jz loc_467701 - loc_4676D8: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_4676D8 - jmp loc_467701 - loc_4676E6: - xor eax, eax - shr ecx, 2 - jnb loc_4676F6 - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_467701 - loc_4676F6: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_4676F6 - loc_467701: - sub edi, 320h - test edx, edx - jz loc_467712 - add edi, edx - sub edx, 2 - jmp loc_46769E - loc_467712: - mov edx, 2 - loc_467717: - cmp edi, gpBufEnd - jb loc_46772B - add esi, 20h - sub esi, edx - add edi, 20h - sub edi, edx - jmp loc_46777A - loc_46772B: - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_46775F - xor eax, eax - shr ecx, 2 - jnb loc_467751 - inc edi - mov [edi], al - inc edi - test ecx, ecx - jz loc_46777A - loc_467751: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_467751 - jmp loc_46777A - loc_46775F: - xor eax, eax - shr ecx, 2 - jnb loc_46776F - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_46777A - loc_46776F: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_46776F - loc_46777A: - sub edi, 320h - add edi, edx - add edx, 2 - cmp edx, 20h - jnz loc_467717 - jmp loc_467944 - loc_46778F: - xor eax, eax - mov WorldBoolFlag, eax - mov edx, 1Eh - loc_46779B: - cmp edi, gpBufEnd - jb loc_4677AD - add esi, 20h - sub esi, edx - add edi, 20h - jmp loc_4677FE - loc_4677AD: - add edi, edx - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_4677E3 - xor eax, eax - shr ecx, 2 - jnb loc_4677D5 - inc edi - mov [edi], al - inc edi - test ecx, ecx - jz loc_4677FE - loc_4677D5: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_4677D5 - jmp loc_4677FE - loc_4677E3: - xor eax, eax - shr ecx, 2 - jnb loc_4677F3 - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_4677FE - loc_4677F3: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_4677F3 - loc_4677FE: - sub edi, 320h - test edx, edx - jz loc_46780D - sub edx, 2 - jmp loc_46779B - loc_46780D: - mov edx, 8 - loc_467812: - cmp edi, gpBufEnd - jb loc_467822 - add esi, 20h - add edi, 20h - jmp loc_467835 - loc_467822: - mov ecx, 8 - xor eax, eax - loc_467829: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_467829 - loc_467835: - sub edi, 320h - cmp edi, gpBufEnd - jb loc_46784B - add esi, 20h - add edi, 20h - jmp loc_46785D - loc_46784B: - mov ecx, 8 - xor eax, eax - loc_467852: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_467852 - loc_46785D: - sub edi, 320h - dec edx - jnz loc_467812 - jmp loc_467944 - loc_46786B: - xor eax, eax - mov WorldBoolFlag, eax - mov edx, 1Eh - loc_467877: - cmp edi, gpBufEnd - jb loc_46788B - add esi, 20h - sub esi, edx - add edi, 20h - sub edi, edx - jmp loc_4678DA - loc_46788B: - mov ecx, 20h - sub ecx, edx - mov eax, WorldBoolFlag - inc eax - and eax, 1 - mov WorldBoolFlag, eax - jz loc_4678BF - xor eax, eax - shr ecx, 2 - jnb loc_4678B1 - inc edi - mov [edi], al - inc edi - test ecx, ecx - jz loc_4678DA - loc_4678B1: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_4678B1 - jmp loc_4678DA - loc_4678BF: - xor eax, eax - shr ecx, 2 - jnb loc_4678CF - mov [edi], al - add edi, 2 - test ecx, ecx - jz loc_4678DA - loc_4678CF: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_4678CF - loc_4678DA: - sub edi, 320h - test edx, edx - jz loc_4678EB - add edi, edx - sub edx, 2 - jmp loc_467877 - loc_4678EB: - mov edx, 8 - loc_4678F0: - cmp edi, gpBufEnd - jb loc_467900 - add esi, 20h - add edi, 20h - jmp loc_467913 - loc_467900: - mov ecx, 8 - xor eax, eax - loc_467907: - mov [edi+1], al - mov [edi+3], al - add edi, 4 - dec ecx - jnz loc_467907 - loc_467913: - sub edi, 320h - cmp edi, gpBufEnd - jb loc_467929 - add esi, 20h - add edi, 20h - jmp loc_46793B - loc_467929: - mov ecx, 8 - xor eax, eax - loc_467930: - mov [edi], al - mov [edi+2], al - add edi, 4 - dec ecx - jnz loc_467930 - loc_46793B: - sub edi, 320h - dec edx - jnz loc_4678F0 - loc_467944: - pop esi - pop edi - pop edx - pop ebx - retn - } -} - -__declspec(naked) void drawBottomArchesLowerScreen(BYTE *pBuff, DWORD *pMask) -{ - __asm { - push ebx - push edi - push esi - mov edi, offset SpeedFrameTbl - mov gpCelFrame, edi - mov edi, ecx - mov gpDrawMask, edx - mov eax, light_table_index - test al, al - jz loc_467A58 - cmp al, lightmax - jz loc_467AB8 - mov eax, level_cel_block - and eax, 8000h - jnz loc_4679EC - mov ebx, pDungeonCels - mov esi, ebx - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 2 - add ebx, eax - add esi, [ebx] - mov ebx, light_table_index - shl ebx, 8 - add ebx, pLightTbl - mov eax, level_cel_block - mov al, ah - shr eax, 4 - and eax, 0Fh - jz loc_467B43 - cmp ax, 1 - jz loc_467B8F - cmp ax, 2 - jz loc_467C20 - cmp ax, 3 - jz loc_467D5B - cmp ax, 4 - jz loc_467E99 - jmp loc_467F8A - loc_4679EC: - mov esi, gpCelFrame - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 4 - add eax, light_table_index - shl eax, 2 - add esi, eax - mov eax, [esi] - mov esi, pSpeedCels - add esi, eax - mov eax, level_cel_block - mov al, ah - shr eax, 4 - and eax, 0Fh - loc_467A21: - cmp ax, 8 - jz loc_468086 - cmp ax, 9 - jz loc_4680D1 - cmp ax, 0Ah - jz loc_468161 - cmp ax, 0Bh - jz loc_468268 - cmp ax, 0Ch - jz loc_468372 - jmp loc_468448 - loc_467A58: - mov eax, level_cel_block - and eax, 8000h - jz loc_467A8A - mov esi, gpCelFrame - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 6 - add esi, eax - mov eax, level_cel_block - and eax, 0F000h - add eax, [esi] - mov level_cel_block, eax - loc_467A8A: - mov ebx, pDungeonCels - mov esi, ebx - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 2 - add ebx, eax - add esi, [ebx] - mov eax, level_cel_block - mov al, ah - shr eax, 4 - and eax, 7 - add eax, 8 - jmp loc_467A21 - loc_467AB8: - mov eax, level_cel_block - and eax, 8000h - jz loc_467AEA - mov esi, gpCelFrame - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 6 - add esi, eax - mov eax, level_cel_block - and eax, 0F000h - add eax, [esi] - mov level_cel_block, eax - loc_467AEA: - mov ebx, pDungeonCels - mov esi, ebx - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 2 - add ebx, eax - add esi, [ebx] - mov eax, level_cel_block - mov al, ah - shr eax, 4 - and eax, 7 - jz loc_468529 - cmp ax, 1 - jz loc_468573 - cmp ax, 2 - jz loc_468604 - cmp ax, 3 - jz loc_468696 - cmp ax, 4 - jz loc_46872C - jmp loc_4687CB - loc_467B43: - push ebp - mov ebp, 20h - loc_467B49: - cmp edi, gpBufEnd - jb loc_467B59 - add esi, 20h - add edi, 20h - jmp loc_467B73 - loc_467B59: - mov eax, gpDrawMask - mov edx, [eax] - mov ecx, 20h - loc_467B65: - mov al, [esi] - inc esi - shl edx, 1 - jnb loc_467B6F - xlat - mov [edi], al - loc_467B6F: - inc edi - dec ecx - jnz loc_467B65 - loc_467B73: - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec ebp - jnz loc_467B49 - pop ebp - jmp loc_468867 - loc_467B8F: - mov ecx, 20h - loc_467B94: - push ecx - mov eax, gpDrawMask - mov eax, [eax] - mov gdwCurrentMask, eax - mov edx, 20h - loc_467BA6: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js loc_467BE3 - sub edx, eax - cmp edi, gpBufEnd - jb loc_467BBF - add esi, eax - add edi, eax - jmp loc_467BDD - loc_467BBF: - mov ecx, eax - push edx - mov edx, gdwCurrentMask - loc_467BC8: - mov al, [esi] - inc esi - shl edx, 1 - jnb loc_467BD2 - xlat - mov [edi], al - loc_467BD2: - inc edi - dec ecx - jnz loc_467BC8 - mov gdwCurrentMask, edx - pop edx - loc_467BDD: - test edx, edx - jz loc_467C00 - jmp loc_467BA6 - loc_467BE3: - neg al - add edi, eax - mov ecx, eax - and ecx, 1Fh - jz loc_467BFC - push eax - mov eax, gdwCurrentMask - shl eax, cl - mov gdwCurrentMask, eax - pop eax - loc_467BFC: - sub edx, eax - jnz loc_467BA6 - loc_467C00: - pop ecx - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec ecx - jnz loc_467B94 - jmp loc_468867 - loc_467C20: - mov edx, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_467C67 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_467C59 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub edx, ecx - jmp loc_467C67 - loc_467C59: - sub edi, 3000h - add esi, 120h - jmp loc_467CB8 - loc_467C67: - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_467C90 - mov ax, [esi+2] - add esi, 4 - xlat - ror ax, 8 - xlat - ror ax, 8 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_467CAD - loc_467C90: - mov eax, [esi] - add esi, 4 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_467C90 - loc_467CAD: - sub edi, 320h - sub edx, 2 - jge loc_467C67 - loc_467CB8: - mov edx, 2 - mov eax, edi - sub eax, gpBufEnd - jb loc_467D02 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Ah - jg loc_467CF1 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_2[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - add edx, ecx - jmp loc_467D02 - loc_467CF1: - sub edi, 2D00h - add esi, 100h - jmp loc_468867 - loc_467D02: - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_467D2B - mov ax, [esi+2] - add esi, 4 - xlat - ror ax, 8 - xlat - ror ax, 8 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_467D48 - loc_467D2B: - mov eax, [esi] - add esi, 4 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_467D2B - loc_467D48: - sub edi, 320h - add edx, 2 - cmp edx, 20h - jnz loc_467D02 - jmp loc_468867 - loc_467D5B: - push ebp - mov edx, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_467DA3 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_467D95 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub edx, ecx - jmp loc_467DA3 - loc_467D95: - sub edi, 3000h - add esi, 120h - jmp loc_467DF6 - loc_467DA3: - mov ecx, 20h - sub ecx, edx - mov ebp, ecx - shr ecx, 2 - jz loc_467DCE - loc_467DB1: - mov eax, [esi] - add esi, 4 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_467DB1 - loc_467DCE: - and ebp, 2 - jz loc_467DE9 - mov ax, [esi] - add esi, 4 - xlat - ror ax, 8 - xlat - ror ax, 8 - mov [edi], ax - add edi, 2 - loc_467DE9: - sub edi, 320h - add edi, edx - sub edx, 2 - jge loc_467DA3 - loc_467DF6: - mov edx, 2 - mov eax, edi - sub eax, gpBufEnd - jb loc_467E3D - add eax, 3FFh - shr eax, 8 - cmp eax, 2Ah - jg loc_467E2F - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_2[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - add edx, ecx - jmp loc_467E3D - loc_467E2F: - sub edi, 2D00h - add esi, 100h - jmp loc_467E93 - loc_467E3D: - mov ecx, 20h - sub ecx, edx - mov ebp, ecx - shr ecx, 2 - jz loc_467E68 - loc_467E4B: - mov eax, [esi] - add esi, 4 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_467E4B - loc_467E68: - and ebp, 2 - jz loc_467E83 - mov ax, [esi] - add esi, 2 - xlat - ror ax, 8 - xlat - ror ax, 8 - mov [edi], ax - add edi, 2 - loc_467E83: - sub edi, 320h - add edi, edx - add edx, 2 - cmp edx, 20h - jnz loc_467E3D - loc_467E93: - pop ebp - jmp loc_468867 - loc_467E99: - mov edx, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_467EE0 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_467ED2 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub edx, ecx - jmp loc_467EE0 - loc_467ED2: - sub edi, 3000h - add esi, 120h - jmp loc_467F31 - loc_467EE0: - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_467F09 - mov ax, [esi+2] - add esi, 4 - xlat - ror ax, 8 - xlat - ror ax, 8 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_467F26 - loc_467F09: - mov eax, [esi] - add esi, 4 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_467F09 - loc_467F26: - sub edi, 320h - sub edx, 2 - jge loc_467EE0 - loc_467F31: - mov eax, gpDrawMask - sub eax, 40h - mov gpDrawMask, eax - mov edx, 10h - loc_467F43: - cmp edi, gpBufEnd - jb loc_467F53 - add esi, 20h - add edi, 20h - jmp loc_467F6F - loc_467F53: - push edx - mov eax, gpDrawMask - mov edx, [eax] - mov ecx, 20h - loc_467F60: - mov al, [esi] - inc esi - shl edx, 1 - jnb loc_467F6A - xlat - mov [edi], al - loc_467F6A: - inc edi - dec ecx - jnz loc_467F60 - pop edx - loc_467F6F: - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec edx - jnz loc_467F43 - jmp loc_468867 - loc_467F8A: - push ebp - mov edx, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_467FD2 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_467FC4 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub edx, ecx - jmp loc_467FD2 - loc_467FC4: - sub edi, 3000h - add esi, 120h - jmp loc_468025 - loc_467FD2: - mov ecx, 20h - sub ecx, edx - mov ebp, ecx - shr ecx, 2 - jz loc_467FFD - loc_467FE0: - mov eax, [esi] - add esi, 4 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_467FE0 - loc_467FFD: - and ebp, 2 - jz loc_468018 - mov ax, [esi] - add esi, 4 - xlat - ror ax, 8 - xlat - ror ax, 8 - mov [edi], ax - add edi, 2 - loc_468018: - sub edi, 320h - add edi, edx - sub edx, 2 - jge loc_467FD2 - loc_468025: - mov eax, gpDrawMask - sub eax, 40h - mov gpDrawMask, eax - mov edx, 10h - loc_468037: - cmp edi, gpBufEnd - jb loc_468047 - add esi, 20h - add edi, 20h - jmp loc_46806A - loc_468047: - push edx - mov eax, gpDrawMask - mov edx, [eax] - mov ecx, 20h - loc_468054: - mov al, [esi] - inc esi - shl edx, 1 - jnb loc_46805E - xlat - mov [edi], al - loc_46805E: - inc edi - dec ecx - jnz loc_468054 - mov ebp, esi - and ebp, 2 - add esi, ebp - pop edx - loc_46806A: - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec edx - jnz loc_468037 - pop ebp - jmp loc_468867 - loc_468086: - mov edx, 20h - loc_46808B: - cmp edi, gpBufEnd - jb loc_46809B - add esi, 20h - add edi, 20h - jmp loc_4680B6 - loc_46809B: - push edx - mov eax, gpDrawMask - mov edx, [eax] - mov ecx, 20h - loc_4680A8: - mov al, [esi] - inc esi - shl edx, 1 - jnb loc_4680B1 - mov [edi], al - loc_4680B1: - inc edi - dec ecx - jnz loc_4680A8 - pop edx - loc_4680B6: - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec edx - jnz loc_46808B - jmp loc_468867 - loc_4680D1: - mov ecx, 20h - loc_4680D6: - push ecx - mov eax, gpDrawMask - mov eax, [eax] - mov gdwCurrentMask, eax - mov edx, 20h - loc_4680E8: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js loc_468124 - sub edx, eax - cmp edi, gpBufEnd - jb loc_468101 - add esi, eax - add edi, eax - jmp loc_46811E - loc_468101: - mov ecx, eax - push edx - mov edx, gdwCurrentMask - loc_46810A: - mov al, [esi] - inc esi - shl edx, 1 - jnb loc_468113 - mov [edi], al - loc_468113: - inc edi - dec ecx - jnz loc_46810A - mov gdwCurrentMask, edx - pop edx - loc_46811E: - test edx, edx - jz loc_468141 - jmp loc_4680E8 - loc_468124: - neg al - add edi, eax - mov ecx, eax - and ecx, 1Fh - jz loc_46813D - mov ebx, gdwCurrentMask - shl ebx, cl - mov gdwCurrentMask, ebx - loc_46813D: - sub edx, eax - jnz loc_4680E8 - loc_468141: - pop ecx - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec ecx - jnz loc_4680D6 - jmp loc_468867 - loc_468161: - mov edx, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_4681A8 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_46819A - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub edx, ecx - jmp loc_4681A8 - loc_46819A: - sub edi, 3000h - add esi, 120h - jmp loc_4681DF - loc_4681A8: - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_4681C7 - mov ax, [esi+2] - add esi, 4 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_4681D4 - loc_4681C7: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_4681C7 - loc_4681D4: - sub edi, 320h - sub edx, 2 - jge loc_4681A8 - loc_4681DF: - mov edx, 2 - mov eax, edi - sub eax, gpBufEnd - jb loc_468229 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Ah - jg loc_468218 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_2[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - add edx, ecx - jmp loc_468229 - loc_468218: - sub edi, 2D00h - add esi, 100h - jmp loc_468867 - loc_468229: - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_468248 - mov ax, [esi+2] - add esi, 4 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_468255 - loc_468248: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_468248 - loc_468255: - sub edi, 320h - add edx, 2 - cmp edx, 20h - jnz loc_468229 - jmp loc_468867 - loc_468268: - push ebp - mov edx, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_4682B0 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_4682A2 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub edx, ecx - jmp loc_4682B0 - loc_4682A2: - sub edi, 3000h - add esi, 120h - jmp loc_4682E9 - loc_4682B0: - mov ecx, 20h - sub ecx, edx - mov ebp, ecx - shr ecx, 2 - jz loc_4682CB - loc_4682BE: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_4682BE - loc_4682CB: - and ebp, 2 - jz loc_4682DC - mov ax, [esi] - add esi, 4 - mov [edi], ax - add edi, 2 - loc_4682DC: - sub edi, 320h - add edi, edx - sub edx, 2 - jge loc_4682B0 - loc_4682E9: - mov edx, 2 - mov eax, edi - sub eax, gpBufEnd - jb loc_468330 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Ah - jg loc_468322 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_2[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - add edx, ecx - jmp loc_468330 - loc_468322: - sub edi, 2D00h - add esi, 100h - jmp loc_46836C - loc_468330: - mov ecx, 20h - sub ecx, edx - mov ebp, ecx - shr ecx, 2 - jz loc_46834B - loc_46833E: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_46833E - loc_46834B: - and ebp, 2 - jz loc_46835C - mov ax, [esi] - add esi, 4 - mov [edi], ax - add edi, 2 - loc_46835C: - sub edi, 320h - add edi, edx - add edx, 2 - cmp edx, 20h - jnz loc_468330 - loc_46836C: - pop ebp - jmp loc_468867 - loc_468372: - mov edx, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_4683B9 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_4683AB - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub edx, ecx - jmp loc_4683B9 - loc_4683AB: - sub edi, 3000h - add esi, 120h - jmp loc_4683F0 - loc_4683B9: - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_4683D8 - mov ax, [esi+2] - add esi, 4 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_4683E5 - loc_4683D8: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_4683D8 - loc_4683E5: - sub edi, 320h - sub edx, 2 - jge loc_4683B9 - loc_4683F0: - mov eax, gpDrawMask - sub eax, 40h - mov gpDrawMask, eax - mov edx, 10h - loc_468402: - cmp edi, gpBufEnd - jb loc_468412 - add esi, 20h - add edi, 20h - jmp loc_46842D - loc_468412: - push edx - mov eax, gpDrawMask - mov edx, [eax] - mov ecx, 20h - loc_46841F: - mov al, [esi] - inc esi - shl edx, 1 - jnb loc_468428 - mov [edi], al - loc_468428: - inc edi - dec ecx - jnz loc_46841F - pop edx - loc_46842D: - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec edx - jnz loc_468402 - jmp loc_468867 - loc_468448: - push ebp - mov edx, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_468490 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_468482 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub edx, ecx - jmp loc_468490 - loc_468482: - sub edi, 3000h - add esi, 120h - jmp loc_4684C9 - loc_468490: - mov ecx, 20h - sub ecx, edx - mov ebp, ecx - shr ecx, 2 - jz loc_4684AB - loc_46849E: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_46849E - loc_4684AB: - and ebp, 2 - jz loc_4684BC - mov ax, [esi] - add esi, 4 - mov [edi], ax - add edi, 2 - loc_4684BC: - sub edi, 320h - add edi, edx - sub edx, 2 - jge loc_468490 - loc_4684C9: - mov eax, gpDrawMask - sub eax, 40h - mov gpDrawMask, eax - mov edx, 10h - loc_4684DB: - cmp edi, gpBufEnd - jb loc_4684EB - add esi, 20h - add edi, 20h - jmp loc_46850D - loc_4684EB: - push edx - mov eax, gpDrawMask - mov edx, [eax] - mov ecx, 20h - loc_4684F8: - mov al, [esi] - inc esi - shl edx, 1 - jnb loc_468501 - mov [edi], al - loc_468501: - inc edi - dec ecx - jnz loc_4684F8 - mov ebp, esi - and ebp, 2 - add esi, ebp - pop edx - loc_46850D: - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec edx - jnz loc_4684DB - pop ebp - jmp loc_468867 - loc_468529: - mov edx, 20h - loc_46852E: - cmp edi, gpBufEnd - jb loc_46853E - add esi, 20h - add edi, 20h - jmp loc_468558 - loc_46853E: - push edx - mov eax, gpDrawMask - mov edx, [eax] - xor eax, eax - mov ecx, 20h - loc_46854D: - shl edx, 1 - jnb loc_468553 - mov [edi], al - loc_468553: - inc edi - dec ecx - jnz loc_46854D - pop edx - loc_468558: - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec edx - jnz loc_46852E - jmp loc_468867 - loc_468573: - mov ecx, 20h - loc_468578: - push ecx - mov eax, gpDrawMask - mov eax, [eax] - mov gdwCurrentMask, eax - mov edx, 20h - loc_46858A: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js loc_4685C7 - sub edx, eax - cmp edi, gpBufEnd - jb loc_4685A3 - add esi, eax - add edi, eax - jmp loc_4685C1 - loc_4685A3: - mov ecx, eax - add esi, ecx - push edx - mov edx, gdwCurrentMask - xor eax, eax - loc_4685B0: - shl edx, 1 - jnb loc_4685B6 - mov [edi], al - loc_4685B6: - inc edi - dec ecx - jnz loc_4685B0 - mov gdwCurrentMask, edx - pop edx - loc_4685C1: - test edx, edx - jz loc_4685E4 - jmp loc_46858A - loc_4685C7: - neg al - add edi, eax - mov ecx, eax - and ecx, 1Fh - jz loc_4685E0 - mov ebx, gdwCurrentMask - shl ebx, cl - mov gdwCurrentMask, ebx - loc_4685E0: - sub edx, eax - jnz loc_46858A - loc_4685E4: - pop ecx - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec ecx - jnz loc_468578 - jmp loc_468867 - loc_468604: - mov edx, 1Eh - xor eax, eax - loc_46860B: - cmp edi, gpBufEnd - jb loc_46861D - add esi, 20h - sub esi, edx - add edi, 20h - jmp loc_46863D - loc_46861D: - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_468635 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_46863D - loc_468635: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_468635 - loc_46863D: - sub edi, 320h - test edx, edx - jz loc_46864C - sub edx, 2 - jmp loc_46860B - loc_46864C: - mov edx, 2 - loc_468651: - cmp edi, gpBufEnd - jb loc_468663 - add esi, 20h - sub esi, edx - add edi, 20h - jmp loc_468683 - loc_468663: - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_46867B - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_468683 - loc_46867B: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_46867B - loc_468683: - sub edi, 320h - add edx, 2 - cmp edx, 20h - jnz loc_468651 - jmp loc_468867 - loc_468696: - mov edx, 1Eh - xor eax, eax - loc_46869D: - cmp edi, gpBufEnd - jb loc_4686B1 - add esi, 20h - sub esi, edx - add edi, 20h - sub edi, edx - jmp loc_4686CF - loc_4686B1: - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_4686C7 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_4686CF - loc_4686C7: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_4686C7 - loc_4686CF: - sub edi, 320h - test edx, edx - jz loc_4686E0 - add edi, edx - sub edx, 2 - jmp loc_46869D - loc_4686E0: - mov edx, 2 - loc_4686E5: - cmp edi, gpBufEnd - jb loc_4686F9 - add esi, 20h - sub esi, edx - add edi, 20h - sub edi, edx - jmp loc_468717 - loc_4686F9: - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_46870F - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_468717 - loc_46870F: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_46870F - loc_468717: - sub edi, 320h - add edi, edx - add edx, 2 - cmp edx, 20h - jnz loc_4686E5 - jmp loc_468867 - loc_46872C: - mov edx, 1Eh - xor eax, eax - loc_468733: - cmp edi, gpBufEnd - jb loc_468745 - add esi, 20h - sub esi, edx - add edi, 20h - jmp loc_468765 - loc_468745: - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_46875D - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_468765 - loc_46875D: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_46875D - loc_468765: - sub edi, 320h - test edx, edx - jz loc_468774 - sub edx, 2 - jmp loc_468733 - loc_468774: - mov eax, gpDrawMask - sub eax, 40h - mov gpDrawMask, eax - mov edx, 10h - loc_468786: - cmp edi, gpBufEnd - jb loc_468796 - add esi, 20h - add edi, 20h - jmp loc_4687B0 - loc_468796: - push edx - mov eax, gpDrawMask - mov edx, [eax] - xor eax, eax - mov ecx, 20h - loc_4687A5: - shl edx, 1 - jnb loc_4687AB - mov [edi], al - loc_4687AB: - inc edi - dec ecx - jnz loc_4687A5 - pop edx - loc_4687B0: - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec edx - jnz loc_468786 - jmp loc_468867 - loc_4687CB: - mov edx, 1Eh - xor eax, eax - loc_4687D2: - cmp edi, gpBufEnd - jb loc_4687E6 - add esi, 20h - sub esi, edx - add edi, 20h - sub edi, edx - jmp loc_468804 - loc_4687E6: - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_4687FC - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_468804 - loc_4687FC: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_4687FC - loc_468804: - sub edi, 320h - test edx, edx - jz loc_468815 - add edi, edx - sub edx, 2 - jmp loc_4687D2 - loc_468815: - mov eax, gpDrawMask - sub eax, 40h - mov gpDrawMask, eax - mov edx, 10h - loc_468827: - cmp edi, gpBufEnd - jb loc_468837 - add esi, 20h - add edi, 20h - jmp loc_468851 - loc_468837: - push edx - mov eax, gpDrawMask - mov edx, [eax] - xor eax, eax - mov ecx, 20h - loc_468846: - shl edx, 1 - jnb loc_46884C - mov [edi], al - loc_46884C: - inc edi - dec ecx - jnz loc_468846 - pop edx - loc_468851: - sub edi, 320h - mov eax, gpDrawMask - sub eax, 4 - mov gpDrawMask, eax - dec edx - jnz loc_468827 - loc_468867: - pop esi - pop edi - pop ebx - retn - } -} - -__declspec(naked) void drawLowerScreen(BYTE *pBuff) -{ - __asm { - push ebx - push edx - push edi - push esi - mov edx, cel_transparency_active - test edx, edx - jz loc_468918 - mov dl, arch_draw_type - cmp dl, 0 - jnz loc_468892 - call drawTopArchesLowerScreen - jmp loc_4696B9 - loc_468892: - cmp dl, 1 - jnz loc_4688D5 - mov ebx, level_piece_id - mov al, block_lvid[ebx] - cmp al, 1 - jz loc_4688AD - cmp al, 3 - jz loc_4688AD - jmp loc_4688D5 - loc_4688AD: - mov edx, offset LeftMask - add edx, 7Ch - call drawBottomArchesLowerScreen - jmp loc_4696B9 - cmp al, 4 - jnz loc_4688D5 - mov edx, offset RightMask - add edx, 7Ch - call drawBottomArchesLowerScreen - jmp loc_4696B9 - loc_4688D5: - cmp dl, 2 - jnz loc_468918 - mov ebx, level_piece_id - mov al, block_lvid[ebx] - cmp al, 2 - jz loc_4688F0 - cmp al, 3 - jz loc_4688F0 - jmp loc_468918 - loc_4688F0: - mov edx, offset RightMask - add edx, 7Ch - call drawBottomArchesLowerScreen - jmp loc_4696B9 - cmp al, 4 - jnz loc_468918 - mov edx, offset LeftMask - add edx, 7Ch - call drawBottomArchesLowerScreen - jmp loc_4696B9 - loc_468918: - mov edi, offset SpeedFrameTbl - mov gpCelFrame, edi - mov edi, ecx - mov eax, light_table_index - test al, al - jz loc_468A1A - cmp al, lightmax - jz loc_468A78 - mov eax, level_cel_block - and eax, 8000h - jnz loc_4689B0 - mov ebx, pDungeonCels - mov esi, ebx - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 2 - add ebx, eax - add esi, [ebx] - mov ebx, light_table_index - shl ebx, 8 - add ebx, pLightTbl - mov eax, level_cel_block - shr eax, 0Ch - and eax, 0Fh - jz loc_468B03 - cmp ax, 1 - jz loc_468B5B - cmp ax, 2 - jz loc_468C06 - cmp ax, 3 - jz loc_468CEC - cmp ax, 4 - jz loc_468DD2 - jmp loc_468EE2 - loc_4689B0: - mov esi, gpCelFrame - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 4 - add eax, light_table_index - shl eax, 2 - add esi, eax - mov eax, [esi] - mov esi, pSpeedCels - add esi, eax - mov eax, level_cel_block - shr eax, 0Ch - and eax, 0Fh - loc_4689E3: - cmp ax, 8 - jz loc_468FF2 - cmp ax, 9 - jz loc_469027 - cmp ax, 0Ah - jz loc_469099 - cmp ax, 0Bh - jz loc_46919D - cmp ax, 0Ch - jz loc_4692A5 - jmp loc_469358 - loc_468A1A: - mov eax, level_cel_block - and eax, 8000h - jz loc_468A4C - mov esi, gpCelFrame - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 6 - add esi, eax - mov eax, level_cel_block - and eax, 0F000h - add eax, [esi] - mov level_cel_block, eax - loc_468A4C: - mov ebx, pDungeonCels - mov esi, ebx - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 2 - add ebx, eax - add esi, [ebx] - mov eax, level_cel_block - shr eax, 0Ch - and eax, 7 - add eax, 8 - jmp loc_4689E3 - loc_468A78: - mov eax, level_cel_block - and eax, 8000h - jz loc_468AAA - mov esi, gpCelFrame - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 6 - add esi, eax - mov eax, level_cel_block - and eax, 0F000h - add eax, [esi] - mov level_cel_block, eax - loc_468AAA: - mov ebx, pDungeonCels - mov esi, ebx - mov eax, level_cel_block - and eax, 0FFFh - shl eax, 2 - add ebx, eax - add esi, [ebx] - mov eax, level_cel_block - mov al, ah - shr eax, 4 - and eax, 7 - jz loc_46940D - cmp ax, 1 - jz loc_46943F - cmp ax, 2 - jz loc_4694A7 - cmp ax, 3 - jz loc_469539 - cmp ax, 4 - jz loc_4695CF - jmp loc_469644 - loc_468B03: - mov edx, 20h - push ebp - loc_468B09: - push edx - cmp edi, gpBufEnd - jb loc_468B1A - add esi, 20h - add edi, 20h - jmp loc_468B4B - loc_468B1A: - xor edx, edx - mov ebp, 8 - loc_468B21: - mov eax, [esi] - add esi, 4 - ror eax, 10h - mov dl, al - mov cl, [ebx+edx] - mov dl, ah - mov ch, [ebx+edx] - ror eax, 10h - shl ecx, 10h - mov dl, al - mov cl, [ebx+edx] - mov dl, ah - mov ch, [ebx+edx] - mov [edi], ecx - add edi, 4 - dec ebp - jnz loc_468B21 - loc_468B4B: - sub edi, 320h - pop edx - dec edx - jnz loc_468B09 - pop ebp - jmp loc_4696B9 - loc_468B5B: - push ebp - mov ecx, 20h - loc_468B61: - push ecx - mov ebp, 20h - loc_468B67: - xor eax, eax - mov al, [esi] - inc esi - test al, al - jns loc_468B78 - neg al - add edi, eax - sub ebp, eax - jmp loc_468BEA - loc_468B78: - sub ebp, eax - cmp edi, gpBufEnd - jb loc_468B88 - add esi, eax - add edi, eax - jmp loc_468BEA - loc_468B88: - mov ecx, eax - cmp cl, 4 - jl loc_468BC1 - loc_468B8F: - mov eax, [esi] - add esi, 4 - mov dl, al - mov ch, [ebx+edx] - mov dl, ah - ror eax, 10h - mov [edi], ch - mov ch, [ebx+edx] - mov dl, al - mov [edi+1], ch - mov ch, [ebx+edx] - mov dl, ah - mov [edi+2], ch - mov ch, [ebx+edx] - mov [edi+3], ch - add edi, 4 - sub cl, 4 - cmp cl, 4 - jge loc_468B8F - loc_468BC1: - cmp cl, 2 - jl loc_468BDC - mov dl, [esi] - mov ch, [ebx+edx] - mov [edi], ch - mov dl, [esi+1] - mov ch, [ebx+edx] - mov [edi+1], ch - add esi, 2 - add edi, 2 - loc_468BDC: - and cl, 1 - jz loc_468BEA - mov dl, [esi] - inc esi - mov dl, [ebx+edx] - mov [edi], dl - inc edi - loc_468BEA: - test ebp, ebp - jnz loc_468B67 - pop ecx - sub edi, 320h - dec ecx - jnz loc_468B61 - pop ebp - jmp loc_4696B9 - loc_468C06: - push ebp - mov ebp, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_468C4E - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_468C40 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub ebp, ecx - jmp loc_468C4E - loc_468C40: - sub edi, 3000h - add esi, 120h - jmp loc_468C75 - loc_468C4E: - add edi, ebp - mov ecx, 20h - sub ecx, ebp - mov edx, ecx - and edx, 2 - add esi, edx - loc_468C5E: - mov dl, [esi] - inc esi - mov dl, [ebx+edx] - mov [edi], dl - inc edi - dec ecx - jnz loc_468C5E - sub edi, 320h - sub ebp, 2 - jge loc_468C4E - loc_468C75: - mov ebp, 2 - mov eax, edi - sub eax, gpBufEnd - jb loc_468CBC - add eax, 3FFh - shr eax, 8 - cmp eax, 2Ah - jg loc_468CAE - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_2[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - add ebp, ecx - jmp loc_468CBC - loc_468CAE: - sub edi, 2D00h - add esi, 100h - jmp loc_468CE6 - loc_468CBC: - add edi, ebp - mov ecx, 20h - sub ecx, ebp - mov edx, ecx - and edx, 2 - add esi, edx - loc_468CCC: - mov dl, [esi] - inc esi - mov dl, [ebx+edx] - mov [edi], dl - inc edi - dec ecx - jnz loc_468CCC - add ebp, 2 - sub edi, 320h - cmp ebp, 20h - jnz loc_468CBC - loc_468CE6: - pop ebp - jmp loc_4696B9 - loc_468CEC: - push ebp - mov ebp, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_468D34 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_468D26 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub ebp, ecx - jmp loc_468D34 - loc_468D26: - sub edi, 3000h - add esi, 120h - jmp loc_468D5B - loc_468D34: - mov ecx, 20h - sub ecx, ebp - loc_468D3B: - mov dl, [esi] - inc esi - mov dl, [ebx+edx] - mov [edi], dl - inc edi - dec ecx - jnz loc_468D3B - mov edx, esi - and edx, 2 - add esi, edx - sub edi, 320h - add edi, ebp - sub ebp, 2 - jge loc_468D34 - loc_468D5B: - mov ebp, 2 - mov eax, edi - sub eax, gpBufEnd - jb loc_468DA2 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Ah - jg loc_468D94 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_2[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - add ebp, ecx - jmp loc_468DA2 - loc_468D94: - sub edi, 2D00h - add esi, 100h - jmp loc_468DCC - loc_468DA2: - mov ecx, 20h - sub ecx, ebp - loc_468DA9: - mov dl, [esi] - inc esi - mov dl, [ebx+edx] - mov [edi], dl - inc edi - dec ecx - jnz loc_468DA9 - mov edx, esi - and edx, 2 - add esi, edx - sub edi, 320h - add edi, ebp - add ebp, 2 - cmp ebp, 20h - jnz loc_468DA2 - loc_468DCC: - pop ebp - jmp loc_4696B9 - loc_468DD2: - push ebp - mov ebp, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_468E1A - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_468E0C - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub ebp, ecx - jmp loc_468E1A - loc_468E0C: - sub edi, 3000h - add esi, 120h - jmp loc_468E87 - loc_468E1A: - add edi, ebp - mov ecx, 20h - sub ecx, ebp - mov edx, ecx - and edx, 2 - add esi, edx - cmp cl, 4 - jl loc_468E61 - loc_468E2F: - mov eax, [esi] - add esi, 4 - mov dl, al - mov ch, [ebx+edx] - mov dl, ah - ror eax, 10h - mov [edi], ch - mov ch, [ebx+edx] - mov dl, al - mov [edi+1], ch - mov ch, [ebx+edx] - mov dl, ah - mov [edi+2], ch - mov ch, [ebx+edx] - mov [edi+3], ch - add edi, 4 - sub cl, 4 - cmp cl, 4 - jge loc_468E2F - loc_468E61: - cmp cl, 2 - jl loc_468E7C - mov dl, [esi] - mov ch, [ebx+edx] - mov [edi], ch - mov dl, [esi+1] - mov ch, [ebx+edx] - mov [edi+1], ch - add esi, 2 - add edi, 2 - loc_468E7C: - sub edi, 320h - sub ebp, 2 - jge loc_468E1A - loc_468E87: - mov ebp, 10h - loc_468E8C: - cmp edi, gpBufEnd - jb loc_468E9C - add esi, 20h - add edi, 20h - jmp loc_468ED3 - loc_468E9C: - mov ecx, 20h - loc_468EA1: - mov eax, [esi] - add esi, 4 - mov dl, al - mov ch, [ebx+edx] - mov dl, ah - ror eax, 10h - mov [edi], ch - mov ch, [ebx+edx] - mov dl, al - mov [edi+1], ch - mov ch, [ebx+edx] - mov dl, ah - mov [edi+2], ch - mov ch, [ebx+edx] - mov [edi+3], ch - add edi, 4 - sub cl, 4 - cmp cl, 4 - jge loc_468EA1 - loc_468ED3: - sub edi, 320h - dec ebp - jnz loc_468E8C - pop ebp - jmp loc_4696B9 - loc_468EE2: - push ebp - mov ebp, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_468F2A - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_468F1C - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub ebp, ecx - jmp loc_468F2A - loc_468F1C: - sub edi, 3000h - add esi, 120h - jmp loc_468F97 - loc_468F2A: - mov ecx, 20h - sub ecx, ebp - cmp cl, 4 - jl loc_468F68 - loc_468F36: - mov eax, [esi] - add esi, 4 - mov dl, al - mov ch, [ebx+edx] - mov dl, ah - ror eax, 10h - mov [edi], ch - mov ch, [ebx+edx] - mov dl, al - mov [edi+1], ch - mov ch, [ebx+edx] - mov dl, ah - mov [edi+2], ch - mov ch, [ebx+edx] - mov [edi+3], ch - add edi, 4 - sub cl, 4 - cmp cl, 4 - jge loc_468F36 - loc_468F68: - cmp cl, 2 - jl loc_468F83 - mov dl, [esi] - mov ch, [ebx+edx] - mov [edi], ch - mov dl, [esi+1] - mov ch, [ebx+edx] - mov [edi+1], ch - add esi, 2 - add edi, 2 - loc_468F83: - mov edx, esi - and edx, 2 - add esi, edx - sub edi, 320h - add edi, ebp - sub ebp, 2 - jge loc_468F2A - loc_468F97: - mov ebp, 10h - loc_468F9C: - cmp edi, gpBufEnd - jb loc_468FAC - add esi, 20h - add edi, 20h - jmp loc_468FE3 - loc_468FAC: - mov ecx, 20h - loc_468FB1: - mov eax, [esi] - add esi, 4 - mov dl, al - mov ch, [ebx+edx] - mov dl, ah - ror eax, 10h - mov [edi], ch - mov ch, [ebx+edx] - mov dl, al - mov [edi+1], ch - mov ch, [ebx+edx] - mov dl, ah - mov [edi+2], ch - mov ch, [ebx+edx] - mov [edi+3], ch - add edi, 4 - sub cl, 4 - cmp cl, 4 - jge loc_468FB1 - loc_468FE3: - sub edi, 320h - dec ebp - jnz loc_468F9C - pop ebp - jmp loc_4696B9 - loc_468FF2: - mov edx, 20h - loc_468FF7: - cmp edi, gpBufEnd - jb loc_469007 - add esi, 20h - add edi, 20h - jmp loc_469019 - loc_469007: - mov ecx, 8 - loc_46900C: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_46900C - loc_469019: - sub edi, 320h - dec edx - jnz loc_468FF7 - jmp loc_4696B9 - loc_469027: - mov ecx, 20h - loc_46902C: - push ecx - mov edx, 20h - loc_469032: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js loc_469082 - sub edx, eax - cmp edi, gpBufEnd - jb loc_46904B - add esi, eax - add edi, eax - jmp loc_46907C - loc_46904B: - mov ecx, eax - shr ecx, 1 - jnb loc_46905B - mov al, [esi] - inc esi - mov [edi], al - inc edi - test ecx, ecx - jz loc_46907C - loc_46905B: - shr ecx, 1 - jnb loc_46906F - mov ax, [esi] - add esi, 2 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_46907C - loc_46906F: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_46906F - loc_46907C: - test edx, edx - jz loc_46908A - jmp loc_469032 - loc_469082: - neg al - add edi, eax - sub edx, eax - jnz loc_469032 - loc_46908A: - pop ecx - sub edi, 320h - dec ecx - jnz loc_46902C - jmp loc_4696B9 - loc_469099: - mov edx, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_4690E0 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_4690D2 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub edx, ecx - jmp loc_4690E0 - loc_4690D2: - sub edi, 3000h - add esi, 120h - jmp loc_469117 - loc_4690E0: - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_4690FF - mov ax, [esi+2] - add esi, 4 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_46910C - loc_4690FF: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_4690FF - loc_46910C: - sub edi, 320h - sub edx, 2 - jge loc_4690E0 - loc_469117: - mov edx, 2 - mov eax, edi - sub eax, gpBufEnd - jb loc_46915E - add eax, 3FFh - shr eax, 8 - cmp eax, 2Ah - jg loc_469150 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_2[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - add edx, ecx - jmp loc_46915E - loc_469150: - sub edi, 2D00h - add esi, 100h - jmp loc_469198 - loc_46915E: - mov ecx, 20h - add edi, edx - sub ecx, edx - shr ecx, 2 - jnb loc_46917D - mov ax, [esi+2] - add esi, 4 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_46918A - loc_46917D: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_46917D - loc_46918A: - add edx, 2 - sub edi, 320h - cmp edx, 20h - jl loc_46915E - loc_469198: - jmp loc_4696B9 - loc_46919D: - mov edx, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_4691E4 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_4691D6 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub edx, ecx - jmp loc_4691E4 - loc_4691D6: - sub edi, 3000h - add esi, 120h - jmp loc_46921D - loc_4691E4: - mov ecx, 20h - sub ecx, edx - mov ebx, ecx - shr ecx, 2 - jz loc_4691FF - loc_4691F2: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_4691F2 - loc_4691FF: - and ebx, 2 - jz loc_469210 - mov ax, [esi] - add esi, 4 - mov [edi], ax - add edi, 2 - loc_469210: - add edi, edx - sub edi, 320h - sub edx, 2 - jge loc_4691E4 - loc_46921D: - mov edx, 2 - mov eax, edi - sub eax, gpBufEnd - jb loc_469264 - add eax, 3FFh - shr eax, 8 - cmp eax, 2Ah - jg loc_469256 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_2[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - add edx, ecx - jmp loc_469264 - loc_469256: - sub edi, 2D00h - add esi, 100h - jmp loc_4692A0 - loc_469264: - mov ecx, 20h - sub ecx, edx - mov ebx, ecx - shr ecx, 2 - jz loc_46927F - loc_469272: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_469272 - loc_46927F: - and ebx, 2 - jz loc_469290 - mov ax, [esi] - add esi, 4 - mov [edi], ax - add edi, 2 - loc_469290: - add edi, edx - add edx, 2 - sub edi, 320h - cmp edx, 20h - jl loc_469264 - loc_4692A0: - jmp loc_4696B9 - loc_4692A5: - mov edx, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_4692EC - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_4692DE - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub edx, ecx - jmp loc_4692EC - loc_4692DE: - sub edi, 3000h - add esi, 120h - jmp loc_469323 - loc_4692EC: - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_46930B - mov ax, [esi+2] - add esi, 4 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_469318 - loc_46930B: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_46930B - loc_469318: - sub edi, 320h - sub edx, 2 - jge loc_4692EC - loc_469323: - mov edx, 10h - loc_469328: - cmp edi, gpBufEnd - jb loc_469338 - add esi, 20h - add edi, 20h - jmp loc_46934A - loc_469338: - mov ecx, 8 - loc_46933D: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_46933D - loc_46934A: - sub edi, 320h - dec edx - jnz loc_469328 - jmp loc_4696B9 - loc_469358: - mov edx, 1Eh - mov eax, edi - sub eax, gpBufEnd - jb loc_46939F - add eax, 3FFh - shr eax, 8 - cmp eax, 2Dh - jg loc_469391 - mov ecx, WorldTbl3x16[eax*4] - mov eax, ecx - add esi, WorldTbl17_1[ecx] - shl eax, 6 - lea eax, [eax+eax*2] - shr ecx, 1 - sub edi, eax - sub edx, ecx - jmp loc_46939F - loc_469391: - sub edi, 3000h - add esi, 120h - jmp loc_4693D8 - loc_46939F: - mov ecx, 20h - sub ecx, edx - mov ebx, ecx - shr ecx, 2 - jz loc_4693BA - loc_4693AD: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_4693AD - loc_4693BA: - and ebx, 2 - jz loc_4693CB - mov ax, [esi] - add esi, 4 - mov [edi], ax - add edi, 2 - loc_4693CB: - sub edi, 320h - add edi, edx - sub edx, 2 - jge loc_46939F - loc_4693D8: - mov edx, 10h - loc_4693DD: - cmp edi, gpBufEnd - jb loc_4693ED - add esi, 20h - add edi, 20h - jmp loc_4693FF - loc_4693ED: - mov ecx, 8 - loc_4693F2: - mov eax, [esi] - add esi, 4 - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_4693F2 - loc_4693FF: - sub edi, 320h - dec edx - jnz loc_4693DD - jmp loc_4696B9 - loc_46940D: - mov edx, 20h - xor eax, eax - loc_469414: - cmp edi, gpBufEnd - jb loc_469424 - add esi, 20h - add edi, 20h - jmp loc_469431 - loc_469424: - mov ecx, 8 - loc_469429: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_469429 - loc_469431: - sub edi, 320h - dec edx - jnz loc_469414 - jmp loc_4696B9 - loc_46943F: - mov ecx, 20h - loc_469444: - push ecx - mov edx, 20h - loc_46944A: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js loc_469490 - sub edx, eax - cmp edi, gpBufEnd - jb loc_469463 - add esi, eax - add edi, eax - jmp loc_46948A - loc_469463: - mov ecx, eax - add esi, ecx - xor eax, eax - shr ecx, 1 - jnb loc_469474 - mov [edi], al - inc edi - test ecx, ecx - jz loc_46948A - loc_469474: - shr ecx, 1 - jnb loc_469482 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_46948A - loc_469482: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_469482 - loc_46948A: - test edx, edx - jz loc_469498 - jmp loc_46944A - loc_469490: - neg al - add edi, eax - sub edx, eax - jnz loc_46944A - loc_469498: - pop ecx - sub edi, 320h - dec ecx - jnz loc_469444 - jmp loc_4696B9 - loc_4694A7: - mov edx, 1Eh - xor eax, eax - loc_4694AE: - cmp edi, gpBufEnd - jb loc_4694C0 - add esi, 20h - sub esi, edx - add edi, 20h - jmp loc_4694E0 - loc_4694C0: - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_4694D8 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_4694E0 - loc_4694D8: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_4694D8 - loc_4694E0: - sub edi, 320h - test edx, edx - jz loc_4694EF - sub edx, 2 - jmp loc_4694AE - loc_4694EF: - mov edx, 2 - loc_4694F4: - cmp edi, gpBufEnd - jb loc_469506 - add esi, 20h - sub esi, edx - add edi, 20h - jmp loc_469526 - loc_469506: - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_46951E - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_469526 - loc_46951E: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_46951E - loc_469526: - sub edi, 320h - add edx, 2 - cmp edx, 20h - jnz loc_4694F4 - jmp loc_4696B9 - loc_469539: - mov edx, 1Eh - xor eax, eax - loc_469540: - cmp edi, gpBufEnd - jb loc_469554 - add esi, 20h - sub esi, edx - add edi, 20h - sub edi, edx - jmp loc_469572 - loc_469554: - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_46956A - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_469572 - loc_46956A: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_46956A - loc_469572: - sub edi, 320h - test edx, edx - jz loc_469583 - add edi, edx - sub edx, 2 - jmp loc_469540 - loc_469583: - mov edx, 2 - loc_469588: - cmp edi, gpBufEnd - jb loc_46959C - add esi, 20h - sub esi, edx - add edi, 20h - sub edi, edx - jmp loc_4695BA - loc_46959C: - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_4695B2 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_4695BA - loc_4695B2: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_4695B2 - loc_4695BA: - sub edi, 320h - add edi, edx - add edx, 2 - cmp edx, 20h - jnz loc_469588 - jmp loc_4696B9 - loc_4695CF: - mov edx, 1Eh - xor eax, eax - loc_4695D6: - cmp edi, gpBufEnd - jb loc_4695E8 - add esi, 20h - sub esi, edx - add edi, 20h - jmp loc_469608 - loc_4695E8: - add edi, edx - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_469600 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_469608 - loc_469600: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_469600 - loc_469608: - sub edi, 320h - test edx, edx - jz loc_469617 - sub edx, 2 - jmp loc_4695D6 - loc_469617: - mov edx, 10h - loc_46961C: - cmp edi, gpBufEnd - jb loc_46962C - add esi, 20h - add edi, 20h - jmp loc_469639 - loc_46962C: - mov ecx, 8 - loc_469631: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_469631 - loc_469639: - sub edi, 320h - dec edx - jnz loc_46961C - jmp loc_4696B9 - loc_469644: - mov edx, 1Eh - xor eax, eax - loc_46964B: - cmp edi, gpBufEnd - jb loc_46965F - add esi, 20h - sub esi, edx - add edi, 20h - sub edi, edx - jmp loc_46967D - loc_46965F: - mov ecx, 20h - sub ecx, edx - shr ecx, 2 - jnb loc_469675 - mov [edi], ax - add edi, 2 - test ecx, ecx - jz loc_46967D - loc_469675: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_469675 - loc_46967D: - sub edi, 320h - test edx, edx - jz loc_46968E - add edi, edx - sub edx, 2 - jmp loc_46964B - loc_46968E: - mov edx, 10h - loc_469693: - cmp edi, gpBufEnd - jb loc_4696A3 - add esi, 20h - add edi, 20h - jmp loc_4696B0 - loc_4696A3: - mov ecx, 8 - loc_4696A8: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_4696A8 - loc_4696B0: - sub edi, 320h - dec edx - jnz loc_469693 - loc_4696B9: - pop esi - pop edi - pop edx - pop ebx - retn - } -} - -__declspec(naked) void world_draw_black_tile(BYTE *pBuff) -{ - __asm { - push ebx - push edx - push edi - push esi - mov edi, ecx - mov edx, 1Eh - mov ebx, 1 - xor eax, eax - loc_4696D0: - add edi, edx - mov ecx, ebx - loc_4696D4: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_4696D4 - add edi, edx - sub edi, 340h - test edx, edx - jz loc_4696EE - sub edx, 2 - inc ebx - jmp loc_4696D0 - loc_4696EE: - mov edx, 2 - mov ebx, 0Fh - loc_4696F8: - add edi, edx - mov ecx, ebx - loc_4696FC: - mov [edi], eax - add edi, 4 - dec ecx - jnz loc_4696FC - add edi, edx - sub edi, 340h - dec ebx - add edx, 2 - cmp edx, 20h - jnz loc_4696F8 - pop esi - pop edi - pop edx - pop ebx - retn - } -} diff --git a/Source/appfat.cpp b/Source/appfat.cpp index 394f864be..3625cafe3 100644 --- a/Source/appfat.cpp +++ b/Source/appfat.cpp @@ -21,13 +21,7 @@ void TriggerBreak() LPTOP_LEVEL_EXCEPTION_FILTER pFilter; pFilter = SetUnhandledExceptionFilter(BreakFilter); -#ifdef USE_ASM - __asm { - int 3 - } -#else __debugbreak(); -#endif SetUnhandledExceptionFilter(pFilter); #endif } diff --git a/Source/control.cpp b/Source/control.cpp index 424220ddc..71df25bda 100644 --- a/Source/control.cpp +++ b/Source/control.cpp @@ -179,75 +179,6 @@ void DrawSpellCel(int xp, int yp, BYTE *Trans, int nCel, int w) dst = &gpBuffer[xp + PitchTbl[yp]]; tbl = SplTransTbl; -#ifdef USE_ASM - __asm { - mov ebx, Trans - mov eax, nCel - shl eax, 2 - add ebx, eax - mov eax, [ebx+4] - sub eax, [ebx] - mov end, eax - mov esi, Trans - add esi, [ebx] - mov edi, dst - mov eax, end - add eax, esi - mov end, eax - mov ebx, tbl - label1: - mov edx, w - label2: - xor eax, eax - lodsb - or al, al - js label6 - sub edx, eax - mov ecx, eax - shr ecx, 1 - jnb label3 - lodsb - xlat - stosb - jecxz label5 - label3: - shr ecx, 1 - jnb label4 - lodsw - xlat - ror ax, 8 - xlat - ror ax, 8 - stosw - jecxz label5 - label4: - lodsd - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - xlat - ror eax, 8 - stosd - loop label4 - label5: - or edx, edx - jz label7 - jmp label2 - label6: - neg al - add edi, eax - sub edx, eax - jnz label2 - label7: - sub edi, BUFFER_WIDTH - sub edi, w - cmp esi, end - jnz label1 - } -#else int i; BYTE width; BYTE *src; @@ -291,7 +222,6 @@ void DrawSpellCel(int xp, int yp, BYTE *Trans, int nCel, int w) } } } -#endif } void SetSpellTrans(char t) @@ -560,174 +490,6 @@ void CPrintString(int nOffset, int nCel, char col) { /// ASSERT: assert(gpBuffer); -#ifdef USE_ASM - __asm { - mov ebx, pPanelText - mov eax, nCel - shl eax, 2 - add ebx, eax - mov edx, [ebx+4] - sub edx, [ebx] - mov esi, pPanelText - add esi, [ebx] - mov edi, gpBuffer - add edi, nOffset - mov ebx, edx - add ebx, esi - xor edx, edx - mov dl, col - cmp edx, COL_WHITE - jz c0_label1 - cmp edx, COL_BLUE - jz c1_label1 - cmp edx, COL_RED - jz c2_label1 - jmp d_label1 - - // Case 0 - c0_label1: - mov edx, 13 - c0_label2: - xor eax, eax - lodsb - or al, al - js c0_label6 - sub edx, eax - mov ecx, eax - shr ecx, 1 - jnb c0_label3 - movsb - jecxz c0_label5 - c0_label3: - shr ecx, 1 - jnb c0_label4 - movsw - jecxz c0_label5 - c0_label4: - rep movsd - c0_label5: - or edx, edx - jz c0_label7 - jmp c0_label2 - c0_label6: - neg al - add edi, eax - sub edx, eax - jnz c0_label2 - c0_label7: - sub edi, BUFFER_WIDTH + 13 - cmp ebx, esi - jnz c0_label1 - jmp labret - - // Case 1 - c1_label1: - mov edx, 13 - c1_label2: - xor eax, eax - lodsb - or al, al - js c1_label6 - sub edx, eax - mov ecx, eax - c1_label3: - lodsb - cmp al, PAL16_GRAY + 13 - ja c1_label4 - cmp al, PAL16_GRAY - jb c1_label5 - sub al, PAL16_GRAY - (PAL16_BLUE + 2) - jmp c1_label5 - c1_label4: - mov al, PAL16_BLUE + 15 - c1_label5: - stosb - loop c1_label3 - or edx, edx - jz c1_label7 - jmp c1_label2 - c1_label6: - neg al - add edi, eax - sub edx, eax - jnz c1_label2 - c1_label7: - sub edi, BUFFER_WIDTH + 13 - cmp ebx, esi - jnz c1_label1 - jmp labret - - // Case 2 - c2_label1: - mov edx, 13 - c2_label2: - xor eax, eax - lodsb - or al, al - js c2_label5 - sub edx, eax - mov ecx, eax - c2_label3: - lodsb - cmp al, PAL16_GRAY - jb c2_label4 - sub al, PAL16_GRAY - PAL16_RED - c2_label4: - stosb - loop c2_label3 - or edx, edx - jz c2_label6 - jmp c2_label2 - c2_label5: - neg al - add edi, eax - sub edx, eax - jnz c2_label2 - c2_label6: - sub edi, BUFFER_WIDTH + 13 - cmp ebx, esi - jnz c2_label1 - jmp labret - - // Default - d_label1: - mov edx, 13 - d_label2: - xor eax, eax - lodsb - or al, al - js d_label6 - sub edx, eax - mov ecx, eax - d_label3: - lodsb - cmp al, PAL16_GRAY - jb d_label5 - cmp al, PAL16_GRAY + 14 - jnb d_label4 - sub al, PAL16_GRAY - (PAL16_YELLOW + 2) - jmp d_label5 - d_label4: - mov al, PAL16_YELLOW + 15 - d_label5: - stosb - loop d_label3 - or edx, edx - jz d_label7 - jmp d_label2 - d_label6: - neg al - add edi, eax - sub edx, eax - jnz d_label2 - d_label7: - sub edi, BUFFER_WIDTH + 13 - cmp ebx, esi - jnz d_label1 - - labret: - } -#else int i; BYTE width, pix; BYTE *src, *dst, *end; @@ -845,7 +607,6 @@ void CPrintString(int nOffset, int nCel, char col) } break; } -#endif } void AddPanelString(char *str, BOOL just) @@ -872,38 +633,6 @@ void DrawPanelBox(int x, int y, int w, int h, int sx, int sy) nSrcOff = x + PANEL_WIDTH * y; nDstOff = sx + BUFFER_WIDTH * sy; -#ifdef USE_ASM - __asm { - mov esi, pBtmBuff - add esi, nSrcOff - mov edi, gpBuffer - add edi, nDstOff - xor ebx, ebx - mov bx, word ptr w - xor edx, edx - mov dx, word ptr h - label1: - mov ecx, ebx - shr ecx, 1 - jnb label2 - movsb - jecxz label4 - label2: - shr ecx, 1 - jnb label3 - movsw - jecxz label4 - label3: - rep movsd - label4: - add esi, PANEL_WIDTH - sub esi, ebx - add edi, BUFFER_WIDTH - sub edi, ebx - dec edx - jnz label1 - } -#else int wdt, hgt; BYTE *src, *dst; @@ -935,7 +664,6 @@ void DrawPanelBox(int x, int y, int w, int h, int sx, int sy) wdt--; } } -#endif } void SetFlaskHeight(BYTE *pCelBuff, int min, int max, int c, int r) @@ -948,21 +676,6 @@ void SetFlaskHeight(BYTE *pCelBuff, int min, int max, int c, int r) nDstOff = c + BUFFER_WIDTH * r; w = max - min; -#ifdef USE_ASM - __asm { - mov esi, pCelBuff - add esi, nSrcOff - mov edi, gpBuffer - add edi, nDstOff - mov edx, w - label1: - mov ecx, 88 / 4 - rep movsd - add edi, BUFFER_WIDTH - 88 - dec edx - jnz label1 - } -#else BYTE *src, *dst; src = &pCelBuff[nSrcOff]; @@ -970,35 +683,10 @@ void SetFlaskHeight(BYTE *pCelBuff, int min, int max, int c, int r) for (; w; w--, src += 88, dst += BUFFER_WIDTH) memcpy(dst, src, 88); -#endif } void DrawFlask(BYTE *pCelBuff, int w, int nSrcOff, BYTE *pBuff, int nDstOff, int h) { -#ifdef USE_ASM - __asm { - mov esi, pCelBuff - add esi, nSrcOff - mov edi, pBuff - add edi, nDstOff - mov edx, h - label1: - mov ecx, 59 - label2: - lodsb - or al, al - jz label3 - mov [edi], al - label3: - inc edi - loop label2 - add esi, w - sub esi, 59 - add edi, BUFFER_WIDTH - 59 - dec edx - jnz label1 - } -#else int wdt, hgt; BYTE *src, *dst; @@ -1013,7 +701,6 @@ void DrawFlask(BYTE *pCelBuff, int w, int nSrcOff, BYTE *pBuff, int nDstOff, int dst++; } } -#endif } void DrawLifeFlask() @@ -2083,48 +1770,6 @@ void RedBack() /// ASSERT: assert(gpBuffer); -#ifdef USE_ASM - if (leveltype != DTYPE_HELL) { - __asm { - mov edi, gpBuffer - add edi, SCREENXY(0, 0) - mov ebx, pLightTbl - add ebx, idx - mov edx, PANEL_TOP - lx_label1: - mov ecx, SCREEN_WIDTH - lx_label2: - mov al, [edi] - xlat - stosb - loop lx_label2 - add edi, BUFFER_WIDTH - SCREEN_WIDTH - dec edx - jnz lx_label1 - } - } else { - __asm { - mov edi, gpBuffer - add edi, SCREENXY(0, 0) - mov ebx, pLightTbl - add ebx, idx - mov edx, PANEL_TOP - l4_label1: - mov ecx, SCREEN_WIDTH - l4_label2: - mov al, [edi] - cmp al, 32 - jb l4_label3 - xlat - l4_label3: - stosb - loop l4_label2 - add edi, BUFFER_WIDTH - SCREEN_WIDTH - dec edx - jnz l4_label1 - } - } -#else int w, h; BYTE *dst, *tbl; @@ -2148,7 +1793,6 @@ void RedBack() } } } -#endif } char GetSBookTrans(int ii, BOOL townok) diff --git a/Source/drlg_l1.cpp b/Source/drlg_l1.cpp index d53d619a2..f719d3160 100644 --- a/Source/drlg_l1.cpp +++ b/Source/drlg_l1.cpp @@ -206,32 +206,10 @@ void DRLG_L1Pass3() lv = 22 - 1; -#ifdef USE_ASM - __asm { - mov esi, pMegaTiles - mov eax, lv - shl eax, 3 - add esi, eax - xor eax, eax - lodsw - inc eax - mov v1, eax - lodsw - inc eax - mov v2, eax - lodsw - inc eax - mov v3, eax - lodsw - inc eax - mov v4, eax - } -#else v1 = *((WORD *)&pMegaTiles[lv * 8]) + 1; v2 = *((WORD *)&pMegaTiles[lv * 8] + 1) + 1; v3 = *((WORD *)&pMegaTiles[lv * 8] + 2) + 1; v4 = *((WORD *)&pMegaTiles[lv * 8] + 3) + 1; -#endif for (j = 0; j < MAXDUNY; j += 2) { @@ -249,32 +227,10 @@ void DRLG_L1Pass3() for (i = 0; i < DMAXX; i++) { lv = dungeon[i][j] - 1; /// ASSERT: assert(lv >= 0); -#ifdef USE_ASM - __asm { - mov esi, pMegaTiles - mov eax, lv - shl eax, 3 - add esi, eax - xor eax, eax - lodsw - inc eax - mov v1, eax - lodsw - inc eax - mov v2, eax - lodsw - inc eax - mov v3, eax - lodsw - inc eax - mov v4, eax - } -#else v1 = *((WORD *)&pMegaTiles[lv * 8]) + 1; v2 = *((WORD *)&pMegaTiles[lv * 8] + 1) + 1; v3 = *((WORD *)&pMegaTiles[lv * 8] + 2) + 1; v4 = *((WORD *)&pMegaTiles[lv * 8] + 3) + 1; -#endif dPiece[xx][yy] = v1; dPiece[xx + 1][yy] = v2; dPiece[xx][yy + 1] = v3; diff --git a/Source/drlg_l2.cpp b/Source/drlg_l2.cpp index 90f789db9..c95820b42 100644 --- a/Source/drlg_l2.cpp +++ b/Source/drlg_l2.cpp @@ -427,32 +427,10 @@ void DRLG_L2Pass3() lv = 12 - 1; -#ifdef USE_ASM - __asm { - mov esi, pMegaTiles - mov eax, lv - shl eax, 3 - add esi, eax - xor eax, eax - lodsw - inc eax - mov v1, eax - lodsw - inc eax - mov v2, eax - lodsw - inc eax - mov v3, eax - lodsw - inc eax - mov v4, eax - } -#else v1 = *((WORD *)&pMegaTiles[lv * 8]) + 1; v2 = *((WORD *)&pMegaTiles[lv * 8] + 1) + 1; v3 = *((WORD *)&pMegaTiles[lv * 8] + 2) + 1; v4 = *((WORD *)&pMegaTiles[lv * 8] + 3) + 1; -#endif for (j = 0; j < MAXDUNY; j += 2) { @@ -469,32 +447,10 @@ void DRLG_L2Pass3() xx = 16; for (i = 0; i < DMAXX; i++) { lv = dungeon[i][j] - 1; -#ifdef USE_ASM - __asm { - mov esi, pMegaTiles - mov eax, lv - shl eax, 3 - add esi, eax - xor eax, eax - lodsw - inc eax - mov v1, eax - lodsw - inc eax - mov v2, eax - lodsw - inc eax - mov v3, eax - lodsw - inc eax - mov v4, eax - } -#else v1 = *((WORD *)&pMegaTiles[lv * 8]) + 1; v2 = *((WORD *)&pMegaTiles[lv * 8] + 1) + 1; v3 = *((WORD *)&pMegaTiles[lv * 8] + 2) + 1; v4 = *((WORD *)&pMegaTiles[lv * 8] + 3) + 1; -#endif dPiece[xx][yy] = v1; dPiece[xx + 1][yy] = v2; dPiece[xx][yy + 1] = v3; diff --git a/Source/drlg_l3.cpp b/Source/drlg_l3.cpp index 81517da5f..1c5af2f7d 100644 --- a/Source/drlg_l3.cpp +++ b/Source/drlg_l3.cpp @@ -1638,32 +1638,10 @@ void DRLG_L3Pass3() lv = 8 - 1; -#ifdef USE_ASM - __asm { - mov esi, pMegaTiles - mov eax, lv - shl eax, 3 - add esi, eax - xor eax, eax - lodsw - inc eax - mov v1, eax - lodsw - inc eax - mov v2, eax - lodsw - inc eax - mov v3, eax - lodsw - inc eax - mov v4, eax - } -#else v1 = *((WORD *)&pMegaTiles[lv * 8]) + 1; v2 = *((WORD *)&pMegaTiles[lv * 8] + 1) + 1; v3 = *((WORD *)&pMegaTiles[lv * 8] + 2) + 1; v4 = *((WORD *)&pMegaTiles[lv * 8] + 3) + 1; -#endif for (j = 0; j < MAXDUNY; j += 2) { @@ -1680,34 +1658,6 @@ void DRLG_L3Pass3() xx = 16; for (i = 0; i < DMAXX; i++) { lv = dungeon[i][j] - 1; -#ifdef USE_ASM - if (lv >= 0) { - __asm { - mov esi, pMegaTiles - mov eax, lv - shl eax, 3 - add esi, eax - xor eax, eax - lodsw - inc eax - mov v1, eax - lodsw - inc eax - mov v2, eax - lodsw - inc eax - mov v3, eax - lodsw - inc eax - mov v4, eax - } - } else { - v1 = 0; - v2 = 0; - v3 = 0; - v4 = 0; - } -#else if (lv >= 0) { v1 = *((WORD *)&pMegaTiles[lv * 8]) + 1; v2 = *((WORD *)&pMegaTiles[lv * 8] + 1) + 1; @@ -1719,7 +1669,6 @@ void DRLG_L3Pass3() v3 = 0; v4 = 0; } -#endif dPiece[xx][yy] = v1; dPiece[xx + 1][yy] = v2; dPiece[xx][yy + 1] = v3; diff --git a/Source/drlg_l4.cpp b/Source/drlg_l4.cpp index 75e18eb3a..7a1ef40f7 100644 --- a/Source/drlg_l4.cpp +++ b/Source/drlg_l4.cpp @@ -1900,32 +1900,10 @@ void DRLG_L4Pass3() lv = 30 - 1; -#ifdef USE_ASM - __asm { - mov esi, pMegaTiles - mov eax, lv - shl eax, 3 - add esi, eax - xor eax, eax - lodsw - inc eax - mov v1, eax - lodsw - inc eax - mov v2, eax - lodsw - inc eax - mov v3, eax - lodsw - inc eax - mov v4, eax - } -#else v1 = *((WORD *)&pMegaTiles[lv * 8]) + 1; v2 = *((WORD *)&pMegaTiles[lv * 8] + 1) + 1; v3 = *((WORD *)&pMegaTiles[lv * 8] + 2) + 1; v4 = *((WORD *)&pMegaTiles[lv * 8] + 3) + 1; -#endif for (j = 0; j < MAXDUNY; j += 2) { @@ -1942,34 +1920,6 @@ void DRLG_L4Pass3() xx = 16; for (i = 0; i < DMAXX; i++) { lv = dungeon[i][j] - 1; -#ifdef USE_ASM - if (lv >= 0) { - __asm { - mov esi, pMegaTiles - mov eax, lv - shl eax, 3 - add esi, eax - xor eax, eax - lodsw - inc eax - mov v1, eax - lodsw - inc eax - mov v2, eax - lodsw - inc eax - mov v3, eax - lodsw - inc eax - mov v4, eax - } - } else { - v1 = 0; - v2 = 0; - v3 = 0; - v4 = 0; - } -#else if (lv >= 0) { v1 = *((WORD *)&pMegaTiles[lv * 8]) + 1; v2 = *((WORD *)&pMegaTiles[lv * 8] + 1) + 1; @@ -1981,7 +1931,6 @@ void DRLG_L4Pass3() v3 = 0; v4 = 0; } -#endif dPiece[xx][yy] = v1; dPiece[xx + 1][yy] = v2; dPiece[xx][yy + 1] = v3; diff --git a/Source/engine.cpp b/Source/engine.cpp index fc3b5ced8..328964e6c 100644 --- a/Source/engine.cpp +++ b/Source/engine.cpp @@ -3,10 +3,6 @@ DEVILUTION_BEGIN_NAMESPACE -#ifdef USE_ASM -#pragma warning(disable : 4731) // frame pointer register 'ebp' modified by inline assembly code -#endif - char gbPixelCol; // automap pixel color 8-bit (palette entry) BOOL gbRotateMap; // flip - if y < x int orgseed; @@ -32,50 +28,6 @@ void CelDrawDatOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth) if (!pRLEBytes) return; -#ifdef USE_ASM - __asm { - mov esi, pRLEBytes - mov edi, pDecodeTo - mov eax, BUFFER_WIDTH - add eax, nWidth - mov w, eax - mov ebx, nDataSize - add ebx, esi - label1: - mov edx, nWidth - label2: - xor eax, eax - lodsb - or al, al - js label6 - sub edx, eax - mov ecx, eax - shr ecx, 1 - jnb label3 - movsb - jecxz label5 - label3: - shr ecx, 1 - jnb label4 - movsw - jecxz label5 - label4: - rep movsd - label5: - or edx, edx - jz label7 - jmp label2 - label6: - neg al - add edi, eax - sub edx, eax - jnz label2 - label7: - sub edi, w - cmp ebx, esi - jnz label1 - } -#else int i; BYTE width; BYTE *src, *dst; @@ -117,7 +69,6 @@ void CelDrawDatOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth) } } } -#endif } void CelDecodeOnly(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth) @@ -250,102 +201,6 @@ void CelDecDatLightOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWi if (!pRLEBytes) return; -#ifdef USE_ASM - __asm { - mov eax, light_table_index - shl eax, 8 - add eax, pLightTbl - mov tbl, eax - mov esi, pRLEBytes - mov edi, pDecodeTo - mov eax, BUFFER_WIDTH - add eax, nWidth - mov w, eax - mov ebx, nDataSize - add ebx, esi - label1: - mov edx, nWidth - label2: - xor eax, eax - lodsb - or al, al - js label3 - push ebx - mov ebx, tbl - sub edx, eax - mov ecx, eax - push edx - call CelDecDatLightEntry - pop edx - pop ebx - or edx, edx - jnz label2 - jmp label4 - label3: - neg al - add edi, eax - sub edx, eax - jnz label2 - label4: - sub edi, w - cmp ebx, esi - jnz label1 - jmp labexit - } - - /* Assembly Macro */ - // clang-format off - __asm { - CelDecDatLightEntry: - shr cl, 1 - jnb label5 - mov dl, [esi] - mov dl, [ebx+edx] - mov [edi], dl - add esi, 1 - add edi, 1 - label5: - shr cl, 1 - jnb label6 - mov dl, [esi] - mov ch, [ebx+edx] - mov [edi], ch - mov dl, [esi+1] - mov ch, [ebx+edx] - mov [edi+1], ch - add esi, 2 - add edi, 2 - label6: - test cl, cl - jz labret - label7: - mov eax, [esi] - add esi, 4 - mov dl, al - mov ch, [ebx+edx] - mov dl, ah - ror eax, 10h - mov [edi], ch - mov ch, [ebx+edx] - mov dl, al - mov [edi+1], ch - mov ch, [ebx+edx] - mov dl, ah - mov [edi+2], ch - mov ch, [ebx+edx] - mov [edi+3], ch - add edi, 4 - dec cl - jnz label7 - labret: - retn - } - // clang-format on - - __asm { - labexit: - } -#else int i; BYTE width; BYTE *src, *dst; @@ -388,7 +243,6 @@ void CelDecDatLightOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWi } } } -#endif } void CelDecDatLightTrans(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth) @@ -733,53 +587,6 @@ void CelDrawHdrLightRed(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, in if (light >= 4) idx += (light - 1) << 8; -#ifdef USE_ASM - __asm { - mov eax, pLightTbl - add eax, idx - mov tbl, eax - mov esi, pRLEBytes - mov edi, dst - mov eax, BUFFER_WIDTH - add eax, nWidth - mov w, eax /* use C for w? w = BUFFER_WIDTH + nWidth */ - mov ebx, nDataSize - add ebx, esi - label1: - mov edx, nWidth - label2: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js label4 - push ebx - mov ebx, tbl - sub edx, eax - mov ecx, eax - label3: - mov al, [esi] - inc esi - mov al, [ebx+eax] - mov [edi], al - dec ecx - lea edi, [edi+1] - jnz label3 - pop ebx - test edx, edx - jz label5 - jmp label2 - label4: - neg al - add edi, eax - sub edx, eax - jnz label2 - label5: - sub edi, w - cmp ebx, esi - jnz label1 - } -#else BYTE width; BYTE *end; @@ -804,7 +611,6 @@ void CelDrawHdrLightRed(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, in } } } -#endif } void Cel2DecDatOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth) @@ -821,56 +627,6 @@ void Cel2DecDatOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth) if (!gpBuffer) return; -#ifdef USE_ASM - __asm { - mov esi, pRLEBytes - mov edi, pDecodeTo - mov eax, BUFFER_WIDTH - add eax, nWidth - mov w, eax - mov ebx, nDataSize - add ebx, esi - label1: - mov edx, nWidth - label2: - xor eax, eax - lodsb - or al, al - js label7 - sub edx, eax - cmp edi, gpBufEnd - jb label3 - add esi, eax - add edi, eax - jmp label6 - label3: - mov ecx, eax - shr ecx, 1 - jnb label4 - movsb - jecxz label6 - label4: - shr ecx, 1 - jnb label5 - movsw - jecxz label6 - label5: - rep movsd - label6: - or edx, edx - jz label8 - jmp label2 - label7: - neg al - add edi, eax - sub edx, eax - jnz label2 - label8: - sub edi, w - cmp ebx, esi - jnz label1 - } -#else int i; BYTE width; BYTE *src, *dst; @@ -917,7 +673,6 @@ void Cel2DecDatOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth) } } } -#endif } /** @@ -1013,109 +768,6 @@ void Cel2DecDatLightOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nW if (!gpBuffer) return; -#ifdef USE_ASM - __asm { - mov eax, light_table_index - shl eax, 8 - add eax, pLightTbl - mov tbl, eax - mov esi, pRLEBytes - mov edi, pDecodeTo - mov eax, BUFFER_WIDTH - add eax, nWidth - mov w, eax - mov ebx, nDataSize - add ebx, esi - label1: - mov edx, nWidth - label2: - xor eax, eax - lodsb - or al, al - js label5 - push ebx - mov ebx, tbl - sub edx, eax - cmp edi, gpBufEnd - jb label3 - add esi, eax - add edi, eax - jmp label4 - label3: - mov ecx, eax - push edx - call Cel2DecDatLightEntry - pop edx - label4: - pop ebx - or edx, edx - jz label6 - jmp label2 - label5: - neg al - add edi, eax - sub edx, eax - jnz label2 - label6: - sub edi, w - cmp ebx, esi - jnz label1 - jmp labexit - } - - /* Assembly Macro */ - // clang-format off - __asm { - Cel2DecDatLightEntry: - shr cl, 1 - jnb label7 - mov dl, [esi] - mov dl, [ebx+edx] - mov [edi], dl - add esi, 1 - add edi, 1 - label7: - shr cl, 1 - jnb label8 - mov dl, [esi] - mov ch, [ebx+edx] - mov [edi], ch - mov dl, [esi+1] - mov ch, [ebx+edx] - mov [edi+1], ch - add esi, 2 - add edi, 2 - label8: - test cl, cl - jz labret - label9: - mov eax, [esi] - add esi, 4 - mov dl, al - mov ch, [ebx+edx] - mov dl, ah - ror eax, 10h - mov [edi], ch - mov ch, [ebx+edx] - mov dl, al - mov [edi+1], ch - mov ch, [ebx+edx] - mov dl, ah - mov [edi+2], ch - mov ch, [ebx+edx] - mov [edi+3], ch - add edi, 4 - dec cl - jnz label9 - labret: - retn - } - // clang-format on - - __asm { - labexit: - } -#else int i; BYTE width; BYTE *src, *dst; @@ -1163,7 +815,6 @@ void Cel2DecDatLightOnly(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nW } } } -#endif } void Cel2DecDatLightTrans(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth) @@ -1495,55 +1146,6 @@ void Cel2DrawHdrLightRed(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, i tbl = &pLightTbl[idx]; -#ifdef USE_ASM - w = BUFFER_WIDTH + nWidth; - - __asm { - mov esi, pRLEBytes - mov edi, dst - mov ecx, nDataSize - add ecx, esi - label1: - push ecx - mov edx, nWidth - xor ecx, ecx - label2: - xor eax, eax - mov al, [esi] - inc esi - test al, al - js label5 - mov ebx, tbl - sub edx, eax - cmp edi, gpBufEnd - jb label3 - add esi, eax - add edi, eax - jmp label4 - label3: - mov cl, [esi] - inc esi - mov cl, [ebx+ecx] - mov [edi], cl - dec eax - lea edi, [edi+1] - jnz label3 - label4: - test edx, edx - jz label6 - jmp label2 - label5: - neg al - add edi, eax - sub edx, eax - jnz label2 - label6: - pop ecx - sub edi, w - cmp ecx, esi - jnz label1 - } -#else BYTE width; BYTE *end; @@ -1572,7 +1174,6 @@ void Cel2DrawHdrLightRed(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, i } } } -#endif } void CelDecodeRect(BYTE *pBuff, int CelSkip, int hgt, int wdt, BYTE *pCelBuff, int nCel, int nWidth) @@ -1586,65 +1187,6 @@ void CelDecodeRect(BYTE *pBuff, int CelSkip, int hgt, int wdt, BYTE *pCelBuff, i if (!pBuff) return; -#ifdef USE_ASM - __asm { - mov ebx, pCelBuff - mov eax, nCel - shl eax, 2 - add ebx, eax - mov eax, [ebx+4] - sub eax, [ebx] - mov end, eax - mov eax, pCelBuff - add eax, [ebx] - mov pRLEBytes, eax - } - - dst = &pBuff[hgt * wdt + CelSkip]; - - __asm { - mov esi, pRLEBytes - mov edi, dst - mov eax, wdt - add eax, nWidth - mov wdt, eax - mov ebx, end - add ebx, esi - label1: - mov edx, nWidth - label2: - xor eax, eax - lodsb - or al, al - js label6 - sub edx, eax - mov ecx, eax - shr ecx, 1 - jnb label3 - movsb - jecxz label5 - label3: - shr ecx, 1 - jnb label4 - movsw - jecxz label5 - label4: - rep movsd - label5: - or edx, edx - jz label7 - jmp label2 - label6: - neg al - add edi, eax - sub edx, eax - jnz label2 - label7: - sub edi, wdt - cmp ebx, esi - jnz label1 - } -#else int i; BYTE width; DWORD *pFrameTable; @@ -1688,7 +1230,6 @@ void CelDecodeRect(BYTE *pBuff, int CelSkip, int hgt, int wdt, BYTE *pCelBuff, i } } } -#endif } /** @@ -1707,83 +1248,6 @@ void CelDecodeClr(char col, int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth if (!gpBuffer) return; -#ifdef USE_ASM - __asm { - mov ebx, pCelBuff - mov eax, nCel - shl eax, 2 - add ebx, eax - mov eax, [ebx+4] - sub eax, [ebx] - mov nDataSize, eax - mov edx, pCelBuff - add edx, [ebx] - mov pRLEBytes, edx - add edx, CelSkip - xor eax, eax - mov ax, [edx] - mov nDataStart, eax - mov edx, pRLEBytes - add edx, CelCap - mov ax, [edx] - mov nDataCap, eax - } - - if (!nDataStart) return; - - if (CelCap == 8) - nDataCap = 0; - if (nDataCap) - nDataSize = nDataCap - nDataStart; - else - nDataSize -= nDataStart; - - pRLEBytes += nDataStart; - dst = &gpBuffer[sx + PitchTbl[sy - 16 * CelSkip]]; - - __asm { - mov esi, pRLEBytes - mov edi, dst - mov eax, BUFFER_WIDTH - add eax, nWidth - mov w, eax - mov ebx, nDataSize - add ebx, esi - label1: - mov edx, nWidth - label2: - xor eax, eax - lodsb - or al, al - js label5 - sub edx, eax - mov ecx, eax - mov ah, col - label3: - lodsb - or al, al - jz label4 - mov [edi-BUFFER_WIDTH], ah - mov [edi-1], ah - mov [edi+1], ah - mov [edi+BUFFER_WIDTH], ah - label4: - inc edi - loop label3 - or edx, edx - jz label6 - jmp label2 - label5: - neg al - add edi, eax - sub edx, eax - jnz label2 - label6: - sub edi, w - cmp ebx, esi - jnz label1 - } -#else BYTE width; BYTE *end, *src; DWORD *pFrameTable; @@ -1791,165 +1255,62 @@ void CelDecodeClr(char col, int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth pFrameTable = (DWORD *)&pCelBuff[4 * nCel]; pRLEBytes = &pCelBuff[pFrameTable[0]]; nDataStart = *(WORD *)&pRLEBytes[CelSkip]; - if (!nDataStart) - return; - - nDataCap = *(WORD *)&pRLEBytes[CelCap]; - if (CelCap == 8) - nDataCap = 0; - - if (nDataCap) - nDataSize = nDataCap - nDataStart; - else - nDataSize = pFrameTable[1] - pFrameTable[0] - nDataStart; - - src = pRLEBytes + nDataStart; - end = &src[nDataSize]; - dst = &gpBuffer[sx + PitchTbl[sy - 16 * CelSkip]]; - - for (; src != end; dst -= BUFFER_WIDTH + nWidth) { - for (w = nWidth; w;) { - width = *src++; - if (!(width & 0x80)) { - w -= width; - while (width) { - if (*src++) { - dst[-BUFFER_WIDTH] = col; - dst[-1] = col; - dst[1] = col; - dst[BUFFER_WIDTH] = col; - } - dst++; - width--; - } - } else { - width = -(char)width; - dst += width; - w -= width; - } - } - } -#endif -} - -/** - * @param CelSkip Skip lower parts of sprite, must be multiple of 2, max 8 - * @param CelCap Amount of sprite to render from lower to upper, must be multiple of 2, max 8 - */ -void CelDrawHdrClrHL(char col, int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap) -{ - int nDataStart, nDataSize, nDataCap, w; - BYTE *pRLEBytes, *dst; - - /// ASSERT: assert(pCelBuff != NULL); - if (!pCelBuff) - return; - /// ASSERT: assert(gpBuffer); - if (!gpBuffer) - return; - -#ifdef USE_ASM - __asm { - mov ebx, pCelBuff - mov eax, nCel - shl eax, 2 - add ebx, eax - mov eax, [ebx+4] - sub eax, [ebx] - mov nDataSize, eax - mov edx, pCelBuff - add edx, [ebx] - mov pRLEBytes, edx - add edx, CelSkip - xor eax, eax - mov ax, [edx] - mov nDataStart, eax - mov edx, pRLEBytes - add edx, CelCap - mov ax, [edx] - mov nDataCap, eax - } - - if (!nDataStart) return; - - if (CelCap == 8) - nDataCap = 0; - if (nDataCap) - nDataSize = nDataCap - nDataStart; - else - nDataSize -= nDataStart; - - pRLEBytes += nDataStart; - dst = &gpBuffer[sx + PitchTbl[sy - 16 * CelSkip]]; - - __asm { - mov esi, pRLEBytes - mov edi, dst - mov eax, BUFFER_WIDTH - add eax, nWidth - mov w, eax - mov ebx, nDataSize - add ebx, esi - label1: - mov edx, nWidth - label2: - xor eax, eax - lodsb - or al, al - js label10 - sub edx, eax - mov ecx, gpBufEnd - cmp edi, ecx - jb label3 - add esi, eax - add edi, eax - jmp label9 - label3: - sub ecx, BUFFER_WIDTH - cmp edi, ecx - jnb label6 - mov ecx, eax - mov ah, col - label4: - lodsb - or al, al - jz label5 - mov [edi-BUFFER_WIDTH], ah - mov [edi-1], ah - mov [edi+1], ah - mov [edi+BUFFER_WIDTH], ah - label5: - inc edi - loop label4 - jmp label9 - label6: - mov ecx, eax - mov ah, col - label7: - lodsb - or al, al - jz label8 - mov [edi-BUFFER_WIDTH], ah - mov [edi-1], ah - mov [edi+1], ah - label8: - inc edi - loop label7 - label9: - or edx, edx - jz label11 - jmp label2 - label10: - neg al - add edi, eax - sub edx, eax - jnz label2 - label11: - sub edi, w - cmp ebx, esi - jnz label1 + if (!nDataStart) + return; + + nDataCap = *(WORD *)&pRLEBytes[CelCap]; + if (CelCap == 8) + nDataCap = 0; + + if (nDataCap) + nDataSize = nDataCap - nDataStart; + else + nDataSize = pFrameTable[1] - pFrameTable[0] - nDataStart; + + src = pRLEBytes + nDataStart; + end = &src[nDataSize]; + dst = &gpBuffer[sx + PitchTbl[sy - 16 * CelSkip]]; + + for (; src != end; dst -= BUFFER_WIDTH + nWidth) { + for (w = nWidth; w;) { + width = *src++; + if (!(width & 0x80)) { + w -= width; + while (width) { + if (*src++) { + dst[-BUFFER_WIDTH] = col; + dst[-1] = col; + dst[1] = col; + dst[BUFFER_WIDTH] = col; + } + dst++; + width--; + } + } else { + width = -(char)width; + dst += width; + w -= width; + } + } } -#else +} + +/** + * @param CelSkip Skip lower parts of sprite, must be multiple of 2, max 8 + * @param CelCap Amount of sprite to render from lower to upper, must be multiple of 2, max 8 + */ +void CelDrawHdrClrHL(char col, int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap) +{ + int nDataStart, nDataSize, nDataCap, w; + BYTE *pRLEBytes, *dst; + + /// ASSERT: assert(pCelBuff != NULL); + if (!pCelBuff) + return; + /// ASSERT: assert(gpBuffer); + if (!gpBuffer) + return; + BYTE width; BYTE *end, *src; DWORD *pFrameTable; @@ -2012,7 +1373,6 @@ void CelDrawHdrClrHL(char col, int sx, int sy, BYTE *pCelBuff, int nCel, int nWi } } } -#endif } void ENG_set_pixel(int sx, int sy, BYTE col) @@ -2026,19 +1386,8 @@ void ENG_set_pixel(int sx, int sy, BYTE col) dst = &gpBuffer[sx + PitchTbl[sy]]; -#ifdef USE_ASM - __asm { - mov edi, dst - cmp edi, gpBufEnd - jnb label1 - mov al, col - mov [edi], al - label1: - } -#else if (dst < gpBufEnd) *dst = col; -#endif } void engine_draw_pixel(int sx, int sy) @@ -2057,19 +1406,8 @@ void engine_draw_pixel(int sx, int sy) dst = &gpBuffer[sx + PitchTbl[sy]]; } -#ifdef USE_ASM - __asm { - mov edi, dst - cmp edi, gpBufEnd - jnb label1 - mov al, gbPixelCol - mov [edi], al - label1: - } -#else if (dst < gpBufEnd) *dst = gbPixelCol; -#endif } // Exact copy from https://github.com/erich666/GraphicsGems/blob/dad26f941e12c8bf1f96ea21c1c04cd2206ae7c9/gems/DoubleLine.c @@ -2519,81 +1857,6 @@ void Cl2DecodeFrm1(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int Cel void Cl2DecDatFrm1(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth) { -#ifdef USE_ASM - __asm { - push ebx - push esi - push edi - mov esi, edx /// UNSAFE: use 'mov esi, pRLEBytes' - mov edi, ecx /// UNSAFE: use 'mov edi, pDecodeTo' - xor eax, eax - mov ebx, nWidth - mov ecx, nDataSize - label1: - mov al, [esi] - inc esi - dec ecx - test al, al - jns label6 - neg al - cmp al, 41h - jle label3 - sub al, 41h - dec ecx - mov dl, [esi] - inc esi - sub ebx, eax - label2: - mov [edi], dl - dec eax - lea edi, [edi+1] - jnz label2 - jmp label5 - label3: - sub ecx, eax - sub ebx, eax - label4: - mov dl, [esi] - inc esi - mov [edi], dl - dec eax - lea edi, [edi+1] - jnz label4 - label5: - test ebx, ebx - jnz label10 - mov ebx, nWidth - sub edi, BUFFER_WIDTH - sub edi, ebx - jmp label10 - label6: - cmp eax, ebx - jle label7 - mov edx, ebx - add edi, ebx - sub eax, ebx - jmp label8 - label7: - mov edx, eax - add edi, eax - xor eax, eax - label8: - sub ebx, edx - jnz label9 - mov ebx, nWidth - sub edi, BUFFER_WIDTH - sub edi, ebx - label9: - test eax, eax - jnz label6 - label10: - test ecx, ecx - jnz label1 - pop edi - pop esi - pop ebx - } -#else int w; char width; BYTE fill; @@ -2655,7 +1918,6 @@ void Cl2DecDatFrm1(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth) } } } -#endif } /** @@ -2702,95 +1964,6 @@ void Cl2DecodeFrm2(char col, int sx, int sy, BYTE *pCelBuff, int nCel, int nWidt void Cl2DecDatFrm2(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth, char col) { -#ifdef USE_ASM - __asm { - push ebx - push esi - push edi - mov esi, edx /// UNSAFE: use 'mov esi, pRLEBytes' - mov edi, ecx /// UNSAFE: use 'mov edi, pDecodeTo' - xor eax, eax - mov ebx, nWidth - xor edx, edx - mov ecx, nDataSize - mov dl, col - label1: - mov al, [esi] - inc esi - dec ecx - test al, al - jns label7 - neg al - cmp al, 41h - jle label3 - sub al, 41h - dec ecx - mov dh, [esi] - inc esi - test dh, dh - jz label7 - mov [edi-1], dl - sub ebx, eax - mov [edi+eax], dl - label2: - mov [edi-BUFFER_WIDTH], dl - mov [edi+BUFFER_WIDTH], dl - dec eax - lea edi, [edi+1] - jnz label2 - jmp label6 - label3: - sub ecx, eax - sub ebx, eax - label4: - mov dh, [esi] - inc esi - test dh, dh - jz label5 - mov [edi-1], dl - mov [edi+1], dl - mov [edi-BUFFER_WIDTH], dl - mov [edi+BUFFER_WIDTH], dl - label5: - dec eax - lea edi, [edi+1] - jnz label4 - label6: - test ebx, ebx - jnz label11 - mov ebx, nWidth - sub edi, BUFFER_WIDTH - sub edi, ebx - jmp label11 - label7: - cmp eax, ebx - jle label8 - mov edx, ebx - add edi, ebx - sub eax, ebx - jmp label9 - label8: - mov edx, eax - add edi, eax - xor eax, eax - label9: - sub ebx, edx - jnz label10 - mov ebx, nWidth - sub edi, BUFFER_WIDTH - sub edi, ebx - label10: - test eax, eax - jnz label7 - mov dl, col - label11: - test ecx, ecx - jnz label1 - pop edi - pop esi - pop ebx - } -#else int w; char width; BYTE *src, *dst; @@ -2859,7 +2032,6 @@ void Cl2DecDatFrm2(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth, } } } -#endif } /** @@ -2916,89 +2088,6 @@ void Cl2DecodeFrm3(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int Cel void Cl2DecDatLightTbl1(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth, BYTE *pTable) { -#ifdef USE_ASM - __asm { - push ebx - push esi - push edi - mov esi, edx /// UNSAFE: use 'mov esi, pRLEBytes' - mov edi, ecx /// UNSAFE: use 'mov edi, pDecodeTo' - mov ebx, nWidth - mov ecx, nDataSize - mov edx, pTable - push ebp - mov sgnWidth, ebx - mov ebp, edx - xor eax, eax - xor edx, edx - label1: - mov al, [esi] - inc esi - dec ecx - test al, al - jns label6 - neg al - cmp al, 41h - jle label3 - sub al, 41h - dec ecx - sub ebx, eax - mov dl, [esi] - inc esi - mov dl, [ebp+edx] - label2: - mov [edi], dl - dec eax - lea edi, [edi+1] - jnz label2 - jmp label5 - label3: - sub ecx, eax - sub ebx, eax - label4: - mov dl, [esi] - inc esi - mov dl, [ebp+edx] - mov [edi], dl - dec eax - lea edi, [edi+1] - jnz label4 - label5: - test ebx, ebx - jnz label10 - mov ebx, sgnWidth - sub edi, BUFFER_WIDTH - sub edi, ebx - jmp label10 - label6: - cmp eax, ebx - jle label7 - mov edx, ebx - add edi, ebx - sub eax, ebx - jmp label8 - label7: - mov edx, eax - add edi, eax - xor eax, eax - label8: - sub ebx, edx - jnz label9 - mov ebx, sgnWidth - sub edi, BUFFER_WIDTH - sub edi, ebx - label9: - test eax, eax - jnz label6 - label10: - test ecx, ecx - jnz label1 - pop ebp - pop edi - pop esi - pop ebx - } -#else int w; char width; BYTE fill; @@ -3061,7 +2150,6 @@ void Cl2DecDatLightTbl1(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWi } } } -#endif } /** @@ -3151,88 +2239,6 @@ void Cl2DecodeFrm4(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int Cel void Cl2DecDatFrm4(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth) { -#ifdef USE_ASM - __asm { - push ebx - push esi - push edi - mov esi, edx /// UNSAFE: use 'mov esi, pRLEBytes' - mov edi, ecx /// UNSAFE: use 'mov edi, pDecodeTo' - xor eax, eax - mov ebx, nWidth - mov ecx, nDataSize - label1: - mov al, [esi] - inc esi - dec ecx - test al, al - jns label7 - neg al - cmp al, 41h - jle label3 - sub al, 41h - dec ecx - mov dl, [esi] - inc esi - cmp edi, gpBufEnd - jge label7 - sub ebx, eax - label2: - mov [edi], dl - dec eax - lea edi, [edi+1] - jnz label2 - jmp label6 - label3: - sub ecx, eax - cmp edi, gpBufEnd - jl label4 - add esi, eax - jmp label7 - label4: - sub ebx, eax - label5: - mov dl, [esi] - inc esi - mov [edi], dl - dec eax - lea edi, [edi+1] - jnz label5 - label6: - test ebx, ebx - jnz label11 - mov ebx, nWidth - sub edi, BUFFER_WIDTH - sub edi, ebx - jmp label11 - label7: - cmp eax, ebx - jle label8 - mov edx, ebx - add edi, ebx - sub eax, ebx - jmp label9 - label8: - mov edx, eax - add edi, eax - xor eax, eax - label9: - sub ebx, edx - jnz label10 - mov ebx, nWidth - sub edi, BUFFER_WIDTH - sub edi, ebx - label10: - test eax, eax - jnz label7 - label11: - test ecx, ecx - jnz label1 - pop edi - pop esi - pop ebx - } -#else int w; char width; BYTE fill; @@ -3300,7 +2306,6 @@ void Cl2DecDatFrm4(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth) } } } -#endif } /** @@ -3349,102 +2354,6 @@ void Cl2DecodeClrHL(char col, int sx, int sy, BYTE *pCelBuff, int nCel, int nWid void Cl2DecDatClrHL(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth, char col) { -#ifdef USE_ASM - __asm { - push ebx - push esi - push edi - mov esi, edx /// UNSAFE: use 'mov esi, pRLEBytes' - mov edi, ecx /// UNSAFE: use 'mov edi, pDecodeTo' - xor eax, eax - mov ebx, nWidth - xor edx, edx - mov ecx, nDataSize - mov dl, col - label1: - mov al, [esi] - inc esi - dec ecx - test al, al - jns label9 - neg al - cmp al, 41h - jle label3 - sub al, 41h - dec ecx - mov dh, [esi] - inc esi - test dh, dh - jz label9 - cmp edi, gpBufEnd - jge label9 - mov [edi-1], dl - sub ebx, eax - mov [edi+eax], dl - label2: - mov [edi-BUFFER_WIDTH], dl - mov [edi+BUFFER_WIDTH], dl - dec eax - lea edi, [edi+1] - jnz label2 - jmp label7 - label3: - sub ecx, eax - cmp edi, gpBufEnd - jl label4 - add esi, eax - jmp label9 - label4: - sub ebx, eax - label5: - mov dh, [esi] - inc esi - test dh, dh - jz label6 - mov [edi-1], dl - mov [edi+1], dl - mov [edi-BUFFER_WIDTH], dl - mov [edi+BUFFER_WIDTH], dl - label6: - dec eax - lea edi, [edi+1] - jnz label5 - label7: - test ebx, ebx - jnz label13 - mov ebx, nWidth - sub edi, BUFFER_WIDTH - sub edi, ebx - jmp label13 - label9: - cmp eax, ebx - jle label10 - mov edx, ebx - add edi, ebx - sub eax, ebx - jmp label11 - label10: - mov edx, eax - add edi, eax - xor eax, eax - label11: - sub ebx, edx - jnz label12 - mov ebx, nWidth - sub edi, BUFFER_WIDTH - sub edi, ebx - label12: - test eax, eax - jnz label9 - mov dl, col - label13: - test ecx, ecx - jnz label1 - pop edi - pop esi - pop ebx - } -#else int w; char width; BYTE *src, *dst; @@ -3517,7 +2426,6 @@ void Cl2DecDatClrHL(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth, } } } -#endif } /** @@ -3574,96 +2482,6 @@ void Cl2DecodeFrm5(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int Cel void Cl2DecDatLightTbl2(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth, BYTE *pTable) { -#ifdef USE_ASM - __asm { - push ebx - push esi - push edi - mov esi, edx /// UNSAFE: use 'mov esi, pRLEBytes' - mov edi, ecx /// UNSAFE: use 'mov edi, pDecodeTo' - mov ebx, nWidth - mov ecx, nDataSize - mov edx, pTable - push ebp - mov sgnWidth, ebx - mov ebp, edx - xor eax, eax - xor edx, edx - label1: - mov al, [esi] - inc esi - dec ecx - test al, al - jns label7 - neg al - cmp al, 41h - jle label3 - sub al, 41h - dec ecx - mov dl, [esi] - inc esi - mov dl, [ebp+edx] - cmp edi, gpBufEnd - jge label7 - sub ebx, eax - label2: - mov [edi], dl - dec eax - lea edi, [edi+1] - jnz label2 - jmp label6 - label3: - sub ecx, eax - cmp edi, gpBufEnd - jl label4 - add esi, eax - jmp label7 - label4: - sub ebx, eax - label5: - mov dl, [esi] - inc esi - mov dl, [ebp+edx] - mov [edi], dl - dec eax - lea edi, [edi+1] - jnz label5 - label6: - test ebx, ebx - jnz label11 - mov ebx, sgnWidth - sub edi, BUFFER_WIDTH - sub edi, ebx - jmp label11 - label7: - cmp eax, ebx - jle label8 - mov edx, ebx - add edi, ebx - sub eax, ebx - jmp label9 - label8: - mov edx, eax - add edi, eax - xor eax, eax - label9: - sub ebx, edx - jnz label10 - mov ebx, sgnWidth - sub edi, BUFFER_WIDTH - sub edi, ebx - label10: - test eax, eax - jnz label7 - label11: - test ecx, ecx - jnz label1 - pop ebp - pop edi - pop esi - pop ebx - } -#else int w; char width; BYTE fill; @@ -3732,7 +2550,6 @@ void Cl2DecDatLightTbl2(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWi } } } -#endif } /** diff --git a/Source/gendung.cpp b/Source/gendung.cpp index 585e01e62..cf8b14a60 100644 --- a/Source/gendung.cpp +++ b/Source/gendung.cpp @@ -130,11 +130,9 @@ void MakeSpeedCels() BOOL blood_flag; DWORD *pFrameTable; MICROS *pMap; -#ifndef USE_ASM int l, k; BYTE width, pix; BYTE *src, *dst, *tbl; -#endif for (i = 0; i < MAXTILES; i++) { tile_defs[i] = i; @@ -166,19 +164,7 @@ void MakeSpeedCels() for (i = 1; i < nlevel_frames; i++) { z = i; -#ifdef USE_ASM - __asm { - mov ebx, pDungeonCels - mov eax, z - shl eax, 2 - add ebx, eax - mov eax, [ebx+4] - sub eax, [ebx] - mov nDataSize, eax - } -#else nDataSize = pFrameTable[i + 1] - pFrameTable[i]; -#endif level_frame_sizes[i] = nDataSize & 0xFFFF; } @@ -192,80 +178,13 @@ void MakeSpeedCels() blood_flag = TRUE; if (level_frame_count[i] != 0) { if (level_frame_types[i] != 0x1000) { -#ifdef USE_ASM - t = level_frame_sizes[i]; - __asm { - mov ebx, pDungeonCels - mov eax, z - shl eax, 2 - add ebx, eax - mov esi, pDungeonCels - add esi, [ebx] - xor ebx, ebx - mov ecx, t - jecxz l1_label3 - l1_label1: - lodsb - cmp al, 0 - jz l1_label2 - cmp al, 32 - jnb l1_label2 - mov blood_flag, ebx - l1_label2: - loop l1_label1 - l1_label3: - nop - } -#else src = &pDungeonCels[pFrameTable[i]]; for (j = level_frame_sizes[i]; j; j--) { pix = *src++; if (pix && pix < 32) blood_flag = FALSE; } -#endif } else { -#ifdef USE_ASM - __asm { - mov ebx, pDungeonCels - mov eax, z - shl eax, 2 - add ebx, eax - mov esi, pDungeonCels - add esi, [ebx] - xor ebx, ebx - mov ecx, 32 - l2_label1: - push ecx - mov edx, 32 - l2_label2: - xor eax, eax - lodsb - or al, al - js l2_label5 - sub edx, eax - mov ecx, eax - l2_label3: - lodsb - cmp al, 0 - jz l2_label4 - cmp al, 32 - jnb l2_label4 - mov blood_flag, ebx - l2_label4: - loop l2_label3 - or edx, edx - jz l2_label6 - jmp l2_label2 - l2_label5: - neg al - sub edx, eax - jnz l2_label2 - l2_label6: - pop ecx - loop l2_label1 - } -#else src = &pDungeonCels[pFrameTable[i]]; for (k = 32; k; k--) { for (l = 32; l;) { @@ -284,7 +203,6 @@ void MakeSpeedCels() } } } -#endif } if (!blood_flag) level_frame_count[i] = 0; @@ -326,84 +244,17 @@ void MakeSpeedCels() t = level_frame_sizes[i]; for (j = 1; j < blk_cnt; j++) { SpeedFrameTbl[i][j] = frameidx; -#ifdef USE_ASM - __asm { - mov ebx, pDungeonCels - mov eax, z - shl eax, 2 - add ebx, eax - mov esi, pDungeonCels - add esi, [ebx] - mov edi, pSpeedCels - add edi, frameidx - mov ebx, j - shl ebx, 8 - add ebx, pLightTbl - mov ecx, t - jecxz l3_label2 - l3_label1: - lodsb - xlat - stosb - loop l3_label1 - l3_label2: - nop - } -#else src = &pDungeonCels[pFrameTable[z]]; dst = &pSpeedCels[frameidx]; tbl = &pLightTbl[256 * j]; for (k = t; k; k--) { *dst++ = tbl[*src++]; } -#endif frameidx += t; } } else { for (j = 1; j < blk_cnt; j++) { SpeedFrameTbl[i][j] = frameidx; -#ifdef USE_ASM - __asm { - mov ebx, pDungeonCels - mov eax, z - shl eax, 2 - add ebx, eax - mov esi, pDungeonCels - add esi, [ebx] - mov edi, pSpeedCels - add edi, frameidx - mov ebx, j - shl ebx, 8 - add ebx, pLightTbl - mov ecx, 32 - l4_label1: - push ecx - mov edx, 32 - l4_label2: - xor eax, eax - lodsb - stosb - or al, al - js l4_label4 - sub edx, eax - mov ecx, eax - l4_label3: - lodsb - xlat - stosb - loop l4_label3 - or edx, edx - jz l4_label5 - jmp l4_label2 - l4_label4: - neg al - sub edx, eax - jnz l4_label2 - l4_label5: - pop ecx - loop l4_label1 - } -#else src = &pDungeonCels[pFrameTable[z]]; dst = &pSpeedCels[frameidx]; tbl = &pLightTbl[256 * j]; @@ -423,7 +274,6 @@ void MakeSpeedCels() } } } -#endif frameidx += level_frame_sizes[i]; } } diff --git a/Source/inv.cpp b/Source/inv.cpp index a8353236c..8a3c90268 100644 --- a/Source/inv.cpp +++ b/Source/inv.cpp @@ -119,38 +119,6 @@ void InvDrawSlotBack(int X, int Y, int W, int H) dst = &gpBuffer[X + PitchTbl[Y]]; -#ifdef USE_ASM - __asm { - mov edi, dst - xor edx, edx - xor ebx, ebx - mov dx, word ptr H - mov bx, word ptr W - label1: - mov ecx, ebx - label2: - mov al, [edi] - cmp al, PAL16_BLUE - jb label5 - cmp al, PAL16_BLUE + 15 - ja label3 - sub al, PAL16_BLUE - PAL16_BEIGE - jmp label4 - label3: - cmp al, PAL16_GRAY - jb label5 - sub al, PAL16_GRAY - PAL16_BEIGE - label4: - mov [edi], al - label5: - inc edi - loop label2 - sub edi, BUFFER_WIDTH - sub edi, ebx - dec edx - jnz label1 - } -#else int wdt, hgt; BYTE pix; @@ -166,7 +134,6 @@ void InvDrawSlotBack(int X, int Y, int W, int H) *dst++ = pix; } } -#endif } void DrawInv() diff --git a/Source/items.cpp b/Source/items.cpp index 187e23d05..6ed35a7e4 100644 --- a/Source/items.cpp +++ b/Source/items.cpp @@ -2938,28 +2938,6 @@ void DrawULine(int y) { /// ASSERT: assert(gpBuffer); -#ifdef USE_ASM - int yy; - - yy = PitchTbl[SStringY[y] + 198] + 26 + 64; - - __asm { - mov esi, gpBuffer - mov edi, esi - add esi, SCREENXY(26, 25) - add edi, yy - mov ebx, BUFFER_WIDTH - 266 - mov edx, 3 - copyline: - mov ecx, 266 / 4 - rep movsd - movsw - add esi, ebx - add edi, ebx - dec edx - jnz copyline - } -#else int i; BYTE *src, *dst; @@ -2968,7 +2946,6 @@ void DrawULine(int y) for (i = 0; i < 3; i++, src += BUFFER_WIDTH, dst += BUFFER_WIDTH) memcpy(dst, src, 266); -#endif } void DrawUniqueInfo() diff --git a/Source/minitext.cpp b/Source/minitext.cpp index 6b79191fd..2ce9bf91b 100644 --- a/Source/minitext.cpp +++ b/Source/minitext.cpp @@ -87,63 +87,6 @@ void PrintQTextChr(int sx, int sy, BYTE *pCelBuff, int nCel) pStart = &gpBuffer[PitchTbl[209]]; pEnd = &gpBuffer[PitchTbl[469]]; -#ifdef USE_ASM - __asm { - mov ebx, pCelBuff - mov eax, nCel - shl eax, 2 - add ebx, eax - mov eax, [ebx+4] - sub eax, [ebx] - mov end, eax - mov esi, pCelBuff - add esi, [ebx] - mov edi, dst - mov ebx, end - add ebx, esi - label1: - mov edx, 22 - label2: - xor eax, eax - lodsb - or al, al - js label7 - sub edx, eax - cmp edi, pStart - jb label5 - cmp edi, pEnd - ja label5 - mov ecx, eax - shr ecx, 1 - jnb label3 - movsb - jecxz label6 - label3: - shr ecx, 1 - jnb label4 - movsw - jecxz label6 - label4: - rep movsd - jmp label6 - label5: - add esi, eax - add edi, eax - label6: - or edx, edx - jz label8 - jmp label2 - label7: - neg al - add edi, eax - sub edx, eax - jnz label2 - label8: - sub edi, BUFFER_WIDTH + 22 - cmp ebx, esi - jnz label1 - } -#else int i; BYTE width; BYTE *src; @@ -191,7 +134,6 @@ void PrintQTextChr(int sx, int sy, BYTE *pCelBuff, int nCel) } } } -#endif } void DrawQText() diff --git a/Source/objects.cpp b/Source/objects.cpp index 3eb426b80..74d983eeb 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -1838,25 +1838,8 @@ void objects_set_door_piece(int x, int y) pn = dPiece[x][y] - 1; -#ifdef USE_ASM - __asm { - mov esi, pLevelPieces - xor eax, eax - mov ax, word ptr pn - mov ebx, 20 - mul ebx - add esi, eax - add esi, 16 - xor eax, eax - lodsw - mov word ptr v1, ax - lodsw - mov word ptr v2, ax - } -#else v1 = *((WORD *)pLevelPieces + 10 * pn + 8); v2 = *((WORD *)pLevelPieces + 10 * pn + 9); -#endif dpiece_defs_map_1[IsometricCoord(x, y)].mt[0] = v1; dpiece_defs_map_1[IsometricCoord(x, y)].mt[1] = v2; } @@ -1866,34 +1849,10 @@ void ObjSetMini(int x, int y, int v) int xx, yy; long v1, v2, v3, v4; -#ifdef USE_ASM - __asm { - mov esi, pMegaTiles - xor eax, eax - mov ax, word ptr v - dec eax - shl eax, 3 - add esi, eax - xor eax, eax - lodsw - inc eax - mov v1, eax - lodsw - inc eax - mov v2, eax - lodsw - inc eax - mov v3, eax - lodsw - inc eax - mov v4, eax - } -#else v1 = *((WORD *)&pMegaTiles[((WORD)v - 1) * 8]) + 1; v2 = *((WORD *)&pMegaTiles[((WORD)v - 1) * 8] + 1) + 1; v3 = *((WORD *)&pMegaTiles[((WORD)v - 1) * 8] + 2) + 1; v4 = *((WORD *)&pMegaTiles[((WORD)v - 1) * 8] + 3) + 1; -#endif xx = 2 * x + 16; yy = 2 * y + 16; diff --git a/Source/scrollrt.cpp b/Source/scrollrt.cpp index 981f0f1a1..438162cb9 100644 --- a/Source/scrollrt.cpp +++ b/Source/scrollrt.cpp @@ -2040,39 +2040,6 @@ void DrawZoom(int x, int y) /// ASSERT: assert(gpBuffer); -#ifdef USE_ASM - __asm { - mov esi, gpBuffer - mov edx, nDstOff - mov edi, esi - mov ecx, nSrcOff - add edi, edx - add esi, ecx - mov ebx, edi - add ebx, BUFFER_WIDTH - mov edx, 176 - label1: - mov ecx, wdt - label2: - mov al, [esi] - inc esi - mov ah, al - mov [edi], ax - mov [ebx], ax - add edi, 2 - add ebx, 2 - dec ecx - jnz label2 - mov eax, BUFFER_WIDTH - add eax, wdt - sub esi, eax - add eax, eax - sub ebx, eax - sub edi, eax - dec edx - jnz label1 - } -#else int hgt; BYTE *src, *dst1, *dst2; @@ -2089,7 +2056,6 @@ void DrawZoom(int x, int y) src++; } } -#endif } void ClearScreenBuffer() @@ -2098,20 +2064,6 @@ void ClearScreenBuffer() /// ASSERT: assert(gpBuffer); -#ifdef USE_ASM - __asm { - mov edi, gpBuffer - add edi, SCREENXY(0, 0) - mov edx, SCREEN_HEIGHT - xor eax, eax - zeroline: - mov ecx, SCREEN_WIDTH / 4 - rep stosd - add edi, BUFFER_WIDTH - SCREEN_WIDTH - dec edx - jnz zeroline - } -#else int i; BYTE *dst; @@ -2120,7 +2072,6 @@ void ClearScreenBuffer() for (i = 0; i < SCREEN_HEIGHT; i++, dst += BUFFER_WIDTH) { memset(dst, 0, SCREEN_WIDTH); } -#endif unlock_buf(3); } @@ -2542,24 +2493,6 @@ void DoBlitScreen(DWORD dwX, DWORD dwY, DWORD dwWdt, DWORD dwHgt) /// ASSERT: assert(gpBuffer); -#if defined(USE_ASM) && !defined(RGBMODE) - __asm { - mov esi, gpBuffer - mov edi, DDS_desc.lpSurface - add esi, nSrcOff - add edi, nDstOff - mov eax, nSrcWdt - mov ebx, nDstWdt - mov edx, dwHgt - blitline: - mov ecx, dwWdt - rep movsd - add esi, eax - add edi, ebx - dec edx - jnz blitline - } -#else int wdt, hgt; BYTE *src, *dst; @@ -2568,18 +2501,9 @@ void DoBlitScreen(DWORD dwX, DWORD dwY, DWORD dwWdt, DWORD dwHgt) for (hgt = 0; hgt < dwHgt; hgt++, src += nSrcWdt, dst += nDstWdt) { for (wdt = 0; wdt < 4 * dwWdt; wdt++) { -#ifndef RGBMODE *dst++ = *src++; -#else - PALETTEENTRY pal = system_palette[*src++]; - dst[0] = pal.peBlue; - dst[1] = pal.peGreen; - dst[2] = pal.peRed; - dst += 4; -#endif } } -#endif unlock_buf(6); } diff --git a/Source/stores.cpp b/Source/stores.cpp index 49e53d1e5..4f0c86356 100644 --- a/Source/stores.cpp +++ b/Source/stores.cpp @@ -213,24 +213,6 @@ void DrawSLine(int y) /// ASSERT: assert(gpBuffer); -#ifdef USE_ASM - __asm { - mov esi, gpBuffer - mov edi, esi - add esi, xy - add edi, yy - mov ebx, line - mov edx, 3 - copyline: - mov ecx, width - rep movsd - movsw - add esi, ebx - add edi, ebx - dec edx - jnz copyline - } -#else int i; BYTE *src, *dst; @@ -239,7 +221,6 @@ void DrawSLine(int y) for (i = 0; i < 3; i++, src += BUFFER_WIDTH, dst += BUFFER_WIDTH) memcpy(dst, src, BUFFER_WIDTH - line); -#endif } void DrawSArrows(int y1, int y2) diff --git a/Source/town.cpp b/Source/town.cpp index 26ca69076..7cc7756b0 100644 --- a/Source/town.cpp +++ b/Source/town.cpp @@ -6,44 +6,6 @@ void town_clear_upper_buf(BYTE *pBuff) { /// ASSERT: assert(gpBuffer); -#ifdef USE_ASM - __asm { - mov edi, pBuff - mov edx, 30 - mov ebx, 1 - xor eax, eax - label1: - cmp edi, gpBufEnd - jb label4 - add edi, edx - mov ecx, ebx - rep stosd - add edi, edx - sub edi, BUFFER_WIDTH + 64 - or edx, edx - jz label2 - sub edx, 2 - inc ebx - jmp label1 - label2: - mov edx, 2 - mov ebx, 15 - label3: - cmp edi, gpBufEnd - jb label4 - add edi, edx - mov ecx, ebx - rep stosd - add edi, edx - sub edi, BUFFER_WIDTH + 64 - dec ebx - add edx, 2 - cmp edx, 32 - jnz label3 - label4: - nop - } -#else int i, j, k; BYTE *dst; @@ -61,57 +23,12 @@ void town_clear_upper_buf(BYTE *pBuff) *dst++ = 0; dst += i; } -#endif } void town_clear_low_buf(BYTE *pBuff) { /// ASSERT: assert(gpBuffer); -#ifdef USE_ASM - __asm { - mov edi, pBuff - mov edx, 30 - mov ebx, 1 - xor eax, eax - label1: - cmp edi, gpBufEnd - jb label2 - add edi, 64 - jmp label3 - label2: - add edi, edx - mov ecx, ebx - rep stosd - add edi, edx - label3: - sub edi, BUFFER_WIDTH + 64 - or edx, edx - jz label4 - sub edx, 2 - inc ebx - jmp label1 - label4: - mov edx, 2 - mov ebx, 15 - label5: - cmp edi, gpBufEnd - jb label6 - add edi, 64 - jmp label7 - label6: - add edi, edx - mov ecx, ebx - rep stosd - add edi, edx - label7: - sub edi, BUFFER_WIDTH + 64 - dec ebx - add edx, 2 - cmp edx, 32 - jnz label5 - } -#else int i, j, k; BYTE *dst; @@ -137,7 +54,6 @@ void town_clear_low_buf(BYTE *pBuff) dst += 64; } } -#endif } void town_special_lower(BYTE *pBuff, int nCel) @@ -145,64 +61,6 @@ void town_special_lower(BYTE *pBuff, int nCel) #if 0 int w; BYTE *end; - -#ifdef USE_ASM - __asm { - mov ebx, pSpecialCels - mov eax, nCel - shl eax, 2 - add ebx, eax - mov eax, [ebx+4] - sub eax, [ebx] - mov end, eax - mov esi, pSpecialCels - add esi, [ebx] - mov edi, pBuff - mov eax, BUFFER_WIDTH + 64 - mov w, eax - mov ebx, end - add ebx, esi - label1: - mov edx, 64 - label2: - xor eax, eax - lodsb - or al, al - js label7 - sub edx, eax - cmp edi, gpBufEnd - jb label3 - add esi, eax - add edi, eax - jmp label6 - label3: - mov ecx, eax - shr ecx, 1 - jnb label4 - movsb - jecxz label6 - label4: - shr ecx, 1 - jnb label5 - movsw - jecxz label6 - label5: - rep movsd - label6: - or edx, edx - jz label8 - jmp label2 - label7: - neg al - add edi, eax - sub edx, eax - jnz label2 - label8: - sub edi, w - cmp ebx, esi - jnz label1 - } -#else BYTE width; BYTE *src, *dst; DWORD *pFrameTable; @@ -251,7 +109,6 @@ void town_special_lower(BYTE *pBuff, int nCel) } } #endif -#endif } void town_special_upper(BYTE *pBuff, int nCel) @@ -259,62 +116,6 @@ void town_special_upper(BYTE *pBuff, int nCel) #if 0 int w; BYTE *end; - -#ifdef USE_ASM - __asm { - mov ebx, pSpecialCels - mov eax, nCel - shl eax, 2 - add ebx, eax - mov eax, [ebx+4] - sub eax, [ebx] - mov end, eax - mov esi, pSpecialCels - add esi, [ebx] - mov edi, pBuff - mov eax, BUFFER_WIDTH + 64 - mov w, eax - mov ebx, end - add ebx, esi - label1: - mov edx, 64 - label2: - xor eax, eax - lodsb - or al, al - js label6 - sub edx, eax - cmp edi, gpBufEnd - jb label8 - mov ecx, eax - shr ecx, 1 - jnb label3 - movsb - jecxz label5 - label3: - shr ecx, 1 - jnb label4 - movsw - jecxz label5 - label4: - rep movsd - label5: - or edx, edx - jz label7 - jmp label2 - label6: - neg al - add edi, eax - sub edx, eax - jnz label2 - label7: - sub edi, w - cmp ebx, esi - jnz label1 - label8: - nop - } -#else BYTE width; BYTE *src, *dst; DWORD *pFrameTable; @@ -361,7 +162,6 @@ void town_special_upper(BYTE *pBuff, int nCel) } } #endif -#endif } void town_draw_clipped_e_flag(BYTE *pBuff, int x, int y, int sx, int sy) @@ -1157,39 +957,6 @@ void T_DrawZoom(int x, int y) /// ASSERT: assert(gpBuffer); -#ifdef USE_ASM - __asm { - mov esi, gpBuffer - mov edx, nDstOff - mov edi, esi - mov ecx, nSrcOff - add edi, edx - add esi, ecx - mov ebx, edi - add ebx, BUFFER_WIDTH - mov edx, 176 - label1: - mov ecx, wdt - label2: - mov al, [esi] - inc esi - mov ah, al - mov [edi], ax - mov [ebx], ax - add edi, 2 - add ebx, 2 - dec ecx - jnz label2 - mov eax, BUFFER_WIDTH - add eax, wdt - sub esi, eax - add eax, eax - sub ebx, eax - sub edi, eax - dec edx - jnz label1 - } -#else int hgt; BYTE *src, *dst1, *dst2; @@ -1206,7 +973,6 @@ void T_DrawZoom(int x, int y) src++; } } -#endif } void T_DrawView(int StartX, int StartY) @@ -1315,42 +1081,6 @@ void T_FillSector(BYTE *P3Tiles, BYTE *pSector, int xi, int yi, int w, int h) for (j = 0; j < h; j++) { xx = xi; for (i = 0; i < w; i++) { -#ifdef USE_ASM - __asm { - mov esi, pSector - mov eax, ii - add esi, eax - xor eax, eax - lodsw - or eax, eax - jz label1 - dec eax - mov esi, P3Tiles - shl eax, 3 - add esi, eax - xor eax, eax - lodsw - inc eax - mov v1, eax - lodsw - inc eax - mov v2, eax - lodsw - inc eax - mov v3, eax - lodsw - inc eax - mov v4, eax - jmp label2 - label1: - mov v1, eax - mov v2, eax - mov v3, eax - mov v4, eax - label2: - nop - } -#else WORD *Map; Map = (WORD *)&pSector[ii]; @@ -1365,7 +1095,6 @@ void T_FillSector(BYTE *P3Tiles, BYTE *pSector, int xi, int yi, int w, int h) v3 = 0; v4 = 0; } -#endif dPiece[xx][yy] = v1; dPiece[xx + 1][yy] = v2; dPiece[xx][yy + 1] = v3; @@ -1381,40 +1110,10 @@ void T_FillTile(BYTE *P3Tiles, int xx, int yy, int t) { long v1, v2, v3, v4; -#ifdef USE_ASM - __asm { - mov eax, t - dec eax - mov esi, P3Tiles - shl eax, 3 - add esi, eax - xor eax, eax - lodsw - inc eax - mov v1, eax - lodsw - inc eax - mov v2, eax - lodsw - inc eax - mov v3, eax - lodsw - inc eax - mov v4, eax - jmp label1 - mov v1, eax - mov v2, eax - mov v3, eax - mov v4, eax - label1: - nop - } -#else v1 = *((WORD *)&P3Tiles[(t - 1) * 8]) + 1; v2 = *((WORD *)&P3Tiles[(t - 1) * 8] + 1) + 1; v3 = *((WORD *)&P3Tiles[(t - 1) * 8] + 2) + 1; v4 = *((WORD *)&P3Tiles[(t - 1) * 8] + 3) + 1; -#endif dPiece[xx][yy] = v1; dPiece[xx + 1][yy] = v2; diff --git a/Source/towners.cpp b/Source/towners.cpp index cb2aad8fe..8c78f98e3 100644 --- a/Source/towners.cpp +++ b/Source/towners.cpp @@ -125,24 +125,6 @@ int GetActiveTowner(int t) void SetTownerGPtrs(BYTE *pData, BYTE **pAnim) { int i; -#ifdef USE_ASM - BYTE *src; - - for (i = 0; i < 8; i++) { - src = pData; - __asm { - mov eax, src - mov ebx, eax - mov edx, i - shl edx, 2 - add ebx, edx - mov edx, [ebx] - add eax, edx - mov src, eax - } - pAnim[i] = src; - } -#else DWORD *pFrameTable; pFrameTable = (DWORD *)pData; @@ -150,7 +132,6 @@ void SetTownerGPtrs(BYTE *pData, BYTE **pAnim) for (i = 0; i < 8; i++) { pAnim[i] = &pData[pFrameTable[i]]; } -#endif } void NewTownerAnim(int tnum, BYTE *pAnim, int numFrames, int Delay) diff --git a/types.h b/types.h index cf3478398..1eb122956 100644 --- a/types.h +++ b/types.h @@ -60,10 +60,6 @@ DEVILUTION_BEGIN_NAMESPACE #include "enums.h" #include "structs.h" -#if (_MSC_VER >= 800) && (_MSC_VER <= 1200) -#define USE_ASM -#endif - // If defined, use copy protection [Default -> Defined] #if !defined(_DEBUG) && !defined(SPAWN) //#define COPYPROT