Skip to content

Commit a17b2c5

Browse files
committed
Update hardware.inc to 5.3.0 and use its new constants
1 parent 0b8a812 commit a17b2c5

File tree

5 files changed

+60
-34
lines changed

5 files changed

+60
-34
lines changed

constants/hardware.inc

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ endc
2222
; Define the include guard and the current hardware.inc version
2323
; (do this after the RGBDS version check since the `def` syntax depends on it)
2424
def HARDWARE_INC equ 1
25-
def HARDWARE_INC_VERSION equs "5.2.0"
25+
def HARDWARE_INC_VERSION equs "5.3.0"
2626

2727
; Usage: rev_Check_hardware_inc <min_ver>
2828
; Examples:
@@ -76,6 +76,14 @@ def B_JOYP_RIGHT equ 0 ; 0 = Right is pressed (if reading Control Pad) [ro]
7676
def JOYP_LEFT equ 1 << B_JOYP_LEFT
7777
def JOYP_RIGHT equ 1 << B_JOYP_RIGHT
7878

79+
; SGB command packet transfer uses for JOYP bits
80+
def B_JOYP_SGB_ONE equ 5 ; 0 = sending 1 bit
81+
def B_JOYP_SGB_ZERO equ 4 ; 0 = sending 0 bit
82+
def JOYP_SGB_START equ %00_00_0000 ; start SGB packet transfer
83+
def JOYP_SGB_ONE equ %00_01_0000 ; send 1 bit
84+
def JOYP_SGB_ZERO equ %00_10_0000 ; send 0 bit
85+
def JOYP_SGB_FINISH equ %00_11_0000 ; finish SGB packet transfer
86+
7987
; Combined input byte, with Control Pad in high nybble (conventional order)
8088
def B_PAD_DOWN equ 7
8189
def B_PAD_UP equ 6
@@ -96,7 +104,6 @@ def B_PAD_A equ 0
96104
def PAD_B equ 1 << B_PAD_B
97105
def PAD_A equ 1 << B_PAD_A
98106

99-
100107
; Combined input byte, with Control Pad in low nybble (swapped order)
101108
def B_PAD_SWAP_START equ 7
102109
def B_PAD_SWAP_SELECT equ 6
@@ -222,7 +229,7 @@ def AUD1ENV_PACE equ %00000_111 ; how long between envelope iterations
222229
; (in 64 Hz ticks, ~15.6 ms apart) [r/w]
223230

224231
; -- AUD1LOW / NR13 ($FF13) ---------------------------------------------------
225-
; Audio channel 1 period (low 8 bits) [r/w]
232+
; Audio channel 1 period (low 8 bits) [wo]
226233
def rAUD1LOW equ $FF13
227234

228235
; -- AUD1HIGH / NR14 ($FF14) --------------------------------------------------
@@ -266,7 +273,7 @@ def AUD2ENV_PACE equ %00000_111 ; how long between envelope iterations
266273
; (in 64 Hz ticks, ~15.6 ms apart) [r/w]
267274

268275
; -- AUD2LOW / NR23 ($FF18) ---------------------------------------------------
269-
; Audio channel 2 period (low 8 bits) [r/w]
276+
; Audio channel 2 period (low 8 bits) [wo]
270277
def rAUD2LOW equ $FF18
271278

272279
; -- AUD2HIGH / NR24 ($FF19) --------------------------------------------------
@@ -304,7 +311,7 @@ def AUD3LEVEL_VOLUME equ %0_11_00000 ; volume level [r/w]
304311
def AUD3LEVEL_25 equ %0_11_00000 ; 25%
305312

306313
; -- AUD3LOW / NR33 ($FF1D) ---------------------------------------------------
307-
; Audio channel 3 period (low 8 bits) [r/w]
314+
; Audio channel 3 period (low 8 bits) [wo]
308315
def rAUD3LOW equ $FF1D
309316

