ertuncozbay.dev/lab.html

166 lines
8.1 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">
<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">
</head>
<body>
<a class="skip-link" href="#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>
<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>
</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>
<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>
</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>
<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 (`{frequency, duration, kick_drum, hi_hat}`), automatically routing MIDI Channel 10 and low bass notes (`&lt; MIDI 50`) to hardware percussion buzzers.
</p>
</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:ertuncozbayh@gmail.com">ertuncozbayh@gmail.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://github.com/ertunc-ozbay" rel="noopener noreferrer">GitHub</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"></script>
</body>
</html>