|
|
@@ -66,6 +66,9 @@ func get_vinfo(_ fd: Int32, _ vinfo: UnsafeMutableRawPointer) -> Int32
|
|
|
@_silgen_name("get_finfo")
|
|
|
func get_finfo(_ fd: Int32, _ finfo: UnsafeMutableRawPointer) -> Int32
|
|
|
|
|
|
+@_silgen_name("pan_display")
|
|
|
+func pan_display(_ fd: Int32, _ vinfo: UnsafeMutableRawPointer) -> Int32
|
|
|
+
|
|
|
// ══════════════════════════════════════════════════════════════════
|
|
|
// Anti-Aliased High-Resolution Back-Buffered Renderer
|
|
|
// ══════════════════════════════════════════════════════════════════
|
|
|
@@ -173,7 +176,8 @@ func ringAA(_ p: UnsafeMutablePointer<UInt8>, _ cx: Double, _ cy: Double, _ r: D
|
|
|
func blit(_ src: UnsafeMutablePointer<UInt8>,
|
|
|
_ fbp: UnsafeMutablePointer<UInt8>,
|
|
|
_ sx: Int, _ sy: Int,
|
|
|
- _ lineLen: Int, _ scrH: Int) {
|
|
|
+ _ lineLen: Int, _ scrH: Int,
|
|
|
+ _ fd: Int32, _ vinfo: UnsafeMutableRawPointer) {
|
|
|
for y in 0..<AH {
|
|
|
let fy = sy + y
|
|
|
if fy < 0 || fy >= scrH { continue }
|
|
|
@@ -181,6 +185,7 @@ func blit(_ src: UnsafeMutablePointer<UInt8>,
|
|
|
src + y * AW * 4,
|
|
|
AW * 4)
|
|
|
}
|
|
|
+ _ = pan_display(fd, vinfo)
|
|
|
}
|
|
|
|
|
|
// ── Isolated IPC Client (talks to arkrt daemon) ──
|
|
|
@@ -322,7 +327,7 @@ func drawSwiftSplash() {
|
|
|
diskAA(work, ex, ey, curElR, 255)
|
|
|
}
|
|
|
|
|
|
- blit(work, fbp, sx, sy, lineLen, scrH)
|
|
|
+ blit(work, fbp, sx, sy, lineLen, scrH, fd, &vinfo)
|
|
|
usleep(16666)
|
|
|
}
|
|
|
|
|
|
@@ -352,7 +357,7 @@ func drawSwiftSplash() {
|
|
|
diskAA(work, ex, ey, Double(ELEC_R), 255)
|
|
|
}
|
|
|
|
|
|
- blit(work, fbp, sx, sy, lineLen, scrH)
|
|
|
+ blit(work, fbp, sx, sy, lineLen, scrH, fd, &vinfo)
|
|
|
usleep(16666)
|
|
|
}
|
|
|
|
|
|
@@ -393,7 +398,7 @@ func drawSwiftSplash() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- blit(work, fbp, sx, sy, lineLen, scrH)
|
|
|
+ blit(work, fbp, sx, sy, lineLen, scrH, fd, &vinfo)
|
|
|
usleep(16666)
|
|
|
}
|
|
|
|
|
|
@@ -407,12 +412,13 @@ func drawSwiftSplash() {
|
|
|
if bright > 0 {
|
|
|
diskAA(work, Double(AC), Double(AC), flashR, bright)
|
|
|
}
|
|
|
- blit(work, fbp, sx, sy, lineLen, scrH)
|
|
|
+ blit(work, fbp, sx, sy, lineLen, scrH, fd, &vinfo)
|
|
|
usleep(16666)
|
|
|
}
|
|
|
|
|
|
// ── Clear to BLACK ──
|
|
|
memset(fbp, 0, scrSz)
|
|
|
+ _ = pan_display(fd, &vinfo)
|
|
|
|
|
|
// ── Splash screen ──
|
|
|
print("\u{1B}[0;40m\u{1B}[2J\u{1B}[H", terminator: "")
|
|
|
@@ -436,6 +442,7 @@ func drawSwiftSplash() {
|
|
|
fbp[off + 3] = 0
|
|
|
}
|
|
|
}
|
|
|
+ _ = pan_display(fd, &vinfo)
|
|
|
|
|
|
tpl.deallocate()
|
|
|
work.deallocate()
|