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
ret
alarm_tone: MACRO
MACRO alarm_tone
db \1 ; length
db \2 ; envelope
dw \3 ; frequency

View file

@ -13,7 +13,7 @@
const A_ ; 9
const A# ; A
const B_ ; B
NUM_NOTES EQU const_value
DEF NUM_NOTES EQU const_value
; channel
; Audio[1|2|3]_HWChannelBaseAddresses, Audio[1|2|3]_HWChannelDisableMasks,
@ -23,31 +23,31 @@ NUM_NOTES EQU const_value
const Ch2 ; 1
const Ch3 ; 2
const Ch4 ; 3
NUM_MUSIC_CHANS EQU const_value
DEF NUM_MUSIC_CHANS EQU const_value
const Ch5 ; 4
const Ch6 ; 5
const Ch7 ; 6
const Ch8 ; 7
NUM_NOISE_CHANS EQU const_value - NUM_MUSIC_CHANS
NUM_CHANNELS EQU const_value
DEF NUM_NOISE_CHANS EQU const_value - NUM_MUSIC_CHANS
DEF NUM_CHANNELS EQU const_value
; HW sound channel register base addresses
HW_CH1_BASE EQU LOW(rNR10)
HW_CH2_BASE EQU LOW(rNR21) - 1
HW_CH3_BASE EQU LOW(rNR30)
HW_CH4_BASE EQU LOW(rNR41) - 1
DEF HW_CH1_BASE EQU LOW(rNR10)
DEF HW_CH2_BASE EQU LOW(rNR21) - 1
DEF HW_CH3_BASE EQU LOW(rNR30)
DEF HW_CH4_BASE EQU LOW(rNR41) - 1
; HW sound channel enable bit masks
HW_CH1_ENABLE_MASK EQU %00010001
HW_CH2_ENABLE_MASK EQU %00100010
HW_CH3_ENABLE_MASK EQU %01000100
HW_CH4_ENABLE_MASK EQU %10001000
DEF HW_CH1_ENABLE_MASK EQU %00010001
DEF HW_CH2_ENABLE_MASK EQU %00100010
DEF HW_CH3_ENABLE_MASK EQU %01000100
DEF HW_CH4_ENABLE_MASK EQU %10001000
; HW sound channel disable bit masks
HW_CH1_DISABLE_MASK EQU (~HW_CH1_ENABLE_MASK & $ff)
HW_CH2_DISABLE_MASK EQU (~HW_CH2_ENABLE_MASK & $ff)
HW_CH3_DISABLE_MASK EQU (~HW_CH3_ENABLE_MASK & $ff)
HW_CH4_DISABLE_MASK EQU (~HW_CH4_ENABLE_MASK & $ff)
DEF HW_CH1_DISABLE_MASK EQU (~HW_CH1_ENABLE_MASK & $ff)
DEF HW_CH2_DISABLE_MASK EQU (~HW_CH2_ENABLE_MASK & $ff)
DEF HW_CH3_DISABLE_MASK EQU (~HW_CH3_ENABLE_MASK & $ff)
DEF HW_CH4_DISABLE_MASK EQU (~HW_CH4_ENABLE_MASK & $ff)
const_def 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
; 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)
const_def
@ -9,7 +9,7 @@ NUM_MOVES EQU 4
const STAT_DEFENSE
const STAT_SPEED
const STAT_SPECIAL
NUM_STATS EQU const_value
DEF NUM_STATS EQU const_value
; StatModTextStrings indexes (see data/battle/stat_mod_names.asm)
const_def
@ -20,20 +20,20 @@ NUM_STATS EQU const_value
const MOD_ACCURACY
const MOD_EVASION
const_skip 2
NUM_STAT_MODS EQU const_value
DEF NUM_STAT_MODS EQU const_value
; Moves struct fields (see data/moves/moves.asm)
rsreset
MOVE_ANIM rb
MOVE_EFFECT rb
MOVE_POWER rb
MOVE_TYPE rb
MOVE_ACC rb
MOVE_PP rb
MOVE_LENGTH EQU _RS
DEF MOVE_ANIM rb
DEF MOVE_EFFECT rb
DEF MOVE_POWER rb
DEF MOVE_TYPE rb
DEF MOVE_ACC rb
DEF MOVE_PP rb
DEF MOVE_LENGTH EQU _RS
; D733 flags
BIT_TEST_BATTLE EQU 0
DEF BIT_TEST_BATTLE EQU 0
; battle type constants (wBattleType values)
const_def
@ -42,33 +42,33 @@ BIT_TEST_BATTLE EQU 0
const BATTLE_TYPE_SAFARI ; 2
; damage limits before type effectiveness
MIN_NEUTRAL_DAMAGE EQU 2
MAX_NEUTRAL_DAMAGE EQU 999
DEF MIN_NEUTRAL_DAMAGE EQU 2
DEF MAX_NEUTRAL_DAMAGE EQU 999
; fixed damage constants
SONICBOOM_DAMAGE EQU 20
DRAGON_RAGE_DAMAGE EQU 40
DEF SONICBOOM_DAMAGE EQU 20
DEF DRAGON_RAGE_DAMAGE EQU 40
; type effectiveness factors, scaled by 10
SUPER_EFFECTIVE EQU 20
MORE_EFFECTIVE EQU 15
EFFECTIVE EQU 10
NOT_VERY_EFFECTIVE EQU 05
NO_EFFECT EQU 00
DEF SUPER_EFFECTIVE EQU 20
DEF MORE_EFFECTIVE EQU 15
DEF EFFECTIVE EQU 10
DEF NOT_VERY_EFFECTIVE EQU 05
DEF NO_EFFECT EQU 00
; non-volatile statuses
SLP EQU %111 ; sleep counter
DEF SLP EQU %111 ; sleep counter
const_def 3
const PSN ; 3
const BRN ; 4
const FRZ ; 5
const PAR ; 6
MAX_STAT_VALUE EQU 999
DEF MAX_STAT_VALUE EQU 999
; trainer dvs
ATKDEFDV_TRAINER EQU $98
SPDSPCDV_TRAINER EQU $88
DEF ATKDEFDV_TRAINER EQU $98
DEF SPDSPCDV_TRAINER EQU $88
; wPlayerBattleStatus1 or wEnemyBattleStatus1 bit flags
const_def

