diff --git a/.gitignore b/.gitignore index 11f2ab9..88e0e43 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ # Original-Spieldateien (copyrighted, gehoeren nicht ins Repo) raw/ extracted_pre/ +extracted_dat/ *.ppm diff --git a/NOTES.md b/NOTES.md index 83c57c0..c1772d8 100644 --- a/NOTES.md +++ b/NOTES.md @@ -618,3 +618,103 @@ Hinschauen (Bild anzeigen, nicht nur Bytes vergleichen) klar falsch war. Naechstes Mal: bei jeder Verifikations-Behauptung IMMER das decodierte Bild selbst anschauen (Read-Tool, multimodal), nicht nur Byte-/Pixel-Statistiken vertrauen, bevor ich "geloest"/"verifiziert" sage. + +## DURCHBRUCH 2026-07-22 (Nachmittag/Abend) — BOB/ICO/MAP komplett geloest + +Stefan wollte aufraeumen + alle restlichen Assets (BOB/ICO/MAP/ARE/SAM/TFX). +Grosser Fund dabei: **`PCKELL.DAT` ist der eigentliche, einzige Asset- +Container** — nicht `PCKELL.PRE` (das war nur ein Nebenprodukt/Cache aus +`PCKELL.SET`). Referenz-Repo (`Formats/DATFile.cs`) beschreibt ihn explizit +als "the only container format": Index steht am DATEIENDE (Anzahl Entries +als u16 bei `len-4`, Index-Offset als i32 bei `len-8`), pro Entry +`[u16 NameLen][Name][i32 Offset]`, Laenge = Differenz zum naechsten Offset. +Score: **alle 178 Dateien fehlerfrei extrahiert**, exakt matchend zu +APPEND.LST — und `KELLOGGS.PCC` daraus ist **byte-identisch** zur alten +PRE-Extraktion, also war unser PCC-Weg schon konsistent. `PCKELL.PRE`/ +`extracted_pre/`/`split_pre.py` sind damit ueberfluessig geworden, aus dem +Tool-Set entfernt (Repo-Hygiene, kein Skill-Friedhof-Aequivalent fuer +Tools). Neue kanonische Quelle: `tools/dat_extract.py` + +`tools/kellogg_formats.DATContainer`. + +**PCC-Bug-Nachtrag:** beim heutigen Re-Check mit frischem Blick (Kellogg's- +Logo UND Weltkarte hochskaliert wirklich angeschaut, nicht nur behauptet) +ist `png_out/` tatsaechlich korrekt — Frosch im Teich unten links, Drache+ +Schloss oben, Tiger/Coco richtig platziert, "Kellogg's präsentiert"-Box sauber. +Der PCC-Teil war also wirklich fertig, keine weitere Aktion noetig. + +**BOB (Sprites) — komplett geloest.** Format aus `BOBFile.cs`/`Form1.cs` +in eigenes Python uebersetzt (`tools/kellogg_formats.py`, Funktionen +`parse_bob`/`_parse_bob_executable`): jede BOB-Datei ist eine Sequenz von +Frames, jeder Frame hat einen 14-Byte-Header (Breite/Hoehe/Laenge des +"Pointer"-Segments), gefolgt von echtem, sich selbst beschreibendem x86- +Maschinencode (`mov byte/word ptr [si+X], Y`-Ketten + `out dx,al` fuer +EGA-Page-Wechsel), der beim "Ausfuehren" direkt die Pixel-Kopieranweisungen +liefert (Offset+EGA-Page -> x/y, Pixelwert = Byte-Konstante minus 0x80 als +Palette-Index). Kein echter x86-Interpreter noetig, nur ein kleiner +Pattern-Matcher fuer die 10 vorkommenden Opcodes. Palette kommt (Form1.cs- +Regel) von der PCC-Datei mit gleichem Basisnamen (z.B. `TONY.BOB` -> +Palette aus `TONY.PCC`), bei 1-Buchstaben-Dateien (`A.BOB`..`O.BOB`, die +Ameisen) von `ANTS.PCC`, sonst von `W2.PCC` mit Index 0 auf Schwarz +gesetzt. **Alle 32 BOB-Dateien fehlerfrei decodiert, 462 Frames total.** +Visuell verifiziert (nicht nur Byte-Statistik!): `A.BOB` ist eine 8-Frame- +Laufanimation eines kleinen Kaefers/Ameise, `TONY.BOB` zeigt Tony den +Tiger unmissverstaendlich in Lauf-, Wink-, Sitz- und Sprung-Posen (53 +Frames). Ergebnisse in `render_out/bob//NNN.png` (Einzelframes) + +`render_out/bob/_sheet.png` (Grid-Uebersicht). + +**ICO (Tilesets) — komplett geloest.** 16x16-Kacheln in "gescrambelter" +EGA-Spaltenreihenfolge (`parse_ico`): pro Zeile 4 EGA-Pages a 4 Pixel, +Palette-Index = Byte minus 128. Palette-Regel: `W1`/`W2`/`W3` aus dem +Dateinamen erkannt, Basis-Palette von `.PCC`, aber die 16 Farben +Index 16-31 IMMER von `W2.PCC` ueberschrieben (die sind laut Referenz die +geteilten Animations-/Item-Farben aller drei Welten) — ausser bei `W2` +selbst. **Alle 19 ICO-Dateien fehlerfrei decodiert.** Ergebnis in +`render_out/ico/.png`. + +**MAP (Level-Karten) — komplett geloest.** Klares Format, aber +GROSS-ENDIAN (!), Signatur `"TLE1"`, dann Breite/Hoehe/Konstante(=9) je +als big-endian int16, danach `Breite*Hoehe` big-endian u16-Zellen: unteres +9-Bit-Feld = Tile-Index (ins passende `.ICO`), oberes 7-Bit-Feld = +Kollisions-/Typ-Info (noch nicht weiter interpretiert). **Alle 22 MAP- +Dateien fehlerfrei decodiert UND gerendert** (Tile-Lookup im passenden ICO ++ Palette) — `W1L0.png` zeigt ein komplettes, stimmiges Level: Haeuser mit +rotem Dach, Buesche/Baeume, Wolken, blauer Himmel, Bergketten, alles exakt +an der Stelle, die man von einem Kellogg's-Tony-Jump'n'Run erwartet. +Ergebnis in `render_out/map/.png`. + +**ARE (Kollisionszonen) — NICHT geloest, bewusst zurueckgestellt.** Auch +die C#-Referenz hat das nie fertig gemacht (`AREFile.cs` liest nur naiv +176 little-endian u16-Werte ohne jede semantische Deutung, README nennt +nur den Namen "Area" ohne Details). Da MAP-Zellen bereits ein 7-Bit- +Kollisions-Typ-Feld mitbringen, ist unklar ob ARE ueberhaupt noch fuer den +Python-Port gebraucht wird (vielleicht redundant/Level-Editor-Metadaten) — +das klaeren wir erst, wenn die Spiellogik so weit ist dass Kollision +gebraucht wird. Rohdaten bleiben in `extracted_dat/` (nicht committed) +falls wir spaeter draufschauen wollen. + +**SAM/TFX (Sound, TFMX-Format) — noch nicht angefasst.** 3+3 = 6 Dateien, +niedrige Prioritaet (Musik/SFX kommt spaeter, sobald Grafik+Logik stehen). +TFMX ist ein bekanntes Amiga/DOS-Tracker-Format, sollte mit vorhandenen +Libraries (z.B. `libxmp`/`ym2149`-Tools) machbar sein, nicht neu erfunden +werden muessen. + +**Aufraeumen erledigt:** +- VM-Arbeitsverzeichnis (`/home/aria/kellogg_remake` auf `aria-wohnung`, + NICHT im Repo): alle Debug-Logs/Test-Screenshots aus der DOSBox-IRQ- + Session sowie `png_out_v2/` (veraltet) geloescht. +- `tools/`: alle Blindflug-Skripte aus der ersten BOB-Exploration + (`bob_header_diff.py`, `bob_width_search.py`, `dat_analyze*.py`, etc.) + UND `tools/wip_bob_sprite_research/` komplett entfernt — durch die + echte Loesung in `kellogg_formats.py` ueberfluessig. `split_pre.py` + ebenfalls entfernt (PRE-Weg durch DAT-Weg ersetzt). +- `.gitignore`: `extracted_dat/` ergaenzt (Rohdaten, copyrighted, wie + `raw/`/`extracted_pre/` vorher schon). + +**Naechste Schritte (Prioritaet, Stand Abend 22.07.):** +1. Rauser-Intro-Sequenz zusammensetzen (niedrig, Assets schon da). +2. Sound (SAM/TFX, TFMX-Format) angehen, wenn Zeit ist. +3. ARE/Kollisionsformat klaeren — erst wenn's fuer Spiellogik gebraucht wird. +4. **Jetzt wo alle visuellen Assets (PCC/BOB/ICO/MAP) fertig sind:** + Python/pygame-Projektstruktur aufsetzen — Asset-Loader (Palette-Regeln + aus `kellogg_formats.py` direkt uebernehmen), dann Tony-Bewegung/ + Kollision/Level-Scrolling als erste spielbare Vertical Slice. diff --git a/render_out/bob/A/000.png b/render_out/bob/A/000.png new file mode 100644 index 0000000..0572ccf Binary files /dev/null and b/render_out/bob/A/000.png differ diff --git a/render_out/bob/A/001.png b/render_out/bob/A/001.png new file mode 100644 index 0000000..4ad2e48 Binary files /dev/null and b/render_out/bob/A/001.png differ diff --git a/render_out/bob/A/002.png b/render_out/bob/A/002.png new file mode 100644 index 0000000..ba72134 Binary files /dev/null and b/render_out/bob/A/002.png differ diff --git a/render_out/bob/A/003.png b/render_out/bob/A/003.png new file mode 100644 index 0000000..bc3ec59 Binary files /dev/null and b/render_out/bob/A/003.png differ diff --git a/render_out/bob/A/004.png b/render_out/bob/A/004.png new file mode 100644 index 0000000..2e7364c Binary files /dev/null and b/render_out/bob/A/004.png differ diff --git a/render_out/bob/A/005.png b/render_out/bob/A/005.png new file mode 100644 index 0000000..fbe7cb6 Binary files /dev/null and b/render_out/bob/A/005.png differ diff --git a/render_out/bob/A/006.png b/render_out/bob/A/006.png new file mode 100644 index 0000000..3dda11b Binary files /dev/null and b/render_out/bob/A/006.png differ diff --git a/render_out/bob/A/007.png b/render_out/bob/A/007.png new file mode 100644 index 0000000..07f3a99 Binary files /dev/null and b/render_out/bob/A/007.png differ diff --git a/render_out/bob/A_sheet.png b/render_out/bob/A_sheet.png new file mode 100644 index 0000000..0994bbf Binary files /dev/null and b/render_out/bob/A_sheet.png differ diff --git a/render_out/bob/B/000.png b/render_out/bob/B/000.png new file mode 100644 index 0000000..3ebc3d4 Binary files /dev/null and b/render_out/bob/B/000.png differ diff --git a/render_out/bob/B/001.png b/render_out/bob/B/001.png new file mode 100644 index 0000000..1fb1e25 Binary files /dev/null and b/render_out/bob/B/001.png differ diff --git a/render_out/bob/BLUME/000.png b/render_out/bob/BLUME/000.png new file mode 100644 index 0000000..5cc1410 Binary files /dev/null and b/render_out/bob/BLUME/000.png differ diff --git a/render_out/bob/BLUME_sheet.png b/render_out/bob/BLUME_sheet.png new file mode 100644 index 0000000..c59fb43 Binary files /dev/null and b/render_out/bob/BLUME_sheet.png differ diff --git a/render_out/bob/BOSSNAKE/000.png b/render_out/bob/BOSSNAKE/000.png new file mode 100644 index 0000000..5221320 Binary files /dev/null and b/render_out/bob/BOSSNAKE/000.png differ diff --git a/render_out/bob/BOSSNAKE/001.png b/render_out/bob/BOSSNAKE/001.png new file mode 100644 index 0000000..240ac7e Binary files /dev/null and b/render_out/bob/BOSSNAKE/001.png differ diff --git a/render_out/bob/BOSSNAKE/002.png b/render_out/bob/BOSSNAKE/002.png new file mode 100644 index 0000000..3a1c88c Binary files /dev/null and b/render_out/bob/BOSSNAKE/002.png differ diff --git a/render_out/bob/BOSSNAKE/003.png b/render_out/bob/BOSSNAKE/003.png new file mode 100644 index 0000000..631aa04 Binary files /dev/null and b/render_out/bob/BOSSNAKE/003.png differ diff --git a/render_out/bob/BOSSNAKE/004.png b/render_out/bob/BOSSNAKE/004.png new file mode 100644 index 0000000..5a25ab1 Binary files /dev/null and b/render_out/bob/BOSSNAKE/004.png differ diff --git a/render_out/bob/BOSSNAKE/005.png b/render_out/bob/BOSSNAKE/005.png new file mode 100644 index 0000000..0626427 Binary files /dev/null and b/render_out/bob/BOSSNAKE/005.png differ diff --git a/render_out/bob/BOSSNAKE/006.png b/render_out/bob/BOSSNAKE/006.png new file mode 100644 index 0000000..7eb6e8e Binary files /dev/null and b/render_out/bob/BOSSNAKE/006.png differ diff --git a/render_out/bob/BOSSNAKE/007.png b/render_out/bob/BOSSNAKE/007.png new file mode 100644 index 0000000..62594c6 Binary files /dev/null and b/render_out/bob/BOSSNAKE/007.png differ diff --git a/render_out/bob/BOSSNAKE/008.png b/render_out/bob/BOSSNAKE/008.png new file mode 100644 index 0000000..ba68337 Binary files /dev/null and b/render_out/bob/BOSSNAKE/008.png differ diff --git a/render_out/bob/BOSSNAKE/009.png b/render_out/bob/BOSSNAKE/009.png new file mode 100644 index 0000000..07c7a28 Binary files /dev/null and b/render_out/bob/BOSSNAKE/009.png differ diff --git a/render_out/bob/BOSSNAKE/010.png b/render_out/bob/BOSSNAKE/010.png new file mode 100644 index 0000000..bec360b Binary files /dev/null and b/render_out/bob/BOSSNAKE/010.png differ diff --git a/render_out/bob/BOSSNAKE/011.png b/render_out/bob/BOSSNAKE/011.png new file mode 100644 index 0000000..b094f0c Binary files /dev/null and b/render_out/bob/BOSSNAKE/011.png differ diff --git a/render_out/bob/BOSSNAKE/012.png b/render_out/bob/BOSSNAKE/012.png new file mode 100644 index 0000000..78f50e2 Binary files /dev/null and b/render_out/bob/BOSSNAKE/012.png differ diff --git a/render_out/bob/BOSSNAKE/013.png b/render_out/bob/BOSSNAKE/013.png new file mode 100644 index 0000000..99f16fe Binary files /dev/null and b/render_out/bob/BOSSNAKE/013.png differ diff --git a/render_out/bob/BOSSNAKE/014.png b/render_out/bob/BOSSNAKE/014.png new file mode 100644 index 0000000..0438ce7 Binary files /dev/null and b/render_out/bob/BOSSNAKE/014.png differ diff --git a/render_out/bob/BOSSNAKE/015.png b/render_out/bob/BOSSNAKE/015.png new file mode 100644 index 0000000..6901895 Binary files /dev/null and b/render_out/bob/BOSSNAKE/015.png differ diff --git a/render_out/bob/BOSSNAKE_sheet.png b/render_out/bob/BOSSNAKE_sheet.png new file mode 100644 index 0000000..0260892 Binary files /dev/null and b/render_out/bob/BOSSNAKE_sheet.png differ diff --git a/render_out/bob/B_sheet.png b/render_out/bob/B_sheet.png new file mode 100644 index 0000000..d1b19c1 Binary files /dev/null and b/render_out/bob/B_sheet.png differ diff --git a/render_out/bob/C/000.png b/render_out/bob/C/000.png new file mode 100644 index 0000000..5946842 Binary files /dev/null and b/render_out/bob/C/000.png differ diff --git a/render_out/bob/C/001.png b/render_out/bob/C/001.png new file mode 100644 index 0000000..f5db34d Binary files /dev/null and b/render_out/bob/C/001.png differ diff --git a/render_out/bob/C/002.png b/render_out/bob/C/002.png new file mode 100644 index 0000000..1cbd517 Binary files /dev/null and b/render_out/bob/C/002.png differ diff --git a/render_out/bob/C/003.png b/render_out/bob/C/003.png new file mode 100644 index 0000000..f92ea5f Binary files /dev/null and b/render_out/bob/C/003.png differ diff --git a/render_out/bob/C/004.png b/render_out/bob/C/004.png new file mode 100644 index 0000000..a073512 Binary files /dev/null and b/render_out/bob/C/004.png differ diff --git a/render_out/bob/C/005.png b/render_out/bob/C/005.png new file mode 100644 index 0000000..4686142 Binary files /dev/null and b/render_out/bob/C/005.png differ diff --git a/render_out/bob/C/006.png b/render_out/bob/C/006.png new file mode 100644 index 0000000..14d415a Binary files /dev/null and b/render_out/bob/C/006.png differ diff --git a/render_out/bob/C/007.png b/render_out/bob/C/007.png new file mode 100644 index 0000000..4aeffc2 Binary files /dev/null and b/render_out/bob/C/007.png differ diff --git a/render_out/bob/C/008.png b/render_out/bob/C/008.png new file mode 100644 index 0000000..cbdbb62 Binary files /dev/null and b/render_out/bob/C/008.png differ diff --git a/render_out/bob/COCO/000.png b/render_out/bob/COCO/000.png new file mode 100644 index 0000000..1d5c65f Binary files /dev/null and b/render_out/bob/COCO/000.png differ diff --git a/render_out/bob/COCO/001.png b/render_out/bob/COCO/001.png new file mode 100644 index 0000000..924548b Binary files /dev/null and b/render_out/bob/COCO/001.png differ diff --git a/render_out/bob/COCO/002.png b/render_out/bob/COCO/002.png new file mode 100644 index 0000000..2fefc30 Binary files /dev/null and b/render_out/bob/COCO/002.png differ diff --git a/render_out/bob/COCO/003.png b/render_out/bob/COCO/003.png new file mode 100644 index 0000000..039d5f6 Binary files /dev/null and b/render_out/bob/COCO/003.png differ diff --git a/render_out/bob/COCO/004.png b/render_out/bob/COCO/004.png new file mode 100644 index 0000000..8f51bbb Binary files /dev/null and b/render_out/bob/COCO/004.png differ diff --git a/render_out/bob/COCO/005.png b/render_out/bob/COCO/005.png new file mode 100644 index 0000000..6fb2931 Binary files /dev/null and b/render_out/bob/COCO/005.png differ diff --git a/render_out/bob/COCO/006.png b/render_out/bob/COCO/006.png new file mode 100644 index 0000000..8cfc6f7 Binary files /dev/null and b/render_out/bob/COCO/006.png differ diff --git a/render_out/bob/COCO/007.png b/render_out/bob/COCO/007.png new file mode 100644 index 0000000..a9bb9d9 Binary files /dev/null and b/render_out/bob/COCO/007.png differ diff --git a/render_out/bob/COCO/008.png b/render_out/bob/COCO/008.png new file mode 100644 index 0000000..cb980fe Binary files /dev/null and b/render_out/bob/COCO/008.png differ diff --git a/render_out/bob/COCO/009.png b/render_out/bob/COCO/009.png new file mode 100644 index 0000000..6720e7d Binary files /dev/null and b/render_out/bob/COCO/009.png differ diff --git a/render_out/bob/COCO/010.png b/render_out/bob/COCO/010.png new file mode 100644 index 0000000..1dea76e Binary files /dev/null and b/render_out/bob/COCO/010.png differ diff --git a/render_out/bob/COCO/011.png b/render_out/bob/COCO/011.png new file mode 100644 index 0000000..88826a8 Binary files /dev/null and b/render_out/bob/COCO/011.png differ diff --git a/render_out/bob/COCO/012.png b/render_out/bob/COCO/012.png new file mode 100644 index 0000000..fbb3d3e Binary files /dev/null and b/render_out/bob/COCO/012.png differ diff --git a/render_out/bob/COCO/013.png b/render_out/bob/COCO/013.png new file mode 100644 index 0000000..070fadb Binary files /dev/null and b/render_out/bob/COCO/013.png differ diff --git a/render_out/bob/COCO/014.png b/render_out/bob/COCO/014.png new file mode 100644 index 0000000..d27a86d Binary files /dev/null and b/render_out/bob/COCO/014.png differ diff --git a/render_out/bob/COCO/015.png b/render_out/bob/COCO/015.png new file mode 100644 index 0000000..0b2b0e6 Binary files /dev/null and b/render_out/bob/COCO/015.png differ diff --git a/render_out/bob/COCO/016.png b/render_out/bob/COCO/016.png new file mode 100644 index 0000000..1548872 Binary files /dev/null and b/render_out/bob/COCO/016.png differ diff --git a/render_out/bob/COCO/017.png b/render_out/bob/COCO/017.png new file mode 100644 index 0000000..14af73b Binary files /dev/null and b/render_out/bob/COCO/017.png differ diff --git a/render_out/bob/COCO/018.png b/render_out/bob/COCO/018.png new file mode 100644 index 0000000..de79005 Binary files /dev/null and b/render_out/bob/COCO/018.png differ diff --git a/render_out/bob/COCO/019.png b/render_out/bob/COCO/019.png new file mode 100644 index 0000000..cf75cc9 Binary files /dev/null and b/render_out/bob/COCO/019.png differ diff --git a/render_out/bob/COCO/020.png b/render_out/bob/COCO/020.png new file mode 100644 index 0000000..eed2693 Binary files /dev/null and b/render_out/bob/COCO/020.png differ diff --git a/render_out/bob/COCO/021.png b/render_out/bob/COCO/021.png new file mode 100644 index 0000000..bca7a57 Binary files /dev/null and b/render_out/bob/COCO/021.png differ diff --git a/render_out/bob/COCO/022.png b/render_out/bob/COCO/022.png new file mode 100644 index 0000000..e42bdce Binary files /dev/null and b/render_out/bob/COCO/022.png differ diff --git a/render_out/bob/COCO/023.png b/render_out/bob/COCO/023.png new file mode 100644 index 0000000..e461b2c Binary files /dev/null and b/render_out/bob/COCO/023.png differ diff --git a/render_out/bob/COCO/024.png b/render_out/bob/COCO/024.png new file mode 100644 index 0000000..814976b Binary files /dev/null and b/render_out/bob/COCO/024.png differ diff --git a/render_out/bob/COCO/025.png b/render_out/bob/COCO/025.png new file mode 100644 index 0000000..11bfa0b Binary files /dev/null and b/render_out/bob/COCO/025.png differ diff --git a/render_out/bob/COCO/026.png b/render_out/bob/COCO/026.png new file mode 100644 index 0000000..f77c032 Binary files /dev/null and b/render_out/bob/COCO/026.png differ diff --git a/render_out/bob/COCO/027.png b/render_out/bob/COCO/027.png new file mode 100644 index 0000000..7dc4cbf Binary files /dev/null and b/render_out/bob/COCO/027.png differ diff --git a/render_out/bob/COCO/028.png b/render_out/bob/COCO/028.png new file mode 100644 index 0000000..91e493c Binary files /dev/null and b/render_out/bob/COCO/028.png differ diff --git a/render_out/bob/COCO/029.png b/render_out/bob/COCO/029.png new file mode 100644 index 0000000..a632a2b Binary files /dev/null and b/render_out/bob/COCO/029.png differ diff --git a/render_out/bob/COCO/030.png b/render_out/bob/COCO/030.png new file mode 100644 index 0000000..e8af7cf Binary files /dev/null and b/render_out/bob/COCO/030.png differ diff --git a/render_out/bob/COCO/031.png b/render_out/bob/COCO/031.png new file mode 100644 index 0000000..dd3bff0 Binary files /dev/null and b/render_out/bob/COCO/031.png differ diff --git a/render_out/bob/COCO/032.png b/render_out/bob/COCO/032.png new file mode 100644 index 0000000..6449cee Binary files /dev/null and b/render_out/bob/COCO/032.png differ diff --git a/render_out/bob/COCO/033.png b/render_out/bob/COCO/033.png new file mode 100644 index 0000000..183df05 Binary files /dev/null and b/render_out/bob/COCO/033.png differ diff --git a/render_out/bob/COCO/034.png b/render_out/bob/COCO/034.png new file mode 100644 index 0000000..30fb4e2 Binary files /dev/null and b/render_out/bob/COCO/034.png differ diff --git a/render_out/bob/COCO/035.png b/render_out/bob/COCO/035.png new file mode 100644 index 0000000..979c2f4 Binary files /dev/null and b/render_out/bob/COCO/035.png differ diff --git a/render_out/bob/COCO/036.png b/render_out/bob/COCO/036.png new file mode 100644 index 0000000..430698d Binary files /dev/null and b/render_out/bob/COCO/036.png differ diff --git a/render_out/bob/COCO/037.png b/render_out/bob/COCO/037.png new file mode 100644 index 0000000..5fb7639 Binary files /dev/null and b/render_out/bob/COCO/037.png differ diff --git a/render_out/bob/COCO/038.png b/render_out/bob/COCO/038.png new file mode 100644 index 0000000..3388741 Binary files /dev/null and b/render_out/bob/COCO/038.png differ diff --git a/render_out/bob/COCO/039.png b/render_out/bob/COCO/039.png new file mode 100644 index 0000000..a02ab7f Binary files /dev/null and b/render_out/bob/COCO/039.png differ diff --git a/render_out/bob/COCO/040.png b/render_out/bob/COCO/040.png new file mode 100644 index 0000000..fa989ec Binary files /dev/null and b/render_out/bob/COCO/040.png differ diff --git a/render_out/bob/COCO/041.png b/render_out/bob/COCO/041.png new file mode 100644 index 0000000..fd6bd73 Binary files /dev/null and b/render_out/bob/COCO/041.png differ diff --git a/render_out/bob/COCO/042.png b/render_out/bob/COCO/042.png new file mode 100644 index 0000000..428af89 Binary files /dev/null and b/render_out/bob/COCO/042.png differ diff --git a/render_out/bob/COCO/043.png b/render_out/bob/COCO/043.png new file mode 100644 index 0000000..f0d5b7f Binary files /dev/null and b/render_out/bob/COCO/043.png differ diff --git a/render_out/bob/COCO/044.png b/render_out/bob/COCO/044.png new file mode 100644 index 0000000..241046c Binary files /dev/null and b/render_out/bob/COCO/044.png differ diff --git a/render_out/bob/COCO/045.png b/render_out/bob/COCO/045.png new file mode 100644 index 0000000..0065e08 Binary files /dev/null and b/render_out/bob/COCO/045.png differ diff --git a/render_out/bob/COCO/046.png b/render_out/bob/COCO/046.png new file mode 100644 index 0000000..a1e9553 Binary files /dev/null and b/render_out/bob/COCO/046.png differ diff --git a/render_out/bob/COCO/047.png b/render_out/bob/COCO/047.png new file mode 100644 index 0000000..4ffc3b2 Binary files /dev/null and b/render_out/bob/COCO/047.png differ diff --git a/render_out/bob/COCO/048.png b/render_out/bob/COCO/048.png new file mode 100644 index 0000000..6d12323 Binary files /dev/null and b/render_out/bob/COCO/048.png differ diff --git a/render_out/bob/COCO/049.png b/render_out/bob/COCO/049.png new file mode 100644 index 0000000..10c43d0 Binary files /dev/null and b/render_out/bob/COCO/049.png differ diff --git a/render_out/bob/COCO/050.png b/render_out/bob/COCO/050.png new file mode 100644 index 0000000..c959b33 Binary files /dev/null and b/render_out/bob/COCO/050.png differ diff --git a/render_out/bob/COCO/051.png b/render_out/bob/COCO/051.png new file mode 100644 index 0000000..dc3d634 Binary files /dev/null and b/render_out/bob/COCO/051.png differ diff --git a/render_out/bob/COCO/052.png b/render_out/bob/COCO/052.png new file mode 100644 index 0000000..ed7c95e Binary files /dev/null and b/render_out/bob/COCO/052.png differ diff --git a/render_out/bob/COCO/053.png b/render_out/bob/COCO/053.png new file mode 100644 index 0000000..8e41ccd Binary files /dev/null and b/render_out/bob/COCO/053.png differ diff --git a/render_out/bob/COCO/054.png b/render_out/bob/COCO/054.png new file mode 100644 index 0000000..332aa51 Binary files /dev/null and b/render_out/bob/COCO/054.png differ diff --git a/render_out/bob/COCO/055.png b/render_out/bob/COCO/055.png new file mode 100644 index 0000000..7a14f06 Binary files /dev/null and b/render_out/bob/COCO/055.png differ diff --git a/render_out/bob/COCO/056.png b/render_out/bob/COCO/056.png new file mode 100644 index 0000000..02a9adf Binary files /dev/null and b/render_out/bob/COCO/056.png differ diff --git a/render_out/bob/COCO/057.png b/render_out/bob/COCO/057.png new file mode 100644 index 0000000..df52f96 Binary files /dev/null and b/render_out/bob/COCO/057.png differ diff --git a/render_out/bob/COCO/058.png b/render_out/bob/COCO/058.png new file mode 100644 index 0000000..59ca667 Binary files /dev/null and b/render_out/bob/COCO/058.png differ diff --git a/render_out/bob/COCO/059.png b/render_out/bob/COCO/059.png new file mode 100644 index 0000000..b23896e Binary files /dev/null and b/render_out/bob/COCO/059.png differ diff --git a/render_out/bob/COCO/060.png b/render_out/bob/COCO/060.png new file mode 100644 index 0000000..5547730 Binary files /dev/null and b/render_out/bob/COCO/060.png differ diff --git a/render_out/bob/COCO/061.png b/render_out/bob/COCO/061.png new file mode 100644 index 0000000..2668bec Binary files /dev/null and b/render_out/bob/COCO/061.png differ diff --git a/render_out/bob/COCO/062.png b/render_out/bob/COCO/062.png new file mode 100644 index 0000000..ae385b9 Binary files /dev/null and b/render_out/bob/COCO/062.png differ diff --git a/render_out/bob/COCOPOPS/000.png b/render_out/bob/COCOPOPS/000.png new file mode 100644 index 0000000..a945bfa Binary files /dev/null and b/render_out/bob/COCOPOPS/000.png differ diff --git a/render_out/bob/COCOPOPS/001.png b/render_out/bob/COCOPOPS/001.png new file mode 100644 index 0000000..ac1c5b7 Binary files /dev/null and b/render_out/bob/COCOPOPS/001.png differ diff --git a/render_out/bob/COCOPOPS/002.png b/render_out/bob/COCOPOPS/002.png new file mode 100644 index 0000000..6a2e57c Binary files /dev/null and b/render_out/bob/COCOPOPS/002.png differ diff --git a/render_out/bob/COCOPOPS/003.png b/render_out/bob/COCOPOPS/003.png new file mode 100644 index 0000000..271540a Binary files /dev/null and b/render_out/bob/COCOPOPS/003.png differ diff --git a/render_out/bob/COCOPOPS/004.png b/render_out/bob/COCOPOPS/004.png new file mode 100644 index 0000000..014e27d Binary files /dev/null and b/render_out/bob/COCOPOPS/004.png differ diff --git a/render_out/bob/COCOPOPS/005.png b/render_out/bob/COCOPOPS/005.png new file mode 100644 index 0000000..335368d Binary files /dev/null and b/render_out/bob/COCOPOPS/005.png differ diff --git a/render_out/bob/COCOPOPS/006.png b/render_out/bob/COCOPOPS/006.png new file mode 100644 index 0000000..49b63e9 Binary files /dev/null and b/render_out/bob/COCOPOPS/006.png differ diff --git a/render_out/bob/COCOPOPS/007.png b/render_out/bob/COCOPOPS/007.png new file mode 100644 index 0000000..60cc036 Binary files /dev/null and b/render_out/bob/COCOPOPS/007.png differ diff --git a/render_out/bob/COCOPOPS/008.png b/render_out/bob/COCOPOPS/008.png new file mode 100644 index 0000000..14a99f2 Binary files /dev/null and b/render_out/bob/COCOPOPS/008.png differ diff --git a/render_out/bob/COCOPOPS_sheet.png b/render_out/bob/COCOPOPS_sheet.png new file mode 100644 index 0000000..18cae5a Binary files /dev/null and b/render_out/bob/COCOPOPS_sheet.png differ diff --git a/render_out/bob/COCO_sheet.png b/render_out/bob/COCO_sheet.png new file mode 100644 index 0000000..00fc529 Binary files /dev/null and b/render_out/bob/COCO_sheet.png differ diff --git a/render_out/bob/C_sheet.png b/render_out/bob/C_sheet.png new file mode 100644 index 0000000..367a980 Binary files /dev/null and b/render_out/bob/C_sheet.png differ diff --git a/render_out/bob/D/000.png b/render_out/bob/D/000.png new file mode 100644 index 0000000..19e9d6d Binary files /dev/null and b/render_out/bob/D/000.png differ diff --git a/render_out/bob/D/001.png b/render_out/bob/D/001.png new file mode 100644 index 0000000..b0761aa Binary files /dev/null and b/render_out/bob/D/001.png differ diff --git a/render_out/bob/D/002.png b/render_out/bob/D/002.png new file mode 100644 index 0000000..59a3377 Binary files /dev/null and b/render_out/bob/D/002.png differ diff --git a/render_out/bob/D/003.png b/render_out/bob/D/003.png new file mode 100644 index 0000000..077bc52 Binary files /dev/null and b/render_out/bob/D/003.png differ diff --git a/render_out/bob/D/004.png b/render_out/bob/D/004.png new file mode 100644 index 0000000..c96b0a2 Binary files /dev/null and b/render_out/bob/D/004.png differ diff --git a/render_out/bob/D/005.png b/render_out/bob/D/005.png new file mode 100644 index 0000000..a80dc47 Binary files /dev/null and b/render_out/bob/D/005.png differ diff --git a/render_out/bob/D/006.png b/render_out/bob/D/006.png new file mode 100644 index 0000000..25f94be Binary files /dev/null and b/render_out/bob/D/006.png differ diff --git a/render_out/bob/D/007.png b/render_out/bob/D/007.png new file mode 100644 index 0000000..cd3e547 Binary files /dev/null and b/render_out/bob/D/007.png differ diff --git a/render_out/bob/DOORS/000.png b/render_out/bob/DOORS/000.png new file mode 100644 index 0000000..368b5c1 Binary files /dev/null and b/render_out/bob/DOORS/000.png differ diff --git a/render_out/bob/DOORS/001.png b/render_out/bob/DOORS/001.png new file mode 100644 index 0000000..33953c3 Binary files /dev/null and b/render_out/bob/DOORS/001.png differ diff --git a/render_out/bob/DOORS/002.png b/render_out/bob/DOORS/002.png new file mode 100644 index 0000000..fd427b1 Binary files /dev/null and b/render_out/bob/DOORS/002.png differ diff --git a/render_out/bob/DOORS/003.png b/render_out/bob/DOORS/003.png new file mode 100644 index 0000000..c811f18 Binary files /dev/null and b/render_out/bob/DOORS/003.png differ diff --git a/render_out/bob/DOORS/004.png b/render_out/bob/DOORS/004.png new file mode 100644 index 0000000..d53565a Binary files /dev/null and b/render_out/bob/DOORS/004.png differ diff --git a/render_out/bob/DOORS/005.png b/render_out/bob/DOORS/005.png new file mode 100644 index 0000000..c040776 Binary files /dev/null and b/render_out/bob/DOORS/005.png differ diff --git a/render_out/bob/DOORS_sheet.png b/render_out/bob/DOORS_sheet.png new file mode 100644 index 0000000..31a9365 Binary files /dev/null and b/render_out/bob/DOORS_sheet.png differ diff --git a/render_out/bob/DRAGON/000.png b/render_out/bob/DRAGON/000.png new file mode 100644 index 0000000..87d7088 Binary files /dev/null and b/render_out/bob/DRAGON/000.png differ diff --git a/render_out/bob/DRAGON/001.png b/render_out/bob/DRAGON/001.png new file mode 100644 index 0000000..2d2a36e Binary files /dev/null and b/render_out/bob/DRAGON/001.png differ diff --git a/render_out/bob/DRAGON/002.png b/render_out/bob/DRAGON/002.png new file mode 100644 index 0000000..6652a44 Binary files /dev/null and b/render_out/bob/DRAGON/002.png differ diff --git a/render_out/bob/DRAGON/003.png b/render_out/bob/DRAGON/003.png new file mode 100644 index 0000000..2a6774b Binary files /dev/null and b/render_out/bob/DRAGON/003.png differ diff --git a/render_out/bob/DRAGON/004.png b/render_out/bob/DRAGON/004.png new file mode 100644 index 0000000..e354904 Binary files /dev/null and b/render_out/bob/DRAGON/004.png differ diff --git a/render_out/bob/DRAGON/005.png b/render_out/bob/DRAGON/005.png new file mode 100644 index 0000000..65d246c Binary files /dev/null and b/render_out/bob/DRAGON/005.png differ diff --git a/render_out/bob/DRAGON/006.png b/render_out/bob/DRAGON/006.png new file mode 100644 index 0000000..ac46b8a Binary files /dev/null and b/render_out/bob/DRAGON/006.png differ diff --git a/render_out/bob/DRAGON/007.png b/render_out/bob/DRAGON/007.png new file mode 100644 index 0000000..84e4cbb Binary files /dev/null and b/render_out/bob/DRAGON/007.png differ diff --git a/render_out/bob/DRAGON/008.png b/render_out/bob/DRAGON/008.png new file mode 100644 index 0000000..ad4c388 Binary files /dev/null and b/render_out/bob/DRAGON/008.png differ diff --git a/render_out/bob/DRAGON/009.png b/render_out/bob/DRAGON/009.png new file mode 100644 index 0000000..dc2509f Binary files /dev/null and b/render_out/bob/DRAGON/009.png differ diff --git a/render_out/bob/DRAGON/010.png b/render_out/bob/DRAGON/010.png new file mode 100644 index 0000000..af57d09 Binary files /dev/null and b/render_out/bob/DRAGON/010.png differ diff --git a/render_out/bob/DRAGON/011.png b/render_out/bob/DRAGON/011.png new file mode 100644 index 0000000..9243902 Binary files /dev/null and b/render_out/bob/DRAGON/011.png differ diff --git a/render_out/bob/DRAGON/012.png b/render_out/bob/DRAGON/012.png new file mode 100644 index 0000000..d5e0672 Binary files /dev/null and b/render_out/bob/DRAGON/012.png differ diff --git a/render_out/bob/DRAGON/013.png b/render_out/bob/DRAGON/013.png new file mode 100644 index 0000000..f54cab3 Binary files /dev/null and b/render_out/bob/DRAGON/013.png differ diff --git a/render_out/bob/DRAGON/014.png b/render_out/bob/DRAGON/014.png new file mode 100644 index 0000000..af88fdf Binary files /dev/null and b/render_out/bob/DRAGON/014.png differ diff --git a/render_out/bob/DRAGON/015.png b/render_out/bob/DRAGON/015.png new file mode 100644 index 0000000..f7ebf5f Binary files /dev/null and b/render_out/bob/DRAGON/015.png differ diff --git a/render_out/bob/DRAGON/016.png b/render_out/bob/DRAGON/016.png new file mode 100644 index 0000000..ffd4430 Binary files /dev/null and b/render_out/bob/DRAGON/016.png differ diff --git a/render_out/bob/DRAGON/017.png b/render_out/bob/DRAGON/017.png new file mode 100644 index 0000000..b0f9e5d Binary files /dev/null and b/render_out/bob/DRAGON/017.png differ diff --git a/render_out/bob/DRAGON/018.png b/render_out/bob/DRAGON/018.png new file mode 100644 index 0000000..6411720 Binary files /dev/null and b/render_out/bob/DRAGON/018.png differ diff --git a/render_out/bob/DRAGON/019.png b/render_out/bob/DRAGON/019.png new file mode 100644 index 0000000..0a3e7c5 Binary files /dev/null and b/render_out/bob/DRAGON/019.png differ diff --git a/render_out/bob/DRAGON/020.png b/render_out/bob/DRAGON/020.png new file mode 100644 index 0000000..f4d3af8 Binary files /dev/null and b/render_out/bob/DRAGON/020.png differ diff --git a/render_out/bob/DRAGON/021.png b/render_out/bob/DRAGON/021.png new file mode 100644 index 0000000..5406e1a Binary files /dev/null and b/render_out/bob/DRAGON/021.png differ diff --git a/render_out/bob/DRAGON/022.png b/render_out/bob/DRAGON/022.png new file mode 100644 index 0000000..cfbab30 Binary files /dev/null and b/render_out/bob/DRAGON/022.png differ diff --git a/render_out/bob/DRAGON/023.png b/render_out/bob/DRAGON/023.png new file mode 100644 index 0000000..0119812 Binary files /dev/null and b/render_out/bob/DRAGON/023.png differ diff --git a/render_out/bob/DRAGON/024.png b/render_out/bob/DRAGON/024.png new file mode 100644 index 0000000..91c1be6 Binary files /dev/null and b/render_out/bob/DRAGON/024.png differ diff --git a/render_out/bob/DRAGON/025.png b/render_out/bob/DRAGON/025.png new file mode 100644 index 0000000..aaa2279 Binary files /dev/null and b/render_out/bob/DRAGON/025.png differ diff --git a/render_out/bob/DRAGON/026.png b/render_out/bob/DRAGON/026.png new file mode 100644 index 0000000..af623aa Binary files /dev/null and b/render_out/bob/DRAGON/026.png differ diff --git a/render_out/bob/DRAGON/027.png b/render_out/bob/DRAGON/027.png new file mode 100644 index 0000000..5c745ec Binary files /dev/null and b/render_out/bob/DRAGON/027.png differ diff --git a/render_out/bob/DRAGON/028.png b/render_out/bob/DRAGON/028.png new file mode 100644 index 0000000..563e597 Binary files /dev/null and b/render_out/bob/DRAGON/028.png differ diff --git a/render_out/bob/DRAGON_sheet.png b/render_out/bob/DRAGON_sheet.png new file mode 100644 index 0000000..2074dfb Binary files /dev/null and b/render_out/bob/DRAGON_sheet.png differ diff --git a/render_out/bob/D_sheet.png b/render_out/bob/D_sheet.png new file mode 100644 index 0000000..1abae3f Binary files /dev/null and b/render_out/bob/D_sheet.png differ diff --git a/render_out/bob/E/000.png b/render_out/bob/E/000.png new file mode 100644 index 0000000..57e2bd5 Binary files /dev/null and b/render_out/bob/E/000.png differ diff --git a/render_out/bob/E/001.png b/render_out/bob/E/001.png new file mode 100644 index 0000000..e47cc01 Binary files /dev/null and b/render_out/bob/E/001.png differ diff --git a/render_out/bob/E_sheet.png b/render_out/bob/E_sheet.png new file mode 100644 index 0000000..fc84668 Binary files /dev/null and b/render_out/bob/E_sheet.png differ diff --git a/render_out/bob/F/000.png b/render_out/bob/F/000.png new file mode 100644 index 0000000..12e4856 Binary files /dev/null and b/render_out/bob/F/000.png differ diff --git a/render_out/bob/F/001.png b/render_out/bob/F/001.png new file mode 100644 index 0000000..b2c6bb2 Binary files /dev/null and b/render_out/bob/F/001.png differ diff --git a/render_out/bob/F/002.png b/render_out/bob/F/002.png new file mode 100644 index 0000000..006d5a9 Binary files /dev/null and b/render_out/bob/F/002.png differ diff --git a/render_out/bob/F/003.png b/render_out/bob/F/003.png new file mode 100644 index 0000000..93389e1 Binary files /dev/null and b/render_out/bob/F/003.png differ diff --git a/render_out/bob/F/004.png b/render_out/bob/F/004.png new file mode 100644 index 0000000..4f63ae1 Binary files /dev/null and b/render_out/bob/F/004.png differ diff --git a/render_out/bob/F/005.png b/render_out/bob/F/005.png new file mode 100644 index 0000000..837cd2f Binary files /dev/null and b/render_out/bob/F/005.png differ diff --git a/render_out/bob/F/006.png b/render_out/bob/F/006.png new file mode 100644 index 0000000..92f1257 Binary files /dev/null and b/render_out/bob/F/006.png differ diff --git a/render_out/bob/F/007.png b/render_out/bob/F/007.png new file mode 100644 index 0000000..c005819 Binary files /dev/null and b/render_out/bob/F/007.png differ diff --git a/render_out/bob/F/008.png b/render_out/bob/F/008.png new file mode 100644 index 0000000..1891333 Binary files /dev/null and b/render_out/bob/F/008.png differ diff --git a/render_out/bob/F/009.png b/render_out/bob/F/009.png new file mode 100644 index 0000000..858f2e8 Binary files /dev/null and b/render_out/bob/F/009.png differ diff --git a/render_out/bob/F/010.png b/render_out/bob/F/010.png new file mode 100644 index 0000000..a3a2b47 Binary files /dev/null and b/render_out/bob/F/010.png differ diff --git a/render_out/bob/F/011.png b/render_out/bob/F/011.png new file mode 100644 index 0000000..693b6c3 Binary files /dev/null and b/render_out/bob/F/011.png differ diff --git a/render_out/bob/F/012.png b/render_out/bob/F/012.png new file mode 100644 index 0000000..91ca94f Binary files /dev/null and b/render_out/bob/F/012.png differ diff --git a/render_out/bob/F/013.png b/render_out/bob/F/013.png new file mode 100644 index 0000000..ee12a19 Binary files /dev/null and b/render_out/bob/F/013.png differ diff --git a/render_out/bob/F/014.png b/render_out/bob/F/014.png new file mode 100644 index 0000000..90ac8ea Binary files /dev/null and b/render_out/bob/F/014.png differ diff --git a/render_out/bob/F/015.png b/render_out/bob/F/015.png new file mode 100644 index 0000000..51d1529 Binary files /dev/null and b/render_out/bob/F/015.png differ diff --git a/render_out/bob/FROSTIES/000.png b/render_out/bob/FROSTIES/000.png new file mode 100644 index 0000000..5326d3f Binary files /dev/null and b/render_out/bob/FROSTIES/000.png differ diff --git a/render_out/bob/FROSTIES/001.png b/render_out/bob/FROSTIES/001.png new file mode 100644 index 0000000..ba0e86e Binary files /dev/null and b/render_out/bob/FROSTIES/001.png differ diff --git a/render_out/bob/FROSTIES/002.png b/render_out/bob/FROSTIES/002.png new file mode 100644 index 0000000..360ca75 Binary files /dev/null and b/render_out/bob/FROSTIES/002.png differ diff --git a/render_out/bob/FROSTIES/003.png b/render_out/bob/FROSTIES/003.png new file mode 100644 index 0000000..b2cedd4 Binary files /dev/null and b/render_out/bob/FROSTIES/003.png differ diff --git a/render_out/bob/FROSTIES/004.png b/render_out/bob/FROSTIES/004.png new file mode 100644 index 0000000..39c9dcf Binary files /dev/null and b/render_out/bob/FROSTIES/004.png differ diff --git a/render_out/bob/FROSTIES/005.png b/render_out/bob/FROSTIES/005.png new file mode 100644 index 0000000..bc9c5da Binary files /dev/null and b/render_out/bob/FROSTIES/005.png differ diff --git a/render_out/bob/FROSTIES/006.png b/render_out/bob/FROSTIES/006.png new file mode 100644 index 0000000..52f8088 Binary files /dev/null and b/render_out/bob/FROSTIES/006.png differ diff --git a/render_out/bob/FROSTIES/007.png b/render_out/bob/FROSTIES/007.png new file mode 100644 index 0000000..7c6aed3 Binary files /dev/null and b/render_out/bob/FROSTIES/007.png differ diff --git a/render_out/bob/FROSTIES/008.png b/render_out/bob/FROSTIES/008.png new file mode 100644 index 0000000..a2aac8b Binary files /dev/null and b/render_out/bob/FROSTIES/008.png differ diff --git a/render_out/bob/FROSTIES_sheet.png b/render_out/bob/FROSTIES_sheet.png new file mode 100644 index 0000000..eeb574c Binary files /dev/null and b/render_out/bob/FROSTIES_sheet.png differ diff --git a/render_out/bob/F_sheet.png b/render_out/bob/F_sheet.png new file mode 100644 index 0000000..2e27ec7 Binary files /dev/null and b/render_out/bob/F_sheet.png differ diff --git a/render_out/bob/G/000.png b/render_out/bob/G/000.png new file mode 100644 index 0000000..f2c056e Binary files /dev/null and b/render_out/bob/G/000.png differ diff --git a/render_out/bob/G/001.png b/render_out/bob/G/001.png new file mode 100644 index 0000000..8f62e5a Binary files /dev/null and b/render_out/bob/G/001.png differ diff --git a/render_out/bob/G/002.png b/render_out/bob/G/002.png new file mode 100644 index 0000000..0eeef7d Binary files /dev/null and b/render_out/bob/G/002.png differ diff --git a/render_out/bob/G/003.png b/render_out/bob/G/003.png new file mode 100644 index 0000000..96d916d Binary files /dev/null and b/render_out/bob/G/003.png differ diff --git a/render_out/bob/G/004.png b/render_out/bob/G/004.png new file mode 100644 index 0000000..063712d Binary files /dev/null and b/render_out/bob/G/004.png differ diff --git a/render_out/bob/G/005.png b/render_out/bob/G/005.png new file mode 100644 index 0000000..e3a9e32 Binary files /dev/null and b/render_out/bob/G/005.png differ diff --git a/render_out/bob/G/006.png b/render_out/bob/G/006.png new file mode 100644 index 0000000..9db0949 Binary files /dev/null and b/render_out/bob/G/006.png differ diff --git a/render_out/bob/G/007.png b/render_out/bob/G/007.png new file mode 100644 index 0000000..cdc948f Binary files /dev/null and b/render_out/bob/G/007.png differ diff --git a/render_out/bob/G/008.png b/render_out/bob/G/008.png new file mode 100644 index 0000000..5467e5d Binary files /dev/null and b/render_out/bob/G/008.png differ diff --git a/render_out/bob/G/009.png b/render_out/bob/G/009.png new file mode 100644 index 0000000..a3c60ed Binary files /dev/null and b/render_out/bob/G/009.png differ diff --git a/render_out/bob/G/010.png b/render_out/bob/G/010.png new file mode 100644 index 0000000..3eed583 Binary files /dev/null and b/render_out/bob/G/010.png differ diff --git a/render_out/bob/G/011.png b/render_out/bob/G/011.png new file mode 100644 index 0000000..af37575 Binary files /dev/null and b/render_out/bob/G/011.png differ diff --git a/render_out/bob/G/012.png b/render_out/bob/G/012.png new file mode 100644 index 0000000..d43a648 Binary files /dev/null and b/render_out/bob/G/012.png differ diff --git a/render_out/bob/G/013.png b/render_out/bob/G/013.png new file mode 100644 index 0000000..3dd6c52 Binary files /dev/null and b/render_out/bob/G/013.png differ diff --git a/render_out/bob/GAMEBAR/000.png b/render_out/bob/GAMEBAR/000.png new file mode 100644 index 0000000..0f4130c Binary files /dev/null and b/render_out/bob/GAMEBAR/000.png differ diff --git a/render_out/bob/GAMEBAR/001.png b/render_out/bob/GAMEBAR/001.png new file mode 100644 index 0000000..2b1d764 Binary files /dev/null and b/render_out/bob/GAMEBAR/001.png differ diff --git a/render_out/bob/GAMEBAR/002.png b/render_out/bob/GAMEBAR/002.png new file mode 100644 index 0000000..c4a1f87 Binary files /dev/null and b/render_out/bob/GAMEBAR/002.png differ diff --git a/render_out/bob/GAMEBAR/003.png b/render_out/bob/GAMEBAR/003.png new file mode 100644 index 0000000..d31ee9c Binary files /dev/null and b/render_out/bob/GAMEBAR/003.png differ diff --git a/render_out/bob/GAMEBAR/004.png b/render_out/bob/GAMEBAR/004.png new file mode 100644 index 0000000..b8421e5 Binary files /dev/null and b/render_out/bob/GAMEBAR/004.png differ diff --git a/render_out/bob/GAMEBAR/005.png b/render_out/bob/GAMEBAR/005.png new file mode 100644 index 0000000..e24105e Binary files /dev/null and b/render_out/bob/GAMEBAR/005.png differ diff --git a/render_out/bob/GAMEBAR/006.png b/render_out/bob/GAMEBAR/006.png new file mode 100644 index 0000000..c72fe93 Binary files /dev/null and b/render_out/bob/GAMEBAR/006.png differ diff --git a/render_out/bob/GAMEBAR/007.png b/render_out/bob/GAMEBAR/007.png new file mode 100644 index 0000000..8743553 Binary files /dev/null and b/render_out/bob/GAMEBAR/007.png differ diff --git a/render_out/bob/GAMEBAR/008.png b/render_out/bob/GAMEBAR/008.png new file mode 100644 index 0000000..31196d7 Binary files /dev/null and b/render_out/bob/GAMEBAR/008.png differ diff --git a/render_out/bob/GAMEBAR/009.png b/render_out/bob/GAMEBAR/009.png new file mode 100644 index 0000000..1f77969 Binary files /dev/null and b/render_out/bob/GAMEBAR/009.png differ diff --git a/render_out/bob/GAMEBAR/010.png b/render_out/bob/GAMEBAR/010.png new file mode 100644 index 0000000..0026358 Binary files /dev/null and b/render_out/bob/GAMEBAR/010.png differ diff --git a/render_out/bob/GAMEBAR/011.png b/render_out/bob/GAMEBAR/011.png new file mode 100644 index 0000000..62c025e Binary files /dev/null and b/render_out/bob/GAMEBAR/011.png differ diff --git a/render_out/bob/GAMEBAR/012.png b/render_out/bob/GAMEBAR/012.png new file mode 100644 index 0000000..ce542ed Binary files /dev/null and b/render_out/bob/GAMEBAR/012.png differ diff --git a/render_out/bob/GAMEBAR/013.png b/render_out/bob/GAMEBAR/013.png new file mode 100644 index 0000000..ad75d3c Binary files /dev/null and b/render_out/bob/GAMEBAR/013.png differ diff --git a/render_out/bob/GAMEBAR/014.png b/render_out/bob/GAMEBAR/014.png new file mode 100644 index 0000000..8d6a375 Binary files /dev/null and b/render_out/bob/GAMEBAR/014.png differ diff --git a/render_out/bob/GAMEBAR/015.png b/render_out/bob/GAMEBAR/015.png new file mode 100644 index 0000000..8b68091 Binary files /dev/null and b/render_out/bob/GAMEBAR/015.png differ diff --git a/render_out/bob/GAMEBAR/016.png b/render_out/bob/GAMEBAR/016.png new file mode 100644 index 0000000..64b11fe Binary files /dev/null and b/render_out/bob/GAMEBAR/016.png differ diff --git a/render_out/bob/GAMEBAR_sheet.png b/render_out/bob/GAMEBAR_sheet.png new file mode 100644 index 0000000..72642e2 Binary files /dev/null and b/render_out/bob/GAMEBAR_sheet.png differ diff --git a/render_out/bob/G_sheet.png b/render_out/bob/G_sheet.png new file mode 100644 index 0000000..7edf15c Binary files /dev/null and b/render_out/bob/G_sheet.png differ diff --git a/render_out/bob/H/000.png b/render_out/bob/H/000.png new file mode 100644 index 0000000..8737542 Binary files /dev/null and b/render_out/bob/H/000.png differ diff --git a/render_out/bob/H/001.png b/render_out/bob/H/001.png new file mode 100644 index 0000000..0972d1f Binary files /dev/null and b/render_out/bob/H/001.png differ diff --git a/render_out/bob/H/002.png b/render_out/bob/H/002.png new file mode 100644 index 0000000..4d83bf7 Binary files /dev/null and b/render_out/bob/H/002.png differ diff --git a/render_out/bob/H/003.png b/render_out/bob/H/003.png new file mode 100644 index 0000000..3cea57e Binary files /dev/null and b/render_out/bob/H/003.png differ diff --git a/render_out/bob/H/004.png b/render_out/bob/H/004.png new file mode 100644 index 0000000..5873f76 Binary files /dev/null and b/render_out/bob/H/004.png differ diff --git a/render_out/bob/H/005.png b/render_out/bob/H/005.png new file mode 100644 index 0000000..bdf7665 Binary files /dev/null and b/render_out/bob/H/005.png differ diff --git a/render_out/bob/H/006.png b/render_out/bob/H/006.png new file mode 100644 index 0000000..43b844d Binary files /dev/null and b/render_out/bob/H/006.png differ diff --git a/render_out/bob/H/007.png b/render_out/bob/H/007.png new file mode 100644 index 0000000..4b285e5 Binary files /dev/null and b/render_out/bob/H/007.png differ diff --git a/render_out/bob/H_sheet.png b/render_out/bob/H_sheet.png new file mode 100644 index 0000000..ee2bad1 Binary files /dev/null and b/render_out/bob/H_sheet.png differ diff --git a/render_out/bob/I/000.png b/render_out/bob/I/000.png new file mode 100644 index 0000000..a226c14 Binary files /dev/null and b/render_out/bob/I/000.png differ diff --git a/render_out/bob/I/001.png b/render_out/bob/I/001.png new file mode 100644 index 0000000..c429963 Binary files /dev/null and b/render_out/bob/I/001.png differ diff --git a/render_out/bob/I/002.png b/render_out/bob/I/002.png new file mode 100644 index 0000000..f7d11c3 Binary files /dev/null and b/render_out/bob/I/002.png differ diff --git a/render_out/bob/I/003.png b/render_out/bob/I/003.png new file mode 100644 index 0000000..fd0dff0 Binary files /dev/null and b/render_out/bob/I/003.png differ diff --git a/render_out/bob/I/004.png b/render_out/bob/I/004.png new file mode 100644 index 0000000..219e8ba Binary files /dev/null and b/render_out/bob/I/004.png differ diff --git a/render_out/bob/I/005.png b/render_out/bob/I/005.png new file mode 100644 index 0000000..74600d3 Binary files /dev/null and b/render_out/bob/I/005.png differ diff --git a/render_out/bob/I/006.png b/render_out/bob/I/006.png new file mode 100644 index 0000000..41e23a4 Binary files /dev/null and b/render_out/bob/I/006.png differ diff --git a/render_out/bob/I_sheet.png b/render_out/bob/I_sheet.png new file mode 100644 index 0000000..8d65322 Binary files /dev/null and b/render_out/bob/I_sheet.png differ diff --git a/render_out/bob/J/000.png b/render_out/bob/J/000.png new file mode 100644 index 0000000..8106148 Binary files /dev/null and b/render_out/bob/J/000.png differ diff --git a/render_out/bob/J/001.png b/render_out/bob/J/001.png new file mode 100644 index 0000000..340288a Binary files /dev/null and b/render_out/bob/J/001.png differ diff --git a/render_out/bob/J_sheet.png b/render_out/bob/J_sheet.png new file mode 100644 index 0000000..9720ed3 Binary files /dev/null and b/render_out/bob/J_sheet.png differ diff --git a/render_out/bob/K/000.png b/render_out/bob/K/000.png new file mode 100644 index 0000000..e240b4e Binary files /dev/null and b/render_out/bob/K/000.png differ diff --git a/render_out/bob/K/001.png b/render_out/bob/K/001.png new file mode 100644 index 0000000..060e8ea Binary files /dev/null and b/render_out/bob/K/001.png differ diff --git a/render_out/bob/KEYS/000.png b/render_out/bob/KEYS/000.png new file mode 100644 index 0000000..80f3106 Binary files /dev/null and b/render_out/bob/KEYS/000.png differ diff --git a/render_out/bob/KEYS/001.png b/render_out/bob/KEYS/001.png new file mode 100644 index 0000000..6cb292a Binary files /dev/null and b/render_out/bob/KEYS/001.png differ diff --git a/render_out/bob/KEYS/002.png b/render_out/bob/KEYS/002.png new file mode 100644 index 0000000..9fc5d5a Binary files /dev/null and b/render_out/bob/KEYS/002.png differ diff --git a/render_out/bob/KEYS/003.png b/render_out/bob/KEYS/003.png new file mode 100644 index 0000000..a1135bb Binary files /dev/null and b/render_out/bob/KEYS/003.png differ diff --git a/render_out/bob/KEYS_sheet.png b/render_out/bob/KEYS_sheet.png new file mode 100644 index 0000000..2a1c557 Binary files /dev/null and b/render_out/bob/KEYS_sheet.png differ diff --git a/render_out/bob/KROKO/000.png b/render_out/bob/KROKO/000.png new file mode 100644 index 0000000..d49726d Binary files /dev/null and b/render_out/bob/KROKO/000.png differ diff --git a/render_out/bob/KROKO/001.png b/render_out/bob/KROKO/001.png new file mode 100644 index 0000000..ad68b8d Binary files /dev/null and b/render_out/bob/KROKO/001.png differ diff --git a/render_out/bob/KROKO/002.png b/render_out/bob/KROKO/002.png new file mode 100644 index 0000000..efd0e67 Binary files /dev/null and b/render_out/bob/KROKO/002.png differ diff --git a/render_out/bob/KROKO/003.png b/render_out/bob/KROKO/003.png new file mode 100644 index 0000000..7bbc645 Binary files /dev/null and b/render_out/bob/KROKO/003.png differ diff --git a/render_out/bob/KROKO/004.png b/render_out/bob/KROKO/004.png new file mode 100644 index 0000000..d167608 Binary files /dev/null and b/render_out/bob/KROKO/004.png differ diff --git a/render_out/bob/KROKO/005.png b/render_out/bob/KROKO/005.png new file mode 100644 index 0000000..5913753 Binary files /dev/null and b/render_out/bob/KROKO/005.png differ diff --git a/render_out/bob/KROKO/006.png b/render_out/bob/KROKO/006.png new file mode 100644 index 0000000..c777468 Binary files /dev/null and b/render_out/bob/KROKO/006.png differ diff --git a/render_out/bob/KROKO/007.png b/render_out/bob/KROKO/007.png new file mode 100644 index 0000000..4965f90 Binary files /dev/null and b/render_out/bob/KROKO/007.png differ diff --git a/render_out/bob/KROKO/008.png b/render_out/bob/KROKO/008.png new file mode 100644 index 0000000..0eaa314 Binary files /dev/null and b/render_out/bob/KROKO/008.png differ diff --git a/render_out/bob/KROKO/009.png b/render_out/bob/KROKO/009.png new file mode 100644 index 0000000..654a6b1 Binary files /dev/null and b/render_out/bob/KROKO/009.png differ diff --git a/render_out/bob/KROKO/010.png b/render_out/bob/KROKO/010.png new file mode 100644 index 0000000..3fa9745 Binary files /dev/null and b/render_out/bob/KROKO/010.png differ diff --git a/render_out/bob/KROKO/011.png b/render_out/bob/KROKO/011.png new file mode 100644 index 0000000..7d34efe Binary files /dev/null and b/render_out/bob/KROKO/011.png differ diff --git a/render_out/bob/KROKO/012.png b/render_out/bob/KROKO/012.png new file mode 100644 index 0000000..707474a Binary files /dev/null and b/render_out/bob/KROKO/012.png differ diff --git a/render_out/bob/KROKO/013.png b/render_out/bob/KROKO/013.png new file mode 100644 index 0000000..09e38b0 Binary files /dev/null and b/render_out/bob/KROKO/013.png differ diff --git a/render_out/bob/KROKO/014.png b/render_out/bob/KROKO/014.png new file mode 100644 index 0000000..e4b1043 Binary files /dev/null and b/render_out/bob/KROKO/014.png differ diff --git a/render_out/bob/KROKO/015.png b/render_out/bob/KROKO/015.png new file mode 100644 index 0000000..89c5baa Binary files /dev/null and b/render_out/bob/KROKO/015.png differ diff --git a/render_out/bob/KROKO/016.png b/render_out/bob/KROKO/016.png new file mode 100644 index 0000000..7a12b7b Binary files /dev/null and b/render_out/bob/KROKO/016.png differ diff --git a/render_out/bob/KROKO/017.png b/render_out/bob/KROKO/017.png new file mode 100644 index 0000000..7f1a319 Binary files /dev/null and b/render_out/bob/KROKO/017.png differ diff --git a/render_out/bob/KROKO/018.png b/render_out/bob/KROKO/018.png new file mode 100644 index 0000000..190a32c Binary files /dev/null and b/render_out/bob/KROKO/018.png differ diff --git a/render_out/bob/KROKO/019.png b/render_out/bob/KROKO/019.png new file mode 100644 index 0000000..ace37a2 Binary files /dev/null and b/render_out/bob/KROKO/019.png differ diff --git a/render_out/bob/KROKO/020.png b/render_out/bob/KROKO/020.png new file mode 100644 index 0000000..3284c03 Binary files /dev/null and b/render_out/bob/KROKO/020.png differ diff --git a/render_out/bob/KROKO/021.png b/render_out/bob/KROKO/021.png new file mode 100644 index 0000000..df1f994 Binary files /dev/null and b/render_out/bob/KROKO/021.png differ diff --git a/render_out/bob/KROKO/022.png b/render_out/bob/KROKO/022.png new file mode 100644 index 0000000..0dfd9a6 Binary files /dev/null and b/render_out/bob/KROKO/022.png differ diff --git a/render_out/bob/KROKO/023.png b/render_out/bob/KROKO/023.png new file mode 100644 index 0000000..802120d Binary files /dev/null and b/render_out/bob/KROKO/023.png differ diff --git a/render_out/bob/KROKO_sheet.png b/render_out/bob/KROKO_sheet.png new file mode 100644 index 0000000..3b63473 Binary files /dev/null and b/render_out/bob/KROKO_sheet.png differ diff --git a/render_out/bob/K_sheet.png b/render_out/bob/K_sheet.png new file mode 100644 index 0000000..5969af1 Binary files /dev/null and b/render_out/bob/K_sheet.png differ diff --git a/render_out/bob/L/000.png b/render_out/bob/L/000.png new file mode 100644 index 0000000..5dec0f8 Binary files /dev/null and b/render_out/bob/L/000.png differ diff --git a/render_out/bob/L/001.png b/render_out/bob/L/001.png new file mode 100644 index 0000000..cd8a128 Binary files /dev/null and b/render_out/bob/L/001.png differ diff --git a/render_out/bob/L/002.png b/render_out/bob/L/002.png new file mode 100644 index 0000000..80df3f9 Binary files /dev/null and b/render_out/bob/L/002.png differ diff --git a/render_out/bob/LOOPS/000.png b/render_out/bob/LOOPS/000.png new file mode 100644 index 0000000..4353ed2 Binary files /dev/null and b/render_out/bob/LOOPS/000.png differ diff --git a/render_out/bob/LOOPS/001.png b/render_out/bob/LOOPS/001.png new file mode 100644 index 0000000..010a808 Binary files /dev/null and b/render_out/bob/LOOPS/001.png differ diff --git a/render_out/bob/LOOPS/002.png b/render_out/bob/LOOPS/002.png new file mode 100644 index 0000000..7493047 Binary files /dev/null and b/render_out/bob/LOOPS/002.png differ diff --git a/render_out/bob/LOOPS/003.png b/render_out/bob/LOOPS/003.png new file mode 100644 index 0000000..d4c080e Binary files /dev/null and b/render_out/bob/LOOPS/003.png differ diff --git a/render_out/bob/LOOPS/004.png b/render_out/bob/LOOPS/004.png new file mode 100644 index 0000000..3863fb7 Binary files /dev/null and b/render_out/bob/LOOPS/004.png differ diff --git a/render_out/bob/LOOPS/005.png b/render_out/bob/LOOPS/005.png new file mode 100644 index 0000000..a22e959 Binary files /dev/null and b/render_out/bob/LOOPS/005.png differ diff --git a/render_out/bob/LOOPS/006.png b/render_out/bob/LOOPS/006.png new file mode 100644 index 0000000..f0f3440 Binary files /dev/null and b/render_out/bob/LOOPS/006.png differ diff --git a/render_out/bob/LOOPS/007.png b/render_out/bob/LOOPS/007.png new file mode 100644 index 0000000..bd0aed6 Binary files /dev/null and b/render_out/bob/LOOPS/007.png differ diff --git a/render_out/bob/LOOPS/008.png b/render_out/bob/LOOPS/008.png new file mode 100644 index 0000000..4b4dffd Binary files /dev/null and b/render_out/bob/LOOPS/008.png differ diff --git a/render_out/bob/LOOPS_sheet.png b/render_out/bob/LOOPS_sheet.png new file mode 100644 index 0000000..2ea456f Binary files /dev/null and b/render_out/bob/LOOPS_sheet.png differ diff --git a/render_out/bob/L_sheet.png b/render_out/bob/L_sheet.png new file mode 100644 index 0000000..5796708 Binary files /dev/null and b/render_out/bob/L_sheet.png differ diff --git a/render_out/bob/N/000.png b/render_out/bob/N/000.png new file mode 100644 index 0000000..ff4bb68 Binary files /dev/null and b/render_out/bob/N/000.png differ diff --git a/render_out/bob/N_sheet.png b/render_out/bob/N_sheet.png new file mode 100644 index 0000000..7167005 Binary files /dev/null and b/render_out/bob/N_sheet.png differ diff --git a/render_out/bob/O/000.png b/render_out/bob/O/000.png new file mode 100644 index 0000000..55129eb Binary files /dev/null and b/render_out/bob/O/000.png differ diff --git a/render_out/bob/O/001.png b/render_out/bob/O/001.png new file mode 100644 index 0000000..b8bc793 Binary files /dev/null and b/render_out/bob/O/001.png differ diff --git a/render_out/bob/O_sheet.png b/render_out/bob/O_sheet.png new file mode 100644 index 0000000..a6a4f30 Binary files /dev/null and b/render_out/bob/O_sheet.png differ diff --git a/render_out/bob/PLATFW1/000.png b/render_out/bob/PLATFW1/000.png new file mode 100644 index 0000000..988185d Binary files /dev/null and b/render_out/bob/PLATFW1/000.png differ diff --git a/render_out/bob/PLATFW1/001.png b/render_out/bob/PLATFW1/001.png new file mode 100644 index 0000000..21fff84 Binary files /dev/null and b/render_out/bob/PLATFW1/001.png differ diff --git a/render_out/bob/PLATFW1/002.png b/render_out/bob/PLATFW1/002.png new file mode 100644 index 0000000..99dac35 Binary files /dev/null and b/render_out/bob/PLATFW1/002.png differ diff --git a/render_out/bob/PLATFW1/003.png b/render_out/bob/PLATFW1/003.png new file mode 100644 index 0000000..180194c Binary files /dev/null and b/render_out/bob/PLATFW1/003.png differ diff --git a/render_out/bob/PLATFW1/004.png b/render_out/bob/PLATFW1/004.png new file mode 100644 index 0000000..ad14abf Binary files /dev/null and b/render_out/bob/PLATFW1/004.png differ diff --git a/render_out/bob/PLATFW1/005.png b/render_out/bob/PLATFW1/005.png new file mode 100644 index 0000000..cc5b770 Binary files /dev/null and b/render_out/bob/PLATFW1/005.png differ diff --git a/render_out/bob/PLATFW1_sheet.png b/render_out/bob/PLATFW1_sheet.png new file mode 100644 index 0000000..da7c702 Binary files /dev/null and b/render_out/bob/PLATFW1_sheet.png differ diff --git a/render_out/bob/SMACKIES/000.png b/render_out/bob/SMACKIES/000.png new file mode 100644 index 0000000..0f647a3 Binary files /dev/null and b/render_out/bob/SMACKIES/000.png differ diff --git a/render_out/bob/SMACKIES/001.png b/render_out/bob/SMACKIES/001.png new file mode 100644 index 0000000..9a61833 Binary files /dev/null and b/render_out/bob/SMACKIES/001.png differ diff --git a/render_out/bob/SMACKIES/002.png b/render_out/bob/SMACKIES/002.png new file mode 100644 index 0000000..c601f88 Binary files /dev/null and b/render_out/bob/SMACKIES/002.png differ diff --git a/render_out/bob/SMACKIES/003.png b/render_out/bob/SMACKIES/003.png new file mode 100644 index 0000000..ead6923 Binary files /dev/null and b/render_out/bob/SMACKIES/003.png differ diff --git a/render_out/bob/SMACKIES/004.png b/render_out/bob/SMACKIES/004.png new file mode 100644 index 0000000..94247fe Binary files /dev/null and b/render_out/bob/SMACKIES/004.png differ diff --git a/render_out/bob/SMACKIES/005.png b/render_out/bob/SMACKIES/005.png new file mode 100644 index 0000000..4869214 Binary files /dev/null and b/render_out/bob/SMACKIES/005.png differ diff --git a/render_out/bob/SMACKIES/006.png b/render_out/bob/SMACKIES/006.png new file mode 100644 index 0000000..03f38f2 Binary files /dev/null and b/render_out/bob/SMACKIES/006.png differ diff --git a/render_out/bob/SMACKIES/007.png b/render_out/bob/SMACKIES/007.png new file mode 100644 index 0000000..5d8e66b Binary files /dev/null and b/render_out/bob/SMACKIES/007.png differ diff --git a/render_out/bob/SMACKIES/008.png b/render_out/bob/SMACKIES/008.png new file mode 100644 index 0000000..4349568 Binary files /dev/null and b/render_out/bob/SMACKIES/008.png differ diff --git a/render_out/bob/SMACKIES_sheet.png b/render_out/bob/SMACKIES_sheet.png new file mode 100644 index 0000000..9537f41 Binary files /dev/null and b/render_out/bob/SMACKIES_sheet.png differ diff --git a/render_out/bob/SMACKS/000.png b/render_out/bob/SMACKS/000.png new file mode 100644 index 0000000..ee6a3fa Binary files /dev/null and b/render_out/bob/SMACKS/000.png differ diff --git a/render_out/bob/SMACKS/001.png b/render_out/bob/SMACKS/001.png new file mode 100644 index 0000000..e6c7de2 Binary files /dev/null and b/render_out/bob/SMACKS/001.png differ diff --git a/render_out/bob/SMACKS/002.png b/render_out/bob/SMACKS/002.png new file mode 100644 index 0000000..dd98c9f Binary files /dev/null and b/render_out/bob/SMACKS/002.png differ diff --git a/render_out/bob/SMACKS/003.png b/render_out/bob/SMACKS/003.png new file mode 100644 index 0000000..0f15a73 Binary files /dev/null and b/render_out/bob/SMACKS/003.png differ diff --git a/render_out/bob/SMACKS/004.png b/render_out/bob/SMACKS/004.png new file mode 100644 index 0000000..269745b Binary files /dev/null and b/render_out/bob/SMACKS/004.png differ diff --git a/render_out/bob/SMACKS/005.png b/render_out/bob/SMACKS/005.png new file mode 100644 index 0000000..cbc8b98 Binary files /dev/null and b/render_out/bob/SMACKS/005.png differ diff --git a/render_out/bob/SMACKS/006.png b/render_out/bob/SMACKS/006.png new file mode 100644 index 0000000..8d8d5bc Binary files /dev/null and b/render_out/bob/SMACKS/006.png differ diff --git a/render_out/bob/SMACKS/007.png b/render_out/bob/SMACKS/007.png new file mode 100644 index 0000000..a4e18d8 Binary files /dev/null and b/render_out/bob/SMACKS/007.png differ diff --git a/render_out/bob/SMACKS/008.png b/render_out/bob/SMACKS/008.png new file mode 100644 index 0000000..6c03cc7 Binary files /dev/null and b/render_out/bob/SMACKS/008.png differ diff --git a/render_out/bob/SMACKS/009.png b/render_out/bob/SMACKS/009.png new file mode 100644 index 0000000..9d5c9b1 Binary files /dev/null and b/render_out/bob/SMACKS/009.png differ diff --git a/render_out/bob/SMACKS/010.png b/render_out/bob/SMACKS/010.png new file mode 100644 index 0000000..519de93 Binary files /dev/null and b/render_out/bob/SMACKS/010.png differ diff --git a/render_out/bob/SMACKS/011.png b/render_out/bob/SMACKS/011.png new file mode 100644 index 0000000..b9c3dc5 Binary files /dev/null and b/render_out/bob/SMACKS/011.png differ diff --git a/render_out/bob/SMACKS/012.png b/render_out/bob/SMACKS/012.png new file mode 100644 index 0000000..266062f Binary files /dev/null and b/render_out/bob/SMACKS/012.png differ diff --git a/render_out/bob/SMACKS/013.png b/render_out/bob/SMACKS/013.png new file mode 100644 index 0000000..325c2f9 Binary files /dev/null and b/render_out/bob/SMACKS/013.png differ diff --git a/render_out/bob/SMACKS/014.png b/render_out/bob/SMACKS/014.png new file mode 100644 index 0000000..5c666ff Binary files /dev/null and b/render_out/bob/SMACKS/014.png differ diff --git a/render_out/bob/SMACKS/015.png b/render_out/bob/SMACKS/015.png new file mode 100644 index 0000000..4627b03 Binary files /dev/null and b/render_out/bob/SMACKS/015.png differ diff --git a/render_out/bob/SMACKS/016.png b/render_out/bob/SMACKS/016.png new file mode 100644 index 0000000..afb1963 Binary files /dev/null and b/render_out/bob/SMACKS/016.png differ diff --git a/render_out/bob/SMACKS/017.png b/render_out/bob/SMACKS/017.png new file mode 100644 index 0000000..e809435 Binary files /dev/null and b/render_out/bob/SMACKS/017.png differ diff --git a/render_out/bob/SMACKS/018.png b/render_out/bob/SMACKS/018.png new file mode 100644 index 0000000..4961969 Binary files /dev/null and b/render_out/bob/SMACKS/018.png differ diff --git a/render_out/bob/SMACKS/019.png b/render_out/bob/SMACKS/019.png new file mode 100644 index 0000000..0dcffdf Binary files /dev/null and b/render_out/bob/SMACKS/019.png differ diff --git a/render_out/bob/SMACKS/020.png b/render_out/bob/SMACKS/020.png new file mode 100644 index 0000000..e567c21 Binary files /dev/null and b/render_out/bob/SMACKS/020.png differ diff --git a/render_out/bob/SMACKS/021.png b/render_out/bob/SMACKS/021.png new file mode 100644 index 0000000..ecb84c1 Binary files /dev/null and b/render_out/bob/SMACKS/021.png differ diff --git a/render_out/bob/SMACKS/022.png b/render_out/bob/SMACKS/022.png new file mode 100644 index 0000000..9f88b68 Binary files /dev/null and b/render_out/bob/SMACKS/022.png differ diff --git a/render_out/bob/SMACKS/023.png b/render_out/bob/SMACKS/023.png new file mode 100644 index 0000000..68a8a87 Binary files /dev/null and b/render_out/bob/SMACKS/023.png differ diff --git a/render_out/bob/SMACKS/024.png b/render_out/bob/SMACKS/024.png new file mode 100644 index 0000000..61a59af Binary files /dev/null and b/render_out/bob/SMACKS/024.png differ diff --git a/render_out/bob/SMACKS/025.png b/render_out/bob/SMACKS/025.png new file mode 100644 index 0000000..c3e0bf5 Binary files /dev/null and b/render_out/bob/SMACKS/025.png differ diff --git a/render_out/bob/SMACKS/026.png b/render_out/bob/SMACKS/026.png new file mode 100644 index 0000000..7b39816 Binary files /dev/null and b/render_out/bob/SMACKS/026.png differ diff --git a/render_out/bob/SMACKS/027.png b/render_out/bob/SMACKS/027.png new file mode 100644 index 0000000..88c9928 Binary files /dev/null and b/render_out/bob/SMACKS/027.png differ diff --git a/render_out/bob/SMACKS/028.png b/render_out/bob/SMACKS/028.png new file mode 100644 index 0000000..f9ce5bb Binary files /dev/null and b/render_out/bob/SMACKS/028.png differ diff --git a/render_out/bob/SMACKS/029.png b/render_out/bob/SMACKS/029.png new file mode 100644 index 0000000..559ee66 Binary files /dev/null and b/render_out/bob/SMACKS/029.png differ diff --git a/render_out/bob/SMACKS/030.png b/render_out/bob/SMACKS/030.png new file mode 100644 index 0000000..a602b55 Binary files /dev/null and b/render_out/bob/SMACKS/030.png differ diff --git a/render_out/bob/SMACKS/031.png b/render_out/bob/SMACKS/031.png new file mode 100644 index 0000000..84cfaa3 Binary files /dev/null and b/render_out/bob/SMACKS/031.png differ diff --git a/render_out/bob/SMACKS/032.png b/render_out/bob/SMACKS/032.png new file mode 100644 index 0000000..8fe39c3 Binary files /dev/null and b/render_out/bob/SMACKS/032.png differ diff --git a/render_out/bob/SMACKS/033.png b/render_out/bob/SMACKS/033.png new file mode 100644 index 0000000..0ed174b Binary files /dev/null and b/render_out/bob/SMACKS/033.png differ diff --git a/render_out/bob/SMACKS/034.png b/render_out/bob/SMACKS/034.png new file mode 100644 index 0000000..ca5be31 Binary files /dev/null and b/render_out/bob/SMACKS/034.png differ diff --git a/render_out/bob/SMACKS/035.png b/render_out/bob/SMACKS/035.png new file mode 100644 index 0000000..d995dd2 Binary files /dev/null and b/render_out/bob/SMACKS/035.png differ diff --git a/render_out/bob/SMACKS/036.png b/render_out/bob/SMACKS/036.png new file mode 100644 index 0000000..83eb301 Binary files /dev/null and b/render_out/bob/SMACKS/036.png differ diff --git a/render_out/bob/SMACKS/037.png b/render_out/bob/SMACKS/037.png new file mode 100644 index 0000000..eeb9f94 Binary files /dev/null and b/render_out/bob/SMACKS/037.png differ diff --git a/render_out/bob/SMACKS/038.png b/render_out/bob/SMACKS/038.png new file mode 100644 index 0000000..cc33049 Binary files /dev/null and b/render_out/bob/SMACKS/038.png differ diff --git a/render_out/bob/SMACKS/039.png b/render_out/bob/SMACKS/039.png new file mode 100644 index 0000000..3379ba7 Binary files /dev/null and b/render_out/bob/SMACKS/039.png differ diff --git a/render_out/bob/SMACKS/040.png b/render_out/bob/SMACKS/040.png new file mode 100644 index 0000000..1f3768c Binary files /dev/null and b/render_out/bob/SMACKS/040.png differ diff --git a/render_out/bob/SMACKS/041.png b/render_out/bob/SMACKS/041.png new file mode 100644 index 0000000..908f148 Binary files /dev/null and b/render_out/bob/SMACKS/041.png differ diff --git a/render_out/bob/SMACKS/042.png b/render_out/bob/SMACKS/042.png new file mode 100644 index 0000000..fc72a5d Binary files /dev/null and b/render_out/bob/SMACKS/042.png differ diff --git a/render_out/bob/SMACKS/043.png b/render_out/bob/SMACKS/043.png new file mode 100644 index 0000000..f108d0e Binary files /dev/null and b/render_out/bob/SMACKS/043.png differ diff --git a/render_out/bob/SMACKS/044.png b/render_out/bob/SMACKS/044.png new file mode 100644 index 0000000..2e539f3 Binary files /dev/null and b/render_out/bob/SMACKS/044.png differ diff --git a/render_out/bob/SMACKS/045.png b/render_out/bob/SMACKS/045.png new file mode 100644 index 0000000..c65a66a Binary files /dev/null and b/render_out/bob/SMACKS/045.png differ diff --git a/render_out/bob/SMACKS/046.png b/render_out/bob/SMACKS/046.png new file mode 100644 index 0000000..65a0009 Binary files /dev/null and b/render_out/bob/SMACKS/046.png differ diff --git a/render_out/bob/SMACKS/047.png b/render_out/bob/SMACKS/047.png new file mode 100644 index 0000000..b428dd8 Binary files /dev/null and b/render_out/bob/SMACKS/047.png differ diff --git a/render_out/bob/SMACKS/048.png b/render_out/bob/SMACKS/048.png new file mode 100644 index 0000000..555f71b Binary files /dev/null and b/render_out/bob/SMACKS/048.png differ diff --git a/render_out/bob/SMACKS/049.png b/render_out/bob/SMACKS/049.png new file mode 100644 index 0000000..f538c52 Binary files /dev/null and b/render_out/bob/SMACKS/049.png differ diff --git a/render_out/bob/SMACKS/050.png b/render_out/bob/SMACKS/050.png new file mode 100644 index 0000000..d0bfae9 Binary files /dev/null and b/render_out/bob/SMACKS/050.png differ diff --git a/render_out/bob/SMACKS_sheet.png b/render_out/bob/SMACKS_sheet.png new file mode 100644 index 0000000..f2a563f Binary files /dev/null and b/render_out/bob/SMACKS_sheet.png differ diff --git a/render_out/bob/TONY/000.png b/render_out/bob/TONY/000.png new file mode 100644 index 0000000..d033564 Binary files /dev/null and b/render_out/bob/TONY/000.png differ diff --git a/render_out/bob/TONY/001.png b/render_out/bob/TONY/001.png new file mode 100644 index 0000000..fce49d4 Binary files /dev/null and b/render_out/bob/TONY/001.png differ diff --git a/render_out/bob/TONY/002.png b/render_out/bob/TONY/002.png new file mode 100644 index 0000000..b71f2a2 Binary files /dev/null and b/render_out/bob/TONY/002.png differ diff --git a/render_out/bob/TONY/003.png b/render_out/bob/TONY/003.png new file mode 100644 index 0000000..6364302 Binary files /dev/null and b/render_out/bob/TONY/003.png differ diff --git a/render_out/bob/TONY/004.png b/render_out/bob/TONY/004.png new file mode 100644 index 0000000..bf11646 Binary files /dev/null and b/render_out/bob/TONY/004.png differ diff --git a/render_out/bob/TONY/005.png b/render_out/bob/TONY/005.png new file mode 100644 index 0000000..27e6766 Binary files /dev/null and b/render_out/bob/TONY/005.png differ diff --git a/render_out/bob/TONY/006.png b/render_out/bob/TONY/006.png new file mode 100644 index 0000000..3f17481 Binary files /dev/null and b/render_out/bob/TONY/006.png differ diff --git a/render_out/bob/TONY/007.png b/render_out/bob/TONY/007.png new file mode 100644 index 0000000..c4433ed Binary files /dev/null and b/render_out/bob/TONY/007.png differ diff --git a/render_out/bob/TONY/008.png b/render_out/bob/TONY/008.png new file mode 100644 index 0000000..71d7bff Binary files /dev/null and b/render_out/bob/TONY/008.png differ diff --git a/render_out/bob/TONY/009.png b/render_out/bob/TONY/009.png new file mode 100644 index 0000000..dff7cf2 Binary files /dev/null and b/render_out/bob/TONY/009.png differ diff --git a/render_out/bob/TONY/010.png b/render_out/bob/TONY/010.png new file mode 100644 index 0000000..eebede1 Binary files /dev/null and b/render_out/bob/TONY/010.png differ diff --git a/render_out/bob/TONY/011.png b/render_out/bob/TONY/011.png new file mode 100644 index 0000000..89f5ae8 Binary files /dev/null and b/render_out/bob/TONY/011.png differ diff --git a/render_out/bob/TONY/012.png b/render_out/bob/TONY/012.png new file mode 100644 index 0000000..285b9a3 Binary files /dev/null and b/render_out/bob/TONY/012.png differ diff --git a/render_out/bob/TONY/013.png b/render_out/bob/TONY/013.png new file mode 100644 index 0000000..c2b7e3d Binary files /dev/null and b/render_out/bob/TONY/013.png differ diff --git a/render_out/bob/TONY/014.png b/render_out/bob/TONY/014.png new file mode 100644 index 0000000..e903771 Binary files /dev/null and b/render_out/bob/TONY/014.png differ diff --git a/render_out/bob/TONY/015.png b/render_out/bob/TONY/015.png new file mode 100644 index 0000000..f9e9641 Binary files /dev/null and b/render_out/bob/TONY/015.png differ diff --git a/render_out/bob/TONY/016.png b/render_out/bob/TONY/016.png new file mode 100644 index 0000000..79a6668 Binary files /dev/null and b/render_out/bob/TONY/016.png differ diff --git a/render_out/bob/TONY/017.png b/render_out/bob/TONY/017.png new file mode 100644 index 0000000..3eff148 Binary files /dev/null and b/render_out/bob/TONY/017.png differ diff --git a/render_out/bob/TONY/018.png b/render_out/bob/TONY/018.png new file mode 100644 index 0000000..bcc63a6 Binary files /dev/null and b/render_out/bob/TONY/018.png differ diff --git a/render_out/bob/TONY/019.png b/render_out/bob/TONY/019.png new file mode 100644 index 0000000..8941f6c Binary files /dev/null and b/render_out/bob/TONY/019.png differ diff --git a/render_out/bob/TONY/020.png b/render_out/bob/TONY/020.png new file mode 100644 index 0000000..ebf56e6 Binary files /dev/null and b/render_out/bob/TONY/020.png differ diff --git a/render_out/bob/TONY/021.png b/render_out/bob/TONY/021.png new file mode 100644 index 0000000..cbc3dc7 Binary files /dev/null and b/render_out/bob/TONY/021.png differ diff --git a/render_out/bob/TONY/022.png b/render_out/bob/TONY/022.png new file mode 100644 index 0000000..ee6413d Binary files /dev/null and b/render_out/bob/TONY/022.png differ diff --git a/render_out/bob/TONY/023.png b/render_out/bob/TONY/023.png new file mode 100644 index 0000000..b73bb4a Binary files /dev/null and b/render_out/bob/TONY/023.png differ diff --git a/render_out/bob/TONY/024.png b/render_out/bob/TONY/024.png new file mode 100644 index 0000000..bc622a7 Binary files /dev/null and b/render_out/bob/TONY/024.png differ diff --git a/render_out/bob/TONY/025.png b/render_out/bob/TONY/025.png new file mode 100644 index 0000000..8a7ff21 Binary files /dev/null and b/render_out/bob/TONY/025.png differ diff --git a/render_out/bob/TONY/026.png b/render_out/bob/TONY/026.png new file mode 100644 index 0000000..01a84da Binary files /dev/null and b/render_out/bob/TONY/026.png differ diff --git a/render_out/bob/TONY/027.png b/render_out/bob/TONY/027.png new file mode 100644 index 0000000..ff4c5fb Binary files /dev/null and b/render_out/bob/TONY/027.png differ diff --git a/render_out/bob/TONY/028.png b/render_out/bob/TONY/028.png new file mode 100644 index 0000000..80e6d56 Binary files /dev/null and b/render_out/bob/TONY/028.png differ diff --git a/render_out/bob/TONY/029.png b/render_out/bob/TONY/029.png new file mode 100644 index 0000000..2adf910 Binary files /dev/null and b/render_out/bob/TONY/029.png differ diff --git a/render_out/bob/TONY/030.png b/render_out/bob/TONY/030.png new file mode 100644 index 0000000..4e75dff Binary files /dev/null and b/render_out/bob/TONY/030.png differ diff --git a/render_out/bob/TONY/031.png b/render_out/bob/TONY/031.png new file mode 100644 index 0000000..12bc28c Binary files /dev/null and b/render_out/bob/TONY/031.png differ diff --git a/render_out/bob/TONY/032.png b/render_out/bob/TONY/032.png new file mode 100644 index 0000000..33eec32 Binary files /dev/null and b/render_out/bob/TONY/032.png differ diff --git a/render_out/bob/TONY/033.png b/render_out/bob/TONY/033.png new file mode 100644 index 0000000..61dd16b Binary files /dev/null and b/render_out/bob/TONY/033.png differ diff --git a/render_out/bob/TONY/034.png b/render_out/bob/TONY/034.png new file mode 100644 index 0000000..4a5642d Binary files /dev/null and b/render_out/bob/TONY/034.png differ diff --git a/render_out/bob/TONY/035.png b/render_out/bob/TONY/035.png new file mode 100644 index 0000000..d9f0493 Binary files /dev/null and b/render_out/bob/TONY/035.png differ diff --git a/render_out/bob/TONY/036.png b/render_out/bob/TONY/036.png new file mode 100644 index 0000000..e223a68 Binary files /dev/null and b/render_out/bob/TONY/036.png differ diff --git a/render_out/bob/TONY/037.png b/render_out/bob/TONY/037.png new file mode 100644 index 0000000..8fdd5b3 Binary files /dev/null and b/render_out/bob/TONY/037.png differ diff --git a/render_out/bob/TONY/038.png b/render_out/bob/TONY/038.png new file mode 100644 index 0000000..5d71a77 Binary files /dev/null and b/render_out/bob/TONY/038.png differ diff --git a/render_out/bob/TONY/039.png b/render_out/bob/TONY/039.png new file mode 100644 index 0000000..6cc1919 Binary files /dev/null and b/render_out/bob/TONY/039.png differ diff --git a/render_out/bob/TONY/040.png b/render_out/bob/TONY/040.png new file mode 100644 index 0000000..f812c11 Binary files /dev/null and b/render_out/bob/TONY/040.png differ diff --git a/render_out/bob/TONY/041.png b/render_out/bob/TONY/041.png new file mode 100644 index 0000000..e5696a5 Binary files /dev/null and b/render_out/bob/TONY/041.png differ diff --git a/render_out/bob/TONY/042.png b/render_out/bob/TONY/042.png new file mode 100644 index 0000000..914211a Binary files /dev/null and b/render_out/bob/TONY/042.png differ diff --git a/render_out/bob/TONY/043.png b/render_out/bob/TONY/043.png new file mode 100644 index 0000000..e587888 Binary files /dev/null and b/render_out/bob/TONY/043.png differ diff --git a/render_out/bob/TONY/044.png b/render_out/bob/TONY/044.png new file mode 100644 index 0000000..4b4e183 Binary files /dev/null and b/render_out/bob/TONY/044.png differ diff --git a/render_out/bob/TONY/045.png b/render_out/bob/TONY/045.png new file mode 100644 index 0000000..41977f2 Binary files /dev/null and b/render_out/bob/TONY/045.png differ diff --git a/render_out/bob/TONY/046.png b/render_out/bob/TONY/046.png new file mode 100644 index 0000000..6c576ee Binary files /dev/null and b/render_out/bob/TONY/046.png differ diff --git a/render_out/bob/TONY/047.png b/render_out/bob/TONY/047.png new file mode 100644 index 0000000..a542338 Binary files /dev/null and b/render_out/bob/TONY/047.png differ diff --git a/render_out/bob/TONY/048.png b/render_out/bob/TONY/048.png new file mode 100644 index 0000000..89defe6 Binary files /dev/null and b/render_out/bob/TONY/048.png differ diff --git a/render_out/bob/TONY/049.png b/render_out/bob/TONY/049.png new file mode 100644 index 0000000..ed52fba Binary files /dev/null and b/render_out/bob/TONY/049.png differ diff --git a/render_out/bob/TONY/050.png b/render_out/bob/TONY/050.png new file mode 100644 index 0000000..d62e3c3 Binary files /dev/null and b/render_out/bob/TONY/050.png differ diff --git a/render_out/bob/TONY/051.png b/render_out/bob/TONY/051.png new file mode 100644 index 0000000..7007806 Binary files /dev/null and b/render_out/bob/TONY/051.png differ diff --git a/render_out/bob/TONY/052.png b/render_out/bob/TONY/052.png new file mode 100644 index 0000000..c36a611 Binary files /dev/null and b/render_out/bob/TONY/052.png differ diff --git a/render_out/bob/TONY_grid.png b/render_out/bob/TONY_grid.png new file mode 100644 index 0000000..db95b74 Binary files /dev/null and b/render_out/bob/TONY_grid.png differ diff --git a/render_out/bob/TONY_sheet.png b/render_out/bob/TONY_sheet.png new file mode 100644 index 0000000..db95b74 Binary files /dev/null and b/render_out/bob/TONY_sheet.png differ diff --git a/render_out/bob/TOUCAN/000.png b/render_out/bob/TOUCAN/000.png new file mode 100644 index 0000000..86dbb93 Binary files /dev/null and b/render_out/bob/TOUCAN/000.png differ diff --git a/render_out/bob/TOUCAN/001.png b/render_out/bob/TOUCAN/001.png new file mode 100644 index 0000000..6790de4 Binary files /dev/null and b/render_out/bob/TOUCAN/001.png differ diff --git a/render_out/bob/TOUCAN/002.png b/render_out/bob/TOUCAN/002.png new file mode 100644 index 0000000..bfe1981 Binary files /dev/null and b/render_out/bob/TOUCAN/002.png differ diff --git a/render_out/bob/TOUCAN/003.png b/render_out/bob/TOUCAN/003.png new file mode 100644 index 0000000..406ccfe Binary files /dev/null and b/render_out/bob/TOUCAN/003.png differ diff --git a/render_out/bob/TOUCAN/004.png b/render_out/bob/TOUCAN/004.png new file mode 100644 index 0000000..9e38080 Binary files /dev/null and b/render_out/bob/TOUCAN/004.png differ diff --git a/render_out/bob/TOUCAN/005.png b/render_out/bob/TOUCAN/005.png new file mode 100644 index 0000000..1a67e29 Binary files /dev/null and b/render_out/bob/TOUCAN/005.png differ diff --git a/render_out/bob/TOUCAN/006.png b/render_out/bob/TOUCAN/006.png new file mode 100644 index 0000000..53b7445 Binary files /dev/null and b/render_out/bob/TOUCAN/006.png differ diff --git a/render_out/bob/TOUCAN/007.png b/render_out/bob/TOUCAN/007.png new file mode 100644 index 0000000..d93602c Binary files /dev/null and b/render_out/bob/TOUCAN/007.png differ diff --git a/render_out/bob/TOUCAN/008.png b/render_out/bob/TOUCAN/008.png new file mode 100644 index 0000000..2f9a099 Binary files /dev/null and b/render_out/bob/TOUCAN/008.png differ diff --git a/render_out/bob/TOUCAN/009.png b/render_out/bob/TOUCAN/009.png new file mode 100644 index 0000000..d1ed753 Binary files /dev/null and b/render_out/bob/TOUCAN/009.png differ diff --git a/render_out/bob/TOUCAN/010.png b/render_out/bob/TOUCAN/010.png new file mode 100644 index 0000000..236e09c Binary files /dev/null and b/render_out/bob/TOUCAN/010.png differ diff --git a/render_out/bob/TOUCAN/011.png b/render_out/bob/TOUCAN/011.png new file mode 100644 index 0000000..4bb4119 Binary files /dev/null and b/render_out/bob/TOUCAN/011.png differ diff --git a/render_out/bob/TOUCAN/012.png b/render_out/bob/TOUCAN/012.png new file mode 100644 index 0000000..a3164e7 Binary files /dev/null and b/render_out/bob/TOUCAN/012.png differ diff --git a/render_out/bob/TOUCAN/013.png b/render_out/bob/TOUCAN/013.png new file mode 100644 index 0000000..082e22d Binary files /dev/null and b/render_out/bob/TOUCAN/013.png differ diff --git a/render_out/bob/TOUCAN/014.png b/render_out/bob/TOUCAN/014.png new file mode 100644 index 0000000..340715c Binary files /dev/null and b/render_out/bob/TOUCAN/014.png differ diff --git a/render_out/bob/TOUCAN/015.png b/render_out/bob/TOUCAN/015.png new file mode 100644 index 0000000..3c4641c Binary files /dev/null and b/render_out/bob/TOUCAN/015.png differ diff --git a/render_out/bob/TOUCAN/016.png b/render_out/bob/TOUCAN/016.png new file mode 100644 index 0000000..ed7fcb0 Binary files /dev/null and b/render_out/bob/TOUCAN/016.png differ diff --git a/render_out/bob/TOUCAN/017.png b/render_out/bob/TOUCAN/017.png new file mode 100644 index 0000000..00b7f88 Binary files /dev/null and b/render_out/bob/TOUCAN/017.png differ diff --git a/render_out/bob/TOUCAN/018.png b/render_out/bob/TOUCAN/018.png new file mode 100644 index 0000000..d7ed20b Binary files /dev/null and b/render_out/bob/TOUCAN/018.png differ diff --git a/render_out/bob/TOUCAN/019.png b/render_out/bob/TOUCAN/019.png new file mode 100644 index 0000000..78cd7da Binary files /dev/null and b/render_out/bob/TOUCAN/019.png differ diff --git a/render_out/bob/TOUCAN/020.png b/render_out/bob/TOUCAN/020.png new file mode 100644 index 0000000..6f34ef2 Binary files /dev/null and b/render_out/bob/TOUCAN/020.png differ diff --git a/render_out/bob/TOUCAN/021.png b/render_out/bob/TOUCAN/021.png new file mode 100644 index 0000000..815dcc3 Binary files /dev/null and b/render_out/bob/TOUCAN/021.png differ diff --git a/render_out/bob/TOUCAN/022.png b/render_out/bob/TOUCAN/022.png new file mode 100644 index 0000000..f1fbd2e Binary files /dev/null and b/render_out/bob/TOUCAN/022.png differ diff --git a/render_out/bob/TOUCAN/023.png b/render_out/bob/TOUCAN/023.png new file mode 100644 index 0000000..2a2f69f Binary files /dev/null and b/render_out/bob/TOUCAN/023.png differ diff --git a/render_out/bob/TOUCAN/024.png b/render_out/bob/TOUCAN/024.png new file mode 100644 index 0000000..6a29c77 Binary files /dev/null and b/render_out/bob/TOUCAN/024.png differ diff --git a/render_out/bob/TOUCAN/025.png b/render_out/bob/TOUCAN/025.png new file mode 100644 index 0000000..613cb88 Binary files /dev/null and b/render_out/bob/TOUCAN/025.png differ diff --git a/render_out/bob/TOUCAN/026.png b/render_out/bob/TOUCAN/026.png new file mode 100644 index 0000000..14d7b55 Binary files /dev/null and b/render_out/bob/TOUCAN/026.png differ diff --git a/render_out/bob/TOUCAN/027.png b/render_out/bob/TOUCAN/027.png new file mode 100644 index 0000000..e938399 Binary files /dev/null and b/render_out/bob/TOUCAN/027.png differ diff --git a/render_out/bob/TOUCAN/028.png b/render_out/bob/TOUCAN/028.png new file mode 100644 index 0000000..5f6b6bf Binary files /dev/null and b/render_out/bob/TOUCAN/028.png differ diff --git a/render_out/bob/TOUCAN/029.png b/render_out/bob/TOUCAN/029.png new file mode 100644 index 0000000..420727a Binary files /dev/null and b/render_out/bob/TOUCAN/029.png differ diff --git a/render_out/bob/TOUCAN/030.png b/render_out/bob/TOUCAN/030.png new file mode 100644 index 0000000..8b9a1e2 Binary files /dev/null and b/render_out/bob/TOUCAN/030.png differ diff --git a/render_out/bob/TOUCAN/031.png b/render_out/bob/TOUCAN/031.png new file mode 100644 index 0000000..4f20947 Binary files /dev/null and b/render_out/bob/TOUCAN/031.png differ diff --git a/render_out/bob/TOUCAN/032.png b/render_out/bob/TOUCAN/032.png new file mode 100644 index 0000000..4ebf448 Binary files /dev/null and b/render_out/bob/TOUCAN/032.png differ diff --git a/render_out/bob/TOUCAN/033.png b/render_out/bob/TOUCAN/033.png new file mode 100644 index 0000000..0e9c691 Binary files /dev/null and b/render_out/bob/TOUCAN/033.png differ diff --git a/render_out/bob/TOUCAN/034.png b/render_out/bob/TOUCAN/034.png new file mode 100644 index 0000000..3a40d8f Binary files /dev/null and b/render_out/bob/TOUCAN/034.png differ diff --git a/render_out/bob/TOUCAN/035.png b/render_out/bob/TOUCAN/035.png new file mode 100644 index 0000000..d7dd672 Binary files /dev/null and b/render_out/bob/TOUCAN/035.png differ diff --git a/render_out/bob/TOUCAN/036.png b/render_out/bob/TOUCAN/036.png new file mode 100644 index 0000000..32c4952 Binary files /dev/null and b/render_out/bob/TOUCAN/036.png differ diff --git a/render_out/bob/TOUCAN/037.png b/render_out/bob/TOUCAN/037.png new file mode 100644 index 0000000..86dbb93 Binary files /dev/null and b/render_out/bob/TOUCAN/037.png differ diff --git a/render_out/bob/TOUCAN/038.png b/render_out/bob/TOUCAN/038.png new file mode 100644 index 0000000..6790de4 Binary files /dev/null and b/render_out/bob/TOUCAN/038.png differ diff --git a/render_out/bob/TOUCAN/039.png b/render_out/bob/TOUCAN/039.png new file mode 100644 index 0000000..9e38080 Binary files /dev/null and b/render_out/bob/TOUCAN/039.png differ diff --git a/render_out/bob/TOUCAN/040.png b/render_out/bob/TOUCAN/040.png new file mode 100644 index 0000000..1a67e29 Binary files /dev/null and b/render_out/bob/TOUCAN/040.png differ diff --git a/render_out/bob/TOUCAN/041.png b/render_out/bob/TOUCAN/041.png new file mode 100644 index 0000000..2f9a099 Binary files /dev/null and b/render_out/bob/TOUCAN/041.png differ diff --git a/render_out/bob/TOUCAN/042.png b/render_out/bob/TOUCAN/042.png new file mode 100644 index 0000000..d1ed753 Binary files /dev/null and b/render_out/bob/TOUCAN/042.png differ diff --git a/render_out/bob/TOUCAN/043.png b/render_out/bob/TOUCAN/043.png new file mode 100644 index 0000000..a3164e7 Binary files /dev/null and b/render_out/bob/TOUCAN/043.png differ diff --git a/render_out/bob/TOUCAN/044.png b/render_out/bob/TOUCAN/044.png new file mode 100644 index 0000000..082e22d Binary files /dev/null and b/render_out/bob/TOUCAN/044.png differ diff --git a/render_out/bob/TOUCAN/045.png b/render_out/bob/TOUCAN/045.png new file mode 100644 index 0000000..2a937ce Binary files /dev/null and b/render_out/bob/TOUCAN/045.png differ diff --git a/render_out/bob/TOUCAN/046.png b/render_out/bob/TOUCAN/046.png new file mode 100644 index 0000000..a367710 Binary files /dev/null and b/render_out/bob/TOUCAN/046.png differ diff --git a/render_out/bob/TOUCAN/047.png b/render_out/bob/TOUCAN/047.png new file mode 100644 index 0000000..46fc818 Binary files /dev/null and b/render_out/bob/TOUCAN/047.png differ diff --git a/render_out/bob/TOUCAN/048.png b/render_out/bob/TOUCAN/048.png new file mode 100644 index 0000000..e89a521 Binary files /dev/null and b/render_out/bob/TOUCAN/048.png differ diff --git a/render_out/bob/TOUCAN/049.png b/render_out/bob/TOUCAN/049.png new file mode 100644 index 0000000..e300cb6 Binary files /dev/null and b/render_out/bob/TOUCAN/049.png differ diff --git a/render_out/bob/TOUCAN/050.png b/render_out/bob/TOUCAN/050.png new file mode 100644 index 0000000..0d02e34 Binary files /dev/null and b/render_out/bob/TOUCAN/050.png differ diff --git a/render_out/bob/TOUCAN/051.png b/render_out/bob/TOUCAN/051.png new file mode 100644 index 0000000..5ca3e61 Binary files /dev/null and b/render_out/bob/TOUCAN/051.png differ diff --git a/render_out/bob/TOUCAN/052.png b/render_out/bob/TOUCAN/052.png new file mode 100644 index 0000000..24aeb8f Binary files /dev/null and b/render_out/bob/TOUCAN/052.png differ diff --git a/render_out/bob/TOUCAN/053.png b/render_out/bob/TOUCAN/053.png new file mode 100644 index 0000000..43dd2ab Binary files /dev/null and b/render_out/bob/TOUCAN/053.png differ diff --git a/render_out/bob/TOUCAN/054.png b/render_out/bob/TOUCAN/054.png new file mode 100644 index 0000000..b1cf020 Binary files /dev/null and b/render_out/bob/TOUCAN/054.png differ diff --git a/render_out/bob/TOUCAN/055.png b/render_out/bob/TOUCAN/055.png new file mode 100644 index 0000000..7c3b33b Binary files /dev/null and b/render_out/bob/TOUCAN/055.png differ diff --git a/render_out/bob/TOUCAN/056.png b/render_out/bob/TOUCAN/056.png new file mode 100644 index 0000000..34c36c8 Binary files /dev/null and b/render_out/bob/TOUCAN/056.png differ diff --git a/render_out/bob/TOUCAN/057.png b/render_out/bob/TOUCAN/057.png new file mode 100644 index 0000000..c76b24e Binary files /dev/null and b/render_out/bob/TOUCAN/057.png differ diff --git a/render_out/bob/TOUCAN/058.png b/render_out/bob/TOUCAN/058.png new file mode 100644 index 0000000..ed6bc98 Binary files /dev/null and b/render_out/bob/TOUCAN/058.png differ diff --git a/render_out/bob/TOUCAN/059.png b/render_out/bob/TOUCAN/059.png new file mode 100644 index 0000000..040d766 Binary files /dev/null and b/render_out/bob/TOUCAN/059.png differ diff --git a/render_out/bob/TOUCAN_sheet.png b/render_out/bob/TOUCAN_sheet.png new file mode 100644 index 0000000..2b96ee0 Binary files /dev/null and b/render_out/bob/TOUCAN_sheet.png differ diff --git a/render_out/bob/VITAMIN/000.png b/render_out/bob/VITAMIN/000.png new file mode 100644 index 0000000..17a5fd7 Binary files /dev/null and b/render_out/bob/VITAMIN/000.png differ diff --git a/render_out/bob/VITAMIN/001.png b/render_out/bob/VITAMIN/001.png new file mode 100644 index 0000000..be83b6f Binary files /dev/null and b/render_out/bob/VITAMIN/001.png differ diff --git a/render_out/bob/VITAMIN/002.png b/render_out/bob/VITAMIN/002.png new file mode 100644 index 0000000..9915431 Binary files /dev/null and b/render_out/bob/VITAMIN/002.png differ diff --git a/render_out/bob/VITAMIN/003.png b/render_out/bob/VITAMIN/003.png new file mode 100644 index 0000000..5ca541e Binary files /dev/null and b/render_out/bob/VITAMIN/003.png differ diff --git a/render_out/bob/VITAMIN/004.png b/render_out/bob/VITAMIN/004.png new file mode 100644 index 0000000..76b0e24 Binary files /dev/null and b/render_out/bob/VITAMIN/004.png differ diff --git a/render_out/bob/VITAMIN/005.png b/render_out/bob/VITAMIN/005.png new file mode 100644 index 0000000..55867b6 Binary files /dev/null and b/render_out/bob/VITAMIN/005.png differ diff --git a/render_out/bob/VITAMIN/006.png b/render_out/bob/VITAMIN/006.png new file mode 100644 index 0000000..017d2f6 Binary files /dev/null and b/render_out/bob/VITAMIN/006.png differ diff --git a/render_out/bob/VITAMIN/007.png b/render_out/bob/VITAMIN/007.png new file mode 100644 index 0000000..b7e9070 Binary files /dev/null and b/render_out/bob/VITAMIN/007.png differ diff --git a/render_out/bob/VITAMIN_sheet.png b/render_out/bob/VITAMIN_sheet.png new file mode 100644 index 0000000..68d7149 Binary files /dev/null and b/render_out/bob/VITAMIN_sheet.png differ diff --git a/render_out/bob/WOLKE/000.png b/render_out/bob/WOLKE/000.png new file mode 100644 index 0000000..b17dcd4 Binary files /dev/null and b/render_out/bob/WOLKE/000.png differ diff --git a/render_out/bob/WOLKE/001.png b/render_out/bob/WOLKE/001.png new file mode 100644 index 0000000..afbf6ea Binary files /dev/null and b/render_out/bob/WOLKE/001.png differ diff --git a/render_out/bob/WOLKE/002.png b/render_out/bob/WOLKE/002.png new file mode 100644 index 0000000..c3c5049 Binary files /dev/null and b/render_out/bob/WOLKE/002.png differ diff --git a/render_out/bob/WOLKE/003.png b/render_out/bob/WOLKE/003.png new file mode 100644 index 0000000..2206c8d Binary files /dev/null and b/render_out/bob/WOLKE/003.png differ diff --git a/render_out/bob/WOLKE_sheet.png b/render_out/bob/WOLKE_sheet.png new file mode 100644 index 0000000..a0b05fa Binary files /dev/null and b/render_out/bob/WOLKE_sheet.png differ diff --git a/render_out/ico/COCO_W1.png b/render_out/ico/COCO_W1.png new file mode 100644 index 0000000..51fc6c0 Binary files /dev/null and b/render_out/ico/COCO_W1.png differ diff --git a/render_out/ico/COCO_W2.png b/render_out/ico/COCO_W2.png new file mode 100644 index 0000000..df88666 Binary files /dev/null and b/render_out/ico/COCO_W2.png differ diff --git a/render_out/ico/COCO_W3.png b/render_out/ico/COCO_W3.png new file mode 100644 index 0000000..b200fee Binary files /dev/null and b/render_out/ico/COCO_W3.png differ diff --git a/render_out/ico/FROS_W1.png b/render_out/ico/FROS_W1.png new file mode 100644 index 0000000..c53c374 Binary files /dev/null and b/render_out/ico/FROS_W1.png differ diff --git a/render_out/ico/FROS_W2.png b/render_out/ico/FROS_W2.png new file mode 100644 index 0000000..f58bdae Binary files /dev/null and b/render_out/ico/FROS_W2.png differ diff --git a/render_out/ico/FROS_W3.png b/render_out/ico/FROS_W3.png new file mode 100644 index 0000000..a785f06 Binary files /dev/null and b/render_out/ico/FROS_W3.png differ diff --git a/render_out/ico/LOOP_W1.png b/render_out/ico/LOOP_W1.png new file mode 100644 index 0000000..86ab141 Binary files /dev/null and b/render_out/ico/LOOP_W1.png differ diff --git a/render_out/ico/LOOP_W2.png b/render_out/ico/LOOP_W2.png new file mode 100644 index 0000000..e12dca8 Binary files /dev/null and b/render_out/ico/LOOP_W2.png differ diff --git a/render_out/ico/LOOP_W3.png b/render_out/ico/LOOP_W3.png new file mode 100644 index 0000000..a8db3d8 Binary files /dev/null and b/render_out/ico/LOOP_W3.png differ diff --git a/render_out/ico/SMAC_W1.png b/render_out/ico/SMAC_W1.png new file mode 100644 index 0000000..b76d840 Binary files /dev/null and b/render_out/ico/SMAC_W1.png differ diff --git a/render_out/ico/SMAC_W2.png b/render_out/ico/SMAC_W2.png new file mode 100644 index 0000000..e3a0ee6 Binary files /dev/null and b/render_out/ico/SMAC_W2.png differ diff --git a/render_out/ico/SMAC_W3.png b/render_out/ico/SMAC_W3.png new file mode 100644 index 0000000..6ecc4b7 Binary files /dev/null and b/render_out/ico/SMAC_W3.png differ diff --git a/render_out/ico/W1.png b/render_out/ico/W1.png new file mode 100644 index 0000000..c45721e Binary files /dev/null and b/render_out/ico/W1.png differ diff --git a/render_out/ico/W1ANI.png b/render_out/ico/W1ANI.png new file mode 100644 index 0000000..f05a88d Binary files /dev/null and b/render_out/ico/W1ANI.png differ diff --git a/render_out/ico/W2.png b/render_out/ico/W2.png new file mode 100644 index 0000000..b363479 Binary files /dev/null and b/render_out/ico/W2.png differ diff --git a/render_out/ico/W2ANI.png b/render_out/ico/W2ANI.png new file mode 100644 index 0000000..7e1c5e4 Binary files /dev/null and b/render_out/ico/W2ANI.png differ diff --git a/render_out/ico/W2SNAKE.png b/render_out/ico/W2SNAKE.png new file mode 100644 index 0000000..6aa0815 Binary files /dev/null and b/render_out/ico/W2SNAKE.png differ diff --git a/render_out/ico/W3.png b/render_out/ico/W3.png new file mode 100644 index 0000000..4f7c389 Binary files /dev/null and b/render_out/ico/W3.png differ diff --git a/render_out/ico/W3ANI.png b/render_out/ico/W3ANI.png new file mode 100644 index 0000000..651a3b7 Binary files /dev/null and b/render_out/ico/W3ANI.png differ diff --git a/render_out/map/W1L0.png b/render_out/map/W1L0.png new file mode 100644 index 0000000..bd9102b Binary files /dev/null and b/render_out/map/W1L0.png differ diff --git a/render_out/map/W1L1.png b/render_out/map/W1L1.png new file mode 100644 index 0000000..c5dcd1e Binary files /dev/null and b/render_out/map/W1L1.png differ diff --git a/render_out/map/W1L2.png b/render_out/map/W1L2.png new file mode 100644 index 0000000..100cbcf Binary files /dev/null and b/render_out/map/W1L2.png differ diff --git a/render_out/map/W1L3.png b/render_out/map/W1L3.png new file mode 100644 index 0000000..2a70b6b Binary files /dev/null and b/render_out/map/W1L3.png differ diff --git a/render_out/map/W1L4.png b/render_out/map/W1L4.png new file mode 100644 index 0000000..c32c4c3 Binary files /dev/null and b/render_out/map/W1L4.png differ diff --git a/render_out/map/W1L5.png b/render_out/map/W1L5.png new file mode 100644 index 0000000..99db8f0 Binary files /dev/null and b/render_out/map/W1L5.png differ diff --git a/render_out/map/W1L6.png b/render_out/map/W1L6.png new file mode 100644 index 0000000..90d9121 Binary files /dev/null and b/render_out/map/W1L6.png differ diff --git a/render_out/map/W1L7.png b/render_out/map/W1L7.png new file mode 100644 index 0000000..38c2cd1 Binary files /dev/null and b/render_out/map/W1L7.png differ diff --git a/render_out/map/W2L1.png b/render_out/map/W2L1.png new file mode 100644 index 0000000..4390e87 Binary files /dev/null and b/render_out/map/W2L1.png differ diff --git a/render_out/map/W2L2.png b/render_out/map/W2L2.png new file mode 100644 index 0000000..44b3cdd Binary files /dev/null and b/render_out/map/W2L2.png differ diff --git a/render_out/map/W2L3.png b/render_out/map/W2L3.png new file mode 100644 index 0000000..fd6f654 Binary files /dev/null and b/render_out/map/W2L3.png differ diff --git a/render_out/map/W2L4.png b/render_out/map/W2L4.png new file mode 100644 index 0000000..4d5fd68 Binary files /dev/null and b/render_out/map/W2L4.png differ diff --git a/render_out/map/W2L5.png b/render_out/map/W2L5.png new file mode 100644 index 0000000..f289560 Binary files /dev/null and b/render_out/map/W2L5.png differ diff --git a/render_out/map/W2L6.png b/render_out/map/W2L6.png new file mode 100644 index 0000000..087423f Binary files /dev/null and b/render_out/map/W2L6.png differ diff --git a/render_out/map/W2L7.png b/render_out/map/W2L7.png new file mode 100644 index 0000000..f68301b Binary files /dev/null and b/render_out/map/W2L7.png differ diff --git a/render_out/map/W3L1.png b/render_out/map/W3L1.png new file mode 100644 index 0000000..acad67f Binary files /dev/null and b/render_out/map/W3L1.png differ diff --git a/render_out/map/W3L2.png b/render_out/map/W3L2.png new file mode 100644 index 0000000..096ab58 Binary files /dev/null and b/render_out/map/W3L2.png differ diff --git a/render_out/map/W3L3.png b/render_out/map/W3L3.png new file mode 100644 index 0000000..f1f3e6c Binary files /dev/null and b/render_out/map/W3L3.png differ diff --git a/render_out/map/W3L4.png b/render_out/map/W3L4.png new file mode 100644 index 0000000..370e430 Binary files /dev/null and b/render_out/map/W3L4.png differ diff --git a/render_out/map/W3L5.png b/render_out/map/W3L5.png new file mode 100644 index 0000000..e5bd140 Binary files /dev/null and b/render_out/map/W3L5.png differ diff --git a/render_out/map/W3L6.png b/render_out/map/W3L6.png new file mode 100644 index 0000000..2f06757 Binary files /dev/null and b/render_out/map/W3L6.png differ diff --git a/render_out/map/W3L7.png b/render_out/map/W3L7.png new file mode 100644 index 0000000..175f44b Binary files /dev/null and b/render_out/map/W3L7.png differ diff --git a/tools/dat_extract.py b/tools/dat_extract.py new file mode 100644 index 0000000..9af4b36 --- /dev/null +++ b/tools/dat_extract.py @@ -0,0 +1,39 @@ +import struct, os +from collections import Counter + +SRC = '/home/aria/kellogg_remake/raw/PCKELL.DAT' +OUT = '/home/aria/kellogg_remake/extracted_dat' +os.makedirs(OUT, exist_ok=True) + +with open(SRC, 'rb') as f: + data = f.read() + +num_entries = struct.unpack_from(' bytes + self._parse() + + def _parse(self): + data = self.data + num_entries = struct.unpack_from('= n: + return None + op = data[pc] + if op == 0x03: # add si, cx (0x03 0xF1) + if data[pc+1] != 0xF1: + return None + pc += 2 + elif op == 0xCB: # retf + pc += 1 + break + elif op in (0x56, 0x58, 0x5E, 0x50): # push si / push ax / pop si / push ax + pc += 1 + elif op == 0xEE: # out dx, al -> advance EGA page (cycles 0..3) + ega_page = (ega_page + 1) & 3 + pc += 1 + elif op == 0xD0: # rol al, 1 (0xD0 0xC0) + if data[pc+1] != 0xC0: + return None + pc += 2 + elif op == 0x8A: # mov cl, ah/bl/bh (no-op for our purposes) + if data[pc+1] not in (0xCC, 0xCB, 0xCF): + return None + pc += 2 + elif op == 0xC6: + sub = data[pc+1] + if sub == 0x84: # mov byte ptr [si+AAAA], BB + offset = data[pc+2] | (data[pc+3] << 8) + const = data[pc+4] + pc += 5 + instrs.append(CopyInstr(ega_page, offset, bytes([const]))) + elif sub == 0x44: # mov byte ptr [si+AA], BB + offset = data[pc+2] + const = data[pc+3] + pc += 4 + instrs.append(CopyInstr(ega_page, offset, bytes([const]))) + else: + return None + elif op == 0xC7: + sub = data[pc+1] + if sub == 0x44: # mov word ptr [si+AA], BBBB + offset = data[pc+2] + const = data[pc+3] | (data[pc+4] << 8) + pc += 5 + instrs.append(CopyInstr(ega_page, offset, bytes([const & 0xFF, (const >> 8) & 0xFF]))) + elif sub == 0x84: # mov word ptr [si+AAAA], BBBB + offset = data[pc+2] | (data[pc+3] << 8) + const = data[pc+4] | (data[pc+5] << 8) + pc += 6 + instrs.append(CopyInstr(ega_page, offset, bytes([const & 0xFF, (const >> 8) & 0xFF]))) + else: + return None + else: + return None + return instrs + + +BOB_STRIDE = 84 + +class BobFrame: + __slots__ = ('width', 'height', 'pixels') # pixels: list of palette indices, width*height, -1 = transparent + def __init__(self, width, height): + self.width = width + self.height = height + self.pixels = [-1] * (width * height) + + def set(self, x, y, idx): + if 0 <= x < self.width and 0 <= y < self.height: + self.pixels[y * self.width + x] = idx + + +def parse_bob(data): + '''Returns list of BobFrame (palette-index pixel grids, -1 = transparent/unset).''' + frames = [] + pos = 0 + n = len(data) + while pos < n: + header = data[pos:pos+14] + if len(header) < 14: + raise ValueError(f'truncated header at {pos}') + width = struct.unpack_from('h', data, 4)[0] + height = struct.unpack_from('>h', data, 6)[0] + unknown = struct.unpack_from('>h', data, 8)[0] + if unknown != 9: + raise ValueError(f'unexpected constant {unknown} (expected 9)') + + pos = 10 + cells = [] # row-major, len width*height, each (tile, type) + for _ in range(width * height): + value = struct.unpack_from('>H', data, pos)[0] + pos += 2 + tile = value & 0x1FF + ctype = value >> 9 + cells.append((tile, ctype)) + + if pos != len(data): + raise ValueError(f'missed {len(data) - pos} extra bytes at end of MAP') + + return width, height, cells diff --git a/tools/pcc_to_png.py b/tools/pcc_to_png.py index 1ee1a32..29f66e1 100644 --- a/tools/pcc_to_png.py +++ b/tools/pcc_to_png.py @@ -1,75 +1,104 @@ #!/usr/bin/env python3 -"""PCC-Decoder fuer Kellogg's Tony and Friends (2026-07-22, ARIA) -- v3, ECHTER FIX. +"""Finaler PCC-Decoder fuer Kellogg's Tony and Friends (2026-07-22, ARIA). -Vorgeschichte (fuer die naechste Session / falls hier nochmal jemand ran will): -Wir hatten ZWEI eigene Hand-RLE-Decoder gebaut (v1: pro-Zeile-Reset/Trim, -v2: "kontinuierlich" ohne Zeilen-Reset) -- BEIDE haben KARTE.PCC/KELLOGGS.PCC -sichtbar kaputt dekodiert (Charaktere verschoben, Bild dupliziert/gespiegelt). -Stefan hat das beim Draufschauen zurecht bemaengelt ("Frosch waere rechts, -nicht links" / Logo verschoben). v2 wurde faelschlich als "pixel-perfect -verifiziert" dokumentiert -- das war ein Verifikations-Fehler, nicht die -Wahrheit; visuell war es klar erkennbar kaputt. +Format (verifiziert gegen MENU.PCC/RAUSER1-3/FACTOR5, visuell + byte-exakt): +- Byte 0-15: echter PCX-Header-Anfang (Manufacturer=0x0A, Version=5, + Encoding=1/RLE, BPP=8, dann Xmin/Ymin/Xmax/Ymax als LE16 bei Offset 4-11). + WICHTIG (Bugfix 2026-07-22): Width/Height MUESSEN aus Xmax-Xmin+1 / + Ymax-Ymin+1 berechnet werden. Die 2 LE16-Werte bei Offset 12-15 sehen fuer + Vollbild-Screens (320x200) zufaellig identisch aus und wurden erst dafuer + gehalten -- sind aber tatsaechlich NICHT die Bilddimensionen (vermutlich + ein DPI/Reserved-Feld wie im echten 128-Byte-PCX-Header), sondern ein + Konstantwert der bei kleinen Sprites/Logos (z.B. RAUSER1.PCC: 182x46, + FAC0.PCC: 16x16) komplett falsch war und zu kaputten/leeren Bildern fuehrte. + Mit dem Xmax/Ymax-Fix konsumiert z.B. FACTOR5.PCC exakt 100% der + komprimierten Bytes (51609/51609) statt vorher mit falscher Hoehe (200 + statt echten 199) zu ueberlaufen. +- Byte 16 .. (len-769): RLE-komprimierte Pixel-Indexdaten, SCANLINE-weise + decodiert (pro Zeile wird bis width Pixel gefuellt, ueberschuessige Pixel + eines Runs am Zeilenende werden verworfen -- klassisches PCX-Verhalten). + RLE-Tupel: Byte mit oberen 2 Bits gesetzt (0xC0-0xFF) = Lauflaenge (&0x3F), + gefolgt von einem Wert-Byte. Sonst literaler Pixel. +- Letzte 769 Bytes: 0x0C-Marker + 768 Byte (256 x RGB) eingebettete Palette + (klassische PCX-v5-256-Farben-Erweiterung). PRO DATEI eigene Palette, + keine globale Palette noetig. -Fund via Stefans Hinweis auf https://github.com/movAX13h/tony-and-friends-in-kelloggs-land: -Deren PCXFile.cs bestaetigt .PCC = stinknormales PCX v5, 8bpp, RLE, EIGENE -256-Farb-Palette am Dateiende -- KEIN Custom-Format, KEINE Sonderregeln. -Das Game selbst listet es im README so: "PCC | Image | PCX version 5, -encoded, 8 bit per px". - -ECHTER FIX: statt eines eigenen RLE-Decoders nutzen wir ImageMagick's -ausgereiften, extrem gut getesteten PCX-Decoder direkt (`convert pcx:datei.PCC -out.png`). Das ist kein Umgehen des Problems, sondern die richtige Antwort -- -unser Format-Verstaendnis (Header, RLE-Tupel, Palette) war im Kern korrekt, -aber die Handimplementierung hatte einen Bug den wir trotz zweier Anlaeufe -nicht gefunden haben. ImageMagick beherrscht Standard-PCX seit Jahrzehnten -korrekt. Verifiziert: KARTE.PCC und KELLOGGS.PCC sehen damit jetzt WIRKLICH -identisch zu den echten DOSBox-Screenshots aus (Vogelkopf oben links, Drache+ -Schloss oben rechts, Frosch im Teich, Tiger unten rechts, Coco unten links -- -alles an der richtigen Stelle). - -Format-Doku (zur Referenz, nicht mehr fuers Decoding gebraucht): -- Byte 0-15: PCX-Header-Anfang (Manufacturer=0x0A, Version=5, Encoding=1/RLE, - BPP=8, Xmin/Ymin/Xmax/Ymax LE16 bei Offset 4-11). Breite/Hoehe = Xmax-Xmin+1 - / Ymax-Ymin+1. -- Byte 16..(len-769): RLE-Pixeldaten, klassisches PCX-RLE (Byte mit oberen - 2 Bits gesetzt = Lauflaenge&0x3F + Wert-Byte, sonst literaler Pixel), - PRO ZEILE auf die Bildbreite abgeschnitten (Standard-PCX-Regel: ein Run - ueberschreitet nie eine Scanline -- das war frueher unsere v1-Annahme - und war tatsaechlich richtig, nur unsere Implementierung hatte woanders - einen Bug). -- Letzte 769 Byte: 0x0C-Marker + 768 Byte (256 x RGB) eigene Palette pro Datei. +BEKANNTER OFFENER BUG (Stand 2026-07-22, noch nicht geloest): + KELLOGGS.PCC und KARTE.PCC (volle 320x200-Screens) zeigen weiterhin einen + lokalen Deko-Fehler (ein "Kerbe"/Notch-Artefakt rechts neben dem Kellogg's- + Schriftzug, roter/gelber Fleck der nicht ins Referenz-Screenshot passt). + Ausgeschlossen als Ursache: (a) horizontales Rollen/Verschieben des ganzen + Bilds -- getestet mit 18 Shift-Kandidaten, Artefakt bleibt IMMER an + derselben Position relativ zum Bildinhalt, nicht zur Leinwand -> kein + Rotations-/Scroll-Bug. (b) Zeilenweises Verwerfen von RLE-Overshoot -- + zeilenbasierte und "kontinuierliche" (ohne Row-Reset) Decodierung liefern + BYTE-IDENTISCHE Ergebnisse fuer diese Dateien. Vermutung: entweder eine + Palette-Fehlzuordnung fuer einzelne Indizes, oder eine RLE-Ambiguitaet bei + literalen Pixelwerten >= 0xC0 (die durch (b&0xC0)==0xC0 faelschlich als + Lauflaengen-Token statt als literaler Indexwert interpretiert werden + koennten) -- noch nicht verifiziert. FACTOR5.PCC's "Geister"-Doppellogo + ist dagegen vermutlich KEIN Bug, sondern ein Reflexions-/Schatten- + Designelement (Byte-Konsum ist bei diesem File exakt 100%). Nutzung: python3 pcc_to_png.py +Schreibt ein PPM und konvertiert via ImageMagick `convert` zu PNG. """ -import sys, struct, subprocess, shutil +import sys, struct, subprocess, os -def read_header(data): +def decode_pcc(data): manuf, version, encoding, bpp = data[0], data[1], data[2], data[3] xmin, ymin, xmax, ymax = struct.unpack('= 0 else None - return dict(manuf=manuf, version=version, encoding=encoding, bpp=bpp, - width=width, height=height, marker_ok=(marker == 0x0C)) + marker = data[pal_start] + pixel_region = data[16:pal_start] + pal_bytes = data[pal_start+1:pal_start+1+768] + palette = [(pal_bytes[i], pal_bytes[i+1], pal_bytes[i+2]) for i in range(0, 768, 3)] -def decode_with_imagemagick(inp, outp): - convert_bin = shutil.which('magick') or shutil.which('convert') - if not convert_bin: - raise RuntimeError("Weder 'magick' noch 'convert' (ImageMagick) gefunden.") - if convert_bin.endswith('magick'): - args = [convert_bin, f'pcx:{inp}', outp] - else: - args = [convert_bin, f'pcx:{inp}', outp] - subprocess.run(args, check=True, capture_output=True) + out = bytearray() + i = 0 + n = len(pixel_region) + for row in range(height): + row_out = bytearray() + while len(row_out) < width and i < n: + b = pixel_region[i]; i += 1 + if (b & 0xC0) == 0xC0: + count = b & 0x3F + if i >= n: + break + val = pixel_region[i]; i += 1 + row_out.extend([val] * count) + else: + row_out.append(b) + row_out = row_out[:width] + if len(row_out) < width: + row_out.extend([0] * (width - len(row_out))) + out.extend(row_out) + + return dict(width=width, height=height, marker_ok=(marker == 0x0C), + pixels=bytes(out), palette=palette, + consumed=i, pixel_region_len=n) + +def write_png(pixels, palette, width, height, out_png): + ppm = out_png + '.ppm' + with open(ppm, 'wb') as f: + f.write(f'P6\n{width} {height}\n255\n'.encode()) + buf = bytearray() + for px in pixels[:width*height]: + r, g, b = palette[px] + buf.extend([r, g, b]) + f.write(bytes(buf)) + subprocess.run(['convert', ppm, out_png], check=True) + os.remove(ppm) def main(): inp, outp = sys.argv[1], sys.argv[2] with open(inp, 'rb') as f: data = f.read() - hdr = read_header(data) - print(f"{inp}: {hdr['width']}x{hdr['height']} bpp={hdr['bpp']} " - f"marker_ok={hdr['marker_ok']}") - decode_with_imagemagick(inp, outp) + res = decode_pcc(data) + print(f"{inp}: {res['width']}x{res['height']} marker_ok={res['marker_ok']} " + f"consumed={res['consumed']}/{res['pixel_region_len']}") + write_png(res['pixels'], res['palette'], res['width'], res['height'], outp) print(f"-> {outp}") if __name__ == '__main__': diff --git a/tools/render_assets.py b/tools/render_assets.py new file mode 100644 index 0000000..d901066 --- /dev/null +++ b/tools/render_assets.py @@ -0,0 +1,159 @@ +import sys, os +sys.path.insert(0, os.path.dirname(__file__)) +from kellogg_formats import DATContainer, get_bob_palette, get_world_palette, parse_bob, parse_ico, parse_map +from PIL import Image + +DAT_PATH = '/home/aria/kellogg_remake/raw/PCKELL.DAT' +OUT = '/home/aria/kellogg_remake/render_out' +os.makedirs(OUT, exist_ok=True) + +container = DATContainer(DAT_PATH) +entries = container.entries + +def frame_to_image(frame, palette): + img = Image.new('RGBA', (frame.width, frame.height), (0, 0, 0, 0)) + px = img.load() + for y in range(frame.height): + for x in range(frame.width): + idx = frame.pixels[y * frame.width + x] + if idx < 0 or idx > 255: + continue + r, g, b = palette[idx] + px[x, y] = (r, g, b, 255) + return img + +def render_bob(name): + data = entries[name + '.BOB'] + palette = get_bob_palette(entries, name) + frames = parse_bob(data) + d = os.path.join(OUT, 'bob', name) + os.makedirs(d, exist_ok=True) + for i, frame in enumerate(frames): + img = frame_to_image(frame, palette) + img.save(os.path.join(d, f'{i:03d}.png')) + # grid sheet (easier to eyeball than a tall vertical stack) + if frames: + cols = min(8, len(frames)) + maxw = max(f.width for f in frames) + maxh = max(f.height for f in frames) + rows = (len(frames) + cols - 1) // cols + sheet = Image.new('RGBA', (cols*maxw, rows*maxh), (30,30,30,255)) + for i, frame in enumerate(frames): + img = frame_to_image(frame, palette) + x = (i % cols) * maxw + y = (i // cols) * maxh + sheet.paste(img, (x, y), img) + sheet.save(os.path.join(OUT, 'bob', name + '_sheet.png')) + return len(frames) + +if __name__ == '__main__': + import sys + if len(sys.argv) > 1: + name = sys.argv[1] + n = render_bob(name) + print(f'{name}.BOB -> {n} frames') + else: + print('usage: render_assets.py NAME (basename without extension)') + +def render_all_bob(): + results = {} + for filename in list(entries.keys()): + if filename.endswith('.BOB'): + name = filename[:-4] + try: + n = render_bob(name) + results[name] = ('ok', n) + except Exception as e: + results[name] = ('ERROR', str(e)) + return results + +def tile_to_image(grid, palette): + img = Image.new('RGBA', (16, 16), (0,0,0,0)) + px = img.load() + for y in range(16): + for x in range(16): + idx = grid[y*16+x] + if idx < 0 or idx > 255: + continue + r,g,b = palette[idx] + px[x,y] = (r,g,b,255) + return img + +def render_ico(filename): + # filename e.g. 'W1.ICO', 'COCO_W2.ICO' + name = filename[:-4] + if 'W1' in name: + world = 'W1' + elif 'W2' in name: + world = 'W2' + elif 'W3' in name: + world = 'W3' + else: + raise ValueError(f'cannot determine world for {filename}') + palette = get_world_palette(entries, world) + tiles = parse_ico(entries[filename]) + d = os.path.join(OUT, 'ico') + os.makedirs(d, exist_ok=True) + cols = 16 + rows = (len(tiles) + cols - 1) // cols + sheet = Image.new('RGBA', (cols*16, max(rows,1)*16), (40,40,40,255)) + for i, tile in enumerate(tiles): + img = tile_to_image(tile, palette) + x = (i % cols) * 16 + y = (i // cols) * 16 + sheet.paste(img, (x,y), img) + sheet.save(os.path.join(d, name + '.png')) + return len(tiles) + +def render_all_ico(): + results = {} + for filename in list(entries.keys()): + if filename.endswith('.ICO'): + try: + n = render_ico(filename) + results[filename] = ('ok', n) + except Exception as e: + results[filename] = ('ERROR', str(e)) + return results + + +_ico_cache = {} +def get_ico_tiles_and_palette(iconame): + if iconame not in _ico_cache: + if 'W1' in iconame: world = 'W1' + elif 'W2' in iconame: world = 'W2' + elif 'W3' in iconame: world = 'W3' + else: raise ValueError(iconame) + palette = get_world_palette(entries, world) + tiles = parse_ico(entries[iconame]) + _ico_cache[iconame] = (tiles, palette) + return _ico_cache[iconame] + +def render_map(filename): + # filename e.g. 'W1L0.MAP' -> use W1.ICO + W1.PCC-derived palette + base = filename[:2] # 'W1' + ico_name = base + '.ICO' + tiles, palette = get_ico_tiles_and_palette(ico_name) + width, height, cells = parse_map(entries[filename]) + sheet = Image.new('RGBA', (width*16, height*16), (255,0,255,255)) + for i, (tile, ctype) in enumerate(cells): + x = (i % width) * 16 + y = (i // width) * 16 + if tile < len(tiles): + img = tile_to_image(tiles[tile], palette) + sheet.paste(img, (x,y), img) + d = os.path.join(OUT, 'map') + os.makedirs(d, exist_ok=True) + sheet.save(os.path.join(d, filename[:-4] + '.png')) + return width, height + +def render_all_map(): + results = {} + for filename in list(entries.keys()): + if filename.endswith('.MAP'): + try: + w,h = render_map(filename) + results[filename] = ('ok', (w,h)) + except Exception as e: + results[filename] = ('ERROR', str(e)) + return results diff --git a/tools/split_pre.py b/tools/split_pre.py deleted file mode 100644 index 9887468..0000000 --- a/tools/split_pre.py +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env python3 -"""PCKELL.PRE Splitter v7 -- FINAL (2026-07-22) - -Format komplett verstanden: -- .BOB-Eintraege (32x): kein Tag-Slot, Header direkt per Pfad-Praefix-Suche - gefunden ("H:\\WIWA\\ENGINE\\GAMEDATA\\"), Header = Fundstelle-4. -- Alle Nicht-BOB-Eintraege (PCC/MAP/ARE/ICO/SAM/TFX, 146x aus APPEND.LST, - PLUS 3 weitere System-Dateien ohne APPEND.LST-Eintrag): Tag-Slot - [1-Byte-Namenslaenge][Dateiname][Fuellmuell bis 256 Byte], danach - [4-Byte-LE-Laenge][Rohdaten]. - -WICHTIGER FUND: APPEND.LST listet nur die 178 Spiel-Assets. PCKELL.PRE -enthaelt zusaetzlich, im GLEICHEN Tag-Format, direkt im Anschluss an den -letzten APPEND.LST-Eintrag (TITEL2.SAM), noch 3 System-/Runtime-Dateien: -DPMI16BI.OVL, RTM.EXE, START.EXE (die DOS-Extender-Runtime -- macht Sinn, -das ist ein self-contained Redistributable). Der letzte dieser 3 Eintraege -endet EXAKT auf EOF (0x238966) -- damit ist das Format zu 100% verifiziert, -keine Bytes bleiben unerklaert. - -Ergebnis: 178 (APPEND.LST) + 3 (System) = 181 Dateien total. -""" -import struct -import os - -RAW = "/home/aria/kellogg_remake/raw/PCKELL.PRE" -APPEND_LST = "/home/aria/kellogg_remake/raw/APPEND.LST" -OUT_DIR = "/home/aria/kellogg_remake/extracted_pre" - -with open(RAW, "rb") as f: - data = f.read() -with open(APPEND_LST) as f: - names = [l.strip() for l in f if l.strip()] - -# die 3 unlisted System-Dateien, empirisch gefunden direkt im Anschluss -EXTRA_NAMES = ["DPMI16BI.OVL", "RTM.EXE", "START.EXE"] - -PATH_PREFIX = b"H:\\WIWA\\ENGINE\\GAMEDATA\\" -N = len(data) - -pos = 0x100 -entries = [] -all_names = names + EXTRA_NAMES - -for i, name in enumerate(all_names): - is_bob = name.upper().endswith(".BOB") - if is_bob: - marker = PATH_PREFIX + name.encode("ascii") - p = data.find(marker, pos) - if p == -1: - print(f"FEHLER: Pfad fuer #{i} ({name}) nicht gefunden ab {pos:#x}") - break - header_start = p - 4 - length = struct.unpack_from(" N: - print(f"FEHLER: Datenende {data_end:#x} > Dateigroesse bei #{i} ({name}) length={length}") - break - entries.append((name, header_start, length, data_start, data_end, path)) - pos = data_end - -print(f"{len(entries)} von {len(all_names)} Eintraegen gefunden.") -if entries: - print(f"Letztes Datenende: {entries[-1][4]:#x} von {N:#x} (Match: {entries[-1][4] == N})") - -mism = sum(1 for name, hs, length, ds, de, path in entries - if path is not None and path.split("\\")[-1].upper() != name.upper()) -print(f"BOB Pfad-Mismatches: {mism}") - -if len(entries) == len(all_names) and entries[-1][4] == N and mism == 0: - os.makedirs(OUT_DIR, exist_ok=True) - for name, hs, length, ds, de, path in entries: - with open(os.path.join(OUT_DIR, name), "wb") as out: - out.write(data[ds:de]) - print(f">>> ERFOLG: {len(entries)} Dateien geschrieben nach {OUT_DIR}") - import collections - ext_count = collections.Counter(n.split(".")[-1].upper() for n, *_ in entries) - print("Typen:", dict(ext_count)) -else: - print(">>> Unvollstaendig.") - for e in entries[-5:]: - print(" ", e[0], hex(e[1]), e[2]) diff --git a/tools/wip_bob_sprite_research/bob_header_diff.py b/tools/wip_bob_sprite_research/bob_header_diff.py deleted file mode 100644 index 1611d97..0000000 --- a/tools/wip_bob_sprite_research/bob_header_diff.py +++ /dev/null @@ -1,23 +0,0 @@ -import os - -base = "/home/aria/kellogg_remake/extracted_pre/" -names = ["A","B","C","D","E","F","G","H","I","J","K","L","N","O","BLUME","WOLKE", - "VITAMIN","COCOPOPS","SMACKIES","FROSTIES","LOOPS","TONY","SMACKS","TOUCAN", - "COCO","PLATFW1","KEYS","GAMEBAR","KROKO","BOSSNAKE","DRAGON","DOORS"] - -N = 128 -headers = {} -for nm in names: - path = base+nm+".BOB" - data = open(path,"rb").read() - headers[nm] = data[:N] - print(f"{nm:10s} size={len(data):6d} header={data[:N].hex()}") - -print() -print("Per-byte-position constant analysis (position: set of distinct values, only show non-constant or show const marker):") -for pos in range(N): - vals = set(h[pos] for h in headers.values() if len(h) > pos) - if len(vals) == 1: - print(f"pos {pos:3d}: CONST 0x{next(iter(vals)):02x}") - else: - print(f"pos {pos:3d}: VARIES ({len(vals)} distinct)") diff --git a/tools/wip_bob_sprite_research/bob_header_search.py b/tools/wip_bob_sprite_research/bob_header_search.py deleted file mode 100644 index 0b9367c..0000000 --- a/tools/wip_bob_sprite_research/bob_header_search.py +++ /dev/null @@ -1,61 +0,0 @@ -import struct - -def decode_scanline(data, width, max_rows=100000): - i = 0 - n = len(data) - rows = 0 - row_len = 0 - while i < n: - if row_len >= width: - rows += 1 - row_len = 0 - if rows > max_rows: - return rows, i, False - continue - b = data[i] - if (b & 0xC0) == 0xC0: - count = b & 0x3F - i += 1 - if i >= n: - return rows, i, False - i += 1 - need = width - row_len - take = min(count, need) - row_len += take - else: - row_len += 1 - i += 1 - if row_len == 0: - return rows, i, True - else: - rows += 1 # partial - return rows, i, False - -base = "/home/aria/kellogg_remake/extracted_pre/" -files = ["B.BOB","E.BOB","N.BOB","O.BOB","A.BOB","J.BOB","K.BOB","D.BOB"] - -for fn in files: - data = open(base+fn, "rb").read() - n = len(data) - print(f"=== {fn} size={n} ===") - found_any = False - for headerlen in range(0, 17, 1): - if headerlen % 2 != 0: - continue - header = data[:headerlen] - body = data[headerlen:] - num_u16 = headerlen // 2 - u16s = struct.unpack(f"<{num_u16}H", header) if headerlen else () - # try every pair (w_idx, h_idx) among header u16 fields as (width,height) candidates - for wi in range(num_u16): - w = u16s[wi] - if w < 2 or w > 400: - continue - rows, consumed, ok = decode_scanline(body, w) - if ok: - # check if any header u16 equals rows (=height) - match_h = [hi for hi,val in enumerate(u16s) if val == rows] - print(f" headerlen={headerlen} width_idx={wi} width={w} -> rows={rows} clean=True header_u16={u16s} height_field_match_idx={match_h}") - found_any = True - if not found_any: - print(" (no clean header+width combo found in range)") diff --git a/tools/wip_bob_sprite_research/bob_histogram.py b/tools/wip_bob_sprite_research/bob_histogram.py deleted file mode 100644 index b6bf003..0000000 --- a/tools/wip_bob_sprite_research/bob_histogram.py +++ /dev/null @@ -1,30 +0,0 @@ -def rle_decode_pcx_style(data): - out = bytearray() - i = 0 - n = len(data) - while i < n: - b = data[i] - if (b & 0xC0) == 0xC0: - count = b & 0x3F - i += 1 - if i >= n: - break - val = data[i] - out.extend([val]*count) - i += 1 - else: - out.append(b) - i += 1 - return bytes(out) - -base = "/home/aria/kellogg_remake/extracted_pre/" -for fn in ["TONY.BOB","O.BOB","A.BOB"]: - data = open(base+fn,"rb").read() - dec = rle_decode_pcx_style(data) - from collections import Counter - c = Counter(dec) - print(fn, "distinct values:", len(c), "min", min(dec), "max", max(dec)) - top = c.most_common(10) - print(" top10:", top) - below16 = sum(v for k,v in c.items() if k<16) - print(f" fraction of pixels <16: {below16/len(dec):.3f} total_pixels={len(dec)}") diff --git a/tools/wip_bob_sprite_research/bob_landmark.py b/tools/wip_bob_sprite_research/bob_landmark.py deleted file mode 100644 index d77a8fe..0000000 --- a/tools/wip_bob_sprite_research/bob_landmark.py +++ /dev/null @@ -1,15 +0,0 @@ -import os - -base = "/home/aria/kellogg_remake/extracted_pre/" -names = ["A","B","C","D","E","F","G","H","I","J","K","L","N","O","BLUME","WOLKE", - "VITAMIN","COCOPOPS","SMACKIES","FROSTIES","LOOPS","TONY","SMACKS","TOUCAN", - "COCO","PLATFW1","KEYS","GAMEBAR","KROKO","BOSSNAKE","DRAGON","DOORS"] - -landmark = bytes.fromhex("7682b43a9f068882") - -for nm in names: - path = base+nm+".BOB" - data = open(path,"rb").read() - idx = data.find(landmark, 0, 64) - pre = data[:idx] if idx>=0 else None - print(f"{nm:10s} size={len(data):6d} landmark_at={idx:3d} preamble={pre.hex() if pre else 'NOTFOUND'}") diff --git a/tools/wip_bob_sprite_research/bob_render_grid.py b/tools/wip_bob_sprite_research/bob_render_grid.py deleted file mode 100644 index de2787d..0000000 --- a/tools/wip_bob_sprite_research/bob_render_grid.py +++ /dev/null @@ -1,51 +0,0 @@ -from PIL import Image -import math - -def rle_decode_pcx_style(data): - out = bytearray() - i = 0 - n = len(data) - while i < n: - b = data[i] - if (b & 0xC0) == 0xC0: - count = b & 0x3F - i += 1 - if i >= n: - break - val = data[i] - out.extend([val]*count) - i += 1 - else: - out.append(b) - i += 1 - return bytes(out) - -base = "/home/aria/kellogg_remake/extracted_pre/" -fn = "O.BOB" -data = open(base+fn, "rb").read() -dec = rle_decode_pcx_style(data) -print("decoded len:", len(dec)) - -widths = list(range(8, 60, 2)) -cell_h = 80 -cell_w = 60 -cols = 8 -rows = math.ceil(len(widths)/cols) -sheet = Image.new("L", (cols*cell_w, rows*cell_h), 40) - -for idx, w in enumerate(widths): - h = (len(dec) + w - 1)//w - padded = dec + bytes(w*h - len(dec)) - img = Image.frombytes("L", (w, h), padded) - # scale to fit cell, keep aspect - scale = min(cell_w/w, cell_h/h) - nw, nh = max(1,int(w*scale)), max(1,int(h*scale)) - img_r = img.resize((nw, nh), Image.NEAREST) - cx = (idx % cols) * cell_w - cy = (idx // cols) * cell_h - sheet.paste(img_r, (cx, cy)) - -sheet = sheet.resize((sheet.width*3, sheet.height*3), Image.NEAREST) -outpath = "/home/aria/kellogg_remake/tools/o_bob_grid.png" -sheet.save(outpath) -print("saved", outpath, "widths:", widths) diff --git a/tools/wip_bob_sprite_research/bob_render_grid2.py b/tools/wip_bob_sprite_research/bob_render_grid2.py deleted file mode 100644 index 60f9065..0000000 --- a/tools/wip_bob_sprite_research/bob_render_grid2.py +++ /dev/null @@ -1,66 +0,0 @@ -from PIL import Image -import math, sys - -def rle_decode_scanline_clipped(data, width, max_rows=400): - """Decode with PCX-style per-scanline clipping: exactly `width` px per row, - overshoot from a run is discarded, continues to next row.""" - rows = [] - row = [] - i = 0 - n = len(data) - while i < n and len(rows) < max_rows: - if len(row) >= width: - rows.append(row) - row = [] - continue - b = data[i] - if (b & 0xC0) == 0xC0: - count = b & 0x3F - i += 1 - if i >= n: - break - val = data[i] - i += 1 - need = width - len(row) - take = min(count, need) - row.extend([val]*take) - else: - row.append(b) - i += 1 - if row: - row.extend([0]*(width-len(row))) - rows.append(row) - return rows - -base = "/home/aria/kellogg_remake/extracted_pre/" -fn = sys.argv[1] if len(sys.argv) > 1 else "O.BOB" -skip = int(sys.argv[2]) if len(sys.argv) > 2 else 0 -data = open(base+fn, "rb").read()[skip:] - -widths = list(range(8, 60, 2)) -cell_h = 90 -cell_w = 60 -cols = 8 -rows_n = math.ceil(len(widths)/cols) -sheet = Image.new("L", (cols*cell_w, rows_n*cell_h), 40) - -for idx, w in enumerate(widths): - rows = rle_decode_scanline_clipped(data, w, max_rows=cell_h) - h = len(rows) - if h == 0: - continue - flat = bytearray() - for r in rows: - flat.extend(r) - img = Image.frombytes("L", (w, h), bytes(flat)) - scale = min(cell_w/w, cell_h/h) - nw, nh = max(1,int(w*scale)), max(1,int(h*scale)) - img_r = img.resize((nw, nh), Image.NEAREST) - cx = (idx % cols) * cell_w - cy = (idx // cols) * cell_h - sheet.paste(img_r, (cx, cy)) - -sheet = sheet.resize((sheet.width*3, sheet.height*3), Image.NEAREST) -outpath = f"/home/aria/kellogg_remake/tools/{fn}_grid_clip_skip{skip}.png" -sheet.save(outpath) -print("saved", outpath, "widths:", widths) diff --git a/tools/wip_bob_sprite_research/bob_rle_test.py b/tools/wip_bob_sprite_research/bob_rle_test.py deleted file mode 100644 index af04dbc..0000000 --- a/tools/wip_bob_sprite_research/bob_rle_test.py +++ /dev/null @@ -1,40 +0,0 @@ -import sys, struct - -def rle_decode_pcx_style(data): - """Decode assuming classic PCX RLE over the whole byte stream (no scanline boundary).""" - out = bytearray() - i = 0 - n = len(data) - while i < n: - b = data[i] - if (b & 0xC0) == 0xC0: - count = b & 0x3F - i += 1 - if i >= n: - break - val = data[i] - out.extend([val]*count) - i += 1 - else: - out.append(b) - i += 1 - return bytes(out) - -def factor_pairs_near_sqrt(total, tol=0): - import math - res = [] - for w in range(1, int(math.isqrt(total))+50): - if w == 0: continue - if total % w == 0: - h = total // w - res.append((w,h)) - return res - -files = ["A.BOB","B.BOB","E.BOB","N.BOB","O.BOB","D.BOB","H.BOB","I.BOB","J.BOB","K.BOB","TONY.BOB"] -base = "/home/aria/kellogg_remake/extracted_pre/" - -for fn in files: - path = base+fn - data = open(path,"rb").read() - dec = rle_decode_pcx_style(data) - print(fn, "raw_len=",len(data), "decoded_len=",len(dec)) diff --git a/tools/wip_bob_sprite_research/bob_width_search.py b/tools/wip_bob_sprite_research/bob_width_search.py deleted file mode 100644 index f371a94..0000000 --- a/tools/wip_bob_sprite_research/bob_width_search.py +++ /dev/null @@ -1,64 +0,0 @@ -import sys - -def try_decode_scanline(data, width, max_height=2000): - """PCX-style per-scanline RLE decode: for each row, decode exactly `width` - pixels (excess from a run discarded), continue until input consumed. - Returns (rows_pixels_list, bytes_consumed, ok, error_msg).""" - i = 0 - n = len(data) - rows = [] - row = [] - while i < n: - if len(row) >= width: - rows.append(row) - row = [] - if len(rows) > max_height: - return rows, i, False, "too many rows" - continue - b = data[i] - if (b & 0xC0) == 0xC0: - count = b & 0x3F - i += 1 - if i >= n: - return rows, i, False, "truncated run (missing value byte)" - val = data[i] - i += 1 - need = width - len(row) - take = min(count, need) - row.extend([val]*take) - # NOTE: if count > need, the overshoot pixels for the *next* row - # are DISCARDED per classic PCX semantics (not carried over) - else: - row.append(b) - i += 1 - if row: - # leftover partial row at EOF - rows.append(row) - return rows, i, False, f"EOF with partial row of {len(row)} px" - return rows, i, True, "clean" - -def scan_widths(data, wmin=4, wmax=250): - results = [] - for w in range(wmin, wmax+1): - rows, consumed, ok, msg = try_decode_scanline(data, w) - # figure out leftover partial-row size from msg if present - leftover = None - if "partial row of" in msg: - leftover = int(msg.split("partial row of")[1].split("px")[0].strip()) - elif msg == "clean": - leftover = 0 - results.append((w, len(rows), leftover, ok, msg)) - return results - -base = "/home/aria/kellogg_remake/extracted_pre/" -files = ["A.BOB","B.BOB","E.BOB","N.BOB","O.BOB","D.BOB","J.BOB"] -for fn in files: - data = open(base+fn,"rb").read() - print(f"=== {fn} (size={len(data)}) ===") - results = scan_widths(data) - clean = [r for r in results if r[2]==0] - if clean: - for r in clean: - print(" CLEAN (leftover=0):", r) - else: - print(" no width in range gives leftover==0") diff --git a/tools/wip_bob_sprite_research/dat_analyze.py b/tools/wip_bob_sprite_research/dat_analyze.py deleted file mode 100644 index 090d26f..0000000 --- a/tools/wip_bob_sprite_research/dat_analyze.py +++ /dev/null @@ -1,29 +0,0 @@ -import struct, sys - -path = "/home/aria/kellogg_remake/raw/PCKELL.DAT" -data = open(path, "rb").read() -print("total size:", len(data)) - -# Read uint16 LE values until they stop being monotonically non-decreasing -vals = [] -off = 0 -prev = -1 -while off + 2 <= len(data): - v = struct.unpack_from(" 5000: - break - -# find longest monotonic non-decreasing prefix -mono_len = 1 -for i in range(1, len(vals)): - if vals[i] >= vals[i-1]: - mono_len = i+1 - else: - break - -print("monotonic non-decreasing prefix length (uint16 entries):", mono_len) -print("that's byte offset:", mono_len*2) -print("first 40 vals:", vals[:40]) -print("vals around break point:", vals[max(0,mono_len-10):mono_len+10]) diff --git a/tools/wip_bob_sprite_research/dat_analyze2.py b/tools/wip_bob_sprite_research/dat_analyze2.py deleted file mode 100644 index b99edeb..0000000 --- a/tools/wip_bob_sprite_research/dat_analyze2.py +++ /dev/null @@ -1,24 +0,0 @@ -import struct - -path = "/home/aria/kellogg_remake/raw/PCKELL.DAT" -data = open(path, "rb").read() - -vals = [] -off = 0 -while off + 2 <= len(data): - v = struct.unpack_from("= vals[i-1]: - mono_len = i+1 - else: - break - -print("monotonic non-decreasing run starting at idx", start, "-> length", mono_len-start, "entries") -print("breaks at idx", mono_len, "byte offset", mono_len*2) -print("values around break:", vals[mono_len-5:mono_len+15]) -print("last mono value:", vals[mono_len-1]) diff --git a/tools/wip_bob_sprite_research/dat_table2.py b/tools/wip_bob_sprite_research/dat_table2.py deleted file mode 100644 index e24765c..0000000 --- a/tools/wip_bob_sprite_research/dat_table2.py +++ /dev/null @@ -1,12 +0,0 @@ -import struct - -path = "/home/aria/kellogg_remake/raw/PCKELL.DAT" -data = open(path, "rb").read() - -# look at region from 580 to 900, print as hex with offsets -start = 580 -end = 900 -for i in range(start, end, 16): - chunk = data[i:i+16] - hexs = ' '.join(f'{b:02x}' for b in chunk) - print(f'{i:06x}: {hexs}') diff --git a/tools/wip_bob_sprite_research/dat_u16.py b/tools/wip_bob_sprite_research/dat_u16.py deleted file mode 100644 index 5a44623..0000000 --- a/tools/wip_bob_sprite_research/dat_u16.py +++ /dev/null @@ -1,16 +0,0 @@ -import struct - -path = "/home/aria/kellogg_remake/raw/PCKELL.DAT" -data = open(path, "rb").read() - -start = 588 -end = 900 -vals = [] -off = start -while off+2 <= end: - v = struct.unpack_from('