From ca12bf15eefa0d2d3b9ebfb9a28325a9d3373afd Mon Sep 17 00:00:00 2001 From: Rebbacus <100238547+Rebbacus@users.noreply.github.com> Date: Thu, 21 Dec 2023 02:02:27 -0500 Subject: [PATCH 1/6] VC crash screen + load progress gzi --- bin/gzinject/ootr.gzi | 1230 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1225 insertions(+), 5 deletions(-) diff --git a/bin/gzinject/ootr.gzi b/bin/gzinject/ootr.gzi index d5bc203bc..36a23f6ea 100644 --- a/bin/gzinject/ootr.gzi +++ b/bin/gzinject/ootr.gzi @@ -1,8 +1,1228 @@ -# ootr remapping for NACE and NACJ +# ootr remapping for NACE 0000 00000000 00000001 # use 8MB memory -0304 00002EB0 60000000 # apply d-pad remappings -0302 0016BAF4 00000400 -0302 0016BAF8 00000200 -0302 0016BAFC 00000100 +# crash screen and start-up progress payload for NACE +# debug font address at offset 0x05F4 is for OoT US 1.0 +0304 000005f0 90000820 +0304 000005f4 00104c18 +0304 000005f8 050003c0 +0304 000005fc 005804a4 +0304 00000600 0030037c +0304 00000604 00580030 +0304 00000608 ff801f80 +0304 00000610 009f6d64 +0304 00000638 80f64120 +0304 00000664 000000ff +0304 000006c8 9421ffe0 +0304 000006cc 7c0802a6 +0304 000006d0 90010024 +0304 000006d4 4809b4f5 +0304 000006d8 3fe08000 +0304 000006dc 809f452c +0304 000006e0 2c040000 +0304 000006e4 40820010 +0304 000006e8 806d8920 +0304 000006ec 7f44d378 +0304 000006f0 48000509 +0304 000006f4 889f4560 +0304 000006f8 2c040001 +0304 000006fc 90810008 +0304 00000700 41800040 +0304 00000704 480001f5 +0304 00000708 38810008 +0304 0000070c 387f5c01 +0304 00000710 48000ae9 +0304 00000714 889f4560 +0304 00000718 2c040001 +0304 0000071c 4182002c +0304 00000720 2c040002 +0304 00000724 4182002c +0304 00000728 2c040003 +0304 0000072c 4182002c +0304 00000730 2c040004 +0304 00000734 4182002c +0304 00000738 2c040005 +0304 0000073c 4182002c +0304 00000740 480005b9 +0304 00000744 4bffffb0 +0304 00000748 48000bb1 +0304 0000074c 4bffffa8 +0304 00000750 48000ee1 +0304 00000754 4bffffa0 +0304 00000758 480002a1 +0304 0000075c 4bffff98 +0304 00000760 48000df1 +0304 00000764 4bffff90 +0304 00000768 480011c1 +0304 0000076c 4bffff88 +0304 00000770 48084d81 +0304 00000774 80010024 +0304 00000778 7c0803a6 +0304 0000077c 38210020 +0304 00000780 4e800020 +0304 00000810 a09f44fc +0304 00000814 a0bf4506 +0304 00000818 b09f4504 +0304 0000081c 38a50010 +0304 00000820 b0bf4506 +0304 00000824 4e800020 +0304 00000828 a07f44fc +0304 0000082c a09f4500 +0304 00000830 b07f4504 +0304 00000834 b09f4506 +0304 00000838 4e800020 +0304 0000083c 38600000 +0304 00000840 b07f450c +0304 00000844 4e800020 +0304 00000848 38800008 +0304 0000084c 48000018 +0304 00000850 38800004 +0304 00000854 5463801e +0304 00000858 4800000c +0304 0000085c 38800002 +0304 00000860 5463c00e +0304 00000864 9421fff0 +0304 00000868 7c0802a6 +0304 0000086c 90010014 +0304 00000870 93a1000c +0304 00000874 93810008 +0304 00000878 7c7d1b78 +0304 0000087c 7c9c2378 +0304 00000880 57a3273e +0304 00000884 48000675 +0304 00000888 57bd2036 +0304 0000088c 3b9cffff +0304 00000890 2c1c0000 +0304 00000894 4181ffec +0304 00000898 83810008 +0304 0000089c 83a1000c +0304 000008a0 80010014 +0304 000008a4 7c0803a6 +0304 000008a8 38210010 +0304 000008ac 4e800020 +0304 000008f8 9421ffe0 +0304 000008fc 7c0802a6 +0304 00000900 90010024 +0304 00000904 a07f450a +0304 00000908 5464801e +0304 0000090c 7c652378 +0304 00000910 807f44f0 +0304 00000914 38c36e00 +0304 00000918 38c66e50 +0304 0000091c 38800190 +0304 00000920 3860011e +0304 00000924 90a60000 +0304 00000928 38c60004 +0304 0000092c 3863ffff +0304 00000930 2c030000 +0304 00000934 4181fff0 +0304 00000938 3884ffff +0304 0000093c 38c60088 +0304 00000940 2c040000 +0304 00000944 4181ffdc +0304 00000948 4bfffee1 +0304 0000094c 4bfffef1 +0304 00000950 80010024 +0304 00000954 7c0803a6 +0304 00000958 38210020 +0304 0000095c 4e800020 +0304 00000960 9421fff0 +0304 00000964 7c0802a6 +0304 00000968 90010014 +0304 0000096c 807f44f0 +0304 00000970 3c800009 +0304 00000974 60846000 +0304 00000978 48086e19 +0304 0000097c 80010014 +0304 00000980 7c0803a6 +0304 00000984 38210010 +0304 00000988 4e800020 +0304 0000098c 80ad91b8 +0304 00000990 7c032800 +0304 00000994 40820008 +0304 00000998 80ad91bc +0304 0000099c 90bf4540 +0304 000009a0 4e800020 +0304 000009f8 9421fff0 +0304 000009fc 7c0802a6 +0304 00000a00 90010014 +0304 00000a04 889f4563 +0304 00000a08 7c860774 +0304 00000a0c 2c060000 +0304 00000a10 40800008 +0304 00000a14 41800034 +0304 00000a18 38a0ffff +0304 00000a1c 98bf4563 +0304 00000a20 3860fffe +0304 00000a24 4bfffe1d +0304 00000a28 809f4544 +0304 00000a2c 387f5da8 +0304 00000a30 480007c9 +0304 00000a34 4bffff2d +0304 00000a38 38800001 +0304 00000a3c 989f4563 +0304 00000a40 3860000c +0304 00000a44 48000018 +0304 00000a48 387f5eba +0304 00000a4c 38800000 +0304 00000a50 480007a9 +0304 00000a54 4bffff0d +0304 00000a58 38600006 +0304 00000a5c 38800001 +0304 00000a60 48000099 +0304 00000a64 38600004 +0304 00000a68 987f4560 +0304 00000a6c 80010014 +0304 00000a70 7c0803a6 +0304 00000a74 38210010 +0304 00000a78 4e800020 +0304 00000af8 9421ffe0 +0304 00000afc 7c0802a6 +0304 00000b00 90010024 +0304 00000b04 93c10008 +0304 00000b08 93a1000c +0304 00000b0c 7c7e1b78 +0304 00000b10 7c9d2378 +0304 00000b14 38c00030 +0304 00000b18 b0df4506 +0304 00000b1c 38a00424 +0304 00000b20 b0bf4504 +0304 00000b24 2c1d0000 +0304 00000b28 4182000c +0304 00000b2c 480003cd +0304 00000b30 4bfffe31 +0304 00000b34 4808ec41 +0304 00000b38 5463502a +0304 00000b3c 548455be +0304 00000b40 7c632378 +0304 00000b44 38800000 +0304 00000b48 2c040000 +0304 00000b4c 4082002c +0304 00000b50 80bf4534 +0304 00000b54 5463e13e +0304 00000b58 7c032800 +0304 00000b5c 4081ffd8 +0304 00000b60 907f4534 +0304 00000b64 3bdeffff +0304 00000b68 2c1e0000 +0304 00000b6c 4081000c +0304 00000b70 7fc3f378 +0304 00000b74 4bffffa8 +0304 00000b78 83a1000c +0304 00000b7c 83c10008 +0304 00000b80 80010024 +0304 00000b84 7c0803a6 +0304 00000b88 38210020 +0304 00000b8c 4e800020 +0304 00000bf8 9421fff0 +0304 00000bfc 7c0802a6 +0304 00000c00 90010014 +0304 00000c04 7c9e2378 +0304 00000c08 909f452c +0304 00000c0c 80a30018 +0304 00000c10 80e30010 +0304 00000c14 80c50004 +0304 00000c18 90ff4510 +0304 00000c1c 90df4538 +0304 00000c20 806d900c +0304 00000c24 907f44f0 +0304 00000c28 4bfffd65 +0304 00000c2c 7cd302a6 +0304 00000c30 809e0198 +0304 00000c34 80be0084 +0304 00000c38 90df451c +0304 00000c3c 909f4514 +0304 00000c40 90bf4518 +0304 00000c44 48000aed +0304 00000c48 807f4540 +0304 00000c4c 38800000 +0304 00000c50 38a05000 +0304 00000c54 4bfff835 +0304 00000c58 817f4540 +0304 00000c5c 39400004 +0304 00000c60 93cb0000 +0304 00000c64 3bdefffc +0304 00000c68 7ccaf02e +0304 00000c6c 7cca592e +0304 00000c70 394a0004 +0304 00000c74 2c0a0080 +0304 00000c78 4180fff0 +0304 00000c7c 809f4514 +0304 00000c80 80bf4518 +0304 00000c84 80df451c +0304 00000c88 908b0084 +0304 00000c8c 90ab0088 +0304 00000c90 90cb008c +0304 00000c94 917f4544 +0304 00000c98 3bcb0090 +0304 00000c9c 93df4540 +0304 00000ca0 80010014 +0304 00000ca4 7c0803a6 +0304 00000ca8 38210010 +0304 00000cac 4e800020 +0304 00000cf8 9421fff0 +0304 00000cfc 7c0802a6 +0304 00000d00 90010014 +0304 00000d04 38a001c8 +0304 00000d08 38800080 +0304 00000d0c b0bf44fc +0304 00000d10 b09f4500 +0304 00000d14 4bfffb15 +0304 00000d18 387f5c21 +0304 00000d1c 38800000 +0304 00000d20 480004d9 +0304 00000d24 4bfffc3d +0304 00000d28 38a00058 +0304 00000d2c 38800030 +0304 00000d30 b0bf44fc +0304 00000d34 b09f4500 +0304 00000d38 4bfffaf1 +0304 00000d3c 38600004 +0304 00000d40 38800000 +0304 00000d44 4bfffdb5 +0304 00000d48 38a00001 +0304 00000d4c 98bf4560 +0304 00000d50 38600001 +0304 00000d54 987f4566 +0304 00000d58 80010014 +0304 00000d5c 7c0803a6 +0304 00000d60 38210010 +0304 00000d64 4e800020 +0304 00000df8 817f4540 +0304 00000dfc a07f450e +0304 00000e00 809f452c +0304 00000e04 80bf4514 +0304 00000e08 80df4518 +0304 00000e0c 80ff451c +0304 00000e10 917f4548 +0304 00000e14 906b0000 +0304 00000e18 908b0004 +0304 00000e1c 90ab0008 +0304 00000e20 90cb000c +0304 00000e24 815f4510 +0304 00000e28 90eb0010 +0304 00000e2c 806a0000 +0304 00000e30 808a0020 +0304 00000e34 80aa0030 +0304 00000e38 906b0014 +0304 00000e3c 908b0018 +0304 00000e40 90ab001c +0304 00000e44 38e00000 +0304 00000e48 390a0054 +0304 00000e4c 392b0020 +0304 00000e50 80680000 +0304 00000e54 90690000 +0304 00000e58 38e70001 +0304 00000e5c 39080008 +0304 00000e60 39290004 +0304 00000e64 2c07001f +0304 00000e68 4180ffe8 +0304 00000e6c 80ca002c +0304 00000e70 80660004 +0304 00000e74 80860010 +0304 00000e78 80a60014 +0304 00000e7c 90cb009c +0304 00000e80 906b00a0 +0304 00000e84 908b00a4 +0304 00000e88 90ab00a8 +0304 00000e8c 80660024 +0304 00000e90 8086002c +0304 00000e94 390b00b4 +0304 00000e98 906b00ac +0304 00000e9c 908b00b0 +0304 00000ea0 911f4540 +0304 00000ea4 4e800020 +0304 00000ef8 9421ffd0 +0304 00000efc 7c0802a6 +0304 00000f00 90010034 +0304 00000f04 39610030 +0304 00000f08 4814e051 +0304 00000f0c 801f44f0 +0304 00000f10 a09f4504 +0304 00000f14 a0bf4506 +0304 00000f18 7c040214 +0304 00000f1c 1ca50500 +0304 00000f20 60000000 +0304 00000f24 7fc50214 +0304 00000f28 817f44f4 +0304 00000f2c 80df4538 +0304 00000f30 70690004 +0304 00000f34 7d6b3214 +0304 00000f38 7d695a14 +0304 00000f3c 706500ff +0304 00000f40 54a9e8fe +0304 00000f44 55243032 +0304 00000f48 7fa45a14 +0304 00000f4c 70600003 +0304 00000f50 38800001 +0304 00000f54 7c850030 +0304 00000f58 54bce006 +0304 00000f5c a37f4508 +0304 00000f60 a35f450a +0304 00000f64 3b200008 +0304 00000f68 7fc7f378 +0304 00000f6c 811d0000 +0304 00000f70 7f86e378 +0304 00000f74 3b000008 +0304 00000f78 7d003038 +0304 00000f7c 2c000000 +0304 00000f80 41820018 +0304 00000f84 b3670000 +0304 00000f88 b3670002 +0304 00000f8c b3670500 +0304 00000f90 b3670502 +0304 00000f94 48000014 +0304 00000f98 b3470000 +0304 00000f9c b3470002 +0304 00000fa0 b3470500 +0304 00000fa4 b3470502 +0304 00000fa8 54c6e13e +0304 00000fac 3b18ffff +0304 00000fb0 38e70004 +0304 00000fb4 2c180000 +0304 00000fb8 4181ffc0 +0304 00000fbc 3b39ffff +0304 00000fc0 3bbd0008 +0304 00000fc4 3bde0a00 +0304 00000fc8 7fc7f378 +0304 00000fcc 2c190000 +0304 00000fd0 4181ff9c +0304 00000fd4 a09f4504 +0304 00000fd8 a8df450c +0304 00000fdc 38a40020 +0304 00000fe0 7ca53214 +0304 00000fe4 b0bf4504 +0304 00000fe8 39610030 +0304 00000fec 4814dfb9 +0304 00000ff0 80010034 +0304 00000ff4 7c0803a6 +0304 00000ff8 38210030 +0304 00000ffc 4e800020 +0304 00001000 9421ffd0 +0304 00001004 7c0802a6 +0304 00001008 90010034 +0304 0000100c 2c030078 +0304 00001010 41820054 +0304 00001014 2c03006c +0304 00001018 4182004c +0304 0000101c 2c030068 +0304 00001020 4182005c +0304 00001024 2c030062 +0304 00001028 4182006c +0304 0000102c 2c030073 +0304 00001030 4182007c +0304 00001034 2c030070 +0304 00001038 41820014 +0304 0000103c 2c030025 +0304 00001040 40820084 +0304 00001044 4bfffeb5 +0304 00001048 4800007c +0304 0000104c 2c040000 +0304 00001050 41820074 +0304 00001054 54a6103a +0304 00001058 7c64302e +0304 0000105c 4bfff7e5 +0304 00001060 48000064 +0304 00001064 2c040000 +0304 00001068 4182005c +0304 0000106c 54a6103a +0304 00001070 7c64302e +0304 00001074 4bfff7d5 +0304 00001078 4800004c +0304 0000107c 2c040000 +0304 00001080 41820044 +0304 00001084 54a6103a +0304 00001088 7c64302e +0304 0000108c 4bfff7c5 +0304 00001090 48000034 +0304 00001094 2c040000 +0304 00001098 4182002c +0304 0000109c 54a6103a +0304 000010a0 7c64302e +0304 000010a4 4bfff7b9 +0304 000010a8 4800001c +0304 000010ac 2c040000 +0304 000010b0 41820014 +0304 000010b4 54a6103a +0304 000010b8 7c64302e +0304 000010bc 38800000 +0304 000010c0 48000139 +0304 000010c4 80010034 +0304 000010c8 7c0803a6 +0304 000010cc 38210030 +0304 000010d0 4e800020 +0304 000011f8 9421ffd0 +0304 000011fc 7c0802a6 +0304 00001200 90010034 +0304 00001204 39610030 +0304 00001208 4814dd5d +0304 0000120c 7c7e1b78 +0304 00001210 7c9d2378 +0304 00001214 3b800000 +0304 00001218 887e0000 +0304 0000121c 2c030000 +0304 00001220 41820044 +0304 00001224 2c03000a +0304 00001228 41820030 +0304 0000122c 2c030025 +0304 00001230 40820020 +0304 00001234 887e0001 +0304 00001238 7fa4eb78 +0304 0000123c 7f85e378 +0304 00001240 4bfffdc1 +0304 00001244 3bde0001 +0304 00001248 3b9c0001 +0304 0000124c 48000010 +0304 00001250 4bfffca9 +0304 00001254 48000008 +0304 00001258 4bfff5b9 +0304 0000125c 3bde0001 +0304 00001260 4bffffb8 +0304 00001264 39610030 +0304 00001268 4814dd49 +0304 0000126c 80010034 +0304 00001270 7c0803a6 +0304 00001274 38210030 +0304 00001278 4e800020 +0304 000012f8 9421fff0 +0304 000012fc 7c0802a6 +0304 00001300 90010014 +0304 00001304 889f4561 +0304 00001308 7c860774 +0304 0000130c 2c060000 +0304 00001310 4180003c +0304 00001314 41810010 +0304 00001318 38a0ffff +0304 0000131c 98bf4561 +0304 00001320 4bfffad9 +0304 00001324 3860fffe +0304 00001328 4bfff519 +0304 0000132c 809f4548 +0304 00001330 387f5c48 +0304 00001334 4bfffec5 +0304 00001338 4bfff629 +0304 0000133c 38a00001 +0304 00001340 98bf4561 +0304 00001344 3860000c +0304 00001348 48000018 +0304 0000134c 387f5d88 +0304 00001350 38800000 +0304 00001354 4bfffea5 +0304 00001358 4bfff609 +0304 0000135c 38600006 +0304 00001360 38800001 +0304 00001364 4bfff795 +0304 00001368 38a00002 +0304 0000136c 98bf4560 +0304 00001370 80010014 +0304 00001374 7c0803a6 +0304 00001378 38210010 +0304 0000137c 4e800020 +0304 000013f8 9421ffe0 +0304 000013fc 7c0802a6 +0304 00001400 90010024 +0304 00001404 93c10008 +0304 00001408 93a1000c +0304 0000140c 387f5f09 +0304 00001410 38800000 +0304 00001414 4bfffde5 +0304 00001418 80bf4544 +0304 0000141c 3ba00000 +0304 00001420 83c50008 +0304 00001424 3ba00000 +0304 00001428 7fc3f378 +0304 0000142c 4bfff41d +0304 00001430 38600020 +0304 00001434 4bfffac5 +0304 00001438 807e0000 +0304 0000143c 4bfff40d +0304 00001440 38600020 +0304 00001444 4bfffab5 +0304 00001448 807e0004 +0304 0000144c 4bfff3fd +0304 00001450 4bfff3c1 +0304 00001454 80be0000 +0304 00001458 3880ffff +0304 0000145c 7c052000 +0304 00001460 41820014 +0304 00001464 7cbe2b78 +0304 00001468 3bbd0001 +0304 0000146c 2c1d000d +0304 00001470 4180ffb8 +0304 00001474 83a1000c +0304 00001478 83c10008 +0304 0000147c 80010024 +0304 00001480 7c0803a6 +0304 00001484 38210020 +0304 00001488 4e800020 +0304 00001550 9421fff0 +0304 00001554 7c0802a6 +0304 00001558 90010014 +0304 0000155c 889f4564 +0304 00001560 7c860774 +0304 00001564 2c060000 +0304 00001568 41800020 +0304 0000156c 38a0ffff +0304 00001570 98bf4564 +0304 00001574 4bfffe85 +0304 00001578 38a00001 +0304 0000157c 98bf4564 +0304 00001580 3860000c +0304 00001584 48000018 +0304 00001588 387f5f31 +0304 0000158c 38800000 +0304 00001590 4bfffc69 +0304 00001594 4bfff3cd +0304 00001598 38600006 +0304 0000159c 38800001 +0304 000015a0 4bfff559 +0304 000015a4 38600005 +0304 000015a8 987f4560 +0304 000015ac 80010014 +0304 000015b0 7c0803a6 +0304 000015b4 38210010 +0304 000015b8 4e800020 +0304 00001630 9421fff0 +0304 00001634 7c0802a6 +0304 00001638 90010014 +0304 0000163c 889f4562 +0304 00001640 7c860774 +0304 00001644 2c060000 +0304 00001648 41800020 +0304 0000164c 38a0ffff +0304 00001650 98bf4562 +0304 00001654 480003a5 +0304 00001658 38a00001 +0304 0000165c 98bf4562 +0304 00001660 3860000c +0304 00001664 48000018 +0304 00001668 387f5ee9 +0304 0000166c 38800000 +0304 00001670 4bfffb89 +0304 00001674 4bfff2ed +0304 00001678 38600006 +0304 0000167c 38800001 +0304 00001680 4bfff479 +0304 00001684 38a00003 +0304 00001688 98bf4560 +0304 0000168c 80010014 +0304 00001690 7c0803a6 +0304 00001694 38210010 +0304 00001698 4e800020 +0304 00001730 809f4514 +0304 00001734 80bf4510 +0304 00001738 3cc0801d +0304 0000173c 60c6cd98 +0304 00001740 7c042800 +0304 00001744 4081000c +0304 00001748 8066007c +0304 0000174c 48000008 +0304 00001750 80650134 +0304 00001754 907f4530 +0304 00001758 4e800020 +0304 0000175c 80ff4510 +0304 00001760 80c7002c +0304 00001764 80670030 +0304 00001768 80860010 +0304 0000176c 80a60014 +0304 00001770 7c032000 +0304 00001774 4180000c +0304 00001778 7c032800 +0304 0000177c 41800008 +0304 00001780 80670020 +0304 00001784 4e800020 +0304 00001830 80bf4510 +0304 00001834 3cc50010 +0304 00001838 80860f60 +0304 0000183c 7c032000 +0304 00001840 41800074 +0304 00001844 80bf4538 +0304 00001848 7c032800 +0304 0000184c 41810068 +0304 00001850 70660003 +0304 00001854 2c060000 +0304 00001858 4082005c +0304 0000185c 80a30000 +0304 00001860 54a6843e +0304 00001864 2c0660e7 +0304 00001868 3863fffc +0304 0000186c 4082fff0 +0304 00001870 70a7ffff +0304 00001874 80a30000 +0304 00001878 54a6843e +0304 0000187c 2c063ce0 +0304 00001880 3863fffc +0304 00001884 4082fff0 +0304 00001888 54a8801e +0304 0000188c 7ce34378 +0304 00001890 7c03f800 +0304 00001894 3c9f0080 +0304 00001898 4180001c +0304 0000189c 7c032000 +0304 000018a0 40800014 +0304 000018a4 70660003 +0304 000018a8 2c060000 +0304 000018ac 40820008 +0304 000018b0 48000008 +0304 000018b4 38600000 +0304 000018b8 4e800020 +0304 000018f8 3cbf0080 +0304 000018fc 7c04f800 +0304 00001900 41800020 +0304 00001904 7c042800 +0304 00001908 40800018 +0304 0000190c 70860003 +0304 00001910 2c060000 +0304 00001914 4082000c +0304 00001918 38600001 +0304 0000191c 48000008 +0304 00001920 38600000 +0304 00001924 4e800020 +0304 00001928 9421fff0 +0304 0000192c 7c0802a6 +0304 00001930 90010014 +0304 00001934 889f4565 +0304 00001938 7c860774 +0304 0000193c 2c060000 +0304 00001940 4180003c +0304 00001944 41810010 +0304 00001948 38a0ffff +0304 0000194c 98bf4565 +0304 00001950 480002a9 +0304 00001954 3860fffe +0304 00001958 4bffeee9 +0304 0000195c 809f4554 +0304 00001960 387f5f4c +0304 00001964 4bfff895 +0304 00001968 4bffeff9 +0304 0000196c 38a00001 +0304 00001970 98bf4565 +0304 00001974 3860000c +0304 00001978 48000018 +0304 0000197c 387f5fc6 +0304 00001980 38800000 +0304 00001984 4bfff875 +0304 00001988 4bffefd9 +0304 0000198c 38600006 +0304 00001990 38800001 +0304 00001994 4bfff165 +0304 00001998 38a00001 +0304 0000199c 98bf4560 +0304 000019a0 80010014 +0304 000019a4 7c0803a6 +0304 000019a8 38210010 +0304 000019ac 4e800020 +0304 000019f8 9421ff90 +0304 000019fc 7c0802a6 +0304 00001a00 90010074 +0304 00001a04 39610070 +0304 00001a08 4814d529 +0304 00001a0c 387f5ed7 +0304 00001a10 38800000 +0304 00001a14 4bfff7e5 +0304 00001a18 807f4530 +0304 00001a1c 7c761b78 +0304 00001a20 4bffee29 +0304 00001a24 38600020 +0304 00001a28 4bfff4d1 +0304 00001a2c 4bfffd31 +0304 00001a30 7c751b78 +0304 00001a34 4bffee15 +0304 00001a38 4bffedd9 +0304 00001a3c 7ea4ab78 +0304 00001a40 807f4510 +0304 00001a44 3bc00015 +0304 00001a48 83a30050 +0304 00001a4c 839f4538 +0304 00001a50 3f9c8000 +0304 00001a54 3f4003e0 +0304 00001a58 635a0008 +0304 00001a5c 3f208fbf +0304 00001a60 5739843e +0304 00001a64 3f608000 +0304 00001a68 3b000000 +0304 00001a6c 3ae00000 +0304 00001a70 4bfffe89 +0304 00001a74 2c030000 +0304 00001a78 41820100 +0304 00001a7c 7c64e02e +0304 00001a80 60000000 +0304 00001a84 7c03d000 +0304 00001a88 41820088 +0304 00001a8c 5465843e +0304 00001a90 2c0527bd +0304 00001a94 4182006c +0304 00001a98 7c05c800 +0304 00001a9c 41820028 +0304 00001aa0 5465463e +0304 00001aa4 2c050008 +0304 00001aa8 41820008 +0304 00001aac 4800006c +0304 00001ab0 5465402e +0304 00001ab4 54a3d1be +0304 00001ab8 7ee3da14 +0304 00001abc 3b000001 +0304 00001ac0 48000080 +0304 00001ac4 5465801e +0304 00001ac8 7ca58670 +0304 00001acc 7cdcb214 +0304 00001ad0 7c66282e +0304 00001ad4 3ce08000 +0304 00001ad8 60e72d20 +0304 00001adc 7c033800 +0304 00001ae0 418200a8 +0304 00001ae4 7c952378 +0304 00001ae8 4bfffd49 +0304 00001aec 2c030000 +0304 00001af0 41820088 +0304 00001af4 7c7d1b78 +0304 00001af8 7ea4ab78 +0304 00001afc 48000044 +0304 00001b00 5465801e +0304 00001b04 7ca58670 +0304 00001b08 7ec5b214 +0304 00001b0c 4800000c +0304 00001b10 3b000001 +0304 00001b14 4800002c +0304 00001b18 2c180000 +0304 00001b1c 41820024 +0304 00001b20 3b000000 +0304 00001b24 2c170000 +0304 00001b28 4082000c +0304 00001b2c 7fb5eb78 +0304 00001b30 48000018 +0304 00001b34 7ef5bb78 +0304 00001b38 3ae00000 +0304 00001b3c 4800000c +0304 00001b40 38840004 +0304 00001b44 4bffff38 +0304 00001b48 7ec3b378 +0304 00001b4c 4bffecfd +0304 00001b50 38600020 +0304 00001b54 4bfff3a5 +0304 00001b58 7ea3ab78 +0304 00001b5c 4bffeced +0304 00001b60 4bffecb1 +0304 00001b64 7ea4ab78 +0304 00001b68 3bdeffff +0304 00001b6c 2c1e0000 +0304 00001b70 40810018 +0304 00001b74 4bfffef4 +0304 00001b78 7ec3b378 +0304 00001b7c 4bffeccd +0304 00001b80 387f5eff +0304 00001b84 4bfff675 +0304 00001b88 39610070 +0304 00001b8c 4814d3f1 +0304 00001b90 80010074 +0304 00001b94 7c0803a6 +0304 00001b98 38210070 +0304 00001b9c 4e800020 +0304 00001bf8 9421ffe0 +0304 00001bfc 7c0802a6 +0304 00001c00 90010024 +0304 00001c04 817f4540 +0304 00001c08 807f453c +0304 00001c0c 388b0020 +0304 00001c10 909f4540 +0304 00001c14 917f4554 +0304 00001c18 813f4510 +0304 00001c1c 3d090010 +0304 00001c20 906b0000 +0304 00001c24 81481494 +0304 00001c28 a06a0000 +0304 00001c2c 914b000c +0304 00001c30 906b0010 +0304 00001c34 808a0004 +0304 00001c38 80aa0068 +0304 00001c3c 806a006c +0304 00001c40 908b0014 +0304 00001c44 90ab0018 +0304 00001c48 906b001c +0304 00001c4c 39480f68 +0304 00001c50 7d435378 +0304 00001c54 388000c0 +0304 00001c58 48000029 +0304 00001c5c 906b0004 +0304 00001c60 3880000d +0304 00001c64 386a0300 +0304 00001c68 48000019 +0304 00001c6c 906b0008 +0304 00001c70 80010024 +0304 00001c74 7c0803a6 +0304 00001c78 38210020 +0304 00001c7c 4e800020 +0304 00001c80 39200000 +0304 00001c84 39000000 +0304 00001c88 5506103a +0304 00001c8c 7ca6182e +0304 00001c90 38e0001f +0304 00001c94 7cac3c30 +0304 00001c98 718c0001 +0304 00001c9c 7d296214 +0304 00001ca0 38e7ffff +0304 00001ca4 2c070000 +0304 00001ca8 4080ffec +0304 00001cac 39080001 +0304 00001cb0 7c082000 +0304 00001cb4 4180ffd4 +0304 00001cb8 7d234b78 +0304 00001cbc 4e800020 +0304 00001cf8 4f6f5452 +0304 00001cfc 616e646f +0304 00001d00 00202020 +0304 00001d04 20202020 +0304 00001d08 20202020 +0304 00001d0c 20202020 +0304 00001d10 20205061 +0304 00001d14 67652025 +0304 00001d18 62206f66 +0304 00001d1c 20350a0a +0304 00001d20 002a2a2a +0304 00001d24 2a2a2a2a +0304 00001d28 2a2a2a2a +0304 00001d2c 2a0a4f68 +0304 00001d30 21204d59 +0304 00001d34 20474f44 +0304 00001d38 21210a2a +0304 00001d3c 2a2a2a2a +0304 00001d40 2a2a2a2a +0304 00001d44 2a2a2a00 +0304 00001d48 45786365 +0304 00001d4c 7074696f +0304 00001d50 6e202562 +0304 00001d54 20546872 +0304 00001d58 6561643a +0304 00001d5c 25780a53 +0304 00001d60 5252303a +0304 00001d64 2578204c +0304 00001d68 523a2578 +0304 00001d6c 20444152 +0304 00001d70 3a25780a +0304 00001d74 0a4e3634 +0304 00001d78 20435055 +0304 00001d7c 20537461 +0304 00001d80 74652025 +0304 00001d84 680a4675 +0304 00001d88 6e633a25 +0304 00001d8c 78205241 +0304 00001d90 3a25780a +0304 00001d94 0a41543a +0304 00001d98 25782056 +0304 00001d9c 303a2578 +0304 00001da0 2056313a +0304 00001da4 25780a41 +0304 00001da8 303a2578 +0304 00001dac 2041313a +0304 00001db0 25782041 +0304 00001db4 323a2578 +0304 00001db8 0a41333a +0304 00001dbc 25782054 +0304 00001dc0 303a2578 +0304 00001dc4 2054313a +0304 00001dc8 25780a54 +0304 00001dcc 323a2578 +0304 00001dd0 2054333a +0304 00001dd4 25782054 +0304 00001dd8 343a2578 +0304 00001ddc 0a54353a +0304 00001de0 25782054 +0304 00001de4 363a2578 +0304 00001de8 2054373a +0304 00001dec 25780a53 +0304 00001df0 303a2578 +0304 00001df4 2053313a +0304 00001df8 25782053 +0304 00001dfc 323a2578 +0304 00001e00 0a53333a +0304 00001e04 25782053 +0304 00001e08 343a2578 +0304 00001e0c 2053353a +0304 00001e10 25780a53 +0304 00001e14 363a2578 +0304 00001e18 2053373a +0304 00001e1c 25782054 +0304 00001e20 383a2578 +0304 00001e24 0a54393a +0304 00001e28 2578204b +0304 00001e2c 303a2578 +0304 00001e30 204b313a +0304 00001e34 25780a47 +0304 00001e38 503a2578 +0304 00001e3c 2053503a +0304 00001e40 25782046 +0304 00001e44 503a2578 +0304 00001e48 0a52413a +0304 00001e4c 25780a0a +0304 00001e50 5265636f +0304 00001e54 6d70204e +0304 00001e58 6f64653a +0304 00001e5c 25782050 +0304 00001e60 50433a25 +0304 00001e64 780a5374 +0304 00001e68 6172743a +0304 00001e6c 25782045 +0304 00001e70 6e643a25 +0304 00001e74 780a4368 +0304 00001e78 6b73756d +0304 00001e7c 3a257820 +0304 00001e80 53697a65 +0304 00001e84 3a257800 +0304 00001e88 4e363420 +0304 00001e8c 43505520 +0304 00001e90 756e6176 +0304 00001e94 61696c61 +0304 00001e98 626c653f +0304 00001e9c 3f20484f +0304 00001ea0 573f3f20 +0304 00001ea4 57485900 +0304 00001ea8 57696920 +0304 00001eac 47502052 +0304 00001eb0 65676973 +0304 00001eb4 74657273 +0304 00001eb8 0a0a5468 +0304 00001ebc 72656164 +0304 00001ec0 3a25780a +0304 00001ec4 2072303a +0304 00001ec8 25782020 +0304 00001ecc 72313a25 +0304 00001ed0 780a2072 +0304 00001ed4 323a2578 +0304 00001ed8 20207233 +0304 00001edc 3a25780a +0304 00001ee0 2072343a +0304 00001ee4 25782020 +0304 00001ee8 72353a25 +0304 00001eec 780a2072 +0304 00001ef0 363a2578 +0304 00001ef4 20207237 +0304 00001ef8 3a25780a +0304 00001efc 2072383a +0304 00001f00 25782020 +0304 00001f04 72393a25 +0304 00001f08 780a7231 +0304 00001f0c 303a2578 +0304 00001f10 20723131 +0304 00001f14 3a25780a +0304 00001f18 7231323a +0304 00001f1c 25782072 +0304 00001f20 31333a25 +0304 00001f24 780a7231 +0304 00001f28 343a2578 +0304 00001f2c 20723135 +0304 00001f30 3a25780a +0304 00001f34 7231363a +0304 00001f38 25782072 +0304 00001f3c 31373a25 +0304 00001f40 780a7231 +0304 00001f44 383a2578 +0304 00001f48 20723139 +0304 00001f4c 3a25780a +0304 00001f50 7232303a +0304 00001f54 25782072 +0304 00001f58 32313a25 +0304 00001f5c 780a7232 +0304 00001f60 323a2578 +0304 00001f64 20723233 +0304 00001f68 3a25780a +0304 00001f6c 7232343a +0304 00001f70 25782072 +0304 00001f74 32353a25 +0304 00001f78 780a7232 +0304 00001f7c 363a2578 +0304 00001f80 20723237 +0304 00001f84 3a25780a +0304 00001f88 7232383a +0304 00001f8c 25782072 +0304 00001f90 32393a25 +0304 00001f94 780a7233 +0304 00001f98 303a2578 +0304 00001f9c 20723331 +0304 00001fa0 3a25780a +0304 00001fa4 0a535252 +0304 00001fa8 303a2578 +0304 00001fac 204c523a +0304 00001fb0 25782044 +0304 00001fb4 41523a25 +0304 00001fb8 78005769 +0304 00001fbc 69204750 +0304 00001fc0 20526567 +0304 00001fc4 69737465 +0304 00001fc8 72732075 +0304 00001fcc 6e617661 +0304 00001fd0 696c6162 +0304 00001fd4 6c65004e +0304 00001fd8 36342053 +0304 00001fdc 5441434b +0304 00001fe0 20545241 +0304 00001fe4 43450a0a +0304 00001fe8 004e3634 +0304 00001fec 20537461 +0304 00001ff0 636b2075 +0304 00001ff4 6e617661 +0304 00001ff8 696c6162 +0304 00001ffc 6c650020 +0304 00002000 3f3f3f3f +0304 00002004 3f3f3f3f +0304 00002008 00576969 +0304 0000200c 20426163 +0304 00002010 6b206368 +0304 00002014 61696e0a +0304 00002018 0a416464 +0304 0000201c 72657373 +0304 00002020 20204261 +0304 00002024 636b4368 +0304 00002028 61696e20 +0304 0000202c 204c520a +0304 00002030 00576969 +0304 00002034 20426163 +0304 00002038 6b206368 +0304 0000203c 61696e20 +0304 00002040 756e6176 +0304 00002044 61696c61 +0304 00002048 626c6500 +0304 0000204c 5643204d +0304 00002050 6973630a +0304 00002054 0a4c6173 +0304 00002058 74206261 +0304 0000205c 6420696e +0304 00002060 73743a25 +0304 00002064 780a0a53 +0304 00002068 20636f64 +0304 0000206c 6520626c +0304 00002070 6f636b3a +0304 00002074 25780a4c +0304 00002078 20636f64 +0304 0000207c 6520626c +0304 00002080 6f636b3a +0304 00002084 25780a0a +0304 00002088 54726565 +0304 0000208c 3a25780a +0304 00002090 436f756e +0304 00002094 743a2568 +0304 00002098 2053697a +0304 0000209c 653a2578 +0304 000020a0 0a526f6f +0304 000020a4 74206e6f +0304 000020a8 64652073 +0304 000020ac 74617274 +0304 000020b0 3a25780a +0304 000020b4 4f766c20 +0304 000020b8 6e6f6465 +0304 000020bc 20737461 +0304 000020c0 72743a25 +0304 000020c4 78005643 +0304 000020c8 204d6973 +0304 000020cc 6320696e +0304 000020d0 666f2075 +0304 000020d4 6e617661 +0304 000020d8 696c6162 +0304 000020dc 6c650025 +0304 000020e0 6c64204d +0304 000020e4 42000a4f +0304 000020e8 6f545220 +0304 000020ec 50617463 +0304 000020f0 68203230 +0304 000020f4 32332d31 +0304 000020f8 322d3230 +0304 000020fc 20546573 +0304 00002100 74000000 +0304 000021f8 9421fff0 +0304 000021fc 7c0802a6 +0304 00002200 90010014 +0304 00002204 88bf4566 +0304 00002208 2c050000 +0304 0000220c 41820064 +0304 00002210 809f4520 +0304 00002214 7c032040 +0304 00002218 40810058 +0304 0000221c 907f4520 +0304 00002220 93c10008 +0304 00002224 7c7e1b78 +0304 00002228 808d8920 +0304 0000222c 80640068 +0304 00002230 4805c355 +0304 00002234 808d8920 +0304 00002238 80e40068 +0304 0000223c 7fc3f378 +0304 00002240 83c10008 +0304 00002244 80a700bc +0304 00002248 80c700cc +0304 0000224c 70a50001 +0304 00002250 70c60001 +0304 00002254 7c053000 +0304 00002258 40810018 +0304 0000225c 38a0ffff +0304 00002260 54a5f87e +0304 00002264 90bf4534 +0304 00002268 38800001 +0304 0000226c 48000008 +0304 00002270 38800000 +0304 00002274 80010014 +0304 00002278 7c0803a6 +0304 0000227c 38210010 +0304 00002280 4e800020 +0304 000023f8 3c608000 +0304 000023fc 9243453c +0304 00002400 38600000 +0304 00002404 4e800020 +0304 00002408 3f208000 +0304 0000240c b079450e +0304 00002410 3fe08017 +0304 00002414 480863e8 +0304 00002418 3ce08017 +0304 0000241c 54c5653e +0304 00002420 38850001 +0304 00002424 908749e0 +0304 00002428 3ca08000 +0304 0000242c 38855fdf +0304 00002430 908746c4 +0304 00002434 38a00002 +0304 00002438 90a746c0 +0304 0000243c 7fc4f378 +0304 00002440 4e800020 +0304 00002444 9421fff0 +0304 00002448 7c0802a6 +0304 0000244c 90010014 +0304 00002450 3ca08000 +0304 00002454 80854568 +0304 00002458 38840001 +0304 0000245c 2c0400b4 +0304 00002460 90854568 +0304 00002464 4081001c +0304 00002468 a0a30002 +0304 0000246c 2c0548a8 +0304 00002470 40820010 +0304 00002474 3860000b +0304 00002478 4805da91 +0304 0000247c 48000008 +0304 00002480 4805d80d +0304 00002484 80010014 +0304 00002488 7c0803a6 +0304 0000248c 38210010 +0304 00002490 4e800020 +0304 00002494 7f83e378 +0304 00002498 7fa5eb78 +0304 0000249c 38810020 +0304 000024a0 4802c815 +0304 000024a4 90610024 +0304 000024a8 38800000 +0304 000024ac 8061000c +0304 000024b0 48033ab0 +0304 000024b4 60000000 +0304 00002eb0 60000000 +0304 00039290 4bfc8629 +0304 00039a0c 4bfc7ead +0304 00039ac0 4bfc7df9 +0304 00039bbc 4bfc7cfd +0304 00039bc4 4bfc7cf5 +0304 0005f504 4bfa2401 +0304 0007b8c4 4bf86015 +0304 0008773c 48000040 +0304 00087cb8 4bf79c10 +0304 00087f78 4bf77c11 +0304 0016baf4 04000000 +0304 0016baf8 02000000 +0304 0016bafc 01000000 +0304 00170adc 01400000 From 47c41ebe89e82b167918d758a66cc862d086839f Mon Sep 17 00:00:00 2001 From: Rebbacus <100238547+Rebbacus@users.noreply.github.com> Date: Tue, 30 Apr 2024 16:47:04 -0400 Subject: [PATCH 2/6] move 8mb memory and dpad mapping lines to top of gzi file --- bin/gzinject/ootr.gzi | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/gzinject/ootr.gzi b/bin/gzinject/ootr.gzi index 36a23f6ea..2976cc29e 100644 --- a/bin/gzinject/ootr.gzi +++ b/bin/gzinject/ootr.gzi @@ -1,7 +1,11 @@ # ootr remapping for NACE 0000 00000000 00000001 # use 8MB memory +0304 00002eb0 60000000 # apply d-pad remappings +0304 0016baf4 04000000 +0304 0016baf8 02000000 +0304 0016bafc 01000000 # crash screen and start-up progress payload for NACE # debug font address at offset 0x05F4 is for OoT US 1.0 0304 000005f0 90000820 @@ -1211,7 +1215,6 @@ 0304 000024ac 8061000c 0304 000024b0 48033ab0 0304 000024b4 60000000 -0304 00002eb0 60000000 0304 00039290 4bfc8629 0304 00039a0c 4bfc7ead 0304 00039ac0 4bfc7df9 @@ -1222,7 +1225,4 @@ 0304 0008773c 48000040 0304 00087cb8 4bf79c10 0304 00087f78 4bf77c11 -0304 0016baf4 04000000 -0304 0016baf8 02000000 -0304 0016bafc 01000000 0304 00170adc 01400000 From 32b8a7fef22c79af2982c45681aeefb0711c5b78 Mon Sep 17 00:00:00 2001 From: Rebbacus <100238547+Rebbacus@users.noreply.github.com> Date: Sun, 26 May 2024 22:19:12 -0400 Subject: [PATCH 3/6] Have WAD generation check SHA1s and choose the right .gzi patch file --- Main.py | 41 ++++++++++++++++++++++++- bin/gzinject/ootr_jpn.gzi | 8 +++++ bin/gzinject/{ootr.gzi => ootr_usa.gzi} | 0 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 bin/gzinject/ootr_jpn.gzi rename bin/gzinject/{ootr.gzi => ootr_usa.gzi} (100%) diff --git a/Main.py b/Main.py index 715bccc57..0bddacab5 100644 --- a/Main.py +++ b/Main.py @@ -248,8 +248,47 @@ def generate_wad(wad_file: str, rom_file: str, output_file: str, channel_title: if not os.path.isfile(wad_file): raise Exception("Cannot open base WAD file.") + try: + with open(wad_file, 'rb') as wad_stream: + wad_buffer = bytearray(wad_stream.read(0xFC0)) + except FileNotFoundError as ex: + raise FileNotFoundError(f'Invalid path to Base WAD: "{input_file}"') + + wad_app1_sha1_usa = [ + [0x76, 0x3D, 0x4D, 0x3D, 0x07, 0x13, 0xE4, 0xD1, 0x0E, 0x44, 0x54, 0x0C, 0xCF, 0xA3, 0x25, 0x5E, 0x19, 0xF2, 0x8A, 0xF7], # US Wad App1 + ] + + wad_app1_sha1_jpn = [ + [0x47, 0x54, 0x6E, 0x48, 0x46, 0x7A, 0xE1, 0x4D, 0x71, 0x2B, 0x8C, 0x20, 0x7E, 0x91, 0x18, 0x21, 0x58, 0x6D, 0x10, 0x43], # JP Wad App1 + ] + + wad_app5_sha1_usa = [ + [0x7C, 0x94, 0x77, 0x69, 0x68, 0xA7, 0xE1, 0xF5, 0xFD, 0x5D, 0xC5, 0xE2, 0xB6, 0xF8, 0x32, 0xEE, 0xF4, 0x55, 0x35, 0xA0], # US Wad App5 + ] + + wad_app5_sha1_jpn = [ + [0xD1, 0x4D, 0xEF, 0x1E, 0xCE, 0xB0, 0x6D, 0xE2, 0x05, 0xA3, 0x53, 0xC4, 0xB5, 0x66, 0xFD, 0x55, 0x9C, 0x25, 0x4F, 0x1F], # JP Wad App5 + ] + + wad_patch_name = "" + wad_app1_sha1 = list(wad_buffer[0xF18:0xF2C]) + wad_app5_sha1 = list(wad_buffer[0xFA8:0xFBC]) + + if wad_app1_sha1 in wad_app1_sha1_usa: + if wad_app5_sha1 in wad_app5_sha1_usa: + wad_patch_name = "ootr_usa.gzi" + else: + raise Exception('Base WAD file is not a valid OoT USA or JPN wad.') + elif wad_app1_sha1 in wad_app1_sha1_jpn: + if wad_app5_sha1 in wad_app5_sha1_jpn: + wad_patch_name = "ootr_jpn.gzi" + else: + raise Exception('Base WAD file is not a valid OoT USA or JPN wad.') + else: + raise Exception('Base WAD file is not a valid OoT USA or JPN wad.') + gzinject_path = "./" if is_bundled() else "bin/gzinject/" - gzinject_patch_path = gzinject_path + "ootr.gzi" + gzinject_patch_path = gzinject_path + wad_patch_name if platform.system() == 'Windows': if platform.machine() == 'AMD64': gzinject_path += "gzinject.exe" diff --git a/bin/gzinject/ootr_jpn.gzi b/bin/gzinject/ootr_jpn.gzi new file mode 100644 index 000000000..8338340c5 --- /dev/null +++ b/bin/gzinject/ootr_jpn.gzi @@ -0,0 +1,8 @@ +# ootr remapping for NACJ +0000 00000000 00000001 +# use 8MB memory +0304 00002EB0 60000000 +# apply d-pad remappings +0302 0016BAF4 00000400 +0302 0016BAF8 00000200 +0302 0016BAFC 00000100 \ No newline at end of file diff --git a/bin/gzinject/ootr.gzi b/bin/gzinject/ootr_usa.gzi similarity index 100% rename from bin/gzinject/ootr.gzi rename to bin/gzinject/ootr_usa.gzi From 1841b2239ba43211f0b230e9375fee95d3d6cb5c Mon Sep 17 00:00:00 2001 From: Rebbacus <100238547+Rebbacus@users.noreply.github.com> Date: Thu, 30 May 2024 00:49:00 -0400 Subject: [PATCH 4/6] Apply review suggestion --- Main.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/Main.py b/Main.py index 0bddacab5..4d03fe498 100644 --- a/Main.py +++ b/Main.py @@ -274,18 +274,20 @@ def generate_wad(wad_file: str, rom_file: str, output_file: str, channel_title: wad_app1_sha1 = list(wad_buffer[0xF18:0xF2C]) wad_app5_sha1 = list(wad_buffer[0xFA8:0xFBC]) - if wad_app1_sha1 in wad_app1_sha1_usa: - if wad_app5_sha1 in wad_app5_sha1_usa: - wad_patch_name = "ootr_usa.gzi" - else: - raise Exception('Base WAD file is not a valid OoT USA or JPN wad.') - elif wad_app1_sha1 in wad_app1_sha1_jpn: - if wad_app5_sha1 in wad_app5_sha1_jpn: - wad_patch_name = "ootr_jpn.gzi" - else: - raise Exception('Base WAD file is not a valid OoT USA or JPN wad.') + isUsaApp1 = wad_app1_sha1 in wad_app1_sha1_usa + isUsaApp5 = wad_app5_sha1 in wad_app5_sha1_usa + isJpnApp1 = wad_app1_sha1 in wad_app1_sha1_jpn + isJpnApp5 = wad_app5_sha1 in wad_app5_sha1_jpn + + isUsaWad = isUsaApp1 and isUsaApp5 + isJpnWad = isJpnApp1 and isJpnApp5 + + if isUsaWad: + wad_patch_name = "ootr_usa.gzi" + elif isJpnWad: + wad_patch_name = "ootr_jpn.gzi" else: - raise Exception('Base WAD file is not a valid OoT USA or JPN wad.') + raise RuntimeError('Base WAD file is not a valid OoT USA or JPN wad.') gzinject_path = "./" if is_bundled() else "bin/gzinject/" gzinject_patch_path = gzinject_path + wad_patch_name From c2bbc4f37b3893232dd11a075569a9edcacd4069 Mon Sep 17 00:00:00 2001 From: Rebbacus <100238547+Rebbacus@users.noreply.github.com> Date: Thu, 30 May 2024 19:14:35 -0400 Subject: [PATCH 5/6] no more camels --- Main.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Main.py b/Main.py index 4d03fe498..906a2847e 100644 --- a/Main.py +++ b/Main.py @@ -274,17 +274,17 @@ def generate_wad(wad_file: str, rom_file: str, output_file: str, channel_title: wad_app1_sha1 = list(wad_buffer[0xF18:0xF2C]) wad_app5_sha1 = list(wad_buffer[0xFA8:0xFBC]) - isUsaApp1 = wad_app1_sha1 in wad_app1_sha1_usa - isUsaApp5 = wad_app5_sha1 in wad_app5_sha1_usa - isJpnApp1 = wad_app1_sha1 in wad_app1_sha1_jpn - isJpnApp5 = wad_app5_sha1 in wad_app5_sha1_jpn + is_usa_app1 = wad_app1_sha1 in wad_app1_sha1_usa + is_usa_app5 = wad_app5_sha1 in wad_app5_sha1_usa + is_jpn_app1 = wad_app1_sha1 in wad_app1_sha1_jpn + is_jpn_app5 = wad_app5_sha1 in wad_app5_sha1_jpn - isUsaWad = isUsaApp1 and isUsaApp5 - isJpnWad = isJpnApp1 and isJpnApp5 + is_usa_wad = is_usa_app1 and is_usa_app5 + is_jpn_wad = is_jpn_app1 and is_jpn_app5 - if isUsaWad: + if is_usa_wad: wad_patch_name = "ootr_usa.gzi" - elif isJpnWad: + elif is_jpn_wad: wad_patch_name = "ootr_jpn.gzi" else: raise RuntimeError('Base WAD file is not a valid OoT USA or JPN wad.') From d5c73f818d6d64bf91aa288f1831749c26e50051 Mon Sep 17 00:00:00 2001 From: Rebbacus <100238547+Rebbacus@users.noreply.github.com> Date: Wed, 27 Nov 2024 20:47:51 -0500 Subject: [PATCH 6/6] Include crash screen for JP WAD and allow button presses for screen advancing. --- Notes/WAD_crashscreen_patch.asm | 1827 +++++++++++++++++++++++++++++++ bin/gzinject/ootr_jpn.gzi | 1237 ++++++++++++++++++++- bin/gzinject/ootr_usa.gzi | 117 +- 3 files changed, 3129 insertions(+), 52 deletions(-) create mode 100644 Notes/WAD_crashscreen_patch.asm diff --git a/Notes/WAD_crashscreen_patch.asm b/Notes/WAD_crashscreen_patch.asm new file mode 100644 index 000000000..b3c8421f7 --- /dev/null +++ b/Notes/WAD_crashscreen_patch.asm @@ -0,0 +1,1827 @@ +# WiiVC crash draw and patches, for the Ocarina of Time Randomizer WAD 00000001.app +# powerpc-gekko-as.exe -a32 -mbig -mregnames -mgekko wiivc-crashdraw.asm +# ported from the Majora's Mask Randomizer patch +#======================================================================= +#Addr - Free +#0x05F0 - 0xD0 xx common data +#0x06C8 - 0xF8 xx-- crashReport +#0x0810 - 0xB0 xxxx +#0x08F8 - 0xC8 xxxx +#0x09F8 - 0xC8 xx-- +#0x0AF8 - 0xC8 xxx- +#0x0BF8 - 0xC8 xxxx +#0x0CF8 - 0xC8 xx-- +#0x0DF8 - 0xC8 xxxx +#0x0EF8 - 0x2C8 xx-- drawchar and printVA +#0x11F8 - 0xC8 xx-- printStr +#0x12F8 - 0xC8 xx-- N64Regspage +#0x13F8 - 0xC8 xxx- +#0x1550 - 0x70 xxxx +#0x1630 - 0x90 xxxx +#0x1730 - 0x90 xxx- +#0x1830 - 0x90 xxxx +#0x18F8 - 0xC8 xxxx +#0x19F8 - 0x1C8 xxxx N64Stack +#0x1BF8 - 0xC8 xxxx +#0x1CF8 - 0x4C8 xx-- strings +#0x21F8 - 0xC8 xxx- pollController +#0x22F8 - 0xC8 ---- +#0x23F8 - 0xC8 xx-- hooks +# +#======================================================================= + +.set chunk0RAM, 0x4000 +.set chunk0ROM, 0x0100 +.set chunk1RAM, 0x7020 +.set chunk1ROM, 0x25E0 + +.set chunk0offset, chunk0RAM - chunk0ROM +.set chunk1offset, chunk1RAM - chunk1ROM + +.set ButtonA, 0x00000001 +.set ButtonB, 0x00000002 +.set ButtonX, 0x00000004 +.set ButtonY, 0x00000008 +.set ButtonStart, 0x00000020 +.set ShoulderL, 0x00000080 +.set ShoulderR, 0x00000100 +.set ButtonZ, 0x00000600 +.set CLeft, 0x00008000 +.set CRight, 0x00010000 +.set Cdown, 0x00020000 +.set CUp, 0x00040000 +.set DPadLeft, 0x00080000 +.set DPadRight, 0x00100000 +.set DpadDown, 0x00200000 +.set DpadUp, 0x00400000 + +# systemClass { +# 0x10 = *cpu, +# 0x18 = *ramclass(0x4=*ram), +# 0x68 = *controllerheap?, (0xBC,0xCC = button bitfields) +# 0x1C = *romstuff?(0x20=*rom), +# } + +#for errorDisplayPrintMessage +#startUpStr { +#0x00 = *strStruct +#} +#strStruct { +#0x00 = word (hash?) +#0x04 = word (string count) +#0x08 = *string +#} + +#.set FrameList, 0x00178320 #framebuffer pointers (+0x04) + +#========================================================== +# OoT US sets +#========================================================== + +.set memcpy, 0x00004338 #(*dest, *src, int size) +.set __fill_mem, 0x00004388 #(*dest, int fillbyte, int size) + +.set cpuExecuteUpdate, 0x00032BB4 +.set cpuExecuteCall, 0x00039DC0 +.set cpuFindFunction, 0x0003DC68 + +.set updateControllerInput, 0x00062484 #(*controllerheap) + +.set errorDisplayPrintMessage, 0x00063A64 #(**startUpStr string, int Y 78, ldarg, RGBA8* colour) +.set errorDisplayPrint, 0x00063B8C +.set errorDisplayShow, 0x00063E08 + +.set xlFileGet, 0x000801F4 +.set PPCHalt, 0x000893F0 #JP = 000893E4 +.set DCStoreRange, 0x0008B690 #(*dest, int size) +.set OSDumpContext, 0x0008BF74 +.set UnhandledException, 0x0008C6E4 +.set OSUEhookend, UnhandledException + 0x18 +.set OSGetTime, 0x00093674 +.set OSGetTick, 0x0009368C +.set GXAbortFrame, 0x0009FAC8 + +.set __save_gpr, 0x000152E30 #(r14)-0x48 +.set __restore_gpr, 0x00152E7C #(r14)-0x48 + +.set sStringDraw, 0x001746E8 +.set WVCLoadLogoStrStruct, 0x1749A8 + 0x34 + +.set WVCLoadLogoStrPointer, 0x001746bc + 8 #set at load-time +.set WVCLoadLogoStrCount, 0x001746bc + 0x4 +.set WVCLoadLogoStrVAarg, 0x001749A8 + 0x38 + +.set WadMainThreadAddr, 0x801DCD98 + +.set smallDataArea, 0x002647C0 #r13 +.set systemClass, 0x0025D0E0 #r13 -0x76E0 + +.set outputFBptr, 0x0025D974 #r13 -0x6E4C current framebuffer scanout +.set outputFBptr0, 0x0025D978 #r13 -0x6E48 frame 0? +.set outputFBptr1, 0x0025D97C #r13 -0x6E44 frame 1? + +.set cpustructHigh, 0x0010 #for some cpu struct reads +.set loadUpStrCompare, 0x48A8 + + +#========================================================== +# OoT JP sets +#========================================================== + +#.set memcpy, 0x00004338 #(*dest, *src, int size) +#.set __fill_mem, 0x00004388 #(*dest, int fillbyte, int size) +# +#.set cpuExecuteUpdate, 0x00032B98 +#.set cpuExecuteCall, 0x00039DA4 +#.set cpuFindFunction, 0x0003DC4C +# +#.set updateControllerInput, 0x000623F4 #(*controllerheap) +# +#.set errorDisplayPrintMessage, 0x000639D4 #(**startUpStr string, int Y 78, ldarg, RGBA8* colour) +#.set errorDisplayPrint, 0x00063AFC +#.set errorDisplayShow, 0x00063D78 +# +#.set xlFileGet, 0x000801E8 +#.set PPCHalt, 0x000893E4 +#.set DCStoreRange, 0x0008B684 #(*dest, int size) +#.set OSDumpContext, 0x0008BF68 +#.set UnhandledException, 0x0008C6D8 +#.set OSUEhookend, UnhandledException + 0x18 +#.set OSGetTime, 0x00093668 +#.set OSGetTick, 0x00093680 +#.set GXAbortFrame, 0x0009FABC +# +#.set __save_gpr, 0x00152E24 #(r14)-0x48 +#.set __restore_gpr, 0x00152E70 #(r14)-0x48 +# +#.set sStringDraw, 0x001746E8 - 0x60 +#.set WVCLoadLogoStrStruct, 0x001749A8 + 0x34 - 0x60 +# +#.set WVCLoadLogoStrPointer, 0x001746bc + 8 - 0x60 +#.set WVCLoadLogoStrCount, 0x001746bc + 0x4 - 0x60 +#.set WVCLoadLogoStrVAarg, 0x001749A8 + 0x38 - 0x60 +# +#.set WadMainThreadAddr, 0x801DCC98 +# +#.set smallDataArea, 0x002647C0 - 0x100 #r13 +#.set systemClass, 0x0025D0E0 - 0x100 #r13 -0x76E0 +# +#.set outputFBptr, 0x0025D874 #r13 -0x6E4C current framebuffer scanout +#.set outputFBptr0, 0x0025D878 #r13 -0x6E48 frame 0? +#.set outputFBptr1, 0x0025D87C #r13 -0x6E44 frame 1? +# +#.set cpustructHigh, 0x0001 #for some cpu struct reads +#.set loadUpStrCompare, 0x4848 + + +#==================================================== +.org 0x44F0 - chunk0offset #0x05F0 +faultctxt: +FBpointer: .long 0x90000820 +N64Fontpointer: .long 0x00104C18 #105258 = US1.2 +FBSizeX: .short 0x0500 +FBSizeY: .short 0x03C0 +XStart: .short 0x0058 +XEnd: .short 0x04A4 +YStart: .short 0x0030 +YEnd: .short 0x037C +CursorX: .short 0x0058 #cursorX +CursorY: .short 0x0030 #cursorY +FontColorFG: .short 0xFF80 #YUVwhite +FontColorBG: .short 0x1F80 #YUVblack +FontPadding: .short 0x0000 #signed +ExceptionID: .short 0x0000 +N64cpuPointer: .long 0x009F6D64 #gets overwritten +CrashSSR0: .long 0x00000000 +CrashLR: .long 0x00000000 +CrashDAR: .long 0x00000000 +ControllerPollTime: .long 0x00 +CrashNote0: .long 0x00 +CrashNote1: .long 0x00 +CrashThread: .long 0x00 +N64Stackpointer: .long 0x00 +Timer: .long 0x00 +N64RAM: .long 0x80F64120 +LastBadN64Inst: .long 0x00000000 +CrashArgHeap: .long 0x00000000 +CrashGPRBuffer: .long 0x00000000 +CrashN64RegBuffer: .long 0x00000000 +CrashN64StackBuffer: .long 0x00000000 +CrashWiiStackBuffer: .long 0x00000000 +CrashMiscBuffer: .long 0x00000000 +CrashRAMViewBuffer: .long 0x00000000 +MBLoaded: .long 0x00000000 +CrashPageCurrent: .byte 0x00 +CrashPage1Status: .byte 0x00 #signed +CrashPage2Status: .byte 0x00 #signed +CrashPage3Status: .byte 0x00 #signed +CrashPage4Status: .byte 0x00 #signed +CrashPage5Status: .byte 0x00 #signed +AcceptInput: .byte 0x00 +CtxtEnd: .byte 0xFF +StartupTimer: .long 0x00 +#.align 2 + +#======================================= +.org 0x45C8 - chunk0offset #0x06C8 +crashReport: +stwu sp, -0x20(sp) +mflr r0 +stw r0, 0x24(sp) + +bl GXAbortFrame - chunk0offset - $ + +lis r31, 0x8000 + +lwz r4, chunk0offset + CrashThread@l(r31) +cmpi 0, r4, 0 +bne crashReportSetUpDone +lwz r3, -0x76E0(r13) #gSystem +mr r4, r26 #thread +bl crashSaveGPR + +crashReportSetUpDone: +lbz r4, chunk0offset + CrashPageCurrent@l(r31) +cmpi 0, r4, 1 +stw r4, 0x08(sp) +blt crashReportSplash + +bl printBGRec +addi r4, sp, 0x08 +addi r3, r31, chunk0offset + strPressA@l +bl printStr + +lbz r4, chunk0offset + CrashPageCurrent@l(r31) +cmpi 0, r4, 1 +beq crashReportCheckPage1 +cmpi 0, r4, 2 +beq crashReportCheckPage2 +cmpi 0, r4, 3 +beq crashReportCheckPage3 +cmpi 0, r4, 4 +beq crashReportCheckPage4 +cmpi 0, r4, 5 +beq crashReportCheckPage5 + +crashReportSplash: +bl crashSplash +b crashReportSetUpDone + +crashReportCheckPage1: + +bl crashReportN64Rregs +b crashReportSetUpDone + +crashReportCheckPage2: +bl crashReportN64Stack +b crashReportSetUpDone + +crashReportCheckPage3: +bl crashReportWiiGPR +b crashReportSetUpDone + +crashReportCheckPage4: +bl crashReportWiiStack +b crashReportSetUpDone + +crashReportCheckPage5: +bl crashReportWiiMisc +b crashReportSetUpDone + +bl PPCHalt - chunk0offset - $ + +lwz r0, 0x24(sp) +mtlr r0 +addi sp, sp, 0x20 +blr +#==================================================== +.org 0x4710 - chunk0offset #0x0810 +printNewline: #() +lhz r4, chunk0offset + XStart@l(r31) +lhz r5, chunk0offset + CursorY@l(r31) +sth r4, chunk0offset + CursorX@l(r31) +addi r5, r5, 0x10 +sth r5, chunk0offset + CursorY@l(r31) +blr +#============================= +printResetCursor: #() +lhz r3, chunk0offset + XStart@l(r31) +lhz r4, chunk0offset + YStart@l(r31) +sth r3, chunk0offset + CursorX@l(r31) +sth r4, chunk0offset + CursorY@l(r31) +blr +#==================================== +printClearPad: #() +li r3, 0 +#fall through to setpad +#============================= +printSetPad: #(half-signed) +sth r3, chunk0offset + FontPadding@l(r31) +blr +#============================= +printHex32: #() +li r4, 8 +b printNibble +#================== +printHex16: +li r4, 4 +slwi r3, r3, 16 +b printNibble +#================== +printHex8: +li r4, 2 +slwi r3, r3, 24 +#fall through to printNibble +#================== +printNibble: #dont directly call this +stwu sp, -0x10(sp) +mflr r0 +stw r0, 0x14(sp) +stw r29, 0x0C(sp) +stw r28, 0x08(sp) + +mr r29, r3 +mr r28, r4 + +printNibble_loop: +srwi r3, r29, 28 +bl drawChar +slwi r29, r29, 4 +addi r28, r28, -1 +cmpi 0, r28, 0 +bgt 0, printNibble_loop + +lwz r28, 0x08(sp) +lwz r29, 0x0C(sp) +lwz r0, 0x14(sp) +mtlr r0 +addi sp, sp, 0x10 +blr +#============================= +.org 0x47F8 - chunk0offset #0x08F8 +printBGRec: #() +stwu sp, -0x20(sp) +mflr r0 +stw r0, 0x24(sp) + +lhz r3, chunk0offset + FontColorBG@l(r31) +slwi r4, r3, 16 +or r5, r3, r4 + +lwz r3, chunk0offset + FBpointer@l(r31) +addi r6, r3, 0x6E00 +addi r6, r6, 0x6E50 + +li r4, 400 #Ylines + +CSRYloop: +li r3, 286 #Xlines + +CSRXloop: +stw r5, 0(r6) +addi r6, r6, 4 +addi r3, r3, -1 +cmpi 0, r3, 0 +bgt CSRXloop + + +addi r4, r4, -1 +addi r6, r6, 136 +cmpi 0, r4, 0 +bgt CSRYloop + +bl printResetCursor +bl printClearPad + +lwz r0, 0x24(sp) +mtlr r0 +addi sp, sp, 0x20 +blr +#==================================== +flushScreen: +stwu sp, -0x10(sp) +mflr r0 +stw r0, 0x14(sp) + +lwz r3, chunk0offset + FBpointer@l(r31) +lis r4, 0x0009 +ori r4, r4, 0x6000 +bl DCStoreRange - chunk0offset - $ + +lwz r0, 0x14(sp) +mtlr r0 +addi sp, sp, 0x10 +blr +#==================================== +crashReportSetArgBuffer: #(*frame) +lwz r5, -0x6E48(r13) +cmpw 0, r3, r5 +bne crsab_setHeap +lwz r5, -0x6E44(r13) + +crsab_setHeap: +stw r5, chunk0offset + CrashArgHeap@l(r31) +blr +#============================= +.org 0x48F8 - chunk0offset #0x9F8 +crashReportWiiGPR: +stwu sp, -0x10(sp) +mflr r0 +stw r0, 0x14(sp) + +lbz r4, chunk0offset + CrashPage3Status@l(r31) +extsb r6, r4 +cmpi 0, r6, 0 +bge processWiiGPR +blt noWiiGPR + + +processWiiGPR: +li r5, -1 +stb r5, chunk0offset + CrashPage3Status@l(r31) + +li r3, -2 +bl printSetPad + +lwz r4, chunk0offset + CrashGPRBuffer@l(r31) +addi r3, r31, chunk0offset + strWiiGPRPage@l +bl printStr +bl flushScreen + +li r4, 1 +stb r4, chunk0offset + CrashPage3Status@l(r31) +li r3, 12 +b crashReportWiiGPRfinish + +noWiiGPR: +addi r3, r31, chunk0offset + strWiiGPRBroke@l +li r4, 0 +bl printStr +bl flushScreen +li r3, 6 + + +crashReportWiiGPRfinish: +li r4, 1 +bl crashTimer + +li r3, 4 +stb r3, chunk0offset + CrashPageCurrent@l(r31) + +lwz r0, 0x14(sp) +mtlr r0 +addi sp, sp, 0x10 +blr +#============================ +.org 0x49F8 - chunk0offset #0x0AF8 +crashTimer: #(int seconds, int drawToggle) +stwu sp, -0x20(sp) +mflr r0 +stw r0, 0x24(sp) +stw r30, 0x08(sp) +stw r29, 0x0C(sp) + +mr r30, r3 +mr r29, r4 + +li r6, 0x0030 +sth r6, chunk0offset + CursorY@l(r31) + +crashTimerLoop: +li r5, 0x0424 +sth r5, chunk0offset + CursorX@l(r31) #set timer pos + +cmpi 0, r29, 0 +beq crashTimerSkipDraw + +bl drawChar +bl flushScreen + +crashTimerSkipDraw: + +crashTimerCount: +bl OSGetTime - chunk0offset - $ +slwi r3, r3, 10 +srwi r4, r4, 22 +or r3, r3, r4 + +bl PollController +cmpi 0, r4, 0 +bne crashTimerExit + +lwz r5, chunk0offset + Timer@l(r31) +srwi r3, r3, 4 +cmp 0, r3, r5 +ble crashTimerCount + +stw r3, chunk0offset + Timer@l(r31) + +addi r30, r30, -1 +cmpi 0, r30, 0 +ble crashTimerExit +mr r3, r30 +b crashTimerLoop + + +crashTimerExit: + +lwz r29, 0x0C(sp) +lwz r30, 0x08(sp) +lwz r0, 0x24(sp) +mtlr r0 +addi sp, sp, 0x20 +blr +#======================================= +.org 0x4AF8 - chunk0offset #0x0BF8 +crashSaveGPR: #(*gSystem, *thread) +stwu sp, -0x10(sp) +mflr r0 +stw r0, 0x14(sp) + +mr r30, r4 +stw r4, chunk0offset + CrashThread@l(r31) +lwz r5, 0x0018(r3) +lwz r7, 0x0010(r3) +lwz r6, 0x0004(r5) +stw r7, chunk0offset + N64cpuPointer@l(r31) +stw r6, chunk0offset + N64RAM@l(r31) +lwz r3, -0x6FF4(r13) +stw r3, chunk0offset + FBpointer@l(r31) + +bl crashReportSetArgBuffer + +mfspr r6, dar +lwz r4, 0x0198(r30) #SRR0 +lwz r5, 0x0084(r30) #LR +stw r6, chunk0offset + CrashDAR@l(r31) +stw r4, chunk0offset + CrashSSR0@l(r31) +stw r5, chunk0offset + CrashLR@l(r31) + +bl checkSetN64Stack + +lwz r3, chunk0offset + CrashArgHeap@l(r31) +li r4, 0 +li r5, 0x5000 +bl __fill_mem - chunk0offset - $ + +lwz r11, chunk0offset + CrashArgHeap@l(r31) +li r10, 4 +stw r30, 0x00(r11) +addi r30, r30, -4 + +#saving the Wii GPRs here in case another crash occurs and changes the saved values + +gprLoop: +lwzx r6, r10, r30 +stwx r6, r10, r11 +addi r10, r10, 4 +cmpi 0, r10, 32*4 +blt gprLoop + +lwz r4, chunk0offset + CrashSSR0@l(r31) +lwz r5, chunk0offset + CrashLR@l(r31) +lwz r6, chunk0offset + CrashDAR@l(r31) + +stw r4, 0x84(r11) +stw r5, 0x88(r11) +stw r6, 0x8C(r11) + +stw r11, chunk0offset + CrashGPRBuffer@l(r31) +addi r30, r11, 0x90 +stw r30, chunk0offset + CrashArgHeap@l(r31) + +#WiiGPRPage size 0x90 +lwz r0, 0x14(sp) +mtlr r0 +addi sp, sp, 0x10 +blr +#======================================= +.org 0x4BF8 - chunk0offset #0x0CF8 +crashSplash: +stwu sp, -0x10(sp) +mflr r0 +stw r0, 0x14(sp) + +li r5, 0x01C8 +li r4, 0x0080 +sth r5, chunk0offset + XStart@l(r31) +sth r4, chunk0offset + YStart@l(r31) +bl printResetCursor + +addi r3, r31, chunk0offset + strCrashSplash@l +li r4, 0 +bl printStr + +bl flushScreen + +li r5, 0x0058 +li r4, 0x0030 +sth r5, chunk0offset + XStart@l(r31) +sth r4, chunk0offset + YStart@l(r31) +bl printResetCursor + +li r3, 4 +li r4, 0 +bl crashTimer + +li r5, 1 +stb r5, chunk0offset + CrashPageCurrent@l(r31) + +li r3, 1 +stb r3, chunk0offset + AcceptInput@l(r31) + +lwz r0, 0x14(sp) +mtlr r0 +addi sp, sp, 0x10 +blr +#===================================== +.org 0x4CF8 - chunk0offset #0x0DF8 +N64RegArgs: +#CrashN64RegBuffer +lwz r11, chunk0offset + CrashArgHeap@l(r31) + +lhz r3, chunk0offset + ExceptionID@l(r31) +lwz r4, chunk0offset + CrashThread@l(r31) +lwz r5, chunk0offset + CrashSSR0@l(r31) +lwz r6, chunk0offset + CrashLR@l(r31) +lwz r7, chunk0offset + CrashDAR@l(r31) + +stw r11, chunk0offset + CrashN64RegBuffer@l(r31) +stw r3, 0x00(r11) +stw r4, 0x04(r11) +stw r5, 0x08(r11) +stw r6, 0x0C(r11) + +lwz r10, chunk0offset + N64cpuPointer@l(r31) +stw r7, 0x10(r11) +lwz r3, 0(r10) #status +lwz r4, 0x20(r10) #last function jumped +lwz r5, 0x30(r10) #last RA set + +stw r3, 0x14(r11) +stw r4, 0x18(r11) +stw r5, 0x1C(r11) + +li r7, 0 +addi r8, r10, 0x54 #cpu +addi r9, r11, 0x20 #argbuffer + +N64RegLoop: +lwz r3, 0(r8) +stw r3, 0(r9) +addi r7, r7, 1 +addi r8, r8, 0x08 +addi r9, r9, 0x04 +cmpi 0, r7, 31 +blt N64RegLoop + +lwz r6, 0x2C(r10) #node +lwz r3, 0x04(r6) #ppc addr +lwz r4, 0x10(r6) #n64 start +lwz r5, 0x14(r6) #n64 end + +stw r6, 0x9C(r11) +stw r3, 0xA0(r11) +stw r4, 0xA4(r11) +stw r5, 0xA8(r11) + +lwz r3, 0x24(r6) +lwz r4, 0x2C(r6) + +addi r8, r11, 0xB4 + +stw r3, 0xAC(r11) +stw r4, 0xB0(r11) + +stw r8, chunk0offset + CrashArgHeap@l(r31) + +blr +#===================================== +.org 0x4DF8 - chunk0offset #0x0EF8 +drawChar: #(char) +stwu sp, -0x30(sp) +mflr r0 +stw r0, 0x34(sp) + +addi r11, sp, 0x30 +bl __save_gpr + 0x28 - chunk0offset - $ + +lwz r0, chunk0offset + FBpointer@l(r31) +lhz r4, chunk0offset + CursorX@l(r31) +lhz r5, chunk0offset + CursorY@l(r31) +add r0, r4, r0 +mulli r5, r5, 1280 #cursor Y x framebufferX size for Y position +nop +add r30, r5, r0 #framebuffer target for tile + + +lwz r11, chunk0offset + N64Fontpointer@l(r31) +lwz r6, chunk0offset + N64RAM@l(r31) +andi. r9, r3, 0x0004 +add r11, r11, r6 +add r11, r9, r11 #add shift +andi. r5, r3, 0x00FF +srwi r9, r5, 3 #tile >>3 +slwi r4, r9, 6 #<<6 +add r29, r4, r11 #final tilepointer + + +andi. r0, r3, 0x0003 #mask amount +li r4, 1 +slw r5, r4, r0 +slwi r28, r5, 28 #final tile mask + +lhz r27, chunk0offset + FontColorFG@l(r31) +lhz r26, chunk0offset + FontColorBG@l(r31) +li r25, 0x0008 #outloop count + +mr r7, r30 #work framebuffer target + +drawChar_outerloopstart: +lwz r8, 0x0000(r29) #tileword +mr r6, r28 #work mask +li r24, 0x0008 #inloop count + +drawChar_innerloopstart: +and r0, r8, r6 +cmpi 0, r0, 0 +beq 0, drawChar_drawblack +drawChar_drawwhite: +sth r27, 0(r7) +sth r27, 2(r7) +sth r27, 1280(r7) +sth r27, 1282(r7) +b drawChar_afterdraw + +drawChar_drawblack: +sth r26, 0(r7) +sth r26, 2(r7) +sth r26, 1280(r7) +sth r26, 1282(r7) + +drawChar_afterdraw: +srwi r6, r6, 4 #shift mask +addi r24, r24, -1 #decrement inloop +addi r7, r7, 0x0004 #advance workfbX +cmpi 0, r24, 0 +bgt drawChar_innerloopstart + +addi r25, r25, -1 #decrement outloop +addi r29, r29, 0x0008 #advance tile pointer +addi r30, r30, 2560 #advance framebuffer line pointer +mr r7, r30 +cmpi 0, r25, 0 +bgt drawChar_outerloopstart + +lhz r4, chunk0offset + CursorX@l(r31) +lha r6, chunk0offset + FontPadding@l(r31) +addi r5, r4, 0x0020 +add r5, r5, r6 +sth r5, chunk0offset + CursorX@l(r31) #advance cursor X + +addi r11, sp, 0x30 +bl __restore_gpr + 0x28 - chunk0offset - $ + +lwz r0, 0x34(sp) +mtlr r0 +addi sp, sp, 0x30 +blr + +#==================================== +printVA: #(argchar, *argarray, int argcount) +stwu sp, -0x30(sp) +mflr r0 +stw r0, 0x34(sp) + +cmpi 0, r3, 0x78 # x +beq printVA_hex + +cmpi 0, r3, 0x6C # l +beq printVA_hex + +cmpi 0, r3, 0x68 # h +beq printVA_half + +cmpi 0, r3, 0x62 # b +beq printVA_byte + +cmpi 0, r3, 0x73 # s +beq printVA_str + +cmpi 0, r3, 0x70 # p +beq printVA_pad + +cmpi 0, r3, 0x25 # % +bne printVA_finish +bl drawChar +b printVA_finish + +printVA_pad: +cmpi 0, r4, 0 +beq printVA_finish +slwi r6, r5, 2 +lwzx r3, r4, r6 +bl printSetPad +b printVA_finish + +printVA_hex: +cmpi 0, r4, 0 +beq printVA_finish +slwi r6, r5, 2 +lwzx r3, r4, r6 +bl printHex32 +b printVA_finish + +printVA_half: +cmpi 0, r4, 0 +beq printVA_finish +slwi r6, r5, 2 +lwzx r3, r4, r6 +bl printHex16 +b printVA_finish + +printVA_byte: +cmpi 0, r4, 0 +beq printVA_finish +slwi r6, r5, 2 +lwzx r3, r4, r6 +bl printHex8 +b printVA_finish + +printVA_str: +cmpi 0, r4, 0 +beq printVA_finish +slwi r6, r5, 2 +lwzx r3, r4, r6 +li r4, 0 +bl printStr + +printVA_finish: +lwz r0, 0x34(sp) +mtlr r0 +addi sp, sp, 0x30 +blr + + +#==================================== +.org 0x50F8 - chunk0offset #0x11F8 +printStr: #(*str, *argarray) +stwu sp, -0x30(sp) +mflr r0 +stw r0, 0x34(sp) + +addi r11, sp, 0x30 +bl __save_gpr + 0x34 - chunk0offset - $ + +mr r30, r3 +mr r29, r4 +li r28, 0 #arg incrementer + +printStr_loop: +lbz r3, 0(r30) +cmpi 0, r3, 0 +beq printStr_finish + +cmpi 0, r3, 0x0A #newLine byte +beq printStr_newLine + +cmpi 0, r3, 0x25 # % byte +bne printStr_char + +lbz r3, 0x01(r30) +mr r4, r29 +mr r5, r28 +bl printVA +addi r30, r30, 1 +addi r28, r28, 1 +b printStr_increment + +printStr_char: +bl drawChar +b printStr_increment + + +printStr_newLine: +bl printNewline + + +printStr_increment: +addi r30, r30, 1 +b printStr_loop + +printStr_finish: + +addi r11, sp, 0x30 +bl __restore_gpr + 0x34 - chunk0offset - $ + +lwz r0, 0x34(sp) +mtlr r0 +addi sp, sp, 0x30 +blr +#===================================== +.org 0x51F8 - chunk0offset #0x12F8 +crashReportN64Rregs: +stwu sp, -0x10(sp) +mflr r0 +stw r0, 0x14(sp) + +lbz r4, chunk0offset + CrashPage1Status@l(r31) +extsb r6, r4 +cmpi 0, r6, 0 +blt N64RegsBroken +bgt N64RegsPrint + +li r5, -1 +stb r5, chunk0offset + CrashPage1Status@l(r31) +bl N64RegArgs + +N64RegsPrint: +li r3, -2 +bl printSetPad +lwz r4, chunk0offset + CrashN64RegBuffer@l(r31) +addi r3, r31, chunk0offset + strN64RegistersPage@l +bl printStr +bl flushScreen +li r5, 1 +stb r5, chunk0offset + CrashPage1Status@l(r31) +li r3, 12 +b N64Regsfinish + +N64RegsBroken: +addi r3, r31, chunk0offset + strN64RegisterBroke@l +li r4, 0 +bl printStr +bl flushScreen +li r3, 6 + +N64Regsfinish: +li r4, 1 +bl crashTimer +li r5, 2 +stb r5, chunk0offset + CrashPageCurrent@l(r31) + +lwz r0, 0x14(sp) +mtlr r0 +addi sp, sp, 0x10 +blr +#======================================= +.org 0x52F8 - chunk0offset #0x13F8 +crashWiiStack: +stwu sp, -0x20(sp) +mflr r0 +stw r0, 0x24(sp) +stw r30, 0x08(sp) +stw r29, 0x0C(sp) + +addi r3, r31, chunk0offset + strWiiStack@l +li r4, 0 +bl printStr + +lwz r5, chunk0offset + CrashGPRBuffer@l(r31) +li r29, 0 +lwz r30, 0x08(r5) +#lwz r30, chunk0offset + CrashThread@l(r31) +li r29, 0 + +crashWiiStackLoop: +mr r3, r30 +bl printHex32 +li r3, 0x20 +bl drawChar + +lwz r3, 0x00(r30) +bl printHex32 +li r3, 0x20 +bl drawChar + +lwz r3, 0x04(r30) +bl printHex32 +bl printNewline + +lwz r5, 0x00(r30) +li r4, -1 +cmpw r5, r4 +beq crashWiiStackfinish +mr r30, r5 +addi r29, r29, 1 +cmpi 0, r29, 13 +blt crashWiiStackLoop + + +crashWiiStackfinish: +lwz r29, 0x0C(sp) +lwz r30, 0x08(sp) +lwz r0, 0x24(sp) +mtlr r0 +addi sp, sp, 0x20 +blr +#===================================== +.org 0x5450 - chunk0offset #0x1550 +crashReportWiiStack: +stwu sp, -0x10(sp) +mflr r0 +stw r0, 0x14(sp) + +lbz r4, chunk0offset + CrashPage4Status@l(r31) +extsb r6, r4 +cmpi 0, r6, 0 +blt WiiStackBroken + +li r5, -1 +stb r5, chunk0offset + CrashPage4Status@l(r31) +bl crashWiiStack +li r5, 1 +stb r5, chunk0offset + CrashPage4Status@l(r31) +li r3, 12 +b WiiStackfinish + +WiiStackBroken: +addi r3, r31, chunk0offset + strWiiStackBroke@l +li r4, 0 +bl printStr +bl flushScreen +li r3, 6 + +WiiStackfinish: +li r4, 1 +bl crashTimer + +li r3, 5 +stb r3, chunk0offset + CrashPageCurrent@l(r31) + +lwz r0, 0x14(sp) +mtlr r0 +addi sp, sp, 0x10 +blr + + +#======================================= +.org 0x5530 - chunk0offset #0x1630 +crashReportN64Stack: +stwu sp, -0x10(sp) +mflr r0 +stw r0, 0x14(sp) + +lbz r4, chunk0offset + CrashPage2Status@l(r31) +extsb r6, r4 +cmpi 0, r6, 0 +blt N64StackBroken + +li r5, -1 +stb r5, chunk0offset + CrashPage2Status@l(r31) +bl crashN64Stack +li r5, 1 +stb r5, chunk0offset + CrashPage2Status@l(r31) +li r3, 12 +b N64Stackfinish + +N64StackBroken: +addi r3, r31, chunk0offset + strN64StackBroke@l +li r4, 0 +bl printStr +bl flushScreen +li r3, 6 + +N64Stackfinish: +li r4, 1 +bl crashTimer +li r5, 3 +stb r5, chunk0offset + CrashPageCurrent@l(r31) + +lwz r0, 0x14(sp) +mtlr r0 +addi sp, sp, 0x10 +blr +#======================================= +.org 0x5630 - chunk0offset #0x1730 +checkSetN64Stack: #() return int N64stack +lwz r4, chunk0offset + CrashSSR0@l(r31) +lwz r5, chunk0offset + N64cpuPointer@l(r31) +lis r6, 0x801D +ori r6, r6, 0xCD98 #the main thread +cmp 0, r4, r5 +ble CNSstackFromCPU + +lwz r3, 0x7C(r6) +b CNSsetStack + +CNSstackFromCPU: +lwz r3, 0x0134(r5) + +CNSsetStack: +stw r3, chunk0offset + N64Stackpointer@l(r31) + +blr +#======================================= +getN64TraceStart:#() return int N64addr +lwz r7, chunk0offset + N64cpuPointer@l(r31) +lwz r6, 0x002C(r7) #get recompnode +lwz r3, 0x0030(r7) #get RA +lwz r4, 0x0010(r6) #nodestartaddr +lwz r5, 0x0014(r6) #nodeendaddr +cmp 0, r3, r4 #cmp cpuRA, nodestart +blt GNTSusefunc +cmp 0, r3, r5 #cmp cpuRA, nodeEnd +blt GNTSfinish + +GNTSusefunc: +lwz r3, 0x0020(r7) #get cpu start + +GNTSfinish: +blr +#======================================= +.org 0x5730 - chunk0offset #0x1830 CHECK +getN64RAfromrecomp: #(*ppcHeapAddr) return N64Addr or zero +lwz r5, chunk0offset + N64cpuPointer@l(r31) +addis r6, r5, cpustructHigh #cpu's aidevice differs between US and JP +lwz r4, 0x0F60(r6) #recompheapstart +cmp 0, r3, r4 +blt GNRFRreturnzero +lwz r5, chunk0offset + N64RAM@l(r31) +cmp 0, r3, r5 +bgt GNRFRreturnzero +andi. r6, r3, 0x0003 +cmpi 0, r6, 0 +bne GNRFRreturnzero + + +GNRFRoriscan: +lwz r5, 0(r3) +srwi r6, r5, 16 +cmpi 0, r6, 0x60E7 #is ori r7 r7? +addi r3, r3, -4 +bne GNRFRoriscan +andi. r7, r5, 0xFFFF + +GNRFRlisscan: +lwz r5, 0(r3) +srwi r6, r5, 16 +cmpi 0, r6, 0x3CE0 #is lis r7? +addi r3, r3, -4 +bne GNRFRlisscan +slwi r8, r5, 16 + +or r3, r7, r8 +cmpw 0, r3, r31 +addis r4, r31, 0x0080 +blt GNRFRreturnzero +cmpw 0, r3, r4 +bge GNRFRreturnzero +andi. r6, r3, 0x0003 +cmpi 0, r6, 0 +bne GNRFRreturnzero + +b GNRFRfinish + +GNRFRreturnzero: +li r3, 0 + +GNRFRfinish: +blr +#======================================= +.org 0x57F8 - chunk0offset #0x18F8 +N64StackValidAddr: #(unused, int n64Addr) return true/false, N64Addr +addis r5, r31, 0x0080 +cmpw 0, r4, r31 +blt N64SVAreturnZero +cmpw 0, r4, r5 +bge N64SVAreturnZero + +andi. r6, r4, 0x0003 +cmpi 0, r6, 0 +bne N64SVAreturnZero +li r3, 1 +b N64SVAfinish + +N64SVAreturnZero: +li r3, 0 + +N64SVAfinish: +blr +#======================================= +crashReportWiiMisc: +stwu sp, -0x10(sp) +mflr r0 +stw r0, 0x14(sp) + +lbz r4, chunk0offset + CrashPage5Status@l(r31) +extsb r6, r4 +cmpi 0, r6, 0 +blt ReportWiiMiscBroken +bgt ReportWiiMiscPrint + +li r5, -1 +stb r5, chunk0offset + CrashPage5Status@l(r31) +bl WiiMiscArgs + +ReportWiiMiscPrint: +li r3, -2 +bl printSetPad +lwz r4, chunk0offset + CrashMiscBuffer@l(r31) +addi r3, r31, chunk0offset + strMiscInfo@l +bl printStr +bl flushScreen +li r5, 1 +stb r5, chunk0offset + CrashPage5Status@l(r31) +li r3, 12 +b ReportWiiMiscfinish + +ReportWiiMiscBroken: +addi r3, r31, chunk0offset + strMiscInfoBroke@l +li r4, 0 +bl printStr +bl flushScreen +li r3, 6 + +ReportWiiMiscfinish: +li r4, 1 +bl crashTimer +li r5, 1 +stb r5, chunk0offset + CrashPageCurrent@l(r31) + +lwz r0, 0x14(sp) +mtlr r0 +addi sp, sp, 0x10 +blr +#======================================= +.org 0x58F8 - chunk0offset #0x19F8 +crashN64Stack: + +.set rMaxlines, 30 +.set rHoldJrRa, 29 +.set rN64RamStart, 28 +.set r8000, 27 +.set rJrRaHex, 26 +.set rRAHighwordHex, 25 +.set rDoDelaySlot, 24 +.set rHoldJumpAddr, 23 +.set rHoldStack, 22 +.set rHoldN64Addr, 21 + +stwu sp, -0x70(sp) +mflr r0 +stw r0, 0x74(sp) + +addi r11, sp, 0x70 +bl __save_gpr - chunk0offset - $ + +addi r3, r31, chunk0offset + strN64StackTrace@l #header +li r4, 0 +bl printStr + +lwz r3, chunk0offset + N64Stackpointer@l(r31) +mr rHoldStack, r3 + +bl printHex32 +li r3, 0x0020 +bl drawChar + +bl getN64TraceStart #returns n64pntr +mr rHoldN64Addr, r3 + +bl printHex32 +bl printNewline + + +mr r4, rHoldN64Addr +lwz r3, chunk0offset + N64cpuPointer@l(r31) +li rMaxlines, 21 #max lines printed +lwz rHoldJrRa, 0x50(r3) #prefill RA in case it doesn't get encountered +#li rHoldJrRa, 0 #hold jrra +lwz rN64RamStart, chunk0offset + N64RAM@l(r31) +addis rN64RamStart, rN64RamStart, 0x8000 #mask out 0x80000000 from RAM pointer +lis rJrRaHex, 0x03E0 +ori rJrRaHex, rJrRaHex, 0x0008 #JR RA hex +lis rRAHighwordHex, 0x8FBF +srwi rRAHighwordHex, rRAHighwordHex, 16 #lw sp 0xXX(ra) highword hex +lis r8000, 0x8000 + +CNSstartscan: + +li rDoDelaySlot, 0 #do delay slot +li rHoldJumpAddr, 0 #hold jump addr +bl N64StackValidAddr +cmpi 0, r3, 0 +beq CNSprintdud + + +CNSreadinst: +lwzx r3, r4, rN64RamStart +nop +cmp 0, r3, rJrRaHex #is jrra? +beq CNSreadyjrra + +srwi r5, r3, 16 +cmpi 0, r5, 0x27BD # is SP add? +beq CNSaddtosp + +cmp 0, r5, rRAHighwordHex # is lw ra,sp? +beq CNSsetreturnaddr + +srwi r5, r3, 24 +cmpi 0, r5, 0x0008 # is J? +beq CNSreadyjump + +b CNScheckdelay + +CNSreadyjump: +slwi r5, r3, 8 +srwi r3, r5, 6 +add rHoldJumpAddr, r3, r8000 #place n64 j addr +li rDoDelaySlot, 1 #set delay +b CNSnextinst + + +CNSsetreturnaddr: +slwi r5, r3, 16 +srawi r5, r5, 16 +add r6, rN64RamStart, rHoldStack +lwzx r3, r6, r5 +lis r7, 0x8000 +ori r7, r7, 0x2D20 #start of n64 thread +cmp 0, r3, r7 +beq CNSfinish +mr rHoldN64Addr, r4 +bl getN64RAfromrecomp +cmpi 0, r3, 0 +beq CNSprintdud +mr rHoldJrRa, r3 +mr r4, rHoldN64Addr +b CNSnextinst + + +CNSaddtosp: +slwi r5, r3, 16 +srawi r5, r5, 16 +add rHoldStack, r5, rHoldStack +b CNScheckdelay + +CNSreadyjrra: +li rDoDelaySlot, 1 #set delay +b CNSnextinst + + +CNScheckdelay: +cmpi 0, rDoDelaySlot, 0 +beq CNSnextinst +li rDoDelaySlot, 0 #clear delay +cmpi 0, rHoldJumpAddr, 0 #is there jump? +bne CNSjumptoaddr +mr rHoldN64Addr, rHoldJrRa +b CNSprintnext + +CNSjumptoaddr: +mr rHoldN64Addr, rHoldJumpAddr +li rHoldJumpAddr, 0 #clear j +b CNSprintnext + + +CNSnextinst: +addi r4, r4, 0x04 +b CNSreadinst + +CNSprintnext: + +mr r3, rHoldStack +bl printHex32 +li r3, 0x0020 +bl drawChar + +mr r3, rHoldN64Addr +bl printHex32 +bl printNewline + + +mr r4, rHoldN64Addr +addi rMaxlines, rMaxlines, -1 +cmpi 0, rMaxlines, 0 +ble CNSfinish +b CNSstartscan + +CNSprintdud: +mr r3, rHoldStack +bl printHex32 +addi r3, r31, chunk0offset + strN64StackUnk@l +bl printStr + +CNSfinish: +addi r11, sp, 0x70 +bl __restore_gpr - chunk0offset - $ + +lwz r0, 0x74(sp) +mtlr r0 +addi sp, sp, 0x70 +blr +#======================================================== +.org 0x5AF8 - chunk0offset #0x1BF8 +WiiMiscArgs: + +.set MiscArgsHeap, 11 +.set MiscArgsTreeandBlock, 10 +.set MiscArgsCPUl, 9 +.set MiscArgsCPUh, 8 + + +stwu sp, -0x20(sp) +mflr r0 +stw r0, 0x24(sp) + +lwz MiscArgsHeap, chunk0offset + CrashArgHeap@l(r31) +lwz r3, chunk0offset + LastBadN64Inst@l(r31) + +addi r4, MiscArgsHeap, 0x20 +stw r4, chunk0offset + CrashArgHeap@l(r31) +stw MiscArgsHeap, chunk0offset + CrashMiscBuffer@l(r31) + +lwz MiscArgsCPUl, chunk0offset + N64cpuPointer@l(r31) + +addis MiscArgsCPUh, MiscArgsCPUl, cpustructHigh +stw r3, 0(MiscArgsHeap) + +lwz MiscArgsTreeandBlock, 0x1494(MiscArgsCPUh) #tree +lhz r3, 0(MiscArgsTreeandBlock) #count +stw MiscArgsTreeandBlock, 0x0C(MiscArgsHeap) +stw r3, 0x10(MiscArgsHeap) + +lwz r4, 0x04(MiscArgsTreeandBlock) #size +lwz r5, 0x68(MiscArgsTreeandBlock) #codeNodeRoot +lwz r3, 0x6C(MiscArgsTreeandBlock) #ovlNodeRoot +stw r4, 0x14(MiscArgsHeap) +stw r5, 0x18(MiscArgsHeap) +stw r3, 0x1C(MiscArgsHeap) + +addi MiscArgsTreeandBlock, MiscArgsCPUh, 0x0F68 +mr r3, MiscArgsTreeandBlock +li r4, 192 +bl WiiMiscBlockCount +stw r3, 0x04(MiscArgsHeap) + +li r4, 13 +addi r3, MiscArgsTreeandBlock, 192 * 4 +bl WiiMiscBlockCount +stw r3, 0x08(MiscArgsHeap) + +lwz r0, 0x24(sp) +mtlr r0 +addi sp, sp, 0x20 +blr +#======================================================== +WiiMiscBlockCount: #(*block, blockcount) return int + +.set BlockAccumulate, 9 +.set BlocksDone, 8 +.set BlockShift, 7 + + +li BlockAccumulate, 0 #accumulate +li BlocksDone, 0 + +BlockStartWord: +slwi r6, BlocksDone, 2 +lwzx r5, r6, r3 +li BlockShift, 31 + +BlockCheckWord: +srw r12, r5, BlockShift +andi. r12, r12, 0x0001 +add BlockAccumulate, BlockAccumulate, r12 +addi BlockShift, BlockShift, -1 +cmpi 0, BlockShift, 0 +bge BlockCheckWord + +addi BlocksDone, BlocksDone, 1 +cmpw 0, BlocksDone, r4 +blt BlockStartWord + + +mr r3, BlockAccumulate +blr +#======================================================== +.org 0x5BF8 - chunk0offset #0x1CF8 +strOOTRando: .string "OoTRando" +strPressA: .string "(A) = Next page Page %b of 5 + +" + +strCrashSplash: .string "************ +Oh! MY GOD!! +************" + +strN64RegistersPage: .string "Exception %b Thread:%x +SRR0:%x LR:%x DAR:%x + +N64 CPU State %h +Func:%x RA:%x + +AT:%x V0:%x V1:%x +A0:%x A1:%x A2:%x +A3:%x T0:%x T1:%x +T2:%x T3:%x T4:%x +T5:%x T6:%x T7:%x +S0:%x S1:%x S2:%x +S3:%x S4:%x S5:%x +S6:%x S7:%x T8:%x +T9:%x K0:%x K1:%x +GP:%x SP:%x FP:%x +RA:%x + +Recomp Node:%x PPC:%x +Start:%x End:%x +Chksum:%x Size:%x" + +strN64RegisterBroke: .string "N64 CPU unavailable?? HOW?? WHY" + +strWiiGPRPage: .string "Wii GP Registers + +Thread:%x + r0:%x r1:%x + r2:%x r3:%x + r4:%x r5:%x + r6:%x r7:%x + r8:%x r9:%x +r10:%x r11:%x +r12:%x r13:%x +r14:%x r15:%x +r16:%x r17:%x +r18:%x r19:%x +r20:%x r21:%x +r22:%x r23:%x +r24:%x r25:%x +r26:%x r27:%x +r28:%x r29:%x +r30:%x r31:%x + +SRR0:%x LR:%x DAR:%x" + +strWiiGPRBroke: .string "Wii GP Registers unavailable" + +strN64StackTrace: .string "N64 STACK TRACE + +" +strN64StackBroke: .string "N64 Stack unavailable" +strN64StackUnk: .string " ????????" + +strWiiStack: .string "Wii Back chain + +Address BackChain LR +" +strWiiStackBroke: .string "Wii Back chain unavailable" + +strMiscInfo: .string "VC Misc + +Last bad inst:%x + +S code block:%x +L code block:%x + +Tree:%x +Count:%h Size:%x +Left node start:%x +Right node start:%x" + +strMiscInfoBroke: .string "VC Misc info unavailable" + +strLoadInROM: .string "%ld MB" + +strPatchDate: .string " +OoTR US Patch 2024-11-25 Test" + +#strPatchDate: .string " +#OoTR JP Patch 2024-11-25 Test" + +.align 2 +#===================================== +.org 0x60F8 - chunk0offset #0x21F8 +PollController: #(int timer) return timer, bool skip +stwu sp, -0x10(sp) +mflr r0 +stw r0, 0x14(sp) + + +lbz r5, chunk0offset + AcceptInput@l(r31) +cmpi 0, r5, 0 +beq PollControllerSkip + +lwz r4, chunk0offset + ControllerPollTime@l(r31) +cmplw 0, r3, r4 +ble PollControllerSkip +stw r3, chunk0offset + ControllerPollTime@l(r31) + +stw r30, 0x08(sp) +mr r30, r3 + +lwz r4, -0x76E0(r13) #gSystem +lwz r3, 0x68(r4) #*controller +li r5, 1 +stw r5, 0x220(r3) +bl updateControllerInput - chunk0offset - $ +lwz r4, -0x76E0(r13) #gSystem +lwz r7, 0x68(r4) #*controller +mr r3, r30 +lwz r30, 0x08(sp) + +lwz r5, 0xBC(r7) +lwz r6, 0xCC(r7) +andi. r5, r5, ButtonA@l +andi. r6, r6, ButtonA@l +cmpw 0, r5, r6 +ble PollControllerSkip + +li r5, -1 +srwi r5, r5, 1 +stw r5, chunk0offset + Timer@l(r31) +li r4, 1 +b PollControllerfinish + +PollControllerSkip: +li r4, 0 + +PollControllerfinish: +lwz r0, 0x14(sp) +mtlr r0 +addi sp, sp, 0x10 +blr +#============================ +.org 0x62F8 - chunk0offset #0x23F8 +FindFuncFailHook: +lis r3, 0x8000 +stw r18, chunk0offset + LastBadN64Inst@l(r3) #instruction N64 address +li r3, 0 +blr +#============================= +OSUEhook: +lis r25, 0x8000 +sth r3, chunk0offset + ExceptionID@l(r25) +lis r31, 0x8017 +b OSUEhookend - chunk0offset - $ +#======================================= +RomLoadProgressHook: +lis r7, 0x80000000 + WVCLoadLogoStrVAarg@h + +srwi r5, r6, 20 +addi r4, r5, 1 +stw r4, WVCLoadLogoStrVAarg@l(r7) + +lis r5, 0x8000 +addi r4, r5, chunk0offset + strLoadInROM@l +stw r4, WVCLoadLogoStrPointer@l(r7) +li r5, 0x02 +stw r5, WVCLoadLogoStrCount@l(r7) + +mr r4, r30 +blr +#======================================= +startupProgress: +stwu sp, -0x10(sp) +mflr r0 +stw r0, 0x14(sp) + +lis r5, 0x8000 +lwz r4, chunk0offset + StartupTimer@l(r5) +addi r4, r4, 1 +cmpi 0, r4, 180 +stw r4, chunk0offset + StartupTimer@l(r5) + +ble supContinue + +lhz r5, 0x02(r3) +cmpi 0, r5, loadUpStrCompare +bne supContinue + +li r3, 0x0B +bl errorDisplayShow - chunk0offset - $ +b supFinish + + +supContinue: +bl errorDisplayPrint - chunk0offset - $ + +supFinish: +lwz r0, 0x14(sp) +mtlr r0 +addi sp, sp, 0x10 +blr +#======================================= +extCallPatch: +mr r3, r28 +mr r5, r29 +addi r4, sp, 0x20 +bl cpuExecuteUpdate - chunk0offset - $ +stw r3, 0x24(sp) +li r4, 0 +lwz r3, 0x0C(sp) +b cpuEChookend - chunk0offset + chunk1offset - $ +nop +#======================================= +# Hooks +# +# force 8MB ram +# replaces +# +.org 0x78F0 - chunk1offset #0x2EB0 same in JP and US +nop + + +# cpuExecuteCall patches +# In rare cases, the calling code's recompiled JAL assembly gets +# mangled when the target n64 PPC code gets deleted and rebuilt. +# Moving the tagging of the external call as retargetted after +# cpuExecuteUpdate ought to fix this. + +.org cpuExecuteCall - chunk1offset +stwu sp, -0x30(sp) +.org cpuExecuteCall + 0x08 - chunk1offset +stw r0, 0x34(sp) + +.org cpuExecuteCall + 0x98 - chunk1offset #0x035418 #0x048A14 +nop +b extCallPatch + chunk0offset - chunk1offset + + +.org cpuExecuteCall + 0xA0 - chunk1offset +cpuEChookend: + + +.org cpuExecuteCall + 0x194 - chunk1offset #0x035514 #0x048B10 +nop +nop +lwz r3, 0x24(sp) +nop + +.org cpuExecuteCall + 0x1B8 - chunk1offset #0x035538 #0x048B38 +lwz r0, 0x20(sp) + +.org cpuExecuteCall + 0x21C - chunk1offset #0x03559C #0x048B9C +lwz r3, 0x20(sp) + +.org cpuExecuteCall + 0x220 - chunk1offset +lwz r0, 0x34(sp) +.org cpuExecuteCall + 0x238 - chunk1offset +addi sp, sp, 0x30 + + +# findFunc(8004C930) hooks cpuFindFunction +# all replace 38600000 + +.org cpuFindFunction + 0x68 - chunk1offset #0x039290 +bl FindFuncFailHook + chunk0offset - chunk1offset + +.org cpuFindFunction + 0x7E4 - chunk1offset #0x039A0C +bl FindFuncFailHook + chunk0offset - chunk1offset + +.org cpuFindFunction + 0x898 - chunk1offset #0x039AC0 +bl FindFuncFailHook + chunk0offset - chunk1offset + +.org cpuFindFunction + 0x994 - chunk1offset #0x039BBC +bl FindFuncFailHook + chunk0offset - chunk1offset + +.org cpuFindFunction + 0x99C - chunk1offset #0x039BC4 +bl FindFuncFailHook + chunk0offset - chunk1offset + + +# switch in displaying load-in progress at start-up +# replaces: +# 4BFFFC49 +.org errorDisplayShow + 0x13C - chunk1offset #0x05F504 +bl startupProgress + chunk0offset - chunk1offset + + +# hook into rom loading to grab offset value for progress +# replaces: +# 7FC4F378 +.org xlFileGet + 0x110 - chunk1offset #0x07B8C4 +bl RomLoadProgressHook + chunk0offset - chunk1offset + +# patch OSDumpContext from scanning the back chain due to chain not ending with 0xFFFFFFFF +# replaces: +# 48000020 +.org OSDumpContext + 0x208 - chunk1offset #0x08773C +.long 0x48000040 + +# patch OSUE to catch exception number +# replaces: +# 3FE08017 +.org UnhandledException + 0x14 - chunk1offset #0x087CB8 +b OSUEhook + chunk0offset - chunk1offset + + +# patch OSUnhandledException end +# replaces +# 4BFFCA39 +.org UnhandledException + 0x2D4 - chunk1offset #0x087F78 +bl crashReport + chunk0offset - chunk1offset + +# apply d-pad remappings +.org 0x0016BAF4 #same in JP and US +.long 0x04000000 +.long 0x02000000 +.long 0x01000000 + + +# patch a string struct to change the print offset for the load-in logo +# replaces +# 0x00780000 +.org WVCLoadLogoStrStruct - chunk0offset #0x170ADC +.short 0x0140 +.short 0x0000 +.long 0x00 diff --git a/bin/gzinject/ootr_jpn.gzi b/bin/gzinject/ootr_jpn.gzi index 8338340c5..51f771508 100644 --- a/bin/gzinject/ootr_jpn.gzi +++ b/bin/gzinject/ootr_jpn.gzi @@ -5,4 +5,1239 @@ # apply d-pad remappings 0302 0016BAF4 00000400 0302 0016BAF8 00000200 -0302 0016BAFC 00000100 \ No newline at end of file +0302 0016BAFC 00000100 +# crash screen and start-up progress payload for NACJ +# debug font address at offset 0x05F4 is for OoT US 1.0 +0304 000005f0 90000820 +0304 000005f4 00104c18 +0304 000005f8 050003c0 +0304 000005fc 005804a4 +0304 00000600 0030037c +0304 00000604 00580030 +0304 00000608 ff801f80 +0304 00000610 009f6d64 +0304 00000638 80f64120 +0304 00000664 000000ff +0304 000006c8 9421ffe0 +0304 000006cc 7c0802a6 +0304 000006d0 90010024 +0304 000006d4 4809b4e9 +0304 000006d8 3fe08000 +0304 000006dc 809f452c +0304 000006e0 2c040000 +0304 000006e4 40820010 +0304 000006e8 806d8920 +0304 000006ec 7f44d378 +0304 000006f0 48000509 +0304 000006f4 889f4560 +0304 000006f8 2c040001 +0304 000006fc 90810008 +0304 00000700 41800040 +0304 00000704 480001f5 +0304 00000708 38810008 +0304 0000070c 387f5c01 +0304 00000710 48000ae9 +0304 00000714 889f4560 +0304 00000718 2c040001 +0304 0000071c 4182002c +0304 00000720 2c040002 +0304 00000724 4182002c +0304 00000728 2c040003 +0304 0000072c 4182002c +0304 00000730 2c040004 +0304 00000734 4182002c +0304 00000738 2c040005 +0304 0000073c 4182002c +0304 00000740 480005b9 +0304 00000744 4bffffb0 +0304 00000748 48000bb1 +0304 0000074c 4bffffa8 +0304 00000750 48000ee1 +0304 00000754 4bffffa0 +0304 00000758 480002a1 +0304 0000075c 4bffff98 +0304 00000760 48000df1 +0304 00000764 4bffff90 +0304 00000768 480011c1 +0304 0000076c 4bffff88 +0304 00000770 48084d75 +0304 00000774 80010024 +0304 00000778 7c0803a6 +0304 0000077c 38210020 +0304 00000780 4e800020 +0304 00000810 a09f44fc +0304 00000814 a0bf4506 +0304 00000818 b09f4504 +0304 0000081c 38a50010 +0304 00000820 b0bf4506 +0304 00000824 4e800020 +0304 00000828 a07f44fc +0304 0000082c a09f4500 +0304 00000830 b07f4504 +0304 00000834 b09f4506 +0304 00000838 4e800020 +0304 0000083c 38600000 +0304 00000840 b07f450c +0304 00000844 4e800020 +0304 00000848 38800008 +0304 0000084c 48000018 +0304 00000850 38800004 +0304 00000854 5463801e +0304 00000858 4800000c +0304 0000085c 38800002 +0304 00000860 5463c00e +0304 00000864 9421fff0 +0304 00000868 7c0802a6 +0304 0000086c 90010014 +0304 00000870 93a1000c +0304 00000874 93810008 +0304 00000878 7c7d1b78 +0304 0000087c 7c9c2378 +0304 00000880 57a3273e +0304 00000884 48000675 +0304 00000888 57bd2036 +0304 0000088c 3b9cffff +0304 00000890 2c1c0000 +0304 00000894 4181ffec +0304 00000898 83810008 +0304 0000089c 83a1000c +0304 000008a0 80010014 +0304 000008a4 7c0803a6 +0304 000008a8 38210010 +0304 000008ac 4e800020 +0304 000008f8 9421ffe0 +0304 000008fc 7c0802a6 +0304 00000900 90010024 +0304 00000904 a07f450a +0304 00000908 5464801e +0304 0000090c 7c652378 +0304 00000910 807f44f0 +0304 00000914 38c36e00 +0304 00000918 38c66e50 +0304 0000091c 38800190 +0304 00000920 3860011e +0304 00000924 90a60000 +0304 00000928 38c60004 +0304 0000092c 3863ffff +0304 00000930 2c030000 +0304 00000934 4181fff0 +0304 00000938 3884ffff +0304 0000093c 38c60088 +0304 00000940 2c040000 +0304 00000944 4181ffdc +0304 00000948 4bfffee1 +0304 0000094c 4bfffef1 +0304 00000950 80010024 +0304 00000954 7c0803a6 +0304 00000958 38210020 +0304 0000095c 4e800020 +0304 00000960 9421fff0 +0304 00000964 7c0802a6 +0304 00000968 90010014 +0304 0000096c 807f44f0 +0304 00000970 3c800009 +0304 00000974 60846000 +0304 00000978 48086e0d +0304 0000097c 80010014 +0304 00000980 7c0803a6 +0304 00000984 38210010 +0304 00000988 4e800020 +0304 0000098c 80ad91b8 +0304 00000990 7c032800 +0304 00000994 40820008 +0304 00000998 80ad91bc +0304 0000099c 90bf4540 +0304 000009a0 4e800020 +0304 000009f8 9421fff0 +0304 000009fc 7c0802a6 +0304 00000a00 90010014 +0304 00000a04 889f4563 +0304 00000a08 7c860774 +0304 00000a0c 2c060000 +0304 00000a10 40800008 +0304 00000a14 41800034 +0304 00000a18 38a0ffff +0304 00000a1c 98bf4563 +0304 00000a20 3860fffe +0304 00000a24 4bfffe1d +0304 00000a28 809f4544 +0304 00000a2c 387f5da8 +0304 00000a30 480007c9 +0304 00000a34 4bffff2d +0304 00000a38 38800001 +0304 00000a3c 989f4563 +0304 00000a40 3860000c +0304 00000a44 48000018 +0304 00000a48 387f5eba +0304 00000a4c 38800000 +0304 00000a50 480007a9 +0304 00000a54 4bffff0d +0304 00000a58 38600006 +0304 00000a5c 38800001 +0304 00000a60 48000099 +0304 00000a64 38600004 +0304 00000a68 987f4560 +0304 00000a6c 80010014 +0304 00000a70 7c0803a6 +0304 00000a74 38210010 +0304 00000a78 4e800020 +0304 00000af8 9421ffe0 +0304 00000afc 7c0802a6 +0304 00000b00 90010024 +0304 00000b04 93c10008 +0304 00000b08 93a1000c +0304 00000b0c 7c7e1b78 +0304 00000b10 7c9d2378 +0304 00000b14 38c00030 +0304 00000b18 b0df4506 +0304 00000b1c 38a00424 +0304 00000b20 b0bf4504 +0304 00000b24 2c1d0000 +0304 00000b28 4182000c +0304 00000b2c 480003cd +0304 00000b30 4bfffe31 +0304 00000b34 4808ec35 +0304 00000b38 5463502a +0304 00000b3c 548455be +0304 00000b40 7c632378 +0304 00000b44 480016b5 +0304 00000b48 2c040000 +0304 00000b4c 4082002c +0304 00000b50 80bf4534 +0304 00000b54 5463e13e +0304 00000b58 7c032800 +0304 00000b5c 4081ffd8 +0304 00000b60 907f4534 +0304 00000b64 3bdeffff +0304 00000b68 2c1e0000 +0304 00000b6c 4081000c +0304 00000b70 7fc3f378 +0304 00000b74 4bffffa8 +0304 00000b78 83a1000c +0304 00000b7c 83c10008 +0304 00000b80 80010024 +0304 00000b84 7c0803a6 +0304 00000b88 38210020 +0304 00000b8c 4e800020 +0304 00000bf8 9421fff0 +0304 00000bfc 7c0802a6 +0304 00000c00 90010014 +0304 00000c04 7c9e2378 +0304 00000c08 909f452c +0304 00000c0c 80a30018 +0304 00000c10 80e30010 +0304 00000c14 80c50004 +0304 00000c18 90ff4510 +0304 00000c1c 90df4538 +0304 00000c20 806d900c +0304 00000c24 907f44f0 +0304 00000c28 4bfffd65 +0304 00000c2c 7cd302a6 +0304 00000c30 809e0198 +0304 00000c34 80be0084 +0304 00000c38 90df451c +0304 00000c3c 909f4514 +0304 00000c40 90bf4518 +0304 00000c44 48000aed +0304 00000c48 807f4540 +0304 00000c4c 38800000 +0304 00000c50 38a05000 +0304 00000c54 4bfff835 +0304 00000c58 817f4540 +0304 00000c5c 39400004 +0304 00000c60 93cb0000 +0304 00000c64 3bdefffc +0304 00000c68 7ccaf02e +0304 00000c6c 7cca592e +0304 00000c70 394a0004 +0304 00000c74 2c0a0080 +0304 00000c78 4180fff0 +0304 00000c7c 809f4514 +0304 00000c80 80bf4518 +0304 00000c84 80df451c +0304 00000c88 908b0084 +0304 00000c8c 90ab0088 +0304 00000c90 90cb008c +0304 00000c94 917f4544 +0304 00000c98 3bcb0090 +0304 00000c9c 93df4540 +0304 00000ca0 80010014 +0304 00000ca4 7c0803a6 +0304 00000ca8 38210010 +0304 00000cac 4e800020 +0304 00000cf8 9421fff0 +0304 00000cfc 7c0802a6 +0304 00000d00 90010014 +0304 00000d04 38a001c8 +0304 00000d08 38800080 +0304 00000d0c b0bf44fc +0304 00000d10 b09f4500 +0304 00000d14 4bfffb15 +0304 00000d18 387f5c21 +0304 00000d1c 38800000 +0304 00000d20 480004d9 +0304 00000d24 4bfffc3d +0304 00000d28 38a00058 +0304 00000d2c 38800030 +0304 00000d30 b0bf44fc +0304 00000d34 b09f4500 +0304 00000d38 4bfffaf1 +0304 00000d3c 38600004 +0304 00000d40 38800000 +0304 00000d44 4bfffdb5 +0304 00000d48 38a00001 +0304 00000d4c 98bf4560 +0304 00000d50 38600001 +0304 00000d54 987f4566 +0304 00000d58 80010014 +0304 00000d5c 7c0803a6 +0304 00000d60 38210010 +0304 00000d64 4e800020 +0304 00000df8 817f4540 +0304 00000dfc a07f450e +0304 00000e00 809f452c +0304 00000e04 80bf4514 +0304 00000e08 80df4518 +0304 00000e0c 80ff451c +0304 00000e10 917f4548 +0304 00000e14 906b0000 +0304 00000e18 908b0004 +0304 00000e1c 90ab0008 +0304 00000e20 90cb000c +0304 00000e24 815f4510 +0304 00000e28 90eb0010 +0304 00000e2c 806a0000 +0304 00000e30 808a0020 +0304 00000e34 80aa0030 +0304 00000e38 906b0014 +0304 00000e3c 908b0018 +0304 00000e40 90ab001c +0304 00000e44 38e00000 +0304 00000e48 390a0054 +0304 00000e4c 392b0020 +0304 00000e50 80680000 +0304 00000e54 90690000 +0304 00000e58 38e70001 +0304 00000e5c 39080008 +0304 00000e60 39290004 +0304 00000e64 2c07001f +0304 00000e68 4180ffe8 +0304 00000e6c 80ca002c +0304 00000e70 80660004 +0304 00000e74 80860010 +0304 00000e78 80a60014 +0304 00000e7c 90cb009c +0304 00000e80 906b00a0 +0304 00000e84 908b00a4 +0304 00000e88 90ab00a8 +0304 00000e8c 80660024 +0304 00000e90 8086002c +0304 00000e94 390b00b4 +0304 00000e98 906b00ac +0304 00000e9c 908b00b0 +0304 00000ea0 911f4540 +0304 00000ea4 4e800020 +0304 00000ef8 9421ffd0 +0304 00000efc 7c0802a6 +0304 00000f00 90010034 +0304 00000f04 39610030 +0304 00000f08 4814e045 +0304 00000f0c 801f44f0 +0304 00000f10 a09f4504 +0304 00000f14 a0bf4506 +0304 00000f18 7c040214 +0304 00000f1c 1ca50500 +0304 00000f20 60000000 +0304 00000f24 7fc50214 +0304 00000f28 817f44f4 +0304 00000f2c 80df4538 +0304 00000f30 70690004 +0304 00000f34 7d6b3214 +0304 00000f38 7d695a14 +0304 00000f3c 706500ff +0304 00000f40 54a9e8fe +0304 00000f44 55243032 +0304 00000f48 7fa45a14 +0304 00000f4c 70600003 +0304 00000f50 38800001 +0304 00000f54 7c850030 +0304 00000f58 54bce006 +0304 00000f5c a37f4508 +0304 00000f60 a35f450a +0304 00000f64 3b200008 +0304 00000f68 7fc7f378 +0304 00000f6c 811d0000 +0304 00000f70 7f86e378 +0304 00000f74 3b000008 +0304 00000f78 7d003038 +0304 00000f7c 2c000000 +0304 00000f80 41820018 +0304 00000f84 b3670000 +0304 00000f88 b3670002 +0304 00000f8c b3670500 +0304 00000f90 b3670502 +0304 00000f94 48000014 +0304 00000f98 b3470000 +0304 00000f9c b3470002 +0304 00000fa0 b3470500 +0304 00000fa4 b3470502 +0304 00000fa8 54c6e13e +0304 00000fac 3b18ffff +0304 00000fb0 38e70004 +0304 00000fb4 2c180000 +0304 00000fb8 4181ffc0 +0304 00000fbc 3b39ffff +0304 00000fc0 3bbd0008 +0304 00000fc4 3bde0a00 +0304 00000fc8 7fc7f378 +0304 00000fcc 2c190000 +0304 00000fd0 4181ff9c +0304 00000fd4 a09f4504 +0304 00000fd8 a8df450c +0304 00000fdc 38a40020 +0304 00000fe0 7ca53214 +0304 00000fe4 b0bf4504 +0304 00000fe8 39610030 +0304 00000fec 4814dfad +0304 00000ff0 80010034 +0304 00000ff4 7c0803a6 +0304 00000ff8 38210030 +0304 00000ffc 4e800020 +0304 00001000 9421ffd0 +0304 00001004 7c0802a6 +0304 00001008 90010034 +0304 0000100c 2c030078 +0304 00001010 41820054 +0304 00001014 2c03006c +0304 00001018 4182004c +0304 0000101c 2c030068 +0304 00001020 4182005c +0304 00001024 2c030062 +0304 00001028 4182006c +0304 0000102c 2c030073 +0304 00001030 4182007c +0304 00001034 2c030070 +0304 00001038 41820014 +0304 0000103c 2c030025 +0304 00001040 40820084 +0304 00001044 4bfffeb5 +0304 00001048 4800007c +0304 0000104c 2c040000 +0304 00001050 41820074 +0304 00001054 54a6103a +0304 00001058 7c64302e +0304 0000105c 4bfff7e5 +0304 00001060 48000064 +0304 00001064 2c040000 +0304 00001068 4182005c +0304 0000106c 54a6103a +0304 00001070 7c64302e +0304 00001074 4bfff7d5 +0304 00001078 4800004c +0304 0000107c 2c040000 +0304 00001080 41820044 +0304 00001084 54a6103a +0304 00001088 7c64302e +0304 0000108c 4bfff7c5 +0304 00001090 48000034 +0304 00001094 2c040000 +0304 00001098 4182002c +0304 0000109c 54a6103a +0304 000010a0 7c64302e +0304 000010a4 4bfff7b9 +0304 000010a8 4800001c +0304 000010ac 2c040000 +0304 000010b0 41820014 +0304 000010b4 54a6103a +0304 000010b8 7c64302e +0304 000010bc 38800000 +0304 000010c0 48000139 +0304 000010c4 80010034 +0304 000010c8 7c0803a6 +0304 000010cc 38210030 +0304 000010d0 4e800020 +0304 000011f8 9421ffd0 +0304 000011fc 7c0802a6 +0304 00001200 90010034 +0304 00001204 39610030 +0304 00001208 4814dd51 +0304 0000120c 7c7e1b78 +0304 00001210 7c9d2378 +0304 00001214 3b800000 +0304 00001218 887e0000 +0304 0000121c 2c030000 +0304 00001220 41820044 +0304 00001224 2c03000a +0304 00001228 41820030 +0304 0000122c 2c030025 +0304 00001230 40820020 +0304 00001234 887e0001 +0304 00001238 7fa4eb78 +0304 0000123c 7f85e378 +0304 00001240 4bfffdc1 +0304 00001244 3bde0001 +0304 00001248 3b9c0001 +0304 0000124c 48000010 +0304 00001250 4bfffca9 +0304 00001254 48000008 +0304 00001258 4bfff5b9 +0304 0000125c 3bde0001 +0304 00001260 4bffffb8 +0304 00001264 39610030 +0304 00001268 4814dd3d +0304 0000126c 80010034 +0304 00001270 7c0803a6 +0304 00001274 38210030 +0304 00001278 4e800020 +0304 000012f8 9421fff0 +0304 000012fc 7c0802a6 +0304 00001300 90010014 +0304 00001304 889f4561 +0304 00001308 7c860774 +0304 0000130c 2c060000 +0304 00001310 4180003c +0304 00001314 41810010 +0304 00001318 38a0ffff +0304 0000131c 98bf4561 +0304 00001320 4bfffad9 +0304 00001324 3860fffe +0304 00001328 4bfff519 +0304 0000132c 809f4548 +0304 00001330 387f5c48 +0304 00001334 4bfffec5 +0304 00001338 4bfff629 +0304 0000133c 38a00001 +0304 00001340 98bf4561 +0304 00001344 3860000c +0304 00001348 48000018 +0304 0000134c 387f5d88 +0304 00001350 38800000 +0304 00001354 4bfffea5 +0304 00001358 4bfff609 +0304 0000135c 38600006 +0304 00001360 38800001 +0304 00001364 4bfff795 +0304 00001368 38a00002 +0304 0000136c 98bf4560 +0304 00001370 80010014 +0304 00001374 7c0803a6 +0304 00001378 38210010 +0304 0000137c 4e800020 +0304 000013f8 9421ffe0 +0304 000013fc 7c0802a6 +0304 00001400 90010024 +0304 00001404 93c10008 +0304 00001408 93a1000c +0304 0000140c 387f5f09 +0304 00001410 38800000 +0304 00001414 4bfffde5 +0304 00001418 80bf4544 +0304 0000141c 3ba00000 +0304 00001420 83c50008 +0304 00001424 3ba00000 +0304 00001428 7fc3f378 +0304 0000142c 4bfff41d +0304 00001430 38600020 +0304 00001434 4bfffac5 +0304 00001438 807e0000 +0304 0000143c 4bfff40d +0304 00001440 38600020 +0304 00001444 4bfffab5 +0304 00001448 807e0004 +0304 0000144c 4bfff3fd +0304 00001450 4bfff3c1 +0304 00001454 80be0000 +0304 00001458 3880ffff +0304 0000145c 7c052000 +0304 00001460 41820014 +0304 00001464 7cbe2b78 +0304 00001468 3bbd0001 +0304 0000146c 2c1d000d +0304 00001470 4180ffb8 +0304 00001474 83a1000c +0304 00001478 83c10008 +0304 0000147c 80010024 +0304 00001480 7c0803a6 +0304 00001484 38210020 +0304 00001488 4e800020 +0304 00001550 9421fff0 +0304 00001554 7c0802a6 +0304 00001558 90010014 +0304 0000155c 889f4564 +0304 00001560 7c860774 +0304 00001564 2c060000 +0304 00001568 41800020 +0304 0000156c 38a0ffff +0304 00001570 98bf4564 +0304 00001574 4bfffe85 +0304 00001578 38a00001 +0304 0000157c 98bf4564 +0304 00001580 3860000c +0304 00001584 48000018 +0304 00001588 387f5f31 +0304 0000158c 38800000 +0304 00001590 4bfffc69 +0304 00001594 4bfff3cd +0304 00001598 38600006 +0304 0000159c 38800001 +0304 000015a0 4bfff559 +0304 000015a4 38600005 +0304 000015a8 987f4560 +0304 000015ac 80010014 +0304 000015b0 7c0803a6 +0304 000015b4 38210010 +0304 000015b8 4e800020 +0304 00001630 9421fff0 +0304 00001634 7c0802a6 +0304 00001638 90010014 +0304 0000163c 889f4562 +0304 00001640 7c860774 +0304 00001644 2c060000 +0304 00001648 41800020 +0304 0000164c 38a0ffff +0304 00001650 98bf4562 +0304 00001654 480003a5 +0304 00001658 38a00001 +0304 0000165c 98bf4562 +0304 00001660 3860000c +0304 00001664 48000018 +0304 00001668 387f5ee9 +0304 0000166c 38800000 +0304 00001670 4bfffb89 +0304 00001674 4bfff2ed +0304 00001678 38600006 +0304 0000167c 38800001 +0304 00001680 4bfff479 +0304 00001684 38a00003 +0304 00001688 98bf4560 +0304 0000168c 80010014 +0304 00001690 7c0803a6 +0304 00001694 38210010 +0304 00001698 4e800020 +0304 00001730 809f4514 +0304 00001734 80bf4510 +0304 00001738 3cc0801d +0304 0000173c 60c6cd98 +0304 00001740 7c042800 +0304 00001744 4081000c +0304 00001748 8066007c +0304 0000174c 48000008 +0304 00001750 80650134 +0304 00001754 907f4530 +0304 00001758 4e800020 +0304 0000175c 80ff4510 +0304 00001760 80c7002c +0304 00001764 80670030 +0304 00001768 80860010 +0304 0000176c 80a60014 +0304 00001770 7c032000 +0304 00001774 4180000c +0304 00001778 7c032800 +0304 0000177c 41800008 +0304 00001780 80670020 +0304 00001784 4e800020 +0304 00001830 80bf4510 +0304 00001834 3cc50001 +0304 00001838 80860f60 +0304 0000183c 7c032000 +0304 00001840 41800074 +0304 00001844 80bf4538 +0304 00001848 7c032800 +0304 0000184c 41810068 +0304 00001850 70660003 +0304 00001854 2c060000 +0304 00001858 4082005c +0304 0000185c 80a30000 +0304 00001860 54a6843e +0304 00001864 2c0660e7 +0304 00001868 3863fffc +0304 0000186c 4082fff0 +0304 00001870 70a7ffff +0304 00001874 80a30000 +0304 00001878 54a6843e +0304 0000187c 2c063ce0 +0304 00001880 3863fffc +0304 00001884 4082fff0 +0304 00001888 54a8801e +0304 0000188c 7ce34378 +0304 00001890 7c03f800 +0304 00001894 3c9f0080 +0304 00001898 4180001c +0304 0000189c 7c032000 +0304 000018a0 40800014 +0304 000018a4 70660003 +0304 000018a8 2c060000 +0304 000018ac 40820008 +0304 000018b0 48000008 +0304 000018b4 38600000 +0304 000018b8 4e800020 +0304 000018f8 3cbf0080 +0304 000018fc 7c04f800 +0304 00001900 41800020 +0304 00001904 7c042800 +0304 00001908 40800018 +0304 0000190c 70860003 +0304 00001910 2c060000 +0304 00001914 4082000c +0304 00001918 38600001 +0304 0000191c 48000008 +0304 00001920 38600000 +0304 00001924 4e800020 +0304 00001928 9421fff0 +0304 0000192c 7c0802a6 +0304 00001930 90010014 +0304 00001934 889f4565 +0304 00001938 7c860774 +0304 0000193c 2c060000 +0304 00001940 4180003c +0304 00001944 41810010 +0304 00001948 38a0ffff +0304 0000194c 98bf4565 +0304 00001950 480002a9 +0304 00001954 3860fffe +0304 00001958 4bffeee9 +0304 0000195c 809f4554 +0304 00001960 387f5f4c +0304 00001964 4bfff895 +0304 00001968 4bffeff9 +0304 0000196c 38a00001 +0304 00001970 98bf4565 +0304 00001974 3860000c +0304 00001978 48000018 +0304 0000197c 387f5fc8 +0304 00001980 38800000 +0304 00001984 4bfff875 +0304 00001988 4bffefd9 +0304 0000198c 38600006 +0304 00001990 38800001 +0304 00001994 4bfff165 +0304 00001998 38a00001 +0304 0000199c 98bf4560 +0304 000019a0 80010014 +0304 000019a4 7c0803a6 +0304 000019a8 38210010 +0304 000019ac 4e800020 +0304 000019f8 9421ff90 +0304 000019fc 7c0802a6 +0304 00001a00 90010074 +0304 00001a04 39610070 +0304 00001a08 4814d51d +0304 00001a0c 387f5ed7 +0304 00001a10 38800000 +0304 00001a14 4bfff7e5 +0304 00001a18 807f4530 +0304 00001a1c 7c761b78 +0304 00001a20 4bffee29 +0304 00001a24 38600020 +0304 00001a28 4bfff4d1 +0304 00001a2c 4bfffd31 +0304 00001a30 7c751b78 +0304 00001a34 4bffee15 +0304 00001a38 4bffedd9 +0304 00001a3c 7ea4ab78 +0304 00001a40 807f4510 +0304 00001a44 3bc00015 +0304 00001a48 83a30050 +0304 00001a4c 839f4538 +0304 00001a50 3f9c8000 +0304 00001a54 3f4003e0 +0304 00001a58 635a0008 +0304 00001a5c 3f208fbf +0304 00001a60 5739843e +0304 00001a64 3f608000 +0304 00001a68 3b000000 +0304 00001a6c 3ae00000 +0304 00001a70 4bfffe89 +0304 00001a74 2c030000 +0304 00001a78 41820100 +0304 00001a7c 7c64e02e +0304 00001a80 60000000 +0304 00001a84 7c03d000 +0304 00001a88 41820088 +0304 00001a8c 5465843e +0304 00001a90 2c0527bd +0304 00001a94 4182006c +0304 00001a98 7c05c800 +0304 00001a9c 41820028 +0304 00001aa0 5465463e +0304 00001aa4 2c050008 +0304 00001aa8 41820008 +0304 00001aac 4800006c +0304 00001ab0 5465402e +0304 00001ab4 54a3d1be +0304 00001ab8 7ee3da14 +0304 00001abc 3b000001 +0304 00001ac0 48000080 +0304 00001ac4 5465801e +0304 00001ac8 7ca58670 +0304 00001acc 7cdcb214 +0304 00001ad0 7c66282e +0304 00001ad4 3ce08000 +0304 00001ad8 60e72d20 +0304 00001adc 7c033800 +0304 00001ae0 418200a8 +0304 00001ae4 7c952378 +0304 00001ae8 4bfffd49 +0304 00001aec 2c030000 +0304 00001af0 41820088 +0304 00001af4 7c7d1b78 +0304 00001af8 7ea4ab78 +0304 00001afc 48000044 +0304 00001b00 5465801e +0304 00001b04 7ca58670 +0304 00001b08 7ec5b214 +0304 00001b0c 4800000c +0304 00001b10 3b000001 +0304 00001b14 4800002c +0304 00001b18 2c180000 +0304 00001b1c 41820024 +0304 00001b20 3b000000 +0304 00001b24 2c170000 +0304 00001b28 4082000c +0304 00001b2c 7fb5eb78 +0304 00001b30 48000018 +0304 00001b34 7ef5bb78 +0304 00001b38 3ae00000 +0304 00001b3c 4800000c +0304 00001b40 38840004 +0304 00001b44 4bffff38 +0304 00001b48 7ec3b378 +0304 00001b4c 4bffecfd +0304 00001b50 38600020 +0304 00001b54 4bfff3a5 +0304 00001b58 7ea3ab78 +0304 00001b5c 4bffeced +0304 00001b60 4bffecb1 +0304 00001b64 7ea4ab78 +0304 00001b68 3bdeffff +0304 00001b6c 2c1e0000 +0304 00001b70 40810018 +0304 00001b74 4bfffef4 +0304 00001b78 7ec3b378 +0304 00001b7c 4bffeccd +0304 00001b80 387f5eff +0304 00001b84 4bfff675 +0304 00001b88 39610070 +0304 00001b8c 4814d3e5 +0304 00001b90 80010074 +0304 00001b94 7c0803a6 +0304 00001b98 38210070 +0304 00001b9c 4e800020 +0304 00001bf8 9421ffe0 +0304 00001bfc 7c0802a6 +0304 00001c00 90010024 +0304 00001c04 817f4540 +0304 00001c08 807f453c +0304 00001c0c 388b0020 +0304 00001c10 909f4540 +0304 00001c14 917f4554 +0304 00001c18 813f4510 +0304 00001c1c 3d090001 +0304 00001c20 906b0000 +0304 00001c24 81481494 +0304 00001c28 a06a0000 +0304 00001c2c 914b000c +0304 00001c30 906b0010 +0304 00001c34 808a0004 +0304 00001c38 80aa0068 +0304 00001c3c 806a006c +0304 00001c40 908b0014 +0304 00001c44 90ab0018 +0304 00001c48 906b001c +0304 00001c4c 39480f68 +0304 00001c50 7d435378 +0304 00001c54 388000c0 +0304 00001c58 48000029 +0304 00001c5c 906b0004 +0304 00001c60 3880000d +0304 00001c64 386a0300 +0304 00001c68 48000019 +0304 00001c6c 906b0008 +0304 00001c70 80010024 +0304 00001c74 7c0803a6 +0304 00001c78 38210020 +0304 00001c7c 4e800020 +0304 00001c80 39200000 +0304 00001c84 39000000 +0304 00001c88 5506103a +0304 00001c8c 7ca6182e +0304 00001c90 38e0001f +0304 00001c94 7cac3c30 +0304 00001c98 718c0001 +0304 00001c9c 7d296214 +0304 00001ca0 38e7ffff +0304 00001ca4 2c070000 +0304 00001ca8 4080ffec +0304 00001cac 39080001 +0304 00001cb0 7c082000 +0304 00001cb4 4180ffd4 +0304 00001cb8 7d234b78 +0304 00001cbc 4e800020 +0304 00001cf8 4f6f5452 +0304 00001cfc 616e646f +0304 00001d00 00284129 +0304 00001d04 203d204e +0304 00001d08 65787420 +0304 00001d0c 70616765 +0304 00001d10 20205061 +0304 00001d14 67652025 +0304 00001d18 62206f66 +0304 00001d1c 20350a0a +0304 00001d20 002a2a2a +0304 00001d24 2a2a2a2a +0304 00001d28 2a2a2a2a +0304 00001d2c 2a0a4f68 +0304 00001d30 21204d59 +0304 00001d34 20474f44 +0304 00001d38 21210a2a +0304 00001d3c 2a2a2a2a +0304 00001d40 2a2a2a2a +0304 00001d44 2a2a2a00 +0304 00001d48 45786365 +0304 00001d4c 7074696f +0304 00001d50 6e202562 +0304 00001d54 20546872 +0304 00001d58 6561643a +0304 00001d5c 25780a53 +0304 00001d60 5252303a +0304 00001d64 2578204c +0304 00001d68 523a2578 +0304 00001d6c 20444152 +0304 00001d70 3a25780a +0304 00001d74 0a4e3634 +0304 00001d78 20435055 +0304 00001d7c 20537461 +0304 00001d80 74652025 +0304 00001d84 680a4675 +0304 00001d88 6e633a25 +0304 00001d8c 78205241 +0304 00001d90 3a25780a +0304 00001d94 0a41543a +0304 00001d98 25782056 +0304 00001d9c 303a2578 +0304 00001da0 2056313a +0304 00001da4 25780a41 +0304 00001da8 303a2578 +0304 00001dac 2041313a +0304 00001db0 25782041 +0304 00001db4 323a2578 +0304 00001db8 0a41333a +0304 00001dbc 25782054 +0304 00001dc0 303a2578 +0304 00001dc4 2054313a +0304 00001dc8 25780a54 +0304 00001dcc 323a2578 +0304 00001dd0 2054333a +0304 00001dd4 25782054 +0304 00001dd8 343a2578 +0304 00001ddc 0a54353a +0304 00001de0 25782054 +0304 00001de4 363a2578 +0304 00001de8 2054373a +0304 00001dec 25780a53 +0304 00001df0 303a2578 +0304 00001df4 2053313a +0304 00001df8 25782053 +0304 00001dfc 323a2578 +0304 00001e00 0a53333a +0304 00001e04 25782053 +0304 00001e08 343a2578 +0304 00001e0c 2053353a +0304 00001e10 25780a53 +0304 00001e14 363a2578 +0304 00001e18 2053373a +0304 00001e1c 25782054 +0304 00001e20 383a2578 +0304 00001e24 0a54393a +0304 00001e28 2578204b +0304 00001e2c 303a2578 +0304 00001e30 204b313a +0304 00001e34 25780a47 +0304 00001e38 503a2578 +0304 00001e3c 2053503a +0304 00001e40 25782046 +0304 00001e44 503a2578 +0304 00001e48 0a52413a +0304 00001e4c 25780a0a +0304 00001e50 5265636f +0304 00001e54 6d70204e +0304 00001e58 6f64653a +0304 00001e5c 25782050 +0304 00001e60 50433a25 +0304 00001e64 780a5374 +0304 00001e68 6172743a +0304 00001e6c 25782045 +0304 00001e70 6e643a25 +0304 00001e74 780a4368 +0304 00001e78 6b73756d +0304 00001e7c 3a257820 +0304 00001e80 53697a65 +0304 00001e84 3a257800 +0304 00001e88 4e363420 +0304 00001e8c 43505520 +0304 00001e90 756e6176 +0304 00001e94 61696c61 +0304 00001e98 626c653f +0304 00001e9c 3f20484f +0304 00001ea0 573f3f20 +0304 00001ea4 57485900 +0304 00001ea8 57696920 +0304 00001eac 47502052 +0304 00001eb0 65676973 +0304 00001eb4 74657273 +0304 00001eb8 0a0a5468 +0304 00001ebc 72656164 +0304 00001ec0 3a25780a +0304 00001ec4 2072303a +0304 00001ec8 25782020 +0304 00001ecc 72313a25 +0304 00001ed0 780a2072 +0304 00001ed4 323a2578 +0304 00001ed8 20207233 +0304 00001edc 3a25780a +0304 00001ee0 2072343a +0304 00001ee4 25782020 +0304 00001ee8 72353a25 +0304 00001eec 780a2072 +0304 00001ef0 363a2578 +0304 00001ef4 20207237 +0304 00001ef8 3a25780a +0304 00001efc 2072383a +0304 00001f00 25782020 +0304 00001f04 72393a25 +0304 00001f08 780a7231 +0304 00001f0c 303a2578 +0304 00001f10 20723131 +0304 00001f14 3a25780a +0304 00001f18 7231323a +0304 00001f1c 25782072 +0304 00001f20 31333a25 +0304 00001f24 780a7231 +0304 00001f28 343a2578 +0304 00001f2c 20723135 +0304 00001f30 3a25780a +0304 00001f34 7231363a +0304 00001f38 25782072 +0304 00001f3c 31373a25 +0304 00001f40 780a7231 +0304 00001f44 383a2578 +0304 00001f48 20723139 +0304 00001f4c 3a25780a +0304 00001f50 7232303a +0304 00001f54 25782072 +0304 00001f58 32313a25 +0304 00001f5c 780a7232 +0304 00001f60 323a2578 +0304 00001f64 20723233 +0304 00001f68 3a25780a +0304 00001f6c 7232343a +0304 00001f70 25782072 +0304 00001f74 32353a25 +0304 00001f78 780a7232 +0304 00001f7c 363a2578 +0304 00001f80 20723237 +0304 00001f84 3a25780a +0304 00001f88 7232383a +0304 00001f8c 25782072 +0304 00001f90 32393a25 +0304 00001f94 780a7233 +0304 00001f98 303a2578 +0304 00001f9c 20723331 +0304 00001fa0 3a25780a +0304 00001fa4 0a535252 +0304 00001fa8 303a2578 +0304 00001fac 204c523a +0304 00001fb0 25782044 +0304 00001fb4 41523a25 +0304 00001fb8 78005769 +0304 00001fbc 69204750 +0304 00001fc0 20526567 +0304 00001fc4 69737465 +0304 00001fc8 72732075 +0304 00001fcc 6e617661 +0304 00001fd0 696c6162 +0304 00001fd4 6c65004e +0304 00001fd8 36342053 +0304 00001fdc 5441434b +0304 00001fe0 20545241 +0304 00001fe4 43450a0a +0304 00001fe8 004e3634 +0304 00001fec 20537461 +0304 00001ff0 636b2075 +0304 00001ff4 6e617661 +0304 00001ff8 696c6162 +0304 00001ffc 6c650020 +0304 00002000 3f3f3f3f +0304 00002004 3f3f3f3f +0304 00002008 00576969 +0304 0000200c 20426163 +0304 00002010 6b206368 +0304 00002014 61696e0a +0304 00002018 0a416464 +0304 0000201c 72657373 +0304 00002020 20204261 +0304 00002024 636b4368 +0304 00002028 61696e20 +0304 0000202c 204c520a +0304 00002030 00576969 +0304 00002034 20426163 +0304 00002038 6b206368 +0304 0000203c 61696e20 +0304 00002040 756e6176 +0304 00002044 61696c61 +0304 00002048 626c6500 +0304 0000204c 5643204d +0304 00002050 6973630a +0304 00002054 0a4c6173 +0304 00002058 74206261 +0304 0000205c 6420696e +0304 00002060 73743a25 +0304 00002064 780a0a53 +0304 00002068 20636f64 +0304 0000206c 6520626c +0304 00002070 6f636b3a +0304 00002074 25780a4c +0304 00002078 20636f64 +0304 0000207c 6520626c +0304 00002080 6f636b3a +0304 00002084 25780a0a +0304 00002088 54726565 +0304 0000208c 3a25780a +0304 00002090 436f756e +0304 00002094 743a2568 +0304 00002098 2053697a +0304 0000209c 653a2578 +0304 000020a0 0a4c6566 +0304 000020a4 74206e6f +0304 000020a8 64652073 +0304 000020ac 74617274 +0304 000020b0 3a25780a +0304 000020b4 52696768 +0304 000020b8 74206e6f +0304 000020bc 64652073 +0304 000020c0 74617274 +0304 000020c4 3a257800 +0304 000020c8 5643204d +0304 000020cc 69736320 +0304 000020d0 696e666f +0304 000020d4 20756e61 +0304 000020d8 7661696c +0304 000020dc 61626c65 +0304 000020e0 00256c64 +0304 000020e4 204d4200 +0304 000020e8 0a4f6f54 +0304 000020ec 52204a50 +0304 000020f0 20506174 +0304 000020f4 63682032 +0304 000020f8 3032342d +0304 000020fc 31312d32 +0304 00002100 35205465 +0304 00002104 73740000 +0304 000021f8 9421fff0 +0304 000021fc 7c0802a6 +0304 00002200 90010014 +0304 00002204 88bf4566 +0304 00002208 2c050000 +0304 0000220c 4182006c +0304 00002210 809f4520 +0304 00002214 7c032040 +0304 00002218 40810060 +0304 0000221c 907f4520 +0304 00002220 93c10008 +0304 00002224 7c7e1b78 +0304 00002228 808d8920 +0304 0000222c 80640068 +0304 00002230 38a00001 +0304 00002234 90a30220 +0304 00002238 4805c2bd +0304 0000223c 808d8920 +0304 00002240 80e40068 +0304 00002244 7fc3f378 +0304 00002248 83c10008 +0304 0000224c 80a700bc +0304 00002250 80c700cc +0304 00002254 70a50001 +0304 00002258 70c60001 +0304 0000225c 7c053000 +0304 00002260 40810018 +0304 00002264 38a0ffff +0304 00002268 54a5f87e +0304 0000226c 90bf4534 +0304 00002270 38800001 +0304 00002274 48000008 +0304 00002278 38800000 +0304 0000227c 80010014 +0304 00002280 7c0803a6 +0304 00002284 38210010 +0304 00002288 4e800020 +0304 000023f8 3c608000 +0304 000023fc 9243453c +0304 00002400 38600000 +0304 00002404 4e800020 +0304 00002408 3f208000 +0304 0000240c b079450e +0304 00002410 3fe08017 +0304 00002414 480863dc +0304 00002418 3ce08017 +0304 0000241c 54c5653e +0304 00002420 38850001 +0304 00002424 90874980 +0304 00002428 3ca08000 +0304 0000242c 38855fe1 +0304 00002430 90874664 +0304 00002434 38a00002 +0304 00002438 90a74660 +0304 0000243c 7fc4f378 +0304 00002440 4e800020 +0304 00002444 9421fff0 +0304 00002448 7c0802a6 +0304 0000244c 90010014 +0304 00002450 3ca08000 +0304 00002454 80854568 +0304 00002458 38840001 +0304 0000245c 2c0400b4 +0304 00002460 90854568 +0304 00002464 4081001c +0304 00002468 a0a30002 +0304 0000246c 2c054848 +0304 00002470 40820010 +0304 00002474 3860000b +0304 00002478 4805da01 +0304 0000247c 48000008 +0304 00002480 4805d77d +0304 00002484 80010014 +0304 00002488 7c0803a6 +0304 0000248c 38210010 +0304 00002490 4e800020 +0304 00002494 7f83e378 +0304 00002498 7fa5eb78 +0304 0000249c 38810020 +0304 000024a0 4802c7f9 +0304 000024a4 90610024 +0304 000024a8 38800000 +0304 000024ac 8061000c +0304 000024b0 48033a94 +0304 000024b4 60000000 +#0304 00035364 9421ffd0 +#0304 0003536c 90010034 +#0304 000353fc 60000000 +#0304 00035400 4bfcc554 +#0304 000354f8 60000000 +#0304 000354fc 60000000 +#0304 00035500 80610024 +#0304 00035504 60000000 +#0304 0003551c 80010020 +#0304 00035580 80610020 +#0304 00035584 80010034 +#0304 0003559c 38210030 +0304 00039274 4bfc8645 +0304 000399f0 4bfc7ec9 +0304 00039aa4 4bfc7e15 +0304 00039ba0 4bfc7d19 +0304 00039ba8 4bfc7d11 +0304 0005f474 4bfa2491 +0304 0007b8b8 4bf86021 +0304 00087730 48000040 +0304 00087cac 4bf79c1c +0304 00087f6c 4bf77c1d +0304 00170a7c 01400000 diff --git a/bin/gzinject/ootr_usa.gzi b/bin/gzinject/ootr_usa.gzi index 2976cc29e..9e78b140e 100644 --- a/bin/gzinject/ootr_usa.gzi +++ b/bin/gzinject/ootr_usa.gzi @@ -200,7 +200,7 @@ 0304 00000b38 5463502a 0304 00000b3c 548455be 0304 00000b40 7c632378 -0304 00000b44 38800000 +0304 00000b44 480016b5 0304 00000b48 2c040000 0304 00000b4c 4082002c 0304 00000b50 80bf4534 @@ -704,7 +704,7 @@ 0304 00001970 98bf4565 0304 00001974 3860000c 0304 00001978 48000018 -0304 0000197c 387f5fc6 +0304 0000197c 387f5fc8 0304 00001980 38800000 0304 00001984 4bfff875 0304 00001988 4bffefd9 @@ -875,10 +875,10 @@ 0304 00001cbc 4e800020 0304 00001cf8 4f6f5452 0304 00001cfc 616e646f -0304 00001d00 00202020 -0304 00001d04 20202020 -0304 00001d08 20202020 -0304 00001d0c 20202020 +0304 00001d00 00284129 +0304 00001d04 203d204e +0304 00001d08 65787420 +0304 00001d0c 70616765 0304 00001d10 20205061 0304 00001d14 67652025 0304 00001d18 62206f66 @@ -1107,66 +1107,69 @@ 0304 00002094 743a2568 0304 00002098 2053697a 0304 0000209c 653a2578 -0304 000020a0 0a526f6f +0304 000020a0 0a4c6566 0304 000020a4 74206e6f 0304 000020a8 64652073 0304 000020ac 74617274 0304 000020b0 3a25780a -0304 000020b4 4f766c20 -0304 000020b8 6e6f6465 -0304 000020bc 20737461 -0304 000020c0 72743a25 -0304 000020c4 78005643 -0304 000020c8 204d6973 -0304 000020cc 6320696e -0304 000020d0 666f2075 -0304 000020d4 6e617661 -0304 000020d8 696c6162 -0304 000020dc 6c650025 -0304 000020e0 6c64204d -0304 000020e4 42000a4f -0304 000020e8 6f545220 -0304 000020ec 50617463 -0304 000020f0 68203230 -0304 000020f4 32332d31 -0304 000020f8 322d3230 -0304 000020fc 20546573 -0304 00002100 74000000 +0304 000020b4 52696768 +0304 000020b8 74206e6f +0304 000020bc 64652073 +0304 000020c0 74617274 +0304 000020c4 3a257800 +0304 000020c8 5643204d +0304 000020cc 69736320 +0304 000020d0 696e666f +0304 000020d4 20756e61 +0304 000020d8 7661696c +0304 000020dc 61626c65 +0304 000020e0 00256c64 +0304 000020e4 204d4200 +0304 000020e8 0a4f6f54 +0304 000020ec 52205553 +0304 000020f0 20506174 +0304 000020f4 63682032 +0304 000020f8 3032342d +0304 000020fc 31312d32 +0304 00002100 35205465 +0304 00002104 73740000 0304 000021f8 9421fff0 0304 000021fc 7c0802a6 0304 00002200 90010014 0304 00002204 88bf4566 0304 00002208 2c050000 -0304 0000220c 41820064 +0304 0000220c 4182006c 0304 00002210 809f4520 0304 00002214 7c032040 -0304 00002218 40810058 +0304 00002218 40810060 0304 0000221c 907f4520 0304 00002220 93c10008 0304 00002224 7c7e1b78 0304 00002228 808d8920 0304 0000222c 80640068 -0304 00002230 4805c355 -0304 00002234 808d8920 -0304 00002238 80e40068 -0304 0000223c 7fc3f378 -0304 00002240 83c10008 -0304 00002244 80a700bc -0304 00002248 80c700cc -0304 0000224c 70a50001 -0304 00002250 70c60001 -0304 00002254 7c053000 -0304 00002258 40810018 -0304 0000225c 38a0ffff -0304 00002260 54a5f87e -0304 00002264 90bf4534 -0304 00002268 38800001 -0304 0000226c 48000008 -0304 00002270 38800000 -0304 00002274 80010014 -0304 00002278 7c0803a6 -0304 0000227c 38210010 -0304 00002280 4e800020 +0304 00002230 38a00001 +0304 00002234 90a30220 +0304 00002238 4805c34d +0304 0000223c 808d8920 +0304 00002240 80e40068 +0304 00002244 7fc3f378 +0304 00002248 83c10008 +0304 0000224c 80a700bc +0304 00002250 80c700cc +0304 00002254 70a50001 +0304 00002258 70c60001 +0304 0000225c 7c053000 +0304 00002260 40810018 +0304 00002264 38a0ffff +0304 00002268 54a5f87e +0304 0000226c 90bf4534 +0304 00002270 38800001 +0304 00002274 48000008 +0304 00002278 38800000 +0304 0000227c 80010014 +0304 00002280 7c0803a6 +0304 00002284 38210010 +0304 00002288 4e800020 0304 000023f8 3c608000 0304 000023fc 9243453c 0304 00002400 38600000 @@ -1180,7 +1183,7 @@ 0304 00002420 38850001 0304 00002424 908749e0 0304 00002428 3ca08000 -0304 0000242c 38855fdf +0304 0000242c 38855fe1 0304 00002430 908746c4 0304 00002434 38a00002 0304 00002438 90a746c0 @@ -1215,6 +1218,18 @@ 0304 000024ac 8061000c 0304 000024b0 48033ab0 0304 000024b4 60000000 +#0304 00035380 9421ffd0 +#0304 00035388 90010034 +#0304 00035418 60000000 +#0304 0003541c 4bfcc538 +#0304 00035514 60000000 +#0304 00035518 60000000 +#0304 0003551c 80610024 +#0304 00035520 60000000 +#0304 00035538 80010020 +#0304 0003559c 80610020 +#0304 000355a0 80010034 +#0304 000355b8 38210030 0304 00039290 4bfc8629 0304 00039a0c 4bfc7ead 0304 00039ac0 4bfc7df9