shithub: pokecrystal

Download patch

ref: 0b7d8d44ad6b911c4fe2e74b7d5bcbee971d7c90
parent: 55d19b6dca382bc2f0dae9bef3ce95aa3907bc6a
author: Remy Oukaour <remy.oukaour@gmail.com>
date: Sat Dec 9 08:28:23 EST 2017

More constants

--- a/audio/engine.asm
+++ b/audio/engine.asm
@@ -22,7 +22,7 @@
 	ld [hli], a ; ff26 ; music channels
 
 	ld hl, rNR10 ; sound channel registers
-	ld e, $4 ; number of channels
+	ld e, NUM_MUSIC_CHANS
 .clearsound
 ;   sound channel   1      2      3      4
 	xor a
@@ -47,7 +47,7 @@
 	ld a, e
 	or d
 	jr nz, .clearchannels
-	ld a, $77 ; max
+	ld a, MAX_VOLUME
 	ld [Volume], a
 	call MusicOn
 	pop af
@@ -151,7 +151,7 @@
 	jr z, .next
 	; are we in a sfx channel right now?
 	ld a, [CurChannel]
-	cp $4
+	cp CHAN5
 	jr nc, .next
 	; are any sfx channels active?
 	; if so, mute
@@ -174,7 +174,7 @@
 .next
 	; are we in a sfx channel right now?
 	ld a, [CurChannel]
-	cp $4 ; sfx
+	cp CHAN5
 	jr nc, .sfx_channel
 	ld hl, Channel5Flags - Channel1
 	add hl, bc
@@ -1223,7 +1223,7 @@
 	bit SOUND_SUBROUTINE, [hl] ; in a subroutine?
 	jr nz, .readcommand ; execute
 	ld a, [CurChannel]
-	cp $4 ; channels 0-3?
+	cp CHAN5
 	jr nc, .chan_5to8
 	; ????
 	ld hl, Channel5Flags - Channel1
@@ -1237,7 +1237,7 @@
 	call nz, RestoreVolume
 	; end music
 	ld a, [CurChannel]
-	cp $4 ; channel 5?
+	cp CHAN5
 	jr nz, .ok
 	; ????
 	xor a
@@ -1266,7 +1266,7 @@
 RestoreVolume: ; e8679
 	; ch5 only
 	ld a, [CurChannel]
-	cp $4
+	cp CHAN5
 	ret nz
 	xor a
 	ld hl, Channel6CryPitch
@@ -1968,7 +1968,7 @@
 	ld [hl], a
 	ld a, [CurChannel]
 	and $3
-	cp CHAN4 ; CHAN8 & $3
+	cp CHAN8 & $3
 	ret z
 	; intensity
 	call Music_Intensity
@@ -2063,7 +2063,7 @@
 ; params: 1
 	; stereo on?
 	ld a, [Options]
-	bit 5, a ; stereo
+	bit STEREO, a
 	jr nz, Music_Panning
 	; skip param
 	call GetMusicByte
@@ -2552,7 +2552,7 @@
 ; This only applies in-battle.
 
 	ld a, [Options]
-	bit 5, a ; stereo
+	bit STEREO, a
 	jr z, .next
 
 ; [Tracks] &= [CryTracks]
@@ -2577,7 +2577,7 @@
 
 	ld a, [Volume]
 	ld [LastVolume], a
-	ld a, $77
+	ld a, MAX_VOLUME
 	ld [Volume], a
 
 .end
@@ -2696,7 +2696,7 @@
 
 ; standard procedure if stereo's off
 	ld a, [Options]
-	bit 5, a
+	bit STEREO, a
 	jp z, _PlaySFX
 
 ; else, let's go ahead with this
@@ -3231,7 +3231,7 @@
 ; gets the default sound l/r channels
 ; stores mono/stereo table in hl
 	ld a, [Options]
-	bit 5, a ; stereo
+	bit STEREO, a
 	; made redundant, could have had a purpose in gold
 	jr nz, .stereo
 	ld hl, MonoTracks
@@ -3279,7 +3279,7 @@
 	ld a, $80
 	ld [hli], a
 	ld hl, rNR10
-	ld e, $4
+	ld e, NUM_MUSIC_CHANS
 .loop
 	call ClearChannel
 	dec e
--- a/constants/audio_constants.asm
+++ b/constants/audio_constants.asm
@@ -1,60 +1,69 @@
 ; pitch
 	const_def
-	const __
-	const C_
-	const C#
-	const D_
-	const D#
-	const E_
-	const F_
-	const F#
-	const G_
-	const G#
-	const A_
-	const A#
-	const B_
-	const CC ; used for pitchoffset
+	const __ ; 0
+	const C_ ; 1
+	const C# ; 2
+	const D_ ; 3
+	const D# ; 4
+	const E_ ; 5
+	const F_ ; 6
+	const F# ; 7
+	const G_ ; 8
+	const G# ; 9
+	const A_ ; a
+	const A# ; b
+	const B_ ; c
+	const CC ; d (used for pitchoffset)
 
 ; channel
