sync on : sync rate 0
   disable escapekey

` If it is needed, reinitialize the plugin.
   if screen width() <> 640 or screen height() <> 480 then set display mode 640,480,32 : dxs initialize


` Create a sprite that will display a background.
   backgroundSprite = dxs create sprite("AdvancedSPRITES.png")

` Cut it into 3072 tiles of 10x10 pixels : 64x48 tileset size.
` The test will be done on this number of sprites displayed.
   dxs set sprite tileset backgroundSprite,64,48

` Create the same sprite than above using default DBPro commands.
   create animated sprite 1,"AdvancedSPRITES.png",64,48,1

` First, the render is done with DBPro.
   render$ = "DBPro Sprites"


` Repeat until the user press the escape key.
   repeat

   ` Clear the screen, needed.
      cls

   ` A click change the render mode.
      if mouseclick() > 0
         if render$ = "DBPro Sprites" and key = 0 then render$ = "AdvancedSPRITES" : key = 1
         if render$ = "AdvancedSPRITES" and key = 0 then render$ = "DBPro Sprites" : key = 1
         inc key
      else
         key = 0
      endif


      if render$ = "AdvancedSPRITES"

      ` Render with AdvancedSPRITES.
         dxs begin sprite render backgroundSprite
            for ty = 0 to 48
               for tx = 0 to 64
                  dxs draw sprite tile backgroundSprite,1 + ty * 64 + tx,tx * 10,ty * 10
               next tx
            next ty
         dxs end sprite render backgroundSprite

      else

      ` Render with DBPro default sprites.
      ` This method (create animated sprite + set sprite frame + paste sprite) is the fastest
      ` way I know to draw a tileset with DBPro.
         for ty = 0 to 48
            for tx = 0 to 64
               set sprite frame 1,1 + ty * 64 + tx
               paste sprite 1,tx * 10,ty * 10
            next tx
         next ty

      endif

   ` Indicates render mode and framerate.
      text 10,10,"Currently rendering 3072 sprites using " + render$ + ", click to switch."
      text 10,30,"FPS : " + str$(screen fps())

      sync

   until escapekey() = 1


` Delete resources when the test ended.
   dxs delete sprite backgroundSprite
   delete image 1 : delete sprite 1

   end