Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Which data files are we not using yet? #348

Open
2 tasks
lynxlynxlynx opened this issue Oct 19, 2019 · 6 comments
Open
2 tasks

Which data files are we not using yet? #348

lynxlynxlynx opened this issue Oct 19, 2019 · 6 comments
Labels
feature feature request game: bg1 game: bg2 game: ees ee-specific bits and pieces game: iwd1 game: iwd2 game: pst research needed usually means testing in the original, to see how it behaved

Comments

@lynxlynxlynx
Copy link
Member

lynxlynxlynx commented Oct 19, 2019

The original games came with a bunch of 2da tables and similar ids files. I wonder which we don't use yet. In the past it helped resolving what was eventually #89 for example.

This task is about searching our codebase and comparing — which files are we not referencing yet? Many 2das are for animations (4-letter, starting with a or m, like acat) and some others may also not show up, but I'd like to see a list of the outliers. This will eventually also help with #164.

2da:
https://gibberlings3.github.io/iesdp/files/2da/index.htm
(at minimum for pst and iwd2 it also makes sense to check with NI or DLTCEP, in case the listing is incomplete)

ids:
https://gibberlings3.github.io/iesdp/files/ids/index.htm

This will also help with Gibberlings3/iesdp#6.

Up to date lists:

@lynxlynxlynx lynxlynxlynx added feature feature request good first issue tasks simple enough for someone completely new to the project research needed usually means testing in the original, to see how it behaved game: bg1 game: bg2 game: ees ee-specific bits and pieces game: iwd1 game: iwd2 game: pst labels Oct 19, 2019
@MarcelHB
Copy link
Collaborator

MarcelHB commented Oct 19, 2019

Did the job for the 2DA files without checking NI again. Steps to repeat:

# Going through code by some patterns
$ ag --nocolor --nofilename --noheading --nonumbers -i "\sAutoTable" | awk -F ':' '{ print $2 }' | grep -oP "\"[[:alnum:]_]+\"" | sed 's/"//g' | sort | uniq >> findings.csv
$ ag --nocolor --nofilename --noheading --nonumbers -i "AutoTable\(" | awk -F ':' '{ print $2 }' | grep -oP "\"[[:alnum:]_]+\"" | sed 's/"//g' | sort | uniq >> findings.csv
$ ag --nocolor --nofilename --noheading --nonumbers -i "tm.load" | awk -F ':' '{ print $2 }' | grep -oP "\"[[:alnum:]_]+\"" | sed 's/"//g' | sort | uniq >> findings.csv
$ ag --nocolor --nofilename --noheading --nonumbers -i "LoadTable\s?\(" | awk -F ':' '{ print $2 }' | grep -oP "\"[[:alnum:]_]+\"" | sed 's/"//g' | sort | uniq >> findings.csv
# Should have done as well:
$ ag --nocolor --nofilename --noheading --nonumbers -i "ReadAbilityTable\s?\(" | awk -F ':' '{ print $2 }' | grep -oP "\"[[:alnum:]_]+\"" | sed 's/"//g' | sort | uniq >> findings.csv

# Normalization
$ cat findings.csv | awk '{ print tolower($0) }' | sort | uniq > findings_sorted.csv
$ cat lists.csv | awk '{ print tolower($0) }' | sed 's/^\s//' | sort | uniq > lists_sorted.csv

# Outer join
$ join -t, -a 1 -a 2 -j 1 -e NULL -o 1.1,2.1 lists_sorted.csv findings_sorted.csv > joined.csv

# Manual work
# - mark 'x' what I could identify manually
# - mark '?' what is indirectly referenced somewhere

# Filter out what remains NULL without manual resolution
$ awk -F ',' '$2 == "NULL" && $3 != "x" && $3 != "?" { print $1 }' joined.csv

Et voilà:

