RGBDS syntax updates (#358)

New MACRO and DEF syntax
This commit is contained in:
vulcandth 2022-06-06 16:25:31 -05:00 committed by GitHub
parent d7808d110f
commit 6b5be9129c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
101 changed files with 958 additions and 958 deletions

View file

@ -61,7 +61,7 @@ Music_DoLowHealthAlarm::
jr nz, .copyLoop jr nz, .copyLoop
ret ret
alarm_tone: MACRO MACRO alarm_tone
db \1 ; length db \1 ; length
db \2 ; envelope db \2 ; envelope
dw \3 ; frequency dw \3 ; frequency

View file

@ -13,7 +13,7 @@
const A_ ; 9 const A_ ; 9
const A# ; A const A# ; A
const B_ ; B const B_ ; B
NUM_NOTES EQU const_value DEF NUM_NOTES EQU const_value
; channel ; channel
; Audio[1|2|3]_HWChannelBaseAddresses, Audio[1|2|3]_HWChannelDisableMasks, ; Audio[1|2|3]_HWChannelBaseAddresses, Audio[1|2|3]_HWChannelDisableMasks,
@ -23,31 +23,31 @@ NUM_NOTES EQU const_value
const Ch2 ; 1 const Ch2 ; 1
const Ch3 ; 2 const Ch3 ; 2
const Ch4 ; 3 const Ch4 ; 3
NUM_MUSIC_CHANS EQU const_value DEF NUM_MUSIC_CHANS EQU const_value
const Ch5 ; 4 const Ch5 ; 4
const Ch6 ; 5 const Ch6 ; 5
const Ch7 ; 6 const Ch7 ; 6
const Ch8 ; 7 const Ch8 ; 7
NUM_NOISE_CHANS EQU const_value - NUM_MUSIC_CHANS DEF NUM_NOISE_CHANS EQU const_value - NUM_MUSIC_CHANS
NUM_CHANNELS EQU const_value DEF NUM_CHANNELS EQU const_value
; HW sound channel register base addresses ; HW sound channel register base addresses
HW_CH1_BASE EQU LOW(rNR10) DEF HW_CH1_BASE EQU LOW(rNR10)
HW_CH2_BASE EQU LOW(rNR21) - 1 DEF HW_CH2_BASE EQU LOW(rNR21) - 1
HW_CH3_BASE EQU LOW(rNR30) DEF HW_CH3_BASE EQU LOW(rNR30)
HW_CH4_BASE EQU LOW(rNR41) - 1 DEF HW_CH4_BASE EQU LOW(rNR41) - 1
; HW sound channel enable bit masks ; HW sound channel enable bit masks
HW_CH1_ENABLE_MASK EQU %00010001 DEF HW_CH1_ENABLE_MASK EQU %00010001
HW_CH2_ENABLE_MASK EQU %00100010 DEF HW_CH2_ENABLE_MASK EQU %00100010
HW_CH3_ENABLE_MASK EQU %01000100 DEF HW_CH3_ENABLE_MASK EQU %01000100
HW_CH4_ENABLE_MASK EQU %10001000 DEF HW_CH4_ENABLE_MASK EQU %10001000
; HW sound channel disable bit masks ; HW sound channel disable bit masks
HW_CH1_DISABLE_MASK EQU (~HW_CH1_ENABLE_MASK & $ff) DEF HW_CH1_DISABLE_MASK EQU (~HW_CH1_ENABLE_MASK & $ff)
HW_CH2_DISABLE_MASK EQU (~HW_CH2_ENABLE_MASK & $ff) DEF HW_CH2_DISABLE_MASK EQU (~HW_CH2_ENABLE_MASK & $ff)
HW_CH3_DISABLE_MASK EQU (~HW_CH3_ENABLE_MASK & $ff) DEF HW_CH3_DISABLE_MASK EQU (~HW_CH3_ENABLE_MASK & $ff)
HW_CH4_DISABLE_MASK EQU (~HW_CH4_ENABLE_MASK & $ff) DEF HW_CH4_DISABLE_MASK EQU (~HW_CH4_ENABLE_MASK & $ff)
const_def 1 const_def 1
const REG_DUTY_SOUND_LEN ; 1 const REG_DUTY_SOUND_LEN ; 1
@ -65,4 +65,4 @@ HW_CH4_DISABLE_MASK EQU (~HW_CH4_ENABLE_MASK & $ff)
const BIT_ROTATE_DUTY_CYCLE ; 6 ; if rotating duty cycle const BIT_ROTATE_DUTY_CYCLE ; 6 ; if rotating duty cycle
; wChannelFlags2 constant (only has one flag) ; wChannelFlags2 constant (only has one flag)
BIT_EXECUTE_MUSIC EQU 0 ; if in execute music DEF BIT_EXECUTE_MUSIC EQU 0 ; if in execute music

View file

@ -1,6 +1,6 @@
MAX_LEVEL EQU 100 DEF MAX_LEVEL EQU 100
NUM_MOVES EQU 4 DEF NUM_MOVES EQU 4
; VitaminStats indexes (see data/battle/stat_names.asm) ; VitaminStats indexes (see data/battle/stat_names.asm)
const_def const_def
@ -9,7 +9,7 @@ NUM_MOVES EQU 4
const STAT_DEFENSE const STAT_DEFENSE
const STAT_SPEED const STAT_SPEED
const STAT_SPECIAL const STAT_SPECIAL
NUM_STATS EQU const_value DEF NUM_STATS EQU const_value
; StatModTextStrings indexes (see data/battle/stat_mod_names.asm) ; StatModTextStrings indexes (see data/battle/stat_mod_names.asm)
const_def const_def
@ -20,20 +20,20 @@ NUM_STATS EQU const_value
const MOD_ACCURACY const MOD_ACCURACY
const MOD_EVASION const MOD_EVASION
const_skip 2 const_skip 2
NUM_STAT_MODS EQU const_value DEF NUM_STAT_MODS EQU const_value
; Moves struct fields (see data/moves/moves.asm) ; Moves struct fields (see data/moves/moves.asm)
rsreset rsreset
MOVE_ANIM rb DEF MOVE_ANIM rb
MOVE_EFFECT rb DEF MOVE_EFFECT rb
MOVE_POWER rb DEF MOVE_POWER rb
MOVE_TYPE rb DEF MOVE_TYPE rb
MOVE_ACC rb DEF MOVE_ACC rb
MOVE_PP rb DEF MOVE_PP rb
MOVE_LENGTH EQU _RS DEF MOVE_LENGTH EQU _RS
; D733 flags ; D733 flags
BIT_TEST_BATTLE EQU 0 DEF BIT_TEST_BATTLE EQU 0
; battle type constants (wBattleType values) ; battle type constants (wBattleType values)
const_def const_def
@ -42,33 +42,33 @@ BIT_TEST_BATTLE EQU 0
const BATTLE_TYPE_SAFARI ; 2 const BATTLE_TYPE_SAFARI ; 2
; damage limits before type effectiveness ; damage limits before type effectiveness
MIN_NEUTRAL_DAMAGE EQU 2 DEF MIN_NEUTRAL_DAMAGE EQU 2
MAX_NEUTRAL_DAMAGE EQU 999 DEF MAX_NEUTRAL_DAMAGE EQU 999
; fixed damage constants ; fixed damage constants
SONICBOOM_DAMAGE EQU 20 DEF SONICBOOM_DAMAGE EQU 20
DRAGON_RAGE_DAMAGE EQU 40 DEF DRAGON_RAGE_DAMAGE EQU 40
; type effectiveness factors, scaled by 10 ; type effectiveness factors, scaled by 10
SUPER_EFFECTIVE EQU 20 DEF SUPER_EFFECTIVE EQU 20
MORE_EFFECTIVE EQU 15 DEF MORE_EFFECTIVE EQU 15
EFFECTIVE EQU 10 DEF EFFECTIVE EQU 10
NOT_VERY_EFFECTIVE EQU 05 DEF NOT_VERY_EFFECTIVE EQU 05
NO_EFFECT EQU 00 DEF NO_EFFECT EQU 00
; non-volatile statuses ; non-volatile statuses
SLP EQU %111 ; sleep counter DEF SLP EQU %111 ; sleep counter
const_def 3 const_def 3
const PSN ; 3 const PSN ; 3
const BRN ; 4 const BRN ; 4
const FRZ ; 5 const FRZ ; 5
const PAR ; 6 const PAR ; 6
MAX_STAT_VALUE EQU 999 DEF MAX_STAT_VALUE EQU 999
; trainer dvs ; trainer dvs
ATKDEFDV_TRAINER EQU $98 DEF ATKDEFDV_TRAINER EQU $98
SPDSPCDV_TRAINER EQU $88 DEF SPDSPCDV_TRAINER EQU $88
; wPlayerBattleStatus1 or wEnemyBattleStatus1 bit flags ; wPlayerBattleStatus1 or wEnemyBattleStatus1 bit flags
const_def const_def

View file

@ -64,7 +64,7 @@
const CRED_FUKUI ; $3D const CRED_FUKUI ; $3D
const CRED_CLUB ; $3E const CRED_CLUB ; $3E
const CRED_PAAD ; $3F const CRED_PAAD ; $3F
NUM_CRED_STRINGS EQU const_value DEF NUM_CRED_STRINGS EQU const_value
const_def -1, -1 const_def -1, -1
const CRED_TEXT_FADE_MON ; $FF const CRED_TEXT_FADE_MON ; $FF

View file

@ -772,4 +772,4 @@
; End of events ; End of events
const_next $A00 const_next $A00
NUM_EVENTS EQU const_value DEF NUM_EVENTS EQU const_value

View file

@ -1,33 +1,33 @@
TILE_WIDTH EQU 8 ; pixels DEF TILE_WIDTH EQU 8 ; pixels
LEN_1BPP_TILE EQU 1 * TILE_WIDTH ; bytes DEF LEN_1BPP_TILE EQU 1 * TILE_WIDTH ; bytes
LEN_2BPP_TILE EQU 2 * TILE_WIDTH ; bytes DEF LEN_2BPP_TILE EQU 2 * TILE_WIDTH ; bytes
SCREEN_WIDTH EQU 20 DEF SCREEN_WIDTH EQU 20
SCREEN_HEIGHT EQU 18 DEF SCREEN_HEIGHT EQU 18
SCREEN_WIDTH_PX EQU SCREEN_WIDTH * TILE_WIDTH ; pixels DEF SCREEN_WIDTH_PX EQU SCREEN_WIDTH * TILE_WIDTH ; pixels
SCREEN_HEIGHT_PX EQU SCREEN_HEIGHT * TILE_WIDTH ; pixels DEF SCREEN_HEIGHT_PX EQU SCREEN_HEIGHT * TILE_WIDTH ; pixels
BG_MAP_WIDTH EQU 32 ; tiles DEF BG_MAP_WIDTH EQU 32 ; tiles
BG_MAP_HEIGHT EQU 32 ; tiles DEF BG_MAP_HEIGHT EQU 32 ; tiles
SPRITEBUFFERSIZE EQU 7 * 7 * LEN_1BPP_TILE DEF SPRITEBUFFERSIZE EQU 7 * 7 * LEN_1BPP_TILE
; HP bar ; HP bar
HP_BAR_GREEN EQU 0 DEF HP_BAR_GREEN EQU 0
HP_BAR_YELLOW EQU 1 DEF HP_BAR_YELLOW EQU 1
HP_BAR_RED EQU 2 DEF HP_BAR_RED EQU 2
; wOAMBuffer ; wOAMBuffer
NUM_SPRITE_OAM_STRUCTS EQU 40 DEF NUM_SPRITE_OAM_STRUCTS EQU 40
; hAutoBGTransferEnabled ; hAutoBGTransferEnabled
TRANSFERTOP EQU 0 DEF TRANSFERTOP EQU 0
TRANSFERMIDDLE EQU 1 DEF TRANSFERMIDDLE EQU 1
TRANSFERBOTTOM EQU 2 DEF TRANSFERBOTTOM EQU 2
; hRedrawRowOrColumnMode ; hRedrawRowOrColumnMode
REDRAW_COL EQU 1 DEF REDRAW_COL EQU 1
REDRAW_ROW EQU 2 DEF REDRAW_ROW EQU 2
; tile list ids ; tile list ids
; TileIDListPointerTable indexes (see data/tilemaps.asm) ; TileIDListPointerTable indexes (see data/tilemaps.asm)
@ -40,4 +40,4 @@ REDRAW_ROW EQU 2
const TILEMAP_GENGAR_INTRO_3 const TILEMAP_GENGAR_INTRO_3
const TILEMAP_GAME_BOY const TILEMAP_GAME_BOY
const TILEMAP_LINK_CABLE const TILEMAP_LINK_CABLE
NUM_TILEMAPS EQU const_value DEF NUM_TILEMAPS EQU const_value

View file

@ -1,130 +1,130 @@
; From http://nocash.emubase.de/pandocs.htm. ; From http://nocash.emubase.de/pandocs.htm.
GBC EQU $11 DEF GBC EQU $11
; memory map ; memory map
VRAM_Begin EQU $8000 DEF VRAM_Begin EQU $8000
VRAM_End EQU $a000 DEF VRAM_End EQU $a000
SRAM_Begin EQU $a000 DEF SRAM_Begin EQU $a000
SRAM_End EQU $c000 DEF SRAM_End EQU $c000
WRAM0_Begin EQU $c000 DEF WRAM0_Begin EQU $c000
WRAM0_End EQU $d000 DEF WRAM0_End EQU $d000
WRAM1_Begin EQU $d000 DEF WRAM1_Begin EQU $d000
WRAM1_End EQU $e000 DEF WRAM1_End EQU $e000
; hardware registers $ff00-$ff80 (see below) ; hardware registers $ff00-$ff80 (see below)
HRAM_Begin EQU $ff80 DEF HRAM_Begin EQU $ff80
HRAM_End EQU $ffff DEF HRAM_End EQU $ffff
; MBC1 ; MBC1
MBC1SRamEnable EQU $0000 DEF MBC1SRamEnable EQU $0000
MBC1RomBank EQU $2000 DEF MBC1RomBank EQU $2000
MBC1SRamBank EQU $4000 DEF MBC1SRamBank EQU $4000
MBC1SRamBankingMode EQU $6000 DEF MBC1SRamBankingMode EQU $6000
SRAM_DISABLE EQU $00 DEF SRAM_DISABLE EQU $00
SRAM_ENABLE EQU $0a DEF SRAM_ENABLE EQU $0a
NUM_SRAM_BANKS EQU 4 DEF NUM_SRAM_BANKS EQU 4
; interrupt flags ; interrupt flags
VBLANK EQU 0 DEF VBLANK EQU 0
LCD_STAT EQU 1 DEF LCD_STAT EQU 1
TIMER EQU 2 DEF TIMER EQU 2
SERIAL EQU 3 DEF SERIAL EQU 3
JOYPAD EQU 4 DEF JOYPAD EQU 4
LY_VBLANK EQU 145 DEF LY_VBLANK EQU 145
; serial ; serial
START_TRANSFER_EXTERNAL_CLOCK EQU $80 DEF START_TRANSFER_EXTERNAL_CLOCK EQU $80
START_TRANSFER_INTERNAL_CLOCK EQU $81 DEF START_TRANSFER_INTERNAL_CLOCK EQU $81
; Hardware registers ; Hardware registers
rJOYP EQU $ff00 ; Joypad (R/W) DEF rJOYP EQU $ff00 ; Joypad (R/W)
rSB EQU $ff01 ; Serial transfer data (R/W) DEF rSB EQU $ff01 ; Serial transfer data (R/W)
rSC EQU $ff02 ; Serial Transfer Control (R/W) DEF rSC EQU $ff02 ; Serial Transfer Control (R/W)
rSC_ON EQU 7 DEF rSC_ON EQU 7
rSC_CGB EQU 1 DEF rSC_CGB EQU 1
rSC_CLOCK EQU 0 DEF rSC_CLOCK EQU 0
rDIV EQU $ff04 ; Divider Register (R/W) DEF rDIV EQU $ff04 ; Divider Register (R/W)
rTIMA EQU $ff05 ; Timer counter (R/W) DEF rTIMA EQU $ff05 ; Timer counter (R/W)
rTMA EQU $ff06 ; Timer Modulo (R/W) DEF rTMA EQU $ff06 ; Timer Modulo (R/W)
rTAC EQU $ff07 ; Timer Control (R/W) DEF rTAC EQU $ff07 ; Timer Control (R/W)
rTAC_ON EQU 2 DEF rTAC_ON EQU 2
rTAC_4096_HZ EQU 0 DEF rTAC_4096_HZ EQU 0
rTAC_262144_HZ EQU 1 DEF rTAC_262144_HZ EQU 1
rTAC_65536_HZ EQU 2 DEF rTAC_65536_HZ EQU 2
rTAC_16384_HZ EQU 3 DEF rTAC_16384_HZ EQU 3
rIF EQU $ff0f ; Interrupt Flag (R/W) DEF rIF EQU $ff0f ; Interrupt Flag (R/W)
rNR10 EQU $ff10 ; Channel 1 Sweep register (R/W) DEF rNR10 EQU $ff10 ; Channel 1 Sweep register (R/W)
rNR11 EQU $ff11 ; Channel 1 Sound length/Wave pattern duty (R/W) DEF rNR11 EQU $ff11 ; Channel 1 Sound length/Wave pattern duty (R/W)
rNR12 EQU $ff12 ; Channel 1 Volume Envelope (R/W) DEF rNR12 EQU $ff12 ; Channel 1 Volume Envelope (R/W)
rNR13 EQU $ff13 ; Channel 1 Frequency lo (Write Only) DEF rNR13 EQU $ff13 ; Channel 1 Frequency lo (Write Only)
rNR14 EQU $ff14 ; Channel 1 Frequency hi (R/W) DEF rNR14 EQU $ff14 ; Channel 1 Frequency hi (R/W)
rNR21 EQU $ff16 ; Channel 2 Sound Length/Wave Pattern Duty (R/W) DEF rNR21 EQU $ff16 ; Channel 2 Sound Length/Wave Pattern Duty (R/W)
rNR22 EQU $ff17 ; Channel 2 Volume Envelope (R/W) DEF rNR22 EQU $ff17 ; Channel 2 Volume Envelope (R/W)
rNR23 EQU $ff18 ; Channel 2 Frequency lo data (W) DEF rNR23 EQU $ff18 ; Channel 2 Frequency lo data (W)
rNR24 EQU $ff19 ; Channel 2 Frequency hi data (R/W) DEF rNR24 EQU $ff19 ; Channel 2 Frequency hi data (R/W)
rNR30 EQU $ff1a ; Channel 3 Sound on/off (R/W) DEF rNR30 EQU $ff1a ; Channel 3 Sound on/off (R/W)
rNR31 EQU $ff1b ; Channel 3 Sound Length DEF rNR31 EQU $ff1b ; Channel 3 Sound Length
rNR32 EQU $ff1c ; Channel 3 Select output level (R/W) DEF rNR32 EQU $ff1c ; Channel 3 Select output level (R/W)
rNR33 EQU $ff1d ; Channel 3 Frequency's lower data (W) DEF rNR33 EQU $ff1d ; Channel 3 Frequency's lower data (W)
rNR34 EQU $ff1e ; Channel 3 Frequency's higher data (R/W) DEF rNR34 EQU $ff1e ; Channel 3 Frequency's higher data (R/W)
rNR41 EQU $ff20 ; Channel 4 Sound Length (R/W) DEF rNR41 EQU $ff20 ; Channel 4 Sound Length (R/W)
rNR42 EQU $ff21 ; Channel 4 Volume Envelope (R/W) DEF rNR42 EQU $ff21 ; Channel 4 Volume Envelope (R/W)
rNR43 EQU $ff22 ; Channel 4 Polynomial Counter (R/W) DEF rNR43 EQU $ff22 ; Channel 4 Polynomial Counter (R/W)
rNR44 EQU $ff23 ; Channel 4 Counter/consecutive; Initial (R/W) DEF rNR44 EQU $ff23 ; Channel 4 Counter/consecutive; Initial (R/W)
rNR50 EQU $ff24 ; Channel control / ON-OFF / Volume (R/W) DEF rNR50 EQU $ff24 ; Channel control / ON-OFF / Volume (R/W)
rNR51 EQU $ff25 ; Selection of Sound output terminal (R/W) DEF rNR51 EQU $ff25 ; Selection of Sound output terminal (R/W)
rNR52 EQU $ff26 ; Sound on/off DEF rNR52 EQU $ff26 ; Sound on/off
rWave_0 EQU $ff30 DEF rWave_0 EQU $ff30
rWave_1 EQU $ff31 DEF rWave_1 EQU $ff31
rWave_2 EQU $ff32 DEF rWave_2 EQU $ff32
rWave_3 EQU $ff33 DEF rWave_3 EQU $ff33
rWave_4 EQU $ff34 DEF rWave_4 EQU $ff34
rWave_5 EQU $ff35 DEF rWave_5 EQU $ff35
rWave_6 EQU $ff36 DEF rWave_6 EQU $ff36
rWave_7 EQU $ff37 DEF rWave_7 EQU $ff37
rWave_8 EQU $ff38 DEF rWave_8 EQU $ff38
rWave_9 EQU $ff39 DEF rWave_9 EQU $ff39
rWave_a EQU $ff3a DEF rWave_a EQU $ff3a
rWave_b EQU $ff3b DEF rWave_b EQU $ff3b
rWave_c EQU $ff3c DEF rWave_c EQU $ff3c
rWave_d EQU $ff3d DEF rWave_d EQU $ff3d
rWave_e EQU $ff3e DEF rWave_e EQU $ff3e
rWave_f EQU $ff3f DEF rWave_f EQU $ff3f
rLCDC EQU $ff40 ; LCD Control (R/W) DEF rLCDC EQU $ff40 ; LCD Control (R/W)
rLCDC_ENABLE EQU 7 DEF rLCDC_ENABLE EQU 7
rLCDC_ENABLE_MASK EQU 1 << rLCDC_ENABLE DEF rLCDC_ENABLE_MASK EQU 1 << rLCDC_ENABLE
rSTAT EQU $ff41 ; LCDC Status (R/W) DEF rSTAT EQU $ff41 ; LCDC Status (R/W)
rSCY EQU $ff42 ; Scroll Y (R/W) DEF rSCY EQU $ff42 ; Scroll Y (R/W)
rSCX EQU $ff43 ; Scroll X (R/W) DEF rSCX EQU $ff43 ; Scroll X (R/W)
rLY EQU $ff44 ; LCDC Y-Coordinate (R) DEF rLY EQU $ff44 ; LCDC Y-Coordinate (R)
rLYC EQU $ff45 ; LY Compare (R/W) DEF rLYC EQU $ff45 ; LY Compare (R/W)
rDMA EQU $ff46 ; DMA Transfer and Start Address (W) DEF rDMA EQU $ff46 ; DMA Transfer and Start Address (W)
rBGP EQU $ff47 ; BG Palette Data (R/W) - Non CGB Mode Only DEF rBGP EQU $ff47 ; BG Palette Data (R/W) - Non CGB Mode Only
rOBP0 EQU $ff48 ; Object Palette 0 Data (R/W) - Non CGB Mode Only DEF rOBP0 EQU $ff48 ; Object Palette 0 Data (R/W) - Non CGB Mode Only
rOBP1 EQU $ff49 ; Object Palette 1 Data (R/W) - Non CGB Mode Only DEF rOBP1 EQU $ff49 ; Object Palette 1 Data (R/W) - Non CGB Mode Only
rWY EQU $ff4a ; Window Y Position (R/W) DEF rWY EQU $ff4a ; Window Y Position (R/W)
rWX EQU $ff4b ; Window X Position minus 7 (R/W) DEF rWX EQU $ff4b ; Window X Position minus 7 (R/W)
rKEY1 EQU $ff4d ; CGB Mode Only - Prepare Speed Switch DEF rKEY1 EQU $ff4d ; CGB Mode Only - Prepare Speed Switch
rVBK EQU $ff4f ; CGB Mode Only - VRAM Bank DEF rVBK EQU $ff4f ; CGB Mode Only - VRAM Bank
rHDMA1 EQU $ff51 ; CGB Mode Only - New DMA Source, High DEF rHDMA1 EQU $ff51 ; CGB Mode Only - New DMA Source, High
rHDMA2 EQU $ff52 ; CGB Mode Only - New DMA Source, Low DEF rHDMA2 EQU $ff52 ; CGB Mode Only - New DMA Source, Low
rHDMA3 EQU $ff53 ; CGB Mode Only - New DMA Destination, High DEF rHDMA3 EQU $ff53 ; CGB Mode Only - New DMA Destination, High
rHDMA4 EQU $ff54 ; CGB Mode Only - New DMA Destination, Low DEF rHDMA4 EQU $ff54 ; CGB Mode Only - New DMA Destination, Low
rHDMA5 EQU $ff55 ; CGB Mode Only - New DMA Length/Mode/Start DEF rHDMA5 EQU $ff55 ; CGB Mode Only - New DMA Length/Mode/Start
rRP EQU $ff56 ; CGB Mode Only - Infrared Communications Port DEF rRP EQU $ff56 ; CGB Mode Only - Infrared Communications Port
rBGPI EQU $ff68 ; CGB Mode Only - Background Palette Index DEF rBGPI EQU $ff68 ; CGB Mode Only - Background Palette Index
rBGPD EQU $ff69 ; CGB Mode Only - Background Palette Data DEF rBGPD EQU $ff69 ; CGB Mode Only - Background Palette Data
rOBPI EQU $ff6a ; CGB Mode Only - Sprite Palette Index DEF rOBPI EQU $ff6a ; CGB Mode Only - Sprite Palette Index
rOBPD EQU $ff6b ; CGB Mode Only - Sprite Palette Data DEF rOBPD EQU $ff6b ; CGB Mode Only - Sprite Palette Data
rUNKNOWN1 EQU $ff6c ; (FEh) Bit 0 (Read/Write) - CGB Mode Only DEF rUNKNOWN1 EQU $ff6c ; (FEh) Bit 0 (Read/Write) - CGB Mode Only
rSVBK EQU $ff70 ; CGB Mode Only - WRAM Bank DEF rSVBK EQU $ff70 ; CGB Mode Only - WRAM Bank
rUNKNOWN2 EQU $ff72 ; (00h) - Bit 0-7 (Read/Write) DEF rUNKNOWN2 EQU $ff72 ; (00h) - Bit 0-7 (Read/Write)
rUNKNOWN3 EQU $ff73 ; (00h) - Bit 0-7 (Read/Write) DEF rUNKNOWN3 EQU $ff73 ; (00h) - Bit 0-7 (Read/Write)
rUNKNOWN4 EQU $ff74 ; (00h) - Bit 0-7 (Read/Write) - CGB Mode Only DEF rUNKNOWN4 EQU $ff74 ; (00h) - Bit 0-7 (Read/Write) - CGB Mode Only
rUNKNOWN5 EQU $ff75 ; (8Fh) - Bit 4-6 (Read/Write) DEF rUNKNOWN5 EQU $ff75 ; (8Fh) - Bit 4-6 (Read/Write)
rUNKNOWN6 EQU $ff76 ; (00h) - Always 00h (Read Only) DEF rUNKNOWN6 EQU $ff76 ; (00h) - Always 00h (Read Only)
rUNKNOWN7 EQU $ff77 ; (00h) - Always 00h (Read Only) DEF rUNKNOWN7 EQU $ff77 ; (00h) - Always 00h (Read Only)
rIE EQU $ffff ; Interrupt Enable (R/W) DEF rIE EQU $ffff ; Interrupt Enable (R/W)

View file

@ -1,5 +1,5 @@
HIDE EQU $11 DEF HIDE EQU $11
SHOW EQU $15 DEF SHOW EQU $15
; MissableObjects indexes (see data/maps/hide_show_data.asm) ; MissableObjects indexes (see data/maps/hide_show_data.asm)
; this is a list of the sprites that can be enabled/disabled during the game ; this is a list of the sprites that can be enabled/disabled during the game
@ -237,4 +237,4 @@ SHOW EQU $15
const HS_SEAFOAM_ISLANDS_B4F_BOULDER_1 ; E1 const HS_SEAFOAM_ISLANDS_B4F_BOULDER_1 ; E1
const HS_SEAFOAM_ISLANDS_B4F_BOULDER_2 ; E2 const HS_SEAFOAM_ISLANDS_B4F_BOULDER_2 ; E2
const HS_ARTICUNO ; E3 X const HS_ARTICUNO ; E3 X
NUM_HS_OBJECTS EQU const_value DEF NUM_HS_OBJECTS EQU const_value

View file

@ -12,6 +12,6 @@
const ICON_SNAKE ; $8 const ICON_SNAKE ; $8
const ICON_QUADRUPED ; $9 const ICON_QUADRUPED ; $9
ICON_TRADEBUBBLE EQU $e DEF ICON_TRADEBUBBLE EQU $e
ICONOFFSET EQU $40 ; difference between alternating icon frames' tile IDs DEF ICONOFFSET EQU $40 ; difference between alternating icon frames' tile IDs

View file

@ -9,12 +9,12 @@
const BIT_D_UP const BIT_D_UP
const BIT_D_DOWN const BIT_D_DOWN
NO_INPUT EQU 0 DEF NO_INPUT EQU 0
A_BUTTON EQU 1 << BIT_A_BUTTON DEF A_BUTTON EQU 1 << BIT_A_BUTTON
B_BUTTON EQU 1 << BIT_B_BUTTON DEF B_BUTTON EQU 1 << BIT_B_BUTTON
SELECT EQU 1 << BIT_SELECT DEF SELECT EQU 1 << BIT_SELECT
START EQU 1 << BIT_START DEF START EQU 1 << BIT_START
D_RIGHT EQU 1 << BIT_D_RIGHT DEF D_RIGHT EQU 1 << BIT_D_RIGHT
D_LEFT EQU 1 << BIT_D_LEFT DEF D_LEFT EQU 1 << BIT_D_LEFT
D_UP EQU 1 << BIT_D_UP DEF D_UP EQU 1 << BIT_D_UP
D_DOWN EQU 1 << BIT_D_DOWN DEF D_DOWN EQU 1 << BIT_D_DOWN

View file

@ -29,8 +29,8 @@
const POTION ; $14 const POTION ; $14
const BOULDERBADGE ; $15 const BOULDERBADGE ; $15
const CASCADEBADGE ; $16 const CASCADEBADGE ; $16
SAFARI_BAIT EQU $15 ; overload DEF SAFARI_BAIT EQU $15 ; overload
SAFARI_ROCK EQU $16 ; overload DEF SAFARI_ROCK EQU $16 ; overload
const THUNDERBADGE ; $17 const THUNDERBADGE ; $17
const RAINBOWBADGE ; $18 const RAINBOWBADGE ; $18
const SOULBADGE ; $19 const SOULBADGE ; $19
@ -92,7 +92,7 @@ SAFARI_ROCK EQU $16 ; overload
const MAX_ETHER ; $51 const MAX_ETHER ; $51
const ELIXER ; $52 const ELIXER ; $52
const MAX_ELIXER ; $53 const MAX_ELIXER ; $53
NUM_ITEMS EQU const_value - 1 DEF NUM_ITEMS EQU const_value - 1
; elevator floors use item IDs ; elevator floors use item IDs
const FLOOR_B2F ; $54 const FLOOR_B2F ; $54
@ -109,54 +109,54 @@ NUM_ITEMS EQU const_value - 1
const FLOOR_10F ; $5F const FLOOR_10F ; $5F
const FLOOR_11F ; $60 const FLOOR_11F ; $60
const FLOOR_B4F ; $61 const FLOOR_B4F ; $61
NUM_FLOORS EQU const_value - 1 - NUM_ITEMS DEF NUM_FLOORS EQU const_value - 1 - NUM_ITEMS
const_next $C4 const_next $C4
; HMs are defined before TMs, so the actual number of TM definitions ; HMs are defined before TMs, so the actual number of TM definitions
; is not yet available. The TM quantity is hard-coded here and must ; is not yet available. The TM quantity is hard-coded here and must
; match the actual number below. ; match the actual number below.
NUM_TMS EQU 50 DEF NUM_TMS EQU 50
__tmhm_value__ = NUM_TMS + 1 DEF __tmhm_value__ = NUM_TMS + 1
add_tmnum: MACRO MACRO add_tmnum
\1_TMNUM EQU __tmhm_value__ DEF \1_TMNUM EQU __tmhm_value__
__tmhm_value__ += 1 DEF __tmhm_value__ += 1
ENDM ENDM
add_hm: MACRO MACRO add_hm
; Defines three constants: ; Defines three constants:
; - HM_\1: the item id, starting at $C4 ; - HM_\1: the item id, starting at $C4
; - \1_TMNUM: the learnable TM/HM flag, starting at 51 ; - \1_TMNUM: the learnable TM/HM flag, starting at 51
; - HM##_MOVE: alias for the move id, equal to the value of \1 ; - HM##_MOVE: alias for the move id, equal to the value of \1
const HM_\1 const HM_\1
HM_VALUE = __tmhm_value__ - NUM_TMS DEF HM_VALUE = __tmhm_value__ - NUM_TMS
HM{02d:HM_VALUE}_MOVE EQU \1 DEF HM{02d:HM_VALUE}_MOVE EQU \1
add_tmnum \1 add_tmnum \1
ENDM ENDM
HM01 EQU const_value DEF HM01 EQU const_value
add_hm CUT ; $C4 add_hm CUT ; $C4
add_hm FLY ; $C5 add_hm FLY ; $C5
add_hm SURF ; $C6 add_hm SURF ; $C6
add_hm STRENGTH ; $C7 add_hm STRENGTH ; $C7
add_hm FLASH ; $C8 add_hm FLASH ; $C8
NUM_HMS EQU const_value - HM01 DEF NUM_HMS EQU const_value - HM01
__tmhm_value__ = 1 DEF __tmhm_value__ = 1
add_tm: MACRO MACRO add_tm
; Defines three constants: ; Defines three constants:
; - TM_\1: the item id, starting at $C9 ; - TM_\1: the item id, starting at $C9
; - \1_TMNUM: the learnable TM/HM flag, starting at 1 ; - \1_TMNUM: the learnable TM/HM flag, starting at 1
; - TM##_MOVE: alias for the move id, equal to the value of \1 ; - TM##_MOVE: alias for the move id, equal to the value of \1
const TM_\1 const TM_\1
TM{02d:__tmhm_value__}_MOVE EQU \1 DEF TM{02d:__tmhm_value__}_MOVE EQU \1
add_tmnum \1 add_tmnum \1
ENDM ENDM
TM01 EQU const_value DEF TM01 EQU const_value
add_tm MEGA_PUNCH ; $C9 add_tm MEGA_PUNCH ; $C9
add_tm RAZOR_WIND ; $CA add_tm RAZOR_WIND ; $CA
add_tm SWORDS_DANCE ; $CB add_tm SWORDS_DANCE ; $CB
@ -209,9 +209,9 @@ TM01 EQU const_value
add_tm SUBSTITUTE ; $FA add_tm SUBSTITUTE ; $FA
ASSERT NUM_TMS == const_value - TM01, "NUM_TMS ({d:NUM_TMS}) does not match the number of add_tm definitions" ASSERT NUM_TMS == const_value - TM01, "NUM_TMS ({d:NUM_TMS}) does not match the number of add_tm definitions"
NUM_TM_HM EQU NUM_TMS + NUM_HMS DEF NUM_TM_HM EQU NUM_TMS + NUM_HMS
; 50 TMs + 5 HMs = 55 learnable TM/HM flags per Pokémon. ; 50 TMs + 5 HMs = 55 learnable TM/HM flags per Pokémon.
; These fit in 7 bytes, with one unused bit left over. ; These fit in 7 bytes, with one unused bit left over.
__tmhm_value__ = NUM_TM_HM + 1 DEF __tmhm_value__ = NUM_TM_HM + 1
UNUSED_TMNUM EQU __tmhm_value__ DEF UNUSED_TMNUM EQU __tmhm_value__

View file

@ -1,7 +1,7 @@
mapconst: MACRO MACRO mapconst
const \1 const \1
\1_HEIGHT EQU \2 DEF \1_HEIGHT EQU \2
\1_WIDTH EQU \3 DEF \1_WIDTH EQU \3
ENDM ENDM
; map ids ; map ids
@ -26,9 +26,9 @@ ENDM
mapconst CINNABAR_ISLAND, 9, 10 ; $08 mapconst CINNABAR_ISLAND, 9, 10 ; $08
mapconst INDIGO_PLATEAU, 9, 10 ; $09 mapconst INDIGO_PLATEAU, 9, 10 ; $09
mapconst SAFFRON_CITY, 18, 20 ; $0A mapconst SAFFRON_CITY, 18, 20 ; $0A
NUM_CITY_MAPS EQU const_value DEF NUM_CITY_MAPS EQU const_value
mapconst UNUSED_MAP_0B, 0, 0 ; $0B mapconst UNUSED_MAP_0B, 0, 0 ; $0B
FIRST_ROUTE_MAP EQU const_value DEF FIRST_ROUTE_MAP EQU const_value
mapconst ROUTE_1, 18, 10 ; $0C mapconst ROUTE_1, 18, 10 ; $0C
mapconst ROUTE_2, 36, 10 ; $0D mapconst ROUTE_2, 36, 10 ; $0D
mapconst ROUTE_3, 9, 35 ; $0E mapconst ROUTE_3, 9, 35 ; $0E
@ -54,7 +54,7 @@ FIRST_ROUTE_MAP EQU const_value
mapconst ROUTE_23, 72, 10 ; $22 mapconst ROUTE_23, 72, 10 ; $22
mapconst ROUTE_24, 18, 10 ; $23 mapconst ROUTE_24, 18, 10 ; $23
mapconst ROUTE_25, 9, 30 ; $24 mapconst ROUTE_25, 9, 30 ; $24
FIRST_INDOOR_MAP EQU const_value DEF FIRST_INDOOR_MAP EQU const_value
mapconst REDS_HOUSE_1F, 4, 4 ; $25 mapconst REDS_HOUSE_1F, 4, 4 ; $25
mapconst REDS_HOUSE_2F, 4, 4 ; $26 mapconst REDS_HOUSE_2F, 4, 4 ; $26
mapconst BLUES_HOUSE, 4, 4 ; $27 mapconst BLUES_HOUSE, 4, 4 ; $27
@ -266,8 +266,8 @@ FIRST_INDOOR_MAP EQU const_value
mapconst LORELEIS_ROOM, 6, 5 ; $F5 mapconst LORELEIS_ROOM, 6, 5 ; $F5
mapconst BRUNOS_ROOM, 6, 5 ; $F6 mapconst BRUNOS_ROOM, 6, 5 ; $F6
mapconst AGATHAS_ROOM, 6, 5 ; $F7 mapconst AGATHAS_ROOM, 6, 5 ; $F7
NUM_MAPS EQU const_value DEF NUM_MAPS EQU const_value
; Indoor maps, such as houses, use this as the Map ID in their exit warps ; Indoor maps, such as houses, use this as the Map ID in their exit warps
; This map ID takes the player back to the last outdoor map they were on, stored in wLastMap ; This map ID takes the player back to the last outdoor map they were on, stored in wLastMap
LAST_MAP EQU -1 DEF LAST_MAP EQU -1

View file

@ -1,6 +1,6 @@
; width of east/west connections ; width of east/west connections
; height of north/south connections ; height of north/south connections
MAP_BORDER EQU 3 DEF MAP_BORDER EQU 3
; connection directions ; connection directions
const_def const_def

View file

@ -16,7 +16,7 @@
const SPRITESTATEDATA1_0D ; d const SPRITESTATEDATA1_0D ; d
const SPRITESTATEDATA1_0E ; e const SPRITESTATEDATA1_0E ; e
const SPRITESTATEDATA1_0F ; f const SPRITESTATEDATA1_0F ; f
SPRITESTATEDATA1_LENGTH EQU const_value DEF SPRITESTATEDATA1_LENGTH EQU const_value
; spritestatedata2 struct members (see macros/wram.asm) ; spritestatedata2 struct members (see macros/wram.asm)
const_def const_def
@ -36,24 +36,24 @@ SPRITESTATEDATA1_LENGTH EQU const_value
const SPRITESTATEDATA2_PICTUREID ; d const SPRITESTATEDATA2_PICTUREID ; d
const SPRITESTATEDATA2_IMAGEBASEOFFSET ; e const SPRITESTATEDATA2_IMAGEBASEOFFSET ; e
const SPRITESTATEDATA2_0F ; f const SPRITESTATEDATA2_0F ; f
SPRITESTATEDATA2_LENGTH EQU const_value DEF SPRITESTATEDATA2_LENGTH EQU const_value
NUM_SPRITESTATEDATA_STRUCTS EQU 16 DEF NUM_SPRITESTATEDATA_STRUCTS EQU 16
; different kinds of people events ; different kinds of people events
ITEM EQU $80 DEF ITEM EQU $80
TRAINER EQU $40 DEF TRAINER EQU $40
WALK EQU $FE DEF WALK EQU $FE
STAY EQU $FF DEF STAY EQU $FF
ANY_DIR EQU $00 DEF ANY_DIR EQU $00
UP_DOWN EQU $01 DEF UP_DOWN EQU $01
LEFT_RIGHT EQU $02 DEF LEFT_RIGHT EQU $02
DOWN EQU $D0 DEF DOWN EQU $D0
UP EQU $D1 DEF UP EQU $D1
LEFT EQU $D2 DEF LEFT EQU $D2
RIGHT EQU $D3 DEF RIGHT EQU $D3
NONE EQU $FF DEF NONE EQU $FF
BOULDER_MOVEMENT_BYTE_2 EQU $10 DEF BOULDER_MOVEMENT_BYTE_2 EQU $10

View file

@ -1,5 +1,5 @@
BAG_ITEM_CAPACITY EQU 20 DEF BAG_ITEM_CAPACITY EQU 20
PC_ITEM_CAPACITY EQU 50 DEF PC_ITEM_CAPACITY EQU 50
; text box IDs ; text box IDs
const_def 1 const_def 1
@ -42,15 +42,15 @@ PC_ITEM_CAPACITY EQU 50
const TRADE_CANCEL_MENU ; 5 const TRADE_CANCEL_MENU ; 5
const HEAL_CANCEL_MENU ; 6 const HEAL_CANCEL_MENU ; 6
const NO_YES_MENU ; 7 const NO_YES_MENU ; 7
NUM_TWO_OPTION_MENUS EQU const_value DEF NUM_TWO_OPTION_MENUS EQU const_value
; menu exit method constants for list menus and the buy/sell/quit menu ; menu exit method constants for list menus and the buy/sell/quit menu
CHOSE_MENU_ITEM EQU 1 ; pressed A DEF CHOSE_MENU_ITEM EQU 1 ; pressed A
CANCELLED_MENU EQU 2 ; pressed B DEF CANCELLED_MENU EQU 2 ; pressed B
; menu exit method constants for two-option menus ; menu exit method constants for two-option menus
CHOSE_FIRST_ITEM EQU 1 DEF CHOSE_FIRST_ITEM EQU 1
CHOSE_SECOND_ITEM EQU 2 DEF CHOSE_SECOND_ITEM EQU 2
; move mon constants ; move mon constants
const_def const_def
@ -71,7 +71,7 @@ CHOSE_SECOND_ITEM EQU 2
; party menu message IDs ; party menu message IDs
; PartyMenuItemUseMessagePointers indexes (see engine/menus/party_menu.asm) ; PartyMenuItemUseMessagePointers indexes (see engine/menus/party_menu.asm)
const_next $F0 const_next $F0
FIRST_PARTY_MENU_TEXT_ID EQU const_value DEF FIRST_PARTY_MENU_TEXT_ID EQU const_value
const ANTIDOTE_MSG ; $F0 const ANTIDOTE_MSG ; $F0
const BURN_HEAL_MSG ; $F1 const BURN_HEAL_MSG ; $F1
const ICE_HEAL_MSG ; $F2 const ICE_HEAL_MSG ; $F2

View file

@ -1,6 +1,6 @@
; Boolean checks ; Boolean checks
FALSE EQU 0 DEF FALSE EQU 0
TRUE EQU 1 DEF TRUE EQU 1
; flag operations ; flag operations
const_def const_def
@ -9,9 +9,9 @@ TRUE EQU 1
const FLAG_TEST ; 2 const FLAG_TEST ; 2
; wOptions ; wOptions
TEXT_DELAY_FAST EQU %001 ; 1 DEF TEXT_DELAY_FAST EQU %001 ; 1
TEXT_DELAY_MEDIUM EQU %011 ; 3 DEF TEXT_DELAY_MEDIUM EQU %011 ; 3
TEXT_DELAY_SLOW EQU %101 ; 5 DEF TEXT_DELAY_SLOW EQU %101 ; 5
const_def 6 const_def 6
const BIT_BATTLE_SHIFT ; 6 const BIT_BATTLE_SHIFT ; 6

View file

@ -1,7 +1,7 @@
; special effects that are part of move animations ; special effects that are part of move animations
; SpecialEffectPointers associates them with effect routines (see data/battle_anims/special_effect_pointers.asm) ; SpecialEffectPointers associates them with effect routines (see data/battle_anims/special_effect_pointers.asm)
const_def $C0 const_def $C0
FIRST_SE_ID EQU const_value DEF FIRST_SE_ID EQU const_value
const_skip $18 const_skip $18
const SE_WAVY_SCREEN ; $D8 used in Psywave/Night Shade/Psychic etc. const SE_WAVY_SCREEN ; $D8 used in Psywave/Night Shade/Psychic etc.
const SE_SUBSTITUTE_MON ; $D9 used in Substitute (turns the pokemon into a mini sprite) const SE_SUBSTITUTE_MON ; $D9 used in Substitute (turns the pokemon into a mini sprite)
@ -132,7 +132,7 @@ FIRST_SE_ID EQU const_value
const SUBANIM_53 const SUBANIM_53
const SUBANIM_54 const SUBANIM_54
const SUBANIM_55 const SUBANIM_55
NUM_SUBANIMS EQU const_value DEF NUM_SUBANIMS EQU const_value
; types of subanimations ; types of subanimations
const_def const_def
@ -268,7 +268,7 @@ NUM_SUBANIMS EQU const_value
const FRAMEBLOCK_77 const FRAMEBLOCK_77
const FRAMEBLOCK_78 const FRAMEBLOCK_78
const FRAMEBLOCK_79 const FRAMEBLOCK_79
NUM_FRAMEBLOCKS EQU const_value DEF NUM_FRAMEBLOCKS EQU const_value
; base coordinates that are part of subanimations ; base coordinates that are part of subanimations
; FrameBlockBaseCoords indexes (see data/battle_anims/base_coords.asm) ; FrameBlockBaseCoords indexes (see data/battle_anims/base_coords.asm)
@ -450,7 +450,7 @@ NUM_FRAMEBLOCKS EQU const_value
const BASECOORD_AE const BASECOORD_AE
const BASECOORD_AF const BASECOORD_AF
const BASECOORD_B0 const BASECOORD_B0
NUM_BASECOORDS EQU const_value DEF NUM_BASECOORDS EQU const_value
; frame block modes that are part of subanimations ; frame block modes that are part of subanimations
const_def const_def

View file

@ -171,7 +171,7 @@
const SLASH ; a3 const SLASH ; a3
const SUBSTITUTE ; a4 const SUBSTITUTE ; a4
const STRUGGLE ; a5 const STRUGGLE ; a5
NUM_ATTACKS EQU const_value - 1 DEF NUM_ATTACKS EQU const_value - 1
; Moves do double duty as animation identifiers. ; Moves do double duty as animation identifiers.
@ -213,4 +213,4 @@ NUM_ATTACKS EQU const_value - 1
const ROCK_ANIM ; throw rock const ROCK_ANIM ; throw rock
const BAIT_ANIM ; throw bait const BAIT_ANIM ; throw bait
NUM_ATTACK_ANIMS EQU const_value - 1 DEF NUM_ATTACK_ANIMS EQU const_value - 1

View file

@ -91,4 +91,4 @@
const LEECH_SEED_EFFECT ; $54 const LEECH_SEED_EFFECT ; $54
const SPLASH_EFFECT ; $55 const SPLASH_EFFECT ; $55
const DISABLE_EFFECT ; $56 const DISABLE_EFFECT ; $56
NUM_MOVE_EFFECTS EQU const_value - 1 DEF NUM_MOVE_EFFECTS EQU const_value - 1

View file

@ -1,8 +1,8 @@
; Song ids are calculated by address to save space. ; Song ids are calculated by address to save space.
; SFX_Headers_(1|2|3) indexes (see audio/headers/*.asm) ; SFX_Headers_(1|2|3) indexes (see audio/headers/*.asm)
music_const: MACRO MACRO music_const
\1 EQUS "((\2 - SFX_Headers_1) / 3)" DEF \1 EQUS "((\2 - SFX_Headers_1) / 3)"
ENDM ENDM
; AUDIO_1 ; AUDIO_1
@ -57,7 +57,7 @@ ENDM
music_const MUSIC_MEET_MALE_TRAINER, Music_MeetMaleTrainer music_const MUSIC_MEET_MALE_TRAINER, Music_MeetMaleTrainer
; AUDIO_1 AUDIO_2 AUDIO_3 ; AUDIO_1 AUDIO_2 AUDIO_3
NOISE_INSTRUMENTS_START EQUS "SFX_NOISE_INSTRUMENT01" DEF NOISE_INSTRUMENTS_START EQUS "SFX_NOISE_INSTRUMENT01"
music_const SFX_NOISE_INSTRUMENT01, SFX_Noise_Instrument01_1 music_const SFX_NOISE_INSTRUMENT01, SFX_Noise_Instrument01_1
music_const SFX_NOISE_INSTRUMENT02, SFX_Noise_Instrument02_1 music_const SFX_NOISE_INSTRUMENT02, SFX_Noise_Instrument02_1
music_const SFX_NOISE_INSTRUMENT03, SFX_Noise_Instrument03_1 music_const SFX_NOISE_INSTRUMENT03, SFX_Noise_Instrument03_1
@ -77,9 +77,9 @@ NOISE_INSTRUMENTS_START EQUS "SFX_NOISE_INSTRUMENT01"
music_const SFX_NOISE_INSTRUMENT17, SFX_Noise_Instrument17_1 music_const SFX_NOISE_INSTRUMENT17, SFX_Noise_Instrument17_1
music_const SFX_NOISE_INSTRUMENT18, SFX_Noise_Instrument18_1 music_const SFX_NOISE_INSTRUMENT18, SFX_Noise_Instrument18_1
music_const SFX_NOISE_INSTRUMENT19, SFX_Noise_Instrument19_1 music_const SFX_NOISE_INSTRUMENT19, SFX_Noise_Instrument19_1
NOISE_INSTRUMENTS_END EQUS "SFX_NOISE_INSTRUMENT19 + 1" DEF NOISE_INSTRUMENTS_END EQUS "SFX_NOISE_INSTRUMENT19 + 1"
CRY_SFX_START EQUS "SFX_CRY_00" DEF CRY_SFX_START EQUS "SFX_CRY_00"
music_const SFX_CRY_00, SFX_Cry00_1 music_const SFX_CRY_00, SFX_Cry00_1
music_const SFX_CRY_01, SFX_Cry01_1 music_const SFX_CRY_01, SFX_Cry01_1
music_const SFX_CRY_02, SFX_Cry02_1 music_const SFX_CRY_02, SFX_Cry02_1
@ -118,7 +118,7 @@ CRY_SFX_START EQUS "SFX_CRY_00"
music_const SFX_CRY_23, SFX_Cry23_1 music_const SFX_CRY_23, SFX_Cry23_1
music_const SFX_CRY_24, SFX_Cry24_1 music_const SFX_CRY_24, SFX_Cry24_1
music_const SFX_CRY_25, SFX_Cry25_1 music_const SFX_CRY_25, SFX_Cry25_1
CRY_SFX_END EQUS "SFX_CRY_25 + 3" DEF CRY_SFX_END EQUS "SFX_CRY_25 + 3"
music_const SFX_GET_ITEM_2, SFX_Get_Item2_1 music_const SFX_GET_ITEM_2, SFX_Get_Item2_1
music_const SFX_TINK, SFX_Tink_1 music_const SFX_TINK, SFX_Tink_1
@ -163,7 +163,7 @@ CRY_SFX_END EQUS "SFX_CRY_25 + 3"
; AUDIO_1 ; AUDIO_1
music_const SFX_POKEFLUTE, SFX_Pokeflute music_const SFX_POKEFLUTE, SFX_Pokeflute
music_const SFX_SAFARI_ZONE_PA, SFX_Safari_Zone_PA music_const SFX_SAFARI_ZONE_PA, SFX_Safari_Zone_PA
MAX_SFX_ID_1 EQUS "SFX_SAFARI_ZONE_PA" DEF MAX_SFX_ID_1 EQUS "SFX_SAFARI_ZONE_PA"
; AUDIO_2 ; AUDIO_2
music_const SFX_LEVEL_UP, SFX_Level_Up music_const SFX_LEVEL_UP, SFX_Level_Up
@ -175,7 +175,7 @@ MAX_SFX_ID_1 EQUS "SFX_SAFARI_ZONE_PA"
music_const SFX_DEX_PAGE_ADDED, SFX_Dex_Page_Added music_const SFX_DEX_PAGE_ADDED, SFX_Dex_Page_Added
music_const SFX_CAUGHT_MON, SFX_Caught_Mon music_const SFX_CAUGHT_MON, SFX_Caught_Mon
BATTLE_SFX_START EQUS "SFX_PECK" DEF BATTLE_SFX_START EQUS "SFX_PECK"
music_const SFX_PECK, SFX_Peck music_const SFX_PECK, SFX_Peck
music_const SFX_FAINT_FALL, SFX_Faint_Fall music_const SFX_FAINT_FALL, SFX_Faint_Fall
music_const SFX_BATTLE_09, SFX_Battle_09 music_const SFX_BATTLE_09, SFX_Battle_09
@ -225,8 +225,8 @@ BATTLE_SFX_START EQUS "SFX_PECK"
music_const SFX_BATTLE_35, SFX_Battle_35 music_const SFX_BATTLE_35, SFX_Battle_35
music_const SFX_BATTLE_36, SFX_Battle_36 music_const SFX_BATTLE_36, SFX_Battle_36
music_const SFX_SILPH_SCOPE, SFX_Silph_Scope music_const SFX_SILPH_SCOPE, SFX_Silph_Scope
BATTLE_SFX_END EQUS "SFX_SILPH_SCOPE + 1" DEF BATTLE_SFX_END EQUS "SFX_SILPH_SCOPE + 1"
MAX_SFX_ID_2 EQUS "SFX_SILPH_SCOPE" DEF MAX_SFX_ID_2 EQUS "SFX_SILPH_SCOPE"
; AUDIO_3 ; AUDIO_3
music_const SFX_INTRO_LUNGE, SFX_Intro_Lunge music_const SFX_INTRO_LUNGE, SFX_Intro_Lunge
@ -239,6 +239,6 @@ MAX_SFX_ID_2 EQUS "SFX_SILPH_SCOPE"
music_const SFX_SLOTS_REWARD, SFX_Slots_Reward music_const SFX_SLOTS_REWARD, SFX_Slots_Reward
music_const SFX_SLOTS_NEW_SPIN, SFX_Slots_New_Spin music_const SFX_SLOTS_NEW_SPIN, SFX_Slots_New_Spin
music_const SFX_SHOOTING_STAR, SFX_Shooting_Star music_const SFX_SHOOTING_STAR, SFX_Shooting_Star
MAX_SFX_ID_3 EQUS "SFX_SHOOTING_STAR" DEF MAX_SFX_ID_3 EQUS "SFX_SHOOTING_STAR"
SFX_STOP_ALL_MUSIC EQU $ff DEF SFX_STOP_ALL_MUSIC EQU $ff

View file

@ -1,17 +1,17 @@
; OAM flags used by this game ; OAM flags used by this game
OAMFLAG_ENDOFDATA EQU %00000001 ; pseudo OAM flag, only used by game logic DEF OAMFLAG_ENDOFDATA EQU %00000001 ; pseudo OAM flag, only used by game logic
OAMFLAG_CANBEMASKED EQU %00000010 ; pseudo OAM flag, only used by game logic DEF OAMFLAG_CANBEMASKED EQU %00000010 ; pseudo OAM flag, only used by game logic
; OAM attribute flags ; OAM attribute flags
OAM_PALETTE EQU %111 DEF OAM_PALETTE EQU %111
OAM_TILE_BANK EQU 3 DEF OAM_TILE_BANK EQU 3
OAM_OBP_NUM EQU 4 ; Non CGB Mode Only DEF OAM_OBP_NUM EQU 4 ; Non CGB Mode Only
OAM_X_FLIP EQU 5 DEF OAM_X_FLIP EQU 5
OAM_Y_FLIP EQU 6 DEF OAM_Y_FLIP EQU 6
OAM_PRIORITY EQU 7 ; 0: OBJ above BG, 1: OBJ behind BG (colors 1-3) DEF OAM_PRIORITY EQU 7 ; 0: OBJ above BG, 1: OBJ behind BG (colors 1-3)
; OAM attribute masks ; OAM attribute masks
OAM_OBP1 EQU 1 << OAM_OBP_NUM ; OBJ palette 1 DEF OAM_OBP1 EQU 1 << OAM_OBP_NUM ; OBJ palette 1
OAM_HFLIP EQU 1 << OAM_X_FLIP ; horizontal flip DEF OAM_HFLIP EQU 1 << OAM_X_FLIP ; horizontal flip
OAM_VFLIP EQU 1 << OAM_Y_FLIP ; vertical flip DEF OAM_VFLIP EQU 1 << OAM_Y_FLIP ; vertical flip
OAM_BEHIND_BG EQU 1 << OAM_PRIORITY ; behind bg (except color 0) DEF OAM_BEHIND_BG EQU 1 << OAM_PRIORITY ; behind bg (except color 0)

View file

@ -4,10 +4,10 @@
const SHADE_LIGHT ; %01 const SHADE_LIGHT ; %01
const SHADE_DARK ; %10 const SHADE_DARK ; %10
const SHADE_BLACK ; %11 const SHADE_BLACK ; %11
NUM_PAL_COLORS EQU const_value DEF NUM_PAL_COLORS EQU const_value
PAL_COLOR_SIZE EQU 2 DEF PAL_COLOR_SIZE EQU 2
PALETTE_SIZE EQU NUM_PAL_COLORS * PAL_COLOR_SIZE DEF PALETTE_SIZE EQU NUM_PAL_COLORS * PAL_COLOR_SIZE
; pal/blk packets ; pal/blk packets
; SetPalFunctions indexes (see engine/gfx/palettes.asm) ; SetPalFunctions indexes (see engine/gfx/palettes.asm)
@ -27,8 +27,8 @@ PALETTE_SIZE EQU NUM_PAL_COLORS * PAL_COLOR_SIZE
const SET_PAL_GAME_FREAK_INTRO ; $0C const SET_PAL_GAME_FREAK_INTRO ; $0C
const SET_PAL_TRAINER_CARD ; $0D const SET_PAL_TRAINER_CARD ; $0D
SET_PAL_PARTY_MENU_HP_BARS EQU $fc DEF SET_PAL_PARTY_MENU_HP_BARS EQU $fc
SET_PAL_DEFAULT EQU $ff DEF SET_PAL_DEFAULT EQU $ff
; sgb palettes ; sgb palettes
; SuperPalettes indexes (see data/sgb/sgb_palettes.asm) ; SuperPalettes indexes (see data/sgb/sgb_palettes.asm)
@ -70,4 +70,4 @@ SET_PAL_DEFAULT EQU $ff
const PAL_BADGE ; $22 const PAL_BADGE ; $22
const PAL_CAVE ; $23 const PAL_CAVE ; $23
const PAL_GAMEFREAK ; $24 const PAL_GAMEFREAK ; $24
NUM_SGB_PALS EQU const_value DEF NUM_SGB_PALS EQU const_value

View file

@ -156,4 +156,4 @@
const DEX_MEWTWO ; 150 const DEX_MEWTWO ; 150
const DEX_MEW ; 151 const DEX_MEW ; 151
NUM_POKEMON EQU const_value - 1 DEF NUM_POKEMON EQU const_value - 1

View file

@ -198,12 +198,12 @@
const WEEPINBELL ; $BD const WEEPINBELL ; $BD
const VICTREEBEL ; $BE const VICTREEBEL ; $BE
NUM_POKEMON_INDEXES EQU const_value - 1 DEF NUM_POKEMON_INDEXES EQU const_value - 1
; starters ; starters
STARTER1 EQU CHARMANDER DEF STARTER1 EQU CHARMANDER
STARTER2 EQU SQUIRTLE DEF STARTER2 EQU SQUIRTLE
STARTER3 EQU BULBASAUR DEF STARTER3 EQU BULBASAUR
; ghost Marowak in Pokémon Tower ; ghost Marowak in Pokémon Tower
RESTLESS_SOUL EQU MAROWAK DEF RESTLESS_SOUL EQU MAROWAK

View file

@ -1,37 +1,37 @@
; base data struct members (see data/pokemon/base_stats/*.asm) ; base data struct members (see data/pokemon/base_stats/*.asm)
rsreset rsreset
BASE_DEX_NO rb DEF BASE_DEX_NO rb
BASE_STATS rb NUM_STATS DEF BASE_STATS rb NUM_STATS
rsset BASE_STATS rsset BASE_STATS
BASE_HP rb DEF BASE_HP rb
BASE_ATK rb DEF BASE_ATK rb
BASE_DEF rb DEF BASE_DEF rb
BASE_SPD rb DEF BASE_SPD rb
BASE_SPC rb DEF BASE_SPC rb
BASE_TYPES rw DEF BASE_TYPES rw
rsset BASE_TYPES rsset BASE_TYPES
BASE_TYPE_1 rb DEF BASE_TYPE_1 rb
BASE_TYPE_2 rb DEF BASE_TYPE_2 rb
BASE_CATCH_RATE rb DEF BASE_CATCH_RATE rb
BASE_EXP rb DEF BASE_EXP rb
BASE_PIC_SIZE rb DEF BASE_PIC_SIZE rb
BASE_FRONTPIC rw DEF BASE_FRONTPIC rw
BASE_BACKPIC rw DEF BASE_BACKPIC rw
BASE_MOVES rb NUM_MOVES DEF BASE_MOVES rb NUM_MOVES
BASE_GROWTH_RATE rb DEF BASE_GROWTH_RATE rb
BASE_TMHM rb (NUM_TM_HM + 7) / 8 DEF BASE_TMHM rb (NUM_TM_HM + 7) / 8
rb_skip rb_skip
BASE_DATA_SIZE EQU _RS DEF BASE_DATA_SIZE EQU _RS
PARTY_LENGTH EQU 6 DEF PARTY_LENGTH EQU 6
MONS_PER_BOX EQU 20 DEF MONS_PER_BOX EQU 20
NUM_BOXES EQU 12 DEF NUM_BOXES EQU 12
HOF_MON EQU $10 DEF HOF_MON EQU $10
HOF_TEAM EQU PARTY_LENGTH * HOF_MON DEF HOF_TEAM EQU PARTY_LENGTH * HOF_MON
HOF_TEAM_CAPACITY EQU 50 DEF HOF_TEAM_CAPACITY EQU 50
; mon data locations ; mon data locations
@ -52,8 +52,8 @@ HOF_TEAM_CAPACITY EQU 50
const EV_ITEM ; 2 const EV_ITEM ; 2
const EV_TRADE ; 3 const EV_TRADE ; 3
MAX_EVOLUTIONS EQU 3 DEF MAX_EVOLUTIONS EQU 3
EVOLUTION_SIZE EQU 4 DEF EVOLUTION_SIZE EQU 4
; wMonHGrowthRate values ; wMonHGrowthRate values
@ -65,8 +65,8 @@ EVOLUTION_SIZE EQU 4
const GROWTH_MEDIUM_SLOW const GROWTH_MEDIUM_SLOW
const GROWTH_FAST const GROWTH_FAST
const GROWTH_SLOW const GROWTH_SLOW
NUM_GROWTH_RATES EQU const_value DEF NUM_GROWTH_RATES EQU const_value
; wild data (see data/wild/maps/*.asm) ; wild data (see data/wild/maps/*.asm)
NUM_WILDMONS EQU 10 DEF NUM_WILDMONS EQU 10
WILDDATA_LENGTH EQU 1 + NUM_WILDMONS * 2 DEF WILDDATA_LENGTH EQU 1 + NUM_WILDMONS * 2

View file

@ -5,17 +5,17 @@
const SMILE_BUBBLE ; 2 const SMILE_BUBBLE ; 2
; slot symbols ; slot symbols
SLOTS7 EQU $0200 DEF SLOTS7 EQU $0200
SLOTSBAR EQU $0604 DEF SLOTSBAR EQU $0604
SLOTSCHERRY EQU $0A08 DEF SLOTSCHERRY EQU $0A08
SLOTSFISH EQU $0E0C DEF SLOTSFISH EQU $0E0C
SLOTSBIRD EQU $1210 DEF SLOTSBIRD EQU $1210
SLOTSMOUSE EQU $1614 DEF SLOTSMOUSE EQU $1614
; StartSlotMachine dialogs ; StartSlotMachine dialogs
SLOTS_OUTOFORDER EQU $fd DEF SLOTS_OUTOFORDER EQU $fd
SLOTS_OUTTOLUNCH EQU $fe DEF SLOTS_OUTTOLUNCH EQU $fe
SLOTS_SOMEONESKEYS EQU $ff DEF SLOTS_SOMEONESKEYS EQU $ff
; in game trades ; in game trades
; TradeMons indexes (see data/events/trades.asm) ; TradeMons indexes (see data/events/trades.asm)
@ -30,7 +30,7 @@ SLOTS_SOMEONESKEYS EQU $ff
const TRADE_FOR_DORIS const TRADE_FOR_DORIS
const TRADE_FOR_CRINKLES const TRADE_FOR_CRINKLES
const TRADE_FOR_SPOT const TRADE_FOR_SPOT
NUM_NPC_TRADES EQU const_value DEF NUM_NPC_TRADES EQU const_value
; in game trade dialog sets ; in game trade dialog sets
; InGameTradeTextPointers indexes (see engine/events/in_game_trades.asm) ; InGameTradeTextPointers indexes (see engine/events/in_game_trades.asm)
@ -50,10 +50,10 @@ NUM_NPC_TRADES EQU const_value
const BIT_MARSHBADGE ; 5 const BIT_MARSHBADGE ; 5
const BIT_VOLCANOBADGE ; 6 const BIT_VOLCANOBADGE ; 6
const BIT_EARTHBADGE ; 7 const BIT_EARTHBADGE ; 7
NUM_BADGES EQU const_value DEF NUM_BADGES EQU const_value
; OaksAideScript results ; OaksAideScript results
OAKS_AIDE_BAG_FULL EQU $00 DEF OAKS_AIDE_BAG_FULL EQU $00
OAKS_AIDE_GOT_ITEM EQU $01 DEF OAKS_AIDE_GOT_ITEM EQU $01
OAKS_AIDE_NOT_ENOUGH_MONS EQU $80 DEF OAKS_AIDE_NOT_ENOUGH_MONS EQU $80
OAKS_AIDE_REFUSED EQU $ff DEF OAKS_AIDE_REFUSED EQU $ff

View file

@ -1,27 +1,27 @@
ESTABLISH_CONNECTION_WITH_INTERNAL_CLOCK EQU $01 DEF ESTABLISH_CONNECTION_WITH_INTERNAL_CLOCK EQU $01
ESTABLISH_CONNECTION_WITH_EXTERNAL_CLOCK EQU $02 DEF ESTABLISH_CONNECTION_WITH_EXTERNAL_CLOCK EQU $02
USING_EXTERNAL_CLOCK EQU $01 DEF USING_EXTERNAL_CLOCK EQU $01
USING_INTERNAL_CLOCK EQU $02 DEF USING_INTERNAL_CLOCK EQU $02
CONNECTION_NOT_ESTABLISHED EQU $ff DEF CONNECTION_NOT_ESTABLISHED EQU $ff
; signals the start of an array of bytes transferred over the link cable ; signals the start of an array of bytes transferred over the link cable
SERIAL_PREAMBLE_BYTE EQU $FD DEF SERIAL_PREAMBLE_BYTE EQU $FD
; this byte is used when there is no data to send ; this byte is used when there is no data to send
SERIAL_NO_DATA_BYTE EQU $FE DEF SERIAL_NO_DATA_BYTE EQU $FE
; signals the end of one part of a patch list (there are two parts) for player/enemy party data ; signals the end of one part of a patch list (there are two parts) for player/enemy party data
SERIAL_PATCH_LIST_PART_TERMINATOR EQU $FF DEF SERIAL_PATCH_LIST_PART_TERMINATOR EQU $FF
LINK_STATE_NONE EQU $00 ; not using link DEF LINK_STATE_NONE EQU $00 ; not using link
LINK_STATE_IN_CABLE_CLUB EQU $01 ; in a cable club room (Colosseum or Trade Centre) DEF LINK_STATE_IN_CABLE_CLUB EQU $01 ; in a cable club room (Colosseum or Trade Centre)
LINK_STATE_START_TRADE EQU $02 ; pre-trade selection screen initialisation DEF LINK_STATE_START_TRADE EQU $02 ; pre-trade selection screen initialisation
LINK_STATE_START_BATTLE EQU $03 ; pre-battle initialisation DEF LINK_STATE_START_BATTLE EQU $03 ; pre-battle initialisation
LINK_STATE_BATTLING EQU $04 ; in a link battle DEF LINK_STATE_BATTLING EQU $04 ; in a link battle
LINK_STATE_RESET EQU $05 ; reset game (unused) DEF LINK_STATE_RESET EQU $05 ; reset game (unused)
LINK_STATE_TRADING EQU $32 ; in a link trade DEF LINK_STATE_TRADING EQU $32 ; in a link trade
LINKBATTLE_RUN EQU $F DEF LINKBATTLE_RUN EQU $F
LINKBATTLE_STRUGGLE EQU $E DEF LINKBATTLE_STRUGGLE EQU $E
LINKBATTLE_NO_ACTION EQU $D DEF LINKBATTLE_NO_ACTION EQU $D

View file

@ -62,7 +62,7 @@
const SPRITE_BRUNO ; $3a const SPRITE_BRUNO ; $3a
const SPRITE_LORELEI ; $3b const SPRITE_LORELEI ; $3b
const SPRITE_SEEL ; $3c const SPRITE_SEEL ; $3c
FIRST_STILL_SPRITE EQU const_value DEF FIRST_STILL_SPRITE EQU const_value
const SPRITE_POKE_BALL ; $3d const SPRITE_POKE_BALL ; $3d
const SPRITE_FOSSIL ; $3e const SPRITE_FOSSIL ; $3e
const SPRITE_BOULDER ; $3f const SPRITE_BOULDER ; $3f
@ -75,4 +75,4 @@ FIRST_STILL_SPRITE EQU const_value
const SPRITE_UNUSED_GAMBLER_ASLEEP_1 ; $46 const SPRITE_UNUSED_GAMBLER_ASLEEP_1 ; $46
const SPRITE_UNUSED_GAMBLER_ASLEEP_2 ; $47 const SPRITE_UNUSED_GAMBLER_ASLEEP_2 ; $47
const SPRITE_GAMBLER_ASLEEP ; $48 const SPRITE_GAMBLER_ASLEEP ; $48
NUM_SPRITES EQU const_value - 1 DEF NUM_SPRITES EQU const_value - 1

View file

@ -11,7 +11,7 @@
const NPC_MOVEMENT_LEFT ; $80 const NPC_MOVEMENT_LEFT ; $80
const NPC_MOVEMENT_RIGHT ; $C0 const NPC_MOVEMENT_RIGHT ; $C0
NPC_CHANGE_FACING EQU $E0 DEF NPC_CHANGE_FACING EQU $E0
; player direction constants ; player direction constants
const_def const_def
@ -20,7 +20,7 @@ NPC_CHANGE_FACING EQU $E0
const PLAYER_DIR_BIT_DOWN ; 2 const PLAYER_DIR_BIT_DOWN ; 2
const PLAYER_DIR_BIT_UP ; 3 const PLAYER_DIR_BIT_UP ; 3
PLAYER_DIR_RIGHT EQU 1 << PLAYER_DIR_BIT_RIGHT DEF PLAYER_DIR_RIGHT EQU 1 << PLAYER_DIR_BIT_RIGHT
PLAYER_DIR_LEFT EQU 1 << PLAYER_DIR_BIT_LEFT DEF PLAYER_DIR_LEFT EQU 1 << PLAYER_DIR_BIT_LEFT
PLAYER_DIR_DOWN EQU 1 << PLAYER_DIR_BIT_DOWN DEF PLAYER_DIR_DOWN EQU 1 << PLAYER_DIR_BIT_DOWN
PLAYER_DIR_UP EQU 1 << PLAYER_DIR_BIT_UP DEF PLAYER_DIR_UP EQU 1 << PLAYER_DIR_BIT_UP

View file

@ -1,6 +1,6 @@
NAME_LENGTH EQU 11 DEF NAME_LENGTH EQU 11
ITEM_NAME_LENGTH EQU 13 DEF ITEM_NAME_LENGTH EQU 13
NAME_BUFFER_LENGTH EQU 20 DEF NAME_BUFFER_LENGTH EQU 20
; PrintNumber ; PrintNumber
const_def 5 const_def 5
@ -8,9 +8,9 @@ NAME_BUFFER_LENGTH EQU 20
const BIT_LEFT_ALIGN ; 6 const BIT_LEFT_ALIGN ; 6
const BIT_LEADING_ZEROES ; 7 const BIT_LEADING_ZEROES ; 7
MONEY_SIGN EQU (1 << BIT_MONEY_SIGN) DEF MONEY_SIGN EQU (1 << BIT_MONEY_SIGN)
LEFT_ALIGN EQU (1 << BIT_LEFT_ALIGN) DEF LEFT_ALIGN EQU (1 << BIT_LEFT_ALIGN)
LEADING_ZEROES EQU (1 << BIT_LEADING_ZEROES) DEF LEADING_ZEROES EQU (1 << BIT_LEADING_ZEROES)
; special text IDs (see home/text_script.asm) ; special text IDs (see home/text_script.asm)
const_def $d0 const_def $d0
@ -19,4 +19,4 @@ LEADING_ZEROES EQU (1 << BIT_LEADING_ZEROES)
const TEXT_REPEL_WORE_OFF ; $d2 const TEXT_REPEL_WORE_OFF ; $d2
const TEXT_SAFARI_GAME_OVER ; $d3 const TEXT_SAFARI_GAME_OVER ; $d3
TEXT_START_MENU EQU $00 DEF TEXT_START_MENU EQU $00

View file

@ -25,4 +25,4 @@
const CLUB ; 21 const CLUB ; 21
const FACILITY ; 22 const FACILITY ; 22
const PLATEAU ; 23 const PLATEAU ; 23
NUM_TILESETS EQU const_value DEF NUM_TILESETS EQU const_value

View file

@ -1,8 +1,8 @@
OPP_ID_OFFSET EQU 200 DEF OPP_ID_OFFSET EQU 200
trainer_const: MACRO MACRO trainer_const
const \1 const \1
OPP_\1 EQU OPP_ID_OFFSET + \1 DEF OPP_\1 EQU OPP_ID_OFFSET + \1
ENDM ENDM
; trainer class ids ; trainer class ids
@ -62,4 +62,4 @@ ENDM
trainer_const CHANNELER ; $2D trainer_const CHANNELER ; $2D
trainer_const AGATHA ; $2E trainer_const AGATHA ; $2E
trainer_const LANCE ; $2F trainer_const LANCE ; $2F
NUM_TRAINERS EQU const_value - 1 DEF NUM_TRAINERS EQU const_value - 1

View file

@ -1,7 +1,7 @@
; TypeNames indexes (see data/types/names.asm) ; TypeNames indexes (see data/types/names.asm)
const_def const_def
PHYSICAL EQU const_value DEF PHYSICAL EQU const_value
const NORMAL ; $00 const NORMAL ; $00
const FIGHTING ; $01 const FIGHTING ; $01
const FLYING ; $02 const FLYING ; $02
@ -14,7 +14,7 @@ PHYSICAL EQU const_value
const_next 20 const_next 20
SPECIAL EQU const_value DEF SPECIAL EQU const_value
const FIRE ; $14 const FIRE ; $14
const WATER ; $15 const WATER ; $15
const GRASS ; $16 const GRASS ; $16
@ -23,4 +23,4 @@ SPECIAL EQU const_value
const ICE ; $19 const ICE ; $19
const DRAGON ; $1A const DRAGON ; $1A
NUM_TYPES EQU const_value DEF NUM_TYPES EQU const_value

View file

@ -1,4 +1,4 @@
special_effect: MACRO MACRO special_effect
db \1 db \1
dw \2 dw \2
ENDM ENDM

View file

@ -1,4 +1,4 @@
anim_special_effect: MACRO MACRO anim_special_effect
db \1 db \1
dw \2 dw \2
ENDM ENDM

View file

@ -94,7 +94,7 @@ SubanimationPointers:
; db frame block id, base coordinate id, frame block mode ; db frame block id, base coordinate id, frame block mode
; ENDR ; ENDR
subanim: MACRO MACRO subanim
db (\1 << 5) | \2 db (\1 << 5) | \2
ENDM ENDM

View file

@ -1,4 +1,4 @@
bench_guy_text: MACRO MACRO bench_guy_text
db \1, \2 db \1, \2
db_tx_pre \3 db_tx_pre \3
ENDM ENDM

View file

@ -1,4 +1,4 @@
hidden_coin: MACRO MACRO hidden_coin
db \1, \3, \2 db \1, \3, \2
ENDM ENDM

View file

@ -1,4 +1,4 @@
hidden_item: MACRO MACRO hidden_item
db \1, \3, \2 db \1, \3, \2
ENDM ENDM

View file

@ -174,14 +174,14 @@ HiddenObjectPointers:
dw CeruleanCityHiddenObjects dw CeruleanCityHiddenObjects
dw Route4HiddenObjects dw Route4HiddenObjects
hidden_object: MACRO MACRO hidden_object
db \2 ; y coord db \2 ; y coord
db \1 ; x coord db \1 ; x coord
db \3 ; item id db \3 ; item id
dba \4 ; object routine dba \4 ; object routine
ENDM ENDM
hidden_text_predef: MACRO MACRO hidden_text_predef
db \2 ; y coord db \2 ; y coord
db \1 ; x coord db \1 ; x coord
db_tx_pre \3 ; text id db_tx_pre \3 ; text id
@ -191,7 +191,7 @@ ENDM
; Some hidden objects use SPRITE_FACING_* values, ; Some hidden objects use SPRITE_FACING_* values,
; but these do not actually prevent the player ; but these do not actually prevent the player
; from interacting with them in any direction. ; from interacting with them in any direction.
ANY_FACING EQU $d0 DEF ANY_FACING EQU $d0
TradeCenterHiddenObjects: TradeCenterHiddenObjects:
hidden_object 5, 4, ANY_FACING, CableClubRightGameboy hidden_object 5, 4, ANY_FACING, CableClubRightGameboy

View file

@ -1,4 +1,4 @@
growth_rate: MACRO MACRO growth_rate
; [1]/[2]*n**3 + [3]*n**2 + [4]*n - [5] ; [1]/[2]*n**3 + [3]*n**2 + [4]*n - [5]
dn \1, \2 dn \1, \2
if \3 < 0 if \3 < 0

View file

@ -1,4 +1,4 @@
mon_icon_header: MACRO MACRO mon_icon_header
dw \1 tile \2 dw \1 tile \2
db \3 db \3
db BANK(\1) db BANK(\1)

View file

@ -1,4 +1,4 @@
vend_item: MACRO MACRO vend_item
db \1 db \1
bcd3 \2 bcd3 \2
ENDM ENDM

View file

@ -1,4 +1,4 @@
force_bike_surf: MACRO MACRO force_bike_surf
db \1, \3, \2 db \1, \3, \2
ENDM ENDM

View file

@ -17,7 +17,7 @@ DungeonWarpList:
db -1 ; end db -1 ; end
fly_warp: MACRO MACRO fly_warp
event_displacement \1_WIDTH, \2, \3 event_displacement \1_WIDTH, \2, \3
db ((\3) & $01) ;sub-block Y db ((\3) & $01) ;sub-block Y
db ((\2) & $01) ;sub-block X db ((\2) & $01) ;sub-block X
@ -38,7 +38,7 @@ DungeonWarpData:
fly_warp POKEMON_MANSION_2F, 18, 14 fly_warp POKEMON_MANSION_2F, 18, 14
special_warp_spec: MACRO MACRO special_warp_spec
db \1 db \1
fly_warp \1, \2, \3 fly_warp \1, \2, \3
db \4 db \4
@ -56,7 +56,7 @@ ColosseumSpec2:
special_warp_spec COLOSSEUM, 6, 4, CLUB special_warp_spec COLOSSEUM, 6, 4, CLUB
fly_warp_spec: MACRO MACRO fly_warp_spec
db \1, 0 db \1, 0
dw \2 dw \2
ENDM ENDM

View file

@ -39,8 +39,8 @@ MapSpriteSets:
db $02 ; ROUTE_25 db $02 ; ROUTE_25
assert_table_length FIRST_INDOOR_MAP assert_table_length FIRST_INDOOR_MAP
EAST_WEST EQU 1 DEF EAST_WEST EQU 1
NORTH_SOUTH EQU 2 DEF NORTH_SOUTH EQU 2
; Format: ; Format:
; 00: determines whether the map is split EAST_WEST or NORTH_SOUTH ; 00: determines whether the map is split EAST_WEST or NORTH_SOUTH
@ -64,7 +64,7 @@ SplitMapSpriteSets:
SpriteSets: SpriteSets:
; each sprite set has 9 walking sprites and 2 still sprites ; each sprite set has 9 walking sprites and 2 still sprites
SPRITE_SET_LENGTH EQU 9 + 2 DEF SPRITE_SET_LENGTH EQU 9 + 2
; sprite set $01 ; sprite set $01
table_width 1 table_width 1

View file

@ -1,4 +1,4 @@
external_map: MACRO MACRO external_map
dn \2, \1 dn \2, \1
dw \3 dw \3
ENDM ENDM
@ -47,7 +47,7 @@ ExternalMapEntries:
assert_table_length FIRST_INDOOR_MAP assert_table_length FIRST_INDOOR_MAP
internal_map: MACRO MACRO internal_map
db \1 + 1 db \1 + 1
dn \3, \2 dn \3, \2
dw \4 dw \4

View file

@ -214,7 +214,7 @@ AttackAnimationPointers:
; if \2 is a subanimation_id: ; if \2 is a subanimation_id:
;\3: tileset_id ;\3: tileset_id
;\4: delay ;\4: delay
battle_anim: MACRO MACRO battle_anim
IF _NARG == 4 IF _NARG == 4
db (\3 << 6) | \4 db (\3 << 6) | \4
db \1 - 1 db \1 - 1

View file

@ -1,4 +1,4 @@
move: MACRO MACRO move
db \1 ; animation (interchangeable with move id) db \1 ; animation (interchangeable with move id)
db \2 ; effect db \2 ; effect
db \3 ; power db \3 ; power

View file

@ -1,4 +1,4 @@
mon_cry: MACRO MACRO mon_cry
db (\1 - CRY_SFX_START) / 3 db (\1 - CRY_SFX_START) / 3
db \2, \3 db \2, \3
ENDM ENDM

View file

@ -1,10 +1,10 @@
add_predef: MACRO MACRO add_predef
\1Predef:: \1Predef::
IF _NARG == 1 IF _NARG == 1
dba \1 dba \1
ELSE ELSE
dbw \2, \1 dbw \2, \1
ENDC ENDC
ENDM ENDM
PredefPointers:: PredefPointers::

View file

@ -1,51 +1,51 @@
ATTR_BLK: MACRO MACRO ATTR_BLK
; This is a command macro. ; This is a command macro.
; Use ATTR_BLK_DATA for data sets. ; Use ATTR_BLK_DATA for data sets.
db ($4 << 3) + ((\1 * 6) / 16 + 1) db ($4 << 3) + ((\1 * 6) / 16 + 1)
db \1 db \1
ENDM ENDM
ATTR_BLK_DATA: MACRO MACRO ATTR_BLK_DATA
db \1 ; which regions are affected db \1 ; which regions are affected
db \2 + (\3 << 2) + (\4 << 4) ; palette for each region db \2 + (\3 << 2) + (\4 << 4) ; palette for each region
db \5, \6, \7, \8 ; x1, y1, x2, y2 db \5, \6, \7, \8 ; x1, y1, x2, y2
ENDM ENDM
PAL_SET: MACRO MACRO PAL_SET
db ($a << 3) + 1 db ($a << 3) + 1
dw \1, \2, \3, \4 dw \1, \2, \3, \4
ds 7, 0 ds 7, 0
ENDM ENDM
PAL_TRN: MACRO MACRO PAL_TRN
db ($b << 3) + 1 db ($b << 3) + 1
ds 15, 0 ds 15, 0
ENDM ENDM
MLT_REQ: MACRO MACRO MLT_REQ
db ($11 << 3) + 1 db ($11 << 3) + 1
db \1 - 1 db \1 - 1
ds 14, 0 ds 14, 0
ENDM ENDM
CHR_TRN: MACRO MACRO CHR_TRN
db ($13 << 3) + 1 db ($13 << 3) + 1
db \1 + (\2 << 1) db \1 + (\2 << 1)
ds 14, 0 ds 14, 0
ENDM ENDM
PCT_TRN: MACRO MACRO PCT_TRN
db ($14 << 3) + 1 db ($14 << 3) + 1
ds 15, 0 ds 15, 0
ENDM ENDM
MASK_EN: MACRO MACRO MASK_EN
db ($17 << 3) + 1 db ($17 << 3) + 1
db \1 db \1
ds 14, 0 ds 14, 0
ENDM ENDM
DATA_SND: MACRO MACRO DATA_SND
db ($f << 3) + 1 db ($f << 3) + 1
dw \1 ; address dw \1 ; address
db \2 ; bank db \2 ; bank

View file

@ -1,4 +1,4 @@
overworld_sprite: MACRO MACRO overworld_sprite
dw \1 dw \1
db \2 tiles db \2 tiles
db BANK(\1) db BANK(\1)

View file

@ -15,7 +15,7 @@ TextBoxCoordTable:
db MON_SPRITE_POPUP, 6, 4, 14, 13 db MON_SPRITE_POPUP, 6, 4, 14, 13
db -1 ; end db -1 ; end
text_box_text: MACRO MACRO text_box_text
db \1 ; text box ID db \1 ; text box ID
db \2, \3, \4, \5 ; text box coordinates db \2, \3, \4, \5 ; text box coordinates
dw \6 ; text pointer dw \6 ; text pointer

View file

@ -1,4 +1,4 @@
add_tx_pre: MACRO MACRO add_tx_pre
\1_id:: \1_id::
dw \1 dw \1
ENDM ENDM

View file

@ -1,4 +1,4 @@
tile_ids: MACRO MACRO tile_ids
dw \1 dw \1
dn \3, \2 dn \3, \2
ENDM ENDM

View file

@ -1,4 +1,4 @@
bookshelf_tile: MACRO MACRO bookshelf_tile
db \1, \2 db \1, \2
db_tx_pre \3 db_tx_pre \3
ENDM ENDM

View file

@ -1,4 +1,4 @@
coll_tiles: MACRO MACRO coll_tiles
IF _NARG IF _NARG
db \# ; all args db \# ; all args
ENDC ENDC

View file

@ -14,7 +14,7 @@ DoorTileIDPointers:
dbw PLATEAU, .PlateauDoorTileIDs dbw PLATEAU, .PlateauDoorTileIDs
db -1 ; end db -1 ; end
door_tiles: MACRO MACRO door_tiles
IF _NARG IF _NARG
db \# ; all args db \# ; all args
ENDC ENDC

View file

@ -1,4 +1,4 @@
spinner: MACRO MACRO spinner
; \1: source ; \1: source
; \2: offset (BANK() chokes on literals) ; \2: offset (BANK() chokes on literals)
; \3: dest ; \3: dest

View file

@ -1,4 +1,4 @@
tileset: MACRO MACRO tileset
db BANK(\1_GFX) db BANK(\1_GFX)
dw \1_Block, \1_GFX, \1_Coll dw \1_Block, \1_GFX, \1_Coll
db \2, \3, \4 ; counter tiles db \2, \3, \4 ; counter tiles

View file

@ -4,7 +4,7 @@ WarpTileListPointers:
dw .FacingLeftWarpTiles dw .FacingLeftWarpTiles
dw .FacingRightWarpTiles dw .FacingRightWarpTiles
warp_carpet_tiles: MACRO MACRO warp_carpet_tiles
IF _NARG IF _NARG
db \# ; all args db \# ; all args
ENDC ENDC

View file

@ -26,7 +26,7 @@ WarpTileIDPointers:
dw .PlateauWarpTileIDs dw .PlateauWarpTileIDs
assert_table_length NUM_TILESETS assert_table_length NUM_TILESETS
warp_tiles: MACRO MACRO warp_tiles
IF _NARG IF _NARG
db \# ; all args db \# ; all args
ENDC ENDC

View file

@ -1,9 +1,9 @@
move_choices: MACRO MACRO move_choices
IF _NARG IF _NARG
db \# ; all args db \# ; all args
ENDC ENDC
db 0 ; end db 0 ; end
list_index += 1 DEF list_index += 1
ENDM ENDM
; move choice modification methods that are applied for each trainer class ; move choice modification methods that are applied for each trainer class

View file

@ -1,4 +1,4 @@
pic_money: MACRO MACRO pic_money
dw \1 dw \1
bcd3 \2 bcd3 \2
ENDM ENDM

View file

@ -1,4 +1,4 @@
two_option_menu: MACRO MACRO two_option_menu
db \1, \2, \3 db \1, \2, \3
dw \4 dw \4
ENDM ENDM

View file

@ -372,7 +372,7 @@ LoadAnimationTileset:
ld c, a ; number of tiles ld c, a ; number of tiles
jp CopyVideoData ; load tileset jp CopyVideoData ; load tileset
anim_tileset: MACRO MACRO anim_tileset
db \1 db \1
dw \2 dw \2
db -1 ; padding db -1 ; padding

View file

@ -662,7 +662,7 @@ BattleTransition_Circle_Sub2:
const CIRCLE_LEFT const CIRCLE_LEFT
const CIRCLE_RIGHT const CIRCLE_RIGHT
half_circle: MACRO MACRO half_circle
; quadrant x, circle data, target coord ; quadrant x, circle data, target coord
db \1 db \1
dw \2 dw \2

View file

@ -1,4 +1,4 @@
CIRCLE_TILE_ID EQU $70 DEF CIRCLE_TILE_ID EQU $70
DisplayDiploma:: DisplayDiploma::
call SaveScreenTilesToBuffer2 call SaveScreenTilesToBuffer2
@ -83,7 +83,7 @@ UnusedPlayerNameLengthFunc:
dec c dec c
jr .loop jr .loop
diploma_text: MACRO MACRO diploma_text
dw \3 dw \3
dwcoord \1, \2 dwcoord \1, \2
ENDM ENDM

View file

@ -183,12 +183,12 @@ UpdateCinnabarGymGateTileBlocks_::
jr nz, .loop jr nz, .loop
ret ret
gym_gate_coord: MACRO MACRO gym_gate_coord
db \1, \2, \3, 0 db \1, \2, \3, 0
ENDM ENDM
HORIZONTAL_GATE_BLOCK EQU $54 DEF HORIZONTAL_GATE_BLOCK EQU $54
VERTICAL_GATE_BLOCK EQU $5f DEF VERTICAL_GATE_BLOCK EQU $5f
CinnabarGymGateCoords: CinnabarGymGateCoords:
; x coord, y coord, block id ; x coord, y coord, block id

View file

@ -280,8 +280,8 @@ GetPartyMonSpriteID:
INCLUDE "data/pokemon/menu_icons.asm" INCLUDE "data/pokemon/menu_icons.asm"
INC_FRAME_1 EQUS "0, $20" DEF INC_FRAME_1 EQUS "0, $20"
INC_FRAME_2 EQUS "$20, $20" DEF INC_FRAME_2 EQUS "$20, $20"
BugIconFrame1: INCBIN "gfx/icons/bug.2bpp", INC_FRAME_1 BugIconFrame1: INCBIN "gfx/icons/bug.2bpp", INC_FRAME_1
PlantIconFrame1: INCBIN "gfx/icons/plant.2bpp", INC_FRAME_1 PlantIconFrame1: INCBIN "gfx/icons/plant.2bpp", INC_FRAME_1

View file

@ -1,4 +1,4 @@
NOT_VISITED EQU $fe DEF NOT_VISITED EQU $fe
DisplayTownMap: DisplayTownMap:
call LoadTownMap call LoadTownMap

View file

@ -3,7 +3,7 @@
const MOVE_GENGAR_RIGHT const MOVE_GENGAR_RIGHT
const MOVE_GENGAR_LEFT const MOVE_GENGAR_LEFT
ANIMATION_END EQU 80 DEF ANIMATION_END EQU 80
PlayIntro: PlayIntro:
xor a xor a

View file

@ -21,7 +21,7 @@ InitPlayerData2:
ld hl, wNumBoxItems ld hl, wNumBoxItems
call InitializeEmptyList call InitializeEmptyList
START_MONEY EQU $3000 DEF START_MONEY EQU $3000
ld hl, wPlayerMoney + 1 ld hl, wPlayerMoney + 1
ld a, HIGH(START_MONEY) ld a, HIGH(START_MONEY)
ld [hld], a ld [hld], a

View file

@ -56,12 +56,12 @@ TradeAnimCommon:
ld [wOptions], a ld [wOptions], a
ret ret
addtradefunc: MACRO MACRO addtradefunc
\1TradeFunc:: \1TradeFunc::
dw \1 dw \1
ENDM ENDM
tradefunc: MACRO MACRO tradefunc
db (\1TradeFunc - TradeFuncPointerTable) / 2 db (\1TradeFunc - TradeFuncPointerTable) / 2
ENDM ENDM
@ -697,7 +697,7 @@ Trade_WriteCircleOAM:
jr nz, .loop jr nz, .loop
ret ret
trade_circle_oam: MACRO MACRO trade_circle_oam
dw \1 dw \1
db \2, \3 db \2, \3
ENDM ENDM

View file

@ -51,7 +51,7 @@ GetMoveBoulderDustFunctionPointer:
pop hl pop hl
ret ret
boulder_dust_adjust: MACRO MACRO boulder_dust_adjust
db \1, \2 ; coords db \1, \2 ; coords
dw \3 ; function dw \3 ; function
ENDM ENDM

View file

@ -1,4 +1,4 @@
MAP_TILESET_SIZE EQU $60 DEF MAP_TILESET_SIZE EQU $60
UpdatePlayerSprite: UpdatePlayerSprite:
ld a, [wSpritePlayerStateData2WalkAnimationCounter] ld a, [wSpritePlayerStateData2WalkAnimationCounter]

View file

@ -475,7 +475,7 @@ FishingRodOAM:
dbsprite 8, 10, 0, 0, $fe, 0 ; left dbsprite 8, 10, 0, 0, $fe, 0 ; left
dbsprite 11, 10, 0, 0, $fe, OAM_HFLIP ; right dbsprite 11, 10, 0, 0, $fe, OAM_HFLIP ; right
fishing_gfx: MACRO MACRO fishing_gfx
dw \1 dw \1
db \2 db \2
db BANK(\1) db BANK(\1)

View file

@ -8,7 +8,7 @@ SoftReset::
Init:: Init::
; Program init. ; Program init.
rLCDC_DEFAULT EQU %11100011 DEF rLCDC_DEFAULT EQU %11100011
; * LCD enabled ; * LCD enabled
; * Window tile map at $9C00 ; * Window tile map at $9C00
; * Window display enabled ; * Window display enabled

View file

@ -59,20 +59,20 @@ PrintNumber::
cp 6 cp 6
jr z, .hundred_thousands jr z, .hundred_thousands
print_digit: MACRO MACRO print_digit
IF (\1) / $10000 IF (\1) / $10000
ld a, \1 / $10000 % $100 ld a, \1 / $10000 % $100
ELSE ELSE
xor a xor a
ENDC ENDC
ldh [hPowerOf10 + 0], a ldh [hPowerOf10 + 0], a
IF (\1) / $100 IF (\1) / $100
ld a, \1 / $100 % $100 ld a, \1 / $100 % $100
ELSE ELSE
xor a xor a
ENDC ENDC
ldh [hPowerOf10 + 1], a ldh [hPowerOf10 + 1], a
ld a, \1 / $1 % $100 ld a, \1 / $1 % $100

View file

@ -123,7 +123,7 @@ TextIDErrorText:: ; "[hSpriteIndexOrTextID] ERROR."
text_far _TextIDErrorText text_far _TextIDErrorText
text_end text_end
print_name: MACRO MACRO print_name
push de push de
ld de, \1 ld de, \1
jr PlaceCommandCharacter jr PlaceCommandCharacter

View file

@ -66,7 +66,7 @@ DisplayTextID::
; check first byte of text for special cases ; check first byte of text for special cases
dict2: MACRO MACRO dict2
cp \1 cp \1
jr nz, .not\@ jr nz, .not\@
\2 \2

View file

@ -93,7 +93,7 @@ DelayFrame::
; Wait for the next vblank interrupt. ; Wait for the next vblank interrupt.
; As a bonus, this saves battery. ; As a bonus, this saves battery.
NOT_VBLANKED EQU 1 DEF NOT_VBLANKED EQU 1
ld a, NOT_VBLANKED ld a, NOT_VBLANKED
ldh [hVBlankOccurred], a ldh [hVBlankOccurred], a

View file

@ -1,122 +1,122 @@
; Macros to verify assumptions about the data or code ; Macros to verify assumptions about the data or code
table_width: MACRO MACRO table_width
CURRENT_TABLE_WIDTH = \1 DEF CURRENT_TABLE_WIDTH = \1
IF _NARG == 2 IF _NARG == 2
REDEF CURRENT_TABLE_START EQUS "\2" REDEF CURRENT_TABLE_START EQUS "\2"
ELSE ELSE
REDEF CURRENT_TABLE_START EQUS "._table_width\@" REDEF CURRENT_TABLE_START EQUS "._table_width\@"
{CURRENT_TABLE_START}: {CURRENT_TABLE_START}:
ENDC ENDC
ENDM ENDM
assert_table_length: MACRO MACRO assert_table_length
x = \1 DEF x = \1
ASSERT x * CURRENT_TABLE_WIDTH == @ - {CURRENT_TABLE_START}, \ ASSERT x * CURRENT_TABLE_WIDTH == @ - {CURRENT_TABLE_START}, \
"{CURRENT_TABLE_START}: expected {d:x} entries, each {d:CURRENT_TABLE_WIDTH} bytes" "{CURRENT_TABLE_START}: expected {d:x} entries, each {d:CURRENT_TABLE_WIDTH} bytes"
ENDM ENDM
list_start: MACRO MACRO list_start
list_index = 0 DEF list_index = 0
IF _NARG == 1 IF _NARG == 1
REDEF CURRENT_LIST_START EQUS "\1" REDEF CURRENT_LIST_START EQUS "\1"
ELSE ELSE
REDEF CURRENT_LIST_START EQUS "._list_start\@" REDEF CURRENT_LIST_START EQUS "._list_start\@"
{CURRENT_LIST_START}: {CURRENT_LIST_START}:
ENDC ENDC
ENDM ENDM
li: MACRO MACRO li
ASSERT !STRIN(\1, "@"), STRCAT("String terminator \"@\" in list entry: ", \1) ASSERT !STRIN(\1, "@"), STRCAT("String terminator \"@\" in list entry: ", \1)
db \1, "@" db \1, "@"
list_index += 1 DEF list_index += 1
ENDM ENDM
assert_list_length: MACRO MACRO assert_list_length
x = \1 DEF x = \1
ASSERT x == list_index, \ ASSERT x == list_index, \
"{CURRENT_LIST_START}: expected {d:x} entries, got {d:list_index}" "{CURRENT_LIST_START}: expected {d:x} entries, got {d:list_index}"
ENDM ENDM
nybble_array: MACRO MACRO nybble_array
CURRENT_NYBBLE_ARRAY_VALUE = 0 DEF CURRENT_NYBBLE_ARRAY_VALUE = 0
CURRENT_NYBBLE_ARRAY_LENGTH = 0 DEF CURRENT_NYBBLE_ARRAY_LENGTH = 0
IF _NARG == 1 IF _NARG == 1
REDEF CURRENT_NYBBLE_ARRAY_START EQUS "\1" REDEF CURRENT_NYBBLE_ARRAY_START EQUS "\1"
ELSE ELSE
REDEF CURRENT_NYBBLE_ARRAY_START EQUS "._nybble_array\@" REDEF CURRENT_NYBBLE_ARRAY_START EQUS "._nybble_array\@"
{CURRENT_NYBBLE_ARRAY_START}: {CURRENT_NYBBLE_ARRAY_START}:
ENDC ENDC
ENDM ENDM
nybble: MACRO MACRO nybble
ASSERT 0 <= (\1) && (\1) < $10, "nybbles must be 0-15" ASSERT 0 <= (\1) && (\1) < $10, "nybbles must be 0-15"
CURRENT_NYBBLE_ARRAY_VALUE = (\1) | (CURRENT_NYBBLE_ARRAY_VALUE << 4) DEF CURRENT_NYBBLE_ARRAY_VALUE = (\1) | (CURRENT_NYBBLE_ARRAY_VALUE << 4)
CURRENT_NYBBLE_ARRAY_LENGTH += 1 DEF CURRENT_NYBBLE_ARRAY_LENGTH += 1
IF CURRENT_NYBBLE_ARRAY_LENGTH % 2 == 0 IF CURRENT_NYBBLE_ARRAY_LENGTH % 2 == 0
db CURRENT_NYBBLE_ARRAY_VALUE db CURRENT_NYBBLE_ARRAY_VALUE
CURRENT_NYBBLE_ARRAY_VALUE = 0 DEF CURRENT_NYBBLE_ARRAY_VALUE = 0
ENDC ENDC
ENDM ENDM
end_nybble_array: MACRO MACRO end_nybble_array
IF CURRENT_NYBBLE_ARRAY_LENGTH % 2 IF CURRENT_NYBBLE_ARRAY_LENGTH % 2
db CURRENT_NYBBLE_ARRAY_VALUE << 4 db CURRENT_NYBBLE_ARRAY_VALUE << 4
ENDC ENDC
IF _NARG == 1 IF _NARG == 1
x = \1 DEF x = \1
ASSERT x == CURRENT_NYBBLE_ARRAY_LENGTH, \ ASSERT x == CURRENT_NYBBLE_ARRAY_LENGTH, \
"{CURRENT_NYBBLE_ARRAY_START}: expected {d:x} nybbles, got {d:CURRENT_NYBBLE_ARRAY_LENGTH}" "{CURRENT_NYBBLE_ARRAY_START}: expected {d:x} nybbles, got {d:CURRENT_NYBBLE_ARRAY_LENGTH}"
x = (x + 1) / 2 DEF x = (x + 1) / 2
ASSERT x == @ - {CURRENT_NYBBLE_ARRAY_START}, \ ASSERT x == @ - {CURRENT_NYBBLE_ARRAY_START}, \
"{CURRENT_NYBBLE_ARRAY_START}: expected {d:x} bytes" "{CURRENT_NYBBLE_ARRAY_START}: expected {d:x} bytes"
ENDC ENDC
ENDM ENDM
bit_array: MACRO MACRO bit_array
CURRENT_BIT_ARRAY_VALUE = 0 DEF CURRENT_BIT_ARRAY_VALUE = 0
CURRENT_BIT_ARRAY_LENGTH = 0 DEF CURRENT_BIT_ARRAY_LENGTH = 0
IF _NARG == 1 IF _NARG == 1
REDEF CURRENT_BIT_ARRAY_START EQUS "\1" REDEF CURRENT_BIT_ARRAY_START EQUS "\1"
ELSE ELSE
REDEF CURRENT_BIT_ARRAY_START EQUS "._bit_array\@" REDEF CURRENT_BIT_ARRAY_START EQUS "._bit_array\@"
{CURRENT_BIT_ARRAY_START}: {CURRENT_BIT_ARRAY_START}:
ENDC ENDC
ENDM ENDM
dbit: MACRO MACRO dbit
ASSERT (\1) == 0 || (\1) == 1, "bits must be 0 or 1" ASSERT (\1) == 0 || (\1) == 1, "bits must be 0 or 1"
CURRENT_BIT_ARRAY_VALUE |= (\1) << (CURRENT_BIT_ARRAY_LENGTH % 8) DEF CURRENT_BIT_ARRAY_VALUE |= (\1) << (CURRENT_BIT_ARRAY_LENGTH % 8)
CURRENT_BIT_ARRAY_LENGTH += 1 DEF CURRENT_BIT_ARRAY_LENGTH += 1
IF CURRENT_BIT_ARRAY_LENGTH % 8 == 0 IF CURRENT_BIT_ARRAY_LENGTH % 8 == 0
db CURRENT_BIT_ARRAY_VALUE db CURRENT_BIT_ARRAY_VALUE
CURRENT_BIT_ARRAY_VALUE = 0 DEF CURRENT_BIT_ARRAY_VALUE = 0
ENDC ENDC
ENDM ENDM
end_bit_array: MACRO MACRO end_bit_array
IF CURRENT_BIT_ARRAY_LENGTH % 8 IF CURRENT_BIT_ARRAY_LENGTH % 8
db CURRENT_BIT_ARRAY_VALUE db CURRENT_BIT_ARRAY_VALUE
ENDC ENDC
IF _NARG == 1 IF _NARG == 1
x = \1 DEF x = \1
ASSERT x == CURRENT_BIT_ARRAY_LENGTH, \ ASSERT x == CURRENT_BIT_ARRAY_LENGTH, \
"{CURRENT_BIT_ARRAY_START}: expected {d:x} bits, got {d:CURRENT_BIT_ARRAY_LENGTH}" "{CURRENT_BIT_ARRAY_START}: expected {d:x} bits, got {d:CURRENT_BIT_ARRAY_LENGTH}"
x = (x + 7) / 8 DEF x = (x + 7) / 8
ASSERT x == @ - {CURRENT_BIT_ARRAY_START}, \ ASSERT x == @ - {CURRENT_BIT_ARRAY_START}, \
"{CURRENT_BIT_ARRAY_START}: expected {d:x} bytes" "{CURRENT_BIT_ARRAY_START}: expected {d:x} bytes"
ENDC ENDC
ENDM ENDM
def_grass_wildmons: MACRO MACRO def_grass_wildmons
;\1: encounter rate ;\1: encounter rate
CURRENT_GRASS_WILDMONS_RATE = \1 DEF CURRENT_GRASS_WILDMONS_RATE = \1
REDEF CURRENT_GRASS_WILDMONS_LABEL EQUS "._def_grass_wildmons_\1" REDEF CURRENT_GRASS_WILDMONS_LABEL EQUS "._def_grass_wildmons_\1"
{CURRENT_GRASS_WILDMONS_LABEL}: {CURRENT_GRASS_WILDMONS_LABEL}:
db \1 db \1
ENDM ENDM
end_grass_wildmons: MACRO MACRO end_grass_wildmons
IF CURRENT_GRASS_WILDMONS_RATE == 0 IF CURRENT_GRASS_WILDMONS_RATE == 0
ASSERT 1 == @ - {CURRENT_GRASS_WILDMONS_LABEL}, \ ASSERT 1 == @ - {CURRENT_GRASS_WILDMONS_LABEL}, \
"def_grass_wildmons {d:CURRENT_GRASS_WILDMONS_RATE}: expected 1 byte" "def_grass_wildmons {d:CURRENT_GRASS_WILDMONS_RATE}: expected 1 byte"
@ -126,15 +126,15 @@ end_grass_wildmons: MACRO
ENDC ENDC
ENDM ENDM
def_water_wildmons: MACRO MACRO def_water_wildmons
;\1: encounter rate ;\1: encounter rate
CURRENT_WATER_WILDMONS_RATE = \1 DEF CURRENT_WATER_WILDMONS_RATE = \1
REDEF CURRENT_WATER_WILDMONS_LABEL EQUS "._def_water_wildmons_\1" REDEF CURRENT_WATER_WILDMONS_LABEL EQUS "._def_water_wildmons_\1"
{CURRENT_WATER_WILDMONS_LABEL}: {CURRENT_WATER_WILDMONS_LABEL}:
db \1 db \1
ENDM ENDM
end_water_wildmons: MACRO MACRO end_water_wildmons
IF CURRENT_WATER_WILDMONS_RATE == 0 IF CURRENT_WATER_WILDMONS_RATE == 0
ASSERT 1 == @ - {CURRENT_WATER_WILDMONS_LABEL}, \ ASSERT 1 == @ - {CURRENT_WATER_WILDMONS_LABEL}, \
"def_water_wildmons {d:CURRENT_WATER_WILDMONS_RATE}: expected 1 byte" "def_water_wildmons {d:CURRENT_WATER_WILDMONS_RATE}: expected 1 byte"

View file

@ -1,20 +1,20 @@
; Syntactic sugar macros ; Syntactic sugar macros
lb: MACRO ; r, hi, lo MACRO lb ; r, hi, lo
ld \1, ((\2) & $ff) << 8 + ((\3) & $ff) ld \1, ((\2) & $ff) << 8 + ((\3) & $ff)
ENDM ENDM
ldpal: MACRO MACRO ldpal
ld \1, \2 << 6 | \3 << 4 | \4 << 2 | \5 ld \1, \2 << 6 | \3 << 4 | \4 << 2 | \5
ENDM ENDM
; Design patterns ; Design patterns
dict: MACRO MACRO dict
IF \1 == 0 IF \1 == 0
and a and a
ELSE ELSE
cp \1 cp \1
ENDC ENDC
jp z, \2 jp z, \2
ENDM ENDM

View file

@ -1,48 +1,48 @@
; Enumerate constants ; Enumerate constants
const_def: MACRO MACRO const_def
IF _NARG >= 1 IF _NARG >= 1
const_value = \1 DEF const_value = \1
ELSE ELSE
const_value = 0 DEF const_value = 0
ENDC ENDC
IF _NARG >= 2 IF _NARG >= 2
const_inc = \2 DEF const_inc = \2
ELSE ELSE
const_inc = 1 DEF const_inc = 1
ENDC ENDC
ENDM ENDM
const: MACRO MACRO const
\1 EQU const_value DEF \1 EQU const_value
const_value += const_inc DEF const_value += const_inc
ENDM ENDM
shift_const: MACRO MACRO shift_const
\1 EQU 1 << const_value DEF \1 EQU 1 << const_value
const_value += const_inc DEF const_value += const_inc
ENDM ENDM
const_skip: MACRO MACRO const_skip
if _NARG >= 1 if _NARG >= 1
const_value += const_inc * (\1) DEF const_value += const_inc * (\1)
else else
const_value += const_inc DEF const_value += const_inc
endc endc
ENDM ENDM
const_next: MACRO MACRO const_next
if (const_value > 0 && \1 < const_value) || (const_value < 0 && \1 > const_value) if (const_value > 0 && \1 < const_value) || (const_value < 0 && \1 > const_value)
fail "const_next cannot go backwards from {const_value} to \1" fail "const_next cannot go backwards from {const_value} to \1"
else else
const_value = \1 DEF const_value = \1
endc endc
ENDM ENDM
rb_skip: MACRO MACRO rb_skip
IF _NARG == 1 IF _NARG == 1
rsset _RS + \1 rsset _RS + \1
ELSE ELSE
rsset _RS + 1 rsset _RS + 1
ENDC ENDC
ENDM ENDM

View file

@ -1,4 +1,4 @@
validate_coords: MACRO MACRO validate_coords
IF _NARG >= 4 IF _NARG >= 4
IF \1 >= \3 IF \1 >= \3
fail "x coord out of range" fail "x coord out of range"
@ -11,11 +11,11 @@ validate_coords: MACRO
ENDC ENDC
ENDM ENDM
hlcoord EQUS "coord hl," DEF hlcoord EQUS "coord hl,"
bccoord EQUS "coord bc," DEF bccoord EQUS "coord bc,"
decoord EQUS "coord de," DEF decoord EQUS "coord de,"
coord: MACRO MACRO coord
; register, x, y[, origin] ; register, x, y[, origin]
validate_coords \2, \3 validate_coords \2, \3
IF _NARG >= 4 IF _NARG >= 4
@ -25,11 +25,11 @@ coord: MACRO
ENDC ENDC
ENDM ENDM
hlbgcoord EQUS "bgcoord hl," DEF hlbgcoord EQUS "bgcoord hl,"
bcbgcoord EQUS "bgcoord bc," DEF bcbgcoord EQUS "bgcoord bc,"
debgcoord EQUS "bgcoord de," DEF debgcoord EQUS "bgcoord de,"
bgcoord: MACRO MACRO bgcoord
; register, x, y[, origin] ; register, x, y[, origin]
validate_coords \2, \3, BG_MAP_WIDTH, BG_MAP_HEIGHT validate_coords \2, \3, BG_MAP_WIDTH, BG_MAP_HEIGHT
IF _NARG >= 4 IF _NARG >= 4
@ -39,22 +39,22 @@ bgcoord: MACRO
ENDC ENDC
ENDM ENDM
hlowcoord EQUS "owcoord hl," DEF hlowcoord EQUS "owcoord hl,"
bcowcoord EQUS "owcoord bc," DEF bcowcoord EQUS "owcoord bc,"
deowcoord EQUS "owcoord de," DEF deowcoord EQUS "owcoord de,"
owcoord: MACRO MACRO owcoord
; register, x, y, map width ; register, x, y, map width
ld \1, wOverworldMap + ((\2) + 3) + (((\3) + 3) * ((\4) + (3 * 2))) ld \1, wOverworldMap + ((\2) + 3) + (((\3) + 3) * ((\4) + (3 * 2)))
ENDM ENDM
event_displacement: MACRO MACRO event_displacement
; map width, x blocks, y blocks ; map width, x blocks, y blocks
dw (wOverworldMap + 7 + (\1) + ((\1) + 6) * ((\3) >> 1) + ((\2) >> 1)) dw (wOverworldMap + 7 + (\1) + ((\1) + 6) * ((\3) >> 1) + ((\2) >> 1))
db \3, \2 db \3, \2
ENDM ENDM
dwcoord: MACRO MACRO dwcoord
; x, y ; x, y
validate_coords \1, \2 validate_coords \1, \2
IF _NARG >= 3 IF _NARG >= 3
@ -64,7 +64,7 @@ dwcoord: MACRO
ENDC ENDC
ENDM ENDM
ldcoord_a: MACRO MACRO ldcoord_a
; x, y[, origin] ; x, y[, origin]
validate_coords \1, \2 validate_coords \1, \2
IF _NARG >= 3 IF _NARG >= 3
@ -74,7 +74,7 @@ ldcoord_a: MACRO
ENDC ENDC
ENDM ENDM
lda_coord: MACRO MACRO lda_coord
; x, y[, origin] ; x, y[, origin]
validate_coords \1, \2 validate_coords \1, \2
IF _NARG >= 3 IF _NARG >= 3
@ -84,7 +84,7 @@ lda_coord: MACRO
ENDC ENDC
ENDM ENDM
dbmapcoord: MACRO MACRO dbmapcoord
; x, y ; x, y
db \2, \1 db \2, \1
ENDM ENDM

View file

@ -1,71 +1,71 @@
; Value macros ; Value macros
percent EQUS "* $ff / 100" DEF percent EQUS "* $ff / 100"
bcd2: MACRO MACRO bcd2
dn ((\1) / 1000) % 10, ((\1) / 100) % 10 dn ((\1) / 1000) % 10, ((\1) / 100) % 10
dn ((\1) / 10) % 10, (\1) % 10 dn ((\1) / 10) % 10, (\1) % 10
ENDM ENDM
bcd3: MACRO MACRO bcd3
dn ((\1) / 100000) % 10, ((\1) / 10000) % 10 dn ((\1) / 100000) % 10, ((\1) / 10000) % 10
dn ((\1) / 1000) % 10, ((\1) / 100) % 10 dn ((\1) / 1000) % 10, ((\1) / 100) % 10
dn ((\1) / 10) % 10, (\1) % 10 dn ((\1) / 10) % 10, (\1) % 10
ENDM ENDM
; used in data/pokemon/base_stats/*.asm ; used in data/pokemon/base_stats/*.asm
tmhm: MACRO MACRO tmhm
; initialize bytes to 0 ; initialize bytes to 0
FOR n, (NUM_TM_HM + 7) / 8 FOR n, (NUM_TM_HM + 7) / 8
_tm{d:n} = 0 DEF _tm{d:n} = 0
ENDR ENDR
; set bits of bytes ; set bits of bytes
REPT _NARG REPT _NARG
IF DEF(\1_TMNUM) IF DEF(\1_TMNUM)
n = (\1_TMNUM - 1) / 8 DEF n = (\1_TMNUM - 1) / 8
i = (\1_TMNUM - 1) % 8 DEF i = (\1_TMNUM - 1) % 8
_tm{d:n} |= 1 << i DEF _tm{d:n} |= 1 << i
ELSE ELSE
FAIL "\1 is not a TM or HM move" FAIL "\1 is not a TM or HM move"
ENDC ENDC
SHIFT SHIFT
ENDR ENDR
; output bytes ; output bytes
FOR n, (NUM_TM_HM + 7) / 8 FOR n, (NUM_TM_HM + 7) / 8
db _tm{d:n} db _tm{d:n}
ENDR ENDR
ENDM ENDM
; Constant data (db, dw, dl) macros ; Constant data (db, dw, dl) macros
dbw: MACRO MACRO dbw
db \1 db \1
dw \2 dw \2
ENDM ENDM
dwb: MACRO MACRO dwb
dw \1 dw \1
db \2 db \2
ENDM ENDM
dn: MACRO ; nybbles MACRO dn ; nybbles
REPT _NARG / 2 REPT _NARG / 2
db ((\1) << 4) | (\2) db ((\1) << 4) | (\2)
SHIFT 2 SHIFT 2
ENDR ENDR
ENDM ENDM
dba: MACRO ; dbw bank, address MACRO dba ; dbw bank, address
REPT _NARG REPT _NARG
dbw BANK(\1), \1 dbw BANK(\1), \1
SHIFT SHIFT
ENDR ENDR
ENDM ENDM
dab: MACRO ; dwb address, bank MACRO dab ; dwb address, bank
REPT _NARG REPT _NARG
dwb \1, BANK(\1) dwb \1, BANK(\1)
SHIFT SHIFT
ENDR ENDR
ENDM ENDM

View file

@ -1,28 +1,28 @@
farcall: MACRO MACRO farcall
ld b, BANK(\1) ld b, BANK(\1)
ld hl, \1 ld hl, \1
call Bankswitch call Bankswitch
ENDM ENDM
callfar: MACRO MACRO callfar
ld hl, \1 ld hl, \1
ld b, BANK(\1) ld b, BANK(\1)
call Bankswitch call Bankswitch
ENDM ENDM
farjp: MACRO MACRO farjp
ld b, BANK(\1) ld b, BANK(\1)
ld hl, \1 ld hl, \1
jp Bankswitch jp Bankswitch
ENDM ENDM
jpfar: MACRO MACRO jpfar
ld hl, \1 ld hl, \1
ld b, BANK(\1) ld b, BANK(\1)
jp Bankswitch jp Bankswitch
ENDM ENDM
homecall: MACRO MACRO homecall
ldh a, [hLoadedROMBank] ldh a, [hLoadedROMBank]
push af push af
ld a, BANK(\1) ld a, BANK(\1)
@ -34,7 +34,7 @@ homecall: MACRO
ld [MBC1RomBank], a ld [MBC1RomBank], a
ENDM ENDM
homecall_sf: MACRO ; homecall but save flags by popping into bc instead of af MACRO homecall_sf ; homecall but save flags by popping into bc instead of af
ldh a, [hLoadedROMBank] ldh a, [hLoadedROMBank]
push af push af
ld a, BANK(\1) ld a, BANK(\1)

View file

@ -1,22 +1,22 @@
RGB: MACRO MACRO RGB
REPT _NARG / 3 REPT _NARG / 3
dw palred (\1) + palgreen (\2) + palblue (\3) dw palred (\1) + palgreen (\2) + palblue (\3)
SHIFT 3 SHIFT 3
ENDR ENDR
ENDM ENDM
palred EQUS "(1 << 0) *" DEF palred EQUS "(1 << 0) *"
palgreen EQUS "(1 << 5) *" DEF palgreen EQUS "(1 << 5) *"
palblue EQUS "(1 << 10) *" DEF palblue EQUS "(1 << 10) *"
palettes EQUS "* PALETTE_SIZE" DEF palettes EQUS "* PALETTE_SIZE"
palette EQUS "+ PALETTE_SIZE *" DEF palette EQUS "+ PALETTE_SIZE *"
color EQUS "+ PAL_COLOR_SIZE *" DEF color EQUS "+ PAL_COLOR_SIZE *"
tiles EQUS "* LEN_2BPP_TILE" DEF tiles EQUS "* LEN_2BPP_TILE"
tile EQUS "+ LEN_2BPP_TILE *" DEF tile EQUS "+ LEN_2BPP_TILE *"
dbsprite: MACRO MACRO dbsprite
; x tile, y tile, x pixel, y pixel, vtile offset, attributes ; x tile, y tile, x pixel, y pixel, vtile offset, attributes
db (\2 * TILE_WIDTH) % $100 + \4, (\1 * TILE_WIDTH) % $100 + \3, \5, \6 db (\2 * TILE_WIDTH) % $100 + \4, (\1 * TILE_WIDTH) % $100 + \3, \5, \6
ENDM ENDM

View file

@ -1,32 +1,32 @@
predef_id: MACRO MACRO predef_id
ld a, (\1Predef - PredefPointers) / 3 ld a, (\1Predef - PredefPointers) / 3
ENDM ENDM
predef: MACRO MACRO predef
predef_id \1 predef_id \1
call Predef call Predef
ENDM ENDM
predef_jump: MACRO MACRO predef_jump
predef_id \1 predef_id \1
jp Predef jp Predef
ENDM ENDM
tx_pre_id: MACRO MACRO tx_pre_id
ld a, (\1_id - TextPredefs) / 2 + 1 ld a, (\1_id - TextPredefs) / 2 + 1
ENDM ENDM
tx_pre: MACRO MACRO tx_pre
tx_pre_id \1 tx_pre_id \1
call PrintPredefTextID call PrintPredefTextID
ENDM ENDM
tx_pre_jump: MACRO MACRO tx_pre_jump
tx_pre_id \1 tx_pre_id \1
jp PrintPredefTextID jp PrintPredefTextID
ENDM ENDM
db_tx_pre: MACRO MACRO db_tx_pre
db (\1_id - TextPredefs) / 2 + 1 db (\1_id - TextPredefs) / 2 + 1
ENDM ENDM

View file

@ -1,4 +1,4 @@
audio_header: MACRO MACRO audio_header
db (_NARG - 2) << 6 | \2 db (_NARG - 2) << 6 | \2
dw \1_\2 dw \1_\2
IF _NARG > 2 IF _NARG > 2
@ -24,7 +24,7 @@ ENDM
; small magnitude means quick change, large magnitude means slow change ; small magnitude means quick change, large magnitude means slow change
; in signed magnitude representation, so a value of 8 is the same as (negative) 0 ; in signed magnitude representation, so a value of 8 is the same as (negative) 0
const pitch_sweep_cmd ; $10 const pitch_sweep_cmd ; $10
pitch_sweep: MACRO MACRO pitch_sweep
db pitch_sweep_cmd db pitch_sweep_cmd
IF \2 < 0 IF \2 < 0
db (\1 << 4) | (%1000 | (\2 * -1)) db (\1 << 4) | (%1000 | (\2 * -1))
@ -41,8 +41,8 @@ ENDM
; fade: positive value means decrease in volume, negative value means increase in volume ; fade: positive value means decrease in volume, negative value means increase in volume
; small magnitude means quick change, large magnitude means slow change ; small magnitude means quick change, large magnitude means slow change
; in signed magnitude representation, so a value of 8 is the same as (negative) 0 ; in signed magnitude representation, so a value of 8 is the same as (negative) 0
square_note_cmd EQU sfx_note_cmd ; $20 DEF square_note_cmd EQU sfx_note_cmd ; $20
square_note: MACRO MACRO square_note
db square_note_cmd | \1 db square_note_cmd | \1
IF \3 < 0 IF \3 < 0
db (\2 << 4) | (%1000 | (\3 * -1)) db (\2 << 4) | (%1000 | (\3 * -1))
@ -56,8 +56,8 @@ ENDM
; fade: positive value means decrease in volume, negative value means increase in volume ; fade: positive value means decrease in volume, negative value means increase in volume
; small magnitude means quick change, large magnitude means slow change ; small magnitude means quick change, large magnitude means slow change
; in signed magnitude representation, so a value of 8 is the same as (negative) 0 ; in signed magnitude representation, so a value of 8 is the same as (negative) 0
noise_note_cmd EQU sfx_note_cmd ; $20 DEF noise_note_cmd EQU sfx_note_cmd ; $20
noise_note: MACRO MACRO noise_note
db noise_note_cmd | \1 db noise_note_cmd | \1
IF \3 < 0 IF \3 < 0
db (\2 << 4) | (%1000 | (\3 * -1)) db (\2 << 4) | (%1000 | (\3 * -1))
@ -68,7 +68,7 @@ noise_note: MACRO
ENDM ENDM
; arguments: pitch, length [1, 16] ; arguments: pitch, length [1, 16]
note: MACRO MACRO note
db (\1 << 4) | (\2 - 1) db (\1 << 4) | (\2 - 1)
ENDM ENDM
@ -76,7 +76,7 @@ ENDM
; arguments: instrument [1, 19], length [1, 16] ; arguments: instrument [1, 19], length [1, 16]
const drum_note_cmd ; $b0 const drum_note_cmd ; $b0
drum_note: MACRO MACRO drum_note
db drum_note_cmd | (\2 - 1) db drum_note_cmd | (\2 - 1)
db \1 db \1
ENDM ENDM
@ -85,7 +85,7 @@ ENDM
; like drum_note but one 1 byte instead of 2 ; like drum_note but one 1 byte instead of 2
; can only be used with instruments 1-10, excluding 2 ; can only be used with instruments 1-10, excluding 2
; unused ; unused
drum_note_short: MACRO MACRO drum_note_short
db (\1 << 4) | (\2 - 1) db (\1 << 4) | (\2 - 1)
ENDM ENDM
@ -93,7 +93,7 @@ ENDM
; arguments: length [1, 16] ; arguments: length [1, 16]
const rest_cmd ; $c0 const rest_cmd ; $c0
rest: MACRO MACRO rest
db rest_cmd | (\1 - 1) db rest_cmd | (\1 - 1)
ENDM ENDM
@ -104,7 +104,7 @@ ENDM
; small magnitude means quick change, large magnitude means slow change ; small magnitude means quick change, large magnitude means slow change
; in signed magnitude representation, so a value of 8 is the same as (negative) 0 ; in signed magnitude representation, so a value of 8 is the same as (negative) 0
const note_type_cmd ; $d0 const note_type_cmd ; $d0
note_type: MACRO MACRO note_type
db note_type_cmd | \1 db note_type_cmd | \1
IF \3 < 0 IF \3 < 0
db (\2 << 4) | (%1000 | (\3 * -1)) db (\2 << 4) | (%1000 | (\3 * -1))
@ -114,8 +114,8 @@ note_type: MACRO
ENDM ENDM
; arguments: speed [0, 15] ; arguments: speed [0, 15]
drum_speed_cmd EQU note_type_cmd ; $d0 DEF drum_speed_cmd EQU note_type_cmd ; $d0
drum_speed: MACRO MACRO drum_speed
db drum_speed_cmd | \1 db drum_speed_cmd | \1
ENDM ENDM
@ -123,7 +123,7 @@ ENDM
; arguments: octave [1, 8] ; arguments: octave [1, 8]
const octave_cmd ; $e0 const octave_cmd ; $e0
octave: MACRO MACRO octave
db octave_cmd | (8 - \1) db octave_cmd | (8 - \1)
ENDM ENDM
@ -131,7 +131,7 @@ ENDM
; when enabled, effective frequency used is incremented by 1 ; when enabled, effective frequency used is incremented by 1
const toggle_perfect_pitch_cmd ; $e8 const toggle_perfect_pitch_cmd ; $e8
toggle_perfect_pitch: MACRO MACRO toggle_perfect_pitch
db toggle_perfect_pitch_cmd db toggle_perfect_pitch_cmd
ENDM ENDM
@ -142,7 +142,7 @@ ENDM
; depth: amplitude of vibrato wave ; depth: amplitude of vibrato wave
; rate: frequency of vibrato wave ; rate: frequency of vibrato wave
const vibrato_cmd ; $ea const vibrato_cmd ; $ea
vibrato: MACRO MACRO vibrato
db vibrato_cmd db vibrato_cmd
db \1 db \1
db (\2 << 4) | \3 db (\2 << 4) | \3
@ -150,7 +150,7 @@ ENDM
; arguments: length [1, 256], octave [1, 8], pitch ; arguments: length [1, 256], octave [1, 8], pitch
const pitch_slide_cmd ; $eb const pitch_slide_cmd ; $eb
pitch_slide: MACRO MACRO pitch_slide
db pitch_slide_cmd db pitch_slide_cmd
db \1 - 1 db \1 - 1
db ((8 - \2) << 4) | \3 db ((8 - \2) << 4) | \3
@ -158,7 +158,7 @@ ENDM
; arguments: duty cycle [0, 3] (12.5%, 25%, 50%, 75%) ; arguments: duty cycle [0, 3] (12.5%, 25%, 50%, 75%)
const duty_cycle_cmd ; $ec const duty_cycle_cmd ; $ec
duty_cycle: MACRO MACRO duty_cycle
db duty_cycle_cmd db duty_cycle_cmd
db \1 db \1
ENDM ENDM
@ -170,27 +170,27 @@ ENDM
; if larger than $100, large note speed or note length values might cause overflow ; if larger than $100, large note speed or note length values might cause overflow
; stored in big endian ; stored in big endian
const tempo_cmd ; $ed const tempo_cmd ; $ed
tempo: MACRO MACRO tempo
db tempo_cmd db tempo_cmd
db HIGH(\1), LOW(\1) db HIGH(\1), LOW(\1)
ENDM ENDM
; arguments: left output enable mask, right output enable mask ; arguments: left output enable mask, right output enable mask
const stereo_panning_cmd ; $ee const stereo_panning_cmd ; $ee
stereo_panning: MACRO MACRO stereo_panning
db stereo_panning_cmd db stereo_panning_cmd
db (\1 << 4) | \2 db (\1 << 4) | \2
ENDM ENDM
const unknownmusic0xef_cmd ; $ef const unknownmusic0xef_cmd ; $ef
unknownmusic0xef: MACRO MACRO unknownmusic0xef
db unknownmusic0xef_cmd db unknownmusic0xef_cmd
db \1 db \1
ENDM ENDM
; arguments: left master volume [0, 7], right master volume [0, 7] ; arguments: left master volume [0, 7], right master volume [0, 7]
const volume_cmd ; $f0 const volume_cmd ; $f0
volume: MACRO MACRO volume
db volume_cmd db volume_cmd
db (\1 << 4) | \2 db (\1 << 4) | \2
ENDM ENDM
@ -199,7 +199,7 @@ ENDM
; when enabled, the sfx data is interpreted as music data ; when enabled, the sfx data is interpreted as music data
const execute_music_cmd ; $f8 const execute_music_cmd ; $f8
execute_music: MACRO MACRO execute_music
db execute_music_cmd db execute_music_cmd
ENDM ENDM
@ -207,27 +207,27 @@ ENDM
; arguments: duty cycle 1, duty cycle 2, duty cycle 3, duty cycle 4 ; arguments: duty cycle 1, duty cycle 2, duty cycle 3, duty cycle 4
const duty_cycle_pattern_cmd ; $fc const duty_cycle_pattern_cmd ; $fc
duty_cycle_pattern: MACRO MACRO duty_cycle_pattern
db duty_cycle_pattern_cmd db duty_cycle_pattern_cmd
db \1 << 6 | \2 << 4 | \3 << 2 | \4 db \1 << 6 | \2 << 4 | \3 << 2 | \4
ENDM ENDM
; arguments: address ; arguments: address
const sound_call_cmd ; $fd const sound_call_cmd ; $fd
sound_call: MACRO MACRO sound_call
db sound_call_cmd db sound_call_cmd
dw \1 dw \1
ENDM ENDM
; arguments: count, address ; arguments: count, address
const sound_loop_cmd ; $fe const sound_loop_cmd ; $fe
sound_loop: MACRO MACRO sound_loop
db sound_loop_cmd db sound_loop_cmd
db \1 db \1
dw \2 dw \2
ENDM ENDM
const sound_ret_cmd ; $ff const sound_ret_cmd ; $ff
sound_ret: MACRO MACRO sound_ret
db sound_ret_cmd db sound_ret_cmd
ENDM ENDM

View file

@ -1,7 +1,7 @@
;\1 = event index ;\1 = event index
;\2 = return result in carry instead of zero flag ;\2 = return result in carry instead of zero flag
CheckEvent: MACRO MACRO CheckEvent
event_byte = ((\1) / 8) DEF event_byte = ((\1) / 8)
ld a, [wEventFlags + event_byte] ld a, [wEventFlags + event_byte]
IF _NARG > 1 IF _NARG > 1
@ -19,9 +19,9 @@ ENDM
;\1 = event index ;\1 = event index
CheckEventReuseA: MACRO MACRO CheckEventReuseA
IF event_byte != ((\1) / 8) IF event_byte != ((\1) / 8)
event_byte = ((\1) / 8) DEF event_byte = ((\1) / 8)
ld a, [wEventFlags + event_byte] ld a, [wEventFlags + event_byte]
ENDC ENDC
@ -31,10 +31,10 @@ ENDM
;\1 = event index ;\1 = event index
;\2 = event index of the last event used before the branch ;\2 = event index of the last event used before the branch
CheckEventAfterBranchReuseA: MACRO MACRO CheckEventAfterBranchReuseA
event_byte = ((\2) / 8) DEF event_byte = ((\2) / 8)
IF event_byte != ((\1) / 8) IF event_byte != ((\1) / 8)
event_byte = ((\1) / 8) DEF event_byte = ((\1) / 8)
ld a, [wEventFlags + event_byte] ld a, [wEventFlags + event_byte]
ENDC ENDC
@ -45,7 +45,7 @@ ENDM
;\1 = reg ;\1 = reg
;\2 = event index ;\2 = event index
;\3 = event index this event is relative to (optional, this is needed when there is a fixed flag address) ;\3 = event index this event is relative to (optional, this is needed when there is a fixed flag address)
EventFlagBit: MACRO MACRO EventFlagBit
IF _NARG > 2 IF _NARG > 2
ld \1, ((\3) % 8) + ((\2) - (\3)) ld \1, ((\3) % 8) + ((\2) - (\3))
ELSE ELSE
@ -56,24 +56,24 @@ ENDM
;\1 = reg ;\1 = reg
;\2 = event index ;\2 = event index
EventFlagAddress: MACRO MACRO EventFlagAddress
event_byte = ((\2) / 8) DEF event_byte = ((\2) / 8)
ld \1, wEventFlags + event_byte ld \1, wEventFlags + event_byte
ENDM ENDM
;\1 = event index ;\1 = event index
CheckEventHL: MACRO MACRO CheckEventHL
event_byte = ((\1) / 8) DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte ld hl, wEventFlags + event_byte
bit (\1) % 8, [hl] bit (\1) % 8, [hl]
ENDM ENDM
;\1 = event index ;\1 = event index
CheckEventReuseHL: MACRO MACRO CheckEventReuseHL
IF event_byte != ((\1) / 8) IF event_byte != ((\1) / 8)
event_byte = ((\1) / 8) DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte ld hl, wEventFlags + event_byte
ENDC ENDC
@ -83,18 +83,18 @@ ENDM
; dangerous, only use when HL is guaranteed to be the desired value ; dangerous, only use when HL is guaranteed to be the desired value
;\1 = event index ;\1 = event index
CheckEventForceReuseHL: MACRO MACRO CheckEventForceReuseHL
event_byte = ((\1) / 8) DEF event_byte = ((\1) / 8)
bit (\1) % 8, [hl] bit (\1) % 8, [hl]
ENDM ENDM
;\1 = event index ;\1 = event index
;\2 = event index of the last event used before the branch ;\2 = event index of the last event used before the branch
CheckEventAfterBranchReuseHL: MACRO MACRO CheckEventAfterBranchReuseHL
event_byte = ((\2) / 8) DEF event_byte = ((\2) / 8)
IF event_byte != ((\1) / 8) IF event_byte != ((\1) / 8)
event_byte = ((\1) / 8) DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte ld hl, wEventFlags + event_byte
ENDC ENDC
@ -103,8 +103,8 @@ ENDM
;\1 = event index ;\1 = event index
CheckAndSetEvent: MACRO MACRO CheckAndSetEvent
event_byte = ((\1) / 8) DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte ld hl, wEventFlags + event_byte
bit (\1) % 8, [hl] bit (\1) % 8, [hl]
set (\1) % 8, [hl] set (\1) % 8, [hl]
@ -112,8 +112,8 @@ ENDM
;\1 = event index ;\1 = event index
CheckAndResetEvent: MACRO MACRO CheckAndResetEvent
event_byte = ((\1) / 8) DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte ld hl, wEventFlags + event_byte
bit (\1) % 8, [hl] bit (\1) % 8, [hl]
res (\1) % 8, [hl] res (\1) % 8, [hl]
@ -121,7 +121,7 @@ ENDM
;\1 = event index ;\1 = event index
CheckAndSetEventA: MACRO MACRO CheckAndSetEventA
ld a, [wEventFlags + ((\1) / 8)] ld a, [wEventFlags + ((\1) / 8)]
bit (\1) % 8, a bit (\1) % 8, a
set (\1) % 8, a set (\1) % 8, a
@ -130,7 +130,7 @@ ENDM
;\1 = event index ;\1 = event index
CheckAndResetEventA: MACRO MACRO CheckAndResetEventA
ld a, [wEventFlags + ((\1) / 8)] ld a, [wEventFlags + ((\1) / 8)]
bit (\1) % 8, a bit (\1) % 8, a
res (\1) % 8, a res (\1) % 8, a
@ -139,17 +139,17 @@ ENDM
;\1 = event index ;\1 = event index
SetEvent: MACRO MACRO SetEvent
event_byte = ((\1) / 8) DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte ld hl, wEventFlags + event_byte
set (\1) % 8, [hl] set (\1) % 8, [hl]
ENDM ENDM
;\1 = event index ;\1 = event index
SetEventReuseHL: MACRO MACRO SetEventReuseHL
IF event_byte != ((\1) / 8) IF event_byte != ((\1) / 8)
event_byte = ((\1) / 8) DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte ld hl, wEventFlags + event_byte
ENDC ENDC
@ -159,10 +159,10 @@ ENDM
;\1 = event index ;\1 = event index
;\2 = event index of the last event used before the branch ;\2 = event index of the last event used before the branch
SetEventAfterBranchReuseHL: MACRO MACRO SetEventAfterBranchReuseHL
event_byte = ((\2) / 8) DEF event_byte = ((\2) / 8)
IF event_byte != ((\1) / 8) IF event_byte != ((\1) / 8)
event_byte = ((\1) / 8) DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte ld hl, wEventFlags + event_byte
ENDC ENDC
@ -172,8 +172,8 @@ ENDM
; dangerous, only use when HL is guaranteed to be the desired value ; dangerous, only use when HL is guaranteed to be the desired value
;\1 = event index ;\1 = event index
SetEventForceReuseHL: MACRO MACRO SetEventForceReuseHL
event_byte = ((\1) / 8) DEF event_byte = ((\1) / 8)
set (\1) % 8, [hl] set (\1) % 8, [hl]
ENDM ENDM
@ -181,7 +181,7 @@ ENDM
;\1 = event index ;\1 = event index
;\2 = event index ;\2 = event index
;\3, \4, ... = additional (optional) event indices ;\3, \4, ... = additional (optional) event indices
SetEvents: MACRO MACRO SetEvents
SetEvent \1 SetEvent \1
REPT _NARG - 1 REPT _NARG - 1
SetEventReuseHL \2 SetEventReuseHL \2
@ -191,17 +191,17 @@ ENDM
;\1 = event index ;\1 = event index
ResetEvent: MACRO MACRO ResetEvent
event_byte = ((\1) / 8) DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte ld hl, wEventFlags + event_byte
res (\1) % 8, [hl] res (\1) % 8, [hl]
ENDM ENDM
;\1 = event index ;\1 = event index
ResetEventReuseHL: MACRO MACRO ResetEventReuseHL
IF event_byte != ((\1) / 8) IF event_byte != ((\1) / 8)
event_byte = ((\1) / 8) DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte ld hl, wEventFlags + event_byte
ENDC ENDC
@ -211,10 +211,10 @@ ENDM
;\1 = event index ;\1 = event index
;\2 = event index of the last event used before the branch ;\2 = event index of the last event used before the branch
ResetEventAfterBranchReuseHL: MACRO MACRO ResetEventAfterBranchReuseHL
event_byte = ((\2) / 8) DEF event_byte = ((\2) / 8)
IF event_byte != ((\1) / 8) IF event_byte != ((\1) / 8)
event_byte = ((\1) / 8) DEF event_byte = ((\1) / 8)
ld hl, wEventFlags + event_byte ld hl, wEventFlags + event_byte
ENDC ENDC
@ -224,8 +224,8 @@ ENDM
; dangerous, only use when HL is guaranteed to be the desired value ; dangerous, only use when HL is guaranteed to be the desired value
;\1 = event index ;\1 = event index
ResetEventForceReuseHL: MACRO MACRO ResetEventForceReuseHL
event_byte = ((\1) / 8) DEF event_byte = ((\1) / 8)
res (\1) % 8, [hl] res (\1) % 8, [hl]
ENDM ENDM
@ -233,7 +233,7 @@ ENDM
;\1 = event index ;\1 = event index
;\2 = event index ;\2 = event index
;\3 = event index (optional) ;\3 = event index (optional)
ResetEvents: MACRO MACRO ResetEvents
ResetEvent \1 ResetEvent \1
REPT _NARG - 1 REPT _NARG - 1
ResetEventReuseHL \2 ResetEventReuseHL \2
@ -244,9 +244,9 @@ ENDM
;\1 = start ;\1 = start
;\2 = end ;\2 = end
SetEventRange: MACRO MACRO SetEventRange
event_start_byte = ((\1) / 8) DEF event_start_byte = ((\1) / 8)
event_end_byte = ((\2) / 8) DEF event_end_byte = ((\2) / 8)
IF event_end_byte < event_start_byte IF event_end_byte < event_start_byte
FAIL "Incorrect argument order in SetEventRange." FAIL "Incorrect argument order in SetEventRange."
@ -257,12 +257,12 @@ event_end_byte = ((\2) / 8)
or (1 << (((\2) % 8) + 1)) - (1 << ((\1) % 8)) or (1 << (((\2) % 8) + 1)) - (1 << ((\1) % 8))
ld [wEventFlags + event_start_byte], a ld [wEventFlags + event_start_byte], a
ELSE ELSE
event_fill_start = event_start_byte + 1 DEF event_fill_start = event_start_byte + 1
event_fill_count = event_end_byte - event_start_byte - 1 DEF event_fill_count = event_end_byte - event_start_byte - 1
IF ((\1) % 8) == 0 IF ((\1) % 8) == 0
event_fill_start -= 1 DEF event_fill_start -= 1
event_fill_count += 1 DEF event_fill_count += 1
ELSE ELSE
ld a, [wEventFlags + event_start_byte] ld a, [wEventFlags + event_start_byte]
or $ff - ((1 << ((\1) % 8)) - 1) or $ff - ((1 << ((\1) % 8)) - 1)
@ -270,7 +270,7 @@ event_fill_count += 1
ENDC ENDC
IF ((\2) % 8) == 7 IF ((\2) % 8) == 7
event_fill_count += 1 DEF event_fill_count += 1
ENDC ENDC
IF event_fill_count == 1 IF event_fill_count == 1
@ -306,9 +306,9 @@ ENDM
;\1 = start ;\1 = start
;\2 = end ;\2 = end
;\3 = assume a is 0 if present ;\3 = assume a is 0 if present
ResetEventRange: MACRO MACRO ResetEventRange
event_start_byte = ((\1) / 8) DEF event_start_byte = ((\1) / 8)
event_end_byte = ((\2) / 8) DEF event_end_byte = ((\2) / 8)
IF event_end_byte < event_start_byte IF event_end_byte < event_start_byte
FAIL "Incorrect argument order in ResetEventRange." FAIL "Incorrect argument order in ResetEventRange."
@ -319,12 +319,12 @@ event_end_byte = ((\2) / 8)
and ~((1 << (((\2) % 8) + 1)) - (1 << ((\1) % 8))) & $ff and ~((1 << (((\2) % 8) + 1)) - (1 << ((\1) % 8))) & $ff
ld [wEventFlags + event_start_byte], a ld [wEventFlags + event_start_byte], a
ELSE ELSE
event_fill_start = event_start_byte + 1 DEF event_fill_start = event_start_byte + 1
event_fill_count = event_end_byte - event_start_byte - 1 DEF event_fill_count = event_end_byte - event_start_byte - 1
IF ((\1) % 8) == 0 IF ((\1) % 8) == 0
event_fill_start -= 1 DEF event_fill_start -= 1
event_fill_count += 1 DEF event_fill_count += 1
ELSE ELSE
ld a, [wEventFlags + event_start_byte] ld a, [wEventFlags + event_start_byte]
and ~($ff - ((1 << ((\1) % 8)) - 1)) & $ff and ~($ff - ((1 << ((\1) % 8)) - 1)) & $ff
@ -332,7 +332,7 @@ event_fill_count += 1
ENDC ENDC
IF ((\2) % 8) == 7 IF ((\2) % 8) == 7
event_fill_count += 1 DEF event_fill_count += 1
ENDC ENDC
IF event_fill_count == 1 IF event_fill_count == 1
@ -375,10 +375,10 @@ ENDM
;\1 = event index 1 ;\1 = event index 1
;\2 = event index 2 ;\2 = event index 2
;\3 = try to reuse a (optional) ;\3 = try to reuse a (optional)
CheckBothEventsSet: MACRO MACRO CheckBothEventsSet
IF ((\1) / 8) == ((\2) / 8) IF ((\1) / 8) == ((\2) / 8)
IF (_NARG < 3) || (((\1) / 8) != event_byte) IF (_NARG < 3) || (((\1) / 8) != event_byte)
event_byte = ((\1) / 8) DEF event_byte = ((\1) / 8)
ld a, [wEventFlags + ((\1) / 8)] ld a, [wEventFlags + ((\1) / 8)]
ENDC ENDC
and (1 << ((\1) % 8)) | (1 << ((\2) % 8)) and (1 << ((\1) % 8)) | (1 << ((\2) % 8))
@ -411,7 +411,7 @@ ENDM
; returns the complement of whether either event is set in Z flag ; returns the complement of whether either event is set in Z flag
;\1 = event index 1 ;\1 = event index 1
;\2 = event index 2 ;\2 = event index 2
CheckEitherEventSet: MACRO MACRO CheckEitherEventSet
IF ((\1) / 8) == ((\2) / 8) IF ((\1) / 8) == ((\2) / 8)
ld a, [wEventFlags + ((\1) / 8)] ld a, [wEventFlags + ((\1) / 8)]
and (1 << ((\1) % 8)) | (1 << ((\2) % 8)) and (1 << ((\1) % 8)) | (1 << ((\2) % 8))
@ -441,7 +441,7 @@ ENDM
; for handling fixed event bits when events are inserted/removed ; for handling fixed event bits when events are inserted/removed
;\1 = event index ;\1 = event index
;\2 = fixed flag bit ;\2 = fixed flag bit
AdjustEventBit: MACRO MACRO AdjustEventBit
IF ((\1) % 8) != (\2) IF ((\1) % 8) != (\2)
add ((\1) % 8) - (\2) add ((\1) % 8) - (\2)
ENDC ENDC

View file

@ -1,7 +1,7 @@
def_object_events: MACRO MACRO def_object_events
REDEF _NUM_OBJECT_EVENTS EQUS "_NUM_OBJECT_EVENTS_\@" REDEF _NUM_OBJECT_EVENTS EQUS "_NUM_OBJECT_EVENTS_\@"
db {_NUM_OBJECT_EVENTS} db {_NUM_OBJECT_EVENTS}
{_NUM_OBJECT_EVENTS} = 0 DEF {_NUM_OBJECT_EVENTS} = 0
ENDM ENDM
;\1 x position ;\1 x position
@ -13,7 +13,7 @@ ENDM
;\7 items only: item id ;\7 items only: item id
;\7 trainers only: trainer class/pokemon id ;\7 trainers only: trainer class/pokemon id
;\8 trainers only: trainer number/pokemon level ;\8 trainers only: trainer number/pokemon level
object_event: MACRO MACRO object_event
db \3 db \3
db \2 + 4 db \2 + 4
db \1 + 4 db \1 + 4
@ -29,42 +29,42 @@ object_event: MACRO
ELSE ELSE
db \6 db \6
ENDC ENDC
{_NUM_OBJECT_EVENTS} += 1 DEF {_NUM_OBJECT_EVENTS} += 1
ENDM ENDM
def_warp_events: MACRO MACRO def_warp_events
REDEF _NUM_WARP_EVENTS EQUS "_NUM_WARP_EVENTS_\@" REDEF _NUM_WARP_EVENTS EQUS "_NUM_WARP_EVENTS_\@"
db {_NUM_WARP_EVENTS} db {_NUM_WARP_EVENTS}
{_NUM_WARP_EVENTS} = 0 DEF {_NUM_WARP_EVENTS} = 0
ENDM ENDM
;\1 x position ;\1 x position
;\2 y position ;\2 y position
;\3 destination map (-1 = wLastMap) ;\3 destination map (-1 = wLastMap)
;\4 destination warp id; starts at 1 (internally at 0) ;\4 destination warp id; starts at 1 (internally at 0)
warp_event: MACRO MACRO warp_event
db \2, \1, \4 - 1, \3 db \2, \1, \4 - 1, \3
_WARP_{d:{_NUM_WARP_EVENTS}}_X = \1 DEF _WARP_{d:{_NUM_WARP_EVENTS}}_X = \1
_WARP_{d:{_NUM_WARP_EVENTS}}_Y = \2 DEF _WARP_{d:{_NUM_WARP_EVENTS}}_Y = \2
{_NUM_WARP_EVENTS} += 1 DEF {_NUM_WARP_EVENTS} += 1
ENDM ENDM
def_bg_events: MACRO MACRO def_bg_events
REDEF _NUM_BG_EVENTS EQUS "_NUM_BG_EVENTS_\@" REDEF _NUM_BG_EVENTS EQUS "_NUM_BG_EVENTS_\@"
db {_NUM_BG_EVENTS} db {_NUM_BG_EVENTS}
{_NUM_BG_EVENTS} = 0 DEF {_NUM_BG_EVENTS} = 0
ENDM ENDM
;\1 x position ;\1 x position
;\2 y position ;\2 y position
;\3 sign id ;\3 sign id
bg_event: MACRO MACRO bg_event
db \2, \1, \3 db \2, \1, \3
{_NUM_BG_EVENTS} += 1 DEF {_NUM_BG_EVENTS} += 1
ENDM ENDM
;\1 source map ;\1 source map
def_warps_to: MACRO MACRO def_warps_to
FOR n, _NUM_WARP_EVENTS FOR n, _NUM_WARP_EVENTS
warp_to _WARP_{d:n}_X, _WARP_{d:n}_Y, \1_WIDTH warp_to _WARP_{d:n}_X, _WARP_{d:n}_Y, \1_WIDTH
ENDR ENDR
@ -73,18 +73,18 @@ ENDM
;\1 x position ;\1 x position
;\2 y position ;\2 y position
;\3 map width ;\3 map width
warp_to: MACRO MACRO warp_to
event_displacement \3, \1, \2 event_displacement \3, \1, \2
ENDM ENDM
;\1 first bit offset / first object id ;\1 first bit offset / first object id
def_trainers: MACRO MACRO def_trainers
IF _NARG == 1 IF _NARG == 1
CURRENT_TRAINER_BIT = \1 DEF CURRENT_TRAINER_BIT = \1
ELSE ELSE
CURRENT_TRAINER_BIT = 1 DEF CURRENT_TRAINER_BIT = 1
ENDC ENDC
ENDM ENDM
;\1 event flag ;\1 event flag
@ -92,22 +92,22 @@ ENDM
;\3 TextBeforeBattle ;\3 TextBeforeBattle
;\4 TextAfterBattle ;\4 TextAfterBattle
;\5 TextEndBattle ;\5 TextEndBattle
trainer: MACRO MACRO trainer
_ev_bit = \1 % 8 DEF _ev_bit = \1 % 8
_cur_bit = CURRENT_TRAINER_BIT % 8 DEF _cur_bit = CURRENT_TRAINER_BIT % 8
ASSERT _ev_bit == _cur_bit, \ ASSERT _ev_bit == _cur_bit, \
"Expected \1 to be bit {d:_cur_bit}, got {d:_ev_bit}" "Expected \1 to be bit {d:_cur_bit}, got {d:_ev_bit}"
db CURRENT_TRAINER_BIT db CURRENT_TRAINER_BIT
db \2 << 4 db \2 << 4
dw wEventFlags + (\1 - CURRENT_TRAINER_BIT) / 8 dw wEventFlags + (\1 - CURRENT_TRAINER_BIT) / 8
dw \3, \5, \4, \4 dw \3, \5, \4, \4
CURRENT_TRAINER_BIT += 1 DEF CURRENT_TRAINER_BIT += 1
ENDM ENDM
;\1 x position ;\1 x position
;\2 y position ;\2 y position
;\3 movement data ;\3 movement data
map_coord_movement: MACRO MACRO map_coord_movement
dbmapcoord \1, \2 dbmapcoord \1, \2
dw \3 dw \3
ENDM ENDM
@ -117,10 +117,10 @@ ENDM
;\2 map id ;\2 map id
;\3 tileset ;\3 tileset
;\4 connections: combo of NORTH, SOUTH, WEST, and/or EAST, or 0 for none ;\4 connections: combo of NORTH, SOUTH, WEST, and/or EAST, or 0 for none
map_header: MACRO MACRO map_header
CURRENT_MAP_WIDTH = \2_WIDTH DEF CURRENT_MAP_WIDTH = \2_WIDTH
CURRENT_MAP_HEIGHT = \2_HEIGHT DEF CURRENT_MAP_HEIGHT = \2_HEIGHT
CURRENT_MAP_OBJECT EQUS "\1_Object" DEF CURRENT_MAP_OBJECT EQUS "\1_Object"
\1_h:: \1_h::
db \3 db \3
db CURRENT_MAP_HEIGHT, CURRENT_MAP_WIDTH db CURRENT_MAP_HEIGHT, CURRENT_MAP_WIDTH
@ -131,7 +131,7 @@ CURRENT_MAP_OBJECT EQUS "\1_Object"
ENDM ENDM
; Comes after map_header and connection macros ; Comes after map_header and connection macros
end_map_header: MACRO MACRO end_map_header
dw {CURRENT_MAP_OBJECT} dw {CURRENT_MAP_OBJECT}
PURGE CURRENT_MAP_WIDTH, CURRENT_MAP_HEIGHT, CURRENT_MAP_OBJECT PURGE CURRENT_MAP_WIDTH, CURRENT_MAP_HEIGHT, CURRENT_MAP_OBJECT
ENDM ENDM
@ -142,63 +142,63 @@ ENDM
;\3 map id ;\3 map id
;\4 offset of the target map relative to the current map ;\4 offset of the target map relative to the current map
; (x offset for east/west, y offset for north/south) ; (x offset for east/west, y offset for north/south)
connection: MACRO MACRO connection
; Calculate tile offsets for source (current) and target maps ; Calculate tile offsets for source (current) and target maps
_src = 0 DEF _src = 0
_tgt = (\4) + 3 DEF _tgt = (\4) + 3
IF _tgt < 2 IF _tgt < 2
_src = -_tgt DEF _src = -_tgt
_tgt = 0 DEF _tgt = 0
ENDC ENDC
IF !STRCMP("\1", "north") IF !STRCMP("\1", "north")
_blk = \3_WIDTH * (\3_HEIGHT - 3) + _src DEF _blk = \3_WIDTH * (\3_HEIGHT - 3) + _src
_map = _tgt DEF _map = _tgt
_win = (\3_WIDTH + 6) * \3_HEIGHT + 1 DEF _win = (\3_WIDTH + 6) * \3_HEIGHT + 1
_y = \3_HEIGHT * 2 - 1 DEF _y = \3_HEIGHT * 2 - 1
_x = (\4) * -2 DEF _x = (\4) * -2
_len = CURRENT_MAP_WIDTH + 3 - (\4) DEF _len = CURRENT_MAP_WIDTH + 3 - (\4)
IF _len > \3_WIDTH IF _len > \3_WIDTH
_len = \3_WIDTH DEF _len = \3_WIDTH
ENDC ENDC
ELIF !STRCMP("\1", "south") ELIF !STRCMP("\1", "south")
_blk = _src DEF _blk = _src
_map = (CURRENT_MAP_WIDTH + 6) * (CURRENT_MAP_HEIGHT + 3) + _tgt DEF _map = (CURRENT_MAP_WIDTH + 6) * (CURRENT_MAP_HEIGHT + 3) + _tgt
_win = \3_WIDTH + 7 DEF _win = \3_WIDTH + 7
_y = 0 DEF _y = 0
_x = (\4) * -2 DEF _x = (\4) * -2
_len = CURRENT_MAP_WIDTH + 3 - (\4) DEF _len = CURRENT_MAP_WIDTH + 3 - (\4)
IF _len > \3_WIDTH IF _len > \3_WIDTH
_len = \3_WIDTH DEF _len = \3_WIDTH
ENDC ENDC
ELIF !STRCMP("\1", "west") ELIF !STRCMP("\1", "west")
_blk = (\3_WIDTH * _src) + \3_WIDTH - 3 DEF _blk = (\3_WIDTH * _src) + \3_WIDTH - 3
_map = (CURRENT_MAP_WIDTH + 6) * _tgt DEF _map = (CURRENT_MAP_WIDTH + 6) * _tgt
_win = (\3_WIDTH + 6) * 2 - 6 DEF _win = (\3_WIDTH + 6) * 2 - 6
_y = (\4) * -2 DEF _y = (\4) * -2
_x = \3_WIDTH * 2 - 1 DEF _x = \3_WIDTH * 2 - 1
_len = CURRENT_MAP_HEIGHT + 3 - (\4) DEF _len = CURRENT_MAP_HEIGHT + 3 - (\4)
IF _len > \3_HEIGHT IF _len > \3_HEIGHT
_len = \3_HEIGHT DEF _len = \3_HEIGHT
ENDC ENDC
ELIF !STRCMP("\1", "east") ELIF !STRCMP("\1", "east")
_blk = (\3_WIDTH * _src) DEF _blk = (\3_WIDTH * _src)
_map = (CURRENT_MAP_WIDTH + 6) * _tgt + CURRENT_MAP_WIDTH + 3 DEF _map = (CURRENT_MAP_WIDTH + 6) * _tgt + CURRENT_MAP_WIDTH + 3
_win = \3_WIDTH + 7 DEF _win = \3_WIDTH + 7
_y = (\4) * -2 DEF _y = (\4) * -2
_x = 0 DEF _x = 0
_len = CURRENT_MAP_HEIGHT + 3 - (\4) DEF _len = CURRENT_MAP_HEIGHT + 3 - (\4)
IF _len > \3_HEIGHT IF _len > \3_HEIGHT
_len = \3_HEIGHT DEF _len = \3_HEIGHT
ENDC ENDC
ELSE ELSE
fail "Invalid direction for 'connection'." fail "Invalid direction for 'connection'."
ENDC ENDC
db \3 db \3
dw \2_Blocks + _blk dw \2_Blocks + _blk

View file

@ -1,44 +1,44 @@
text EQUS "db TX_START," ; Start writing text. DEF text EQUS "db TX_START," ; Start writing text.
next EQUS "db \"<NEXT>\"," ; Move a line down. DEF next EQUS "db \"<NEXT>\"," ; Move a line down.
line EQUS "db \"<LINE>\"," ; Start writing at the bottom line. DEF line EQUS "db \"<LINE>\"," ; Start writing at the bottom line.
para EQUS "db \"<PARA>\"," ; Start a new paragraph. DEF para EQUS "db \"<PARA>\"," ; Start a new paragraph.
cont EQUS "db \"<CONT>\"," ; Scroll to the next line. DEF cont EQUS "db \"<CONT>\"," ; Scroll to the next line.
done EQUS "db \"<DONE>\"" ; End a text box. DEF done EQUS "db \"<DONE>\"" ; End a text box.
prompt EQUS "db \"<PROMPT>\"" ; Prompt the player to end a text box (initiating some other event). DEF prompt EQUS "db \"<PROMPT>\"" ; Prompt the player to end a text box (initiating some other event).
page EQUS "db \"<PAGE>\"," ; Start a new Pokédex page. DEF page EQUS "db \"<PAGE>\"," ; Start a new Pokédex page.
dex EQUS "db \"<DEXEND>\", \"@\"" ; End a Pokédex entry. DEF dex EQUS "db \"<DEXEND>\", \"@\"" ; End a Pokédex entry.
; TextCommandJumpTable indexes (see home/text.asm) ; TextCommandJumpTable indexes (see home/text.asm)
const_def const_def
const TX_START ; $00 const TX_START ; $00
text_start: MACRO MACRO text_start
db TX_START db TX_START
ENDM ENDM
const TX_RAM ; $01 const TX_RAM ; $01
text_ram: MACRO MACRO text_ram
db TX_RAM db TX_RAM
dw \1 ; address to read from dw \1 ; address to read from
ENDM ENDM
const TX_BCD ; $02 const TX_BCD ; $02
text_bcd: MACRO MACRO text_bcd
db TX_BCD db TX_BCD
dw \1 ; address to read from dw \1 ; address to read from
db \2 ; number of bytes + print flags db \2 ; number of bytes + print flags
ENDM ENDM
const TX_MOVE ; $03 const TX_MOVE ; $03
text_move: MACRO MACRO text_move
db TX_MOVE db TX_MOVE
dw \1 ; address of the new location dw \1 ; address of the new location
ENDM ENDM
const TX_BOX ; $04 const TX_BOX ; $04
text_box: MACRO MACRO text_box
; draw box ; draw box
db TX_BOX db TX_BOX
dw \1 ; address of upper left corner dw \1 ; address of upper left corner
@ -46,27 +46,27 @@ text_box: MACRO
ENDM ENDM
const TX_LOW ; $05 const TX_LOW ; $05
text_low: MACRO MACRO text_low
db TX_LOW db TX_LOW
ENDM ENDM
const TX_PROMPT_BUTTON ; $06 const TX_PROMPT_BUTTON ; $06
text_promptbutton: MACRO MACRO text_promptbutton
db TX_PROMPT_BUTTON db TX_PROMPT_BUTTON
ENDM ENDM
const TX_SCROLL ; $07 const TX_SCROLL ; $07
text_scroll: MACRO MACRO text_scroll
db TX_SCROLL db TX_SCROLL
ENDM ENDM
const TX_START_ASM ; $08 const TX_START_ASM ; $08
text_asm: MACRO MACRO text_asm
db TX_START_ASM db TX_START_ASM
ENDM ENDM
const TX_NUM ; $09 const TX_NUM ; $09
text_decimal: MACRO MACRO text_decimal
; print a big-endian decimal number. ; print a big-endian decimal number.
db TX_NUM db TX_NUM
dw \1 ; address to read from dw \1 ; address to read from
@ -74,76 +74,76 @@ text_decimal: MACRO
ENDM ENDM
const TX_PAUSE ; $0a const TX_PAUSE ; $0a
text_pause: MACRO MACRO text_pause
db TX_PAUSE db TX_PAUSE
ENDM ENDM
const TX_SOUND_GET_ITEM_1 ; $0b const TX_SOUND_GET_ITEM_1 ; $0b
sound_get_item_1: MACRO MACRO sound_get_item_1
db TX_SOUND_GET_ITEM_1 db TX_SOUND_GET_ITEM_1
ENDM ENDM
TX_SOUND_LEVEL_UP EQU TX_SOUND_GET_ITEM_1 DEF TX_SOUND_LEVEL_UP EQU TX_SOUND_GET_ITEM_1
sound_level_up EQUS "sound_get_item_1" DEF sound_level_up EQUS "sound_get_item_1"
const TX_DOTS ; $0c const TX_DOTS ; $0c
text_dots: MACRO MACRO text_dots
db TX_DOTS db TX_DOTS
db \1 ; number of ellipses to draw db \1 ; number of ellipses to draw
ENDM ENDM
const TX_WAIT_BUTTON ; $0d const TX_WAIT_BUTTON ; $0d
text_waitbutton: MACRO MACRO text_waitbutton
db TX_WAIT_BUTTON db TX_WAIT_BUTTON
ENDM ENDM
const TX_SOUND_POKEDEX_RATING ; $0e const TX_SOUND_POKEDEX_RATING ; $0e
sound_pokedex_rating: MACRO MACRO sound_pokedex_rating
db TX_SOUND_POKEDEX_RATING db TX_SOUND_POKEDEX_RATING
ENDM ENDM
const TX_SOUND_GET_ITEM_1_DUPLICATE ; $0f const TX_SOUND_GET_ITEM_1_DUPLICATE ; $0f
sound_get_item_1_duplicate: MACRO MACRO sound_get_item_1_duplicate
db TX_SOUND_GET_ITEM_1_DUPLICATE db TX_SOUND_GET_ITEM_1_DUPLICATE
ENDM ENDM
const TX_SOUND_GET_ITEM_2 ; $10 const TX_SOUND_GET_ITEM_2 ; $10
sound_get_item_2: MACRO MACRO sound_get_item_2
db TX_SOUND_GET_ITEM_2 db TX_SOUND_GET_ITEM_2
ENDM ENDM
const TX_SOUND_GET_KEY_ITEM ; $11 const TX_SOUND_GET_KEY_ITEM ; $11
sound_get_key_item: MACRO MACRO sound_get_key_item
db TX_SOUND_GET_KEY_ITEM db TX_SOUND_GET_KEY_ITEM
ENDM ENDM
const TX_SOUND_CAUGHT_MON ; $12 const TX_SOUND_CAUGHT_MON ; $12
sound_caught_mon: MACRO MACRO sound_caught_mon
db TX_SOUND_CAUGHT_MON db TX_SOUND_CAUGHT_MON
ENDM ENDM
const TX_SOUND_DEX_PAGE_ADDED ; $13 const TX_SOUND_DEX_PAGE_ADDED ; $13
sound_dex_page_added: MACRO MACRO sound_dex_page_added
db TX_SOUND_DEX_PAGE_ADDED db TX_SOUND_DEX_PAGE_ADDED
ENDM ENDM
const TX_SOUND_CRY_NIDORINA ; $14 const TX_SOUND_CRY_NIDORINA ; $14
sound_cry_nidorina: MACRO MACRO sound_cry_nidorina
db TX_SOUND_CRY_NIDORINA db TX_SOUND_CRY_NIDORINA
ENDM ENDM
const TX_SOUND_CRY_PIDGEOT ; $15 const TX_SOUND_CRY_PIDGEOT ; $15
sound_cry_pidgeot: MACRO MACRO sound_cry_pidgeot
db TX_SOUND_CRY_PIDGEOT db TX_SOUND_CRY_PIDGEOT
ENDM ENDM
const TX_SOUND_CRY_DEWGONG ; $16 const TX_SOUND_CRY_DEWGONG ; $16
sound_cry_dewgong: MACRO MACRO sound_cry_dewgong
db TX_SOUND_CRY_DEWGONG db TX_SOUND_CRY_DEWGONG
ENDM ENDM
const TX_FAR ; $17 const TX_FAR ; $17
text_far: MACRO MACRO text_far
db TX_FAR db TX_FAR
dab \1 ; address of text commands dab \1 ; address of text commands
ENDM ENDM
@ -152,7 +152,7 @@ ENDM
const_next $50 const_next $50
const TX_END ; $50 const TX_END ; $50
text_end: MACRO MACRO text_end
db TX_END db TX_END
ENDM ENDM
@ -161,12 +161,12 @@ ENDM
const_def -1, -1 const_def -1, -1
const TX_SCRIPT_POKECENTER_NURSE ; $ff const TX_SCRIPT_POKECENTER_NURSE ; $ff
script_pokecenter_nurse: MACRO MACRO script_pokecenter_nurse
db TX_SCRIPT_POKECENTER_NURSE db TX_SCRIPT_POKECENTER_NURSE
ENDM ENDM
const TX_SCRIPT_MART ; $fe const TX_SCRIPT_MART ; $fe
script_mart: MACRO MACRO script_mart
db TX_SCRIPT_MART db TX_SCRIPT_MART
db _NARG ; number of items db _NARG ; number of items
IF _NARG IF _NARG
@ -176,12 +176,12 @@ script_mart: MACRO
ENDM ENDM
const TX_SCRIPT_BILLS_PC ; $fd const TX_SCRIPT_BILLS_PC ; $fd
script_bills_pc: MACRO MACRO script_bills_pc
db TX_SCRIPT_BILLS_PC db TX_SCRIPT_BILLS_PC
ENDM ENDM
const TX_SCRIPT_PLAYERS_PC ; $fc const TX_SCRIPT_PLAYERS_PC ; $fc
script_players_pc: MACRO MACRO script_players_pc
db TX_SCRIPT_PLAYERS_PC db TX_SCRIPT_PLAYERS_PC
ENDM ENDM
@ -190,23 +190,23 @@ ENDM
const_skip ; $fa const_skip ; $fa
const TX_SCRIPT_POKECENTER_PC ; $f9 const TX_SCRIPT_POKECENTER_PC ; $f9
script_pokecenter_pc: MACRO MACRO script_pokecenter_pc
db TX_SCRIPT_POKECENTER_PC db TX_SCRIPT_POKECENTER_PC
ENDM ENDM
const_skip ; $f8 const_skip ; $f8
const TX_SCRIPT_PRIZE_VENDOR ; $f7 const TX_SCRIPT_PRIZE_VENDOR ; $f7
script_prize_vendor: MACRO MACRO script_prize_vendor
db TX_SCRIPT_PRIZE_VENDOR db TX_SCRIPT_PRIZE_VENDOR
ENDM ENDM
const TX_SCRIPT_CABLE_CLUB_RECEPTIONIST ; $f6 const TX_SCRIPT_CABLE_CLUB_RECEPTIONIST ; $f6
script_cable_club_receptionist: MACRO MACRO script_cable_club_receptionist
db TX_SCRIPT_CABLE_CLUB_RECEPTIONIST db TX_SCRIPT_CABLE_CLUB_RECEPTIONIST
ENDM ENDM
const TX_SCRIPT_VENDING_MACHINE ; $f5 const TX_SCRIPT_VENDING_MACHINE ; $f5
script_vending_machine: MACRO MACRO script_vending_machine
db TX_SCRIPT_VENDING_MACHINE db TX_SCRIPT_VENDING_MACHINE
ENDM ENDM

View file

@ -1,39 +1,39 @@
vc_hook: MACRO MACRO vc_hook
IF DEF(_RED_VC) || DEF(_BLUE_VC) IF DEF(_RED_VC) || DEF(_BLUE_VC)
.VC_\1:: .VC_\1::
ENDC ENDC
ENDM ENDM
vc_hook_red: MACRO MACRO vc_hook_red
IF DEF(_RED_VC) IF DEF(_RED_VC)
.VC_\1:: .VC_\1::
ENDC ENDC
ENDM ENDM
vc_hook_blue: MACRO MACRO vc_hook_blue
IF DEF(_BLUE_VC) IF DEF(_BLUE_VC)
.VC_\1:: .VC_\1::
ENDC ENDC
ENDM ENDM
vc_patch: MACRO MACRO vc_patch
IF DEF(_RED_VC) || DEF(_BLUE_VC) IF DEF(_RED_VC) || DEF(_BLUE_VC)
ASSERT !DEF(CURRENT_VC_PATCH), "Already started a vc_patch" ASSERT !DEF(CURRENT_VC_PATCH), "Already started a vc_patch"
CURRENT_VC_PATCH EQUS "\1" DEF CURRENT_VC_PATCH EQUS "\1"
.VC_{CURRENT_VC_PATCH}:: .VC_{CURRENT_VC_PATCH}::
ENDC ENDC
ENDM ENDM
vc_patch_end: MACRO MACRO vc_patch_end
IF DEF(_RED_VC) || DEF(_BLUE_VC) IF DEF(_RED_VC) || DEF(_BLUE_VC)
ASSERT DEF(CURRENT_VC_PATCH), "No vc_patch started" ASSERT DEF(CURRENT_VC_PATCH), "No vc_patch started"
.VC_{CURRENT_VC_PATCH}_End:: .VC_{CURRENT_VC_PATCH}_End::
PURGE CURRENT_VC_PATCH PURGE CURRENT_VC_PATCH
ENDC ENDC
ENDM ENDM
vc_assert: MACRO MACRO vc_assert
IF DEF(_RED_VC) || DEF(_BLUE_VC) IF DEF(_RED_VC) || DEF(_BLUE_VC)
ASSERT \# ASSERT \#
ENDC ENDC
ENDM ENDM

View file

@ -1,12 +1,12 @@
; Used in wram.asm ; Used in wram.asm
flag_array: MACRO MACRO flag_array
ds ((\1) + 7) / 8 ds ((\1) + 7) / 8
ENDM ENDM
BOX_STRUCT_LENGTH EQU 25 + NUM_MOVES * 2 DEF BOX_STRUCT_LENGTH EQU 25 + NUM_MOVES * 2
box_struct: MACRO MACRO box_struct
\1Species:: db \1Species:: db
\1HP:: dw \1HP:: dw
\1BoxLevel:: db \1BoxLevel:: db
@ -27,7 +27,7 @@ box_struct: MACRO
\1PP:: ds NUM_MOVES \1PP:: ds NUM_MOVES
ENDM ENDM
party_struct: MACRO MACRO party_struct
box_struct \1 box_struct \1
\1Level:: db \1Level:: db
\1Stats:: \1Stats::
@ -38,7 +38,7 @@ party_struct: MACRO
\1Special:: dw \1Special:: dw
ENDM ENDM
battle_struct: MACRO MACRO battle_struct
\1Species:: db \1Species:: db
\1HP:: dw \1HP:: dw
\1PartyPos:: \1PartyPos::
@ -60,7 +60,7 @@ battle_struct: MACRO
\1PP:: ds NUM_MOVES \1PP:: ds NUM_MOVES
ENDM ENDM
spritestatedata1: MACRO MACRO spritestatedata1
\1PictureID:: db \1PictureID:: db
\1MovementStatus:: db \1MovementStatus:: db
\1ImageIndex:: db \1ImageIndex:: db
@ -78,7 +78,7 @@ spritestatedata1: MACRO
\1End:: \1End::
ENDM ENDM
spritestatedata2: MACRO MACRO spritestatedata2
\1WalkAnimationCounter:: db \1WalkAnimationCounter:: db
ds 1 ds 1
\1YDisplacement:: db \1YDisplacement:: db
@ -96,14 +96,14 @@ spritestatedata2: MACRO
\1End:: \1End::
ENDM ENDM
sprite_oam_struct: MACRO MACRO sprite_oam_struct
\1YCoord:: db \1YCoord:: db
\1XCoord:: db \1XCoord:: db
\1TileID:: db \1TileID:: db
\1Attributes:: db \1Attributes:: db
ENDM ENDM
map_connection_struct: MACRO MACRO map_connection_struct
\1ConnectedMap:: db \1ConnectedMap:: db
\1ConnectionStripSrc:: dw \1ConnectionStripSrc:: dw
\1ConnectionStripDest:: dw \1ConnectionStripDest:: dw

View file

@ -1,8 +1,8 @@
MAJOR EQU 0 DEF MAJOR EQU 0
MINOR EQU 5 DEF MINOR EQU 5
PATCH EQU 2 DEF PATCH EQU 2
wrong_rgbds: MACRO MACRO wrong_rgbds
fail "pokered requires rgbds v0.5.2 or newer." fail "pokered requires rgbds v0.5.2 or newer."
ENDM ENDM

View file

@ -26,12 +26,12 @@ sMainDataCheckSum:: db
; The PC boxes will not fit into one SRAM bank, ; The PC boxes will not fit into one SRAM bank,
; so they use multiple SECTIONs ; so they use multiple SECTIONs
box_n = 0 DEF box_n = 0
boxes: MACRO MACRO boxes
REPT \1 REPT \1
box_n += 1 DEF box_n += 1
sBox{d:box_n}:: ds wBoxDataEnd - wBoxDataStart sBox{d:box_n}:: ds wBoxDataEnd - wBoxDataStart
ENDR ENDR
ENDM ENDM
SECTION "Saved Boxes 1", SRAM SECTION "Saved Boxes 1", SRAM

View file

@ -2,8 +2,8 @@ INCLUDE "constants.asm"
; These are all the asm constants needed to make the blue_vc patch. ; These are all the asm constants needed to make the blue_vc patch.
vc_const: MACRO MACRO vc_const
x = \1 DEF x = \1
PRINTLN "00:{04x:x} \1" ; same format as rgblink's .sym file PRINTLN "00:{04x:x} \1" ; same format as rgblink's .sym file
ENDM ENDM

Some files were not shown because too many files have changed in this diff Show more