![]() |
Routines |
| Prev: E1CC | Up: Map | Next: E46C |
|
Used by the routine at Dispatch_Handlers.
Animates the 0D-byte records at *ReferenceActors.
|
||||
| Handler_Actors | E3DE | CALL Build_PlayerMask | Call Build_PlayerMask. | |
| E3E1 | LD IX,($6430) | IX=*ReferenceActors. | ||
| Handler_Actors_Loop | E3E5 | LD A,(IX+$00) | Return if the terminator FF is reached. | |
| E3E8 | INC A | |||
| E3E9 | RET Z | |||
| E3EA | BIT 7,A | Jump to Handler_Actors_Next if this actor is inactive. | ||
| E3EC | JR NZ,Handler_Actors_Next | |||
|
Test this actor against the player.
|
||||
| E3EE | PUSH IY | Stash IY on the stack. | ||
| E3F0 | PUSH IX | Copy IX to IY (using the stack). | ||
| E3F2 | POP IY | |||
| E3F4 | CALL Test_ActorCollision | Call Test_ActorCollision. | ||
| E3F7 | POP IY | Restore IY from the stack. | ||
| E3F9 | CALL JumpTable_UpdateActor | Call JumpTable_UpdateActor. | ||
| E3FC | BIT 7,(IX+$07) | Restore the stored row when bit 7 of *IX+07 is set. | ||
| E400 | JR Z,Handler_Actors_Commit | |||
| E402 | RES 7,(IX+$07) | |||
| E406 | LD A,(IX+$0B) | |||
| E409 | LD (IX+$01),A | |||
|
Store the new position.
|
||||
| Handler_Actors_Commit | E40C | CALL JumpTable_AdvanceEntity | Call JumpTable_AdvanceEntity. | |
| E40F | LD (IX+$00),C | Store the new column, row, fine-X and fine-Y. | ||
| E412 | LD (IX+$01),B | |||
| E415 | LD (IX+$02),E | |||
| E418 | LD (IX+$03),D | |||
| E41B | CALL JumpTable_DrawActor | Call JumpTable_DrawActor. | ||
| Handler_Actors_Next | E41E | LD DE,$000D | IX+=000D. | |
| E421 | ADD IX,DE | |||
| E423 | JR Handler_Actors_Loop | Jump to Handler_Actors_Loop. | ||
| E425 | RET | Return. | ||
|
Lock or reverse an actor after a collision.
|
||||
| Actor_AfterCollision | E426 | CP $02 | Jump to Actor_Lock if the actor type is 02. | |
| E428 | JP Z,Actor_Lock | |||
| E42B | CALL Actor_SwapDestination | Call Actor_SwapDestination. | ||
| E42E | XOR A | Write 00 to both actor deltas. | ||
| E42F | LD (IY+$08),A | |||
| E432 | LD (IY+$09),A | |||
| E435 | RET | Return. | ||
| Actor_Lock | E436 | SET 7,(IY+$07) | Set bit 7 of *IY+07. | |
| E43A | RET | Return. | ||
|
This entry point is used by the routine at Handler_PendulumRooms.
|
||||
| Actor_Reverse | E43B | LD A,(IY+$0C) | Jump to Actor_AfterCollision if *IY+0C is set. | |
| E43E | OR A | |||
| E43F | JR NZ,Actor_AfterCollision | |||
| Actor_SwapDestination | E441 | LD A,(IY+$05) | Swap *IY+05 with *IY+0A. | |
| E444 | LD C,(IY+$0A) | |||
| E447 | LD (IY+$05),C | |||
| E44A | LD (IY+$0A),A | |||
| E44D | LD A,(IY+$06) | Swap *IY+06 with *IY+0B. | ||
| E450 | LD C,(IY+$0B) | |||
| E453 | LD (IY+$0B),A | |||
| E456 | LD (IY+$06),C | |||
| E459 | LD A,(IY+$08) | A=*IY+08-01. | ||
| E45C | DEC A | |||
| E45D | XOR %11111111 | Invert every bit. | ||
| E45F | LD (IY+$08),A | Write the new horizontal delta. | ||
| E462 | LD A,(IY+$09) | A=*IY+09-01. | ||
| E465 | DEC A | |||
| E466 | XOR %11111111 | Invert every bit. | ||
| E468 | LD (IY+$09),A | Write the new vertical delta. | ||
| E46B | RET | Return. | ||
| Prev: E1CC | Up: Map | Next: E46C |