310317
; -- AUD3HIGH / NR34 ($FF1E) --------------------------------------------------
@@ -927,15 +934,18 @@ def TILE_HEIGHT equ 8 ; height of tile in pixels
927934
def TILE_SIZE equ 16 ; size of tile in bytes (2 bits/pixel)
928935

929936
def COLOR_SIZE equ 2 ; size of color in bytes (little-endian BGR555)
930-
def B_COLOR_RED equ 0 ; bits 4-0
931-
def B_COLOR_GREEN equ 5 ; bits 9-5
932-
def B_COLOR_BLUE equ 10 ; bits 14-10
937+
def PAL_COLORS equ 4 ; colors per palette
938+
def PAL_SIZE equ COLOR_SIZE * PAL_COLORS ; size of palette in bytes
939+
940+
def COLOR_CH_WIDTH equ 5 ; bits per RGB color channel
941+
def COLOR_CH_MAX equ (1 << COLOR_CH_WIDTH) - 1
942+
def B_COLOR_RED equ COLOR_CH_WIDTH * 0 ; bits 4-0
943+
def B_COLOR_GREEN equ COLOR_CH_WIDTH * 1 ; bits 9-5
944+
def B_COLOR_BLUE equ COLOR_CH_WIDTH * 2 ; bits 14-10
933945
def COLOR_RED equ %000_11111 ; for the low byte
934946
def COLOR_GREEN_LOW equ %111_00000 ; for the low byte
935947
def COLOR_GREEN_HIGH equ %0_00000_11 ; for the high byte
936948
def COLOR_BLUE equ %0_11111_00 ; for the high byte
937-
def PAL_COLORS equ 4 ; colors per palette
938-
def PAL_SIZE equ COLOR_SIZE * PAL_COLORS ; size of palette in bytes
939949

940950
; (DMG only) grayscale shade indexes for BGP, OBP0, and OBP1
941951
def SHADE_WHITE equ %00
@@ -1032,6 +1042,22 @@ def B_BOOTUP_B_AGB equ 0
10321042
def BOOTUP_B_CGB equ 0 << B_BOOTUP_B_AGB
10331043
def BOOTUP_B_AGB equ 1 << B_BOOTUP_B_AGB
10341044

1045+
; Register C = CPU qualifier
1046+
def BOOTUP_C_DMG equ $13
1047+
def BOOTUP_C_SGB equ $14
1048+
def BOOTUP_C_CGB equ $00 ; CGB or AGB
1049+
1050+
; Register D = color qualifier
1051+
def BOOTUP_D_MONO equ $00 ; DMG, MGB, SGB, or CGB or AGB in DMG mode
1052+
def BOOTUP_D_COLOR equ $FF ; CGB or AGB
1053+
1054+
; Register E = CPU qualifier (distinguishes DMG variants)
1055+
def BOOTUP_E_DMG0 equ $C1
1056+
def BOOTUP_E_DMG equ $C8
1057+
def BOOTUP_E_SGB equ $00
1058+
def BOOTUP_E_CGB_DMGMODE equ $08 ; CGB or AGB in DMG mode
1059+
def BOOTUP_E_CGB equ $56 ; CGB or AGB
1060+
10351061

10361062
;******************************************************************************
10371063
; Aliases

