![]() |
Routines |
| Prev: D260 | Up: Map | Next: D2E9 |
|
When the game has loaded, the ROM loading routine returns to here
|
||||
| D290 | NOP | This does nothing except waste a bit of time. | ||
| D291 | NOP | |||
| D292 | NOP | |||
| D293 | NOP | |||
| D294 | NOP | |||
| D295 | NOP | |||
| D296 | NOP | |||
| D297 | NOP | |||
| D298 | NOP | |||
| D299 | NOP | |||
| D29A | NOP | |||
| D29B | NOP | |||
| D29C | NOP | |||
| D29D | LD IX,$D5B9 | Point to the start of the theme tune (D5B9). | ||
| D2A1 | LD E,(IX+$00) | Put the pitch in DE. | ||
| D2A4 | LD D,(IX+$01) | |||
| D2A7 | LD L,(IX+$02) | Put the length in HL. | ||
| D2AA | LD H,(IX+$03) | |||
| D2AD | LD A,L | If the length is 0, don't play a note, but pause instead. | ||
| D2AE | OR H | |||
| D2AF | JP Z,$D2CF | |||
| D2B2 | PUSH IX | Play the BEEP routine in the ROM. | ||
| D2B4 | CALL $03B5 | |||
| D2B7 | POP IX | |||
| D2B9 | LD DE,$0004 | Move onto the next note. | ||
| D2BC | ADD IX,DE | |||
| D2BE | LD A,(IX+$01) | If the second byte of the pitch is FF , the tune is finished, so move on. | ||
| D2C1 | CP $FF | |||
| D2C3 | JR Z,$D2D5 | |||
| D2C5 | IN A,($FE) | See if a key was pressed. | ||
| D2C7 | AND $1F | |||
| D2C9 | XOR $1F | |||
| D2CB | JR Z,$D2A1 | If no key pressed, then loop back to play another note. | ||
| D2CD | JR $D2D5 | Otherwise, move on. | ||
|
At this point, there is a rest in the tune.
|
||||
| D2CF | LD B,E | Pause for the relevant amount of time. | ||
| D2D0 | HALT | |||
| D2D1 | DJNZ $D2D0 | |||
| D2D3 | JR $D2B9 | Loop back for another note. | ||
|
The tune has finished, or was stopped by pressing a key.
|
||||
| D2D5 | LD HL,$F7D6 | Load F7D6 (start a new game) on the stack so the call to D254 will return here. | ||
| D2D8 | PUSH HL | |||
| D2D9 | LD HL,$4000 | Clear the screen. | ||
| D2DC | LD DE,$4001 | |||
| D2DF | LD BC,$17FF | |||
| D2E2 | LD (HL),$00 | |||
| D2E4 | LDIR | |||
| D2E6 | JP $D254 | Copy the screen to the working buffer, then jump to D254. | ||
| Prev: D260 | Up: Map | Next: D2E9 |