mirror of
https://github.com/pret/pokered.git
synced 2024-10-22 22:55:31 +00:00
parent
d7808d110f
commit
6b5be9129c
101 changed files with 958 additions and 958 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -772,4 +772,4 @@
|
|||
|
||||
; End of events
|
||||
const_next $A00
|
||||
NUM_EVENTS EQU const_value
|
||||
DEF NUM_EVENTS EQU const_value
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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__
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -25,4 +25,4 @@
|
|||
const CLUB ; 21
|
||||
const FACILITY ; 22
|
||||
const PLATEAU ; 23
|
||||
NUM_TILESETS EQU const_value
|
||||
DEF NUM_TILESETS EQU const_value
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
special_effect: MACRO
|
||||
MACRO special_effect
|
||||
db \1
|
||||
dw \2
|
||||
ENDM
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
anim_special_effect: MACRO
|
||||
MACRO anim_special_effect
|
||||
db \1
|
||||
dw \2
|
||||
ENDM
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
bench_guy_text: MACRO
|
||||
MACRO bench_guy_text
|
||||
db \1, \2
|
||||
db_tx_pre \3
|
||||
ENDM
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
hidden_coin: MACRO
|
||||
MACRO hidden_coin
|
||||
db \1, \3, \2
|
||||
ENDM
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
hidden_item: MACRO
|
||||
MACRO hidden_item
|
||||
db \1, \3, \2
|
||||
ENDM
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
mon_icon_header: MACRO
|
||||
MACRO mon_icon_header
|
||||
dw \1 tile \2
|
||||
db \3
|
||||
db BANK(\1)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
vend_item: MACRO
|
||||
MACRO vend_item
|
||||
db \1
|
||||
bcd3 \2
|
||||
ENDM
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
force_bike_surf: MACRO
|
||||
MACRO force_bike_surf
|
||||
db \1, \3, \2
|
||||
ENDM
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
move: MACRO
|
||||
MACRO move
|
||||
db \1 ; animation (interchangeable with move id)
|
||||
db \2 ; effect
|
||||
db \3 ; power
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
mon_cry: MACRO
|
||||
MACRO mon_cry
|
||||
db (\1 - CRY_SFX_START) / 3
|
||||
db \2, \3
|
||||
ENDM
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
add_predef: MACRO
|
||||
MACRO add_predef
|
||||
\1Predef::
|
||||
IF _NARG == 1
|
||||
dba \1
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
overworld_sprite: MACRO
|
||||
MACRO overworld_sprite
|
||||
dw \1
|
||||
db \2 tiles
|
||||
db BANK(\1)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
add_tx_pre: MACRO
|
||||
MACRO add_tx_pre
|
||||
\1_id::
|
||||
dw \1
|
||||
ENDM
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
tile_ids: MACRO
|
||||
MACRO tile_ids
|
||||
dw \1
|
||||
dn \3, \2
|
||||
ENDM
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
bookshelf_tile: MACRO
|
||||
MACRO bookshelf_tile
|
||||
db \1, \2
|
||||
db_tx_pre \3
|
||||
ENDM
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
coll_tiles: MACRO
|
||||
MACRO coll_tiles
|
||||
IF _NARG
|
||||
db \# ; all args
|
||||
ENDC
|
||||
|
|
|
@ -14,7 +14,7 @@ DoorTileIDPointers:
|
|||
dbw PLATEAU, .PlateauDoorTileIDs
|
||||
db -1 ; end
|
||||
|
||||
door_tiles: MACRO
|
||||
MACRO door_tiles
|
||||
IF _NARG
|
||||
db \# ; all args
|
||||
ENDC
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
spinner: MACRO
|
||||
MACRO spinner
|
||||
; \1: source
|
||||
; \2: offset (BANK() chokes on literals)
|
||||
; \3: dest
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -4,7 +4,7 @@ WarpTileListPointers:
|
|||
dw .FacingLeftWarpTiles
|
||||
dw .FacingRightWarpTiles
|
||||
|
||||
warp_carpet_tiles: MACRO
|
||||
MACRO warp_carpet_tiles
|
||||
IF _NARG
|
||||
db \# ; all args
|
||||
ENDC
|
||||
|
|
|
@ -26,7 +26,7 @@ WarpTileIDPointers:
|
|||
dw .PlateauWarpTileIDs
|
||||
assert_table_length NUM_TILESETS
|
||||
|
||||
warp_tiles: MACRO
|
||||
MACRO warp_tiles
|
||||
IF _NARG
|
||||
db \# ; all args
|
||||
ENDC
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
pic_money: MACRO
|
||||
MACRO pic_money
|
||||
dw \1
|
||||
bcd3 \2
|
||||
ENDM
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
two_option_menu: MACRO
|
||||
MACRO two_option_menu
|
||||
db \1, \2, \3
|
||||
dw \4
|
||||
ENDM
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
NOT_VISITED EQU $fe
|
||||
DEF NOT_VISITED EQU $fe
|
||||
|
||||
DisplayTownMap:
|
||||
call LoadTownMap
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
const MOVE_GENGAR_RIGHT
|
||||
const MOVE_GENGAR_LEFT
|
||||
|
||||
ANIMATION_END EQU 80
|
||||
DEF ANIMATION_END EQU 80
|
||||
|
||||
PlayIntro:
|
||||
xor a
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -51,7 +51,7 @@ GetMoveBoulderDustFunctionPointer:
|
|||
pop hl
|
||||
ret
|
||||
|
||||
boulder_dust_adjust: MACRO
|
||||
MACRO boulder_dust_adjust
|
||||
db \1, \2 ; coords
|
||||
dw \3 ; function
|
||||
ENDM
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
MAP_TILESET_SIZE EQU $60
|
||||
DEF MAP_TILESET_SIZE EQU $60
|
||||
|
||||
UpdatePlayerSprite:
|
||||
ld a, [wSpritePlayerStateData2WalkAnimationCounter]
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -66,7 +66,7 @@ DisplayTextID::
|
|||
|
||||
; check first byte of text for special cases
|
||||
|
||||
dict2: MACRO
|
||||
MACRO dict2
|
||||
cp \1
|
||||
jr nz, .not\@
|
||||
\2
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
6
sram.asm
6
sram.asm
|
@ -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
|
||||
|
|
|
@ -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
Loading…
Reference in a new issue