November 28, 2020, 01:25:48 PM

Author Topic: [bb] Shadow Experiment by jfk EO-11110 [ 1+ years ago ]  (Read 547 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bb] Shadow Experiment by jfk EO-11110 [ 1+ years ago ]
« on: June 29, 2017, 12:28:40 AM »
Title : Shadow Experiment
Author : jfk EO-11110
Posted : 1+ years ago

Description : As suggested by Yasha I store this Shadow experiment here. What is it?
Use XYZ as VertexColor. Each Pixel of a Render will now allow to determine its position in 3D space.
Take a render from both, eye and light point of view. The eye render tells us, what point in space can bee seen at all. The light render will tell us which of those the eye can see can also bee seen by the light. Only these points are considered "lit and relevant to the eye". They are then projected to 2D and painted to a texture that can be used as screen overlay, or as perspective mapping.
The default setting is ising some tricks to fight artefacts, but to see it in plain vanilla ICU mode use these settings:

Global look_w=128
Global look_h=96
Global icu2rel=1
Global sshr=0
Global blurmode=0

it runs pretty fast this way, but most of the points are missed due to low sampling rate etc, as you'll see.


Code :
Code: BlitzBasic
  1. ; Experimantal Shadow Technic: determine visibility by 2 ICU colormaps. VertexColor
  2. ; is used to encode 8 Bit 3D coordinates in each rendered pixel.
  3. ; all colors that are visible from within both renders  (eye +light perspectives)
  4. ; will be lit point in space.
  5.  
  6. ; Heavy rounding error artefacts and sampling problems due to low resolution.
  7.  
  8. ; hit space to see the color space renders etc.
  9.  
  10. ; Note: since it is using Vertices, it may not work with animated B3D again! grrr!
  11.  
  12. ; NOTE: userlibs required!  In kernel32.decls you need this:
  13.  
  14.  
  15. ;.lib "kernel32.dll"
  16. ;RtlMoveMemory2%(Destination*,Source,Length) : "RtlMoveMemory"
  17.  
  18.  
  19. ;of course without semicolons
  20.  
  21.  
  22.  
  23.  
  24. Graphics3D 800,600,32,2
  25.  
  26. SetBuffer BackBuffer()
  27. WBuffer 1
  28.  
  29.  
  30. AmbientLight 20,20,20
  31.  
  32.  
  33. Global demo_mode
  34. Global wire
  35.  
  36. Global nshades#=768
  37. Global fogrange#=20.0 ; this will also be the max range of the projected light!
  38. Global f_divider#=256.0/fogrange#
  39.  
  40. Global PhotoCamZoom#=1.0
  41.  
  42. Global look_w=128 ;512 ;128;256 ; texturemap width (attention: max=graphicswidth/icu2rel !) Note: needs to be in 4:3 ratio with look_h ! Needs to be power of 2, eg 64,128,256...
  43. Global look_h=96  ;384 ;96 ;192
  44. Global icu2rel=2 ;oversampling (1 to 4): render from light view will be N times bigger for higher precision (eg look_w=256 and icu2rel=2, render will be 512x384)
  45. Global sshr=2; (0,1,2,3) additional bitshift oversampling (shr N)
  46. Global blurmode=1 ;(0/1) initially define if blur by multi quad overlay (slow)
  47. blur#=0.014
  48.  
  49.  
  50. Dim icu1#(look_w,look_h,2)
  51. Dim icu2#(look_w,look_h,2)
  52. Dim PhotonCache(look_w,look_h)
  53. Global RGB_2_XYZ=CreateBank(256*256*256)
  54.  
  55. ;create screen overlay quad
  56. Global ol_quad=CreateMesh()
  57. surf=CreateSurface(ol_quad)
  58. v0=AddVertex(surf,-1,-1,0)
  59. VertexTexCoords(surf,v0,0,   1   ,0 ,0)
  60. v1=AddVertex(surf, 1,-1,0)
  61. VertexTexCoords(surf,v1,1   ,1   ,0 ,0)
  62. v2=AddVertex(surf, 1, 1,0)
  63. VertexTexCoords(surf,v2,1   ,0   ,0 ,0)
  64. v3=AddVertex(surf,-1, 1,0)
  65. VertexTexCoords(surf,v3,0   ,0   ,0 ,0)
  66.  
  67. tr=AddTriangle(surf,v0,v1,v2)
  68. tr=AddTriangle(surf,v0,v2,v3)
  69.  
  70. Global ol_quadtex=CreateTexture(look_w,look_w,0)
  71. Global ol_quadtex_yo=Floor(look_w-look_h)/2.0
  72. TextureBlend ol_quadtex,2
  73. EntityFX ol_quad,17
  74. EntityBlend ol_quad,1  ;3;3
  75. EntityTexture ol_quad,ol_quadtex,0,0
  76.  
  77. q_al#=0.1 ; alpha of shadow overlay
  78. If blurmode=0 Then Goto noblur
  79. q_al#=0.01
  80.  
  81. TranslateEntity ol_quad,-blur#,-blur#,0
  82. EntityAlpha ol_quad,q_al#
  83.  
  84. q2=CopyEntity(ol_quad,ol_quad)
  85. TranslateEntity q2,blur*2.0,0,0
  86.  
  87. q3=CopyEntity(ol_quad,ol_quad)
  88. TranslateEntity q3,blur*2.0,blur*2.0,0
  89.  
  90. q4=CopyEntity(ol_quad,ol_quad)
  91. TranslateEntity q4,0,blur*2.0,0
  92.  
  93. EntityAlpha q2,q_al#
  94. EntityAlpha q3,q_al#
  95. EntityAlpha q4,q_al#
  96.  
  97. .noblur
  98.  
  99.  
  100. EntityAlpha ol_quad,q_al#
  101.  
  102. HideEntity ol_quad
  103.  
  104.  
  105.  
  106.  
  107.  
  108. ; simple scene...
  109. Global camera=CreateCamera()
  110. CameraRange camera,0.5,100
  111. EntityParent ol_quad,camera
  112. TranslateEntity ol_quad,0,0,1.0
  113. Global scene_center=CreatePivot()
  114. maincam_targetpiv=CreatePivot()
  115.  
  116.  
  117. light=CreateLight(3) ; position and angle of this light will be used for the light mesh projection
  118. test_range#=16.7
  119. LightRange light,test_range# ; actually this may be very low, we don't want it to enlight things in the shade
  120. PositionEntity light,0,-2,7 ; note, this important position for the system
  121. PointEntity light,scene_center
  122.  
  123. Global light_cube=CreateCone(12,1,light)
  124. RotateMesh light_cube,-90,0,0
  125. ScaleEntity light_cube,0.2,0.2,0.1
  126. EntityFX light_cube,1
  127. ;EntityAlpha light_cube,0.3
  128. EntityColor light_cube,255,255,0
  129.  
  130.  
  131.  
  132. Global PhotonCamPiv=CreatePivot()
  133. Global PhotonCam=CreateCamera(PhotonCamPiv)
  134. CameraProjMode PhotonCam,0
  135. Global helper=CreatePivot()
  136.  
  137.  
  138. ; simple test textures
  139. Global walltex=CreateTexture(256,256)
  140. Color 120,120,80
  141. Rect 0,0,256,256,1
  142. For i=0 To 20000
  143.  r=Rand(10,40)
  144.  Color 120+r,120+r,80+r
  145.  rx=Rand(256)
  146.  ry=Rand(256)
  147.  Plot rx,ry
  148.  
  149.  r=-r
  150.  If ry0 Then r=0
  151.  Color 120+r,120+r,80+r
  152.  Plot rx,ry-1
  153.  Plot rx-1,ry-1
  154.  Plot rx+1,ry-1
  155. Next
  156.  
  157. For j=0 To 255 Step 32
  158.  For i=0 To 300 Step 64
  159.   jo=-(Floor(j/32) And 1)*32
  160.   Color 40,40,20
  161.   Rect jo+i,j+1,63,31,0
  162.   Color 180,180,150
  163.   Rect jo+i+1,j,63,31,0
  164.  Next
  165. Next
  166.  
  167. CopyRect 0,0,256,256,0,0,BackBuffer(),TextureBuffer(walltex)
  168.  
  169. Global white =CreateTexture(16,16)
  170. Color 255,255,255
  171. Rect 0,0,16,16,1
  172. CopyRect 0,0,16,16,0,0,BackBuffer(),TextureBuffer(white)
  173.  
  174.  
  175.  
  176. CameraProjMode camera,1
  177. CameraProjMode PhotonCam,0
  178.  
  179.  
  180. ; world design...
  181. ; init entity iteration------------------------
  182. Global Cycle_bank=CreateBank(16)
  183. Const  Cycle_NextEntity=4
  184. Const  Cycle_LastEntity=8
  185. Global Cycle_FirstEntity=CreatePivot()
  186. Global Cycle_CurrentEntityPointer=Cycle_FirstEntity
  187. ;----------------------------------------------------
  188.  
  189. ; from here on, created entities can be parsed with MoreEntities function.
  190. dis#=10
  191. For i=0 To 30
  192.  c=CreateCube()
  193.  PositionEntity c,Rnd(-10,10),Rnd(-6,-4),Rnd(-10,10)
  194.  RotateEntity c,0,Rand(360),0
  195.  ScaleEntity c,3,1,3
  196.  EntityPickMode c,2
  197.  EntityTexture c,walltex
  198. Next
  199.  
  200. w1=CreateCube() ;walls
  201. ScaleEntity w1,10,10,1
  202. TranslateEntity w1,0,0,10
  203. EntityTexture w1,walltex
  204.  
  205. w2=CreateCube()
  206. ScaleEntity w2,10,10,1
  207. TranslateEntity w2,0,0,-10
  208. EntityTexture w2,walltex
  209.  
  210. w3=CreateCube()
  211. ScaleEntity w3,1,10,10
  212. TranslateEntity w3,10,0,0
  213. EntityTexture w3,walltex
  214.  
  215. w4=CreateCube()
  216. ScaleEntity w4,1,10,10
  217. TranslateEntity w4,-10,0,0
  218. EntityTexture w4,walltex
  219.  
  220. w5=CreateCube() ; ceil
  221. ScaleEntity w5,10,1,10
  222. TranslateEntity w5,0,10,0
  223. EntityTexture w5,walltex
  224.  
  225. col=CreateCylinder()
  226. ScaleEntity col,0.5,10,0.5
  227. TranslateEntity col,-5,0,-5
  228. EntityTexture col,walltex
  229.  
  230. col=CreateCylinder()
  231. ScaleEntity col,0.5,10,0.5
  232. TranslateEntity col,0,0,-5
  233. EntityTexture col,walltex
  234.  
  235.  
  236. npc=CreateSphere(20)
  237. EntityTexture npc,walltex
  238. ScaleEntity npc,2,5,2
  239.  
  240.  
  241. EntityFX npc,1
  242.  
  243. npc_x#=-5
  244.  
  245.  
  246.  
  247. Global Cycle_EndMarker=CreatePivot()
  248.  
  249.  
  250.  
  251.  
  252. Type e_vert
  253. Field x#
  254. Field y#
  255. Field z#
  256. Field depth#
  257. Field ent
  258. Field sur
  259. Field ind
  260. Field red#
  261. Field green#
  262. Field blue#
  263. Field alpha#
  264. End Type
  265.  
  266.  
  267.  
  268. Type rem_mat
  269.  Field index
  270. End Type
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277. ft=MilliSecs()
  278. MoveMouse GraphicsWidth()/1.8,GraphicsHeight()/2.0
  279.  
  280. Color 255,0,0
  281. a#=50
  282. While KeyHit(1)=0 ; MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MAINLOOP MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
  283.  npc_x#=npc_x+.1
  284.  If npc_x>12 Then npc_x=-12
  285.  PositionEntity npc,npc_x,0,0
  286.  TurnEntity npc,1,2,3
  287.  If KeyDown(200)
  288.   test_range#=test_range#*1.1
  289.   If test_range#>20 Then test_range#=20
  290.   LightRange light, test_range#
  291.  EndIf
  292.  If KeyDown(208)
  293.   test_range#=test_range#*0.9
  294.   If test_range#<0.1 Then test_range#=0.1
  295.   LightRange light, test_range#
  296.  EndIf
  297.  
  298. ;  a#=a#+2
  299.  If KeyDown(203)
  300.   a#=a#+2
  301.  EndIf
  302.  If KeyDown(205)
  303.   a#=a#-2
  304.  EndIf
  305.  If KeyHit(17) Then
  306.   wire =wire Xor 1
  307.   If wire=0 Then WireFrame 0
  308.  EndIf
  309.  If KeyHit(57) Then
  310.   demo_mode=demo_mode+1
  311.   If demo_mode>3 Then demo_mode=0
  312.  EndIf
  313. ; PositionEntity light,( (GraphicsWidth()/2)-MouseX() )/40.0,((GraphicsHeight()/2)-MouseY())/40.0,7 ; note, this important position for the system
  314.  PositionEntity light, Sin( ((GraphicsWidth()/2)-MouseX())/2 )*7.5, ((GraphicsHeight()/2)-MouseY())/40.0, Cos(((GraphicsWidth()/2)-MouseX())/2 )*7.5 ; note, this important position for the system
  315.  PointEntity light,scene_center
  316.  If a#>359 Then a#=0
  317.  If a#<0 Then a#=359
  318.  PositionEntity camera,Sin(a#)*dis,0,Cos(a#)*dis
  319.  PointEntity camera,maincam_targetpiv
  320.  
  321.  UpdateWorld()
  322.  LetThereBeLight(light)
  323.  
  324.  If wire<>0 Then Wireframe 1
  325.  RenderWorld()
  326.  If wire<>0 Then WireFrame 0
  327.  
  328.  
  329.  Color 255,0,0
  330.  Text 250,0,"Tris:"+TrisRendered()
  331.  Text 150,0,"FPS:"+1000/ft
  332.  Text 350,0,"left,right, up, down,w,space,mouse"
  333.  Text 150,16,"DXlight range:"+test_range+" Eye :"+a
  334.  If demo_mode=0 Then Flip 0; to hide the color space maps
  335.  ms=MilliSecs()
  336.  ft=ms-ms2
  337.  ms2=ms
  338. Wend
  339.  
  340. End
  341. ;-----------------------------------------------------------------------
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352. Function LetThereBeLight(l)
  353.  
  354. ;erase some arrays
  355.  For y=0 To look_h-1
  356.   For x=0 To look_w-1
  357.     PhotonCache(x,y)=0
  358.   Next
  359.  Next
  360.  
  361.  HideEntity light_cube
  362.  CameraProjMode camera,0
  363.  CameraProjMode PhotonCam,1
  364.  CameraFogMode PhotonCam,0
  365.  CameraFogRange PhotonCam,0,fogrange#*2.0
  366.  CameraViewport(PhotonCam,0,0,look_w,look_h)
  367.  CameraZoom PhotonCam,PhotoCamZoom#
  368.  PositionEntity PhotonCam,EntityX(camera,1),EntityY(camera,1),EntityZ(camera,1),1
  369.  RotateEntity PhotonCam,EntityPitch(camera,1),EntityYaw(camera,1),EntityRoll(camera,1),1
  370.  CameraRange PhotonCam,0.01,100
  371.  HideEntity ol_quad
  372.  
  373.  
  374. ; coloring world (RGB-encode vertices locations)
  375.  While MoreEntities()
  376.   e=NextEntity()
  377.   If EntityClass$(e)="Mesh"
  378.    For su=1 To CountSurfaces(e)
  379.     surf=GetSurface(e,su)
  380.     For v=0 To CountVertices(surf)-1
  381.      enti.e_vert = New e_vert
  382.         entient=e
  383.         entisur=surf
  384.         entiind=v
  385.         enti
  386. ed#=VertexRed(surf,v)
  387.         entigreen#=VertexGreen(surf,v)
  388.         entilue#=VertexBlue(surf,v)
  389.         entialpha#=VertexAlpha#(surf,v)
  390.  
  391.        TFormPoint VertexX(surf,v),VertexY(surf,v),VertexZ(surf,v),e,0
  392.        dis__x#=TFormedX()+10.0
  393.        dis__y#=TFormedY()+10.0
  394.        dis__z#=TFormedZ()+10.0
  395.  
  396.        bri__x#=255.0-(255.0 / fogrange#) * dis__x#
  397.        If bri__x#<0 Then bri__x#=0
  398.        If bri__x#>255 Then bri__x#=255
  399.  
  400.        bri__y#=255.0-(255.0 / fogrange#) * dis__y#
  401.        If bri__y#<0 Then bri__y#=0
  402.        If bri__y#>255 Then bri__y#=255
  403.  
  404.        bri__z#=255.0-(255.0 / fogrange#) * dis__z#
  405.        If bri__z#<0 Then bri__z#=0
  406.        If bri__z#>255 Then bri__z#=255
  407.        VertexColor surf, v, bri__x#, bri__y#, bri__z#,1.0
  408.     Next
  409.    Next
  410.  
  411.    EntityFX e,2 Or 1;4
  412.    EntityColor e,255,255,255
  413.    EntityTexture e,white
  414.   EndIf
  415.  Wend
  416.  
  417.  
  418. ; render color space from player perspective
  419.  RenderWorld()
  420.  
  421.  LockBuffer BackBuffer()
  422.  For y=0 To look_h-1
  423.   For x=0 To look_w-1
  424.    rgb=ReadPixelFast(x,y) And $ffffff
  425.    ; store texel world coords (rgb encoded)
  426.    icu1#(x,y,0)=(255-(rgb And $FF0000) Shr 16)
  427.    icu1#(x,y,1)=(255-(rgb And $FF00) Shr 8)
  428.    icu1#(x,y,2)=(255-rgb And $FF) ;/f_divider#
  429.   Next
  430.  Next
  431.  UnlockBuffer BackBuffer()
  432.  
  433.  If demo_mode=1 Then  Flip 0 ; too see color space from eye
  434.  
  435.  
  436.  
  437. ;render color space from lights point of view
  438.  
  439.  PositionEntity PhotonCam,EntityX(l),EntityY(l),EntityZ(l),1
  440.  RotateEntity PhotonCam,EntityPitch(l),EntityYaw(l),EntityRoll(l),1
  441.  CameraViewport(PhotonCam,0,0,look_w*icu2rel,look_h*icu2rel) ; allow higher precision
  442.  
  443.  RenderWorld()
  444.  
  445.  LockBuffer BackBuffer()
  446.  For y=0 To look_h*icu2rel-1
  447.   For x=0 To look_w*icu2rel-1
  448.    x2=x/icu2rel
  449.    y2=y/icu2rel
  450.    rgb=ReadPixelFast(x,y) And $ffffff
  451.    icu2#(x2,y2,0)=(255-(rgb And $FF0000) Shr 16)
  452.    icu2#(x2,y2,1)=(255-(rgb And $FF00) Shr 8)
  453.    icu2#(x2,y2,2)=(255-rgb And $FF)
  454.    ; store flag in rgb encoded array index (reverse lookup table), and allow oversampling by bitshifting
  455.     rr.rem_mat = New rem_mat ; will have to erase this matrix point later, so store its bank index
  456.     rrindex=((icu2#(x2,y2,0)Shr sshr)Shl 16)Or((icu2#(x2,y2,1)Shr sshr)Shl 8)Or((icu2#(x2,y2,2)Shr sshr))
  457.     PokeByte RGB_2_XYZ,rrindex ,1
  458.   Next
  459.  Next
  460.  UnlockBuffer BackBuffer()
  461.  
  462.  
  463.  CameraViewport(PhotonCam,0,0,look_w,look_h)
  464.  PositionEntity PhotonCam,EntityX(camera,1),EntityY(camera,1),EntityZ(camera,1),1
  465.  RotateEntity PhotonCam,EntityPitch(camera,1),EntityYaw(camera,1),EntityRoll(camera,1),1
  466.  
  467. ; The following is calculating the visability of each shadow overlay texel
  468. ; set a shadow texels only if it was seen on both color space renders (point that can be seen from the eye and from the light as well)
  469.  
  470.  For y=0 To look_h-1
  471.   For x=0 To look_w-1
  472.    p=PeekByte( RGB_2_XYZ, ((icu1#(x,y,0)Shr sshr)Shl 16)+((icu1#(x,y,1)Shr sshr)Shl 8)+((icu1#(x,y,2)Shr sshr))  )
  473.    If p=1
  474.     CameraProject PhotonCam, icu1#(x,y,0)/f_divider#-10.0,icu1#(x,y,1)/f_divider#-10.0,icu1#(x,y,2)/f_divider# -10.0
  475.     xx=ProjectedX#()
  476.     yy=ProjectedY#()
  477.     If (xx>=0) And (yy>=0) And (xx<look_w) And (yy<look_h) Then
  478.      PhotonCache(xx,yy)=1 ; will later write this pixel
  479.     EndIf
  480.    EndIf
  481.   Next
  482.  Next
  483.  
  484.  
  485.  
  486. ; clean up matrix changes
  487.  For rr.rem_mat = Each rem_mat
  488.   PokeByte RGB_2_XYZ,rrindex,0
  489.  Next
  490.  For rr.rem_mat = Each rem_mat
  491.   Delete rr
  492.  Next
  493.  
  494.  
  495.  
  496.  
  497. ;; artefacts filter attempt....fill single isolated shadow texels
  498. ; For y=1 To look_h-2
  499. ;  For x=1 To look_w-2
  500. ;   If (PhotonCache(x,y)=0) And (PhotonCache(x-1,y)=1) And (PhotonCache(x,y-1)=1) And (PhotonCache(x+1,y)=1) And (PhotonCache(x,y+1)=1) Then
  501. ;    PhotonCache(x,y)=1
  502. ;   EndIf
  503. ;  Next
  504. ; Next
  505.  
  506.  
  507. If demo_mode=2 Then Flip 0; to see color space from light
  508.  
  509.  
  510.  
  511. ; finally write the texels to the screen
  512.  Color 0,0,0
  513.  Rect 0,0,look_w,look_h,1
  514.  
  515.  LockBuffer()
  516.  For y=0 To look_h-1
  517.   For x=0 To look_w-1
  518.    If PhotonCache(x,y)<>0 Then
  519.     WritePixelFast x,y,$ffffff
  520.    EndIf
  521.   Next
  522.  Next
  523.  UnlockBuffer()
  524.  CopyRect 0,0,look_w,look_h,0,ol_quadtex_yo,BackBuffer(), TextureBuffer(ol_quadtex)
  525.  
  526.  
  527.  
  528.  For enti.e_vert = Each e_vert ; restore original vertex colors of scene
  529.      VertexColor entisur,entiind,enti
  530. ed#,entigreen#,entilue#,entialpha#
  531.  Next
  532.  For enti.e_vert = Each e_vert ; free types
  533.     Delete enti
  534.  Next
  535.  
  536. ;
  537.  
  538.  
  539. If demo_mode=3 Then Flip 0; to see shadow mapping
  540.  
  541.  While MoreEntities()
  542.   ; this is where we set the scene objects back to their original state, FX etc. wise.
  543.   ; (in this demo the orig settings are not known, there for just zeroing FX)
  544.   e= NextEntity()
  545.   If EntityClass$(e)="Mesh"
  546.    EntityFX e,0
  547.    EntityColor e,255,255,255
  548.    EntityTexture e,walltex
  549.   EndIf
  550.  Wend
  551.  
  552.  CameraProjMode camera,1
  553.  CameraProjMode PhotonCam,0
  554.  ShowEntity ol_quad
  555.  ShowEntity light_cube
  556.  
  557. End Function
  558.  
  559.  
  560.  
  561.  
  562. ; NOTE: userlibs required!  In kernel32.decls you need this:
  563.  
  564.  
  565. ;.lib "kernel32.dll"
  566. ;RtlMoveMemory2%(Destination*,Source,Length) : "RtlMoveMemory"
  567.  
  568.  
  569. ;of course without semicolons
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576. Function MoreEntities() ; iterate all world content entities
  577.  RtlMoveMemory2(Cycle_bank,Cycle_CurrentEntityPointer+Cycle_NextEntity,4)
  578.  If PeekInt(Cycle_bank,0)<>Cycle_EndMarker
  579.   Return True
  580.  Else
  581.   Cycle_CurrentEntityPointer=Cycle_FirstEntity
  582.  EndIf
  583. End Function
  584.  
  585.  
  586. Function NextEntity()
  587.  Local entity
  588.  RtlMoveMemory2(Cycle_bank,Cycle_CurrentEntityPointer+Cycle_NextEntity,4)
  589.  entity=PeekInt(Cycle_bank,0)
  590.  Cycle_CurrentEntityPointer = entity
  591.  Return entity
  592. End Function
  593.  
  594.  
  595. Function EntityExists(entity)
  596.  While MoreEntities()
  597.   If NextEntity()=entity Then Return True
  598.  Wend
  599. End Function


Comments :


_PJ_(Posted 1+ years ago)

 It's actually a little slow on my machine, giving around 11 fpsBUTIt's really quite good effect-wise. the variation in depth of the shadows especially.I noticewd the shadow of the weird elliptical thing becomes quite blocky as it's projected. I wonder if, taking this as an 'unavoidable' apparition, whether it may be possible to both make the process smoother and quicker by some method of interpolating between edges?


Warner(Posted 1+ years ago)

 Geez, it looks rather well, runs @7fps here. It is a nice effect.


Yasha(Posted 1+ years ago)

 I think this really is one of my absolute favourite B3D samples (I get 16FPS on a 2GHz T2500/Geforce 7600). And it's got that cool software-renderer feel to it (actually a software renderer might work better since you'd have access to the Z-buffer - this needs research...).I'm going to use something like this in a project... even if I have to come up with a whole new projece idea just to have an excuse.


BlitzSupport(Posted 1+ years ago)

 I'm getting about 10 FPS but it's a really cool demo and it doesn't actually feel like it's running that slow.


ClayPigeon(Posted 1+ years ago)

 Excellent! I'm getting up to 23 FPS on my low-end laptop!


Nate the Great(Posted 1+ years ago)

 not really sure whats wrong with b3d... I put the 2 lines of code into notepad and saved ans kernel32.decels in the b3d userlibs folder and then i opened b3d fresh and copy pasted this in and when i run it says it cant find that function it uses from kernel32.decls... I havent used b3d in forever did I miss something?nevermind... spelled the name wrongedit.. nope that wasnt it... do I need to do more?


Guy Fawkes(Posted 1+ years ago)

 u need to un semi-colon the kernel32 commands


Nate the Great(Posted 1+ years ago)

 I did rez haha I mean is there anything else i need to do besides what it says?


Guy Fawkes(Posted 1+ years ago)

 Idk, let me find out :)


Guy Fawkes(Posted 1+ years ago)

 Yes & No. Yes, because I had to rename RTL_MoveMemory2% to api_RTL_MoveMemory2%. Other than that, and changing the code to match the name of the RTL function, No :)Here's the code: Shadows.bb:
Code: [Select]
Graphics3D 800,600,32,2

SetBuffer BackBuffer()
WBuffer 1


AmbientLight 20,20,20


Global demo_mode
Global wire

Global nshades#=768
Global fogrange#=20.0 ; this will also be the max range of the projected light!
Global f_divider#=256.0/fogrange#

Global PhotoCamZoom#=1.0

Global look_w=128 ;512 ;128;256 ; texturemap width (attention: max=graphicswidth/icu2rel !) Note: needs to be in 4:3 ratio with look_h ! Needs to be power of 2, eg 64,128,256...
Global look_h=96  ;384 ;96 ;192
Global icu2rel=2 ;oversampling (1 to 4): render from light view will be N times bigger for higher precision (eg look_w=256 and icu2rel=2, render will be 512x384)
Global sshr=2; (0,1,2,3) additional bitshift oversampling (shr N)
Global blurmode=1 ;(0/1) initially define if blur by multi quad overlay (slow)
blur#=0.014


Dim icu1#(look_w,look_h,2)
Dim icu2#(look_w,look_h,2)
Dim PhotonCache(look_w,look_h)
Global RGB_2_XYZ=CreateBank(256*256*256)

;create screen overlay quad
Global ol_quad=CreateMesh()
surf=CreateSurface(ol_quad)
v0=AddVertex(surf,-1,-1,0)
VertexTexCoords(surf,v0,0,   1   ,0 ,0)
v1=AddVertex(surf, 1,-1,0)
VertexTexCoords(surf,v1,1   ,1   ,0 ,0)
v2=AddVertex(surf, 1, 1,0)
VertexTexCoords(surf,v2,1   ,0   ,0 ,0)
v3=AddVertex(surf,-1, 1,0)
VertexTexCoords(surf,v3,0   ,0   ,0 ,0)

tr=AddTriangle(surf,v0,v1,v2)
tr=AddTriangle(surf,v0,v2,v3)

Global ol_quadtex=CreateTexture(look_w,look_w,0)
Global ol_quadtex_yo=Floor(look_w-look_h)/2.0
TextureBlend ol_quadtex,2
EntityFX ol_quad,17
EntityBlend ol_quad,1  ;3;3
EntityTexture ol_quad,ol_quadtex,0,0

q_al#=0.1 ; alpha of shadow overlay
If blurmode=0 Then Goto noblur
q_al#=0.01

TranslateEntity ol_quad,-blur#,-blur#,0
EntityAlpha ol_quad,q_al#

q2=CopyEntity(ol_quad,ol_quad)
TranslateEntity q2,blur*2.0,0,0

q3=CopyEntity(ol_quad,ol_quad)
TranslateEntity q3,blur*2.0,blur*2.0,0

q4=CopyEntity(ol_quad,ol_quad)
TranslateEntity q4,0,blur*2.0,0

EntityAlpha q2,q_al#
EntityAlpha q3,q_al#
EntityAlpha q4,q_al#

.noblur


EntityAlpha ol_quad,q_al#

HideEntity ol_quad





; simple scene...
Global camera=CreateCamera()
CameraRange camera,0.5,100
EntityParent ol_quad,camera
TranslateEntity ol_quad,0,0,1.0
Global scene_center=CreatePivot()
maincam_targetpiv=CreatePivot()


light=CreateLight(3) ; position and angle of this light will be used for the light mesh projection
test_range#=16.7
LightRange light,test_range# ; actually this may be very low, we don't want it to enlight things in the shade
PositionEntity light,0,-2,7 ; note, this important position for the system
PointEntity light,scene_center

Global light_cube=CreateCone(12,1,light)
RotateMesh light_cube,-90,0,0
ScaleEntity light_cube,0.2,0.2,0.1
EntityFX light_cube,1
;EntityAlpha light_cube,0.3
EntityColor light_cube,255,255,0



Global PhotonCamPiv=CreatePivot()
Global PhotonCam=CreateCamera(PhotonCamPiv)
CameraProjMode PhotonCam,0
Global helper=CreatePivot()


; simple test textures
Global walltex=CreateTexture(256,256)
Color 120,120,80
Rect 0,0,256,256,1
For i=0 To 20000
 r=Rand(10,40)
 Color 120+r,120+r,80+r
 rx=Rand(256)
 ry=Rand(256)
 Plot rx,ry

 r=-r
 If ry0 Then r=0
 Color 120+r,120+r,80+r
 Plot rx,ry-1
 Plot rx-1,ry-1
 Plot rx+1,ry-1
Next

For j=0 To 255 Step 32
 For i=0 To 300 Step 64
  jo=-(Floor(j/32) And 1)*32
  Color 40,40,20
  Rect jo+i,j+1,63,31,0
  Color 180,180,150
  Rect jo+i+1,j,63,31,0
 Next
Next

CopyRect 0,0,256,256,0,0,BackBuffer(),TextureBuffer(walltex)

Global white =CreateTexture(16,16)
Color 255,255,255
Rect 0,0,16,16,1
CopyRect 0,0,16,16,0,0,BackBuffer(),TextureBuffer(white)



CameraProjMode camera,1
CameraProjMode PhotonCam,0


; world design...
; init entity iteration------------------------
Global Cycle_bank=CreateBank(16)
Const  Cycle_NextEntity=4
Const  Cycle_LastEntity=8
Global Cycle_FirstEntity=CreatePivot()
Global Cycle_CurrentEntityPointer=Cycle_FirstEntity
;----------------------------------------------------

; from here on, created entities can be parsed with MoreEntities function.
dis#=10
For i=0 To 30
 c=CreateCube()
 PositionEntity c,Rnd(-10,10),Rnd(-6,-4),Rnd(-10,10)
 RotateEntity c,0,Rand(360),0
 ScaleEntity c,3,1,3
 EntityPickMode c,2
 EntityTexture c,walltex
Next

w1=CreateCube() ;walls
ScaleEntity w1,10,10,1
TranslateEntity w1,0,0,10
EntityTexture w1,walltex

w2=CreateCube()
ScaleEntity w2,10,10,1
TranslateEntity w2,0,0,-10
EntityTexture w2,walltex

w3=CreateCube()
ScaleEntity w3,1,10,10
TranslateEntity w3,10,0,0
EntityTexture w3,walltex

w4=CreateCube()
ScaleEntity w4,1,10,10
TranslateEntity w4,-10,0,0
EntityTexture w4,walltex

w5=CreateCube() ; ceil
ScaleEntity w5,10,1,10
TranslateEntity w5,0,10,0
EntityTexture w5,walltex

col=CreateCylinder()
ScaleEntity col,0.5,10,0.5
TranslateEntity col,-5,0,-5
EntityTexture col,walltex

col=CreateCylinder()
ScaleEntity col,0.5,10,0.5
TranslateEntity col,0,0,-5
EntityTexture col,walltex


npc=CreateSphere(20)
EntityTexture npc,walltex
ScaleEntity npc,2,5,2


EntityFX npc,1

npc_x#=-5



Global Cycle_EndMarker=CreatePivot()




Type e_vert
Field x#
Field y#
Field z#
Field depth#
Field ent
Field sur
Field ind
Field red#
Field green#
Field blue#
Field alpha#
End Type



Type rem_mat
 Field index
End Type






ft=MilliSecs()
MoveMouse GraphicsWidth()/1.8,GraphicsHeight()/2.0

Color 255,0,0
a#=50
While KeyHit(1)=0 ; MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MAINLOOP MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
 npc_x#=npc_x+.1
 If npc_x>12 Then npc_x=-12
 PositionEntity npc,npc_x,0,0
 TurnEntity npc,1,2,3
 If KeyDown(200)
  test_range#=test_range#*1.1
  If test_range#>20 Then test_range#=20
  LightRange light, test_range#
 EndIf
 If KeyDown(208)
  test_range#=test_range#*0.9
  If test_range#<0.1 Then test_range#=0.1
  LightRange light, test_range#
 EndIf

;  a#=a#+2
 If KeyDown(203)
  a#=a#+2
 EndIf
 If KeyDown(205)
  a#=a#-2
 EndIf
 If KeyHit(17) Then
  wire =wire Xor 1
  If wire=0 Then Wireframe 0
 EndIf
 If KeyHit(57) Then
  demo_mode=demo_mode+1
  If demo_mode>3 Then demo_mode=0
 EndIf
; PositionEntity light,( (GraphicsWidth()/2)-MouseX() )/40.0,((GraphicsHeight()/2)-MouseY())/40.0,7 ; note, this important position for the system
 PositionEntity light, Sin( ((GraphicsWidth()/2)-MouseX())/2 )*7.5, ((GraphicsHeight()/2)-MouseY())/40.0, Cos(((GraphicsWidth()/2)-MouseX())/2 )*7.5 ; note, this important position for the system
 PointEntity light,scene_center
 If a#>359 Then a#=0
 If a#<0 Then a#=359
 PositionEntity camera,Sin(a#)*dis,0,Cos(a#)*dis
 PointEntity camera,maincam_targetpiv

 UpdateWorld()
 LetThereBeLight(light)

 If wire<>0 Then Wireframe 1
 RenderWorld()
 If wire<>0 Then Wireframe 0


 Color 255,0,0
 Text 250,0,"Tris:"+TrisRendered()
 Text 150,0,"FPS:"+1000/ft
 Text 350,0,"left,right, up, down,w,space,mouse"
 Text 150,16,"DXlight range:"+test_range+" Eye :"+a
 If demo_mode=0 Then Flip 0; to hide the color space maps
 ms=MilliSecs()
 ft=ms-ms2
 ms2=ms
Wend

End
;-----------------------------------------------------------------------










Function LetThereBeLight(l)

;erase some arrays
 For y=0 To look_h-1
  For x=0 To look_w-1
    PhotonCache(x,y)=0
  Next
 Next

 HideEntity light_cube
 CameraProjMode camera,0
 CameraProjMode PhotonCam,1
 CameraFogMode PhotonCam,0
 CameraFogRange PhotonCam,0,fogrange#*2.0
 CameraViewport(PhotonCam,0,0,look_w,look_h)
 CameraZoom PhotonCam,PhotoCamZoom#
 PositionEntity PhotonCam,EntityX(camera,1),EntityY(camera,1),EntityZ(camera,1),1
 RotateEntity PhotonCam,EntityPitch(camera,1),EntityYaw(camera,1),EntityRoll(camera,1),1
 CameraRange PhotonCam,0.01,100
 HideEntity ol_quad


; coloring world (RGB-encode vertices locations)
 While MoreEntities()
  e=NextEntity()
  If EntityClass$(e)="Mesh"
   For su=1 To CountSurfaces(e)
    surf=GetSurface(e,su)
    For v=0 To CountVertices(surf)-1
     enti.e_vert = New e_vert
        entient=e
        entisur=surf
        entiind=v
        entied#=VertexRed(surf,v)
        entigreen#=VertexGreen(surf,v)
        entilue#=VertexBlue(surf,v)
        entialpha#=VertexAlpha#(surf,v)

       TFormPoint VertexX(surf,v),VertexY(surf,v),VertexZ(surf,v),e,0
       dis__x#=TFormedX()+10.0
       dis__y#=TFormedY()+10.0
       dis__z#=TFormedZ()+10.0

       bri__x#=255.0-(255.0 / fogrange#) * dis__x#
       If bri__x#<0 Then bri__x#=0
       If bri__x#>255 Then bri__x#=255

       bri__y#=255.0-(255.0 / fogrange#) * dis__y#
       If bri__y#<0 Then bri__y#=0
       If bri__y#>255 Then bri__y#=255

       bri__z#=255.0-(255.0 / fogrange#) * dis__z#
       If bri__z#<0 Then bri__z#=0
       If bri__z#>255 Then bri__z#=255
       VertexColor surf, v, bri__x#, bri__y#, bri__z#,1.0
    Next
   Next

   EntityFX e,2 Or 1;4
   EntityColor e,255,255,255
   EntityTexture e,white
  EndIf
 Wend


; render color space from player perspective
 RenderWorld()

 LockBuffer BackBuffer()
 For y=0 To look_h-1
  For x=0 To look_w-1
   rgb=ReadPixelFast(x,y) And $ffffff
   ; store texel world coords (rgb encoded)
   icu1#(x,y,0)=(255-(rgb And $FF0000) Shr 16)
   icu1#(x,y,1)=(255-(rgb And $FF00) Shr 8)
   icu1#(x,y,2)=(255-rgb And $FF) ;/f_divider#
  Next
 Next
 UnlockBuffer BackBuffer()

 If demo_mode=1 Then  Flip 0 ; too see color space from eye



;render color space from lights point of view

 PositionEntity PhotonCam,EntityX(l),EntityY(l),EntityZ(l),1
 RotateEntity PhotonCam,EntityPitch(l),EntityYaw(l),EntityRoll(l),1
 CameraViewport(PhotonCam,0,0,look_w*icu2rel,look_h*icu2rel) ; allow higher precision

 RenderWorld()

 LockBuffer BackBuffer()
 For y=0 To look_h*icu2rel-1
  For x=0 To look_w*icu2rel-1
   x2=x/icu2rel
   y2=y/icu2rel
   rgb=ReadPixelFast(x,y) And $ffffff
   icu2#(x2,y2,0)=(255-(rgb And $FF0000) Shr 16)
   icu2#(x2,y2,1)=(255-(rgb And $FF00) Shr 8)
   icu2#(x2,y2,2)=(255-rgb And $FF)
   ; store flag in rgb encoded array index (reverse lookup table), and allow oversampling by bitshifting
    rr.rem_mat = New rem_mat ; will have to erase this matrix point later, so store its bank index
    rrindex=((icu2#(x2,y2,0)Shr sshr)Shl 16)Or((icu2#(x2,y2,1)Shr sshr)Shl 8)Or((icu2#(x2,y2,2)Shr sshr))
    PokeByte RGB_2_XYZ,rrindex ,1
  Next
 Next
 UnlockBuffer BackBuffer()


 CameraViewport(PhotonCam,0,0,look_w,look_h)
 PositionEntity PhotonCam,EntityX(camera,1),EntityY(camera,1),EntityZ(camera,1),1
 RotateEntity PhotonCam,EntityPitch(camera,1),EntityYaw(camera,1),EntityRoll(camera,1),1

; The following is calculating the visability of each shadow overlay texel
; set a shadow texels only if it was seen on both color space renders (point that can be seen from the eye and from the light as well)

 For y=0 To look_h-1
  For x=0 To look_w-1
   p=PeekByte( RGB_2_XYZ, ((icu1#(x,y,0)Shr sshr)Shl 16)+((icu1#(x,y,1)Shr sshr)Shl 8)+((icu1#(x,y,2)Shr sshr))  )
   If p=1
    CameraProject PhotonCam, icu1#(x,y,0)/f_divider#-10.0,icu1#(x,y,1)/f_divider#-10.0,icu1#(x,y,2)/f_divider# -10.0
    xx=ProjectedX#()
    yy=ProjectedY#()
    If (xx>=0) And (yy>=0) And (xx<look_w) And (yy<look_h) Then
     PhotonCache(xx,yy)=1 ; will later write this pixel
    EndIf
   EndIf
  Next
 Next



; clean up matrix changes
 For rr.rem_mat = Each rem_mat
  PokeByte RGB_2_XYZ,rrindex,0
 Next
 For rr.rem_mat = Each rem_mat
  Delete rr
 Next




;; artefacts filter attempt....fill single isolated shadow texels
; For y=1 To look_h-2
;  For x=1 To look_w-2
;   If (PhotonCache(x,y)=0) And (PhotonCache(x-1,y)=1) And (PhotonCache(x,y-1)=1) And (PhotonCache(x+1,y)=1) And (PhotonCache(x,y+1)=1) Then
;    PhotonCache(x,y)=1
;   EndIf
;  Next
; Next


If demo_mode=2 Then Flip 0; to see color space from light



; finally write the texels to the screen
 Color 0,0,0
 Rect 0,0,look_w,look_h,1

 LockBuffer()
 For y=0 To look_h-1
  For x=0 To look_w-1
   If PhotonCache(x,y)<>0 Then
    WritePixelFast x,y,$ffffff
   EndIf
  Next
 Next
 UnlockBuffer()
 CopyRect 0,0,look_w,look_h,0,ol_quadtex_yo,BackBuffer(), TextureBuffer(ol_quadtex)



 For enti.e_vert = Each e_vert ; restore original vertex colors of scene
     VertexColor entisur,entiind,entied#,entigreen#,entilue#,entialpha#
 Next
 For enti.e_vert = Each e_vert ; free types
    Delete enti
 Next

;


If demo_mode=3 Then Flip 0; to see shadow mapping

 While MoreEntities()
  ; this is where we set the scene objects back to their original state, FX etc. wise.
  ; (in this demo the orig settings are not known, there for just zeroing FX)
  e= NextEntity()
  If EntityClass$(e)="Mesh"
   EntityFX e,0
   EntityColor e,255,255,255
   EntityTexture e,walltex
  EndIf
 Wend

 CameraProjMode camera,1
 CameraProjMode PhotonCam,0
 ShowEntity ol_quad
 ShowEntity light_cube

End Function




; NOTE: userlibs required!  In kernel32.decls you need this:


;.lib "kernel32.dll"
;RtlMoveMemory2%(Destination*,Source,Length) : "RtlMoveMemory"


;of course without semicolons






Function MoreEntities() ; iterate all world content entities
 api_RtlMoveMemory2(Cycle_bank,Cycle_CurrentEntityPointer+Cycle_NextEntity,4)
 If PeekInt(Cycle_bank,0)<>Cycle_EndMarker
  Return True
 Else
  Cycle_CurrentEntityPointer=Cycle_FirstEntity
 EndIf
End Function


Function NextEntity()
 Local entity
 api_RtlMoveMemory2(Cycle_bank,Cycle_CurrentEntityPointer+Cycle_NextEntity,4)
 entity=PeekInt(Cycle_bank,0)
 Cycle_CurrentEntityPointer = entity
 Return entity
End Function


Function EntityExists(entity)
 While MoreEntities()
  If NextEntity()=entity Then Return True
 Wend
End Function
And here's pretty much EVERY k32 function I could find INCLUDING "api_RTL_MoveMemory2%: kernel32.decls: [code].lib "kernel32.dll"

GlobalMemoryStatus(buffer*)

ptr_helper__%(a*,b%,c%):"MulDiv"

apiRtlMoveMemory(Destination*,Source,Length):"RtlMoveMemory"
apiRtlMoveMemory2(Destination,Source*,Length):"RtlMoveMemory"

api_RtlMoveMemory2%(Destination*,Source,Length) : "RtlMoveMemory"

api_AddAtom% (lpString$) : "AddAtomA"
api_AllocConsole% () : "AllocConsole"
api_BackupRead% (hFile%, lpBuffer%, nNumberOfBytesToRead%, lpNumberOfBytesRead%, bAbort%, bProcessSecurity%, lpContext*) : "BackupRead"
api_BackupSeek% (hFile%, dwLowBytesToSeek%, dwHighBytesToSeek%, lpdwLowByteSeeked%, lpdwHighByteSeeked%, lpContext%) : "BackupSeek"
api_BackupWrite% (hFile%, lpBuffer%, nNumberOfBytesToWrite%, lpNumberOfBytesWritten%, bAbort%, bProcessSecurity%, lpContext%) : "BackupWrite"
api_Beep% (dwFreq%, dwDuration%) : "Beep"
api_BeginUpdateResource% (pFileName$, bDeleteExistingResources%) : "BeginUpdateResourceA"
api_BuildCommDCB% (lpDef$, lpDCB*) : "BuildCommDCBA"
api_BuildCommDCBAndTimeouts% (lpDef$, lpDCB*, lpCommTimeouts*) : "BuildCommDCBAndTimeoutsA"
api_CallNamedPipe% (lpNamedPipeName$, lpInBuffer*, nInBufferSize%, lpOutBuffer*, nOutBufferSize%, lpBytesRead%, nTimeOut%) : "CallNamedPipeA"
api_ClearCommBreak% (nCid%) : "ClearCommBreak"
api_ClearCommError% (hFile%, lpErrors%, lpStat*) : "ClearCommError"
api_CloseHandle% (hObject%) : "CloseHandle"
api_CommConfigDialog% (lpszName$, hWnd%, lpCC*) : "CommConfigDialogA"
api_CompareFileTime% (lpFileTime1*, lpFileTime2*) : "CompareFileTime"
api_CompareString% (Locale%, dwCmpFlags%, lpString1$, cchCount1%, lpString2$, cchCount2%) : "CompareStringA"
api_ConnectNamedPipe% (hNamedPipe%, lpOverlapped*) : "ConnectNamedPipe"
api_ContinueDebugEvent% (dwProcessId%, dwThreadId%, dwContinueStatus%) : "ContinueDebugEvent"
api_ConvertDefaultLocale% (Locale%) : "ConvertDefaultLocale"
api_CopyFile% (lpExistingFileName$, lpNewFileName$, bFailIfExists%) : "CopyFileA"
api_CreateConsoleScreenBuffer% (dwDesiredAccess%, dwShareMode%, lpSecurityAttributes*, dwFlags%, lpScreenBufferData*) : "CreateConsoleScreenBuffer"
api_CreateDirectory% (lpPathName$, lpSecurityAttributes*) : "CreateDirectoryA"
api_CreateDirectoryEx% (lpTemplateDirectory$, lpNewDirectory$, lpSecurityAttributes*) : "CreateDirectoryExA"
api_CreateEvent% (lpEventAttributes*, bManualReset%, bInitialState%, lpName$) : "CreateEventA"
api_CreateFile% (lpFileName$, dwDesiredAccess%, dwShareMode%, lpSecurityAttributes*, dwCreationDisposition%, dwFlagsAndAttributes%, hTemplateFile%) : "CreateFileA"
api_CreateFileMapping% (hFile%, lpFileMappigAttributes*, flProtect%, dwMaximumSizeHigh%, dwMaximumSizeLow%, lpName$) : "CreateFileMappingA"
api_CreateIoCompletionPort% (FileHandle%, ExistingCompletionPort%, CompletionKey%, NumberOfConcurrentThreads%) : "CreateIoCompletionPort"
api_CreateMailslot% (lpName$, nMaxMessageSize%, lReadTimeout%, lpSecurityAttributes*) : "CreateMailslotA"
api_CreateMutex% (lpMutexAttributes*, bInitialOwner%, lpName$) : "CreateMutexA"
api_CreateNamedPipe% (lpName$, dwOpenMode%, dwPipeMode%, nMaxInstances%, nOutBufferSize%, nInBufferSize%, nDefaultTimeOut%, lpSecurityAttributes*) : "CreateNamedPipeA"
api_CreatePipe% (phReadPipe%, phWritePipe%, lpPipeAttributes*, nSize%) : "CreatePipe"
api_CreateProcess% (lpApplicationName$, lpCommandLine$, lpProcessAttributes*, lpThreadAttributes*, bInheritHandles%, dwCreationFlags%, lpEnvironment*, lpCurrentDriectory$, lpStartupInfo*, lpProcessInformation*) : "CreateProcessA"
api_CreateProcessAsUser% (hToken%, lpApplicationName$, lpCommandLine$, lpProcessAttributes*, lpThreadAttributes*, bInheritHandles%, dwCreationFlags%, lpEnvironment$, lpCurrentDirectory$, lpStartupInfo*, lpProcessInformation*) : "CreateProcessAsUserA"
api_CreateRemoteThread% (hProcess%, lpThreadAttributes*, dwStackSize%, lpStartAddress%, lpParameter*, dwCreationFlags%, lpThreadId%) : "CreateRemoteThread"
api_CreateSemaphore% (lpSemaphoreAttributes*, lInitialCount%, lMaximumCount%, lpName$) : "CreateSemaphoreA"
api_CreateTapePartition% (hDevice%, dwPartitionMethod%, dwCount%, dwSize%) : "CreateTapePartition"
api_CreateThread% (lpThreadAttributes*, dwStackSize%, lpStartAddress%, lpParameter*, dwCreationFlags%, lpThreadId%) : "CreateThread"
api_DebugActiveProcess% (dwProcessId%) : "DebugActiveProcess"
api_DebugBreak () : "DebugBreak"
api_DefineDosDevice% (dwFlags%, lpDeviceName$, lpTargetPath$) : "DefineDosDeviceA"
api_DeleteAtom% (nAtom%) : "DeleteAtom"
api_DeleteCriticalSection (lpCriticalSection*) : "DeleteCriticalSection"
api_DeleteFile% (lpFileName$) : "DeleteFileA"
api_DeviceIoControl% (hDevice%, dwIoControlCode%, lpInBuffer*, nInBufferSize%, lpOutBuffer*, nOutBufferSize%, lpBytesReturned%, lpOverlapped*) : "DeviceIoControl"
api_DisableThreadLibraryCalls% (hLibModule%) : "DisableThreadLibraryCalls"
api_DisconnectNamedPipe% (hNamedPipe%) : "DisconnectNamedPipe"
api_DosDateTimeToFileTime% (wFatDate%, wFatTime%, lpFileTime*) : "DosDateTimeToFileTime"
api_DuplicateHandle% (hSourceProcessHandle%, hSourceHandle%, hTargetProcessHandle%, lpTargetHandle%, dwDesiredAccess%, bInheritHandle%, dwOptions%) : "DuplicateHandle"
api_EndUpdateResource% (hUpdate%, fDiscard%) : "EndUpdateResourceA"
api_EnterCriticalSection (lpCriticalSection*) : "EnterCriticalSection"
api_EnumCalendarInfo% (lpCalInfoEnumProc%, Locale%, Calendar%, CalType%) : "EnumCalendarInfoA"
api_EnumDateFormats% (lpDateFmtEnumProc%, Locale%, dwFlags%) : "EnumDateFormats"
api_EnumResourceLanguages% (hModule%, lpType$, lpName$, lpEnumFunc%, lParam%) : "EnumResourceLanguagesA"
api_EnumResourceNames% (hModule%, lpType$, lpEnumFunc%, lParam%) : "EnumResourceNamesA"
api_EnumResourceTypes% (hModule%, lpEnumFunc%, lParam%) : "EnumResourceTypesA"
api_EnumSystemCodePages% (lpCodePageEnumProc%, dwFlags%) : "EnumSystemCodePages"
api_EnumSystemLocales% (lpLocaleEnumProc%, dwFlags%) : "EnumSystemLocales"
api_EnumTimeFormats% (lpTimeFmtEnumProc%, Locale%, dwFlags%) : "EnumTimeFormats"
api_EraseTape% (hDevice%, dwEraseType%, bimmediate%) : "EraseTape"
api_EscapeCommFunction% (nCid%, nFunc%) : "EscapeCommFunction"
api_ExitProcess (uExitCode%) : "ExitProcess"
api_ExitThread (dwExitCode%) : "ExitThread"
api_ExpandEnvironmentStrings% (lpSrc$, lpDst$, nSize%) : "ExpandEnvironmentStringsA"
api_FatalAppExit (uAction%, lpMessageText$) : "FatalAppExitA"
api_FatalExit (code%) : "FatalExit"
api_FileTimeToDosDateTime% (lpFileTime*, lpFatDate%, lpFatTime%) : "FileTimeToDosDateTime"
api_FileTimeToLocalFileTime% (lpFileTime*, lpLocalFileTime*) : "FileTimeToLocalFileTime"
api_FileTimeToSystemTime% (lpFileTime*, lpSystemTime*) : "FileTimeToSystemTime"
api_FillConsoleOutputAttribute% (hConsoleOutput%, wAttribute%, nLength%, dwWriteCoord*, lpNumberOfAttrsWritten%) : "FillConsoleOutputAttribute"
api_FillConsoleOutputCharacter% (hConsoleOutput%, cCharacter%, nLength%, dwWriteCoord*, lpNumberOfCharsWritten%) : "FillConsoleOutputCharacterA"
api_FindAtom% (lpString$) : "FindAtomA"
api_FindClose% (hFindFile%) : "FindClose"
api_FindCloseChangeNotification% (hChangeHandle%) : "FindCloseChangeNotification"
api_FindFirstChangeNotification% (lpPathName$, bWatchSubtree%, dwNotifyFilter%) : "FindFirstChangeNotificationA"
api_FindFirstFile% (lpFileName$, lpFindFileData*) : "FindFirstFileA"
api_FindNextChangeNotification% (hChangeHandle%) : "FindNextChangeNotification"
api_FindNextFile% (hFindFile%, lpFindFileData*) : "FindNextFileA"
api_FindResource% (hInstance%, lpName$, lpType$) : "FindResourceA"
api_FindResourceEx% (hModule%, lpType$, lpName$, wLanguage%) : "FindResourceExA"
api_FlushConsoleInputBuffer% (hConsoleInput%) : "FlushConsoleInputBuffer"
api_FlushFileBuffers% (hFile%) : "FlushFileBuffers"
api_FlushInstructionCache% (hProcess%, lpBaseAddress*, dwSize%) : "FlushInstructionCache"
api_FlushViewOfFile% (lpBaseAddress*, dwNumberOfBytesToFlush%) : "FlushViewOfFile"
api_FoldString% (dwMapFlags%, lpSrcStr$, cchSrc%, lpDestStr$, cchDest%) : "FoldStringA"
api_FormatMessage% (dwFlags%, lpSource*, dwMessageId%, dwLanguageId%, lpBuffer$, nSize%, Arguments%) : "FormatMessageA"
api_FreeConsole% () : "FreeConsole"
api_FreeEnvironmentStrings% (lpsz$) : "FreeEnvironmentStringsA"
api_FreeLibrary% (hLibModule%) : "FreeLibrary"
api_FreeLibraryAndExitThread (hLibModule%, dwExitCode%) : "FreeLibraryAndExitThread"
api_FreeResource% (hResData%) : "FreeResource"
api_GenerateConsoleCtrlEvent% (dwCtrlEvent%, dwProcessGroupId%) : "GenerateConsoleCtrlEvent"
api_GetACP% () : "GetACP"
api_GetAtomName% (nAtom%, lpBuffer$, nSize%) : "GetAtomNameA"
api_GetBinaryType% (lpApplicationName$, lpBinaryType%) : "GetBinaryTypeA"
api_GetCommandLine$ () : "GetCommandLineA"
api_GetCommConfig% (hCommDev%, lpCC*, lpdwSize%) : "GetCommConfig"
api_GetCommMask% (hFile%, lpEvtMask%) : "GetCommMask"
api_GetCommModemStatus% (hFile%, lpModemStat%) : "GetCommModemStatus"
api_GetCommProperties% (hFile%, lpCommProp*) : "GetCommProperties"
api_GetCommState% (nCid%, lpDCB*) : "GetCommState"
api_GetCommTimeouts% (hFile%, lpCommTimeouts*) : "GetCommTimeouts"
api_GetCompressedFileSize% (lpFileName$, lpFileSizeHigh%) : "GetCompressedFileSizeA"
api_GetComputerName% (lpBuffer$, nSize%) : "GetComputerNameA"
api_GetConsoleCP% () : "GetConsoleCP"
api_GetConsoleCursorInfo% (hConsoleOutput%, lpConsoleCursorInfo*) : "GetConsoleCursorInfo"
api_GetConsoleMode% (hConsoleHandle%, lpMode%) : "GetConsoleMode"
api_GetConsoleOutputCP% () : "GetConsoleOutputCP"
api_GetConsoleScreenBufferInfo% (hConsoleOutput%, lpConsoleScreenBufferInfo*) : "GetConsoleScreenBufferInfo"
api_GetConsoleTitle% (lpConsoleTitle$, nSize%) : "GetConsoleTitleA"
api_GetCPInfo% (CodePage%, lpCPInfo*) : "GetCPInfo"
api_GetCurrencyFormat% (Locale%, dwFlags%, lpValue$, lpFormat*, lpCurrencyStr$, cchCurrency%) : "GetCurrencyFormatA"
api_GetCurrentDirectory% (nBufferLength%, lpBuffer$) : "GetCurrentDirectory"
api_GetCurrentProcess% () : "GetCurrentProcess"
api_GetCurrentProcessId% () : "GetCurrentProcessId"
api_GetCurrentThread% () : "GetCurrentThread"
api_GetCurrentThreadId% () : "GetCurrentThreadId"
api_GetDateFormat% (Locale%, dwFlags%, lpDate*, lpFormat$, lpDateStr$, cchDate%) : "GetDateFormatA"
api_GetDefaultCommConfig% (lpszName$, lpCC*, lpdwSize%) : "GetDefaultCommConfigA"
api_GetDiskFreeSpace% (lpRootPathName$, lpSectorsPerCluster%, lpBytesPerSector%, lpNumberOfFreeClusters%, lpTtoalNumberOfClusters%) : "GetDiskFreeSpaceA"
api_GetDriveType% (nDrive$) : "GetDriveTypeA"
api_GetEnvironmentStrings$ () : "GetEnvironmentStringsA"
api_GetEnvironmentVariable% (lpName$, lpBuffer$, nSize%) : "GetEnvironmentVariableA"
api_GetExitCodeProcess% (hProcess%, lpExitCode%) : "GetExitCodeProcess"
api_GetExitCodeThread% (hThread%, lpExitCode%) : "GetExitCodeThread"
api_GetFileAttributes% (lpFileName$) : "GetFileAttributesA"
api_GetFileInformationByHandle% (hFile%, lpFileInformation*) : "GetFileInformationByHandle"
api_GetFileSize% (hFile%, lpFileSizeHigh%) : "GetFileSize"
api_GetFileTime% (hFile%, lpCreationTime*, lpLastAccessTime*, lpLastWriteTime*) : "GetFileTime"
api_GetFileType% (hFile%) : "GetFileType"
api_GetFullPathName% (lpFileName$, nBufferLength%, lpBuffer$, lpFilePart$) : "GetFullPathNameA"
api_GetHandleInformation% (hObject%, lpdwFlags%) : "GetHandleInformation"
api_GetLastError% () : "GetLastError"
api_GetLocaleInfo% (Locale%, LCType%, lpLCData$, cchData%) : "GetLocaleInfoA"
api_GetLocalTime (lpSystemTime*) : "GetLocalTime"
api_GetLogicalDrives% () : "GetLogicalDrives"
api_GetLogicalDriveStrings% (nBufferLength%, lpBuffer$) : "GetLogicalDriveStringsA"
api_GetMailslotInfo% (hMailslot%, lpMaxMessageSize%, lpNextSize%, lpMessageCount%, lpReadTimeout%) : "GetMailslotInfo"
api_GetModuleFileName% (hModule%, lpFileName$, nSize%) : "GetModuleFileNameA"
api_GetModuleHandle% (lpModuleName$) : "GetModuleHandleA"
api_GetNamedPipeHandleState% (hNamedPipe%, lpState%, lpCurInstances%, lpMaxCollectionCount%, lpCollectDataTimeout%, lpUserName$, nMaxUserNameSize%) : "GetNamedPipeHandleStateA"
api_GetNamedPipeInfo% (hNamedPipe%, lpFlags%, lpOutBufferSize%, lpInBufferSize%, lpMaxInstances%) : "GetNamedPipeInfo"
api_GetNumberFormat% (Locale%, dwFlags%, lpValue$, lpFormat*, lpNumberStr$, cchNumber%) : "GetNumberFormatA"
api_GetNumberOfConsoleInputEvents% (hConsoleInput%, lpNumberOfEvents%) : "GetNumberOfConsoleInputEvents"
api_GetNumberOfConsoleMouseButtons% (lpNumberOfMouseButtons%) : "GetNumberOfConsoleMouseButtons"
api_GetOEMCP% () : "GetOEMCP"
api_GetOverlappedResult% (hFile%, lpOverlapped*, lpNumberOfBytesTransferred%, bWait%) : "GetOverlappedResult"
api_GetPriorityClass% (hProcess%) : "GetPriorityClass"
api_GetPrivateProfileInt% (lpApplicationName$, lpKeyName$, nDefault%, lpFileName$) : "GetPrivateProfileIntA"
api_GetPrivateProfileSection% (lpAppName$, lpReturnedString$, nSize%, lpFileName$) : "GetPrivateProfileSectionA"
api_GetPrivateProfileString% (lpApplicationName$, lpKeyName*, lpDefault$, lpReturnedString$, nSize%, lpFileName$) : "GetPrivateProfileStringA"
api_GetProcAddress% (hModule%, lpProcName$) : "GetProcAddress"
api_GetProcessAffinityMask% (hProcess%, lpProcessAffinityMask%, SystemAffinityMask%) : "GetProcessAffinityMask"
api_GetProcessHeap% () : "GetProcessHeap"
api_GetProcessHeaps% (NumberOfHeaps%, ProcessHeaps%) : "GetProcessHeaps"
api_GetProcessShutdownParameters% (lpdwLevel%, lpdwFlags%) : "GetProcessShutdownParameters"
api_GetProcessTimes% (hProcess%, lpCreationTime*, lpExitTime*, lpKernelTime*, lpUserTime*) : "GetProcessTimes"
api_GetProcessWorkingSetSize% (hProcess%, lpMinimumWorkingSetSize%, lpMaximumWorkingSetSize%) : "GetProcessWorkingSetSize"
api_GetProfileInt% (lpAppName$, lpKeyName$, nDefault%) : "GetProfileIntA"
api_GetProfileSection% (lpAppName$, lpReturnedString$, nSize%) : "GetProfileSectionA"
api_GetProfileString% (lpAppName$, lpKeyName$, lpDefault$, lpReturnedString$, nSize%) : "GetProfileStringA"
api_GetQueuedCompletionStatus% (CompletionPort%, lpNumberOfBytesTransferred%, lpCompletionKey%, lpOverlapped%, dwMilliseconds%) : "GetQueuedCompletionStatus"
api_GetShortPathName% (lpszLongPath$, lpszShortPath$, cchBuffer%) : "GetShortPathName"
api_GetStartupInfo (lpStartupInfo*) : "GetStartupInfoA"
api_GetStdHandle% (nStdHandle%) : "GetStdHandle"
api_GetStringTypeA% (lcid%, dwInfoType%, lpSrcStr$, cchSrc%, lpCharType%) : "GetStringTypeA"
api_GetStringTypeEx% (Locale%, dwInfoType%, lpSrcStr$, cchSrc%, lpCharType%) : "GetStringTypeExA"
api_GetStringTypeW% (dwInfoType%, lpSrcStr$, cchSrc%, lpCharType%) : "GetStringTypeW"
api_GetSystemDefaultLangID% () : "GetSystemDefaultLangID"
api_GetSystemDefaultLCID% () : "GetSystemDefaultLCID"
api_GetSystemDirectory% (lpBuffer$, nSize%) : "GetSystemDirectoryA"
api_GetSystemInfo (lpSystemInfo*) : "GetSystemInfo"
api_GetSystemPowerStatus% (lpSystemPowerStatus*) : "GetSystemPowerStatus"
api_GetSystemTime (lpSystemTime*) : "GetSystemTime"
api_GetSystemTimeAdjustment% (lpTimeAdjustment%, lpTimeIncrement%, lpTimeAdjustmentDisabled%) : "GetSystemTimeAdjustment"
api_GetTapeParameters% (hDevice%, dwOperation%, lpdwSize%, lpTapeInformation*) : "GetTapeParameters"
api_GetTapePosition% (hDevice%, dwPositionType%, lpdwPartition%, lpdwOffsetLow%, lpdwOffsetHigh%) : "GetTapePosition"
api_GetTapeStatus% (hDevice%) : "GetTapeStatus"
api_GetTempFileName% (lpszPath$, lpPrefixString$, wUnique%, lpTempFileName$) : "GetTempFileNameA"
api_GetTempPath% (nBufferLength%, lpBuffer$) : "GetTempPathA"
api_GetThreadContext% (hThread%, lpContext*) : "GetThreadContext"
api_GetThreadLocale% () : "GetThreadLocale"
api_GetThreadPriority% (hThread%) : "GetThreadPriority"
api_GetThreadSelectorEntry% (hThread%, dwSelector%, lpSelectorEntry*) : "GetThreadSelectorEntry"
api_GetThreadTimes% (hThread%, lpCreationTime*, lpExitTime*, lpKernelTime*, lpUserTime*) : "GetThreadTimes"
api_GetTickCount% () : "GetTickCount"
api_GetTimeFormat% (Locale%, dwFlags%, lpTime*, lpFormat$, lpTimeStr$, cchTime%) : "GetTimeFormatA"
api_GetTimeZoneInformation% (lpTimeZoneInformation*) : "GetTimeZoneInformation"
api_GetUserDefaultLangID% () : "GetUserDefaultLangID"
api_GetUserDefaultLCID% () : "GetUserDefaultLCID"
api_GetVersion% () : "GetVersion"
api_GetVersionEx% (lpVersionInformation*) : "GetVersionExA"
api_GetVolumeInformation% (lpRootPathName$, lpVolumeNameBuffer$, nVolumeNameSize%, lpVolumeSerialNumber%, lpMaximumComponentLength%, lpFileSystemFlags%, lpFileSystemNameBuffer$, nFileSystemNameSize%) : "GetVolumeInformationA"
api_GetWindowsDirectory% (lpBuffer$, nSize%) : "GetWindowsDirectoryA"
api_GlobalAddAtom% (lpString$) : "GlobalAddAtomA"
api_GlobalAlloc% (wFlags%, dwBytes%) : "GlobalAlloc"
api_GlobalCompact% (dwMinFree%) : "GlobalCompact"
api_GlobalDeleteAtom% (nAtom%) : "GlobalDeleteAtom"
api_GlobalFindAtom% (lpString$) : "GlobalFindAtomA"
api_GlobalFix (hMem%) : "GlobalFix"
api_GlobalFlags% (hMem%) : "GlobalFlags"
api_GlobalFree% (hMem%) : "GlobalFree"
api_GlobalGetAtomName% (nAtom%, lpBuffer$, nSize%) : "GlobalGetAtomNameA"
api_GlobalHandle% (wMem*) : "GlobalHandle"
api_GlobalLock% (hMem%) : "GlobalLock"
api_GlobalMemoryStatus (lpBuffer*) : "GlobalMemoryStatus"
api_GlobalReAlloc% (hMem%, dwBytes%, wFlags%) : "GlobalReAlloc"
api_GlobalSize% (hMem%) : "GlobalSize"
api_GlobalUnfix (hMem%) : "GlobalUnfix"
api_GlobalUnlock% (hMem%) : "GlobalUnlock"
api_GlobalUnWire% (hMem%) : "GlobalUnWire"
api_GlobalWire% (hMem%) : "GlobalWire"
api_HeapAlloc% (hHeap%, dwFlags%, dwBytes%) : "HeapAlloc"
api_HeapCompact% (hHeap%, dwFlags%) : "HeapCompact"
api_HeapCreate% (flOptions%, dwInitialSize%, dwMaximumSize%) : "HeapCreate"
api_HeapDestroy% (hHeap%) : "HeapDestroy"
api_HeapFree% (hHeap%, dwFlags%, lpMem*) : "HeapFree"
api_HeapLock% (hHeap%) : "HeapLock"
api_HeapReAlloc% (hHeap%, dwFlags%, lpMem*, dwBytes%) : "HeapReAlloc"
api_HeapSize% (hHeap%, dwFlags%, lpMem*) : "HeapSize"
api_HeapUnlock% (hHeap%) : "HeapUnlock"
api_HeapValidate% (hHeap%, dwFlags%, lpMem*) : "HeapValidate"
api_hread% (hFile%, lpBuffer*, lBytes%) : "_hread"
api_hwrite% (hFile%, lpBuffer$, lBytes%) : "_hwrite"
api_ImpersonateLoggedOnUser% (hToken%) : "ImpersonateLoggedOnUser"
api_InitAtomTable% (nSize%) : "InitAtomTable"
api_InitializeCriticalSection (lpCriticalSection*) : "InitializeCriticalSection"
api_InterlockedDecrement% (lpAddend%) : "InterlockedDecrement"
api_InterlockedExchange% (Target%, Value%) : "InterlockedExchange"
api_InterlockedIncrement% (lpAddend%) : "InterlockedIncrement"
api_IsBadCodePtr% (lpfn%) : "IsBadCodePtr"
api_IsBadHugeReadPtr% (lp*, ucb%) : "IsBadHugeReadPtr"
api_IsBadHugeWritePtr% (lp*, ucb%) : "IsBadHugeWritePtr"
api_IsBadReadPtr% (lp*, ucb%) : "IsBadReadPtr"
api_IsBadStringPtr% (lpsz$, ucchMax%) : "IsBadStringPtrA"
api_IsBadWritePtr% (lp*, ucb%) : "IsBadWritePtr"
api_IsDBCSLeadByte% (TestChar%) : "IsDBCSLeadByte"
api_IsValidCodePage% (CodePage%) : "IsValidCodePage"
api_IsValidLocale% (Locale%, dwFlags%) : "IsValidLocale"
api_lclose% (hFile%) : "_lclose"
api_LCMapString% (Locale%, dwMapFlags%, lpSrcStr$, cchSrc%, lpDestStr$, cchDest%) : "LCMapStringA"
api_lcreat% (lpPathName$, iAttribute%) : "_lcreat"
api_LeaveCriticalSection (lpCriticalSection*) : "LeaveCriticalSection"
api_llseek% (hFile%, lOffset%, iOrigin%) : "_llseek"
api_LoadLibrary% (lpLibFileName$) : "LoadLibraryA"
api_LoadLibraryEx% (lpLibFileName$, hFile%, dwFlags%) : "LoadLibraryExA"
api_LoadModule% (lpModuleName$, lpParameterBlock*) : "LoadModule"
api_LoadResource% (hInstance%, hResInfo%) : "LoadResource"
api_LocalAlloc% (wFlags%, wBytes%) : "LocalAlloc"
api_LocalCompact% (uMinFree%) : "LocalCompact"
api_LocalFileTimeToFileTime% (lpLocalFileTime*, lpFileTime*) : "LocalFileTimeToFileTime"
api_LocalFlags% (hMem%) : "LocalFlags"
api_LocalFree% (hMem%) : "LocalFree"
api_LocalHandle% (wMem*) : "LocalHandle"
api_LocalLock% (hMem%) : "LocalLock"
api_LocalReAlloc% (hMem%, wBytes%, wFlags%) : "LocalReAlloc"
api_LocalShrink% (hMem%, cbNewSize%) : "LocalShrink"
api_LocalSize% (hMem%) : "LocalSize"
api_LocalUnlock% (hMem%) : "LocalUnlock"
api_LockFile% (hFile%, dwFileOffsetLow%, dwFileOffsetHigh%, nNumberOfBytesToLockLow%, nNumberOfBytesToLockHigh%) : "LockFile"
api_LockFileEx% (hFile%, dwFlags%, dwReserved%, nNumberOfBytesToLockLow%, nNumberOfBytesToLockHigh%, lpOverlapped*) : "LockFileEx"
api_LockResource% (hResData%) : "LockResource"
api_lopen% (lpPathName$, iReadWrite%) : "_lopen"
api_lread% (hFile%, lpBuffer*, wBytes%) : "_lread"
api_lstrcat% (lpString1$, lpString2$) : "lstrcatA"
api_lstrcmp% (lpString1$, lpString2$) : "lstrcmpA"
api_lstrcmpi% (lpString1$, lpString2$) : "lstrcmpiA"
api_lstrcpy% (lpString1$, lpString2$) : "lstrcpyA"
api_lstrcpyn% (lpString1$, lpString2$, iMaxLength%) : "lstrcpynA"
api_lstrlen% (lpString$) : "lstrlenA"
api_lwrite% (hFile%, lpBuffer$, wBytes%) : "_lwrite"
api_MapViewOfFile% (hFileMappingObject%, dwDesiredAccess%, dwFileOffsetHigh%, dwFileOffsetLow%, dwNumberOfBytesToMap%) : "MapViewOfFile"
api_MapViewOfFileEx% (hFileMappingObject%, dwDesiredAccess%, dwFileOffsetHigh%, dwFileOffsetLow%, dwNumberOfBytesToMap%, lpBaseAddress*) : "MapViewOfFileEx"
api_MoveFile% (lpExistingFileName$, lpNewFileName$) : "MoveFileA"
api_MoveFileEx% (lpExistingFileName$, lpNewFileName$, dwFlags%) : "MoveFileExA"
api_MulDiv% (nNumber%, nNumerator%, nDenominator%) : "MulDiv"
api_MultiByteToWideChar% (CodePage%, dwFlags%, lpMultiByteStr$, cchMultiByte%, lpWideCharStr$, cchWideChar%) : "MultiByteToWideChar"
api_OpenEvent% (dwDesiredAccess%, bInheritHandle%, lpName$) : "OpenEventA"
api_OpenFile% (lpFileName$, lpReOpenBuff*, wStyle%) : "OpenFile"
api_OpenFileMapping% (dwDesiredAccess%, bInheritHandle%, lpName$) : "OpenFileMappingA"
api_OpenMutex% (dwDesiredAccess%, bInheritHandle%, lpName$) : "OpenMutexA"
api_OpenProcess% (dwDesiredAccess%, bInheritHandle%, dwProcessId%) : "OpenProcess"
api_OpenSemaphore% (dwDesiredAccess%, bInheritHandle%, lpName$) : "OpenSemaphoreA"
api_OutputDebugString (lpOutputString$) : "OutputDebugStringA"
api_PeekNamedPipe% (hNamedPipe%, lpBuffer*, nBufferSize%, lpBytesRead%, lpTotalBytesAvail%, lpBytesLeftThisMessage%) : "PeekNamedPipe"
api_PrepareTape% (hDevice%, dwOperation%, bimmediate%) : "PrepareTape"
api_PulseEvent% (hEvent%) : "PulseEvent"
api_PurgeComm% (hFile%, dwFlags%) : "PurgeComm"
api_QueryDosDevice% (lpDeviceName$, lpTargetPath$, ucchMax%) : "QueryDosDeviceA"
api_QueryPerformanceCounter% (lpPerformanceCount*) : "QueryPerformanceCounter"
api_QueryPerformanceFrequency% (lpFrequency*) : "QueryPerformanceFrequency"
api_RaiseException (dwExceptionCode%, dwExceptionFlags%, nNumberOfArguments%, lpArguments%) : "RaiseException"
api_ReadConsole% (hConsoleInput%, lpBuffer*, nNumberOfCharsToRead%, lpNumberOfCharsRead%, lpReserved*) : "ReadConsoleA"
api_ReadConsoleOutput% (hConsoleOutput%, lpBuffer*, dwBufferSize*, dwBufferCoord*, lpReadRegion*) : "ReadConsoleOutputA"
api_ReadConsoleOutputAttribute% (hConsoleOutput%, lpAttribute%, nLength%, dwReadCoord*, lpNumberOfAttrsRead%) : "ReadConsoleOutputAttribute"
api_ReadConsoleOutputCharacter% (hConsoleOutput%, lpCharacter$, nLength%, dwReadCoord*, lpNumberOfCharsRead%) : "ReadConsoleOutputCharacterA"
api_ReadFile% (hFile%, lpBuffer*, nNumberOfBytesToRead%, lpNumberOfBytesRead%, lpOverlapped*) : "ReadFile"
api_ReadFileEx% (hFile%, lpBuffer*, nNumberOfBytesToRead%, lpOverlapped*, lpCompletionRoutine%) : "ReadFileEx"
api_ReadProcessMemory% (hProcess%, lpBaseAddress*, lpBuffer*, nSize%, lpNumberOfBytesWritten%) : "ReadProcessMemory"
api_ReleaseMutex% (hMutex%) : "ReleaseMutex"
api_ReleaseSemaphore% (hSemaphore%, lReleaseCount%, lpPreviousCount%) : "ReleaseSemaphore"
api_RemoveDirectory% (lpPathName$) : "RemoveDirectoryA"
api_ResetEvent% (hEvent%) : "ResetEvent"
api_ResumeThread% (hThread%) : "ResumeThread"
api_ScrollConsoleScreenBuffer% (hConsoleOutput%, lpScrollRectangle*, lpClipRectangle*, dwDestinationOrigin*, lpFill*) : "ScrollConsoleScreenBufferA"
api_SearchPath% (lpPath$, lpFileName$, lpExtension$, nBufferLength%, lpBuffer$, lpFilePart$) : "SearchPathA"
api_SetCommBreak% (nCid%) : "SetCommBreak"
api_SetCommConfig% (hCommDev%, lpCC*, dwSize%) : "SetCommConfig"
api_SetCommMask% (hFile%, dwEvtMask%) : "SetCommMask"
api_SetCommState% (hCommDev%, lpDCB*) : "SetCommState"
api_SetCommTimeouts% (hFile%, lpCommTimeouts*) : "SetCommTimeouts"
api_SetComputerName% (lpComputerName$) : "SetComputerNameA"
api_SetConsoleActiveScreenBuffer% (hConsoleOutput%) : "SetConsoleActiveScreenBuffer"
api_SetConsoleCP% (wCodePageID%) : "SetConsoleCP"
api_SetConsoleCtrlHandler% (HandlerRoutine%, Add%) : "SetConsoleCtrlHandler"
api_SetConsoleCursorInfo% (hConsoleOutput%, lpConsoleCursorInfo*) : "SetConsoleCursorInfo"
api_SetConsoleCursorPosition% (hConsoleOutput%, dwCursorPosition*) : "SetConsoleCursorPosition"
api_SetConsoleMode% (hConsoleHandle%, dwMode%) : "SetConsoleMode"
api_SetConsoleOutputCP% (wCodePageID%) : "SetConsoleOutputCP"
api_SetConsoleScreenBufferSize% (hConsoleOutput%, dwSize*) : "SetConsoleScreenBufferSize"
api_SetConsoleTextAttribute% (hConsoleOutput%, wAttributes%) : "SetConsoleTextAttribute"
api_SetConsoleTitle% (lpConsoleTitle$) : "SetConsoleTitleA"
api_SetConsoleWindowInfo% (hConsoleOutput%, bAbsolute%, lpConsoleWindow*) : "SetConsoleWindowInfo"
api_SetCurrentDirectory% (lpPathName$) : "SetCurrentDirectoryA"
api_SetDefaultCommConfig% (lpszName$, lpCC*, dwSize%) : "SetDefaultCommConfigA"
api_SetEndOfFile% (hFile%) : "SetEndOfFile"
api_SetEnvironmentVariable% (lpName$, lpValue$) : "SetEnvironmentVariableA"
api_SetErrorMode% (wMode%) : "SetErrorMode"
api_SetEvent% (hEvent%) : "SetEvent"
api_SetFileApisToANSI () : "SetFileApisToANSI"
api_SetFileApisToOEM () : "SetFileApisToOEM"
api_SetFileAttributes% (lpFileName$, dwFileAttributes%) : "SetFileAttributesA"
api_SetFilePointer% (hFile%, lDistanceToMove%, lpDistanceToMoveHigh%, dwMoveMethod%) : "SetFilePointer"
api_SetFileTime% (hFile%, lpCreationTime*, lpLastAccessTime*, lpLastWriteTime*) : "SetFileTime"
api_SetHandleCount% (wNumber%) : "SetHandleCount"
api_SetHandleInformation% (hObject%, dwMask%, dwFlags%) : "SetHandleInformation"
api_SetLastError (dwErrCode%) : "SetLastError"
api_SetLocaleInfo% (Locale%, LCType%, lpLCData$) : "SetLocaleInfoA"
api_SetLocalTime% (lpSystemTime*) : "SetLocalTime"
api_SetMailslotInfo% (hMailslot%, lReadTimeout%) : "SetMailslotInfo"
api_SetNamedPipeHandleState% (hNamedPipe%, lpMode%, lpMaxCollectionCount%, lpCollectDataTimeout%) : "SetNamedPipeHandleState"
api_SetPriorityClass% (hProcess%, dwPriorityClass%) : "SetPriorityClass"
api_SetProcessShutdownParameters% (dwLevel%, dwFlags%) : "SetProcessShutdownParameters"
api_SetProcessWorkingSetSize% (hProcess%, dwMinimumWorkingSetSize%, dwMaximumWorkingSetSize%) : "SetProcessWorkingSetSize"
api_SetStdHandle% (nStdHandle%, nHandle%) : "SetStdHandle"
api_SetSystemPowerState% (fSuspend%, fForce%) : "SetSystemPowerState"
api_SetSystemTime% (lpSystemTime*) : "SetSystemTime"
api_SetSystemTimeAdjustment% (dwTimeAdjustment%, bTimeAdjustmentDisabled%) : "SetSystemTimeAdjustment"
api_SetTapeParameters% (hDevice%, dwOperation%, lpTapeInformation*) : "SetTapeParameters"
api_SetTapePosition% (hDevice%, dwPositionMethod%, dwPartition%, dwOffsetLow%, dwOffsetHigh%, bimmediate%) : "SetTapePosition"
api_SetThreadAffinityMask% (hThread%, dwThreadAffinityMask%) : "SetThreadAffinityMask"
api_SetThreadContext% (hThread%, lpContext*) : "SetThreadContext"
api_SetThreadLocale% (Locale%) : "SetThreadLocale"
api_SetThreadPriority% (hThread%, nPriority%) : "SetThreadPriority"
api_SetTimeZoneInformation% (lpTimeZoneInformation*) : "SetTimeZoneInformation"
api_SetUnhandledExceptionFilter% (lpTopLevelExceptionFilter%) : "SetUnhandledExceptionFilter"
api_SetupComm% (hFile%, dwInQueue%, dwOutQueue%) : "SetupComm"
api_SetVolumeLabel% (lpRootPathName$, lpVolumeName$) : "SetVolumeLabelA"
api_SizeofResource% (hInstance%, hResInfo%) : "SizeofResource"
api_Sleep (dwMilliseconds%) : "Sleep"
api_SleepEx% (dwMilliseconds%, bAlertable%) : "SleepEx"
api_SuspendThread% (hThread%) : "SuspendThread"
api_SystemTimeToFileTime% (lpSystemTime*, lpFileTime*) : "SystemTimeToFileTime"
api_SystemTimeToTzSpecificLocalTime% (lpTimeZoneInformation*, lpUniversalTime*, lpLocalTime*) : "SystemTimeToTzSpecificLocalTime"
api_TerminateProcess% (hProcess%, uExitCode%) : "TerminateProcess"
api_TerminateThread% (hThread%, dwExitCode%) : "TerminateThread"
api_TlsAlloc% () : "TlsAlloc"
api_TlsFree% (dwTlsIndex%) : "TlsFree"
api_TlsGetValue% (dwTlsIndex%) : "TlsGetValue"
api_TlsSetValue% (dwTlsIndex%, lpTlsValue*) : "TlsSetValue"
api_TransactNamedPipe% (hNamedPipe%, lpInBuffer*, nInBufferSize%, lpOutBuffer*, nOutBufferSize%, lpBytesRead%, lpOverlapped*) : "TransactNamedPipe"
api_TransmitCommChar% (nCid%, cChar%) : "TransmitCommChar"
api_UnhandledExceptionFilter% (ExceptionInfo*) : "UnhandledExceptionFilter"
api_UnlockFile% (hFile%, dwFileOffsetLow%, dwFileOffsetHigh%, nNumberOfBytesToUnlockLow%, nNumberOfBytesToUnlockHigh%) : "UnlockFile"
api_UnlockFileEx% (hFile%, dwReserved%, nNumberOfBytesToUnlockLow%, nNumberOfBytesToUnlockHigh%, lpOverlapped*) : "UnlockFileEx"
api_UnmapViewOfFile% (lpBaseAddress*) : "UnmapViewOfFile"
api_UpdateResource% (hUpdate%, lpType$, lpName$, wLanguage%, lpData*, cbData%) : "UpdateResourceA"
api_VerLanguageName% (wLang%, szLang$, nSize%) : "VerLanguageNameA"
api_VirtualAlloc% (lpAddress*, dwSize%, flAllocationType%, flProtect%) : "VirtualAlloc"
api_VirtualFree% (lpAddress*, dwSize%, dwFreeType%) : "VirtualFree"
api_VirtualLock% (lpAddress*, dwSize%) : "VirtualLock"
api_VirtualProtect% (lpAddress*, dwSize%, flNewProtect%, lpflOldProtect%) : "VirtualProtect"
api_VirtualProtectEx% (hProcess%, lpAddress*, dwSize%, flNewProtect%, lpflOldProtect%) : "VirtualProtectEx"
api_VirtualQuery% (lpAddress*, lpBuffer*, dwLength%) : "VirtualQuery"
api_VirtualQueryE

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal