English Amiga Board


Go Back   English Amiga Board > Coders > Coders. General > Coders. Tutorials

 
 
Thread Tools
Old 06 January 2012, 15:31   #1
diablothe2nd
Registered User
 
Join Date: Dec 2011
Location: Northamptonshire, UK
Age: 41
Posts: 1,236
Unhappy Want to learn Blitz, but I have a problem.

So, I want to learn Amiga Blitz. However I'm one of those types of people that simply cannot learn from reading large books that break everything down to a far too simplistic level.

everything from plumbing, woodworking, 3d imagery in life i've learned, I've learned from Videos, Pictures, working examples and physically doing it myself and breaking then repairing it afterwards! its the only way i'm able to obsorb information and turn it into a skill. I guess you could say it's a form of ADD? I dunno, but I guess recognising my faults is the best step in moving forwards. needless to say i was the annoying kid at school that got bored easily, bummed around but still got decent grades

I'm a logical thinker, and know how ifs, thens, whens, whiles etc work. I know I should break down my "grand design" into smaller pieces, and work on them one at a time, then move to another and put the pieces together.

my biggest problem though is this: In my mind I have a vision of how the game will look, play, and sound... right down to the last detail. I've got as far as breaking it down into smaller pieces, but I think i'm breaking them down in the wrong way (see my mindmap on the game idea i have). Am I correct to break them down into elements the end user will experience? or should i be thinking more in terms of newscreen() display.this import.keyboard etc etc

I guess i'm too much of a graphical thinker/learner.

I'd love to find some videos explaining such things like "here's a chunk of code... this does this, but if i change this... then this happens" and you see it live on screen in the game or demo in the vid. there are loads about for pc, just not for amiga blitz.

There's loads of links for manuals, code examples etc. Though nothing that'll really help me progress from psuedo code into a working prototype with Blitz.

Any ideas? sources? links?
diablothe2nd is offline  
Old 06 January 2012, 16:01   #2
pmc
gone
 
pmc's Avatar
 
Join Date: Apr 2007
Location: completely gone
Posts: 1,596
Nowadays I pretty much just code rather than working things out cos it's kind of just become second nature but, in my experience, especially starting out or when you're attempting something a bit more complex, it's worth breaking down larger programming tasks into smaller steps and using pseudo code or descriptions to work out what you want to do and keep yourself logically on track.

This works for me coding in asm, which is literally a step by step coding method as all commands do one and only one thing, but I can't see how this wouldn't also work for Blitz or anything else.

As to how to learn best - just do it would be my advice.

You learn from your mistakes is what they say and it's true.

Make things, struggle, fail, try something else and learn. Perseverance is the key.

Eventually it'll come together. The important thing is to realise no one is suddenly a coder overnight with minimal effort. It takes some time and practice and there's *always* new things to learn and new ways to improve.

It definitely helps if you find coding fun too.
pmc is offline  
Old 06 January 2012, 16:08   #3
diablothe2nd
Registered User
 
Join Date: Dec 2011
Location: Northamptonshire, UK
Age: 41
Posts: 1,236
indeed. it's just the building blocks i'm struggling with. I know i want say, a sprite to move across the screen. it's going backwards and working out the best way of doing it that confuses me.

thake this guys video tutorials:

[ Show youtube player ]

this is EXACTLY what i'm looking for in a tutorial. it's clear, concise, and shows you the direct result of the code. It's Blitz, but it's on windows. So i've a nasty feeling there'll be times where certain examples wont work or flat out just aren't possible on the amiga. So i'm tentative about absorbing too much from it incase i follow the wrong line of thinking when it comes to the amiga.

are there any vids like this done on or for amiga blitz?
diablothe2nd is offline  
Old 06 January 2012, 17:47   #4
Thorham
Computer Nerd
 
Thorham's Avatar
 
