- Splash screen

- HiRes pixel rendering improvements
This commit is contained in:
tudnai 2020-05-09 03:39:55 -07:00
parent 2805fd8869
commit ccc468ab0b
5 changed files with 82 additions and 55 deletions

View File

@ -68,6 +68,8 @@
325EB6AC2401118300C6B4A4 /* Xonix.woz in Resources */ = {isa = PBXBuildFile; fileRef = 325EB69B2401118300C6B4A4 /* Xonix.woz */; }; 325EB6AC2401118300C6B4A4 /* Xonix.woz in Resources */ = {isa = PBXBuildFile; fileRef = 325EB69B2401118300C6B4A4 /* Xonix.woz */; };
3262F37623E169F8008BDB95 /* spk_dn.wav in Resources */ = {isa = PBXBuildFile; fileRef = 3262F37423E169F8008BDB95 /* spk_dn.wav */; }; 3262F37623E169F8008BDB95 /* spk_dn.wav in Resources */ = {isa = PBXBuildFile; fileRef = 3262F37423E169F8008BDB95 /* spk_dn.wav */; };
3262F37723E169F8008BDB95 /* spk_up.wav in Resources */ = {isa = PBXBuildFile; fileRef = 3262F37523E169F8008BDB95 /* spk_up.wav */; }; 3262F37723E169F8008BDB95 /* spk_up.wav in Resources */ = {isa = PBXBuildFile; fileRef = 3262F37523E169F8008BDB95 /* spk_up.wav */; };
32A9F72C24668D26004902A1 /* apple-rainbow.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 32A9F72B24668D26004902A1 /* apple-rainbow.jpg */; };
32A9F72D24668D26004902A1 /* apple-rainbow.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 32A9F72B24668D26004902A1 /* apple-rainbow.jpg */; };
32BFFB5B22EACC630003B53F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32BFFB5A22EACC630003B53F /* AppDelegate.swift */; }; 32BFFB5B22EACC630003B53F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32BFFB5A22EACC630003B53F /* AppDelegate.swift */; };
32BFFB5D22EACC630003B53F /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32BFFB5C22EACC630003B53F /* ViewController.swift */; }; 32BFFB5D22EACC630003B53F /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32BFFB5C22EACC630003B53F /* ViewController.swift */; };
32BFFB5F22EACC660003B53F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 32BFFB5E22EACC660003B53F /* Assets.xcassets */; }; 32BFFB5F22EACC660003B53F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 32BFFB5E22EACC660003B53F /* Assets.xcassets */; };
@ -186,6 +188,7 @@
3264261023284F6F008B615F /* Apple2_mmio_8bit_ioaddr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Apple2_mmio_8bit_ioaddr.h; sourceTree = "<group>"; }; 3264261023284F6F008B615F /* Apple2_mmio_8bit_ioaddr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Apple2_mmio_8bit_ioaddr.h; sourceTree = "<group>"; };
326426112328ADF4008B615F /* Apple_II_ROM.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = Apple_II_ROM.s; sourceTree = "<group>"; }; 326426112328ADF4008B615F /* Apple_II_ROM.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = Apple_II_ROM.s; sourceTree = "<group>"; };
326ED2EE232D7A0000A41337 /* 6502_functional_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = 6502_functional_test.bin; sourceTree = SOURCE_ROOT; }; 326ED2EE232D7A0000A41337 /* 6502_functional_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = 6502_functional_test.bin; sourceTree = SOURCE_ROOT; };
32A9F72B24668D26004902A1 /* apple-rainbow.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "apple-rainbow.jpg"; sourceTree = "<group>"; };
32B18435233F10BC00DBB4AB /* Shaders.metal */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.metal; path = Shaders.metal; sourceTree = "<group>"; }; 32B18435233F10BC00DBB4AB /* Shaders.metal */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.metal; path = Shaders.metal; sourceTree = "<group>"; };
32B18438233FAB3900DBB4AB /* verticies.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = verticies.swift; sourceTree = "<group>"; }; 32B18438233FAB3900DBB4AB /* verticies.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = verticies.swift; sourceTree = "<group>"; };
32BFFB5722EACC630003B53F /* A2Mac.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = A2Mac.app; sourceTree = BUILT_PRODUCTS_DIR; }; 32BFFB5722EACC630003B53F /* A2Mac.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = A2Mac.app; sourceTree = BUILT_PRODUCTS_DIR; };
@ -390,6 +393,7 @@
3262F37823E17013008BDB95 /* Resources */ = { 3262F37823E17013008BDB95 /* Resources */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
32A9F72B24668D26004902A1 /* apple-rainbow.jpg */,
3262F37423E169F8008BDB95 /* spk_dn.wav */, 3262F37423E169F8008BDB95 /* spk_dn.wav */,
3262F37523E169F8008BDB95 /* spk_up.wav */, 3262F37523E169F8008BDB95 /* spk_up.wav */,
325EB67B23FBD43800C6B4A4 /* PrintChar21.ttf */, 325EB67B23FBD43800C6B4A4 /* PrintChar21.ttf */,
@ -713,6 +717,7 @@
325EB68D23FDDFD200C6B4A4 /* Merlin-8 v2.48 (DOS 3.3).woz in Resources */, 325EB68D23FDDFD200C6B4A4 /* Merlin-8 v2.48 (DOS 3.3).woz in Resources */,
325EB6A62401118300C6B4A4 /* ProDOS_312.woz in Resources */, 325EB6A62401118300C6B4A4 /* ProDOS_312.woz in Resources */,
325EB6AC2401118300C6B4A4 /* Xonix.woz in Resources */, 325EB6AC2401118300C6B4A4 /* Xonix.woz in Resources */,
32A9F72D24668D26004902A1 /* apple-rainbow.jpg in Resources */,
323E2DCF245531E600156805 /* Apple2e_Enhanced.rom in Resources */, 323E2DCF245531E600156805 /* Apple2e_Enhanced.rom in Resources */,
325EB67D23FBD43800C6B4A4 /* PrintChar21.ttf in Resources */, 325EB67D23FBD43800C6B4A4 /* PrintChar21.ttf in Resources */,
325EB6A42401118300C6B4A4 /* Qbit.woz in Resources */, 325EB6A42401118300C6B4A4 /* Qbit.woz in Resources */,
@ -749,6 +754,7 @@
3262F37723E169F8008BDB95 /* spk_up.wav in Resources */, 3262F37723E169F8008BDB95 /* spk_up.wav in Resources */,
32089E4824556DBD0036E667 /* PRNumber3.ttf in Resources */, 32089E4824556DBD0036E667 /* PRNumber3.ttf in Resources */,
325EB6A92401118300C6B4A4 /* Sneakers.woz in Resources */, 325EB6A92401118300C6B4A4 /* Sneakers.woz in Resources */,
32A9F72C24668D26004902A1 /* apple-rainbow.jpg in Resources */,
325EB6A72401118300C6B4A4 /* ProDOS_402_System.woz in Resources */, 325EB6A72401118300C6B4A4 /* ProDOS_402_System.woz in Resources */,
325EB69023FE028800C6B4A4 /* Donkey Kong.woz in Resources */, 325EB69023FE028800C6B4A4 /* Donkey Kong.woz in Resources */,
325EB68923FDDF6200C6B4A4 /* Hard Hat Mack - Disk 1, Side A.woz in Resources */, 325EB68923FDDF6200C6B4A4 /* Hard Hat Mack - Disk 1, Side A.woz in Resources */,

View File

@ -789,7 +789,7 @@
<scene sceneID="hIz-AP-VOD"> <scene sceneID="hIz-AP-VOD">
<objects> <objects>
<viewController id="XfG-lQ-9wD" customClass="ViewController" customModule="A2Mac" customModuleProvider="target" sceneMemberID="viewController"> <viewController id="XfG-lQ-9wD" customClass="ViewController" customModule="A2Mac" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" canDrawConcurrently="YES" id="m2S-Jp-Qdl" customClass="MonitorView" customModule="A2Mac" customModuleProvider="target"> <view key="view" wantsLayer="YES" canDrawConcurrently="YES" id="m2S-Jp-Qdl" customClass="MonitorView" customModule="A2Mac" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="1288" height="800"/> <rect key="frame" x="0.0" y="0.0" width="1288" height="800"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
<subviews> <subviews>
@ -804,7 +804,7 @@
</allowedInputSourceLocales> </allowedInputSourceLocales>
</textFieldCell> </textFieldCell>
</textField> </textField>
<textField canDrawConcurrently="YES" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" mirrorLayoutDirectionWhenInternationalizing="never" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SEL-hl-0c0"> <textField canDrawConcurrently="YES" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" alphaValue="0.0" mirrorLayoutDirectionWhenInternationalizing="never" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SEL-hl-0c0">
<rect key="frame" x="14" y="16" width="1124" height="768"/> <rect key="frame" x="14" y="16" width="1124" height="768"/>
<constraints> <constraints>
<constraint firstAttribute="width" secondItem="SEL-hl-0c0" secondAttribute="height" multiplier="35:24" id="4LP-hK-Xit"/> <constraint firstAttribute="width" secondItem="SEL-hl-0c0" secondAttribute="height" multiplier="35:24" id="4LP-hK-Xit"/>
@ -837,16 +837,22 @@
@@@@@@@@@@@@@@@@@@22@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@22@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@23@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@23@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@24@@@@@@@@@@@@@@@@@@@@</string> @@@@@@@@@@@@@@@@@@24@@@@@@@@@@@@@@@@@@@@</string>
<color key="textColor" red="0.93333333333333335" green="0.93333333333333335" blue="0.93333333333333335" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <color key="textColor" name="systemGreenColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
</textField> </textField>
<customView canDrawConcurrently="YES" translatesAutoresizingMaskIntoConstraints="NO" id="LlM-EV-ruZ" customClass="HiRes" customModule="A2Mac" customModuleProvider="target"> <customView hidden="YES" canDrawConcurrently="YES" translatesAutoresizingMaskIntoConstraints="NO" id="LlM-EV-ruZ" customClass="HiRes" customModule="A2Mac" customModuleProvider="target">
<rect key="frame" x="16" y="16" width="1120" height="768"/> <rect key="frame" x="16" y="16" width="1120" height="768"/>
</customView> </customView>
<imageView hidden="YES" canDrawConcurrently="YES" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="M1E-lz-4q8" userLabel="HiRes Image View"> <imageView canDrawConcurrently="YES" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="M1E-lz-4q8" userLabel="Splash Screen">
<rect key="frame" x="16" y="16" width="1120" height="768"/> <rect key="frame" x="16" y="16" width="1120" height="768"/>
<imageCell key="cell" continuous="YES" enabled="NO" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyUpOrDown" image="NSQuickLookTemplate" id="Zax-kI-rxd"/> <ciFilter key="compositingFilter" name="CIExclusionBlendMode">
<configuration>
<null key="inputBackgroundImage"/>
<null key="inputImage"/>
</configuration>
</ciFilter>
<imageCell key="cell" continuous="YES" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyUpOrDown" image="apple-rainbow" id="Zax-kI-rxd"/>
</imageView> </imageView>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="Fdf-pv-iEw" userLabel="Side Panel"> <customView translatesAutoresizingMaskIntoConstraints="NO" id="Fdf-pv-iEw" userLabel="Side Panel">
<rect key="frame" x="1160" y="8" width="120" height="784"/> <rect key="frame" x="1160" y="8" width="120" height="784"/>
@ -1040,6 +1046,7 @@
<outlet property="displayField" destination="SEL-hl-0c0" id="4Pc-hG-qQf"/> <outlet property="displayField" destination="SEL-hl-0c0" id="4Pc-hG-qQf"/>
<outlet property="hires" destination="LlM-EV-ruZ" id="E60-pA-HM1"/> <outlet property="hires" destination="LlM-EV-ruZ" id="E60-pA-HM1"/>
<outlet property="speedometer" destination="FBZ-dh-6Fs" id="L0v-RY-xwB"/> <outlet property="speedometer" destination="FBZ-dh-6Fs" id="L0v-RY-xwB"/>
<outlet property="splashScreen" destination="M1E-lz-4q8" id="xc3-CZ-dRf"/>
</connections> </connections>
</viewController> </viewController>
<customObject id="rPt-NT-nkU" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/> <customObject id="rPt-NT-nkU" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
@ -1074,6 +1081,6 @@
</scene> </scene>
</scenes> </scenes>
<resources> <resources>
<image name="NSQuickLookTemplate" width="19" height="12"/> <image name="apple-rainbow" width="800" height="800"/>
</resources> </resources>
</document> </document>

View File

@ -400,7 +400,7 @@ class HiRes: NSView {
static let ScreenBitmapSize = (PixelWidth * PixelHeight * 4) static let ScreenBitmapSize = (PixelWidth * PixelHeight * 4)
static let context = createBitmapContext(pixelsWide: PixelWidth, PixelHeight) static let context = createBitmapContext(pixelsWide: PixelWidth, PixelHeight)
static let pixels = UnsafeMutableRawBufferPointer(start: context?.data, count: ScreenBitmapSize) static let pixels = UnsafeMutableRawBufferPointer(start: context?.data, count: ScreenBitmapSize)
static var typedPointer = pixels.bindMemory(to: UInt32.self) static var pixelsRGBA = pixels.bindMemory(to: UInt32.self)
#endif #endif
let R = 2 let R = 2
@ -499,24 +499,21 @@ class HiRes: NSView {
break break
case 0x01: // purple (bits are in reverse!) case 0x01: // purple (bits are in reverse!)
HiRes.typedPointer[colorAddr] = color_purple; HiRes.pixelsRGBA[colorAddr] = color_purple;
// HiRes.typedPointer[colorAddr + 1] = color_black; if (prev != 0x03) && (prev != 0x07) && (prev != 0x00) && (prev != 0x04) {
HiRes.pixelsRGBA[colorAddr - 1] = color_purple;
}
case 0x02: // green case 0x02: // green
// reducing color bleeding // reducing color bleeding
if (prev == 0x01) || if (colorAddr > 0) && (HiRes.pixelsRGBA[colorAddr - 1] != color_black) {
(prev == 0x05) HiRes.pixelsRGBA[colorAddr] = color_green;
{
// HiRes.typedPointer[colorAddr + 1] = color_black;
}
else {
HiRes.typedPointer[colorAddr] = color_green;
HiRes.typedPointer[colorAddr + 1] = color_green;
} }
HiRes.pixelsRGBA[colorAddr + 1] = color_green;
case 0x03: // white case 0x03: // white
HiRes.typedPointer[colorAddr] = color_white; HiRes.pixelsRGBA[colorAddr] = color_white;
HiRes.typedPointer[colorAddr + 1] = color_white; HiRes.pixelsRGBA[colorAddr + 1] = color_white;
case 0x04: // black 2 case 0x04: // black 2
// HiRes.typedPointer[colorAddr] = color_black; // HiRes.typedPointer[colorAddr] = color_black;
@ -524,24 +521,21 @@ class HiRes: NSView {
break break
case 0x05: // blue case 0x05: // blue
HiRes.typedPointer[colorAddr] = color_blue; HiRes.pixelsRGBA[colorAddr] = color_blue;
// HiRes.typedPointer[colorAddr + 1] = color_black; if (prev != 0x03) && (prev != 0x07) && (prev != 0x00) && (prev != 0x04) {
HiRes.pixelsRGBA[colorAddr - 1] = color_blue;
}
case 0x06: // orange case 0x06: // orange
// reducing color bleeding // reducing color bleeding
if (prev == 0x01) || if (colorAddr > 0) && (HiRes.pixelsRGBA[colorAddr - 1] != color_black) {
(prev == 0x05) HiRes.pixelsRGBA[colorAddr] = color_orange;
{
// HiRes.typedPointer[colorAddr + 1] = color_black;
} }
else { HiRes.pixelsRGBA[colorAddr + 1] = color_orange;
HiRes.typedPointer[colorAddr] = color_orange;
HiRes.typedPointer[colorAddr + 1] = color_orange;
}
case 0x07: // white 2 case 0x07: // white 2
HiRes.typedPointer[colorAddr] = color_white; HiRes.pixelsRGBA[colorAddr] = color_white;
HiRes.typedPointer[colorAddr + 1] = color_white; HiRes.pixelsRGBA[colorAddr + 1] = color_white;
default: default:
// HiRes.typedPointer[colorAddr] = color_black; // HiRes.typedPointer[colorAddr] = color_black;
@ -551,40 +545,39 @@ class HiRes: NSView {
// white adjustment // white adjustment
if ( (prev & 2) == 2 ) && ( (pixel & 1) == 1 ) { if ( (prev & 2) == 2 ) && ( (pixel & 1) == 1 ) {
HiRes.typedPointer[colorAddr] = color_white; HiRes.pixelsRGBA[colorAddr] = color_white;
HiRes.typedPointer[colorAddr - 1] = color_white; HiRes.pixelsRGBA[colorAddr - 1] = color_white;
// TODO: Need better check if extra green was created // TODO: Need better check if extra green was created
if (HiRes.pixels[pixelAddr - 8 + G] == 0xA2 ) { if (HiRes.pixels[pixelAddr - 8 + G] == 0xA2 ) {
HiRes.typedPointer[colorAddr - 2] = color_black; HiRes.pixelsRGBA[colorAddr - 2] = color_black;
} }
} }
// purple adjustment -- followed by white // purple adjustment -- followed by white
else if (prev == 0x01) && ( else if (prev == 0x01) && (
(pixel == 0x01) || (pixel == 0x01) ||
(pixel == 0x03) || (pixel == 0x07) || // white (pixel == 0x03) || (pixel == 0x07) // white
(pixel == 0x00) || (pixel == 0x04) // black // (pixel == 0x00) || (pixel == 0x04) // black
) { ) {
// was the previous purple pixel promoted to white or is it still purple? // was the previous purple pixel promoted to white or is it still purple?
if ( HiRes.pixels[pixelAddr - 8 + R] == 0xBB ) { if ( HiRes.pixelsRGBA[colorAddr - 2] == color_purple ) {
HiRes.typedPointer[colorAddr - 1] = color_purple; HiRes.pixelsRGBA[colorAddr - 1] = color_purple;
} }
} }
// blue adjustment -- followed by white // blue adjustment -- followed by white
else if (prev == 0x05) && ( else if (prev == 0x05) && (
(pixel == 0x05) || (pixel == 0x05) ||
(pixel == 0x03) || (pixel == 0x07) || // white (pixel == 0x03) || (pixel == 0x07) // white
(pixel == 0x00) || (pixel == 0x04) // black // (pixel == 0x00) || (pixel == 0x04) // black
) { ) {
// was the previous purple pixel promoted to white or is it still purple? // was the previous blue pixel promoted to white or is it still blue?
if ( HiRes.pixels[pixelAddr - 8 + R] == 0x11 ) { if ( HiRes.pixelsRGBA[colorAddr - 2] == color_blue ) {
HiRes.typedPointer[colorAddr - 1] = color_blue; HiRes.pixelsRGBA[colorAddr - 1] = color_blue;
} }
} }
} }
@ -669,6 +662,8 @@ class HiRes: NSView {
// refresh changed block only // refresh changed block only
let screenBlockMargin = 6
let blockScreenWidth = Int(frame.width) / HiRes.blockCols * 2 let blockScreenWidth = Int(frame.width) / HiRes.blockCols * 2
let blockScreenHeigth = Int(frame.height) / HiRes.blockRows let blockScreenHeigth = Int(frame.height) / HiRes.blockRows
@ -677,10 +672,10 @@ class HiRes: NSView {
if blockChanged[ blockVertIdx * HiRes.blockCols / 2 + blockHorIdx ] { if blockChanged[ blockVertIdx * HiRes.blockCols / 2 + blockHorIdx ] {
// refresh the entire screen // refresh the entire screen
let boundingBox = CGRect( let boundingBox = CGRect(
x: blockHorIdx * blockScreenWidth - 2, x: blockHorIdx * blockScreenWidth - screenBlockMargin,
y: Int(frame.height) - blockVertIdx * blockScreenHeigth - blockScreenHeigth - 2, y: Int(frame.height) - blockVertIdx * blockScreenHeigth - blockScreenHeigth - screenBlockMargin,
width: blockScreenWidth + 4, width: blockScreenWidth + screenBlockMargin * 2,
height: blockScreenHeigth + 4) height: blockScreenHeigth + screenBlockMargin * 2)
self.setNeedsDisplay( boundingBox ) self.setNeedsDisplay( boundingBox )
} }

View File

@ -50,6 +50,7 @@ class ViewController: NSViewController {
@IBOutlet weak var display: NSTextFieldCell! @IBOutlet weak var display: NSTextFieldCell!
@IBOutlet weak var speedometer: NSTextFieldCell! @IBOutlet weak var speedometer: NSTextFieldCell!
@IBOutlet weak var hires: HiRes! @IBOutlet weak var hires: HiRes!
@IBOutlet weak var splashScreen: NSImageView!
// static let charConvStr : String = // static let charConvStr : String =
@ -101,6 +102,28 @@ class ViewController: NSViewController {
var workItem : DispatchWorkItem? = nil; var workItem : DispatchWorkItem? = nil;
@IBAction func Power(_ sender: Any) { @IBAction func Power(_ sender: Any) {
//------------------------------------------------------------
// Animated Splash Screen fade out and (Text) Monitor fade in
displayField.alphaValue = 0
displayField.isHidden = false
splashScreen.alphaValue = 1
splashScreen.isHidden = false
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
NSAnimationContext.runAnimationGroup({ (context) in
context.duration = 1.0
// Use the value you want to animate to (NOT the starting value)
self.displayField.animator().alphaValue = 1
self.splashScreen.animator().alphaValue = 0
},
completionHandler:{ () -> Void in
self.displayField.alphaValue = 1
self.splashScreen.isHidden = true
})
}
//------------------------------------------------------------
#if SPEEDTEST #if SPEEDTEST
if ( workItem != nil ) { if ( workItem != nil ) {
@ -624,11 +647,7 @@ class ViewController: NSViewController {
override func viewDidLoad() { override func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
// for y in 0 ... textLines - 1 { hires.clearScreen();
// txtClear[ y * (textCols + lineEndChars) + textCols * 2 + 1 ] = "\n"
// }
hires.needsDisplay = true;
woz_loadFile( Bundle.main.resourcePath, "Apple DOS 3.3 January 1983.woz" ) woz_loadFile( Bundle.main.resourcePath, "Apple DOS 3.3 January 1983.woz" )

BIN
Resources/apple-rainbow.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB