Main Menu

PlayBASIC Retail Upgrade Announcements

Started by kevin, January 28, 2007, 06:09:30 AM

Previous topic - Next topic

kevin

#30




PlayBasic V1.64i _Retail Upgrade_ is Now Available (5th, Mar, 2009)

  This release updates the existing PB1.63w2 retail release to the current retail release version of PlayBasic V1.64i.   Therefore you'll need to install patch PB1.63w2 (at least) prior to this one ! (if you haven't already)

  The PB1.64i package includes updates of PB Compiler, Release / Debug Runtimes, SLIBS,  DOCS & IDE V1.17.    The main new additions in this editions would the introduction of PlayBasic's new  Compressed Raster Font engine (CRF for short), which includes not only faster rendering, but Alpha Channel and Tint support, but Compressed Raster font's can be drawn to any PB surface.   Speaking of  Alpha Channel support, you can now use AFX images with Maps also.  Beyond that,  speed wise 1.64I has a number of MMX machine code optimizations in the rendering engine and almost completely new revision of the scene buffer capturing code.  

  Note: Compressed Raster Fonts can't currently be created within a PB program (at least not easily), so in order to convert a Windows TrueType or a custom bitmap font, you'll have to do this manually.  At least for the time being.   See->  How to Create Compressed Raster Fonts (login required) for how


  For more information about PlayBasic, please visit the Play Basic home page and download the FREE learning edition and dive in.

  Url: www.PlayBasic.com




Gallery



Download Upgrade


  Download PB1.64i Retail Upgrade (login required) (requires log in)




kevin





PlayBasic V1.64j _Retail Upgrade_ is Now Available (1st,June, 2009)

  This release updates the existing PB1.63w2 - PB V1.64i retail release to the current retail release version of PlayBasic V1.64i. If your version is older, you'll need to install patch PB1.63w2 (at least) prior to this one ! (if you haven't already)

  The PB1.64j package includes updates of PB Compiler, Release / Debug Runtimes, SLIBS,  DOCS & IDE V1.17.    The main new additions in this editions are lots of new optimizations.  Faster filtering, polygons , binding etc etc


  For more information about PlayBasic, please visit the Play Basic home page and download the FREE learning edition and dive in.

  Url: www.PlayBasic.com




Gallery



Download Upgrade


  Download PB1.64j Retail Upgrade (login required) (requires log in)




kevin

#32




PlayBasic V1.64j2 _Retail Upgrade_ is Now Available (14th, Sep, 2009)

  This release updates  PlayBasic V1.63w2 to V1.64j retail editions to the current retail release version of PlayBasic V1.64j2.   If your version is older than PB V1.63W, then you'll need to install patch PB1.63w2 (at least) prior to this one ! (if you haven't already)

   The PB1.64j2 package includes updates of PB Compiler, Release / Debug Runtimes, SLIBS, DOCS & IDE V1.17. The main changes are various SLIB updates and a very healthy 180K reduction in the runtime sizes.


  For more information about PlayBasic, please visit the Play Basic home page and download the FREE learning edition and dive in.

  Url: www.PlayBasic.com




Gallery



Download Upgrade


  Download PB1.64j2 Retail Upgrade (login required) (requires log in)




kevin

#33




PlayBASIC V1.64k _Retail Upgrade_ is Now Available (15th, Dec, 2009)


  This release updates the PlayBasic  V1.63w2 to PB V1.64i retail upgrades to the current retail release version of PlayBasic V1.64k.   If your version is older than PB1.63W, then you'll need to install patch PB1.63w2 prior to this one ! (if you haven't already)


  The PB1.64k package includes updates of PB Compiler, Release / Debug Runtimes, SLIBS,  DOCS & IDE V1.17.  

  This upgrade focuses upon adding a number of new flexibilities to the core language, ranging from expansions to User Defined Types, Seven new Math operators, Optional Parameters Support in not only built in functions but users defined functions, Dynamic Function Calling (Call a function by name at runtime), Limited Array operators, Dynamic Array Creation (return arrays from functions) as well as Passing/Returning Individual Types from Functions/Psubs. All in All, there's a lot of new toys for you play with !


  To learn more about the titty gritty of these changes check out the  V1.64 WIP thread, which includes some examples and some theory stuff about this upgrade.


  For more information about PlayBasic, please visit www.PlayBasic.com, download the free learning edition and dive in.

 

