Page 2 of 2

Re: Tank Blaster

Posted: Tue Aug 27, 2013 12:54 pm
by Uranys
Hello I'am happy to announce Freeware version of TankBlaster,

18 years after (1st version has been made in 1995) I have recompiled a Freeware version of TankBlaster.

Attention : After this new compilation size of executable 2013 have been increased but I don't know why. But it's work on my Falcon and on Hatari (sound always distorted).

Freeware version can be downloaded from here :
http://uranys.pagesperso-orange.fr/images/TankBlaster/TBLASTER.7z (1 298 006 bytes)

http://uranys.pagesperso-orange.fr/images/TankBlaster/TBLASTER.zip (1 614 941 bytes)

Don't hesitated to contact me if there is a problem because now I can recompile it on Hatari emulator. It was an hard job to transfer 20 Mb of files from Atari Falcon to my PC with Floppy Disk...

Image
Start picture by Pardalis

Image

Image

Image

Re: Tank Blaster

Posted: Tue Aug 27, 2013 12:55 pm
by dma
Really nice move, thanks for your support.

Re: Tank Blaster

Posted: Tue Aug 27, 2013 12:57 pm
by nativ
8) 8) 8) :thumbs: Great stuff!

The Zip link gives a page error the 7z works though!

Re: Tank Blaster

Posted: Tue Aug 27, 2013 1:08 pm
by Uranys
nativ wrote:The Zip link gives a page error the 7z works though!

Fixed :roll:

Re: Tank Blaster

Posted: Tue Aug 27, 2013 6:32 pm
by LaurentS
Hi,

Thanks a lot Uranys

Best regards

Laurent / Thadoss

Re: Tank Blaster

Posted: Tue Aug 27, 2013 7:25 pm
by lotek_style
Thanks for the effort and the freeware release! :)

Re: Tank Blaster

Posted: Tue Aug 27, 2013 10:02 pm
by calimero
Thanx!

You can be sure that TankBlaster will bring many hours of fun and joy!

Here you can see bunch of kids getting addicted to Dynabusters+ in 2013.
they was sucked in instantly! :)

http://www.youtube.com/watch?v=B-w1HqHMhBg

Next time, I will present also TankBlaster ;)

Re: Tank Blaster

Posted: Tue Aug 27, 2013 10:39 pm
by Dal
Many thanks for this. Looking forward to playing this.

Re: Tank Blaster

Posted: Tue Aug 27, 2013 11:48 pm
by nativ
Uranys wrote:Hello I'am happy to announce Freeware version of TankBlaster,

18 years after (1st version has been made in 1995) I have recompiled a Freeware version of TankBlaster.

Attention : After this new compilation size of executable 2013 have been increased but I don't know why.



Just a thought.. you still have the source? Is it possible an ST/e variant could come into existence?

and another thought, could some sort of midi network layer be created to make it multi player... or online! :D

But thanks again for the release! I remember playing a friend at this way back when!

Re: Tank Blaster

Posted: Wed Aug 28, 2013 5:47 am
by PardaliS
Nice job, Uranys !

For STe version, all the Falcon features used in the code make it impossible i think. Let's hope that Hatari will have new releases that fix the (magnificent :P ) music distorted issue.

I'm so in love with Dynabuster, each time we play i laugh my ass off, that's the funniest game ever.

Re: Tank Blaster

Posted: Wed Aug 28, 2013 10:00 am
by Uranys
Helllo,

nativ wrote:Just a thought.. you still have the source? Is it possible an ST/e variant could come into existence?

Tank blaster is 90% coded in C. Sprite display routine are coded in assembler 68080 and Sound/music routine are in assembler 68030 + DSP.
Tank Blaster use 16 bits display mode (65536 colors). All of things have been done with POV raytracer.
On Atari work in 16 bits mode has nothing to see with 256 or 16 colors mode. So all display routine will have to be rewritten for STE.
What is more I have used a 68030 auto generated sprite routine because graphic display of Falcon is slow.
Sound and music use 8 voices (Megatracker sound routine).
So it is very hard to make an STE version.

nativ wrote:and another thought, could some sort of midi network layer be created to make it multi player... or online! :D

Midi network is hard to work because of response time. And it is more easy to plug 6 joystick on a same Falcon than to install 6 Falcon in the same room no ?
On Atari I think that online is hard to do. What is more for online I think that Tankblaster (like dynabuster) is more fun when all player are in the same room.

It will be more easy to make an PC (MAC/Linux) version.
With this library :
http://www.afterwarp.net/products/asphyresphinx3
I use Delphi in my job since 16 years. But the main problem is not the code but to find a graphic artist !
For sound and music there is no problem with Pardalis. We leave at 800 meters each other !
Someone is interesting for an PC version (with more than 6 players) ?

