Author Topic: Old School Effect!  (Read 7775 times)

0 Members and 1 Guest are viewing this topic.

Offline Pot Noodle

  • Sponsor
  • Amiga 1200
  • *******
  • Posts: 271
  • Karma: 15
  • Computers have lots of memory but no imagination
    • View Profile
Old School Effect!
« on: February 20, 2012 »
Hi guy's, Hope you all forgive me but I am trashing my brain trying to think of the name for an old effect so I can find out a bit of info about it, It's like having an image in the background that you can't see until say you pass a font or something over it then you can see the image through the font, I remember a rainbow effect behind the font.
Just can't think what it's called as I will try and produce it in Purebasic.

Thanks for reading.

Offline energy

  • Amiga 1200
  • ****
  • Posts: 280
  • Karma: 25
    • View Profile
Re: Old School Effect!
« Reply #1 on: February 20, 2012 »
Hi. I hope that is the effect yu are looking for.
Watch the example i did years ago for some people that
wanted to do 64 remakes.
I mean the small Charset with the copperbars in the background.
yu can use the keys A,B,C,D for some effect changes.
The sourcecode is included aswell in Purebasic.
Yu can use it, when ever yu want.
cheers
eNeRGy
coding: jwasm,masm
hobby: www.scd2003.de

Offline Pot Noodle

  • Sponsor
  • Amiga 1200
  • *******
  • Posts: 271
  • Karma: 15
  • Computers have lots of memory but no imagination
    • View Profile
Re: Old School Effect!
« Reply #2 on: February 20, 2012 »
Thanks energy, I will have a look and get back to you.

I have had a look at your code and I was hopping to use DrawText() with screen output I have played with Alpha but no go, any ideas?
« Last Edit: February 21, 2012 by Pot Noodle »

Offline Jim

  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 5301
  • Karma: 402
    • View Profile
Re: Old School Effect!
« Reply #3 on: February 21, 2012 »
Stencil Vectors.
Challenge Trophies Won:

Offline Pot Noodle

  • Sponsor
  • Amiga 1200
  • *******
  • Posts: 271
  • Karma: 15
  • Computers have lots of memory but no imagination
    • View Profile
Re: Old School Effect!
« Reply #4 on: February 21, 2012 »
Stencil Vectors  :o Umm.. Ok Jim I will have a look to see what I can find on the subject, Thanks

Offline Raizor

  • Founder Member
  • Pentium
  • ********
  • Posts: 1154
  • Karma: 175
    • View Profile
Re: Old School Effect!
« Reply #5 on: February 21, 2012 »
You're probably best of thinking of these as masking effects. I've had a look for some oldschool stencil vector stuff but can only find stenciling stuff in OpenGL.

You'd probably have a background image (or effect such as copper bars) and draw something over the top of it (spinning cube or text).  Where the text or cube is, knock through and show the background.

I'm not sure of the most efficient way of doing this. You could maybe have an offscreen buffer/image that you fill black each frame and then draw your text on it in white. Then cycle through each pixel in the buffer - if the buffer pixel is white you grab the corresponding pixel (at X/Y) from the background and draw that to the screen, if the pixel is black, draw a black pixel (or a pixel from your overlay foreground image if you wanted to have a picture in the foreground rather than black).

That's how I'd implement it, might run like crap though. You might want to use dirty rectangles to speed it up. That's a way to keep track of parts of the screen that have changed each frame, so you avoid unnecessary drawing.
raizor

Challenge Trophies Won:

Offline Pot Noodle

  • Sponsor
  • Amiga 1200
  • *******
  • Posts: 271
  • Karma: 15
  • Computers have lots of memory but no imagination
    • View Profile
Re: Old School Effect!
« Reply #6 on: February 21, 2012 »
Thanks Raizor for the info, I have been playing around with this and this is what I have so far..

#XPos = 800
#YPos = 600

