WonderWitch .fx files: Difference between revisions

From WSdev Wiki
Jump to navigationJump to search
No edit summary
No edit summary
 
Line 12: Line 12:
| $04 || 60 || Padding; typically 0xFF.
| $04 || 60 || Padding; typically 0xFF.
|-
|-
| $40 || 16 || File name; zero-terminated Shift-JIS string.
| $40 || 64 || [[WonderWitch/Filesystem|File entry]] (pointers relative to 0000:0000).
|-
| $50 || 24 || User-friendly file name; zero-terminated Shift-JIS string.
 
FreyaOS displays the first 12 characters in its file selector.
|-
| $68 || 4 || ?
|-
| $6C || 4 || Total file size, in bytes, excluding the header.
|-
| $70 || 2 || XMODEM chunk count - above file size divided by 128, then rounded up.
|-
| $72 || 2 || File mode
|-
| $74 || 4 || Modification time - seconds since January 1st, 2000.
|-
| $78 || 4 || ?
|-
| $7C || 4 || Offset to resource data, bytes excluding header; -1 if not present.
|}
|}
=== File mode ===
----
<pre>
15  bit  8  7  bit  0
---- ----  ---- ----
???? ????  ??i? ?rwx
              |  |||
              |  ||+- Execute
              |  |+-- Write
              |  +--- Read
              +------- Intermediate library
</pre>

Latest revision as of 14:21, 17 October 2024

FreyaOS uses XMODEM transfers to send and receive files through the serial port. These transfers do not include any file metadata by default - such as the file's name, size, permissions or creation date. As such, .fx files are used - binary files with a special 128-byte header[1].

Format

Header contents
Offset Length Contents
$00 4 Magic string: #!ws
$04 60 Padding; typically 0xFF.
$40 64 File entry (pointers relative to 0000:0000).
  1. XMODEM transfers are performed in 128-byte blocks; this allows fetching the file's metadata as the first block