Join Date: Sep 2007
Location: Rotterdam/Netherlands
Age: 47
Posts: 3,751
If you already know how to program (and I assume you do based on the fact that you know things like if, then, while, etc.), then all you really need is a good reference manual about the language you want to learn. Learners material is only really suitable for people who want to learn programming from scratch, in my opinion.

Basically just try to write some simple programs by translating what you have in mind using the reference manual. This way you: 1) Depend mostly on your own mind, 2) Get hands-on experience, and 3) Avoid having to read those thick books (which few people like doing anyway).
Thorham is offline  
Old 06 January 2012, 17:57   #5
diablothe2nd
Registered User
 
Join Date: Dec 2011
Location: Northamptonshire, UK
Age: 41
Posts: 1,236
i have a basic understanding of programming. I'm really only at the equivalent of a 3 year old blurting out words that it's heard a few times and putting together a few basic words in a sentence.

things like arrays, and when to use them etc are beyond me.

hmm perhaps i'm simply underestimating my skill level and looking for the wrong kind of learning material.

diablothe2nd is offline  
Old 06 January 2012, 18:17   #6
diablothe2nd
Registered User
 
Join Date: Dec 2011
Location: Northamptonshire, UK
Age: 41
Posts: 1,236
right. i got the Ultimate Blitz CD... i'm going for it!
diablothe2nd is offline  
Old 07 January 2012, 17:48   #7
diablothe2nd
Registered User
 
Join Date: Dec 2011
Location: Northamptonshire, UK
Age: 41
Posts: 1,236
So I've got myself AmiBlitz 2.44

I figured the first place I should start is creating a screen. I know I need to define the screen before calling/creating it with InitCopList function.

I just need to know the syntax of the type definition. The manual is a little short on this.

i have an example file which calls it like this and i'd like to check if i'm breaking it down correctly:

InitCopList 0,44,120,$13008,8,256,0

0 is the coplist designation, so if you want to split the screen horizontally into 3, you would list 0, 1, 2 etc

44 starts the screen from the 44th pixel from the top of the screen, down.
120 is the height in pixels going downward from the above position, essentially defining the bottom of that "window" inside the screen

$ and the numbers are the "type" parameter (this is the bit i need more info on)

8 is the amount of sprites, and should always be 8 (does this mean i can only have 8 sprites/bobs at any one time on that copperlist???)

256 is the colour depth (in this case for AGA only machines???)

0 is the custom numbers (still awaiting development)


in the manual the type definition is shown as this:

Code:
#onebitplane=           $01
#twobitplanes=          $02
#threebitDlanes=        $03
#fourbitplanes=         $04
#fivebitplanes=         $05
#sixbitplanes=          $06
#sevenbitplanes=        $07*
#eightbitplanes=        $08*

#smoothscrolling=       $10 ;set if you will be scrolling the bitmap
#dualplavfield=         $20 ;enable dual playfield mode
#extrahalfbrite=        $40 ;forces 6 bitplane display into ehb mode
#ham=                   $80 ;display in ham

#lores=                 $000
#hires=                 $100
#superhires=            $200

#loressprites=          $400
#hiressprites=          $800*
#superhiressprites=     $c00*

#fetchmode0=            $0000
#fetchmode1=            $1000*
#fetchmode2=            $2000*
#fetchmode3=            $3000*

so am i correct to assume that the string $13008 means hires mode, fetchmode3, with 8 bitplanes?


thanks for any help given

Last edited by diablothe2nd; 07 January 2012 at 18:34.
diablothe2nd is offline  
Old 07 January 2012, 18:37   #8
diablothe2nd
Registered User
 
Join Date: Dec 2011
Location: Northamptonshire, UK
Age: 41
Posts: 1,236
oh i also have a question...

if i split the screen into 2 playfields, can the colour pallettes be different? for example take monkey island. i assume the upper 2 thirds is one playfield, with it's own pallette, and the lower third, with the buttons and inventory is the other. but are they able to have completely different pallettes? so technically displaying 512 maximum colours on the "screen" at once?
diablothe2nd is offline  
Old 07 January 2012, 18:44   #9
Codetapper
2 contact me: email only!
 
