2012-03-23 20:30:31 +00:00
< html >
< head >
< title > NES Scrolling 2< / title >
< meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" >
2012-08-08 15:00:14 +00:00
< meta name = "generator" content = "HelpNDoc Personal Edition 3.6.0.345" >
2012-03-23 20:30:31 +00:00
< link type = "text/css" rel = "stylesheet" media = "all" href = "css/reset.css" / >
< link type = "text/css" rel = "stylesheet" media = "all" href = "css/base.css" / >
< link type = "text/css" rel = "stylesheet" media = "all" href = "css/hnd.css" / >
<!-- [if lte IE 8]>
< link type = "text/css" rel = "stylesheet" media = "all" href = "css/ielte8.css" / >
<![endif]-->
2012-07-01 14:11:24 +00:00
< style type = "text/css" >
#topic_header
{
background-color: #EFEFEF;
}
< / style >
2012-03-23 20:30:31 +00:00
< script type = "text/javascript" src = "js/jquery.min.js" > < / script >
< script type = "text/javascript" src = "js/hnd.js" > < / script >
2012-08-08 15:00:14 +00:00
< script type = "text/javascript" >
2012-03-23 20:30:31 +00:00
if (top.frames.length == 0)
2012-07-01 14:11:24 +00:00
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
2012-03-23 20:30:31 +00:00
else if (top & & top.FrameTOC & & top.FrameTOC.SelectTocItem)
2012-07-01 14:11:24 +00:00
{
top.FrameTOC.SelectTocItem("NESScrolling2");
}
2012-03-23 20:30:31 +00:00
< / script >
< / head >
< body >
< div id = "topic_header" >
< div id = "topic_header_content" >
< h1 > NES Scrolling 2< / h1 >
< div id = "topic_breadcrumb" >
< a href = "Technicalinformation.html" > Technical Information< / a > › › < a href = "NESProcessor.html" > NES Processing< / a > › › < / div >
< / div >
< div id = "topic_header_nav" >
< a href = "NESProcessor.html" > < img src = "img/arrow_up.png" alt = "Parent" / > < / a >
< a href = "NESScrolling1.html" > < img src = "img/arrow_left.png" alt = "Previous" / > < / a >
< / div >
< div class = "clear" > < / div >
< / div >
< div id = "topic_content" >
< p > nes scrolling< / p >
2012-08-08 15:00:14 +00:00
< p > < br / > < / p >
2012-03-23 20:30:31 +00:00
< p > Date: Tue, 13 Apr 1999 17:48:54 -0600< / p >
< p > From: loopy < zxcvzxcv@netzero.net> < / p >
< p > Reply-To: nesdev@onelist.com< / p >
< p > To: nesdev@onelist.com< / p >
2012-08-08 15:00:14 +00:00
< p > < br / > < / p >
2012-03-23 20:30:31 +00:00
< p > From: loopy < zxcvzxcv@netzero.net> < / p >
2012-08-08 15:00:14 +00:00
< p > < br / > < / p >
2012-03-23 20:30:31 +00:00
< p > (more notes on ppu logic)< / p >
2012-08-08 15:00:14 +00:00
< p > < br / > < / p >
2012-03-23 20:30:31 +00:00
< p > you can think of bits 0,1,2,3,4 of the vram address as the "x scroll"(*8)< / p >
< p > that the ppu increments as it draws. as it wraps from 31 to 0, bit 10 is< / p >
< p > switched. you should see how this causes horizontal wrapping between name< / p >
< p > tables (0,1) and (2,3).< / p >
2012-08-08 15:00:14 +00:00
< p > < br / > < / p >
2012-03-23 20:30:31 +00:00
< p > you can think of bits 5,6,7,8,9 as the "y scroll"(*8). this functions< / p >
< p > slightly different from the X. it wraps to 0 and bit 11 is switched when< / p >
< p > it's incremented from _29_ instead of 31. there are some odd side effects< / p >
< p > from this.. if you manually set the value above 29 (from either 2005 or< / p >
< p > 2006), the wrapping from 29 obviously won't happen, and attrib data will be< / p >
< p > used as name table data. the "y scroll" still wraps to 0 from 31, but< / p >
< p > without switching bit 11. this explains why writing 240+ to 'Y' in 2005< / p >
< p > appeared as a negative scroll value.< / p >
2012-08-08 15:00:14 +00:00
< p > < br / > < / p >
2012-03-23 20:30:31 +00:00
< p class = "rvps2" > < span class = "rvts13" > Created with the Personal Edition of HelpNDoc: < / span > < a class = "rvts14" href = "http://www.helpndoc.com/help-authoring-tool" > Free help authoring tool< / a > < / p >
< / div >
< div id = "topic_footer" >
< div id = "topic_footer_content" >
2012< / div >
< / div >
< / body >
< / html >