engine/debug/color_picker.asm

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -929,32 +929,32 @@ _DebugColor_PushSGBPals:
929929
ld b, a
930930
.loop
931931
push bc
932-
xor a
932+
xor a ; JOYP_SGB_START
933933
ldh [rJOYP], a
934-
ld a, $30
934+
ld a, JOYP_SGB_FINISH
935935
ldh [rJOYP], a
936-
ld b, $10
936+
ld b, 16
937937
.loop2
938-
ld e, $8
938+
ld e, 8
939939
ld a, [hli]
940940
ld d, a
941941
.loop3
942942
bit 0, d
943-
ld a, $10
943+
ld a, JOYP_SGB_ONE
944944
jr nz, .okay
945-
ld a, $20
945+
ld a, JOYP_SGB_ZERO
946946
.okay
947947
ldh [rJOYP], a
948-
ld a, $30
948+
ld a, JOYP_SGB_FINISH
949949
ldh [rJOYP], a
950950
rr d
951951
dec e
952952
jr nz, .loop3
953953
dec b
954954
jr nz, .loop2
955-
ld a, $20
955+
ld a, JOYP_SGB_ZERO
956956
ldh [rJOYP], a
957-
ld a, $30
957+
ld a, JOYP_SGB_FINISH
958958
ldh [rJOYP], a
959959
ld de, 7000
960960
.wait

engine/gfx/color.asm

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -726,32 +726,32 @@ _PushSGBPals:
726726
ld b, a
727727
.loop
728728
push bc
729-
xor a
729+
xor a ; JOYP_SGB_START
730730
ldh [rJOYP], a
731-
ld a, $30
731+
ld a, JOYP_SGB_FINISH
732732
ldh [rJOYP], a
733-
ld b, $10
733+
ld b, 16
734734
.loop2
735-
ld e, $8
735+
ld e, 8
736736
ld a, [hli]
737737
ld d, a
738738
.loop3
739739
bit 0, d
740-
ld a, $10
740+
ld a, JOYP_SGB_ONE
741741
jr nz, .okay
742-
ld a, $20
742+
ld a, JOYP_SGB_ZERO
743743
.okay
744744
ldh [rJOYP], a
745-
ld a, $30
745+
ld a, JOYP_SGB_FINISH
746746
ldh [rJOYP], a
747747
rr d
748748
dec e
749749
jr nz, .loop3
750750
dec b
751751
jr nz, .loop2
752-
ld a, $20
752+
ld a, JOYP_SGB_ZERO
753753
ldh [rJOYP], a
754-
ld a, $30
754+
ld a, JOYP_SGB_FINISH
755755
ldh [rJOYP], a
756756
call SGBDelayCycles
757757
pop bc
@@ -911,24 +911,24 @@ PushSGBBorderPalsAndWait:
911911
and $3
912912
cp $3
913913
jr nz, .carry
914-
ld a, $20
914+
ld a, JOYP_SGB_ZERO
915915
ldh [rJOYP], a
916916
ldh a, [rJOYP]
917917
ldh a, [rJOYP]
918918
call SGBDelayCycles
919919
call SGBDelayCycles
920-
ld a, $30
920+
ld a, JOYP_SGB_FINISH
921921
ldh [rJOYP], a
922922
call SGBDelayCycles
923923
call SGBDelayCycles
924-
ld a, $10
924+
ld a, JOYP_SGB_ONE
925925
ldh [rJOYP], a
926926
rept 6
927927
ldh a, [rJOYP]
928928
endr
929929
call SGBDelayCycles
930930
call SGBDelayCycles
931-
ld a, $30
931+
ld a, JOYP_SGB_FINISH
932932
ldh [rJOYP], a
933933
ldh a, [rJOYP]
934934
ldh a, [rJOYP]

engine/link/mystery_gift.asm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1139,8 +1139,8 @@ endr
11391139
; Pressed this frame:
11401140
ld a, c
11411141
ldh [hMGJoypadPressed], a
1142-
ld a, $30
11431142
; Reset the joypad register since we're done with it.
1143+
ld a, JOYP_GET_NONE
11441144
ldh [rJOYP], a
11451145
ret
11461146

macros/gfx.asm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
MACRO assert_valid_rgb
44
rept _NARG
5-
assert 0 <= (\1) && (\1) <= 31, "RGB channel must be 0-31"
5+
assert 0 <= (\1) && (\1) <= COLOR_CH_MAX, "RGB channel must be 0-{d:COLOR_CH_MAX}"
66
shift
77
endr
88
ENDM

0 commit comments

Comments
 (0)