Prev: B715 Up: Map Next: B7BA
B77B: Print an inventory graphic
Used by the routine at E41D.
Input
A The item number to display
D The y co-ordinate
E The x co-ordinate
B77B PUSH AF Store the main registers.
B77C PUSH HL
B77D PUSH BC
B77E PUSH DE
B77F LD C,E Put the X co-ordinate in C.
B780 LD L,D Put the Y co-ordinate in L.
B781 LD D,$00 Start at row 0.
B783 LD H,D Get the current row.
B784 LD B,D Store this in B.
B785 ADD HL,HL Multiply by 16 to get a suitable screen offset.
B786 ADD HL,HL
B787 ADD HL,HL
B788 ADD HL,HL
B789 LD DE,$81F8 Add the base address of the screen offsets table. (81F8)
B78C ADD HL,DE
B78D PUSH HL Put this screen address in IX.
B78E POP IX
B790 LD L,A Put the item in HL.
B791 LD H,$00
B793 ADD HL,HL Multply by 32 to get a suitable graphic offset.
B794 ADD HL,HL
B795 ADD HL,HL
B796 ADD HL,HL
B797 ADD HL,HL
B798 LD DE,$8378 Add the base address of the graphic table. (8378)
B79B ADD HL,DE
B79C EX DE,HL Swap DE and HL.
B79D LD A,$10 Number of entries to display.
B79F LD L,(IX+$00) Get the screen address to copy to.
B7A2 LD H,(IX+$01)
B7A5 ADD HL,BC Add the relevant row.
B7A6 INC IX Move down a row.
B7A8 INC IX
B7AA EX DE,HL Swap HL and DE to do a copy.
B7AB LDI Copy the two columns.
B7AD LDI
B7AF EX DE,HL Swap HL and DE.
B7B0 INC BC Move forward to the next UDG position.
B7B1 INC BC
B7B2 DEC A Loop while there is more to display.
B7B3 JR NZ,$B79F
B7B5 POP DE Restore the main registers and return.
B7B6 POP BC
B7B7 POP HL
B7B8 POP AF
B7B9 RET
Prev: B715 Up: Map Next: B7BA