summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKiritoDv <kiritodev01@gmail.com>2023-09-22 16:10:29 -0600
committerKiritoDv <kiritodev01@gmail.com>2023-09-22 16:10:29 -0600
commit2508fc777677dde9ac7f5d7e23e8c4d5dfdd185c (patch)
treef10da6a52760b20af285c7f12b528df76e6efd3e
parent484f6f7bbbb8e30cff5a589e8d75ea3220cf90c3 (diff)
Added text extraction support, missing jp offsets, and renamed anim to sanim
-rw-r--r--assets/sm64/us/texts.yml1172
-rw-r--r--src/Companion.cpp8
-rw-r--r--src/factories/RawFactory.h3
-rw-r--r--src/factories/ResourceType.h9
-rw-r--r--src/factories/TextureFactory.cpp1
-rw-r--r--src/factories/sm64/SAnimFactory.cpp (renamed from src/factories/AnimFactory.cpp)4
-rw-r--r--src/factories/sm64/SAnimFactory.h9
-rw-r--r--src/factories/sm64/SDialogFactory.cpp65
-rw-r--r--src/factories/sm64/SDialogFactory.h9
-rw-r--r--src/factories/sm64/STextFactory.cpp28
-rw-r--r--src/factories/sm64/STextFactory.h (renamed from src/factories/AnimFactory.h)6
-rw-r--r--tools/offset_find.js4
-rw-r--r--tools/text_offsets.js153
13 files changed, 1421 insertions, 50 deletions
diff --git a/assets/sm64/us/texts.yml b/assets/sm64/us/texts.yml
new file mode 100644
index 0000000..3a9afdb
--- /dev/null
+++ b/assets/sm64/us/texts.yml
@@ -0,0 +1,1172 @@
+dialogs/dialog_00:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65480
+dialogs/dialog_01:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65496
+dialogs/dialog_02:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65512
+dialogs/dialog_03:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65528
+dialogs/dialog_04:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65544
+dialogs/dialog_05:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65560
+dialogs/dialog_06:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65576
+dialogs/dialog_07:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65592
+dialogs/dialog_08:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65608
+dialogs/dialog_09:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65624
+dialogs/dialog_0A:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65640
+dialogs/dialog_0B:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65656
+dialogs/dialog_0C:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65672
+dialogs/dialog_0D:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65688
+dialogs/dialog_0E:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65704
+dialogs/dialog_0F:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65720
+dialogs/dialog_10:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65736
+dialogs/dialog_11:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65752
+dialogs/dialog_12:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65768
+dialogs/dialog_13:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65784
+dialogs/dialog_14:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65800
+dialogs/dialog_15:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65816
+dialogs/dialog_16:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65832
+dialogs/dialog_17:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65848
+dialogs/dialog_18:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65864
+dialogs/dialog_19:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65880
+dialogs/dialog_1A:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65896
+dialogs/dialog_1B:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65912
+dialogs/dialog_1C:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65928
+dialogs/dialog_1D:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65944
+dialogs/dialog_1E:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65960
+dialogs/dialog_1F:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65976
+dialogs/dialog_20:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 65992
+dialogs/dialog_21:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66008
+dialogs/dialog_22:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66024
+dialogs/dialog_23:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66040
+dialogs/dialog_24:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66056
+dialogs/dialog_25:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66072
+dialogs/dialog_26:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66088
+dialogs/dialog_27:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66104
+dialogs/dialog_28:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66120
+dialogs/dialog_29:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66136
+dialogs/dialog_2A:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66152
+dialogs/dialog_2B:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66168
+dialogs/dialog_2C:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66184
+dialogs/dialog_2D:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66200
+dialogs/dialog_2E:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66216
+dialogs/dialog_2F:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66232
+dialogs/dialog_30:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66248
+dialogs/dialog_31:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66264
+dialogs/dialog_32:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66280
+dialogs/dialog_33:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66296
+dialogs/dialog_34:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66312
+dialogs/dialog_35:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66328
+dialogs/dialog_36:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66344
+dialogs/dialog_37:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66360
+dialogs/dialog_38:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66376
+dialogs/dialog_39:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66392
+dialogs/dialog_3A:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66408
+dialogs/dialog_3B:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66424
+dialogs/dialog_3C:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66440
+dialogs/dialog_3D:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66456
+dialogs/dialog_3E:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66472
+dialogs/dialog_3F:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66488
+dialogs/dialog_40:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66504
+dialogs/dialog_41:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66520
+dialogs/dialog_42:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66536
+dialogs/dialog_43:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66552
+dialogs/dialog_44:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66568
+dialogs/dialog_45:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66584
+dialogs/dialog_46:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66600
+dialogs/dialog_47:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66616
+dialogs/dialog_48:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66632
+dialogs/dialog_49:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66648
+dialogs/dialog_4A:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66664
+dialogs/dialog_4B:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66680
+dialogs/dialog_4C:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66696
+dialogs/dialog_4D:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66712
+dialogs/dialog_4E:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66728
+dialogs/dialog_4F:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66744
+dialogs/dialog_50:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66760
+dialogs/dialog_51:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66776
+dialogs/dialog_52:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66792
+dialogs/dialog_53:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66808
+dialogs/dialog_54:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66824
+dialogs/dialog_55:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66840
+dialogs/dialog_56:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66856
+dialogs/dialog_57:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66872
+dialogs/dialog_58:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66888
+dialogs/dialog_59:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66904
+dialogs/dialog_5A:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66920
+dialogs/dialog_5B:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66936
+dialogs/dialog_5C:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66952
+dialogs/dialog_5D:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66968
+dialogs/dialog_5E:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 66984
+dialogs/dialog_5F:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67000
+dialogs/dialog_60:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67016
+dialogs/dialog_61:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67032
+dialogs/dialog_62:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67048
+dialogs/dialog_63:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67064
+dialogs/dialog_64:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67080
+dialogs/dialog_65:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67096
+dialogs/dialog_66:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67112
+dialogs/dialog_67:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67128
+dialogs/dialog_68:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67144
+dialogs/dialog_69:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67160
+dialogs/dialog_6A:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67176
+dialogs/dialog_6B:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67192
+dialogs/dialog_6C:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67208
+dialogs/dialog_6D:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67224
+dialogs/dialog_6E:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67240
+dialogs/dialog_6F:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67256
+dialogs/dialog_70:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67272
+dialogs/dialog_71:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67288
+dialogs/dialog_72:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67304
+dialogs/dialog_73:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67320
+dialogs/dialog_74:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67336
+dialogs/dialog_75:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67352
+dialogs/dialog_76:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67368
+dialogs/dialog_77:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67384
+dialogs/dialog_78:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67400
+dialogs/dialog_79:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67416
+dialogs/dialog_7A:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67432
+dialogs/dialog_7B:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67448
+dialogs/dialog_7C:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67464
+dialogs/dialog_7D:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67480
+dialogs/dialog_7E:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67496
+dialogs/dialog_7F:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67512
+dialogs/dialog_80:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67528
+dialogs/dialog_81:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67544
+dialogs/dialog_82:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67560
+dialogs/dialog_83:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67576
+dialogs/dialog_84:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67592
+dialogs/dialog_85:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67608
+dialogs/dialog_86:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67624
+dialogs/dialog_87:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67640
+dialogs/dialog_88:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67656
+dialogs/dialog_89:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67672
+dialogs/dialog_8A:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67688
+dialogs/dialog_8B:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67704
+dialogs/dialog_8C:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67720
+dialogs/dialog_8D:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67736
+dialogs/dialog_8E:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67752
+dialogs/dialog_8F:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67768
+dialogs/dialog_90:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67784
+dialogs/dialog_91:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67800
+dialogs/dialog_92:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67816
+dialogs/dialog_93:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67832
+dialogs/dialog_94:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67848
+dialogs/dialog_95:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67864
+dialogs/dialog_96:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67880
+dialogs/dialog_97:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67896
+dialogs/dialog_98:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67912
+dialogs/dialog_99:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67928
+dialogs/dialog_9A:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67944
+dialogs/dialog_9B:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67960
+dialogs/dialog_9C:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67976
+dialogs/dialog_9D:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 67992
+dialogs/dialog_9E:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 68008
+dialogs/dialog_9F:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 68024
+dialogs/dialog_A0:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 68040
+dialogs/dialog_A1:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 68056
+dialogs/dialog_A2:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 68072
+dialogs/dialog_A3:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 68088
+dialogs/dialog_A4:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 68104
+dialogs/dialog_A5:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 68120
+dialogs/dialog_A6:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 68136
+dialogs/dialog_A7:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 68152
+dialogs/dialog_A8:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 68168
+dialogs/dialog_A9:
+ type: SM64:DIALOG
+ offset: 1083968
+ mio0: 68184
+courses/course_00:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 68884
+courses/course_01:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 68908
+courses/course_02:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 68928
+courses/course_03:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 68948
+courses/course_04:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 68972
+courses/course_05:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 68992
+courses/course_06:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69012
+courses/course_07:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69032
+courses/course_08:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69056
+courses/course_09:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69076
+courses/course_0A:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69096
+courses/course_0B:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69116
+courses/course_0C:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69140
+courses/course_0D:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69160
+courses/course_0E:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69180
+courses/course_0F:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69196
+courses/course_10:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69224
+courses/course_11:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69252
+courses/course_12:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69276
+courses/course_13:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69308
+courses/course_14:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69336
+courses/course_15:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69364
+courses/course_16:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69396
+courses/course_17:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69428
+courses/course_18:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69452
+courses/course_19:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69456
+acts/act_00:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69588
+acts/act_01:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69616
+acts/act_02:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69648
+acts/act_03:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69680
+acts/act_04:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69704
+acts/act_05:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69728
+acts/act_06:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69756
+acts/act_07:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69780
+acts/act_08:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69808
+acts/act_09:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69836
+acts/act_0A:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69868
+acts/act_0B:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69896
+acts/act_0C:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69916
+acts/act_0D:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69944
+acts/act_0E:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 69976
+acts/act_0F:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70004
+acts/act_10:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70036
+acts/act_11:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70064
+acts/act_12:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70088
+acts/act_13:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70108
+acts/act_14:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70128
+acts/act_15:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70148
+acts/act_16:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70180
+acts/act_17:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70204
+acts/act_18:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70228
+acts/act_19:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70248
+acts/act_1A:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70280
+acts/act_1B:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70308
+acts/act_1C:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70332
+acts/act_1D:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70352
+acts/act_1E:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70384
+acts/act_1F:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70416
+acts/act_20:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70440
+acts/act_21:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70468
+acts/act_22:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70496
+acts/act_23:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70524
+acts/act_24:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70548
+acts/act_25:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70568
+acts/act_26:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70588
+acts/act_27:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70620
+acts/act_28:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70640
+acts/act_29:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70672
+acts/act_2A:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70704
+acts/act_2B:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70736
+acts/act_2C:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70764
+acts/act_2D:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70792
+acts/act_2E:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70824
+acts/act_2F:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70852
+acts/act_30:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70868
+acts/act_31:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70888
+acts/act_32:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70912
+acts/act_33:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70940
+acts/act_34:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70964
+acts/act_35:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 70988
+acts/act_36:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71008
+acts/act_37:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71028
+acts/act_38:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71052
+acts/act_39:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71072
+acts/act_3A:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71104
+acts/act_3B:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71136
+acts/act_3C:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71152
+acts/act_3D:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71176
+acts/act_3E:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71192
+acts/act_3F:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71224
+acts/act_40:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71252
+acts/act_41:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71280
+acts/act_42:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71312
+acts/act_43:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71332
+acts/act_44:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71360
+acts/act_45:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71388
+acts/act_46:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71412
+acts/act_47:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71444
+acts/act_48:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71476
+acts/act_49:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71504
+acts/act_4A:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71536
+acts/act_4B:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71568
+acts/act_4C:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71592
+acts/act_4D:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71612
+acts/act_4E:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71632
+acts/act_4F:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71652
+acts/act_50:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71680
+acts/act_51:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71692
+acts/act_52:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71712
+acts/act_53:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71740
+acts/act_54:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71764
+acts/act_55:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71796
+acts/act_56:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71824
+acts/act_57:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71848
+acts/act_58:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71872
+acts/act_59:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71892
+acts/act_5A:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71920
+acts/act_5B:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71956
+acts/act_5C:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71960
+acts/act_5D:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71964
+acts/act_5E:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71968
+acts/act_5F:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71972
+acts/act_60:
+ type: SM64:TEXT
+ offset: 1083968
+ mio0: 71976
diff --git a/src/Companion.cpp b/src/Companion.cpp
index 8582c40..fa557fa 100644
--- a/src/Companion.cpp
+++ b/src/Companion.cpp
@@ -10,7 +10,9 @@
#include "factories/SampleFactory.h"
#include "factories/BankFactory.h"
#include "factories/TextureFactory.h"
-#include "factories/AnimFactory.h"
+#include "factories/sm64/SAnimFactory.h"
+#include "factories/sm64/STextFactory.h"
+#include "factories/sm64/SDialogFactory.h"
#include <fstream>
#include <iostream>
@@ -29,7 +31,9 @@ void Companion::Init() {
this->RegisterFactory("BLOB", new BlobFactory());
// SM64 Specific
- this->RegisterFactory("SM64:ANIM", new AnimFactory());
+ this->RegisterFactory("SM64:DIALOG", new SDialogFactory());
+ this->RegisterFactory("SM64:ANIM", new SAnimFactory());
+ this->RegisterFactory("SM64:TEXT", new STextFactory());
// Debug
this->RegisterFactory("MIO0", new MIO0Factory());
diff --git a/src/factories/RawFactory.h b/src/factories/RawFactory.h
index 16a78ce..5019ad6 100644
--- a/src/factories/RawFactory.h
+++ b/src/factories/RawFactory.h
@@ -6,6 +6,9 @@
#include <binarytools/BinaryWriter.h>
#include <yaml-cpp/yaml.h>
+
+#define SEGMENT_OFFSET(a) ((uint32_t)(a)&0x00FFFFFF)
+
#define WRITE_HEADER(type, version) this->WriteHeader(writer, type, version)
#define WRITE_BHEADER(type, version) this->WriteHeader(writer, type, version, true)
#define WRITE_U8(value) writer->Write((uint8_t) value)
diff --git a/src/factories/ResourceType.h b/src/factories/ResourceType.h
index 7dfac06..8c5879e 100644
--- a/src/factories/ResourceType.h
+++ b/src/factories/ResourceType.h
@@ -14,13 +14,12 @@ enum class ResourceType {
Array = 0x4F415252, // OARR
Blob = 0x4F424C42, // OBLB
Texture = 0x4F544558, // OTEX
-
- // CubeOS
- Demo = 0x44454D4F, // DEMO
- Skybox = 0x534B5942, // SKYB
- Anim = 0x414E494D, // ANIM
Bank = 0x42414E4B, // BANK
Sample = 0x41554643, // AIFC
Sequence = 0x53455143, // SEQC
+
+ // SM64
+ Anim = 0x414E494D, // ANIM
+ SDialog = 0x53444C47, // SDLG
};
} // namespace LUS
diff --git a/src/factories/TextureFactory.cpp b/src/factories/TextureFactory.cpp
index 12d8540..257ef20 100644
--- a/src/factories/TextureFactory.cpp
+++ b/src/factories/TextureFactory.cpp
@@ -1,6 +1,5 @@
#include "TextureFactory.h"
-#include "Companion.h"
#include "utils/MIODecoder.h"
namespace fs = std::filesystem;
diff --git a/src/factories/AnimFactory.cpp b/src/factories/sm64/SAnimFactory.cpp
index 0e5d01b..3358e24 100644
--- a/src/factories/AnimFactory.cpp
+++ b/src/factories/sm64/SAnimFactory.cpp
@@ -1,4 +1,4 @@
-#include "AnimFactory.h"
+#include "SAnimFactory.h"
#include <iostream>
#include <filesystem>
@@ -63,7 +63,7 @@ void WriteAnimationValues(LUS::BinaryWriter* writer, YAML::Node& data, std::vect
reader.Close();
}
-bool AnimFactory::process(LUS::BinaryWriter* writer, YAML::Node& data, std::vector<uint8_t>& buffer) {
+bool SAnimFactory::process(LUS::BinaryWriter* writer, YAML::Node& data, std::vector<uint8_t>& buffer) {
WRITE_HEADER(LUS::ResourceType::Anim, 0);
auto header = data["header"];
diff --git a/src/factories/sm64/SAnimFactory.h b/src/factories/sm64/SAnimFactory.h
new file mode 100644
index 0000000..a5fa529
--- /dev/null
+++ b/src/factories/sm64/SAnimFactory.h
@@ -0,0 +1,9 @@
+#pragma once
+
+#include "factories/RawFactory.h"
+
+class SAnimFactory : public RawFactory {
+public:
+ SAnimFactory() = default;
+ bool process(LUS::BinaryWriter* write, YAML::Node& data, std::vector<uint8_t>& buffer) override;
+}; \ No newline at end of file
diff --git a/src/factories/sm64/SDialogFactory.cpp b/src/factories/sm64/SDialogFactory.cpp
new file mode 100644
index 0000000..ad6cca4
--- /dev/null
+++ b/src/factories/sm64/SDialogFactory.cpp
@@ -0,0 +1,65 @@
+#include <iostream>
+#include "SDialogFactory.h"
+
+#include "utils/MIODecoder.h"
+#include "binarytools/BinaryReader.h"
+
+namespace fs = std::filesystem;
+
+static size_t id = 0;
+
+bool SDialogFactory::process(LUS::BinaryWriter* writer, YAML::Node& data, std::vector<uint8_t>& buffer) {
+
+ WRITE_HEADER(LUS::ResourceType::SDialog, 0);
+
+ auto offset = data["offset"].as<size_t>();
+ auto mio0 = data["mio0"].as<size_t>();
+
+ std::vector<uint8_t> text;
+ auto decoded = MIO0Decoder::Decode(buffer, offset);
+ auto bytes = (uint8_t*) decoded.data();
+ LUS::BinaryReader reader(decoded.data(), decoded.size());
+ reader.SetEndianness(LUS::Endianness::Big);
+ reader.Seek(mio0, LUS::SeekOffsetType::Start);
+
+ auto unused = reader.ReadUInt32();
+ auto linesPerBox = reader.ReadUByte();
+ // Padding
+ reader.Read(1);
+ auto leftOffset = reader.ReadInt16();
+ auto width = reader.ReadInt16();
+ // Padding
+ reader.Read(2);
+ auto str = SEGMENT_OFFSET(reader.ReadInt32());
+
+ while(bytes[str] != 0xFF){
+ auto c = bytes[str++];
+ text.push_back(c);
+ }
+ text.push_back(0xFF);
+
+ std::cout << "unused: " << unused << std::endl;
+ std::cout << "linesPerBox: " << (int) linesPerBox << std::endl;
+ std::cout << "leftOffset: " << leftOffset << std::endl;
+ std::cout << "width: " << width << std::endl;
+ std::cout << "size: " << text.size() << std::endl;
+
+ WRITE_U32(unused);
+ WRITE_I8(linesPerBox);
+ WRITE_I16(leftOffset);
+ WRITE_I16(width);
+
+ WRITE_U32(text.size());
+ WRITE_ARRAY(text.data(), text.size());
+
+ if(id == 85){
+ int bp = 0;
+ }
+
+ id++;
+ return true;
+}
+
+// seg2_dialog_table
+// seg2_course_name_table
+// seg2_act_name_table
diff --git a/src/factories/sm64/SDialogFactory.h b/src/factories/sm64/SDialogFactory.h
new file mode 100644
index 0000000..a1f58a9
--- /dev/null
+++ b/src/factories/sm64/SDialogFactory.h
@@ -0,0 +1,9 @@
+#pragma once
+
+#include "../RawFactory.h"
+
+class SDialogFactory : public RawFactory {
+public:
+ SDialogFactory() = default;
+ bool process(LUS::BinaryWriter* write, YAML::Node& data, std::vector<uint8_t>& buffer) override;
+}; \ No newline at end of file
diff --git a/src/factories/sm64/STextFactory.cpp b/src/factories/sm64/STextFactory.cpp
new file mode 100644
index 0000000..e6b27ee
--- /dev/null
+++ b/src/factories/sm64/STextFactory.cpp
@@ -0,0 +1,28 @@
+#include "STextFactory.h"
+
+#include "utils/MIODecoder.h"
+
+namespace fs = std::filesystem;
+
+bool STextFactory::process(LUS::BinaryWriter* writer, YAML::Node& data, std::vector<uint8_t>& buffer) {
+
+ WRITE_HEADER(LUS::ResourceType::Blob, 0);
+
+ auto offset = data["offset"].as<size_t>();
+ auto mio0 = data["mio0"].as<size_t>();
+
+ std::vector<uint8_t> text;
+ auto decoded = MIO0Decoder::Decode(buffer, offset);
+ auto bytes = (uint8_t*) decoded.data();
+
+ while(bytes[mio0] != 0xFF){
+ auto c = bytes[mio0++];
+ text.push_back(c);
+ }
+ text.push_back(0xFF);
+
+ WRITE_U32(text.size());
+ WRITE_ARRAY(text.data(), text.size());
+
+ return true;
+}
diff --git a/src/factories/AnimFactory.h b/src/factories/sm64/STextFactory.h
index c1ca50d..7f9fe00 100644
--- a/src/factories/AnimFactory.h
+++ b/src/factories/sm64/STextFactory.h
@@ -1,9 +1,9 @@
#pragma once
-#include "RawFactory.h"
+#include "../RawFactory.h"
-class AnimFactory : public RawFactory {
+class STextFactory : public RawFactory {
public:
- AnimFactory() = default;
+ STextFactory() = default;
bool process(LUS::BinaryWriter* write, YAML::Node& data, std::vector<uint8_t>& buffer) override;
}; \ No newline at end of file
diff --git a/tools/offset_find.js b/tools/offset_find.js
index f9796b0..3cd7a3a 100644
--- a/tools/offset_find.js
+++ b/tools/offset_find.js
@@ -1,7 +1,7 @@
const fs = require('fs');
-const bytes = fs.readFileSync('./baserom.eu.z64');
-const file = fs.readFileSync('./00_sound_player_eu.m64');
+const bytes = fs.readFileSync('./baserom.jp.z64');
+const file = Buffer.from([0x8B,0xD5,0x71,0x98,0x55,0xF0,0x82,0x9F,0x7F,0xF0,0x45,0x40,0x67,0x5E,0x4D,0x6D,0xFF]);
const offset = bytes.indexOf(file);
const size = file.length;
diff --git a/tools/text_offsets.js b/tools/text_offsets.js
index 699078c..8ebc1b0 100644
--- a/tools/text_offsets.js
+++ b/tools/text_offsets.js
@@ -1,47 +1,130 @@
const fs = require('fs');
const path = require('path');
+const YAML = require('./yaml/dist/index')
-let _parent = 'assets/reordered';
-let bytes = Buffer.alloc(0);
+// https://hack64.net/wiki/doku.php?id=super_mario_64:mio0
+// https://hack64.net/wiki/doku.php?id=super_mario_64:segment_2
-function toHex(value) {
- let hex = value.toString(16);
- if ((hex.length % 2) > 0) {
- hex = "0" + hex;
+const version = 'us';
+const roms = {
+ us: {
+ dialog: { start: 0x0FFC8, end: 0x10A68 },
+ level: { start: 0x10F68, end: 0x10FD4 },
+ act: { start: 0x1192C, end: 0x11AB4 },
}
- return `0x${hex.toUpperCase()}`;
-}
-
-function toBEU16(num){
- let d = new Uint16Array(1);
- d[0] = num;
- return Buffer.from(d.buffer).swap16()
-}
-
-async function parseAnim(file){
- let fimport = `./${file.replace('.js', '')}`
- let data = require(fimport)
- for(let id of fimport.split('_').slice(1)){
- let anim = data['anim_'+id];
- let hOffset = bytes.indexOf(Buffer.concat(anim.slice(0, 6).map(toBEU16)));
-
- let bswValues = Buffer.concat(anim[6].map(toBEU16));
- let vsOffset = bytes.indexOf(bswValues);
- let bswIndices = Buffer.concat(anim[7].map(toBEU16));
- let idxOffset = bytes.indexOf(bswIndices);
- console.log(`"assets/anims/anim_${id}.anim": ${JSON.stringify({
- header: [hOffset, 0x18],
- values: [vsOffset, bswValues.length],
- indices: [idxOffset, bswIndices.length],
- })},`);
+}
+
+function toYAML(obj){
+ let file = `${obj.file}`;
+ delete obj.file;
+ return YAML.stringify({
+ [file]: obj
+ });
+}
+
+function align16(num){
+ return (num + 0xF) & ~0xF;
+}
+
+function seg_offset(a){
+ return a & 0x00ffffff
+}
+
+function readEntry(bytes, offset){
+ let size = 0;
+ let unused = bytes.readUInt32BE(offset + size);
+ size += 4;
+ let linesPerBox = bytes.readInt8(offset + size);
+ size += 2;
+ let leftOffset = bytes.readInt16BE(offset + size);
+ size += 2;
+ let width = bytes.readInt16BE(offset + size);
+ size += 4;
+ let str = seg_offset(bytes.readInt32BE(offset + size));
+ size += 4;
+
+ let outText = []
+ while(bytes[str] != 0xFF){
+ let c = bytes[str];
+ outText.push(c);
+ str += 1;
+ }
+ outText.push(0xFF)
+
+ return {
+ unused,
+ linesPerBox,
+ leftOffset,
+ width,
+ text: Buffer.from(outText),
+ };
+}
+
+function findDialogs(bytes, out){
+ let { start, end } = roms[version].dialog;
+ let size = align16(end - start);
+
+ for(let i = 0; i < size; i += 16){
+ fs.appendFileSync(out, toYAML({
+ file: `dialogs/dialog_${(i / 16).toString(16).padStart(2, '0').toUpperCase()}`,
+ type: 'SM64:DIALOG',
+ offset: 0x108A40,
+ mio0: start + i
+ }));
+
+ console.log(i / 16, readEntry(bytes, start + i));
+ }
+}
+
+function readLevel(bytes, offset){
+ let outText = []
+ while(bytes[offset] != 0xFF){
+ let c = bytes[offset];
+ outText.push(c);
+ offset += 1;
+ }
+ outText.push(0xFF)
+ return Buffer.from(outText);
+}
+
+function findLevelNames(bytes, out) {
+ let { start, end } = roms[version].level;
+ let size = ((end - start) / 4) - 1;
+ console.log(size)
+
+ for(let i = 0; i < size; i++){
+ let offset = seg_offset(bytes.readUInt32BE(start + (i * 4)));
+ fs.appendFileSync(out, toYAML({
+ file: `courses/course_${(i).toString(16).padStart(2, '0').toUpperCase()}`,
+ type: 'SM64:TEXT',
+ offset: 0x108A40,
+ mio0: offset
+ }));
+ }
+}
+
+function findAct(bytes, out) {
+ let { start, end } = roms[version].act;
+ let size = ((end - start) / 4) - 1;
+ console.log(size)
+ for(let i = 0; i < size; i++){
+ let offset = seg_offset(bytes.readUInt32BE(start + (i * 4)));
+ fs.appendFileSync(out, toYAML({
+ file: `acts/act_${(i).toString(16).padStart(2, '0').toUpperCase()}`,
+ type: 'SM64:TEXT',
+ offset: 0x108A40,
+ mio0: offset
+ }));
}
}
async function main(){
- bytes = fs.readFileSync('./baserom.us.z64');
- let tst = [0x46,0x00,0x52,0x00,0x54,0x00,0x56,0x00,0x58,0x00,0x5a,0x00,0x5c,0x00,0x5e,0x00,0x60,0x00,0x62,0x00,0x64,0x00,0x67,0x00,0x69,0x00,0x6b,0x00,0x6d,0x00,0x6f,0x00,0x71,0x00,0x73,0x00,0x75,0x00,0x77,0x00,0x79,0x00,0x7b,0x00,0x7d,0x00,0x7f,0x00,0x81,0x00,0x83,0x00,0x85,0x00,0x87,0x00,0x89,0x00,0x8b,0x00,0x8d,0x00,0x8f,0x00,0x91,0x00,0x93,0x00,0x95,0x00,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00,0x01,0x22,0x01,0x11,0x01,0x22,0x01,0x0e,0x01,0x13,0x01,0x0f,0x01,0x12,0x01,0x0b,0x01,0x0d,0x02,0x21,0x10,0x01,0x14,0x01,0x15,0x01,0x16,0x01,0x17,0x01,0x18,0x01,0x12,0x01,0x19,0x01,0x1f,0x01,0x21,0x01,0x1a,0x01,0x0e,0x01,0x1b,0x01,0x1a,0x01,0x1c,0x01,0x1d,0x01,0x25,0x01,0x14,0x01,0x20,0x01,0x1e,0x01,0x1b,0x01,0x1a,0x01,0x23,0x01,0x24,0x01,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00];
- let text = Buffer.from(tst)
- console.log(bytes.indexOf(text))
+ let bytes = fs.readFileSync('./debug/text/text/dump');
+ let output = path.join('assets/sm64/us', 'texts.yml');
+ fs.writeFileSync(output, '');
+ findDialogs(bytes, output);
+ findLevelNames(bytes, output);
+ findAct(bytes, output);
}
main(); \ No newline at end of file