ワンクリックで
wine-api-comparison-test
Compare D3D8 API calls between original game EXE and reimplementation under Wine
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Compare D3D8 API calls between original game EXE and reimplementation under Wine
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Reverse engineer and recreate the Hamsterball game (2000s Windows game by Raptisoft)
Start GhidraMCP headless server with the Hamsterball.exe project — always do this before any RE work
Restore all function renames from FUNCTION_MAP.md back into a fresh Ghidra project after DB loss or re-import
Complete guide to using and extending Hermes Agent — CLI usage, setup, configuration, spawning additional agents, gateway platforms, skills, voice, tools, profiles, and a concise contributor reference. Load this skill when helping users configure Hermes, troubleshoot issues, spawn agent instances, or make code contributions.
Create hand-drawn style diagrams using Excalidraw JSON format. Generate .excalidraw files for architecture diagrams, flowcharts, sequence diagrams, concept maps, and more. Files can be opened at excalidraw.com or uploaded for shareable links.
54 production-quality design systems extracted from real websites. Load a template to generate HTML/CSS that matches the visual identity of sites like Stripe, Linear, Vercel, Notion, Airbnb, and more. Each template includes colors, typography, components, layout rules, and ready-to-use CSS values.
| name | wine-api-comparison-test |
| description | Compare D3D8 API calls between original game EXE and reimplementation under Wine |
| tags | ["wine","d3d8","testing","comparison","hamsterball"] |
Run both the original Hamsterball EXE and our reimplementation under Wine with API tracing to compare D3D8/DInput/DSound call sequences. This validates that our reimplementation makes the same WinAPI calls as the original game.
originals/installed/extracted/Hamsterball.exereimpl/hamsterball.exescripts/test_api_compare.sh# Start Xvfb
Xvfb :99 -screen 0 1024x768x24 -ac &
sleep 2
# Run comparison script (5 seconds each)
DISPLAY=:99 ./scripts/test_api_compare.sh :99
cd ~/hamsterball-re/originals/installed/extracted
DISPLAY=:99 WINEDEBUG=+d3d8,+dinput wine Hamsterball.exe 2>&1 | tee /tmp/orig_trace.log
# Game will show D3DERR_NOTAVAILABLE on Xvfb (needs real GPU)
cd ~/hamsterball-re/reimpl
DISPLAY=:99 wine ./hamsterball.exe 2>&1 | tee /tmp/reimpl_trace.log
# Works on Xvfb: D3D8 device creates, level loads, clear screen renders
# D3D8 calls only
grep -i "trace:d3d8" /tmp/trace.log | head -100
# Focus on CreateDevice params
grep -i "CreateDevice" /tmp/trace.log
# Count render state changes
grep -c "SetRenderState" /tmp/trace.log
| Aspect | Original | Reimpl |
|---|---|---|
| CreateDevice | D3DCREATE_HARDWARE_VERTEXPROCESSING | Falls back to SOFTWARE_VERTEXPROCESSING |
| Window | Fullscreen 800x600 (original) | Windowed 1024x768 (our default) |
| Audio | BASS.dll for music, DirectSound for SFX | DirectSound stubbed (non-fatal) |
| Geometry | MESHWORLD vertex buffer rendering (SpawnPlatform 34v) | Placeholder sphere + colored cubes |
| Textures | D3DXCreateTextureFromFile (PNG/TGA) | No texture loading yet |
| Scene System | 8-pass render pipeline | Single-pass clear + ball + objects |
| Input | DInput8 + BASS for polling | DInput8 keyboard + mouse polling |
Screenshots are stored in analysis/screenshots/comparison/:
original_fullscreen.png — D3DERR_NOTAVAILABLE error dialog on Xvfbreimpl.png — Clear color screen (purple-gray) with no geometryFor testing with real GPU rendering (original game works):