ertuncozbay.dev/lab.html

191 lines
10 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en" data-theme="colorful">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Lab &amp; Experiment Notebook — Ertunç Özbay</title>
<meta name="description" content="Workshop lab notebook of Ertunç Özbay: ESP32-S3 hardware protection notes, RLE MIDI-to-C compression tools, Linux Wine/DX11 experiments, and reverse-engineering study logs.">
<link rel="icon" type="image/svg+xml" href="assets/images/favicon.svg">
<link rel="stylesheet" href="assets/css/style.css?v=2">
</head>
<body>
<a class="skip-link" href="index.html#main-content">Skip to main content</a>
<header class="site-header">
<div class="container header-inner">
<a class="site-brand" href="index.html">
<span class="brand-mark" aria-hidden="true">EÖ</span>
<span>
Ertunç Özbay
<span class="brand-subtitle">embedded // hardware // open-source</span>
</span>
</a>
<div class="header-controls">
<div class="theme-switcher" role="group" aria-label="Select UI Theme">
<button type="button" class="theme-btn" data-set-theme="colorful" aria-pressed="true">🎨 Colorful</button>
<button type="button" class="theme-btn" data-set-theme="neon" aria-pressed="false">🌈 Neon</button>
<button type="button" class="theme-btn" data-set-theme="blueprint" aria-pressed="false">📐 Blueprint</button>
</div>
<button class="nav-toggle" type="button" data-nav-toggle aria-expanded="false" aria-controls="primary-navigation">
<span aria-hidden="true">☰</span>
<span data-nav-label>Menu</span>
</button>
<nav id="primary-navigation" class="site-nav" data-site-nav aria-label="Main navigation">
<ul class="nav-list">
<li><a class="nav-link" href="index.html">Home</a></li>
<li><a class="nav-link" href="about.html">About</a></li>
<li><a class="nav-link" href="projects/index.html">Projects</a></li>
<li><a class="nav-link" href="blog/index.html">Blog</a></li>
<li><a class="nav-link" href="lab.html" aria-current="page">Lab</a></li>
<li><a class="nav-link" href="contact.html">Contact</a></li>
</ul>
</nav>
</div>
</div>
</header>
<main id="main-content">
<div class="container">
<section class="workshop-hero" aria-labelledby="lab-heading">
<span class="workshop-eyebrow">🔬 WORKSHOP BENCH // LAB NOTEBOOK</span>
<h1 id="lab-heading"><span class="gradient-title">Lab &amp; Experiment Notebook</span></h1>
<p class="hero-lead">
Welcome to my open workbench. This page tracks my real engineering experiments, hardware debugging breakthroughs, Python/Rust tooling scripts, and reverse-engineering study notes.
</p>
</section>
<!-- Section 1: Current experiments -->
<section class="section-block" aria-labelledby="lab-current">
<div class="section-header">
<div>
<span class="section-label">01 // Active Bench Breakthroughs</span>
<h2 id="lab-current">Recent Hardware &amp; Firmware Experiments</h2>
</div>
</div>
<div class="card-grid-2">
<div class="card card-synth">
<div class="card-top">
<div class="card-meta">
<span class="badge badge-experimental">Solved on Breadboard</span>
<span>ESP32 Dual-Core • Python RLE</span>
</div>
<h3>Defeating the 30 Hz MIDI "Strobe-Light" Bug &amp; Piezo Bass Roll-Off</h3>
<p>
While building the <a href="projects/midi-breadboard-instrument.html">16-Track MIDI Breadboard Instrument</a>, raw MIDI delta-slices caused the LEDs and 1.3" SPI OLED to strobe violently. Writing a custom Run-Length Encoding (RLE) compressor in Python (<code>midi_to_c.py</code>) and transposing bass-heavy tracks like <em>Seven Nation Army</em> +2 octaves solved both flash exhaustion and piezo acoustic roll-off.
</p>
</div>
<div class="card-actions">
<a class="btn btn-cyan" href="assets/downloads/midi_to_c.py" download="midi_to_c.py">🐍 Download midi_to_c.py</a>
<a class="btn btn-emerald" href="assets/downloads/desk_rave_16track_esp32.c" download="mmcontroller.c">⬇ Download 16-Track C Code</a>
<a class="btn btn-secondary" href="projects/midi-breadboard-instrument.html">Full MIDI Project →</a>
</div>
</div>
<div class="card card-amber">
<div class="card-top">
<div class="card-meta">
<span class="badge badge-progress">Hardware Rev 0.1 → Phase 2</span>
<span>ESP32-S3-N16R8 • SPI2 Bus</span>
</div>
<h3>ESP32-S3 Octal PSRAM Pin Collisions &amp; Shared SPI2 Arbitration</h3>
<p>
On the <a href="projects/multi-functional-controller.html">Multi-Functional RC Controller</a>, the ESP32-S3-N16R8 reserves <code>GPIO 35–37</code> for internal Octal PSRAM/Flash. We remapped the shared SPI2 bus (<code>MOSI: 11, MISO: 13, SCK: 12</code>) with dedicated hardware CS lines for the nRF24L01+ (<code>CSN: 10</code>), MicroSD (<code>CS: 39</code>), and ST7789 IPS TFT (<code>CS: 40</code>).
</p>
</div>
<div class="card-actions">
<a class="btn btn-cyan" href="assets/downloads/mfc-1.kicad_sch" download="mfc-1.kicad_sch">📐 Download KiCad Schematic</a>
<a class="btn btn-emerald" href="assets/downloads/mfc_esp32s3_firmware.c" download="mmcontroller.c">⬇ Download S3 Firmware</a>
<a class="btn btn-secondary" href="projects/multi-functional-controller.html">Full Controller Page →</a>
</div>
</div>
</div>
</section>
<!-- Section 2: Software and conversion tools -->
<section class="section-block" aria-labelledby="lab-software">
<div class="section-header">
<div>
<span class="section-label">02 // Code &amp; Systems Tooling</span>
<h2 id="lab-software">Custom Compilers &amp; Linux Runtime Tools</h2>
</div>
</div>
<div class="card-grid-2">
<div class="card card-coral">
<div class="card-top">
<div class="card-meta">
<span class="badge badge-coral">Rust • Linux x86_64</span>
<span>Wine &amp; DirectX 11</span>
</div>
<h3>16-Byte TLS Alignment for DirectX 11 on Linux</h3>
<p>
In <a href="projects/pointblank-linux.html">pointblank-linux</a>, we engineered a standalone Rust launcher that automatically provisions a 16-byte TLS-aligned <code>ntdll.dll</code> runtime and <code>vcrun2022</code> / <code>d3dx11_43</code> components so Point Blank runs at 200 FPS in DirectX 11 on Linux with unmodified official CheatBlocker anti-cheat.
</p>
</div>
<div class="card-actions">
<a class="btn btn-emerald" href="/assets/downloads/pointblank-linux-v1.0.0-linux-x86_64.tar.gz">⬇ Download v1.0.0 Binary</a>
<a class="btn btn-secondary" href="projects/pointblank-linux.html">Read Technical Notes →</a>
</div>
</div>
<div class="card card-emerald">
<div class="card-top">
<div class="card-meta">
<span class="badge badge-active">Python 3 • mido</span>
<span>Embedded Audio Tooling</span>
</div>
<h3>RLE MIDI-to-C Struct Compiler (<code>midi_to_c.py</code>)</h3>
<p>
Converts multi-channel `.mid` files into compact C99 <code>SequenceStep</code> struct arrays (<code>{frequency, duration, kick_drum, hi_hat}</code>), automatically routing MIDI Channel 10 and low bass notes (<code>&lt; MIDI 50</code>) to hardware percussion buzzers.
</p>
</div>
<div class="card-actions">
<a class="btn btn-secondary" href="https://git.ertuncozbay.dev/ertunc-ozbay/midi-breadboard-instrument/src/branch/main/scripts/midi_to_c.py" rel="noopener noreferrer">View Script on Git Server →</a>
</div>
</div>
</div>
</section>
<!-- Section 3: Reverse-engineering learning -->
<section class="section-block" aria-labelledby="lab-re">
<div class="section-header">
<div>
<span class="section-label">03 // System Internals</span>
<h2 id="lab-re">Reverse-Engineering &amp; Low-Level Study Log</h2>
</div>
</div>
<div class="callout-box magenta">
<span class="callout-title">Looking Under the Hood</span>
<p>
I study reverse engineering using <strong>Ghidra</strong>, <strong>x64dbg</strong>, <strong>radare2</strong>, and <strong>Cheat Engine</strong> to understand how compiled C/C++ binaries, memory layouts, calling conventions, and hardware registers work at the machine instruction level.
</p>
<p style="margin-bottom:0;">
Every time I inspect a compiled binary or debug an ESP32 panic backtrace, it reinforces why deep knowledge of C, memory alignment, and Assembly is indispensable.
</p>
</div>
</section>
</div>
</main>
<footer class="site-footer">
<div class="container footer-inner">
<div>
<strong>Ertunç Özbay</strong> — Electrical &amp; Electronics Engineering Student • <a href="mailto:ertunc.ozbay@outlook.com">ertunc.ozbay@outlook.com</a>
</div>
<ul class="footer-links" aria-label="Footer links">
<li><a href="projects/index.html">Projects</a></li>
<li><a href="blog/index.html">Blog</a></li>
<li><a href="lab.html">Lab</a></li>
<li><a href="contact.html">Contact</a></li>
<li><a href="https://git.ertuncozbay.dev/ertunc-ozbay" rel="noopener noreferrer">Git Server</a></li>
<li><a href="https://www.linkedin.com/in/ertunc-ozbay" rel="noopener noreferrer">LinkedIn</a></li>
</ul>
</div>
</footer>
<script src="assets/js/main.js?v=2"></script>
</body>
</html>