Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

Work in Progress / Road to PlayBasicFX

Author
Message
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 5th Mar 2008 13:51
MultiSync 1.3.2 - MultiPlayer library For PlayBasic

Multisync is a multiplayer plugin originally designed for use with DBpro/C++, utilizing the TCP protocol and the client/server networking model. Multisync is developed by Benjamin Wharton.

This package includes a wrapper (and PB versions of the demos) for using MultiSync with PlayBasic.



Download
Download MultiSync For PlayBasic (UW.com Forum members only)

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 12th Mar 2008 14:53 Edited at: 26th Jul 2010 15:38
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 14th Mar 2008 19:11 Edited at: 26th Jul 2010 15:39
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 16th Mar 2008 20:34 Edited at: 26th Jul 2010 15:40
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 17th Mar 2008 22:20 Edited at: 26th Jul 2010 15:41
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 19th Mar 2008 19:03 Edited at: 26th Jul 2010 15:41
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 22nd Mar 2008 13:50 Edited at: 26th Jul 2010 15:42
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 27th Mar 2008 13:12 Edited at: 26th Jul 2010 15:43
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 2nd Apr 2008 17:04 Edited at: 26th Jul 2010 15:44
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 9th Apr 2008 10:47 Edited at: 26th Jul 2010 15:45
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 15th Apr 2008 07:16 Edited at: 26th Jul 2010 15:49
PlayBasic Learning Edition

Been testing this the past day or so, it seems to be working so I'm uploading a version while I type this. The new package includes customized versions of the IDE, help, example packs and of course the cut down compiler/runtime. I was worried that the package might blow out in size with the inclusion of the Thesius XIII demo, but it's actually come in smaller than last years time limited demo. Not by much, only a few hundred K, but that's more than enough to save me a few pennies in bandwidth.

The LE edition isn't live on our home page as yet. So far it's only been tested on my machines, so before we go live we need to check if the installation works across the board. But, with any luck that's only a day or so away.


Download Learning Edition PlayBasic.com

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 20th Apr 2008 10:55 Edited at: 26th Jul 2010 15:50
PlayBasic V1.63v6 Learning Edition Released

The learning edition is now available from our site. What's the learning Edition ? - Well it's simply a cut down FREE version of the PlayBasic for new users to tinker with. While the Learning edition is build from the older 1.63 engine (direct draw engine), the package includes all the latest examples/doc's/IDE updates to get you started. There's no time limits, so jump in and start tinkering.


Download
www.playbasic.com

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 26th Apr 2008 08:00 Edited at: 26th Jul 2010 15:53
TDk's Beginners Guide To Game Programming

The Beginners Guide To Game Programming are set of introductory tutorials written to help guide new users into the weird and wonderful world, of game development. They cover everything from basic variables and arrays through to simple game mechanics. We highly recommend all users (new and veteran programmers alike) read them.


Tutorials Forum


http://www.playbasic.com/

Read 'Programming For Beginners' Tutorials

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 30th Apr 2008 10:43 Edited at: 27th Jul 2011 18:48
PLAYBASIC USER POLL - Is Multi Platform Important To You ?

Given our current position, we'd like to hear what the PlayBasic user base thinks about the validity of Multi Platform support.

What's a platform ? - We'll classify this as the ability to run PB natively upon none Windows operating systems. Ie. Mac / Linux & of course Mobile devices.

Please give some thought as to whether it's a feature you'd actually use or just another 'want'..

Join the (http://www.UnderwareDesign.com/forums/)

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 22nd May 2008 00:06 Edited at: 22nd May 2008 00:07


2008 PlayBasic Game Making Competition


Yes, be very afraid, it's time to crown a new programming idol for 2008. So forget school, exams, work or your other half for a few months and let's get down to what's really important - who is the best game programmer ?

2008 Competition Forum Opening June 1st

Watch This Space


Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 26th May 2008 21:55 Edited at: 26th Jul 2010 15:54
PlayBasic V1.63w Retail Patch Released

This release patches the existing PB1.63m retail release to the current retail release version of PBV1.63w. Therefore you'll need to install patch PB1.63m (at least) prior to this one ! (if you haven't already)

The PB1.63w package includes updates of PB Compiler, Release / Debug Runtimes / IDE V1.17 and latest SLIBS and HELP files. The main difference to the previous PB1.63v6 runtimes is that this edition has some memory manager bugs ironed out of it.


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

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 28th May 2008 03:18
PlayBasic V1.63w2 _Retail Patch_ is Now Available

This update addresses an issue with the previous 1.63w for users who didn't have the News templates installed. So if you downloaded the 1.63w and got crashes fetching news, then you need to re-download & install it.


Download

ReDownload PlayBasic V1.63w Retail Patch from maintenance forum. (Members Only!)

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 29th May 2008 07:07 Edited at: 27th Jul 2011 18:38



