{"text_format":"3","workbook":"xls","n_sheets":2,"sheets":["現行staticモジュール構造","新staticモジュール構造"],"not_rendered":{"external_links":1,"defined_names":2},"read":"whole","date_system":"1900","formulas":"cached_only"}

{"sheet":"現行staticモジュール構造","index":0,"n_rows":61,"n_cols":23,"rows_kept":61,"merged":[[11,1,11,4],[11,5,11,8],[12,9,12,12],[12,13,12,16],[15,9,15,12],[15,13,15,16],[27,20,28,20],[27,21,28,21],[27,22,28,22],[32,20,33,20],[32,21,33,21],[32,22,33,22],[34,20,37,20],[34,21,37,21],[35,1,35,16],[36,1,36,16],[55,20,56,20],[55,21,56,21],[55,22,56,22],[57,1,57,16],[58,1,58,16]],"flags":["formulas_cached_only"]}
[]
["TWL staticモジュール構造（旧）",{"$nulls":3},"SDK_NITROCODE_BE = 0xDEC00621"]
[{"$nulls":4},"SDK_NITROCODE_LE = 0x2106C0DE"]
[]
[null,"ROM Header"]
[]
[]
["0x0020","ARM9 static ROM addr",{"$nulls":3},"ARM9 static entry addr",{"$nulls":3},"ARM9 static RAM addr",{"$nulls":3},"ARM9 static size"]
["0x0030","ARM7 static ROM addr",{"$nulls":3},"ARM7 static entry addr",{"$nulls":3},"ARM7 static RAM addr",{"$nulls":3},"ARM7 static size"]
[]
[]
["0x0070","ARM9 startAutoloadDone Callback addr",{"$nulls":3},"ARM7 startAutoloadDone Callback addr"]
["0x0080",{"$nulls":8},"ARM9 ModuleParamAddr",{"$nulls":3},"ARM7 ModuleParamAddr"]
[]
[]
["0x0210",{"$nulls":8},"TWL ROM size",{"$nulls":3},"rsv.(=0)"]
[]
[]
[]
[]
[]
[null,"ARM9 static module"]
[null,"libsyscall",{"$nulls":18},"ISデバッガでのARM9デバッグ対応","対応","備考"]
[null,"_start()",{"$nulls":18},"staticモジュールのautoload領域の起動時のブレークポイント設定","×","NITROでは対応しているが、TWLではModuleParamAddrをバイナリサーチで探しているため。"]
[null,"_start_AutoloadDoneCallback()",{"$nulls":18},"staticモジュールのcompress領域の起動時のブレークポイント設定","×","NITROでは対応しているが、TWLではModuleParamAddrをバイナリサーチで探しているため。"]
["start_ModuleParams","autoload_list",{"$nulls":3},"autoload_list_end",{"$nulls":3},"autoload_start",{"$nulls":3},"static_bss_start",{"$nulls":6},"ROMヘッダのModuleParamAddr参照","×","ModuleParamAddrをバイナリサーチで探しているため。"]
["(36bytes)","static_bss_end",{"$nulls":3},"compressed_static_end",{"$nulls":3},"SDK_VERSION_ID(=0)",{"$nulls":3},"SDK_NITROCODE_BE(=0)",{"$nulls":6},"SDK_NITROCODE_BE etc.のバイナリサーチでのModuleParamAddr取得","○","バイナリサーチはしているが、現在staticにSDK_NITROCODE_BE etc.がないので見つからない。"]
[null,"SDK_NITROCODE_LE(=0)",{"$nulls":18},"TLFデバッグ時のstaticファイル読み込み時のStaticFooter処理","○","ARM9のsbinサイズから、StaticFooterサイズの12bytesを決め打ちで削減。\n結果のサイズがROMヘッダのARM9サイズより大きい場合はエラー停止。（小さい場合はOK。）"]
["start_LtdModuleParams","LtdAutoload_list",{"$nulls":3},"LtdAutoload_list_end",{"$nulls":3},"LtdAutoload_start",{"$nulls":3},"compressed_LtdAutoload_end"]
["(16bytes)",{"$nulls":19},"LtdAutoloadモジュールのautoload領域の起動時のブレークポイント設定","×","外部からLtdModuleParamAddrを取得できない。"]
[{"$nulls":20},"LtdAutoloadモジュールのcompress領域の起動時のブレークポイント設定","×","外部からLtdModuleParamAddrを取得できない。"]
[null,"NitroMain()",{"$nulls":18},"ROMヘッダの LtdModuleParamAddr参照","×","ROMヘッダに領域が用意されていない。"]
[{"$nulls":20},"起動時のブレークポイント設定タイミング","○","autoloadおよびcompressの範囲内：AutoloadDoneCallbackで設定。\nそれ以外の領域：即座にブレークポイント設置"]
[]
[{"$nulls":20},"TLFファイルの読み込み","○","ROMヘッダにサイズ値があるファイルも、TLF上のファイルサイズで読み込み。"]
["autoload_start","autoload body...",{"$nulls":16},"ここからstatic_bss開始。",{"$nulls":3},"TLF記載ファイルのタイムスタンプ比較はしていない。（データのみを更新して再デバッグを考慮して、）"]
["Ltdautoload_start","LtdAutoload body...",{"$nulls":20},"TLF記載のファイルサイズ＜実ファイルサイズの場合はエラー停止する。（改変したファイルが全部読めな"]
["Static Footer","SDK_NITROCODE_LE",{"$nulls":3},"staticParamsOffset",{"$nulls":3},"digestParamsOffset",{"$nulls":12},"かったことをユーザーに認識させるため。TLF記載サイズより実サイズが小さい場合は問題なし）"]
["(12bytes)"]
[]
[]
[]
[]
[]
[]
[null,"ARM7 static module"]
[null,"_start()",{"$nulls":18},"ISデバッガでのARM7デバッグ対応","対応","備考"]
[null,"_start_AutoloadDoneCallback()",{"$nulls":18},"staticモジュールのautoload領域の起動時のブレークポイント設定","×","外部からModuleParamAddrを取得できない。"]
["start_ModuleParams","autoload_list",{"$nulls":3},"autoload_list_end",{"$nulls":3},"autoload_start",{"$nulls":3},"static_bss_start",{"$nulls":6},"staticモジュールのcompress領域の起動時のブレークポイント設定","×","外部からModuleParamAddrを取得できない。"]
["(20bytes)","static_bss_end",{"$nulls":18},"ROMヘッダのModuleParamAddr参照","×","ROMヘッダの領域に値がセットされていない。"]
[{"$nulls":20},"SDK_NITROCODE_BE etc.のバイナリサーチでのModuleParamAddr取得","×","SDK_NITROCODE_BE etc.のパラメータがセットされていない。"]
["start_LtdModuleParams","LtdAutoload_list",{"$nulls":3},"LtdAutoload_list_end",{"$nulls":3},"LtdAutoload_start",{"$nulls":10},"TLFデバッグ時のstaticファイル読み込み時のStaticFooter処理","×","ARM9でしかStaticFooter処理はやっていない。"]
["(12bytes)",{"$nulls":19},"LtdAutoloadモジュールのautoload領域の起動時のブレークポイント設定","×","外部からLtdModuleParamAddrを取得できない。"]
[null,"NitroMain()",{"$nulls":18},"LtdAutoloadモジュールのcompress領域の起動時のブレークポイント設定","×","外部からLtdModuleParamAddrを取得できない。"]
[{"$nulls":20},"ROMヘッダの LtdModuleParamAddr参照","×","ROMヘッダに領域が用意されていない。"]
[{"$nulls":20},"起動時のブレークポイント設定タイミング","○","autoloadおよびcompressの範囲内：AutoloadDoneCallbackで設定。\nそれ以外の領域：即座にブレークポイント設置"]
[]
["autoload_start","autoload body...",{"$nulls":16},"ここからstatic_bss開始。"]
["LtdAutoload_start","LtdAutoload body..."]
["StaticFooter","なし"]
["(0bytes)"]