Download Upgrade


  Download PB1.64k Retail Upgrade (login required)  (requires log in)




kevin

#34




PlayBASIC V1.64k Rev#2 _Retail Upgrade_ is Now Available (2nd, Jan, 2010)


  This release updates the PlayBasic  V1.63w2 to PB V1.64k retail upgrades to the current retail release version of PlayBasic V1.64k Revision #2.   However, If your version is older than PB1.63W, then you'll need to install patch PB1.63w2 prior to this one ! (if you haven't already)

   This upgrade is mainly to correct some issues detected in previous release of V1.64k after release. These issues mostly concern internal and user defined function parameters.  Correcting issues with optional parameters and with long hand declarations.

   The only new functionality (that comes to mind) would be VSYNC support in windowed modes.    It's important to understand that you can't control the ends users displays refresh rate.   So therefore you shouldn't assume that everybody playing your game has their windows desktop refresh set to the same as yours.  So if your system has a refresh rate of 60 say, and your friends system has a refresh of 75.   Then your game will run faster on your friends system than yours.   Mind you, the same applies in full screen exclusives modes also !   So Vsync should be used to smooth out display refresh, not as a speed limiter!



  For more information about PlayBasic, please visit www.PlayBasic.com, download the free learning edition and dive in.


 

Download Upgrade


  Download PB1.64k Revision #2 Retail Upgrade (login required)  (requires log in)




kevin

#35




PlayBASIC V1.64L _Retail Upgrade_ is Now Available (27th, Apr, 2010)



  This release updates any of the PlayBasic  V1.63w2 to PB V1.64k2 retail versions up to the current retail release version of PlayBasic V1.64L .   If your version is older than PB1.63W, then you'll need to install patch PB1.63w2 prior to this one ! (if you haven't already)


   The PlayBASIC V1.64L  package includes updates of PB Compiler, Release / Debug Runtimes, SLIBS,  DOCS & IDE V1.17b.  

   This upgrade features a number of minor and major changes to most of the core parts of the package.  For the compiler/runtimes there's the regular minor bug fixes, but really major  changes can be found in the documentation.  Namely with the addition of sub-category support, plus a number of the default libraries have been added to the main documentation.    Many of these libraries have also had some light touch up's also in process.  The main one would be the FrameSheetAnims library, which is now a default library.    

   What's not in this package ? - Well, Threading Support isn't available in this version of the package..  

  For more information about PlayBasic, please visit www.PlayBasic.com, download the free learning edition and dive in.


 

Download Upgrade


  Download PB1.64L Retail Upgrade (login required) (requires log in)




kevin

#36




PlayBASIC V1.64M _Retail Upgrade_ is Now Available (1st, Dec, 2010)



  This release updates any of the PlayBASIC  V1.63w2 to PB V1.64L retail versions up to the current retail release version of PlayBASIC V1.64M .   If your version is older than PB1.63W, then you may need to install patch PB1.63w2 prior to this one ! Depends on how old.

   The PlayBASIC V1.64M  package includes updates of PB Compiler, Release / Debug Runtimes, SLIBS,  DOCS & IDE V1.17b.  

   This upgrade is perhaps one of the largest we've ever attempted, spanning some seven months of development time, and addressing virtually everything in the core command sets from  DEBUGGER,  FONTS,  SHAPES, SPRITES through to MAPS.    There's way too much to pick through now, so I highly recommend looking through the V1.64M WIP gallery for some insight in what new additions are hidden away in this release.  


   What's not in this package ? - Well, Threading Support isn't available in this version of the package..  

   For more information about PlayBASIC, please visit www.PlayBasic.com, download the free learning edition and dive in.

 

