168 std::unique_ptr<Rom> rom = std::make_unique<Rom>();
169 ASSERT_OK(rom->LoadFromFile(vanilla_test_path_));
172 EXPECT_TRUE(ValidateVersionAddresses(*rom,
"vanilla"));
175 auto version_byte = rom->ReadByte(0x140145);
176 ASSERT_TRUE(version_byte.ok());
177 EXPECT_EQ(*version_byte, 0xFF);
183 std::unique_ptr<Rom> rom = std::make_unique<Rom>();
184 ASSERT_OK(rom->LoadFromFile(vanilla_test_path_));
187 ASSERT_OK(ApplyVersionPatch(*rom,
"v2"));
190 EXPECT_TRUE(ValidateVersionAddresses(*rom,
"v2"));
196 std::unique_ptr<Rom> reloaded_rom = std::make_unique<Rom>();
197 ASSERT_OK(reloaded_rom->LoadFromFile(v2_test_path_));
199 EXPECT_TRUE(ValidateVersionAddresses(*reloaded_rom,
"v2"));
200 auto version_byte = reloaded_rom->ReadByte(0x140145);
201 ASSERT_TRUE(version_byte.ok());
202 EXPECT_EQ(*version_byte, 0x02);
208 std::unique_ptr<Rom> rom = std::make_unique<Rom>();
209 ASSERT_OK(rom->LoadFromFile(vanilla_test_path_));
212 ASSERT_OK(ApplyVersionPatch(*rom,
"v2"));
215 ASSERT_OK(ApplyVersionPatch(*rom,
"v3"));
218 EXPECT_TRUE(ValidateVersionAddresses(*rom,
"v3"));
224 std::unique_ptr<Rom> reloaded_rom = std::make_unique<Rom>();
225 ASSERT_OK(reloaded_rom->LoadFromFile(v3_test_path_));
227 EXPECT_TRUE(ValidateVersionAddresses(*reloaded_rom,
"v3"));
228 auto version_byte = reloaded_rom->ReadByte(0x140145);
229 ASSERT_TRUE(version_byte.ok());
230 EXPECT_EQ(*version_byte, 0x03);
236 std::unique_ptr<Rom> rom = std::make_unique<Rom>();
237 ASSERT_OK(rom->LoadFromFile(vanilla_test_path_));
240 ASSERT_OK(ApplyVersionPatch(*rom,
"v3"));
243 EXPECT_TRUE(ValidateVersionAddresses(*rom,
"v3"));
249 std::unique_ptr<Rom> reloaded_rom = std::make_unique<Rom>();
250 ASSERT_OK(reloaded_rom->LoadFromFile(v3_test_path_));
252 EXPECT_TRUE(ValidateVersionAddresses(*reloaded_rom,
"v3"));
253 auto version_byte = reloaded_rom->ReadByte(0x140145);
254 ASSERT_TRUE(version_byte.ok());
255 EXPECT_EQ(*version_byte, 0x03);
261 std::unique_ptr<Rom> vanilla_rom = std::make_unique<Rom>();
262 ASSERT_OK(vanilla_rom->LoadFromFile(vanilla_test_path_));
263 EXPECT_TRUE(ValidateVersionAddresses(*vanilla_rom,
"vanilla"));
266 ASSERT_OK(ApplyVersionPatch(*vanilla_rom,
"v2"));
267 EXPECT_TRUE(ValidateVersionAddresses(*vanilla_rom,
"v2"));
270 ASSERT_OK(ApplyVersionPatch(*vanilla_rom,
"v3"));
271 EXPECT_TRUE(ValidateVersionAddresses(*vanilla_rom,
"v3"));
276 std::unique_ptr<Rom> rom = std::make_unique<Rom>();
277 ASSERT_OK(rom->LoadFromFile(vanilla_test_path_));
278 ASSERT_OK(ApplyVersionPatch(*rom,
"v3"));
281 auto main_palettes = rom->ReadByte(0x140146);
282 auto area_bg = rom->ReadByte(0x140147);
283 auto subscreen_overlay = rom->ReadByte(0x140148);
284 auto animated_gfx = rom->ReadByte(0x140149);
285 auto custom_tiles = rom->ReadByte(0x14014A);
286 auto mosaic = rom->ReadByte(0x14014B);
288 ASSERT_TRUE(main_palettes.ok());
289 ASSERT_TRUE(area_bg.ok());
290 ASSERT_TRUE(subscreen_overlay.ok());
291 ASSERT_TRUE(animated_gfx.ok());
292 ASSERT_TRUE(custom_tiles.ok());
293 ASSERT_TRUE(mosaic.ok());
295 EXPECT_EQ(*main_palettes, 0x01);
296 EXPECT_EQ(*area_bg, 0x01);
297 EXPECT_EQ(*subscreen_overlay, 0x01);
298 EXPECT_EQ(*animated_gfx, 0x01);
299 EXPECT_EQ(*custom_tiles, 0x01);
300 EXPECT_EQ(*mosaic, 0x01);
303 ASSERT_OK(rom->WriteByte(0x140147, 0x00));
304 ASSERT_OK(rom->WriteByte(0x140149, 0x00));
307 auto disabled_area_bg = rom->ReadByte(0x140147);
308 auto disabled_animated_gfx = rom->ReadByte(0x140149);
309 ASSERT_TRUE(disabled_area_bg.ok());
310 ASSERT_TRUE(disabled_animated_gfx.ok());
312 EXPECT_EQ(*disabled_area_bg, 0x00);
313 EXPECT_EQ(*disabled_animated_gfx, 0x00);
316 ASSERT_OK(rom->WriteByte(0x140147, 0x01));
317 ASSERT_OK(rom->WriteByte(0x140149, 0x01));
320 auto reenabled_area_bg = rom->ReadByte(0x140147);
321 auto reenabled_animated_gfx = rom->ReadByte(0x140149);
322 ASSERT_TRUE(reenabled_area_bg.ok());
323 ASSERT_TRUE(reenabled_animated_gfx.ok());
325 EXPECT_EQ(*reenabled_area_bg, 0x01);
326 EXPECT_EQ(*reenabled_animated_gfx, 0x01);
331 std::unique_ptr<Rom> rom = std::make_unique<Rom>();
332 ASSERT_OK(rom->LoadFromFile(vanilla_test_path_));
335 auto original_graphics = rom->ReadByte(0x7C9C);
336 auto original_palette = rom->ReadByte(0x7D1C);
337 auto original_sprite_set = rom->ReadByte(0x7A41);
339 ASSERT_TRUE(original_graphics.ok());
340 ASSERT_TRUE(original_palette.ok());
341 ASSERT_TRUE(original_sprite_set.ok());
344 ASSERT_OK(ApplyVersionPatch(*rom,
"v3"));
347 auto preserved_graphics = rom->ReadByte(0x7C9C);
348 auto preserved_palette = rom->ReadByte(0x7D1C);
349 auto preserved_sprite_set = rom->ReadByte(0x7A41);
351 ASSERT_TRUE(preserved_graphics.ok());
352 ASSERT_TRUE(preserved_palette.ok());
353 ASSERT_TRUE(preserved_sprite_set.ok());
355 EXPECT_EQ(*preserved_graphics, *original_graphics);
356 EXPECT_EQ(*preserved_palette, *original_palette);
357 EXPECT_EQ(*preserved_sprite_set, *original_sprite_set);
360 auto bg_colors = rom->ReadByte(0x140000);
361 auto subscreen_overlays = rom->ReadByte(0x140340);
362 auto animated_gfx = rom->ReadByte(0x1402A0);
363 auto custom_tiles = rom->ReadByte(0x140480);
365 ASSERT_TRUE(bg_colors.ok());
366 ASSERT_TRUE(subscreen_overlays.ok());
367 ASSERT_TRUE(animated_gfx.ok());
368 ASSERT_TRUE(custom_tiles.ok());
370 EXPECT_EQ(*bg_colors, 0x00);
371 EXPECT_EQ(*subscreen_overlays, 0x00);
372 EXPECT_EQ(*animated_gfx, 0x00);
373 EXPECT_EQ(*custom_tiles, 0x00);