Commit Graph
26 Commits
Author SHA1 Message Date
duffyduckandClaude Opus 4.8 ccad606a43 Titelbild in voller Aufloesung (320x480 anamorph statt halbiert)
Stefan-Frage "hatte das Titelbild nicht bessere Aufloesung?" -- ja, bestaetigt.
Die 4 Quadranten KELL256A-D (je 160x240 nativ) wurden bisher auf halbe Hoehe
(160x120) gestaucht -> 320x240, also die halbe vertikale Aufloesung verworfen
(gleiche Fehlklasse wie der Rauser-0.5x-Downscale). Ein RMSE-Vergleich der
beiden Varianten gegen die echte DOSBox-Referenzaufnahme belegt eindeutig die
volle Variante:
  voll (320x480, anamorph angezeigt): RMSE 0.014
  halbiert (320x240):                 RMSE 0.083  (6x schlechter)

Fix: build_title_quadrants nutzt die nativen 160x240-Quadranten -> 320x480-
Bild; angezeigt wird es anamorph auf die volle Fenstergroesse gestreckt
(_blit_title: 320x480 -> 960x720, x3 Breite / x1.5 Hoehe), womit alle 480
Zeilen erhalten bleiben. render_title_wipe_frame arbeitet automatisch bei
320x480 (Hoehe aus get_height()). pcc_surface_half_height entfernt (ungenutzt).

Verifiziert: neues Titelbild sichtbar schaerfer, deckungsgleich zur Referenz;
python -m game --once (headless) exit 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 01:59:19 +02:00
duffyduckandClaude Opus 4.8 95e5b1edb4 Intro: Endlosschleife raus, Alt+Enter-Vollbild, kelloggs.ini
- Keine Endlosschleife mehr: nach der Titelbild-Animation bleibt das fertige,
  voll-farbige Titelbild STEHEN und die Titelmusik loopt weiter, bis Leertaste
  oder ESC das Programm beendet (neue wait_for_key()). run_once() laeuft nur
  noch einmal; scene_title haelt am Ende auf Tastendruck (hold_forever), --once
  haelt stattdessen kurz (fuer headless/Tests).
- ALT+ENTER schaltet zwischen Fenster- und Vollbildmodus um (SCALED-Display
  skaliert das 960x720-Logikbild sauber hoch). Zentrale Event-Behandlung in
  _process_event(); Zeichenroutinen holen die aktuelle Surface per
  pygame.display.get_surface(), damit das Neuerzeugen des Display-Modes beim
  Umschalten keinen veralteten Screen-Bezug hinterlaesst (screen-Parameter aus
  den Scenes entfernt).
- Vollbild-Zustand wird in kelloggs.ini gemerkt (load/save_fullscreen_pref) und
  beim naechsten Start wiederhergestellt; ohne kelloggs.ini = Fenstermodus.
  kelloggs.ini ist gitignored (pro-Rechner-Laufzeitzustand).

Verifiziert (headless): Config load/save, Alt+Enter-Toggle, Space/ESC,
wait_for_key(Space)->quit; python -m game --once exit 0 in ~17s.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 01:49:47 +02:00
duffyduckandClaude Opus 4.8 7aea2fac26 Intro gegen echte DOSBox-Referenz korrigiert + Leertaste-Skip
Referenzaufnahmen aus DOSBox (Xvfb) gemacht und danach:

- Rauser-Aufloesung gefixt: die nativen PCC-Assets werden jetzt EINMAL direkt
  auf Endgroesse hochskaliert (Nearest) und der Screen direkt in Fenster-
  aufloesung gerendert -- statt vorher 0.5x-Downscale (verwirft Pixel) + x3-
  Upscale ueber eine 320er-Zwischenleinwand. Gleiche Groesse wie bisher (~33%
  Bildbreite, gegen Referenz gemessen), aber gestochen scharf. Zusaetzlich das
  tuerkise "!"-Kaestchen nachgebaut (im Original Engine-gezeichnet, in keinem
  Asset enthalten).
- Titelbild-Reveal: Grau/Entsaettigung raus (Stefan "das gray raus"); die
  Scanlines auf der unteren Haelfte loesen sich jetzt von der Mitte nach unten
  auf ("scanlines ab der mitte getrennt weg") statt gleichmaessig auszufaden.
