@@ -40,6 +40,7 @@ rev_Check_hardware_inc : MACRO
4040ENDM
4141
4242_VRAM EQU $8000 ; $8000->$9FFF
43+ _VRAM8000 EQU _VRAM
4344_VRAM8800 EQU $8800
4445_VRAM9000 EQU $9000
4546_SCRN0 EQU $9800 ; $9800->$9BFF
@@ -68,7 +69,7 @@ rRAMB EQU $4000 ; $4000->$5fff - Bit 3 enables rumble (if present)
6869
6970; --
7071; -- P1 ($FF00)
71- ; -- Register for reading joy pad info. (R/W)
72+ ; -- Register for reading joy pad info. (R/W)
7273; --
7374rP1 EQU $FF00
7475
@@ -185,15 +186,15 @@ rAUD1ENV EQU rNR12
185186
186187; --
187188; -- AUD1LOW/NR13 ($FF13)
188- ; -- Frequency lo (W)
189+ ; -- Frequency low byte (W)
189190; --
190191rNR13 EQU $FF13
191192rAUD1LOW EQU rNR13
192193
193194
194195; --
195196; -- AUD1HIGH/NR14 ($FF14)
196- ; -- Frequency hi (W)
197+ ; -- Frequency high byte (W)
197198; --
198199; -- Bit 7 - Initial (when set, sound restarts)
199200; -- Bit 6 - Counter/consecutive selection
@@ -225,15 +226,15 @@ rAUD2ENV EQU rNR22
225226
226227; --
227228; -- AUD2LOW/NR23 ($FF18)
228- ; -- Frequency lo (W)
229+ ; -- Frequency low byte (W)
229230; --
230231rNR23 EQU $FF18
231232rAUD2LOW EQU rNR23
232233
233234
234235; --
235236; -- AUD2HIGH/NR24 ($FF19)
236- ; -- Frequency hi (W)
237+ ; -- Frequency high byte (W)
237238; --
238239; -- see AUD1HIGH for info
239240; --
@@ -277,7 +278,7 @@ rAUD3LEVEL EQU rNR32
277278
278279; --
279280; -- AUD3LOW/NR33 ($FF1D)
280- ; -- Frequency lo (W)
281+ ; -- Frequency low byte (W)
281282; --
282283; -- see AUD1LOW for info
283284; --
@@ -287,7 +288,7 @@ rAUD3LOW EQU rNR33
287288
288289; --
289290; -- AUD3HIGH/NR34 ($FF1E)
290- ; -- Frequency hi (W)
291+ ; -- Frequency high byte (W)
291292; --
292293; -- see AUD1HIGH for info
293294; --
@@ -335,13 +336,12 @@ rAUD4POLY EQU rNR43
335336
336337; --
337338; -- AUD4GO/NR44 ($FF23)
338- ; -- (has wrong name and value (ff30) in Dr.Pan's doc!)
339339; --
340340; -- Bit 7 - Inital
341341; -- Bit 6 - Counter/consecutive selection
342342; --
343343rNR44 EQU $FF23
344- rAUD4GO EQU rNR44 ; silly name!
344+ rAUD4GO EQU rNR44
345345
346346
347347; --
@@ -441,8 +441,8 @@ STATF_MODE10 EQU %00100000 ; Mode 10
441441STATF_MODE01 EQU %00010000 ; Mode 01 (V-Blank)
442442STATF_MODE00 EQU %00001000 ; Mode 00 (H-Blank)
443443STATF_LYCF EQU %00000100 ; Coincidence Flag
444- STATF_HB EQU %00000000 ; H-Blank
445- STATF_VB EQU %00000001 ; V-Blank
444+ STATF_HBL EQU %00000000 ; H-Blank
445+ STATF_VBL EQU %00000001 ; V-Blank
446446STATF_OAM EQU %00000010 ; OAM-RAM is used by system
447447STATF_LCD EQU %00000011 ; Both OAM and VRAM used by system
448448STATF_BUSY EQU %00000010 ; When set, VRAM access is unsafe
@@ -522,6 +522,7 @@ rOBP1 EQU $FF49
522522; -- Window Y Position (R/W)
523523; --
524524; -- 0 <= WY <= 143
525+ ; -- When WY = 0, the window is displayed from the top edge of the LCD screen.
525526; --
526527rWY EQU $FF4A
527528
@@ -531,15 +532,20 @@ rWY EQU $FF4A
531532; -- Window X Position (R/W)
532533; --
533534; -- 7 <= WX <= 166
535+ ; -- When WX = 7, the window is displayed from the left edge of the LCD screen.
536+ ; -- Values of 0-6 and 166 are unreliable due to hardware bugs.
534537; --
535538rWX EQU $FF4B
536539
537540
538541; --
539- ; -- KEY 1 ($FF4D)
542+ ; -- SPEED ($FF4D)
540543; -- Select CPU Speed (R/W)
541544; --
542- rKEY1 EQU $FF4D
545+ rSPD EQU $FF4D
546+
547+ SPDF_DBLSPEED EQU %10000000 ; 0=Normal Speed, 1=Double Speed (R)
548+ SPDF_PREPARE EQU %00000001 ; 0=No, 1=Prepare (R/W)
543549
544550
545551; --
@@ -553,38 +559,49 @@ rVBK EQU $FF4F
553559
554560; --
555561; -- HDMA1 ($FF51)
556- ; -- Horizontal Blanking, General Purpose DMA (W)
562+ ; -- High byte for Horizontal Blanking/General Purpose DMA source address (W)
563+ ; -- CGB Mode Only
557564; --
558565rHDMA1 EQU $FF51
559566
560567
561568; --
562569; -- HDMA2 ($FF52)
563- ; -- Horizontal Blanking, General Purpose DMA (W)
570+ ; -- Low byte for Horizontal Blanking/General Purpose DMA source address (W)
571+ ; -- CGB Mode Only
564572; --
565573rHDMA2 EQU $FF52
566574
567575
568576; --
569577; -- HDMA3 ($FF53)
570- ; -- Horizontal Blanking, General Purpose DMA (W)
578+ ; -- High byte for Horizontal Blanking/General Purpose DMA destination address (W)
579+ ; -- CGB Mode Only
571580; --
572581rHDMA3 EQU $FF53
573582
574583
575584; --
576585; -- HDMA4 ($FF54)
577- ; -- Horizontal Blanking, General Purpose DMA (W)
586+ ; -- Low byte for Horizontal Blanking/General Purpose DMA destination address (W)
587+ ; -- CGB Mode Only
578588; --
579589rHDMA4 EQU $FF54
580590
581591
582592; --
583593; -- HDMA5 ($FF55)
584- ; -- Horizontal Blanking, General Purpose DMA (R/W)
594+ ; -- Transfer length (in bytes)/mode/start for Horizontal Blanking, General Purpose DMA (R/W)
595+ ; -- CGB Mode Only
585596; --
586597rHDMA5 EQU $FF55
587598
599+ HDMA5F_MODE_GP EQU %00000000 ; General Purpose DMA (W)
600+ HDMA5F_MODE_HBL EQU %10000000 ; HBlank DMA (W)
601+
602+ ; -- Once DMA has started, use HDMA5F_BUSY to check when the transfer is complete
603+ HDMA5F_BUSY EQU %10000000 ; 0=DMA complete, 1=Busy (DMA still in progress) (R)
604+
588605
589606; --
590607; -- RP ($FF56)
@@ -599,6 +616,8 @@ rRP EQU $FF56
599616; --
600617rBCPS EQU $FF68
601618
619+ BCPSF_AUTOINC EQU %10000000 ; Auto Increment (0=Disabled, 1=Increment after Writing)
620+
602621
603622; --
604623; -- BCPD ($FF69)
@@ -608,14 +627,16 @@ rBCPD EQU $FF69
608627
609628
610629; --
611- ; -- BCPS ($FF6A)
630+ ; -- OCPS ($FF6A)
612631; -- Object Color Palette Specification (R/W)
613632; --
614633rOCPS EQU $FF6A
615634
635+ OCPSF_AUTOINC EQU %10000000 ; Auto Increment (0=Disabled, 1=Increment after Writing)
636+
616637
617638; --
618- ; -- BCPD ($FF6B)
639+ ; -- OCPD ($FF6B)
619640; -- Object Color Palette Data (R/W)
620641; --
621642rOCPD EQU $FF6B
0 commit comments