Prev: E4CF Up: Map Next: E52B
E4F1: Draw Mirrored Three Byte Rows
Draws a piece of terrain that is three bytes wide in the same way as DrawThreeByteRows, but passes every byte through the table of reversed bytes at F900 so that the piece is drawn back to front. The entry points at DrawMirroredThreeByteRows and DrawMirroredThreeByteRows_Two first move to the left by three columns and two columns.
Input
A Number of pairs of pixel rows to draw
HL Screen address of the bottom left of the piece
SP Address of the picture
DrawMirroredThreeByteRows E4F1 DEC L Step L back.
DrawMirroredThreeByteRows_Two E4F2 DEC L Step L back.
E4F3 DEC L Step L back.
DrawMirroredThreeByteRows_Start E4F4 LD B,$F9 B=F9.
E4F6 EXX Switch to the alternate registers.
E4F7 LD B,A B=A.
DrawMirroredThreeByteRows_Loop E4F8 EXX Switch to the alternate registers.
E4F9 POP DE Bring DE back off the stack.
E4FA LD C,E C=E.
E4FB LD A,(BC) Read BC.
E4FC LD (HL),A Write A where HL points.
E4FD INC L Advance L.
E4FE LD C,D C=D.
E4FF LD A,(BC) Read BC.
E500 LD (HL),A Write A where HL points.
E501 INC L Advance L.
E502 POP DE Bring DE back off the stack.
E503 LD C,E C=E.
E504 LD A,(BC) Read BC.
E505 LD (HL),A Write A where HL points.
E506 DEC H Step H back.
E507 LD C,D C=D.
E508 LD A,(BC) Read BC.
E509 LD (HL),A Write A where HL points.
E50A DEC L Step L back.
E50B POP DE Bring DE back off the stack.
E50C LD C,E C=E.
E50D LD A,(BC) Read BC.
E50E LD (HL),A Write A where HL points.
E50F DEC L Step L back.
E510 LD C,D C=D.
E511 LD A,(BC) Read BC.
E512 LD (HL),A Write A where HL points.
E513 DEC H Step H back.
E514 LD A,H A=H.
E515 INC A Advance A.
E516 AND %00000111 Keep the bits of A that are set in 07.
E518 JR NZ,DrawMirroredThreeByteRows_Next Jump to DrawMirroredThreeByteRows_Next if the zero flag is clear.
E51A LD A,L A=L.
E51B SUB $20 Subtract 20 from A.
E51D LD L,A L=A.
E51E JR C,DrawMirroredThreeByteRows_Next Jump to DrawMirroredThreeByteRows_Next if the carry flag is set.
E520 LD A,H A=H.
E521 ADD A,$08 Add 08 to A.
E523 LD H,A H=A.
DrawMirroredThreeByteRows_Next E524 EXX Switch to the alternate registers.
E525 DJNZ DrawMirroredThreeByteRows_Loop Decrease B and jump to DrawMirroredThreeByteRows_Loop until none remain.
E527 EXX Switch to the alternate registers.
E528 JP FinishStep Jump to FinishStep.
Prev: E4CF Up: Map Next: E52B