Chase H.Q. | Routines |
Prev: F2FA | Up: Map | Next: F39F |
Relocated to $8122
|
||||
"Giddy up boy!"
|
||||
speech_samples_table | F32E | DEFW $0A8C | length | |
F330 | DEFW $C000 | address | ||
"Let's go Mr. Driver!"
|
||||
F332 | DEFW $14E6 | length | ||
F334 | DEFW $CA8C | address | ||
"Hold on man!"
|
||||
F336 | DEFW $0A5A | length | ||
F338 | DEFW $DF72 | address | ||
"Your time's up"
|
||||
F33A | DEFW $0ABE | length | ||
F33C | DEFW $E9CC | address | ||
Start noise
|
||||
F33E | DEFW $0ADC | length | ||
F340 | DEFW $F48A | address | ||
play_speech_128k | F342 | EX AF,AF' | Bank input index (sample indices are 1..5) | |
F343 | CALL load_stage_2 | Call silence_audio_128k | ||
F346 | LD A,$04 | 128K: Map RAM bank 4 to $C000; Map normal screen; Map ROM 0 | ||
F348 | LD BC,$7FFD | |||
F34B | OUT (C),A | |||
F34D | LD C,$FD | |||
F34F | LD HL,$FFBF | |||
F352 | LD D,$08 | |||
F354 | EXX | |||
F355 | EX AF,AF' | Unbank input index | ||
F356 | ADD A,A | HL = $F32A + A*4 -- i.e. it's 1-indexed speech_samples_table | ||
F357 | ADD A,A | |||
F358 | LD HL,$811E | |||
F35B | LD C,A | |||
F35C | LD B,$00 | |||
F35E | ADD HL,BC | |||
F35F | LD E,(HL) | DE = wordat(HL); HL += 2 -- read length | ||
F360 | INC HL | |||
F361 | LD D,(HL) | |||
F362 | INC HL | |||
F363 | LD A,(HL) | HL = wordat(HL) -- read address | ||
F364 | INC HL | |||
F365 | LD H,(HL) | |||
F366 | LD L,A | |||
plsp_1 | F367 | LD C,$02 | C = 2 -- iterations (two nibbles) | |
F369 | LD A,(HL) | A = *HL -- read a sample (or two?) | ||
F36A | RRA | A = A ROR 4 | ||
F36B | RRA | |||
F36C | RRA | |||
F36D | RRA | |||
plsp_2 | F36E | AND $0F | A &= 15 | |
F370 | EX AF,AF' | |||
F371 | EXX | |||
F372 | LD B,H | B = H which is $FF | ||
F373 | LD A,D | A = D which is 8 -- register 8: Channel A volume | ||
F374 | OUT (C),A | C is $FD | ||
F376 | LD B,L | B = L which is $BF | ||
F377 | EX AF,AF' | A = value loaded above | ||
F378 | OUT (C),A | Write to register | ||
F37A | EX AF,AF' | Bank it again | ||
F37B | INC A | 8 -> 9 -- register 9: Channel B volume | ||
F37C | LD B,H | B = $FF | ||
F37D | OUT (C),A | C is $FD | ||
F37F | LD B,L | B = L which is $BF | ||
F380 | EX AF,AF' | A = value loaded above | ||
F381 | OUT (C),A | Write to register | ||
F383 | EX AF,AF' | Bank it again | ||
F384 | INC A | 9 -> 10 -- register 9: Channel C volume | ||
F385 | LD B,H | B = $FF | ||
F386 | OUT (C),A | C is $FD | ||
F388 | LD B,L | B = L which is $BF | ||
F389 | EX AF,AF' | A = value loaded above | ||
F38A | OUT (C),A | Write to register | ||
F38C | EXX | |||
F38D | LD B,$13 | Delay loop (lower value => higher frequency) | ||
speech_samples_table_0 | F38F | DJNZ speech_samples_table_0 | ||
F391 | LD A,(HL) | Load next nibble (same byte, but next nibble) | ||
F392 | DEC C | Decrement nibble counter | ||
F393 | JR NZ,plsp_2 | Loop plsp_2 | ||
F395 | INC HL | Advance to next byte of sample data | ||
F396 | DEC DE | Decrement sample data counter | ||
F397 | LD A,D | Loop to plsp_1 while sample data remains | ||
F398 | OR E | |||
F399 | JP NZ,$815B | |||
F39C | JP $8208 | Exit via relocated reset_paging_128k |
Prev: F2FA | Up: Map | Next: F39F |