![]() |
Routines |
| Prev: 6038 | Up: Map | Next: 6293 |
|
|
||||
| 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 |