Skip to content

Commit 4147bec

Browse files
committed
Correct information about OBP* power-on value
These were thought to be reliable, but testing shows they are not.
1 parent 9892971 commit 4147bec

File tree

1 file changed

+62
-57
lines changed

1 file changed

+62
-57
lines changed

src/Power_Up_Sequence.md

+62-57
Original file line numberDiff line numberDiff line change
@@ -268,63 +268,63 @@ The tables above were obtained from analysis of [the boot ROM's disassemblies](h
268268

269269
As far as timing-sensitive values are concerned, these values are recorded at PC = $0100.
270270

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
328328

329329
[^unk]:
330330
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.
334334
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.
335335
Just don't rely on these.
336336

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+
337342
[^compat]:
338343
These depend on whether compatibility mode is enabled.
339344

0 commit comments

Comments
 (0)