View file

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

View file

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

View file

@ -1,5 +1,5 @@
HIDE EQU $11
SHOW EQU $15
DEF HIDE EQU $11
DEF SHOW EQU $15
; MissableObjects indexes (see data/maps/hide_show_data.asm)
; 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_2 ; E2
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_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_DOWN
NO_INPUT EQU 0
A_BUTTON EQU 1 << BIT_A_BUTTON
B_BUTTON EQU 1 << BIT_B_BUTTON
SELECT EQU 1 << BIT_SELECT
START EQU 1 << BIT_START
D_RIGHT EQU 1 << BIT_D_RIGHT
D_LEFT EQU 1 << BIT_D_LEFT
D_UP EQU 1 << BIT_D_UP
D_DOWN EQU 1 << BIT_D_DOWN
DEF NO_INPUT EQU 0
DEF A_BUTTON EQU 1 << BIT_A_BUTTON
DEF B_BUTTON EQU 1 << BIT_B_BUTTON
DEF SELECT EQU 1 << BIT_SELECT
DEF START EQU 1 << BIT_START
DEF D_RIGHT EQU 1 << BIT_D_RIGHT
DEF D_LEFT EQU 1 << BIT_D_LEFT
DEF D_UP EQU 1 << BIT_D_UP
DEF D_DOWN EQU 1 << BIT_D_DOWN

View file

