Opravená verze Bounty Bob Strikes Back!

Raster/c.p.u.

Jak jsem očekával, problém s nefunkčností této hry na strojích s více než 64KB RAM spočíval v chybných zápisech na port $D301, kam program v rámci odstavování BASICu a OS ROM zapisoval hodnoty, které zároveň aktivovaly přístup CPU a ANTICu (na 130XE) do externí paměti, a tím se program na rozšířených strojích sám znefunkčňoval.

Oprava byla lehce zkomplikována faktem, že hra si na začátku přesouvá různé části dat na různá místa paměti a v rámci toho je XORuje s #$FF, asi aby se CPU tak nenudil. ;-) Chyby jsem tedy hledal pomocí emulátoru a breakpointů a následně opravoval v souborových datech na úplně jiném místě a jinými hodnotami, ze kterých pak XORem vzniknou ty patřičné. Tohle ovšem byla ta snadnější část opravy.

Fandal zmínil, že když už, tak bych mohl opravit i problémy se stereem, které BBSB má. Zjistil jsem, že programátor byl vskutku veselá kopa a místo klasických čtení/zápisů z/na POKEY registry $D200-$D20F přistupuje různě na $D2XY, kde za Y dosaďte číslo potřebného registru $0-$F a za X dosaďte libovolné číslo. Na standardním (monofonním) Atárku se v prostoru $D210-$D2FF zrcadlí základních 16 registrů POKEYe, takže všechno funguje, ale na strojích obohacených o stereo nebo nedejTramiel o Covox či jiná rozšíření, očekávejte pěkné psí kusy. Oprava byla opět lehce komplikována posunem a XORem s #$FF, a těžce komplikována zjištěním, že počet těchto žertovných přístupů k POKEY registrům přesahuje všechny pochopitelné meze. POKEY je taktéž zdrojem náhodného čísla, ale proč někdo potřebuje náhodné číslo asi na 60 různých místech programu, to fakt nechápu. Mno, celkově to byla povedená taškařice a při nacházení dalších a dalších přístupů na $D255, $D224, $D23E, $D260 a zejména na $D26A ($D20A je RANDOM) a další, jsem šílel. Ale radujte se (nebo plačte), nezbláznil jsem se a opravu BBSB jsem dokončil, takže si tuto hru můžete konečně pustit i na vašich nadupaných Atárkách s přidanou pamětí a stereem.

Opravenou verzi BBSB najdete ve Fandalově archívu http://fandal.atari.org