- Factor5: Logo haelt exakt so lange wie sein Sound (TITEL2 Song 1) spielt,
  dann weiter zu Kellogg's.
- Leertaste ueberspringt jetzt den aktuellen Intro-Screen, ESC beendet das
  ganze Intro (wait_or_skip gibt 'quit'/'skip'/None; run_once ist in Scenes
  zerlegt).

HANG-FIX (dabei gefunden): das kompilierte render_tfmx-Binary war veraltet
(vor dem Song-Index-Feature aus render_tfmx.c gebaut) und renderte TITEL2 Song1
mit 180s statt 2.4s -- gekoppelt an die neue "Factor5-Dauer = Songlaenge"-Logik
haette das Intro 3 Minuten eingefroren. Fixes: audio._ensure_binary() baut jetzt
neu, wenn die Quelle neuer ist als das Binary (verhindert stale Binary nach git
pull); zusaetzlich FACTOR5_MAX_SECONDS als Sicherheits-Obergrenze.

Verifiziert: python -m game --once (headless) exit 0 in ~30s; Rauser/Titelbild
visuell gegen die DOSBox-Referenz gegengeprueft.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 01:39:28 +02:00
duffyduckandClaude Opus 4.8 e7d95190eb .gitignore: veraltete Eintraege entfernt
- extracted_pre/ raus: der PCKELL.PRE-Workflow (split_pre.py) ist laengst durch
  den DAT-Weg ersetzt, Ordner existiert nicht mehr, kein Code referenziert ihn.
- *.ppm raus: stammte aus dem alten ImageMagick-convert-Zwischenschritt; die
  aktuellen Tools nutzen Pillow und erzeugen kein PPM mehr.
- extracted_dat/ mit Kurzkommentar versehen (was es ist).

Rest unveraendert und weiterhin korrekt (game/original/, audio_cache/,
tfmx_player-Binary, __pycache__).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 00:43:22 +02:00
duffyduckandClaude Opus 4.8 4e4110b67b Original-Spieldateien nach game/original/ verschoben
raw/ -> game/original/ (die Original-DOS-Dateien liegen jetzt neben dem Code,
der sie liest). Bleibt gitignored -- ist das Original-Spiel selbst, gehoert
nicht ins Repo.

Nachgezogen:
- Default-DAT-Pfad in game/intro.py, tools/dat_extract.py, tools/render_assets.py
  -> game/original/PCKELL.DAT (KELLOGG_DAT-Override unveraendert).
- .gitignore: raw/ -> game/original/.
- Docstrings (game/audio.py, game/__init__.py), dosbox/dosbox.conf-Mountpfad,
  README-Struktur/Verweise angepasst.

tfmx_player: KEINE Aenderung -- der Quellcode ist bereits getrackt (benoetigt),
nur das kompilierte Binary render_tfmx bleibt bewusst gitignored (plattform-
spezifisch, wird von build.sh automatisch neu gebaut).

Verifiziert: python -m game --once (headless) exit 0 mit neuem Pfad.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 00:38:59 +02:00
duffyduckandClaude Opus 4.8 327236e277 preview/: vorgerenderte Archiv-Assets aus dem Wurzelverzeichnis gebuendelt
audio/, png_out/, render_out/ nach preview/ verschoben -- das sind reine
Ansichts-/Archiv-Ausgaben (aus PCKELL.DAT gerendert), keine Laufzeit-
Abhaengigkeit. Das Spiel dekodiert zur Laufzeit alles selbst on the fly aus
raw/PCKELL.DAT; die Musik rendert game/tfmx_player/ frisch nach audio_cache/,
preview/audio/ wird vom Spiel nicht gelesen.

- render_assets.py: Default-Ausgabepfad -> preview/render_out/.
- README.md: Struktur-Abschnitt auf preview/ aktualisiert.
- tfmx_player/ bleibt bewusst in game/ (Laufzeit-Audio-Decoder, Gegenstueck
  zu game/formats.py -- kein Dev-Tool).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 00:33:26 +02:00
