| 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.
|
||||||||||
| 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 |