Add Crusader-specific USECODE data and documentation
- 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.
This commit is contained in:
parent
3daffbf113
commit
de42fd1ea1
42 changed files with 21970 additions and 1522 deletions
202
USECODE/EUSECODE_extracted/readable_descriptor_templates.md
Normal file
202
USECODE/EUSECODE_extracted/readable_descriptor_templates.md
Normal file
|
|
@ -0,0 +1,202 @@
|
|||
# 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
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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
|
||||
|
||||
```text
|
||||
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) |
|
||||
Loading…
Add table
Add a link
Reference in a new issue