Merge pull request #158 from Lorenzooone/update-enemy-text

Update enemy text to match EB's and fix window overflow for encounter text
This commit is contained in:
jeffman 2022-01-24 09:21:27 -05:00 committed by GitHub
commit b75fb2b9da
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 201 additions and 117 deletions

View File

@ -33,7 +33,8 @@ $input_c_files =
"src/c/title.c",
"src/c/luminehall.c",
"src/c/custom_codes.c",
"src/c/first_func.c"
"src/c/first_func.c",
"src/c/window.c"
$input_c_test_files =
"src/c/tests/main_test.c",

View File

@ -130,7 +130,13 @@ int custom_codes_parse_generic(int code, char* parserAddress, WINDOW* window, by
val_to_store = load_gender_user_target(m2_btl_target_ptr);
store = true;
break;
case IS_NEWLINE:
// 5E FF 06 : Load whether it's a newline or not
val_to_store = (window->text_y != 0) && (window->pixel_x == 0) && (window->text_x == 0) ? 1 : 2;
store = true;
break;
default:
break;
}
@ -191,6 +197,35 @@ int custom_codes_parse_generic(int code, char* parserAddress, WINDOW* window, by
free_overworld_buffer();
break;
case CHECK_WIDTH_OVERFLOW:
// 57 FF: Start/End width calculation.
// Jump to newline if it would go over the window's boundaries
if((byte)parserAddress[2] == CALC_WIDTH_END)
window->inside_width_calc = false;
else
if(!window->inside_width_calc) {
WINDOW w;
int possible_return_addresses = 10;
int return_addresses[possible_return_addresses];
int nreturns = *((int*)(0x3005078));
cpuset((int*)(0x3005080), return_addresses, possible_return_addresses * 2);
copy_window(window, &w);
window->text_offset += 3;
window->inside_width_calc = true;
while(window->inside_width_calc)
m2_printnextch(window);
if(text_overflows_window(window)) {
w.text_x = 0;
w.pixel_x = 0;
w.text_y += 2;
}
copy_window(&w, window);
(*((int*)(0x3005078))) = nreturns;
cpuset(return_addresses, (int*)(0x3005080), possible_return_addresses * 2);
}
addedSize = 3;
break;
default:
break;
}

View File

@ -24,7 +24,12 @@
#define BATTLE_TARGET_THE 3
#define BATTLE_USER_GENDER 4
#define BATTLE_TARGET_GENDER 5
#define IS_NEWLINE 6
#define CALC_WIDTH_START 0
#define CALC_WIDTH_END 1
#define CHECK_WIDTH_OVERFLOW 0x57
#define RESET_WRITE_BUFFER 0x58
#define RESET_STORED_GOODS 0x59
#define RESTORE_DIALOGUE 0x5A
@ -43,6 +48,7 @@ int custom_codes_parse_generic(int code, char* parserAddress, WINDOW* window, by
extern void load_pixels_overworld();
extern void generic_reprinting_first_menu_talk_to_highlight();
extern byte m2_sub_daf84(short value);
extern void m2_printnextch(WINDOW* window);
extern unsigned short m2_enemy_attributes[];
extern short m2_is_battle;

View File

@ -38,4 +38,5 @@ void __attribute__((naked)) m2_free(int* address) {}
void __attribute__((naked)) m2_title_teardown() {}
void __attribute__((naked)) vblank() {}
int __attribute__((naked)) m2_set_equippables(WINDOW* window, unsigned short choice, byte* index_list) {}
void __attribute__((naked)) reg_ram_reset(int flag) {}
void __attribute__((naked)) reg_ram_reset(int flag) {}
void __attribute__((naked)) m2_printnextch(WINDOW* window) {}

View File

@ -803,6 +803,12 @@ void clear_window_arrows(WINDOW *window)
(*tilemap_pointer)[x + 1 + (y * 32)] = tile;
}
// Confirms the text breaks the boundaries
bool text_overflows_window(WINDOW* window)
{
return (window->text_x > window->window_width) || ((window->text_x == window->window_width) && (window->pixel_x > 0));
}
void weld_entry(WINDOW *window, byte *str)
{
weld_entry_custom(window, str, 0, 0xF);
@ -825,10 +831,15 @@ void weld_entry_custom(WINDOW *window, byte *str, int font, int foreground)
int x = window->pixel_x + (window->window_x + window->text_x) * 8;
int y = (window->window_y + window->text_y) * 8;
x += print_character_formatted(chr, x, y, font, foreground);
if(!window->inside_width_calc)
x += print_character_formatted(chr, x, y, font, foreground);
else
x += (m2_widths_table[font][chr] & 0xFF);
window->pixel_x = x & 7;
window->text_x = (x >> 3) - window->window_x;
if(window->inside_width_calc && text_overflows_window(window))
window->text_x = window->window_width + 1;
}
// Returns: ____XXXX = number of characters printed
@ -1520,10 +1531,16 @@ void weld_entry_custom_buffer(WINDOW *window, byte *str, int font, int foregroun
int x = window->pixel_x + (window->window_x + window->text_x) * 8;
int y = (window->window_y + window->text_y) * 8;
x += print_character_formatted_buffer(chr, x, y, font, foreground, dest);
if(!window->inside_width_calc)
x += print_character_formatted_buffer(chr, x, y, font, foreground, dest);
else
x += (m2_widths_table[font][chr] & 0xFF);
window->pixel_x = x & 7;
window->text_x = (x >> 3) - window->window_x;
if(window->inside_width_calc && text_overflows_window(window))
window->text_x = window->window_width + 1;
}
void handle_first_window_buffer(WINDOW* window, byte* dest)

