Prev: 6038 Up: Map Next: 6293
608A: Routine at 608A
LEVEL_INIT 608A XOR A Black Border
608B OUT ($FE),A
608D CALL CLEAR_PIXELS Clear the screen
6090 CALL CLEAR_ATTRIBUTES Reset the screen colours
6093 CALL SCORE_LABELS Display score labels
6096 LD HL,$5820 Attribute file address
6099 LD BC,$2046 B=loop counter, C=Cyan/Yellow
LEVEL_INIT_0 609C LD (HL),C Reset bytes in the attribute file
609D INC L
609E DJNZ LEVEL_INIT_0 Decrease B by one, jump to LEVEL_INIT_0 if not zero
60A0 CALL DISPLAY_1UP_SCORE Update display with player 1 score
60A3 CALL DISPLAY_2UP_SCORE Update display with player 2 score
60A6 JP DISPLAY_HIGHSCORE Update display with high score
This entry point is used by the routines at 630F and 63DA.
LEVEL_INIT_1 60A9 LD A,($5DF0) A=CURRENT_LEVEL
60AC AND $03 If CURRENT_LEVEL is divisible by $03 ... jump to init with a "broken ship"
60AE JR NZ,LEVEL_INIT_2
60B0 CALL LEVEL_INIT_3
60B3 LD HL,$5DF1 Increase the live counter 1UP_CURRENT_LIVES by one
60B6 INC (HL)
60B7 CALL LEVEL_INIT_16
LEVEL_INIT_2 60BA CALL $6929
60BD CALL LEVEL_INIT
60C0 CALL CLEAR_PIXELS_87
60C3 CALL $70A4
60C6 LD A,($5C78) A=FRAME_COUNTER
60C9 LD ($5DD4),A Write A to 5DD4
60CC RET Return
This entry point is used by the routine at 630F.
LEVEL_INIT_3 60CD LD HL,$6018 HL Source address: INIT_GAME_ENV
60D0 LD DE,$5D30 DE Target address: 5D30
60D3 LD BC,$0018 BC=loop counter
60D6 LDIR Action! Copy source to target, decrease counter, repeat until zero
60D8 LD A,$08 A=$08
60DA JP $6EF9 Jump to 6EF9
This entry point is used by the routine at 63DA.
LEVEL_INIT_4 60DD LD HL,$5D48
60E0 LD B,$0A
60E2 CALL $6660
60E5 LD HL,$5D3C
60E8 RES 1,(HL)
60EA LD HL,$5D44
60ED RES 1,(HL)
60EF LD A,($5CF3)
60F2 AND $01
60F4 JR NZ,LEVEL_INIT_6
LEVEL_INIT_5 60F6 LD A,($5DF1)
60F9 AND A
60FA JP Z,LEVEL_INIT_12
60FD CALL LEVEL_INIT_2
6100 JP LEVEL_INIT_16
LEVEL_INIT_6 6103 LD A,($5DF9) A=2UP_CURRENT_LIVES
6106 AND A
6107 JR Z,LEVEL_INIT_5
6109 LD A,($5DF1)
610C AND A
610D CALL Z,LEVEL_INIT_11
6110 CALL LEVEL_INIT_14
6113 LD A,($5DD1)
6116 CPL
6117 LD ($5DD1),A
611A LD A,($5D34)
611D RLCA
611E RLCA
611F RLCA
6120 AND $38
6122 CALL $6EF9
6125 CALL LEVEL_INIT_2
6128 JP LEVEL_INIT_16
LEVEL_INIT_7 612B LD A,$B1
LEVEL_INIT_8 612D LD ($6199),A
6130 CALL LEVEL_INIT
6133 LD DE,$6187
6136 LD HL,$7038
6139 CALL DISPLAY_1UP_SCORE_3
613C LD B,$04
613E LD HL,$0000
LEVEL_INIT_9 6141 DEC HL
6142 LD A,H
6143 OR L
6144 JR NZ,LEVEL_INIT_9
6146 DJNZ LEVEL_INIT_9 Decrease B by one, jump to LEVEL_INIT_9 if not zero
6148 RET
LEVEL_INIT_10 6149 LD A,$B2
614B JR LEVEL_INIT_8
LEVEL_INIT_11 614D LD A,($5DD1)
6150 AND A
6151 JR Z,LEVEL_INIT_7
6153 JR LEVEL_INIT_10
LEVEL_INIT_12 6155 CALL $6398
6158 LD A,($5DD1)
615B AND A
615C JR NZ,LEVEL_INIT_13
615E CALL LEVEL_INIT_7
6161 JP LEVEL_INIT_25
LEVEL_INIT_13 6164 CALL LEVEL_INIT_10
6167 JP LEVEL_INIT_25
This entry point is used by the routine at 630F.
LEVEL_INIT_14 616A LD HL,$5DF0 HL=CURRENT_LEVEL
616D LD DE,$5DF8 DE=5DF8
6170 LD B,$02 B=$02
6172 CALL LEVEL_INIT_15
6175 LD HL,$5D30 HL=5D30
6178 LD DE,$5D98 DE=5D98
617B LD B,$18 B=$18
LEVEL_INIT_15 617D LD A,(DE) A=DE
617E LD C,(HL) C=HL
617F LD (HL),A Writes A to HL
6180 LD A,C A=C
6181 LD (DE),A Writes A to DE
6182 INC HL Increase HL by one
6183 INC DE Increase DE by one
6184 DJNZ LEVEL_INIT_15 Decrease B by one, jump to LEVEL_INIT_15 if not zero
6186 RET Return
6187 DEFB $47
6188 DEFM "GAME OVER PLAYER ","1"+$80 GAME OVER PLAYER 1
This entry point is used by the routine at 63DA.
LEVEL_INIT_16 619A LD HL,$6010 HL Source address: 6010
619D LD DE,$5D00 DE Target address: JETMAN_FRAME
61A0 LD BC,$0008 BC=loop counter
61A3 LDIR Action! Copy source to target, decrease counter, repeat until zero
61A5 LD A,$80 A=$80
61A7 LD HL,$5CF3 if bit 0 is set for GAME_TYPE (is this a 2UP game) then jump to LEVEL_INIT_17
61AA BIT 0,(HL)
61AC JR Z,LEVEL_INIT_17
61AE ADD A,$7F Add $7F to A and update INTERVAL_COUNTDOWN with the result
LEVEL_INIT_17 61B0 LD ($5DD7),A
61B3 LD A,($5DF1) Decrease 1UP_CURRENT_LIVES by 1
61B6 DEC A
61B7 LD ($5DF1),A
61BA JP $70A4 Jump to 70A4
This entry point is used by the routine at CLEAR_PIXELS.
LEVEL_INIT_18 61BD LD A,($5DD1) A=ACTIVE_PLAYER
61C0 AND A
61C1 JR NZ,LEVEL_INIT_23
61C3 LD HL,$0018 HL=$0018
LEVEL_INIT_19 61C6 CALL CLEAR_PIXELS_7
61C9 LD B,$03 B=$03
LEVEL_INIT_20 61CB LD A,(HL) A=(HL)
61CC OR $80
61CE LD (HL),A Push A into the memory location at HL
61CF INC HL Increase HL by one
61D0 DJNZ LEVEL_INIT_20 Decrease B by one, jump to LEVEL_INIT_20 if not zero
61D2 RET Return
This entry point is used by the routine at CLEAR_PIXELS.
LEVEL_INIT_21 61D3 CALL CLEAR_PIXELS_7
61D6 LD B,$03
LEVEL_INIT_22 61D8 LD A,(HL)
61D9 AND $7F
61DB LD (HL),A
61DC INC HL
61DD DJNZ LEVEL_INIT_22 Decrease B by one, jump to LEVEL_INIT_22 if not zero
61DF RET
LEVEL_INIT_23 61E0 LD HL,$00D8
61E3 JR LEVEL_INIT_19
61E5 LD A,($5C79)
61E8 CP $83
61EA RET NZ
61EB LD HL,$5CF0
61EE LD BC,$0A00
LEVEL_INIT_24 61F1 LD (HL),C
61F2 INC HL
61F3 DJNZ LEVEL_INIT_24 Decrease B by one, jump to LEVEL_INIT_24 if not zero
LEVEL_INIT_25 61F5 DI
61F6 LD SP,$5CF0
61F9 CALL LEVEL_INIT
61FC LD A,$04
61FE LD ($5DCA),A
LEVEL_INIT_26 6201 CALL LEVEL_INIT_37
6204 LD A,($5CF3)
6207 LD D,A
6208 LD A,$F7
620A OUT ($FD),A
620C IN A,($FE)
620E CPL
620F BIT 0,A
6211 JR Z,LEVEL_INIT_27
6213 RES 0,D
LEVEL_INIT_27 6215 BIT 1,A
6217 JR Z,LEVEL_INIT_28
6219 SET 0,D
LEVEL_INIT_28 621B BIT 2,A
621D JR Z,LEVEL_INIT_29
621F RES 1,D
LEVEL_INIT_29 6221 BIT 3,A
6223 JR Z,LEVEL_INIT_30
6225 SET 1,D
LEVEL_INIT_30 6227 BIT 4,A
6229 JP NZ,$6333
622C LD A,D
622D LD ($5CF3),A
6230 LD HL,$628E
6233 LD A,($5CF3)
6236 LD C,A
6237 BIT 0,C
6239 JR NZ,LEVEL_INIT_33
623B CALL LEVEL_INIT_35
LEVEL_INIT_31 623E BIT 1,C
6240 JR NZ,LEVEL_INIT_34
6242 CALL LEVEL_INIT_35
LEVEL_INIT_32 6245 JP LEVEL_INIT_26
LEVEL_INIT_33 6248 CALL LEVEL_INIT_36
624B JR LEVEL_INIT_31
LEVEL_INIT_34 624D CALL LEVEL_INIT_36
6250 JR LEVEL_INIT_32
LEVEL_INIT_35 6252 SET 7,(HL)
6254 INC HL
6255 RES 7,(HL)
6257 INC HL
6258 RET
LEVEL_INIT_36 6259 RES 7,(HL)
625B INC HL
625C SET 7,(HL)
625E INC HL
625F RET
LEVEL_INIT_37 6260 LD DE,$628D DE=$628D
6263 EXX Exchange BC, DE, and HL with shadow registers with BC', DE', and HL'
6264 LD HL,$6293 HL=6293
6267 LD DE,$6299 DE=START_SCREEN
626A LD B,$06 B=$06
PRINT_START_SCREEN 626C EXX Exchange BC, DE, and HL with shadow registers with BC', DE', and HL'
626D LD A,(DE) A=START_SCREEN
626E LD ($5DD6),A Write A to 5DD6
6271 INC DE Point to next character
6272 EXX Exchange back BC, DE, and HL with shadow registers with BC', DE', and HL'
6273 PUSH BC Push BC onto the stack
6274 LD A,(HL) A=(HL)
6275 INC HL Increment HL
6276 PUSH HL Push HL onto the stack
6277 LD H,A
6278 LD L,$30
627A CALL $62FF
627D EXX
627E POP HL
627F POP BC
6280 INC DE
6281 DJNZ PRINT_START_SCREEN Decrease B by one, jump to PRINT_START_SCREEN if not zero
6283 LD HL,$B800
6286 LD DE,$6040
6289 CALL DISPLAY_1UP_SCORE_3
628C RET
628D LD B,A
628E LD B,A
628F LD B,A
6290 LD B,A
6291 LD B,A
6292 LD B,A
Prev: 6038 Up: Map Next: 6293