Screen Refusing to Scroll

User avatar
FormulaFanboy
Posts: 59
Joined: Fri Jul 26, 2019 6:53 pm
Contact:

Re: Screen Refusing to Scroll

Post by FormulaFanboy » Tue Aug 27, 2019 2:05 am

I just noticed it's also happening on the screen above; so not only is this not a scrolling issue, it's not a screen issue either. It's happening on the entire vertical line.
EDIT: It's also happening in both the overworld and the underworld.
User avatar
Mugi
Posts: 717
Joined: Thu Dec 27, 2018 8:30 pm

Re: Screen Refusing to Scroll

Post by Mugi » Tue Aug 27, 2019 2:38 am

making the right edge tiles walkable fixes it is SOME cases. not all.
it's a bit more involved than just an edge wrap in it's entirety and its really a sum of a lot of things. On one hand, it's related to collision, on the other hand it's related to wrapping of attribute tables,
and thirdly it's related to the actual reason why the nametables wrap as they do, which is camera movement. Thats why the posted fix seemed to fix it for the noscroll module, because the noscroll module doesnt deal with the camera
the same way scrolling modules do. (a simple extra check in those cases allowed the problem to more or less 100% vanish.)

This bug got a little better in my own project since the camerahandler is rewritten and it now correcly centers itself, preventing the edge wraps in some cases, but even so, it is still there,
and its the main reason why my project will eventually get the collision engine completely rewritten. This one can be band-aided with lots of band-aids but at the end of the day, might as well get it solved for good.

as far as coming up with a quick solution, no idea really, I'm more or less ignoring it for the time being until we get to properly dig into the root cause and see what has to be done in order to solve it the proper way.

there is a way to manipulate the occurrence of it to an extend by messing with the player speed, acceleration, and the scroll padding values though, which also further confirms the root cause.
if you set your player speed / scroll pad ratios in such a manner that the camera always moves a set amount of pixels and will never "go over" the edge (depends on movement speed and acceleration values) then the table will not wrap
and you wont have an invisible wall.

as for why the walls appear regardless of if the right edge is solid or not, it's because when you start scrolling left, the scroll buffers up half a screen worth of level data outside of the camera, and the moment it needs to pull more, unless you are dead-centered with your camera, it will pull the overflow column from the right edge (half a screen outside of the camera to the right if my memory serves me) and whatever happens to be there at that particular moment, will appear to the left nametable.
"what are you up to?" "Oh, not much... just... Parallaxing"
- Raftronaut
User avatar
FormulaFanboy
Posts: 59
Joined: Fri Jul 26, 2019 6:53 pm
Contact:

Re: Screen Refusing to Scroll

Post by FormulaFanboy » Tue Aug 27, 2019 3:23 am

Mugi wrote:
Tue Aug 27, 2019 2:38 am
making the right edge tiles walkable fixes it is SOME cases. not all.
it's a bit more involved than just an edge wrap in it's entirety and its really a sum of a lot of things. On one hand, it's related to collision, on the other hand it's related to wrapping of attribute tables,
and thirdly it's related to the actual reason why the nametables wrap as they do, which is camera movement. Thats why the posted fix seemed to fix it for the noscroll module, because the noscroll module doesnt deal with the camera
the same way scrolling modules do. (a simple extra check in those cases allowed the problem to more or less 100% vanish.)

This bug got a little better in my own project since the camerahandler is rewritten and it now correcly centers itself, preventing the edge wraps in some cases, but even so, it is still there,
and its the main reason why my project will eventually get the collision engine completely rewritten. This one can be band-aided with lots of band-aids but at the end of the day, might as well get it solved for good.

as far as coming up with a quick solution, no idea really, I'm more or less ignoring it for the time being until we get to properly dig into the root cause and see what has to be done in order to solve it the proper way.

there is a way to manipulate the occurrence of it to an extend by messing with the player speed, acceleration, and the scroll padding values though, which also further confirms the root cause.
if you set your player speed / scroll pad ratios in such a manner that the camera always moves a set amount of pixels and will never "go over" the edge (depends on movement speed and acceleration values) then the table will not wrap
and you wont have an invisible wall.

as for why the walls appear regardless of if the right edge is solid or not, it's because when you start scrolling left, the scroll buffers up half a screen worth of level data outside of the camera, and the moment it needs to pull more, unless you are dead-centered with your camera, it will pull the overflow column from the right edge (half a screen outside of the camera to the right if my memory serves me) and whatever happens to be there at that particular moment, will appear to the left nametable.
I think I was wrong about it being a scrolling issue, because it apparently happens on every (far right) screen on both overworld & underworld, and it seems to happen even before the screen scrolls at all (also it happens even if scrolling is disabled altogether).
User avatar
dale_coop
Posts: 4236
Joined: Fri Feb 16, 2018 7:05 am
Location: France

Re: Screen Refusing to Scroll

Post by dale_coop » Tue Aug 27, 2019 6:22 am

FormulaFanboy
It’s a bug from the 4.1.5 itself. The edge collision is not correctly detected.
This issue was actually fixed in the 4.1.1 via a patch. But who knows why, not included in the 4.1.5.
The batch is still downloadable here
http://joshuafallon.com/nesmaker/?fbclid=IwAR1ZQaSV0CURv4vQv02i6BcKAM2u8zTpvwXfeye5uCeubdqc7lNThc2drnc

