Prev: 37980 Up: Map Next: 38193
37990: Routine at 9466
Used by the routine at 33368.
37990 LD A,R A=random number.
37992 AND %00000011 Keep only bits 0-1.
37994 RET NZ Return if the value is not zero.
37995 LD A,(24167) A=GameDelayTimer.
37998 AND A Return if the value is not zero.
37999 RET NZ
38000 CALL FindSlotAlien Call FindSlotAlien.
38003 RET NZ Return if there were no available alien slots.
38004 PUSH HL Stash HL (the free alien slot) on the stack.
38005 EX DE,HL Switch the DE and HL registers.
38006 LD A,(24128) A=24128.
38009 RLA Rotate A left once.
38010 AND %00001110 Keep only bits 1-3.
38012 LD C,A Create an offset in BC - max 14 (only even numbers).
38013 LD B,0
38015 LD A,(24224) A=ActivePlayer_Level.
38018 CP 12 Compare the current level against 12 if there's any carry over then jump to 38024.
38020 JR C,38024
38022 LD A,12 A=12.
38024 AND %00001110 Keep only bits 1-3.
38026 LD L,A Create an offset in HL - number can be:
  • 0002
  • 0004
  • 0006
  • 0008
  • 0010
  • 0012
38027 LD H,0
38029 LD DE,40306 HL+=LevelsAlienLookupTable.
38032 ADD HL,DE
38033 LD A,(HL) HL=alien lookup table appropriate for the current level.
38034 INC HL
38035 LD H,(HL)
38036 LD L,A
38037 ADD HL,BC HL+=BC.
38038 LD A,(HL) HL=an alien from the level lookup table.
38039 INC HL
38040 LD H,(HL)
38041 LD L,A
38042 LD BC,24 BC=0024.
38045 POP DE DE=the free alien slot (from earlier).
38046 PUSH DE Stash DE (the free alien slot) on the stack again.
38047 LDIR Copy the alien data to the free alien slot.
38049 POP HL HL=the free alien slot.
38050 LD A,(HL)
38051 INC HL
38052 INC HL
38053 PUSH HL
38054 LD HL,(24698)
38057 CP 136
38059 JR Z,38107
38061 CP 184
38063 JP Z,38150
38066 LD A,(24128)
38069 LD C,A
38070 LD B,0
38072 LD DE,128
38075 AND 2
38077 JR Z,38085
38079 SBC HL,BC
38081 SBC HL,DE
38083 JR 38087
38085 ADD HL,BC
38086 ADD HL,DE
38087 LD A,H
38088 AND %00011111 Keep only bits 0-4.
38090 LD H,A
38091 EX DE,HL
38092 POP HL
38093 LD (HL),E
38094 INC HL
38095 LD (HL),D
38096 INC HL
38097 INC HL
38098 LD A,C
38099 AND %10000000 Keep only bit 7.
38101 RET Z
38102 LD A,(HL)
38103 NEG
38105 LD (HL),A
38106 RET Return.
38107 LD A,(24128) A=24128.
38110 LD B,A B=A.
38111 AND %10000000 Keep only bit 7.
38113 SUB 64
38115 LD C,A
38116 JP P,38124
38119 LD DE,144 DE=0144.
38122 JR 38127 Jump to 38127.
38124 LD DE,65392
38127 ADD HL,DE
38128 LD A,H
38129 AND %00011111 Keep only bits 0-4.
38131 LD H,A
38132 EX DE,HL
38133 POP HL
38134 LD (HL),E
38135 INC HL
38136 LD (HL),D
38137 INC HL
38138 LD A,B
38139 AND %01111000 Keep only bits 3-6.
38141 JR NZ,38144
38143 INC A
38144 ADD A,55
38146 LD (HL),A
38147 INC HL
38148 LD (HL),C
38149 RET
38150 LD A,(24128)
38153 LD B,A
38154 AND %10000000 Keep only bit 7.
38156 SUB 64
38158 LD C,A
38159 JP P,38167
38162 LD DE,144 DE=0144.
38165 JR 38170 Jump to 38170.
38167 LD DE,65392 DE=65392.
38170 ADD HL,DE
38171 LD A,H
38172 AND 31
38174 LD H,A
38175 EX DE,HL
38176 POP HL
38177 LD (HL),E
38178 INC HL
38179 LD (HL),D
38180 INC HL
38181 LD A,B
38182 AND %01111000 Keep only bits 3-6.
38184 JR NZ,38187
38186 INC A
38187 ADD A,55
38189 LD (HL),A
38190 INC HL
38191 LD (HL),C
38192 RET Return.
Prev: 37980 Up: Map Next: 38193