ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
volume.c
Go to the documentation of this file.
1/*****************************************************************************
2 * ugBASIC - an isomorphic BASIC language compiler for retrocomputers *
3 *****************************************************************************
4 * Copyright 2021-2026 Marco Spedaletti (asimov@mclink.it)
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *----------------------------------------------------------------------------
18 * Concesso in licenza secondo i termini della Licenza Apache, versione 2.0
19 * (la "Licenza"); è proibito usare questo file se non in conformità alla
20 * Licenza. Una copia della Licenza è disponibile all'indirizzo:
21 *
22 * http://www.apache.org/licenses/LICENSE-2.0
23 *
24 * Se non richiesto dalla legislazione vigente o concordato per iscritto,
25 * il software distribuito nei termini della Licenza è distribuito
26 * "COSÌ COM'È", SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o
27 * implicite. Consultare la Licenza per il testo specifico che regola le
28 * autorizzazioni e le limitazioni previste dalla medesima.
29 ****************************************************************************/
30
31/****************************************************************************
32 * INCLUDE SECTION
33 ****************************************************************************/
34
35#include "../../ugbc.h"
36
37/****************************************************************************
38 * CODE SECTION
39 ****************************************************************************/
40
51/* <usermanual>
52@keyword VOLUME
53
54@english
55This command allows you to change the volume at which the audio is generated.
56In general, you can change the overall audio, or that of each individual voice.
57
58@italian
59Questo comando permette di modificare il volume con cui l'audio viene generato.
60In generale è possibile modificare l'audio complessivo, oppure quello di ogni
61singola voce.
62
63@syntax VOLUME #[value] {ON #[channels]}
64
65@example VOLUME #255
66@example VOLUME #0 ON #%001
67
68@target cpc
69</usermanual> */
70void volume( Environment * _environment, int _volume, int _channels ) {
71
72 ay8910_set_volume( _environment, _channels, _volume/16 );
73
74}
75
86/* <usermanual>
87@keyword VOLUME
88
89@syntax VOLUME [volume] {ON [channels]}
90
91@example VOLUME massimo
92@example VOLUME zero ON voice1
93
94@target cpc
95</usermanual> */
96void volume_vars( Environment * _environment, char * _volume, char * _channels ) {
97
98 Variable * volume = variable_retrieve_or_define( _environment, _volume, VT_BYTE, 255 );
99 if ( _channels ) {
100 Variable * channels = variable_retrieve_or_define( _environment, _channels, VT_WORD, 0x07 );
101 ay8910_set_volume_vars( _environment, channels->realName, volume->realName );
102 } else {
103 ay8910_set_volume_vars( _environment, NULL, volume->realName );
104 }
105
106}
Variable * variable_retrieve_or_define(Environment *_environment, char *_name, VariableType _type, int _value)
void volume_vars(Environment *_environment, char *_volume, char *_channels)
Emit ASM code for VOLUME ....
Definition volume.c:96
void volume(Environment *_environment, int _volume, int _channels)
Emit ASM code for VOLUME ....
Definition volume.c:70
void ay8910_set_volume(Environment *_environment, int _channels, int _volume)
Definition ay8910.c:112
void ay8910_set_volume_vars(Environment *_environment, char *_channels, char *_volume)
Definition ay8910.c:731
char * realName
Definition ugbc.h:982
struct _Variable Variable
Structure of a single variable.
struct _Environment Environment
Structure of compilation environment.
@ VT_WORD
Definition ugbc.h:455
@ VT_BYTE
Definition ugbc.h:450