Install it via the menu “Project”, then “Run Project Script”.
-----
Sorry about my poor english
All I need: A Damn Fine Cup of Coffee
My games: PRESS START GAME / UNDERGROUND ADVENTURE / UNDERGROUND ADVENTURE (Arcade version - Byte-Off-2019)
User avatar
FormulaFanboy
Posts: 59
Joined: Fri Jul 26, 2019 6:53 pm
Contact:

Re: Screen Refusing to Scroll

Post by FormulaFanboy » Tue Aug 27, 2019 7:10 am

dale_coop wrote:
Tue Aug 27, 2019 6:22 am
FormulaFanboy
It’s a bug from the 4.1.5 itself. The edge collision is not correctly detected.
This issue was actually fixed in the 4.1.1 via a patch. But who knows why, not included in the 4.1.5.
The batch is still downloadable here
http://joshuafallon.com/nesmaker/?fbclid=IwAR1ZQaSV0CURv4vQv02i6BcKAM2u8zTpvwXfeye5uCeubdqc7lNThc2drnc

Install it via the menu “Project”, then “Run Project Script”.
It's telling me that it already exists, should I overwrite it?
Attachments
v.png
v.png (6.1 KiB) Viewed 214 times
User avatar
FormulaFanboy
Posts: 59
Joined: Fri Jul 26, 2019 6:53 pm
Contact:

Re: Screen Refusing to Scroll

Post by FormulaFanboy » Tue Aug 27, 2019 7:59 am

dale_coop wrote:
Tue Aug 27, 2019 6:22 am
FormulaFanboy
It’s a bug from the 4.1.5 itself. The edge collision is not correctly detected.
This issue was actually fixed in the 4.1.1 via a patch. But who knows why, not included in the 4.1.5.
The batch is still downloadable here
http://joshuafallon.com/nesmaker/?fbclid=IwAR1ZQaSV0CURv4vQv02i6BcKAM2u8zTpvwXfeye5uCeubdqc7lNThc2drnc

Install it via the menu “Project”, then “Run Project Script”.
Okay, I applied the patch, but the issue still persists... now what?
User avatar
dale_coop
Posts: 4236
Joined: Fri Feb 16, 2018 7:05 am
Location: France

Re: Screen Refusing to Scroll

Post by dale_coop » Tue Aug 27, 2019 1:12 pm

Now, as Mugi said... it might be an issue in the scrolling engine. So try to design your screens wisely (don't put any solid/death/particular tile near the edges of the screen), and it should work almost correctly.
You could also use jorotroid scrolling core. Or wait that someone fix the whole engine... or wait for the 5.0.
-----
Sorry about my poor english
All I need: A Damn Fine Cup of Coffee
My games: PRESS START GAME / UNDERGROUND ADVENTURE / UNDERGROUND ADVENTURE (Arcade version - Byte-Off-2019)
User avatar
FormulaFanboy
Posts: 59
Joined: Fri Jul 26, 2019 6:53 pm
Contact:

Re: Screen Refusing to Scroll

Post by FormulaFanboy » Tue Aug 27, 2019 3:05 pm

dale_coop wrote:
Tue Aug 27, 2019 1:12 pm
Now, as Mugi said... it might be an issue in the scrolling engine. So try to design your screens wisely (don't put any solid/death/particular tile near the edges of the screen), and it should work almost correctly.
You could also use jorotroid scrolling core. Or wait that someone fix the whole engine... or wait for the 5.0.
Well unfortunately for me, I've already completed designing all the levels... however, for the sake of experiment, I will try removing all the specific tiles from the edge, and see if it does anything. It would really suck if this was truly the only fix for this issue... I really hope it isn't something with the engine. Thanks so much for all the help.
User avatar
dale_coop
Posts: 4236
Joined: Fri Feb 16, 2018 7:05 am
Location: France

Re: Screen Refusing to Scroll

Post by dale_coop » Tue Aug 27, 2019 3:11 pm

Sorry to say that, but it IS definitely an issue with the engine. We all know that (even Joe knows that).
We just need to find workarounds
I think Mugi fixeed a lot of those issues when he re-wrote the scrolling engine for his game.
-----
Sorry about my poor english
All I need: A Damn Fine Cup of Coffee
My games: PRESS START GAME / UNDERGROUND ADVENTURE / UNDERGROUND ADVENTURE (Arcade version - Byte-Off-2019)
User avatar
Mugi
Posts: 717
Joined: Thu Dec 27, 2018 8:30 pm

Re: Screen Refusing to Scroll

Post by Mugi » Tue Aug 27, 2019 3:53 pm

dale_coop wrote:
Tue Aug 27, 2019 3:11 pm
Sorry to say that, but it IS definitely an issue with the engine. We all know that (even Joe knows that).
We just need to find workarounds
I think Mugi fixeed a lot of those issues when he re-wrote the scrolling engine for his game.
not all of them but the rewrote of the camera handler and the NT/AT load routines did fix all the pertaining issues to incorrect tile and attribute loads.
my game still has this "invisible wall issue" as it requires a collision rewrite and some additional work regarding the way wrapping of tables happens.

it's a really deeep rooted problem with the basic mechanics of how the scroll is written and how it interacts with the collision and byt all means, I doubt it can be fixed at all using workarounds. It will simply require the whole thing
to be redesigned.

I'll be glad to be proven wrong though :P
"what are you up to?" "Oh, not much... just... Parallaxing"
- Raftronaut
Post Reply