Saturday, November 30, 2024

boards

  • 12 boards
  • floor is ~3 boards wide
  • repeat every 4 boards

Start

Count12
Sum155
Mean (Average)12.916666666667
Median13
Mode11, appeared 3 times
Largest17
Smallest9
Range8
Geometric Mean12.678000815513
Standard Deviation2.4650332429582
Variance6.0763888888889
Sample Standard Deviation2.5746432527222
Sample Variance6.6287878787879

Sorted data: 9, 10, 11, 11, 11, 12, 14, 14, 15, 15, 16, 17

2

Count12
Sum104
Mean (Average)8.6666666666667
Median9
Mode9, appeared 4 times
Largest11
Smallest6
Range5
Geometric Mean8.5619659795179
Standard Deviation1.3123346456686
Variance1.7222222222222
Sample Standard Deviation1.3706888336847
Sample Variance1.8787878787879

Sorted data: 6, 7, 8, 8, 8, 9, 9, 9, 9, 10, 10, 11

3

Count12
Sum73
Mean (Average)6.0833333333333
Median6
Mode6, appeared 6 times
Largest8
Smallest5
Range3
Geometric Mean6.0245595082399
Standard Deviation0.86200670273238
Variance0.74305555555556
Sample Standard Deviation0.90033663737852
Sample Variance0.81060606060606

Sorted data: 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 8

3 - extra boards

Count12
Sum31
Mean (Average)2.5833333333333
Median2.5
Mode2, 3, each appeared 4 times
Largest5
Smallest1
Range4
Geometric Mean2.3323993753204
Standard Deviation1.114924013355
Variance1.2430555555556
Sample Standard Deviation1.1645001528813
Sample Variance1.3560606060606
GIF

Wednesday, September 4, 2024

Ejabberd xmpp setup

stephen@localhost:~$ sudo ejabberdctl status
The node ejabberd@localhost is started with status: started
ejabberd 23.01-1 is running in that node
stephen@localhost:~$ sudo ejabberdctl register admin localhost password
  • http://host:5280/admin ❌ no automatic https redirect. Firefox will just say connection reset.
  • https://host:5280/admin ✅

If you don't have the domain in the hosts section, andoroid app "conversations" will say: "The server is not responsible for this domain"

If you don't have the ssl certificate for the domain, andoroid app "conversations" will say "Domain not verifiable"

Aug 22 09:41:30 localhost sh[3317724]: 2024-08-22 09:41:30.400875-06:00 [warning] Invalid certificate in /etc/ejabberd/ejabberd.pem: at line 29: self-signed certificate
Aug 22 09:41:30 localhost sh[3317724]: 2024-08-22 09:41:30.550154-06:00 [warning] No certificate found matching localhost
"Invalid certificate" is not a helpful mesage. It still gets used. "No certificate found matching " domain. Needs a certificate, selfsigned is ok for "conversations". https://letsencrypt.org/docs/certificates-for-localhost/


stephen@localhost:~$ openssl req -x509 -out localhost.crt -keyout localhost.key   -newkey rsa:2048 -nodes -sha256   -subj '/CN=localhost' -extensions EXT -config <( \
   printf "[dn]\nCN=localhost\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:localhost\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth")

stephen@localhost:~$ cat localhost.crt localhost.key > localhost.net.pem

stephen@localhost:~$ sudo mv localhost.pem /etc/ejabberd/

stephen@localhost:~$ sudo chmod o-r /etc/ejabberd/localhost.pem

stephen@localhost:~$ sudo chown root:ejabberd /etc/ejabberd/localhost.pem
  

