;;    dwrap'  dxmci
;; hacks for implanting DWRAP into DXMCI

! 4

; hook call to ddraw.dll / dwrap.dll
;; & ODWA  x301003 x003B8  x302003 x003B8  ;   dwrap.dll!DirectDrawCreate  ddraw.dll!DirectDrawCreate
@ ADDR &ODDC &NDDC  x301003 x003B8  x302003 x003B8  ; DirectDrawCreate -> wc4_DirectDrawCreate
;   nodwrap.c
; used in nowrap.c

; ddhack.cpp:
& ODP8  x301002 x14050  x302002 x14070  ; pal8  InitInstance(); bitmapInfo  getgdibitmap()
& ODP6  x301002 x14054  x302002 x14074  ; pals6  InitInstance()
& ODB8  x301002 x14058  x302002 x14078  ; bits8  InitInstance(); wc4bits8  getgdibitmap()
& ODB6  x301002 x1405C  x302002 x1407C  ; bits16  InitInstance()
& ODWT  x301002 x0B724  x302002 x0B744  ;   bThreadRunning  text_sleep()
& U24B  x301002 x133F4  x302002 x13414  ; bUse24Bit ???
;    hookgdi.txt:
; & ODWS  x301002 x1AAD8  x302002 x1AAF8  ;   SVGA_on  newwinproc()

; ddhack.cpp::InitInstance()
;  ,  ODWS:
; & ODIM  x301002 x1AAD8  x302002 x1AAF8  ; mode
& ODIW  x301002 x0620C  x302002 x0620C  ; win

; replace to call to text_sleep() (see "pre-mission text" in patchEXE()):

; 0044308C                   L0044308C:
; 0044308C  F60544C74B0001       test  byte ptr [L004BC744],01h
; 00443093  7413                 jz    L004430A8
; 00443095  8B359C444D00         mov   esi,[KERNEL32.dll!Sleep]
; 0044309B                   L0044309B:
; ----------------- 
; 0044309B  6A01                 push  00000001h
; 0044309D  FFD6                 call  esi
; 0044309F  F60544C74B0001       test  byte ptr [L004BC744],01h
; 004430A6  75F3                 jnz   L0044309B
; -----------------  
; 0044309B  E8xxxxxxxx           call   text_sleep
; 004430A0  90                   nop
; 004430A1  90                   nop
; 004430A2  90                   nop
; 004430A3  90                   nop
; 004430A4  90                   nop
; 004430A5  90                   nop
; 004430A6  90                   nop
; 004430A7  90                   nop
; -----------------
; 004430A8                   L004430A8:
; 004430A8  8B15BCC64B00         mov   edx,[L004BC6BC]
; 004430AE  A1DCC64B00           mov   eax,[L004BC6DC]
; 004430B3  8B0D94504C00         mov   ecx,[L004C5094]

; &NMTS (text_sleep)    xlat.c

{ HACK 13  $ x6A x01 xFF xD6 xF6 x05                              ; push 1
                                                                  ; call esi
                                                                  ; test byte ptr [
           =                         &ODWT;.........              ;                 L004BC744
           $                                         x01 x75 xF3  ;                           ], 01h
                                                                  ; jnz L0044309B
;            .00 .01 .02 .03 .04 .05 .06 .07 .08 .09 .10 .11 .12
           $ xE8                                                  ; call
           =     +NMTS;.........                                  ;      text_sleep
           $                     x90 x90 x90 x90 x90 x90 x90 x90  ; nop nop nop ...
} HACK  x301000 x4209B  x302000 x4209B  ; 0044309B