Click to expand
achievem
ader
aeriend1
aeriend2
animsnd
anomend1
anomend2
arealink
arealins
avalanch
banttimg
bdsham01
bdsham06
bdsham12
bdsham18
cachvald
campaign
cerndnd
chaptxtx
chptxt0
chptxt1
chptxt10
chptxt11
chptxt2
chptxt3
chptxt4
chptxt5
chptxt6
chptxt7
chptxt8
chptxt9
chptxtxx
clabxx00
clascolr
clasiskl
clastext
clasthac
cleartrp
clearwhr
clsrcreq
clswpbon
concentr
crehidem
crelight
crippstr
donarumr
edwinnd
encmod
end
end15fps
endgame
endmve1
endmve2
endmve3
enginest
extanim
extspeed
fallen
familiar
fatigmod
fogarea
fogpt
haernd
helpxx
hidespl
howdrag
howseer
hpclass
hpinit
hpxxx
igeffect
imoennd
importxx
intoxcon
intoxmod
intro
intro15f
itemabil
itemtext
itmslots
jaheind1
jaheind2
jannd
k_x_x
keldornd
korgand
kplose
kprevolt
kpwin
luxx0
lvlfeat
mazzynd
mbes
monkfist
monsum1
monsum2
monsum3
mschool
msectype
msummxx
mxspl
mxspldd
mxsplshm
mxsplxxx
mzom
naliand
neerad1
neerad2
npcminsc
ohddorn
ohddorn2
ohhhex
ohhhex2
ohtyr
partyai
ppbehave
pplane
profmax
racecolr
racefeat
racehate
racetext
racethac
racexpmd
raisdead
rasaadd1
rasaadd2
rasaadd3
reptext
return
sarevnd
scenexx
scrodre
scrpress
scrsara
scrtxt01
scrtxt02
scrtxt03
scrtxt04
scrtxt05
scrtxt06
scrtxt07
scrtxt08
scry
skillcls
skillshm
skillskd
sltsteal
smtables
sndenvrn
sndresrf
sneakatt
spcd_gr
spce_d
spcg_d
spch_a
spch_t
spchf_gw
spclxxx
speech
spirsumm
splashs2
splautos
splshmkn
sr_d
sr_e
sr_g
sr_h
sr_he
sr_hf
sr_ho
srlist
srtable
startbp
statval
strtexp
stylbonu
summlimt
t2da0000
tbpparty
thiefscl
thiefskl
tokentxt
tower
trandef
traplimt
trapsave
valygnd
varimprt
viconnd1
viconnd2
wilsond
xl3000

@lynxlynxlynx
Copy link
Member Author

Cool, good start. There's still plenty of false positives there though, like animations, xl3000, the npc epilogue files, enumerated tables like chapter text and some of the xxx brevities. reptext was a bug in iesdp, which I've now fixed.

@MarcelHB
Copy link
Collaborator

Maybe you can edit the comment to strike through the known false positives? e.g. no idea where you got xl3000 from but if you do.

@lynxlynxlynx
Copy link
Member Author

I'd make a new one, so the script output is preserved. But I opened this, so someone else could do it instead. ;) xl3000 is referenced by xnewarea.2da, the epilogues are referenced by TextScreen actions and things with numbers or underscores are often generated.

@lynxlynxlynx
Copy link
Member Author

lynxlynxlynx commented Jan 19, 2020

With removed known users or where there are already reports:

