![]() |
Routines |
Prev: 40955 | Up: Map | Next: 41060 |
Used by the routines at DrawInventory and MenuIcons.
|
||||||||
SetEntityAttributes | 40974 | LD A,(IX+3) | Write the entity X position to Saved_X. | |||||
40977 | LD (24086),A | |||||||
40980 | LD A,(IX+4) | Write the entity X position to Saved_Y. | ||||||
40983 | LD (24087),A | |||||||
This entry point is used by the routines at HandlerWeapon, HandlerBatlet, HandlerKnight and HandlerCaveDoorLocked.
|
||||||||
SetEntityAttributes_0 | 40986 | LD L,(IX+3) | HL=Entity screen position. | |||||
40989 | LD H,(IX+4) | |||||||
40992 | LD D,(IX+5) | D=Entity attribute. | ||||||
40995 | LD A,(24090) | E=Room attribute. | ||||||
40998 | LD E,A | |||||||
40999 | LD A,(24080) | B=Entity width in bytes. | ||||||
41002 | LD B,A | |||||||
41003 | LD A,(24081) | A=Entity height in pixels. | ||||||
41006 | RRCA | Divide by 4. | ||||||
41007 | RRCA | |||||||
41008 | INC A | Increment A by one. | ||||||
41009 | RRCA | Divide by 2. | ||||||
41010 | AND %00011111 | Keep only bits 0-4. | ||||||
41012 | INC A | Increment A by one. | ||||||
41013 | LD C,A | Store the result in C. | ||||||
41014 | PUSH BC | Stash BC on the stack. | ||||||
41015 | LD B,0 | B=0. | ||||||
41017 | LD A,(24086) | Compare Saved_X against L to see if the X position is unchanged. | ||||||
41020 | CP L | |||||||
41021 | JR Z,SetEntityAttributes_2 | If it hasn't changed then jump to SetEntityAttributes_2. | ||||||
41023 | JR C,SetEntityAttributes_1 | If the entity has moved left then jump to SetEntityAttributes_1. | ||||||
41025 | INC B | B=B + 1. | ||||||
SetEntityAttributes_1 | 41026 | INC B | B=B + 1. | |||||
SetEntityAttributes_2 | 41027 | LD A,(24087) | Compare Saved_Y against H to see if the Y position is unchanged. | |||||
41030 | CP H | |||||||
41031 | LD A,B | A=B. | ||||||
41032 | JR Z,SetEntityAttributes_4 | If it hasn't changed then jump to SetEntityAttributes_4. | ||||||
41034 | JR C,SetEntityAttributes_3 | If the entity has moved up then jump to SetEntityAttributes_3. | ||||||
41036 | ADD A,4 | A=A + 4. | ||||||
SetEntityAttributes_3 | 41038 | ADD A,4 | A=A + 4. | |||||
SetEntityAttributes_4 | 41040 | LD B,A | Stash the result in B. | |||||
41041 | CALL AttributeAddress | Call AttributeAddress. | ||||||
41044 | LD A,B | Restore the result back into A. | ||||||
41045 | POP BC | |||||||
41046 | PUSH HL | |||||||
41047 | LD HL,41060 | HL=AttributeJumpTable. | ||||||
41050 | SLA A | A=A * 2. | ||||||
41052 | CALL HandlerCaveDoorLocked_1 | Call HandlerCaveDoorLocked_1. | ||||||
41055 | LD A,(HL) | HL=attribute routine selected from AttributeJumpTable. | ||||||
41056 | INC HL | |||||||
41057 | LD H,(HL) | |||||||
41058 | LD L,A | |||||||
41059 | JP (HL) | Indirect jump to the address held in HL. |
Prev: 40955 | Up: Map | Next: 41060 |