Last active
July 15, 2024 11:42
-
-
Save RGBA-CRT/4ddd038f4f9000e4213d60ac00b308e3 to your computer and use it in GitHub Desktop.
GBA 犬夜叉 解析メモ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # GBA 犬夜叉 解析メモ | |
| 2024/5/27 RGBA_CRT | |
| デバッグメニューを探したい | |
| =============================================================== | |
| ```c | |
| 「中断したところからゲームを再開します」 is param1=8204, param2=b5 | |
| filter: (R0!=$4500) && (R0!=$4600) | |
| ScriptEngine_Prepare -> 0x0800105c | |
| PTR_DAT_TextBaseTableTable -> 0x087dd63c | |
| ScriptEngine_Prepare(param1, param2) | |
| -> uint8_t tbl_idx = (param1 >> 8) & 0x3F = 2 | |
| -> uint8_t tbl_idx2 = (param1 ) & 0xfF = 4 | |
| -> PTR_DAT_TextBaseTableTable[tbl_idx] | |
| -> GameTextTable = PTR_DAT_TextBaseTableTable[2] = 080aab9c | |
| u32 GameTextTable[] = 080aab9c; | |
| &GameTextTable[tbl_idx2] = &GameTextTable[4] = SystemMessageTable: 0x080AABAC | |
| -> value= 00001A0c | |
| u16 TableL3 = SystemMessageTable + (*SystemMessageTable) = 80AC5B8 + 00001A0c = 0x80AC5B8 | |
| SystemMessage_B5 = (TableL3+param2) + TableL3[param2] | |
| --- | |
| if ((param_1 & 0x4000) == 0) { | |
| TextBase = (undefined *)((int)(TextBase + uVar3 * 2) + (int)*(short *)(TextBase + uVar3 * 2)); | |
| // (0x80AC5B8 + B5*2) + (0x80AC5B8 + B5*2) | |
| // (0x80AC5B8 + 16A) + (0x80AC5B8 + 16A) | |
| } | |
| --- | |
| Idx B5 : 「中断したところからゲームを再開します」 | |
| -> Addr: &(SystemMessageTable[0xb5]) = 0x80ac722 | |
| -> *((uint16_t*)0x80ac722) = 0686 | |
| diff: (&(SystemMessageTable[0xb5]) - SystemMessageTable) = 1B76 | |
| ------------------------------------------------- | |
| 上を呼び出している箇所、スクリプトエンジン側 | |
| タイトル画面 : 83b0580 | |
| タイトル画面で上下キー押したときのスクリプト: 83b0590 | |
| FD 01 00 00 04 FF FF FF FD | |
| | | | | | | | | | |
| | | | | | | | - スクリプト終端 | |
| | | | | | --- +5~6 MessageId | |
| | | | | ------ +4 ?? | |
| | | | --------- +3 TextBox Row | |
| | | ------------ +2 TextBox Colmn //MessageTable(Prepareのparam1の | |
| | --------------- +1 uVar7, 0xFFなら特殊処理 | |
| ------------------ +0 Command: Call?? | |
| 道具交換(通信): 83b0220 | |
| Hackするならちょうどいいエントリポイント? | |
| FD 03 00 00 04 25 01 FF | |
| | | | | | | | | | |
| | | | | | | | - スクリプト終端 | |
| | | | | | --- +5~6 MessageId | |
| | | | | ------ +4 ?? | |
| | | | --------- +3 TextBox Row | |
| | | ------------ +2 TextBox Colmn //MessageTable(Prepareのparam1の | |
| | --------------- +1 uVar7, 0xFFなら特殊処理 | |
| ------------------ +0 Command: Call?? | |
| MessageId: 0001: パートナーランキング (0x000AC8B9) | |
| -> table: 0x000AC5B8 | |
| ↓これはROM収録順に並べただけ。テーブルの値によって並び替えられる。 | |
| 0x92がアニメ番号(112)だった | |
| 1 0x000AC8B9 パートナーランキング | |
| 2 0x000AC8C6 道具保管庫 | |
| 3 0x000AC8D1 マップクリア条件 | |
| ... | |
| 104 0x000ACC8C 勝利条件: | |
| 105 0x000ACC97 敗北条件: | |
| 106 0x000ACCA2 はい | |
| 107 0x000ACCA5 いいえ | |
| 108 0x000ACCA9 X:(変数1) | |
| 109 0x000ACCAE Y:(変数1) | |
| 110 0x000ACCB3 0123456789ABCDEF\n(変数1):(変数1)(変数1)(変数1)(変数1) | |
| 111 0x000ACCD1 (変数1): | |
| 112 0x000ACCD5 アニメ番号:(変数1) | |
| 113 0x000ACCE0 SE :(変数1)\n BGM :(変数1)\n VOICE:(変数1) | |
| 114 0x000ACD01 タイマー:(変数1)秒\n命中率:(変数1) | |
| 115 0x000ACD16 移動コード:(変数1)\n攻撃コード:(変数1) | |
| 116 0x000ACD2E 顔番号 :(変数1)\n表情番号:(変数1) | |
| 117 0x000ACD45 (変数1)文 | |
| ↓を召喚するテキストスクリプト | |
| 113 0x000ACCE0 SE :(変数1)\n BGM :(変数1)\n VOICE:(変数1) | |
| FD 03 00 00 04 93 00 | |
| ということはFD ? ? ? ? 93 00でヒットしたスクリプトがデバッグコードなのでは。 | |
| Hit: 83afb2e ← !?!?!?!?!?!?!? | |
| hit: 83b0221 ← これは手動で書いたもの(5B) | |
| ------------------ | |
| GameMainのJumpTableの決まり方 | |
| 2180が現在実行している関数シーケンスのオペコード | |
| 803CF10~あたりに関数シーケンステーブルがある | |
| Maxは別途制御されているがこれがテーブル | |
| 803ce5c | |
| ------------- | |
| PrepareText | |
| 通信:arg1=0x800 arg2=0000005D | |
| PTR_DAT_TextBaseTableTable[8] = 083af328 | |
| (TableL3+param2) + TableL3[param2] = (083af328+(5d)*2) + *(083af328+(5d)*2) = (083af328+(5d)*2) + (0e3f) = 83b0221 | |
| 逆算。 | |
| 83afb2eの5Bは? | |
| まずはPTR_DAT_TextBaseTableTableのうち近いもの。 | |
| 8、083AF328っぽい。 | |
| --- | |
| PTR_DAT_TextBaseTableTable: | |
| 0 0803CE5C | |
| 1 08117480 | |
| 2 080AAB9C | |
| 3 0811A450 | |
| 4 08218920 | |
| 5 082E5418 | |
| 6 08393320 | |
| 7 0811A04C | |
| 8 083AF328 | |
| 9 0803F17C | |
| 10 0809D4CC | |
| 11 081495C8 | |
| 12 081C89B4 | |
| 13 083B0778 | |
| 14 083B101C | |
| 15 0845F33C | |
| 16 084DF6E8 | |
| 17 084F2D1C | |
| 18 085582D0 | |
| 19 085586D4 | |
| 20 08558AD8 | |
| 21 00000000 | |
| 22 00000000 | |
| 23 08558EDC | |
| 24 08040201 | |
| 25 80402010 | |
| 26 08016039 | |
| 27 0801603D | |
| 28 0801605D | |
| 29 0801608D | |
| 30 080160D9 | |
| 31 08016111 | |
| 32 08016129 | |
| 33 080161D1 | |
| 34 08016239 | |
| 35 08016285 | |
| 36 080162ED | |
| 37 0801637D | |
| 38 080163F5 | |
| 39 08016435 | |
| 40 08016461 | |
| 41 080164C9 | |
| 42 08016545 | |
| 43 08016AB5 | |
| 44 08016B0D | |
| 45 08016B45 | |
| 46 08016B85 | |
| 47 08016BE9 | |
| 48 08016039 | |
| 49 08016C85 | |
| 50 08016CF9 | |
| 51 08016039 | |
| 52 08016039 | |
| 53 08016039 | |
| 54 08016D39 | |
| 55 08016FE5 | |
| 56 0801720D | |
| 57 08016039 | |
| 58 0801828D | |
| 59 08018A1D | |
| 60 08018E1D | |
| 61 08018FE1 | |
| 62 08019279 | |
| 63 08019345 | |
| -- | |
| 次、arg2逆算。 | |
| 2F。 | |
| つまりプログラムシーケンスで2Fを組んでいるものを探せばいい。 | |
| プログラムシーケンス.テキスト表示 = opc: 0x38 | |
| サウンドデバッグテキストIdx: idx: 0x2F | |
| →見つけた。0803E785 | |
| --- | |
| Table8 Table8 | |
| Base Base 083AF328 138081064 | |
| idx_hex Idx dec table_val_h address | |
| 0 0 0122 290 138081354 83AF44A | |
| 1 1 015A 346 138081412 83AF484 | |
| 2 2 0175 373 138081441 83AF4A1 | |
| 3 3 01A4 420 138081490 83AF4D2 | |
| 4 4 01B5 437 138081509 83AF4E5 | |
| 5 5 01D9 473 138081547 83AF50B | |
| 6 6 01E6 486 138081562 83AF51A | |
| 7 7 020B 523 138081601 83AF541 | |
| 8 8 0218 536 138081616 83AF550 | |
| 9 9 026A 618 138081700 83AF5A4 | |
| A 10 0277 631 138081715 83AF5B3 | |
| B 11 02BC 700 138081786 83AF5FA | |
| C 12 02C9 713 138081801 83AF609 | |
| D 13 02CF 719 138081809 83AF611 | |
| E 14 0307 775 138081867 83AF64B | |
| F 15 03A7 935 138082029 83AF6ED | |
| 10 16 03C2 962 138082058 83AF70A | |
| 11 17 03C8 968 138082066 83AF712 | |
| 12 18 03C7 967 138082067 83AF713 | |
| 13 19 03D4 980 138082082 83AF722 | |
| 14 20 03D3 979 138082083 83AF723 | |
| 15 21 0403 1027 138082133 83AF755 | |
| 16 22 0402 1026 138082134 83AF756 | |
| 17 23 0432 1074 138082184 83AF788 | |
| 18 24 0431 1073 138082185 83AF789 | |
| 19 25 0453 1107 138082221 83AF7AD | |
| 1A 26 0452 1106 138082222 83AF7AE | |
| 1B 27 047B 1147 138082265 83AF7D9 | |
| 1C 28 048F 1167 138082287 83AF7EF | |
| 1D 29 04D4 1236 138082358 83AF836 | |
| 1E 30 04DA 1242 138082366 83AF83E | |
| 1F 31 04E0 1248 138082374 83AF846 | |
| 20 32 057D 1405 138082533 83AF8E5 | |
| 21 33 059F 1439 138082569 83AF909 | |
| 22 34 05B3 1459 138082591 83AF91F | |
| 23 35 05B9 1465 138082599 83AF927 | |
| 24 36 05DB 1499 138082635 83AF94B | |
| 25 37 05E1 1505 138082643 83AF953 | |
| 26 38 05F8 1528 138082668 83AF96C | |
| 27 39 05FE 1534 138082676 83AF974 | |
| 28 40 0604 1540 138082684 83AF97C | |
| 29 41 0611 1553 138082699 83AF98B | |
| 2A 42 0625 1573 138082721 83AF9A1 | |
| 2B 43 062B 1579 138082729 83AF9A9 | |
| 2C 44 063F 1599 138082751 83AF9BF | |
| 2D 45 06AE 1710 138082864 83AFA30 | |
| 2E 46 06C2 1730 138082886 83AFA46 | |
| 2F 47 07A8 1960 138083118 83AFB2E | |
| 30 48 07AE 1966 138083126 83AFB36 | |
| 31 49 081B 2075 138083237 83AFBA5 | |
| 32 50 08CE 2254 138083418 83AFC5A | |
| 33 51 0913 2323 138083489 83AFCA1 | |
| 34 52 093C 2364 138083532 83AFCCC | |
| 35 53 098F 2447 138083617 83AFD21 | |
| 36 54 09A0 2464 138083636 83AFD34 | |
| 37 55 09A6 2470 138083644 83AFD3C | |
| 38 56 09B9 2489 138083665 83AFD51 | |
| 39 57 09BF 2495 138083673 83AFD59 | |
| 3A 58 0A27 2599 138083779 83AFDC3 | |
| 3B 59 0A49 2633 138083815 83AFDE7 | |
| 3C 60 0A56 2646 138083830 83AFDF6 | |
| 3D 61 0A63 2659 138083845 83AFE05 | |
| 3E 62 0A85 2693 138083881 83AFE29 | |
| 3F 63 0ACA 2762 138083952 83AFE70 | |
| 40 64 0AD7 2775 138083967 83AFE7F | |
| 41 65 0AF9 2809 138084003 83AFEA3 | |
| 42 66 0B06 2822 138084018 83AFEB2 | |
| 43 67 0B13 2835 138084033 83AFEC1 | |
| 44 68 0B1B 2843 138084043 83AFECB | |
| 45 69 0B4B 2891 138084093 83AFEFD | |
| 46 70 0B7B 2939 138084143 83AFF2F | |
| 47 71 0BAB 2987 138084193 83AFF61 | |
| 48 72 0BB1 2993 138084201 83AFF69 | |
| 49 73 0BCC 3020 138084230 83AFF86 | |
| 4A 74 0BF5 3061 138084273 83AFFB1 | |
| 4B 75 0C01 3073 138084287 83AFFBF | |
| 4C 76 0BFF 3071 138084287 83AFFBF | |
| 4D 77 0C42 3138 138084356 83B0004 | |
| 4E 78 0C65 3173 138084393 83B0029 | |
| 4F 79 0C90 3216 138084438 83B0056 | |
| 50 80 0CA7 3239 138084463 83B006F | |
| 51 81 0CBE 3262 138084488 83B0088 | |
| 52 82 0CF5 3317 138084545 83B00C1 | |
| 53 83 0D56 3414 138084644 83B0124 | |
| 54 84 0D5C 3420 138084652 83B012C | |
| 55 85 0D69 3433 138084667 83B013B | |
| 56 86 0D6F 3439 138084675 83B0143 | |
| 57 87 0DE3 3555 138084793 83B01B9 | |
| 58 88 0DE9 3561 138084801 83B01C1 | |
| 59 89 0DF6 3574 138084816 83B01D0 | |
| 5A 90 0E02 3586 138084830 83B01DE | |
| 5B 91 0E0F 3599 138084845 83B01ED | |
| 5C 92 0E2A 3626 138084874 83B020A | |
| 5D 93 0E3F 3647 138084897 83B0221 | |
| 5E 94 0E45 3653 138084905 83B0229 | |
| 5F 95 0E4B 3659 138084913 83B0231 | |
| 60 96 0E51 3665 138084921 83B0239 | |
| 61 97 0ED5 3797 138085055 83B02BF | |
| 62 98 0F2F 3887 138085147 83B031B | |
| 63 99 0F51 3921 138085183 83B033F | |
| 64 100 0F6C 3948 138085212 83B035C | |
| 65 101 0F87 3975 138085241 83B0379 | |
| 66 102 0FA9 4009 138085277 83B039D | |
| 67 103 0FCB 4043 138085313 83B03C1 | |
| 68 104 0FC9 4041 138085313 83B03C1 | |
| 69 105 0FCE 4046 138085320 83B03C8 | |
| 6A 106 0FDB 4059 138085335 83B03D7 | |
| 6B 107 1072 4210 138085488 83B0470 | |
| 6C 108 10DA 4314 138085594 83B04DA | |
| 6D 109 10DF 4319 138085601 83B04E1 | |
| 6E 110 10E5 4325 138085609 83B04E9 | |
| 6F 111 10EB 4331 138085617 83B04F1 | |
| 70 112 10F1 4337 138085625 83B04F9 | |
| 71 113 10F7 4343 138085633 83B0501 | |
| 72 114 1120 4384 138085676 83B052C | |
| 73 115 1126 4390 138085684 83B0534 | |
| 74 116 1179 4473 138085769 83B0589 | |
| 75 117 117E 4478 138085776 83B0590 | |
| 76 118 1184 4484 138085784 83B0598 | |
| 77 119 1190 4496 138085798 83B05A6 | |
| 78 120 1196 4502 138085806 83B05AE | |
| 79 121 11B8 4536 138085842 83B05D2 | |
| 7A 122 11BE 4542 138085850 83B05DA | |
| 7B 123 11BC 4540 138085850 83B05DA | |
| 7C 124 11C2 4546 138085858 83B05E2 | |
| 7D 125 123F 4671 138085985 83B0661 | |
| 7E 126 123D 4669 138085985 83B0661 | |
| 7F 127 1266 4710 138086028 83B068C | |
| 80 128 1288 4744 138086064 83B06B0 | |
| 81 129 128E 4750 138086072 83B06B8 | |
| 82 130 1294 4756 138086080 83B06C0 | |
| 83 131 129A 4762 138086088 83B06C8 | |
| 84 132 1298 4760 138086088 83B06C8 | |
| 85 133 1296 4758 138086088 83B06C8 | |
| 86 134 1294 4756 138086088 83B06C8 | |
| 87 135 1292 4754 138086088 83B06C8 | |
| 88 136 1290 4752 138086088 83B06C8 | |
| 89 137 12B2 4786 138086124 83B06EC | |
| 8A 138 12B0 4784 138086124 83B06EC | |
| 8B 139 12AE 4782 138086124 83B06EC | |
| 8C 140 12AC 4780 138086124 83B06EC | |
| 8D 141 12AA 4778 138086124 83B06EC | |
| 8E 142 12A8 4776 138086124 83B06EC | |
| 8F 143 12A6 4774 138086124 83B06EC | |
| 90 144 12AC 4780 138086132 83B06F4 | |
| --- | |
| ーーーーーーーーーーーーーーーー | |
| OK、出せた | |
| まずタイトル→付録まで進む | |
| 次に、Current関数シーケンスアドレスに上記で見つけた0803E785を書き込む | |
| 2130: 85 | |
| 2131: e7 | |
| 次にCurrentシーケンスオペコードをFF 00にする → 上記アドレスにジャンプしてくれる | |
| 以下の順番で。 | |
| 2181: 00 | |
| 2180: FF | |
| ------------- | |
| 関数シーケンス: | |
| 0803e773: バイナリエディタ? | |
| 0803E780-84: エンディング | |
| 0803E785-91: サウンドデバッグ | |
| 0803E791-96: なにもおきない | |
| 0803E797-9c: フリー移動@マップ | |
| 0803E79d-A9: シナリオ番号選択???@マップ | |
| 0803E7AA-E82F: デバッグメニュー。 | |
| - 描画がバグっているが、↓(顔カットイン)、A(決定)、B(戻る)で描画が治る | |
| - もしかしたら立ち絵が出ているでも画面なら壊れてないかも | |
| 0803E7E1: マップ上で自キャラ変更?? → デバッグメニューのコマキャラが暴発しただけかも | |
| おまけ? | |
| 0803E830: 製品コード?? | |
| 0803e4f7: 無限レベルアップ?? | |
| 0803e5d5: 能力アップ | |
| 0803eebf: 武器レベルアップ(刀々斎) | |
| これ以上は文字列テーブル対応表を作らないと無理そう | |
| ↓とかは残っている | |
| 0x000ACD01: | |
| タイマー:(変数1)秒 | |
| 命中率:(変数1) | |
| 0x000ACD16: | |
| 移動コード:(変数1) | |
| 攻撃コード:(変数1) | |
| ---- | |
| ``` | |
| -------------------------- | |
| 0x70 0x558 0x80acbf0 ================ | |
| 設定1 :ON/OFF | |
| 0x71 0x566 0x80acc00 ================ | |
| 設定2 :ON/OFF | |
| 0x72 0x574 0x80acc10 ================ | |
| サウンドモード | |
| 0x73 0x57b 0x80acc19 ================ | |
| 道具カタログ | |
| 0x74 0x582 0x80acc22 ================ | |
| イベントアルバム | |
| 0x75 0x589 0x80acc2b ================ | |
| キャラクター図鑑 | |
| 0x76 0x593 0x80acc37 ================ | |
| 基本用語ファイル | |
| 0x77 0x59e 0x80acc44 ================ | |
| 作戦目的 | |
| 0x78 0x59c 0x80acc44 ================ | |
| 作戦目的 | |
| 0x79 0x5a3 0x80acc4d ================ | |
| SCENE(変数1)「(文字列)」 | |
| --------------------------------- | |
| 探し方 | |
| 1. Step1 MessageID -> TextScript Address | |
| - テキストスクリプトからメッセージの表示をCallしているところを探す | |
| - FD ? ? ? ? XX 00 | |
| - XXにメッセージ番号を入れる。 | |
| - サウンドデバッグなら93 | |
| - found: 0x083af756 | |
| 1. Step2 TextScript IDの特定 | |
| - TextScriptTableからStep1に近いアドレスを探す | |
| - `TextScriptTable 0x3af328 =================` | |
| - いかが見つかる | |
| - `0x16 0x402 0x83af756` | |
| 1. Step3 GameScriptのアドレス特定 | |
| - opc: 0x38 | |
| - GameScriptにおけるテキスト表示のオペコード | |
| - arg1 text_code: 0x16 | |
| - Step2で見つけたTextScript Id | |
| - 803e270 あたりから38 16で検索 | |
| - script: 805e6be | |
| - この例だと外れ。 | |
| -- | |
| タイマー | |
| - TextScriptAddress: 8601db5 | |
| - こんな高いアドレスのTextScriptTableを知らない。 | |
| 0x92 0x5f9 0x80accd5 ================ | |
| アニメ番号:(変数1) | |
| - TextScriptAddress: 86630bb | |
| - こんな高いアドレスのTextScriptTableを知らない。 | |
| 0x90 0x5db 0x80accb3 ================ | |
| 0123456789ABCDEF | |
| (変数1):(変数1)(変数1)(変数1)(変数1) | |
| - TextScriptAddress: 83af91f | |
| - TextScriptId: 0x22 0x5b3 0x83af91f | |
| - GameScriptAddres: 0x803e777 | |
| - バイナリエディタ>?>? | |
| omake | |
| - GameScriptAddres: 0803e767 // <道具>をコピーしました //複製の札? | |
| 0x74 0x582 0x80acc22 ================ | |
| イベントアルバム | |
| - TSA: 83af7ca | |
| - TSI: 0x1a 0x452 0x83af7ae | |
| - GSA: | |
| 立ち絵付きメッセージ | |
| 31 00 12 36 00 70 | |
| |-メッセージID |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
tool: ghidra, no$gba, mesen2, RGBA-CRT/U-GCCT