duffyduckandClaude Opus 4.8 85404c91f4 Projektstruktur: game/-Package angelegt, README ergaenzt
Laufzeit-Code vom Dev-Werkzeug getrennt:
- game/: das eigentliche Spiel, startbar per `python -m game [--once]`.
  - formats.py  (war tools/kellogg_formats.py) -- Asset-Parser, Kern-Bibliothek
  - audio.py    (war tools/tfmx_audio.py)      -- TFMX-Musik-Wrapper
  - intro.py    (war tools/intro_sequence.py)  -- Boot-/Intro-Sequenz
  - tfmx_player/(war tools/tfmx_player/)        -- MIT-C-Renderer
  - __init__.py / __main__.py fuer `python -m game`
- tools/: nur noch Dev-Werkzeuge (dat_extract, pcc_to_png, render_assets),
  importieren jetzt aus game.formats.
- README.md: Ueberblick, Start, Struktur, Voraussetzungen, Rechtliches.
- .gitignore: tfmx_player-Binary-Pfad auf game/ nachgezogen.

Intro laeuft unveraendert (headless-Smoke-Test `python -m game --once` exit 0).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 00:29:03 +02:00
duffyduckandClaude Opus 4.8 3fe92d01b8 Original-Installer + deutsches Handbuch ins Repo aufgenommen
- Tony-Friends-in-Kellogg-s-Land_DOS_DE_Installer-Alt-1.zip: alternativer
  DOS-Installer (DE).
- Tony-Friends-in-Kellogg-s-Land_Manual_DOS_DE.pdf: deutsches Handbuch
  (Steuerung/Story-Referenz).
Gleiche Begruendung wie audio/: freies Werbespiel, innerhalb DE frei kopierbar.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 00:16:09 +02:00
duffyduckandClaude Opus 4.8 8b709f1cc3 NOTES.md: Cleanup-Eintrag (Duplikate entfernt, Soundfiles ins Repo)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 00:16:09 +02:00
duffyduckandClaude Opus 4.8 527bac1333 Soundfiles (gerenderte TFMX-WAVs) ins Repo aufgenommen, Duplikate aufgeraeumt
- audio/: alle 25 gerenderten Musik-WAVs (TITEL/TITEL2/ONGAME2 inkl. aller
  Songs) + .SAM/.TFX-Quellen. Bewusst mit eingecheckt: freies Werbespiel,
  innerhalb DE frei kopierbar, WAVs nur aus PCKELL.DAT extrahiert.
- Umbenannt von aria_kelloggs_soundfiles_voll/ -> audio/.
- Entfernt (nicht in git): veralteter Snapshot aria_kelloggs_extrahierte_assets/
  (+.zip) sowie redundantes aria_kelloggs_soundfiles_voll.tar.gz.
- audio_cache/ bleibt gitignored (Laufzeit-Cache, von intro_sequence.py
  regeneriert).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 00:15:11 +02:00
aria a6232dd6c8 NOTES.md: kaputtes Encoding (hörbar) gefixt 2026-07-23 11:39:29 +02:00
aria 4deb429282 NOTES.md: Factor5-Sound von Stefan bestaetigt, Repo-Hygiene-Fund dokumentiert 2026-07-23 11:39:00 +02:00
aria a077dceeaf render_tfmx.c: Song-Index-Feature nachgezogen (war im Quellcode noch nicht committet)
Repo-Hygiene-Fund (23.07.2026): tools/tfmx_audio.py reicht song_index bereits
seit dem Factor5-Sound-Fix als 5. CLI-Arg an render_tfmx durch (siehe dessen
Docstring), aber die zugehoerige C-Quelle war nie committed -- nur lokal auf
der VM in /home/aria/kellogg_remake gebaut. Ein frischer Checkout+Build von
origin/master haette also render_tfmx OHNE song_index-Unterstuetzung erzeugt:
jeder render_wav(..., song_index=N)-Aufruf (z.B. TITEL2 Song 1 fuer den
Factor5-Sound) waere klanglich stillschweigend auf Song 0 zurueckgefallen --
kein Crash, aber ein 1:1-Port-Bruch, den man erst durchs Hoeren gemerkt haette.

