.segment "CODE" .proc main main: ; Initialize PPU LDA #%10000000 ; Set the bit 7 to $2000 to use $2000-$2FFF for nametables STA $2000 LDA #%00011110 ; Enable rendering, enable sprites, and make sure background is visible STA $2001 ; Load sprite data into OAM LDX #0 ; Initialize X register to zero LDA SpriteData,X ; Load the first byte of sprite data STA $0200,X ; Store it in the Object Attribute Memory (OAM) INX ; Increment X to load the next byte LDA SpriteData,X ; Load the second byte of sprite data (attributes) STA $0200,X ; Store it in OAM INX ; Increment X to load the next byte (X position) LDA SpriteData,X ; Load the third byte of sprite data (X position) STA $0200,X ; Store it in OAM ; Infinite loop forever: JMP forever .endproc .segment "DATA" SpriteData: .byte $00 ; Tile index for the sprite .byte $20 ; Attributes (palette, flipping, etc.) .byte $80 ; X position of the sprite ; Additional sprite data can be added here .segment "BSS" ; Define uninitialized memory (if needed)