{"sheet":"新staticモジュール構造","index":1,"n_rows":60,"n_cols":24,"rows_kept":60,"merged":[[11,1,11,4],[11,5,11,8],[12,9,12,12],[12,13,12,16],[15,9,15,12],[15,13,15,16],[16,9,16,12],[16,13,16,16],[31,20,32,20],[31,21,32,21],[31,22,32,22],[31,23,32,23],[34,20,38,20],[34,21,38,21],[34,22,38,22],[34,23,38,23],[35,1,35,16],[36,1,36,16],[39,20,41,20],[39,21,41,21],[39,22,41,22],[39,23,41,23],[54,20,55,20],[54,21,55,21],[54,22,55,22],[54,23,55,23],[56,1,56,16],[57,1,57,16]],"flags":["formulas_cached_only"]}
[]
["TWL staticモジュール構造（新）",{"$nulls":3},"SDK_NITROCODE_BE = 0xDEC00621",{"$nulls":7},"SDK_TWLCODE_BE = 0xDEC01463"]
[{"$nulls":4},"SDK_NITROCODE_LE = 0x2106C0DE",{"$nulls":7},"SDK_TWLCODE_LE = 0x6314C0DE"]
[]
[null,"ROM Header"]
[]
[]
["0x0020","ARM9 static ROM addr",{"$nulls":3},"ARM9 static entry addr",{"$nulls":3},"ARM9 static RAM addr",{"$nulls":3},"ARM9 static size"]
["0x0030","ARM7 static ROM addr",{"$nulls":3},"ARM7 static entry addr",{"$nulls":3},"ARM7 static RAM addr",{"$nulls":3},"ARM7 static size"]
[]
[]
["0x0070","ARM9 startAutoloadDone Callback addr",{"$nulls":3},"ARM7 startAutoloadDone Callback addr"]
["0x0080",{"$nulls":8},"ARM9 ModuleParamOffset",{"$nulls":3},"ARM7 ModuleParamOffset"]
[]
[]
["0x0210",{"$nulls":8},"ARM9 LtdModuleParamOffset",{"$nulls":3},"ARM7 LtdModuleParamOffset"]
["0x0220",{"$nulls":8},"TWL ROM size",{"$nulls":3},"rsv."]
[]
[]
[]
[]
[null,"ARM9 static module"]
[null,"libsyscall",{"$nulls":18},"ISデバッガでのARM9デバッグ対応","対応希望","対応済み","備考"]
[null,"_start()",{"$nulls":18},"staticモジュールのautoload領域の起動時のブレークポイント設定","○","？"]
[null,"_start_AutoloadDoneCallback()",{"$nulls":18},"staticモジュールのcompress領域の起動時のブレークポイント設定","○","？"]
["start_ModuleParams","autoload_list",{"$nulls":3},"autoload_list_end",{"$nulls":3},"autoload_start",{"$nulls":3},"static_bss_start",{"$nulls":6},"ROMヘッダのModuleParamOffset参照","○","？"]
["(36bytes)","static_bss_end",{"$nulls":3},"compressed_static_end",{"$nulls":3},"SDK_VERSION_ID",{"$nulls":3},"SDK_NITROCODE_BE",{"$nulls":6},"SDK_NITROCODE_BE etc.のバイナリサーチでのModuleParamAddr取得","×","－","可能だが、必要なし。"]
[null,"SDK_NITROCODE_LE",{"$nulls":18},"TLFデバッグ時のstaticファイル読み込み時のStaticFooter処理","○","？","下記「TLFファイルの読み込み」の対応に含まれる。"]
["start_LtdModuleParams","LtdAutoload_list",{"$nulls":3},"LtdAutoload_list_end",{"$nulls":3},"LtdAutoload_start",{"$nulls":3},"compressed_LtdAutoload_end",{"$nulls":6},"LtdAutoloadモジュールのautoload領域の起動時のブレークポイント設定","○","？"]
["(2４bytes)","SDK_TWLCODE_BE",{"$nulls":3},"SDK_TWLCODE_LE",{"$nulls":14},"LtdAutoloadモジュールのcompress領域の起動時のブレークポイント設定","○","？"]
[{"$nulls":20},"ROMヘッダの LtdModuleParamOffset参照","○","？"]
[null,"NitroMain()",{"$nulls":18},"起動時のブレークポイント設定タイミング","○","？","autoloadおよびcompressの範囲内：AutoloadDoneCallbackで設定。\nそれ以外の領域：即座にブレークポイント設置"]
[]
[{"$nulls":20},"ROMヘッダフォーマット変更のフォロー","○","？","今回のROMヘッダフォーマット変更で、旧フォーマットROMを読んだ時に問題にならないように。"]
[{"$nulls":20},"TLFファイルの読み込み","○","？","TLFのromHeaderOffsetをチェックし、\"0x08\" or \"0x0c\"なら、ARM9static, ARM7staticと判断し、その場合のみ「TLF記載サイズ＜実ファイルサイズ」の場合、実ファイルサイズの”TLF記載サイズ”位置の4bytesを読み出して、その値がSDK_NITROCODE_BE(=0xdec00621)なら、StaticFooterと判断してTLF記載サイズ分を読み込む。違う値の場合はエラー。\nまた、ARM9,ARM7static以外のファイルで、「TLF記載サイズ＜実ファイルサイズ」の場合はエラー。"]
["autoload_start","autoload body...",{"$nulls":16},"ここからstatic_bss開始。"]
["Ltdautoload_start","LtdAutoload body..."]
["Static Footer","SDK_NITROCODE_LE",{"$nulls":3},"staticParamsOffset",{"$nulls":3},"digestParamsOffset",{"$nulls":3},"LtdStaticParamsOffset"]
["(16bytes)"]
[{"$nulls":20},"ROMヘッダの参照場所",null,null,"TWLでは、NANDブートなどがあるので、エミュレーションROM領域のROMヘッダではなく、メインメモリのシステム領域の\"HW_TWL_ROM_HEADER_BUF\"(0x02FFE000)を参照する。"]
[]
[]
[]
[]
[null,"ARM7 static module"]
[null,"_start()",{"$nulls":18},"ISデバッガでのARM7デバッグ対応","対応希望","対応済み","備考"]
[null,"_start_AutoloadDoneCallback()",{"$nulls":18},"staticモジュールのautoload領域の起動時のブレークポイント設定","○","？"]
["start_ModuleParams","autoload_list",{"$nulls":3},"autoload_list_end",{"$nulls":3},"autoload_start",{"$nulls":3},"static_bss_start",{"$nulls":6},"staticモジュールのcompress領域の起動時のブレークポイント設定","○","？"]
["(36bytes)","static_bss_end",{"$nulls":3},"compressed_static_end",{"$nulls":3},"SDK_VERSION_ID",{"$nulls":3},"SDK_NITROCODE_BE",{"$nulls":6},"ROMヘッダのModuleParamOffset参照","○","？"]
[null,"SDK_NITROCODE_LE",{"$nulls":18},"SDK_NITROCODE_BE etc.のバイナリサーチでのModuleParamAddr取得","×","－","可能だが、必要なし。"]
["start_LtdModuleParams","LtdAutoload_list",{"$nulls":3},"LtdAutoload_list_end",{"$nulls":3},"LtdAutoload_start",{"$nulls":3},"compressed_LtdAutoload_end",{"$nulls":6},"TLFデバッグ時のstaticファイル読み込み時のStaticFooter処理","○","？","ARM9と同様に。"]
["(2４bytes)","SDK_TWLCODE_BE",{"$nulls":3},"SDK_TWLCODE_LE",{"$nulls":14},"LtdAutoloadモジュールのautoload領域の起動時のブレークポイント設定","○","？"]
[null,"NitroMain()",{"$nulls":18},"LtdAutoloadモジュールのcompress領域の起動時のブレークポイント設定","○","？"]
[{"$nulls":20},"ROMヘッダの LtdModuleParamOffset参照","○","？"]
[{"$nulls":20},"起動時のブレークポイント設定タイミング","○","？","autoloadおよびcompressの範囲内：AutoloadDoneCallbackで設定。\nそれ以外の領域：即座にブレークポイント設置"]
[]
["autoload_start","autoload body...",{"$nulls":16},"ここからstatic_bss開始。",null,"TLFファイルの読み込み","○","？","ARM9と同様に。"]
["LtdAutoload_start","LtdAutoload body..."]
["StaticFooter","SDK_NITROCODE_LE",{"$nulls":3},"staticParamsOffset",{"$nulls":3},"digestParamsOffset",{"$nulls":3},"LtdStaticParamsOffset"]
["(16bytes)"]