@ -29,8 +29,8 @@
const POTION ; $14
const BOULDERBADGE ; $15
const CASCADEBADGE ; $16
SAFARI_BAIT EQU $15 ; overload
SAFARI_ROCK EQU $16 ; overload
DEF SAFARI_BAIT EQU $15 ; overload
DEF SAFARI_ROCK EQU $16 ; overload
const THUNDERBADGE ; $17
const RAINBOWBADGE ; $18
const SOULBADGE ; $19
@ -92,7 +92,7 @@ SAFARI_ROCK EQU $16 ; overload
const MAX_ETHER ; $51
const ELIXER ; $52
const MAX_ELIXER ; $53
NUM_ITEMS EQU const_value - 1
DEF NUM_ITEMS EQU const_value - 1
; elevator floors use item IDs
const FLOOR_B2F ; $54
@ -109,54 +109,54 @@ NUM_ITEMS EQU const_value - 1
const FLOOR_10F ; $5F
const FLOOR_11F ; $60
const FLOOR_B4F ; $61
NUM_FLOORS EQU const_value - 1 - NUM_ITEMS
DEF NUM_FLOORS EQU const_value - 1 - NUM_ITEMS
const_next $C4
; 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
; 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
\1_TMNUM EQU __tmhm_value__
__tmhm_value__ += 1
MACRO add_tmnum
DEF \1_TMNUM EQU __tmhm_value__
DEF __tmhm_value__ += 1
ENDM
add_hm: MACRO
MACRO add_hm
; Defines three constants:
; - HM_\1: the item id, starting at $C4
; - \1_TMNUM: the learnable TM/HM flag, starting at 51
; - HM##_MOVE: alias for the move id, equal to the value of \1
const HM_\1
HM_VALUE = __tmhm_value__ - NUM_TMS
HM{02d:HM_VALUE}_MOVE EQU \1
DEF HM_VALUE = __tmhm_value__ - NUM_TMS
DEF HM{02d:HM_VALUE}_MOVE EQU \1
add_tmnum \1
ENDM
HM01 EQU const_value
DEF HM01 EQU const_value
add_hm CUT ; $C4
add_hm FLY ; $C5
add_hm SURF ; $C6
add_hm STRENGTH ; $C7
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:
; - TM_\1: the item id, starting at $C9
; - \1_TMNUM: the learnable TM/HM flag, starting at 1
; - TM##_MOVE: alias for the move id, equal to the value of \1
const TM_\1
TM{02d:__tmhm_value__}_MOVE EQU \1
DEF TM{02d:__tmhm_value__}_MOVE EQU \1
add_tmnum \1
ENDM
TM01 EQU const_value
DEF TM01 EQU const_value
add_tm MEGA_PUNCH ; $C9
add_tm RAZOR_WIND ; $CA
add_tm SWORDS_DANCE ; $CB
@ -209,9 +209,9 @@ TM01 EQU const_value
add_tm SUBSTITUTE ; $FA
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.
; These fit in 7 bytes, with one unused bit left over.
__tmhm_value__ = NUM_TM_HM + 1
UNUSED_TMNUM EQU __tmhm_value__
DEF __tmhm_value__ = NUM_TM_HM + 1
DEF UNUSED_TMNUM EQU __tmhm_value__

View file

@ -1,7 +1,7 @@
mapconst: MACRO
MACRO mapconst
const \1
\1_HEIGHT EQU \2
\1_WIDTH EQU \3
DEF \1_HEIGHT EQU \2
DEF \1_WIDTH EQU \3
ENDM
; map ids
@ -26,9 +26,9 @@ ENDM
mapconst CINNABAR_ISLAND, 9, 10 ; $08
mapconst INDIGO_PLATEAU, 9, 10 ; $09
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
FIRST_ROUTE_MAP EQU const_value
DEF FIRST_ROUTE_MAP EQU const_value
mapconst ROUTE_1, 18, 10 ; $0C
mapconst ROUTE_2, 36, 10 ; $0D
mapconst ROUTE_3, 9, 35 ; $0E
@ -54,7 +54,7 @@ FIRST_ROUTE_MAP EQU const_value
mapconst ROUTE_23, 72, 10 ; $22
mapconst ROUTE_24, 18, 10 ; $23
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_2F, 4, 4 ; $26
mapconst BLUES_HOUSE, 4, 4 ; $27
@ -266,8 +266,8 @@ FIRST_INDOOR_MAP EQU const_value
mapconst LORELEIS_ROOM, 6, 5 ; $F5
mapconst BRUNOS_ROOM, 6, 5 ; $F6
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
; 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
; height of north/south connections
MAP_BORDER EQU 3
DEF MAP_BORDER EQU 3
; connection directions
const_def

View file

