23 January 2019, 21:03 | #1 |
Registered User
Join Date: Jan 2019
Location: Coimbra / Portugal
Posts: 54
|
Should I use Shapes or Sprites?
Hi everybody;
I made a little shoot'n'up game for PC Windows and for ZX Spectrum and I'm trying to convert it to Amiga using Blitz Basic 2. I'm making some experiences with the Display Library and my question is if is better to use only Shapes or use GetaSprite and then to use Sprites? What method is faster? In what method can I use more colors? It is possible to have all the graphics in 256 colors like the PC version or I need to reduce the number of colors? By the way you can check my little game here: https://madaxe-pns.github.io/sardonic/ Best regards, José Mário aka MadAxe Last edited by madaxe; 21 August 2022 at 15:33. |
23 January 2019, 23:01 | #2 |
Registered User
Join Date: Sep 2007
Location: Stockholm
Posts: 4,332
|
256 colours is mostly beyond what an Amiga can handle in an action game, especially if your only tool is Blitz.
Sprites are limited in their amount of colours as well as their size. Bobs (or Shapes in Blitz terminology) are slower since they have to be masked, drawn and then deleted from the screen, but have the same amount of colours as the screenmode in question. Many Amiga shmups use a mix of both, for example making the enemies bobs and the player a sprite, or using sprites for shots. |
23 January 2019, 23:08 | #3 |
Registered User
Join Date: Jun 2009
Location: Dublin, then Glasgow
Posts: 6,334
|
Nice, and welcome along!
Sprites are faster, in fact they're sort of free in a way because they don't require any blitter or CPU time to draw them. But they're also quite limited: you can only have 8 on screen at the one time (or 16 if you keep the first 8 to the top of the screen and the second 8 to the bottom. They're also limited to 16 pixels wide and 3 colours, though you can join them in pairs to get 15 colours but only 4 on screen. Their palette is also allocated from a fixed set of pens. AGA allows 64 pixel wide sprites and the ability to assign different sets of pens to the sprites. AGA will also allow you to use 256 colours on the screen at once instead of OCS/ECS's 32 (which include the sprite colours), though going by the screenshots, it looks like most of the colours are used up on the gradient in the side panels. This could easily be done on the Amiga using a copper setup and just a single colour, perhaps giving a similar result even on OCS/ECS Amigas. In reality though, the Amiga's blitter is probably fast enough to deal with the number of objects you have on screen, so that might be the way to go, blitting shapes as you need them. Edit: Yes, the hybrid approach is useful too, using the sprites for some items (bullets, powerups and so on). |
24 January 2019, 09:46 | #4 |
Inviyya Dude!
Join Date: Sep 2016
Location: Amiga Island
Posts: 2,770
|
Those pc screenshots really look like you don't need 256 colours for a conversion.
more around 16. You can achieve that gradient on the sidebar with changing one colour in a copperlist. |
25 January 2019, 15:28 | #5 |
Registered User
Join Date: Jan 2019
Location: Coimbra / Portugal
Posts: 54
|
Hi fellows;
Thank you very much for your great help and precious information about Blitz Basic, I found it very usefull By the way, these are my main graphics. Which of them do you think should be bobs and which of them should be sprites? Our ship: 16x16x3 colors Our fire: 1x8x1 Enemy 1: 24x16x3 , Boss 1: 48x32x3 Enemy 2: 24x16x3 , Boss 2: 48x32x3 Enemy 3: 15x24x3 , Boss 3: 30x48x3 Enemy 4: 24x24x3 , Boss 4: 48x48x3 Enemy fire: 1x8x1 , Boss 5: 80x32x3 Powerups: 12x12x2 Thanks in advance, José Mário Last edited by madaxe; 25 January 2019 at 18:40. |
25 January 2019, 15:47 | #6 |
Registered User
Join Date: Jun 2009
Location: Dublin, then Glasgow
Posts: 6,334
|
If you're aiming for OCS/ECS compatibility, sprites won't do for most of the enemies, but they'll work well for your own ship, and powerups and bullets so long as you don't try to have more than 8 displayed at a time. I would say all enemies should be bobs, and then you can see how the performance is.
|
10 February 2019, 20:11 | #7 |
Registered User
Join Date: Jan 2019
Location: Coimbra / Portugal
Posts: 54
|
Thanks again
I have a question about Dual PlayField and Palette Assignment. Background Bitmap: bit01.lbm - 8 colors, palette range: 0-7 Foreground Bitmap: bit02.lbm - 8 colors, palette range: 8-15 But the final result is something like this: My code is: Code:
BitMap 0,320,256,4 BitMap 1,320,256,4 LoadBitMap 0,"bit01.lbm" LoadBitMap 1,"bit02.lbm" InitPalette 0,32 LoadPalette 0,"bit02.lbm",8 LoadPalette 0,"bit01.lbm",0 InitCopList 0,44,256,$35,8,32,0 CreateDisplay 0 DisplayPalette 0,0 DisplayBitmap 0,0,xb,yb,1,0,xf,yf What am I doing wrong? Can I only use 16 color for both BitMaps? Thanks, José Mário Last edited by madaxe; 04 December 2023 at 15:28. Reason: Fix images links. |
11 February 2019, 10:32 | #8 |
Registered User
Join Date: Jun 2009
Location: Dublin, then Glasgow
Posts: 6,334
|
It has to be the same 16 colour palette to cover both sets of 8 colours. Are your bitmaps 3 or 4 bitplanes deep? when you load the palette from a bitmap, it will load all colours in the palette, not just the ones used. Try setting the bitmaps up as 3 bitplanes deep instead and see if that helps.
Also, I'm not sure if you are actually using the correct colours - the 2nd playfield uses pens 8-15, but they're mapped from pens 0-7 in the bitmap. So both bitmaps should use colours 0-7. I *think* you have that right, I'm just not sure... |
12 February 2019, 22:22 | #9 | |
Banana
Join Date: Jul 2016
Location: Darmstadt
Posts: 1,213
|
Palettes are a pain in the arse.
Quote:
|
|
13 February 2019, 15:10 | #10 |
Registered User
Join Date: Jan 2019
Location: Coimbra / Portugal
Posts: 54
|
Well, I think I am doing something wrong.
I tried to change some things like to reduce the number of BitPlanes from 4 to 3, load a Palette from a previous one saved from Deluxe Paint and even set a Palette manualy with a For and Next cycle but the result is allways the same: the Foreground BitMap displays all the 8 colors pefectly but the Background BitMap only displays 4 colors. Note: I am using a emulator and not the real machine. I tried both WinUAE and WinFellow but the result is the same. |
13 February 2019, 16:41 | #11 |
Registered User
Join Date: Jun 2009
Location: Dublin, then Glasgow
Posts: 6,334
|
Ah, I was barking up the wrong tree there, thinking primarily about the palette. You gave me a hint when you say that there are only ever 4 colours on the rear display...
Your problem is here: Code:
InitCopList 0,44,256,$35,8,32,0 Try $36 and see if it fixes the problem. |
13 February 2019, 20:28 | #12 |
Registered User
Join Date: Jan 2019
Location: Coimbra / Portugal
Posts: 54
|
Oh Yeah, It works perfectly Thank you very much Daedalus
Replacing $35 by $36 was the solution for the problem. All the colors are now displayed correctly. In fact I just find out that information on the Amiga Hardware Reference Manual: http://amigadev.elowar.com/read/ADCD.../node0079.html By the way, to code a simple vertical star field scroll I need always to use a Dual Playfield or is there a simple way to do this using a Simple PlayField? Thanks in advance, José Mário Thanks in advance, José Mário |
13 February 2019, 21:59 | #13 | ||
Registered User
Join Date: Jun 2009
Location: Dublin, then Glasgow
Posts: 6,334
|
Quote:
Quote:
|
||
15 February 2019, 16:13 | #14 |
Registered User
Join Date: Jan 2019
Location: Coimbra / Portugal
Posts: 54
|
Thanks
I have one last question... for now If I use a Dual PlayField for my main game is it possible to have a main menu bitmap using 16 color with only one IniCopList or is necessary to create two IniCopList? How to switch beetween them? |
15 February 2019, 22:38 | #15 |
Registered User
Join Date: Jun 2009
Location: Dublin, then Glasgow
Posts: 6,334
|
You'll need to create a new display for that. You can do it easily enough though, just create the CopLists for the different setups you want, and use a CreateDisplay command to go from one to the other.
|
16 February 2019, 10:45 | #16 |
Registered User
Join Date: Jan 2019
Location: Coimbra / Portugal
Posts: 54
|
So, my code will be something like this:
Code:
InitCopList 0,$4 ; Menu InitCopList 1,$36 ; Game CreateDisplay 0 DisplayPalette 0,#MENUPAL DisplayBitmap 0,#MENUBIT While JoyB(1)<>1 ; Press Fire to Start Wend CreateDisplay 1 DisplayPalette 1,#GAMEPAL, DisplayBitmap 1,#FORE,0,xb,yb,#BACK,xf,yf |
20 February 2019, 21:55 | #17 |
Registered User
Join Date: Jun 2009
Location: Dublin, then Glasgow
Posts: 6,334
|
Yep, that shouldn't be a problem. When the game is won or lost, use CreateDisplay 0 etc. to switch to the menu screen.
|
22 February 2019, 19:45 | #18 |
Registered User
Join Date: Jan 2019
Location: Coimbra / Portugal
Posts: 54
|
Thanks, I'll do my best to make a simple but enjoyable game... I hope
Do you know why when we use Queue Blit the space erased is bigger than the shape itself? If my shape is 16x16 the space erased in the background is about 32x16. Is there any way to avoid this? Last edited by madaxe; 04 December 2023 at 15:28. Reason: Fix images links. |
22 February 2019, 21:58 | #19 |
Registered User
Join Date: Jun 2009
Location: Dublin, then Glasgow
Posts: 6,334
|
I think it will always be a multiple of 16 pixels wide. Are you sure your shape isn't 17 pixels wide by any chance? Even if it's empty / transparent pixels...
If you're trying to keep the background undamaged, try using buffered blits instead. They're a bit slower, but they leave the background back as it was before the blit, instead of simply erasing it. |
22 February 2019, 23:12 | #20 |
Registered User
Join Date: Jan 2019
Location: Coimbra / Portugal
Posts: 54
|
Yeap, it makes sense, but my shape is 16 pixels wide.
I'm using buffer blits for the most of the shapes but I'm also using queue blits for a few shapes that don't have a background bellow them. The problem is when they move they damage with empty space some stuff like the score panel and sometimes they even mess with other shapes. I'll redesign them to avoid this or use buffer blits. Thanks. Last edited by madaxe; 23 February 2019 at 22:56. |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Get Shapes | Retro1234 | Coders. Blitz Basic | 53 | 17 March 2017 11:41 |
Shapes creator for PC ? | TurboCrash | Coders. Blitz Basic | 1 | 06 January 2016 19:45 |
Shapes (PD) | Devlin | HOL data problems | 0 | 17 July 2015 19:03 |
Blitz Shapes Limit | Havie | Coders. Blitz Basic | 4 | 03 April 2015 10:42 |
How to draw a (rubbish) zipstick with 10 shapes | killergorilla | Nostalgia & memories | 54 | 30 March 2007 04:25 |
|
|