Competition Title: Heroes Quest - 2008 PlayBASIC Game Making Competition


http://HeroesQuestCompetition.UnderwareDesign.com (Home Page)

Dicussion Forum @ www.UnderwareDesign.com






Sponsors

This competition is proudly sponsored by,




More to be announced!



Attachments

Login to view attachments
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
tha_rami
16
Years of Service
User Offline
Joined: 25th Mar 2006
Location: Netherlands
Posted: 31st May 2008 17:51
Well, to make a 'revision':

Quote: "Since Heroes Quest is PlayBASIC promotion competition to promote www.PlayBasic.com, Developers can choose to receive bonus points from http://UnderwareDesign.com by including redistributable extras like the source code, level editors for example."


HTML doesn't really understand BB-code .


A mod has been erased by your signature because it was larger than 600x120
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 1st Jun 2008 10:47
cheers 'tha_rami', there's chestnuts in it as always. Ironing them out as I go along..

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 4th Jun 2008 05:04 Edited at: 27th Jul 2011 18:49
Sig test..(updated 2011)

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 8th Jun 2008 09:16 Edited at: 27th Jul 2011 18:39



Heroes Quest - 2008 PlayBASIC Game Making Competition




Latest Competition Sponsors





We are proud to announce that Roencia Game Creators have kindly have donated one copy of their MEGA MEDIA PACK (valued at $120) to the first place prize pool.

http://www.roencia.com




[center]More About Heroes Quest


http://HeroesQuestCompetition.UnderwareDesign.com (Home Page)

Discussion Forum @ www.UnderwareDesign.com



Interested in supporting amateur game designers ? Send sponsorship related questions to (Kevin Picone)

[/center]

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 10th Jun 2008 19:32 Edited at: 27th Jul 2011 18:40



Heroes Quest - 2008 PlayBASIC Game Making Competition




<=================> Latest Competition Sponsors <=================>







UnderwareDesign.com are proud to announce that www.allgamemusic.com have kindly donated three GAME MUSIC PACKs, one for each place.

All included tracks are not only unique to each other, but are being created explicitly for the Heroes Quest competition. They're not available anywhere else!

http://www.allgamemusic.com


[center]<=================> <=================> <=================>









UnderwareDesign.com are proud to announce that www.TheGameCreators.com have not only kindly donated multiple copies of their FPScreator & FPSCreatorX10 packages for each place getter, but they're also donating a healthy serving of store points to go with them. Store points can used to buy bonus media assets for either package. Perfect for creating your very own 3D FPS games.


http://www.thegamecreators.com




[center]<=================> More About Heroes Quest <=================>


http://HeroesQuestCompetition.UnderwareDesign.com (Home Page)
Discussion Forum @ www.UnderwareDesign.com



Interested in supporting amateur game designers ? Send sponsorship related questions to (Kevin Picone)



[/center]

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 12th Jun 2008 17:49 Edited at: 27th Jul 2011 18:41



Heroes Quest - 2008 PlayBASIC Game Making Competition




<=================> Latest Competition Sponsors <=================>



UnderwareDesign.com are proud to announce that www.Existenz-Software.fr have kindly donated $150 cash to the Prize pool.

http://www.Existenz-Software.fr




[center]<=================> More About Heroes Quest <=================>


http://HeroesQuestCompetition.UnderwareDesign.com (Home Page)
Discussion Forum @ www.UnderwareDesign.com



Interested in supporting amateur game designers ? -Send sponsorship related questions to 'Kevin Picone'

[/center]

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 16th Jun 2008 09:53 Edited at: 27th Jul 2011 18:33
PlayBasic Threading Test

This is an experiment that I've had on my mind for some time now. The objective is to try threading some of the rendering in playbasic. The purpose of this, is to split the work load, on machines with multi core/dual cpu's. While it works without multi core, the benefit (if any) will be lost. Since the same cpu is running both threads.

So ideally the second cpu could be used to asynchronously render in the background while the main cpu runs the program code (in this case the game logic). In this small example, only the back drop fill (shadebox) in bring executed as a thread. While this occurs, the demo moves some ship objects from left to the right. The ships (the circle things) have to be rendered once the filler thread closes. Which should be obvious, If you think about it.


Download

Get Thread Test Demo

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 27th Jun 2008 22:14 Edited at: 27th Jul 2011 18:42



Competition Title: Heroes Quest - 2008 PlayBASIC Game Making Competition

http://HeroesQuestCompetition.UnderwareDesign.com (Home Page)

Discussion Forum @ www.UnderwareDesign.com



*=------------------------------------------------------------------=*
New Heroes Quest Closing date
*=------------------------------------------------------------------=*


1st of October 2008