View File

@ -66,6 +66,7 @@ void copy_name_header(WINDOW *window, int character_index);
void clear_name_header(WINDOW* window);
void draw_window_arrows(WINDOW *window, bool big);
void clear_window_arrows(WINDOW *window);
bool text_overflows_window(WINDOW* window);
void weld_entry(WINDOW *window, byte *str);
int weld_entry_saturn(WINDOW *window, byte *str);
void weld_entry_custom(WINDOW *window, byte *str, int font, int foreground);

7
src/c/window.c Normal file
View File

@ -0,0 +1,7 @@
#include "window.h"
extern void cpuset(void *source, void *dest, int mode);
void copy_window(WINDOW* source, WINDOW* destination) {
cpuset(source, destination, sizeof(WINDOW) >> 1);
}

View File

@ -25,7 +25,8 @@ typedef struct WINDOW {
unsigned int flags_unknown3b : 4; // 0xF000
byte pixel_x;
bool vwf_skip : 1;
unsigned int vwf_unused : 7;
bool inside_width_calc : 1;
unsigned int vwf_unused : 6;
byte* text_start;
byte* text_start2;
byte* menu_text;
@ -66,4 +67,6 @@ typedef struct WINDOW {
int unknown11;
} WINDOW;
void copy_window(WINDOW* source, WINDOW* destination);
#endif

View File

@ -387,7 +387,7 @@
"Index": 64,
"PointerLocation": 7580980,
"OldPointer": 395140,
"Label": "L1955"
"Label": "L1957"
},
{
"Index": 65,

View File

@ -21,25 +21,25 @@
"Index": 3,
"PointerLocation": 7577072,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 4,
"PointerLocation": 7577136,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 5,
"PointerLocation": 7577200,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 6,
"PointerLocation": 7577264,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 7,
@ -75,7 +75,7 @@
"Index": 12,
"PointerLocation": 7577648,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 13,
@ -93,13 +93,13 @@
"Index": 15,
"PointerLocation": 7577840,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1954-1"
},
{
"Index": 16,
"PointerLocation": 7577904,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1954-1"
},
{
"Index": 17,
@ -135,25 +135,25 @@
"Index": 22,
"PointerLocation": 7578288,
"OldPointer": 400781,
"Label": "L1954"
"Label": "L1958-1"
},
{
"Index": 23,
"PointerLocation": 7578352,
"OldPointer": 400781,
"Label": "L1954"
"Label": "L1958-1"
},
{
"Index": 24,
"PointerLocation": 7578416,
"OldPointer": 400781,
"Label": "L1954"
"Label": "L1958-1"
},
{
"Index": 25,
"PointerLocation": 7578480,
"OldPointer": 400781,
"Label": "L1954"
"Label": "L1958-1"
},
{
"Index": 26,
@ -171,19 +171,19 @@
"Index": 28,
"PointerLocation": 7578672,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 29,
"PointerLocation": 7578736,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 30,
"PointerLocation": 7578800,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 31,
@ -195,13 +195,13 @@
"Index": 32,
"PointerLocation": 7578928,
"OldPointer": 400781,
"Label": "L1954"
"Label": "L1958-1"
},
{
"Index": 33,
"PointerLocation": 7578992,
"OldPointer": 400781,
"Label": "L1954"
"Label": "L1958-1"
},
{
"Index": 34,
@ -213,13 +213,13 @@
"Index": 35,
"PointerLocation": 7579120,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 36,
"PointerLocation": 7579184,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 37,
@ -231,7 +231,7 @@
"Index": 38,
"PointerLocation": 7579312,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 39,
@ -261,13 +261,13 @@
"Index": 43,
"PointerLocation": 7579632,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 44,
"PointerLocation": 7579696,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 45,
@ -285,19 +285,19 @@
"Index": 47,
"PointerLocation": 7579888,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 48,
"PointerLocation": 7579952,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 49,
"PointerLocation": 7580016,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1954-2"
},
{
"Index": 50,
@ -333,37 +333,37 @@
"Index": 55,
"PointerLocation": 7580400,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 56,
"PointerLocation": 7580464,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 57,
"PointerLocation": 7580528,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 58,
"PointerLocation": 7580592,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 59,
"PointerLocation": 7580656,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 60,
"PointerLocation": 7580720,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 61,
@ -387,19 +387,19 @@
"Index": 64,
"PointerLocation": 7580976,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 65,
"PointerLocation": 7581040,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 66,
"PointerLocation": 7581104,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 67,
@ -435,7 +435,7 @@
"Index": 72,
"PointerLocation": 7581488,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 73,
@ -447,7 +447,7 @@
"Index": 74,
"PointerLocation": 7581616,
"OldPointer": 400740,
"Label": "L1960"
"Label": "L1953"
},
{
"Index": 75,
@ -459,43 +459,43 @@
"Index": 76,
"PointerLocation": 7581744,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 77,
"PointerLocation": 7581808,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 78,
"PointerLocation": 7581872,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 79,
"PointerLocation": 7581936,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 80,
"PointerLocation": 7582000,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 81,
"PointerLocation": 7582064,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 82,
"PointerLocation": 7582128,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 83,
@ -531,13 +531,13 @@
"Index": 88,
"PointerLocation": 7582512,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 89,
"PointerLocation": 7582576,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 90,
@ -549,13 +549,13 @@
"Index": 91,
"PointerLocation": 7582704,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 92,
"PointerLocation": 7582768,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 93,
@ -603,7 +603,7 @@
"Index": 100,
"PointerLocation": 7583280,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 101,
@ -615,7 +615,7 @@
"Index": 102,
"PointerLocation": 7583408,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1954"
},
{
"Index": 103,
@ -627,13 +627,13 @@
"Index": 104,
"PointerLocation": 7583536,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 105,
"PointerLocation": 7583600,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 106,
@ -651,13 +651,13 @@
"Index": 108,
"PointerLocation": 7583792,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 109,
"PointerLocation": 7583856,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 110,
@ -669,25 +669,25 @@
"Index": 111,
"PointerLocation": 7583984,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 112,
"PointerLocation": 7584048,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 113,
"PointerLocation": 7584112,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 114,
"PointerLocation": 7584176,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 115,
@ -717,19 +717,19 @@
"Index": 119,
"PointerLocation": 7584496,
"OldPointer": 400781,
"Label": "L1954"
"Label": "L1958-1"
},
{
"Index": 120,
"PointerLocation": 7584560,
"OldPointer": 400781,
"Label": "L1954"
"Label": "L1958-1"
},
{
"Index": 121,
"PointerLocation": 7584624,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 122,
@ -741,7 +741,7 @@
"Index": 123,
"PointerLocation": 7584752,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 124,
@ -759,7 +759,7 @@
"Index": 126,
"PointerLocation": 7584944,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 127,
@ -777,7 +777,7 @@
"Index": 129,
"PointerLocation": 7585136,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 130,
@ -807,19 +807,19 @@
"Index": 134,
"PointerLocation": 7585456,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 135,
"PointerLocation": 7585520,
"OldPointer": 400781,
"Label": "L1954"
"Label": "L1958-1"
},
{
"Index": 136,
"PointerLocation": 7585584,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 137,
@ -837,13 +837,13 @@
"Index": 139,
"PointerLocation": 7585776,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 140,
"PointerLocation": 7585840,
"OldPointer": 400740,
"Label": "L1960"
"Label": "L1954-2"
},
{
"Index": 141,
@ -867,19 +867,19 @@
"Index": 144,
"PointerLocation": 7586096,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 145,
"PointerLocation": 7586160,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 146,
"PointerLocation": 7586224,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1954-2"
},
{
"Index": 147,
@ -891,7 +891,7 @@
"Index": 148,
"PointerLocation": 7586352,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 149,
@ -927,37 +927,37 @@
"Index": 154,
"PointerLocation": 7586736,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 155,
"PointerLocation": 7586800,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 156,
"PointerLocation": 7586864,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 157,
"PointerLocation": 7586928,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 158,
"PointerLocation": 7586992,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 159,
"PointerLocation": 7587056,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 160,
@ -1053,7 +1053,7 @@
"Index": 175,
"PointerLocation": 7588080,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 176,
@ -1065,7 +1065,7 @@
"Index": 177,
"PointerLocation": 7588208,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 178,
@ -1095,7 +1095,7 @@
"Index": 182,
"PointerLocation": 7588528,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1954-2"
},
{
"Index": 183,
@ -1125,7 +1125,7 @@
"Index": 187,
"PointerLocation": 7588848,
"OldPointer": 400740,
"Label": "L1960"
"Label": "L1953"
},
{
"Index": 188,
@ -1137,7 +1137,7 @@
"Index": 189,
"PointerLocation": 7588976,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 190,
@ -1173,7 +1173,7 @@
"Index": 195,
"PointerLocation": 7589360,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 196,
@ -1185,7 +1185,7 @@
"Index": 197,
"PointerLocation": 7589488,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1954"
},
{
"Index": 198,
@ -1233,7 +1233,7 @@
"Index": 205,
"PointerLocation": 7590000,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1954-2"
},
{
"Index": 206,
@ -1257,7 +1257,7 @@
"Index": 209,
"PointerLocation": 7590256,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 210,
@ -1269,13 +1269,13 @@
"Index": 211,
"PointerLocation": 7590384,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 212,
"PointerLocation": 7590448,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 213,
@ -1287,7 +1287,7 @@
"Index": 214,
"PointerLocation": 7590576,
"OldPointer": 400740,
"Label": "L1960"
"Label": "L1954-2"
},
{
"Index": 215,
@ -1335,19 +1335,19 @@
"Index": 222,
"PointerLocation": 7591088,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 223,
"PointerLocation": 7591152,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 224,
"PointerLocation": 7591216,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 225,
@ -1359,13 +1359,13 @@
"Index": 226,
"PointerLocation": 7591344,
"OldPointer": 400762,
"Label": "L1958"
"Label": "L1953"
},
{
"Index": 227,
"PointerLocation": 7591408,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1960-1"
},
{
"Index": 228,
@ -1383,6 +1383,6 @@
"Index": 230,
"PointerLocation": 7591600,
"OldPointer": 400723,
"Label": "L1953"
"Label": "L1954-2"
}
]

