Routines |
Prev: 43308 | Up: Map | Next: 43647 |
Used by the routines at Handler_Move_Characters and 60161.
|
||||
Handler_PickUpObjects | 43568 | PUSH HL | Stash HL on the stack. | |
43569 | CALL Handler_ItemsCurrentRoom | Call Handler_ItemsCurrentRoom. | ||
43572 | INC HL | Increment HL by three. | ||
43573 | INC HL | |||
43574 | INC HL | |||
43575 | LD A,(HL) | |||
43576 | AND (IY-40) | |||
43579 | JR Z,Handler_PickUpObjects_1 | |||
43581 | LD A,(HL) | |||
43582 | AND %10000000 | Keep only bit 7. | ||
43584 | JR Z,Handler_PickUpObjects_0 | |||
43586 | PUSH HL | Stash HL on the stack. | ||
43587 | CALL Character_Active | Call Character_Active. | ||
43590 | POP HL | Restore HL from the stack. | ||
43591 | JR NZ,Handler_PickUpObjects_1 | |||
Handler_PickUpObjects_0 | 43593 | LD A,(HL) | ||
43594 | RES 7,A | |||
43596 | LD D,A | |||
43597 | LD A,(HL) | |||
43598 | AND %10000000 | Keep only bit 7. | ||
43600 | OR (IY-50) | |||
43603 | LD (HL),A | |||
43604 | LD A,(IY-55) | |||
43607 | LD (IY-50),A | |||
43610 | LD (IY-55),D | |||
Fetch the item 2 ID, we're about to drop it.
|
||||
43613 | LD A,(IY+85) | A=*IY+85. | ||
43616 | DEC HL | Decrease HL by three. | ||
43617 | DEC HL | |||
43618 | DEC HL | |||
Fetch the picked up item ID.
|
||||
43619 | LD E,(HL) | E=*HL. | ||
Write the dropped item ID to *HL.
|
||||
43620 | LD (HL),A | Write A to *HL. | ||
Move the characters collected item 1 to item 2.
|
||||
43621 | LD A,(IY+80) | A=*IY+80. | ||
43624 | LD (IY+85),A | Write A to *IY+85. | ||
Write the picked up item to the characters item 1.
|
||||
43627 | LD (IY+80),E | Write E to *IY+80. | ||
43630 | CALL Character_Active | Call Character_Active. | ||
43633 | CALL Z,58397 | |||
Handler_PickUpObjects_1 | 43636 | LD A,(47441) | ||
43639 | CP (IY+15) | |||
43642 | CALL Z,Sounds_PickUp | |||
43645 | POP HL | Restore HL from the stack. | ||
43646 | RET | Return. |
Prev: 43308 | Up: Map | Next: 43647 |