Re: Tank Blaster

Posted: Wed Aug 28, 2013 11:11 am
by calimero
Do not spent time on PC version; there are already World of Tanks :D

This freeware versio of TankBlaster is more than enought! :)
Maybe some new multiplayer game for STe/falcon? We ( my friends and I) play regulary:
- DynaBusters
- bugger
- chu chu rockets
- bunion canyon
- international karate+
- and from now on TankBlaster :)
- (and some amiga games: hiredguns; skidmarks; all terain racing...)

(half of this games are made by reservois gods)


Btw what is "auto generated sprite routine"?

And how it speeds up "graphic display of Falcon is slow."?

Re: Tank Blaster

Posted: Wed Aug 28, 2013 11:34 am
by nativ
Helllo,

"nativ"]Just a thought.. you still have the source? Is it possible an ST/e variant could come into existence?
[/quote]
Tank blaster is 90% coded in C. Sprite display routine are coded in assembler 68080 and Sound/music routine are in assembler 68030 + DSP.
hmmm , I guess for speed it might need to be all asm anyway?

Tank Blaster use 16 bits display mode (65536 colors). All of things have been done with POV raytracer.
Ok, the full screen still images could be displayed with 'Photochrome' and maybe some hicolour mode for the menus? depends on CPU left after music!
As for the actual game the 'arena' could be made with a limited palette.

On Atari work in 16 bits mode has nothing to see with 256 or 16 colors mode. So all display routine will have to be rewritten for STE.
ok.

What is more I have used a 68030 auto generated sprite routine because graphic display of Falcon is slow.
Software sprites?

Sound and music use 8 voices (Megatracker sound routine).
We have code for 8 channel (Octalyser ) tracker replay or 16 channels even ( Hextracker! )

So it is very hard to make an STE version.

Thanks for your response ! nice to know what is all about!

[q="

and another thought, could some sort of midi network layer be created to make it multi player... or online! :D

Midi network is hard to work because of response time. And it is more easy to plug 6 joystick on a same Falcon than to install 6 Falcon in the same room no ?

Hover Sprint - Codemasters
Substation - Unique Developments
Midi Maze - Hybrid Arts

All use midi, but maybe it is too slow?


On Atari I think that online is hard to do. What is more for online I think that Tankblaster (like dynabuster) is more fun when all player are in the same room.

Yes I agree! We don't have any online games, I thought this might make a nice candidate! Although as mentioned new developments are welcome! :)

As we have several Ethernet solutions now or soon available! as well as the storage medium for larger graphics and sound.


:cheers:

Re: Tank Blaster

Posted: Wed Aug 28, 2013 11:40 am
by Dal
I wonder if a serial game could be played over the internet using a pair of Lantronix boxes and a bit of router configuration?

Re: Tank Blaster

Posted: Wed Aug 28, 2013 12:28 pm
by Uranys
calimero wrote:Do not spent time on PC version; there are already World of Tanks :D

It's not the same fun to play with 6 players on a 2D game on the same computer than to play with 50 distant players on a 3D game.
Everybody, even who never play to video game, can immediately play to Dynabuster or Tankblaster but how long to play to World of tank ?


calimero wrote:Btw what is "auto generated sprite routine"?
And how it speeds up "graphic display of Falcon is slow."?

It's is a demomaker technic give to me by Axel Follet / MCS (Megatracker author) than I was to the university with him.
Generic display code move 1 pixel by one pixel from an memory address to another address memory.
If the sprite to display have a large size it's take a long time. What is more a pixel take 2 byte in 16 bits mode.
The solution is to convert the sprite to show to a series of "move" from an memory address to another. One move per pixel. So there is no sprite stored in memory but only code.

At 16 Mhz 1 cycle of CPU is 1/16000000 s = 62.5 * 10^-9 s = 62.5 ns
To do 60 frames per second (to have a fluid display) you only have 1/60 = 0.0167 second !
To do 30 frames per second you only have 1/30 = 0.0333 second !
So all the sprite must be displayed in less than 0.0333 second.

Imagine you have 4 pixels to display. In 68000 in 16 bits bits that's do 2 long = 4 words = 16 bits :

A generic display (get and put in GFA basic, C, or basic assembler) of sprite do something slow like :
move.w (a0)+,(a1)+
bcc <label>
that's take : 12 cycles of CPU (at 16 Mhz) by move.w + 10 cycle by bcc !!!
= 12 * 4 + 10* 4 => 88 cycle of CPU only for 4 pixel. Impossible to a fluid game with that.
move.w means move 1 word = 1 pixel.
bcc is jump function who have to handle width and height of the sprite to show but which take a lot of time.
So you be quick you have to not use jump command ! For that you must know all pixel of you sprite and only display than without have to calculate them width and height with "jump" function. In reality it is worst than that because high level language use a lot of function to show one pixel.

It could be better with a serie of move :
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
Which take 12x4=48 cycle of CPU for 4 pixels .
=> Only 2 times quicker than generic display !!!


Better use a serie of move.w. 1 move.w = 1 pixel :
move.w d0,(a1)+
move.w d1,(a1)+
move.w d2,(a1)+
move.w d3,(a1)+
which take 4x8=32 cycles of CPU for 4 pixels. It is that do a standard display.

Better same with movem will be :
Movem.w d0-d3,(a1)+
which take 12+4x4=28 cycles of CPU
You win 4 cycle of CPU to display 4 pixels.

You can do better with movem like :
Movem.w d0-d3,-(a1)
which take 8+4x4= 24 cycle of CPU.
But more complicated because it's work inverted.

So if you have a sprite with more than 4 pixels width using "movem" will be quicker !!

There is other tips to accelerate display of a sprite.
So all sprite are "converted" to optimised code. When you want to add a new sprite you have to convert it to code with a little program. After in C you only have to jump to this code with two coordinate (a memory address) to display it. With that Tank blaster was not far to display all sprites at 30 images per second. I could have all coded in assembler but on Falcon (same in STE/ST) all computer time is taken by display. So nothing to gain to code it in full assembler. C and assembler work fine together.

I'am not sure of my syntax because I haven't done 68030 it since 18 years !


Look here :
http://mikro.naprvyraz.sk/docs/mikro/030_stram.html
http://atariste.free.fr/asm/assembleur10j04.htm

Re: Tank Blaster

Posted: Wed Aug 28, 2013 1:10 pm
by nativ
calimero wrote:Do not spent time on PC version; there are already World of Tanks :D

It's not the same fun to play with 6 players on a 2D game on the same computer than to play with 50 distant players on a 3D game.
Everybody, even who never play to video game, can immediately play to Dynabuster or Tankblaster but how long to play to World of tank ?

while on the subject of tanks and network games I would recommend the game BZFlag, a online tournament / map / server game based loosely on Battlezone. I have added this to my list of things I would like to make on the Atari's ;)

here is the link http://bzflag.org/

Mac or Win C++ (open)source code available

Re: Tank Blaster

Posted: Wed Aug 28, 2013 7:19 pm
by BoNuS
Great job, always nice to see extra software for the Falcon :)