add cert to ssl section, or /etc/ejabberd/*.pem

"conversations" pops up a accept self signed certificate dialog👍.

Thunderbird won't accept self-signed certificate, and won't import it since it is not attached to a root certificate.

xabber: success

gajim: success, but I had to use a self signed certificate on c-###-###-###-###.**.**.comcast.net

TODO: let's encript certificate for c-###-###-###-###.**.**.comcast.net

/etc/ejabberd/ejabberd.yml Add a new port dedicated to /.well-known/acme-challenge with no tls. Don't want to expose /admin to the internet.

listen:
  …
  -
    port: 5280
    ip: "::"
    module: ejabberd_http
    tls: true
    protocol_options: 'TLS_OPTIONS'
    request_handlers:
      /admin: ejabberd_web_admin
  -
    port: 5281
    ip: "::"
    module: ejabberd_http
    tls: false
    request_handlers:
      /.well-known/acme-challenge: ejabberd_acme
…

acme:
  ## Staging environment
  # ca_url: https://acme-staging-v02.api.letsencrypt.org/directory
  ## Production environment (the default):
  ca_url: https://acme-v02.api.letsencrypt.org/directory
  contact:
    - mailto:email@address.abc
  auto: false


On Router, Forward port 80 to host:5281

sudo ejabberdctl reload-config
stephen@localhost:~$ sudo ejabberdctl request-certificate c-###-###-###-###.**.**.comcast.net

Aug 31 23:37:05 localhost sh[3326311]: 2024-08-31 23:37:05.414392-06:00 [warning] (tls|<0.24978.0>) Failed to secure c2s connection: TLS failed: SSL_do_handshake failed: error:0A000418:SSL routines::tlsv1 alert un
known ca
Aug 31 23:39:27 localhost sh[3326311]: 2024-08-31 23:39:27.683334-06:00 [warning] Invalid certificate in /etc/ejabberd/ejabberd.pem: at line 29: self-signed certificate
Aug 31 23:39:27 localhost sh[3326311]: 2024-08-31 23:39:27.683609-06:00 [warning] Invalid certificate in /etc/ejabberd/localhost.pem: at line 1: self-signed certificate
Aug 31 23:39:27 localhost sh[3326311]: 2024-08-31 23:39:27.684003-06:00 [warning] Invalid certificate in /etc/ejabberd/c-###-###-###.###.**.**.comcast.net.pem: at line 1: self-signed certificate
Aug 31 23:39:27 localhost sh[3326311]: 2024-08-31 23:39:27.684169-06:00 [warning] Invalid certificate in /var/lib/ejabberd/acme/live/673de21aab62e1d7f7381bf91e228d9fef65d858: at line 33: certificate is signed by u
nknown CA
Aug 31 23:39:27 localhost sh[3326311]: 2024-08-31 23:39:27.687168-06:00 [warning] No certificate found matching pubsub.c-###-###-###.###.**.**.comcast.net
Aug 31 23:39:27 localhost sh[3326311]: 2024-08-31 23:39:27.687708-06:00 [warning] No certificate found matching pubsub.localhost
Aug 31 23:39:27 localhost sh[3326311]: 2024-08-31 23:39:27.688172-06:00 [warning] No certificate found matching conference.c-###-###-###.###.**.**.comcast.net
Aug 31 23:39:27 localhost sh[3326311]: 2024-08-31 23:39:27.688525-06:00 [warning] No certificate found matching conference.localhost
Aug 31 23:39:34 localhost sh[3326311]: 2024-08-31 23:39:34.685165-06:00 [info] Requesting new certificate for c-###-###-###.###.**.**.comcast.net from https://acme-v02.api.letsencrypt.org/directory
Aug 31 23:39:34 localhost sh[3326311]: 2024-08-31 23:39:34.688079-06:00 [warning] Description: "Server authenticity is not verified since certificate path validation is not enabled"
Aug 31 23:39:34 localhost sh[3326311]:      Reason: "The option {verify, verify_peer} and one of the options 'cacertfile' or 'cacerts' are required to enable this."
Aug 31 23:39:35 localhost sh[3326311]: 2024-08-31 23:39:35.762439-06:00 [info] (<0.24996.0>) Accepted connection [::ffff:23.178.112.106]:43071 -> [::ffff:hostip]:5281
Aug 31 23:39:36 localhost sh[3326311]: 2024-08-31 23:39:36.541308-06:00 [info] (<0.24997.0>) Accepted connection [::ffff:52.15.221.119]:61934 -> [::ffff:hostip]:5281
Aug 31 23:39:36 localhost sh[3326311]: 2024-08-31 23:39:36.672292-06:00 [info] (none) Accepted connection [::ffff:54.244.171.41]:59620 -> [::ffff:hostip]:5281
Aug 31 23:39:37 localhost sh[3326311]: 2024-08-31 23:39:37.345892-06:00 [info] (<0.24999.0>) Accepted connection [::ffff:13.60.206.97]:53738 -> [::ffff:hostip]:5281
Aug 31 23:39:38 localhost sh[3326311]: 2024-08-31 23:39:38.138653-06:00 [info] (<0.25000.0>) Accepted connection [::ffff:54.169.83.90]:13572 -> [::ffff:hostip]:5281
Aug 31 23:39:40 localhost sh[3326311]: 2024-08-31 23:39:40.476201-06:00 [warning] Invalid certificate in /etc/ejabberd/ejabberd.pem: at line 29: self-signed certificate
Aug 31 23:39:40 localhost sh[3326311]: 2024-08-31 23:39:40.476444-06:00 [warning] Invalid certificate in /etc/ejabberd/localhost.pem: at line 1: self-signed certificate
Aug 31 23:39:40 localhost sh[3326311]: 2024-08-31 23:39:40.476723-06:00 [warning] Invalid certificate in /etc/ejabberd/c-###-###-###.###.**.**.comcast.net.pem: at line 1: self-signed certificate
Aug 31 23:39:40 localhost sh[3326311]: 2024-08-31 23:39:40.477505-06:00 [warning] No certificate found matching pubsub.c-###-###-###.###.**.**.comcast.net
Aug 31 23:39:40 localhost sh[3326311]: 2024-08-31 23:39:40.477934-06:00 [warning] No certificate found matching pubsub.localhost
Aug 31 23:39:40 localhost sh[3326311]: 2024-08-31 23:39:40.478367-06:00 [warning] No certificate found matching conference.c-###-###-###.###.**.**.comcast.net
Aug 31 23:39:40 localhost sh[3326311]: 2024-08-31 23:39:40.478763-06:00 [warning] No certificate found matching conference.localhost
Aug 31 23:39:40 localhost sh[3326311]: 2024-08-31 23:39:40.479104-06:00 [info] Certificate for c-###-###-###.###.**.**.comcast.net has been received, stored and loaded successfully
Aug 31 23:39:44 localhost sh[3326311]: 2024-08-31 23:39:44.326185-06:00 [info] (<0.25001.0>) Accepted connection [::ffff:143.198.151.68]:46516 -> [::ffff:hostip]:5281
Aug 31 23:39:44 localhost sh[3326311]: 2024-08-31 23:39:44.451175-06:00 [info] (<0.25002.0>) Accepted connection [::ffff:143.198.151.68]:46520 -> [::ffff:hostip]:5281
Aug 31 23:39:45 localhost sh[3326311]: 2024-08-31 23:39:45.881766-06:00 [info] (<0.25003.0>) Accepted connection [::ffff:206.81.24.74]:34142 -> [::ffff:hostip]:5281
Aug 31 23:39:46 localhost sh[3326311]: 2024-08-31 23:39:46.187836-06:00 [info] (<0.25004.0>) Accepted connection [::ffff:206.81.24.74]:34146 -> [::ffff:hostip]:5281
Aug 31 23:39:46 localhost sh[3326311]: 2024-08-31 23:39:46.512463-06:00 [info] (<0.25005.0>) Accepted connection [::ffff:206.81.24.74]:34154 -> [::ffff:hostip]:5281
Aug 31 23:39:46 localhost sh[3326311]: 2024-08-31 23:39:46.833833-06:00 [info] (<0.25006.0>) Accepted connection [::ffff:206.81.24.74]:34166 -> [::ffff:hostip]:5281
Aug 31 23:39:47 localhost sh[3326311]: 2024-08-31 23:39:47.201514-06:00 [info] (<0.25007.0>) Accepted connection [::ffff:206.81.24.74]:34174 -> [::ffff:hostip]:5281
Aug 31 23:39:47 localhost sh[3326311]: 2024-08-31 23:39:47.516529-06:00 [info] (<0.25008.0>) Accepted connection [::ffff:206.81.24.74]:34176 -> [::ffff:hostip]:5281
Aug 31 23:39:47 localhost sh[3326311]: 2024-08-31 23:39:47.817953-06:00 [info] (<0.25009.0>) Accepted connection [::ffff:206.81.24.74]:34190 -> [::ffff:hostip]:5281
Aug 31 23:39:48 localhost sh[3326311]: 2024-08-31 23:39:48.132528-06:00 [info] (<0.25010.0>) Accepted connection [::ffff:206.81.24.74]:34198 -> [::ffff:hostip]:5281
Aug 31 23:39:48 localhost sh[3326311]: 2024-08-31 23:39:48.436677-06:00 [info] (<0.25011.0>) Accepted connection [::ffff:206.81.24.74]:34208 -> [::ffff:hostip]:5281
Aug 31 23:39:48 localhost sh[3326311]: 2024-08-31 23:39:48.755969-06:00 [info] (<0.25012.0>) Accepted connection [::ffff:206.81.24.74]:34216 -> [::ffff:hostip]:5281
Aug 31 23:39:49 localhost sh[3326311]: 2024-08-31 23:39:49.091475-06:00 [info] (<0.25013.0>) Accepted connection [::ffff:206.81.24.74]:34230 -> [::ffff:hostip]:5281
Aug 31 23:39:49 localhost sh[3326311]: 2024-08-31 23:39:49.401700-06:00 [info] (<0.25014.0>) Accepted connection [::ffff:206.81.24.74]:34232 -> [::ffff:hostip]:5281
Aug 31 23:39:49 localhost sh[3326311]: 2024-08-31 23:39:49.710954-06:00 [info] (<0.25015.0>) Accepted connection [::ffff:206.81.24.74]:34244 -> [::ffff:hostip]:5281
Aug 31 23:39:50 localhost sh[3326311]: 2024-08-31 23:39:50.025064-06:00 [info] (<0.25016.0>) Accepted connection [::ffff:206.81.24.74]:34260 -> [::ffff:hostip]:5281
Aug 31 23:39:50 localhost sh[3326311]: 2024-08-31 23:39:50.360697-06:00 [info] (<0.25017.0>) Accepted connection [::ffff:206.81.24.74]:34276 -> [::ffff:hostip]:5281
Aug 31 23:39:50 localhost sh[3326311]: 2024-08-31 23:39:50.780137-06:00 [info] (<0.25018.0>) Accepted connection [::ffff:206.81.24.74]:34286 -> [::ffff:hostip]:5281
Aug 31 23:39:51 localhost sh[3326311]: 2024-08-31 23:39:51.168709-06:00 [info] (<0.25019.0>) Accepted connection [::ffff:206.81.24.74]:34300 -> [::ffff:hostip]:5281
Aug 31 23:39:51 localhost sh[3326311]: 2024-08-31 23:39:51.486191-06:00 [info] (<0.25020.0>) Accepted connection [::ffff:206.81.24.74]:34302 -> [::ffff:hostip]:5281
Aug 31 23:39:51 localhost sh[3326311]: 2024-08-31 23:39:51.796425-06:00 [info] (<0.25021.0>) Accepted connection [::ffff:206.81.24.74]:34318 -> [::ffff:hostip]:5281
Aug 31 23:39:52 localhost sh[3326311]: 2024-08-31 23:39:52.122422-06:00 [info] (<0.25022.0>) Accepted connection [::ffff:206.81.24.74]:34334 -> [::ffff:hostip]:5281
Aug 31 23:39:53 localhost sh[3326311]: 2024-08-31 23:39:53.951668-06:00 [info] (<0.25023.0>) Accepted connection [::ffff:routerip]:31576 -> [::ffff:hostip]:5222
Aug 31 23:39:54 localhost sh[3326311]: 2024-08-31 23:39:54.696885-06:00 [info] (tls|<0.25023.0>) Accepted c2s PLAIN authentication for stephen@c-###-###-###.###.**.**.comcast.net by mnesia backend from ::ffff:routerip
Aug 31 23:39:54 localhost sh[3326311]: 2024-08-31 23:39:54.840532-06:00 [info] (tls|<0.25023.0>) Opened c2s session for stephen@c-###-###-###.###.**.**.comcast.net/75319872506902643567650
Aug 31 23:41:16 localhost sh[3326311]: 2024-08-31 23:41:16.255665-06:00 [info] (tls|<0.25023.0>) Closing c2s session for stephen@c-###-###-###.###.**.**.comcast.net/75319872506902643567650: Stream reset by peer
Aug 31 23:41:18 localhost sh[3326311]: 2024-08-31 23:41:18.206696-06:00 [info] (<0.25026.0>) Accepted connection [::ffff:routerip]:31612 -> [::ffff:hostip]:5222
Aug 31 23:41:18 localhost sh[3326311]: 2024-08-31 23:41:18.303128-06:00 [info] (tls|<0.25026.0>) Accepted c2s PLAIN authentication for stephen@c-###-###-###.###.**.**.comcast.net by mnesia backend from ::ffff:routerip
Aug 31 23:41:18 localhost sh[3326311]: 2024-08-31 23:41:18.309648-06:00 [info] (tls|<0.25026.0>) Opened c2s session for stephen@c-###-###-###.###.**.**.comcast.net/162245154133226236037682
Aug 31 23:41:55 localhost sh[3326311]: 2024-08-31 23:41:55.630604-06:00 [info] (<0.25033.0>) Accepted connection [::ffff:151.115.77.26]:44438 -> [::ffff:hostip]:5281
Aug 31 23:41:56 localhost sh[3326311]: 2024-08-31 23:41:56.463942-06:00 [info] (<0.25034.0>) Accepted connection [::ffff:51.158.161.239]:44440 -> [::ffff:hostip]:5281
Aug 31 23:42:42 localhost sh[3326311]: 2024-08-31 23:42:42.274265-06:00 [info] (<0.25037.0>) Accepted connection [::ffff:104.253.214.203]:24166 -> [::ffff:hostip]:5281
Aug 31 23:42:52 localhost sh[3326311]: 2024-08-31 23:42:52.775135-06:00 [info] (<0.25038.0>) Accepted connection [::ffff:104.252.186.64]:60132 -> [::ffff:hostip]:5281
Aug 31 23:42:59 localhost sh[3326311]: 2024-08-31 23:42:59.951648-06:00 [info] (<0.25039.0>) Accepted connection [::ffff:104.252.31.34]:46090 -> [::ffff:hostip]:5281
Aug 31 23:43:08 localhost sh[3326311]: 2024-08-31 23:43:08.766915-06:00 [info] (<0.25040.0>) Accepted connection [::ffff:104.252.186.177]:65320 -> [::ffff:hostip]:5281
Aug 31 23:43:19 localhost sh[3326311]: 2024-08-31 23:43:19.681211-06:00 [info] (<0.25041.0>) Accepted connection [::ffff:107.172.179.50]:34442 -> [::ffff:hostip]:5281
Aug 31 23:43:26 localhost sh[3326311]: 2024-08-31 23:43:26.041941-06:00 [info] (<0.25042.0>) Accepted connection [::ffff:routerip]:31679 -> [::ffff:hostip]:5281
Aug 31 23:44:18 localhost sh[3326311]: 2024-08-31 23:44:18.731472-06:00 [info] (<0.25044.0>) Accepted connection [::ffff:45.148.10.251]:45056 -> [::ffff:hostip]:5281
Sep 01 05:17:56 localhost sh[3326311]: 2024-09-01 05:17:56.509260-06:00 [info] (<0.25662.0>) Accepted connection [::ffff:routerip]:39432 -> [::ffff:hostip]:5222
Sep 01 05:17:56 localhost sh[3326311]: 2024-09-01 05:17:56.676637-06:00 [info] (tls|<0.25662.0>) Accepted c2s SCRAM-SHA-1 authentication for stephen@c-###-###-###.###.**.**.comcast.net by mnesia backend from ::ffff:routerip

close port 80 on router

Saturday, October 28, 2023

Friday, October 27, 2023

Dark Forces Agent Menu modify

Dark Forces Data->Cutscenes->AGENTMNU.LFD->AGENTDLG(ANIM)->1(DELT)

python ..\..\dftools-master\lfdtool.py AGENTMNU.LFD AGENTMNU

python ..\..\..\dftools-master\animtool.py AGENTMNU\AGENTDLG.ANM AGENTDLG

https://darkforces.reviews/database/specs/delt-lfd-resource-dlt-files

https://github.com/njankowski/dftools can decode, but not re-encode

D:\Games\TheForceEngine-v1.09.530\ModPrep\Dark Forces Data\Cutscenes\AGENTMNU\AGENTDLG>..\..\..\..\..\bmpdf\DF2.EXE /D AGENTDLG_1.DELT AGENTDLG_1.BMP ..\..\MENU\MENU.PLT
This version of D:\Games\TheForceEngine-v1.09.530\bmpdf\DF2.EXE is not compatible with the version of Windows you're running. Check your computer's system information and then contact the software publisher.

to dosbox

BMPDF\DF2.exe /D AGENTD~2.DEL 1.BMP

The actual image is offset by (4D 00, 3D 00) or (77, 61) I assume that is to center it on the 320x200 screen. DF2.exe encodes the top 77 and left 61 pixels as "transparent" or black or 0, while delt.py decodes all the tranparenet pixels transparent, with the actual image data centered in 319x187 png. We don't want to re-encode that blank spaces so crop it down at 77,61

edit the words img placeholder

BMPDF\2DF.exe /D 1e.BMP 1.DEL /0=0

ok, the bytes look a bit different, but mostly the same, but it is a different size

if we copy the header back over

Error: Invalid picture - out of bounds file: 1H.DEL

If we only edit the size, but leave offset to 0,0

Each line's StartX and StartY are likely relative to OffsX and OffsY. On the original, the top and bottom lines probably don't contain data for the rounded corners, and are likely short by 4 then 2 pixels.

... fires up vscode, delttool.py => delt.py, and sets some breakpoints. Yeah different sizes for lines, but also, portions of the line are compressed(not just per line, but sections of the line), so I can't just find the bits and alter them.

Ok, going back to 2DF.exe... tring 2DF.EXE /D /0=0 1.BMP 1ORIG.DEL, and it creates a DEL file that is slightly smaller than the original AGENTDLG_1.DELT. Decoding show the same as the input, so maybe it is just better compression?

Well animtool.py and lfdtool.py don't re-encode, So I'm sticking with dosbox, I guess.

df2.exe /D and 2df.exe /D were not what i need. 2df.exe /M

2df.exe /m AGENTDLG.txt

ANIM AGENTDLG.ANM 1
AGENTD1.BMP /0=0

2df.exe /m AGENTMNU.txt

LFD AGENTMNU.LFD 1
AGENTDLG.ANM

Now I have a single DELT in a single ANIM in an LFD. hopefully using this as a mod doesn't overwrite bits not present. didn't work. Maybe I need to pack it in a gob, maybe the engine doesn't load mods for the menu, IDK.

Tuesday, October 10, 2023

Force Engine - Mac data

Mac rendered at 640x480 apposed to Dos at 320xsomething

Maybe not 480, probably 400? Menu says 640x400...640x395 measured?

600x400 doubled pixels, so 300x200?

Anyway, 384x200 is "teensy":

Most parts are the same, but

  • the loading screen was 640x480
  • hud textures were double resolution 
  • weapons data stored in WEAPONS.GOB, but otherwise the same content
  • minor differences in levels
  • fonts smoother(extra Glowing!.fnt ?)
  • music same/different. music is stored in resource fork?
  • cutscenes: same except for AGENTMNU.LFD and MENU.LFD (font was upscaled, the button names were changed from "DOS" to "QUIT", and a mysterious widening of two parallel red lines.

 



The big changes below are not changes, just re-ordered arm1 <-> arm2 messages


Hotkeys, quit hotkey changed to qQ from dD

NARSHADA.O is missing an object(missing the remote sprite), and extra LOGIC: ANIM in nava card:



SECBASE.O only has an extra LOGIC: ANIM similar to the one in NARSHADA



TEXT.MSG is mac-ified:

The midi instruments are stored in instruments1,2, all in the resource fork(I think that is all that and menu/icon things are all the resource fork data):




instruments in 2 are roughly double the size of 1 so probably 16bit?

Stereo Panning? ... listens. It seems to work. dos version doesn't have an option for it, but it seems to work by default.

I don't know if there is a way to send the midi data out of the mac version, or if the instruments provided are all we get.

cutscenes (extracted with DF2.exe in dosbox, probably could have used lfdtool.py in win):

 

python ..\..\..\..\..\dftools-master\delttool.py AGENTDLG_11.DELT ..\AGENTMNU.PLT


MAC 324x182
Dos 323x188

I think I need some more context.

All the other AGENTDLG_##.DELT are just various menu ui bits, "are you sure you want to quit", "yes", "no" buttons and such.

AGENTMENU.ANIM
D:\Games\TheForceEngine-v1.09.530\ModPrep\Dark Forces Data\Cutscenes\AGENTMNU>python ..\..\..\..\dftools-master\animtool.py extract AGENTMNU.ANM AGENTMNU
Extracting "D:\Games\TheForceEngine-v1.09.530\ModPrep\Dark Forces Data\Cutscenes\AGENTMNU\AGENTMNU.ANM" into directory "D:\Games\TheForceEngine-v1.09.530\ModPrep\Dark Forces Data\Cutscenes\AGENTMNU\AGENTMNU"





Macified text.


D:\Games\TheForceEngine-v1.09.530\ModPrep\Dark Forces Data-dos\LFD\MENU>python ..\..\..\..\dftools-master\fnttool.py FONT8.FON
Traceback (most recent call last):
  File "D:\Games\TheForceEngine-v1.09.530\dftools-master\fnttool.py", line 4, in <module>
    from PIL import Image
ModuleNotFoundError: No module named 'PIL'

D:\Games\TheForceEngine-v1.09.530\ModPrep\Dark Forces Data-dos\LFD\MENU>pip install Pillow
Collecting Pillow
  Downloading Pillow-10.0.1-cp39-cp39-win_amd64.whl (2.5 MB)
     |████████████████████████████████| 2.5 MB 3.2 MB/s
Installing collected packages: Pillow
Successfully installed Pillow-10.0.1
WARNING: You are using pip version 21.0; however, version 23.2.1 is available.
You should consider upgrading via the 'c:\python39\python.exe -m pip install --upgrade pip' command.

D:\Games\TheForceEngine-v1.09.530\ModPrep\Dark Forces Data-dos\LFD\MENU>python ..\..\..\..\dftools-master\fnttool.py FONT8.FON
Loaded built-in palette "SECBASE"
Converting "D:\Games\TheForceEngine-v1.09.530\ModPrep\Dark Forces Data-dos\LFD\MENU\FONT8.FON"
Traceback (most recent call last):
  File "D:\Games\TheForceEngine-v1.09.530\dftools-master\fnttool.py", line 44, in <module>
    main()
  File "D:\Games\TheForceEngine-v1.09.530\dftools-master\fnttool.py", line 40, in main
    from_fnt(args)
  File "D:\Games\TheForceEngine-v1.09.530\dftools-master\fnttool.py", line 23, in from_fnt
    fnt.to_image(fnt.read(image), rgb_palette).save(f'{imageName}.png')
  File "D:\Games\TheForceEngine-v1.09.530\dftools-master\formats\fnt.py", line 23, in read
    raise Exception('File does not have FNT magic identifier.')
Exception: File does not have FNT magic identifier.

oh it isn't a 'fnt' it is a 'font'


\(〇_o)/
Gimp to the rescue
Mac - Dos

The mission briefing uses a different font:


Jan looks a bit smoother

Yep, some of those pixels have been al/tered.

I cant find the upscaled jan and mon mothma images. TFE looks like it is

s_menuActor = lactorAnim_load(bgAnim, &bounds, 0, 0, 0);

which does a:

sprintf(animName, "%s.ANIM", name);

name -> bgAnim ->  brief -> bgAnim -> &s_sharedState.briefingList.briefing[briefingIndex];

list gets loaded in with:
if (!parseBriefingList(&s_sharedState.briefingList, "briefing.lst"))

which is in DARK.GOB. I probably should have guess that,

LEV: SECBASE    LFD: dfbrief.lfd ANI: brf-mon PAL: brf-jan
DFBRIEF.LFD ... meld showed them as identical, but I'll check 'brf-mon' or 'brf-jan' or 'brf-nil'
brf-jan.anim -> brf-jan_0.DELT has the background, but it is the same as the dos version 311x200.

 

I'm still not sure where the extra pixels come from.