http://www.HeroesQuestCompetition.underwaredesign.com


Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 30th Jun 2008 19:04 Edited at: 27th Jul 2011 18:45
Frame Sheet Animation Library

This library takes a Frame Sheet approach to animation. What's a Frame Sheet ? - It's an image that contains a series of individual animation frames, laid out in a grid. Users can then generate and control animations sequences using a simple command set.


Download

Frame Sheet Animation Library

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 11th Jul 2008 08:03 Edited at: 27th Jul 2011 18:46


Play Basic Home Page Make Over

Just a quick note that the PlayBASIC home page on UnderwareDesign.com has been updated. There's a new batch of screen shots, tech demos, game examples etc online.

www.PlayBasic.com


Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 20th Jul 2008 09:42 Edited at: 27th Jul 2011 18:56
(PB1.63w8) Gouraud Filler has (limited) InkMode Support

One difference between the PB and PBFX is that gouraud triangle rendering has some inkmode support. So if you set inkmode to Alpha 50, then draw a tri it gets blended with the backdrop. While PB can do this with filled triangles, gouraud wasn't supported. Since these changes are needed in the PBFX fall back engine, i've added to the new gouraud span filler found in PB1.63w beta 8 also.

Atm the new span filler only supports 2 ink modes, those being SOLID (default) and the Alpha50. It's unlikely i'll bother support all inkmodes at this time, it's too much work, so i'll mostly be focusing upon the most useful combinations. Such as Alpha Blend (Variable), Alpha ADD, Alpha SUB and Alpha Mult. Alpha mult could be used to overlay coloured light effects for example.



(PB1.63w8) Gouraud Filler AlphaBlend ADD & SUB

Been working on the Gouraud span filler all day, mostly tweaking up the Alpha additive fillers. Like all fillers in PB the new gouraud code needs scaler (none mmx) and parallel (MMX) editions of the fill code. So adding one new feature general means building various editions of same basic code. Gouraud means lots of linear interpolation, now on other more sensible cpu's (anything not x86 based ) this is a breeze. But not on an x86 clunker.. Lots of hitting memory.. This is a drama as Ideally everything should be register based, so we're only fetching and writing pixel data, not storing and retrieving temps.

Anyway, the after some head scratching I've been able to get the MMX version of the additive ground filler to be about the same speed of the old solid fill version. Could actually improve this further by reducing the accuracy, but I don't think i'll bother now. The pic's bellow are of the alpha additive & subtractive shade box rendering over the scrolling frame buffer



Attachments

Login to view attachments
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 20th Jul 2008 09:44 Edited at: 27th Jul 2011 19:03

Attachments

Login to view attachments
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 22nd Jul 2008 18:40 Edited at: 27th Jul 2011 19:05
Play Basic V1.63w5 BETA (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)

PB V1.63w5 is re-engineered beta of PBV1.63 retail update. This version includes some major changes to underlying graphics engine, such as it's now can transparently convert between irregular pixel formats. However this is only supported through the draw image functionality though. Other things like texture mapping require the source and target surfaces be of the same pixel format. If they're not, you'll either get some crazy looking graphics or possibly a crash. This only applies to those people wanting to force PB to use a particular pixel format (image depth) regardless of the host computers pixel format.

Other changes to the graphics engine have been the near complete replacement of the span rendering routines, which is a big job ! Such such, all of the presently supported fill methods now include pure MMX machine code optimized and fall back fill variations. This means that some of the fillers are much quicker than previously, although aren't also. Since they we're already MMX optimized.

This version is WIP however, replacing the span fillers is lot of work, so not all video formats are supported in this version. 24bit & 32bit should be fully supported, however the 16bit modes are missing some of the unusual inkmodes.



Play Basic V1.63w6 BETA (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)

PB V1.63w6 is a re-engineered beta of PBV1.63 retail update. This version continues on from where the previous #5 beta left off. Im this edition we have a complete new span rendering engine, although it's only called from BOX/CLS commands. The engine corrects a number of odd bugs in various fill modes and pixel formats (alpha addition in 565 pixel formats were broken) as well incorporating MMX support for all of the major pixel fillers. The only mode that isn't really supported with the same vigor is 24bit. 24bit is included but for legacy only.



Play Basic V1.63w5 BETA (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)

PB V1.63w7 is a re-engineered beta of PBV1.63 retail update. In this version we have a new set of gouraud shading/filler routines, these are used behind such commands an GouraudTri/GouraudQuad and ShadeBox. The new code is opt'd for 15/16/24 and 32 bit pixel formats. As a result, all three high level commands are quicker, the most notable is shadebox. Which is about 30% faster across 800*600 fill area on my test machine.



Play Basic V1.63w BETA8 (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)

