English credit roles module

API: apply_credits.apply(original_rom_bytes, expanded_base_bytes) -> bytes, report.
Apply after the other guarded modules and before the final SNES checksum.

All 12 credit pages are translated. There are 22 semantic role fields across
48 original row references; the last Director row has three aliases. The
Assistant Director group is reflowed under one shared English heading while
preserving all four names. All 30 staff-name occurrences retain their exact
original Japanese glyph bitmaps. Romanized readings are not invented.

Original bindings:
  9C dispatch state60 ->9C:B219/file0E3219; page index WRAM0877.
  Font1:1D:E000..EFFF/file0EE000..0EEFFF (1281bpp16x16 glyphs).
  Font2:22:F000..F7FF/file117000..1177FF (64glyph overlay for pages8..11).
  Credit row tables9C:F67E andF8F6,32+16 entries, four rows per page.
These sources are separate from the main9-bank story registry. The original
credit fonts, row tables and source rows remain unchanged; only three exact
five-byte native entry windows are replaced.

The complete D2 bank/file290000..297FFF is exclusively guarded as FF. It holds
a small bank-safe loader/writer,12compact page fonts and48relocated row records.
Only 10,788 bytes are used; helpers keep DB00 while accessing WRAM and PPU.
The source/code tables are in credits-helper.asm, font-pointers.asm,
row-pointers.asm and credits-data.bin. credits-patch-module.json contains the
exact guarded original changes and complete allocation bytes.

Rebuild source: build_credits.py +credits_sources.py, supplied original ROM,
central English-font source helper and external Asar1.91. The central helper is
used only to derive Latin pixel shapes from the original font; no F0 runtime
font dependency is introduced. credits-translations.json binds every retained
name glyph and translated role to original source offsets and hashes.

Native QA rendered all12pages through the original credit initializer and
matched every expected font cache and tilemap word. All 2,160 per-frame NMI
trampoline checks passed. The page-one executable trampoline at RAM01A0..01A3
remained5C928180. This controlled renderer proof does not claim a complete
campaign ending playthrough. Private native ROMs, snapshots and memory data
are development fixtures and are not required for portable rebuilding.