WIP Gallery







Visit the PlayBasic V1.64m Work In Progress Gallery for bigger pictures / movies, code examples .

 




Download Upgrade


  Download PB1.64M Retail Upgrade   (login required) (requires log in)



kevin

#37




PlayBASIC V1.64N _Retail Upgrade_ is Now Available (19th, Nov, 2011)



  This release updates any of the PlayBASIC   V1.63w2 to PB V1.64L retail versions up to the current retail release version of PlayBASIC V1.64N .   If your current version is older than PB1.63W (pre June/July 1997), then you may need to install patch PB1.63w2 prior to this one ! (if you haven't already)


   The PlayBASIC V1.64N  package includes updates of PB Compiler, Release / Debug Runtimes, SLIBS,  DOCS & IDE V1.17b.  

   This upgrade round off some of the open ends from the V1.64M upgrade in terms of bug fixes.  It's not just about bugs though, zx it includes a wealth of new optimizations ranging from line draw modes, shapes clipping, image progressing and more.     There's lots to pick through now, so we highly recommend looking through the V1.64N WIP gallery for some more insight in what new additions are hidden away in this release.  


   Don't have a retail version of PlayBasic ? and want to find out more information about PlayBASIC programming > please visit the www.PlayBasic.com and download the free learning edition.




Download


  Download PB1.64N Retail Upgrade (login required)  




kevin

#38




PlayBASIC V1.64N2 _Retail Upgrade_ is Now Available (25th, July, 2012)



  This release updates any of the PlayBASIC  V1.63w2 to PB V1.64N retail versions up to the current retail release version of PlayBASIC V1.64N2.   If your current version is older than PB1.63W (pre June/July 1997), then you may need to install patch PB1.63w2 prior to this one ! (if you haven't already)


   The PlayBASIC V1.64N2  package includes updates of PlayBASIC Compiler, Release / Debug Runtimes, SLIBS,  DOCS & IDE V1.17b.  

   The V1.64N2 upgrade was originally planned as a quick upgrade to just address a few bugs with a small documentation pass.   But that quickie soon turned into one of the more important additions in years, with the introduction to the Type + Array Cache optimizers to the compiler.   Beyond that, the upgrade features a number of low level speed improvements to every day operations ranging from the loops (For/next , For Each + Repeat/While loops) , General Comparisons through to complete opcode rearrangement of the Image/Sprite command sets.   The goal of which being to shave as many wasted cycles from all of the every day operations as possible.    It's this attention to detail that see's V1.64N2 being able to execute our standard performance benchmarks up to 1/2 a second quicker than V1.64N.  Pretty impressive, given that I personally had thought V1.64N wouldn't be beaten, but things change.  

   In terms of the compiler, the TYPE CACHING features the are the real show pony of this upgrade.  What caching does, is  the compiler tracks Type and Array usage throughout a program.  In older version of PlayBASIC, pretty much every time a typed variable/array or linked list was accessed, the compiler would drop the required (long hand) operations to resolve that operation.   Even if the following operation was similar.  This is where caching steps in, now the compiler can detects such situations and is able to use some short cut instructions when reading /writing type structures.   Given that type usage is generally serialized in code blocks, this can double, even triplet the through put of some routines.  

   Now for the most surprising thing, Type Caching isn't enabled by default.  Why ?  - Well in classic version of PlayBASIC, the user is allowed to read types that doesn't actually exist, without the program falling over.   Unfortunately this behavior can play havoc with caching in some programs, so the type cache mode is turned off the default.   You can enable it by using the OptExpressions 3 command, it's perfectly safe  provided your program  only ever read/writes into types that exist.   The optexpressions command allows the programmer to toggle the user controllable optimization modes on or off through out a program.  
 

   Here's an example of some code that can be potentially unsafe with caching enabled, that you might find in many older PlayBASIC programs.  

PlayBASIC Code: [Select]
   Type Person
Status
X#,y#
EndType

DIm people(10) as Person

; create the person at index #1 in the array
People(1) = new Person

; set it's fields
People(1).Status = True
People(1).x = 100
People(1).y = 200



; Run through all of the people in the array
For lp =1 to 10

; Read this type and grab the STATUS field
; if the status field is set, run code inside
if People(lp).Status
; DRaw This Person as a circle
Circle People(lp).x,People(lp).y,50
endif
next


; SHow the Screen and wait for a key press
Sync
waitkey





  What makes this unsafe is that the inner IF statement is attempting to read the STATUS field from every person in the array.   When it's reading person at index #1 in the array, the expression is true and person is drawn as circle on screen.   But on the next iteration of the loop, the IF statement is attempting to read a field from that cell in the array that doesn't exist. In other languages you might expect this give you a runtime error, but  PB would original just return a zero from those reads. V1.64N2 keeps this behavior in order to run older PlayBASIC programs, but thing works differently when caching is fully enabled.  


    In this version, the IF statement isn't trying to read a FIELD from the various types in the people array, rather it's reading the array cell contents directly.  Empty cells in the Typed array will be ZERO, anything else and a type exists at this position.    So we can happily pre-screen for the existent of a type in array like the following.  

PlayBASIC Code: [Select]
   Type Person
Status
X#,y#
EndType

DIm people(10) as Person

; create the person at index #1 in the array
People(1) = new Person

; set it's fields
People(1).Status = True
People(1).x = 100
People(1).y = 200



; Run through all of the people in the array
For lp =1 to 10

; Read this type and se if there's anything
; at this position with the array. If it returns
; zero, there's no type there, anything else and
; this type exists.
if People(lp)
; DRaw This Person as a circle
Circle People(lp).x,People(lp).y,50
endif
next


; Show the Screen and wait for a key press
Sync
waitkey




   This version is perfectly type caching firendly.


   Documentation

   This upgrade also features another fairly heavy pass over the documentation, which various tutorial additions and media & content additions.   Tutorial wise there's a huge new tutorial all about sprites.  Starting with Images and moving on through to the sprite commands, which turned out to be the way bigger than i'd ever expected.  From memory it's the  biggest tutorial ever.    

   
    We highly recommend looking through the V1.64N2 WORK IN PROGRESS GALLERY for some more insight in what new additions are hidden away in this release.  


   Don't have a retail version of PlayBASIC ? and want to find out more information about PlayBASIC programming > please visit the www.PlayBasic.com and download the free learning edition.



Download

  Download PB1.64N2 Retail Upgrade (login required)


kevin

#39




PlayBASIC V1.64N3 / V1.64N3b / V1.64N3c & V1.64N3d _Retail Upgrades_ Now Available (11th, Dec, 2012)



   The PlayBASIC V1.64N3  packages include updates of PlayBASIC Compiler, Release / Debug Runtimes, SLIBS,  DOCS & IDE V1.17b.  

   The V1.64N3 upgrade was slated as a bug fix, hence the version number, as after releasing V1.64N2 a few fairly major issues were discovered in the mapping command sets.    While those issues have been addressed,  we've taken this opportunity to apply another round of  bug the optimizations to the package.   There's  even some completely new functionality in way of multi core support with the addition of the threading support being added to the Blit Image library functions.


   Bug Fixes

   Bug wise, the main changes would be the improved block classification routines in when importing blocks in the maps, as well as localizing the sprite to map collisions and tweaking the ray to map intersection commands, which would only work on the first level.    But  really the biggest issue that's been addressed, would be the legacy issues with recursive function calls.  Where it seems older versions from the PB run time had some logic issues with how the stack was being managed in certain situations.    After much research, it was decided that the best way to remedy the situation, would be to replace the how the run time uses the stack.  While more work that i'd like  for a quick upgrade, the results speak for themselves, by not only fixing the issues, but it uses less memory and is quicker at runtime.  


   New Feature: Multi Core  / Threading
   
   The addition is multi core support or threading support is big one.  This features allows the programmer to push  big blit image rendering tasks off your current cpu core onto a second cpu core on your system.  The idea being, that you can get your program doing two things at once. The threading commands in this version I consider to be prototypes.   Meaning the function names and parameter many well change in future releases.  But rather than hold this feature back, you can use it today !

   Threading is disabled by default,  so your programs will run entirely on the same cpu-core that started upon.  The current implementation of the threading only allows a single 'function' to the pushed onto the second core at once.  So it's doesn't support queuing up render tasks.. Yes, that's exactly what i've in mind, hence why the commands may change..  The only commands that support threading are the BiltIMage functions.   The reason being they're generally big job functions,  where if we can interleave our code, we'll get the best performance improvement.   In other words, if you can work out a way to set up an effect where you can use a blitimage function to perform some action in the background, then that's an ideal situation.    




 Current Multi Core/ Threading Commands (WIP)

      BlitFXThreadMode State         (1= Threading on,  0 = Threading Off immediate mode rendering)

      GetBlitFXThreadMode()       ; Get the current thread mode


      BlitFXThreadPriority  ThreadPriority    ;  Set the priority of this threading request.  Range between 1 to 15.   1 being lowest, 15 being highest (critical)

   ThreadPriority=GetBlitFXThreadPriority()   ; Get the current thread OS level thread priority that threaded rendering is using.  


   WaitOnBlitFX()           ; This thread waits until our drawing process is complete.  



 How Not To Use Threading

     Threading is only of any value, if you design your program to perform the required tasks in parallel with the main program.   Linear thinking and threading don't mix.

     For example , If I enable threading and call a blitimage function say BlitImageClear,  then this task is going to be offloaded from the primary program onto a second CPU core.


PlayBASIC Code: [Select]
      ; start the blitting the from buffer to the PB screen
rendertoscreen


; When thread mode is enabled, this BlitFX function will be pushed onto a
; second thread.

BlitIMageClear Screens(FrontBuffer),0,0,$304050

; wait until the other thread completes it;s task..
WaitOnBlitFX()






    OK.. so here we see a program that's gaining absolutely nothing from threading at all, why ?  The reason for this, is the main program is being forced to sit and wait until the secondary rendering thread (on some other cpu core) completes it's task.     What we should be doing, is getting the main program to perform some other none related task while the rendering takes place in the background.  And only wait for the blit function to complete, when we actually need to use the result of that rendering.    

    In the main example bellow, we're starting the second thread doing the BlitImageClear, then rather than waiting for it complete, we're rendering our batch of circles to a secondary FX screen.    In a dual/quad core system the two tasks are being performed in unison.   Generally the blitimage function will finish long before main program is done drawing  the batch of circles, so we're not really gain much, other than offloading one screen copy onto the second core.




 Swarming Parallel Rendering

       When threading was last on the radar, the approach was entirely based around using a swarm of threads spread across the host system to perform common tasks in unison. This allows the program to use as may threads as the programmer wants (within reason), meaning a computer problem can be broken up into small jobs and distributed across many CPU's at once.   Today we don't have this, the new implementation is queue based.  Where we push a job from our main program onto a secondary thread.    All these jobs run on a separate core to main program (if you have multi core system), but only on the one core.   There's advantages and disadvantages to both.

        Anyway you can share rendering of  blitImage functions between two cores, by first setting the Viewport of the destination surface, then call the render function.   This will push the job off to core #2,  core #1 will continue on.  Where we'd set the viewport to the other half of the screen and then call the same blit image function we wanted again.     So we're doing is splitting the job between the two cores.    So core 2 is drawing the top half of the screen and core 1 the bottom.      

     
PlayBASIC Code: [Select]
   #include "blitimage"


Screen=NewImage(800,600,2)


Do

rendertoimage Screen
inkmode 1+64
circlec mousex(),mousey(),50,true, $304050

inkmode 1


rendertoscreen

; this first request is pushed onto core #2
ScreenViewport 0,0,800,300
; turn blitimage threading on
BlitFXThreadMode ON

; Calling this function pushes the task off onto core #2
BlitImageAlphaPostMultColour(Screen,0,0,$e0a0b0)

; while Core#2 performs the blitimage function on the top half


; turn blitimage threading on
BlitFXThreadMode OFF

; we now change the viewport to the lower half.. So core #1
;will render this now
; this first request is pushed onto core #2
ScreenViewport 0,300,800,600
BlitImageAlphaPostMultColour(Screen,0,0,$e0a0b0)

; restore the viewport
ScreenViewport 0,0,800,600

; better wait for the core #2, it may not have complete it's job
WaitOnBlitFX()

Sync
loop





   The PlayBASIC V1.64N3b  package includes updates of PlayBASIC Compiler only.    To install, you download it, unzip and copy the included files over the V1.64N3 files.

   This update includes a fix for some issues with some built in constants (like PBCompileMode) not responding to the compiler settings.    Beyond that, it also includes a number of mostly small tweaks to the variable/constants and literal searching  routines.   These tweaks improve the compile times by around 30% in programs that make heavy usage of lots of unique variables / constants or literals.     Routinely getting a compile performance of 10,000 lines a second on 7 year old single core AMD system.



   The PlayBASIC V1.64N3c + V1.64N3d  packages includes updates of PlayBASIC Compiler only.    To install, you download it, unzip and copy the included files over the V1.64N3 files.

   These includes a number of minor tweaks to the compilers keyword scanning (for even faster compiling) code generation ( optimizer), allowing them screen out many more redundant move operations from reading types and various redundant math operations between variables.  


   
   As always we highly recommend reading through the V1.64N2->V1.64N3 WORK IN PROGRESS GALLERY for some more insight in what new additions are hidden away in this release.  


   Don't have a retail version of PlayBASIC ? and want to find out more information about PlayBASIC programming > please visit the www.PlayBasic.com and download the free learning edition.



Download

  Download PlayBASIC 1.64N3 / V1.64N3b / V1.64N3c & V1.64N3d Retail Upgrades (login required)  


kevin

#40




PlayBASIC V1.64O _Retail Upgrade_ Now Available (9th, Aug, 2013)



   The PlayBASIC V1.64O  package includes updates of PlayBASIC Compiler, Release / Debug Runtimes, SLIBS,  DOCS & IDE V1.17b.  

   The V1.64O upgrade was originally slated as quick bug fix, which then turned into a much longer project seeing a couple of major improvements and feature inclusions added.    The most notable features with the Resource Binding/Loading Media From Memory,  Palette Mapping support and queued blitimage threading modes.  


   -> Resource binding  -  These features let programmers to attach media into the programs final EXE.  The difference is that you can load this media directly from memory without extracting it to disc.    Not all media types are currently supported, but you load BMP, TGA, PNG images as well as DLL files directly from memory (unique to PlayBASIC).    

   -> Palette Mapping  -  These commands allow programmers to draw Palette Mapped styled effects ranging from colour cycling, flashing, raster bars, glenz vectors and many more with minimal effort..

   -> Threading / Multicore Support   -  The Blitimage command set now includes a queue based render system.   The program can tell the library what effects to draw and then push this sequence off the main program onto a second CPU core.  


    There's really way too many changes to try and summarize it all down,  As always we highly recommend reading through the V1.64O WORK IN PROGRESS GALLERY for more insight in what new additions are hidden away in this release.  


   Don't have a retail version of PlayBASIC ? and want to find out more information about PlayBASIC programming > please visit the www.PlayBasic.com and download the free learning edition.





Download


   Download PB1.64O Retail Upgrade (login required) (9th,Aug,2013)
 

kevin

#41




PlayBASIC V1.64O2 _Runtime Upgrade_ Now Available (26th, Feb, 2014)



   The PlayBASIC V1.64O2  package includes updates of PlayBASIC runtimes ( Release / Debug ) only.


   The V1.64O2  package includes updates the runtimes as the V1.64O (and I suspect older runtimes) could run into alignment issues when loading some compiled programs byte code.   So if you have issues with your program loading, then try these.


   Don't have a retail version of PlayBASIC ? and want to find out more information about PlayBASIC programming > please visit the www.PlayBasic.com and download the free learning edition.




Download


   Download PB1.64O2 Runtime Upgrades (login required) (26th,Feb,2014)
 

kevin

#42




PlayBASIC V1.64P _Retail Upgrade_ Now Available (22nd, Sep, 2014)



  This release updates any version from  PlayBASIC V1.63w2 to PlayBASIC V1.64O2 (retail) to the current retail version of PlayBASIC V1.64P.   If your current version is older than PB1.63W (pre June/July 1997), then you may need to install patch PB1.63w2 prior to this one ! (if you haven't already)


   The V1.64P presents a huge change to the underlying technology that PlayBASIC programs execute upon.  These changes range from high level compiler optimizations/bug fixes/omissions down to how almost every internal commands is called, which not only give us faster program execution, but it allows internal PlayBASIC command sets to be called from the external DLL's built via PlayBASIC2DLL tool.

    Programmers using PlayBASIC2DLL in combination with PlayBASIC V1.64P can now write truly modular applications in high level PlayBASIC without ever having to learn low level C/C++ or PASCAL programming.   You can write your functions and compile it a DLL using PlayBASIC2DLL.   Meaning PlayBASIC programmers can build their own command sets /extensions and perform all brute work number in highly optimized machine code DLL's.       


    There's way too many changes to try and summarize it all,  so we highly recommend carefully reading through the V1.64P WORK IN PROGRESS GALLERY for more insight in what new additions are hidden away in this release.  


   Don't have a retail version of PlayBASIC ? and want to find out more information about PlayBASIC programming > please visit the www.PlayBasic.com and download the free learning edition.





Downloads


  Download PB1.64P Retail Upgrade (login required)  (22nd,Sep,2014)




Installation


    To install any upgrade. First download the package to your computer, then run the upgrade installer.  In order to upgrade your existing Retail version successfully, make sure you direct the installer to the same folder as the current installation.  Give it the same path as your installed PlayBASIC, which would normally be 'C:\Program Files\PlayBasic' (the upgrade installer should pick where you previously installed it as the install location anyway).   The upgrade will modify your retail install accordingly.

See Upgrading FAQ


kevin

#43




PlayBASIC V1.64P2 _Retail Upgrade_ Now Available (29th, Dec, 2014)


  This release updates any version from  PlayBASIC   V1.63w2 to PlayBASIC V1.64P (retail) to the current retail version of PlayBASIC V1.64P.   If your current version is older than PB1.63W (pre June/July 1997), then you may need to install patch PB1.63w2 prior to this one ! (if you haven't already)


   The PlayBASIC V1.64P2  package includes updates of PlayBASIC Compiler, Release / Debug Runtimes, SLIBS,  DOCS (HELP FILES) & IDE V1.17b.  

   The V1.64P2 release is a relatively minor update to address functionality broken during the massive V1.64P update.   Beyond those bug fixes, there are of course more improvements to the compiler &  runtime command sets and debugger.

  The compiler / runtime time changes are generally improvements to the quality of the byte code the compiler produces within certain circumstances.   One that comes to mind, was the ability to completely optimizing out literal fields when querying array structures from typed pointers.    So code like the snippet bellow runs better in V1.64P2 than previous versions.   Which in turn helps PlayBASIC2DLL produce even faster machine code versions of such routines.  So that's a big win !

PlayBASIC Code: [Select]
  Type SomeStructure
IntegerArray(16)
EndTYpe

dim Me as SomeStructure pointer

Me = new SomeStructure

// such field offsets are solved at compile time
Me.Array(0) = 1
Me.Array(2) = 1
Me.Array(3) = 1
Me.Array(4) = 1

Print Me.Array(0)
Print Me.Array(1)
Print Me.Array(2)
Print Me.Array(3)




   Such compile time optimizations are useful when we want to iterate through structures of data,  so rather than bumping the ME pointer between integer fields, we could unroll the inner loop to process groups of integers and access fields at fixed offsets then  bump the ME pointer.  Which is a more efficient approach generally.    


   Changes to commands sets that users will find the most useful, can be found in variable Alpha Blending situations,  generally filling surface routines are now twice as fast when performing variable alpha blending in this version,  there's also changes to the AFX alpha blending logic which screens the alpha channel value for pixels that are fully translucent or opaque, in either case those are handled with a special case.   The performance benefit really comes down to how many pixels in the image need to be alpha blended.  But the standard tests had a 10->20% improvement without change..


   In terms of Debugging, there's two new subtle changes in the compiler runtime.  The first, is the new ability of the runtime to intervene when some pointer opcode attempts peek/poke from a null pointer.    Which should generally return a runtime error if that occurs like in the example bellow.

PlayBASIC Code: [Select]
  ; declare a ME as type Integer POinter
DIM Me as Integer Pointer

; the runtime will stop before this line is execute as ME is
; will be pointing at ZERO.. Which is memory your program doesn't
; own and would kill your program
print *ME


sync
waitkey





  The other runtime/debugger change is a mode in the debugger to Enable/Disable automatic type creation when executing a program.    The PB runtimes default behavior is to automatically allocate a type if you're writing to a structure that's currently empty.    Generally this is handy behavior as it saves you some lines of code, but can be an issue when exporting your programs to DLL since PlayBASIC2DLL doesn't support this behavior.  So if you writing library code that you're going to build a DLL of, you'll find this invaluable !


   Don't have a retail version of PlayBASIC ? and want to find out more information about PlayBASIC programming > please visit the www.PlayBasic.com and download the free learning edition.





Downloads


  Download PB1.64P2 Retail Upgrade (login required)  (29th,Dec,2014)


kevin

#44




PlayBASIC V1.64P3 _Retail Upgrade_ Now Available (20th, Nov, 2015)



  This release updates any version from  PlayBASIC  V1.63w2 to PlayBASIC V1.64P2 (retail) to the current retail version of PlayBASIC V1.64P3.   If your current version is older than PB1.63W (pre June/July 1997), then you may need to install patch PB1.63w2 prior to this one ! (if you haven't already)


   The PlayBASIC V1.64P3  package includes updates of PlayBASIC Compiler, Release / Debug Runtimes, SLIBS,  DOCS & IDE V1.17b.  

   The V1.64P3 release includes fixes for known functionality breakages during the massive V1.64P/V1.64P3 update.   But like all updates that's not the only thing it includes, with a lot of work being done under the hood with the compiler / runtimes in the way of more dynamic to static byte code navigation.   Which includes translations of thing like the DLL command block as well as pointer instruction sets and a number of others.  For more information about those read the blog thread.



   Don't have a retail version of PlayBASIC ? and want to find out more information about PlayBASIC programming > please visit the www.PlayBasic.com and download the free learning edition.





Downloads


  Download PB1.64P3 Retail Upgrade (login required)  (20th,Nov,2015)