PB V1.63w8 is a re-engineered beta of PBV1.63 retail update. This version adds inkmode support for gouraud shading/filler routines (most are 32bit only), as well as new inkmode called Inverted subtractive (4096). It's another subtract mode how this one subtracts the destination from the source, giving a coloured inverse effect. Inverted subtractive is supported through the regular span filler as well as the update gouraud filler, while the solid colour versions support all pixel formats, the gouraud version is 32bit for the time being.

Anyway, give it a test and lets us know if your programs work in it !


Download

Download Updates From PlayBasic maintenance Forum @ UnderwareDEsign.com

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 24th Jul 2008 19:08 Edited at: 27th Jul 2011 19:06
Play Basic V1.63w BETA #9 (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)

PB V1.63w9 is a re-engineered beta of PBV1.63 retail update. This version adds rounds off the pixel format support for gouraud shading/filler routines. While the gourauds don't support every Inkmore, the ones that are supported (Alpha50, AlphaAdd, AlphaSub, AlphaMult + Alpha InvSub) are supported in 15/16/24/32bit pixels formats.


Anyway, give it a test and let us know if your programs work in it !


Download

Download PB1.63w Retail Beta 9



Attachments

Login to view attachments
Deathead
16
Years of Service
User Offline
Joined: 14th Oct 2006
Location:
Posted: 25th Jul 2008 00:21
Awesome. Aren't you tired from all this posting.lol


Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 25th Jul 2008 17:05 Edited at: 27th Jul 2011 19:07
(PlayBASIC V1.63w10) Shape Tunnel Cont.

Been playing around with line rendering most of the afternoon, namely the Anti Aliased version. In the previous editions shown above, the code is basically a hacked together version of the existing line render with AA tacked in, but this was getting to be a big mess. So I decided to rewrite the routine from scratch. The result is a more compact routine which can out preform the original AA version, even if only by a small amount (15%).

While the routine is far from optimal (i.e. still generic), it's fast enough for the time being, the main advantage of the new version is that corrects some situations where it could blend off the end of the line. The main drama now is how to implement it. Currently it's patched in place of the old version, this is not a good idea, since it has fetch from the destination buffer. So most probably optionally through a conveniently reserved bit in the InkMode selection. Although then would imply having 'AA' versions of all fillers.. erm.... chances of that are slim to none...

Anyway, here's another piccy of the shape tunnel effect...




Attachments

