![]() |
Routines |
| Prev: D325 | Up: Map | Next: D368 |
|
Used by the routine at C7EA.
|
||||||||
|
Jump here from C7D0 after copying graphics data to banks at 7C00
If Maroc picks up a spell, the 'Magic' text in the bottom left changes colour for a short time, and a sound is played
|
||||||||
| D331 | LD HL,($EABE) | Address pointer to start of next data set (at 7C00) | ||||||
| D334 | LD (HL),$FF | Add end-of-data marker to the first byte of the set | ||||||
| D336 | LD ($EB72),HL | Copy address pointer into store | ||||||
|
Check if the post-scroll-pickup effect (colour/sound) needs to be actioned:
|
||||||||
| D339 | LD A,($ECA0) | This is the counter byte for flashing the 'MAGIC' text in the bottom left of the screen. | ||||||
| D33C | CP $00 | |||||||
| D33E | JR Z,$D368 | If it's zero, no need for flashing & playing sound - skip to the next routine | ||||||
|
Change the colour of the 'Magic' text in the bottom left of the screen and play a sound.
|
||||||||
| D340 | DEC A | Decrement the 'flashing' counter, and re-store | ||||||
| D341 | LD ($ECA0),A | |||||||
| D344 | JR NZ,$D348 | Check if now zero | ||||||
| D346 | LD A,$30 | If so, reset the final colour change to yellow (INK 0, PAPER 6), otherwise the counter would make it INK 0, PAPER 0 (invisible). At the start of the game the lower part of 'MAGIC' is white, but will subsequently be yellow once the first spell is collected (see the animated image on this page). |
||||||
|
Change the colour of the word 'MAGIC':
|
||||||||
| D348 | LD DE,$001C | Prepare an offset of 28 character spaces ready to move down to the next line of the screen | ||||||
| D34B | LD C,$02 | 2 character rows to colour | ||||||
| D34D | LD HL,$5AC2 | Screen display address for the top left of the word 'MAGIC' | ||||||
| D350 | LD B,$04 | 4 characters wide | ||||||
| D352 | LD (HL),A | Colour the character square (colour = counter byte value) | ||||||
| D353 | INC HL | Move right one character square | ||||||
| D354 | DJNZ $D352 | Repeat x 4 | ||||||
| D356 | ADD HL,DE | Jump down to the next character row, over to the left again | ||||||
| D357 | DEC C | Decrement the row counter | ||||||
| D358 | JR NZ,$D350 | ...And repeat for 2 rows | ||||||
|
Play sound effect:
|
||||||||
| D35A | LD C,$80 | Outer loop - duration counter | ||||||
| D35C | LD A,$10 | Speaker bit 4 (16) | ||||||
|
Speaker toggle loop:
|
||||||||
| D35E | XOR $10 | Toggle speaker bit | ||||||
| D360 | OUT ($FE),A | Output sound | ||||||
| D362 | LD B,C | Get duration counter | ||||||
| D363 | DJNZ $D363 | ...short pause for duration value of counter | ||||||
| D365 | DEC C | Decrement duration counter | ||||||
| D366 | JR NZ,$D35E | Repeat loop until sound duration counter = 0 | ||||||
| Prev: D325 | Up: Map | Next: D368 |