View File

@ -1946,24 +1946,33 @@
^L1951^[83 FF C5 00][82 FF _L2197_][08 FF 0C 02][A2 FF _L5617_][FC FF 05 00][1C FF 80 01 _L2197_][9D FF 01 1F _L5625_][00 FF]
^L1952^[1C FF 49 00 _L2197_][9D FF 01 0E _L5614_][00 FF]
^L10000^[5E FF 01][95 FF 03 _L10001_ _L10002_ _L10003_][00 FF]
^L10001^[86 FF _useruppertheignore_][9F FF][00 FF]
^L10002^[86 FF _useruppertheignore_][9F FF] and its cohort[00 FF]
^L10003^[86 FF _useruppertheignore_][9F FF] and its cohorts[00 FF]
^L10000SP^[5E FF 01][95 FF 03 _L10001SP_ _L10002SP_ _L10003SP_][00 FF]
^L10001^[86 FF _useruppertheignore_][57 FF 00][86 FF _twospacesifnewline_][9F FF][00 FF]
^L10001SP^[86 FF _useruppertheignore_][57 FF 00][86 FF _twospacesifnewline_][9F FF][57 FF 01][57 FF 00][86 FF _onespaceifnewline_][00 FF]
^L10002^[86 FF _useruppertheignore_][57 FF 00][86 FF _twospacesifnewline_][9F FF][57 FF 01][57 FF 00][86 FF _onespaceifnewline_] and its cohort[00 FF]
^L10002SP^[86 FF _useruppertheignore_][57 FF 00][86 FF _twospacesifnewline_][9F FF][57 FF 01][57 FF 00][86 FF _onespaceifnewline_] and[57 FF 01][57 FF 00][86 FF _onespaceifnewline_] its cohort[00 FF]
^L10003^[86 FF _useruppertheignore_][57 FF 00][86 FF _twospacesifnewline_][9F FF][57 FF 01][57 FF 00][86 FF _onespaceifnewline_] and its cohorts[00 FF]
^L10003SP^[86 FF _useruppertheignore_][57 FF 00][86 FF _twospacesifnewline_][9F FF][57 FF 01][57 FF 00][86 FF _onespaceifnewline_] and[57 FF 01][57 FF 00][86 FF _onespaceifnewline_] its cohorts[00 FF]
^L10004^[5E FF 01][95 FF 03 _L10005_ _L10006_ _L10007_][00 FF]
^L10005^[86 FF _userlowertheignore_][9F FF][00 FF]
^L10006^[86 FF _userlowertheignore_][9F FF][01 FF] and its cohort[00 FF]
^L10007^[86 FF _userlowertheignore_][9F FF][01 FF] and its cohorts[00 FF]
^L10008^[5E FF 01][95 FF 03 _L10009_ _L10010_ _L10011_]^L10011^[86 FF _userlowertheignore_][9F FF][01 FF] and its cohorts's[00 FF]
^L10009^[86 FF _userlowertheignore_][9F FF]'s[01 FF] [00 FF]
^L10010^[86 FF _userlowertheignore_][9F FF][01 FF] and its cohort's[00 FF]
^L1953^@[86 FF _L10000_][01 FF] attacked![02 FF][00 FF]
^L1954^@[86 FF _L10000_] trapped you![02 FF][00 FF]
^L10005^[86 FF _userlowertheignore_][57 FF 00][86 FF _twospacesifnewline_][9F FF][00 FF]
^L10006^[86 FF _userlowertheignore_][57 FF 00][86 FF _twospacesifnewline_][9F FF][57 FF 01][57 FF 00][86 FF _onespaceifnewline_] and its cohort[00 FF]
^L10007^[86 FF _userlowertheignore_][57 FF 00][86 FF _twospacesifnewline_][9F FF][57 FF 01][57 FF 00][86 FF _onespaceifnewline_] and its cohorts[00 FF]
^L10008^[5E FF 01][95 FF 03 _L10009_ _L10010_ _L10011_][00 FF]
^L10009^[86 FF _userlowertheignore_][57 FF 00][86 FF _twospacesifnewline_][9F FF]'s[00 FF]
^L10010^[86 FF _userlowertheignore_][57 FF 00][86 FF _twospacesifnewline_][9F FF][57 FF 01][57 FF 00][86 FF _onespaceifnewline_] and its cohort's[00 FF]
^L10011^[86 FF _userlowertheignore_][57 FF 00][86 FF _twospacesifnewline_][9F FF][57 FF 01][57 FF 00][86 FF _onespaceifnewline_] and its cohorts's[00 FF]
^L1953^@[86 FF _L10000SP_] attacked![57 FF 01][02 FF][00 FF]
^L1954^@[86 FF _L10000_][57 FF 01][57 FF 00][86 FF _onespaceifnewline_] trapped you![57 FF 01][02 FF][00 FF]
^L1954-1^@[86 FF _L10000_][57 FF 01][57 FF 00][86 FF _onespaceifnewline_] came after you![57 FF 01][02 FF][00 FF]
^L1954-2^@[86 FF _L10000_][57 FF 01][57 FF 00][86 FF _onespaceifnewline_] blocked the way![57 FF 01][02 FF][00 FF]
^L1955^@[86 FF _targetupperthe_][AD FF] turned[01 FF] back to normal![D4 FF 21 00][00 FF]
^L1956^@[86 FF _targetupperthe_][AD FF] was[01 FF] defeated![D4 FF 21 00][00 FF]
^L1957^@[86 FF _targetupperthe_][AD FF] became[01 FF] tame![D4 FF 21 00][00 FF]
^L1958^@You encounter [86 FF _L10004_].[02 FF][00 FF]
^L1958^@You encounter [86 FF _L10004_].[57 FF 01][02 FF][00 FF]
^L1958-1^@You meet [86 FF _L10004_].[57 FF 01][02 FF][00 FF]
^L1959^@[86 FF _targetupperthe_][AD FF] stopped[01 FF] moving![D4 FF 21 00][00 FF]
^L1960^@You confront [86 FF _L10004_].[02 FF][00 FF]
^L1960^@You confront [86 FF _L10004_].[57 FF 01][02 FF][00 FF]
^L1960-1^@You engage [86 FF _L10004_].[57 FF 01][02 FF][00 FF]
^L1961^@[86 FF _targetupperthe_][AD FF] was broken[01 FF] into pieces![D4 FF 21 00][00 FF]
^L1962^@The figure of [86 FF _targetlowerthe_][AD FF][01 FF] melted into thin air![D4 FF 21 00][00 FF]
^L1963^@[86 FF _targetupperthe_][AD FF][01 FF] disappeared![D4 FF 21 00][00 FF]
@ -2112,7 +2121,7 @@
^L2105^@But, the seed didn't sprout.[02 FF][00 FF]
^L2106^[C4 FF 00 62]@Time started again.[02 FF][00 FF]
^L2107^@Here is a chance[01 FF] for a surprise opening attack![02 FF][00 FF]
^L2108^@Here is [86 FF _L10008_] opening attack![02 FF][00 FF]
^L2108^@Here is [86 FF _L10008_][57 FF 01][57 FF 00][86 FF _onespaceifnewline_] opening attack![57 FF 01][02 FF][00 FF]
^L11000^[C2 FF][1A FF 05 00][8D FF 01 00][87 FF][BC FF 01 00]^L11001^[C0 FF][A8 FF 01][96 FF 00][81 FF _L11002_][8D FF 00 00][92 FF 00 01 02][81 FF _L11002_][8D FF 00 00][92 FF 00 01 03][81 FF _L11002_][80 FF _L11001_]
^L11002^[A8 FF 01][87 FF][95 FF 05 _L11003_ _L11003_ _L11004_ _L11005_ _L11005_][00 FF]
^L11003^[00 FF]
@ -5211,6 +5220,10 @@
^userlowerthe^[5E FF 02][00][95 FF 02 _none_ _lowerthe_]^none^[00 FF]
^userlowertheignore^[5E FF 02][01][95 FF 02 _none_ _lowerthe_][00 FF]
^lowerthe^the [00 FF]
^twospacesifnewline^[5E FF 06][95 FF 02 _twospaces_ _none_][00 FF]
^twospaces^ [00 FF]
^onespaceifnewline^[5E FF 06][95 FF 02 _onespace_ _none_][00 FF]
^onespace^ [00 FF]
^userupperthe^[5E FF 02][00][95 FF 02 _none_ _upperthe_][00 FF]
^useruppertheignore^[5E FF 02][01][95 FF 02 _none_ _upperthe_][00 FF]
^upperthe^The [00 FF]