+; ChannelPointers indexes (see engine/audio.asm)
 	const_def
-	const CHAN1
-	const CHAN2
-	const CHAN3
-	const CHAN4
+	const CHAN1 ; 0
+	const CHAN2 ; 1
+	const CHAN3 ; 2
+	const CHAN4 ; 3
 NUM_MUSIC_CHANS EQU const_value
 NUM_NOISE_CHANS EQU const_value
-	const CHAN5
-	const CHAN6
-	const CHAN7
-	const CHAN8
+	const CHAN5 ; 4
+	const CHAN6 ; 5
+	const CHAN7 ; 6
+	const CHAN8 ; 7
 NUM_CHANNELS EQU const_value
 
 ; Flags1
-SOUND_CHANNEL_ON EQU 0
-SOUND_SUBROUTINE EQU 1
-SOUND_LOOPING EQU 2
-SOUND_SFX EQU 3
-SOUND_NOISE EQU 4
-SOUND_REST EQU 5
+	const_def
+	const SOUND_CHANNEL_ON ; 0
+	const SOUND_SUBROUTINE ; 1
+	const SOUND_LOOPING    ; 2
+	const SOUND_SFX        ; 3
+	const SOUND_NOISE      ; 4
+	const SOUND_REST       ; 5
 
 ; Flags2
-SOUND_VIBRATO EQU 0
-SOUND_PITCH_WHEEL EQU 1
-SOUND_DUTY EQU 2
-SOUND_UNKN_0B EQU 3
-SOUND_CRY_PITCH EQU 4
-SOUND_UNKN_0D EQU 5
-SOUND_UNKN_0E EQU 6
-SOUND_UNKN_0F EQU 7
+	const_def
+	const SOUND_VIBRATO     ; 0
+	const SOUND_PITCH_WHEEL ; 1
+	const SOUND_DUTY        ; 2
+	const SOUND_UNKN_0B     ; 3
+	const SOUND_CRY_PITCH   ; 4
+	const SOUND_UNKN_0D     ; 5
+	const SOUND_UNKN_0E     ; 6
+	const SOUND_UNKN_0F     ; 7
 
 ; Flags3
-SOUND_VIBRATO_DIR EQU 0
-SOUND_PITCH_WHEEL_DIR EQU 1
+	const_def
+	const SOUND_VIBRATO_DIR     ; 0
+	const SOUND_PITCH_WHEEL_DIR ; 1
 
 ; NoteFlags
-NOTE_DUTY_OVERRIDE EQU 0
-NOTE_FREQ_OVERRIDE EQU 1
-NOTE_UNKN_3 EQU 3
-NOTE_NOISE_SAMPLING EQU 4
-NOTE_REST EQU 5
-NOTE_VIBRATO_OVERRIDE EQU 6
+	const_def
+	const NOTE_DUTY_OVERRIDE    ; 0
+	const NOTE_FREQ_OVERRIDE    ; 1
+	const NOTE_UNUSED           ; 2
+	const NOTE_UNKN_3           ; 3
+	const NOTE_NOISE_SAMPLING   ; 4
+	const NOTE_REST             ; 5
+	const NOTE_VIBRATO_OVERRIDE ; 6
+
+; Volume:
+MAX_VOLUME EQU $77
--- a/constants/item_constants.asm
+++ b/constants/item_constants.asm
@@ -264,6 +264,7 @@
 	add_mt FLAMETHROWER
 	add_mt THUNDERBOLT
 	add_mt ICE_BEAM
+NUM_TM_HM_TUTOR = __enum__ +- 1
 
 ITEM_FROM_MEM EQU $FF
 
--- a/constants/wram_constants.asm
+++ b/constants/wram_constants.asm
@@ -1,22 +1,26 @@
 ; MonType: ; cf5f
-PARTYMON   EQU 0
-OTPARTYMON EQU 1
-BOXMON     EQU 2
-TEMPMON   EQU 3
-WILDMON    EQU 4
+	const_def
+	const PARTYMON   ; 0
+	const OTPARTYMON ; 1
+	const BOXMON     ; 2
+	const TEMPMON    ; 3
+	const WILDMON    ; 4
 
-; Options: ; cfcc
+; Options: (bits) ; cfcc
+const_value SET 5
+	const STEREO       ; 5
+	const BATTLE_SHIFT ; 6
+	const BATTLE_SCENE ; 7
+
+; Options: (bits 0-2 values) ; cfcc
 FAST_TEXT      EQU 0
 MED_TEXT       EQU 1
 SLOW_TEXT      EQU 2
 NO_TEXT_SCROLL EQU 4
