Prev: F2FA Up: Map Next: F39F
F32E: Play speech
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