Routines |
Prev: E581 | Up: Map | Next: E6BC |
Used by the routine at InitialiseGame.
|
||||
Handler_Items | E5F4 | LD IX,($5BE0) | IX=*ReferenceItems. | |
Are we done?
|
||||
Handler_Items_Loop | E5F8 | LD A,(IX+$00) | Return if the terminator character has been received instead of a co-ordinate (FF). | |
E5FB | CP $FF | |||
E5FD | RET Z | |||
E5FE | LD C,A | C=A. | ||
E5FF | LD B,(IX+$01) | B=*IX+01. | ||
E602 | LD A,(IX+$05) | Jump to Handler_Items_Next if this item has already been "collected". | ||
E605 | CP $00 | |||
E607 | JR Z,Handler_Items_Next | |||
E609 | LD A,($F232) | A=*F232. | ||
E60C | DEC A | Decrease A by one. | ||
E60D | CP B | Jump to Handler_Items_Next if A is not equal to B. | ||
E60E | JR NZ,Handler_Items_Next | |||
E610 | LD A,($F231) | A=*TablePlayerAttributes. | ||
E613 | SUB C | A-=C. | ||
E614 | JR Z,Item_Collected | Jump to Item_Collected if A is either zero or FF. | ||
E616 | CP $FF | |||
E618 | JR Z,Item_Collected | |||
Handler_Items_Next | E61A | LD DE,$0007 | IX+=0007. | |
E61D | ADD IX,DE | |||
E61F | JR Handler_Items_Loop | Jump to Handler_Items_Loop. | ||
Item_Collected | E621 | CALL Controller_BombCheck | Call Controller_BombCheck. | |
E624 | LD A,$04 | Write 04 to *SoundFlag_General. | ||
E626 | LD ($FFFE),A | |||
E629 | LD A,$00 | A=00. | ||
E62B | LD D,$02 | DE=Set the sprite width/ height (02/ 02). | ||
E62D | LD E,$02 | |||
E62F | PUSH DE | Stash DE on the stack. | ||
E630 | CALL $E72F | Call E72F. | ||
E633 | CALL $0DD9 | Call CL_SET. | ||
E636 | POP DE | Restore DE from the stack. | ||
E637 | LD HL,$9F6C | Write 9F6C (Graphics_MaskSprite) to *CHARS. | ||
E63A | LD ($5C36),HL | |||
E63D | LD A,$20 | A=20. | ||
E63F | CALL PrintSprite | Call PrintSprite. | ||
E642 | LD (IX+$05),$00 | Write "collected" (00) to (*IX+05). | ||
E646 | LD A,$10 | Set INK: YELLOW (06). | ||
E648 | RST $10 | |||
E649 | LD A,$06 | |||
E64B | RST $10 | |||
E64C | LD A,$11 | Set PAPER: *Active_BorderColour. | ||
E64E | RST $10 | |||
E64F | LD A,($5BD0) | |||
E652 | RST $10 | |||
Restore the default ZX Spectrum font.
|
||||
E653 | LD HL,$3C00 | Write 3C00 (CHARSET-0100) to *CHARS. | ||
E656 | LD ($5C36),HL | |||
E659 | LD C,$13 | Set up the screen buffer location 13/01 using CL_SET. | ||
E65B | LD B,$01 | |||
E65D | CALL $0DD9 | |||
E660 | LD BC,($5BF4) | Increment *PlayerBooty by one. | ||
E664 | INC BC | |||
E665 | LD ($5BF4),BC | |||
E669 | CALL $1A1B | Call OUT_NUM_1. | ||
E66C | LD C,$05 | Set up the screen buffer location 05/01 using CL_SET. | ||
E66E | LD B,$01 | |||
E670 | CALL $0DD9 | |||
E673 | LD BC,($5BF2) | Decrease *PlayerTreasure by one. | ||
E677 | DEC BC | |||
E678 | LD ($5BF2),BC | |||
E67C | LD A,B | Jump to Handler_Items_0 if B is not equal to 00. | ||
E67D | CP $00 | |||
E67F | JR NZ,Handler_Items_0 | |||
E681 | LD A,C | Jump to Handler_Items_0 if C is not equal to 32. | ||
E682 | CP $32 | |||
E684 | JR NZ,Handler_Items_0 | |||
E686 | LD A,($5BD3) | Write *CurrentRoom to *GoldenKeyRoom. | ||
E689 | LD ($5BFC),A | |||
E68C | LD A,(IX+$00) | Write *IX+00 to *PositionGoldenKey. | ||
E68F | LD ($5BFD),A | |||
E692 | LD A,(IX+$01) | A=*IX+01. | ||
E695 | INC A | Increment A by one. | ||
E696 | LD ($5BFE),A | Write A to *5BFE. | ||
Handler_Items_0 | E699 | LD A,C | Compare C with 00. | |
E69A | CP $00 | |||
E69C | PUSH AF | Stash AF on the stack. | ||
E69D | CALL NZ,$1A1B | Call OUT_NUM_1 if C was not zero on line Handler_Items_0. | ||
E6A0 | LD A,$20 | A=ASCII "space" (20). | ||
E6A2 | CALL PrintColourCharacter | Call PrintColourCharacter. | ||
E6A5 | POP AF | Restore AF from the stack. | ||
E6A6 | RET NZ | Return if {} is not zero. | ||
E6A7 | LD A,$2D | Write 2D to *TimerGoldenKey. | ||
E6A9 | LD ($5BFF),A | |||
E6AC | LD BC,$0014 | Write 0014 to *TimerGoldenKey_FrameSkip. | ||
E6AF | LD ($5BFA),BC | |||
Restore the default ZX Spectrum font.
|
||||
E6B3 | LD HL,$3C00 | Write 3C00 (CHARSET-0100) to *CHARS. | ||
E6B6 | LD ($5C36),HL | |||
E6B9 | JP PrintFindTheGoldKey | Jump to PrintFindTheGoldKey. |
Prev: E581 | Up: Map | Next: E6BC |