Ursache: parallel zur Bugfix-Session ist zusaetzlich ein zweiter, veralteter
Git-Checkout unter /tmp entstanden (tmpfs, ueberlebt keinen Reboot) und dort
unabhaengig weitergearbeitet worden, ohne vorher zu fetchen -- dadurch ist
lokal vs. Remote auseinandergelaufen. Nach Abgleich: die tatsaechliche
Arbeitskopie auf der VM (/home/aria/kellogg_remake) war fuer alle anderen
Dateien bereits 1:1 identisch mit origin/master; nur diese eine C-Datei fehlte
im Repo. Die verwaisten, ueberholten Doppel-Commits im tmpfs-Checkout wurden
verworfen (kein Datenverlust, deren Inhalt war ein aelterer, bereits
ueberholter Zwischenstand).
2026-07-23 11:37:59 +02:00
ARIA 9e47f92b64 NOTES.md: Hang-Fix und Song-Rendering-Uebergabe dokumentiert 2026-07-23 06:44:25 +00:00
ARIA 8509cbcfe5 Aufraeumen: __pycache__ gitignored 2026-07-23 06:43:59 +00:00
ARIA 73b887e2f7 Hang-Bug beim Rauser-Intro gefixt: TFMX-Rendering blockierte die pygame-Eventloop
Stefans Meldung 'nur noch ein schwarzes Bild, verschiebe ich das Fenster
wird der Desktop reingerendert, das Programm haengt' war real (per
Xvfb-Test verifiziert). Ursache: render_wav() rief render_tfmx als
blockierenden subprocess.run() auf -- bei einem frischen, ungecachten Song
(v.a. TITEL, ~109s) dauerte das reproduzierbar ~14s ohne dass die
pygame-Eventloop weiterlief, das OS stufte das Fenster dann als haengend
ein.

Fix: preload_all_audio() rendert alle benoetigten Songs jetzt EINMALIG vor
der eigentlichen Sequenz, per Hintergrund-Thread + responsivem
Ladebildschirm (render_audio_with_loading). run_once()/run_rauser() greifen
danach nur noch auf fertige WAV-Pfade zu, nie mehr Live-Rendering im
Hauptloop. Verifiziert per Xvfb-Testlauf: laeuft jetzt sauber durch.
2026-07-23 06:43:48 +00:00
ARIA af2ead172f Rauser-Aufloesung wirklich gefixt (0.5x Nearest-Neighbor statt native 1:1 oder smoothscale) + Factor5-Sound korrigiert (TITEL2-Song1 statt ONGAME2, Multi-Song-Fund)
Pixelvermessung von Stefans Referenz-Screenshot widerlegt die letzte
"native Groesse ist richtig"-Annahme -- das Logo ist im Original klein
(~34% Bildbreite), nicht bildschirmfuellend. Der eigentliche Bloedsinn war
smoothscale() (bilinear, verwaescht Pixel-Art), nicht die 0.5x-Groesse
selbst. Fix: 0.5x beibehalten, pygame.transform.scale() (Nearest-Neighbor)
statt smoothscale().

Factor5 spielte bisher faelschlich ONGAME2 (~123s Level-Musik) ab. Fund:
TFX-Module buendeln mehrere Songs (v_songs[]) -- TITEL2 hat 2 (Song0 =
2.04s Rauser-Sting, Song1 = 2.40s), TITEL 3, ONGAME2 sogar 14. TITEL2-Song1
passt laenge-maessig exakt zu "nur ein bisschen laenger als der
Rauser-Sound" -- jetzt der Factor5-Sound, feste 5s Anzeigedauer.
2026-07-22 22:12:01 +00:00
ARIA 094aca0e1e Rauser-Fade-Bug (Alpha-Cutout), Musik-Laenge-Bug (real_song_end-Erkennung) und Factor5-Melodie gefixt 2026-07-22 21:31:33 +00:00
ARIAandClaude Sonnet 5 6d196020db Pfade relativ statt hardcodiert + Rauser/Titelbild-Korrektur per Pixelvermessung
- intro_sequence.py, tfmx_audio.py, render_assets.py, dat_extract.py:
  /home/aria/kellogg_remake/... durch PROJECT_ROOT-relative Pfade ersetzt
  (mit optionalem ENV-Override), laeuft jetzt von jedem Checkout aus.
