- Introduced new file `vm_mask_ladder.tsv` containing detailed mappings for Crusader USECODE VM masks and their associated descriptors. - Added comprehensive documentation in `scummvm-crusader-reference.md` outlining the structure, findings, and implications for reverse-engineering the Crusader engine within ScummVM. - Created `usecode-roundtrip-ir.md` to document the plan for converting Crusader USECODE bytes into a human-readable format, detailing the container layout, event names, and intrinsic tables. - Implemented a PowerShell script `temp_usecode_sample.ps1` for extracting and analyzing USECODE data from the Crusader FLX files, providing insights into class and event structures.
8.7 KiB
8.7 KiB
EUSECODE Readable Descriptor Templates
These are conservative descriptor-side pseudo-script sketches. They reflect verified field grammar and local table neighborhoods, not a direct opcode dump.
JELYHACK anchor lane
277: JELYHACK
anchor JELYHACK(referent)
callback SURCAMNS(referent,textFile,monit,valueBox,passcode,link,code,screen,cameraEgg,trueRef,therma,eventTrigger,foundGun) # offset -8, family=callback-eventtrigger
near BASEGUN(referent,item) # offset -7
near TIMER(referent,time,phase2) # offset -6
near SPECIAL(referent,phase,counter,time,phase1,phase2,mapNum,npcNum) # offset -5
near TRIGPAD(referent,item,elev) # offset -4
near MONSTER(referent,monster1,door,newNpc) # offset -3
near ELITE(referent) # offset -2
near D_ESTORM(referent,goods) # offset -1
near DATALINK(mva1,mva3a,mva4,mva5a,mva6,mva7,mva8,mva9,mva10,mva11a,mva12a,mva13,mva14,mva15a,mva15c,referent,textFile) # offset +1
near SLIDEFLR(referent) # offset +2
near JELYH2(referent) # offset +3
near HOFFMAN(referent,hoffy,deathBox,deadGuy,item) # offset +4
near D_HOFFMA(referent) # offset +5
attach REE_BOOT(referent,event,counter,item) # offset +6, family=boot-event-core
callback SURCAMEW(referent,textFile,monit,valueBox,passcode,link,code,screen,cameraEgg,trueRef,therma,eventTrigger,foundGun) # offset +7, family=callback-eventtrigger
attach SFXTRIG(referent,event) # offset +8, family=minimal-event-core
280: JELYH2
anchor JELYH2(referent)
near SPECIAL(referent,phase,counter,time,phase1,phase2,mapNum,npcNum) # offset -8
near TRIGPAD(referent,item,elev) # offset -7
near MONSTER(referent,monster1,door,newNpc) # offset -6
near ELITE(referent) # offset -5
near D_ESTORM(referent,goods) # offset -4
near JELYHACK(referent) # offset -3
near DATALINK(mva1,mva3a,mva4,mva5a,mva6,mva7,mva8,mva9,mva10,mva11a,mva12a,mva13,mva14,mva15a,mva15c,referent,textFile) # offset -2
near SLIDEFLR(referent) # offset -1
near HOFFMAN(referent,hoffy,deathBox,deadGuy,item) # offset +1
near D_HOFFMA(referent) # offset +2
attach REE_BOOT(referent,event,counter,item) # offset +3, family=boot-event-core
callback SURCAMEW(referent,textFile,monit,valueBox,passcode,link,code,screen,cameraEgg,trueRef,therma,eventTrigger,foundGun) # offset +4, family=callback-eventtrigger
attach SFXTRIG(referent,event) # offset +5, family=minimal-event-core
near SKILLBOX(referent,skill) # offset +6
near D_GURDSQ(referent,goods) # offset +7
near VETRON(referent) # offset +8
EVENT hub lane
189: COR_BOOT
attach COR_BOOT(referent,event,counter,item)
near GRENADE(referent) # offset -5
near SCIENTIS(referent) # offset -4
near ROLL_NS(referent,item,item2,riderList,time,total,counter,oldz,cargo,zCheck,zMax,ma0Q6) # offset -3
near REB_COUP(referent,counter) # offset -2
near MEDIKIT(referent,item) # offset -1
attach EVENT(mva3b,referent,event,item,source,dest,door,counter,counter2,link,time,post1,post2,floor,flicMan) # offset +1, family=event-hub
attach NPCTRIG(referent,event,item,item2,typeNpc) # offset +2, family=npc-trigger
near K(referent,item) # offset +3
near CRUZTRIG(referent,item,elev) # offset +4
near NPC_ONLY(referent,item,link) # offset +5
190: EVENT
hub EVENT(mva3b,referent,event,item,source,dest,door,counter,counter2,link,time,post1,post2,floor,flicMan)
near SCIENTIS(referent) # offset -5
near ROLL_NS(referent,item,item2,riderList,time,total,counter,oldz,cargo,zCheck,zMax,ma0Q6) # offset -4
near REB_COUP(referent,counter) # offset -3
near MEDIKIT(referent,item) # offset -2
attach COR_BOOT(referent,event,counter,item) # offset -1, family=boot-event-core
attach NPCTRIG(referent,event,item,item2,typeNpc) # offset +1, family=npc-trigger
near K(referent,item) # offset +2
near CRUZTRIG(referent,item,elev) # offset +3
near NPC_ONLY(referent,item,link) # offset +4
near VMAIL(referent,textFile) # offset +5
191: NPCTRIG
attach NPCTRIG(referent,event,item,item2,typeNpc)
near ROLL_NS(referent,item,item2,riderList,time,total,counter,oldz,cargo,zCheck,zMax,ma0Q6) # offset -5
near REB_COUP(referent,counter) # offset -4
near MEDIKIT(referent,item) # offset -3
attach COR_BOOT(referent,event,counter,item) # offset -2, family=boot-event-core
attach EVENT(mva3b,referent,event,item,source,dest,door,counter,counter2,link,time,post1,post2,floor,flicMan) # offset -1, family=event-hub
near K(referent,item) # offset +1
near CRUZTRIG(referent,item,elev) # offset +2
near NPC_ONLY(referent,item,link) # offset +3
near VMAIL(referent,textFile) # offset +4
near STORMTRO(referent) # offset +5
Environmental event lane
229: FLAMEBOX
attach FLAMEBOX(referent,event,flame,flame2,direction,count,newType)
near WVENTNS(referent,fram,windsurf) # offset -5
near WVENTEW(referent,fram,windsurf) # offset -4
near REBEL_TV(referent) # offset -3
near SDOOR_N(referent) # offset -2
near SDOOR_E(referent) # offset -1
near EBRIDGE2(referent) # offset +1
near MCRATE(ma0Q0,referent,item) # offset +2
near COPY_EW(referent,fram,coolfram) # offset +3
near COPY_NS(referent,fram,coolfram) # offset +4
near chunk_234(referent,fram) # offset +5
237: NOSTRIL
attach NOSTRIL(referent,event,fire,count,fire2)
near COPY_EW(referent,fram,coolfram) # offset -5
near COPY_NS(referent,fram,coolfram) # offset -4
near chunk_234(referent,fram) # offset -3
near FLAME1(referent) # offset -2
near REB_PAD(referent,item,pad2,mapNum,eggNum,phold,gunHold,counter,counter2) # offset -1
near VARDESK(referent,item,counter) # offset +1
near BLASER1(referent,laserList,item,inFastArea,count,link) # offset +2
near REB_BOOT(referent,counter) # offset +3
near UPPLATE(referent,item) # offset +4
near KEYPADNS(referent,alreadyPassed) # offset +5
296: STEAMBOX
attach STEAMBOX(referent,event,steam,steam2,direction,count)
near BOUNCBOX(referent,item,item2,ammo) # offset -5
near HOVER1(referent) # offset -4
near STEAM1(referent) # offset -3
near FADE(referent,loop,loop2) # offset -2
near PHIR(referent) # offset -1
near FLAME2(referent) # offset +1
near STEAM2(referent) # offset +2
near FLAMELP(referent) # offset +3
near BBOX(ma0Q0,referent) # offset +4
near GBOX_NS(ma0Q0,referent) # offset +5
Callback trigger lane
269: SURCAMNS
callback SURCAMNS(referent,textFile,monit,valueBox,passcode,link,code,screen,cameraEgg,trueRef,therma,eventTrigger,foundGun)
near D_SOLD(referent,goods) # offset -5
near D_VARG(referent) # offset -4
near D_COUR(referent,goods) # offset -3
near D_SUSAN(referent,goods) # offset -2
near D_THERM(referent) # offset -1
near BASEGUN(referent,item) # offset +1
near TIMER(referent,time,phase2) # offset +2
near SPECIAL(referent,phase,counter,time,phase1,phase2,mapNum,npcNum) # offset +3
near TRIGPAD(referent,item,elev) # offset +4
near MONSTER(referent,monster1,door,newNpc) # offset +5
284: SURCAMEW
callback SURCAMEW(referent,textFile,monit,valueBox,passcode,link,code,screen,cameraEgg,trueRef,therma,eventTrigger,foundGun)
near SLIDEFLR(referent) # offset -5
near JELYH2(referent) # offset -4
near HOFFMAN(referent,hoffy,deathBox,deadGuy,item) # offset -3
near D_HOFFMA(referent) # offset -2
attach REE_BOOT(referent,event,counter,item) # offset -1, family=boot-event-core
attach SFXTRIG(referent,event) # offset +1, family=minimal-event-core
near SKILLBOX(referent,skill) # offset +2
near D_GURDSQ(referent,goods) # offset +3
near VETRON(referent) # offset +4
near DEATHBOX(referent,sswitch,counter) # offset +5
Family Signatures
| Family | Label | Signature |
|---|---|---|
| boot-event-core | AND_BOOT | attach AND_BOOT(referent,event,counter,item) |
| boot-event-core | BRO_BOOT | attach BRO_BOOT(referent,event,counter,item) |
| boot-event-core | COR_BOOT | attach COR_BOOT(referent,event,counter,item) |
| boot-event-core | VAR_BOOT | attach VAR_BOOT(referent,event,counter,item) |
| boot-event-core | REE_BOOT | attach REE_BOOT(referent,event,counter,item) |
| callback-eventtrigger | SURCAMNS | callback SURCAMNS(referent,textFile,monit,valueBox,passcode,link,code,screen,cameraEgg,trueRef,therma,eventTrigger,foundGun) |
| callback-eventtrigger | SURCAMEW | callback SURCAMEW(referent,textFile,monit,valueBox,passcode,link,code,screen,cameraEgg,trueRef,therma,eventTrigger,foundGun) |
| environmental-event | FLAMEBOX | attach FLAMEBOX(referent,event,flame,flame2,direction,count,newType) |
| environmental-event | NOSTRIL | attach NOSTRIL(referent,event,fire,count,fire2) |
| environmental-event | STEAMBOX | attach STEAMBOX(referent,event,steam,steam2,direction,count) |
| event-hub | EVENT | hub EVENT(mva3b,referent,event,item,source,dest,door,counter,counter2,link,time,post1,post2,floor,flicMan) |
| minimal-event-core | SFXTRIG | attach SFXTRIG(referent,event) |
| npc-trigger | NPCTRIG | attach NPCTRIG(referent,event,item,item2,typeNpc) |