Codetapper's Avatar
 
Join Date: May 2001
Location: Auckland / New Zealand
Posts: 3,182
You can indeed have different palettes, but it will take some DMA time to load the new colours. If you really need 256 colours for your lower part, you will probably need several blank lines between them to give the copper the chance to load all the new colours.
Codetapper is offline  
Old 07 January 2012, 18:52   #10
diablothe2nd
Registered User
 
Join Date: Dec 2011
Location: Northamptonshire, UK
Age: 41
Posts: 1,236
Quote:
Originally Posted by Codetapper View Post
You can indeed have different palettes, but it will take some DMA time to load the new colours. If you really need 256 colours for your lower part, you will probably need several blank lines between them to give the copper the chance to load all the new colours.
cool. i dont need it for the moment but that's good to know.

any ideas on the "type" question on the post above the one you just answered?

also, is it possible to "float" a copperlist above the other, with a transparent background to show the lower one?

so say i have the game filling the whole screen, but i want scores for each player overlaid... would this be efficient?
diablothe2nd is offline  
Old 07 January 2012, 22:17   #11
diablothe2nd
Registered User
 
Join Date: Dec 2011
Location: Northamptonshire, UK
Age: 41
Posts: 1,236
just bumping this in the hope it catches someones eye while i'm still googling and thread skimming for confirmation of the "type" definition

EDIT

bump cancelled... weird coincidence Graham! LOL
diablothe2nd is offline  
Old 07 January 2012, 22:17   #12
Graham Humphrey
Moderator
 
Graham Humphrey's Avatar
 
Join Date: Jul 2004
Location: Norwich, Norfolk, UK
Age: 37
Posts: 11,167
Quote:
Originally Posted by diablothe2nd View Post
0 is the coplist designation, so if you want to split the screen horizontally into 3, you would list 0, 1, 2 etc
You don't have to put them in numerical order. You could easily display them as 1,2,0 if you liked, that's if you wanted to use them all at once. The ypos and height are more important if you're using two or more.

What I've done before is to have a title screen as CopList 0 so I'd use CreateDisplay 0, but for the game itself, I'd use Coplist 1 as the main play area, and CopList 2 for the status panel. I might put the panel on top rather than the bottom so in this case I'd use CreateDisplay 2,1.

However, take care that you leave an appropriate gap between each CopList if you're displaying more than one at a time. The Blitz 2.1 manual advises the ypos of a lower CopList to be at least the above's ypos+height+3.

Quote:
44 starts the screen from the 44th pixel from the top of the screen, down.
Nope - 44 is the top of the frame for a PAL display (according to my Blitz 2.1 manual) - it's not the same as the number of pixels down

Quote:
120 is the height in pixels going downward from the above position, essentially defining the bottom of that "window" inside the screen
44 is the top of the screen so yes, this one does what it says on the tin.

Quote:
8 is the amount of sprites, and should always be 8 (does this mean i can only have 8 sprites/bobs at any one time on that copperlist???)
8 is the maximum number of hardware sprites - this is not to be confused with blitter objects (BOBs) or Shapes as Blitz calls them. Hardware sprites are handled totally independent to the display and are limited in terms of size (16 pixels in width but you can 'join' sprites together for bigger ones) and colour (three colours for non-AGA, fifteen for AGA). Chances are you'll never need or be able to reach the maximum due to certain conditions lowering the total available.

You can display as many Shapes as Chip RAM allows (and of course use a 'normal' palette and can be of any size) but obviously displaying and moving too many will slow your program down.

Quote:
256 is the colour depth (in this case for AGA only machines???)
Number of colours available, yes, and of course 256 will be AGA only.

