Jump to content

Photo

bB starfield effect


44 replies to this topic

#26 Yosikuma OFFLINE  

Yosikuma

    Star Raider

  • 74 posts
  • Location:Independent Republic of Peoria

Posted Fri Jan 6, 2017 11:16 AM

Well damn, and here I was hoping I could finally implement my Pitfall-esque rope mechanic.  Some day ..



#27 Karl G ONLINE  

Karl G

    Moonsweeper

  • 372 posts

Posted Sat Apr 29, 2017 4:59 PM

It looks like this effect doesn't work with the multisprite kernel, sadly.  Any chance that I'm mistaken?



#28 RevEng ONLINE  

RevEng

    River Patroller

  • Topic Starter
  • 4,837 posts
  • Bitnik
  • Location:bottom of the stack

Posted Sat Apr 29, 2017 11:43 PM

Sad but correct. The multisprite kernel does a bunch of mid-screen hmoves that reset the effect, messing it up.

#29 Karl G ONLINE  

Karl G

    Moonsweeper

  • 372 posts

Posted Mon May 1, 2017 12:27 PM

A couple more notes from my testing (and I'm happy to have any of these refuted):

 

 * This is only compatible with the standard kernel if NO_BLANK_LINES is enabled

 

 * There is no way to exploit this trick on the Flashback Portable (I guess this was too much for me to hope for given that it is based on a hardware bug.  It worked as expected in Stella, however).



#30 RevEng ONLINE  

RevEng

    River Patroller

  • Topic Starter
  • 4,837 posts
  • Bitnik
  • Location:bottom of the stack

Posted Mon May 1, 2017 1:01 PM

At work right now, but AFAIK it should work without NO_BLANK_LINES. Since the missile will be under kernel control, you'll need to position the missile vertically and set it's height. The effect should show up where the missle would normally be.

#31 Karl G ONLINE  

Karl G

    Moonsweeper

  • 372 posts

Posted Tue May 2, 2017 8:49 AM

At work right now, but AFAIK it should work without NO_BLANK_LINES. Since the missile will be under kernel control, you'll need to position the missile vertically and set it's height. The effect should show up where the missle would normally be.

 

Confirmed - thanks!

 

Hopefully this will be my last question, but it looks like this bug only applies to missile 0, and not missile 1?  I tried setting ENAM1=2 and positioning missile 1, but no luck.  My hope was to be able to use the other missile so that I could use a kernel option that took away missile 1 instead of missile 0 (player1colors) and still retain one working missile.



#32 RevEng ONLINE  

RevEng

    River Patroller

  • Topic Starter
  • 4,837 posts
  • Bitnik
  • Location:bottom of the stack

Posted Tue May 2, 2017 9:22 AM

The TIA bug applies to all positionable objects. To switch my example over to missile1, just change references in the vblank routine from HMM0 to HMM1. (And change any other missile0*/ENAM0 references to missile1*/ENAM1)

#33 Karl G ONLINE  

Karl G

    Moonsweeper

  • 372 posts

Posted Tue May 2, 2017 1:19 PM

Also confirmed - I had missed changing the assembly on my previous attempt.  Thanks again!



#34 RevEng ONLINE  

RevEng

    River Patroller

  • Topic Starter
  • 4,837 posts
  • Bitnik
  • Location:bottom of the stack

Posted Tue May 2, 2017 1:58 PM

Not a problem. You're welcome. :)

#35 Karl G ONLINE  

Karl G

    Moonsweeper

  • 372 posts

Posted Thu May 4, 2017 2:44 PM

Here's a slightly different example in case it is useful to anyone.  Use the joystick to appear to move the ship in 8 different directions.  I commented the code to show what needs to be changed to use a different missile or the ball instead in case anyone else could benefit from that.

 

Now I just need to dream up a space game where 8 directions of movement would be fun.   :)

 

Attached Files



#36 Buckaroo OFFLINE  

Buckaroo

    Space Invader

  • 22 posts
  • Location:Plymouth, UK

Posted Mon May 15, 2017 7:35 PM

This example uses both missiles on the screen at the same time and with Fixed Point 8.8 variables which can create some nice Parallax effects.

 

I've made them as big as possible and duplicated each 3 times so they cover the majority of the screen,

 

Is it possible to glitch the ball or players in the same way? I've been fiddling around with the variables but cant make them repeat.

 

 

Controls:

Select which missile to edit     ↕ Adjust by big amount     ↔ Adjust by small amount

Reset: Picks new Preset      Difficulty Switches: Toggle missile visibility

 

 

 

Attached Files



#37 RevEng ONLINE  

RevEng

    River Patroller

  • Topic Starter
  • 4,837 posts
  • Bitnik
  • Location:bottom of the stack

Posted Mon May 15, 2017 7:46 PM

This example uses both missiles on the screen at the same time and with Fixed Point 8.8 variables which can create some nice Parallax effects.
 
