== 1. read-only export of /ct_sample.sfc
ExportInsns65816.java> ExportInsns65816: ct_sample.sfc instructions 109293 (overlay 5824, in functions 109292), functions 2719  
ExportMarkup65816.java> ExportMarkup65816: ct_sample.sfc (65816:LE:24:snes): functions 2719, labels 455, comments 693, data 218, equates 20, bookmarks 0, user refs 3920, flow overrides 0, types 119 -> /mnt/work/digitalarch/ghidra-65816/migration/ct/out/markup_sm.json + /mnt/work/digitalarch/ghidra-65816/migration/ct/out/markup_sm.gdt  
== 2. context
overlay ov_7e3000_c3scenes: bytes identical to module_sm_7e3000.bin
dbrd sources: --dbrd /mnt/work/digitalarch/games/Chrono Trigger/tools/out/mod_sm_dbrd.txt --dbrd /mnt/work/digitalarch/games/Chrono Trigger/tools/out/mod2_sm_dbrd.txt --dbrd /mnt/work/digitalarch/games/Chrono Trigger/tools/out/sys_sm_dbrd.txt
runtime sources: --rt /mnt/work/digitalarch/games/Chrono Trigger/tools/out/rt_sm_d_dbr.tsv --rt /mnt/work/digitalarch/games/Chrono Trigger/tools/out/rt_sm_raw_wram.tsv
instructions 109293 (overlay 5824), runs 11896, context ranges 4597
  D-dependent operands known                       17776
  D-dependent operands unknown                     1629
  DBR-dependent operands known                     25627
  DBR-dependent operands unknown                   2785
  ctxfix applied                                   8
  source model                                     72430
  source none                                      349
  source runtime                                   36514
== 3. import /ct_sm_65816.sfc
Snes65816Map.java> Snes65816Map: hirom, 4194304 bytes, header map byte $31, SRAM 8 KB  
Snes65816Map.java> Snes65816Map: bank-0 mirror reads identical to ROM = true  
OverlayImage65816.java> OverlayImage65816: created ov_7e3000_c3scenes at ov_7e3000_c3scenes::7e3000 len 18770  
ApplyRuns65816.java> ApplyRuns65816: context ranges set 4597/4597; runs disassembled 11896, already present 0, blocked 0, tiling failures 0; instructions 0 -> 109293  
ApplyRuns65816.java> ApplyRuns65816: DBR/D context verified on 109293 instructions, mismatches 0  
ImportMarkup65816.java> ImportMarkup65816: source ct_sample.sfc (65816:LE:24:snes), register translation ghidra-snes -> ghidra-65816  
ImportMarkup65816.java> ImportMarkup65816: types resolved 122  
ImportMarkup65816.java> ImportMarkup65816: functions created 2719 (exact body 2719, flow body 0), renamed 0, calling conventions 0, prototypes 591, thunks 50  
ImportMarkup65816.java> ImportMarkup65816: labels 258  
ImportMarkup65816.java> ImportMarkup65816: data 218  
ImportMarkup65816.java> ImportMarkup65816: comments 693  
ImportMarkup65816.java> ImportMarkup65816: equate references 27  
ImportMarkup65816.java> ImportMarkup65816: bookmarks 0  
ImportMarkup65816.java> ImportMarkup65816: user references 3920  
ImportMarkup65816.java> ImportMarkup65816: flow overrides 0  
ImportMarkup65816.java> ImportMarkup65816: skipped 197 x label: already present  
ImportMarkup65816.java> ImportMarkup65816: 8476 applied, 0 failed  
FunctionSnapshot.java> saved 2719 functions to /mnt/work/digitalarch/ghidra-65816/migration/ct/out/new_sm_snapshot_replayed.tsv  
TailCalls65816.java> TailCalls65816: new function at c20000 (JML target from c0006e)  
TailCalls65816.java> TailCalls65816: new function at c30000 (JML target from c033f0)  
TailCalls65816.java> TailCalls65816: new function at fdfff1 (JML target from c033f8)  
TailCalls65816.java> TailCalls65816: new function at fdffeb (JML target from c03400)  
TailCalls65816.java> TailCalls65816: new function at fdffe8 (JML target from c03408)  
TailCalls65816.java> TailCalls65816: new function at fdffe5 (JML target from c0340c)  
TailCalls65816.java> TailCalls65816: new function at c00000 (JML target from c224e0)  
TailCalls65816.java> TailCalls65816: new function at c0000e (JML target from fdc7d3)  
TailCalls65816.java> TailCalls65816: long-jump targets made functions 8  
TailCalls65816.java> TailCalls65816: CALL_RETURN set 213, already 0, cleared 0; functions 2719 -> 2728, instructions 109293 -> 109293  
CtFixOrphans.java> CtFixOrphans: orphan bytes 408 -> 0; functions 2728 -> 2732  
JumpTableOverrides65816.java> JumpTableOverrides65816: overrides 56, computed jumps with no known destinations 7, not in a function 0  
SetCallConventions65816.java> SetCallConventions65816: set {__jsl=118, __jsr=2488, __rti=14}, user-set kept 45, RTS+RTL mixed (left) 0  
Analyzed65816.java> Analyzed65816: analyzers switched off 17 (all)  
FunctionSnapshot.java> saved 2732 functions to /mnt/work/digitalarch/ghidra-65816/migration/ct/out/new_sm_snapshot.tsv  
ExportInsns65816.java> ExportInsns65816: ct_sm_65816.sfc instructions 109293 (overlay 5824, in functions 109293), functions 2732  
ExportMarkup65816.java> ExportMarkup65816: ct_sm_65816.sfc (65816:LE:24:snes-hirom): functions 2732, labels 835, comments 693, data 218, equates 20, bookmarks 0, user refs 3920, flow overrides 213, types 119 -> /mnt/work/digitalarch/ghidra-65816/migration/ct/out/markup_sm_new.json + /mnt/work/digitalarch/ghidra-65816/migration/ct/out/markup_sm_new.gdt  
== 4. checks
old 109293, new 109293, new-only 0 (overlay 5824)
  context changed by ctxfix (intended)         8 
  instructions identical
comments by kind old {'PLATE': 693} new {'PLATE': 693}
types old 119 new 119; user references old 3920 new 3920; flow overrides old 0 new 213; prototypes (non-default) old 591
old: functions 2719 labels 455 comments 693 data 218 equates 20 | new: functions 2732 labels 835 comments 693 data 218
markup check: everything in the old program is present in the new one
done: new program /ct_sm_65816.sfc in /tmp/claude-1000/ctcopy3/Chrono Trigger.gpr (old /ct_sample.sfc untouched).  Log: /mnt/work/digitalarch/ghidra-65816/migration/ct/out/migrate_sm.log
