På spaning inuti ett WPC-ROM
Fråga mig inte varför, men funderade på om man kan "rippa" bilder och animationer ur Williams-ROM:ar. Hittade inget på nätet (folk kanske helt enkelt har bättre saker för sig?).
Läste in CPU-ROM:en till Twilight Zone (L4) i Matlab och började titta runt.
Hade förstås ingen aning om vilken format Williams-ingenjörerna valt för att representera bilder, men fick lite hintar
här.
Även om detta inte nödvändigtvis gäller Williams egen mjukvara, så gissade jag att fullskärmsbilder skulle vara 16 bytes breda, och att "litte-endian format" gäller för bitarna (mkt användbar info). Plus att kodning av de 2 bitar per pixel som krävs för 4 nyanser sker genom att upprepa bitmapen två gånger i minnet.
Utgick från detta och skrev ett script som scrollade mig igenom de 524 kB som utgör L4-ROM:en. Hittade rätt snart detta kring adress 208 kB:
Kom också fram till att mkt av grafiken ("mode"-bilderna) ligger uppstyckade i mindre 32x32-pixel-bilder. Vänster kolumn visar adress 286959 och framåt med 32 pixels (4 bytes) bredd, höger visar 289391 och framåt:
Slog mig snart att man förstås valt denna lösning för att förenkla "slot machine reels"-animeringen, så antagligen hittar man inte denna konstiga encoding i andra spel.
Finns också spår av en beryktad "Stunt Cow" (omnämnd t.ex.
här):
Av allt nördig man gjort måste detta hamna rätt högt upp på listan. Avslutar ROM-grävandet här och postar scriptet om nån vill gräva vidare (kanske finns redan enklare sätt att göra detta?).
Script