Prev: 6F80 Up: Map Next: 6FE6
6FBB: Render rock sprite
Renders a rock decoration at the specified position. Uses 3x2 tile sprites (24x16 pixels) stored sequentially at sprite_rock with $30 bytes per frame.
Input
D Object type byte (bits 0-2 = rock frame index)
E X position
render_rock 6FBB LD A,D Extract rock frame index: A = D AND $07. Set flags with OR A.
6FBC AND $07
6FBE OR A
6FBF LD HL,$84A1 Load sprite base address sprite_rock and frame size $30. Prepare loop: INC A, subtract BC once to offset the first ADD.
6FC2 LD BC,$0030
6FC5 INC A
6FC6 SBC HL,BC
locate_rock_sprite 6FC8 ADD HL,BC Loop: HL += $30 for each frame index. Result: HL = sprite_rock + (frame * $30).
6FC9 DEC A
6FCA JR NZ,locate_rock_sprite
6FCC LD B,$00 Set BC = X position (B=0, C=E from input).
6FCE LD C,E
6FCF LD ($8B0E),HL Store rendering state: sprite pointer at render_sprite_ptr, X position at object_coordinates and previous_object_coordinates (duplicated). Load erase sprite sprite_erasure.
6FD2 LD HL,$82F5
6FD5 LD ($8B0C),BC
6FD9 LD ($8B0A),BC
6FDD LD A,$03 Set dimensions: A=3 (width in tiles), D=$10 (height 16 pixels), E=$14 (attributes). Render rock.
6FDF LD DE,$1014
6FE2 CALL render_object
6FE5 RET
Prev: 6F80 Up: Map Next: 6FE6