Understanding clean X/Y split

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems. See the NESdev wiki for more information.

Moderator: Moderators

Post Reply
User avatar
GradualGames
Posts: 1106
Joined: Sun Nov 09, 2008 9:18 pm
Location: Pennsylvania, USA
Contact:

Understanding clean X/Y split

Post by GradualGames »

I've been studying this wiki article:

Split X Y Scroll

In order to get a split screen sufficient for scrolling a large boss on the screen. That was fairly easy to get working.

I decided to proceed to trying to create a generic system where I could specify as many split points as I wanted, so I could use this system both for scrolling a large boss around or for, say, parallax scrolling.

Once I got that working, I couldn't seem to get fine horizontal scrolling to work. I noticed the Split X Scroll section of the wiki is probably aimed towards this particular use case. I also noticed Doug's tutorial on splits use this latter technique.

So my question is, why can't I use the Split X Y Scroll to successfully arbitrarily set the fine X and Y scroll at the split point? I.e., as I increment X, the ppu seems to "pop" over a few pixels further rather than smoothly scrolling.

I'm fine with using the two techniques separately, just curious why Split X/Y can't be used in both cases (apparently).

*edit* I did find a couple of threads on this issue, and the only hint I could find towards my question was that I probably have the timing off; and that it's a bit trickier to get the fine timing right for clean X/Y scroll. I did try fiddling with the timing (the empty loop that pushes the code into the next hblank) but never got the "pop" to go away.
User avatar
Broke Studio
Formerly glutock
Posts: 181
Joined: Sat Aug 15, 2015 3:42 pm
Location: France
Contact:

Re: Understanding clean X/Y split

Post by Broke Studio »

I don't know if it'll help, but here's a good talk about the 2005/2006 split : viewtopic.php?p=78593#p78593
My first game : Twin Dragons available at Broke Studio.
User avatar
GradualGames
Posts: 1106
Joined: Sun Nov 09, 2008 9:18 pm
Location: Pennsylvania, USA
Contact:

Re: Understanding clean X/Y split

Post by GradualGames »

glutock wrote:I don't know if it'll help, but here's a good talk about the 2005/2006 split : viewtopic.php?p=78593#p78593
Yeah that's one of the ones I was looking at. I actually just figured it out, I missed an lsr when computing the formula listed in the wiki for the last write. Sweet, generic system working now.
Last edited by GradualGames on Thu Aug 03, 2017 7:42 am, edited 1 time in total.
User avatar
dougeff
Posts: 3079
Joined: Fri May 08, 2015 7:17 pm

Re: Understanding clean X/Y split

Post by dougeff »

I'm not clear on exactly what you are trying. Can you post code of every $2000,$2005,$2006 write?

When I am confused, I try to find a game that does what I want, and set breakpoints for scroll changes.
nesdoug.com -- blog/tutorial on programming for the NES
User avatar
rainwarrior
Posts: 8732
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Understanding clean X/Y split

Post by rainwarrior »

I think the result was just that the full X/Y scroll does work, but GradualGames had a bug that made it seem like it didn't.
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Understanding clean X/Y split

Post by tokumaru »

Good luck finding a game from back in the day that uses the $2006/5/5/6 trick. AFAIK, that was discovered by reverse engineering the hardware, not by looking at existing software. Old games did mess with $2005/6 mid-frame in various ways, but I don't think any of them managed to set arbitrary X/Y positions anywhere on the screen like we can now.
Post Reply