TANTRO by Hornet [web]
screenshot added by Exin on 2009-04-22 13:06:48
platform :
type :
release date : april 2009
release party : Blockparty 2009
compo : wild demo
ranked : 3rd
  • 12
  • 5
  • 0
popularity : 59%
  • 0.71
alltime top: #8702
added on the 2009-04-22 01:13:46 by Gargaj Gargaj

popularity helper

increase the popularity of this prod by spreading this URL:

or via: facebook twitter pinterest tumblr


This is a Tandy 1000/PCjr intro.. works in DOSBox with cycles set to 800 (yes, 800) and machine set to tandy.
added on the 2009-04-22 02:04:02 by phoenix phoenix
No music, and only one grayscale effect.
added on the 2009-04-22 07:19:00 by bitl bitl
BITS: You're just deaf and colorblind.

Well, i really like the music, but for a real tandy 1000 you must set the cycles to 300 or so, since you only have 4,77Mhz. As i said, the music is nice for Tandy but the graphics routine is not really optimized, rather slow and skips lines...
rulez added on the 2009-04-22 13:09:01 by Exin Exin
"I might be the first person ever writing object-oriented code on a Tandy." /Trixter/
rulez added on the 2009-04-22 13:12:50 by Gargaj Gargaj
Wowa! Releases on such retro PCs makes me happy!!! The sound and gfx are funny and the rotozoomer is fast enough (well not a full framer but for the size and cpu I think it's fine).
rulez added on the 2009-04-22 14:33:39 by Optimus Optimus
it runs full framerate on the actual tandy, we'll probably get video before too long..
added on the 2009-04-22 14:40:55 by phoenix phoenix
I like how 'greyscale effects' have color these days.
nice release. only music is stopped too suddenly
rulez added on the 2009-04-23 01:08:03 by dimouse dimouse
phoenix: yes, i mixed something up. Its really around 1200 cycles. 4770 clock cycles/4 =CPU-cycles in Dosbox. My bad.
added on the 2009-04-23 06:02:58 by Exin Exin
Coooooool. :) DOS forever. ;)
rulez added on the 2009-04-24 09:44:21 by abscess abscess
What gargaj said :)
rulez added on the 2009-04-24 10:43:08 by Preacher Preacher
For everyone getting GRAY VIDEO and NO MUSIC, you need to set machine=tandy in dosbox.conf. Please do that and *then* comment :-)
added on the 2009-04-25 02:33:45 by trixter trixter
Exin: The routine is as optimized as it is going to go; most people don't understand how slow 4.77MHz machines really are. Memory access times are so bad (4 cycles per byte, including opcode fetches) that a 4.77MHz 8088 is slower than a C64. I'm not kidding.

Here's the inner loop of the rotozoomer:

add cx,SI {ddx}
add DX,bp {ddy}
mov BL,ch {bx = 256*int(y)+int(x)}
mov BH,DH
mov al,[BX] {load a pixel from source}
{next pixel}
add cx,SI {ddx} {add the 'right' vector to the current}
add DX,bp {ddy} {bitmap coordinates. 8.8 fixed point}
mov BL,ch {bx = 256*int(y)+int(x)}
mov BH,DH
mov ah,[BX]
stosw {copy, advance to next dest. word}

All variables are in registers; writes to video memory are done at the largest machine size word (STOSW). It took me a long time to get things that optimized, so if you think you can do better, I would love to know how. I know I'm not the best coder out there, but this was one of the few effects I was proud of.

I will say this: My music routines need optimizing :-( It's faster without music playing.

Final version with source will be released in a week or so.
added on the 2009-04-25 02:42:01 by trixter trixter
Thanks for the code, it's tight and interesting :)

A faster and different code is how, I think (I am not sure but I guess) some CPC coders are doing the rotozoomer, which although makes their rotozoomers ugly and less accurate when zooming close. They don't add the dx and dy each time but they have many different unrolled codes for each gradient. Since in one frame you have the same ddx and ddy for each scanline you render when moving on X, then they make an unroll code working for one scanline where instead of add cx,si and add dx,bp for example, they have most of the times on inc ch or one inc dh or nothing, mixed, because during the interpolation one of them if not two might change by one or at some pixels there could be no change (only if the precalculated unrolled codes are for the rotozoomer frames closer, more zoomed in to the viewer). Although it needs a lot of precalcs (if in a rotozoomer looping animation there are 200 different gradient/zoom combinations you need 200 unrolled code precalcs for one scanline of pixels) and is kinda ugly when it zooms in. It's a bit strange to explain but I think this is how they do it a bit faster than my current attempts on the CPC.
added on the 2009-04-26 12:16:26 by Optimus Optimus
then they make an unroll code working for one scanline where instead of add cx,si and add dx,bp for example, they have most of the times on inc ch or one inc dh or nothing, mixed, because during the interpolation one of them if not two might change by one or at some pixels there could be no change

Also,. with this logic more stuff can be removed, if from one pixel to the next when adding the gradient doesn't change the high value (you are still at the same U,V on the bitmap) then you don't need to reread the pixel since it's the same. I mean, you can remove more code than only the ddx, ddy adds in many places (and that always depends if the rotozoomer is closer to the viewer, less incs and rereads of pixels). Anyways :)
added on the 2009-04-26 12:31:28 by Optimus Optimus
Yeouch, I'm not sure I could live with myself with so many unrolled loops :) The only unrolled loop I have is 40 instances of the above snippet, for a single 80-byte-wide scanline. But that's an interesting concept, thanks for sharing it.

Someday I'll write a full-fledged 8088 demo with at least 10 effects... I may be bothering the C64/CPC/speccy people when that time comes ;)
added on the 2009-04-26 18:14:13 by trixter trixter
Cool! I am looking forward to your demo :)
added on the 2009-04-27 22:27:21 by Optimus Optimus
we need a capped.tv version :)
rulez added on the 2009-04-30 08:47:37 by radman1 radman1
rulez added on the 2009-05-16 18:58:35 by sigflup sigflup
rulez added on the 2009-06-06 18:06:24 by T$ T$
enjoyed watching it just as much as I enjoyed watching him code it. Wish he had been at the party this year.
rulez added on the 2010-04-20 23:57:40 by neu / metoikos neu / metoikos
Keep em coming!
rulez added on the 2012-05-17 21:40:35 by magic magic

submit changes

if this prod is a fake, some info is false or the download link is broken,

do not post about it in the comments, it will get lost.

instead, click here !

[previous edits]

add a comment