;; ===    gdi': ===
;; === hook of GDI-based screen output

;  :
; API call hooks:
@ ADDR &OSDB &NSDB  x301003 x003F4  x302003 x003F4  ; StretchDIBits      -> wc4_stretch_dib
@ ADDR &OCDB &NCDB  x301003 x003D4  x302003 x003D4  ; CreateDIBSection   -> wc4_create_dib
@ ADDR &ODDB &NDDB  x301003 x003F0  x302003 x003F0  ; DeleteObject       -> wc4_delete_obj
@ ADDR &ORDC &NRDC  x301003 x00538  x302003 x00538  ; ReleaseDC          -> wc4_release_dc

;       - . config.h::DIB_EXTRA_HOOKS
; for debug purposes, now are disabled; see config.h::DIB_EXTRA_HOOKS
; @ ADDR &OGCA &NGCA  x301003 x003D0  x302003 x003D0  ; GetDeviceCaps      -> wc4_get_dev_caps
; @ ADDR &OLTD &NLTD  x301003 x003C0  x302003 x003C0  ; LPtoDP             -> wc4_lp_to_dp
; @ ADDR &OSLO &NSLO  x301003 x003E4  x302003 x003E4  ; SelectObject       -> wc4_select_object
; @ ADDR &OSBM &NSBM  x301003 x003EC  x302003 x003EC  ; SetBkMode          -> wc4_set_bk_mode
; @ ADDR &OGDC &NGDC  x301003 x00540  x302003 x00540  ; GetDC              -> wc4_get_dc
; ;;ADDR &OCDC &NCDC                                  ; CreateCompatibleDC -> wc4_create_dc
; ;;ADDR &ODDC &NDDC                                  ; DeleteDC           -> wc4_delete_dc
; @ ADDR &OCPL &NCPL  x301003 x003DC  x302003 x003DC  ; CreatePalette      -> wc4_create_palette
; @ ADDR &OSPL &NSPL  x301003 x003C4  x302003 x003C4  ; SelectPalette      -> wc4_select_palette
; @ ADDR &ORPL &NRPL  x301003 x003C8  x302003 x003C8  ; RealizePalette     -> wc4_realize_palette
; @ ADDR &OIRC &NIRC  x301003 x00520  x302003 x00520  ; InvalidateRect     -> wc4_invalidate_rect
; ;       CreateDIBSection():
; address of return from CreateDIBSection() call:
; & RCDB  x301000 x7627C  x302000 x7627C  ; 0047727C

;; ===          (gdi'  directdraw'): ===
;; === hook of death scene (runs for both GDI and DirectDraw): ===
 
; 004068EB  8915BCB34B00    mov   [L004BB3BC],edx
; 004068F1  8B1598504C00    mov   edx,[L004C5098]
; 004068F7  A3B8B34B00      mov   [L004BB3B8],eax
; ---- replace with:
;           E8xxxxxxxx      call  wc4_dib_hook
; 004068FC  393A            cmp   [edx],edi
; 004068FE  7436            jz    L00406936

;  .  hookgdi.c    :
; used in hookgdi.c, please search on your own:
& DIBD  x301002 x14074  x302002 x14094  ; uint8_t  ****wc4_dibg_data  - *(int*)*(int*)*(int*)*(int*) 0x04C5094 - (D)ata
& DIBI  x301002 x14050  x302002 x14070  ; BITMAPINFO **wc4_dibg_info  - *(int*)*(int*)               0x04C5070 - (I)nfo
& DIBW  x301002 x00DC4  x302002 x00DC4  ; int32_t     *wc4_dibg_width - *(int*)                      0x04B1DC4 - (W)idth
& DIBP  x301000 x058F7  x302000 x058F7  ; 004068F7               - (P)oint of hook
& DIBC  xA3                             ; mov [           ], eax - (C)ommand code
& DIBX  x301002 x0A398  x302002 x0A3B8  ;       L004BB3B8        - (X)Z
& DINC  xE8                             ; call - (N)ew (C)ommand

;   hookgdi.c::dibhook():
; transferred to hookgdi.c::dibhook():
; @ ADDR &DIBX x00  x301000 x058F8  x302000 x058F8  ;    004068F7+1   call'  jump'
; { REPL 2
;   $ xA3 x00
;   $ xE8 x00
;   @ CORE  x301000 x058F7  x302000 x058F7  ; 004068F7
; } REPL
; @ JUMP &DIBA &DIBH  x301000 x058F8  x302000 x058F8  ; 004068FC -> wc4_dib_hook  ( 004068F7+1)

