FF7/Field/Script/Opcodes/F2 AKAO

* Opcode: **0xF2**
* Short name: **AKAO**
* Long name: Sound Operation (byte param1)

#### Arguments

* **const Bit[4]** *B1*: Bank to retrieve *Param1*, or zero if *Param1* is specified as a literal value.
* **const Bit[4]** *B2*: Bank to retrieve *Param2*, or zero if *Param2* is specified as a literal value.
* **const Bit[4]** *B3*: Bank to retrieve *Param3*, or zero if *Param3* is specified as a literal value.
* **const Bit[4]** *B4*: Bank to retrieve *Param4*, or zero if *Param4* is specified as a literal value.
* **const Bit[4]** *0*: Zero.
* **const Bit[4]** *B6*: Bank to retrieve *Param5*, or zero if *Param5* is specified as a literal value.
* **const UByte** *Op*: Operation to perform.
* **const UByte** *Param1*: Parameter 1.
* **const UShort** *Param2*: Parameter 2.
* **const UShort** *Param3*: Parameter 3.
* **const UShort** *Param4*: Parameter 4.
* **const UShort** *Param5*: Parameter 5.

#### Description

Perform an operation described by *Op*, and uses the parameters depending on the operation.

##### Operation list (by Aali and DLPB)

* **10** Play music [param1=Music ID]
* **14** Same as 10
* **15** *Unknown* Serves no significant function
* **18** Play music and resume from last position [param1=Music ID]
* **19** Same as 18

* **20** Play one sound effect [param1=Panning, param2=Effect ID on channel #1]
* **21** Play two sound effects [param1=Panning, param2=Effect ID on channel #1, param3=Effect ID on channel #2]
* **22** Play three sound effects [param1=Panning, param2=Effect ID on channel #1, param3=Effect ID on channel #2, param4=Effect ID on channel #3]
* **23** Play four sound effects [param1=Panning, param2=Effect ID on channel #1, param3=Effect ID on channel #2, param4=Effect ID on channel #3, param5=Effect ID on channel #4]
* **24** Same as 20
* **25** Same as 21
* **26** Same as 22
* **27** Same as 23
* **28** Play a sound effect on channel #1 [param1=Panning, param2=Effect ID]
* **29** Play a sound effect on channel #2 [param1=Panning, param2=Effect ID]
* **2A** Play a sound effect on channel #3 [param1=Panning, param2=Effect ID]
* **2B** Play a sound effect on channel #4 [param1=Panning, param2=Effect ID]
* **30** Play a sound effect on channel #5 with centre panning

* **98** Resumes music and sound effects
* **99** Pauses music and sound effects
* **9A** Resumes only the music
* **9B** Pauses only the music
* **9C** Resumes only sound effects
* **9D** Pauses only sound effects

* **A0** Volume control (channel #1) [param1=Volume]
* **A1** Volume control (channel #2) [param1=Volume]
* **A2** Volume control (channel #3) [param1=Volume]
* **A3** Volume control (channel #4) [param1=Volume]
* **A4** Volume transition (channel #1) [param1=Transition time, param2=Target volume]
* **A5** Volume transition (channel #2) [param1=Transition time, param2=Target volume]
* **A6** Volume transition (channel #3) [param1=Transition time, param2=Target volume]
* **A7** Volume transition (channel #4) [param1=Transition time, param2=Target volume]
* **A8** Pan control (channel #1) [param1=Panning]
* **A9** Pan control (channel #2) [param1=Panning]
* **AA** Pan control (channel #3) [param1=Panning]
* **AB** Pan control (channel #4) [param1=Panning]
* **AC** Pan transition (channel #1) [param1=Transition time, param2=Target panning]
* **AD** Pan transition (channel #2) [param1=Transition time, param2=Target panning]
* **AE** Pan transition (channel #3) [param1=Transition time, param2=Target panning]
* **AF** Pan transition (channel #4) [param1=Transition time, param2=Target panning]

* **B0** Tempo control (channel #1) [param1=Tempo]
* **B1** Tempo control (channel #2) [param1=Tempo]
* **B2** Tempo control (channel #3) [param1=Tempo]
* **B3** Tempo control (channel #4) [param1=Tempo]
* **B4** Tempo transition (channel #1) [param1=Transition time, param2=Target tempo]
* **B5** Tempo transition (channel #2) [param1=Transition time, param2=Target tempo]
* **B6** Tempo transition (channel #3) [param1=Transition time, param2=Target tempo]
* **B7** Tempo transition (channel #4) [param1=Transition time, param2=Target tempo]
* **B8** Volume control for channel #1 to #4 [param1=Volume]
* **B9** Volume transition for channel #1 to #4 [param1=Transition time, param2=Target volume]
* **BA** Pan control for channel #1 to #4 [param1=Panning]
* **BB** Pan transition for channel #1 to #4 [param1=Transition time, param2=Target panning]
* **BC** Tempo control for channel #1 to #4 [param1=Tempo]
* **BD** Tempo transition for channel #1 to #4 [param1=Transition time, param2=Target tempo]

* **C0** Music volume [param1=Volume]
* **C1** Music volume transition [param1=Transition time, param2=Target volume]
* **C2** Music From-To volume transition [param1=Transition time, param2=Starting volume, param3=Ending volume]

* **C8** Music balance [param1=balance]
* **C9** Music balance transition [param1=Transition time, param2=Target balance]
* **CA** Music From-To balance transition [param1=Transition time, param2=Starting balance, param3=Ending balance]

* **D0** Music tempo [param1=Tempo]
* **D1** Music tempo transition [param1=Transition time, param2=Target tempo]
* **D2** Music From-To tempo transition [param1=Transition time, param2=Starting tempo, param3=Ending tempo]

* **F0** Stop music
* **F1** Stop sound effects (channel #1 to #4)

#### Please Note

Channel #5 (used from operation 0x30) is dedicated to the menu and should not be used for anything else.

All transitions use the formula Transition\_time (in seconds) = param1 / 60.

The pan (audio L/R balance) value range is 0 to 127, where 0 is fully left, 64 is centre, and 127 is fully right.

The maximum volume is 127.

The tempo value range is 0 to 127. The normal tempo is 0.

Operations 0x10/14/18/19 do not work on the PSX game from field script [CURRENTLY CHECKING THIS].

Operations 0xC8/C9/CA are not implemented in the PSX version or PC version despite the field script calling them.