Quote:
0 is the custom numbers (still awaiting development)
These only need to be used if you're fiddling about with commands like DisplayRainbow or DisplayRGB which can alter the palette for each line of the display (i.e. to create graduated skies you see in a lot of platform games for example). If you wanted to use one of the commands I mentioned on an AGA display, you'd need 4 copper instructions and they're always entered as a negative value so in my example, customs=-4.

Quote:
in the manual the type definition is shown as this:

Code:
#onebitplane=           $01
#twobitplanes=          $02
#threebitDlanes=        $03
#fourbitplanes=         $04
#fivebitplanes=         $05
#sixbitplanes=          $06
#sevenbitplanes=        $07*
#eightbitplanes=        $08*

#smoothscrolling=       $10 ;set if you will be scrolling the bitmap
#dualplavfield=         $20 ;enable dual playfield mode
#extrahalfbrite=        $40 ;forces 6 bitplane display into ehb mode
#ham=                   $80 ;display in ham

#lores=                 $000
#hires=                 $100
#superhires=            $200

#loressprites=          $400
#hiressprites=          $800*
#superhiressprites=     $c00*

#fetchmode0=            $0000
#fetchmode1=            $1000*
#fetchmode2=            $2000*
#fetchmode3=            $3000*
so am i correct to assume that the string $13008 means hires mode, fetchmode3, with 8 bitplanes?
You missed out one! #agacolors=$10000

And also if you wanted Hires, it would be $13108, as Hires = $100 as you noted above. $13008 would be AGA colours, Fetchmode 3, Lores and 8 bitplanes.

Quote:
Originally Posted by diablothe2nd View Post
also, is it possible to "float" a copperlist above the other, with a transparent background to show the lower one?

so say i have the game filling the whole screen, but i want scores for each player overlaid... would this be efficient?
No, that's physically impossible to 'overlay' coplists. The only way to do such a thing would be to use a dual-playfield display, so you'd have a 'foreground' and 'background' bitmap on-screen at the same time. But that seems a bit of drastic unless you want to severely limit the number of colours on screen (eight colours for each bitmap on ECS, and 16 on AGA). I'm pretty sure there's plenty of hardware trickery for games that do overlay scores etc onto the actual game screen, probably involving sprites, but that's beyond me I'm afraid.
Graham Humphrey is offline  
Old 07 January 2012, 22:23   #13
diablothe2nd
Registered User
 
Join Date: Dec 2011
Location: Northamptonshire, UK
Age: 41
Posts: 1,236
Quote:
Originally Posted by Graham Humphrey View Post
You missed out one! #agacolors=$10000
actually that wasn't in my .guide ... maybe i have an old/outdated version. that explains why i couldn't find a logical reason for it being in 10's of thousands lol.

brilliant explanations Graham


and weird i bumped the same second you posted! perfect timing

Quote:
I'd use CreateDisplay 2,1
so syntax for the CreateDisplay is in the order from front to back?

so if say in your example i had a rolling credits and higherscore as the intro on copperlist 0, and i wanted the status copperlist (2) to overlay the highscores on game over i could simply switch using CreateDisplay as 2,1 in your example to 2,0 ?

Last edited by Graham Humphrey; 07 January 2012 at 22:35. Reason: Back-to-back posts merged
diablothe2nd is offline  
Old 07 January 2012, 22:35   #14
Graham Humphrey
Moderator
 
Graham Humphrey's Avatar
 
Join Date: Jul 2004
Location: Norwich, Norfolk, UK
Age: 37
Posts: 11,167
Yes, that would work, making sure the ypos of each CopList was correct of course.

And yes the syntax is in order from top to bottom.
Graham Humphrey is offline  
Old 07 January 2012, 22:38   #15
diablothe2nd
Registered User
 
Join Date: Dec 2011
Location: Northamptonshire, UK
Age: 41
Posts: 1,236
right, time to enter Blitz mode and play with copper bars etc
diablothe2nd is offline  
Old 07 January 2012, 22:41   #16
Graham Humphrey
Moderator
 
