![]() |
Routines |
Prev: 40368 | Up: Map | Next: 40492 |
Used by the routine at 36102.
|
||||
Only handle the laser beam on every 4th frame.
|
||||
Handler_LaserBeam | 40384 | LD A,(24130) | ||
40387 | AND %00000001 | Keep only bit 0. | ||
40389 | RET NZ | |||
Search for a "free" laser beam slot.
|
||||
40390 | LD HL,24576 | HL=Laser_Param_1. | ||
40393 | LD DE,24 | DE=0024 (each slot is 24 bytes). | ||
40396 | LD B,4 | B=4 (counter; there are 4 "slots"). | ||
LaserBeam_Slot | 40398 | LD A,(HL) | If the slot is not in use, jump to Init_LaserBeam. | |
40399 | AND A | |||
40400 | JR Z,Init_LaserBeam | |||
40402 | ADD HL,DE | HL=HL+DE (move onto the next slot). | ||
40403 | DJNZ LaserBeam_Slot | Decrease counter by one and loop back to LaserBeam_Slot until counter is zero. | ||
All laser beam slots are in use so just return...
|
||||
40405 | RET | Return. | ||
Possibly the "shoot right" code?
|
||||
Handler_LaserBeam_0 | 40406 | ADD A,16 | A=A+16. | |
40408 | OR %00000100 | Set bit 2. | ||
40410 | AND %11111110 | Keep only bits 1-7. | ||
40412 | JR Handler_LaserBeam_2 | Jump to Handler_LaserBeam_2. | ||
Initialise a new laser beam.
|
||||
Init_LaserBeam | 40414 | LD (HL),17 | Mark the laser beam slot as "in-use". | |
40416 | INC HL | HL=Laser beam Y position. | ||
40417 | LD DE,24696 | DE=24696. | ||
40420 | LD B,13 | |||
40422 | LD A,(DE) | |||
40423 | INC DE | |||
40424 | DEC A | |||
40425 | BIT 3,A | |||
40427 | JR Z,Handler_LaserBeam_1 | |||
40429 | DEC B | |||
40430 | DEC B | |||
Handler_LaserBeam_1 | 40431 | AND 4 | ||
40433 | LD A,(DE) | |||
40434 | JR NZ,Handler_LaserBeam_0 | |||
40436 | SUB 8 | |||
40438 | AND 248 | |||
40440 | OR 5 | |||
Handler_LaserBeam_2 | 40442 | LD C,A | ||
40443 | INC DE | |||
40444 | INC DE | |||
40445 | INC DE | |||
40446 | LD A,(DE) | |||
40447 | SUB B | |||
40448 | LD (HL),A | |||
40449 | INC HL | |||
40450 | LD B,3 | |||
40452 | LD (HL),C | |||
40453 | LD A,C | |||
40454 | AND 251 | |||
Handler_LaserBeam_3 | 40456 | INC HL | ||
40457 | LD (HL),A | |||
40458 | DJNZ Handler_LaserBeam_3 | |||
40460 | INC HL | |||
40461 | LD A,(24128) | |||
40464 | AND 24 | |||
40466 | ADD A,96 | |||
40468 | LD (HL),A | |||
40469 | INC HL | |||
40470 | EX DE,HL | |||
40471 | LD HL,40488 | HL=Attributes_LaserBeam. | ||
40474 | LD A,(24128) | |||
40477 | AND 3 | |||
40479 | LD C,A | |||
40480 | LD B,0 | |||
40482 | ADD HL,BC | |||
40483 | LD A,(HL) | |||
40484 | LD (DE),A | |||
40485 | JP SoundsLaserBeam | Jump to SoundsLaserBeam. | ||
All the attributes a laser beam can be.
|
||||
Attributes_LaserBeam | 40488 | DEFB 71,67,67,69 | ||
View the equivalent code in;
|
Prev: 40368 | Up: Map | Next: 40492 |