Sound Engine

Sound Engine

  • Segments
  • MIDISeg segment PUBLIC 'DATA8'  ; ** Holds MIDI stuff  **
        MIDIBuffer DB 65535 dup(?)
    MIDISeg ENDS    
    
    SoundSeg segment PUBLIC 'DATA9' ; ** Holds sound stuff **
        SoundBuffer db 65535 dup(?)
    SoundSeg ENDS

  • Constants
  • MIDI_1       db 'MIDI/Award.xmi' , 0
    MIDI_2       db 'MIDI/End.xmi' , 0
    MIDI_3       db 'MIDI/Kalimari.xmi' , 0
    MIDI_4       db 'MIDI/Luigi.xmi' , 0
    MIDI_5       db 'MIDI/Rainbow.xmi' , 0
    
    ================ Sounds ======================
    
    GO          db 'Sound/Go.VOC' , 0
    MENU        db 'Sound/Menu.VOC' , 0
    ENGINE      db 'Sound/Engine.VOC' , 0 
    ALRIGHT1    db 'Sound/Alright1.VOC' , 0
    ALRIGHT2    db 'Sound/Alright2.VOC' , 0
    ALRIGHT3    db 'Sound/Alright3.VOC' , 0
    FINALLAP    db 'Sound/Finallap.VOC' , 0
    GETYOU      db 'Sound/Getyou.VOC' , 0
    NOTIME      db 'Sound/NoTime.VOC' , 0
    COMPLETED   db 'Sound/Completed.VOC' , 0
    SKID1       db 'Sound/Skid1.VOC' , 0
    SKID2       db 'Sound/Skid2.VOC' , 0
    SMASH       db 'Sound/Smash1.VOC' , 0
    CLAP        db 'Sound/Theclap.VOC' , 0
    THREE       db 'Sound/Three.VOC' , 0
    TWO         db 'Sound/Two.VOC' , 0
    ONE         db 'Sound/One.VOC' , 0
    WOOO        db 'Sound/Wooo.VOC' , 0
    SWEAR       db 'Sound/Swear.VOC' , 0
    
    
    ========================================================
                         SOUND VARIABLES
    ========================================================
    
    =================  SoundBlaster SETUP ==================
    BaseAddr        EQU 0220h                      ; SoundBlaster base address
    IRQ7            EQU 13                         ; SoundBlaster IRQ (8 +
    IRQ)
    DMAchannel      EQU 1                          ; SoundBlaster DMA channel
    
    ============ PIC MASKS FOR MASK/DEMASK IRQ =============
    PICANDMASK         EQU 11011111b               ; 'AND' PIC mask for clear
    IRQ7
    PICORMASK          EQU 00100000b               ; 'OR' PIC mask for set
    IRQ7
    
    ============== DMA CONTROLLER REGISTERS ================
    WRITEMASK          EQU 00ah                    ; WRITE MASK REGISTER
    WRITEMODE          EQU 00bh                    ; WRITE MODE REGISTER
    CLEARFLIPFLOP      EQU 00ch
    PAGE_CHN           EQU 083h                    ; PAGE REGISTER FOR
    DMAChannel 1
    BASE_CHN           EQU 002h                    ; BaseAddress REGISTER
    DMAChannel 1
    COUNT_CHN          EQU 003h                    ; COUNT REGISTER DMAChannel
    1
    
    =============  SAMPLERATE ==============================
     if you change it pay attention to maximum samplerate
     Files have to be in the frequency of 10989 Hz
    TIMECONST          EQU 165                     ; = 10989 Hz
    (256-1000000/11000)
    
    ================ DMA WRITE MODE ========================
    WANTEDMODE         EQU 01001000b       ; singlemode, autoinit,readmode
    
  • Variables
  • SoundSize dw ? , size of the VOC file
    MIDISize dw ? , size of the MIDI file
    

  • WriteDSP MACRO X

  • LoadMIDI
  • RegisterXMIDI
  • PlayMIDI
  • StopMIDI

  • LoadSound
  • ResetDSP
  • SetupDMA
  • LoadSound