Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
👾&⌚️
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
giginet
PRO
March 03, 2017
Programming
11k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
👾&⌚️
try! Swift 2017
giginet
PRO
March 03, 2017
More Decks by giginet
See All by giginet
🀄️ on swiftc
giginet
PRO
0
590
15年メンテしてきたdotfilesから開発トレンドを振り返る 2011 - 2026
giginet
PRO
2
490
Claude Codeログ基盤の構築
giginet
PRO
7
4.7k
Inside of Swift Export
giginet
PRO
1
3.5k
Swiftビルド弾丸ツアー - Swift Buildが作る新しいエコシステム
giginet
PRO
0
2.9k
SwiftでMCPサーバーを作ろう!
giginet
PRO
3
480
Creating Intuitive Developer Tool in Swift
giginet
PRO
0
1.7k
Mergeable Libraryで 高速なアプリ起動を実現しよう!
giginet
PRO
2
8.5k
5分でわかるExplicitly Built Modules
giginet
PRO
2
1.9k
Other Decks in Programming
See All in Programming
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
130
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
4.8k
Family mrubyの進捗
kishima
1
130
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
150
setup-vp GitLab対応の裏側
naokihaba
0
110
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
200
一人だけ、Kiroが静止する日
hideg
0
120
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
150
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
310
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.1k
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
360
iOSDC2026登壇資料.pdf
riofujimon
0
170
Featured
See All Featured
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
580
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
360
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
330
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
810
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Exploring anti-patterns in Rails
aemeredith
4
510
Transcript
@giginet
&⌚
None
None
None
None
None
FCEUX(C++)
try! Objective-C
Metal OpenGL ES RENDERING
var texture: SKTexture { guard let videoBuffer: UnsafeRawPointer = emulatorCore.videoBuffer()
else { fatalError() } let data = Data(bytes: videoBuffer, count: Int(bufferCount)) let size = CGSize(width: 256, height: 240) return SKTexture(data: data, size: size, flipped: true) }
import AVFoundation // let destinationBuffer: AVAudioPCMBuffer! // Get source buffer
let sourceBuffer = UnsafeBufferPointer<Int16>(start: head.assumingMemoryBound(to: Int16.self), count: bufferLength) // Copy samples to AVAudioPCMBuffer for channel in 0..<channelCount { let samples = UnsafeMutableBufferPointer<Float32>(start: destinationBuffer.floatChannelData?.pointee, count: bufferLength) for frame in 0..<frameLength { // Cast 16bit audio to 32bit samples[frame] = Float32(audioBuffer[frame * channelCount + channel]) } } AUDIO
▸CoreMotion ▸WKGestureRecognizer ▸Tap ▸LongPress ▸Swipe ▸Pan ▸WKCrownDelegate, WKCrownSequencer INPUTS
Touch Down Touch Up WKTapGestureRecognizer
// super rapidly long press(1 frame) longPressGestureRecognizer.minimumPressDuration = 1.0 /
60.0 WKLongPressGestureRecognizer
None
public enum Button: UInt32 { case a = 1 case
b = 2 case select = 4 case start = 8 case up = 16 case down = 32 case left = 64 case right = 128 } if sender.state == .began { controllerState |= button.rawValue } else if sender.state == .ended { controllerState &= ~button.rawValue }
https://github.com/giginet/NESEmulator-watchOS
None
Have a nice Pokémon GO Life!
None