Shiru, on Sun Oct 30, 2005 1:05 PM, said:
- If RESx executed in horizontal blanking time (say, -4 pixel before visible part), object will be displayed partially?

The documentation says that the object will be displayed at the left edge of the screen, but that isn't quite right; it will be displayed *near* the left edge of the screen, but slightly to the right of the edge.
There is no way to partially display an object; if you display it far enough to the right, then the left side of the object will be displayed on the right side of the screen, and the right side of the object will wraparound to the left side of the screen.
Here are some notes I made for myself while tinkering with an emulator (I wasn't able to try it out on a real 2600):
________
The Ball
If the ball is displayed without issuing a positioning command, it will begin at screen position 96, or color clock 164 (i.e., where the first 68 color clocks occur during the horizontal blank).
If the RESBL command ends at machine cycle 22 or less (i.e., during the horizontal blank), then the ball will begin at screen position 2, or color clock 70.
If the RESBL command ends between machine cycles 22 through 74, inclusive, then the screen position of the ball will be 3 * (M - 21) - 1, where M is the machine cycle. Add 68 to the screen position to get the color clock.
If the RESBL command ends at machine cycle 75, then the ball will begin at screen position 1, or color clock 69.
If the RESBL command ends at machine cycle 76, then the ball will begin at screen position 2, or color clock 70.
________
The Missiles (same behavior as for the ball)
If missile 0 or missile 1 is displayed without issuing a positioning command, it will begin at screen position 96, or color clock 164.
If the RESM0 or RESM1 command ends at machine cycle 22 or less (i.e., during the horizontal blank), then missile 0 or missile 1 will begin at screen position 2, or color clock 70.
If the RESM0 or RESM1 command ends between machine cycles 22 through 74, inclusive, then the screen position of missile 0 or missile 1 will be 3 * (M - 21) - 1, where M is the machine cycle. Add 68 to the screen position to get the color clock.
If the RESM0 or RESM1 command ends at machine cycle 75, then missile 0 or missile 1 will begin at screen position 1, or color clock 69.
If the RESM0 or RESM1 command ends at machine cycle 76, then missile 0 or missile 1 will begin at screen position 2, or color clock 70.
________
The Players (*nearly* the same info as for the ball and missiles)
If player 0 or player 1 is displayed without issuing a positioning command, its leading edge (leftmost pixel) will begin at screen position 97, or color clock 165.
If the RESP0 or RESP1 command ends at machine cycle 22 or less (i.e., during the horizontal blank), then player 0 or player 1 will begin at screen position 3, or color clock 71.
If the RESP0 or RESP1 command ends between machine cycles 22 through 74, inclusive, then the screen position of player 0 or player 1 will be 3 * (M - 21), where M is the machine cycle. Add 68 to the screen position to get the color clock.
If the RESP0 or RESP1 command ends at machine cycle 75, then player 0 or player 1 will begin at screen position 2, or color clock 70.
If the RESP0 or RESP1 command ends at machine cycle 76, then player 0 or player 1 will begin at screen position 3, or color clock 71.
________
As you can see, the missiles (and the ball) are positioned one pixel to the left of the players. That is, if you display player 0 and missile 0 without any positioning commands, at single-width (i.e., each pixel is 1 color clock wide), you essentially get a "combined shape" that is 9 pixels wide-- the missile being the leftmost pixel of the "combined shape," followed by the 8 player pixels. Of course, they are still separate objects, but they will *look* like one object that's 9 pixels wide.
The only way to position an object at the left edge of the screen (screen position 0, or color clock 68) is to first position it *near* the left edge, then use an HMOVE to bump it a few pixels to the left. The closest you can get to the left edge of the screen *without* using HMOVE is to issue a RES* command that ends at machine cycle 75.
Michael Rideout