InitSprite()
InitSprite3D()
OpenScreen(#XPos, #YPos, 32, "")

LoadFont(0, "Topaz", 20, #PB_Font_Bold)
Img = LoadImage(#PB_Any, "back.bmp") ; The Background Image

CreateSprite(0 , #XPos+800, 100, #PB_Sprite_Texture)

StartDrawing(SpriteOutput(0)) ; --- Create a 3D Sprite to go over the Image ---
  Box(0, 0, #XPos+800, 32, $1)
  DrawingFont(FontID(0))
  DrawText(0, 0, "THIS IS THE EFFECT I AM AFTER - THE BACK IMAGE.", 0, $1)
StopDrawing()
CreateSprite3D(0, 0)

X = #XPos

Repeat
ClearScreen(0)

StartDrawing(ScreenOutput())
  DrawImage(ImageID(Img), 0, 414) ; Draw the background
StopDrawing()

Start3D()
  DisplaySprite3D(0, X, 411) ; Draw the 3D Sprite
Stop3D()

X   -   2
If   X   <   - #XPos
   X   =   #XPos
EndIf

FlipBuffers()

Until  GetAsyncKeyState_(#VK_ESCAPE)
End

Offline zawran

  • Sponsor
  • Pentium
  • *******
  • Posts: 909
  • Karma: 67
    • View Profile
Re: Old School Effect!
« Reply #7 on: February 21, 2012 »
The way I did it was to have a negative bitmap font so that it is transparent where the actual character is. Then I drew a lot of lines on the background, and the scroller on top of that. That would let you see the "rainbow" where the character is and block where it is not.

Offline Pot Noodle

  • Sponsor
  • Amiga 1200
  • *******
  • Posts: 271
  • Karma: 15
  • Computers have lots of memory but no imagination
    • View Profile
Re: Old School Effect!
« Reply #8 on: February 23, 2012 »
Having taken on board what you said witch of course made sense I rewrote my code to include a negative sprite/font
then displayed my rainbow image then the transparent sprite but still I can see the image where there is no sprite
I guess I need a kind of mask for the image, Any thought's as to why this is.

Thanks


Offline Jim

  • Founder Member
  • DBF Aficionado
  • ********
  • Posts: 5301
  • Karma: 402
    • View Profile
Re: Old School Effect!
« Reply #9 on: February 24, 2012 »
Quote
Ok Jim I will have a look to see what I can find on the subject
Lots of nice stencil vectors in scoopex mental hangover.
[youtube]http://www.youtube.com/watch?v=37XY28YDju4[/youtube]
Jim
Challenge Trophies Won:

Offline Pot Noodle

  • Sponsor
  • Amiga 1200
  • *******
  • Posts: 271
  • Karma: 15
  • Computers have lots of memory but no imagination
    • View Profile
Re: Old School Effect!
« Reply #10 on: February 24, 2012 »
Thanks Jim for the clip, I must say Scoopex had it sorted wish I did  ??? I have a pic of what it looks like so far but I just can't work it out where I am going wrong.


Offline ttemper

  • Amiga 1200
  • ****
  • Posts: 267
  • Karma: 7
    • View Profile
Re: Old School Effect!
« Reply #11 on: February 24, 2012 »
Looks as though your 'spaces' are being rendered, which you don't want. I hope I'm giving some correct advice here... me being a newbie and all.

In your loop to render the font... (this is freebasic code)

Code: [Select]
whatcharisit = asc(scrollertext)-32 ' the -32 char offset is so you start at 'space' character
' below... if the character doesn't equal 'space' and the character is greater than char 0...
' and less than or equal to character 64 (within proper character range), then do something...
' this will stop you printing the spaces, which render a square block.
if scrollertext <> " " and whatcharisit > 0 and whatcharisit <= 64 then
'do it all here
end if

If I gave bad advice... sorry. It's looking good though Pot Noodle. :)

Offline zawran

  • Sponsor
  • Pentium
  • *******
  • Posts: 909
  • Karma: 67
    • View Profile
Re: Old School Effect!
« Reply #12 on: February 24, 2012 »
Looks like the space character in your bitmap font needs to be inversed so that it blocks out the rainbow graphics.

Offline Pot Noodle

  • Sponsor
  • Amiga 1200
  • *******
  • Posts: 271
  • Karma: 15
  • Computers have lots of memory but no imagination
    • View Profile
Re: Old School Effect!
« Reply #13 on: February 27, 2012 »
Hay guys, Managed to sort it out and am now moving on to the next problem  ;D
I would just like to thank you guys for inspiration and advice, Will post when done.