Newer
Older
//! Static boot ROMs binary data for the Game Boy.
//!
//! Used to build include some of the most relevant boot ROMs for the
//! Game Boy directly in the resulting binaries - allowing a *"just works"*
//! experience for the users.
use std::fmt::{self, Display, Formatter};
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
49, 254, 255, 175, 33, 255, 159, 50, 203, 124, 32, 251, 33, 38, 255, 14, 17, 62, 128, 50, 226,
12, 62, 243, 226, 50, 62, 119, 119, 62, 252, 224, 71, 17, 4, 1, 33, 16, 128, 26, 205, 149, 0,
205, 150, 0, 19, 123, 254, 52, 32, 243, 17, 216, 0, 6, 8, 26, 19, 34, 35, 5, 32, 249, 62, 25,
234, 16, 153, 33, 47, 153, 14, 12, 61, 40, 8, 50, 13, 32, 249, 46, 15, 24, 243, 103, 62, 100,
87, 224, 66, 62, 145, 224, 64, 4, 30, 2, 14, 12, 240, 68, 254, 144, 32, 250, 13, 32, 247, 29,
32, 242, 14, 19, 36, 124, 30, 131, 254, 98, 40, 6, 30, 193, 254, 100, 32, 6, 123, 226, 12, 62,
135, 226, 240, 66, 144, 224, 66, 21, 32, 210, 5, 32, 79, 22, 32, 24, 203, 79, 6, 4, 197, 203,
17, 23, 193, 203, 17, 23, 5, 32, 245, 34, 35, 34, 35, 201, 206, 237, 102, 102, 204, 13, 0, 11,
3, 115, 0, 131, 0, 12, 0, 13, 0, 8, 17, 31, 136, 137, 0, 14, 220, 204, 110, 230, 221, 221, 217,
153, 187, 187, 103, 99, 110, 14, 236, 204, 221, 220, 153, 159, 187, 185, 51, 62, 60, 66, 185,
165, 185, 165, 66, 60, 33, 4, 1, 17, 168, 0, 26, 19, 190, 32, 254, 35, 125, 254, 52, 32, 245,
6, 25, 120, 134, 35, 5, 32, 251, 134, 32, 254, 62, 1, 224, 80,
];
pub const SGB_BOOT: [u8; 256] = [
49, 254, 255, 62, 48, 224, 0, 175, 33, 255, 159, 50, 203, 124, 32, 251, 33, 38, 255, 14, 17,
62, 128, 50, 226, 12, 62, 243, 226, 50, 62, 119, 119, 62, 252, 224, 71, 33, 95, 192, 14, 8,
175, 50, 13, 32, 252, 17, 79, 1, 62, 251, 14, 6, 245, 6, 0, 26, 27, 50, 128, 71, 13, 32, 248,
50, 241, 50, 14, 14, 214, 2, 254, 239, 32, 234, 17, 4, 1, 33, 16, 128, 26, 205, 211, 0, 205,
212, 0, 19, 123, 254, 52, 32, 243, 17, 230, 0, 6, 8, 26, 19, 34, 35, 5, 32, 249, 62, 25, 234,
16, 153, 33, 47, 153, 14, 12, 61, 40, 8, 50, 13, 32, 249, 46, 15, 24, 243, 62, 145, 224, 64,
33, 0, 192, 14, 0, 62, 0, 226, 62, 48, 226, 6, 16, 30, 8, 42, 87, 203, 66, 62, 16, 32, 2, 62,
32, 226, 62, 48, 226, 203, 26, 29, 32, 239, 5, 32, 232, 62, 32, 226, 62, 48, 226, 205, 194, 0,
125, 254, 96, 32, 210, 14, 19, 62, 193, 226, 12, 62, 7, 226, 24, 58, 22, 4, 240, 68, 254, 144,
32, 250, 30, 0, 29, 32, 253, 21, 32, 242, 201, 79, 6, 4, 197, 203, 17, 23, 193, 203, 17, 23, 5,
32, 245, 34, 35, 34, 35, 201, 60, 66, 185, 165, 185, 165, 66, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 62, 1, 224, 80,
];
pub const DMG_BOOTIX: [u8; 256] = [
49, 254, 255, 33, 255, 159, 175, 50, 203, 124, 32, 250, 14, 17, 33, 38, 255, 62, 128, 50, 226,
12, 62, 243, 50, 226, 12, 62, 119, 50, 226, 17, 4, 1, 33, 16, 128, 26, 205, 184, 0, 26, 203,
55, 205, 184, 0, 19, 123, 254, 52, 32, 240, 17, 204, 0, 6, 8, 26, 19, 34, 35, 5, 32, 249, 33,
4, 153, 1, 12, 1, 205, 177, 0, 62, 25, 119, 33, 36, 153, 14, 12, 205, 177, 0, 62, 145, 224, 64,
6, 16, 17, 212, 0, 120, 224, 67, 5, 123, 254, 216, 40, 4, 26, 224, 71, 19, 14, 28, 205, 167, 0,
175, 144, 224, 67, 5, 14, 28, 205, 167, 0, 175, 176, 32, 224, 224, 67, 62, 131, 205, 159, 0,
14, 39, 205, 167, 0, 62, 193, 205, 159, 0, 17, 138, 1, 240, 68, 254, 144, 32, 250, 27, 122,
179, 32, 245, 24, 73, 14, 19, 226, 12, 62, 135, 226, 201, 240, 68, 254, 144, 32, 250, 13, 32,
247, 201, 120, 34, 4, 13, 32, 250, 201, 71, 14, 4, 175, 197, 203, 16, 23, 193, 203, 16, 23, 13,
32, 245, 34, 35, 34, 35, 201, 60, 66, 185, 165, 185, 165, 66, 60, 0, 84, 168, 252, 66, 79, 79,
84, 73, 88, 46, 68, 77, 71, 32, 118, 49, 46, 50, 0, 62, 255, 198, 1, 11, 30, 216, 33, 77, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 1, 224, 80,
];
pub const MGB_BOOTIX: [u8; 256] = [
49, 254, 255, 33, 255, 159, 175, 50, 203, 124, 32, 250, 14, 17, 33, 38, 255, 62, 128, 50, 226,
12, 62, 243, 50, 226, 12, 62, 119, 50, 226, 17, 4, 1, 33, 16, 128, 26, 205, 184, 0, 26, 203,
55, 205, 184, 0, 19, 123, 254, 52, 32, 240, 17, 204, 0, 6, 8, 26, 19, 34, 35, 5, 32, 249, 33,
4, 153, 1, 12, 1, 205, 177, 0, 62, 25, 119, 33, 36, 153, 14, 12, 205, 177, 0, 62, 145, 224, 64,
6, 16, 17, 212, 0, 120, 224, 67, 5, 123, 254, 216, 40, 4, 26, 224, 71, 19, 14, 30, 205, 167, 0,
175, 144, 224, 67, 5, 14, 30, 205, 167, 0, 175, 176, 32, 224, 224, 67, 62, 131, 205, 159, 0,
14, 30, 205, 167, 0, 62, 193, 205, 159, 0, 17, 242, 1, 240, 68, 254, 144, 32, 250, 27, 122,
179, 32, 245, 24, 73, 14, 19, 226, 12, 62, 135, 226, 201, 240, 68, 254, 144, 32, 250, 13, 32,
247, 201, 120, 34, 4, 13, 32, 250, 201, 71, 14, 4, 175, 197, 203, 16, 23, 193, 203, 16, 23, 13,
32, 245, 34, 35, 34, 35, 201, 60, 66, 185, 165, 185, 165, 66, 60, 0, 84, 168, 252, 66, 79, 79,
84, 73, 88, 46, 68, 77, 71, 32, 118, 49, 46, 50, 0, 62, 255, 198, 1, 11, 30, 216, 33, 77, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 255, 224, 80,
];
pub const CGB_BOOT: [u8; 2304] = [
49, 254, 255, 62, 2, 195, 124, 0, 211, 0, 152, 160, 18, 211, 0, 128, 0, 64, 30, 83, 208, 0, 31,
66, 28, 0, 20, 42, 77, 25, 140, 126, 0, 124, 49, 110, 74, 69, 82, 74, 0, 0, 255, 83, 31, 124,
255, 3, 31, 0, 255, 31, 167, 0, 239, 27, 31, 0, 239, 27, 0, 124, 0, 0, 255, 3, 206, 237, 102,
102, 204, 13, 0, 11, 3, 115, 0, 131, 0, 12, 0, 13, 0, 8, 17, 31, 136, 137, 0, 14, 220, 204,
110, 230, 221, 221, 217, 153, 187, 187, 103, 99, 110, 14, 236, 204, 221, 220, 153, 159, 187,
185, 51, 62, 60, 66, 185, 165, 185, 165, 66, 60, 88, 67, 224, 112, 62, 252, 224, 71, 205, 117,
2, 205, 0, 2, 38, 208, 205, 3, 2, 33, 0, 254, 14, 160, 175, 34, 13, 32, 252, 17, 4, 1, 33, 16,
128, 76, 26, 226, 12, 205, 198, 3, 205, 199, 3, 19, 123, 254, 52, 32, 241, 17, 114, 0, 6, 8,
26, 19, 34, 35, 5, 32, 249, 205, 240, 3, 62, 1, 224, 79, 62, 145, 224, 64, 33, 178, 152, 6, 78,
14, 68, 205, 145, 2, 175, 224, 79, 14, 128, 33, 66, 0, 6, 24, 242, 12, 190, 32, 254, 35, 5, 32,
247, 33, 52, 1, 6, 25, 120, 134, 44, 5, 32, 251, 134, 32, 254, 205, 28, 3, 24, 2, 0, 0, 205,
208, 5, 175, 224, 112, 62, 17, 224, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 128, 175, 34, 203, 108, 40, 251, 201, 42, 18,
19, 13, 32, 250, 201, 229, 33, 15, 255, 203, 134, 203, 70, 40, 252, 225, 201, 17, 0, 255, 33,
3, 208, 14, 15, 62, 48, 18, 62, 32, 18, 26, 47, 161, 203, 55, 71, 62, 16, 18, 26, 47, 161, 176,
79, 126, 169, 230, 240, 71, 42, 169, 161, 176, 50, 71, 121, 119, 62, 48, 18, 201, 62, 128, 224,
104, 224, 106, 14, 107, 42, 226, 5, 32, 251, 74, 9, 67, 14, 105, 42, 226, 5, 32, 251, 201, 197,
213, 229, 33, 0, 216, 6, 1, 22, 63, 30, 64, 205, 74, 2, 225, 209, 193, 201, 62, 128, 224, 38,
224, 17, 62, 243, 224, 18, 224, 37, 62, 119, 224, 36, 33, 48, 255, 175, 14, 16, 34, 47, 13, 32,
251, 201, 205, 17, 2, 205, 98, 2, 121, 254, 56, 32, 20, 229, 175, 224, 79, 33, 167, 153, 62,
56, 34, 60, 254, 63, 32, 250, 62, 1, 224, 79, 225, 197, 229, 33, 67, 1, 203, 126, 204, 137, 5,
225, 193, 205, 17, 2, 121, 214, 48, 210, 6, 3, 121, 254, 1, 202, 6, 3, 125, 254, 209, 40, 33,
197, 6, 3, 14, 1, 22, 3, 126, 230, 248, 177, 34, 21, 32, 248, 12, 121, 254, 6, 32, 240, 17, 17,
0, 25, 5, 32, 231, 17, 161, 255, 25, 193, 4, 120, 30, 131, 254, 98, 40, 6, 30, 193, 254, 100,
32, 7, 123, 224, 19, 62, 135, 224, 20, 250, 2, 208, 254, 0, 40, 10, 61, 234, 2, 208, 121, 254,
1, 202, 145, 2, 13, 194, 145, 2, 201, 14, 38, 205, 74, 3, 205, 17, 2, 205, 98, 2, 13, 32, 244,
205, 17, 2, 62, 1, 224, 79, 205, 62, 3, 205, 65, 3, 175, 224, 79, 205, 62, 3, 201, 33, 8, 0,
17, 81, 255, 14, 5, 205, 10, 2, 201, 197, 213, 229, 33, 64, 216, 14, 32, 126, 230, 31, 254, 31,
40, 1, 60, 87, 42, 7, 7, 7, 230, 7, 71, 58, 7, 7, 7, 230, 24, 176, 254, 31, 40, 1, 60, 15, 15,
15, 71, 230, 224, 178, 34, 120, 230, 3, 95, 126, 15, 15, 230, 31, 254, 31, 40, 1, 60, 7, 7,
179, 34, 13, 32, 199, 225, 209, 193, 201, 14, 0, 26, 230, 240, 203, 73, 40, 2, 203, 55, 71, 35,
126, 176, 34, 26, 230, 15, 203, 73, 32, 2, 203, 55, 71, 35, 126, 176, 34, 19, 203, 65, 40, 13,
213, 17, 248, 255, 203, 73, 40, 3, 17, 8, 0, 25, 209, 12, 121, 254, 24, 32, 204, 201, 71, 213,
22, 4, 88, 203, 16, 23, 203, 19, 23, 21, 32, 246, 209, 34, 35, 34, 35, 201, 62, 25, 234, 16,
153, 33, 47, 153, 14, 12, 61, 40, 8, 50, 13, 32, 249, 46, 15, 24, 243, 201, 62, 1, 224, 79,
205, 0, 2, 17, 7, 6, 33, 128, 128, 14, 192, 26, 34, 35, 34, 35, 19, 13, 32, 247, 17, 4, 1, 205,
143, 3, 1, 168, 255, 9, 205, 143, 3, 1, 248, 255, 9, 17, 114, 0, 14, 8, 35, 26, 34, 19, 13, 32,
249, 33, 194, 152, 6, 8, 62, 8, 14, 16, 34, 13, 32, 252, 17, 16, 0, 25, 5, 32, 243, 175, 224,
79, 33, 194, 152, 62, 8, 34, 60, 254, 24, 32, 2, 46, 226, 254, 40, 32, 3, 33, 2, 153, 254, 56,
32, 237, 33, 216, 8, 17, 64, 216, 6, 8, 62, 255, 18, 19, 18, 19, 14, 2, 205, 10, 2, 62, 0, 18,
19, 18, 19, 19, 19, 5, 32, 234, 205, 98, 2, 33, 75, 1, 126, 254, 51, 32, 11, 46, 68, 30, 48,
42, 187, 32, 73, 28, 24, 4, 46, 75, 30, 1, 42, 187, 32, 62, 46, 52, 1, 16, 0, 42, 128, 71, 13,
32, 250, 234, 0, 208, 33, 199, 6, 14, 0, 42, 184, 40, 8, 12, 121, 254, 79, 32, 246, 24, 31,
121, 214, 65, 56, 28, 33, 22, 7, 22, 0, 95, 25, 250, 55, 1, 87, 126, 186, 40, 13, 17, 14, 0,
25, 121, 131, 79, 214, 94, 56, 237, 14, 0, 33, 51, 7, 6, 0, 9, 126, 230, 31, 234, 8, 208, 126,
230, 224, 7, 7, 7, 234, 11, 208, 205, 233, 4, 201, 17, 145, 7, 33, 0, 217, 250, 11, 208, 71,
14, 30, 203, 64, 32, 2, 19, 19, 26, 34, 32, 2, 27, 27, 203, 72, 32, 2, 19, 19, 26, 34, 19, 19,
32, 2, 27, 27, 203, 80, 40, 5, 27, 43, 26, 34, 19, 26, 34, 19, 13, 32, 215, 33, 0, 217, 17, 0,
218, 205, 100, 5, 201, 33, 18, 0, 250, 5, 208, 7, 7, 6, 0, 79, 9, 17, 64, 216, 6, 8, 229, 14,
2, 205, 10, 2, 19, 19, 19, 19, 19, 19, 225, 5, 32, 240, 17, 66, 216, 14, 2, 205, 10, 2, 17, 74,
216, 14, 2, 205, 10, 2, 43, 43, 17, 68, 216, 14, 2, 205, 10, 2, 201, 14, 96, 42, 229, 197, 33,
232, 7, 6, 0, 79, 9, 14, 8, 205, 10, 2, 193, 225, 13, 32, 236, 201, 250, 8, 208, 17, 24, 0, 60,
61, 40, 3, 25, 32, 250, 201, 205, 29, 2, 120, 230, 255, 40, 15, 33, 228, 8, 6, 0, 42, 185, 40,
8, 4, 120, 254, 12, 32, 246, 24, 45, 120, 234, 5, 208, 62, 30, 234, 2, 208, 17, 11, 0, 25, 86,
122, 230, 31, 95, 33, 8, 208, 58, 34, 123, 119, 122, 230, 224, 7, 7, 7, 95, 33, 11, 208, 58,
34, 123, 119, 205, 233, 4, 205, 40, 5, 201, 205, 17, 2, 250, 67, 1, 203, 127, 40, 4, 224, 76,
24, 40, 62, 4, 224, 76, 62, 1, 224, 108, 33, 0, 218, 205, 123, 5, 6, 16, 22, 0, 30, 8, 205, 74,
2, 33, 122, 0, 250, 0, 208, 71, 14, 2, 42, 184, 204, 218, 3, 13, 32, 248, 201, 1, 15, 63, 126,
255, 255, 192, 0, 192, 240, 241, 3, 124, 252, 254, 254, 3, 7, 7, 15, 224, 224, 240, 240, 30,
62, 126, 254, 15, 15, 31, 31, 255, 255, 0, 0, 1, 1, 1, 3, 255, 255, 225, 224, 192, 240, 249,
251, 31, 127, 248, 224, 243, 253, 62, 30, 224, 240, 249, 127, 62, 124, 248, 224, 248, 240, 240,
248, 0, 0, 127, 127, 7, 15, 159, 191, 158, 31, 255, 255, 15, 30, 62, 60, 241, 251, 127, 127,
254, 222, 223, 159, 31, 63, 62, 60, 248, 248, 0, 0, 3, 3, 7, 7, 255, 255, 193, 192, 243, 231,
247, 243, 192, 192, 192, 192, 31, 31, 30, 62, 63, 31, 62, 62, 128, 0, 0, 0, 124, 31, 7, 0, 15,
255, 254, 0, 124, 248, 240, 0, 31, 15, 15, 0, 124, 248, 248, 0, 63, 62, 28, 0, 15, 15, 15, 0,
124, 255, 255, 0, 0, 248, 248, 0, 7, 15, 15, 0, 129, 255, 255, 0, 243, 225, 128, 0, 224, 255,
127, 0, 252, 240, 192, 0, 62, 124, 124, 0, 0, 0, 0, 0, 0, 136, 22, 54, 209, 219, 242, 60, 140,
146, 61, 92, 88, 201, 62, 112, 29, 89, 105, 25, 53, 168, 20, 170, 117, 149, 153, 52, 111, 21,
255, 151, 75, 144, 23, 16, 57, 247, 246, 162, 73, 78, 67, 104, 224, 139, 240, 206, 12, 41, 232,
183, 134, 154, 82, 1, 157, 113, 156, 189, 93, 109, 103, 63, 107, 179, 70, 40, 165, 198, 211,
39, 97, 24, 102, 106, 191, 13, 244, 66, 69, 70, 65, 65, 82, 66, 69, 75, 69, 75, 32, 82, 45, 85,
82, 65, 82, 32, 73, 78, 65, 73, 76, 73, 67, 69, 32, 82, 124, 8, 18, 163, 162, 7, 135, 75, 32,
18, 101, 168, 22, 169, 134, 177, 104, 160, 135, 102, 18, 161, 48, 60, 18, 133, 18, 100, 27, 7,
6, 111, 110, 110, 174, 175, 111, 178, 175, 178, 168, 171, 111, 175, 134, 174, 162, 162, 18,
175, 19, 18, 161, 110, 175, 175, 173, 6, 76, 110, 175, 175, 18, 124, 172, 168, 106, 110, 19,
160, 45, 168, 43, 172, 100, 172, 109, 135, 188, 96, 180, 19, 114, 124, 181, 174, 174, 124, 124,
101, 162, 108, 100, 133, 128, 176, 64, 136, 32, 104, 222, 0, 112, 222, 32, 120, 32, 32, 56, 32,
176, 144, 32, 176, 160, 224, 176, 192, 152, 182, 72, 128, 224, 80, 30, 30, 88, 32, 184, 224,
136, 176, 16, 32, 0, 16, 32, 224, 24, 224, 24, 0, 24, 224, 32, 168, 224, 32, 24, 224, 0, 32,
24, 216, 200, 24, 224, 0, 224, 64, 40, 40, 40, 24, 224, 96, 32, 24, 224, 0, 0, 8, 224, 24, 48,
208, 208, 208, 32, 224, 232, 255, 127, 191, 50, 208, 0, 0, 0, 159, 99, 121, 66, 176, 21, 203,
4, 255, 127, 49, 110, 74, 69, 0, 0, 255, 127, 239, 27, 0, 2, 0, 0, 255, 127, 31, 66, 242, 28,
0, 0, 255, 127, 148, 82, 74, 41, 0, 0, 255, 127, 255, 3, 47, 1, 0, 0, 255, 127, 239, 3, 214, 1,
0, 0, 255, 127, 181, 66, 200, 61, 0, 0, 116, 126, 255, 3, 128, 1, 0, 0, 255, 103, 172, 119, 19,
26, 107, 45, 214, 126, 255, 75, 117, 33, 0, 0, 255, 83, 95, 74, 82, 126, 0, 0, 255, 79, 210,
126, 76, 58, 224, 28, 237, 3, 255, 127, 95, 37, 0, 0, 106, 3, 31, 2, 255, 3, 255, 127, 255,
127, 223, 1, 18, 1, 0, 0, 31, 35, 95, 3, 242, 0, 9, 0, 255, 127, 234, 3, 31, 1, 0, 0, 159, 41,
26, 0, 12, 0, 0, 0, 255, 127, 127, 2, 31, 0, 0, 0, 255, 127, 224, 3, 6, 2, 32, 1, 255, 127,
235, 126, 31, 0, 0, 124, 255, 127, 255, 63, 0, 126, 31, 0, 255, 127, 255, 3, 31, 0, 0, 0, 255,
3, 31, 0, 12, 0, 0, 0, 255, 127, 63, 3, 147, 1, 0, 0, 0, 0, 0, 66, 127, 3, 255, 127, 255, 127,
140, 126, 0, 124, 0, 0, 255, 127, 239, 27, 128, 97, 0, 0, 255, 127, 0, 124, 224, 3, 31, 124,
31, 0, 255, 3, 64, 65, 66, 32, 33, 34, 128, 129, 130, 16, 17, 18, 18, 176, 121, 184, 173, 22,
23, 7, 186, 5, 124, 19, 0, 0, 0, 0,
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
pub const CGB_BOYTACEAN: [u8; 2304] = [
49, 254, 255, 205, 166, 5, 38, 254, 14, 160, 34, 13, 32, 252, 14, 16, 33, 48, 255, 34, 47, 13,
32, 251, 224, 193, 224, 128, 62, 128, 224, 38, 224, 17, 62, 243, 224, 18, 224, 37, 62, 119,
224, 36, 62, 252, 224, 71, 17, 4, 1, 33, 16, 128, 26, 71, 205, 113, 5, 19, 123, 254, 52, 32,
245, 205, 1, 6, 62, 1, 224, 79, 205, 166, 5, 205, 211, 5, 6, 3, 33, 194, 152, 22, 3, 62, 8, 14,
16, 245, 62, 1, 224, 79, 54, 8, 175, 224, 79, 241, 34, 130, 13, 32, 240, 214, 47, 213, 17, 16,
0, 25, 209, 5, 32, 227, 21, 40, 10, 21, 62, 56, 46, 167, 1, 7, 1, 24, 216, 17, 97, 5, 14, 8,
33, 129, 255, 175, 47, 34, 34, 26, 28, 246, 32, 71, 26, 29, 246, 132, 31, 203, 24, 112, 44, 34,
175, 34, 34, 26, 28, 34, 26, 28, 34, 175, 13, 32, 225, 205, 109, 7, 62, 145, 224, 64, 205, 14,
6, 62, 48, 224, 194, 6, 4, 205, 149, 5, 62, 131, 205, 159, 5, 6, 5, 205, 149, 5, 62, 193, 205,
159, 5, 205, 148, 7, 205, 137, 5, 33, 194, 255, 53, 32, 244, 205, 55, 6, 24, 34, 208, 0, 152,
160, 18, 208, 0, 128, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 224, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 136, 22, 54, 209, 219, 242, 60, 140, 146, 61, 92, 88, 201, 62, 112, 29, 89,
105, 25, 53, 168, 20, 170, 117, 149, 153, 52, 111, 21, 255, 151, 75, 144, 23, 16, 57, 247, 246,
162, 73, 78, 67, 104, 224, 139, 240, 206, 12, 41, 232, 183, 134, 154, 82, 1, 157, 113, 156,
189, 93, 109, 103, 63, 107, 179, 70, 40, 165, 198, 211, 39, 97, 24, 102, 106, 191, 13, 244,
179, 70, 40, 165, 198, 211, 39, 97, 24, 102, 106, 191, 13, 244, 179, 0, 4, 5, 35, 34, 3, 31,
15, 10, 5, 19, 36, 135, 37, 30, 44, 21, 32, 31, 20, 5, 33, 13, 14, 5, 29, 5, 18, 9, 3, 2, 26,
25, 25, 41, 42, 26, 45, 42, 45, 36, 38, 154, 42, 30, 41, 34, 34, 5, 42, 6, 5, 33, 25, 42, 42,
40, 2, 16, 25, 42, 42, 5, 0, 39, 36, 22, 25, 6, 32, 12, 36, 11, 39, 18, 39, 24, 31, 50, 17, 46,
6, 27, 0, 47, 41, 41, 0, 0, 19, 34, 23, 18, 29, 66, 69, 70, 65, 65, 82, 66, 69, 75, 69, 75, 32,
82, 45, 85, 82, 65, 82, 32, 73, 78, 65, 73, 76, 73, 67, 69, 32, 82, 32, 32, 232, 144, 144, 144,
160, 160, 160, 192, 192, 192, 72, 72, 72, 0, 0, 0, 216, 216, 216, 40, 40, 40, 96, 96, 96, 208,
208, 208, 128, 64, 64, 32, 224, 224, 32, 16, 16, 24, 32, 32, 32, 232, 232, 224, 32, 224, 16,
136, 16, 128, 128, 64, 32, 32, 56, 32, 32, 144, 32, 32, 160, 152, 152, 72, 30, 30, 88, 136,
136, 16, 32, 32, 16, 32, 32, 24, 224, 224, 0, 24, 24, 0, 0, 0, 8, 144, 176, 144, 160, 176, 160,
192, 176, 192, 128, 176, 64, 136, 32, 104, 222, 0, 112, 222, 32, 120, 152, 182, 72, 128, 224,
80, 32, 184, 224, 136, 176, 16, 32, 0, 16, 32, 224, 24, 224, 24, 0, 24, 224, 32, 168, 224, 32,
24, 224, 0, 200, 24, 224, 0, 224, 64, 32, 24, 224, 224, 24, 48, 32, 224, 232, 240, 240, 240,
248, 248, 248, 224, 32, 8, 0, 0, 16, 255, 127, 191, 50, 208, 0, 0, 0, 159, 99, 121, 66, 176,
21, 203, 4, 255, 127, 49, 110, 74, 69, 0, 0, 255, 127, 239, 27, 0, 2, 0, 0, 255, 127, 31, 66,
242, 28, 0, 0, 255, 127, 148, 82, 74, 41, 0, 0, 255, 127, 255, 3, 47, 1, 0, 0, 255, 127, 239,
3, 214, 1, 0, 0, 255, 127, 181, 66, 200, 61, 0, 0, 116, 126, 255, 3, 128, 1, 0, 0, 255, 103,
172, 119, 19, 26, 107, 45, 214, 126, 255, 75, 117, 33, 0, 0, 255, 83, 95, 74, 82, 126, 0, 0,
255, 79, 210, 126, 76, 58, 224, 28, 237, 3, 255, 127, 95, 37, 0, 0, 106, 3, 31, 2, 255, 3, 255,
127, 255, 127, 223, 1, 18, 1, 0, 0, 31, 35, 95, 3, 242, 0, 9, 0, 255, 127, 234, 3, 31, 1, 0, 0,
159, 41, 26, 0, 12, 0, 0, 0, 255, 127, 127, 2, 31, 0, 0, 0, 255, 127, 224, 3, 6, 2, 32, 1, 255,
127, 235, 126, 31, 0, 0, 124, 255, 127, 255, 63, 0, 126, 31, 0, 255, 127, 255, 3, 31, 0, 0, 0,
255, 3, 31, 0, 12, 0, 0, 0, 255, 127, 63, 3, 147, 1, 0, 0, 0, 0, 0, 66, 127, 3, 255, 127, 255,
127, 140, 126, 0, 124, 0, 0, 255, 127, 239, 27, 128, 97, 0, 0, 255, 127, 234, 127, 95, 125, 0,
0, 120, 71, 144, 50, 135, 29, 97, 8, 3, 144, 15, 24, 0, 120, 129, 9, 18, 21, 84, 147, 153, 156,
159, 162, 60, 66, 185, 165, 185, 165, 66, 60, 2, 0, 36, 3, 12, 0, 6, 255, 8, 199, 8, 255, 8,
199, 6, 255, 16, 0, 6, 128, 4, 131, 2, 135, 4, 7, 6, 143, 6, 135, 4, 3, 22, 0, 2, 240, 2, 248,
2, 252, 4, 60, 6, 62, 4, 60, 2, 252, 2, 248, 2, 240, 22, 0, 4, 120, 2, 124, 4, 60, 2, 63, 4,
31, 4, 15, 8, 7, 2, 31, 4, 63, 2, 30, 12, 0, 4, 121, 2, 249, 6, 240, 4, 224, 4, 192, 10, 128,
8, 0, 10, 60, 6, 255, 12, 60, 2, 63, 6, 31, 22, 0, 6, 135, 4, 0, 6, 15, 2, 14, 2, 142, 6, 143,
22, 0, 6, 248, 4, 120, 6, 249, 4, 120, 6, 248, 22, 0, 2, 63, 2, 127, 2, 255, 6, 243, 2, 224, 6,
243, 4, 127, 2, 63, 22, 0, 4, 129, 6, 195, 2, 199, 2, 7, 2, 199, 6, 195, 4, 129, 22, 0, 4, 254,
2, 255, 4, 207, 6, 255, 4, 128, 6, 254, 22, 0, 6, 31, 4, 0, 6, 31, 4, 28, 6, 31, 22, 0, 26,
227, 22, 0, 6, 255, 20, 195, 22, 0, 26, 128, 10, 0, 0, 255, 127, 79, 119, 199, 34, 159, 3, 125,
1, 29, 36, 56, 109, 0, 85, 205, 116, 5, 62, 4, 14, 0, 203, 32, 245, 203, 17, 241, 203, 17, 61,
32, 245, 121, 34, 35, 34, 35, 201, 229, 33, 15, 255, 203, 134, 203, 70, 40, 252, 225, 201, 205,
148, 7, 205, 137, 5, 5, 32, 247, 201, 224, 19, 62, 135, 224, 20, 201, 33, 0, 128, 175, 34, 203,
108, 40, 250, 201, 205, 179, 5, 26, 161, 71, 28, 28, 26, 29, 29, 161, 203, 55, 176, 203, 65,
40, 2, 203, 55, 35, 34, 203, 49, 201, 205, 205, 5, 205, 176, 5, 28, 123, 201, 33, 150, 4, 17,
127, 128, 70, 4, 5, 40, 10, 35, 126, 35, 19, 18, 5, 32, 251, 24, 241, 98, 46, 128, 17, 4, 1,
14, 240, 205, 202, 5, 198, 22, 95, 205, 202, 5, 214, 22, 95, 254, 28, 32, 238, 35, 17, 142, 4,
14, 8, 26, 19, 34, 35, 13, 32, 249, 201, 62, 1, 224, 79, 22, 26, 6, 2, 205, 149, 5, 33, 192,
152, 14, 3, 126, 254, 15, 40, 5, 52, 230, 7, 40, 3, 35, 24, 243, 125, 246, 31, 111, 35, 13, 32,
235, 21, 32, 222, 201, 6, 32, 14, 32, 33, 129, 255, 197, 42, 95, 58, 87, 1, 33, 4, 123, 230,
31, 254, 31, 32, 1, 13, 123, 254, 224, 56, 9, 122, 230, 3, 254, 3, 32, 2, 203, 169, 122, 230,
124, 254, 124, 32, 2, 203, 144, 123, 129, 34, 122, 136, 34, 193, 13, 32, 207, 205, 137, 5, 205,
109, 7, 205, 137, 5, 5, 32, 190, 62, 2, 224, 112, 33, 0, 208, 205, 169, 5, 60, 205, 129, 7,
205, 134, 7, 205, 129, 7, 175, 224, 112, 47, 224, 0, 87, 89, 46, 13, 250, 67, 1, 203, 127, 204,
198, 6, 203, 127, 224, 76, 240, 128, 71, 40, 5, 240, 193, 167, 32, 6, 175, 79, 62, 17, 97, 201,
205, 198, 6, 224, 76, 62, 1, 201, 33, 125, 4, 79, 6, 0, 9, 126, 201, 62, 1, 224, 108, 205, 241,
6, 203, 127, 196, 52, 8, 203, 191, 71, 128, 128, 71, 240, 193, 167, 40, 5, 205, 189, 6, 24, 1,
120, 205, 137, 5, 205, 72, 7, 62, 4, 17, 8, 0, 46, 124, 201, 33, 75, 1, 126, 254, 51, 40, 5,
61, 32, 66, 24, 12, 46, 68, 42, 254, 48, 32, 57, 126, 254, 49, 32, 52, 46, 52, 14, 16, 175,
134, 44, 13, 32, 251, 224, 128, 71, 33, 0, 2, 125, 214, 94, 200, 42, 184, 32, 248, 125, 214,
66, 56, 14, 229, 125, 198, 122, 111, 126, 225, 79, 250, 55, 1, 185, 32, 229, 125, 198, 93, 111,
120, 224, 128, 126, 201, 175, 201, 33, 217, 2, 6, 0, 79, 9, 201, 205, 64, 7, 30, 0, 42, 229,
33, 126, 3, 79, 9, 22, 8, 14, 106, 205, 118, 7, 225, 203, 91, 32, 4, 30, 8, 24, 233, 78, 33,
126, 3, 9, 22, 8, 24, 5, 33, 129, 255, 22, 64, 30, 0, 14, 104, 62, 128, 179, 226, 12, 42, 226,
21, 32, 251, 201, 224, 79, 33, 220, 0, 205, 137, 5, 14, 81, 6, 5, 42, 226, 12, 5, 32, 250, 201,
62, 32, 224, 0, 240, 0, 47, 230, 15, 200, 46, 0, 44, 31, 48, 252, 62, 16, 224, 0, 240, 0, 47,
23, 23, 230, 12, 133, 111, 240, 193, 189, 200, 125, 224, 193, 197, 213, 205, 189, 6, 205, 64,
7, 44, 44, 78, 33, 127, 3, 9, 58, 254, 127, 32, 2, 35, 35, 245, 42, 229, 33, 129, 255, 205, 42,
8, 46, 131, 205, 42, 8, 225, 224, 135, 42, 229, 33, 130, 255, 205, 42, 8, 46, 132, 205, 42, 8,
225, 224, 136, 241, 40, 2, 35, 35, 240, 187, 230, 222, 71, 42, 230, 222, 128, 71, 250, 188,
255, 203, 151, 78, 203, 145, 137, 31, 234, 188, 255, 120, 31, 234, 187, 255, 45, 42, 224, 191,
42, 224, 192, 42, 224, 133, 42, 224, 134, 205, 137, 5, 205, 109, 7, 62, 48, 224, 194, 209, 193,
201, 17, 8, 0, 75, 119, 25, 13, 32, 251, 201, 245, 205, 137, 5, 62, 25, 234, 16, 153, 33, 47,
153, 14, 12, 61, 40, 8, 50, 13, 32, 249, 46, 15, 24, 245, 241, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
];
#[cfg_attr(feature = "wasm", wasm_bindgen)]
#[derive(Clone, Copy, PartialEq, Eq)]
pub enum BootRom {
Dmg,
Sgb,
DmgBootix,
MgbBootix,
Cgb,
Other,
None,
}
impl BootRom {
pub fn description(&self) -> &'static str {
match self {
BootRom::Dmg => "DMG",
BootRom::Sgb => "SGB",
BootRom::DmgBootix => "DMG Bootix",
BootRom::MgbBootix => "MGB Bootix",
BootRom::Cgb => "CGB",
BootRom::CgbBoytacean => "CGB Boytacean",
BootRom::Other => "Other",
BootRom::None => "None",
}
}
pub fn normalize(&self) -> Option<BootRom> {
match self {
BootRom::None => None,
_ => Some(*self),
}
}
pub fn reusable(&self, mode: GameBoyMode) -> Option<BootRom> {
match self {
BootRom::Other | BootRom::None => None,
_ => {
if self.is_match(mode) {
Some(*self)
} else {
None
}
}
}
}
pub fn is_dmg(&self) -> bool {
matches!(self, BootRom::Dmg | BootRom::DmgBootix)
}
pub fn is_cgb(&self) -> bool {
matches!(self, BootRom::Cgb | BootRom::CgbBoytacean)
}
pub fn is_dmg_compat(&self) -> bool {
BootRom::Dmg
| BootRom::Sgb
| BootRom::DmgBootix
| BootRom::MgbBootix
| BootRom::Cgb
pub fn is_cgb_compat(&self) -> bool {
matches!(self, BootRom::Cgb | BootRom::CgbBoytacean | BootRom::Other)
}
pub fn is_match(&self, mode: GameBoyMode) -> bool {
match mode {
GameBoyMode::Dmg => self.is_dmg(),
GameBoyMode::Cgb => self.is_cgb(),
GameBoyMode::Sgb => unimplemented!("SGB is not supported"),
}
}
pub fn is_compat(&self, mode: GameBoyMode) -> bool {
match mode {
GameBoyMode::Dmg => self.is_dmg_compat(),
GameBoyMode::Cgb => self.is_cgb_compat(),
GameBoyMode::Sgb => unimplemented!("SGB is not supported"),
}
}
impl Display for BootRom {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.description())
}
}