@@ -268,63 +268,63 @@ The tables above were obtained from analysis of [the boot ROM's disassemblies](h
268
268
269
269
As far as timing-sensitive values are concerned, these values are recorded at PC = $0100.
270
270
271
- Name | Address | DMG0 | DMG / MGB | SGB / SGB2 | CGB / AGB
272
- -------------:|:-------:|:----:|:---------:|:----------:|:-----------:
273
- [ ` P1 ` ] | $FF00 | $CF | $CF | $C7 or $CF | $C7 or $CF
274
- [ ` SB ` ] | $FF01 | $00 | $00 | $00 | $00
275
- [ ` SC ` ] | $FF02 | $7E | $7E | $7E | $7F
276
- [ ` DIV ` ] | $FF04 | $18 | $AB | ??[ ^ unk ] | ??[ ^ unk_pad ]
277
- [ ` TIMA ` ] | $FF05 | $00 | $00 | $00 | $00
278
- [ ` TMA ` ] | $FF06 | $00 | $00 | $00 | $00
279
- [ ` TAC ` ] | $FF07 | $F8 | $F8 | $F8 | $F8
280
- [ ` IF ` ] | $FF0F | $E1 | $E1 | $E1 | $E1
281
- [ ` NR10 ` ] | $FF10 | $80 | $80 | $80 | $80
282
- [ ` NR11 ` ] | $FF11 | $BF | $BF | $BF | $BF
283
- [ ` NR12 ` ] | $FF12 | $F3 | $F3 | $F3 | $F3
284
- [ ` NR13 ` ] | $FF13 | $FF | $FF | $FF | $FF
285
- [ ` NR14 ` ] | $FF14 | $BF | $BF | $BF | $BF
286
- [ ` NR21 ` ] | $FF16 | $3F | $3F | $3F | $3F
287
- [ ` NR22 ` ] | $FF17 | $00 | $00 | $00 | $00
288
- [ ` NR23 ` ] | $FF18 | $FF | $FF | $FF | $FF
289
- [ ` NR24 ` ] | $FF19 | $BF | $BF | $BF | $BF
290
- [ ` NR30 ` ] | $FF1A | $7F | $7F | $7F | $7F
291
- [ ` NR31 ` ] | $FF1B | $FF | $FF | $FF | $FF
292
- [ ` NR32 ` ] | $FF1C | $9F | $9F | $9F | $9F
293
- [ ` NR33 ` ] | $FF1D | $FF | $FF | $FF | $FF
294
- [ ` NR34 ` ] | $FF1E | $BF | $BF | $BF | $BF
295
- [ ` NR41 ` ] | $FF20 | $FF | $FF | $FF | $FF
296
- [ ` NR42 ` ] | $FF21 | $00 | $00 | $00 | $00
297
- [ ` NR43 ` ] | $FF22 | $00 | $00 | $00 | $00
298
- [ ` NR44 ` ] | $FF23 | $BF | $BF | $BF | $BF
299
- [ ` NR50 ` ] | $FF24 | $77 | $77 | $77 | $77
300
- [ ` NR51 ` ] | $FF25 | $F3 | $F3 | $F3 | $F3
301
- [ ` NR52 ` ] | $FF26 | $F1 | $F1 | $F0 | $F1
302
- [ ` LCDC ` ] | $FF40 | $91 | $91 | $91 | $91
303
- [ ` STAT ` ] | $FF41 | $81 | $85 | ??[ ^ unk ] | ??[ ^ unk_pad ]
304
- [ ` SCY ` ] | $FF42 | $00 | $00 | $00 | $00
305
- [ ` SCX ` ] | $FF43 | $00 | $00 | $00 | $00
306
- [ ` LY ` ] | $FF44 | $91 | $00 | ??[ ^ unk ] | ??[ ^ unk_pad ]
307
- [ ` LYC ` ] | $FF45 | $00 | $00 | $00 | $00
308
- [ ` DMA ` ] | $FF46 | $FF | $FF | $FF | $00
309
- [ ` BGP ` ] | $FF47 | $FC | $FC | $FC | $FC
310
- [ ` OBP0 ` ] | $FF48 | $FF | $FF | $FF | $00
311
- [ ` OBP1 ` ] | $FF49 | $FF | $FF | $FF | $00
312
- [ ` WY ` ] | $FF4A | $00 | $00 | $00 | $00
313
- [ ` WX ` ] | $FF4B | $00 | $00 | $00 | $00
314
- [ ` KEY1 ` ] | $FF4D | $FF | $FF | $FF | $FF
315
- [ ` VBK ` ] | $FF4F | $FF | $FF | $FF | $FF
316
- [ ` HDMA1 ` ] | $FF51 | $FF | $FF | $FF | $FF
317
- [ ` HDMA2 ` ] | $FF52 | $FF | $FF | $FF | $FF
318
- [ ` HDMA3 ` ] | $FF53 | $FF | $FF | $FF | $FF
319
- [ ` HDMA4 ` ] | $FF54 | $FF | $FF | $FF | $FF
320
- [ ` HDMA5 ` ] | $FF55 | $FF | $FF | $FF | $FF
321
- [ ` RP ` ] | $FF56 | $FF | $FF | $FF | $FF
322
- [ ` BCPS ` ] | $FF68 | $FF | $FF | $FF | ??[ ^ compat ]
323
- [ ` BCPD ` ] | $FF69 | $FF | $FF | $FF | ??[ ^ compat ]
324
- [ ` OCPS ` ] | $FF6A | $FF | $FF | $FF | ??[ ^ compat ]
325
- [ ` OCPD ` ] | $FF6B | $FF | $FF | $FF | ??[ ^ compat ]
326
- [ ` SVBK ` ] | $FF70 | $FF | $FF | $FF | $FF
327
- [ ` IE ` ] | $FFFF | $00 | $00 | $00 | $00
271
+ Name | Address | DMG0 | DMG / MGB | SGB / SGB2 | CGB / AGB
272
+ -------------:|:-------:|:-------- :|:---------:|:----------:|:-----------:
273
+ [ ` P1 ` ] | $FF00 | $CF | $CF | $C7 or $CF | $C7 or $CF
274
+ [ ` SB ` ] | $FF01 | $00 | $00 | $00 | $00
275
+ [ ` SC ` ] | $FF02 | $7E | $7E | $7E | $7F
276
+ [ ` DIV ` ] | $FF04 | $18 | $AB | ??[ ^ unk ] | ??[ ^ unk_pad ]
277
+ [ ` TIMA ` ] | $FF05 | $00 | $00 | $00 | $00
278
+ [ ` TMA ` ] | $FF06 | $00 | $00 | $00 | $00
279
+ [ ` TAC ` ] | $FF07 | $F8 | $F8 | $F8 | $F8
280
+ [ ` IF ` ] | $FF0F | $E1 | $E1 | $E1 | $E1
281
+ [ ` NR10 ` ] | $FF10 | $80 | $80 | $80 | $80
282
+ [ ` NR11 ` ] | $FF11 | $BF | $BF | $BF | $BF
283
+ [ ` NR12 ` ] | $FF12 | $F3 | $F3 | $F3 | $F3
284
+ [ ` NR13 ` ] | $FF13 | $FF | $FF | $FF | $FF
285
+ [ ` NR14 ` ] | $FF14 | $BF | $BF | $BF | $BF
286
+ [ ` NR21 ` ] | $FF16 | $3F | $3F | $3F | $3F
287
+ [ ` NR22 ` ] | $FF17 | $00 | $00 | $00 | $00
288
+ [ ` NR23 ` ] | $FF18 | $FF | $FF | $FF | $FF
289
+ [ ` NR24 ` ] | $FF19 | $BF | $BF | $BF | $BF
290
+ [ ` NR30 ` ] | $FF1A | $7F | $7F | $7F | $7F
291
+ [ ` NR31 ` ] | $FF1B | $FF | $FF | $FF | $FF
292
+ [ ` NR32 ` ] | $FF1C | $9F | $9F | $9F | $9F
293
+ [ ` NR33 ` ] | $FF1D | $FF | $FF | $FF | $FF
294
+ [ ` NR34 ` ] | $FF1E | $BF | $BF | $BF | $BF
295
+ [ ` NR41 ` ] | $FF20 | $FF | $FF | $FF | $FF
296
+ [ ` NR42 ` ] | $FF21 | $00 | $00 | $00 | $00
297
+ [ ` NR43 ` ] | $FF22 | $00 | $00 | $00 | $00
298
+ [ ` NR44 ` ] | $FF23 | $BF | $BF | $BF | $BF
299
+ [ ` NR50 ` ] | $FF24 | $77 | $77 | $77 | $77
300
+ [ ` NR51 ` ] | $FF25 | $F3 | $F3 | $F3 | $F3
301
+ [ ` NR52 ` ] | $FF26 | $F1 | $F1 | $F0 | $F1
302
+ [ ` LCDC ` ] | $FF40 | $91 | $91 | $91 | $91
303
+ [ ` STAT ` ] | $FF41 | $81 | $85 | ??[ ^ unk ] | ??[ ^ unk_pad ]
304
+ [ ` SCY ` ] | $FF42 | $00 | $00 | $00 | $00
305
+ [ ` SCX ` ] | $FF43 | $00 | $00 | $00 | $00
306
+ [ ` LY ` ] | $FF44 | $91 | $00 | ??[ ^ unk ] | ??[ ^ unk_pad ]
307
+ [ ` LYC ` ] | $FF45 | $00 | $00 | $00 | $00
308
+ [ ` DMA ` ] | $FF46 | $FF | $FF | $FF | $00
309
+ [ ` BGP ` ] | $FF47 | $FC | $FC | $FC | $FC
310
+ [ ` OBP0 ` ] | $FF48 | ?? [ ^ obp ] | ?? [ ^ obp ] | ?? [ ^ obp ] | ?? [ ^ obp ]
311
+ [ ` OBP1 ` ] | $FF49 | ?? [ ^ obp ] | ?? [ ^ obp ] | ?? [ ^ obp ] | ?? [ ^ obp ]
312
+ [ ` WY ` ] | $FF4A | $00 | $00 | $00 | $00
313
+ [ ` WX ` ] | $FF4B | $00 | $00 | $00 | $00
314
+ [ ` KEY1 ` ] | $FF4D | $FF | $FF | $FF | $FF
315
+ [ ` VBK ` ] | $FF4F | $FF | $FF | $FF | $FF
316
+ [ ` HDMA1 ` ] | $FF51 | $FF | $FF | $FF | $FF
317
+ [ ` HDMA2 ` ] | $FF52 | $FF | $FF | $FF | $FF
318
+ [ ` HDMA3 ` ] | $FF53 | $FF | $FF | $FF | $FF
319
+ [ ` HDMA4 ` ] | $FF54 | $FF | $FF | $FF | $FF
320
+ [ ` HDMA5 ` ] | $FF55 | $FF | $FF | $FF | $FF
321
+ [ ` RP ` ] | $FF56 | $FF | $FF | $FF | $FF
322
+ [ ` BCPS ` ] | $FF68 | $FF | $FF | $FF | ??[ ^ compat ]
323
+ [ ` BCPD ` ] | $FF69 | $FF | $FF | $FF | ??[ ^ compat ]
324
+ [ ` OCPS ` ] | $FF6A | $FF | $FF | $FF | ??[ ^ compat ]
325
+ [ ` OCPD ` ] | $FF6B | $FF | $FF | $FF | ??[ ^ compat ]
326
+ [ ` SVBK ` ] | $FF70 | $FF | $FF | $FF | $FF
327
+ [ ` IE ` ] | $FFFF | $00 | $00 | $00 | $00
328
328
329
329
[ ^ unk ] :
330
330
Since this boot ROM's duration depends on the header's contents, a general answer can't be given.
@@ -334,6 +334,11 @@ The value should be static for a given header, though.
334
334
Since this boot ROM's duration depends on the header's contents (and the player's inputs in compatibility mode), an answer can't be given.
335
335
Just don't rely on these.
336
336
337
+ [ ^ obp ] :
338
+ These registers are left entirely uninitialized.
339
+ Their value tends to be most often $00 or $FF, but the value is especially not reliable if your software runs after e.g. a flashcart or multicart selection menu.
340
+ Make sure to always set those before displaying objects for the first time.
341
+
337
342
[ ^ compat ] :
338
343
These depend on whether compatibility mode is enabled.
339
344
0 commit comments