I've made them as big as possible and duplicated each 3 times so they cover the majority of the screen,


Well done - that is some trippy stuff!


Is it possible to glitch the ball or players in the same way? I've been fiddling around with the variables but cant make them repeat.


It's technically possible, yes. I'm not sure what the issue is - I'll give it a shot in the next couple days, if you don't beat me to it.

#38 Buckaroo OFFLINE  

Buckaroo

    Space Invader

  • 22 posts
  • Location:Plymouth, UK

Posted Wed May 17, 2017 10:10 AM

It's technically possible, yes. I'm not sure what the issue is - I'll give it a shot in the next couple days, if you don't beat me to it.

 

The problem I was having was putting all 5 objects in at the same time, I was able to put one or two in before.

 

-----------------------------------------------------------------------------------------------------------------------

 

This new example uses all 5 objects in the glitch player0,player1,ball,missile0 and missile1.

 

In Visual BB I was able to make it work by keeping all of the horizontal moves on one line and calling WSYNC once

 

You can adjust the direction/speed in the same way but are unable to turn them on or off as before.

Attached Files



#39 Karl G ONLINE  

Karl G

    Moonsweeper

  • 372 posts

Posted Sun Aug 13, 2017 11:39 AM

I've noticed that the starfield effect seems to somehow interfere with horizontal player movement, as shown in this example.  It happens regardless of whether the effect is done using either missile or the ball.  Any ideas on what is causing this, or how to work around it?

 

Attached File  vert.bas   1.63KB   44 downloads

 

Attached File  vert.bas.bin   8KB   58 downloads



#40 RevEng ONLINE  

RevEng

    River Patroller

  • Topic Starter
  • 4,837 posts
  • Bitnik
  • Location:bottom of the stack

Posted Sun Aug 13, 2017 1:08 PM

Yeah, looks the HMOVE for the player is getting retriggered. A fairly easy fix is to add this to the beginning of the vblank routine...
 
  sta HMCLR
  sta WSYNC

Thanks for the bug report! :thumbsup: I've already updated the previous examples in this thread.

#41 Karl G ONLINE  

Karl G

    Moonsweeper

  • 372 posts

Posted Sun Aug 13, 2017 2:07 PM

That fixed it - thanks!



#42 Mountain King OFFLINE  

Mountain King

    Dragonstomper

  • 679 posts
  • Location:Philadelphia, PA

Posted Wed Dec 27, 2017 5:06 AM

I'm trying to use missile1 instead of missile0 for the starfield.

This seems like it would be a simple change in the DPC+ kernal. Change all instances of missile 0 to missile 1 and hmm0 to hmm1.

But I can't seem to get it to work. Am I missing something?

Attached Files



#43 SpiceWare OFFLINE  

SpiceWare

    Draconian

  • 12,300 posts
  • Medieval Mayhem
  • Location:Planet Houston

Posted Wed Dec 27, 2017 9:14 AM

But I can't seem to get it to work. Am I missing something?

 

 

HMOVE cancels out the starfield effect.

  1. Load the ROM in Stella.
  2. hit ` to enter the debugger
  3. make sure the Prompt is active
  4. type trapwrite HMOVE
  5. watch the scanline count as you keep hitting ` to exit debugger

you'll notice that bB's DPC+ Kernel hits HMOVE every-other-scanline.

 

Screen Shot 2017-12-27 at 9.13.47 AM.png



#44 RevEng ONLINE  

RevEng

    River Patroller

  • Topic Starter
  • 4,837 posts
  • Bitnik
  • Location:bottom of the stack

Posted Wed Dec 27, 2017 9:51 AM

I'm trying to use missile1 instead of missile0 for the starfield.
This seems like it would be a simple change in the DPC+ kernal. Change all instances of missile 0 to missile 1 and hmm0 to hmm1.
But I can't seem to get it to work. Am I missing something?


Your attachment works perfectly for me, when I compile it myself. Make sure you're using the latest bB and remove all *.asm files from your build directory - the first version of the bB starfield effect that I released used a custom assembly file, but I incorporated the changes required into my bB dist. When I did that, I recall cleaning the fix up a bit.

 

HMOVE cancels out the starfield effect.


Indeed it does. But if you're already hitting HMOVE continuously, you can move some object(s) in large amounts each time, and get pretty much the same visual result as the starfield effect.

It's technically not the starfield effect, since it doesn't utilize the TIA bug, but I think the TIA bug version amounts to the same thing - the object keeps getting (automatically) shifted large amounts each scanline.

As a bonus, the "hit HMOVE every scanline" version of the effect should be universal and consistent between TIA versions, unlike the TIA bug version.

I have a bB DPC+ example near the top of this thread, which includes a binary.

#45 Mountain King OFFLINE  

Mountain King

    Dragonstomper

  • 679 posts
  • Location:Philadelphia, PA

Posted Wed Dec 27, 2017 11:45 PM

I updated to the latest bb. That did it. Thank you.






0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users