extracted/nds/data/ucc/names.ofs is a
RESO container,
variant=1, with 192 slots totalling 11,376 bytes. Most slots are simple
68-byte name records; 10 slots are "multi-name" arrays
of 68-byte sub-records.
Simple slot (68 bytes)
| Offset | Size | Type | Field |
+0x00 | 2 | u16 | state_code_lo |
+0x02 | 2 | u16 | state_code_hi (0x0000 for multi) |
+0x04 | 64 | UTF-16-LE | name + 0x0000 terminator + NUL pad |
Multi-name slot layout
Multi-name slot length is always a multiple of 68 bytes. Sub-record [0]
is the category/base name; sub-records [1..N-1] are recipe variants
keyed by the 2-byte ingredient-pair code at +0x00.
The engine selects a variant by matching the player's ingredient pair
against each sub-record's key.
Multi-name slot inventory
| Slot | Length | N sub-records | Base name (JP) | Variant family |
| 57 | 136 | 2 | γ±γΌγ | γ·γ§γΌγγ±γΌγ |
| 65 | 680 | 10 | γ·γγ₯γΌ | γ―γͺγΌγ γ·γγ₯γΌ |
| 66 | 408 | 6 | γ·γγ₯γΌ | γγΌγγ·γγ₯γΌ |
| 101 | 136 | 2 | γ’γ€γΉ | γγγ©γ’γ€γΉ |
| 144 | 136 | 2 | γγ³ | γγγ±γ |
| 145 | 340 | 5 | γγ³ | γγ§γ³γγ³ |
| 146 | 136 | 2 | γγ³ | γ―γͺγΌγ γγ³ |
| 149 | 136 | 2 | γγ³ | γΈγ£γ γγ³ |
| 151 | 612 | 9 | γγΉγΏ | γ«γ«γγγΌγ© |
| 152 | 612 | 9 | γγΉγΏ | γγγͺγΏγ³ |
Total sub-records: 49 (10 base + 39 variants), 3,332 bytes.
Worked example β Slot 57 (Cake)
[0] hdr=05000000 name='γ±γΌγ' (category root; simple-slot-style header 0x0005)
[1] hdr=55550000 name='γ·γ§γΌγγ±γΌγ' (variant; key = ASCII 'UU' / 0x55,0x55)
Worked example β Slot 65 (Cream Stew, alphabet {3,7,8,9})
[0] hdr=05060000 name='γ·γγ₯γΌ' (root)
[1] hdr=37390000 name='γ―γͺγΌγ γ·γγ₯γΌ' key '79' (= 0x37,0x39)
[2] hdr=39370000 name='γ―γͺγΌγ γ·γγ₯γΌ' key '97'
[3] hdr=37380000 name='γ―γͺγΌγ γ·γγ₯γΌ' key '78'
[4] hdr=38370000 name='γ―γͺγΌγ γ·γγ₯γΌ' key '87'
[5] hdr=38390000 name='γ―γͺγΌγ γ·γγ₯γΌ' key '89'
[6] hdr=39380000 name='γ―γͺγΌγ γ·γγ₯γΌ' key '98'
[7] hdr=33370000 name='γ―γͺγΌγ γ·γγ₯γΌ' key '37'
[8] hdr=33390000 name='γ―γͺγΌγ γ·γγ₯γΌ' key '39'
[9] hdr=33380000 name='γ―γͺγΌγ γ·γγ₯γΌ' key '38'
All 9 variant names are identical JP text; only the 2-byte key differs.
The 9 keys cover the non-equal ordered pairs over alphabet
{3,7,8,9} where at least one digit is from
{3} plus a partner in {7,8,9}, or any
ordered pair of distinct digits in {7,8,9}.
Re-emit constraint
The RESO container is reflowed on rebuild β per-slot length is recomputed
from actual payload. However, within a multi-name slot
the engine indexes sub-records at fixed 68-byte strides. Therefore:
- Every sub-record must remain exactly 68 bytes.
- Bytes
+0x00..+0x03 (the recipe-pair key) must be
preserved byte-for-byte. - EN name fits in 60 bytes (30 UTF-16 code units, then NUL).
- Sub-record count per slot must stay at N (each variant key must
keep its slot).
All sub-records
Slot 57 β Cake / γ·γ§γΌγγ±γΌγ
| sub | header (hex) | JP | EN |
0 | 05000000 | γ±γΌγ | Cake |
1 | 55550000 | γ·γ§γΌγγ±γΌγ | Shortcake |
Slot 65 β Stew / γ―γͺγΌγ γ·γγ₯γΌ
| sub | header (hex) | JP | EN |
0 | 05060000 | γ·γγ₯γΌ | Stew |
1 | 37390000 | γ―γͺγΌγ γ·γγ₯γΌ | Cream Stew |
2 | 39370000 | γ―γͺγΌγ γ·γγ₯γΌ | Cream Stew |
3 | 37380000 | γ―γͺγΌγ γ·γγ₯γΌ | Cream Stew |
4 | 38370000 | γ―γͺγΌγ γ·γγ₯γΌ | Cream Stew |
5 | 38390000 | γ―γͺγΌγ γ·γγ₯γΌ | Cream Stew |
6 | 39380000 | γ―γͺγΌγ γ·γγ₯γΌ | Cream Stew |
7 | 33370000 | γ―γͺγΌγ γ·γγ₯γΌ | Cream Stew |
8 | 33390000 | γ―γͺγΌγ γ·γγ₯γΌ | Cream Stew |
9 | 33380000 | γ―γͺγΌγ γ·γγ₯γΌ | Cream Stew |
Slot 66 β Stew / γγΌγγ·γγ₯γΌ
| sub | header (hex) | JP | EN |
0 | 05060000 | γ·γγ₯γΌ | Stew |
1 | 26370000 | γγΌγγ·γγ₯γΌ | Beef Stew |
2 | 26390000 | γγΌγγ·γγ₯γΌ | Beef Stew |
3 | 26380000 | γγΌγγ·γγ₯γΌ | Beef Stew |
4 | 38260000 | γγΌγγ·γγ₯γΌ | Beef Stew |
5 | 39260000 | γγΌγγ·γγ₯γΌ | Beef Stew |
Slot 101 β Ice / γγγ©γ’γ€γΉ
| sub | header (hex) | JP | EN |
0 | 05060000 | γ’γ€γΉ | Ice Cream |
1 | 33330000 | γγγ©γ’γ€γΉ | Vanilla Ice Cream |
Slot 144 β Bread / γγγ±γ
| sub | header (hex) | JP | EN |
0 | 05000000 | γγ³ | Bread |
1 | 2f2f0000 | γγγ±γ | Red Bean Bun |
Slot 145 β Bread / γγ§γ³γγ³
| sub | header (hex) | JP | EN |
0 | 05000000 | γγ³ | Bread |
1 | 30300000 | γγ§γ³γγ³ | Choco Bun |
2 | 36300000 | γγ§γ³γγ³ | Choco Bun |
3 | 30360000 | γγ§γ³γγ³ | Choco Bun |
4 | 36360000 | γγ§γ³γγ³ | Choco Bun |
Slot 146 β Bread / γ―γͺγΌγ γγ³
| sub | header (hex) | JP | EN |
0 | 05000000 | γγ³ | Bread |
1 | 32320000 | γ―γͺγΌγ γγ³ | Cream Bun |
Slot 149 β Bread / γΈγ£γ γγ³
| sub | header (hex) | JP | EN |
0 | 05000000 | γγ³ | Bread |
1 | 34340000 | γΈγ£γ γγ³ | Jam Bun |
Slot 151 β Pasta / γ«γ«γγγΌγ©
| sub | header (hex) | JP | EN |
0 | 05000000 | γγΉγΏ | Pasta |
1 | 2a280000 | γ«γ«γγγΌγ© | Carbonara |
2 | 33280000 | γ«γ«γγγΌγ© | Carbonara |
3 | 35280000 | γ«γ«γγγΌγ© | Carbonara |
4 | 282a0000 | γ«γ«γγγΌγ© | Carbonara |
5 | 28330000 | γ«γ«γγγΌγ© | Carbonara |
6 | 28350000 | γ«γ«γγγΌγ© | Carbonara |
7 | 2a330000 | γ«γ«γγγΌγ© | Carbonara |
8 | 332a0000 | γ«γ«γγγΌγ© | Carbonara |
Slot 152 β Pasta / γγγͺγΏγ³
| sub | header (hex) | JP | EN |
0 | 05000000 | γγΉγΏ | Pasta |
1 | 27400000 | γγγͺγΏγ³ | Napolitan |
2 | 40270000 | γγγͺγΏγ³ | Napolitan |
3 | 28400000 | γγγͺγΏγ³ | Napolitan |
4 | 40280000 | γγγͺγΏγ³ | Napolitan |
5 | 27380000 | γγγͺγΏγ³ | Napolitan |
6 | 38270000 | γγγͺγΏγ³ | Napolitan |
7 | 28380000 | γγγͺγΏγ³ | Napolitan |
8 | 38280000 | γγγͺγΏγ³ | Napolitan |
Source
notes/ucc_food_format.md β full decode + inventory notes/ucc_food_inventory.txt β raw sub-record dump extracted/scratch/db/translation.sqlite β ucc_food_subrecords table