Kobo have stopped the rollout of this firmware version due to performance issues, which seem to most affect those with a large number of books on the device. See davidfor's post.
Before starting:
1. Check Settings > Device information to make sure your Kobo ereader is already running firmware version 4.6.9960 (161d1adc5a). If not, then you need to upgrade before applying this patch.
2. Check that your battery is well charged.
Patching from Windows, Linux (i386/x86_64), or Mac (OS X 10.8-10.9, i386/x86_64):
1. Download and extract patch_kobo_4069960.zip (attached).
2. Download the Kobo firmware archive version 4.6.9960 for your device (See this thread) and copy it into the 4.6.9960_source/ subdirectory that was created in step 1. (Don't unzip the firmware archive.)
3. Read and edit all the *.patch files in the 4.6.9960_source/ subdirectory in order to: choose which patches to enable (patch_enable=`yes`) or disable (patch_enable=`no`); and to change some of the replacement values to suit your device and preferences.
4. In Windows run 4.6.9960.bat (double-click); For Linux/Mac run 4.6.9960.sh (double-click, or right-click + run, or execute 4.6.9960.sh from the command line, or drag 4.6.9960.sh into Terminal, depending on your particular OS/desktop.)
5. If there were no errors, a new 4.6.9960_target/ subdirectory will be created. Copy the KoboRoot.tgz from this subdirectory to the .kobo directory on your ereader.
6. Safely eject and unplug the device, which will then update and restart.
To return your ereader to its original unpatched state:
1. Edit all the 4.6.9960_source/*.patch files to disable all patches (set patch_enable = `no` for every patch).
2. Repeat steps 4-6 of the procedure above.
Last edited by GeoffR; 10-07-2017 at 08:15 AM.
Reason: Updated attachment to add `my 24 line spacing values` patch.
None of the patches are enabled by default anymore.
The following patches are still missing, I'll update the attachment in post #1 if/when they become available:
Missing from libnickel.so.1.0.0.patch:
* `Custom page refresh options`
* All keyboard patches
These patches have changed since firmware version 4.5.9587:
`Custom Sleep/Power-off timeouts` now works like it did in 3.x.x firmware versions, i.e. all values can be changed, maximum 255 minutes.
`Freedom to advanced fonts control`: It no longer makes any difference whether the device/book language is Japanese or not. BEWARE: I don't fully understand the consequences of this patch, it seems to work okay on my Glo, but I can't be 100% certain that there are no bad side effects.
`Custom reading footer style`: The firmware now uses larger font sizes for the footer, by default the patch changes back to the old sizes.
`Fix page breaks bug` name changed to `Disable orphans/widows avoidance`
<Patch>
patch_name = `New home screen footer rename`
patch_enable = `yes`
#
##Multi-version patch: 4.4.9344+
#
# Rename the left footer button.
#
#
# The lenght of the replace string must be 25 for example:
# ` ` - replace with space show as empty
# `FirstName LastName `
# `If lost call:123456789012`
#
find_base_address = `Find your next great read`
replace_string = 0000, `Find your next great read`, `Test, text length 25 char`
#
#replace_string = 0000, `Find your next great read`, ` `
#replace_string = 0000, `Find your next great read`, `FirstName LastName `
#replace_string = 0000, `Find your next great read`, `If lost call:123456789012`
#
#
# The lenght of the replace string must be 11 char.
#
#find_base_address = `BROWSE KOBO`
#replace_string = 0000, `BROWSE KOBO`, `11 --- char`
</Patch>
Device: Kobo: KA1, ClaraHD, Forma, Libra2, Clara2E. PocketBook: TouchHD3
Missing from nickel.patch:
patch_name = `Custom Header menubar - reduce height by 33%`
Spoiler:
Code:
<Patch>
patch_name = `Custom Header menubar - reduce height by 33%`
patch_enable = `no`
# Multi-version patch: 4.06.9960+
#
# patch_group = `Custom header alternatives`
#
find_base_address = `\xFC\x0A\x4D\x72\xC8\xA5\xCC\x80\xC1\x10\xD3\xC9`
replace_bytes = 0000, FC 0A 4D 72 C8 A5 CC 80, FC 0A 4F 38 E4 52 66 CC
replace_bytes = 0008, C1 10 D3 C9 21 4D 2F 74, 87 F9 EA 70 A0 E9 85 4E
replace_bytes = 0010, DA 4E 66 D2 C9 A5 D3 C9, DB C9 4C 3A B9 74 3A 19
replace_bytes = 0018, 28 46 B1 D5 1A C9 91 44, 61 84 AD D6 48 8E 24 02
replace_bytes = 0020, 80 36 FD EF 95 8D 89 3F, B4 E9 7F AF 6C 4C FC 21
replace_bytes = 0028, 24 AF 15 68 6E 46 F6 3E, 79 AD 40 73 03 C9 FB BC
replace_bytes = 0030, EF 7A F7 F5 4A 9C DE 28, EB DD D7 6B B9 7D 27 91
replace_bytes = 0038, AC 56 F2 03 16 B7 94 AC, DC 8A 0F 88 DF 13 BC FB
replace_bytes = 0040, BF 3F 5E A6 E9 DD 82 3C, FE 38 8F E3 87 15 7E 22
replace_bytes = 0048, D1 90 CC E5 37 41 13 1E, 3E 5E 88 6F 9C 44 2C 38
replace_bytes = 0050, 6D 2F 94 58 91 1F E8 4F, CC 24 DF E2 1F CE 9F 96
replace_bytes = 0058, 0F A1 25 DE F4 63 42 A3, E3 6C D0 BE 13 62 12 84
replace_bytes = 0060, 58 CD D0 74 98 6E DE 67, 72 EA 0C 46 F1 FE 7D B2
replace_bytes = 0068, 6B 94 35 D6 FE F6 4E 01, 46 68 65 ED 6F AB 0D 50
replace_bytes = 0070, EA 75 CC 09 A3 9B 16 6A, 6F 43 86 29 D9 D7 50 87
replace_bytes = 0078, 60 A1 06 0E D4 8F 02 47, AE 4E 3D AE C1 D4 8F 1C
replace_bytes = 0080, 9C B5 40 87 9E 85 5A 2C, 05 8C D6 40 C7 06 E8 D8
replace_bytes = 0088, 76 60 F1 36 C9 1E 6F 03, 06 8A 0E 51 72 75 0D B6
replace_bytes = 0090, FB 53 0B 78 B7 68 80 65, EB 7A 3A 37 5B D4 C0 22
replace_bytes = 0098, CC D7 73 B6 A0 21 56 5C, 64 BB 05 5D 11 1F 49 C6
replace_bytes = 00A0, C8 8B 07 9C C8 02 79 8F, C5 6C 8D 22 91 21 97 C8
replace_bytes = 00A8, C3 5F 91 E0 2B B6 E8 87, FF 15 70 B6 A5 AB 8E CF
replace_bytes = 00B0, 3C E1 62 86 94 C0 4C A6, 22 C6 A7 8E E4 88 8A 18
replace_bytes = 00B8, 58 10 A6 BA 49 65 6E 26, 71 4C 65 33 29 CF 4D 07
replace_bytes = 00C0, 68 1D 53 45 72 C4 92 48, ED 42 22 71 8A D8 60 21
replace_bytes = 00C8, 89 23 E2 22 88 50 8A 17, 50 80 6D 04 1D 27 46 AB
replace_bytes = 00D0, 0B CA A2 19 1A EC DE EF, 15 A1 C1 D4 C9 EA F6 18
replace_bytes = 00D8, 31 15 3C 25 42 6D FB 58, 73 16 63 2E 0F 1D A4 EA
replace_bytes = 00E0, D7 83 2D F5 63 33 74 76, 41 37 EA B2 A9 73 3D 4F
replace_bytes = 00E8, 99 5D 7F 26 0F 0A 3D A3, 7E 7F C6 6B E9 3C 3B E9
replace_bytes = 00F0, FC FA F6 4A DF 20 E2 2C, EF FB 1B B5 81 F9 75 12
replace_bytes = 00F8, 0B 79 E0 4C F5 A5 DA 26, B2 66 54 76 84 3C 44 78
replace_bytes = 0100, 64 86 A8 D2 61 61 35 8D, EA 10 A9 C2 FC 62 1A 4D
replace_bytes = 0108, 2E A7 ED A2 E9 6F 1D 3C, 3E 3B 46 93 DF 2A B8 3B
replace_bytes = 0110, 0C 8A 72 5A 43 4D 3B 55, C9 CA 69 0C D5 CD 54 08
replace_bytes = 0118, 42 BD 11 14 6A 78 A6 12, ED F5 A1 50 CD 31 85 C8
replace_bytes = 0120, 39 F2 C0 48 D3 16 95 D8, 7E 0F 8C D4 6D 51 88 1D
replace_bytes = 0128, B1 35 36 E1 21 4E C8 57, 18 63 23 E6 A3 08 7F 45
replace_bytes = 0130, BC 24 17 27 3F F1 DD A7, 1B 3C BB FA 89 1E 3E DD
replace_bytes = 0138, EB 93 6A E0 AE 4E 8C 8B, 5E 15 03 8F 75 A2 8C 6F
replace_bytes = 0140, 25 4E 6A B1 ED AE 01 7A, 50 54 8A AD 77 0D D0 93
replace_bytes = 0148, D2 D2 06 57 FC 31 CD 71, 9A 36 D8 E2 2F 69 8E 05
replace_bytes = 0150, 00 BE AE 65 0E 40 A8 91, F0 75 2D B3 00 42 8D EC
replace_bytes = 0158, DE 01 09 5E 26 5B 29 57, 9D 91 E0 3C 3A 08 B1 DD
replace_bytes = 0160, 4B 47 67 B8 24 08 FA 65, 58 3A C3 26 41 D0 2F FD
replace_bytes = 0168, 34 AD 13 6F 52 1C 12 D1, 51 99 78 17 23 1F F3 C6
replace_bytes = 0170, 39 8B F5 C8 59 D3 85 8A, 49 AC 46 CE 8E AC 64 A8
replace_bytes = 0178, B5 E1 26 C5 14 D2 A3 A9, 0C 37 CC A6 90 1A 4D A5
replace_bytes = 0180, B6 04 33 2D 93 B8 64 FA, 25 98 69 98 C3 39 D3 D3
replace_bytes = 0188, 26 D3 77 60 9A 73 B8 44, 99 9E 05 53 9F C2 39 72
replace_bytes = 0190, 4E 07 06 72 B7 D4 81 B4, E4 6A C8 91 6B 81 34 CC
replace_bytes = 0198, CC E0 12 1A 98 D0 C0 0E, E0 1C 3A D1 A1 13 33 B4
replace_bytes = 01A0, 6D 9D 9A E5 87 F4 44 25, 76 6A E6 0F D2 13 11 64
replace_bytes = 01A8, BD CF BE 94 EC 66 37 C2, 99 3C 29 C9 66 33 C2 F8
replace_bytes = 01B0, FA 31 BE 30 F2 BB 05 84, 30 BE 30 D2 DD 0C 42 B7
replace_bytes = 01B8, AD 80 76 BE EB 9D 4A 82, 40 3B DF B5 DA 02 23 EE
replace_bytes = 01C0, 45 18 CF 43 CE FE 5B DB, 87 0B 9F D1 FF D6 F6 AA
replace_bytes = 01C8, 9B 92 B5 6E 03 92 47 B8, 64 A9 DB 80 E4 05 AE A8
replace_bytes = 01D0, A2 29 59 35 03 A0 78 B8, 4A 16 CD 00 28 9E EF 19
replace_bytes = 01D8, 67 0C C1 9A 55 20 C9 23, 4D B0 64 15 48 F2 02 4F
replace_bytes = 01E0, 3C 05 F6 32 47 15 BB 67, 81 BD 4C 51 D9 DB B3 13
replace_bytes = 01E8, 3F D1 5B A3 9E 40 05 6D, A9 57 A3 9A 40 19 ED B4
replace_bytes = 01F0, BF 2A 76 C7 84 B1 5B A7, CA B3 93 92 5D A7 0C C0
replace_bytes = 01F8, 2C C0 91 1D E8 3B F5 C1, BE 19 E8 59 F5 C1 C0 1B
replace_bytes = 0200, C2 1B BF 9A 67 56 AF 4E, BC 9A A7 57 AF 4C F4 7A
replace_bytes = 0208, F4 3D 90 E8 EE F6 06 C0, 20 D1 DE ED 15 40 CF 6D
replace_bytes = 0210, 1B 74 10 DA 4B 57 10 46, 20 D4 97 2E 23 F4 9B 08
replace_bytes = 0218, 5D 84 D6 5A ED DB D6 09, B5 B5 3A B5 AD 11 50 5F
replace_bytes = 0220, 68 2F CE BE 0C FB 1D 44, 9C 53 19 4E 6F 10 91 9E
replace_bytes = 0228, E6 A7 BA 7B 2C AE F4 66, EA 96 88 DF A8 97 01 22
replace_bytes = 0230, 80 29 23 42 5B 96 6A E2, 14 73 65 59 A2 88 2F FF
replace_bytes = 0238, CB 6F C7 E3 A1 09 82 C7, 2D 8F 87 3A 08 1E 37 25
replace_bytes = 0240, 4D 4D A3 AB 07 E5 68 D3, 8D A6 1E E4 A3 4D 49 FA
replace_bytes = 0248, 92 61 7E 2A 3C 6F 7D 01, E9 A9 70 5C 7B 03 F0 CC
replace_bytes = 0250, 78 E6 00 BA 66 E7 2C BA, 01 74 F5 CE 19 74 BB AE
replace_bytes = 0258, C3 81 A3 70 63 F2 00 BA, A5 70 65 F2 00 BA 5A BF
replace_bytes = 0260, 46 BF 6D B2 BE AB 6C 73, 4D B2 9E AD 6C 75 FE 40
replace_bytes = 0268, FE 40 C2 A6 4F 2C D2 1E, C2 BA 4F 0C D2 3D E0 8E
replace_bytes = 0270, F0 C6 07 9D DD 4A 8D EC, CF 3A BB E5 1A C9 A3 FA
replace_bytes = 0278, 53 FD 82 45 44 D9 0C 4D, 05 F1 80 50 F5 81 E5 55
replace_bytes = 0280, FC E6 39 3F F7 6A FD F6, CF F9 A9 57 CB DB 67 67
replace_bytes = 0288, C1 59 40 BD AD 66 71 3E, 01 F5 B6 98 C5 B8 0B 66
replace_bytes = 0290, 04 B3 38 1F 1E 95 05 D0, 71 DC 3E 3B 0B A0 D3 A5
replace_bytes = 0298, E9 5A 12 13 38 89 C9 71, 24 86 70 12 C3 CB 92 80
replace_bytes = 02A0, 49 40 5D AF A6 11 C0 B5, BA 5E 4C 63 02 D7 62 62
replace_bytes = 02A8, 08 DC 6B 91 2B 1D 66 0B, 5F 8B 54 E9 3C 5B 68 5F
replace_bytes = 02B0, E3 DF 5F 2D 07 77 6B 5A, 7F A5 1C EC AD 69 48 C1
replace_bytes = 02B8, 52 70 F5 C4 1B A6 E0 68, D6 13 6F 98 82 A5 21 DE
replace_bytes = 02C0, 88 B7 CC C0 D5 0D 4E 39, 32 03 5B 37 58 E5 F0 0F
replace_bytes = 02C8, FC 03 F7 FE 5D 41 00 00, 7F 0D 5C D9 00 00 00 00
</Patch>
patch_name = `Custom Header menubar - reduce height by 50%`
Spoiler:
Code:
<Patch>
patch_name = `Custom Header menubar - reduce height by 50%`
patch_enable = `no`
# Multi-version patch: 4.06.9960+
#
# patch_group = `Custom header alternatives`
#
find_base_address = `\xFC\x0A\x4D\x72\xC8\xA5\xCC\x80\xC1\x10\xD3\xC9`
replace_bytes = 0000, FC 0A 4D 72 C8 A5 CC 80, FC 0A 4F 38 E4 52 66 F8
replace_bytes = 0008, C1 10 D3 C9 21 4D 2F 74, 32 5F 1D 0E 34 BD D0 69
replace_bytes = 0010, DA 4E 66 D2 C9 A5 D3 C9, 3B 99 49 27 97 4E 27 23
replace_bytes = 0018, 28 46 B1 D5 1A C9 91 44, 6C 61 AB 35 92 23 89 00
replace_bytes = 0020, 80 36 FD EF 95 8D 89 3F, 6D FA DF 2B 1B 13 7F 48
replace_bytes = 0028, 24 AF 15 68 6E 46 F6 3E, 5E 2B D0 DC 40 F2 3E EF
replace_bytes = 0030, EF 7A F7 F5 4A 9C DE 28, 7A F7 F5 5A 6E DF 49 24
replace_bytes = 0038, AC 56 F2 03 16 B7 94 AC, B7 E2 03 E2 F7 04 EF BE
replace_bytes = 0040, BF 3F 5E A6 E9 DD 82 3C, 3F 2E E2 F8 C1 C7 4F C4
replace_bytes = 0048, D1 90 CC E5 37 41 13 1E, C3 4B F1 8D 93 88 05 87
replace_bytes = 0050, 6D 2F 94 58 91 1F E8 4F, B9 E4 5B FC C3 F9 D3 72
replace_bytes = 0058, 0F A1 25 DE F4 63 42 A3, 9C 0D DA 77 42 4C 82 50
replace_bytes = 0060, 58 CD D0 74 98 6E DE 67, CE 9C 81 1B EF DF 27 6B
replace_bytes = 0068, 6B 94 35 D6 FE F6 4E 01, 84 56 D6 FE B6 DA 00 F5
replace_bytes = 0070, EA 75 CC 09 A3 9B 16 6A, 36 64 98 92 7D 0D 75 68
replace_bytes = 0078, 60 A1 06 0E D4 8F 02 47, A0 0E 2D A8 1F 39 0A 18
replace_bytes = 0080, 9C B5 40 87 9E 85 5A 2C, AD 81 8E BA 3A F4 B8 D6
replace_bytes = 0088, 76 60 F1 36 C9 1E 6F 03, 00 45 87 28 B9 BA 06 3B
replace_bytes = 0090, FB 53 0B 78 B7 68 80 65, 31 60 27 66 AC 08 D9 6E
replace_bytes = 0098, CC D7 73 B6 A0 21 56 5C, 49 7D E2 21 C9 B8 98 AF
replace_bytes = 00A0, C8 8B 07 9C C8 02 79 8F, 51 24 32 E0 0A 79 BF 02
replace_bytes = 00A8, C3 5F 91 E0 2B B6 E8 87, CE B6 D4 EF 78 2C 62 7C
replace_bytes = 00B0, 3C E1 62 86 94 C0 4C A6, E6 48 8E A8 88 11 C7 54
replace_bytes = 00B8, 58 10 A6 BA 49 65 6E 26, 36 93 F2 CC 74 D0 2E 24
replace_bytes = 00C0, 68 1D 53 45 72 C4 92 48, 12 A7 88 0D 16 02 05 D8
replace_bytes = 00C8, 89 23 E2 22 88 50 8A 17, 46 D0 71 62 E4 FB 84 06
replace_bytes = 00D0, 0B CA A2 19 1A EC DE EF, 33 27 BB BD C7 98 B3 18
replace_bytes = 00D8, 31 15 3C 25 42 6D FB 58, 73 79 E8 20 55 0D BA 51
replace_bytes = 00E0, D7 83 2D F5 63 33 74 76, 97 CD 9C EB 45 F2 FB 33
replace_bytes = 00E8, 99 5D 7F 26 0F 0A 3D A3, 5E 4B E7 D9 49 7F DF DF
replace_bytes = 00F0, FC FA F6 4A DF 20 E2 2C, A8 0D CC AF 93 90 35 A3
replace_bytes = 00F8, 0B 79 E0 4C F5 A5 DA 26, B2 23 E4 21 C2 33 87 48
replace_bytes = 0100, 64 86 A8 D2 61 61 35 8D, 15 E6 15 D3 68 72 D9 31
replace_bytes = 0108, 2E A7 ED A2 E9 6F 1D 3C, 9A FC 56 C1 BD 69 56 4E
replace_bytes = 0110, 0C 8A 72 5A 43 4D 3B 55, 63 A8 6E A5 42 68 7F 00
replace_bytes = 0118, 42 BD 11 14 6A 78 A6 12, 85 6A 7E 29 44 0E FA 60
replace_bytes = 0120, 39 F2 C0 48 D3 16 95 D8, A4 6E 8A 42 EC D0 18 1B
replace_bytes = 0128, B1 35 36 E1 21 4E C8 57, 31 0F 45 F8 2B DA E0 F9
replace_bytes = 0130, BC 24 17 27 3F F1 DD A7, D5 4F F4 F0 E9 F6 AA 18
replace_bytes = 0138, EB 93 6A E0 AE 4E 8C 8B, 78 AC 13 65 7C 83 A2 52
replace_bytes = 0140, 25 4E 6A B1 ED AE 01 7A, 6C BD 6B 80 9E D4 B4 C1
replace_bytes = 0148, D2 D2 06 57 FC 31 CD 71, 16 7F 49 73 2C 80 AF 6B
replace_bytes = 0150, 00 BE AE 65 0E 40 A8 91, 99 05 10 6A 64 FF 8C 04
replace_bytes = 0158, DE 01 09 5E 26 5B 29 57, 17 D1 41 88 ED C6 D2 19
replace_bytes = 0160, 4B 47 67 B8 24 08 FA 65, 36 09 82 7E 19 8C CB C4
replace_bytes = 0168, 34 AD 13 6F 52 1C 12 D1, BB 18 79 98 37 CE 61 35
replace_bytes = 0170, 39 8B F5 C8 59 D3 85 8A, 71 76 C4 97 A1 32 DC 28
replace_bytes = 0178, B5 E1 26 C5 14 D2 A3 A9, 1B 42 6A 30 95 96 60 A6
replace_bytes = 0180, B6 04 33 2D 93 B8 64 FA, 61 0A E7 4C 57 67 BA 16
replace_bytes = 0188, 26 D3 77 60 9A 73 B8 44, 4C 7D 06 E7 C8 71 57 43
replace_bytes = 0190, 4E 07 06 72 B7 D4 81 B4, 8E BB 16 48 C3 04 CE A1
replace_bytes = 0198, CC E0 12 1A 98 D0 C0 0E, 53 1D 3A 35 43 6B A7 66
replace_bytes = 01A0, 6D 9D 9A E5 87 F4 44 25, FE 20 3D 11 41 56 C9 93
replace_bytes = 01A8, BD CF BE 94 EC 66 37 C2, 92 6C 36 23 8C 0F E3 0B
replace_bytes = 01B0, FA 31 BE 30 F2 BB 05 84, 23 DD CD 20 74 0B B4 F3
replace_bytes = 01B8, AD 80 76 BE EB 9D 4A 82, 5D AB 2D 30 E2 5E B8 F4
replace_bytes = 01C0, 45 18 CF 43 CE FE 5B DB, 18 FD 6F 6D AF 4A 96 BA
replace_bytes = 01C8, 9B 92 B5 6E 03 92 47 B8, 0D 48 5E E0 8A AA 64 D1
replace_bytes = 01D0, A2 29 59 35 03 A0 78 B8, 0C 80 E2 F9 9E D1 04 4B
replace_bytes = 01D8, 67 0C C1 9A 55 20 C9 23, 56 81 24 2F F0 14 D8 CB
replace_bytes = 01E0, 3C 05 F6 32 47 15 BB 67, 14 95 BD 3D 3B 91 7A 35
replace_bytes = 01E8, 3F D1 5B A3 9E 40 05 6D, AA 09 94 D1 4E AB 3C 3B
replace_bytes = 01F0, BF 2A 76 C7 84 B1 5B A7, D1 D8 75 CA 00 1C 98 81
replace_bytes = 01F8, 2C C0 91 1D E8 3B F5 C1, AE 55 1F 0C BC E1 AB 79
replace_bytes = 0200, C2 1B BF 9A 67 56 AF 4E, 7A F5 CA 44 B7 0F 12 ED
replace_bytes = 0208, F4 3D 90 E8 EE F6 06 C0, DD 5E 01 F4 BB 0D 84 FA
replace_bytes = 0210, 1B 74 10 DA 4B 57 10 46, D2 65 84 41 13 A1 B6 56
replace_bytes = 0218, 5D 84 D6 5A ED DB D6 09, A7 B6 35 02 EA 8B 73 2A
replace_bytes = 0220, 68 2F CE BE 0C FB 1D 44, C3 E9 0D 22 D2 53 DD 0A
replace_bytes = 0228, E6 A7 BA 7B 2C AE F4 66, F1 1B F5 32 40 84 62 AE
replace_bytes = 0230, 80 29 23 42 5B 96 6A E2, 2C 4B 14 F1 E5 BF E5 F1
replace_bytes = 0238, CB 6F C7 E3 A1 09 82 C7, 50 07 C1 E3 A6 A4 D1 D4
replace_bytes = 0240, 4D 4D A3 AB 07 E5 68 D3, 83 7C B4 29 49 2F 3D 15
replace_bytes = 0248, 92 61 7E 2A 3C 6F 7D 01, 4E 6A 6F 00 9E 39 80 AE
replace_bytes = 0250, 78 E6 00 BA 66 E7 2C BA, DE 39 83 6E AF 6B 29 5C
replace_bytes = 0258, C3 81 A3 70 63 F2 00 BA, 99 3C 80 AE D6 6F 93 AC
replace_bytes = 0260, 46 BF 6D B2 BE AB 6C 73, 6B 2B 5B 9D 3F 90 B0 EE
replace_bytes = 0268, FE 40 C2 A6 4F 2C D2 1E, 13 83 74 1F B8 E3 B3 CE
replace_bytes = 0270, F0 C6 07 9D DD 4A 8D EC, 6E B9 46 F2 A8 7E 41 3C
replace_bytes = 0278, 53 FD 82 45 44 D9 0C 4D, 20 54 7D 09 B9 D5 73 7E
replace_bytes = 0280, FC E6 39 3F F7 6A FD F6, EA D5 F2 F6 D9 59 40 BD
replace_bytes = 0288, C1 59 40 BD AD 66 71 3E, 2D 66 31 E9 81 59 1C B7
replace_bytes = 0290, 04 B3 38 1F 1E 95 05 D0, CF CE 02 E8 74 29 89 11
replace_bytes = 0298, E9 5A 12 13 38 89 C9 71, 9C C4 E8 B2 24 A0 AE 17
replace_bytes = 02A0, 49 40 5D AF A6 11 C0 B5, D3 98 C2 B5 98 DA D7 22
replace_bytes = 02A8, 08 DC 6B 91 2B 1D 66 0B, 55 3A CF 16 DA D7 5F 29
replace_bytes = 02B0, E3 DF 5F 2D 07 77 6B 5A, 07 7B 6B 1A 52 B0 F5 C4
replace_bytes = 02B8, 52 70 F5 C4 1B A6 E0 68, 1B A6 60 69 88 B7 CC C0
replace_bytes = 02C0, 88 B7 CC C0 D5 0D 4E 39, D6 0D 56 39 FC 03 69 4F
replace_bytes = 02C8, FC 03 F7 FE 5D 41 00 00, 5C 79 00 00 00 00 00 00
</Patch>
patch_name = `Dictionary pop-up frame size increase`
a.k.a. `Dictionary frame size - beta8`. I've removed the 'beta8' from the name as it's been in use for a while now with no obvious problems.
Spoiler:
Code:
<Patch>
patch_name = `Dictionary pop-up frame size increase`
patch_enable = `no`
# Multi-version patch: 4.06.9960+
#
find_base_address = `\x7A\x58\xB2\xE5\x20\x8B\x00\x99\x19\xA4\x68\x8B`
replace_bytes = 0000, 7A 58 B2 E5 20 8B 00 99, 7A 98 F2 23 C8 22 40 A6
replace_bytes = 0008, 19 A4 68 8B 60 62 CC 66, 45 8A B6 08 26 C6 6C 06
replace_bytes = 0010, 50 04 B4 45 CB 9C 4A A2, 45 40 5B B4 CC 29 25 BA
replace_bytes = 0018, 4B D1 4D 3C 83 FE FB 48, 14 DD D8 53 F4 DF 2B 59
replace_bytes = 0020, D6 93 E2 15 49 25 6D BB, 6F F1 4A A4 92 B6 5D E9
replace_bytes = 0028, D2 15 79 CE E1 BD BC 0F, 9A 3C E7 F0 3E 78 AF 94
replace_bytes = 0030, 2B 1B 7A DA 1D 3E E1 EC, 35 3F 6E F7 9F 48 7C B4
replace_bytes = 0038, 64 FD 77 65 59 5B CA 22, 7E 5C 59 D6 86 8B 80 88
replace_bytes = 0040, CC D6 56 46 33 7C 7D F5, 95 15 F3 98 5C 5F FD BC
replace_bytes = 0048, E3 EA 33 D9 7D C5 C9 46, FA 4C B7 5F 09 5B B7 D7
replace_bytes = 0050, 5C 83 76 5F 63 46 4F 59, E0 ED D7 50 F0 63 1C 4C
replace_bytes = 0058, 34 DF D1 84 16 AB 39 43, B7 9C F1 74 B5 14 38 4E
replace_bytes = 0060, 59 7E 44 0C 67 FC BA 58, 0E 58 90 58 5E A7 0B 22
replace_bytes = 0068, 90 22 16 93 6C 6D 39 8B, 2C 42 1A AF 2C 67 76 38
replace_bytes = 0070, E3 4B 09 52 EE DC E0 17, 65 20 D9 CE 35 39 C9 7B
replace_bytes = 0078, 7E CF 71 FA FE F2 74 9F, 49 A2 B7 97 A7 FB 08 87
replace_bytes = 0080, A2 18 97 8F 23 80 CF 07, 24 7B EC 01 7C DE 53 49
replace_bytes = 0088, C2 F1 70 EB DF DF 6E 8F, BA 5B FF FD 76 7B 38 3C
replace_bytes = 0090, C7 A7 08 7F 27 3B 7C 9F, 05 E4 3B DD 92 FB 64 2D
replace_bytes = 0098, 6F 18 49 68 7C BE E1 EC, 28 E3 E1 F9 46 8A 23 F9
replace_bytes = 00A0, 84 BF 0C 50 15 2B 2F 84, D2 41 1D 58 79 21 8C 68
replace_bytes = 00A8, 29 C9 E6 CF 24 E2 87 B5, 3C 7D A6 81 DC AF 2C D7
replace_bytes = 00B0, E5 DA B6 2C 52 DC FF 70, B6 55 91 ED FD 0F 7B 4E
replace_bytes = 00B8, A0 38 23 2F 06 4C C2 4A, 62 7A 32 60 6A AD 54 98
replace_bytes = 00C0, 89 C9 D5 32 DD 31 14 D3, 5C 2D D3 9D C0 21 8F 0D
replace_bytes = 00C8, CC 80 A8 BF 70 C8 E3 E9, 88 9A 0B BB 3C 9E FE 44
replace_bytes = 00D0, 4F 74 87 CE 09 89 0F DC, 77 F8 CC 68 B8 97 26 4C
replace_bytes = 00D8, 84 49 58 2A 71 85 5A 2E, AD A5 0A D7 52 CB 05 7B
replace_bytes = 00E0, D8 FB 07 5C 82 AE AD 45, 7F 4F 32 D0 95 35 F3 B3
replace_bytes = 00E8, 50 EE 2F AF CC CB C0 66, FD 59 CA 9C 3A 36 E3 88
replace_bytes = 00F0, 1C 11 09 D3 07 30 7D 2D, 28 98 08 C0 44 5A 4C D0
replace_bytes = 00F8, 26 E8 D2 66 FB D2 96 21, A5 E5 F6 B9 AD 42 CE 47
replace_bytes = 0100, 97 13 DD 2C 81 86 00 E8, BA 59 01 5D 02 A0 FD FE
replace_bytes = 0108, B8 3F 49 FE 3B CD F8 E3, A4 C9 3B 1E CB C7 2D 66
replace_bytes = 0110, 0E 25 F8 63 91 5F B8 02, E4 63 5A 5F 24 07 1D E3
replace_bytes = 0118, 9D E2 6B 7F 09 F8 65 F9, 6B 34 07 FC 32 7F 0D DF
replace_bytes = 0120, 16 3E 75 1C A6 39 CD 84, 70 1C C6 39 CD 84 6F 30
replace_bytes = 0128, 4F 19 A3 15 70 BC D5 9B, 46 0B E0 78 8B 57 1D 4F
replace_bytes = 0130, 8E A7 89 9F E3 B8 32 63, 13 3F C7 71 55 C6 C2 D8
replace_bytes = 0138, 6D 14 29 AD 59 DA 7B FA, A6 B4 26 51 E3 E9 23 DE
replace_bytes = 0140, 88 B6 38 51 17 3E CB AA, 10 36 7C F1 59 56 F1 BC
replace_bytes = 0148, 9F B7 49 B1 C4 00 AE 12, 61 E9 12 03 B8 5C 38 E3
replace_bytes = 0150, 9E D0 F2 3C 9F 51 8A 6F, D9 79 3E E3 88 DC BC F9
replace_bytes = 0158, DE FD 83 9E 3E 3C BC AB, 0F 3F 7D 78 78 93 AB DE
replace_bytes = 0160, 54 EF 8B A3 CE F7 28 25, A5 47 9D EE 70 44 D9 79
replace_bytes = 0168, C9 79 6D 3D 16 B5 7A FE, 65 3D A6 77 F5 F4 91 08
replace_bytes = 0170, 88 19 D9 7F 78 78 6F E5, BA FB F0 F0 D6 4A B2 A7
replace_bytes = 0178, E5 53 5E 3E 5D 37 0B 73, 24 7B BA 2E 17 26 F2 CC
replace_bytes = 0180, 7E 4E 70 D9 02 58 8A 12, 48 D6 02 44 84 99 31 77
replace_bytes = 0188, 63 EE F1 3B 58 81 92 7F, 7F 0E E6 A0 F4 FF 14 D3
replace_bytes = 0190, 0B 4C 27 34 72 8E EE 96, 59 1A 39 47 97 65 0D 44
replace_bytes = 0198, F5 10 5D EF 15 88 D2 3D, D7 7B 01 A2 92 47 4D C0
replace_bytes = 01A0, EA 03 BE 46 E2 6D 72 CE, 97 48 BC 65 E7 24 39 46
replace_bytes = 01A8, F3 53 0A 23 7A 66 37 42, 30 A2 67 96 11 DA DC 6B
replace_bytes = 01B0, 7B F7 FA 90 C0 BD 7E 45, 42 02 79 FD 82 C8 1C 70
replace_bytes = 01B8, 64 8E 28 8A 48 16 CF 39, 10 D0 38 9C 4A 7E 48 0F
replace_bytes = 01C0, 3D 16 07 AF 2E 73 63 DB, 9E 27 73 69 DB 70 29 79
replace_bytes = 01C8, 52 CE 69 5A 9B DF 1C 31, 54 98 5F 1D B1 16 93 07
replace_bytes = 01D0, 81 C9 83 99 7E 4A 24 05, 33 FD 96 48 B6 88 66 30
replace_bytes = 01D8, A2 05 4C 04 8C 25 AF 89, 11 30 96 BC 24 1E 2D 2A
replace_bytes = 01E0, 87 40 E5 C3 54 3E 50 7F, 04 53 21 E0 FE A1 12 33
replace_bytes = 01E8, 08 47 09 D9 E5 37 7B 94, BA 4D 6E 76 98 25 29 54
replace_bytes = 01F0, E4 05 D4 48 6D 10 72 F6, CF DD D0 AA D9 F7 84 A7
replace_bytes = 01F8, 0F 4C 8B 91 0A 0D 53 B4, 23 15 EE 96 68 8E A4 10
replace_bytes = 0200, 42 92 08 70 86 B6 09 8E, 90 18 6F 18 09 34 04 C5
replace_bytes = 0208, 34 04 75 85 99 85 97 7F, 0D 33 59 5E FE 65 20 F7
replace_bytes = 0210, 25 C8 7D 96 90 0C DF 91, 31 A3 31 B9 A3 5B 49 79
replace_bytes = 0218, 1D 27 34 43 EC FC 17 C1, 8C C5 F9 1F 4A 9E B5 0D
replace_bytes = 0220, CF DA 06 53 D4 BE 7A 18, 26 BD FB 8A 61 00 F9 E5
replace_bytes = 0228, F0 83 A6 E0 77 03 42 67, 85 5F 0F 08 B5 AD 71 47
replace_bytes = 0230, EB D5 48 77 B5 E8 16 0E, 7A 9E 5F 2F EC 18 4D 54
replace_bytes = 0238, 8C 26 2A 80 B6 D3 A9 08, 00 6D A7 56 E1 2F 17 8A
replace_bytes = 0240, C2 95 A4 A2 B3 F5 54 78, 8A DA D6 1C 33 5C 40 45
replace_bytes = 0248, 3E A0 A2 36 9A A8 90 9B, 61 34 51 A1 36 A3 5A 84
replace_bytes = 0250, 51 27 C2 B1 6D D9 17 3D, 63 DB AA 2F 1A C6 86 0C
replace_bytes = 0258, 63 7F DA 09 03 59 46 6D, DF 06 64 14 46 23 19 40
replace_bytes = 0260, 34 92 01 34 A9 9E 10 0F, 93 6A 08 F1 20 21 1E 24
replace_bytes = 0268, 12 E2 41 42 82 C5 4A 16, 64 3E 07 84 14 C6 9F 57
replace_bytes = 0270, 52 1B 7F 5C CD A2 56 43, 93 A0 D2 50 71 54 6A 5D
replace_bytes = 0278, CB D1 3A 6D 09 1C A1 33, 17 38 42 65 BC BC 0D B4
replace_bytes = 0280, 5E 7E 0D D4 35 C6 16 6C, AA A4 30 31 B2 CB 3A A6
replace_bytes = 0288, 09 DE 97 2D D3 96 28 F4, AD 30 E8 C3 FD 4A 48 20
replace_bytes = 0290, F1 D6 60 BA 3A 4C 20 7A, 76 35 A2 63 43 90 48 07
replace_bytes = 0298, 1D A4 07 41 7A 5A 48 28, 09 C5 41 03 5A BE 11 4C
replace_bytes = 02A0, 12 1D E8 C2 05 40 17 75, 64 5A 9D 7F 05 54 9A 54
replace_bytes = 02A8, 79 9D F1 22 3F 7F 8B 08, 5B E9 60 D7 5D A8 5E AF
replace_bytes = 02B0, 37 C9 B7 76 D6 F0 5D D9, 8D 8D BA 74 90 5A 97 D5
replace_bytes = 02B8, EF 9D B1 97 99 8E 2F 67, 79 60 6A B8 C4 AA 5A 6D
replace_bytes = 02C0, A6 E3 2B A9 E1 24 6B 59, 26 95 6A 6C 14 23 02 8A
replace_bytes = 02C8, 42 1B A0 EE 4F B4 4D EA, 31 B7 F5 52 83 75 55 D5
replace_bytes = 02D0, 79 40 3A 7A 2B 25 35 98, 27 02 52 AD 36 D6 CC 4B
replace_bytes = 02D8, 59 6D 9D F0 81 CB E6 F6, E0 32 2A 6C FD CC 70 29
replace_bytes = 02E0, 67 FE 9A 25 F4 E4 9B 1F, 55 B3 F2 02 E0 AE 8D 8D
replace_bytes = 02E8, B6 41 1C 61 86 93 A9 BD, A2 73 91 A7 16 5D 61 4C
replace_bytes = 02F0, D3 1E 74 D1 3D 99 DB 71, D9 13 22 65 DA 24 92 9E
replace_bytes = 02F8, ED 50 4E BB DA 58 B0 E7, 19 70 12 2C B3 FF D5 65
replace_bytes = 0300, 98 F3 A2 4D E4 23 53 E0, 0F 34 81 66 66 55 49 54
replace_bytes = 0308, 2C 0A CB FF 6D B9 07 DA, C2 FE D1 59 B0 C3 32 6A
replace_bytes = 0310, 80 9C 01 3D D8 5F 3A 0D, EA EB D9 6B 34 DF F5 EC
replace_bytes = 0318, 0E 58 26 CD 7D 23 7B 8D, 35 99 E4 7A B6 1A CD 6C
replace_bytes = 0320, 26 BC 91 BD 26 B3 DC C8, 7D B4 46 D3 99 B1 AF CA
replace_bytes = 0328, 56 A3 A9 6D 8C D6 68 3E, A9 A1 B8 6A 3A 93 98 28
replace_bytes = 0330, 33 F6 55 33 37 D4 15 71, DE 2C 86 25 F5 CF 5C 05
replace_bytes = 0338, 30 8B B1 3A BF D4 92 C6, AA 0F A3 FA E3 FC DB 06
replace_bytes = 0340, A7 AE 1A 35 80 51 83 69, 75 61 A9 EE 68 EF 75 60
replace_bytes = 0348, FE 15 41 5D 58 AA 3B D9, 17 30 EC 62 A4 07 0C CA
replace_bytes = 0350, 7B 03 D8 15 0C BB 9A E8, C4 A8 23 78 9A BD C3 57
replace_bytes = 0358, 01 83 34 99 D0 11 A6 9C, BF 57 E6 61 44 92 04 87
replace_bytes = 0360, 47 D8 DD DC C3 14 E7 39, 44 2D C3 DB EF A9 70 D1
replace_bytes = 0368, 8A B1 9C 86 B7 DF 0B E1, 38 F1 CA B2 DB 7B FE 6C
replace_bytes = 0370, AC 77 E2 B5 65 8B 7B 7E, 4D F7 92 48 F1 B4 FE 1B
replace_bytes = 0378, 6D 4E 8F 92 70 F6 B4 F9, 22 A9 EE A2 EE 6E 6D 30
replace_bytes = 0380, 13 22 69 6B D1 70 B7 36, F2 08 7B ED B6 5D 04 D8
replace_bytes = 0388, 18 75 3B 6D 5A 52 65 64, 43 D0 A9 75 21 CA 11 91
replace_bytes = 0390, CD FC 05 9D 5A 17 A2 0A, 0D 21 22 D0 8F FA C0 E5
replace_bytes = 0398, D1 B7 21 44 1F F4 A3 3E, 98 3E A8 D2 2F 55 EE 38
replace_bytes = 03A0, 70 15 66 00 AA 0C 1A 95, 97 44 A8 DD 11 A9 6D C2
replace_bytes = 03A8, 7B 4A 39 66 52 9F 58 40, 6B EF D1 F9 EA DB 41 F0
replace_bytes = 03B0, 23 5D 20 EC D1 F9 EA DB, 03 11 F2 7C 11 F2 A9 F8
replace_bytes = 03B8, 91 D1 23 66 FC 7C 11 F2, 9E EA DA D7 AD DF 2E 7A
replace_bytes = 03C0, A9 FE A2 EA DA D7 C2 BB, FA 7E CC DF 40 CA 5F 6D
replace_bytes = 03C8, 8B 9E B1 97 D5 6F 10 F1, 65 FA 05 3A F8 CC 1E 10
replace_bytes = 03D0, AD 30 F0 01 2D 3C B0 15, A9 78 BF 47 23 1A D2 88
replace_bytes = 03D8, 2A 25 F7 8F 88 F4 55 22, 46 69 44 80 46 34 A8 51
replace_bytes = 03E0, 7D A5 48 1F FE 20 06 7D, 8D 27 AC D2 73 07 54 76
replace_bytes = 03E8, 38 1B 13 29 47 14 96 E9, 7F D4 A8 F4 01 95 D5 A0
replace_bytes = 03F0, B9 0A 99 C3 97 A2 CC EA, C1 70 1C 1E 95 BC 33 EB
replace_bytes = 03F8, AD 30 0F B9 D0 3C D4 56, 96 F0 5E B3 6E 09 EF 35
replace_bytes = 0400, 9C 04 65 F1 49 BA 7C 66, EA 96 F0 56 B3 6E D9 43
replace_bytes = 0408, 2D 13 DE 6B D6 32 E1 BD, 6B D6 2D 4D 7D A5 A6 C8
replace_bytes = 0410, 46 2D 13 DE 6A D6 32 47, 08 67 B5 DF 5B C6 79 AB
replace_bytes = 0418, 68 CD 5A A6 A9 AF 84 CF, F5 65 71 98 58 33 4A 3A
replace_bytes = 0420, 98 6A 47 AB 67 D9 40 23, 76 F1 0D 62 B2 27 38 28
replace_bytes = 0428, 5B 35 8D AE D4 C4 9A 79, EE 90 FC 6F 2F D5 A7 03
replace_bytes = 0430, D2 B1 EB 5F 9B B3 03 46, E7 70 B2 12 CE 68 60 85
replace_bytes = 0438, 51 5D 48 AA 3F C1 B4 5F, 02 9F 87 52 D2 69 61 8D
replace_bytes = 0440, 10 9C E3 8B 95 D3 84 44, 71 DF 0C 7A 05 F6 07 E0
replace_bytes = 0448, 56 CC D0 59 75 2B 1D 01, 34 0E 1D 2A 05 08 6E D0
replace_bytes = 0450, 6B 8A FB 94 F5 0A 82 D3, C5 73 00 6D 3E 88 36 EC
replace_bytes = 0458, 38 54 55 58 20 38 A5 8B, F4 25 80 57 7E 6F FF 05
replace_bytes = 0460, 95 15 00 44 D3 38 5D 99, FC 19 4C D3 00 00 00 00
replace_bytes = 0468, AA FF 03 06 95 4E AC 00, 00 00 00 00 00 00 00 00
</Patch>