Prev: B76C Up: Map Next: B828
B7EF: Masked sprite plotter variant TBD
Used by the routine at draw_object_right.
Input
BC'
HL'
E' this value is multiplied
plot_masked_sprite_variant B7EF LD ($B720),SP Self modify B71F - exit of plot_masked_sprite to be SP to be restored on exit
B7F3 LD IX,$B729 Point IX at pms_jumptable
B7F7 CPL A = 8 - A -- jump table index
B7F8 ADD A,$09
B7FA RLCA IX += A * 6 -- jump table entry size
B7FB LD C,A
B7FC RLCA
B7FD ADD A,C
B7FE LD C,A
B7FF LD B,$00
B801 ADD IX,BC
B803 LD B,$0F B' = $0F
B805 EXX
B806 LD D,$00 D = 0
B808 PUSH BC pushing banked-on-entry BC
B809 PUSH HL pushing banked-on-entry HL
B80A LD H,D Zero HL
B80B LD L,D
Multiplier
B80C LD A,B A = B
B80D LD B,$05 5 iterations
B80F DEC A A = (A - 1) * 4
B810 RLA
B811 RLA
pmsv_loop B812 RLA Test top bit
B813 JR NC,pmsv_2 Jump if not set
B815 ADD HL,DE HL += DE
pmsv_2 B816 ADD HL,HL Double HL
B817 DJNZ pmsv_loop Loop until iterations is zero
B819 RLA Test top bit
B81A JR NC,pmsv_3 Jump if not set
B81C ADD HL,DE HL += DE
pmsv_3 B81D POP BC pop and add banked-on-entry BC
B81E ADD HL,BC
B81F POP BC pop banked-on-entry HL
B820 DEC D D-- -- always setting D to 255?
B821 LD A,E E = -E
B822 NEG
B824 LD E,A
HL -> graphic data here
B825 JP pms_entry Exit via pms_entry
Prev: B76C Up: Map Next: B828