Difference between revisions of "Sega Mega Drive/Scrolling"

From Sega Retro

(Created page with "The Sega Mega Drive is able to '''scroll''' the background and foreground (planes B & A) independently, both horizontally and vertically. ==Horizontal scrolling== Horizon...")
 
Line 1: Line 1:
The [[Sega Mega Drive]] is able to '''scroll''' the background and foreground (planes B & A) independently, both horizontally and vertically.
+
The [[Sega Mega Drive]] is able to '''scroll''' the background and foreground ([[Sega Mega Drive/Planes|planes]] B & A) independently, both horizontally and vertically.
  
 
==Horizontal scrolling==
 
==Horizontal scrolling==
Line 28: Line 28:
  
 
==Vertical scrolling==
 
==Vertical scrolling==
 +
The vertical scrolling table is located in VSRAM. Its format is set by [[Sega Mega Drive/VDP registers#0B|register $0B]]. There are only two types of vertical scrolling: whole screen and 16 pixel strips:
 +
 +
{|
 +
! Type || Space in VSRAM || Format || Code
 +
|-
 +
| Whole screen
 +
| 4 bytes
 +
| <tt>FFFF BBBB</tt>
 +
* 1st word controls foreground
 +
* 2nd word controls background
 +
| As above.
 +
|-
 +
| 16 pixel strips
 +
| 64 ($40) bytes (256 pixel wide mode)<br>80 ($50) bytes (320 pixel wide mode)
 +
| <tt>FFFF BBBB FFFF BBBB FFFF BBBB...</tt>
 +
* Alternating words control foreground and background strips
 +
| with whole screen horizontal:<pre>move.w #$8B04,($c00004).l</pre>
 +
with 8 pixel horizontal:<pre>move.w #$8B06,($c00004).l</pre>
 +
with scanline horizontal:<pre>move.w #$8B07,($c00004).l</pre>
 +
|}
  
 
[[Category:Sega Mega Drive|Scrolling]]
 
[[Category:Sega Mega Drive|Scrolling]]
 
[[Category:Unofficial documentation]]
 
[[Category:Unofficial documentation]]

Revision as of 15:56, 16 June 2018

The Sega Mega Drive is able to scroll the background and foreground (planes B & A) independently, both horizontally and vertically.

Horizontal scrolling

Horizontal scrolling is controlled by a table located in VRAM. The address for the table is set by VDP register $0D, while the format is set by register $0B. There are three possible settings for this register:

Type Space in VRAM Format Code
Whole screen 4 bytes FFFF BBBB
  • 1st word controls foreground
  • 2nd word controls background
move.w #$8B00,($c00004).l
8 pixel strips 112 ($70) bytes (NTSC)
120 ($78) bytes (PAL)
FFFF BBBB FFFF BBBB FFFF BBBB...
  • Alternating words control foreground and background strips
move.w #$8B02,($c00004).l
Per scanline 896 ($380) bytes (NTSC)
960 ($3C0) bytes (PAL)
FFFF BBBB FFFF BBBB FFFF BBBB...
  • Alternating words control foreground and background scanlines
move.w #$8B03,($c00004).l

Vertical scrolling

The vertical scrolling table is located in VSRAM. Its format is set by register $0B. There are only two types of vertical scrolling: whole screen and 16 pixel strips:

Type Space in VSRAM Format Code
Whole screen 4 bytes FFFF BBBB
  • 1st word controls foreground
  • 2nd word controls background
As above.
16 pixel strips 64 ($40) bytes (256 pixel wide mode)
80 ($50) bytes (320 pixel wide mode)
FFFF BBBB FFFF BBBB FFFF BBBB...
  • Alternating words control foreground and background strips
with whole screen horizontal:
move.w #$8B04,($c00004).l
with 8 pixel horizontal:
move.w #$8B06,($c00004).l
with scanline horizontal:
move.w #$8B07,($c00004).l