@ -16,7 +16,7 @@
const SPRITESTATEDATA1_0D ; d
const SPRITESTATEDATA1_0E ; e
const SPRITESTATEDATA1_0F ; f
SPRITESTATEDATA1_LENGTH EQU const_value
DEF SPRITESTATEDATA1_LENGTH EQU const_value
; spritestatedata2 struct members (see macros/wram.asm)
const_def
@ -36,24 +36,24 @@ SPRITESTATEDATA1_LENGTH EQU const_value
const SPRITESTATEDATA2_PICTUREID ; d
const SPRITESTATEDATA2_IMAGEBASEOFFSET ; e
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
ITEM EQU $80
TRAINER EQU $40
DEF ITEM EQU $80
DEF TRAINER EQU $40
WALK EQU $FE
STAY EQU $FF
DEF WALK EQU $FE
DEF STAY EQU $FF
ANY_DIR EQU $00
UP_DOWN EQU $01
LEFT_RIGHT EQU $02
DOWN EQU $D0
UP EQU $D1
LEFT EQU $D2
RIGHT EQU $D3
NONE EQU $FF
DEF ANY_DIR EQU $00
DEF UP_DOWN EQU $01
DEF LEFT_RIGHT EQU $02
DEF DOWN EQU $D0
DEF UP EQU $D1
DEF LEFT EQU $D2
DEF RIGHT EQU $D3
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
PC_ITEM_CAPACITY EQU 50
DEF BAG_ITEM_CAPACITY EQU 20
DEF PC_ITEM_CAPACITY EQU 50
; text box IDs
const_def 1
@ -42,15 +42,15 @@ PC_ITEM_CAPACITY EQU 50
const TRADE_CANCEL_MENU ; 5
const HEAL_CANCEL_MENU ; 6
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
CHOSE_MENU_ITEM EQU 1 ; pressed A
CANCELLED_MENU EQU 2 ; pressed B
DEF CHOSE_MENU_ITEM EQU 1 ; pressed A
DEF CANCELLED_MENU EQU 2 ; pressed B
; menu exit method constants for two-option menus
CHOSE_FIRST_ITEM EQU 1
CHOSE_SECOND_ITEM EQU 2
DEF CHOSE_FIRST_ITEM EQU 1
DEF CHOSE_SECOND_ITEM EQU 2
; move mon constants
const_def
@ -71,7 +71,7 @@ CHOSE_SECOND_ITEM EQU 2
; party menu message IDs
; PartyMenuItemUseMessagePointers indexes (see engine/menus/party_menu.asm)
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 BURN_HEAL_MSG ; $F1
const ICE_HEAL_MSG ; $F2

View file

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

View file

@ -1,7 +1,7 @@
; special effects that are part of move animations
; SpecialEffectPointers associates them with effect routines (see data/battle_anims/special_effect_pointers.asm)
const_def $C0
FIRST_SE_ID EQU const_value
DEF FIRST_SE_ID EQU const_value
const_skip $18
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)
@ -132,7 +132,7 @@ FIRST_SE_ID EQU const_value
const SUBANIM_53
const SUBANIM_54
const SUBANIM_55
NUM_SUBANIMS EQU const_value
DEF NUM_SUBANIMS EQU const_value
; types of subanimations
const_def
@ -268,7 +268,7 @@ NUM_SUBANIMS EQU const_value
const FRAMEBLOCK_77
const FRAMEBLOCK_78
const FRAMEBLOCK_79
NUM_FRAMEBLOCKS EQU const_value
DEF NUM_FRAMEBLOCKS EQU const_value
; base coordinates that are part of subanimations
; FrameBlockBaseCoords indexes (see data/battle_anims/base_coords.asm)
@ -450,7 +450,7 @@ NUM_FRAMEBLOCKS EQU const_value
const BASECOORD_AE
const BASECOORD_AF
const BASECOORD_B0
NUM_BASECOORDS EQU const_value
DEF NUM_BASECOORDS EQU const_value
; frame block modes that are part of subanimations
const_def

View file

