From b31c138604169a99808d9e3876789cc5f3d77c4d Mon Sep 17 00:00:00 2001 From: tudnai Date: Wed, 1 Jul 2020 23:08:33 -0700 Subject: [PATCH] More buttons on toolbar --- A2Mac.xcodeproj/project.pbxproj | 24 ++++++ A2Mac/Base.lproj/Main.storyboard | 111 +++++++++++++++++++------- A2Mac/ToolBarController.swift | 27 +++++-- Resources/img/doc.text.viewfinder.png | Bin 0 -> 1830 bytes Resources/img/floppy.png | Bin 0 -> 10940 bytes Resources/img/gobackward.png | Bin 0 -> 2394 bytes Resources/img/joystick.png | Bin 0 -> 9891 bytes Resources/img/power.png | Bin 0 -> 2016 bytes Resources/img/select_all.png | Bin 0 -> 994 bytes src/dev/audio/speaker.c | 62 ++++++++++---- src/dev/audio/speaker.h | 5 ++ 11 files changed, 179 insertions(+), 50 deletions(-) create mode 100644 Resources/img/doc.text.viewfinder.png create mode 100644 Resources/img/floppy.png create mode 100644 Resources/img/gobackward.png create mode 100644 Resources/img/joystick.png create mode 100644 Resources/img/power.png create mode 100644 Resources/img/select_all.png diff --git a/A2Mac.xcodeproj/project.pbxproj b/A2Mac.xcodeproj/project.pbxproj index a9a15fd..d5758e9 100644 --- a/A2Mac.xcodeproj/project.pbxproj +++ b/A2Mac.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 32089E4924556DBD0036E667 /* PRNumber3.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 32089E4724556DBD0036E667 /* PRNumber3.ttf */; }; + 320B3FC424AD88B0005EA133 /* power.png in Resources */ = {isa = PBXBuildFile; fileRef = 320B3FC324AD88B0005EA133 /* power.png */; }; 3213936624079C30007F5C4A /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 32BFFB6022EACC660003B53F /* Main.storyboard */; }; 323D042E248980600086A901 /* Preferences.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 323D042D248980600086A901 /* Preferences.storyboard */; }; 323D043024898AB70086A901 /* PreferencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 323D042F24898AB70086A901 /* PreferencesViewController.swift */; }; @@ -18,6 +19,7 @@ 323E2DD1245531E600156805 /* Apple2e.rom in Resources */ = {isa = PBXBuildFile; fileRef = 323E2DCD245531E500156805 /* Apple2e.rom */; }; 32440B85247E27D7000F9DA1 /* 6502.c in Sources */ = {isa = PBXBuildFile; fileRef = 32439F7422ECD8AD0077AAE0 /* 6502.c */; }; 32440BA32480D5C0000F9DA1 /* LoRes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32440BA22480D5C0000F9DA1 /* LoRes.swift */; }; + 324D15D324ADAC71008AAFB0 /* floppy.png in Resources */ = {isa = PBXBuildFile; fileRef = 324D15D224ADAC71008AAFB0 /* floppy.png */; }; 325DC40E24AC5ABC00EB8858 /* doc.on.doc.png in Copy Image Files */ = {isa = PBXBuildFile; fileRef = 325DC40D24AC5ABC00EB8858 /* doc.on.doc.png */; }; 325DC41024AC691B00EB8858 /* rgb_color.png in Copy Image Files */ = {isa = PBXBuildFile; fileRef = 325DC40F24AC691B00EB8858 /* rgb_color.png */; }; 325DC41324AC692D00EB8858 /* rgb_mono.png in Copy Image Files */ = {isa = PBXBuildFile; fileRef = 325DC41124AC692D00EB8858 /* rgb_mono.png */; }; @@ -54,6 +56,9 @@ 325EB6A82401118300C6B4A4 /* ProDOS_402_System.woz in Resources */ = {isa = PBXBuildFile; fileRef = 325EB6992401118200C6B4A4 /* ProDOS_402_System.woz */; }; 325EB6AA2401118300C6B4A4 /* Sneakers.woz in Resources */ = {isa = PBXBuildFile; fileRef = 325EB69A2401118300C6B4A4 /* Sneakers.woz */; }; 325EB6AC2401118300C6B4A4 /* Xonix.woz in Resources */ = {isa = PBXBuildFile; fileRef = 325EB69B2401118300C6B4A4 /* Xonix.woz */; }; + 326B56E524AD8E89009BA0AC /* gobackward.png in Resources */ = {isa = PBXBuildFile; fileRef = 326B56E424AD8E89009BA0AC /* gobackward.png */; }; + 326B56E724AD906D009BA0AC /* doc.text.viewfinder.png in Resources */ = {isa = PBXBuildFile; fileRef = 326B56E624AD906D009BA0AC /* doc.text.viewfinder.png */; }; + 32877F8D24ADA6AF003A940D /* joystick.png in Resources */ = {isa = PBXBuildFile; fileRef = 32877F8C24ADA6AF003A940D /* joystick.png */; }; 3296223224A6622C002DEB78 /* apple_original_logo_design.png in Resources */ = {isa = PBXBuildFile; fileRef = 3296223124A6622C002DEB78 /* apple_original_logo_design.png */; }; 3296223424A709CE002DEB78 /* disk_ii_motor_w_floppy.sfx in Resources */ = {isa = PBXBuildFile; fileRef = 3296223324A709CE002DEB78 /* disk_ii_motor_w_floppy.sfx */; }; 3296223524A709CE002DEB78 /* disk_ii_motor_w_floppy.sfx in Resources */ = {isa = PBXBuildFile; fileRef = 3296223324A709CE002DEB78 /* disk_ii_motor_w_floppy.sfx */; }; @@ -63,6 +68,7 @@ 3296223A24A710E5002DEB78 /* disk_ii_io_error.sfx in Copy SFX Files */ = {isa = PBXBuildFile; fileRef = 3296223724A710CD002DEB78 /* disk_ii_io_error.sfx */; }; 32A9F74A2467B60B004902A1 /* speaker.c in Sources */ = {isa = PBXBuildFile; fileRef = 32A9F7492467B60B004902A1 /* speaker.c */; }; 32A9F74B2467B60B004902A1 /* speaker.c in Sources */ = {isa = PBXBuildFile; fileRef = 32A9F7492467B60B004902A1 /* speaker.c */; }; + 32AF7C9724AD85E8002D82BF /* select_all.png in Copy Image Files */ = {isa = PBXBuildFile; fileRef = 32AF7C9624AD85E8002D82BF /* select_all.png */; }; 32BFFB5B22EACC630003B53F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32BFFB5A22EACC630003B53F /* AppDelegate.swift */; }; 32BFFB5D22EACC630003B53F /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32BFFB5C22EACC630003B53F /* ViewController.swift */; }; 32BFFB5F22EACC660003B53F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 32BFFB5E22EACC660003B53F /* Assets.xcassets */; }; @@ -262,6 +268,7 @@ dstPath = ""; dstSubfolderSpec = 7; files = ( + 32AF7C9724AD85E8002D82BF /* select_all.png in Copy Image Files */, 325DC41024AC691B00EB8858 /* rgb_color.png in Copy Image Files */, 325DC41324AC692D00EB8858 /* rgb_mono.png in Copy Image Files */, 325DC41424AC692D00EB8858 /* mono.png in Copy Image Files */, @@ -278,6 +285,7 @@ /* Begin PBXFileReference section */ 32089E4724556DBD0036E667 /* PRNumber3.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = PRNumber3.ttf; sourceTree = ""; }; + 320B3FC324AD88B0005EA133 /* power.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = power.png; sourceTree = ""; }; 323D042D248980600086A901 /* Preferences.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Preferences.storyboard; sourceTree = ""; }; 323D042F24898AB70086A901 /* PreferencesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesViewController.swift; sourceTree = ""; }; 323D04312489BFD80086A901 /* PreferencesWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesWindowController.swift; sourceTree = ""; }; @@ -335,6 +343,7 @@ 32440B9C247F9DC7000F9DA1 /* blank.woz */ = {isa = PBXFileReference; lastKnownFileType = file; path = blank.woz; sourceTree = ""; }; 32440BA0247F9F99000F9DA1 /* LOCKSMITH_V7_REV_B.woz */ = {isa = PBXFileReference; lastKnownFileType = file; path = LOCKSMITH_V7_REV_B.woz; sourceTree = ""; }; 32440BA22480D5C0000F9DA1 /* LoRes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoRes.swift; sourceTree = ""; }; + 324D15D224ADAC71008AAFB0 /* floppy.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = floppy.png; sourceTree = ""; }; 325DC40D24AC5ABC00EB8858 /* doc.on.doc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = doc.on.doc.png; sourceTree = ""; }; 325DC40F24AC691B00EB8858 /* rgb_color.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = rgb_color.png; sourceTree = ""; }; 325DC41124AC692D00EB8858 /* rgb_mono.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = rgb_mono.png; sourceTree = ""; }; @@ -377,12 +386,16 @@ 3264261023284F6F008B615F /* Apple2_mmio_8bit_ioaddr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Apple2_mmio_8bit_ioaddr.h; sourceTree = ""; }; 326426112328ADF4008B615F /* Apple_II_ROM.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = Apple_II_ROM.s; sourceTree = ""; }; 3268E68E2474E24900047474 /* paddle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = paddle.h; sourceTree = ""; }; + 326B56E424AD8E89009BA0AC /* gobackward.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = gobackward.png; sourceTree = ""; }; + 326B56E624AD906D009BA0AC /* doc.text.viewfinder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = doc.text.viewfinder.png; sourceTree = ""; }; 326ED2EE232D7A0000A41337 /* 6502_functional_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = 6502_functional_test.bin; sourceTree = SOURCE_ROOT; }; + 32877F8C24ADA6AF003A940D /* joystick.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = joystick.png; sourceTree = ""; }; 3296223124A6622C002DEB78 /* apple_original_logo_design.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = apple_original_logo_design.png; sourceTree = ""; }; 3296223324A709CE002DEB78 /* disk_ii_motor_w_floppy.sfx */ = {isa = PBXFileReference; lastKnownFileType = file; path = disk_ii_motor_w_floppy.sfx; sourceTree = ""; }; 3296223724A710CD002DEB78 /* disk_ii_io_error.sfx */ = {isa = PBXFileReference; lastKnownFileType = file; path = disk_ii_io_error.sfx; sourceTree = ""; }; 32A9F7482467B60B004902A1 /* speaker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = speaker.h; sourceTree = ""; }; 32A9F7492467B60B004902A1 /* speaker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = speaker.c; sourceTree = ""; }; + 32AF7C9624AD85E8002D82BF /* select_all.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = select_all.png; sourceTree = ""; }; 32B18435233F10BC00DBB4AB /* Shaders.metal */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.metal; path = Shaders.metal; sourceTree = ""; }; 32B18438233FAB3900DBB4AB /* verticies.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = verticies.swift; sourceTree = ""; }; 32BFFB5722EACC630003B53F /* Steve ][.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Steve ][.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -792,13 +805,19 @@ 32F8A8B124A3AE1600EE6735 /* img */ = { isa = PBXGroup; children = ( + 324D15D224ADAC71008AAFB0 /* floppy.png */, + 32877F8C24ADA6AF003A940D /* joystick.png */, 3296223124A6622C002DEB78 /* apple_original_logo_design.png */, 32E21BE62491BF8B006C0C72 /* apple-rainbow.png */, 323D04432490B3930086A901 /* dotmatrix_effect.png */, 323D04452490BA1E0086A901 /* scanlines.png */, 325DC40D24AC5ABC00EB8858 /* doc.on.doc.png */, 32E3127224AC0AC400E61891 /* doc.on.clipboard.png */, + 326B56E624AD906D009BA0AC /* doc.text.viewfinder.png */, + 32AF7C9624AD85E8002D82BF /* select_all.png */, + 320B3FC324AD88B0005EA133 /* power.png */, 325DC41224AC692D00EB8858 /* mono.png */, + 326B56E424AD8E89009BA0AC /* gobackward.png */, 325DC41124AC692D00EB8858 /* rgb_mono.png */, 325DC40F24AC691B00EB8858 /* rgb_color.png */, ); @@ -1065,10 +1084,15 @@ buildActionMask = 2147483647; files = ( 3296223424A709CE002DEB78 /* disk_ii_motor_w_floppy.sfx in Resources */, + 320B3FC424AD88B0005EA133 /* power.png in Resources */, + 32877F8D24ADA6AF003A940D /* joystick.png in Resources */, 3296223224A6622C002DEB78 /* apple_original_logo_design.png in Resources */, 3213936624079C30007F5C4A /* Main.storyboard in Resources */, + 326B56E724AD906D009BA0AC /* doc.text.viewfinder.png in Resources */, 32BFFB5F22EACC660003B53F /* Assets.xcassets in Resources */, + 324D15D324ADAC71008AAFB0 /* floppy.png in Resources */, 323D042E248980600086A901 /* Preferences.storyboard in Resources */, + 326B56E524AD8E89009BA0AC /* gobackward.png in Resources */, 32E3126524A7193700E61891 /* disk_ii_arm.sfx in Resources */, 3296223824A710CD002DEB78 /* disk_ii_io_error.sfx in Resources */, ); diff --git a/A2Mac/Base.lproj/Main.storyboard b/A2Mac/Base.lproj/Main.storyboard index c9f31a0..89aac01 100644 --- a/A2Mac/Base.lproj/Main.storyboard +++ b/A2Mac/Base.lproj/Main.storyboard @@ -1242,14 +1242,14 @@ - + - - - @@ -1290,20 +1287,20 @@ - + - + @@ -1322,6 +1319,22 @@ + + + + + + + + + @@ -1354,23 +1367,23 @@ - + - - + - + @@ -1383,23 +1396,23 @@ - + - + - - + @@ -1418,6 +1431,38 @@ + + + + + + + + + + + + + + + + + + @@ -1456,12 +1501,14 @@ - + + + @@ -1639,19 +1686,18 @@ - + - + - - - + + @@ -1668,6 +1714,10 @@ + + + + @@ -1955,19 +2005,22 @@ - - + + + + + diff --git a/A2Mac/ToolBarController.swift b/A2Mac/ToolBarController.swift index 8cb5a2e..80d2b73 100644 --- a/A2Mac/ToolBarController.swift +++ b/A2Mac/ToolBarController.swift @@ -13,17 +13,23 @@ import AVFoundation class ToolBarController: NSWindowController { @IBAction func PowerOn(_ sender: Any) { - ViewController.current?.PowerOn(sender) - } - - @IBAction func PowerOff(_ sender: Any) { - ViewController.current?.PowerOff(sender) + switch cpuState { + case cpuState_inited, cpuState_unknown: + ViewController.current?.PowerOn(sender) + + default: + ViewController.current?.PowerOff(sender) + } } @IBAction func Pause(_ sender: Any) { ViewController.current?.Pause(sender) } + @IBAction func Reset(_ sender: Any) { + ViewController.current?.Reset(sender) + } + @IBAction func Copy(_ sender: Any) { } @@ -81,4 +87,15 @@ class ToolBarController: NSWindowController { ViewController.current?.setSimulationMode( mode: sender.selectedItem?.title ?? "Normal" ) } + @IBAction func Mute(_ sender: Any) { + spkr_mute() + } + + @IBAction func VolDn(_ sender: Any) { + spkr_vol_dn() + } + + @IBAction func VolUp(_ sender: Any) { + spkr_vol_up() + } } diff --git a/Resources/img/doc.text.viewfinder.png b/Resources/img/doc.text.viewfinder.png new file mode 100644 index 0000000000000000000000000000000000000000..b41f60483b085778b3785e399dbac6364901847c GIT binary patch literal 1830 zcmZWqdoMW5YBVFysJs~>bdpQsFnJ7lr7$C!>*rB<6%D4D#yQcE z)4}oVdPdWdG}o9Rp}}NMN8A|9bsdvRbEdVrf1SP7x4*UbUfq+cSsjO5Nv{Al>+uxFhZjBiux9d}(%P&^)q)wJzLAB)1m@mWU zt!Kt?NbxEhI?s8)x#mL4OluTVALayKKwfroi4aSwuKn)&}*mHwhWcU_T2UV`862M4I}7MWj{Akg@jjk>CD2P8g5ptRU&tK|8m`s7 z>PV-HzqjEb;rn!5USdF2e0FaZs`?+(Iz3>^?)Z7ah@|yCTC6HwC>cMNGsBZ4r4Q`W z#P=aL1YPq~v5Iv=eB&8ivFj3)!2WfC@M3EylAHh;ai&XrGi(3lx#21{tWJ2|%_Vny zzslEo>QD01A=(U%8lw#x%4Txz%rETrY|+WU|B)886ETY4Pitjun`+;A_Sq^)w-RVm z^6IaM@FjD6xa23EJOTOWy50k%Sl%^ z>x)I0RVPH(&FDwX>Xjq9FUo)5G@JZSE8Mc(ITDxn!#v*r&Kv2jt5?znrocaDX)P>I zUHL07$!8t$dzhnKUZv(&&|ojT&zF67Bz#<>1hjBRgcGzQE>aG z{>W7@6UAFFLRw|C>yJZ!P0Tz-(W8uZ&ShOd9%#p_m0}JP+RqQz>j$ZOx}&Rqr6n!pfa@0;R*u?; zuG`0hRrK3$4DWSJ->Q_fGzEXVH5c%2plAfeV5ZhiKMH+%0`gq#FZwX4Cvj^-wIBjb z+a?EeS^AzvOMm7?HTm0rH%FINwz$F`0@gGBZFb>fEIb&*|B*vQrhh&!juG1q0+my+ zWf9Gg3oF}(eyWhI$p4$Uco7lI7OG=lM0{=@hrXeK%s@ul3LO7E`{4FwdYbuo{}`G? z@XG89BU-8M?H8WOfA_XCwpLai;aeBM>bQ9ln6Y|^S5)K>uaA?)XfeBF!;89xpJQx% zF<@WHOy7x+Ua`J%0;k>iB18PRB-Qt4ZHTq)N0BYYQSVt8#D4im00g$F++Qa6?PjBS z#}UVcv!)yqYvO^PVAAATSIKkOo^SIqmu$X8) zbGd5Y6mpMu8^N`^L!z`{Bzzxzlza8bLYLJuH-;^EGu7GB6y+>IuG+N=9gbxKQjlvW ztJyN&|vzYAM~ z@qb%i(Y`C3a2NtKp$njgtu`~B+|4s_#6>NyzR`?BD1jm$r6Qd}=7MCBgY+?L#X(JQ zX}@Jrblag_6*OXIqc71tA@%j`pubtfH`_=mlLJB9ZPd*2)AL{L&d1Z=qsfhw`xl@? BHwgd$ literal 0 HcmV?d00001 diff --git a/Resources/img/floppy.png b/Resources/img/floppy.png new file mode 100644 index 0000000000000000000000000000000000000000..550831dd71cb91eddd92a54219770352a81337e5 GIT binary patch literal 10940 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 literal 0 HcmV?d00001 diff --git a/Resources/img/gobackward.png b/Resources/img/gobackward.png new file mode 100644 index 0000000000000000000000000000000000000000..0ee2b415e8b8834bbdcecf106f745cb52c27faef GIT binary patch literal 2394 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 M>V8VoF8cX@0iML2n*aa+ literal 0 HcmV?d00001 diff --git a/Resources/img/select_all.png b/Resources/img/select_all.png new file mode 100644 index 0000000000000000000000000000000000000000..05b96cb308ffea8a72e4abd3395c69bc03176c0a GIT binary patch literal 994 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSY)RhkEe6>49xkSE{-7;x8B}$EV^YN(e|*PCwo`B z%p&&_jJp;rR%O@No>0VH#V~DF;xbEzz6;JQ-ySl(U6l4H(M#Z(e&nY6=~G!ZroMLG zmh<0@31mAII2)hbDD?iXxu?DA+4q00FJ2;lZs+ugy7n*r>-ccL`Lb>2lC?{YOV7Vu z7URG2^nCAMPxt!EwY9g*-QWGDrluwF`kTw2m@mBgGxOl1zDd^@=SQ2*mwojqeWjCu zr$B?bXZMWcM-i+tX8x1Hrv1*JmALziv~9>)yQmtYN#~f(YgXB^XYi-HTiI*ztbWEF z^4&xrt(}!`AwxsbImW2t8ih5h`j47ysFgI%=z6sGzgDJl=FCj%?~~@uE#A-U99#0+ zOPcXtj8D88qxJXDOViKX{-yWw1szjNkad~R9$+|_AwXESbjZ}VtgzRAjM z3_4fmKV`VJeaEMAQ$`0z4hBY4xa0W4Q}-o28P1(&XtQJLZF0HKmuG*nONVdm-&&1C z7Kb>X!BhT5ioX_|F4!>HL4W}S3uGVEU12p~nqjxJ>y#UVr2W#aJ<58|8NROEr^mqB zyMv`+@_{$sZ1djNF}z)E$8i2vILFM})tlelx*cB5FzeOzP6pkzPYkb@eEUie?rXfRs0O^IdwAb#;_+yaWFBgV|JNyHCWu>lVHQH2E%@aMS2R_ zub3QS51a@TXIR##z<>;2sH52Tp_)$sLB$F(Gv>OZLWZ2i0a z{vHl>D~9m4g|dnU@BhS}+}v<_wve$?!o8oHrGM|a&ag&xE{Ef`bM_}+T-)u*FzfJv zS6&<|B(}Z(Gc{Cl-%XtdlLZX4U(_9&zvZ*) 1 ) { + spkr_vol = 1; + } + alListenerf(AL_GAIN, spkr_vol); + al_check_error(); +} + +void spkr_vol_dn() { + spkr_vol -= 0.1; + if ( spkr_vol < 0.1 ) { + // use mute to make it completely silent + spkr_vol = 0.1; + } + alListenerf(AL_GAIN, spkr_vol); + al_check_error(); +} + +void spkr_mute() { + ALfloat vol = 0; + alGetListenerf(AL_GAIN, &vol); + al_check_error(); + + if ( vol > SPKR_MIN_VOL ) { + alListenerf(AL_GAIN, SPKR_MIN_VOL); + al_check_error(); + } + else { + alListenerf(AL_GAIN, spkr_vol); + al_check_error(); + } +} + + int spkr_unqueue( ALuint src ) { ALint processed = 0; diff --git a/src/dev/audio/speaker.h b/src/dev/audio/speaker.h index 67a2f93..a6da4dc 100644 --- a/src/dev/audio/speaker.h +++ b/src/dev/audio/speaker.h @@ -58,6 +58,11 @@ extern int spkr_extra_buf; extern unsigned spkr_play_timeout; extern unsigned spkr_play_time; +extern float spkr_vol; + +extern void spkr_vol_up(void); +extern void spkr_vol_dn(void); +extern void spkr_mute(void); extern void spkr_init(void); extern void spkr_exit(void);