To display sprites, a program builds a display list in a 256-byte page of CPU RAM, sometimes called "shadow OAM". Then the program copies it to OAM in the PPU during the next vertical blanking period by writing the high byte of the display list's address to $4014. For example, if it places the display list at $0200-$02FF, it writes $02 to $4014.
Occasionally, programmers get the idea to define variables so as to hardcode the position of a particular actor in the display list, using code similar to the following:
OAM = $0200 player_oam_base = OAM + $04 ; skip sprite 0 player_y = player_oam_base + $00 player_tile = player_oam_base + $01 player_palette = player_oam_base + $02 player_x = player_oam_base + $03
In all but the simplest cases, hardcoding OAM addresses of actors is an anti-pattern because it limits the ability to do several things:
A better way:
That way, you can perform flicker by varying the order in which actors are drawn during step 3. And if you skip drawing a sprite because it is offscreen, you can skip increasing the OAM used variable.