Re: Tank Blaster

Posted: Sun Sep 08, 2013 6:03 pm
by PardaliS
680x0 processors were so interresting for coders, using assembly code. When you use asm, you need to know how your cpu works and you have to find tips to accelerate code and grab some cpu cycles. Precalculatings and other stuffs were so fun !

This tankblaster flashback made me nostalgic, so i decided to make a brand new version of my old ".mod" sountracks. I'm sixteen again, what a nice come back to my youth... :)

Re: Tank Blaster

Posted: Mon Sep 09, 2013 5:14 pm
by simonsunnyboy
Thanks for the release! The sprite technique is probably similar to what Laurent did for Beats of Rage. He documented that a bit in the Coding section, a search word is "compiled sprite".

See viewtopic.php?f=68&t=24462

Re: Tank Blaster

Posted: Tue Sep 10, 2013 9:38 pm
by LaurentS
Hi,

I think the idea is the same, but my routine can take sprites with any number of colors (the best is not to use more than 32 colors for best optimisation, but it works with more).
And of course, I use "long words" registers for "move prefetch" reducing and I compute the best optimisation of colors into the registers to reduce the number of cycles.

On the other side, using 16 colors sprites allows to use movem, which is the fastest way to display sprites.
(It may be possible to optimise the sprites to display them with movem.l I think).

The main idea is here : hardcode the sprites in true color to save cycles.

Regards

Laurent

Re: Tank Blaster

Posted: Thu Mar 02, 2017 7:10 am
by PardaliS

Re: Tank Blaster

Posted: Sat Mar 04, 2017 10:04 am
by lotek_style
Just updated your profile here:

https://demozoo.org/sceners/32418/

Feel free to support us... even with new entries :)

Re: Tank Blaster

Posted: Sat Mar 04, 2017 10:39 pm
by Eero Tamminen
Note: Tank Blaster doesn't work with WinUAE CPU core's cycle accurate mode (= default) in Hatari v2.0, but this issue has been fixed in the Mercurial version of Hatari.