![]() |
Routines |
| Prev: $BCDE | Up: Map | Next: $BE08 |
|
Called from the main loop at $0800.
|
||||
| $BD00 | LDA $2C | Pick up the sound effect identifier from $2C. | ||
| $BD02 | CMP #$01 | Is the shield-hitting sound effect currently playing? | ||
| $BD04 | BNE $BD09 | Branch if not. | ||
| $BD06 | JMP $BD1A | Otherwise jump forward. | ||
| $BD09 | CMP #$02 | Is the jumping sound effect currently playing? | ||
| $BD0B | BNE $BD10 | Branch if not. | ||
| $BD0D | JMP $BD66 | Otherwise jump forward. | ||
| $BD10 | CMP #$03 | Is the bell ringing? | ||
| $BD12 | BNE $BD17 | Branch if not. | ||
| $BD14 | JMP $BDB2 | Otherwise jump forward. | ||
| $BD17 | JMP $BE07 | Return. | ||
|
The value at $2C is 1: shield-hitting sound effect.
|
||||
| $BD1A | DEC $2D | Decrement the sound effect timer at $2D. | ||
| $BD1C | LDA $2D | Is the sound effect timer equal to $10 now? | ||
| $BD1E | CMP #$10 | |||
| $BD20 | BNE $BD3E | Branch if not. | ||
| $BD22 | LDA #$40 | Set voice #2 frequency to $4000. | ||
| $BD24 | STA $D408 | |||
| $BD27 | LDA #$00 | |||
| $BD29 | STA $D407 | |||
| $BD2C | LDA #$00 | Set voice #2 attack length to 2ms and decay length to 6ms. | ||
| $BD2E | STA $D40C | |||
| $BD31 | LDA #$F0 | Set voice #2 sustain volume to maximum and release length to 6ms. | ||
| $BD33 | STA $D40D | |||
| $BD36 | LDA #$11 | Set voice #2 control register: voice on, attack-decay-sustain cycle; triangle waveform enabled. | ||
| $BD38 | STA $D40B | |||
| $BD3B | JMP $BE07 | Return. | ||
| $BD3E | CMP #$00 | Is the sound effect timer equal to 0? | ||
| $BD40 | BNE $BD55 | Branch if not. | ||
| $BD42 | LDA #$FB | Set voice #2 sustain volume to maximum and release length to 2.4s. | ||
| $BD44 | STA $D40D | |||
| $BD47 | LDA #$10 | Set voice #2 control register: voice off, release cycle; triangle waveform enabled. | ||
| $BD49 | STA $D40B | |||
| $BD4C | LDA #$00 | Reset the sound effect identifier at $2C and the sound effect timer at $2D to 0. | ||
| $BD4E | STA $2C | |||
| $BD50 | STA $2D | |||
| $BD52 | JMP $BE07 | Return. | ||
| $BD55 | LDA #$10 | Set A to 192-8*($2D). | ||
| $BD57 | SEC | |||
| $BD58 | SBC $2D | |||
| $BD5A | ASL A | |||
| $BD5B | ASL A | |||
| $BD5C | ASL A | |||
| $BD5D | CLC | |||
| $BD5E | ADC #$40 | |||
| $BD60 | STA $D408 | Make this the MSB of voice #2's frequency. | ||
| $BD63 | JMP $BE07 | Return. | ||
|
The value at $2C is 2: jumping sound effect.
|
||||
| $BD66 | DEC $2D | Decrement the sound effect timer at $2D. | ||
| $BD68 | LDA $2D | Is the sound effect timer equal to $20 now? | ||
| $BD6A | CMP #$20 | |||
| $BD6C | BNE $BD8A | Branch if not. | ||
| $BD6E | LDA #$A0 | Set voice #2 frequency to $A000. | ||
| $BD70 | STA $D408 | |||
| $BD73 | LDA #$00 | |||
| $BD75 | STA $D407 | |||
| $BD78 | LDA #$00 | Set voice #2 attack length to 2ms and decay length to 6ms. | ||
| $BD7A | STA $D40C | |||
| $BD7D | LDA #$F0 | Set voice #2 sustain volume to maximum and release length to 6ms. | ||
| $BD7F | STA $D40D | |||
| $BD82 | LDA #$21 | Set voice #2 control register: voice on, attack-sustain-decay cycle; saw waveform enabled. | ||
| $BD84 | STA $D40B | |||
| $BD87 | JMP $BE07 | Return. | ||
| $BD8A | CMP #$00 | Is the sound effect timer equal to 0? | ||
| $BD8C | BNE $BDA1 | Branch if not. | ||
| $BD8E | LDA #$F7 | Set voice #2 sustain volume to maximum and release length to 240ms. | ||
| $BD90 | STA $D40D | |||
| $BD93 | LDA #$20 | Set voice #2 control register: voice off, release cycle; saw waveform enabled. | ||
| $BD95 | STA $D40B | |||
| $BD98 | LDA #$00 | Reset the sound effect identifier at $2C and the sound effect timer at $2D to 0. | ||
| $BD9A | STA $2C | |||
| $BD9C | STA $2D | |||
| $BD9E | JMP $BE07 | Return. | ||
| $BDA1 | STA $57 | Set A to 224-2*($2D). | ||
| $BDA3 | LDA #$20 | |||
| $BDA5 | SEC | |||
| $BDA6 | SBC $57 | |||
| $BDA8 | ASL A | |||
| $BDA9 | CLC | |||
| $BDAA | ADC #$A0 | |||
| $BDAC | STA $D408 | Make this the MSB of voice #2's frequency. | ||
| $BDAF | JMP $BE07 | Return. | ||
|
The value at $2C is 3: lesson bell sound effect.
|
||||
| $BDB2 | DEC $2D | Decrement the sound effect timer at $2D($2D). | ||
| $BDB4 | LDA $2D | Is the sound effect timer equal to $20? | ||
| $BDB6 | CMP #$20 | |||
| $BDB8 | BNE $BDE0 | Branch if not. | ||
| $BDBA | LDA #$38 | Set voice #2 frequency to $3800. | ||
| $BDBC | STA $D408 | |||
| $BDBF | LDA #$00 | |||
| $BDC1 | STA $D407 | |||
| $BDC4 | LDA #$00 | Set voice #2 attack length to 2ms and decay length to 6ms. | ||
| $BDC6 | STA $D40C | |||
| $BDC9 | LDA #$F0 | Set voice #2 sustain volume to maximum and release length to 6ms. | ||
| $BDCB | STA $D40D | |||
| $BDCE | LDA #$43 | Set voice #2 pulse width to $4350. | ||
| $BDD0 | STA $D40A | |||
| $BDD3 | LDA #$50 | |||
| $BDD5 | STA $D409 | |||
| $BDD8 | LDA #$41 | Set voice #2 control register: voice on, attack-decay-sustain cycle; rectangle waveform enabled. | ||
| $BDDA | STA $D40B | |||
| $BDDD | JMP $BE07 | Return. | ||
| $BDE0 | CMP #$00 | Is the sound effect timer equal to 0? | ||
| $BDE2 | BNE $BDF7 | Branch if not. | ||
| $BDE4 | LDA #$F4 | Set voice #2 sustain volume to maximum and release length to 114ms. | ||
| $BDE6 | STA $D40D | |||
| $BDE9 | LDA #$40 | Set voice #2 control register: voice off, release cycle; rectangle waveform enabled. | ||
| $BDEB | STA $D40B | |||
| $BDEE | LDA #$00 | Reset the sound effect identifier at $2C and the sound effect timer at $2D to 0. | ||
| $BDF0 | STA $2C | |||
| $BDF2 | STA $2D | |||
| $BDF4 | JMP $BE07 | Return. | ||
| $BDF7 | LSR A | Is the sound effect timer value even? | ||
| $BDF8 | BCC $BDFF | Branch if so. | ||
| $BDFA | LDA #$39 | This will be the MSB of voice 2's frequency. | ||
| $BDFC | JMP $BE01 | Jump forward. | ||
| $BDFF | LDA #$37 | This will be the MSB of voice 2's frequency. | ||
| $BE01 | STA $D408 | Set the MSB of voice #2's frequency to $37 or $39. | ||
| $BE04 | JMP $BE07 | Return. | ||
| $BE07 | RTS | |||
| Prev: $BCDE | Up: Map | Next: $BE08 |