From 4cc13339391ac148a9fefd78d02b2d37cfcf6098 Mon Sep 17 00:00:00 2001 From: kanjitalk755 Date: Sun, 8 Dec 2024 09:57:37 +0900 Subject: [PATCH] save speaker volume to XPRAM --- BasiliskII/src/SDL/audio_sdl.cpp | 2 ++ BasiliskII/src/main.cpp | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/BasiliskII/src/SDL/audio_sdl.cpp b/BasiliskII/src/SDL/audio_sdl.cpp index 1c02c9f4..0f2fc07c 100644 --- a/BasiliskII/src/SDL/audio_sdl.cpp +++ b/BasiliskII/src/SDL/audio_sdl.cpp @@ -25,6 +25,7 @@ #include "user_strings.h" #include "audio.h" #include "audio_defs.h" +#include "xpram.h" #include #include @@ -369,6 +370,7 @@ void audio_set_speaker_volume(uint32 vol) speaker_volume = ((vol >> 16) + (vol & 0xffff)) / 2; if (speaker_volume > MAC_MAX_VOLUME) speaker_volume = MAC_MAX_VOLUME; + XPRAM[8] = (XPRAM[8] & 0xf8) | (speaker_volume * 7 / 256 & 7); } static int get_audio_volume() { diff --git a/BasiliskII/src/main.cpp b/BasiliskII/src/main.cpp index e010a19c..7bc37f8e 100644 --- a/BasiliskII/src/main.cpp +++ b/BasiliskII/src/main.cpp @@ -38,6 +38,7 @@ #include "user_strings.h" #include "prefs.h" #include "main.h" +#include "audio.h" #define DEBUG 0 #include "debug.h" @@ -168,6 +169,9 @@ bool InitAll(const char *vmdir) // Init audio AudioInit(); + int vol = (XPRAM[8] & 7) * 256 / 7; + vol += vol < 256; + audio_set_speaker_volume(vol | vol << 16); // Init video if (!VideoInit(ROMVersion == ROM_VERSION_64K || ROMVersion == ROM_VERSION_PLUS || ROMVersion == ROM_VERSION_CLASSIC))