WORLDNEWS
ISSUE 19
ProQuake 1.20
Meglehetôsen
hosszú ideje hozzáférhetô már Frank Wille PPC Quake portja, amely
mindazon elônyökkel rendelkezett, amire a korábbi portok önmagukban
még nem lehettek képesek; sajnálatosan azonban egyetlen, egyetlenegy
pici probléma még hivatalos megjelenése után is akadt még ezzel
a porttal: nem futott vele a Chapter Honour.
Ugyan
ez rajtam kívül nem valószínű, hogy emberek nagyobb tömegeit aggasztotta
volna, végtére pedig én is nagyszerűen elvoltam egy, a fent említett
TC modot tökéletesen futtató, viszonylag réginek számító PowerUP
porttal - azonban mindez mégis azt jelentette, hogy valami nincs
rendben Wille - egyébként Clickboom által is elismerten - hivatalos
portjával.
Akik
ircrôl ismernek bizonyára emlékezhetnek rá, hogy hosszú hónapokon
keresztül tüntem el rejtélyes "Betatest rulez" felkiáltásokkal
- és ugyanezen számos hónap alatt egyre áramlottak az újabb és
újabb symbol táblás és debug verziók, folyt a debug remote levélen,
telneten keresztül, valamint hegyen, vizen, levegôben és az óperenciás
tengeren át is...
A hibára azonban egyáltalán nem volt könnyű rátalálnunk. Látszólag
úgy tűnt, a TC mod hangjaival van valamiféle probléma: azonban
hiába cseréltük le a PAK összes hangját egy garantáltan működô
sample-val, az eredmény mindig ugyanaz volt - az engine kifagyott,
mielôtt még a játék maga teljesen betöltôdött volna.
Akkor
végülis feladtuk - utóbb azonban történt egy napon, hogy ismét
eluralkodott rajtunk a késztetés, hogy megoldást keressünk a problémára.
Mindennek kiváltója pedig egy egészen egyszerű véletlen volt -
még a régesrégi, C64-es idôkben gyökerezô debug módszerhez folyamodtam
amikor egyszer, csak úgy szórakozásból a játékkal kísérleteztem:
és a látszólag vaddisznó mentalitással rendelkezô ötlet, hogy
letöröljem a sound alkönyvtárat úgy ahogy van nem várt eredménnyel
járt. Ugyan lépten nyomon a nem talált hangok után visítva, de
futott a Chapter Honour..!
Innen
már viszonylag gyorsan, három nap lefolyása alatt raktuk össze
a puzzle hiányzó darabjait: melyszerint a CH fut cyberstormokon,
de nem fut blizzardokon, hogy nem fut BVision-on sem, hogy...
A
hiba ugyanis csak A1200-on fordul elô. Kiváltója pedig a Chapter
Honour egyik hangja, a bolt.wav volt, mint egyszemélyi fôkolompos.
Ez a hang ugyanis nem teljesen felel meg a wav specifikációnak,
lévén az egyik data chunknak szokatlan a hossza benne. Ez viszont
nem is lenne igazán probléma, még annak ellenére sem, hogy a következô
chunk mérete meglehetôsen illegal - a Quake normális esetben ugyanis
beépített védelemmel kompenzálja az ilyeneket, amely megakadályozza,
hogy olyan adathoz próbáljon hozzáférni, amely a wav valódi méretén
túl mutat. Mint mondtam történik ez normális esetben...
Azonban
ez a hossz jelen esetunkben $49000000 volt (0x49000000, hogy mindenki
örüljön), ami azért bír különös jelentôséggel, mert ô a magyarázat
arra, miért történt a fagyás kizárólag A1200-asokon. A jelenleg
(pontosabban akkor) használt PPC kódgenerátornak ugyanis volt
egy rejtett hibája. A címeket ugyanis nem unsigned, hanem signed
értékekként kezelte, magyarán $80000000 felett az értékek negatív
számokat reprezentáltak.
CyberStormPPC
esetén nem jelentkezik probléma, lévén ott a fastram tartomány
a $08000000 címen kezdôdik; ha a kettôt összeadjuk az még mindig
alatta van a fentebb említett negatív számba történô átfordulási
határnak. Nem úgy a BlizzardPPC esetében: itt gyökeresen más címen
található ($68000000, vagy közel hasonló) - esetünkben pedig egyszerű
összeadás után látható, hogy $68000000+$49000000 az $b1000000,
ami a fent említett compiler hiba miatt negatív számot eredményez,
a quake biztonsági ellenôrzése így nem tudja kivédeni és kompenzálni
a hibát, a program pedig végrehajtja azt ami a halálát is jelenti
egyben: a hozzáférést egy nem létezô címhez, azaz illegal data
access-t.
Ez
volt a lényegében rendkívül egyszerű kis hiba, amit viszont amilyen
rendkívül nehéz volt felfedezni - olyan egyszerű, és olyan minimális
erôfeszítést igénylô volt javítani.
Wille
azonban nem lenne Wille, ha az eltelt idôben nem igyekezett volna
még tovább fejleszteni a portot, én pedig nem lennék én, ha csupán
a fentiek kedvéért cikket és nem hírt gyártottam volna a News
Column-ba.
Az
1.09 Quake Server ugyanis idôközben átlényegült 1.00 Amiga ProQuake
(Quake 1.20) verzióvá. A veziószám módosulásán kívül mindez két
dolgot jelent: a J.P. Grossman által fejlesztett ProQuake összes
extension-je bekerült jelen, Amigás verziónkba is - errôl részleteiben
mindjárt szólunk - valamint a szigorúan vett Amigás rész is fejlôdött
picit. Mivel ez a rövidebb, vegyük elôször sorjára ezeket a változásokat:
-
a Wille féle Quake ezentúl maga foglalja le a szükséges stack
mennyiséget, nincs többé szükség azt a program indítása elôtt
a stack paranccsal megadni (Végre - ez egy igen bosszantó hátránya
volt a többi Quake portunkkal szemben, bár sajnos nem ô volt az
egyetlen ilyen...-Emeric SH)
- kijavításra került a játékállás elmentésének néha jelentkezô
hibája: többé nem lesz már olyan, hogy különös lények jelennek
meg a játékban a kimentett állás betöltése után, és a nehézség
szintje is ugyanaz marad, mint az mentés elôtt valóban volt
- az AGA rész néhány további paramétert is támogat ezentúl, ezek
a következôk: -ntsc, -pal, -dblntsc, -dblpal
- javított képarány minden felbontásban. Ezt megelôzôen a 640x200
felbontás például meglehetôsen... hm... mulatságosan nézett ki
Megemlítve
rövid benyomásomat a játékról, a sebessége sem hátrányára változott
- immár biztos, hogy a leggyorsabb, AGA esetében legalábbis. Némi
elenyészô, de feltétlenül szükséges mazochizmusmusra való hajlammal
akár a 640x512 PAL Interlaced felbontás mellett is játszható.
És
akkor végül következzen a ProQuake kiegészítéseinek teljes listája
- ékes angol nyelven. Lefordítani azért nem volna értelme, mert
némelyikük esetében sajnos én sem tudom pontosan mirôl van szó
(nincs részletezésem az adott pontokról), így nem tudom mit kellene
fordítanom helyettük.
Client:
-
precise aim for ProQuake connection
- ProQuake message on connect
- ProQuake version
- Auto-smooth for camera/chasecam/eyecam
- longer mm1, mm2 messages
- (say): for messagemode2
- support for mods in qsocket (EXPLAIN - byte after accept server->client;
byte after connect client->server)
- fixed losing backscroll on print
- fixed HOME and END in console
- added proquake commands to CL_Parse
- pq_teamscores: teamscores in status bar!!!
- pq_timer: timer in status bar!!
- put sound back to DOSquake levels!
- added ping to scoreboard
- added ProQuake help page
- added cl_crossx, cl_crossy for GL
- queries server for pings if not connected to crmod6.0 server
- added pq_lag - synthetic lag!
- recognizes ping +N
- grab match time from crmod 4.0-5.1
- added r_waterwarp to GL
Server:
-
disabled tell
- () in mm2 (server side)
- Allow multiple connects from any IP (server side)
- precise aim for ProQuake connection
- added hook for QuakeC to turn off server flag in cvars
- Added ProQuake console variable (so mods can detect it)
- can set logfile name; can use %d for multiple logs
- log file header
- dprint(proquake client connected) if proquake client detected
Other:
-
removed "backup past 0"
- remover "stuck", "unstuck" messages
- implemented suppport for sys_ticrate
Valamint
az F11, F12 és PAUSE billentyűk más helyekre kerültek, lévén ezek
korábban olyan billentyűet használtak, amelyek hiányoznak az Amerikai
billentyűzetekrôl. Ezentúl:
F11
- Del
F12 - Help
PAUSE - * a numerikus billentyűzeten
Legutoljára
hagytam talán a legfontosabbat: a ProQuake 1.20 jelenlegi verziója
letölthetô az alábbi címrôl (WarpOS verzió, csak nehogy bárki
meglepôdjön):
Emeric SH