Graham Humphrey's Avatar
 
Join Date: Jul 2004
Location: Norwich, Norfolk, UK
Age: 37
Posts: 11,167
Have fun - if you hit a problem just shout
Graham Humphrey is offline  
Old 07 January 2012, 23:03   #17
diablothe2nd
Registered User
 
Join Date: Dec 2011
Location: Northamptonshire, UK
Age: 41
Posts: 1,236
will do :great

at the moment i'm playing with a vector circle and gradients example.. managed to change it from split screen to a single circle, resized and changed it from gradient to slowly dimming to black.

Quote:
BitMap 0,320,256,8

For i=0 To 255:AGAPalRGB 0,i,i,i,i:Next

InitCopList 0,44,256,$13008,8,256,0

BLITZ

CreateDisplay 0
DisplayBitMap 0,0:DisplayPalette 0,0

For i=255 To 0 Step -1:Circlef 160,128,255/4,i :Next

MouseWait

End
nothing spectacular but just learning the functions and syntax, and making shapes on screen for a bit of fun on the side :P
diablothe2nd is offline  
Old 07 January 2012, 23:57   #18
diablothe2nd
Registered User
 
Join Date: Dec 2011
Location: Northamptonshire, UK
Age: 41
Posts: 1,236
Ok I'm accidentally putting the system into a loop (possibly hanging it? i dont know, thats what i want to find out) while playing with integers and operators and i want to add a break-out to it as simply having a mousewait at the end isn't doing it.

Quote:

While spacebar (key 40) isn't pressed

run this code

Wend
i'm trying to find the function to call for checking the spacebar. once again the .guide is not forthcoming and there's not a function search facility in the IDE like with Eclipse on PC.

cheers to anyone that helps.

i think i need a pdf of every function and it's syntax to print out and have to hand as it's getting silly now how crappy all the .guides are. mind you, said pdfs are probably just conversions of the guides!
diablothe2nd is offline  
Old 08 January 2012, 00:14   #19
Djay
95th User
 
Djay's Avatar
 
Join Date: May 2001
Location: Brighton/UK
Age: 48
Posts: 3,120
its probably the worst way to learn.. but some of the stuff i've done so far has been done by writing code to achieve what i want in its most basic form... then i start re-writing it to make it more efficient and to correct mistakes

fairly recently i re-wrote an entire program after tracing back a flaw which stopped me from controlling something.. it was horrible but it was a lesson and helped me overcome something else that had me completely stuck... the re-write also made me realise that was a better way to achieve the same goal

really i am no coder... i enjoy thinking that fixing the code is kinda like a puzzle, the hardest part is keeping motivation in a project...
Djay is offline  
Old 08 January 2012, 00:19   #20
diablothe2nd
Registered User
 
Join Date: Dec 2011
Location: Northamptonshire, UK
Age: 41
Posts: 1,236
that's definitely the way to go.

However i'm only playing with around 10-15 lines of code, and getting a feel for what does what and why in terms of drawing stuff on the screen. and in this case breaking it or getting it to do unexpected things.

when it gets caught in a loop i'm having to reset the system and reload Blitz, and the code. would be nice to just break the routine using a while loop without having to reset the whole system.
diablothe2nd is offline  
 


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
I want to learn about Workbench mancity support.Apps 26 21 May 2012 06:14
Wanting to learn Blitz Basic on real Amiga Adropac2 request.Other 20 20 August 2008 07:30
Blitz Basic 2.1 problem with reading a CD32 joypad Graham Humphrey Coders. General 10 09 August 2008 09:24
How did you learn to program BippyM Coders. General 80 01 April 2007 19:25
A little lesson to learn about Pong MethodGit Retrogaming General Discussion 7 07 December 2001 13:03

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 10:36.

Top

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Page generated in 0.19846 seconds with 14 queries