ref: 98da09b3e90b6a132ce6d2431999485593aef0c9
parent: ef20126fe5459789c559b8b550f0bb0da52663ef
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Thu Mar 4 13:13:33 EST 2021
Define more struct offset constants with rsreset instead of const_def This was discussed in #739
--- a/constants/audio_constants.asm
+++ b/constants/audio_constants.asm
@@ -37,7 +37,8 @@
CHANNEL_FLAGS2 rb
CHANNEL_FLAGS3 rb
CHANNEL_MUSIC_ADDRESS rw
-CHANNEL_LAST_MUSIC_ADDRESS rw 2
+CHANNEL_LAST_MUSIC_ADDRESS rw
+ rb_skip 2
CHANNEL_NOTE_FLAGS rb
CHANNEL_CONDITION rb
CHANNEL_DUTY_CYCLE rb
@@ -47,7 +48,8 @@
CHANNEL_OCTAVE rb
CHANNEL_TRANSPOSITION rb
CHANNEL_NOTE_DURATION rb
-CHANNEL_FIELD16 rb 2
+CHANNEL_FIELD16 rb
+ rb_skip
CHANNEL_LOOP_COUNT rb
CHANNEL_TEMPO rw
CHANNEL_TRACKS rb
@@ -59,7 +61,8 @@
CHANNEL_PITCH_SLIDE_TARGET rw
CHANNEL_PITCH_SLIDE_AMOUNT rb
CHANNEL_PITCH_SLIDE_AMOUNT_FRACTION rb
-CHANNEL_FIELD25 rb 2
+CHANNEL_FIELD25 rb
+ rb_skip
CHANNEL_PITCH_OFFSET rw
CHANNEL_FIELD29 rb
CHANNEL_FIELD2A rw
@@ -67,7 +70,8 @@
CHANNEL_NOTE_LENGTH rb
CHANNEL_FIELD2E rb
CHANNEL_FIELD2F rb
-CHANNEL_FIELD30 rb 2
+CHANNEL_FIELD30 rb
+ rb_skip
CHANNEL_STRUCT_LENGTH EQU _RS
NOISE_CHAN_F EQU 2 ; bit set in CHAN5-CHAN7
--- a/constants/battle_anim_constants.asm
+++ b/constants/battle_anim_constants.asm
@@ -1,25 +1,25 @@
; battle_anim_struct members (see macros/wram.asm)
- const_def
- const BATTLEANIMSTRUCT_INDEX
- const BATTLEANIMSTRUCT_OAMFLAGS
- const BATTLEANIMSTRUCT_FIX_Y
- const BATTLEANIMSTRUCT_FRAMESET_ID
- const BATTLEANIMSTRUCT_FUNCTION
- const BATTLEANIMSTRUCT_PALETTE
- const BATTLEANIMSTRUCT_TILEID
-BATTLEANIMOBJ_LENGTH EQU const_value - 1 ; discount BATTLEANIMSTRUCT_INDEX
- const BATTLEANIMSTRUCT_XCOORD
- const BATTLEANIMSTRUCT_YCOORD
- const BATTLEANIMSTRUCT_XOFFSET
- const BATTLEANIMSTRUCT_YOFFSET
- const BATTLEANIMSTRUCT_PARAM
- const BATTLEANIMSTRUCT_DURATION
- const BATTLEANIMSTRUCT_FRAME
- const BATTLEANIMSTRUCT_JUMPTABLE_INDEX
- const BATTLEANIMSTRUCT_VAR1
- const BATTLEANIMSTRUCT_VAR2
- const_skip 7
-BATTLEANIMSTRUCT_LENGTH EQU const_value
+rsreset
+BATTLEANIMSTRUCT_INDEX rb
+BATTLEANIMSTRUCT_OAMFLAGS rb
+BATTLEANIMSTRUCT_FIX_Y rb
+BATTLEANIMSTRUCT_FRAMESET_ID rb
+BATTLEANIMSTRUCT_FUNCTION rb
+BATTLEANIMSTRUCT_PALETTE rb
+BATTLEANIMSTRUCT_TILEID rb
+BATTLEANIMOBJ_LENGTH EQU _RS - 1 ; discount BATTLEANIMSTRUCT_INDEX
+BATTLEANIMSTRUCT_XCOORD rb
+BATTLEANIMSTRUCT_YCOORD rb
+BATTLEANIMSTRUCT_XOFFSET rb
+BATTLEANIMSTRUCT_YOFFSET rb
+BATTLEANIMSTRUCT_PARAM rb
+BATTLEANIMSTRUCT_DURATION rb
+BATTLEANIMSTRUCT_FRAME rb
+BATTLEANIMSTRUCT_JUMPTABLE_INDEX rb
+BATTLEANIMSTRUCT_VAR1 rb
+BATTLEANIMSTRUCT_VAR2 rb
+ rb_skip 7
+BATTLEANIMSTRUCT_LENGTH EQU _RS
NUM_ANIM_OBJECTS EQU 10 ; see wActiveAnimObjects
; wBattleAnimTileDict size (see wram.asm)
@@ -817,12 +817,12 @@
NUM_ANIM_GFX EQU const_value - 1
; battle_bg_effect struct members (see macros/wram.asm)
- const_def
- const BG_EFFECT_STRUCT_FUNCTION
- const BG_EFFECT_STRUCT_JT_INDEX
- const BG_EFFECT_STRUCT_BATTLE_TURN
- const BG_EFFECT_STRUCT_PARAM
-BG_EFFECT_STRUCT_LENGTH EQU const_value
+rsreset
+BG_EFFECT_STRUCT_FUNCTION rb
+BG_EFFECT_STRUCT_JT_INDEX rb
+BG_EFFECT_STRUCT_BATTLE_TURN rb
+BG_EFFECT_STRUCT_PARAM rb
+BG_EFFECT_STRUCT_LENGTH EQU _RS
NUM_BG_EFFECTS EQU 5 ; see wActiveBGEffects
; anim_bgeffect battle turn values for some effects
--- a/constants/deco_constants.asm
+++ b/constants/deco_constants.asm
@@ -1,12 +1,11 @@
; decoration attributes
- const_def
- const DECOATTR_TYPE
- const DECOATTR_NAME
- const DECOATTR_ACTION
- const DECOATTR_EVENT_FLAG
- const_skip ; high DECOATTR_EVENT_FLAG byte
- const DECOATTR_SPRITE
-DECOATTR_STRUCT_LENGTH EQU const_value
+rsreset
+DECOATTR_TYPE rb
+DECOATTR_NAME rb
+DECOATTR_ACTION rb
+DECOATTR_EVENT_FLAG rw
+DECOATTR_SPRITE rb
+DECOATTR_STRUCT_LENGTH EQU _RS
; decoration types
const_def 1
--- a/constants/gfx_constants.asm
+++ b/constants/gfx_constants.asm
@@ -34,12 +34,12 @@
HP_RED EQU 2
; sprite_oam_struct members (see macros/wram.asm)
- const_def
- const SPRITEOAMSTRUCT_YCOORD ; 0
- const SPRITEOAMSTRUCT_XCOORD ; 1
- const SPRITEOAMSTRUCT_TILE_ID ; 2
- const SPRITEOAMSTRUCT_ATTRIBUTES ; 3
-SPRITEOAMSTRUCT_LENGTH EQU const_value
+rsreset
+SPRITEOAMSTRUCT_YCOORD rb ; 0
+SPRITEOAMSTRUCT_XCOORD rb ; 1
+SPRITEOAMSTRUCT_TILE_ID rb ; 2
+SPRITEOAMSTRUCT_ATTRIBUTES rb ; 3
+SPRITEOAMSTRUCT_LENGTH EQU _RS
NUM_SPRITE_OAM_STRUCTS EQU 40 ; see wVirtualOAM
SPRITE_GFX_LIST_CAPACITY EQU 32 ; see wUsedSprites
--- a/constants/item_data_constants.asm
+++ b/constants/item_data_constants.asm
@@ -1,13 +1,15 @@
; item_attributes struct members (see data/items/attributes.asm)
- const_def
- const ITEMATTR_PRICE_LO
- const ITEMATTR_PRICE_HI
- const ITEMATTR_EFFECT
- const ITEMATTR_PARAM
- const ITEMATTR_PERMISSIONS
- const ITEMATTR_POCKET
- const ITEMATTR_HELP
-ITEMATTR_STRUCT_LENGTH EQU const_value
+rsreset
+ITEMATTR_PRICE rw
+rsset ITEMATTR_PRICE
+ITEMATTR_PRICE_LO rb
+ITEMATTR_PRICE_HI rb
+ITEMATTR_EFFECT rb
+ITEMATTR_PARAM rb
+ITEMATTR_PERMISSIONS rb
+ITEMATTR_POCKET rb
+ITEMATTR_HELP rb
+ITEMATTR_STRUCT_LENGTH EQU _RS
; item types
const_def 1
--- a/constants/map_object_constants.asm
+++ b/constants/map_object_constants.asm
@@ -1,40 +1,40 @@
; object_struct members (see macros/wram.asm)
- const_def
- const OBJECT_SPRITE ; 00
- const OBJECT_MAP_OBJECT_INDEX ; 01
- const OBJECT_SPRITE_TILE ; 02
- const OBJECT_MOVEMENTTYPE ; 03
- const OBJECT_FLAGS1 ; 04
- const OBJECT_FLAGS2 ; 05
- const OBJECT_PALETTE ; 06
- const OBJECT_DIRECTION_WALKING ; 07
- const OBJECT_FACING ; 08
- const OBJECT_STEP_TYPE ; 09
- const OBJECT_STEP_DURATION ; 0a
- const OBJECT_ACTION ; 0b
- const OBJECT_STEP_FRAME ; 0c
- const OBJECT_FACING_STEP ; 0d
- const OBJECT_NEXT_TILE ; 0e
- const OBJECT_STANDING_TILE ; 0f
- const OBJECT_NEXT_MAP_X ; 10
- const OBJECT_NEXT_MAP_Y ; 11
- const OBJECT_MAP_X ; 12
- const OBJECT_MAP_Y ; 13
- const OBJECT_INIT_X ; 14
- const OBJECT_INIT_Y ; 15
- const OBJECT_RADIUS ; 16
- const OBJECT_SPRITE_X ; 17
- const OBJECT_SPRITE_Y ; 18
- const OBJECT_SPRITE_X_OFFSET ; 19
- const OBJECT_SPRITE_Y_OFFSET ; 1a
- const OBJECT_MOVEMENT_BYTE_INDEX ; 1b
- const OBJECT_1C ; 1c
- const OBJECT_1D ; 1d
- const OBJECT_1E ; 1e
- const OBJECT_1F ; 1f
- const OBJECT_RANGE ; 20
- const_skip 7
-OBJECT_LENGTH EQU const_value
+rsreset
+OBJECT_SPRITE rb ; 00
+OBJECT_MAP_OBJECT_INDEX rb ; 01
+OBJECT_SPRITE_TILE rb ; 02
+OBJECT_MOVEMENTTYPE rb ; 03
+OBJECT_FLAGS1 rb ; 04
+OBJECT_FLAGS2 rb ; 05
+OBJECT_PALETTE rb ; 06
+OBJECT_DIRECTION_WALKING rb ; 07
+OBJECT_FACING rb ; 08
+OBJECT_STEP_TYPE rb ; 09
+OBJECT_STEP_DURATION rb ; 0a
+OBJECT_ACTION rb ; 0b
+OBJECT_STEP_FRAME rb ; 0c
+OBJECT_FACING_STEP rb ; 0d
+OBJECT_NEXT_TILE rb ; 0e
+OBJECT_STANDING_TILE rb ; 0f
+OBJECT_NEXT_MAP_X rb ; 10
+OBJECT_NEXT_MAP_Y rb ; 11
+OBJECT_MAP_X rb ; 12
+OBJECT_MAP_Y rb ; 13
+OBJECT_INIT_X rb ; 14
+OBJECT_INIT_Y rb ; 15
+OBJECT_RADIUS rb ; 16
+OBJECT_SPRITE_X rb ; 17
+OBJECT_SPRITE_Y rb ; 18
+OBJECT_SPRITE_X_OFFSET rb ; 19
+OBJECT_SPRITE_Y_OFFSET rb ; 1a
+OBJECT_MOVEMENT_BYTE_INDEX rb ; 1b
+OBJECT_1C rb ; 1c
+OBJECT_1D rb ; 1d
+OBJECT_1E rb ; 1e
+OBJECT_1F rb ; 1f
+OBJECT_RANGE rb ; 20
+ rb_skip 7
+OBJECT_LENGTH EQU _RS
NUM_OBJECT_STRUCTS EQU 13 ; see wObjectStructs
; object_struct OBJECT_FACING values
@@ -97,33 +97,31 @@
ABSOLUTE_TILE_ID EQU 1 << ABSOLUTE_TILE_ID_F
; map_object struct members (see macros/wram.asm)
- const_def
- const MAPOBJECT_OBJECT_STRUCT_ID ; 0
- const MAPOBJECT_SPRITE ; 1
- const MAPOBJECT_Y_COORD ; 2
- const MAPOBJECT_X_COORD ; 3
- const MAPOBJECT_MOVEMENT ; 4
- const MAPOBJECT_RADIUS ; 5
- const MAPOBJECT_HOUR ; 6
- const MAPOBJECT_TIMEOFDAY ; 7
- const MAPOBJECT_COLOR ; 8
- const MAPOBJECT_RANGE ; 9
- const MAPOBJECT_SCRIPT_POINTER ; a
- const_skip ; high MAPOBJECT_SCRIPT_POINTER byte
- const MAPOBJECT_EVENT_FLAG ; c
- const_skip ; high MAPOBJECT_EVENT_FLAG byte
- const_skip 2 ; unused
-MAPOBJECT_LENGTH EQU const_value
+rsreset
+MAPOBJECT_OBJECT_STRUCT_ID rb ; 0
+MAPOBJECT_SPRITE rb ; 1
+MAPOBJECT_Y_COORD rb ; 2
+MAPOBJECT_X_COORD rb ; 3
+MAPOBJECT_MOVEMENT rb ; 4
+MAPOBJECT_RADIUS rb ; 5
+MAPOBJECT_HOUR rb ; 6
+MAPOBJECT_TIMEOFDAY rb ; 7
+MAPOBJECT_COLOR rb ; 8
+MAPOBJECT_RANGE rb ; 9
+MAPOBJECT_SCRIPT_POINTER rw ; a
+MAPOBJECT_EVENT_FLAG rw ; c
+ rb_skip 2
+MAPOBJECT_LENGTH EQU _RS
; SpriteMovementData struct members (see data/sprites/map_objects.asm)
- const_def
- const SPRITEMOVEATTR_MOVEMENT ; 0
- const SPRITEMOVEATTR_FACING ; 1
- const SPRITEMOVEATTR_ACTION ; 2
- const SPRITEMOVEATTR_FLAGS1 ; 3
- const SPRITEMOVEATTR_FLAGS2 ; 4
- const SPRITEMOVEATTR_PALFLAGS ; 5
-NUM_SPRITEMOVEDATA_FIELDS EQU const_value
+rsreset
+SPRITEMOVEATTR_MOVEMENT rb ; 0
+SPRITEMOVEATTR_FACING rb ; 1
+SPRITEMOVEATTR_ACTION rb ; 2
+SPRITEMOVEATTR_FLAGS1 rb ; 3
+SPRITEMOVEATTR_FLAGS2 rb ; 4
+SPRITEMOVEATTR_PALFLAGS rb ; 5
+NUM_SPRITEMOVEDATA_FIELDS EQU _RS
MAPOBJECT_SCREEN_WIDTH EQU (SCREEN_WIDTH / 2) + 2
MAPOBJECT_SCREEN_HEIGHT EQU (SCREEN_HEIGHT / 2) + 2
--- a/constants/pokemon_data_constants.asm
+++ b/constants/pokemon_data_constants.asm
@@ -20,9 +20,9 @@
BASE_ITEM_1 rb
BASE_ITEM_2 rb
BASE_GENDER rb
-BASE_UNKNOWN_1 rb
+ rb_skip
BASE_EGG_STEPS rb
-BASE_UNKNOWN_2 rb
+ rb_skip
BASE_PIC_SIZE rb
BASE_FRONTPIC rw
BASE_BACKPIC rw
@@ -98,7 +98,8 @@
MON_CAUGHTLOCATION rb
MON_LEVEL rb
BOXMON_STRUCT_LENGTH EQU _RS
-MON_STATUS rb 2
+MON_STATUS rb
+ rb_skip
MON_HP rw
MON_MAXHP rw
MON_ATK rw
--- a/constants/sprite_anim_constants.asm
+++ b/constants/sprite_anim_constants.asm
@@ -1,22 +1,22 @@
; sprite_anim_struct members (see macros/wram.asm)
- const_def
- const SPRITEANIMSTRUCT_INDEX ; 0
- const SPRITEANIMSTRUCT_FRAMESET_ID ; 1
- const SPRITEANIMSTRUCT_ANIM_SEQ_ID ; 2
- const SPRITEANIMSTRUCT_TILE_ID ; 3
- const SPRITEANIMSTRUCT_XCOORD ; 4
- const SPRITEANIMSTRUCT_YCOORD ; 5
- const SPRITEANIMSTRUCT_XOFFSET ; 6
- const SPRITEANIMSTRUCT_YOFFSET ; 7
- const SPRITEANIMSTRUCT_DURATION ; 8
- const SPRITEANIMSTRUCT_DURATIONOFFSET ; 9
- const SPRITEANIMSTRUCT_FRAME ; a
- const SPRITEANIMSTRUCT_JUMPTABLE_INDEX ; b
- const SPRITEANIMSTRUCT_VAR1 ; c
- const SPRITEANIMSTRUCT_VAR2 ; d
- const SPRITEANIMSTRUCT_VAR3 ; e
- const SPRITEANIMSTRUCT_VAR4 ; f
-SPRITEANIMSTRUCT_LENGTH EQU const_value
+rsreset
+SPRITEANIMSTRUCT_INDEX rb ; 0
+SPRITEANIMSTRUCT_FRAMESET_ID rb ; 1
+SPRITEANIMSTRUCT_ANIM_SEQ_ID rb ; 2
+SPRITEANIMSTRUCT_TILE_ID rb ; 3
+SPRITEANIMSTRUCT_XCOORD rb ; 4
+SPRITEANIMSTRUCT_YCOORD rb ; 5
+SPRITEANIMSTRUCT_XOFFSET rb ; 6
+SPRITEANIMSTRUCT_YOFFSET rb ; 7
+SPRITEANIMSTRUCT_DURATION rb ; 8
+SPRITEANIMSTRUCT_DURATIONOFFSET rb ; 9
+SPRITEANIMSTRUCT_FRAME rb ; a
+SPRITEANIMSTRUCT_JUMPTABLE_INDEX rb ; b
+SPRITEANIMSTRUCT_VAR1 rb ; c
+SPRITEANIMSTRUCT_VAR2 rb ; d
+SPRITEANIMSTRUCT_VAR3 rb ; e
+SPRITEANIMSTRUCT_VAR4 rb ; f
+SPRITEANIMSTRUCT_LENGTH EQU _RS
NUM_SPRITE_ANIM_STRUCTS EQU 10 ; see wSpriteAnimationStructs
; wSpriteAnimDict keys (see wram.asm)
--- a/macros/const.asm
+++ b/macros/const.asm
@@ -38,3 +38,11 @@
const_value = \1
endc
ENDM
+
+rb_skip: MACRO
+if _NARG == 1
+rsset _RS + \1
+else
+rsset _RS + 1
+endc
+ENDM