EE general:
7eyes (related to the updated 7 eyes iwd opcode(s))
achievem (steam stuff, can ignore)
banttimg (banter frequencies)
bdstweap (starting equipment for SoD)
clascolr (cg color defaults per class)
clasiskl (duplicates part of our classes.2da/clskills.2da)
clastext (duplicates part of our classes.2da/clskills.2da)
cleartrp and clearwhr (clearair.2da like, probably used by an effect)
clsrcreq (duplicating our tables)
clswpbon (partly duplicates, but worth to split)
concentr (concentration breaking modes)
enginest (similar to our strings.2da files)
familiar (externalized familar mapping)
fogarea and fogpt (fog drawing related)
hidespl (which spells to hide at cg)
hpclass (classes.2da hp, but also for kits)
itmslots (pstee: number, type and order of creature item slots; duplicates our tables)
monkfist (duplicates our table, just transposed)
mxspldd (separate spell table for the sorcerer dragon disciple kit?)
racecolr (cg racial color defaults)
racetext (duplicates races.2da)
skillcls (clskills.2da)
speech (looks like a count of verbal constants)
statval (to do with equipping suggestions)
stylbonu (duplicates our weapon style tables)
thiefscl (thieving skill scaling factors!? Duplicates)
thiefskl (thieving points to distribute; duplicates)
tokentxt (externalized tokens)
varimprt (globals to preserve on game import) #318

EE useless without their data:
bdsham01 - bdsham18 (the shaman summoning modal's creature list?)
mxsplshm (shaman memorization)
ohtyr (clab for one of the new kits)
skillshm (new kit/class table)
spirsumm (probably the map of summons for the shaman modal)
splautos (splautop for shamans)
splshmkn (shaman known spells)
startbp (black pits start.2da)
tbpparty (black pits)

BG2:
importxx <-- for importing bg1 games into bg2 #318

IWD2:
crelight (already noted as TODO in our code)
itemabil (marking which items have extra headers like our itmspcl.2da?)
itemtext (complicated efftext.2da replacement??)
lvlfeat (unhardcoded feat granting frequency)
sr_*, srlist and srtable (fragmented version of races.2da
skillskd (unused adnd kit table)

General:
arealink, arealins and cachvald (some useless biff caching to ignore)
sndenvrn and sndresrf (a subset of our reverbs.2da — check for mismatches), both EAX related?

Known unused:
iwd2 encmod (for encumbrance, but unused)
iwd2 racexpmd (unused)
iwd2 igeffect (unknown)
Nalia's keep quest stuff, likely cut textscreens due to format:
@ kplose
@ kprevolt
@ kpwin
bg2 racehate (cure and larloch, huh)
t2da0000 (treasure?)

@lynxlynxlynx
Copy link
Member Author

lynxlynxlynx commented Aug 31, 2020

IDS are different, since they're directly used in scripts and dialog as named constants. Still, to be complete, better check and perhaps something can be learned.

Checking IESDP (find files/ids/ -type f | cut -d/ -f4 | sort | uniq -c | sort -g), for IDS we get (filtered):

Clown color zoo (we load "clowncol"):

  1 clownran.htm - iwd: some clown color thing
  1 clownrng.htm - iwd2: some clown color thing
  3 clownval.htm - pst + 2x: some clown color thing

Misc todo:

  6 nodecode.htm - missing; if really needed and would only be relevant in dialogs? AttackReevaluate, GiveItemCreate, ChangeAIType are the only listed actions

Obviated:

  6 stats.htm - our stats are a jumble of all 6, but should match — we override it with gemrb/override/shared/stats.ids

Probably useless:

  1 biocolor.htm - pst: a bit malformed, abandoned char customization?
  2 anisnd.htm - supposedly unused, a reference for paperdoll names
  2 prefab.htm - iwd2 + 1x: looks like developer garbage
  1 diety.htm - pst, iwd: incomplete garbage

For many of them IESDP can be checked (actions/triggers), since they're linked in their param list.

lynxlynxlynx added a commit that referenced this issue Sep 3, 2020
@lynxlynxlynx lynxlynxlynx removed the good first issue tasks simple enough for someone completely new to the project label Jul 30, 2021
lynxlynxlynx added a commit that referenced this issue Jul 24, 2022
lynxlynxlynx added a commit that referenced this issue Jul 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature feature request game: bg1 game: bg2 game: ees ee-specific bits and pieces game: iwd1 game: iwd2 game: pst research needed usually means testing in the original, to see how it behaved
Projects
None yet
Development

No branches or pull requests

2 participants