-; bits
-STEREO         EQU 5
-BATTLE_SHIFT   EQU 6
-BATTLE_SCENE   EQU 7
 
 ; Options2:
-MENU_ACCOUNT EQU 0
+	const_def
+	const MENU_ACCOUNT ; 0
 
 ; GBPrinter:
 PRINT_LIGHTEST EQU $00
@@ -26,11 +30,12 @@
 PRINT_DARKEST  EQU $7f
 
 ; WalkingDirection: ; d043
-STANDING EQU -1
-DOWN     EQU 0
-UP       EQU 1
-LEFT     EQU 2
-RIGHT    EQU 3
+const_value SET -1
+	const STANDING ; -1
+	const DOWN     ; 0
+	const UP       ; 1
+	const LEFT     ; 2
+	const RIGHT    ; 3
 
 ; FacingDirection: ; d044
 FACE_CURRENT EQU 0
@@ -40,10 +45,11 @@
 FACE_RIGHT EQU 1
 
 ; TimeOfDay: ; d269
-MORN     EQU 0
-DAY      EQU 1
-NITE     EQU 2
-DARKNESS EQU 3
+	const_def
+	const MORN     ; 0
+	const DAY      ; 1
+	const NITE     ; 2
+	const DARKNESS ; 3
 
 ; ScriptFlags: ; d434
 SCRIPT_RUNNING EQU 2
@@ -55,13 +61,14 @@
 SCRIPT_WAIT EQU 3
 
 ; CurDay: ; d4cb
-SUNDAY    EQU 0
-MONDAY    EQU 1
-TUESDAY   EQU 2
-WEDNESDAY EQU 3
-THURSDAY  EQU 4
-FRIDAY    EQU 5
-SATURDAY  EQU 6
+	const_def
+	const SUNDAY    ; 0
+	const MONDAY    ; 1
+	const TUESDAY   ; 2
+	const WEDNESDAY ; 3
+	const THURSDAY  ; 4
+	const FRIDAY    ; 5
+	const SATURDAY  ; 6
 
 ; MapObjects: ; d71e
 
--- a/home/audio.asm
+++ b/home/audio.asm
@@ -295,7 +295,7 @@
 ; 3c97
 
 MaxVolume:: ; 3c97
-	ld a, $77 ; max
+	ld a, MAX_VOLUME
 	ld [Volume], a
 	ret
 ; 3c9d
--- a/macros/basestats.asm
+++ b/macros/basestats.asm
@@ -29,38 +29,37 @@
 	enum \1_TMNUM
 ENDM
 
+; N TMs/HMs need (N+7)/8 bytes for their bit flags.
+; The rgbasm integers tms1, tms2, tms3 each hold 3 bytes, or 24 bits.
 tmhm: MACRO
-x = 0
-y = 0
-w = 0
-	rept _NARG
+tms1 = 0
+tms2 = 0
+tms3 = 0
+rept _NARG
 	if def(\1_TMNUM)
-	if \1_TMNUM < 25
-x = x | (1 << ((\1_TMNUM) - 1))
+	if \1_TMNUM < 24 + 1
+tms1 = tms1 | (1 << ((\1_TMNUM) - 1))
+	elif \1_TMNUM < 48 + 1
+tms2 = tms2 | (1 << ((\1_TMNUM) - 1 - 24))
 	else
-	if \1_TMNUM < 49
-y = y | (1 << ((\1_TMNUM) - 1 - 24))
-	else
-w = w | (1 << ((\1_TMNUM) - 1 - 48))
+tms3 = tms3 | (1 << ((\1_TMNUM) - 1 - 48))
 	endc
-	endc
 	else
 		fail "\1 is not a TM, HM, or move tutor move"
 	endc
-
 	shift
-	endr
+endr
 
-	rept 3
-	db x & $ff
-x = x >> 8
-	endr
-	rept 3
-	db y & $ff
-y = y >> 8
-	endr
-	rept 2
-	db w & $ff
-w = w >> 8
-	endr
+rept 3
+	db tms1 & $ff
+tms1 = tms1 >> 8
+endr
+rept 3
+	db tms2 & $ff
+tms2 = tms2 >> 8
+endr
+rept 2
+	db tms3 & $ff
+tms3 = tms3 >> 8
+endr
 ENDM
--- a/wram.asm
+++ b/wram.asm
@@ -2212,7 +2212,7 @@
 BaseEggGroups:: ; d24d
 	ds 1
 BaseTMHM:: ; d24e
-	ds 8
+	flag_array NUM_TM_HM_TUTOR
 
 
 CurDamage:: ; d256