From ee3c3ce77f6cf91f475627ae39141f756245515e Mon Sep 17 00:00:00 2001 From: Ogre Date: Mon, 4 Sep 2023 23:30:22 +0200 Subject: [PATCH] Added about 18 overlays, OK! Added python script to read `serifu` files which contain dialog --- splat.yaml | 562 +++++++++++++++++++++++++++++++++++++++++------- tools/serifu.py | 52 +++++ 2 files changed, 539 insertions(+), 75 deletions(-) create mode 100644 tools/serifu.py diff --git a/splat.yaml b/splat.yaml index 69705bc..c38597a 100644 --- a/splat.yaml +++ b/splat.yaml @@ -419,15 +419,14 @@ segments: - { start: 0x66E10, type: bss, vram: 0x80190F10 } - - [0x66E10, bin] - + # __SOME_OVERLAY_TABLE - type: code dir: overlays/overlay_table_0 start: 0x66E10 vram: 0x80197B70 bss_size: 0x10 - # symbol_name_format: $VRAM_0_$ROM - # exclusive_ram_id: test_overlapping + symbol_name_format: ovl00_$VRAM_$ROM + exclusive_ram_id: test_overlapping subsegments: - [0x66E10, asm] - [0x67570, asm] @@ -440,46 +439,68 @@ segments: - { start: 0x69900, type: bss, vram: 0x8019A660 } - - [0x69900, bin] + # __SOME_OVERLAY_TABLE_17 + - type: code + dir: overlays/overlay_table_17 + start: 0x69900 + vram: 0x80197B70 + bss_size: 0x60 + symbol_name_format: ovl17_$VRAM_$ROM + exclusive_ram_id: test_overlapping + subsegments: + - [0x69900, asm] + - [0x6D3D0, asm] - # - type: code - # dir: overlays/overlay_table_1 - # start: 0x6E660 - # vram: 0x80197B70 - # bss_size: 0x10 - # # symbol_name_format: unique_1_$ROM - # # exclusive_overlay_id: test_overlapping - # subsegments: - # - [0x6E660, asm] + - [0x6DF80, rodata] + - [0x6DFA0, rodata] + - [0x6E250, rodata] + - [0x6E2A0, rodata] + - [0x6E2B0, rodata] + - [0x6E610, rodata] - # - { start: 0x71280, type: bss, vram: 0x8019A790 } + - { start: 0x6E660, type: bss, vram: 0x8019C8D0 } + + # __SOME_OVERLAY_TABLE_1 + - type: code + dir: overlays/overlay_table_1 + start: 0x6E660 + vram: 0x80197B70 + bss_size: 0x10 + symbol_name_format: ovl01_$VRAM_$ROM + exclusive_ram_id: test_overlapping + subsegments: + - [0x6E660, asm] + + - { start: 0x71280, type: bss, vram: 0x8019A790 } - [0x71280, bin] - # - type: code - # dir: overlays/overlay_table_2 - # start: 0xE48F0 - # vram: 0x80197B70 - # bss_size: 0x20 - # symbol_name_format: $VRAM_2_$ROM - # exclusive_ram_id: test_overlapping - # subsegments: - # - [0xE48F0, asm] - # - [0xE4BE0, asm] - # - [0xE5960, asm] - - # - [0xEAF00, rodata] - # - [0xEAF10, rodata] - - # - { start: 0xEBBB0, type: bss, vram: 0x8019EE30 } - - - [0xEBBB0, bin] - + # __SOME_OVERLAY_TABLE_2 - type: code - dir: overlays/overlay_EBBB0 + dir: overlays/overlay_table_2 + start: 0xE48F0 + vram: 0x80197B70 + bss_size: 0x20 + symbol_name_format: ovl02_$VRAM_$ROM + exclusive_ram_id: test_overlapping + subsegments: + - [0xE48F0, asm] + - [0xE4BE0, asm] + - [0xE5960, asm] + + - [0xEAF00, rodata] + - [0xEAF10, rodata] + + - { start: 0xEBBB0, type: bss, vram: 0x8019EE30 } + + # __SOME_OVERLAY_TABLE_3 + - type: code + dir: overlays/overlay_table_3 start: 0xEBBB0 vram: 0x8019EE50 bss_size: 0x310 + symbol_name_format: ovl03_$VRAM_$ROM + exclusive_ram_id: test_overlapping subsegments: - [0xEBBB0, asm] - [0xED530, asm] @@ -499,32 +520,161 @@ segments: - { start: 0xF9FF0, type: bss, vram: 0x801AD290 } - - [0xF9FF0, bin] - - # - type: code - # dir: overlays/overlay_FA5E0 - # start: 0xFA5E0 - # vram: 0x801AD5A0 - # bss_size: 0xA0 - # subsegments: - # - [0xFA5E0, asm] - - # - [0x1003D0, rodata] - # - [0x1006D0, rodata] - # - [0x101390, rodata] - # - [0x1018D0, rodata] - # - [0x101A10, rodata] - # - [0x101A40, rodata] - - # - { start: 0x101CE0, type: bss, vram: 0x801B4CA0 } - - - [0x101CE0, bin] - + # __SOME_OVERLAY_TABLE_4 - type: code - dir: overlays/overlay_14EBE0 + dir: overlays/overlay_table_4 + start: 0xF9FF0 + vram: 0x8019EE50 + bss_size: 0x0 + symbol_name_format: ovl04_$VRAM_$ROM + exclusive_ram_id: test_overlapping + subsegments: + - [0xF9FF0, asm] + + # - [0xFA5D0, rodata] + # - { start: 0xFA5D0, type: bss, vram: 0x8019F430 } + + # __SOME_OVERLAY_TABLE_5 + - type: code + dir: overlays/overlay_table_5 + start: 0xFA5D0 + vram: 0x8019EE50 + bss_size: 0x0 + symbol_name_format: ovl05_$VRAM_$ROM + exclusive_ram_id: test_overlapping + subsegments: + - [0xFA5D0, asm] + + # __SOME_OVERLAY_TABLE_6 + - type: code + dir: overlays/overlay_table_6 + start: 0xFA5E0 + vram: 0x801AD5A0 + bss_size: 0xA0 + symbol_name_format: ovl06_$VRAM_$ROM + exclusive_ram_id: test_overlapping + subsegments: + - [0xFA5E0, asm] + + - [0x1003D0, data] + # - [0x1006D4, rodata] + # - [0x101390, rodata] + # - [0x1018D0, rodata] + # - [0x101A10, rodata] + # - [0x101A40, rodata] + + - { start: 0x101CE0, type: bss, vram: 0x801B4CA0 } + + # __SOME_OVERLAY_TABLE_7 + - type: code + dir: overlays/overlay_table_7 + start: 0x101CE0 + vram: 0x801AD5A0 + bss_size: 0x3560 + symbol_name_format: ovl07_$VRAM_$ROM + exclusive_ram_id: test_overlapping + subsegments: + - [0x101CE0, asm] + - [0x105C20, asm] + - [0x105CC0, asm] + - [0x107850, asm] + - [0x108500, asm] + - [0x10B040, asm] + - [0x110160, asm] + - [0x112C00, asm] + - [0x113A90, asm] + - [0x1172B0, asm] + - [0x11A540, asm] + - [0x11B430, asm] + - [0x120BC0, asm] + - [0x124FC0, asm] + - [0x126770, asm] + - [0x127830, asm] + - [0x127F60, asm] + - [0x128D50, asm] + - [0x12AE10, asm] + - [0x132D30, asm] + - [0x133EA0, asm] + - [0x134830, asm] + - [0x1356A0, asm] + - [0x139DC0, asm] + + - [0x13C4A0, rodata] + - [0x13CCC0, rodata] + - [0x13CDB0, rodata] + - [0x13CDC0, rodata] + - [0x13CDD0, rodata] + - [0x13D900, rodata] + - [0x13E6F0, rodata] + - [0x13F380, rodata] + - [0x13F3A0, rodata] + - [0x13F400, rodata] + - [0x13F420, rodata] + - [0x13F9C0, rodata] + - [0x13FA20, rodata] + - [0x13FA30, rodata] + - [0x13FC60, rodata] + - [0x140870, rodata] + - [0x1417B0, rodata] + - [0x141CF0, rodata] + - [0x141D10, rodata] + - [0x141E10, rodata] + - [0x141E80, rodata] + - [0x141EA0, rodata] + - [0x142380, rodata] + - [0x142900, rodata] + - [0x142950, rodata] + - [0x142A50, rodata] + - [0x142B10, rodata] + - [0x142D50, rodata] + - [0x142E50, rodata] + - [0x142F40, rodata] + - [0x142F70, rodata] + - [0x142FC0, rodata] + - [0x1432D0, rodata] + - [0x143B70, rodata] + - [0x144250, rodata] + - [0x1445F0, rodata] + - [0x144AD0, rodata] + - [0x1451E0, rodata] + + - { start: 0x145210, type: bss, vram: 0x801F0AD0 } + + # __SOME_OVERLAY_TABLE_8 + - type: code + dir: overlays/overlay_table_8 + start: 0x145210 + vram: 0x801F4030 + bss_size: 0x70 + symbol_name_format: ovl08_$VRAM_$ROM + exclusive_ram_id: test_overlapping + subsegments: + - [0x145210, asm] + - [0x145290, asm] + - [0x149A80, asm] + - [0x14AB50, asm] + + - [0x14DE90, rodata] + - [0x14E120, rodata] + - [0x14E150, rodata] + - [0x14E1A0, rodata] + - [0x14E370, rodata] + - [0x14E720, rodata] + - [0x14E790, rodata] + - [0x14E920, rodata] + - [0x14EAC0, rodata] + - [0x14EBA0, rodata] + + - { start: 0x14EBE0, type: bss, vram: 0x801FDA00 } + + # __SOME_OVERLAY_TABLE_9 + - type: code + dir: overlays/overlay_table_9 start: 0x14EBE0 vram: 0x801FDA70 bss_size: 0x130 + symbol_name_format: ovl09_$VRAM_$ROM + exclusive_ram_id: test_overlapping subsegments: - [0x14EBE0, asm] - [0x151F40, asm] @@ -552,16 +702,19 @@ segments: - [0x165FC0, bin] + # __SOME_OVERLAY_TABLE_18 - type: code - dir: overlays/overlay_1BA050 + dir: overlays/overlay_table_18 start: 0x1BA050 vram: 0x80220F40 bss_size: 0x650 + symbol_name_format: ovl18_$VRAM_$ROM + exclusive_ram_id: test_overlapping subsegments: - [0x1BA050, asm] - [0x1BBFB0, asm] - - [0x1C2DC0, rodata] + - [0x1C2DC0, rodata] - [0x1C3010, rodata] - [0x1C3130, rodata] - [0x1C3140, rodata] @@ -572,22 +725,101 @@ segments: - { start: 0x1C3300, type: bss, vram: 0x8022A1F0 } - [0x1C3300, bin] - - # - type: code - # dir: overlays/unknown - # start: 0x1CE070 - # vram: 0x80197B70 - # subsegments: - # - [0x1CE070, asm] - # - [0x1D4700, asm] - # - [0x1D8850, asm] - # - [0x1DAAB0, asm] - # - [0x1DBF70, asm] - # - [0x1E3440, asm] - # - [0x1E9E00, asm] - # - [0x1ED1D0, asm] - # - [0x1EE580, asm] - # - [0x1EE590, asm] + + # __SOME_OVERLAY_TABLE_15 + - type: code + dir: overlays/overlay_table_15 + start: 0x1CE070 + vram: 0x80197B70 + bss_size: 0x1E0 + symbol_name_format: ovl15_$VRAM_$ROM + exclusive_ram_id: test_overlapping + subsegments: + - [0x1CE070, asm] + - [0x1D4700, asm] + - [0x1D8850, asm] + - [0x1DAAB0, asm] + - [0x1DBF70, asm] + - [0x1E3440, asm] + - [0x1E9E00, asm] + - [0x1ED1D0, asm] + + - [0x1EE580, rodata] + - [0x1EE6B0, rodata] + - [0x1EE8E0, rodata] + - [0x1EE9E0, rodata] + - [0x1EEA00, rodata] + - [0x1EEB30, rodata] + - [0x1EEC40, rodata] + - [0x1EEC60, rodata] + - [0x1EEC80, rodata] + - [0x1EECA0, rodata] + - [0x1EECC0, rodata] + - [0x1EF0D0, rodata] + - [0x1EF120, rodata] + - [0x1EF150, rodata] + - [0x1EF180, rodata] + - [0x1EF1F0, rodata] + - [0x1EF8F0, rodata] + - [0x1EFA20, rodata] + - [0x1EFC10, rodata] + - [0x1EFC70, rodata] + - [0x1EFD20, rodata] + - [0x1EFE00, rodata] + - [0x1EFE80, rodata] + - [0x1EFEA0, rodata] + - [0x1EFEB0, rodata] + - [0x1EFF50, rodata] + - [0x1F0030, rodata] + - [0x1F0040, rodata] + - [0x1F0970, rodata] + - [0x1F09F0, rodata] + + - { start: 0x1F0A30, type: bss, vram: 0x801BA530 } + + # __SOME_OVERLAY_TABLE_10 + - type: code + dir: overlays/overlay_table_10 + start: 0x1F0A30 + vram: 0x801AD5A0 + bss_size: 0x130 + symbol_name_format: ovl10_$VRAM_$ROM + exclusive_ram_id: test_overlapping + subsegments: + - [0x1F0A30, asm] + - [0x1F8D70, asm] + - [0x201430, asm] + - [0x204EE0, asm] + - [0x205220, asm] + - [0x208F90, asm] + - [0x20BCE0, asm] + - [0x20FDC0, asm] + + - [0x211D20, rodata] + - [0x211DC0, rodata] + - [0x211E10, rodata] + - [0x211E70, rodata] + - [0x211FB0, rodata] + - [0x211FC0, rodata] + - [0x212030, rodata] + - [0x212110, rodata] + - [0x212180, rodata] + - [0x212350, rodata] + - [0x212370, rodata] + - [0x212390, rodata] + - [0x2123A0, rodata] + - [0x213100, rodata] + - [0x213140, rodata] + - [0x213150, rodata] + - [0x213160, rodata] + - [0x213750, rodata] + - [0x213760, rodata] + - [0x213830, rodata] + - [0x213AE0, rodata] + + - { start: 0x213B10, type: bss, vram: 0x801D0680 } + + - [0x213B10, bin] # - type: code # dir: overlays/overlay2 @@ -637,7 +869,187 @@ segments: # - [0x243F20, asm] - [0x2447A0, bin] + + # __SOME_OVERLAY_TABLE_11 + - type: code + dir: overlays/overlay_table_11 + start: 0x24BCA0 + vram: 0x801F70E0 + bss_size: 0x10 + symbol_name_format: ovl11_$VRAM_$ROM + exclusive_ram_id: test_overlapping + subsegments: + - [0x24BCA0, asm] + - [0x24EA70, asm] + - [0x2522E0, asm] + - [0x256410, asm] + - [0x25A0B0, asm] + - [0x25DD90, asm] + + - [0x25E2C0, rodata] + - [0x25E340, rodata] + - [0x25E610, rodata] + - [0x25E9C0, rodata] + - [0x25EBA0, rodata] + - [0x25ED30, rodata] + - [0x25ED80, rodata] + - [0x25EDA0, rodata] + - [0x25EDC0, rodata] + - [0x25EE00, rodata] + - [0x25EE10, rodata] + - [0x25EE30, rodata] + + - { start: 0x25EE90, type: bss, vram: 0x8020A2D0 } + - [0x25EE90, bin] + + # __SOME_OVERLAY_TABLE_12 + - type: code + dir: overlays/overlay_table_12 + start: 0x25EE90 + vram: 0x8020A2E0 + bss_size: 0x420 + symbol_name_format: ovl12_$VRAM_$ROM + exclusive_ram_id: test_overlapping + subsegments: + - [0x25EE90, asm] + - [0x25F6C0, asm] + - [0x25F7F0, asm] + - [0x260420, asm] + - [0x260DA0, asm] + - [0x261C90, asm] + - [0x261E90, asm] + - [0x262450, asm] + - [0x262CC0, asm] + - [0x263190, asm] + - [0x263690, asm] + - [0x2638D0, asm] + - [0x2639E0, asm] + - [0x263F40, asm] + - [0x2641B0, asm] + - [0x264490, asm] + - [0x264770, asm] + - [0x264BB0, asm] + - [0x264FC0, asm] + - [0x2664B0, asm] + - [0x2673F0, asm] + - [0x267750, asm] + - [0x269470, asm] + - [0x269F00, asm] + - [0x26A510, asm] + - [0x26B360, asm] + - [0x26B820, asm] + - [0x26BE30, asm] + - [0x26C070, asm] + - [0x26C1F0, asm] + - [0x26CCF0, asm] + - [0x26D770, asm] + - [0x26F1E0, asm] + - [0x271E30, asm] + - [0x272790, asm] + + - [0x274000, rodata] + - [0x274DC0, rodata] + - [0x274DF0, rodata] + - [0x274E00, rodata] + - [0x274E80, rodata] + - [0x274ED0, rodata] + - [0x274F00, rodata] + - [0x274F50, rodata] + - [0x274FC0, rodata] + - [0x275010, rodata] + - [0x275070, rodata] + - [0x2750D0, rodata] + - [0x275160, rodata] + - [0x275180, rodata] + - [0x2751A0, rodata] + - [0x2751C0, rodata] + - [0x275280, rodata] + - [0x2752B0, rodata] + - [0x2754C0, rodata] + - [0x275530, rodata] + - [0x275640, rodata] + - [0x275650, rodata] + - [0x275710, rodata] + + - { start: 0x275850, type: bss, vram: 0x80220CA0 } + + - [0x275850, bin] + + # __SOME_OVERLAY_TABLE_13 + - type: code + dir: overlays/overlay_table_13 + start: 0x275850 + vram: 0x802210C0 + bss_size: 0x0 + symbol_name_format: ovl13_$VRAM_$ROM + exclusive_ram_id: test_overlapping + subsegments: + - [0x275850, asm] + - [0x275FF0, asm] + - [0x276FE0, asm] + - [0x277F90, asm] + - [0x278FC0, asm] + - [0x279920, asm] + + - [0x279DB0, rodata] + - [0x279EC0, rodata] + - [0x279F10, rodata] + - [0x279FA0, rodata] + - [0x279FD0, rodata] + - [0x27A010, rodata] + + # - { start: 0x27A020, type: bss, vram: 0x80225890 } + + - [0x27A020, bin] + + # __SOME_OVERLAY_TABLE_16 + - type: code + dir: overlays/overlay_table_16 + start: 0x27A020 + vram: 0x80225890 + bss_size: 0xA0 + symbol_name_format: ovl16_$VRAM_$ROM + exclusive_ram_id: test_overlapping + subsegments: + - [0x27A020, asm] + - [0x2804E0, asm] + + - [0x280D50, rodata] + - [0x280FF0, rodata] + - [0x281020, rodata] + - [0x281030, rodata] + - [0x2812B0, rodata] + - [0x281330, rodata] + - [0x281830, rodata] + - [0x281840, rodata] + + - { start: 0x281860, type: bss, vram: 0x8022D0D0 } + + - [0x281860, bin] + + # __SOME_OVERLAY_TABLE_14 + - type: code + dir: overlays/overlay_table_14 + start: 0x281860 + vram: 0x80225890 + bss_size: 0x90 + symbol_name_format: ovl14_$VRAM_$ROM + exclusive_ram_id: test_overlapping + subsegments: + - [0x281860, asm] + - [0x282FE0, asm] + - [0x283DF0, asm] + + - [0x2866F0, rodata] + - [0x286940, rodata] + - [0x286960, rodata] + - [0x286B50, rodata] + + - { start: 0x286BD0, type: bss, vram: 0x8022AC00 } + + - [0x286BD0, bin] + # - type: code # dir: overlays/overlay99 # start: 0x002AE3C0 diff --git a/tools/serifu.py b/tools/serifu.py new file mode 100644 index 0000000..43aad58 --- /dev/null +++ b/tools/serifu.py @@ -0,0 +1,52 @@ +pattern_serifu_00_0 = """ +0000001C 00000052 00000075 000000D0 0000014F 00000177 000001A0 +402D4078406C3340724053304041406E406E403D7B5430357D596F7527726520 +6C656176696E6720746F6D6F72726F773F4073406300402D4078406C3340 +724053304041406E406E403D7B5430357D596561682E4073406300402D40 +78406C3340724053304041406E406E403D5768792063616E277420796F75 +207374617920686572653F407340634073406E406E403D57687920746865 +206D696C69746172792061636164656D793F205768793F4073406300402D +4078406C3340724053304041406E406E403D476F64206B6E6F7773207768 +657265206D79206D6F746865722069737B5430357D407340634073406E40 +6E403D616E6420492063616E2774207374616E647B5430357D4073406340 +73406E406E403D6265696E672061726F756E64206D79206661746865722E +4073406300402D4078406C3340724053304041406E7B5430357D7B543035 +7D7B5430357D406E403D4073406300402D4078406C334072405330404140 +6E406E403D49276D206C656176696E677B5430357D4073406300402D4078 +406C3340724053304041406E406E403D7B5430357D59756D696C2C407340 +634073406E406E403D492070726F6D6973652049276C6C206D616B652079 +6F752070726F75642E407340634073406E406E403D49206861766520746F +206C6561726E20746F207374616E64206F6E206D79206F776E7B5430357D +407340634073406E406E403D536F20492063616E2070726F746563742062 +6F7468206F662075732E4073406300 +""" + +pattern_serifu_00_1 = """ +00 00 00 30 00 00 01 3C 00 00 02 9E 00 00 02 C7 00 00 02 F5 00 00 03 23 00 00 03 4B 00 00 03 75 00 00 03 9F 00 00 03 E4 00 00 04 1C 00 00 04 47 41 72 63 68 62 69 73 68 6F 70 20 4F 64 69 72 6F 6E 40 6E 22 48 65 20 77 68 6F 20 68 61 73 20 6C 65 61 72 6E 65 64 20 74 68 65 20 77 61 79 20 6F 66 40 6E 20 74 68 65 20 73 77 6F 72 64 20 61 6E 64 20 67 6F 64 27 73 20 74 65 61 63 68 69 6E 67 73 2C 40 70 40 63 20 69 6E 20 61 63 63 6F 72 64 61 6E 63 65 20 77 69 74 68 20 74 68 65 40 6E 20 74 72 61 64 69 74 69 6F 6E 73 20 6B 65 70 74 20 73 69 6E 63 65 40 6E 20 74 68 65 20 64 61 79 73 20 6F 66 20 74 68 65 20 50 72 6F 67 65 6E 69 74 6F 72 2C 40 70 40 63 20 49 20 73 68 61 6C 74 20 6E 6F 77 20 63 6F 6D 70 6C 65 74 65 40 6E 20 74 68 79 20 74 72 61 69 6E 69 6E 67 20 77 69 74 68 20 61 6E 20 6F 61 74 68 40 6E 20 74 6F 20 6F 75 72 20 4D 6F 74 68 65 72 20 42 65 72 74 68 65 2E 40 70 40 63 20 57 68 61 74 20 69 73 20 74 68 79 20 6E 61 6D 65 3F 22 40 61 40 63 00 41 72 63 68 62 69 73 68 6F 70 20 4F 64 69 72 6F 6E 40 6E 22 40 25 30 20 47 61 6C 6C 61 6E 74 2C 40 6E 20 49 20 61 73 6B 20 74 68 65 65 7B 54 30 35 7D 22 40 70 40 63 22 57 68 61 74 20 64 6F 73 74 20 74 68 6F 75 20 68 6F 6C 64 20 77 69 74 68 69 6E 40 6E 20 74 68 79 20 73 77 6F 72 64 3F 22 40 73 40 63 22 57 68 61 74 20 73 68 61 6C 74 20 74 68 6F 75 20 73 65 76 65 72 20 77 69 74 68 40 6E 20 74 68 79 20 73 77 6F 72 64 3F 22 40 73 40 63 22 46 6F 72 20 77 68 61 74 20 73 68 61 6C 74 20 74 68 6F 75 20 62 65 73 65 65 63 68 40 6E 20 74 68 65 20 67 6F 64 73 3F 22 40 73 40 63 22 57 68 61 74 20 73 68 61 6C 74 20 74 68 6F 75 20 6F 66 66 65 72 40 6E 20 74 68 65 20 67 6F 64 73 3F 22 40 73 40 63 22 57 68 61 74 20 64 6F 73 74 20 74 68 6F 75 20 77 69 73 68 20 66 6F 72 3F 22 40 73 40 63 22 57 68 61 74 20 73 68 61 6C 74 20 74 68 6F 75 20 72 69 64 20 66 72 6F 6D 40 6E 20 74 68 69 73 20 6C 61 6E 64 3F 22 40 73 40 63 22 4C 61 73 74 6C 79 2C 20 66 6F 72 20 77 68 6F 73 65 20 68 65 6C 70 40 6E 20 64 6F 73 74 20 74 68 6F 75 20 63 61 6C 6C 20 75 70 6F 6E 3F 22 40 73 40 63 00 40 25 30 40 6E 22 49 20 68 6F 6C 64 20 40 25 37 40 6E 20 77 69 74 68 69 6E 20 6D 79 20 73 77 6F 72 64 2E 22 40 61 40 63 00 40 25 30 40 6E 22 57 69 74 68 20 6D 79 20 73 77 6F 72 64 2C 20 49 20 77 69 6C 6C 40 6E 20 73 65 76 65 72 20 40 25 37 2E 22 40 61 40 63 00 40 25 30 40 6E 22 49 20 77 69 6C 6C 20 62 65 73 65 65 63 68 20 74 68 65 20 67 6F 64 73 40 6E 20 66 6F 72 20 40 25 37 2E 22 40 61 40 63 00 40 25 30 40 6E 22 49 20 77 69 6C 6C 20 6F 66 66 65 72 20 74 68 65 20 67 6F 64 73 40 6E 20 40 25 37 2E 22 40 61 40 63 00 40 25 30 40 6E 22 49 20 77 69 73 68 20 66 6F 72 20 40 25 37 40 6E 20 6F 6E 20 74 68 69 73 20 6C 61 6E 64 2E 22 40 61 40 63 00 40 25 30 40 6E 22 49 20 77 69 6C 6C 20 72 69 64 20 74 68 69 73 20 6C 61 6E 64 40 6E 20 6F 66 20 40 25 37 2E 22 40 61 40 63 00 41 72 63 68 62 69 73 68 6F 70 20 4F 64 69 72 6F 6E 40 6E 22 55 70 6F 6E 20 74 68 79 20 64 65 70 61 72 74 75 72 65 2C 40 6E 20 49 20 62 65 73 74 6F 77 20 74 68 65 73 65 20 67 69 66 74 73 2E 22 40 61 40 63 00 41 72 63 68 62 69 73 68 6F 70 20 4F 64 69 72 6F 6E 40 6E 22 57 68 61 74 20 69 73 20 74 68 65 20 64 61 74 65 20 6F 66 20 74 68 79 20 62 69 72 74 68 3F 22 40 61 40 63 00 40 25 30 40 6E 22 49 20 63 61 6C 6C 20 75 70 6F 6E 20 74 68 65 40 6E 20 40 25 37 20 66 6F 72 20 68 65 6C 70 2E 22 40 61 40 63 00 40 2D 40 78 40 6C 33 40 72 40 53 30 40 41 40 3D 53 69 78 20 79 65 61 72 73 20 6C 61 74 65 72 7B 54 30 35 7D 40 54 30 33 30 40 6E 40 6E 40 3D 57 69 6E 6E 65 61 2C 20 43 61 70 69 74 61 6C 20 6F 66 20 50 61 6C 61 74 69 6E 75 73 40 73 40 63 40 3D 40 54 30 33 30 49 73 63 68 6B 61 20 4D 69 6C 69 74 61 72 79 20 41 63 61 64 65 6D 79 40 54 30 33 30 40 6E 40 6E 40 3D 47 72 61 64 75 61 74 69 6F 6E 20 43 65 72 65 6D 6F 6E 79 40 73 40 63 40 73 40 6E 40 3D 22 4F 75 72 20 6E 65 78 74 20 67 72 61 64 75 61 74 65 7B 54 30 35 7D 22 40 73 40 63 00 +""" + +from struct import unpack_from + +data = bytes.fromhex(pattern_serifu_00_1) + +cursor = 0 +(dialog_start,) = unpack_from('>i', data[0:4]) +offsets = [] + +for i in range(0, dialog_start, 4): + (value,) = unpack_from('>i', data[i:]) + offsets.append(value) +# The last string ends at the end of the data. +offsets.append(len(data)) + +print(f"Amount of dialog: {len(offsets)}") + +for i in range(0, len(offsets) - 1): + [start, end] = offsets[i:i+2] + + print(data[start:end]) + +# b"@-@x@l3@r@S0@A@n@n@={T05}You're leaving tomorrow?@s@c\x00" +# b'@-@x@l3@r@S0@A@n@n@={T05}Yeah.@s@c\x00' + +# b'@-@x@l3@r@S0@A@=Six years later{T05}@T030@n@n@=Winnea, Capital of Palatinus@s@c@=@T030Ischka Military Academy@T030@n@n@=Graduation Ceremony@s@c@s@n@="Our next graduate{T05}"@s@c\x00' \ No newline at end of file