- Rauser-Logo: war 1:1 nativ gezeichnet (viel zu gross) und weisser statt
  grauer Hintergrund. Per frischer DOSBox-Referenzaufnahme (Xvfb-Screenshot-
  Serie) neu vermessen: 0.5x Skalierung, Slide-in-Animation (RAUSER-Box von
  links, "!"-Box von oben, ADVERTAINMENT steht fest), Sound-Sting (TITEL2,
  einmalig) bei Ankunft, danach Fade weiss->grau.
- Titelbild: fruehere Annahme (4 Quadranten voll gestapelt = 320x480) war
  falsch und die Ursache fuer den gemeldeten Squish-Bug. Per Pixel-
  Rekonstruktion verifiziert: jeder Quadrant wird nur auf halber HOEHE
  (160x120 statt 160x240, Breite bleibt nativ) im 2x2-Raster angeordnet ->
  korrektes 320x240-Bild. Zusaetzlich neu entdeckter und nachgebauter
  Scanline/Graustufen-Reveal-Effekt auf der unteren Bildhaelfte.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-22 21:01:47 +00:00
ARIA a34be7ce05 Sound (TFMX) geloest: MIT-lizenzierter Player eingebunden, Titelmusik in Intro-Sequenz 2026-07-22 16:19:25 +00:00
ARIAandClaude Sonnet 5 ea1f5b951e Boot-Sequenz vermessen + Intro-Player gebaut, echten PCC-Decoder-Regressionsbug gefixt
- Regression gefunden+gefixt: pcc_to_png.py war durch einen frueheren Commit
  versehentlich auf den kaputten Hand-RLE-Decoder zurueckgefallen (der
  ImageMagick-Fix ging verloren). Jetzt: kellogg_formats.load_pcc() nutzt
  Pillows PCX-Decoder direkt, kein eigener RLE-Code mehr im Projekt. Alle
  77 PCC neu gerendert, AE=0 (pixelidentisch) zu den alten guten PNGs.
- Boot-Sequenz per echter DOSBox-Screenshot-Serie (0.3s-Intervall) vermessen:
  Rauser-Karte -> Factor5-Logo (statisch, keine Animation) -> Kellogg's-Logo
  mit Palette-Fade des "praesentiert"-Texts (Indizes 34/42/43/44/45) ->
  Titelbild "Tony & Friends in Kellogg's Land" mit echtem Vorhang-Wipe-Effekt
  (320x480 aus 4 Quadranten KELL256A-D, obere Haelfte faehrt runter, untere
  hoch, treffen sich in der Mitte). Korrigiert eine fruehere Fehlannahme:
  der Wipe sitzt auf dem TITELBILD, nicht auf dem Kellogg's-Markenlogo.
- tools/intro_sequence.py: erster spielbarer pygame-Meilenstein, baut die
  komplette Sequenz nach (Asset-Loading, Palette-Rendering, Timing, echter
  Palette-Fade, Wipe-Effekt). Headless getestet, visuell verifiziert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-22 16:13:32 +00:00
ARIA 3622bd0a1a Plan: Boot-/Intro-Sequenz als erster Python-Meilenstein, tfmx_player-Referenz gesichert 2026-07-22 15:36:09 +00:00
ARIAandClaude Sonnet 5 3410a53ee7 BOB/ICO/MAP-Formate geloest, PCKELL.DAT als echten Asset-Container entdeckt
- PCKELL.DAT ist der eigentliche Asset-Container (Index am Dateiende),
  nicht PCKELL.PRE -- alle 178 Assets fehlerfrei extrahierbar
  (tools/dat_extract.py, tools/kellogg_formats.DATContainer)
- BOB (Sprites): self-modifying x86 draw-code decodiert, alle 32 Dateien /
  462 Frames korrekt (Tony, Gegner, Items) -- tools/kellogg_formats.parse_bob
- ICO (16x16 EGA-Tilesets) und MAP (Level-Grids, big-endian) decodiert und
  gerendert -- alle 19 ICO- und 22 MAP-Dateien fehlerfrei, Level W1L0 sieht
  korrekt aus (Haeuser, Baeume, Berge an den erwarteten Stellen)
- Palette-Regeln (BOB/ICO/MAP -> passende PCC) aus der C#-Referenz
  uebernommen und in Python neu implementiert
- Aufraeumen: PRE-basierte Extraktion (split_pre.py, extracted_pre) und
  alle Blindflug-Explorationsskripte aus der ersten BOB-Sackgasse entfernt,
  VM-Arbeitsverzeichnis von Debug-Screenshots befreit