@ -171,7 +171,7 @@
const SLASH ; a3
const SUBSTITUTE ; a4
const STRUGGLE ; a5
NUM_ATTACKS EQU const_value - 1
DEF NUM_ATTACKS EQU const_value - 1
; Moves do double duty as animation identifiers.
@ -213,4 +213,4 @@ NUM_ATTACKS EQU const_value - 1
const ROCK_ANIM ; throw rock
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 SPLASH_EFFECT ; $55
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.
; SFX_Headers_(1|2|3) indexes (see audio/headers/*.asm)
music_const: MACRO
\1 EQUS "((\2 - SFX_Headers_1) / 3)"
MACRO music_const
DEF \1 EQUS "((\2 - SFX_Headers_1) / 3)"
ENDM
; AUDIO_1
@ -57,7 +57,7 @@ ENDM
music_const MUSIC_MEET_MALE_TRAINER, Music_MeetMaleTrainer
; 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_INSTRUMENT02, SFX_Noise_Instrument02_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_INSTRUMENT18, SFX_Noise_Instrument18_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_01, SFX_Cry01_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_24, SFX_Cry24_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_TINK, SFX_Tink_1
@ -163,7 +163,7 @@ CRY_SFX_END EQUS "SFX_CRY_25 + 3"
; AUDIO_1
music_const SFX_POKEFLUTE, SFX_Pokeflute
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
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_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_FAINT_FALL, SFX_Faint_Fall
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_36, SFX_Battle_36
music_const SFX_SILPH_SCOPE, SFX_Silph_Scope
BATTLE_SFX_END EQUS "SFX_SILPH_SCOPE + 1"
MAX_SFX_ID_2 EQUS "SFX_SILPH_SCOPE"
DEF BATTLE_SFX_END EQUS "SFX_SILPH_SCOPE + 1"
DEF MAX_SFX_ID_2 EQUS "SFX_SILPH_SCOPE"
; AUDIO_3
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_NEW_SPIN, SFX_Slots_New_Spin
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
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_ENDOFDATA EQU %00000001 ; 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_PALETTE EQU %111
OAM_TILE_BANK EQU 3
OAM_OBP_NUM EQU 4 ; Non CGB Mode Only
OAM_X_FLIP EQU 5
OAM_Y_FLIP EQU 6
OAM_PRIORITY EQU 7 ; 0: OBJ above BG, 1: OBJ behind BG (colors 1-3)
DEF OAM_PALETTE EQU %111
DEF OAM_TILE_BANK EQU 3
DEF OAM_OBP_NUM EQU 4 ; Non CGB Mode Only
DEF OAM_X_FLIP EQU 5
DEF OAM_Y_FLIP EQU 6
DEF OAM_PRIORITY EQU 7 ; 0: OBJ above BG, 1: OBJ behind BG (colors 1-3)
; OAM attribute masks
OAM_OBP1 EQU 1 << OAM_OBP_NUM ; OBJ palette 1
OAM_HFLIP EQU 1 << OAM_X_FLIP ; horizontal flip
OAM_VFLIP EQU 1 << OAM_Y_FLIP ; vertical flip
OAM_BEHIND_BG EQU 1 << OAM_PRIORITY ; behind bg (except color 0)
DEF OAM_OBP1 EQU 1 << OAM_OBP_NUM ; OBJ palette 1
DEF OAM_HFLIP EQU 1 << OAM_X_FLIP ; horizontal flip
DEF OAM_VFLIP EQU 1 << OAM_Y_FLIP ; vertical flip
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_DARK ; %10
const SHADE_BLACK ; %11
NUM_PAL_COLORS EQU const_value
DEF NUM_PAL_COLORS EQU const_value
PAL_COLOR_SIZE EQU 2
PALETTE_SIZE EQU NUM_PAL_COLORS * PAL_COLOR_SIZE
DEF PAL_COLOR_SIZE EQU 2
DEF PALETTE_SIZE EQU NUM_PAL_COLORS * PAL_COLOR_SIZE
; pal/blk packets
; 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_TRAINER_CARD ; $0D
SET_PAL_PARTY_MENU_HP_BARS EQU $fc
SET_PAL_DEFAULT EQU $ff
DEF SET_PAL_PARTY_MENU_HP_BARS EQU $fc
DEF SET_PAL_DEFAULT EQU $ff
; sgb palettes
; SuperPalettes indexes (see data/sgb/sgb_palettes.asm)
@ -70,4 +70,4 @@ SET_PAL_DEFAULT EQU $ff
const PAL_BADGE ; $22
const PAL_CAVE ; $23
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_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 VICTREEBEL ; $BE
NUM_POKEMON_INDEXES EQU const_value - 1
DEF NUM_POKEMON_INDEXES EQU const_value - 1
; starters
STARTER1 EQU CHARMANDER
STARTER2 EQU SQUIRTLE
STARTER3 EQU BULBASAUR
DEF STARTER1 EQU CHARMANDER
DEF STARTER2 EQU SQUIRTLE
DEF STARTER3 EQU BULBASAUR
; 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)
rsreset
BASE_DEX_NO rb
BASE_STATS rb NUM_STATS
DEF BASE_DEX_NO rb
DEF BASE_STATS rb NUM_STATS
rsset BASE_STATS
BASE_HP rb
BASE_ATK rb
BASE_DEF rb
BASE_SPD rb
BASE_SPC rb
BASE_TYPES rw
DEF BASE_HP rb
DEF BASE_ATK rb
DEF BASE_DEF rb
DEF BASE_SPD rb
DEF BASE_SPC rb
DEF BASE_TYPES rw
rsset BASE_TYPES
BASE_TYPE_1 rb
BASE_TYPE_2 rb
BASE_CATCH_RATE rb
BASE_EXP rb
BASE_PIC_SIZE rb
BASE_FRONTPIC rw
BASE_BACKPIC rw
BASE_MOVES rb NUM_MOVES
BASE_GROWTH_RATE rb
BASE_TMHM rb (NUM_TM_HM + 7) / 8
DEF BASE_TYPE_1 rb
DEF BASE_TYPE_2 rb
DEF BASE_CATCH_RATE rb
DEF BASE_EXP rb
DEF BASE_PIC_SIZE rb
DEF BASE_FRONTPIC rw
DEF BASE_BACKPIC rw
DEF BASE_MOVES rb NUM_MOVES
DEF BASE_GROWTH_RATE rb
DEF BASE_TMHM rb (NUM_TM_HM + 7) / 8
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
NUM_BOXES EQU 12
DEF MONS_PER_BOX EQU 20
DEF NUM_BOXES EQU 12
HOF_MON EQU $10
HOF_TEAM EQU PARTY_LENGTH * HOF_MON
HOF_TEAM_CAPACITY EQU 50
DEF HOF_MON EQU $10
DEF HOF_TEAM EQU PARTY_LENGTH * HOF_MON
DEF HOF_TEAM_CAPACITY EQU 50
; mon data locations
@ -52,8 +52,8 @@ HOF_TEAM_CAPACITY EQU 50
const EV_ITEM ; 2
const EV_TRADE ; 3
MAX_EVOLUTIONS EQU 3
EVOLUTION_SIZE EQU 4
DEF MAX_EVOLUTIONS EQU 3
DEF EVOLUTION_SIZE EQU 4
; wMonHGrowthRate values
@ -65,8 +65,8 @@ EVOLUTION_SIZE EQU 4
const GROWTH_MEDIUM_SLOW
const GROWTH_FAST
const GROWTH_SLOW
NUM_GROWTH_RATES EQU const_value
DEF NUM_GROWTH_RATES EQU const_value
; wild data (see data/wild/maps/*.asm)
NUM_WILDMONS EQU 10
WILDDATA_LENGTH EQU 1 + NUM_WILDMONS * 2
DEF NUM_WILDMONS EQU 10
DEF WILDDATA_LENGTH EQU 1 + NUM_WILDMONS * 2

View file

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

View file

@ -1,27 +1,27 @@
ESTABLISH_CONNECTION_WITH_INTERNAL_CLOCK EQU $01
ESTABLISH_CONNECTION_WITH_EXTERNAL_CLOCK EQU $02
DEF ESTABLISH_CONNECTION_WITH_INTERNAL_CLOCK EQU $01
DEF ESTABLISH_CONNECTION_WITH_EXTERNAL_CLOCK EQU $02
USING_EXTERNAL_CLOCK EQU $01
USING_INTERNAL_CLOCK EQU $02
CONNECTION_NOT_ESTABLISHED EQU $ff
DEF USING_EXTERNAL_CLOCK EQU $01
DEF USING_INTERNAL_CLOCK EQU $02
DEF CONNECTION_NOT_ESTABLISHED EQU $ff
; 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
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
SERIAL_PATCH_LIST_PART_TERMINATOR EQU $FF
DEF SERIAL_PATCH_LIST_PART_TERMINATOR EQU $FF
LINK_STATE_NONE EQU $00 ; not using link
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
LINK_STATE_START_BATTLE EQU $03 ; pre-battle initialisation
LINK_STATE_BATTLING EQU $04 ; in a link battle
LINK_STATE_RESET EQU $05 ; reset game (unused)
LINK_STATE_TRADING EQU $32 ; in a link trade
DEF LINK_STATE_NONE EQU $00 ; not using link
DEF LINK_STATE_IN_CABLE_CLUB EQU $01 ; in a cable club room (Colosseum or Trade Centre)
DEF LINK_STATE_START_TRADE EQU $02 ; pre-trade selection screen initialisation
DEF LINK_STATE_START_BATTLE EQU $03 ; pre-battle initialisation
DEF LINK_STATE_BATTLING EQU $04 ; in a link battle
DEF LINK_STATE_RESET EQU $05 ; reset game (unused)
DEF LINK_STATE_TRADING EQU $32 ; in a link trade
LINKBATTLE_RUN EQU $F
LINKBATTLE_STRUGGLE EQU $E
LINKBATTLE_NO_ACTION EQU $D
DEF LINKBATTLE_RUN EQU $F
DEF LINKBATTLE_STRUGGLE EQU $E
DEF LINKBATTLE_NO_ACTION EQU $D

View file

@ -62,7 +62,7 @@
const SPRITE_BRUNO ; $3a
const SPRITE_LORELEI ; $3b
const SPRITE_SEEL ; $3c
FIRST_STILL_SPRITE EQU const_value
DEF FIRST_STILL_SPRITE EQU const_value
const SPRITE_POKE_BALL ; $3d
const SPRITE_FOSSIL ; $3e
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_2 ; $47
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_RIGHT ; $C0
NPC_CHANGE_FACING EQU $E0
DEF NPC_CHANGE_FACING EQU $E0
; player direction constants
const_def
@ -20,7 +20,7 @@ NPC_CHANGE_FACING EQU $E0
const PLAYER_DIR_BIT_DOWN ; 2
const PLAYER_DIR_BIT_UP ; 3
PLAYER_DIR_RIGHT EQU 1 << PLAYER_DIR_BIT_RIGHT
PLAYER_DIR_LEFT EQU 1 << PLAYER_DIR_BIT_LEFT
PLAYER_DIR_DOWN EQU 1 << PLAYER_DIR_BIT_DOWN
PLAYER_DIR_UP EQU 1 << PLAYER_DIR_BIT_UP
DEF PLAYER_DIR_RIGHT EQU 1 << PLAYER_DIR_BIT_RIGHT
DEF PLAYER_DIR_LEFT EQU 1 << PLAYER_DIR_BIT_LEFT
DEF PLAYER_DIR_DOWN EQU 1 << PLAYER_DIR_BIT_DOWN
DEF PLAYER_DIR_UP EQU 1 << PLAYER_DIR_BIT_UP

View file

@ -1,6 +1,6 @@
NAME_LENGTH EQU 11
ITEM_NAME_LENGTH EQU 13
NAME_BUFFER_LENGTH EQU 20
DEF NAME_LENGTH EQU 11
DEF ITEM_NAME_LENGTH EQU 13
DEF NAME_BUFFER_LENGTH EQU 20
; PrintNumber
const_def 5
@ -8,9 +8,9 @@ NAME_BUFFER_LENGTH EQU 20
const BIT_LEFT_ALIGN ; 6
const BIT_LEADING_ZEROES ; 7
MONEY_SIGN EQU (1 << BIT_MONEY_SIGN)
LEFT_ALIGN EQU (1 << BIT_LEFT_ALIGN)
LEADING_ZEROES EQU (1 << BIT_LEADING_ZEROES)
DEF MONEY_SIGN EQU (1 << BIT_MONEY_SIGN)
DEF LEFT_ALIGN EQU (1 << BIT_LEFT_ALIGN)
DEF LEADING_ZEROES EQU (1 << BIT_LEADING_ZEROES)
; special text IDs (see home/text_script.asm)
const_def $d0
@ -19,4 +19,4 @@ LEADING_ZEROES EQU (1 << BIT_LEADING_ZEROES)
const TEXT_REPEL_WORE_OFF ; $d2
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 FACILITY ; 22
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
OPP_\1 EQU OPP_ID_OFFSET + \1
DEF OPP_\1 EQU OPP_ID_OFFSET + \1
ENDM
; trainer class ids
@ -62,4 +62,4 @@ ENDM
trainer_const CHANNELER ; $2D
trainer_const AGATHA ; $2E
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)
const_def
PHYSICAL EQU const_value
DEF PHYSICAL EQU const_value
const NORMAL ; $00
const FIGHTING ; $01
const FLYING ; $02
@ -14,7 +14,7 @@ PHYSICAL EQU const_value
const_next 20
SPECIAL EQU const_value
DEF SPECIAL EQU const_value
const FIRE ; $14
const WATER ; $15
const GRASS ; $16
@ -23,4 +23,4 @@ SPECIAL EQU const_value
const ICE ; $19
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
dw \2
ENDM

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -39,8 +39,8 @@ MapSpriteSets:
db $02 ; ROUTE_25
assert_table_length FIRST_INDOOR_MAP
EAST_WEST EQU 1
NORTH_SOUTH EQU 2
DEF EAST_WEST EQU 1
DEF NORTH_SOUTH EQU 2
; Format:
; 00: determines whether the map is split EAST_WEST or NORTH_SOUTH
@ -64,7 +64,7 @@ SplitMapSpriteSets:
SpriteSets:
; 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
table_width 1

View file

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

View file

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

View file

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

View file

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

View file

@ -1,4 +1,4 @@
add_predef: MACRO
MACRO add_predef
\1Predef::
IF _NARG == 1
dba \1

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,9 +1,9 @@
move_choices: MACRO
MACRO move_choices
IF _NARG
db \# ; all args
ENDC
db 0 ; end
list_index += 1
DEF list_index += 1
ENDM
; 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
bcd3 \2
ENDM

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -280,8 +280,8 @@ GetPartyMonSpriteID:
INCLUDE "data/pokemon/menu_icons.asm"
INC_FRAME_1 EQUS "0, $20"
INC_FRAME_2 EQUS "$20, $20"
DEF INC_FRAME_1 EQUS "0, $20"
DEF INC_FRAME_2 EQUS "$20, $20"
BugIconFrame1: INCBIN "gfx/icons/bug.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:
call LoadTownMap

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -59,7 +59,7 @@ PrintNumber::
cp 6
jr z, .hundred_thousands
print_digit: MACRO
MACRO print_digit
IF (\1) / $10000
ld a, \1 / $10000 % $100

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,28 +1,28 @@
farcall: MACRO
MACRO farcall
ld b, BANK(\1)
ld hl, \1
call Bankswitch
ENDM
callfar: MACRO
MACRO callfar
ld hl, \1
ld b, BANK(\1)
call Bankswitch
ENDM
farjp: MACRO
MACRO farjp
ld b, BANK(\1)
ld hl, \1
jp Bankswitch
ENDM
jpfar: MACRO
MACRO jpfar
ld hl, \1
ld b, BANK(\1)
jp Bankswitch
ENDM
homecall: MACRO
MACRO homecall
ldh a, [hLoadedROMBank]
push af
ld a, BANK(\1)
@ -34,7 +34,7 @@ homecall: MACRO
ld [MBC1RomBank], a
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]
push af
ld a, BANK(\1)

View file

@ -1,22 +1,22 @@
RGB: MACRO
MACRO RGB
REPT _NARG / 3
dw palred (\1) + palgreen (\2) + palblue (\3)
SHIFT 3
ENDR
ENDM
palred EQUS "(1 << 0) *"
palgreen EQUS "(1 << 5) *"
palblue EQUS "(1 << 10) *"
DEF palred EQUS "(1 << 0) *"
DEF palgreen EQUS "(1 << 5) *"
DEF palblue EQUS "(1 << 10) *"
palettes EQUS "* PALETTE_SIZE"
palette EQUS "+ PALETTE_SIZE *"
color EQUS "+ PAL_COLOR_SIZE *"
DEF palettes EQUS "* PALETTE_SIZE"
DEF palette EQUS "+ PALETTE_SIZE *"
DEF color EQUS "+ PAL_COLOR_SIZE *"
tiles EQUS "* LEN_2BPP_TILE"
tile EQUS "+ LEN_2BPP_TILE *"
DEF tiles 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
db (\2 * TILE_WIDTH) % $100 + \4, (\1 * TILE_WIDTH) % $100 + \3, \5, \6
ENDM

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,30 +1,30 @@
vc_hook: MACRO
MACRO vc_hook
IF DEF(_RED_VC) || DEF(_BLUE_VC)
.VC_\1::
ENDC
ENDM
vc_hook_red: MACRO
MACRO vc_hook_red
IF DEF(_RED_VC)
.VC_\1::
ENDC
ENDM
vc_hook_blue: MACRO
MACRO vc_hook_blue
IF DEF(_BLUE_VC)
.VC_\1::
ENDC
ENDM
vc_patch: MACRO
MACRO vc_patch
IF DEF(_RED_VC) || DEF(_BLUE_VC)
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}::
ENDC
ENDM
vc_patch_end: MACRO
MACRO vc_patch_end
IF DEF(_RED_VC) || DEF(_BLUE_VC)
ASSERT DEF(CURRENT_VC_PATCH), "No vc_patch started"
.VC_{CURRENT_VC_PATCH}_End::
@ -32,7 +32,7 @@ IF DEF(_RED_VC) || DEF(_BLUE_VC)
ENDC
ENDM
vc_assert: MACRO
MACRO vc_assert
IF DEF(_RED_VC) || DEF(_BLUE_VC)
ASSERT \#
ENDC

View file

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

View file

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

View file

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

View file

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

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