Prev: AC32 Up: Map Next: AC87
AC47: Plot pixel
Plot pixel in center enemies bit map. Used by the routine at display_center_enemies.
Input
Screen y
Screen x
HL Address in pixel_offsets_table
plot_pixel AC47 PUSH HL
AC48 LD A,D Screen y
AC49 SUB $50 - 80
AC4B SRL A / 2
AC4D AND $FC Y offset (byte offset * 4)
AC4F LD C,A Store in C
AC50 LD A,E Screen x
AC51 SUB $70 - 112
AC53 JR NC,plot_pixel_0 If < 0
AC55 XOR A Then set to 0
plot_pixel_0 AC56 CP $20 If < 32
AC58 JR C,plot_pixel_1 Then skip ahead
AC5A LD A,$0F ELse set to 15
plot_pixel_1 AC5C SRL A / 8
AC5E SRL A ...
AC60 SRL A ...
AC62 ADD A,C Add y offset
AC63 ADD A,A * 8
AC64 ADD A,A ...
AC65 ADD A,A ...
AC66 LD C,A Store in C
AC67 LD A,D Screen y
AC68 AND $07 Pixel offset within pattern
AC6A ADD A,C Add to offset
AC6B LD C,A Store in C
AC6C LD B,$00 B = 0
AC6E LD HL,(center_enemies_pattern) Get VDP address of centre enemy patterns
AC71 ADD HL,BC VDP address
AC72 LD A,E Screen x
AC73 AND $07 Pixel x offset within pattern
AC75 LD B,$80 Leftmost pixel
AC77 JR Z,plot_pixel_3 Skip ahead if zero offset
plot_pixel_2 AC79 SRL B Shift right 0-7 times
AC7B DEC A ...
AC7C JR NZ,plot_pixel_2 ...
plot_pixel_3 AC7E EX DE,HL DE = VDP address, HL = coordinates
AC7F CALL vdp_read_byte Read VDP byte
AC82 OR B Apply pixel
AC83 RST $10 Write VDP byte
AC84 EX DE,HL DE = coordinates
AC85 POP HL
AC86 RET
Prev: AC32 Up: Map Next: AC87