- pcc_to_png.py aktualisiert (Xmax/Ymin-Dimensionsfix, jetzt visuell
  gegen DOSBox-Referenz verifiziert statt nur behauptet)

Offen: ARE (Kollisionszonen, auch Referenz-Projekt unvollstaendig) und
SAM/TFX (TFMX-Sound) noch nicht angefasst.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-22 08:21:12 +00:00
ARIA 62af15e91c Echter Fix: PCC-Decoder nutzt jetzt ImageMagick statt eigenem RLE-Code
Beide vorherigen Hand-RLE-Decoder (Row-Reset und kontinuierlich) waren
trotz gegenteiliger Behauptung sichtbar kaputt (Bildinhalt verschoben/
dupliziert) -- Stefan hat das im gepushten Repo sofort wieder gesehen.
Format-Referenz https://github.com/movAX13h/tony-and-friends-in-kelloggs-land
bestaetigt .PCC = Standard-PCX v5. Fix: convert pcx:datei.PCC statt
eigenem RLE-Parser. Verifiziert (visuell, nicht nur Byte-Stats) gegen
echte DOSBox-Screenshots -- KARTE.PCC und KELLOGGS.PCC jetzt wirklich
korrekt. Alle 77 PNGs neu erzeugt.
2026-07-22 07:58:09 +00:00
ARIA 5efba4b165 PCC-Decoder-Bugfix: RLE-Runs duerfen Zeilengrenzen ueberschreiten (Row-Reset war falsch)
Stefan hat zurecht bemaengelt dass KARTE.PCC/KELLOGGS.PCC verzerrt/verrutscht
aussehen (Smacks-Frosch an falscher Position, Notch-Fehlstelle im Logo-Rahmen).

Root Cause: Der Decoder hat RLE-Runs am Ende jeder Bildzeile hart abgeschnitten
und den Rest verworfen (klassisches PCX-Verhalten angenommen). Dieses Format
haelt sich aber NICHT an die PCX-Konvention 'ein Run ueberschreitet nie eine
Zeile' -- Runs laufen frei ueber Zeilengrenzen. Verifiziert per Pixel-fuer-Pixel-
Vergleich gegen echten DOSBox-Screenshot (world map): mit durchgehender
Dekodierung (kein Row-Reset) ist das Ergebnis jetzt pixel-identisch zur Referenz.

- tools/pcc_to_png.py: Row-Reset entfernt, decodiert jetzt width*height Pixel
  am Stueck aus dem RLE-Strom
- png_out/: alle 77 PNGs mit dem Fix neu generiert
- tools/wip_bob_sprite_research/: Backup der laufenden (noch ungeloesten)
  BOB-Sprite-Format-Exploration von aria-wohnung, damit nichts bei einem
  VM-Neustart verloren geht
- NOTES.md: Root-Cause-Analyse dokumentiert, alte Fehldiagnose ('byte-identisch
  zwischen Row-Reset und kontinuierlich') korrigiert, Rauser-Intro-Frage
  beantwortet (3 Frames vorhanden, Text-Logo, keine Video-Datei)
2026-07-22 07:33:01 +00:00
ARIA 3c650e6aef Initial commit: PCC-Decoder (mit Xmax/Ymax-Bugfix), Notes, DOSBox-Config
- tools/pcc_to_png.py: PCX-artiger Decoder fuer die 77 PCC-Vollbild-/Logo-
  Dateien, mit Fix fuer falsch gelesene Width/Height (muss aus Xmax-Xmin+1/
  Ymax-Ymin+1 statt Offset 12-15 berechnet werden)
- tools/split_pre.py: Extrahiert alle 181 Dateien aus PCKELL.PRE
- png_out/: alle 77 konvertierten PNGs (Arbeitsergebnis, kein Original-Asset)
- NOTES.md: vollstaendiger Analyse-Stand inkl. offener Punkte
- dosbox/dosbox.conf: funktionierende Testkonfiguration (IRQ-Fix)

Bewusst ausgeschlossen (.gitignore): raw/ und extracted_pre/, da Original-
Spieldaten von Kellogg's Tony and Friends (1994), keine Weiterverbreitung.
2026-07-22 07:20:13 +00:00