Login to view attachments
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 26th Jul 2008 20:58 Edited at: 27th Jul 2011 19:08
(PlayBASIC V1.63w #10) Scale Image Bilinear Filtering Mode

When originally messing around some filter ideas, I wrote the initial test version in PB (discussed previously in the blog), these versions used mixed floating point and fixed accuracy (erm.. oxymoron that.). While doing such things in PB code puts the vm under a lot of stress, you might assume that moving into C/asm this negates that. I wish! - Mixing Float/Fixed point is bit of no/no so I had to covert the scaler to the fixed point. While simple enough, the slightest error and you're chasing your own tail for a few hours. None the less, a generic fixed point version is now implemented in ScaleImage. To activate the filter we set Bit 1 ( 2). It's not what i'd call super fast at this point but ya get that

What Bilinear filtering does is 'bleeds' the original pixels into each other, this means that if you're scaling the image up/down pixels get smoothed into each other. While the routine can scale up as far as you like (well to a point), when you reduce images we start to get errors when scaling down by more than 50%. This is the nature of the algorithm, and you'll see the same the error in hardware render. They counter this by using MIPMAPs. So prior to the run time, images are stored in the original state, then a 50% reduced and then 25% reduced version, depending upon the size of the image/texture. Then at runtime we choose what texture depending on the size.

Anyway, here's a bit of a demo. On the left we see a linear scale and the on the right we see the filtered version.






Attachments

Login to view attachments
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 3rd Aug 2008 16:51 Edited at: 27th Jul 2011 19:10
PlayBASIC Beta #12 Round up


PlayBASIC V1.63w BETA12 (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)

PB V1.63w12 is a re-engineered beta of PBV1.63 retail update. This version uses the new surface description format and texture span rendering routines. But there's a catch, in this beta it only supports 32bit and only includes the solid/transparent routines at this point. This means that you run your program in 16/24 bit and use rotated sprites/textures then you'll get nothing on screen. Same goes for is you use sprite draw modes, if you say alpha add, it'll draw a solid polygon in this version. So if you run your demos and nothing appears, now you know why.


PlayBASIC V1.63w BETA 12b (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)

PB V1.63w12 is a re-engineered beta of PBV1.63 retail update. This version introduces a bare bone edition of the new texture mapping routines. The new routines include universal support for a uniform defuse colouring of sprites, which lets you Tint the sprite colour in real time as well as Bilinear filtering. By default both modes are disabled. You can control them via the new SpriteTint and SpriteFilter commands. Sprite Tint requires a sprite index and tint colour. To disable Tint set the Tint colour to rgb(255,255,255). Moreover to enable filtering set sprites filter mode to ON. Be warned though, Filtering is very runtime expensive. For every one texel (pixel) you transform from texture space to the screen, it costs about 6 times that of normal 'truncated' texel. While the version of the filter is much quicker than it was (about 35% than yesterday), it's never going to be express.

Another new feature of the texture mapper, is that the new design makes buffer formats irrelevant. Meaning that all mappers include a 'generic' pixel version to handle irregular buffer formats or depreciated sprite draw modes. I should point that this version of the mapper only included the solid render routines (for any screen depth), but none of the other Sprite draw modes have been added. Spent all day on the damn filter

This means you can store textures in say 16bit (to save some memory if you wanted) and render them to any other buffer, be it 16bit, 24bit or 32bit. it won't be fast as optimized filler (about say %35->50 slower), but it's still more than useful.



PlayBASIC V1.63w BETA 12c (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)

PB V1.63w12 is a re-engineered beta of PBV1.63 retail update. This version adds another expansion to the core texture mapper. Which now includes support for rendering from AFX formatted images (AFX images are 32bit images with Alpha Channel data). This means you can draw a tinted, filtered, scaled/rotated surface with Alpha Channel (solid or transparent) to any type of buffer. This gives you a world of new creative possibilities, provided you use your common sense.





Download

Download PlayBASIC 1.63 Beta 12c

Attachments

Login to view attachments
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 3rd Aug 2008 16:54 Edited at: 27th Jul 2011 19:12
PlayBASIC Texture Mapper (defuse/filter terrain test)




Attachments

Login to view attachments
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 6th Aug 2008 21:13 Edited at: 27th Jul 2011 19:15
See PlayBASIC V1.63 Work In Progress Gallery

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 7th Aug 2008 21:52 Edited at: 27th Jul 2011 19:00
Alpha Bitmap Font Library/Example

Here's a little library to handle bitmaps with alpha channels in PlayBasic V1.63


Piccy





Download
Alpha Bitmap Font Library/Example

Attachments

Login to view attachments
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 12th Aug 2008 10:45 Edited at: 27th Jul 2011 18:55
Play Basic V1.63w BETA 14 (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)

PB V1.63w14 is a re-engineered beta of PBV1.63 retail update. This includes the destination blending effects such as AlphaADD, AlphaSub, Alpha50 and Alpha Blend (variable). These can be used in combination with the pre processing texel effects now. Well providing your working in 32bit, as not all pixel depths are supported in this version. None the less, this version pretty much includes all the previous functionality. So you can start testing it with your projects.

This version is about 80% complete

This piccy is TINT with ALPHA ADD





Download

Download PB 1.63 Beta 14 (from UW forums)

Attachments

Login to view attachments
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 13th Aug 2008 23:44 Edited at: 27th Jul 2011 19:12
PlayBASIC V1.63w BETA 14b (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)

PB V1.63w14b is a re-engineered beta of PBV1.63 retail update. This version represents the first real workable replacement of the new sprite engine. While not all sprite draw modes are supported, it includes the following.

* Supported Texel processing modes

1024 = Colour Flash
2048 = Colour Alpha (variable cross fade sprite with colour)
4096 = Colour Alpha ADD
8192 = Colour Alpha SUB
65536 = Colour Mask Logical AND
131072= Colour Mask Logical OR


* Supported output modes (these are 32bit only beta 14b)
04 = AlphaMode. (Variable Alpha Blends the sprite image)
08 = AlphaBlend 50/50
16 = Alpha Addition
32 = ALpha Subtraction


As well as

* Base Colour (Sprite Tint)
* optional Filtering
* Alpha Channel


The Following modes are NO longer supported.

* NOT Supported Texel processing modes
64 = Fade
128 = Gouraud Fade
256 = RGB Gouraud 50/50 Alpha Blend
512 = RGB Gouraud Alpha Addition
16384 = Colour Replace
32768 = Raster Bar Colour Replace


This version is about 85% complete, from here's it's just tweaking the interface then rolling out 16bit/24bit editions of the output methods.. I strongly recommend testing your programs in this edition.


Download

Go To Download Area


WIP Gallery

PlayBasic V1.63 WIP Gallery

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 19th Aug 2008 04:43 Edited at: 27th Jul 2011 19:16
PlayBASIC V1.63w BETA 15 (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)

PlayBASIC V1.63w15 is a re-engineered beta of PBV1.63 retail update. This version extends the destination blending support. Allowing 16bit modes to be blended with Alpha50 and Alpha Addition again.

* Supported Texel processing modes

64 = Fade
1024 = Colour Flash
2048 = Colour Alpha (variable cross fade sprite with colour)
4096 = Colour Alpha ADD
8192 = Colour Alpha SUB
16384 = Colour Replace
65536 = Colour Mask Logical AND
131072= Colour Mask Logical OR


* Supported output modes
04 = AlphaMode. (Variable Alpha Blends the sprite image) (32bit only in this beta)
08 = AlphaBlend 50/50 (16 + 32bit supported)
16 = Alpha Addition (16 + 32bit supported)
32 = ALpha Subtraction (32bit only )


As well as

* Base Colour (Sprite Tint)
* optional Filtering
* Alpha Channel


The Following modes are NO longer supported.

* NOT Supported Texel processing modes
128 = Gouraud Fade
256 = RGB Gouraud 50/50 Alpha Blend
512 = RGB Gouraud Alpha Addition
32768 = Raster Bar Colour Replace


This version is about 90% complete, from here's it's just tweaking the interface then rolling out 16bit / 24bit editions of the output methods.. I strongly recommend testing your programs in this edition. If your program doesn't work in this, then it won't work in the update..



Download

Get PlayBASIC 1.63 Beta 15



WIP Gallery

PlayBasic V1.63 WIP Gallery

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 23rd Aug 2008 06:08 Edited at: 27th Jul 2011 19:18
PlayBASIC V1.63w Release Candidate #2

This version adds the combination gouraud modes into the texture mapper. Bellow is just the standard test sprite scene Texel level Gouraud Addition and output Alpha Addition.




Attachments

Login to view attachments
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 23rd Aug 2008 10:59 Edited at: 27th Jul 2011 19:21
PlayBASIC V1.63w BETA 16 Release Candidate #2

PB V1.63w16rc2 is a re-engineered beta of PBV1.63 retail update. This update restores the Gouraud combination modes in the sprite texture mapper. It's been necessary to change how the Gouraud FADE mode works, but only slightly (See note bellow). Moreover there's a new pair of commands that allow some extra control over the triangulation of a sprite. By default the PB1.63 gfx engine render quads, always has. However with gouraud combination modes Triangles can sometimes look better (since the colours can spill over the quad at certain orientations). To enable it set, SpriteTriangulated to TRUE.

This version now includes all the new functionality. Now it needs field testing..


* Supported Texel processing modes

64 = Fade
128 = Gouraud Fade (NOTE: Use SpriteImageRGB to control the intensity at each vertex, SpriteImageIntensity is obsolete)
256 = RGB Gouraud 50/50 Alpha Blend
512 = RGB Gouraud Alpha Addition
1024 = Colour Flash
2048 = Colour Alpha (variable cross fade sprite with colour)
4096 = Colour Alpha ADD
8192 = Colour Alpha SUB
16384 = Colour Replace
65536 = Colour Mask Logical AND
131072= Colour Mask Logical OR


* Supported output modes

04 = Alpha Blend. (Variable Alpha Blends the sprite image) (15, 16, 24+ 32bit supported)
08 = AlphaBlend 50/50 (15, 16, 24 + 32bit supported)
16 = Alpha Addition (15, 16, 24 + 32bit supported)
32 = ALpha Subtraction (15, 16, 24 +32bit supported )


As well as

* Base Colour (Sprite Tint)
* optional Filtering
* Alpha Channel


The Following modes are NO longer supported.

* OBSOLETTE Texel processing modes
32768 = Raster Bar Colour Replace







This version is about 99->100% complete. I strongly recommend testing your programs in this edition. If your program doesn't work in this, then it won't work in the update..


Download

Download PB 1.63 Beta 16 rc2




WIP Gallery
PlayBasic V1.63 WIP Gallery

Attachments

Login to view attachments
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 27th Aug 2008 07:50 Edited at: 27th Jul 2011 19:23
PlayBASIC V1.63w BETA 16 Release Candidate #3 (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)

PB V1.63w16rc3 is a re-engineered beta of PBV1.63 retail update. This update smooths out the functionality further and removes a bucket load of dead code. The only changes in behavior are to the TextureTri, TextureQuad and DrawRotatedImage commands which can now respond to some InkMode methods. Namely AlphaBlend, Alpha50, AlphaADD & AlphaSUB. You can also enable filtering by setting bit 3 (As you do in PlayBasicFX)..

Bit0= Mask (1) = MaskColour
Bit1= Mask (2) = Use Alpha Channel (PlayBasicFX only..)
Bit2= Mask (4) = Not Used
Bit3= Mask (8) = Filtering

To draw a Filtered, solid rotated image you'd use a draw mode of 8, to draw a transparent filtering image you'd use 1+8 (9).. You know bit masks.

If the image you pass the function is an AFX formated image, then the solid pixels (no mask colour pixels) in the surface will be blended using the Alpha Channel. This can used in combination with filtering also. Filtering pretty much triples of the cost of every pixels rendered, so use sparingly.



* Supported Texel processing modes

64 = Fade
128 = Gouraud Fade (NOTE: Use SpriteImageRGB to control the intensity at each vertex, SpriteImageIntensity is obsolete)
256 = RGB Gouraud 50/50 Alpha Blend
512 = RGB Gouraud Alpha Addition
1024 = Colour Flash
2048 = Colour Alpha (variable cross fade sprite with colour)
4096 = Colour Alpha ADD
8192 = Colour Alpha SUB
16384 = Colour Replace
65536 = Colour Mask Logical AND
131072= Colour Mask Logical OR


* Supported output modes
04 = Alpha Blend. (Variable Alpha Blends the sprite image) (15, 16, 24+ 32bit supported)
08 = AlphaBlend 50/50 (15, 16, 24 + 32bit supported)
16 = Alpha Addition (15, 16, 24 + 32bit supported)
32 = ALpha Subtraction (15, 16, 24 +32bit supported )


As well as

* Base Colour (Sprite Tint)
* optional Filtering
* Alpha Channel


The Following modes are NO longer supported.

* OBSOLETTE Texel processing modes
32768 = Raster Bar Colour Replace






Play Basic V1.63w BETA 16 Release Candidate #4 (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)

PB V1.63w16rc4 is a re-engineered beta of PBV1.63 retail update. This update corrects few more differences as well includes some integer opcode improvements in the VM for faster code execution. Which make this update the fastest version (built on VM#1) available to date

This version is about 100% complete. I strongly recommend testing your programs in this edition. If your program doesn't work in this, then it won't work in the update..




Download

Download PB 1.63 Beta 16 rc4



WIP Gallery

PlayBasic V1.63 WIP Gallery

Attachments

Login to view attachments
Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 31st Aug 2008 18:20 Edited at: 27th Jul 2011 19:25
PlayBASIC V1.63w BETA 16 Release Candidate #7 (Retail Compiler Only Beta) - (Avail for Registered Users ONLY)

PlayBASIC V1.63w16rc7 is a re-engineered beta of PBV1.63 retail update. This version corrects a number of parser level bugs in the compiler. Please be aware that such changes can also alter the parsers behavior in unforeseen situations. So it's possible this version may refuse too compile old source codes. I highly recommend testing your program is this version. I won't be updating it post releasing the official patch.

This version is about 100% complete. I strongly recommend testing your programs in this edition. If your program doesn't work in this, then it won't work in the update..


Download
Download PB 1.63 Beta 16 rc7


WIP Gallery
PlayBasic V1.63 WIP Gallery

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 1st Sep 2008 18:00 Edited at: 27th Jul 2011 19:19
PlayBasic V1.64 _Retail Upgrade_ is Now Available (2nd, Sep, 2008)

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

The PB1.64 package includes updates of PB Compiler, Release / Debug Runtimes & IDE V1.17. See History for new features/commands and differences.


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



Download

Download PB1.64 Retail Upgrade



WIP Gallery
PlayBasic V1.63 WIP Gallery

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 6th Sep 2008 10:47 Edited at: 27th Jul 2011 19:02
PBFX V1.73 - Hooking up the instruction Set

Well, no sooner do we release a new PBFX beta to tinker with and it's being gutted again. In other words the translation of instruction sets is under way (again ). Even though I've only been picking over it a little over a day or so. My gut feeling is that the translation shouldn't take too long. Touch wood! It's already running about dozen core opcodes on the VM2 engine. Obviously a dozen opcodes isn't many, so if an opcode can't be resolved it falls out out the vm2 and get resolved the old way. Although for that to actually work safely I need to bridges some parts of the Vm1 to Vm2.. While this is not ideal, it'll help us get it running real work code much faster.

The price we pay for this, will be that code execution speed with suffer dramatically in the short term. It occurs because changing contexts, moving back and forward between Vm1->Vm2 is a very expensive thing to do. VM2 is designed to the called and crunch lots of the instructions without interruption. Calling it to run a few or no instructions isn't ideal. Of course, this is a moot point in the long term as once all the instruction set is working on VM2 it'll never have to changes contexts.. so no slow down. But i'm sure there'll be something to get in the way. There always is!

Anyway, to get an idea of what's running here's about the level of the functionality the PB1.73 has running..



Yes, it's that Powerful ..

Kevin Picone
20
Years of Service
User Offline
Joined: 27th Aug 2002
Location: Australia
Posted: 8th Sep 2008 07:58 Edited at: 27th Jul 2011 19:01
PBFX V1.73b - Instruction Set Cont.

It shouldn't come as any great surprise, but today the instruction set journey continues. As outlined earlier my plan is to have unknown opcodes (from VM2) fall harmlessly back to VM1. To make this work means bridging how VM1 stores data, i.e. make the data VM2 friendly. This is needed so that both sides see the same data, ( op codes/variables etc). Without that, the two side are unaware. For example, if you set a variable to value or do basic math operation then this runs on the VM2 side. If you then use this value with say a built in function/command, the runtime currently has to eject from Vm2 and run the command through Vm1. To do this, the parameter values need to be grabbed from/sent VM2 runtime. So such operation has to be patched to read from the Vm2 tables. Otherwise we'd be sending it whatever's in the Vm1 tables. Which should be nothing.

So far we've only got handful or so more operations running in Vm2 than before, but more importantly the bridging between the two has improved a lot. This combination is enabling it run more complicated programs than it could yesterday. Stuff like basic loop, decisions, some data structures (simple arrays) and math/string and (built in) command calling. Which is enough to get to get it running stuff like the standard bench test. Which to my surprise, after a little tinkering, runs. The surprising thing about it, aside from it working, was that it's already slightly faster than what 1.72d. About 1/3rd of second faster (screen shots attached). Which is odd as I was expecting it to be about a second slower. Why ? - well the basic math operation are running on Vm2 but the loop controls are still running on Vm1. So it changing contexts constantly. I think in this case it just happens the speed up comes from doing the group of math operations. ie..



This is pretty encouraging, as that should mean we'll still see a fairly reasonable code processing improvement when PB is finally running pure VM2 code. While I knew Vm2 was going to be a faster design (I've had Vm2 tech demos that date back 3 years ! ). I was a tad worried that the performance gain might not be as great today when compared to modern VM1 design. Originally Vm2 was about 3 -> 4 times faster than Vm1, when they we're first envisaged. Today, I think a more realistic outlook is to hopefully make VM2 somewhere in the 25->50% mark faster, than VM1.

Anyway, before you get your hopes up just yet, it's a long way from that from that today. As when I run some other simple bench marks (Such as FastDot, we see the expected slow down from the massive context changes. In the official fast dot test, we see a slow down from drawing 800*600*32 pixels at 21fps, down to a 12fps.

Ie.



Currently this loops is Vm1 biased, it's still calling Vm2 but falling out immediately. Which really eats up the time. I'm surprised it runs as fast as does actually. I thought it was going to be much slower.. but anyway.. back to it.



PBFX V1.73 - Looping On VM2.

The opcodes are broken up into instruction levels, banks if you will. This helps the VM2 pick it's way through the program code quickly. Previously the only code on Vm2 was level 0 and level 4 which are the basic math operations, compares and few other bits of bobs . So today I've moving the loop controls. To do this requires changing the how the compiler outputs the loop opcodes, as VM uses different set of opcodes for looping than VM1. The first port of call has been the FOR/NEXT control. The foundation of the pretty much every BASIC program. So it's important this structure is as lean as possible. Both in terms of the memory and VM readability.

The results have been very pleasing, with todays alpha being able to outperform yesterdays fastest build (running the standard test) by around another 1/2 of a second. It routinely runs the standard test now in 1.6 seconds, at least for the short term. The test represents approximately 200*40000*20 cycles .. That's about 160 Million plus total cycles.. For the sake of comparison that's only 0.1 of second slower than PB's two main 'machine code' (cough) competitors. That doesn't really mean much.

On the subject of native code, coming from almost 20 years of assembly background it's been difficult to the fight the urge to move down the source to native code compilation road. Native code generation makes perfect sense on static / fixed architectures. Such as consoles. System where the hardware environment is uniform, same cpu, same memory, same video/sound etc. The PC is not such an environment. I wouldn't be that surprised if that pre-compilation model becomes obsolete on the PC.

Why ? - because of the near infinities array of the target hardware. The crux of the problem is that when compilers generate native machine code, they will a favor certain series of instructions for particular operations. They do this under the assumption these operations are the fastest, shortest way of achieving a particular result. While this might indeed be true on targeted CPU at compile time, but this targeting can disadvantage the code when running on the other flavors of cpu. Which is further compounded when you factor in memory speed / cache. Which is unknown at compile, since the program is the built upon the developers PC and not the targeted user..

This is fine when building code for todays super scalar behemoths, but these are obsolete models as we move towards parallel multi / mini core environments. Which use a simpler, reduced instruction sets core with absolutely no modern frills. These cores a world away from the p3/p4/64bit and dual/quad core systems today. Which brings up an obvious question, how on earth can any compiler produce optimal native code today for the future. While I certainly don't have an answer, but the model that makes the most sense would be a modular compilation upon demand based architecture. The trouble is, if code generation is then 'fixed', then it might as well be pre-compiled to native. So the generation engine would need to build the best version of the source routine it can, for the given the environment. hmmm the mind boggles...

Anyway, here's another screenie.

Login to post a reply

Server time is: 2023-01-29 18:43:31
Your offset time is: 2023-01-29 18:43:31