![]() |
Routines |
| Prev: 58479 | Up: Map | Next: 58609 |
|
Used by the routine at InitialiseGame.
|
||||
| Handler_Bomb | 58490 | LD A,(58489) | Return if *TableBomb_Flag is equal to 0. | |
| 58493 | CP 0 | |||
| 58495 | RET Z | |||
|
Only continue every other frame.
|
||||
| 58496 | LD A,(62273) | A=*BombFrameSkip. | ||
| 58499 | INC A | Increment A by one. | ||
| 58500 | AND %00000001 | Ensure A is only ever 0 or 1. | ||
| 58502 | LD (62273),A | Write A back to *BombFrameSkip. | ||
| 58505 | CP 0 | Return if A is not equal to 0. | ||
| 58507 | RET NZ | |||
|
Set up the bomb.
|
||||
| 58508 | LD HL,37452 | Write 37452 (Graphics_Bomb) to *CHARS. | ||
| 58511 | LD (23606),HL | |||
| 58514 | LD A,16 | Set INK: YELLOW (6). | ||
| 58516 | RST 16 | |||
| 58517 | LD A,6 | |||
| 58519 | RST 16 | |||
|
The fuse burning down acts as a countdown before the explosion.
|
||||
| 58520 | LD A,(58485) | A=*TableBomb_SpriteID. | ||
| 58523 | ADD A,4 | A+=4. | ||
| 58525 | CP 64 | Jump to IgniteBomb if A is equal to 64. | ||
| 58527 | JR Z,IgniteBomb | |||
| 58529 | LD (58485),A | Write the new frame ID back to *TableBomb_SpriteID. | ||
|
Print the bomb on the screen.
|
||||
| 58532 | LD BC,(58479) | BC=*TableBomb_Position. | ||
| 58536 | LD DE,514 | DE=Set the sprite width/ height (2/ 2). | ||
| 58539 | CALL PrintSprite | Call PrintSprite. | ||
| 58542 | RET | Return. | ||
|
The bomb has been lit!
|
||||
| IgniteBomb | 58543 | LD BC,(58479) | BC=*TableBomb_Position. | |
| 58547 | LD DE,514 | DE=Set the sprite width/ height (2/ 2). | ||
| 58550 | CALL PrintSpriteUpdateBuffer | Call PrintSpriteUpdateBuffer. | ||
| 58553 | LD A,0 | Write 0 to: | ||
| 58555 | LD (65533),A | |||
| 58558 | LD (58489),A | |||
| 58561 | LD A,(62171) | Return if an explosion is already in-progress, only one bomb can explode at a time. | ||
| 58564 | CP 0 | |||
| 58566 | RET NZ | |||
|
There are 5 sparks, and each occupies 6 bytes.
|
||||
| 58567 | LD DE,62171 | Copy 0030 bytes of data from TableDefaultBombSparks to TableBombSparks. | ||
| 58570 | LD HL,62201 | |||
| 58573 | LD BC,30 | |||
| 58576 | LDIR | |||
| 58578 | LD BC,(58479) | BC=*TableBomb_Position. | ||
| 58582 | DEC B | Move down one line. | ||
|
Update each spark with the starting co-ordinates.
|
||||
| 58583 | LD IX,62171 | IX=TableBombSparks. | ||
| 58587 | LD L,5 | L=5 (counter; number of sparks). | ||
| SetSparksStartingPosition | 58589 | LD (IX+0),C | Write C to *IX+0. | |
| 58592 | LD (IX+1),B | Write B to *IX+1. | ||
| 58595 | LD DE,6 | IX+=0006. | ||
| 58598 | ADD IX,DE | |||
| 58600 | DEC L | Decrease spark counter by one. | ||
| 58601 | JR NZ,SetSparksStartingPosition | Jump to SetSparksStartingPosition until all sparks have been processed. | ||
| 58603 | LD A,2 | Write 2 to *SoundFlag_Bomb. | ||
| 58605 | LD (65533),A | |||
| 58608 | RET | Return. | ||
| Prev: 58479 | Up: Map | Next: 58609 |